What I'm making
-
WARD/EN
A programming game about autonomous drones, derelict spacecraft and writing a plan that gets the salvage home.
-
Phosphor
A real-time-with-pause tactical fleet game about command, information and making decisions under pressure.
-
Onus
A programming language for code a model writes and a person has to trust.
-
Annhexation
A 4X strategy game you can complete in an evening. Play the demo on Steam.
Things I've built
-
Exile
A bit-identical reconstruction of the BBC Micro classic in TypeScript, playable in your browser.
-
Path Tracer
Rendering Doom levels in a browser with real time path tracing
-
Thrust
A faithful recreation of a BBC (and C64) classic
-
Vektrix
A high-performance psychedelic shooter built with WebGPU
-
8-bit Console
A custom 8-bit games console with an AI devkit, built for the web
-
TS-Trek
Web reimagining of the classic "Star Trek" mainframe game
-
8-bit Golf
Retro golf game for Mac and iOS with a built-in course designer
-
Graph Paper
A graph paper and blueprint themed drawing app for Mac and iOS
-
VoxEd
Voxel model editor for the Mac and iOS with syncing across devices
-
Elite
A WebGL and Typescript version of the classic game Elite
-
Wolfenstein 3D
Wolfenstein 3D running in the browser with F# and Fable
-
Sprite Packer
A simple sprite packer for Mac OS
-
SprEd
A pixel art focused sprite editor for the iPad and MacOS
-
GPU Mandelbrot
A mandelbrot rendered using the GPU
-
3D Spectre Maze
The classic 3D Monster maze recreated using Spectre.Console
-
Simple C++ Voxel Engine
A voxel engine written from the ground up in C++
Selected writing
-
Nobody Could Have Written the Ticket
Handing tickets to an agent and expecting the finished thing back is waterfall with a faster middle. What agents actually buy you is cheaper iteration - which is a real gain, and a different one.
-
Someone Still Has to Sign It - and the Research Says They'll Stop Reading
Agentic coding works, but someone accountable still has to approve the merge - and forty years of automation research says the better the model gets, the less that approval will mean.
-
The Return of the Bedroom Coder - and How I Made My Peace
One person can ship what used to take a team. That's real - and it doesn't undo what I lost. A follow-up to "The thing I loved has changed"
-
Introducing Onus - The Code Is Generated, The Responsibility Is Still Mine
Introducing Onus, a language exploring how contracts, capabilities and compiler evidence can help humans judge code generated by AI.
More writing
-
Introducing Onus - The Code Is Generated, The Responsibility Is Still Mine
Introducing Onus, a language exploring how contracts, capabilities and compiler evidence can help humans judge code generated by AI.
-
Nobody Could Have Written the Ticket
Handing tickets to an agent and expecting the finished thing back is waterfall with a faster middle. What agents actually buy you is cheaper iteration - which is a real gain, and a different one.
-
Someone Still Has to Sign It - and the Research Says They'll Stop Reading
Agentic coding works, but someone accountable still has to approve the merge - and forty years of automation research says the better the model gets, the less that approval will mean.
-
The Return of the Bedroom Coder - and How I Made My Peace
One person can ship what used to take a team. That's real - and it doesn't undo what I lost. A follow-up to "The thing I loved has changed"
-
Teaching a Computer to Play 4X: How the Annhexation AI Works
How the Annhexation AI decides what to want, plans how to get it, and executes across turns — built from three decoupled layers, a stack of personality-weighted goals, and a persistent memory.
-
Does the Data Show Trump Sundowning? A Look at His Posting Rhythm
With all the claims made about Donald Trumps posting times suggesting sundowning I figured it would be interesting to look at the data
-
GitHub CoPilot and Real Scrutiny
GitHub CoPilot have changed their pricing model - and are about to face some real scrutiny
-
Training a Neural Network in 16-Bit Fixed Point on a 1982 BBC Micro
Training and running a neural network on a 1982 BBC Micro — first in BBC BASIC, then in 6502 assembly. Fixed-point Q4.11 arithmetic, a sigmoid lookup table, and a shift-and-add multiplier all prove that backpropagation doesn't need a FPU, a GPU, or anything invented after 1985.
-
Building a Real-Time Path Tracer in WebGPU
Building a real-time path tracer in WebGPU — no libraries, no RTX extensions. Tracing rays through Doom levels and procedural dungeons at 60fps in a browser, and discovering why a £1,600 GPU still can't brute-force the rendering equation.
-
Jensen Huang Is Training His Own Replacement
NVIDIA is selling the picks and shovels in the AI gold rush. Unfortunately for Jensen, the buyers are using them to automate the picksmith. What's good for the goose is good for the gander.
-
Neural Networks for Developers - XOR (Part 1)
Increasing numbers of us are using Neural Networks to help us code, as personal therapists, for writing, image generation, just about everything and anything. But how do they work? In this series we're going to build a series of increasingly complex networks from the ground up starting with an XOR evaluator.
-
AI Can't Recreate Thrust (But It Can Help You Understand It)
Recreating a 1986 BBC Micro game by using AI to reverse-engineer 6502 assembly — extracting Q7.8 fixed-point physics, emulating the SN76489 sound chip, and discovering why the original feels the way it does. Software archaeology with a modern accomplice.
-
I Started Programming When I Was 7. I'm 50 Now, and the Thing I Loved Has Changed
I still love developing but the shifts that AI have brought are tectonic and are forcing me to re-evaluate my own relationship to building things
-
The Real AI Risk Isn't Job Loss — It's Epistemic
AI's real danger isn't taking your job - it's reshaping how you think. Engagement optimization, invisible guardrails, and the illusion of objectivity combine to create something more insidious than social media.
-
Vektrix: Building a Psychedelic Twinstick Shooter with WebGPU in 2 Days
A psychedelic twinstick shooter, playable online, and written in a weekend using WebGPU and an AI coding assistant.
-
Teaching an LLM to Write Assembly: GBNF-Constrained Generation for a Custom 8-Bit CPU
A deep dive into grammar-constrained token generation, using GBNF and llama.cpp to teach an LLM how to write real assembly for a custom 8-bit architecture.