So, having tentatively decided to create a new computer (but still not quite having mustered the courage to tell anybody), I thought, well, let’s start thinking about what that computer might look like.
My first computer (which my Pops bought for us when I was 10 years old) was the BBC Micro.
It had 32K of RAM, a 320x256-pixel display, and ran an 8-bit 6502 CPU at a then-impressive speed of 2 Mhz (for readers not au fait with the jargon, that means it could store 32,000 numbers in its memory, and perform roughly two million calculations per second, but only on numbers smaller than 256. For comparison, a modern iPhone has 8GB of RAM, about 250,000 times more memory; and runs a 64-bit CPU at 3.46 GHz, i.e. 13,840 times faster).
Best of all, though, the BBC Micro was built to be programmed. When you plugged it into your Panasonic 26-inch CRT television and switched it on, you’d hear a cheerful double-beep, and then see a screen that looked like this:
Armed with the trusty BBC BASIC User Guide, you could immediately start writing code. So that’s what we did.
When we first bought the machine, there were no games available for it - instead, we bought hobbyist magazines that contained program listings for games, which we dutifully typed in. Of course, life being life and typos being typos, they wouldn’t work the first time; so me and my Pops would sit in front of the machine and pore over the manual, figure out what the weird “syntax errors” meant, fix the code, and eventually we could play the game.
And that’s how I learned to write code. Or more accurately, that’s how I learned to love coding. It’s still a source of infinite wonder to me - how you can write this sort of half-pidgin-half-math poetry into the machine, tweak and poke at it until it stops crying and mewling and stands up by itself, and some mysterious alchemy takes place and something new comes into the world, something that squirms and glitches and bleeps and pulses with life, and it’s yours. It’s magic.
you can’t stop progress
When Meta released the first-generation Quest VR headset, I was one of the first people in the queue.
Here was a self-contained Virtual Reality computer, with its own storage, networking and display, all available for under £500 - almost exactly the same as my dearly beloved “Beeb”. Perfect for ten-year-old me, if I were running around in 2020 instead of 1982.
So I sat down to figure out how to do cool stuff with it. At the time, we were embarking on the project of remodeling our little Victorian house in Penrose Street, London; I’d produced a bunch of Sketchup mockups of various possibilities, and I thought it would be fun to explore those in VR. So I set myself the task of writing a bit of code to let me walk around the house, push walls around, experiment with different layouts, lighting options, that kind of thing. Nothing fancy.
Since I was running a Mac, I decided to give the Unity engine a try, as it was supposed to be the “easiest” way to get stuff going in it. My first challenge : get a simple one-meter white cube displayed in VR.
For a lark, I decided to document my learning curve, writing down each step of the process.
And this was the result:
The above was just the first page of about four pages of utter dreck, just the purest expression of joylessness a human mind can conceive.
At the end of a whole day’s “work”, I had a simple 1 meter white cube loaded into the headset. I had also lost the will to live, or to ever try to do anything with any kind of computer ever again.
I came to the conclusion that if this was the result of forty years of “progress”, there was something seriously wrong with the computer industry.
the lost generations
There’s a whole generation of programmers, me included, who were created by the first microcomputer boom in the early eighties - the BBC Micro, ZX Spectrum, Commodore 64, and then later the Atari ST and Amiga. These were all machines that offered a direct route into coding - programming was the first and only thing you could do with those machines. And so, if you didn’t have a lot of invites to parties, it was natural to slip into it.
So what happened to those kids, the socially awkward geeks like me, who came of age once those machines were gone, replaced by the slick, but forbiddingly complex, IBM PC and Apple Mac computers?
My guess is that most of them didn’t get into coding.
Which is a weird thing to write, I guess, especially sitting here in a Silicon Valley coffee shop, surrounded by people in Patagonia fleeces writing code on laptops, earnestly discussing GPUs and machine learning and runways and Series-A rounds and product-market fit.
But I know the rest of the world isn’t like Silicon Valley, because I’ve just come from spending my whole life in the rest of the world.
Maybe there’s a reason why most people don’t know how to code, the way everyone knows (kind of) how to read and write and add and subtract. Why “software engineering” remains a rarefied profession, a high priestery jealously guarded by its adepts from the muggle hoards; and why despite all the billions of dollars poured into it, software still doesn’t do what you want, and working with it is a daily litany of petty frustrations and humiliations, that we’ve just inured ourselves to because there’s just no other choice?
I mean, think about it: how many times a day do you find yourself cursing your computer or your phone? How many times a day do you think, I wish it just did this little thing just a little bit differently?
For example: this little Spotify thing that annoys me every time it happens : I pull up a track on my phone, it starts playing, and then I switch over to play on my living room speakers. And the track just switches over and continues playing on the big speakers from wherever it happens to be. It’s messy and annoying and offends my sense of showmanship - I want it to restart the track from the beginning as soon as the switch happens.
It’s a micro-annoyance, I know. But my point is: I can describe this feature in an 80-word paragraph. But how likely is it that I could ever make that happen, short of getting a job at Spotify?
People know how to make their computers better, because they have to use them, every minute of every day. And yet they are, in the main, powerless to change how they work.
Maybe that’s why they set Waymos on fire.
Okay, with extreme prejudice : fuck this. This ends now. I’m through waiting for someone else to fix this.
the infinite improbability drive
Right, I thought, now I have my mission. I’m going to make a VR programming environment designed for ten-year-old-me, as simple and immediate as the BBC Micro experience was.
You’d start in a simple white space, with a one-meter-wide cube floating in front of you. And between you and the cube would be a little lozenge containing some text : the code that generated the cube. You edit the code, and the cube would change accordingly.
Since I have no idea where to start, I’m going to start by making a cup of tea.
Lightbulb: I put a call for help out on Facebook, and had a response from a Facebook friend I didn’t know I had, a chap named Ricardo Cabello:
“Why don’t you try three.js?”
So I did, and stepped through the door into the magical, infuriating world of open source web programming.
right this way, mister goldberg
It took me a month of painstaking hacking and learning (with a lot of patient help from Ricardo, a gesture I appreciate to this day, as it turned out he was the original author of three.js, and as such unimaginably important and busy) to get my lardy old synapses working with javascript, the three.js engine, getting a GoDaddy server running, figuring out how to serve a web page from it (I still don’t understand SSL certificates), and all that stuff. But I finally got a simple mockup running on my laptop, and then with a little more tweaking, running on the headset.
To let me type without taking the headset off, I rigged up a little Rube-Goldberg assembly by gluing a Quest tracker and a bluetooth keyboard to a plastic chopping board, then generated a virtual keyboard inside the headset that appeared roughly in the place where the real keyboard was. It was kind of beautiful.
And it worked! You had to peek out through the gap between the headset and your nose to get your fingers lined up on the home keys, but once you’d done that, you could touch-type with reasonable speed, and the experience of live-editing the code and seeing your changes happen right in front of you, was magical in just the way I’d hoped it would be.
I called it the Heart of Gold, after the song by Neil Young, and Zaphod Beeblebrox’s spaceship in Douglas Adam’s The Hitch-hiker’s Guide To The Galaxy.
To infinity, and beyond!