What Would an Ideal Portable-Computing UI Look Like?

Right now, the question of what you need in a mobile computing platform is most often phrased in terms of “Do you need a netbook or a full laptop? Or perhaps one of the new high-end smartphones will manage?” I think the question isn’t one of capabilities as much as it is a question about how we access those capabilities.

For some people, the iPhone’s lack of a physical keyboard is a deal-breaker. For me, the smaller-than-standard keyboard on the average netbook is a powerful disincentive: If I had to use one, it would slow down my interaction with the netbook — and if I learned to be fluent and productive with the small keyboard, it might mess up my muscle memory for dealing with full-size keyboards on my “real” computers. It’s not a trade-off I’m willing to make.

The Palm Prē’s physical keyboard is tiny. I can only key it with my thumbs, and there’s no risk of interference with my pre-existing keyboarding skills. Inputting data with it is achingly slow, but offset by the device’s wonderful portability (it fits into a pocket even easier than an iPhone does). But I can’t really edit text with it, because there’s no D-pad to do precise cursor positioning with. Even the Orange+finger-movement trick is balky and awkward, in my experience; if I want to correct a single-letter typo, getting the cursor after the incorrect character so I can backspace and correct it is such an ordeal, it’s often quicker and easier for me to use Shift+Backspace to delete the entire word and then retype the whole thing.

In effect, even though the phone has the ability to edit text, the interface makes it so difficult that I can’t use the capability. It might as well not be there. What would a better interface mechanism look like?

In Charles Stross’ Accelerando, the protagonist starts off with a set of glasses that provide him with a constant Net connection and heads-up displays of whatever he desires: maps, email, people’s vCards, and so on. But Stross (perhaps wisely) doesn’t give much detail about the glasses’ input mechanism. “He glances up and grabs a pigeon, crops the shot and squirts it at his weblog to show he’s arrived.” How? That part’s left to the reader’s imagination. (A very crafty trick on Stross’ part, and one that writers can pull off and user-interface engineers cannot.)

If I want to do with my phone what Stross’ character did, I have to yank it out of my pocket, press the power switch, then make a swiping gesture that tells the phone its attention has been requested by a real human (rather than simply being jostled in a pocket or handbag). But Stross’ protagonist’s glasses were already powered up and in use, so suppose I were already using my phone and decided I wanted to take a picture of something?

Tap a physical button to escape from whatever app I was already using, then press an on-screen button for the main “launcher” feature. Find the “camera” icon, tap it, wait for the camera to load. Then I can aim and press another on-screen button to capture the image.

Cropping is pretty much out of the question, although someone could write an app for it. And I actually can update my blog from my phone; it has a WebKit-based browser and enough screen real estate to make writing and posting an entry possible, albeit painful.

Stross’ interface has the luxury of not having to be real, of course. But something that already works as a real-life prototype is the Sixth Sense system, built by Pranav Mistry of MIT’s Media Lab. It senses the user’s hands, and you can take a picture simply by framing whatever-it-is you want to capture with your fingers and thumbs. (It does a whole lot of other things, too, and I highly recommend the entire video.)


  1. Fatal error: Uncaught Error: Call to undefined function ereg() in /websites/mactane/live/blog/wp-content/themes/coyote/functions.php:300 Stack trace: #0 /websites/mactane/live/blog/wp-content/themes/coyote/comments.php(35): sandbox_commenter_link() #1 /websites/mactane/live/blog/wp-includes/comment-template.php(1556): require('/websites/macta...') #2 /websites/mactane/live/blog/wp-content/themes/coyote/single.php(52): comments_template() #3 /websites/mactane/live/blog/wp-includes/template-loader.php(106): include('/websites/macta...') #4 /websites/mactane/live/blog/wp-blog-header.php(19): require_once('/websites/macta...') #5 /websites/mactane/live/blog/index.php(17): require('/websites/macta...') #6 {main} thrown in /websites/mactane/live/blog/wp-content/themes/coyote/functions.php on line 300