Work

Client builds and my own projects, finished and in progress.

  • Client work

    Carrion Roost

    The character creator for Left for the Vultures, built for Deimos Infinitum Publishing. Players build, save, and randomize characters and export a filled-in character sheet PDF. The publisher edits breeds, gear, and masteries from an admin panel without touching code.

    Built with FastAPI, PostgreSQL, SQLAlchemy, JavaScript, Google and Discord sign-in

  • Client work

    The Committee

    A Discord bot for instant rules lookups from the Left for the Vultures core book. Every command autocompletes, typos still find the right rule, each entry cites its printed page, and game-master content is always sent privately.

    Built with Python, discord.py, PostgreSQL, RapidFuzz

  • Live

    Serena

    A stock-market commentary brand with a personality. Type a ticker and Serena explains what the stock has been doing in plain, gossipy language, or rewrites its last four earnings reports as drama. Real market data, written up by AI, plus a newsletter and weekly video recaps.

    Built with PHP, JavaScript, Finnhub API, Claude API, Python

  • In development

    BaconBitsStudio VTT

    A virtual tabletop for in-person games. The game master runs a private console on the laptop while the TV shows only what they choose to reveal, with physics-driven 3D dice and printable character sheets. Delta Green ships first; the shell is built to take any game system.

    Built with Electron, React, Three.js, cannon-es, WebSockets

  • In development

    Initiative Tracker and turn lights

    A combat tracker for tabletop RPGs on desktop and Android, with a hardware add-on: when the turn passes, a lamp in front of that player lights up. The apps talk to a Raspberry Pi hub, which signals Pico 2 W lamps running custom C firmware.

    Built with Python, Flutter, Raspberry Pi, MQTT, C (Pico SDK)

  • Workbench

    Pico display driver and IR dispenser

    Two Raspberry Pi Pico builds: a driver for a 128x64 OLED display written from the datasheet, with its own framebuffer and font, and a snack dispenser that watches an infrared beam and cycles two servos to drop one portion at a time.

    Built with C/C++, Pico SDK, I2C, PWM

  • Workbench

    Commercial cooking timer

    A line-cook timer that takes a ticket of fries, tots, and steaks by doneness and tells you when to drop each item, and when to flip each steak, so the whole order finishes at the same moment.

    Built with Python