Apps I’ve built
The live demos run on sample data. Click around: your changes stay in your browser until you press Reset.
Trading Dashboard
A trading cockpit: open options positions, what to do about each one, and how last month went.
Collateral
A clickable collateral-management desk: exposure, postings and allocations across every agreement type.
Boring Pays
A screener and trade journal for selling puts, sold as a subscription at boringpays.com.
Timber Camp
A survival settlement game: chop, build and unlock your way from a dying fire to a camp that runs itself.
Asylum
Gather, brew and heal: a roaming plague-doctor game in 3D, played in the browser.
Boring Desk
An Outlook sidekick: who's out this week, where the meeting time goes, and which emails are still waiting.
Central Bank
What the world's central banks are doing with their reserves and gold, on one page.
Draw
A hand-drawn sketch pad that tidies your strokes, with handwritten text and a shelf of drawings.
Pickle
Court rotation and live rally scoring for a pickleball group, shared across everyone's phones.
To Do
Chores that come back on a schedule, a month calendar and a streak, synced between phone and laptop.
Lava Escape
A match-and-pop puzzle race: clear tiles to climb before the lava catches up.
Maze
A fresh maze every level, with a new hazard each time. Arrow keys, WASD or swipe.
Solitaire
Word solitaire: the suits are topics and the cards are the words that belong to them, with picture sets mixed in.
联想接龙
The Chinese edition of Solitaire: the suits are topics (树, 麻将, 春节), the cards are the words that belong to them.
Sandbox
A sand-block puzzle: slide blocks up to sand of their colour, watch it pour in grain by grain, and clear the board.
Fortune
A Chinese birth-chart (BaZi) calculator that explains every character in plain English.
Expenses
Monthly spending analytics built from bank statements, with categories you can correct on the page.
Baker
A baker's-percentage calculator: scale any recipe from the flour weight.
Random
One button, one fair random number between 1 and 100.


















