I learn by building. My interests move across programming languages, developer tools, human–agent systems, and experiments that turn an idea into something I can test. I write about what I learn by building, measuring, and using things in practice.
Gleam. I learned Gleam by porting The Little Learner, a book that builds deep learning from first principles, into it. Along the way I wrote a parser-combinator JSON parser and gtransducer, a library on Hex that fuses mapping, filtering and reducing into one pass over the data, and can reduce in parallel.
Emacs. Emacs is where I work all day, so many of my tools live there. emacs-egui lets Emacs host GPU-drawn Rust/egui apps compiled to WebAssembly; emacs-workspace-hud is one of them, a floating card with Git, LSP and diagnostic state. consult-snapfile finds files instantly through a Rust backend, cli2eli turns any command-line tool into Emacs commands, and emacs-anywhere lets me edit text from any macOS app in Emacs.
Bend. Bend 2 lets you state a law about a function and prove it for every input. I learned it by writing Bend 2, from zero, a book built from runnable experiments: affine values, parallel CPU and GPU execution, Conway’s Life, laws and proofs, with a measurement behind every performance claim. Then I put the proofs to work. bend-emit compiles a pure Bend core into a typed ES module, so TypeScript imports the very functions the proofs are about. bend-schema is built on it: a JSON schema library whose checker is proved correct, not only tested.
Elle. For Elle, a Lisp written in Rust, I built tree-sitter-elle, a grammar that makes structural search and rewriting with ast-grep possible.
- Tools for working with agents — memhub shares long-term memory across machines and coding agents; ClaudePad and agent-shell-hud explore ways to direct and observe agents without losing your own train of thought.
- Systems in the real world — I document the details that usually disappear, from making Linux work on a T1 MacBook Pro to building a multi-channel writing and publishing system.
- Elle — my merged contributions span compiler correctness, region-inference performance, standard-library caching, stack safety, cross-thread ownership, and macOS support.
- Bend — the issues I filed found bugs in the compiler and its diagnostics, the law and proof system, package resolution, and the macOS runtime; several are fixed upstream.
- lsp-bridge — a fast LSP client for Emacs. I built its Dev Container integration and contributed language-server support and concurrency fixes.




