Channels ▼

Mike Riley

Dr. Dobb's Bloggers

Coding in a Post-PC World, Part 4

December 10, 2011

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.

Missing Hardware

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.

Missing Software

Compiling applications locally on a tablet isn't going to happen any time soon. Android does have its scripting language engines for Ruby (Ruboto = Ruby on Android) and everything else (SL4A = Scripting Layer for Android), and while these do a nice job running services and local applications with HTML+JavaScripted front-ends, you won't be compiling native Android apps on an Android device any time soon. Apple has made application development, even scripting language-driven programming on the iPad, even more restrictive. Applications like techBASIC (look for a review of this product in the future) take Apple's on-board programming constraints as far as they can be extended on the platform. That's not saying much.

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!

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.