About
I'm a full-stack engineer. I love UX and the web, and I love backend systems just as much: distributed information systems and data management. Performance is always the first step to great UX and DX.
At Elastic#
I lead the Documentation Engineering team. We moved the docs from a single monolithic build to a real distributed build system, and we make sure Elastic's context is ready for agents to consume, agentically and over MCP and APIs. We also built Elastic's public search and chat interface.
Before that I was the clients tech lead, then the APM tech lead. I love open source initiatives: I led Elastic's move away from proprietary agents and wire formats to OpenTelemetry. I'm also on the EditorConfig board.
Languages#
I'm not tied to one ecosystem, though I obviously love .NET. I also enjoy Swift, Rust, Go, TypeScript and frontend development.
With AI, languages matter less, but I find static languages that can express problems succinctly and compile fast to cross-platform native code a real power boost. Anything that gives AI more guardrails gains productivity.
What I make#
I build tooling I need and want, which tends to be developer tooling. An increased focus of mine is on AI guardrails and orchestration.
For the Mac
Apps and a library for Apple silicon: running coding agents, recording demos, and the desktop itself.
-
heed
A native macOS app that feels like a TUI, with vim keys, for running coding agents and getting their PRs green and merged.
-
reel
Record macOS app and web demos from a script: real cursor, real keys, the app's own sound, captions and zooms, out as MP4 or GIF.
-
hunch
A Swift library for local typed decisions on Apple silicon: choice, score and yes/no questions about text in one encoder pass, no server or Python.
-
undertone
Hide the notch and screen borders under generated Mac wallpapers that follow your light or dark theme and change on a schedule.
-
yabar
Spaces, stacks and tabs for the yabai tiling window manager, in the macOS menu bar.
.NET tools
For building .NET command lines, docs and sites, and keeping their code tidy.
-
curb
A C# formatter that reflows to a line width like Prettier while honouring all of your .editorconfig.
-
argh
A source generator for .NET command lines: methods become commands, XML docs become help, records become options.
-
mermaider
Mermaid diagrams to SVG in pure .NET: parser, layout engine and renderer. No browser, no DOM, no JavaScript, AOT-ready.
-
pagefind-net
Pagefind static search indexes written from pure .NET: no native binaries, no subprocess, no npm install.
.NET libraries
For modelling domains whose rules are proven, and for handling paths you don't fully trust.
-
entities
Constraint-checked domain entities for .NET: name a rule once, check it on values, test it on generated data, watch it on event streams.
-
scoped-filesystem
An IFileSystem for .NET that only reads and writes inside the folders you allow: no .. traversal, no symlinks, no hidden files.







