Coding in a Post-PC World, Part 4
This is the fourth and final installment on writing code for a post-PC way of life. Part 1 covered the hardware. Part 2 covered the software. Part 3 covered the cloud. When all these aspects come together, they work harmoniously. But baby, we still have a long way to go before developers will leave behind their laptops en masse and opt for this early glimpse of what the future holds for those who love to code.
Besides the aforementioned keyboard from Part 1, an external pointing device of some kind (i.e., a mouse) would also be really helpful at times. Just as stylus makers have addressed the graphic artist needs for Android tablets and iPads, so too does a Bluetooth mouse have a home for the coding professional who needs to rapidly access areas of the display with a high degree of accuracy. We may never see a mouse for the iPad, but Android's recent addition of USB device support in the 3.1 "Honeycomb" release will make this a reality for those tablets featuring the OS and the USB ports to accept them.
Another developer need is support for multiple displays. Preferably this should be an entirely wireless experience. A tablet should be able to sense another shared display-compatible device nearby and pair with it, whether that be a dedicated monitor or even another tablet. This would provide a seamless multi-monitor environment that "just works". In a way, this feature is already available on the iPad via Airplay using an Apple TV device, but I suspect it won't be too long before we see iPad displays having the ability to share their output with future Apple displays with just the flick of a finger. It could operate like Mission Control does on OS X today, and pair with two or more external Airplay-compliant monitors and partition the screens out accordingly.
I would also like to see some sort of biometric security as an option on future tablets to better ensure the data security of the tablet. Source code is gold, and the current keyboard and screen drawing security approaches only go so far.
I also miss the fact that no Git clients yet exist for either the Android or iOS platform. This is likely due to the substantial Perl dependencies that Git relies upon, but considering the number of Subversion clients available for both platforms, there's obviously a market for on-board version control. In the meantime, I'll continue to SSH into a cloud-hosted VM, but it would be nice to edit code offline once in awhile.
I also look forward to the day when Parallels or VMware release a product that can host a full-blown instance of a Windows or Linux VM on an Android or iPad tablet. The engineering required to make this work is far from trivial and we will need several more iterations in mobile hardware to support such solutions, but it's not outside the realm of possibility. VMware has already has its VMware View product on the iPad, and while this is essentially a remote desktop program, it shows that virtualization companies are thinking about the possibilities of future on-board VMs.
The Dream Scenario
Here is how I would like to work on my coding projects using my tablet a few years from now. While riding on the bus or train during my morning commute, I can quickly scroll through code, making comments and adding TODOs that are automatically sync'd back to the Git-managed source tree with no explicit commits necessary. Like iCloud and Dropbox, it just works and I don't have to worry about additional steps to make it so.
Arriving at my desk, my wireless display monitors are smart enough to sense the tablet is within a couple meters range and asks if I'd like to link them to the tablet's display. Doing so gives me three display surfaces, each optimized, showing the applications exactly where I want them. My automatically paired Bluetooth mouse and keyboard make me just as productive on the tablet as I would be on a traditional high-powered workstation, with the added bonus of touch when I need faster pinch-gesture precision. The hosted virtual machines I have running on the tablet sync their states to the faster server farm backend so I can use those when connected to the LAN, leaving more on-board resources on the tablet for my daily development needs. By then, I will be developing tablet applications on the tablet itself, and test them in their own dedicated on-board VM containers. This will greatly accelerate tablet application development cycles because I won't have to deal with simulators that do not easily account for actual hardware like accelerometers, GPS radios, and multi-touch gestures that are best tested on the deployment device itself. What is your dream tablet scenario?
Even with these limitations, I am still a big fan of writing code from a tablet. Laptops can't beat the battery life a tablet provides, nor can laptops compete with tablets on size and weight comparisons. And while desktops and laptops pack more processing firepower, both Android and iOS devices have optimized user experiences that run applications that load quicker and are more responsive and intuitive than their PC counterparts. Yes, there are a number of areas that need polish and several large, though not insurmountable, hurdles that need to be overtaken, but like it or not, tablets will offer developers a significant environment where both will participate substantially in application lifecycle management.
What are some of the pieces of the post-PC you think need to be developed before programmers more widely adopt tablets as their primary code writing platform? Post a comment or send me an email and let's keep this conversation going!