Building things
that actually work.
React · Svelte · TypeScript · Python · MongoDB
I build web apps across the full stack — React, SvelteKit, TypeScript, Python, and MongoDB. Clean code, clear communication, and I finish what I start.
Selected work
6 projects-
Rep Yourself
Rep Yourself is a tracker for the Armstrong Pull-up Program, a structured 5-day military training protocol. After nearly 10 rounds of running to the park and trying to remember my numbers on the way home, I finally built something to do it properly. Guides you through each session, charts your progress, and keeps everything on-device. No accounts, no bloat.
-
freeCodeCamp Seoul
The freeCodeCamp Seoul community site was still on the Pages Router when App Router had already landed. I joined when the organizer put out a call for help, migrated the codebase, cleaned up the styling, and laid the groundwork for Korean translations. Reviewed 30+ pull requests as part of the team.
-
Suit Yourself
I used to take a physical deck of cards to the park for calisthenics workouts. Cards blew away, got damaged, and remembering which exercise went with which suit was a pain. Suit Yourself fixes all of that. Shuffle the deck, assign an exercise to each suit, and work through the draw — the card value is your rep count. 52 exercises to choose from, Playwright-tested because 52 cards is a lot to verify by hand.
-
Running on Xero
My personal blog about 15 years of running and moving in Xero Shoes. Minimalist footwear isn't a trend for me — it's just how I move. The blog covers the journey through photos and entries from wherever I happen to be running. Built with SvelteKit and MongoDB because I wanted full control over the content and the stack.
-
Encrypted PO Generator
Built for a real client who needed a bespoke system to generate purchase orders and track data for reports. The user fills in payee details, builds the order, selects from their saved payees, previews the PO, and downloads the PDF. Payee data is encrypted before it ever touches the database. This is the sanitized version — client details removed.
-
Work Smarter Randomizer
Between classes, I was handed a book of vocabulary words to randomize for student tests and a very manual process to do it. I still had to type the words in, but the app handled the randomizing so I could stop thinking about it. Paste the words in order, shuffle them, and see how far each one landed from where it started. Copy them one by one or grab the whole list. The "Work Smarter" name was meant to be a suite. This is the first tool.
About me
I'm a web app developer who spent nearly 20 years teaching in Busan and Seoul. That career built habits that transfer directly to software: explaining things clearly, keeping the end user in focus, and never stopping learning. The moment I realized I could make a webpage do something useful, I was hooked. I've been building ever since.
I work across the stack: React, Next.js, Svelte, JavaScript, TypeScript, Python, and MongoDB. I've built and shipped production apps used by real people, contributed to a React codebase overhaul at a startup, and built tools I rely on myself every day. I finish what I start, iterate based on feedback, and take pride in work that actually holds up.
I'm a constant learner who picks up new things fast and takes direction well. I enjoy being part of a team that holds the bar high, and I bring that same standard to everything I ship.
Skills & tools
- React / Next.js Frontend
- Svelte / SvelteKit Frontend
- TypeScript Language
- Python Language
- Django Backend
- MongoDB Database
- Linux / Bash Tooling
- Vim / Tmux Tooling
Visitors from around the world
18,543 total visitsCountries that have visited




- ?













- ?















































































Let's connect
Open to opportunities
Available for freelance projects, full-time roles, and interesting collaborations. I'm especially interested in building tools that save real time.





