3 apps I ship and maintain myself. Each one started as something I wanted to exist.
Live on App Store
Dictation is the strictest listening practice there is: you cannot catch the gist and move on, because every word has to be heard and written. Inkline does that one thing. Lessons arrive already split into sentences, playback stops at the end of each one, and every answer is compared against the transcript word by word. It ships with 54 public-domain lessons and imports your own audio — with subtitles, with a transcript, or with nothing at all.
Live on App Store
Most focus timers bury the technique under features. This one keeps it plain: pick a length, start, and let the tick hold you to it. Work, short break, long break, repeat — no accounts, no dashboards, nothing to configure before you can begin.



Live on the web
A genealogy viewer for Vietnamese families. Each member is a Markdown file; you load a .zip and everything is parsed in the browser — no backend, no account, nothing leaves your device. It draws the tree with d3, works out generations dynamically, resolves the notoriously intricate Vietnamese kinship terms, and reports statistics across the family.




Alongside my own apps, most of my decade has been building iOS for other people's products — largely for the Japanese and Korean markets, plus startups that needed an app shipped before the runway ran out.
Long-running engagements with product teams in Tokyo and Seoul. Remote-first, async-heavy, and held to the review standards those markets expect.
First version to App Store, usually as the only iOS engineer. Scoping, architecture, release pipeline, and the pragmatic trade-offs that get a v1 out.
Led teams of 2–3 engineers, mentored juniors, and ran delivery in Agile/Scrum with cross-functional partners.
Swift and Xcode are where I live — that is where the vast majority of my decade has gone. Objective-C still shows up in the codebases I inherit, React Native when a client wants one team instead of two, and the web stack when a side project calls for it.