Projects
Things I've built
Each one started as a problem in my own week. Here's what they do, why they exist and what's under the hood.
ㄅ
Zhuyin Trainer
What it does
Teaches the zhuyin (bopomofo) alphabet with spaced-repetition flashcards, drills for the sounds that pinyin readers tend to mix up, and a tone reader that says each syllable out loud.
Why I built it
I learned pinyin first, so the zhuyin symbols kept tripping me up in exactly the places where the two systems differ. I wanted practice aimed at those traps instead of a generic deck.
How it works
A single HTML file with no server. It keeps your progress in the browser and can be added to your phone's home screen like an app.
D
Dinner Plan
What it does
A weekly meal board for the household. Drag a meal onto a day and its ingredients land on the grocery list, added up and grouped by store and aisle so the shop goes in order.
Why I built it
Planning dinners and writing the shopping list were two separate chores that kept drifting apart. Now the list is built straight from the plan, so it's always right.
How it works
React and TypeScript, built with Vite, with drag and drop for the board. Supabase holds the shared data and handles sign-in so everyone in the house sees the same week. Hosted on Cloudflare.
C
Course Studio
What it does
Turns a YouTube playlist into a self-paced course. Every video becomes a lesson with a warm-up from earlier lessons, objectives, key terms, key ideas linked to timestamps, questions to check your understanding, practice and a reflection.
Why I built it
Great lectures on YouTube are easy to watch and easy to forget. I wanted the structure of a real course around them, built on how adults actually learn.
How it works
A small Python studio app pulls each video's transcript and helps write the chapters with Claude. The finished course is published to Cloudflare Pages, with a lesson chat powered by Cloudflare Workers AI.
L
Loaf Math
What it does
A sourdough calculator. Set how many loaves you want and every weight scales. Pin the one moment you know, like when you need bread out of the oven, and the three-day schedule arranges itself around it.
Why I built it
Sourdough is mostly arithmetic and timing, and I kept doing both on scraps of paper. This does the maths and tells me when to feed the starter.
How it works
One HTML page with no server. Weights scale from a four-loaf base recipe and it shows baker's percentages alongside the grams.
來
Laixue
What it does
An interactive study library for the 來學華語 (Let's Learn Mandarin) textbooks. Each lesson has its vocabulary with zhuyin and pinyin, the dialogue, grammar drills, fill-in-the-blank practice and spaced-repetition review.
Why I built it
I'm learning from these textbooks and wanted to study each lesson on my phone, with flashcards that know which words I keep missing.
How it works
Plain JavaScript with no framework. Each lesson is transcribed into a JSON file and a build step adds zhuyin and example sentences. Progress lives in the browser, and a sync code keeps devices in step through a small Cloudflare Worker.
K
Site to Kindle
What it does
Send any article to my Kindle. It strips the page down to the words and pictures, turns it into a clean ebook and emails it to the device. I can paste a link, click a bookmarklet or share straight from Safari on my phone.
Why I built it
Long reads are much nicer on e-ink than on a screen, but most sites are cluttered with ads and pop-ups. I wanted the send-to-Kindle feature that read-later apps like Readwise Reader have, in a small tool of my own.
How it works
A TypeScript Cloudflare Worker. Mozilla's Readability pulls out the article, the Worker downloads its images and packages everything as an EPUB, and Resend emails it to my Kindle address. A password keeps it to just me.