Each of these started from the same place: I needed something, I couldn't find it, so I built it. The pattern repeats across languages, frameworks, and problem domains.
Some are technically ambitious. Some are embarrassingly simple. All of them taught me something I couldn't have learned any other way.
Same logic, scaled for the browser. Every build below has an interactive demo you can run right now — no install, no setup.
Wanted to understand WebSocket architecture from first principles — so I built something where latency visibly matters. Competitive typing test with real-time leaderboards, custom text sets, and WPM analytics. Every keystroke triggers a server round-trip; the challenge was designing state sync that felt instant at 200ms.
The naive approach (broadcast all state on every keypress) saturates the connection immediately. The actual implementation batches delta updates at 30fps and only syncs leaderboard positions every 250ms, which lets the server handle 10+ concurrent users before noticeable lag. Launched 2024.
Started 2023 as a private Minecraft server. Ended up learning server administration (JVM tuning, world management, backup automation), plugin configuration (Paper API, custom event listeners), concurrent-player performance tuning (entity tick rates, chunk loading strategies), and how to produce video content that actually brings people in.
The hardest part wasn't the technical setup — it was figuring out why a technically correct server stays empty. Made original video ads, posted to Modrinth, iterated the content based on what got views. The lesson: a technical product without distribution stays empty. Still running.
Airline Miles Redemption Calculator
GitHubSpent too long manually comparing airline mileage redemption values across different carriers and routes, so I built a static web calculator that does it automatically. The calculator takes your origin, destination, and miles balance and computes redemption value across multiple airline programs — cents-per-mile comparisons for each combination.
Completely client-side (no server, no API calls), which means it loads instantly and works offline. Built 2024. Others started using it and gave feedback — two users specifically asked for premium vs economy cabin comparisons, which I added. Small tool, real users, iterated from feedback.
Built to understand Socket.io and event-driven state sync under concurrent writes — specifically the hard part, where two users draw on the same canvas simultaneously and neither sees a flash or jump. The implementation uses operational transformation (OT) to reconcile concurrent stroke operations: each stroke is assigned a monotonic sequence number, and conflicts are resolved deterministically server-side.
Tools: pen, brush, marker, shapes, fill — with live cursor tracking, room-based sessions via shareable links, and full undo/redo stack. The hardest bug: undo across users — when you undo a stroke that another user has drawn on top of, what happens? Solved by treating undo as a new operation in the sequence rather than a rollback.
GitHub workflow utilities in TypeScript — built because I kept repeating the same manual steps when managing repositories (checking branch status, formatting commit messages, generating changelogs from conventional commits). The first version was a shell script. The second version was a web interface because copy-pasting from a terminal was tedious.
Iterated from real use: every feature on the current version was added because I needed it, not because it seemed useful in the abstract. A tool is only finished when you stop having to think about it. Strict TypeScript throughout — built partly as a practice ground for the type system.
Python CLI for personal task automation — built to close the gap between "knowing Python" and "actually using Python for daily work." The distinction matters: doing exercises and shipping something you rely on are completely different. DailyCLI automates: morning task list generation from a plaintext config, quick timer/pomodoro management, and clipboard-to-formatted-markdown pipeline for note-taking.
The code is clean but not over-engineered — the point was to build something useful, not to demonstrate every Python feature. Built 2024. The kind of project that teaches you a language faster than any tutorial, because bugs have real consequences.
Started as a CSS exercise — wanted to push visual layering further than typical tutorials go. Velora became a testbed for advanced animation timing functions (cubic-bezier chaining, staggered keyframes), CSS custom property cascades (parent-to-child variable inheritance for theme switching), and DOM-driven interaction patterns (event delegation, intersection observer for scroll-triggered reveals).
The codebase is messier than I'd like — the kind of mess that happens when you're exploring rather than building to spec. But the effects are cleaner than I expected: the intersection-observer reveal system in particular is something I've since adapted for other projects, including this portfolio. Shipped 2024.
All disciplines, all work, one page.
LLM-powered EV route optimization. The big project.
OPR, Monte Carlo, synergy scoring — and an interactive simulator you can run right now.