Netbook + Ubuntu = Developing While Travelling

4 minute read

I'm planning on going away travelling for around 6 months (maybe more, maybe less, I'm not sure yet). During this time I obviously plan on enjoying the places I'll be in, but I do plan on having some down time to write blog posts, process photos, and also do some development. It'll hopefully be an enlightening time to try out some ideas and also improve my programming skills.

About My Travels

To give a bit of background, I plan on travelling via bicycle from London to Istanbul > (fly to Shanghai) > Shanghai > Kunming > (fly to Calcutta) > Calcutta > Kochi > Mumbai > (fly to Bangkok) > Bangkok > Singapore > (fly to Perth) > Around Australia > Home? I may go further but there aren't currently any plans. I plan on travelling as light as possible. My dSLR and netbook will be the heaviest and bulkiest items totalling around 3.5kg, but beyond those I'll be travelling with very few things, ideally no more than 15kg's worth including the weight of the bags, tools and spares.

My netbook (Asus N280 atom with 2Gb RAM) will provide me with a platform to write blogs, process my SLR photos and program on. I currently have Ubuntu 11.04 x64 installed on it, but am considering Windows 7 via dual boot. It typically has a 6-9 hour battery life depending upon what I'm doing so will last quite a while.

Developing With Limited Hardware

Ideally I would develop in C# using Visual Studio 2010. I'm very familiar with ASP MVC, and have a few open source project of my own running (automvc and rakeoff).

Given I don't think Windows 7 with Visual Studio 2010 (and ReSharper 5) will run very well on the netbook (although I plan to try before leaving), the other alternative to look at is Linux as my development platform.

I currently know Ruby fairly well, and have played around with Rails. Both run without problem on my netbook. I could also brush up on my JQuery/JavaScript and try out HTML5 and CSS3 using Chromium. For closed source repositories I have a Bit Bucket account (excellent service, and I really like Mercurial) so can do typical commits/branching etc... This gives me plenty to play with and the ability to build fully functioning web applications, although does mean turning my back on my primary .Net skills.

Making Development Easier

My netbook has a limited atom processor, and a very small screen (1024x600 resolution) which can make development awkward. In Linux there are a few easy changes that can make development easier to do.

  • Screen Estate - given the limited amount of pixels, the screen area needs to be used effectively. I like Unity as a GUI but it's not mature enough yet for my liking. Instead I use avant-window-navigator. I hide all the standard "gnome" panels, and instead have a 36 pixel-wide bar down the left hand side of my screen. It's set to hide when not focussed on, so that all I can see is the window I'm currently looking at. sudo apt-get install avant-window-navigator
  • Shortcuts - once everything is hidden, I need a quick way of navigating from window to window. This can be done easily enough using the standard keyboard shortcuts. Compared with Windows though, you can customize all of the shortcuts yourself easily, and select your preferred Ctrl+Alt app switcher.
  • Gnome Do - for opening up new applications Gnome-Do is a great application launcher allowing me to opening anything within a few key presses and without having to rely on the GUI. sudo apt-get install gnome-do
  • Guake - for terminal based work Guake is a great modification of the simple terminal window. It resembles the old Quake terminal so pops down from the top of the screen during a defined keypress. It also allows tabbing of terminals so you can find the window you're looking for much more easily. sudo apt-get install guake
  • Chromium - given most of my work will be web related, for a lot of it I use Chromium because it's lighter, and uses up less vertical screen space. For automated tasks, or browser compatibility though I still use Firefox.
  • Mercurial - as mentioned I use Mercurial, a) because I like it (no more than I do Git), but also b) because I can use BitBucket for free open source and more importantly, private repositories. I do all of my commands via the terminal. sudo apt-get install hg

Ruby & Rails

Installing Ruby is easy enough in Ubuntu. I've already written a post on how to do so, and set up your gem locations. To setup Rails there are a few extra packages you need:

sudo apt-get install sqlite3 libsqlite3-ruby libsqlite3-dev libxml2 libxml2-dev libxslt1-dev &&

sudo gem install rails;

That will install all of the dependencies needed, namely for SQLite, meaning you're all ready to make a rails application.

All the above should give me a good platform for doing any programming during my spare time in my travels. My mind is full of travel info at the moment, but come travelling I'll probably work on a few small applications and maybe one website.