Essay · Memoir

The Silicon Door

At fourteen I filed a copy of a key so I could be alone with an Apple II. What I found inside it was a question I’ve been working on ever since.

The key

The first constraint: access to compute

In 1981 the only computer I could reach lived in a locked office at Elmwood, my old elementary school in Rosemère, Quebec. It was an Apple II with 48 kilobytes of memory, and the school rationed it the way schools ration anything precious: a few supervised minutes at a time, for children young enough to still go there. I was fourteen and already at Rosemère High. Officially, I had no business anywhere near it.

So I made a key. I filed down a copy until it turned the lock. On nights I didn’t have it, I hid in a supply closet or behind the stage curtains until the custodians finished their rounds and the building went quiet. Then I let myself into the office, flicked the rocker switch, and listened to the disk drive grind and chatter while the screen came up green.

I stayed four or five hours at a time, most nights of the week. When I was done I climbed out a ground-floor window, eased it shut and walked home in the dark with my pages folded inside my jacket.

Nobody ever caught me. I never took anything but time on the machine. And that time decided the next forty-five years.

Radio Shack

Hardware first: logic gates, then loops

It started with sound. In the late seventies the Radio Shack near us kept analog synthesizers on display, and I went in to stand next to them. The store also sold the Science Fair 100-in-1 electronic kit, a board of springs and parts you wired together by hand. I built radios and oscillators with it, and then, from a few transistors and resistors, the tiny logic gates every chip is made of: AND, OR, NOT. I didn’t know that’s what they were called. I knew that if I wired them right, the circuit made a decision.

Then the TRS-80s arrived on the sales floor. I learned just enough BASIC to write a loop that filled a row of demo monitors with the names of the bands I loved, Bowie, Gary Numan, Bauhaus, over and over until a manager pulled the plug. It always ended the same way, and it didn’t matter. I’d learned that a few lines of code could take over a room.

A world in 48 kilobytes

State modelling: a whole world held in memory

What pulled me back to Elmwood night after night was Zork. If you never played it: a screen of text tells you where you are, you type what you want to do, GO NORTH, TAKE LAMP, OPEN DOOR, and the game answers. I’d also met ELIZA, the famous program that played a therapist by turning your own words back on you. ELIZA felt like a trick. Zork felt like a place. I wanted to build a place.

So I started my own: roads and cornfields, cellars and tunnels, objects you could carry, characters you could meet, conditions that changed as you moved. I had no training and no book on how games were made. I had Applesoft BASIC, a stack of loose-leaf paper and a lot of nerve.

The first thing a world teaches you is that it has to live somewhere. A flat list of variables can’t hold rooms that lead to other rooms. One page in my notebook is headed VARIABLE MAP: a key to the whole game in eleven lines. What the player typed. Where each object sat. Its short and long descriptions. The direction the player meant to go, their sector on the map, the time of day.

The page headed VARIABLE MAP, listing each variable and what it holds
VARIABLE MAP: the game’s memory, laid out by hand. A$ and B$ hold what the player typed, SCTR is where they stand on the map, K is the time of day.

Another page works out where the exits go. Every room got six possible directions: north, south, east, west, up and down. The exits for every room lived in one long list, and to find a room’s six, you multiplied its number by six and counted forward. I wrote it as V = SCTR*6. Beside it, in pencil, are the rows themselves. Room 2 reads 3, 0, 4, 0, 0, 0: it opens onto rooms 3 and 4, and nowhere else.

Notebook page with V = SCTR*6 and sketches of rooms and an elevator
V = SCTR*6: the arithmetic for finding a room’s exits in one long list.
Pencil map with exit rows, locked and unlocked doors and the line 3010 Introduction to road
The exit rows in pencil, a door that can be locked, and line 3010: Introduction to road.
Handwriting: random chance for hedgehog to be seen entering Cornwall, or ear of corn to be found
From the notebookLines 3032 to 3038: a random chance of a hedgehog entering Cornwall, or an ear of corn turning up.

Then came the fun part, filling it. The road is a block of program lines starting at 3010: an introduction, a major description, then a counter that changes the description as time passes. Along it runs Cornwall, a wall of maize. Lines 3032 to 3038 roll the dice on a hedgehog slipping into it, or an ear of corn turning up. If the clock lands on 7, 10 or 13, a hole in Cornwall is discovered and the game sends you through to sector 9. And lines 3056 to 3068 give a random chance of a horse coming along, then set the mood.

Handwriting: random chance of seeing a horse come along, etc. The wind makes the corn wave like the sea
From the notebookLines 3056 to 3068, the last thing the road does before it returns.

Deeper in there’s a tunnel system and an old elevator: “You are in an old ’30s style elevator… heavily corroded. It looks functional though.” The lever is rusted and needs force. A sealed mason jar of grease can only be smashed in certain places, and the notes list what it does once it breaks. It makes some floors slippery and soaks into others. It oils old machinery. A certain beast will eat it and become your friend. It burns.

Ink map of a cornfield sector with a road, a ditch and line numbers 3010 to 3040
The cornfield sector: road, ditch and maize, each tied to program lines from 3010.
Notebook page titled Tunnel System, Scene 6, with a room graph and the elevator description
Tunnel System, Scene 6: rooms as a graph, and the corroded ’30s elevator.

I didn’t have words for any of it. I was designing systems.

Teaching it to listen

Input parsing: from keystrokes to words to intent

The world was the easy part. The hard part was letting a person talk to it.

Handwritten BASIC that reads input into an array and counts words at every space
From the notebookReading input into an array, then counting a word at every CHR$(32), a space.

Zork’s parser set the bar for what a home computer could understand, and I wanted mine to understand more than a short list of commands. The surviving code shows where I started. It reads what the player types into an array of up to a hundred slots, and if they keep going past that, it answers VERBAL OVERLOAD, REDO. Then it walks back through the characters, and every time it finds a space, CHR$(32) in Apple BASIC, it closes one word and starts the next. The header on the page is three lines long: INPUT. PARSE, put input into word form. SUBROUTINE, alter or list variables. That is still the basic shape of a command parser.

Handwriting: I jump rope, I feverishly jump rope, the rope is good for jumping
From the notebookAn adverb changes how; one word can be an action or an object’s purpose.

Splitting a sentence into words is mechanical. Knowing what the words mean is not. A page headed VOCABULARY works out that different words can point to the same action: take, get and procure all lead to the same place. Another page says only this: I JUMP ROPE. I FEVERISHLY JUMP ROPE. THE ROPE IS GOOD FOR JUMPING. Then, underneath: AFTER VERB AS WELL. I was working out that an adverb changes how something happens, that it can sit on either side of the verb, and that the same word, jump, can be an action in one sentence and the purpose of an object in the next.

An atom named cat

Semantic representation: meaning as a web of relationships

Somewhere in those pages, the project stopped being a game.

If you build a dictionary for a parser, the obvious move is to treat each word as a label. CAT means cat: a string of letters stored at an address. The more I worked on mine, the less that held up. A word on its own meant nothing. What made cat mean cat was everything it connected to: animal, small, soft, a predator, a pet, a thing that purrs. Some of those connections mattered more than others. Change them and you change the word.

I started thinking of each noun as an atom: nothing in itself, defined entirely by its bonds.

The notebook doesn’t have a diagram of a cat. It has something more interesting. Every kind of noun, idea, thing, person, place, gets the same three axes: SIZE, SHAPE, CLASSIFICATION. Beside them are the questions I wanted the machine to handle. WHAT IS THE LIFESPAN OF A HUMAN? CAN YOU BE LESS GENERAL THAN HUMAN? Underneath, copied out in capitals, the definitions I was working from: a verb tells what anything does, what was done to it, or in what state it is. A noun is a word used to denote any object of which we speak.

Handwriting mapping idea, thing, person and place to size, shape and classification, beside the question can you be less general than human
From the notebookEvery noun on the same three axes, and the questions I wanted the machine to answer.

One line, on a page crowded with drawings of heads, says the part I could never put into code.

The mind usually sets certain standards for considering information. These standards are not objective.

Page of pencil drawings of heads with notes on belief and knowledge
Belief and knowledge: the page where I decided that how a mind sorts information is never neutral.

At fourteen I had no idea I was standing next to anyone else’s work. A little further on, I’ve set the pages beside the published ideas they come closest to.

What “it” means

Context memory: resolving references across turns

The parser’s hardest problem was the smallest word. Type TAKE THE LAMP, then LIGHT IT, and the program has to know what it is. People do this without thinking. Programs don’t.

Handwriting: check last noun in memory that corresponds to pronoun, with Elephant Disks written diagonally
From the notebookCHECK LAST NOUN IN MEMORY THAT CORRESPONDS TO PRONOUN, and the ELEPHANT DISKS note that dates the page.

My answer is on a page full of sketches: CHECK LAST NOUN IN MEMORY THAT CORRESPONDS TO PRONOUN. Keep track of the nouns the player has used, and when a pronoun arrives, reach back for the most recent one that fits. In the margin of the same page I wrote ELEPHANT DISKS, a brand of floppy that went on sale in 1982. That’s how I know roughly when I worked it out.

Working out what a pronoun points to has a name, anaphora resolution, and a famous ancestor. Terry Winograd’s SHRDLU, built at MIT around 1970, let you talk to a simulated world of blocks and ask it to put it in the box. It ran on a research computer with a lab behind it. Mine ran on an Apple II in a school office after dark, and handled far less. It was the same kind of problem, worked out alone.

Side by side

Parallel discovery: the notebooks beside the published research

Here is the honest version of how close the pages come. On the left, what I worked out alone in Rosemère. On the right, the nearest published work, most of it from MIT, written by people with labs, funding and years of training. I hadn’t read a word of it. I’d only played the game in the last row.

Side by side: the notebooks and the published work

Dates are publication years. Parallels, not influences.

  1. Notebook · Rosemère · 1981–82

    Notebook: I FEVERISHLY JUMP ROPE / THE ROPE IS GOOD FOR JUMPING

    The same word changes its role with the words around it: jump is an action in one sentence and an object’s purpose in the next.

    Oxford · 1957

    J.R. Firth

    “A synopsis of linguistic theory, 1930–1955,” Studies in Linguistic Analysis

    A word’s meaning comes from the company it keeps: the words it appears beside.

    Source ↗
  2. Notebook · Rosemère · 1981–82

    Notebook: CAN YOU BE LESS GENERAL THAN HUMAN?

    Asked the machine to move up and down a ladder of categories, from the general to the particular.

    MIT Press · 1968–69

    M. Ross Quillian; Allan Collins and M. Ross Quillian

    “Semantic Memory,” in Semantic Information Processing; “Retrieval time from semantic memory”

    Concepts as nodes in a network, linked by “is a”: a canary is a bird, a bird is an animal.

    Source ↗
  3. Notebook · Rosemère · 1981–82

    Notebook: IDEA, THING, PERSON, PLACE — SIZE, SHAPE, CLASSIFICATION

    Gave every kind of noun the same set of slots to fill: size, shape and classification.

    MIT AI Lab · 1974

    Marvin Minsky

    “A Framework for Representing Knowledge,” AI Memo 306

    Frames: structures with named slots, filled with values or sensible defaults.

    Source ↗
  4. Notebook · Rosemère · 1981–82

    Notebook: CHECK LAST NOUN IN MEMORY THAT CORRESPONDS TO PRONOUN

    Resolved “it” by reaching back for the most recent noun that fit.

    MIT · 1971–72

    Terry Winograd

    SHRDLU; Understanding Natural Language

    A program that held a typed conversation about a world of blocks, working out what “it” and “them” referred to.

    Source ↗
  5. Notebook · Rosemère · 1981–82

    Notebook: INPUT · PARSE · SUBROUTINE

    Read the player’s typing into an array, split it into words, then acted on them.

    IEEE Computer · 1979

    P. David Lebling, Marc Blank and Timothy Anderson

    “Zork: A Computerized Fantasy Simulation Game”

    The parser behind Zork, the game I was trying to match. This is the one I knew.

    Source ↗

Today’s language models learn their own version of that web from enormous amounts of text, every word a point defined by its neighbours. They got there by a road nobody in 1981 could have built, and my notebooks didn’t pave any of it. What the pages show is narrower, and to me more interesting: the idea was sitting there for anyone who pushed hard enough on the problem. Whether those pages earn a footnote in that history isn’t mine to decide. That’s for historians of computing, and I’m asking them.

The screen is for a person

Interface design: what the user sees, and when

Notebook page headed Problems with a list of design issues and a sketch of a screen layout
PROBLEMS: designing output, error messages, and when to show the description again. The sketch is a screen layout for a place called Cornwall.

One page I don’t remember writing is headed PROBLEMS. The list: designing output. Error messages. Door routine. Incorporation of text files. Under it, a rule: print the area description only once while in it, unless the character wishes to look. Beside it is a sketch of the screen itself, a title bar reading CORNWALL, a box for the description, a line at the bottom for input.

I was fifteen, deciding what the player should see, when to show it, and what to leave out so the screen didn’t drown them. There was no name for that job yet, at least nowhere I could see. It’s the job I’ve done ever since.

The math showed up late

Formal methods: the theory arrives after the need

I was failing math at the time. Not doing poorly. Failing.

Then the teacher reached algebra, and something happened that surprised us both. Binomials, functions, letters standing in for other things: I’d been trying to invent exactly these, badly, to describe position and movement and relationships in my world. The tools already existed. I’d just been ignoring the class where they lived.

I didn’t discover new mathematics. What happened was smaller, and it stuck: I needed the math before anyone taught it to me, and when it arrived, I recognized it.

The ceiling was the hardware

Scale: when compute, not the idea, is the limit

As the game grew I fought the machine for every byte. I ran parts of it through the Einstein compiler so they’d run faster, and dropped into assembly for the few routines where speed mattered most. Even then, the Apple II ran out of room long before the ideas did.

Near the end I remember a clear thought. It isn’t on any page I’ve found, so I’ll give it to you as memory, not evidence: this wasn’t a game anymore. It was the beginning of a thinking machine, and what held it back wasn’t the idea. It was the hardware, too little memory and too little speed. Given enough of both, a web of atoms like this would become something that could actually understand.

I had no idea how that would happen. I was sure that it would.

The veil

The through-line: designing how people and machines understand each other

I’ve thought a lot about why a teenager could get there at all. Part of it was obsession: four hours a night, most nights, for two years. The bigger part was what I didn’t know. Nobody had told me which problems were hard, which ideas belonged to universities, or that a kid with an Apple II wasn’t supposed to be working on them. I couldn’t see the walls, so I never stopped at them.

Yellow notepad page titled The Alchemists, handwritten philosophy
From the notebookThe Alchemists, from the yellow notepad I kept in the same years: “What is real is what is experienced.”

In the same years I filled a yellow notepad with poems and half-formed philosophy. One line reads like a manifesto now: what is real is what is experienced.

Every generation has kids like that, sitting in front of whatever the new machine is, pushing on it until it gives. Most of what they find has already been found. Some of it hasn’t. All of it matters, because the habit of pushing is the part that lasts.

That habit took me from a school office to game design, to a studio of my own, and into enterprise software, where I’ve since led design organizations at NielsenIQ and IBM. Most recently, that meant defining how AI behaves inside products people rely on: what it should do when it’s uncertain, and what it should do when it’s wrong.

The machinery is unrecognizably bigger now. Models learn their webs of meaning from more text than anyone could read in a lifetime, on hardware a fifteen-year-old in 1981 couldn’t have imagined. But when I sit down with an AI system today, the questions are the ones on these pages.

On the page, 1981–82In AI systems today
VARIABLE MAP What the game holds in memoryState and memory What the system knows about you and the task
INPUT · PARSE Splitting typing into wordsTokenization How a model breaks text into pieces it can use
The atom Meaning as connections, drawn by handEmbeddings Meaning as position among other words, learned from data
CHECK LAST NOUN Working out what “it” meansContext What the model carries from one turn to the next
PROBLEMS What to show the player, and whenAI interface design Confidence, errors and what the user sees
The hardware ceiling Too little memory, too little speedScale Compute and data as the limit

The scale changed. The questions didn’t. That’s the next story.

The notebook, page by page

Scroll sideways · tap a page to enlarge

Variable map
Variable map
Exit arithmetic
Exit arithmetic
Exit rows and doors
Exit rows and doors
The road, line by line
The road, line by line
The cornfield
The cornfield
Tunnel system, scene 6
Tunnel system, scene 6
Finder: the jar of grease
Finder: the jar of grease
Input, parse, subroutine
Input, parse, subroutine
Vocabulary
Vocabulary
I feverishly jump rope
I feverishly jump rope
Size, shape, classification
Size, shape, classification
Belief and knowledge
Belief and knowledge
Check last noun
Check last noun
Problems
Problems
The Alchemists
The Alchemists

Daniel Riley is a product design leader who designs AI interfaces for enterprise software. The original notebooks are in his archive. Next: Beyond the Silicon Door.

Sources and further reading
  1. Zork, including the Apple II release, 1980–81
  2. ELIZA, Joseph Weizenbaum, 1966
  3. Elephant Memory Systems, floppy disks introduced 1982
  4. Distributional semantics and J.R. Firth, 1957
  5. Semantic networks and Ross Quillian, 1968
  6. Frames, Marvin Minsky, 1974
  7. SHRDLU, Terry Winograd, MIT, 1968–70