From the metal up.Out to the edge.
Computer Science, first class, University of Sheffield. I write the pipeline before I import one, run the models on my own hardware, and take the results somewhere with no signal.
01 / DO NOT IMPORT IT
Write the pipeline, then import one
I built a software rasterizer in Python with projection, triangle filling and a z-buffer, and a digit classifier with the SVM written by hand. Neither needed to exist. Both showed me what the library had been hiding.
RESTING / 784 - 64 RELU - 10 SOFTMAX
02 / DO NOT SEND IT AWAY
Nothing leaves the machine
MotionGen is my dissertation, a Unity editor plugin that serves T2M-GPT, MoMask and MDM from a local Python backend over gRPC and writes the results back as humanoid AnimationClips. Nothing leaves the machine, and a local Gemma planner splits a long prompt into segments before anything generates.
03 / DO NOT LET THEM CHOOSE
An agent never picks what it reviews
I founded Recensorium and built the platform on my own. Agents publish papers over a REST API or a remote MCP server and are handed work from other agents to review on novelty, significance, clarity and rigour. Most of the design is a list of things an agent cannot do. It never picks what it reviews, it never picks who reviews it, and money can never buy a score. It is early.
Drag sideways, scroll sideways, or use the left and right arrow keys to turn the case.
Projects / five, newest first
Turn the case.
Recensorium
Peer review for AI-generated research. An agent never picks what it reviews, and never picks who reviews it.
- TypeScript
- Fastify
- Next.js
- PostgreSQL
- Drizzle
04 / DO NOT LEAVE IT BROKEN
Shipped, handed over, still running
I ran a small web studio with my housemate, started while we were at university, covering requirements, design, deployment and the domain transfer nobody enjoys. Two weeks at an early-stage AI startup in London were enough to leave an internal API over their disjoint systems, rewritten Cloudflare Workers, a dashboard, a CLI and an MCP server.
Career / laid along one axis
The roles ran inside the degree
Four roles and a degree on one time axis, a column to the year. They do not queue up behind each other: the studio was taking real clients while the dissertation was still open, and by 2026 there were 3 things running at once.
Underneath all of itBSc Computer Science, University of Sheffield, 2023 to 2026. I graduated with a first. Every role above sits inside that span.
012023 — 2024
Missions Engineer
Project Falcon, IMechE UAS team
The flight ground control system for the team’s aircraft, written in Node and Python. Telemetry came off the airframe live, and the dashboard recorded it and drew it as it arrived.
022025
Full Stack Developer
UCD, a web studio run with my housemate
A studio my housemate and I ran together, for real clients. Discovery, design, the full-stack build, deployment and the maintenance afterwards, the whole lifecycle between the two of us.
032026Two weeks, early 2026
Software Engineer, short term
Early-stage AI startup, London
Two weeks, and an internal API laid over systems that did not talk to each other. I rewrote several Cloudflare Workers including the GitHub syncing, then delivered a dashboard, a CLI and an MCP server on top of it.
042026 — presentNo end recorded
Founder and Engineer
Recensorium Ltd
Peer review for AI-generated research. Agents publish papers over a REST API or an MCP server and are assigned other agents’ work to review, by a weighted bandit that makes it impossible for an agent to pick what it reviews. Five apps in one TypeScript monorepo on Postgres, Fly.io and Cloudflare Workers, built solo.
05 / DO NOT BOOK THE TICKET
Croatia to the Sahara, thumb out
Twenty stops from Split to Tagounite, through Croatia, Austria, Switzerland, France, Spain and Morocco, finishing with a week volunteering in a village near the desert. Sheffield to Porto and Sheffield to Slovakia came first.
THE ROAD SOUTH · SUMMER 2025
Split to Tagounite
- Distance
- 5,001 km
- Stops
- 20
- Countries
- 6
01 / 20 · Croatia
Split
- Days
- Days 1–2
- From Split
- 0 km
- Last leg
- Start of the road
- Position
- 43.514°N 16.443°E
1 / 2
Filmed on the way at @5001km.sidequest.






06 / DO NOT STOP FALLING
Falling is part of the method
I boulder in the Peak District and in London, and I train judo. Both reward the same habit as debugging. Try the move, fall off, change one thing, go again.
07 / DO NOT PAD IT
Two pages, and a version that fits on one
The full CV is two sides: the degree, the roles, the projects and the awards, with the figures the same as the ones on this page. The one page version is the same career with nothing that needed a second sheet. Take whichever you are actually going to read.
- Full CVEverything: the degree, the roles, the projects and the awards.
- One pageThe same career with nothing that needed a second sheet.
Both open in a new tab. If you would rather have a specific format, or a version cut down to one thing, ask and you will get it the same day.
Cuttings / 2022 to 2025
Five judged competitions. Two first places, and one lens used a million times.
Appointments
- Missions EngineerProject Falcon2023 to 2024Real-time analytics dashboard on scalable backend infrastructure.
- Full Stack DeveloperUCD2025Co-founded a web studio. Discovery and design through deployment.
- Software EngineerAI startup, London2026, two weeksInternal API, Cloudflare Workers, a CLI, a dashboard, an MCP server.
08 / SO
Bring me the hard part
I am looking for work in AI research, full-stack engineering, or a role technical enough to be uncomfortable. Based in Hemel Hempstead, often working out of London, and willing to travel, obviously.