Hacking the Nokia N800
This handheld costs a tenth as much as an equally powerful desktop 10 years ago
PHOTO: Shayne Lynn
Small? Sure, but the point is that the N800 is a full-blooded computer that a bona fide amateur can reasonably hope to program.
A lot can happen in a decade. You can hold the Nokia N800 in your hand, yet it’s a near-exact match for a high-end desktop PC from 10 years ago. It has a 320-megahertz processor, 128 megabytes of RAM, and a few gigabytes of available mass storage. Although its screen displays only 800 by 480 pixels instead of 800 by 600, it’s a touch screen, and the machine comes with IEEE 802.11g wireless-networking capability, which wasn’t available in 1998 at any price. It’s not the only pocket computer with such specs by any means, but it sure makes a good test bed for thinking about life 10 years hence, when PCs may well be printed on shirtsleeves.
If the N800 were a PDA, it would have a calendar/contact/toâ''do manager built in. It doesn’t. If it were a smart phone, it would connect to cellular networks. It doesn’t. Instead, you can wirelessly connect to Web-based versions of these tools. Or you can hack together your own programs.
Since the N800’s predecessor was released two years ago, a community of thousands of hackers has grown up around it. We converge at Maemo.org, the Web site Nokia set up to support us. More than 300 open-source software projects are hosted there, with uncounted others elsewhere. And the N800’s Linux-based foundation means that yet other masses of software--pretty much anything that doesn’t need a graphical interface--can run unaltered.
I start with the basics--a calendar program--by downloading GPE, a suite that runs on pretty much any Linux box. However, synchronization to my Macintosh isn’t really ready for prime time. There’s a program (gpesyncd) you can run from a terminal window that will accept the vCal format the Mac uses and stuff items into the local database, but that’s about it. The developers promise they’ll get around to full sync eventually.
In the meantime, I could log into the N800 from my Mac, fire up gpesyncd, and paste each event into the terminal window by hand. But that would be too simple, and it would work for me only at my desk. Instead, I glue together a bunch of disparate tools: I’ll e-mail events to the gizmo and sync from there.
On the Mac side, that’s easy: I simply mail the event to an address that only the N800 will ever read. For the N800, I start with a special filter rule for the mail software to recognize an incoming calendar message and send its text to a program (as yet unwritten) that will, in turn, call gpesyncd. Here’s where I learn how to write a little code in Python: first, I play around on the Mac and figure out the most concise way to extract the data. Then I shift over to IPython, a nice interactive Python development environment that runs on the N800, to code up the part that will talk to gpesyncd.
In short order, I have two terminal windows open from the Mac to the N800: one to play with code fragments and another to monitor interprocess activity and kill stuck processes when necessary.
Not too long after that, I have working code—and the good sense to stop. My information goes a dozen hops on the Internet from my Macintosh to some mail servers out of state, then another dozen hops back to my gizmo.
It’s inefficient, but I don’t care. Both computers have CPU cycles and bandwidth to spare, I’ve spent a few enjoyable evenings hacking, and I have a solution now instead of months from now. The mere fact that a tyro like me can cobble a solution together out of existing tools also gives me a glimpse of what the world might be like when pretty much any computer visible to the naked eye can be programmed (for better or worse) by ordinary users.
Software Used On the Mac:
Emacs Python 2.5 IPython Firefox Thunderbird iCal
On the N800:
Claws-mail Python 2.5 IPython Bash Joe (Joe’s Own Editor) gpesyncd to-gpe.py GPE Calendar
Joe (Joe’s Own Editor)
About the Author
Paul Wallich likes machines to do things his way, and if he can’t build them himself, he’ll make over a store-bought model. ”It’s what I’ve done for every computer I’ve owned since my first Kaypro,” he says.