The following was originally posted by Jim Bowery here. I play a significant role in the story Jim tells, but honestly I have no recollection of the events he describes.
The Genesis of Postscript (1981)
By Jim Bowery
The author grants the right to copy, without modification.
From 2001 through 2007 I offered, with no takers, $500 to the first person who could document the existence of a Xerox PARC communication concerning post-fix notation for page description languages prior to my visit to that facility in November 1981 in my capacity as Manager of Interactive Architectures for Viewdata Corporation of America, the videotex joint venture between AT&T and Knight-Ridder News. Communiques regarding “JaM” were disqualified unless they specifically use the term “page description language”, “typesetting language” or some equivalent phrase, and are appropriately dated.
What was the true genesis of the Postscript?
Here’s a perspective out of left field:
It started with the first scientific pocket calculator ever produced — the Hewlett-Packard 35 — and its reverse polish “postfix” notation.
I saw an HP-35 advertised in Scientific American during my senior year in high school, in 1972, and thought:
“I want one.”
That’s why I worked all summer with “Shorty” the ex-convict, driving garbage trucks with 18 gears I was never properly trained to use and drinking beers so as to Lorenz-contract the days that were punctuated with hot steaming maggots down my neck as bemused debs reclined in their back yards nurturing their future basal cell carcinomas. When I started at the University of Iowa, I forked over my saved up $495 to Hewlett-Packard and instead of a slide-rule on my belt, I had this neat little black pouch that could do it all while flashing tiny red light-emitting-diode numbers — reverse polish operation. I found only one other person on campus who had one — a chemistry professor.
Well, OK, I lied.
What really happened was that while I was working as a garbage man to earn enough money for my HP-35, many mornings at 6AM they would tell me they didn’t need me that day, which is when I would head over to Drake University and wait for my brother to get out of class at noon. That was almost 6 hours away, and I needed some way to pass the time. After poking around a bit on campus, I found this little old 2 story house that had a “Mathematics Department” sign. Inside, off to the left, was a long room. In that room was a desk-top Hewlett-Packard calculator with a flat-bed pen plotter hooked to it. It had more buttons than you could shake a stick at and this little magnetic card you could insert to record the buttons you were pressing, which included comparison and conditional branch buttons. You could program it to not only do calculations, but to move the pen around on the plotter bed that held the paper down with static. It was really cool. I could finally use a lot of that worthless junk about polynomials and stuff I had learned in high school and draw lots of neat op-art patterns with a pseudo-3D look to them.
That desk calculator (I don’t recall the model number), of course, also used reverse polish notation — postfix — to drive its plotter.
By the time I got my HP-35 that fall, postfix operations were second nature to me. When the HP-35 fell in price by a factor of two later that year, it taught me my first lesson of consumerism in the early stages of Moore’s Shockwave, but I never felt jealous of the guys who bought the cheaper Texas Instruments calculators with all that parenthetic noise. Who could think like that?
Postfix was obviously the right way to do things.
Ignoring some history we cut to the chase:
In August 1980, Byte magazine published its issue on the Forth programming language.
At that time, I was working with Control Data Corporation’s PLATO project, pursuing a mass market version of that system using the Intelligent Student Terminal (IST). The IST’s were Z80 processor terminals sporting 512*512 bit mapped displays with touch sensitive screens and 1200bps modems that went for about $1500. We were shooting for, and actually successfully tested, a system that could support almost 8,000 simultaneous users on 7600-derived Cybers (the last machine designed by Seymour Cray to be marketed by CDC –with 60 bits per word, 6 bits per character, no virtual memory, but very big and very fast) with under 1/4 second response time (all keys and touch inputs went straight to the central processor) for $40/month flat rate including terminal rental. Ray Ozzie had been working at the University of Illinois on offloading the PLATO central system to the Z80 terminal through downloaded assembly language programming, doing exotic things like “local key echo” and such functions.
I was interested in extending Ray’s work to offload the mass-market version of the PLATO central system. In particular I was looking at a UCSD Pascal-based approach to download p-code versions of terminal functions — and even more in particular the advanced scalable vector graphics commands of TUTOR (the “relative/rotatable” commands like rdraw, rat, rcircle, rcircleb, etc.) if not entire programs, to be executed offline. Pascal was an attractive choice for us at the time because CDC’s new series of computers, the Cyber 180 (aka Cyber 800) was to have virtual memory, 64 bit words, 8 bit characters and be programmed in a version of the University of Minnesota Pascal called CYBIL (which stood for Cyber Implementation Language). Although this was a radically different architecture than that upon which PLATO was then running, I thought it worthwhile to investigate an architecture in which a reasonable language (you should have seen what we were used to!) could be made to operate on both the server and the terminal so that load could be dynamically redistributed. This idea of dynamic load balancing would, later, contribute to the genesis of Postscript.
Over one weekend a group of us junior programmers managed to implement a good portion of TUTOR’s (PLATO’s authoring language) advanced graphics commands in CYBIL. Our little hunting pack at CDC ‘s Arden Hills Operations was in a race against the impending visit of Dave Anderson of the University of Illinois’ PLATO project who was promoting what he called “MicroTUTOR”. Anderson was going to take the TUTOR programming language and implement a modified version of it for execution in the terminal — possibly in a stand-alone mode. Many of us didn’t like TUTOR, itself, much. Indeed, I had to pull teeth to get the authorization to put local variables into TUTOR — and we were determined to select a better board from our quiver with which to surf Moore’s Shockwave into the Network Revolution. CDC management wasn’t convinced that such a radical departure from TUTOR would be wise, and we hoped to demonstrate that a p-code Pascal approach could accomplish what microTUTOR purported to — and more. We quickly ported a TUTOR central system program to CYBIL — a vocabulary lesson called “The Great Elendo” (teaching how endings are added on to words) — because it had been written in a particularly “structured” manner (by Tom Czwornog for Gary Michael’s crew in Champaign-Urbana on the PLATO system there), and therefore fit well the “structured programming” paradigm pushed by Pascal adherents of the day.
A dramatic aside: We had a bit of a scare when David Woolley the author of PLATO Notes (which would become the inspiration for Ray Ozzie’s Lotus Notes), came in on Monday and was so impressed with what we’d accomplished over the weekened that he swam through all the code we’d written. Unfortunately, there was some confusion and, quite uncharacteristically for Dave, he deleted the wrong file — the one with our code in it which hadn’t yet been backed up by the system operators. Thankfully, rather than committing hara-kiri, Dave just quietly expressed his deep remorse, turned around and during the next 24 hours rewrote the entire program which he had inspected so carefully; all in time to save the demo. Dave is one of the most meticulous people with whom I’ve worked. This is born out by the fact that virtually anyone who has worked in computers for any length of time has made an error like this, but few of us have been able to recover our honor so quickly, gracefully and decisively.
Our little hunting pack bagged the demo, and we continued to be interested in Pascal both on the central server and on the terminal, as a means of dynamically distributing load, but the Cyber 180’s hardware architecture was inadequate and the conversion problems to reimplement PLATO too great for this approach to be practical. It looked as though we would be stuck with Cray’s older architecture that had demonstrated such economic performance in my tests of a version of the PLATO system targeting the mass market (tests run at CDC’s Benchmark Laboratory next to CDC headquarters, right across from the airport in Bloomington).
A tragic aside: CDC mangement refused even to run a market test of the mass market version of PLATO, despite the fact that the financials looked promising, the system was up and running at CDC’s Benchmark Laboratory with fully capable telephone and cable head end interfaces and there were indications that the demand for email, alone, within a metropolitan area would have ensured PLATO’s success in the mass market. I don’t hold CDC’s Bill Norris accountable for this except to the extent that he probably should have just fired all his middle management down to the grunts and spun CDC off into a bunch of small companies, each with its own “Seymour” — something that would have placed Norris in jeopardy from the forces already arrayed against him in Wall Street. If he had taken that draconian action on behalf of CDC’s stockholders, he would almost certainly have produced an explosion of innovation fueled by the high-achieving Midwestern baby boomer population as they entered their careers. Opposition to Norris infected CDC itself, often incited by institutional investors who did not agree with Norris’ vision and were able to set fashions for the fashion-conscious via their influence on the business press. If not for them subverting CDC’s culture of innovation with a culture of popular fashion, combined with Norris’ failure to ruthlessly rid CDC of insubordinates, Norris could have delivered on his vision. I know — I was there and saw to it that PLATO was benchmarked out and ready to ship to the masses at $40/month including IST rental, at the same time HBO was making its first inroads, at least a year before IBM cut its deal with Bill Gates and 4 years before Steve Jobs paid a buxom valkyrie lookalike do a hammer-toss-and-jiggle on his behalf before the stunned eyes of football fans everywhere. I did push on this aspect of the PLATO project hard enough within the programming teams that I became the person most associated with mass-marketing of PLATO in the eyes of my peers and immediate supervisors, and was therefore the person recommended for a key position with Viewdata Corporation of America when that company advertised for a PLATO expert — after, of course, CDC management had rejected my proposed market test of PLATO. It wasn’t enough to be a 26 year old programmer pulling down a Carter-inflation-wage-and-price-controlled $20,000/year. I was in a poor position to by-pass 7 levels of middle management to gain Norris’ ear and Norris’ bet-the-company strategy on filling unmet social needs never meshed with the profound tactical strengths available in the well-funded PLATO system that he was so intent on supporting. The “Personal Computer” might never have risen to the prominence it did. Rather we could have begun the evolution of the “Network Computer” in 1980. It is no exaggeration to say that as a result of CDC’s failure to deploy PLATO to the mass market, Bill Gates is the richest man in the world, midwest computing lost its leadership (which began with the first computer) to the West and the network revolution was delayed at least 15 years. The further ramifications of this critical juncture in history, given the demographic power of the recently-urbanized baby boomer generation on entry to its marrying years in 1980, are radical and profound. I’m sure there are people from Xerox PARC who have similar retrospective concerns, but did Xerox have a man of Norris’ publically articulated vision in the position of command contending with a virtual mutiny of his officers?
It’s interesting if not predictable that it was from the PLATO IST that some of the key thinking directly parallel to, if not critical to, Postscript would arise. The IST was the closest thing to the Apple Macintosh in price and capability prior to the release of the Mac (which was the first PC to use Postscript). It’s also interesting that the Mac ended up with a version of Pascal as its primary system language. Something worthy of study by metahistorians, is that so little history has been recorded about the PLATO IST. At $1500 it was perhaps the most advanced technology of its kind at that time. People had been playing remote 3D graphical multiuser games, at resolutions similar to those supported by the Macintosh, on PLATO, for over 5 years by 1980 when the IST was being produced by the thousands at this low price for use with PLATO.
Having looked at UCSD Pascal’s threaded p-code, the Byte magazine issue on Forth made a good case for considering the Forth virtual machine, not only because of its own compactness, but also the compactness of the programs that it could execute. Although we weren’t so tight on RAM with the IST that we were forced to consider Forth over p-code, the compact representation of executable programs in Forth was a big plus for transmission across the limited bandwidth modems of the era. It wasn’t so compelling compared to p-code as to force an immediate reorientation — particularly given the fact that Pascal was a higher level language than was Forth, as well as matching the central system implementation language CYBIL, and was therefore more appropriate as a primary authoring language. Nevertheless, Forth’s postifix notation reminded me of the good old days with my first HP calculators and drawing those cool pictures on the flat bed plotter.
I admit it — I was hooked on the ideas in Forth and wanted get my hands on a working implementation.
As a consequence of CDC’s refusal to pursue a test of PLATO in the much larger markets made possible by a $40/month service, I accepted a position with Viewdata Corporation of America, a joint venture between AT&T and Knight-Ridder News, as its Manager of Interactive Architectures — primarily because AT&T and Knight-Ridder were familiar with mass markets and were targeting them from the outset. My responsibilities included design of an “authoring system” for the Viewtron videotex system which was being developed by Viewdata for deployment in those mass markets. Unfortunately, I was hampered in this by the prior choice of a Tandem T-16 as the central system upon which to run the service. The T-16 was abysmally weak as a central system compared to the Cyber 760’s (modernized 7600’s) upon which I had benchmarked the mass-market version of PLATO. Nevertheless, I accepted the position with the impression that it might be possible to select a different central system vendor. Certainly it makes little sense to choose a central system vendor before acquiring a manager responsible for “architectures”.
I started at Viewdata the same month that Byte magazine put out it’s famous August 1981 Smalltalk issue. It was immediately apparent that the Smalltalk language and programming environment was superior to anything associated with Pascal. Further, Smalltalk had a similar target audience to PLATO — Alan Kay had even wanted children to be able to program in it. As the person most responsible for devising an authoring system, I was immediately hooked. I had seen the film of Stanford Research Institute’s mouse interface while working on the PLATO Communications Project in 1974 (developing a computer-based Delphi conferencing system) and the Smalltalk system was quite reminiscent of some of what I had seen. This was for good reason, of course, since Smalltalk’s user interface design had benefitted from SRI’s pioneering work.
However, in addition to being saddled with the T-16 as the central system, the Viewtron terminals being designed by Western Electric, although quite capable in other ways, had very limited RAM. What ROM was available in them was being committed to interpret the North American Presentation Level Protocol Syntax (NAPLPS) — which is a fancy way of saying they displayed a vector graphics extension to the ASCII character set. NAPLPS had a marginal “macro” and font definition capability, but was otherwise very limited in its programmability.
Since the Viewtron system was planned to roll-out to all the metropolitan areas in which Knight-Ridder had newspapers, as well as in cities where partner companies had a presence, the architectural challenge of the authoring system involved allowing for geographically distributed programming as well as offloading of the central processors to the terminal processors. PLATO had just started down the path of a distributed file system and networked notes (ala Usenet), so the issues, while not entirely alien, were somewhat new to me. Some of the better work at the time was with Intel’s research into the iMAX operating system and its distributed file system based on the ideas of MIT’s David P. Reed and his 1978 doctoral thesis. Reed’s work had been closely associated with the CLU programming language which was an early object oriented language with strong affinities to Smalltalk. Although the iMAX OS itself ran on Intel’s wildly advanced iAPX432 processor (at PLATO, Dave Woolley and I christened it “the UFO”), and was therefore geared toward the Department of Defense’s design-by-committee language, Ada, the version of “Ada” implemented on the 432 was actually more dynamic than that specified by the DoD. Indeed, the iMAX OS was designed to allow device drivers and system libraries to be dynamically added and altered without rebooting. The “Ada” running on the iMAX OS was so dynamic, it actually had a lot more in common with Smalltalk than the folks at Xerox PARC might have liked to believe. Although I didn’t (and still don’t) see object-oriented programming as the long-term solution to the distributed computing problem, and was in communication with one of the iMAX OS’s contributors, Bruce MacLennan, regarding a radically different approach to programming based on the relational calculus, I did see the Smalltalk and the iMAX’s dynamic “Ada” systems as being mature enough to ride on their strength for the next 5 to 10 years until the relational paradigm was ready for deployment. I hoped that the 432’s hardware design could be sped up as Intel applied its best hardware experts to demultiplexing its microprogramming enough that its fault tolerance and distributed programming strengths could be applied to Viewdata’s unique requirements — if not during the initial roll-out, then in the next generation of the Viewtron network. The first rollout of the 432 would rely on iMAX with its dynamic “Ada” and then later deploy a distributed Smalltalk environment throughout the network, including demand-driven downloads of Smalltalk to the terminals themselves as they became genuine network computers.
All of this led me to begin seriously considering the migration paths from the current “dumb” NAPLPS terminal with T-16 central systems to a programmable terminal which could eventually execute Smalltalk.
As I admitted above, I was hooked on the very idea of Forth, and as it turned out, so was another key figure within Viewdata, Jim Thompson. Thompson, who would later develop Viewtron’s postfix Game Oriented Language for Business and Leisure (GOLFBAL) for actual storage of execution on Viewtron, had a subscription to the Forth Interest Group newsletter and was happy to provide me with all the back issues. It made sense that with less than 8K of RAM in the Western Electric terminals (far less than the PLATO ISTs), and only a little more ROM, the best way to make them fully programmable was to burn the ultra-compact Forth virtual machine into the ROM and use what precious little RAM was available to store tightly threaded, dynamically downloaded Forth “words” for the execution of high level vector graphics primitives through low level interactive graphics programs, transmitted as a stream of compressed definitions and subsequent invocations over the limited-bandwidth phone connections.
A postfix language for page description was thereby conceived — not surprisingly — as part of the first experiment in electronic transmission of newspapers in a highly compressed form.
The migration path from such a low-capability terminal to a fully-distributed authoring system was still unclear, but one thing was clear about Forth’s virtual machine: It could act as a virtual machine for any higher level language, especially a language like Smalltalk. Being a fan of, and having programmed, Seymour Cray’s parsimonious instruction sets and elegantly simple hardware architectures, I appreciated the design intelligence that Chuck Moore brought to the Forth virtual machine. Viewed in this light, Forth was a macro assembly language for a future Forth microprocessor — entirely capable of executing Smalltalk as one of its higher level languages.
The trip to Xerox PARC was inevitable. I was among those from Viewdata who in November of 1981 visited Xerox PARC.
A few things about that trip stand out, but one thing is for certain:
When the subject of NAPLPS came up, I was shown source code written in a page description language in use by Xerox by a member of the Smalltalk team. It was definitely not, a postfix notation. I then spoke on our thoughts of using a tokenized Forth communication protocol to store and transmit programmable graphics for Viewtron’s electronic newsprint. When I did so, I saw an immediate look of reflection pass over the face of our presenter. It was my definite impression that I was seeing the “Aha!” lights turn on at Xerox PARC right then. But our time was limited and the focus was on Smalltalk rather than page description languages, so we moved on with the demonstrations. I honestly don’t recall the name of the person who was showing their PDL, nor who else was present during that conversation. It seemed a causual exchange between two programmers at the time — exchanges in which such “Aha!” events are quite common.
Next year, in 1982, Xerox engineers spec-ed out the “Interpress” page description language — purportedly the first postfix page description language ever. Official accounts vary on whether Interpress was derived from Xerox’s “JaM”, from Xerox’s “Press Format” PDL, or both. It is possible I was shown a “Press Format” source file as it was not a postfix notation. JaM, however, was derived from the “Design System” postfix language for representation of 3D objects developed at Evans and Sutherland and folks from the University of Utah. I can believe that Evans and Sutherland beat the PLATO culture to the punch on this one, as they had a habit of doing on a number of important 3D innovations. But the PLATO system had it’s own coups over Evans and Sutherland, including the first ray traced 3D image of a solids model by Don Lee — PLATO system programmer — under a challenge from Ron Resch, who was from the same University of Iowa computer graphics facility within which I would later write the first 3D multiuser virtual reality game. Ron Resch went on to work with Evans and Sutherland and the University of Utah where he would teach the likes of Alan Kay and others who eventually ended up at Xerox PARC.
Crucial questions remain:
Why was it that in the most advanced aspect of Xerox PARC — the Smalltalk project — the PDL being demonstrated to representatives of a major electronic newspaper project was “Press Format” rather than “JaM”? Was the look of epiphany on the face of the PARC demonstrator upon being told of the device-independent PDL based on Forth, actually him recalling that PARC had its own postfix notation PDL in “JaM” and he simply didn’t mention it for fear of a breach of some sort? We were under nondisclosure agreement at the time, and we were clearly interested in deploying such technology and we were capable of paying for it if not contributing to its standardization — so why not just spit it out? Was the subsequent specification of Interpress merely a concidence, merely parallel development or was it perhaps energized by the realization that a major electronic newspaper project could be on the verge of introducing a JaM-like standard for page layout to the international standards committees?
In the final analysis, except for a billion dollars here or there, and where the profits might have been invested, it hardly matters who actually invented the first postifix page description language. Given the densely entangled identities of the University of Iowa, University of Illinois and University of Utah from which the creation of “Interpress” emerged, not to mention PLATO, Smalltalk and advanced 3D rendering technologies, it is clear that the identity of the actual inventor of the postfix PDL, as well as these other technologies, was a pioneering culture. That culture was plowing new territory cleared out by Moore’s Shockwave with the same energy that plowed the loam, a century earlier, around the locations of those same land grant colleges.
The only real question remaining is whether the capital accumulation will be used to open up fertile fields for future generations to plow, or whether it will merely decay as did Xerox?