AI engineer · Madison, WI

Hi, I'm Will.I take rough toolsand make them work.

Web apps, firmware, a desktop agent — all 14 of them in the log.

Email me
Fig. 01 — cover artShe guards the log.

Everything in this logstarted rough —half-built, buggy,or flat-out broken.Now it’s working.

3,052 contributions in the last year · live from GitHub, through Jul 16

03 — Rough tools, made to work — every build in order, this site included

The log

  1. Virtual Self

    A hand-built WebGL/shader portfolio — a boot sequence, a terminal, raymarched SDF scenes, and an audio visualizer.

    The portfolio before this one — hand-built WebGL all the way down. I wrote the shaders myself to learn what a GPU actually does. This site is its successor: quieter on the outside, same obsession underneath.

  2. Rust Hyprland Glass

    A Rust + wgpu glass-and-blur visual-effects library with a custom WGSL shader and renderer.

    Frosted glass is everywhere on Linux desktops like Hyprland, and I wanted to know how that blur actually gets drawn. So instead of stacking someone else's filters, I wrote the pipeline myself: a custom WGSL shader and its own renderer, on wgpu.

  3. LUNA

    An open-source agent that runs a desktop on its own — a custom vision pipeline (CLIP/SAM/Florence/TrOCR) and a safety layer.

    An open-source agent that operates a desktop on its own. A custom vision pipeline built around CLIP, SAM, Florence, and TrOCR reads what's on screen; it then moves the mouse, clicks, and types to finish a task, with a safety layer guarding every action. Written in Rust, and built while I was learning how computer-use agents actually work.

    See the code
  4. Tilt.gg

    An OP.GG-style League of Legends analytics platform — Riot API, tilt/MMR analysis, and a full data pipeline.

    Match history goes in from the Riot API; tilt and MMR analysis comes out — a read on whether you're actually improving or just queueing angry. Built in TypeScript, because the fastest way to learn a data pipeline is to point one at a game you care about.

  5. Bento Sprint

    A club-management app for student orgs — Kanban boards, teams, and announcements, with Slack/Discord/Notion built in.

    A full club-management app for student orgs: set up your club, organize teams, run Kanban boards, and post announcements — all in one place. Built end-to-end in Next.js 16 with Prisma/Postgres and NextAuth, plus Slack, Discord, and Notion integrations and an outbox worker. My first real product — a year of teaching myself, shipped — and it has a live demo.

    Bento Sprint — screenshot
    See it live
  6. Uno R3 MCP

    An MCP server that gives an AI agent hands on an Arduino Uno over serial — read pins, drive outputs, analyze thrust.

    An MCP server that gives an AI agent real hands on hardware. It talks to an Arduino Uno over a serial cable to list ports, read sensor data, send commands, and even analyze thrust-test runs — the bridge between software agents and the physical world.

    See the code
  7. This portfolio

    this site

    The site you're reading right now — Next.js, the galaxy hero, and a build that won't ship unless its tests pass.

    The site you're reading right now. Next.js App Router with the galaxy hero, a canvas starfield, this self-updating GitHub contribution graph, and a Playwright-gated build that refuses to ship unless its smoke and accessibility tests pass.

  8. Manga Studio

    Tooling to get from a rough idea to a drawable manga page plan — panel layouts and per-panel image prompts.

    Tooling that turns a rough idea into a drawable manga page plan — it lays out the panels and writes the image prompt for each one. A local Codex plugin of skills, built to get from concept to a page plan fast.

    Manga Studio — screenshot
  9. recordlocally

    A local-only Electron app for capturing, trimming, and exporting gameplay — everything stays on your own machine.

    A Windows desktop app for capturing gameplay that keeps everything on your own machine. Record, trim, stitch, and export through an ffmpeg-backed pipeline, with a library to review your clips — all in Electron. I wanted to record without the FPS hit or the cloud.

  10. OSINT Globe

    A 3D open-source-intel globe with analyst overlays, source adapters (GDELT/ReliefWeb/RSS/YouTube), and a PostGIS store.

    A 3D open-source-intelligence globe with analyst overlays. A Fastify API pulls from live source adapters — GDELT, ReliefWeb, RSS, YouTube — into a PostGIS-backed store, all deployable behind Docker and Nginx. I built it to keep track of world events because I love following politics.

  11. PetOS

    ESP32-S3 firmware for a virtual pet — stat decay, persistent storage, a TFT UI, and a local AI-dialogue layer.

    Firmware for a virtual pet living on an ESP32-S3. Stats decay in real time, persistent storage means it remembers you across power-offs, a TFT screen gives it a face, and a local AI-dialogue layer gives it something to say. A Tamagotchi, basically — except I wrote the firmware, and a crash means the pet dies.

  12. NVG Detector

    A thermal/NVG YOLO person-detection pipeline — training, evaluation, ONNX export, and inference.

    The full loop — training, evaluation, ONNX export, inference — so the result isn't a notebook experiment, it's a model something could actually run. Built to learn what computer vision does when the input isn't a clean daylight photo.

  13. Garden Viz

    An Obsidian plugin that renders your vault as an animated garden grown from its tags and chronology.

    Most knowledge-graph views look like server diagrams; I wanted one that looks alive. The garden grows from your tags and your writing history, so old, well-tended corners of your notes read differently from what you planted last week.

  14. An AI that has to follow the rules

    An AI assistant that moves cards on a task board, and the checks that block its bad moves. Watch it get caught, live in your browser.

    Bento Sprint's AI assistant reads a plain note and updates the board. Nothing it suggests happens until it passes the same rules every human user follows. I ran 64 tests on those rules, and in 34 of them I told the AI to break them on purpose: out of 70 suggested moves, 28 got blocked and not one illegal move got through. The demo page replays twelve recorded AI runs, but the rule check itself runs live in your browser every time you click, and every refusal is the app's own wording. All the code is public in bento-agent-evals.

    Run the demo
The girl from the cover illustration.
Fig. 02 — end of watch. That’s all 14 — all of them working.
willResume