About
I started in a post room in 1995 and taught myself everything since. Today I design and ship production AI systems on my own — architecture, data model, security, deployment.
The long way round
My first job was sorting post and fixing franking machines. Then a computer room, running overnight backups across UNIX, OS/2 and mainframe systems and making sure the restores actually worked. Then a helpdesk. Then second-line support, then third, on clinical software used by NHS walk-in centres, NHS Direct and NHS 24, plus sites in Australia, Spain, Portugal and Norway — three thousand clients, and a clustered SQL Server behind all of it.
In 2012 I moved into Capita's development team and took over software packaging and build automation. That is where I started writing production code: PowerShell and JavaScript to automate builds, deployments and systems tasks, and eventually ownership of the whole Azure DevOps environment and the CI/CD pipelines every product team depended on.
There is no computer science degree in any of this. There never was. What there is instead is twenty-eight years of being the person who had to make it work, and a habit of learning whatever the next problem required.
Going independent
In 2020 I started publishing commercial JavaScript plugins for the Bubble platform. Forty-seven of them now — media players and recorders, 2D and 3D mapping, service workers, rich text, real-time video, QR scanning, encryption. The most-installed has over 1,100 ratings and several more sit above 150. They still earn every month, and client work followed from them rather than the other way round.
What started as a grab-bag became a product line. The later plugins — an AI agent runtime, RAG, agentic tooling, realtime speech-to-speech over WebRTC, LiveKit, live avatars, speech animation — are the same problem space I now work in full time. The plugin catalogue is where I learned it, in public, with paying users filing the bug reports.
Since then I have built and shipped four production systems on my own: a conversational-avatar platform with a multi-provider AI runtime, an AI-driven competitor-intelligence SaaS, an e-commerce store, and a real-time multiplayer 3D game. All four are live. I left Capita in July 2026 to do this full time.
What I actually do now
I build with AI coding agents as the primary tool, which is a genuine shift in what one engineer can ship — but the leverage only works if someone is making real decisions. I do the architecture, the data model, the Row-Level Security design and the security review. The agent writes against those decisions, and I verify every change against live data before it ships.
The failure mode of AI-assisted work is confident nonsense, so most of my design effort goes into making that impossible rather than into prompting. In Rival Radar, competitors and pages are discovered from real search results and real harvested links, never from what the model happens to remember. Same defence, twice, because it is the thing most likely to go wrong.
How I work
- Measure, don't assume
- Optimising Shard Islands, I expected triangle count to matter. It did not — 180,000 triangles of terrain draw in a single call for free. Three quarters of the frame was 260 cloud quads, each with its own geometry and material. Profiling changed what got fixed, and the frame went from 4.3ms to 0.70ms.
- Test what can't be checked by hand
- Two people with two browsers can tell you a hit happened. They cannot tell you whether it happened for the right reason, or whether the near-misses were correctly misses. So the multiplayer tests are headless clients flying scripted geometry and asserting on the outcome.
- Security is a design decision, not a review step
- Row-Level Security gets designed with the schema, not bolted on after. I found and fixed a live RLS bypass in a Postgres view during Chart Chic's build — the kind of thing that only surfaces if you go looking before you ship, rather than after.
- Know what things cost
- ScraperAPI's structured search endpoint costs 25 credits per call against 1 for a plain page fetch. I only found that by reading a response header. Rival Radar's quota accounting sums a credits column rather than counting rows, because the difference between those two is a 25x billing surprise.
What I'm looking for
Building AI-powered sites and products for clients and customers. That is the work I would choose over anything else, and it is what I have been doing alone for the last few years — the whole thing, from the idea through the architecture and the data model to the thing being live.
Creative technologist is how I would describe the way I work: the person who has the idea in the morning, decides how it should work, and has it running by the evening, rather than being handed a specification by one side and passing it to the other. AI engineer is what it says on the job boards.
I'm in Hampshire and open to remote. If you're weighing someone with a degree against someone with twenty-eight years of shipping, look at the four things running in production and make your own mind up.
Off the clock
There is more to me than a stack list — cars, guitars, and whatever I am currently taking apart.