Projects

These are some of the projects I’ve built over the years. Each one came from a specific need, curiosity, or personal interest rather than just a coding exercise. Everything here that runs as a live service runs on AWS for about $25 a month, total. For more details and code, visit my GitHub profile.

  • AI Call Bot - Hand Coded
    A Go-based voice-driven AI agent deployed as a Digital Ocean serverless app, accessible via phone demo at (734) 766-7700.

    A pure passion project. I love working with LLMs and I love communication systems, so this was me putting the two together for the fun of it.

  • Simple Key Value Server (SKVS) - Hand Coded
    A tiny, key-value store written in Go and deployed over UDP.

    I built this because Redis and similar systems carried far more operational surface than my workload justified. My API needed a fast, read-heavy, single-owner cache with strict latency guarantees, no persistence, and nothing extra. By owning both ends of the protocol, I kept the wire format minimal, encryption mandatory, and behavior predictable.

    View on GitHub → and Read about the design philosophy here

  • SimplyAuto - AI Assisted
    A free auto clicker and macro recorder for Windows, built entirely in Go. Customizable click intervals, macro recording and playback, global hotkeys, and save/load. Portable .exe with no installation required, or install from the Microsoft Store.

    My son wanted an auto clicker for his games and my wife wanted a simple macro recorder, and both of them wanted repeating key presses that nothing else offered. So I built one thing that covered all of it.

    Visit Site → · Get it on the Microsoft Store → · View on GitHub →

  • wxs.us (Weather Service) - AI Assisted
    A Go-based weather service hosted on AWS, delivering US forecasts, alerts, and severe weather outlooks via curl, an interactive SSH dashboard, a native Android app, and a native desktop radar app for Windows and Linux (one file, no installer). Built on NWS and NOAA Storm Prediction Center data, it requires no API keys or accounts. Usage numbers are public on the live stats page.

    I have always been into weather. I used to use an old terminal weather program until it started going down constantly, so I built my own, then got carried away learning how the NWS APIs worked and kept adding platforms.

    Visit Site → · Get it on Google Play → · Get it on the Microsoft Store → · Downloads →

  • ZipClip - AI Assisted
    A desktop tool that turns Twitch VODs into YouTube-ready videos on a schedule. It uses scene detection to find where the stream actually starts, and edits entirely with stream copy, so nothing is re-encoded and quality stays lossless. Built in Go with Fyne, as portable binaries for Windows and Linux.

    My wife never posted to YouTube because getting a Twitch VOD there meant downloading it, cutting the waiting screen, splicing in an intro, and uploading it, every single time. So I automated the whole path.

    Visit Site → · View on GitHub →

  • Writers Grove - AI Assisted
    A writing platform built with Go, designed for writers who work better with structure. World-building tools, character tracking, and organizational workflows that keep complex creative projects manageable. Currently in active development.

    I write, and I am working on getting a series off the ground. Every option I found for writers trying to monetize their work was worse than it needed to be, so I started building the one I wanted.

    Visit Site →

  • FriendTime - AI Assisted
    A web service for coordinating gaming sessions with friends. The frontend is vanilla TypeScript with a hand-rolled router, no framework and no npm. The backend is Go on a single arm64 Lambda, fully serverless on AWS (S3 + CloudFront, API Gateway, SES) with Turso for the database and passwordless magic-link login.

    I wanted a simple way to schedule D&D sessions with friends.

    Visit Site →

  • JackBot - Hand Coded
    A Discord-based conversational AI bot written in TypeScript, named after the family cat.

    My son had an AI he liked talking to on Discord, and he was pretty upset when it was shut down. I built him a replacement, which also meant I could see how he was using it.

    Visit Site → · View on GitHub →

  • Secure Contain Protect - Hand Coded
    A browser-based console for talking to an SCP Foundation AI, running on AWS S3 and Lambda.

    My kids have always been fascinated by SCPs, so I built them somewhere to interact with a Foundation AI directly.

    Visit Site → · View on GitHub →

  • bf-go - Hand Coded
    A Brainfuck interpreter in Go, with a 30,000-byte tape and a precomputed jump table so loops resolve in constant time.

    A former Director of Engineering kept pushing me toward test-driven development and it never really landed until I read David Farley’s Modern Software Engineering. I wrote this to actually practice writing the tests first, on a problem small enough that I had no excuse not to.

    View on GitHub →

Tools Link to heading

  • TTS (Text-to-Speech CLI) - Hand Coded
    A command-line tool for converting documents into speech using AI.

    I wrote this before mainstream tools made the process simple, back when nothing available did it with decent quality. I love listening to books while I walk, so I built it to get my textbooks onto my phone.

    View on GitHub →

  • gitdisplay - AI Assisted
    A Go Lambda that reads every repository on a GitHub account, renders most-used-language and contribution-streak SVG cards, and republishes them to S3 behind CloudFront on a schedule. It generates the cards on my about page.

    github-readme-stats only read my first hundred repositories, so it silently dropped my newest eleven, folded archived projects into the averages, and counted vendored code I never wrote. After twenty years the card was describing the developer I was a decade ago. This one separates active work from archived.

    View on GitHub →

  • goLocalMermaid - AI Assisted
    A single-file Go server that renders a local Mermaid diagram in the browser and redraws it on every save, holding your zoom and pan position. Exports to SVG, PNG, JPG, and PDF.

    When an AI is making a lot of small edits to a diagram, pasting into a web renderer means handing private diagrams to someone else’s site, and re-rendering to a file loses your place every time. This does neither.

    View on GitHub →

  • Project Tracker - AI Assisted
    A modular terminal dashboard built with Go and Bubble Tea, with vim-style navigation and modules for CI status, TODO, notes, and git status.

    Built to keep track of where my own projects actually stand.

    View on GitHub →

  • GHFlow - AI Assisted
    A terminal dashboard for monitoring GitHub Actions workflows across many repositories at once, with a 3x2 grid layout, live status updates, and vim navigation.

    Built when I was watching CI across dozens of separate service repos, before they were consolidated into a monorepo.

    View on GitHub →

  • MSSQL Extractor - AI Assisted
    A read-only Go tool that scripts a SQL Server schema into one deterministic file per object, so a database schema can be committed to git and diffed like anything else.

    Microsoft’s own mssql-scripter has been abandoned since 2018 and its bundled .NET runtime no longer runs on a modern Linux box, and GUI tools cannot be driven headlessly. I wanted a small binary that will still compile in ten years.

    View on GitHub →

  • goaudit - AI Assisted
    One command that audits every Go project it finds, for malicious packages, typosquats, known vulnerabilities, and code quality, and reports only what is wrong. Standard library only, with no dependencies and no configuration.

    I wanted one standard security pass that ran the same way across all of my work and personal projects. It started life as a justfile, and when I wanted more features and more control over it I rewrote it in Go.

    View on GitHub →

  • aws-sec - AI Assisted
    A thin Go wrapper around the AWS CLI that intercepts responses and replaces secret-shaped values with [REDACTED] before they reach the caller.

    Built as a hard boundary for LLM-controlled shells, where environment variables and credentials in normal AWS output would otherwise leak into model context, transcripts, and downstream tool calls.

    View on GitHub →

  • autobotgo - AI Assisted
    A single Go binary that once a day wrote a story, narrated it with text-to-speech, illustrated it, assembled a 1080p video with ffmpeg, and uploaded it to YouTube, keeping a shared-world canon file so episodes stayed consistent with each other.

    The pipeline worked end to end. I archived it anyway, because once I sat down and read what it was actually producing, the stories were not good enough to publish.

    View on GitHub →

  • Cleanup for Amazon - AI Assisted
    A browser extension for Chrome and Firefox that hides whichever parts of Amazon you choose, each behind its own toggle: the shopping assistant, the cart sidebar and count badge, recently viewed, buy again, and personalized recommendations. Gift schedules hide things on dates you pick and restore them on their own, and Quick Hide clears everything temporarily. Works on all Amazon sites with no accounts, no tracking, and zero network requests.

    I cannot stand the shopping assistant side chat, and I wanted my cart hidden at certain times of year so gifts stayed a surprise. Both are entirely my own itches.

    Get it on the Chrome Web Store → · Get it on Firefox Add-ons →

Games Link to heading

  • GlyphEngine - Hand Coded
    A small 2D game engine in Go, built on Ebitengine, that renders everything as ASCII glyphs instead of sprites.

    Written in a few days for the Pirate Software Game Jam. I wanted the game to look like the old ASCII games, and nothing rendered that way, so I built the engine first and the game on top of it. It started out beautifully structured using all the best practices and became a tangled ball of mud as the deadline closed in. I still had fun writing it, and it is up in case someone else does something interesting with it.

    View on GitHub →

  • The Social Contract - Hand Coded
    A short dialogue-driven infiltration game rendered in ASCII on GlyphEngine. You play a security consultant talking your way into corporate offices.

    The jam theme was “you are the weapon,” so the weapon is what you know and how you read people rather than anything you carry. I wanted to show how weak human security actually is.

    Play it on itch.io →

  • Ring Wars - AI Assisted
    A DOS-style wrestling match simulator in Go and Ebitengine. It reads YAML wrestler cards and plays out dice-driven singles, tag, cage, and no-DQ matches with running text commentary, and ships with an in-game card editor.

    My brother had an old DOS program for this that he loved and lost the key for, so I built him a new one.

    View on GitHub →

  • Scoundrel - AI Experiment
    A digital version of the solo card game Scoundrel, built twice: once in LOVE2D with Lua, and once in Ebitengine with Go.

    An experiment in two directions at once. I handed over the assets, the rulebook, and the instruction to build it, and wrote none of the code myself, to find out what full delegation actually produces rather than guessing at it. I also wanted the same concept expressed side by side in two languages, to see how differently each one wanted the project structured.

    View on GitHub →

To see more of my work visit my Github Repository page, or head over to my resume for the professional version.