Coding while traveling 15 November 2014

I set off to travel for about 5 months, during this time I wouldn’t be working. Of course since I actually really love to program, I planned on writing some code while traveling around. My old Mac book was dated, heavy, and starting to have some issues charging (as well as a 45 minute battery life). So I started to think about the machine I would bring with me on my travels. After a bit, of consideration the decision was between a Chromebook or Mac book Air.

The Macbook has nearly all the advantages, but they are expensive and a theft target. A target to the point that some people I been traveling with hide the fact that they have macs (cases, stickers, etc). To cover the cost I looked into a older used Air, but I couldn’t find a good one at the time. Since we are spending a lot on the trip and spending time on my computer wasn’t the trip’s goal I was still interested in the Chromebook.

Any Chromebook has the advantage of being extremely cheap and having amazing battery life. If it is broken, lost or stolen you can buy one or have one shipped to nearly any country for a reasonable price. In the end I went with a Samsung Chromebook. I bought it a few months before my trip to make sure I would be pretty happy using it.

I knew developing on the Chromebook wouldn’t be at all like I was used to, but I thought it would still work out well for me to write some blog posts, edit some photos, learn some new libraries, and work on some of my Open Source Software projects.

Previously, I had been teaching some people how to program. Since everyone had different machines I ended up teaching with each student using Nitrious.io. Since Nitrous has worked so well for me in the past, I planned to do much of my development using that while traveling. Nitrous has a Chromebook app, which is almost great it has a few bugs related to copy and paste that becoming ridiculously frustrating.

Beyond Nitrious, I planned on also writing code using a variety of other methods.

  • Github online text editor
  • SSH to my EC2 machine
  • SSH to my Digital Ocean machine

I figured I had a good set of options, and I am quite comfortable using Emacs over a screen session on a SSH connection. Before starting my trip at home my Chromebook development plan went great, I was very happy with the situation, while it wasn’t as good as a Mac, I figured it would good enough during my trip. If you look at my development methods above, you will easily see they all suffer from the same problem. They rely on having a working internet connection. Which wasn’t a problem at all before I traveled ;)

No worries, I had heard how everywhere in Asia was leaps and bounds ahead of the US for internet ;) Also, rumors of cheap 4G data SIM cards where available in nearly all countries… The problem with that theory is that it doesn’t match the kind of travel I’ve been doing, namely travel on the cheap. We are also, often in remote areas far from major cities. While Asia often has great high speed internet it was never good at a $30 a night hostel;)

While we do have international data with T-mobile, which has been amazing and made keeping in touch easy. The coverage is spotty and often we are limited to edge speeds. If you are out of the cities you have no access. The same issue applies to buying a SIM card, which is only helpful when you are near cities. I am currently writing this post in a tiny town in Uganda with a view of a rainy Nile river, which has 30 people sharing a single 4G connection.

I didn’t think having good access to the internet would be such a problem, but it has been continually difficult to find a decent connection. My backup plan for this was local text editors and recent Chromebook apps like Chome Development Kit. While interesting the backup plan hasn’t been very useful.

First, I end up wanting the net to pull various JS libraries, CSS, or look up solutions. The other issue is that I don’t want to built a pure JS application. I want to build an app that interacts with 3rd party APIs, or a simple server back end. Both of which quickly put me back in the situation where I need net to build anything interesting. While it has been fun to play with a few D3 javascript visualization scripts locally, it hasn’t really let me work on the kind of projects I was hoping to play with while traveling.

I assumed between good internet and occasionally spending some time on local development I would be pretty satisfied. In the end, that hasn’t been the case. I do regret going with the Chromebook and if I could do it all again I would have gotten a Mac book Air. I am sure, I would have spent a bit too much time on the computer, but I would have been able to keep up with my skills better. Since working on development projects hasn’t worked out. I have had time to read a large amount, as well as spend a good amount of time writing. The Chromebook as a distraction free text editor, is hard to beat. Without net or the ability to do much else, I have been able to write a surprising amount.

Final thoughts on the Chromebook

If you do get a Chromebook I can say the older version didn’t have the horsepower to be that great at photo editing. Any large number of DSLR images slow it to a crawl. My wife has the newer Samsung Chromebook 2, while it doesn’t have a built in SD card reader, adding a USB reader will give you a much more usable travel laptop. If it wasn’t for wanting to develop offline a bit, I actually think the Chromebook is a pretty ideal long term travel machine. With all the wireless features turned off. I can get a solid 7 hours out of the machine, which gives me a number of usages between charges. It is cheap, fast to boot, and can jump online faster than my Mac can search for WiFi networks in reach.

comments
I am Dan Mayer and this is my development blog. Currently it focuses mostly on Ruby development, a side of dev process, and best practices. It also has archives of my old development posts dating back to when I was first learning programming. I contribute to a few OSS projects and often work on my own projects, You can find my code on github.

@DanMayer on Twitter

licensed under a Creative Commons License.

Creative Commons License