Note: this is (most of) the content from the first post to my Working in the Cloud email list - more are prepared and will go out soon, so if you don’t want to miss the rest you can still join the list here.
About a week after I published the iPad + Linode: One Year Later post, my employer decided to buy me a shiny new laptop for CUDA (GPU) development - a Dell XPS 15 with 8GB RAM, a quad-core i7 CPU and a 512GB SSD drive. It was shiny!
And it was fast. Compile times dropped from 53 seconds to just 20. Test suites ran faster. With 8 GB memory I could run larger tests, or more concurrently. Disk space - always a limitation on the Linode 512 - was no longer a problem.
I’ll be honest: after the first day, I began to have doubts about my future in the cloud.
There were one or two cracks in the armor; a laptop keyboard just isn’t as nice as the Apple Wireless one. It gets unpleasantly warm and it’s just a bit too high off the table. I tried an external keyboard, but then I’m sitting too far away from the screen.
I also missed touch. I never expected to say this, but moving the pointer around with a touchpad or even an external mouse just feels slightly awkward now. It’s less immediate; one more thing for my subconscious to work on.
Having a desktop-class browser is really, really nice though. GMail is more responsive and I can use Google docs like a Real Person again. I can even attach things to emails! Hallelujah!
The one thing I don’t really notice while programming is the screen. Everybody asks me how I can work on such a small or low-res screen with the iPad. Really, I don’t notice the difference unless I’m doing a 3-way merge and need the extra horizontal space.
I spent a whole week working on the new laptop. It was a busy time at work and I was multitasking like an over-caffeinated rabbit, flicking back to my emails every few minutes to clear the next dozen that had arrived since I last looked. Meanwhile, my iPad lay in the corner quietly discharging its battery into the void.
Until Thursday afternoon. It was a splendid autumnal day and as I stepped outside at lunch to pick up some fresh bread from the bakers something in the air called to my soul. You can’t sit inside on the last fine day of autumn, it whispered to me, come with me and be free.
I went back inside, packed up my iPad, some water and a rug into my rucksack and set of, into the great outdoors. Twenty minutes later I was lying in the dappled shade in the vastness of Munich’s English Garden, feeling the breeze playing in my hair as set up my 3G tethering. This is right, I thought. This is the life! And yet at the back of my mind was a guilty question: am I wasting time out here? Would I be more effective sitting back at home chained to The Machine?
I logged in and carried on hacking away at the same bug I’d tried and failed to track down the day before; a subtle problem that spanned several concurrently-running services in our system. I’d grown used to the rapid build/retest cycle of the new laptop and was finding the slower pace of the Linode increasingly frustrating. The air was beginning to turn chill and suddenly this wasn’t where I wanted to be or what I wanted to be doing.
I queued up another build and a set of offline tests to run and checked the time; it’d take a good five to ten minutes before the results were in. Time to move. I told the system to ping my phone when it was done then packed up and got back onto my bike, heading South to find a nice warm cafe to finish the afternoon in.
Back on my bike, gently coasting along the tree-lined paths, my muscles warmed up and my mind relaxed again. My thoughts turned back to the problem; not wanting to waste any more time I wondered how I could most effectively narrow down the scope of the bug. As I was crossing a small bridge I felt the buzz of the notification in my pocket; the builds were ready. Nearby was a small sunlit glade; I settled myself down between a small tree and the stream.
Before logging in on the iPad, I lay back, watched the leaves fluttering against the darkening blue of the sky and finished thinking about the tests I’d run; what the various outcomes might actually mean, and what my next step could be. Once I knew exactly what I wanted to try next, I opened the iPad, logged in and did exactly that - no more, no less. Thirty minutes later I’d solved the problem.
Riding back home, I realized I’d spent the entire afternoon thinking about and working on the problem. Not checking my emails, not writing a quick reply in some barely-related feature discussion. Not reading Hacker News. Just focused on the most important problem of the day.
The same thing happened a week later when I had to write a press release. I’d spent all week putting it off, finding ‘more urgent’ things to do in my emails, attacking small development problems. By Friday afternoon I’d run out of time. I closed the laptop and took my iPad to the window ledge, where I sat with a cup of tea and looked out across the grass, letting my thoughts come to rest.
Then I started typing. Typing on the touch screen is slower than a keyboard, just as compiling on a Linode is slower than on a quad-core i7. Yet again, here the bottleneck wasn’t my typing speed, but my thoughts. The slower pace became meditative, the lack of distractions absolute. An hour later I was done. Later that night our CTO replied saying that he loved it, calling it “quirky, refreshing, and extremely likely to get the coverage we need.”
I’m coming to the conclusion that the speed and generality of a laptop or desktop system is optimizing the wrong thing - it’s increasing the rate at which my brain receives distractions from the true bottleneck in my work: measured thought, repeatable inspiration.
Yet I have one more test left to try, and one that I think might interest you: what if I try to get the best out of both worlds and use the iPad to remotely connect to my work laptop? This is something you could try, too - after a little bit of setup you could take your tablet down to the building cafeteria, or library, or outside, or home, and get a taste for what working on it is like without having to sign up and set up and entire remote server.
I’ve now set this up myself using an iPad and Ubuntu 12.04 laptop and will send detailed instructions on how to do it in the next email. If you want to receive it, click here to join the list.
Thanks, and until then, happy cloud working!