Mobile devices as development machines


Tim O'Reilly tells the story of how Vic Gundotra, my manager at Google, came to the conclusion that the future of software lies somewhere in the intersection of mobile and cloud. Indeed it does, but I jokingly twittered back that we still need PCs -- how else are we going to write our mobile and cloud apps?

But in truth we hardly need the heavyweight hardware under our desks to develop software even today. If anything, with a ubiquitous network connection (wifi where available, 3G where it is not), most of the heavy lifting can and should be run on compiler farms, not the desktop. My own development workflow typically involves ssh'ing into a virtual instance from whatever client I'm on (a desktop, a laptop, etc) and running on a distributed compute cluster. Depending on the task at hand even a full graphical IDE can be run remotely over technologies like NX. Or if you're like me, ssh, screen, and emacs are all you need. And I believe we may even be headed for an era when the IDEs themselves are hosted applications, following the pattern established by email, text editors, and other traditional desktop applications.

So will this mean you can forgo the PC even for software development? Perhaps it does. Looking back, here were the specs on my first personal Linux box, as pieced together in 1994:

Dell Dimension Intel Pentium @ 133 MHz 256MB RAM 1GB HDD 28.8 kbps modem Slackware 2.0 Linux kernel 1.1.18 17" Dell Trinitron CRT Monitor @ 1024x768



I used this machine throughout my time as a CS undergrad, including the time off I took to write software for one of the first web companies (tripod.com).

By way of comparison, I now carry a HTC G1 device running Android:

HTC G1 Qualcomm MSM7201A @ 528 MHz 192 MB RAM / 256 MB ROM 1GB SSD 3G HSPA/WCDMA, GSM/GPRS/EDGE 802.11b/g, Bluetooth 2.0, USB 2.0 Android RC30 Linux kernel 2.6.25 3.2" screen @ 320 x 480

These stats are telling: The mobile devices in our pockets are more powerful and more connected in every way than the desktop machines we used to build the first generation of the web. If we can just bridge the peripheral gap and get high resolution external displays, then there is truly nothing stopping us from forgoing the desktop completely in favor of a completely distributed development environment.

Along those lines, I recently purchased an Asus EEE PC 1000 and installed Ubuntu on it. With a 1.6 GHz Intel Atom processor, 2GB RAM, and a 40GB SSD, that little netbook is already faster and more powerful than the desktop PCs we ran just several years ago. As we can expect to see that caliber of hardware in cellphone-sized mobile devices before long, I suspect it is only a short matter of time before we stop thinking in terms of "developer workstations" at all, and instead start thinking in terms of mobile devices as access points to a limitless development environment.