Pocket Computers
I was reading a story today about the Japanese telecom NTT DoCoMo launching a new “ultramobile PC” – basically a Windows palm-sized machine. And I started thinking why companies have trouble making this form factor work, so I’ll write down my product idea here. It’s all under a Creative Commons license, so perhaps someone will make this for me.
I always liked my Palm Pilot. The pocket-sized PDA had been tried before, but until Palm no one had managed to put the right features in the right form-factor. That’s just the way product development goes; you try this and that until people see what they want. Customers won’t be able to tell you what they want, but they know it when they see it on a shelf.
But let’s try to describe what a pocket-sized computer should be. First, if I’m carrying it around in a pocket, it should be a phone. No point at all in carrying two of these things when one will do. I liked the Palm Treo for this; RIM’s crackberry is the closest modern equivalent, but it’s too small to be a good PDA.
First off, what makes this exciting is that I can now store all my data in the “cloud”. Either one I run myself, or (more expensively) a commercial provider. So if I think of my handheld as a cache of my cloud storage, things become much smoother.
First, use SSD for dense storage. It should be possible to keep 500GB or even 1TB in-hand as prices drop. The device will transparently manage my data so that frequently accessed files are local, but I can “see” all my files via the cloud. The large local storage ensures that if I lose connectivity, I can still be productive. I should be able to “pin” some files local (that presentation for the big customer, perhaps), and changes to local files should be migrated back to the cloud.
The CPU is going to be puny. No way around it. Slow as well, to keep power usage in check. So just start with a multi-processor OS, and allow it to scale up to more processors on the fly. When this little guy is docked to a larger desktop station, it should start including the desktop’s CPUs automatically. This boosts the speed and power transparently to users. Modern OS’s can use multiple processors, but I don’t really know of any that allow those CPUs to come and go at runtime. So this would mean adapting something like the Beowulf clustering software to manage all processes in the device.
Handhelds have tiny screens. You’re never going to get one bigger, and even if you had some sort of “roll-up” screen available, who wants to carry it around? And how will the other people on your bus or train like it when you unfold that 27” monster? No, I think your screen size will always be limited to your shirt pocket dimensions. This means the OS must stop wasting pixels for things like menubars, window borders, etc. This is not a desktop, don’t try to be one. It also means that when docked, this device should be able to use all of those pixels as well.
The X Window System architecture uses a “display server” to manage the pixels. All GUI programs are “clients” of that server, and depend on the server to map requests into pixels. It seem natural to use something like this to allow a running program on the handheld to switch to a larger display and allow it to use more pixels. I’m not aware of any X implementations that allow an active session to be moved to a new and different display server, but it shouldn’t be that hard to add. (Not trivial, you understand; just not “hard”.)
Some applications, like your clock or your TODO list, won’t need to use those extra pixels, or that additional storage and CPU. So these will probably just map to a window on the desktop as is. However, applications like a presentation editor would benefit from more pixels, so this application would need to switch resolutions when docked. In addition, the “one program only” rule could be broken when docked. It makes more sense to emulate a desktop when you actually have the resources of a desktop.
I think this video expansion could be done by having the desktop environment implemented in the handheld, but most of its functions suspended to save resources when running stand-alone. When docked, these processes would thaw out onto the station CPU and video, and your “real” desktop would be revealed. That TODO list is just a small-sized window, but your presentation’s window can be resized.
At the point where I have a smart phone with a large screen, transparent access to all my data via Internet, and the ability to scale up my processing and video via a docking station; now I have a pocket computer worth carrying.