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 OS. Self-hosting is kind of unreasonably hard. Every new app means configuring reverse proxies, SSL, wiring up SSO, provisioning databases. Bloud builds a dependency graph of your desired system state and self-heals to it. You add an app, and the proxy, SSL, SSO, and databases just get set up. Built with NixOS, Podman, and Go.
- 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.