Unleashing the Beast in Your Coat Pocket
Lurking inside your cellphone is a vastly underused computer. One inventive programmer figured out what to do with it.
Illustration by Christoph Niemann
Way back at the dawn of time-say, 30 years ago-when Alan Kay was pioneering windowed displays on a personal computer and Doug Englebart was inventing the mouse, either of them would have killed for a modern cellphone. Not for the instant communication, which would have required another billion dollars’ worth of towers, transceivers and switching equipment, but for
the computing power. The megabyte
or four of memory and the couple of multi-megahertz CPUs that are standard on today’s Web-enabled mobiles dwarf what you could find on almost any machine available to the developers of Unix, e-mail or the Internet. Yet most of the time, all that computing power just sits unused.
Therein lies an opportunity.
Most of the current generation of cellphones support Java, a combination of programming language and libraries that lets developers write compact
code and run it on many different machines with minimal customization. Obviously, you can’t just sit down at the keyboard–so to speak–of your Motorola, Nokia or Samsung and start coding, but building programs for a Java-enabled phone is relatively simple. Download the Java development environment of your choice, snarf a few extra bits of code from the phone manufacturer’s Web site, and type away.
When you’re done, simply insert a link to the compiled code onto a Web page, download it with your phone’s browser and presto! (For hackers who haven’t got a new-model cellphone and aren’t willing to buy one just to run their code, Motorola, Nokia and others offer emulators you can run on a PC that allow you to see the cramped
little images and push illegibly labeled buttons on your screen.)
Since Java-enabled phones became available around the turn of the
millennium, thousands of apps have made their way onto the Web, ready
for downloading. In addition to retreads of every game that ever graced an 8-bit cartridge system back in the 1980s–from Pong to Space Invaders to Pac-Man–hackers have managed
to cram chat clients, low-resolution porn, grocery-list managers, news-
headline scanners, webcam viewers and
streaming-video clients into people’s pockets and onto their belts.
If some of these apps make it seem as if Java-based cellphones aren’t fully tapping all that power under the hood, well, that’s by design. Victor Brilon, Java applications manager at Nokia, and Charles Chopp, Nokia’s media relations manager, laughed when I asked questions about writing Java programs that make full use of a cellphone’s computing and communications power. As on PCs, Java apps on cellphones run in a “sandbox” that prevents them from doing damage to their surroundings. So no dialing out, no messing with other programs loaded on the phone, no access to the digital signal processor that encodes and decodes the digits representing your voice, which is by far the more powerful of the phone’s two CPUs. There’s a legit reason for this good-fences policy: Imagine accidentally downloading a scrap of code that dials 911 every five seconds, or a malicious app that records snippets of your phone conversations to the phone’s RAM and then calls random numbers in your address book to play them back.
A revised version of MIDP (Mobile Information Device Profile, the standard for running sandboxed Java apps on handheld gizmos, including cellphones) scheduled to be released this summer allows users to allot more access to their phone’s resources to “trusted” apps that have been vetted by the manufacturer or some other industry-approved authority; watch for the first round of train wrecks soon after its release.
So if a hacker can’t implement all of Microsoft Office or find the next Mersenne prime on a cellphone, what is it good for? State the question another way: Besides old video games, what really interesting applications accommodate lousy graphics, marginal memory and a user interface consisting of a dozen-odd tiny, randomly placed buttons?
Among the programmers who have taken up this challenge is Tim Clark, chief technologist at the tiny software startup VTTi, whose secret weapon is a bunch of adapter cables for cellphone serial connectors. It started when Clark took a gig for a hot tub manufacturer who was tired of local pool guys sending the wrong parts back for service because they couldn’t be bothered to figure out the diagnostic codes for the fancy new digital controllers. Now those pool guys plug one end of a cable into a cellphone running Clark’s Java code and the other end into the hot tub controller; five minutes later, an engineer back at the plant calls the pool guy on that same cellphone, tells him what’s wrong and walks him through swapping or fixing the right parts.
The lightbulb switched to high wattage for Clark and his bosses when they looked around and realized that lots of other common consumer products feature diagnostic ports. Consider the hundreds of sensor parameters your car monitors before condensing them into a single “check engine” light: Mightn’t it be helpful to look behind
that light and parse the inputs from the individual sensors? Clark thought so, and he went ahead and coded about 80 percent
of the capabilities of a typical garage diagnostic scanner into a cellphone. Gearhead wannabes, this is your chance: Plug your phone into your car engine’s diagnostic port (usually somewhere under the dashboard), get out your socket wrench, and start tuning up that balky SUV. And for the rest of us, whose cars only stall when passing a truck at 43 mph on one particular hill when the moon waxes gibbous, the mode that uploads a full set of sensor readings to a central server every five seconds might be just the thing to convince a skeptical mechanic.
Medical instruments, it turns out, have serial ports too. If you wear a portable heart monitor while running, code shared between your cellphone and a central server can beep your cardiologist with the latest readings when you keel over.
Clark’s own favorite? A lash-up he built to accommodate one of his personal obsessions. “I’m a weather nerd,” he says, explaining why he just had to code some Java for a GPS-equipped phone that plugs into a gaggle of instruments–thermometer, hygrometer, anemometer, barometer–he can toss in his car and install on the hilltop of his choice: instant remote weather station.
There, in a nutshell, is the untapped potential of the cellphone computer: While the rest of us are using our Web phones to download the latest forecast from the National Weather Service, Tim Clark is up in northern California using his to track blustery Pacific Coast storms.