Swap Your Laptop for an iPad + Linode
The Good, the Bad and VNC
At work, we develop a graphical parallel debugger, so I can't spend all my time in the terminal. For hands-on tests and GUI work, I need X. iSSH has a workable, if not perfect, solution, but for a few extra dollars, I find Jump far superior.
Although it's still not as quick and accurate as using a mouse to interact with a traditional GUI program, both iSSH's on-screen "touchpad" and particularly Jump's tap circle work better than I'd expect. And as it happens, being limited isn't all that bad:
One good way to evaluate the usability of a program or dialog is to try to use the mouse with just one finger.—Joel Spolsky
VNC on the iPad isn't nearly as bad as pushing the mouse around with one finger, but it does make you consider users with lower screen resolutions, larger font sizes and mouse control that hasn't been honed by countless years playing Quake and Starcraft. I'd be lying if I said I hadn't wished iOS had Bluetooth mouse support some days.
Maybe It's a Lifestyle
Today is not one of those days. I unwrap a chocolate croissant, make a
fresh cup of tea and settle down to work: a quick
hg pull -u
start the recompile, then Ctrl-X to my editor tab and carry on coding while
the rebuild happens. Ctrl-X is my screen's "hot key"; it
defaults to Ctrl-A, but on a wireless keyboard, that leaves Unicode
characters in the terminal—I assume this is related to Apple's
support for some common Emacs keybindings in iOS. It's strange, but easy enough
to work around—unless you're an Emacs user, I imagine.
Figure 5. iPad and Croissant
After a few minutes of coding, the bar at the bottom of the screen notifies me that my compile has finished. I Ctrl-X back, start a sanity test suite running just to be sure nothing horrible was broken overnight, then carry on coding again. Compiling on the quad-processor Linode is around twice as fast as inside VMware on my MacBook was. It's also completely, blissfully silent. The only sound is the raindrop-like patter of the keyboard as I work. It doesn't even get warm—a surprisingly refreshing change from the keyboard of a hard-working laptop!
I swipe to the DuckDuckGo app and look something up in the Qt APIs, then swipe back. It's becoming second nature, but I still miss a keyboard shortcut for task switching.
After an hour or two of uninterrupted development, the UK team wakes up and the first instant messages arrive. Thank heaven for the iOS5 update! I use the imo messenger app, which is fine, but of course, before the notification center, each pushed message would interrupt whatever I was doing with a frustrating pop-up. Now, the new notifications center behaves much more like a growl notification would—it lets me know, and it gets back out of the way again.
I finish the function I was working on, then four-finger swipe to the chat app; it's my boss reminding me about our 11am conference call.
Skype-based conference calls work fine on both the iPad and the iPhone; at least, as well as VoIP calls ever work—that is, fine after a few false starts while someone reconfigures the Linux audio drivers. I appreciate not having to think about that anymore—with a thin, consumer client and a powerful Linux server, I'm really enjoying the best of both worlds.
During the Skype call, my iSSH session timed out in the background. It's only held for ten minutes or so. Fortunately, a single tap reconnects me, and through the magic of GNU Screen, I'm back at exactly the place I left off again.
As is always the case, while fixing one bug, I encounter another, apparently unrelated one.
Instead of messing around with some Web interface, I've switched to grabbing screen dumps (I recommend vncsnapshot) and any log files or stack traces with a command-line script run on the Linode itself. We use the Best Practical RT tracker (for our sins), which conveniently comes with a Perl script to interact with it from the command line. Doing this is actually quicker and easier than uploading via a browser used to be—one command with a bug description and the attachments, and I'm done.
The Cloud Is Always with You
And, it's lunchtime already! I close the iPad and head off with the others. The remote rebuild I left going will still be there—no need to worry about any uploads getting interrupted; it's all happening in on the Linode, after all.
Figure 6. iPhone SSH
During lunch, I pull out my iPhone and connect to the Linode again.
Unfortunately, the build failed early on—out of disk space on one of the
office staging machines. The iPhone keyboard is somewhat painful to use,
rm -rf /tmp/build-2011-* it suffices. I kick off a new build while
waiting for dessert to arrive.
Now I'm feeling nicely fed and just a little drowsy. To keep awake, I move to a standing workstation and set off some longer-running performance tests on a remote cluster. I find I move around between a lot of different working configurations with the iPad—much more frequently than when using a laptop. I'm not sure why—perhaps it's something about having a separate keyboard and screen that makes it easier to find a comfortable typing position, or perhaps it's just the novelty.
The tests will take an hour or so. I close iSSH and review the latest spec/schedule changes my colleagues have made to an upcoming spec, stored in Google Docs.
Oh, Google Docs, Why Do You Hate Me So?
In a bitterly ironic twist, the only part of working in the cloud that doesn't work smoothly is using Google's cloud-based MS Office replacement. The mobile word processor is a joke, frequently losing the cursor position and sizable chunks of text. The spreadsheet version is better, but it's still a pathetic experience compared to the desktop version. There are no good native apps, so the only thing to do is to force Google to show the desktop versions of the sites and ignore the script errors. I wish I could convince my team to switch back to OpenOffice.org.
The tests have finally finished and the results are in. I move to the lounge area and connect to the big HD TV with the VGA cable—something about seeing console-mode Vim in giant HD makes me smile every time.
There are some oddities in the logs. I copy and paste a few snippets to a colleague and discuss them in chat. I'm glad copy and paste work smoothly, although having three different sets of buffers (iPad, Screen, Vim) does lead to confusion from time to time. Idly, I wonder if any of my colleagues have noticed I've been using an iPad instead of a laptop for the last month.
Six pm rolls around, and it's time to head home for the day. Despite a full day's intensive use, my iPad is still showing 15% battery life. I never bring a charger to work, and I've never needed one. That in itself is a taste of freedom.
At the End of the Day
Later that evening, I pull the iPad out and open up Pages to finish a blog post. The house is quiet. Only the distant sounds of the city drift in from outside and mingle with the gentle patter of key presses on this delightful wireless keyboard.
I started this experiment because I fundamentally believe that most people don't want to rearrange windows, babysit their own general-purpose computers or back up their data. Sooner or later, almost everyone will work like this, and I wanted a taste of what that might feel like. I expected to find something that didn't work, but as the days turned into weeks and the weeks into months, I found I hadn't returned to my laptop even once.
I don't miss the weight. I don't miss the keyboard getting warm when I'm compiling. I don't miss its fragility, both physically and virtually. I don't miss running out of power. To my surprise, I find I am happy. Coding in the cloud isn't for everybody, but for my work flow, it's a perfect fit and I love it.
After a few minutes, the perfect peace is rudely disturbed by the twin jet-engine that is my MacBook fans spinning up to full power on the shelf behind me. I can't believe I used to put up with this all day and night.
Despite that, I leave the MacBook running. It's doing the only thing I still need it for on a regular basis. It's ripping DVDs.
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: