Act III
The Work
Everything here I built because I wanted to know how something worked, and the fastest way I know to find out is to build one. A few of them turned out to be useful to other people, which is still the part that surprises me. Behind these sit a pile of private practice repos — the Udacity coffee app that started Android for me, Compose experiments, a Unity runner, a Go backend — which were never meant for anyone else.
- Public projects
- 10
- Stars
- 213
- Forks
- 39
- Languages
- 7
In the open
A reading and writing app for people who write short things.
- Social publishing for writers, with a custom text editor and offline-first sync
- Supabase and Deno Edge Functions behind the real-time notifications and content feeds
- Tuned to 120fps with Reanimated, MMKV for local persistence
A canvas editor, because I wanted to know how the ones I use are built.
- Multi-layer manipulation, vector drawing and real-time rendering on Konva.js
- AI image generation through Together AI, dropped straight onto the canvas
- Hono.js and Drizzle ORM behind it, with auto-save and optimistic updates
Instagram rebuilt in Jetpack Compose: feed, stories, profile and the state handling underneath them. I wrote it as my own Compose Camp submission, then used it as the worked example when teaching the camp.
The tile game rebuilt in React Native, mostly to get the feel right. Swipe gestures that respond immediately, merge logic that never double-merges a tile in one move, and animations that keep up when you flick faster than you think.
One command instead of the first boring hour of a backend: routes, config, database wiring and the folder layout I keep re-typing, scaffolded the way I would have set it up anyway.
My first thing in Unity. A 2D loop is small enough to finish, which makes it a good place to learn what an engine actually gives you: physics, collision, and a game loop you do not write yourself.
Text to speech on iOS, written in Swift because I wanted to know how the other platform felt from the inside rather than through React Native's abstractions.
Generates certificates from a template in the browser, so a batch can be produced without a designer, a backend, or opening Photoshop a hundred times.
A Kafka producer and consumer on Spring Boot, deliberately small: the version I wanted to find when I was working out how the pieces fit, instead of a framework demo with everything switched on.
The only Angular thing I have written. Real forecasts from OpenWeatherMap behind a deliberately silly interface, built to find out how Angular structures an app compared to everything else I use.
Offcuts
Small tools that fell out of the work
A Bitbucket to GitHub org migration, OCR on a Node server, a submission similarity checker, a mojibake cleaner, React Native deep linking and a Zustand store wired to MMKV. Too small to be repositories, so they live as gists.