Building tools, and writing about them honestly
I build things and write about them — partly so the work is understandable to someone who wasn't there, partly to become a better writer. Current projects: waitbus, a workstation-local event bus for AI coding agents; and driftbound, machine-checked floating-point error bounds for the streaming sliding-window inner product deployed as the matrix profile.
Projects
waitbus A workstation-local event bus: your AI coding agents wait on events instead of polling — and hear each other fail. 4 articles stillpoint When agents delegate work down a chain, nothing can tell when the whole cascade is actually done — stillpoint detects that quiet point, soundly. 2 articles driftbound Forward-error bounds for the matrix profile's streaming inner product — machine-checked in Lean and Coq, validated to a real earthquake record. 6 articles
- 01 Your AI coding agents can't hear each other — not even across vendors Your Claude Code, your Cursor, your tests, your CI — all on one box, none able to hear the others finish or fail. Here's the problem, and the proof: five real LLM agents on one bus, one fails, all wake.
- 02 How waitbus works: from event source to a waiting agent, over MCP The architecture end to end — how an event gets from a source to a waiting agent in single-digit milliseconds, how an agent actually talks to the bus over MCP, and the decisions behind the build with what each one cost.
- 03 The numbers and the trust trail: benchmarking waitbus honestly Two kinds of trust in one place — the benchmark methodology that makes the speed numbers survive a skeptic (Coordinated Omission, a bimodal p99, costs published as losses), and the supply-chain trail that lets you trust the artifact you install (SLSA provenance, sigstore, reproducible builds, and an honest list of the gaps).
- 04 The first file an agent reads Coding agents read your library before they use it, and they start with the code — `__init__.py`, the type hints, the tool schemas — not your docs site. Here is how I made waitbus speak to that reader, and the one piece of documentation I deliberately did not ship.
driftbound
Read the whole series as one page- 01 Thirty-one papers, zero error analyses A sliding-window inner product updated one product at a time is the streaming similarity engine under motif and anomaly mining — its rounding error grows linearly in stream length, and across thirty-one matrix-profile papers nobody had ever done the forward-error math, or turned the fix into a config knob.
- 02 The accumulator that never moved An adversarial input where round-to-nearest throws away every increment in the same direction while the true sum climbs — and the coin flip that breaks the adversary's one weapon, measured across 20,000 seeds.
- 03 The error analysis everyone cites is for a kernel nobody runs SCAMP and STUMPY accumulate a mean-centred covariance, not the textbook inner product — and the centred case is structurally different floating-point mathematics, not a special case at mu = 0.
- 04 Green is not evidence An experiment can validate the wrong quantity against the wrong envelope and pass, a self-test canary can fail identically whether the gate works or not, and an audit command can print nothing and exit 0 — three gate designs that read green while checking nothing.
- 05 Three axioms and one disclosed seam Four verification tools, one certificate: every machine-checked theorem mechanically reduced to three classical axioms with zero unfinished proofs — and the one place two provers cannot talk to each other, named right in the theorem statements.
- 06 One earthquake pinned my error bound forever A seismic stream, a global magnitude bound wrecked by a single mainshock, a windowed bound that heals — and a scoreboard where the headline empirical legs of two papers report zero violations.
stillpoint
Read the whole series as one page- 01 When is the swarm actually done? Three services across a network, one dropped task, and a question nobody on the wire can answer: did the work actually get done? A copy-paste demo that exits 0 and prints SUCCESS while the real job dies unseen.
- 02 Task was destroyed but it is pending A teardown deadlock I diagnosed in Google's A2A reference SDK — Issue #1101, PR #1105 (313 lines, tests, CI green, open for review) — turned out to be one symptom of a primitive the whole agent ecosystem is missing: a sound signal that an async mesh has actually settled.