First off, go buy this book. It isn’t new or anything (published in 2000), so I’m not quite sure why the local Borders was randomnly stocking four copies of it, but holy jebus am I glad I found it.
The book is basically the complete “early” history of PARC (late 60’s, the 70’s, and early 80’s) as gathered from many, many interviews with the various people at PARC during that time. For those of you who don’t know, every major leap in computer science was either invented or perfected at PARC. Ethernet (invented), the mouse (perfected), a “real” GUI (perfected), the laser printer (invented), WYSIWYG editing in Bravo and Gypsy (invented/perfected), one kind of OO programming (perfected or invented, depending on how you look at it; Kay invented Smalltalk with knowledge of Simula and Logo, so it wasn’t purely a new idea, but it did take a different turn from both languages), and I’m sure I’ve forgotten many more. These guys defined the computer world.
Without taking away from the book (it isn’t as if there are many “surprises” of sorts – kinda like watching “The Passion of the Christ”; I bet you know how it ends), there are a few things that really came through reading this book.
First, we’re all idiots. Truly complete bumbling idiots. These guys were like a different species of human, and we likely aren’t worthy to share the same atmosphere. Yeah, it sucks, but it is true. Just a small example: these guys built a (better!) PDP-10 in about a year and a half (the first thing they ever did together) because Xerox wouldn’t let them buy one. Holy shit, my friends. Next time your boss says you can’t use some gigantic program because your company can’t afford it or some such reason, maybe you should just go, you know, write a better version.
Second, nothing has changed in computer science/software engineering in 35-40 years. Doug Englebart gave a presentation showing off the work he and his team of engineers had completed that was… wait for it:
Streaming media (including live video), wirelessly, and interacting with a GUI (including a mouse) and projecting it onto a screen.
This all took place in 1968.
Next time you read a press release talking about all the “innovations” that Microsoft is developing, remember this: Doug Englebart basically gave a demontration of Live Meeting in 1968, and it didn’t even crash (Live Meeting has perfected the ability to always not work in various irritating ways).
One of my professors (who worked at Xerox) told me two very interesting stories that I’ll share here, hopefully to drive this point home a bit.
The first story deals with cut/copy/paste (which were also “invented” at PARC). When they first came up with the concept, they came up with almost exactly what you see today. In your WYSIWYG editor, you select a piece of text with the mouse. If you click and hold the middle mouse button, you’d get a menu with selections like “cut/copy/paste”. If you select copy, it puts the text in the clipboard, and cut does the same but deletes the text. Move the cursor to where you want things to end up, middle click again, select “Paste”, and the new text gets plopped in. Nice, right?
Well, kinda. The researchers there eventually realized that this became slightly annoying. Most of the time, your workflow looks something like:
- You are typing along, and you get to a place where you want to insert something (cut/copied from somewhere else). Either that or you are proofreading and you find a place where you want to add something.
- You go hunting and find that other piece of text/image whatever (did I mention that the editors written at PARC had the capability of editing text/images/what-have-you all in the same interface?)
- You go back to where you were originally typing and paste things in
Hmm, seems a little bit wasteful. To put it more simply, we have:
- Find the destination (you are likely already here, so there isn’t much “finding” to do)
- Find the source
- Find the destination, again
So, instead, they tried something a little different
- You are typing along, and you get to a place where you want to insert something
- You find the stuff you want to insert, select it specially (e.g. with the middle mouse), and it is automatically pasted back where you started from, as well as returning you there.
Wow. With the document writing I did in college and even the blog posts I write here, I can tell you that I spend about half my time searching for the other content (to cut/copy) and half my time navigating back to where I want to be. These guys just figured out a simple way to cut that time in half. Whoudda thunk, eh?
The second story is similar, and it deals with syntax highlighting. Of course, with the massively powerful smalltalk stuff running on the Alto’s (running slowly, of course, since this is the mid 1970’s), they wrote themselves some nice code editors as well.
Ah, quick aside – when Steve Jobs visited PARC (the second time), he was getting a demo of some of the different editors in use. During one of the demos, Steve remarked something like, “I think it would be nicer if, instead of scrolling a line at a time, the page scrolled a pixel at a time, just like paper”. The person giving the demo swithed to a different window that contained the smalltalk code for the editor, changed a line or two, and then switched back to the editor window, showing that it now scrolled by pixel. God damn I wish I could do that. The first things I would change? Spacebar should pause/play in Windows Media Player (as it did in WMP 6) and the listboxes in Outlook 2007 should scroll when I move the scrollbar. Then again, I’m sure those would both be hundreds of lines of code, but I would gladly spend the time.
Ok, back to the original. At this time, on the Altos, they didn’t have color (yet – work on color terminals is one of the sad ones that got away from PARC), but they did have formatting effects like bold and italics and varying font sizes. So they did basically what vim does today in a terminal that doesn’t support color – they played around with having the editor “highlight” all the syntactic constructs of the language – keywords, operaters, strings, numerals, etc. Cool, right?
After awhile, they thought of a new idea – instead of coloring the keywords, why not color all the other stuff? Say, matching colors/effects for identifiers, coloring/effects for messages (methods/functions), maybe some hinting for recursion and depth of loops, things like that. So they tried it out. Lo and behold, people using the new style were much more efficient than people using the old style.
As Sidney Marshall put it – Apple and Microsoft “stole” (as you’ll read in the book – nobody stole anything) ideas from PARC, but they learned them while they were still in development. There is no reason why you can’t improve on all these ideas we just take as axiomatic truths to computing (well, of course cut/copy/paste works the way it does! It is cut/copy/paste!), and the people at PARC (and other research places) did improve on them, 30 years ago. We just, you know, haven’t caught up yet.
This also relates back to my first point, although a bit differently than I stated it at first. It’s true: these guys are all smarter than you or (definitely) me, but they had a small leg up on us. You see, these guys were inventing the way we use computers, so for them, there were no ideas writ in stone. There was nothing sacriligous about changing the behavior of any of these things. Cut/copy/paste were made the way they were to mimick the way publishing houses put together books, so that there was a clear analog between using a computer and your actions in the real world, but there wasn’t any great reason to improve upon it.
Another aside – all the silly research stuff about making the computer better map to the way you interact with the real world is mostly bullshit. Think Microsoft Bob. People who think that the ultimate version of a computer is one that you interact with just like documents on your desk suffer from a lack of imagination – the computer has the power and versatility to offer a different and more powerful set of abstractions than pieces of paper on a table. Having the metaphors we do (files/folders, documents, cut/copy/paste, saving, etc.) are helpful to provide links for understanding and especially for people new to the computer world, but there is no good reason why we can’t improve on them. One common complaint I hear (from smart people) is this: why do we still have a save button? Why can I still lose my work on a computer? Did we really have to keep that analog around?
Ok, last but not least, the author of the book spends a good deal of time arguing that it wasn’t Xerox’s fault that they dropped the ball on a lot of these. The argument effectively boils down to the fact that large corporations (in Xerox’s form and with similar culture and management) don’t really have the capability to capitalize on real innovation. On the other hand, very tiny companies (like Apple at the time) are perfectly placed to do just that.
Which made me stop for a second and think about how that applies to, say, Microsoft. After reading this book, I’m more convinced than ever that the “advancement” in computing brought to us by Microsoft in the last 25 years has all been lateral movement (in the “things that make us money but don’t provide any new value” direction). I don’t think it is fundamentally easier/faster/richer/more enjoyable to do anything we do on a computer today than it was back at PARC (perhaps a bit faster, thanks to advances in hardware). The only really interesting and exciting software tool that I think fundamentally changes our interaction with computers is Quicksilver, but it still hasn’t gotten me to buy myself a Mac (yet). So what the hell have we been doing for 30 years?
Sure, we have Microsoft Research, which includes a few ex-PARC employees (and Bell Labs and other prolific research centers of the past), but I have yet to be excited by anything that comes out of there. Things like F# are interesting, but they certainly don’t change anything fundamental (I don’t think you’ll write significantly less or a significantly different type of code than you would in OCaml). Microsoft surface sounds like it will sell to a lot of people/companies, as most gimmicks do, but I don’t think it will be of any real benefit to the world. New and “exciting” projects like Live Mesh are, well, just about the same as everything that already exists, plus a few snazzy new controls and pretty gradients and glass effects.
But if I’m to take Michael A. Hiltzik to heart, I really shouldn’t blame Microsoft. Once you become massive, it takes much more force to push around that mass. Even on a smaller level (say, just the thousands of people who work on Visual Studio like me), maybe I should stop hoping to do something useful or something that adds real value to our product, because maybe I just can’t push hard enough to overcome this mass. I know it certainly feels like that most days.
I come away from this book with two feelings: awe and sadness. Awe at the amazing work and talent of these people for defining a large part of what I do during the day (and for giving me a career path, in a sense), but sadness for the fact that there really hasn’t been much exciting done since then and, at these behemoth companies, small likelihood that there ever will be.
Then again, if Alan Kay is to be believed, then maybe I just need a little of the Dynabook optimism:
“The real romance is out ahead and yet to come. The computer revolution hasn’t started yet. Don’t be misled by the enormous flow of money into bad defacto standards for unsophisticated buyers using poor adaptations of incomplete ideas.”
– Alan Kay
Oh, one last thing I got from the book: Charles Simonyi sounds like a conceited asswipe who doesn’t actually seem like that talented of a guy (despite what he tries to take credit for). His “invented” idea of intentional programming may take off, right around the time that Duke Nukem Forever ships on the Phantom game console. Then again, since all the good ideas from IP are actually good ideas from other people and languages (read On Lisp by Paul Graham if you want an idea), we don’t have to wait for the good parts to take off.
So go buy the book and be inspired to make something new. The end of the book (like the end of this post and most of my blog) is a bit of a downer, as it details the “fall” of the greatest years of PARC, but try and concentrate on the meat of it. These few people are responsible for amazing and unbelievable things (Xerox certainly didn’t believe in them, at the time) that have basically defined the (computerized) world.
Go make some magic.