I build software, think about systems, and work mostly in the open.
These days I'm working on a few things:
- bloud: An open-source home server. Self-hosting is kind of unreasonably hard. Not the installing part. The part after: proxy rules, OAuth clients, database credentials, API keys pasted from one web UI into another. Bloud moves that job into a reconciliation loop inspired by Kubernetes. Each app declares what it provides and consumes, and the engine resolves the graph. Written in Go, running on rootless Podman. One login across every app.
- p2piano: A free peer-to-peer platform for playing piano with others in real time. The hard part is synchronizing audio across browsers with low enough latency that it actually feels like playing together. There's a custom sync engine over WebRTC for that. No signup or ads.
- ensemble: A type-safe actor model framework for the browser. You organize logic into independent actors that communicate via message passing. Because the communication is already message-based, moving actors across web workers is a config change, not a rewrite. Has React and SolidJS bindings, and a collaboration package built on Automerge CRDTs.
- open sandbot: An open-source alternative to the Sisyphus table. This project spans firmware (Rust), software, electronic circuit design, 3d modeling, and 3d printing with the goal of making a kinetic art table anyone can build for under $100.