In 1993 I attended, along with a couple of friends, the launch of the original Apple Newton. I nearly melted my credit cards into slag by buying an original MessagePad and a copy of the Newton Toolkit. Both products were over-hyped (see this impressive and slightly utopian video), and promised far more than they could deliver on that hardware, but to me the technical innovation and potential were far more interesting than the actual practicality; I was excited about some kind of platonic ideal Newton device, not the actual stubby greenish device that crashed and locked up and wouldn't boot in cold weather and ate batteries like candy and turned my handwriting into word salad. Developing with beta-this and 1.0-that was a struggle, but within a few weeks I had sent my first Newton freeware application out into the world, an ugly, misshapen little utility called Strainer, best forgotten. But it was a start -- and a doorway into a whole world of dynamic typing, closures, garbage collection, prototype-based programming, byte codes, garbage collection, and even "eval" and "apply."
My co-worker Mike and I dove into it. He created the Usenet newsgroups for Newton. I developed and maintained the early FAQ list. I did so much testing and analysis of the behavior of the built-in applications that I wound up getting calls from developers within Apple to discuss the bugs I was finding. I got to know the Newton developer tech support engineers. I wanted to be one of them. I published articles, most of them likely best forgotten, but overflowing with my enthusiasm for the new architecture. I exchanged e-mail messages with Walter Smith, the very smart guy behind NewtonScript, talking about the implementation of NewtonScript itself; he explained closures. Which got me into Dylan. Which got me into Scheme. Which (ultimately) got me into Haskell. And so forth.
The Newton was a big part of my career, on and off, for the next six years or so. I got paid to write Newton applications -- not consistently, and not just Newton applications, and not end-user, shrink-wrapped applications, but a lot of NewtonScript nonetheless. I developed a kind of DSL, in NewtonScript, built into the package by executing NewtonScript code at build time. That package acted as a kind of script itself that ran on a NewtonScript engine capable of presenting a variety of nicely-formatted question types. The survey engine had a kind of transactional semantics, even across branching, so that the data it was recording always remained consistent. It could do all kinds of post-processing and analysis on the fly, with little embedded function objects, and basically ran as a big state machine to administer surveys. It was code-as-data; it was higher-order programming. NewtonScript was, at least for me at the time, an Acceptable Lisp. For several research projects, that's how the Health Media Research Lab at the University of Michigan collected data from study participants. There were several other parts to the process -- built around AppleScript, Quark XPress, WebObjects (Java), C++, and even Visual BASIC and Perl and Scheme and Macromedia Director, and I was involved to some extent in most of them, but the Newton survey engine was my particular baby.
Apple released Newton hardware in two more form factors, ultimately culminating in the MessagePad 2000 and 2100, which pretty much _were_ that platonic ideal of a Newton device, a local maximum as far as design, usability, and features per watt, and that product hasn't had a serious contender in user-interface design prior to the arrival of the iPhone. And it came crashing down, rather abruptly, just a few months after the release of the MessagePad 2100. There was no one left to fix bugs. Because of one particular bug in the 2100, we had to scramble to stockpile the earlier MessagePad 2000, so that we would have enough units on hand to complete our research study.
A couple of years ago I discarded my original MessagePad, with its original case and "Getting Started" card and cute little power adapter and a press kit from the Newton launch -- just tossed it in the dumpster. I shouldn't have done that. Original MessagePads -- not upgraded -- are scarce on the ground, and though they are not terribly usable, the design remains interesting. A few years ago I picked up a 2100, and just recently bought 3 more Newtons on eBay, one of each form factor, but I miss the neat leather-journal feel of the rubberized original MessagePad and its snug-fitting, book-like case.
Interestingly, the Newton architecture has proved to be flexible past the point of Apple's involvement. In the box of scuffed-up Newton MessagePads was a wireless modem card. Some enterprising hackers actually got support for these devices working; I have not yet gotten it working, but I'm told that it's possible to get it working on a modern WiFi network, albeit with a somewhat minimalist web browser. I wonder if I can get the Webmail interface working via a web browser on the Newton?
I gave my wife a short demo, and she wants one, so she's going to be a rather late beta tester herself. That's good; I'd rather see them get used, than just sit on the shelf and corrode. Me, I'm going to fire up the development tools and see what it looks like to me now with ten year's more perspective.
But more broadly, the history of this technology is causing me to think seriously about what just what exactly it is that I've been doing since I got my first computer in 1977, at the age of ten.
One of the famed Alan Perlis Epigrams in Programming reads:
Is it possible that software is not like anything else, that it is meant to be discarded: that the whole point is to see it as a soap bubble?