# Hacking with a Hacker

What is it like to hack with one of the original hackers? It is certainly much different than what appears to be the modern rendition of hacking. My experience was not getting really drunk with tons of junk food. It was not working on “beautiful” designs or “authentic” typography. It was not so much about sharing with the world as it was sharing with your peers. It had a very different feel to it than the “hacker culture” promoted by some of the top technical Silicon Valley companies. It felt more “at home”, less dreamy, and more memorable.

I meet with Bill Gosper every so often; I had the pleasure of giving him a tour of Facebook when I worked there. (He was so surprised that they had Coke in the glass bottles there, just like the old days.)

He is still very much a hacker, a thinker, a tinkerer, and a wonderer. Every time I meet up with him, he has a new puzzle for me, or someone around him, to solve, whether it’s really clever compass constructions, circle packing, block building, Game of Life automata solving, or even something more tangible like a homemade buttonhole trap (which was affixed to my shirt for no less than two weeks!). He is also the bearer of interesting items, such as a belt buckle he gave me which depicts, in aluminum, a particular loose circle packing.

Gosper succeeding in tricking me with the Buttonhole Trap

When we meet up, all we do is hack. Along with him and one of his talented young students, we all work on something. Anything interesting, really. Last time we met up, we resurrected an old Lisp machine and did some software archaeology. I brought over some of the manuals I own, like the great Chinual, and he brought over a dusty old 1U rackmount Alpha machine with OpenGenera installed. After passing a combination of hurdles, such as that the keyboard wasn’t interfacing with the computer correctly, we finally got it to boot up. Now, I got to see with my own eyes, a time capsule containing a lot of Bill’s work from the 70s, 80s, and 90s, which could only be commanded and examined through Zmacs dired and Symbolics Common Lisp. Our next goal was to get Symbolics MACSYMA fired up on the old machine.

There was trouble with starting it up. License issues were one problem, finding and loading all of the compiled files were another. Running applications on a Lisp machine is very different than what we do today on modern machines, Windows or UNIX. There’s no .exe file to click, or .app bundle to start up, or even a single ./file to execute. Usually it’s a collection of compiled “fast loading” or “fasl” files that get loaded side-by-side with the operating system. The application, in essence, becomes a part of the OS.

In hacker tradition, we were able to bypass the license issues by modifying the binary directly—in Lisp. Fortunately, Lisp makes things such as disassembly easy. But how do we load the damn thing? Bill frustratingly muttered, “It’s been at least 20 years since I’ve done it. I just don’t remember.” I, being an owner of Symbolics MacIvory Lisp machines, did fortunately remember how to load programs. “Bill, how about LOAD SYSTEM MACSYMA?” He typed it into the native Lisp “Listener 2” window (we kept “Listener 1” for debugging), sometimes making a few typing mistakes, but finally succeeding, and then we saw the stream of files loading. We all shouted in joy that progress was being made. I recall Bill was especially astounded at how fast everything was loading. This was on a fast Alpha machine with gobs of memory. It must have been much slower on the old 3600s they used back in the day.

The Lisp Machine Manual, or Chinual

It was all done after a few minutes, and MACSYMA was loaded. To me, this was a sort of holy grail. I personally have Macsyma for Windows (which he uses in a VirtualBox machine on his 17″ MacBook), and I’ve definitely used Maxima. But MACSYMA is something I’ve never seen. It was something that seems to have disappeared with history, something I haven’t been able to find a copy of in the last decade.

Bill said, “let’s see if it works.” and he typed 1+1; in, and sure enough, the result was 2. He saw I was bubbling with excitement and asked me if I'd like to try anything. "I'd love to," and he handed the keyboard over to me and I typed in my canonical computer algebra test: integrate(sqrt(tan(x)), x);, which computes the indefinite integral

\int\sqrt{\tan \theta}\,\mathrm{d}\theta

Out came the four-term typeset result of logarithms and arctangents, plus a fifth term I'd never seen before. "I've never seen any computer algebra system add that fifth term," I said, "but it doesn't look incorrect." The fifth term was a floored expression, whose value increased with the period of the function preceding it. "Let's plot it," Bill said. He plotted it using MACSYMA's menu interface, and it was what appeared to be an increasing, non-periodic function. I think we determined it was because MACSYMA properly handled branch cuts, with other systems have been known to be unorthodox about. It definitely had a pragmatic feel to it.

Now, Bill wanted to show us some interesting things; however all of Bill's recent Macsyma work was on his laptop. How do we connect this ancient hardware to a modern Macintosh? We needed to get the machine onto the network, and networking with old machines is not my forte.

Fortunately, Stephen Jones, a friend of Bill's and seemingly an expert at a rare combination of technical tasks, showed up. He was able to do things that neither Bill nor I could do on such an old machine. In only a few moments, he was able to get Bill's Mac talking to the Alpha, which shared a portion of its file system with Genera. "Will there be enough space on the Alpha for my Macsyma files?" Bill asked Stephen. "Of course, there's ton's of space." We finally got Bill's recent work transferred onto the machine.

Bill hacking in MACSYMA in OpenGenera (Image courtesy Stephen M. Jones)

We spent the rest of the night hacking on math. He demonstrated to us what it was like to do real mathematician's work at the machine. He debuted some of his recent work. He went though a long chain of reasoning, showing us line-after-line in MACSYMA, to do amazing number theoretic things I've never seen before.

I did ask Bill why he doesn't publish more often. His previous publications have been landmarks: his algorithm for hypergeometric series summation and his algorithm for playing the Game of Life at light speed. He responded, "when there's something interesting to publish, it'll be published." He seemed to have a sort of disdain for "salami science", where scientific and mathematical papers present the thinnest possible "slice" or result possible.

Bill is certainly a man that thinks in a different way than most of us do. He is still hacking at mathematics, and still as impressive as before. I'm very fortunate to have met him, and I was absolutely delighted to see that even at 70 years old, his mind is still as sharp as can be, and it's still being used to do interesting, Gosper-like mathematics.

And you wouldn't believe it. We all were ready to head home at around 9 PM.

This post was derived from my original post on Quora.

### 9 comments to Hacking with a Hacker

• Joseph Stalin

Lisp still has too many parentheses.

• Bernd

((())))(())())())()()()()()())()()()()()()()())))))))))))))))

• You’re such a showoff. I bet you bound that Chinual yourself.

• Zain

Chill dude, he is just excited about it. You don’t need to make a personal attack to someone who is sharing their joy.

• Sawan

Just curious, what happened to the Alpha machine?

• It’s still alive and kicking. The next goal would be to get a few hardware hacks working.

• gngl

What about contributing some of that stuff to Maxima? Is that being done? Maxima could use some love for sure.

• primarscources

How does one handle branch cuts for symbolic integration, anyway? Do you look for periodicity in the integrand, determine real-, imaginary-, or complex-valued for each region, evaluate each region, then assemble the pieces?