Models, tools, and things to play with.

Software projects in machine learning, environmental tools, and interactive design. Pursuing an M.S. in Artificial Intelligence, with a focus on model evaluation and red-teaming.

Work

8 projects
  1. Draft board listing players ranked by VORP, each with a floor-to-ceiling projection interval bar.

    Megatron

    Live · In active development

    NFL fantasy projections with a draft board, trade calculator, and weekly player estimates.

    Screenshot · Draft board · captured 2026-09-05 · Local build

    Held-out p10–p90 coverage: 81.9%, 79.2%, 79.5% across 2023–25; nominal target 80%.

    Read caseView source

  2. Wind status panel showing an ordinance heading, Denver household ordinance reference, wind direction dial with REPORT ODOR control, and live wind speed/direction readout.

    An odor-reporting app that checks wind conditions and tracks complaints from separate households.

    Screenshot · Wind & status · captured 2026-09-05

    Wind support uses two NWS stations over a 90-minute lookback; it does not establish the odor’s source.

    Read case

  3. Pyrra homepage hero with the headline Built to rank and an illustrative website audit.

    Pyrra

    Site live · Outreach paused

    A prospecting and outreach pipeline I ran, audited, and rebuilt around mandatory review and evidence-gated claims.

    Studio homepage · headline and illustrative audit · captured 2026-09-16

    Python and SQLite: 4,961 listings collected and screened, 432 emails sent, then a self-audit and a tested fail-closed rebuild (not yet used for a campaign).

    Technical note

    My own audit found most of the 432 sends were unreviewed and many drafts made claims the pipeline never measured; outreach is paused.

    The rebuild requires review of every send, refuses unsupported claims in code, and adds the missing footer and a fail-closed send ledger.

    Read case

  4. all:Lo

    Live

    A music collective’s site with smoke that responds to audio.

    all:Lo’s smoke renderer. The preview uses synthetic inputs; the live site responds to audio.

    Fast envelopes change light; a slower envelope changes geometry.

    How the motion works

    The live site maps fast bass and mid envelopes to light. A more heavily smoothed envelope changes the geometry. Here the two inputs are separated so you can inspect their effects. No audio is being analyzed.

    Read the implementation and limits

    Read case

  5. Tesseract: a rotating 4D chess projection beside autonomous-simulation controls and an 8x8 plane inspector.

    Tesseract

    Complete · Playable demo

    Four-dimensional chess on an 8 × 8 × 8 × 8 grid of 4,096 cells, with piece movement extended to four axes.

    Screenshot · Tesseract demo · captured 2026-09-06

    Watch continuous CPU games, step through moves, and inspect any of the 64 board slices.

    Read the coordinate model

    Each axis has 8 positions. Holding z and w fixed gives one ordinary 8 × 8 slice; there are 64 such slices and 4,096 coordinates in total.

    The demo runs entirely in the browser: two CPU players using selective two-ply search, a Web Worker for the move engine, and a rotating 4D projection with a plane inspector. It is not a strong chess AI or a standardized rules set.

    No usage or outcome measurement is published here.

    Read case

  6. Silent-auction demo showing an artwork, a simulated outbid notice, the updated current bid, and controls to bid again.

    Silent Auction

    Complete · Interactive demo

    A silent-auction app built for a friend’s group art show, with bidding on individual pieces.

    Screenshot · Piece after simulated outbid · Client-side demo

    Bids advance in $10 increments; a simulated rival demonstrates the outbid flow.

    Technical note

    The December 2025 source history contains a Supabase Realtime subscription for bid updates, a Twilio SMS function, and a switch to requesting outbid emails. It does not identify the revision deployed at the event or establish email delivery.

    This demo runs entirely client-side with fictional artists and pieces, bids saved in localStorage, and a simulated rival whose outbid notice appears in-app; no database or email service runs here.

    No usage or outcome measurement is published here.

    Read case

  7. Count Practice drill showing a flashed card, practice statistics, and speed control with a running count strip.

    A Hi-Lo card-counting trainer with running count, true count, and practice modes.

    Screenshot · Practice · captured 2026-09-05

    Single-file implementation; includes the Illustrious 18 index deviations.

    Technical note

    Single-file implementation covering running count, true count, deck-penetration tracking, and the Illustrious 18 index deviations across learn and practice modes.

    No usage or outcome measurement is published here.

    Read case

  8. Birdie

    In development · Local only

    A golf practice coach that turns simulator log files into a report on what to practice.

    System diagram · Birdie

    Birdie reads three simulator outputs through a read-only boundary — FSX Play Unity's Player.log for club delivery, GSPro's currentRound.dat for ball flight and spin, and swing-camera clips — and never writes back to those directories. Parsers normalize that data into Birdie's own SQLite store. Miss clustering and a strokes-gained cost model then produce one ranked practice priority. This diagram documents that pipeline; it is not a validated diagnosis.

    Ground-truth validation has begun and has not cleared its own bar.

    Read case

Interested in the work? I’m happy to discuss the projects, their implementation, and what I learned building them.