Tech Camp Instructor
- Taught week-long courses to students aged 9 to 17 for three months each summer.
- Courses covered Python, Java, Minecraft modding, Unity game development, animation, robotics, and 3D printing and modeling.
Peer-to-peer multiplayer voxel shooter in the browser. The host's browser runs the match, so there is no game server to pay for or keep up.
Browser tycoon game rebuilt from a hackathon prototype in TypeScript with a deterministic, unit-tested economy (customers, weather, loans, credit score), a canvas street scene, and a phone-first layout.
Top-down pixel-art pirate roguelite in DragonRuby, played in the browser. A company of crewmates rather than a hero, real-time ship-to-ship fights and turn-based boarding, islands, ports and trade, food, wounds and morale, and old stories across six regions. In development.
Support-ticket bot for Discord communities, with per-server configuration, private ticket channels, admin roles, blacklist, and logged transcripts.
Discord bot that runs a complete Mafia party game with eight roles, timed night actions, day voting, win detection, per-server rules, and player stats.
Browser roguelike ported from an unfinished 2020 C++ console game into TypeScript, with a pure, seeded, unit-tested simulation (world generation, danger bands, fights, towns, items, levels), a replayable action log, two versions of the world behind a menu, a scripted playtest that tuned the second against two scripted players, and a terminal-styled UI that plays with keys or taps.
Discord bot that copies or exports channel history with search-style filters (author, dates, has:image and the rest), as re-posts, webhook copies, or zipped transcripts with attachments, with progress, cancel, presets, and per-server ceilings.
Self-hosted Flask image organizer for any folder of pictures, fully local and private. Auto-updating folders mirror the disk into the sidebar; rates and tags thousands of images from the keyboard with everything kept in SQLite rather than in the files; searches with a small query language (fields, numeric ranges, wildcards, a whole-library mode); finds duplicates by perceptual hash; soft trash with restore, copy, move and zip; multiple libraries with JSON export; an editor that crops, annotates and saves copies with control over which metadata they keep; tag suggestions from a vision model through Ollama, an OpenAI-compatible endpoint or the Anthropic API. For generator output (ComfyUI, A1111, Forge) it also reads prompts and generation settings out of the files and makes them searchable. One dependency-free HTML page on the front.
Single-file client and payment tracker that autosaves to a local JSON file through the File System Access API, with several ledgers per file and an insights screen of hand-drawn SVG charts, drill-down, and CSV export.
Tkinter front end for the Bulk Downloader for Reddit with a persistent user list, presets, a live log, a command preview, and a clean stop. Standard library only.
Built an aggregated cryptocurrency portfolio viewer on the Zabo API, which Coinbase later acquired.
One of five hackathons entered since 2019.