Projects
Things I have built, mostly with AI agents.
I teach students to supervise AI coding agents rather than only read about them, which obliges me to do the same. These are the artifacts: working things, not demos. Each one started as a question I wanted answered and ended as something someone else can use.
The interesting part is rarely the code. It is what the work reveals about where judgment still has to come from, which is the same question I ask in the field notes.
-
Senate Agreement Network
An animated 3D network of the US Senate, 1899 to 2026, where two senators are tied together by how often they voted the same way.
Every pair of senators in every Congress, scored on the share of contested roll calls they voted alike on, then laid out in three dimensions so that voting alike means sitting close together. Played forward, the mid-century Senate is one mixed cloud and the modern Senate is two separate worlds joined by a thinning bridge. Built on 33,321 roll calls from Voteview.
-
KnowTAM
FAA written and checkride prep for student pilots, Private through Commercial plus Multi-Engine. On the App Store.
Flashcards, subject quizzes, and spaced repetition, every card written to the Airman Certification Standards and carrying the regulation or handbook reference behind the answer. Fully offline, because the place you most want to study is an airport with no signal. Built for Fly With Winston, where the aviation expertise is my son Winston's and the software is mine.
-
License to Sell
Exam prep for the licenses on every side of a deal: real estate, mortgage, insurance, and securities.
The same study engine as KnowTAM, pointed at a different domain to find out how far a single piece of software stretches across unrelated subject matter. Real estate and mortgage come first, since they sit on opposite sides of the same closing table. Every question is original and expert-reviewed rather than lifted from a vendor bank. The hub site is live; the apps are in development.
-
Roster Predictor
Predict any NFL team's final 53-man roster, then get scored against the roster the club actually kept.
Every August all 32 clubs cut from 90 players to 53, and everyone with an opinion is wrong in public a week later. This makes the wrongness measurable: build a board, submit it before the deadline, and it is scored against the real cutdown, with a leaderboard across all 32 teams. Positions come from each club's own site rather than a scraped aggregator, which is the difference between a roster tool that is right and one that is merely plausible.
-
Self-Evident
An interactive reading of the Declaration of Independence for its 250th anniversary, built around the consent of the governed.
The Declaration annotated phrase by phrase, with a consent engine and a quiz that put the reader inside the argument rather than in front of it. This one is my son Jackson's project; I assisted. Helping someone else direct AI agents on their own idea turns out to be a different skill from doing it yourself, and a closer analogue to what I ask of students.
-
Upstate Flight School
The site for a flight school at Oconee County Airport near Clemson: private pilot, complex and high-performance, and recurrent training.
A small marketing site with a clear job, which makes it a good test of how much a working site actually needs. No framework and no build step: plain HTML, Tailwind, and a little Alpine, deployed as static files.
-
This website
The site you are reading, including the interactive project above, built and deployed the same way I ask students to work.
Astro with Tailwind, self-hosted fonts, and Alpine for the little that needs interaction. Writing is a markdown file in a content collection, so adding a post never means editing a page. Every push to main builds and rsyncs to shared hosting through GitHub Actions, and a nightly rebuild lets a future-dated post publish itself. The whole thing is static files: no server to run, nothing to keep patched.