Writing
Notes on how I work, and on how the things I build actually work. Some of these live on the project sites they belong to.
How I work
Written for people deciding whether to work with me.
-
How I lead a technical team
People and motivation, real ownership, decisions kept in the open, and light process that supports judgement rather than replacing it. Written after being asked the question in an interview and answering it badly.
-
One number or four
Evaluating my own essay scorer. Frozen benchmarks that flatter a model, held-out prompts that expose it, a cheap replacement that would have been a mistake, and why four trait scores were switched off and later switched back on. The licence on the training data, the labels I cannot afford, and what I am ever allowed to charge for turn out to be the same problem.
-
Building MCP servers that touch real systems
Three MCP servers - a Microsoft 365 calendar assistant, a game server that agents can play, and a personal signal layer - and the unglamorous boundary code around identity, errors, state and giving an agent safe access to something real.
Behind the projects
Companion pieces to things you can go and use. They live with the projects they describe.
-
The physics of a self-gravitating galaxy
What it takes to make 130k particles pull on each other convincingly in a browser: the N-body problem, the approximations that make it tractable, and where the simulation knowingly departs from the real thing.
-
A galaxy sound sculpture
Turning the motion of a galaxy into sound that is worth listening to - mapping physical state onto synthesis without landing on either randomness or a drone.
-
How Galacto is built, in Rust and WebGPU
Compute shaders, the WASM boundary, and the performance work behind running a real-time N-body simulation at frame rate in a browser tab.
-
A field finding its own form
Three particle populations that pursue and avoid one another, and what happens when you let structure emerge from simple cyclic rules rather than composing it.
-
How a swarm becomes music
No sequencer and no audio-reactive animation layer: the image and the music are two views of one evolving state. How crowding excites voices and collective energy drives transitions.
-
Confluon engineering: Rust, WebGPU and WebAudio
A deterministic Rust/WASM simulation driving both the visuals and the sound, and what determinism buys you when the output is meant to be reproducible.