Skip to Content

How the Apple II Taught Programmers To Economize

The guts of the Internet of Things are being synthesized by programmers who cut their teeth on the earliest PCs.

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.

Keep Reading

Most Popular

A Roomba recorded a woman on the toilet. How did screenshots end up on Facebook?

Robot vacuum companies say your images are safe, but a sprawling global supply chain for data from our devices creates risk.

A startup says it’s begun releasing particles into the atmosphere, in an effort to tweak the climate

Make Sunsets is already attempting to earn revenue for geoengineering, a move likely to provoke widespread criticism.

10 Breakthrough Technologies 2023

Every year, we pick the 10 technologies that matter the most right now. We look for advances that will have a big impact on our lives and break down why they matter.

These exclusive satellite images show that Saudi Arabia’s sci-fi megacity is well underway

Weirdly, any recent work on The Line doesn’t show up on Google Maps. But we got the images anyway.

Stay connected

Illustration by Rose Wong

Get the latest updates from
MIT Technology Review

Discover special offers, top stories, upcoming events, and more.

Thank you for submitting your email!

Explore more newsletters

It looks like something went wrong.

We’re having trouble saving your preferences. Try refreshing this page and updating them one more time. If you continue to get this message, reach out to us at with a list of newsletters you’d like to receive.