Swap Your Laptop for an iPad + Linode
Ditch your laptop and code in the cloud—it's easier than you'd think.
On September 19, 2011, I said goodbye to my trusty MacBook Pro and started developing exclusively on an iPad + Linode 512. This is the surprising story of three months spent working in the cloud.
Figure 1. iPad on Sofa
It all started when I bought my first MacBook a couple years ago; despite a decade using Linux, I never really was satisfied with either GNOME or KDE. In OS X, I hoped to find a slick window manager on top of a solid BSD implementation. I enjoyed hardware with drivers that "just worked", but I missed decent package management and the rest of the Linux ecosystem.
Although I like to use Python and GAE for my own projects, at work, we write heavyweight C++/Qt code that runs on clusters, such as the 200,000 processor Jaguar machine, so most of my day was spent in Linux anyhow, a lot of it on remote systems. Typically, I'd develop in MacVim locally and run my code remotely or on Ubuntu under VMware Fusion.
One fateful day, VMware and OS X conspired to trash my shared filesystem.
dd was recovering as much as it could, I started toying with the idea
of giving up on local filesystems altogether. To my surprise, it seemed
possible—even plausible. The more I thought about it, the more attractive
it seemed. I knew then, I just had to try.
It turns out you need a little more than just an iPad and a dream, but not too much more:
iPad 2 (16Gb, Wi-Fi).
Apple wireless keyboard.
Stilgut adjustable angle stand/case.
iSSH (and optionally Jump).
Linode 512 running Ubuntu 11.04.
Apple VGA adapter.
Total cost: around $800 + $20 per month.
Figure 2. iPad and Keyboard Box
I chose a Linode 512, which has been perfect for my needs. You get fantastic CPU power and a tiny little bit of RAM. Surprisingly, this is enough when you do most of your work at the command line, but it's nice knowing I always can upgrade it later.
I also turned on the $5-a-month backups. Zero-effort data safety for less than the price of a hot chocolate? Yes, please!
Linode's interface walks you through adding your new node. Pick a region close to yourself—you want to minimize the roundtrip time to the server. I spend most of my time in Munich, so I have mine in London and get a 30–40ms ping, which is great.
I run Ubuntu 11.04 in 32-bit mode on mine, but they offer a wide selection of pre-built Linux images along with the option to install your own.
For access to the server, you need a really good SSH client. On the iPad, I've tried both iSSH and Prompt, and of these, only iSSH is even feasible for serious use. The hardest part of setting up an SSH client on a tablet is getting your private SSH key on there without entrusting it to a third party. I split mine across multiple services and removed it after recombining it, but a better way would be to SSH in with a password first, then use copy and paste to copy the key inside iSSH itself.
I Wandered Lonely as a Cloud
I typically start my day by catching up on the bug-tracker chatter, mercurial diffs and other e-mails with the iPad in one hand while lying on the Combinat56 sofa.
I actually hate the mail app for this—the stupid animation when archiving posts adds unnecessary delay, and the archive button is uncomfortably placed at the top of the screen. More recently, I've been scanning e-mails over IMAP with a Python script instead.
Next, I lazily swipe to Safari and review my tickets for the day in our Web-based bug tracker then return to the keyboard and fire off a couple e-mails before settling back into coding—the new four-finger swipe gestures in iOS5 have really improved my life.
But, I was talking about coding, which brings me back to the only reason this setup works for me at all: Vim.
Mark O'Connor is a Munich-based programmer, occasional writer and part-time startup founder. He believes in dynamic typing, first-class functions and the immortal essence of the human soul. He also likes tea. You can reach him at @yieldthought or http:
- Readers' Choice Awards--Nominate Your Apps & Gadgets Now!
- diff -u: What's New in Kernel Development
- Memory Ordering in Modern Microprocessors, Part I
- Source Code Scanners for Better Code
- Security Hardening with Ansible
- Tech Tip: Really Simple HTTP Server with Python
- RSS Feeds
- Non-Linux FOSS: AutoHotkey
- Readers' Choice Awards 2013