Work
Professional work. Each one: the problem, what I built, and what changed.
Inkla — bilingual notes with an MCP server for agents
- Problem
- Note apps treat right-to-left text as an afterthought and AI access as an export, so an agent editing a note clobbers what the person is typing.
- Solution
- One Cloudflare Worker, a Durable Object per account holding a Yjs CRDT, and D1 as a rebuildable read model. Browser, desktop, Android and MCP clients all write through the same document.
- Result
- Agent edits merge with live typing, account deletion provably erases 13 tables plus history, and 645 unit tests and 29 end-to-end audits gate every deploy.
Chogan — offline games, reproducible Android builds
- Problem
- Ship the same app through GitHub Releases and F-Droid, which normally re-signs apps with its own key, without the two channels drifting apart.
- Solution
- Byte-for-byte reproducible builds with a Gradle-only chain (no Node), one version constant driving every target, and CI that inspects the built APK rather than its configuration.
- Result
- F-Droid ships the identical signed APK, the app declares one permission (vibration), and 318 automated checks run with no server, database or paid service.
Nabz — uptime monitoring that only pages when zones agree
- Problem
- A monitor checking from one place can't tell a real outage from a bad network path, so it either pages on noise or gets tuned until it stays silent.
- Solution
- Go workers in each zone with their own Valkey queue, and a central evaluator that only opens an incident when N of M zones agree. The whole fleet is provisioned from nothing by GitHub Actions.
- Result
- A production fleet of 3 servers for about €19 a month, benchmarked at roughly 4,500 checks per second, with 6 alert channels and a dead-man's switch for silent zones.