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.
-
MCP Servers
Four MCP systems - a Microsoft 365 calendar assistant, a game server, a personal signal layer and a live campaign authority - plus Stateless MCP and the boundary code around identity, errors, state and safe access to real systems.
-
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.
Behind the projects
Companion pieces to things you can go and use. Most live with the projects they describe.
-
Pressure Field: building a techno set and a film that moves with it
A 28-minute techno set on an Elektron Digitakt II and a fluid-and-wave film that follows it, made with Codex. Choosing sounds from a large library, making patterns playable live, simulating the picture and reopening the mix. Codex wrote the tools and ran the measurements; I listened and decided.
-
The physics of a self-gravitating galaxy
What it takes to make tens of thousands of stars 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.
-
Turning a galaxy into sound
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.
-
How the Confluon field works
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 per-particle beeps and no audio-reactive animation layer: the image and the music are two readings of one evolving state. How formations get their own placed voices, and how collective change sets the harmony, texture and events.
-
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.