~/projects — 39 entries

All projects

Every project starts in my notebook, and solves a problem that matters to me.

SOFTWARE

ClipVault

A self-hosted system that uploads OBS replay-buffer clips from a desktop client to a home server, which processes the video and generates a shareable link that embeds as a playable video in Discord.

Next.js · React · Tauri2026
GAMES

MemoryBeat

A real-time multiplayer web game where players race to type the title of a 30-second song clip, with speed-based scoring, a global daily challenge, and custom rooms.

React · Node.js · SQLite2026
The PiDeck page editor: an action palette beside a live deck of vitals meters, media controls and page buttons.
SOFTWARE

PiDeck

A self-hosted system that turns an Android phone into a programmable control deck for a Windows PC, driven by a UI schema the PC pushes over WebSocket and a hot-reloadable Python plugin system.

Python · FastAPI · React2026
Three Interlapse screens: the timelapse list with a locked preview, the viewfinder with ghost overlay and alignment hint, and the new-timelapse form.
SOFTWARE

Interlapse

An Android app for shooting a one-photo-per-day timelapse that withholds preview access between shoots and auto-aligns frames with on-device image registration.

Kotlin · Jetpack Compose · CameraX2026
Diagram of text messages flowing through a TTS engine into an always-connected voice channel, above a voice-time leaderboard.
SOFTWARE

ttsbot

A Discord bot that stays connected in a voice channel, reads a text channel aloud with text-to-speech, and tracks how long members spend in voice calls.

Python · discord.py · SQLite2026
SOFTWARE

MVHS Nexus

A collaborative web platform for high school students providing class schedules, per-class workspaces, direct messaging, and read-only sync with the school's Canvas LMS.

Next.js · TypeScript · FastAPI2026
Architecture diagram: Velocity proxy, lobby and game servers all connected to a Redis bus, with a controller managing server lifecycle.
GAMES

PiPixel

A Minecraft server network with a Velocity proxy, an always-on lobby, and on-demand Paper game servers orchestrated by a custom controller.

Java · Paper API · Velocity2026
Pipeline diagram: wakeword, transcription, a tool-calling agent with app, browser, display and PowerShell skills, then speech output.
SOFTWARE

Crumbot

A work-in-progress local voice assistant for Windows that listens for a wakeword, transcribes speech, and uses a local LLM with tool calling to answer questions or control the computer.

Python · Ollama · LangChain2025
The Cyber Aware home page with its headline and live cybercrime statistics tiles.
SECURITY

Cyber Aware

A Hugo-built cybersecurity awareness website with guides on passwords, passkeys and multi-factor authentication, published at becybersecure.org.

Hugo · Blowfish · Tailwind CSS2026
Side-view diagram of the Molehunt arena: world border closing in, altitude cap dropping, lava rising, and identical anonymized players.
GAMES

Molehunt

A Minecraft social-deduction minigame where anonymized "moles" try to eliminate innocents inside a shrinking, altitude-capped arena.

Java · Paper API · Multiverse2026
Three VaultScan screens: the document list, the password prompt for an encrypted PDF, and the unlocked scan in the viewer.
SOFTWARE

VaultScan

An Android app that scans physical documents, runs OCR, and produces password-protected, searchable PDFs.

Kotlin · Jetpack Compose · ML Kit2026
SOFTWARE

virtualmouse

A desktop tool that controls the OS mouse cursor using webcam-based hand tracking, with single-camera, stereo dual-camera, and colored-marker tracking modes.

Python · OpenCV · NumPy2026
Map of downtown San Francisco with concentric rings of crossings, green where reachable within the budget and red where not.
SOFTWARE

GPS Reachability & Isochrone Mapper

A command-line tool that computes how far a person can walk or run from a GPS origin within a time or distance budget by routing along the real street network, and renders the result as an interactive map.

Python · OSMnx · NetworkX2026
A hand-drawn race track with a generation of racers fanning out from the start line.
SOFTWARE

vector-race

A Pygame application where a hand-drawn race track is raced by a population of simple physics racers whose move sequences are evolved with a genetic algorithm.

Python · Pygame2026
Top-down diagram of three hunters whose compass needles all point at the runner and their trail.
GAMES

Manhunt

A Minecraft plugin that runs a Manhunt game (hunters chasing a runner with a tracking compass) with an autonomous lobby and world lifecycle.

Java · Paper API · Multiverse2026
HARDWARE

tempwatch

A Raspberry Pi service that monitors temperature from a weather API or a physical sensor, triggers spoken voice alerts over Sonos, and publishes sensor readings to a web dashboard.

Python · Flask · SQLite2026
Terminal output of the provisioner: prompts, a summary panel, then the Paper jar and three Modrinth plugins downloading.
SOFTWARE

mcserver-creator

A command-line tool that scaffolds a new Paper Minecraft server, downloading the latest Paper build and selected Modrinth plugins automatically.

Python2026
The sea level rise viewer at year 2110, with projected flood zones highlighted around the San Francisco Bay.
SOFTWARE

California Sea Level Rise Viewer

An interactive map visualizing projected and historical sea level rise in the San Francisco Bay region, built using NOAA data for MV Hacks 9.0.

Next.js · React · TypeScript2026
Sequence diagram of a file transfer between two HSMs: receive request, ephemeral X25519 key, HKDF key derivation, AES-GCM transfer, signature check.
SECURITY

MITRE eCTF 2026

A secure file storage and transfer firmware design for a Hardware Security Module, built for the MITRE eCTF 2026 embedded security competition.

Rust · C · Embassy2026
The merged pull request on GitHub, showing the added allow-fly checks in PlayerFlightListener and PlayerInteractListener.
GAMES

Lobby Parkour

A merged bug-fix contribution to Lobby Parkour, an open-source Minecraft plugin that adds customizable parkour courses with checkpoints and leaderboards.

Java · Paper API2026
Diagram of a finished run, a live run with its stopwatch, and the next world pre-generating, pausing whenever server TPS dips.
GAMES

QuickReset

A Minecraft plugin that automates running back-to-back speedrun attempts, generating and resetting a fresh world between each run.

Java · Paper API · Multiverse2026
Diagram of players moving around a loop of four worlds while their Discord voice channels mirror which world they are in.
GAMES

LoopRun

A Minecraft speedrunning plugin that loops players through randomized worlds and syncs their Discord voice channel to the player they are following.

Java · Paper API · JDA2026
Scoreboard diagram: players colored by remaining lives out of ten, each with their mutation icons.
GAMES

Stranded

Two versions of a lives-based Minecraft survival minigame: the first built around OP items and timed whitelist access, the second around a lives/mutation system.

Java · Paper API2025
Diagram of a boss-bar countdown above two players, one on safe ground and one falling toward lava, about to swap places.
GAMES

DeathSwap

A Minecraft minigame plugin that teleports (swaps) players to each other at a timed interval, with a countdown boss bar and admin controls.

Java · Paper API2026
Diagram of two team bubbles, red and blue cuboids, each shrinking from its starting size and drifting across the map.
GAMES

BubbleRun

A Minecraft team minigame where two teams race inside shrinking cuboid "bubbles" rendered with block-display entities.

Java · Paper API2025
Diagram of three linked players showing identical hearts and hunger after one of them takes damage, fed by one shared pool.
GAMES

SyncRun

A Minecraft minigame plugin that links two or more players together so their health and hunger stay synchronized as a shared pool.

Java · Paper API2025
Binary key tree over sixteen timestamps: four issued keys cover a ten-timestamp subscription, with one frame key derived down the tree.
SECURITY

MITRE eCTF 2025

A secure satellite-TV decoder design for the MAX78000 microcontroller, built for the MITRE eCTF 2025 embedded security competition, including an attack-phase submission against another team's design.

Rust · Python · Docker2025
Fluently’s timeline view: AP US History terms laid out as color-coded bars from 1500 to today.
SOFTWARE

Fluently

A browser-based study tool for AP US History, presenting a curated set of facts as a searchable timeline, list, and flashcard study mode.

JavaScript · HTML · CSS2026
Girl with a Pearl Earring next to the bot’s contour-traced drawing and its eight-color paint-mode drawing of it.
SOFTWARE

draw_bot

A Python tool that replicates an input image on an on-screen canvas by driving mouse and keyboard input, using either edge-contour tracing or a hierarchical shape-decomposition strategy.

Python · OpenCV · NumPy2026
The Starry Night recreated as a mosaic of emoji tiles.
SOFTWARE

emogen

A command-line tool that recreates an input image as mosaic art made of emoji tiles, matching each image tile to its closest emoji by pixel similarity.

Python · NumPy · Pillow2026
A short script using the library and its output: Schedule B with six periods and their start and end times.
SOFTWARE

mvhs-schedule

A Python library that fetches the Mountain View High School bell schedule from the Firebase REST API used by mvhs.io.

Python · httpx · asyncio2025
A binarized Great Wave off Kanagawa beside the same image rebuilt from ASCII characters by the greedy mode.
SOFTWARE

asciigen

A command-line tool that converts an image into ASCII art, using either a greedy character-matching algorithm or a genetic algorithm.

Python · Pillow · NumPy2025
A Bonk match in progress: a blue and a red player on either side of the death ball, score 2 to 0.
GAMES

Bonk

A real-time multiplayer Java game where players grapple around an arena and knock each other into a death zone, built with a custom client-server networking layer.

Java · Swing · Custom TCP networking2025
Terminal session balancing five chemical equations, from water to potassium permanganate with hydrochloric acid.
SOFTWARE

rxn-balancer

A command-line tool that balances chemical equations by modeling atom conservation as a constraint problem and solving it with the Z3 SMT solver.

Python · Z3 Solver2025
Two screens of the Azul game: the shared factories with drafted tiles, and a player board with pattern lines and wall.
GAMES

Azul

A Java implementation of the board game Azul, with tile drafting from shared factories, pattern-line placement, and round/end-game scoring.

Java · Swing2024
Twelve Set cards with the three cards of a valid set outlined in click order, next to the rule each attribute follows.
SOFTWARE

SetBot

A Selenium bot that plays the card game Set on setwithfriends.com by reading card attributes from the page and automatically clicking valid sets.

Python · Selenium2023
The Great Wave and three ways the bot draws it: traced edges, layered color rectangles, and straight lines.
SOFTWARE

Skribbler

A Selenium and PyAutoGUI bot that plays skribbl.io by downloading a reference image for the given word and drawing an approximation of it on the canvas.

Python · Selenium · Pillow2023
Diagram mapping PiBot’s slash-command groups to the SQLite tables behind them, plus a pixel circle rendered by the /circle command.
SOFTWARE

PiBot

A general-purpose Discord bot with slash commands for games (counting, o-chain, chopsticks), a typing-speed test, alarms, and a school cafeteria menu lookup, backed by SQLite.

Python · discord.py · SQLite2023
Top-down view of the survival game: the player holding a stick, surrounded by green zombies closing in.
GAMES

Game Design

A 2D Pygame survival game where the player fights off waves of zombies with a choice of weapons while managing health and an experience bar.

Python · Pygame2022