16 March 2008

Smug Newton Weenie

This past week I've been wallowing in nostalgia as I re-familiarize myself with the Newton's development environment and take a fresh look at code I wrote for the platform a dozen years ago. It's got me thinking more about the joys of small languages, and the clever hacks that enabled such an advanced GUI and applications to run on such a lightweight platform. Also, at the runtime implementation for dynamic language like this, compiled as byte codes.

I'm happy to say that I I have wireless e-mail working via my home wireless network on two MessagePad 2100s, using Simon Bell's excellent Mail V, an IMAP/POP client that integrates nicely with the Newton's built-in Inbox/Outbox program, and a couple of Lucent WaveLan cards running Hiroshi Noguchi's driver. I can even send myself big JPEG files. This is my extremely geeky equivalent of carrying around family photos in my wallet, although the 2100 only displays a few gray levels:

Interestingly, after ten days of experimentation the 4 AA batteries powering my 2100 unit still have juice left, although they are starting to fade. The 2000/2100 were a very interesting advance, because they were far faster than their predecessors the 110/120/130, yet lasted longer on the same batteries.

I hope you find this at least marginally interesting. Not everyone around me is as interested as I am in the joys of old technology, as this doodle illustrates...

12 March 2008

Looking for a NewtonScript Book

I know it is available in PDF form, but for nostalgia purposes I am looking for a paper copy of the book "The NewtonScript Programming Language." There were a couple of versions of this book; it was not sold separately but included in packaged versions of the Newton Toolkit sold to developers. And thus, most of them have probably been discarded.

The older version of the book can be seen in bottom row, just left of center in this picture from the Newton Museum. The later version, if I recall correctly, was white with yellow typography and a picture of a toolbox on the cover. I will pay (some reasonable amount, plus shipping cost) for either or both books reasonable condition.

06 March 2008

All that is Solid Melts into Air

I've been moody this week. It's been just about ten years since Apple's Newton project was canceled, the products discontinued, and the staff of the project began their exodus. I hope readers will forgive me if I wax a little autobiographical.

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?

01 March 2008

The Vanishing Hard Drive

8 inches, 5.25 inches, 3.5 inches, 2.5 inches, 1.8 inches, and 1 inch.

I predict that hard disk drives will be entirely invisible to the naked eye by 2019.