During the second half of December, Toronto--which I call home--suffered one of the harshest ice storms on record, knocking out our electricity for several days. It also left us with both a maple tree leaning precariously against our house's roof and, totally coincidentally, a sudden longing for warmer shores.
Before leaving on a week-long trip to Florida with my family, I filed enough stories to cover my Macworld work for the following seven days, but I still needed to tend to my day job as a developer. Since I didn't feel like leaving a $3000 MacBook Pro in my hotel room while I was shaking hands with Mickey Mouse, I decided to take only my iPad Air on the trip--not without a little apprehension, mind you, because, as everyone knows, the iPad is built for consumption, and not doing actual work.
My first order of business was to decide exactly what gear I'd need to take with me. I expected I'd have to type a lot, so I opted for the Logitech Tablet Keyboard for iPad, which has a nice, fullsize layout and comes with a case that turns into a convenient stand.
I also own a Folio Keyboard from Zagg, but I find that the larger Logitech is friendlier when typing code, which often requires the use of less-common keys that manufacturers tend to move around in an effort to fit full-size keyboards in the not-quite-fullsize space available in a combination keyboard/case.
Speaking of cases, I traded the Smart Cover I use at home for one of Apple's Smart Cases, just so that I could have a little extra protection while still keeping my gear lightweight and compact.
Can you hear me now?
Next, I wanted to make sure that I could keep in touch with my colleagues at Telemetry. Our development team is distributed all around the world, so we're used to the majority of our communications happening electronically. All I needed was Internet access and the specific communication apps we use.
Luckily, the resort I was staying at had excellent Wi-Fi, with a speedy connection, very little lag, and no blocked ports; this made it easy to use just about every service I needed, including connecting to our VPN and, through it, to various company servers. (Interestingly, Disney has also made Wi-Fi available through their properties, which means that I spent a week dodging crowds of people with their nose buried in their screens.)
Even though it sometimes gets a bad rap, iOS's built-in Mail app has always worked well for my admittedly modest emailing needs, and I had no trouble staying on top of my inbox throughout the trip. Even better, Apple has taken full advantage of iOS 7's support for keyboard shortcuts, which meant that almost every key combination I use on my Mac also worked on the iPad, reducing the time I spent tapping on the tablet's screen and increasing my productivity.
I was a little less impressed with Atlassian's HipChat, which we use for live chat among the team's members. While the app ultimately did its job, I couldn't get it to stay online while running in the background on iOS, and this meant that my colleagues would see me drop in and out of conversations when I--even briefly--switched to other apps while looking for a particular bit of information. To make matters worse, the service sends me an email every time I receive a message while I'm not online; you can imagine what my inbox looked like after a few hours of chatting.
Most of my programming work involves server-side code--the kind that powers webpages, for example. For all practical purposes, this reduces my software needs to a good text editor and the ability to test the code I write.
While there are a few developer-oriented editors in the App Store, running server-side code on an iPad is out of the question due to Apple's sandboxing restrictions. Fortunately, solving this problem turned out to be very easy: I rented a virtual server from Digital Ocean, installed all the software I needed there, and then connected remotely to it via a secure terminal.
For the crazy price of $0.007 per hour (that's $5 for a full month, in case you're wondering), this gave me a working (albeit old-school) text-based environment in which I could edit and run all my code. I used iSSH to connect to the server from my iPad, and after a brief adjustment period in which I had to learn to use the venerable Vim all over again--which gave me repeated urges to chuck the tablet and keyboard out the window--I was able to work in more or less the same way I would have at home.
It wasn't until I needed to test something in Safari that I hit my first real wall. Apple used to equip iOS's built-in browser with a rudimentary debugging environment charitably called "Web Inspector." This wasn't nearly as sophisticated as the actual Web Inspector that you'd find in the OS X version of Safari, but it was good enough in a pinch.
Starting with iOS 6, sadly, the company has done away with the Inspector altogether, and the only way to debug Safari on iOS is to connect to it from a version of Safari running on a Mac. As you can imagine, this makes debugging any kind of browser code--particularly the kind you find in a complex Web app--essentially impossible.
I did come up with solution, though it's one I'm far from satisfied with: I used LogMeIn Ignition to connect to my Mac back at home and run things there. This approach turned out to be both laborious and frustrating, but I only had to do it once, and I did manage--barely--to get the job done.
Home is where the tablet is
All in all, I was able to do more work than I expected while on vacation with just my iPad, and more efficiently, too. With a little preparation and some creative thinking, I was able to take care of all the critical tasks that came along without too much hassle.
More importantly, the experience left me with the firm conviction that none of the problems I had to contend with are inherent limitations of the iPad as a platform. By and large, every issue I encountered was due either to apps misbehaving or to restrictions that Apple chooses to force on its users--some of which, like the inability to debug webpages, feel ridiculously contrived.
Ultimately, it has become obvious to me that it's only a matter of time before more sophisticated developer-oriented software makes its way to the iPad; together with ubiquitous Internet access and inexpensive remote services like Digital Ocean's virtual servers, it will hopefully elevate tablets to first-class programming platforms, thus freeing us all from the need to carry laptops everywhere we go.