Imagine trying to program a virtual machine - a software instance that mimics all the characteristics of a physical computer - on a device with 2 kilobytes of RAM. (For those of you not used to thinking in these terms, that’s one two-millionth the number of kilobytes of RAM that the average computer ships with today.)
That’s what Thorsten Kramp had to do when creating a virtual machine that could run on a smartcard. He and his colleagues are now using the same expertise to program for another resource constrained environment: the tiny environmental sensors or “smart dust” that his employer, IBM, hopes businesses and individuals will deploy all over the world in order to realize the long-anticipated Internet of Things.
Memsic’s IRIS mote will be powered exclusively by IBM’s Mote Runner software, although Mote Runner isn’t exclusive on IRIS.
These “motes,” as they’re sometimes called, are no bigger than a key fob and run on small batteries or harvested (e.g. solar) energy. The ones Kramp has been working with, the Memsic IRIS motes, have 8 kb of RAM and 64 kb of flash or eprom storage.
Coincidentally, most commercially available motes have about the same specs as the 1977-era Apple II designed by Steve Wozniak himself.
“In a sense I never grew up,” says Kramp. “I started with an Apple II […] Ten years ago I came to IBM Zurich [a branch of IBM Research], and I worked on a virtual machine implementation on a smartcard.”
Over the course of a few years, Kramp and his team built up - or in some sense re-discovered - the skills required for extreme code economization. It’s the kind of programming not seen since the days of the original hackers in the Artificial Intelligence lab at MIT run by Marvin Minsky, whose exploits were made famous in Steven Levy’s Hackers.
This is the kind of bytecode-level programming that is unreadable by the overwhelming majority of programmers, and requires a complete and total understanding of the machine in question.
Underside of the Memsic IRIS mote
Which is the entire reason that Kramp decided to create a virtual machine for the motes that will power the Internet of Things in the first place: who wants to learn how to program in bytecode for every new mote that a manufacturer decides to create?
“We came a long way since the Apple II,” says Kramp. “By using different programming languages, the skill-set you have to develop is much smaller.”
IBM’s Mote Runner software platform, written from scratch so that it can work on such tiny devices, allows programmers to code for motes using Java, a widely-used language familiar to most programmers. It’s a far cry from the integer BASIC of the first Apple II - written by Steve Wozniak - or the upgraged BASIC of the Apple II plus, produced by Microsoft.