A Life in Code
— 1978 —
My mum worked at a tiny company that made kitchens. One day, they got a mini-computer for the office, and Mum took me to work to show it off. It was the first computer I ever saw, and she left me on my own with it.
It had a really primitive version of 20 Questions that I played over and over, fascinated that this chunk of metal could figure out what I was thinking. The highlight came when it didn’t guess my animal, and it asked me to provide a new question that would distinguish apes from monkeys.
— 1980 —
A couple of years later, I won a book voucher as a prize at school, and bought a copy of Programming in BASIC (Beginners All-Purpose Symbolic Instruction Code) on the way home.
I didn’t have a computer, though, so I had to write my programs on paper and imagine them running.
— 1981 —
A year went by before Sir Clive Sinclair released the first computer for under £100. I saved up my earnings from my paper round and bought myself a ZX81.
The ZX81 came without a monitor, so I plugged it into the tiny black and white TV that my mum gave me, and I was hooked.
You programmed the ZX81 in BASIC, so that book I’d bought the year before came in handy. I wrote some code to do maths. I wrote some games. I drew some ASCII art. Lots of fun and I learnt a ton. Here’s Hello, World in BASIC.
10 PRINT “HELLO WORLD”
20 GOTO 10
My ZX81 only had 1k of memory. Writing code in 1k was a struggle because just filling the screen took about 600 bytes. I saved my programs on a cassette tape — beeeee-ooop-dip-dip-dip-ooooo.
In addition to BASIC, the adventurous could hack into the underlying Zilog Z80a CPU and write programs in Z80 machine code. Z80 was the primitive machine language underlying everything, and I learned that too.
Here’s Hello, World in Z80 code.
ld bc, MY_STRING
MY_LOOP:
ld a, (bc)
cp 0
jr z, END_PROGRAM
rst $10
inc bc
jr MY_LOOP
END_PROGRAM:
ret
MY_STRING:
defb "Hello, World!"
defb 13, 0
Sensible people bought an assembler to turn assembly code into machine code, but I translated mine, byte by byte, using the lookup table in the back of the book.
Here’s the same Hello, World program translated into machine code.
01 0D 00
0A
FE 00
28 04
D7
03
18 F7
C9
48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21 0D 00
Imagine writing a program to play draughts in machine code. I shudder at the memory.
— 1984 —
A couple of years later, Sinclair brought out the ZX Spectrum, which was essentially a souped-up ZX81 with colour and more memory. I bought one to take with me on my ship to the Falklands, and by the time I got home, I was pretty good at programming, and had written some proper code, including some Fourier analysis and a game of Monopoly.
— 1990 —
After I left the Navy, I got a job fixing radios on aircraft at Heathrow. I hated it and quit after a few months. I didn’t know what to do next until…
“Hmmm…”, I thought.
“I used to enjoy coding.”
I found an adult education class in software engineering, but if you know anything about adult education from that period, you know that most people only went because their benefits would be stopped if they didn’t. Even worse, our instructor was an idiot and a drunk who didn’t really know how to program. He stopped coming anyway after the first few days.
A week or two went by with no instructor, and I got really good at playing pool in the pub across the road. The education company eventually said they were sorry, and they’d find someone else to teach us, but in the meantime, they left a book for us to learn from until the new teacher showed up.
The C Programming Language is the most important book on computer programming ever written, and I read it from cover to cover. When the new instructor showed up, he tried to teach us ADA, but I was not interested. I was hooked on C.
main( ) {
printf("hello, world");
}
My first proper program was an editor for sheet music that would play the music you typed into a score. It was pretty cool, if I say so myself.
After a few months of this, our instructor said he knew a software company in the City of London that was hiring, and I got my first programming job.
The first thing they did at my new job was teach me COBOL, which is the worst programming language ever invented. But there was a sudden emergency in the middle of my lessons, and they send my down to Reuters on Fleet Street to fix the problem.
There was a C program responsible for gathering stock exchange data from around the world, converting it, and loading it into an IBM mainframe. Two people had tried fixing it before me, but it kept crashing and they kept calling us back. I was the only one who knew C, so they left me alone to fix it.
The person who wrote the program didn’t really know C, and it was a mess. I tried fixing the code, but it crashed again the next day, and they called me back. Two more days of this, and I decided it would be easier to just rewrite it from scratch. It never crashed again, and I had written my first grown-up program.
I never told a soul that I had rewritten it, and I never had to go back to Reuters.
Fourth-generation languages (4GLs) were all the rage at the time, and my next adventure was another language, Progress. Progress was a database language — like SQL — but procedural — like C. The idea was that code should look more like a natural language. You’d grab records from the database one at a time and then display them or do calculations or whatever. Everything was in Progress, so you didn’t have to learn one language for the database, another language for processing and another for the user interface.
FOR EACH customer WHERE status = “active”:
DISPLAY customer.name.
END.
Progress was really cool and one of my favourite languages. It’s a shame it didn’t catch on, because it was about ten times more powerful than SQL, and a lot more fun.
— 1993 —
After we got married, we moved down to Plymouth and I got another job writing C. I had to learn SQL for this one.
SELECT name FROM customer WHERE status = “active”;
I built the messaging system for the soon-to-be-launched Czechoslovakian cable TV system. My tiny little company designed everything — the cable TV boxes, the electronics and all the code, but when we were done, the Czechoslovakian cable TV company that hired us stole everything. Boo!
Also, SQL. Boo!
— 1994 —
My next job was on Wall Street, in New York. Most of my job was in C & SQL, but I had to learn a bunch of minor languages like Visual Basic and AWK to get things done.
I got my first web browser, Mosaic, and learned to write HTML, too.
— 1995 —
My workmate Chris and I decided we should learn C++, so we got a book and started learning it in our spare time. After a few days of this, we decided that we hated C++ and didn’t want to learn any more. But, just then, a dude in the next aisle said,
“Have you heard of Java?”
Java was not officially released yet, and there was no documentation and no books.
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
That night, I went home and wrote my first Java Applet. I took a photo of my baby son’s xylophone and loaded it into the browser, where you could play music on it.
I showed the applet to my boss, and we decided to build a credit system in Java for the traders on the trading floor. Huge success!
It was one of the first commercial Java programs in the world.
— 1996 —
I was probably one of about only twenty people in the world who had written a Java program, so it was easy to get a job in Silicon Valley, where Java was the hot new thing. Sun Microsystems was just around the corner, and they invited us down to help design the next version. Netscape was just across the street, and we helped them design their new programming language, JavaScript.
— 2002 —
I quit my job in 2002 to try my own startup, building project management software for eXtreme Programming. Microsoft had just released their new language, C#, a contender for Best Language Ever, and I wanted to give it a try.
using System;
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
}
}
Unlucky for me, there was a huge recession in 2002 which wiped out half the companies in Silicon Valley — including mine. So I found another startup company where we used AI to do software testing. That died a few years later, too
— 2009 —
When the iPhone started getting popular, WebMD wanted a fitness app, and I built it in Objective-C, which I love about as much as I love COBOL.
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSLog (@"Hello, World!");
[pool drain];
return 0;
}
If I ever build another iPhone app, I won’t ever use Objective-C again.
— 2014 —
At my final startup, none of us knew the same language. We tried PHP because Allen knew it, but PHP is another contender for Worst Language Ever. Facebook is built in PHP, which explains a lot.
We switched to Python because Gilles knew it. Python is a beautiful language, but the framework it used for web development was horrible, so we switched to Ruby.
Ruby is the best language ever.
puts “Hello, World”
I’ve written more code in Ruby now than I have in any other language. I love it.
— 2025 —
I accidentally retired last year, and this is the first year in forty that I haven’t written any code. I had big plans to write some apps when I stopped working. Most ideas were AI-related, but I’m never gonna compete with ChatGPT. I was gonna write a quiz program for the web, but that’s a stupid idea too, when everyone has ChatGPT to answer all the questions.
Maybe I am done with coding.

— A Life in Code —
People who don’t code don’t understand what a creative activity coding is — they think we are all ones and zeros. But I can’t think of anything more creative. It has filled my life with wonder.
It is truly liberating to create something out of nothing except the thoughts in your head. Perhaps people who are gifted at painting or music get a hint of this, but to imagine something and then go build it! It makes you feel superhuman.
I started programming just as it was taking off as a professional career, and I lived through its heyday, but I think it might be all over soon.
Perhaps it is done.
I’m writing my memoirs on Substack.
Lots of stories over there.
Come check ‘em out. Maybe you get a mention!