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

    galacto.org

    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

    galacto.org

    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

    galacto.org

    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

    confluon.com

    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

    confluon.com

    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

    confluon.com

    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.