This is a picture of Erin Rose Glass, who is a librarian and activist. This picture is from six days ago. Erin was giving a talk to programmers, an inspiring and harrowing talk, the point of which I think was, how about we take a look at where we are and what we’re building.
She had this slide, it says, “lost computing futures”. The idea is, if you look at the past, and try to forget what you know about the present—the omnipresent surveillance, the erosion of society, the propaganda, how annoying everybody is on twitter—if you look back, you can recover a feeling that it didn’t have to be this way. And—she brought some examples.
Here is one of those lost futures. This is simple Computer-Assisted Instruction software from 1979.
In case you can’t read this, imagine you’re sitting in front of a green screen and the computer is like, “I hear you’re writing a paper, what’s it about” and you say,
So I guess what happened here is, in 1981—coincidentally the same year I got a Commodore 64—a librarian somewhere took photographs of this dissertation and put it on microfiche and archived it, and then something something now it’s on the Web as a PDF? So, OK, I get the PDF.
So, that was a setback. But I was prepared for this by COMPUTE! magazine, which was a paper publication that had long printouts of BASIC programs that you could type into your computer and run. I’m not making this up.
Or for that matter any character on this page. Is that a K or an X?
(Note: these are load-bearing integers, so a mistake is a big deal. If I get this digit wrong, it’s not like we get three thousand of something when it was supposed to be three thousand and sixty. It’s a line number. So we jump to the wrong statement in the program. The behavior becomes super strange.)
I made a class for every single thing that can appear in a BASIC program. Like, BASIC programs can have numbers in them, so there’s a Number class. With methods for executing a number — it just returns the value of the number.
I can’t show you all the code, but I needed something to take the raw text and turn it into the objects, so I wrote a little parser. The nice thing about BASIC is there is no high-level structure to your code, no functions, no blocks, nothing. So if you can parse one line of BASIC, you can parse BASIC.
And here’s the main interpreter loop. I’m not going to win any prizes for self-documenting code here, but basically, big WHILE loop, WHILE the status is “run”, run the current line of code.
I want to leave you with this picture, because I think it’s beautiful. Somewhere along the line this code got converted from digital to analog and back to digital one too many times, and it came apart.
Maybe: a computing future is never really lost until we first lose the computing past.