[Written in 2015]
I have some reflections on the Marshawn Lynch affair.
See, there’s this person named Guy Steele Jr. He is one of the Lisp [LISt Processing language] gods from of old. He is actually the same age as I am, a fact that makes me hang my head in shame. Among many other things, he is the author or co-author of some of the most amazing technical papers ever written: the Lambda papers. They are famous. Look them up on Wikipedia if you don’t believe me. In particular the two papers LAMBDA THE ULTIMATE IMPERATIVE (http://dspace.mit.edu/bits…/handle/1721.1/5790/AIM-353.pdf) and LAMBDA THE ULTIMATE DECLARATIVE (http://dspace.mit.edu/bitstream/handle/1721.1/6091/AIM-379.pdf) were among the first things I read when I got my Masters degree at Stanford. After reading them I went to my friend who sold me my first computer and said to him, “I know things you don’t even know exist.” He called me a bad word.
But this is not about lambda or Guy Steele Jr. It’s about Marshawn Lynch. So anyway at one point there came something called the AI Winter, when DARPA stopped investing money in AI and anything to do with it. Since Lisp was one of the two main programming languages used in AI, the other being Prolog (Programming in Logic), there was a whole lot of money that suddenly wasn’t being spent on Lisp any more. The Lisp “community” started dying on the vine, and people started doing other things. Guy Steele Jr., talented as he was, had no trouble landing on his feet. He wound up at Sun Microsystems, where he did a terrible thing.
Remember this isn’t about programming, AI, or Sun Microsystems. It’s about Marshawn Lynch. See, Guy Steele Jr. was asked to work on the Java programming language. Sun put millions of dollars into the development AND marketing of Java. They seemed to think they could use it as a Microsoft-killer. They advertised it as “write once, run everywhere” where the reality was “write once, debug everywhere.”
The terrible thing that Guy Steele Jr. did was to put Lisp concepts into Java. For example, Java uses “garbage collection” for memory management. Lisp has had this since the ’60s, but everyone said that it was too slow and inefficient. Until suddenly it wasn’t. The cool thing about garbage collection is that it removes the burden of memory management from the programmer and places it on the computer, which is in a better position to know what is going on. A major source of bugs in programs was memory management — either failing to release memory that was no longer in use (a memory leak) or releasing memory that was still in use. The computer could actually figure out what memory was no longer in use and return it to the pool of unused memory. Steele also put in things like “reflection” (very limited) and a few other lisp-ish things.
Thanks to Guy Steele Jr. and Java, among other things, many great ideas from Common Lisp were entering the mainstream, such as functions as first class objects, anonymous functions, closures, etc. etc. etc. It only took half a century for this to happen (which says volumes about human intellect). And things like generic functions and Lisp’s wonderful style of doing object-oriented programming are still a mystery to most.
But this isn’t about garbage collection, multiple inheritance, mixins, or Java, it’s about Marshawn Lynch. See, I only took one programming language class in my whole experience at Stanford. And that class was Common Lisp — the standard version of Lisp — in fact, the first language with an official ANSI standard. Be that as it may.
So when I worked at SRI, I took a number of opportunities to use Common Lisp in my work. Admittedly for a while I was pretty sour on the language because every time I tried to run it, my machine would slow to a crawl. That was in the days of 16 MB main memory and 30 Mhz processors. Now we have 500x as much memory and processors 100x as fast. For some reason Lisp doesn’t seem slow any more. I always liked to say that the hardware finally caught up to the language. Apart from that, Common Lisp is nothing short of miraculous as a development language. This is something you have to see to understand. Incremental compilation for one thing. Debugging with the entire state of the system available for inspection using the programming language itself. Restarts — you haven’t lived until you’ve given a demo that crashed in the middle with a segmentation violation, leaving you in the debugger, where you see the problem, fix it and restart in ten seconds. I swear that the person watching the demo did not actually realize the system had crashed.
But this is not about handler-bind and restarts. It’s about Marshawn Lynch. See, because of the ebb and flow of funding at a grant-based research institute, it came about that I had to work using Java. And the terrible thing that Guy Steele Jr. did suddenly became a presence in my life. At one point he said, “I don’t know what you’re complaining about! I got a language that’s half-way to Common Lisp into the mainstream!” But that’s the problem. It was half-way — enough to remind me of what I was missing. Enough for me to be saying all the time, “If only I was using Common Lisp I could do this in half the time with half the effort.” Every day I came to work dreading the fact that I had to work with Java.
But believe me, this really isn’t about Java. Or even about Guy Steele Jr. Or Common Lisp. It’s about Marshawn Lynch. See, one day I said to myself, “If I keep fighting with Java, I will hate work. I will just not want to be there. I have to come to terms with Java.” And I did. Admittedly we never actually became friends. We wound up with a kind of wary coexistence. And I still remember walking into a meeting one time saying, “I’m sorry, I just can’t get this. I’m not smart enough to do this task in Java.” I later found out that the guy who ended up replacing me couldn’t do it either. He wound up doing it a completely different way. Which I didn’t do because I was trying to follow the spec I was given.
My point here is that Marshawn Lynch has to come to terms with the job as it is. Few people are as fortunate as he is. If you take the baseline of human labor as “ditch digging” then he is infinitely fortunate — as I was when I was programming in Java (oohhhhh that’s still hard to say). Without the people he seems to despise, where would he be? Making millions? I doubt it. So…he can do whatever he wants, but I think he’d be better off if he simply said, “This is part of the job and I’m going to treat it the same way I treat a strong safety in the open field — with AUTHORITY.”