My Apps

3 apps I ship and maintain myself. Each one started as something I wanted to exist.

Education

Inkline — English Dictation

2026

Live on App Store

SwiftSwiftUISwiftData

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.

  • Graded word by word — misspelled, missing and extra words each get their own colour
  • Import your own audio: SRT/VTT, a plain transcript, or nothing at all
  • 54 free public-domain lessons, 3,500+ sentences, A2 to C1 — no account, no ads
Productivity

Pomodoro — Focused, Ticking Away

2025

Live on App Store

SwiftSwiftUI

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.

  • Work, short break, long break — the technique with nothing bolted on
  • An optional tick keeps the session present without you watching it
  • No accounts, no dashboards, nothing to configure before you start
Pomodoro — Focused, Ticking Away — screen 1
Pomodoro — Focused, Ticking Away — screen 2
Pomodoro — Focused, Ticking Away — screen 3
1 / 3
Web App

Gia Phả — Family Tree

2026

Live on the web

Next.jsReactTypeScriptd3Tailwind

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.

  • Members live in Markdown files — load a .zip and it parses in the browser
  • Interactive d3 tree that works out generations dynamically
  • Vietnamese kinship-term resolver plus family-wide statistics
Gia Phả — Family Tree — screen 1
Gia Phả — Family Tree — screen 2
Gia Phả — Family Tree — screen 3
Gia Phả — Family Tree — screen 4
1 / 4

Freelance & Consulting

Available for new projects

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.

Japan & Korea

Long-running engagements with product teams in Tokyo and Seoul. Remote-first, async-heavy, and held to the review standards those markets expect.

Startups

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.

Team leadership

Led teams of 2–3 engineers, mentored juniors, and ran delivery in Agile/Scrum with cross-functional partners.

What I take on

  • Native iOS builds in Swift & Objective-C
  • Real-time video/voice features (Agora, WebRTC)
  • Rescuing and re-architecting legacy codebases
  • Performance, crash-rate and App Store review work
  • Cross-platform delivery with React Native
Start a conversation

Tech & Tools

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.

Languages

SwiftObjective-CJavaC#TypeScriptSQL

iOS / Apple Frameworks

UIKitSwiftUICombineCore DataCallKitAVFoundationStoreKitAuto Layout

Real-Time & Media

Agora SDKWebRTCWebSocket

Architecture & Libraries

MVVMRxSwiftSnapKitAlamofireKingfisherRealmGraphQL / ApolloFirebase

Cross-Platform

React NativeXamarinNext.js

Tools & Workflow

XcodeCocoaPodsSPMCarthageGit / GitLabJiraDockerAgile / Scrum