Writer and developer, founder of Face Dragons. I build games, apps and tools for things I actually do: learning Tibetan, training, playing games with friends, and keeping a large media library in order.
Godot · Blender + Python · Three.js · Kotlin + Jetpack Compose · Swift · C++ · Node · Python · SQLite · LLM tooling
![]() kuan: an Android workout tracker in Kotlin and Jetpack Compose, with a progression engine, runs and a martial-arts hall. |
![]() tibetan-study: a self-hosted Tibetan study app with spaced repetition, plus a pipeline that repairs garbled Tibetan text in PDF textbooks from the fonts' own tables. |
![]() needle: a macOS menu-bar remote for an MPD music server. The record slides out and turns at 33⅓ rpm while the tonearm tracks the song; playlists, instant search, media keys and a CLI. |
![]() thought-capture: voice capture, transcribed locally by whisper.cpp in the browser, plus an Android home-screen widget. |
![]() bookmarks-launcher: a keyboard-first macOS launcher in Swift over a SQLite bookmarks database, with a browser extension that saves tabs into it. |
![]() tibet-godot: a walkable Tibetan border town in 1903, built in Godot with painterly shaders, ink lines and townspeople who keep their own schedules. |
![]() tibet-blender: Tibetan architecture generated entirely from Python in Blender. Walk around it in your browser. |
![]() mk64-online: Mario Kart 64 online for two players, with lockstep netplay and room codes, on the SpaghettiKart PC port. |
![]() mahjong: four-player Chinese mahjong against three AI players at a walkable 3D table. Play it in your browser. |
![]() dino-island-duo: a LAN multiplayer dinosaur game with phone-first touch controls, on Node, WebSockets and Three.js. |
![]() moon-gate-wallpaper: a macOS wallpaper painted in code, with one line carved into a moon gate and the light changing through the day. |
![]() jev-lab: a feed sieve that has an LLM decision model judge a week of posts from 500+ feeds against a reader's interests, and an eval of the same model on bookmark categorisation. |
![]() media-index: a read-only, metadata-only indexer that put 2.16 million files (30 TB) into SQLite in about 13 minutes. |
| vmangos-toolkit: tools for a private vanilla WoW server. An auction-house economy modelled on real item scarcity from the loot tables, a generated level-40 quest chain, persistent party-bot companions, and all 727 GM commands read from source. | garmin-sync: your Garmin data off their servers. A rate-limit-safe daily pull of activities, sleep, HRV and stress into local files. |
- pwm: a dmenu-driven password manager in Bash on SQLCipher
- mac-backups: rsync hard-link snapshot backups for macOS with a staleness watchdog
- thoughts: an LLM pass over a captured-thoughts inbox that classifies and files each one
- proj: a project-planning CLI over a folder of markdown files
- gtd: Getting Things Done from a single dmenu prompt
- fitness-dashboard: Markdown workout logs into SQLite and a static dashboard
- nnn-addons: clipboard and search plugins for the nnn file manager on macOS
- mpdscripts: dmenu and cover-art browsing for an MPD library
- ahbot-config: the original 2025 vMaNGOS auction-house seeder
- My suckless desktop: dwm, dmenu, st and dwmblocks












