Projects
Selected work in mechanistic interpretability, document intelligence, data engineering, distributed systems, model evaluation, behavioral machine learning, LLM agent design, and simulation. Each project has a short case study. Most also have a technical report with the experiment history, metrics, and steps to reproduce the results.
Content review: 6 November 2026. Test totals and benchmarks belong to the snapshots named on each page; they are not live status counters. Some older reports retain historical results and are labeled where newer releases supersede them.
Mechanistic interpretability
Neuron Atlas
Live browser model · steering & random-direction controls
An interactive map of all 8,192 TinyStories neurons, with live steering and ablation, matched random controls, and replayable findings. Larger Qwen models are explored as offline recordings, not live browser inference.
TypeScript Three.js PyTorch Interpretability
Document intelligence
Four connected projects about one question: how do you sort and read business documents accurately, at a cost you can defend?
mailroom-dataset trains Mailroom-ML, whose classifier runs as the bert_primary stage of Mailroom Reloaded.Digital-Mailroom
Capstone · American Family Insurance
The capstone design: five Python packages and one LangGraph pipeline for document routing, prompt experiments, deterministic scoring, and deployment, trained and tested on a dataset I assembled from public sources.
LangGraph Docker Dataset design
Mailroom-ML
Training, evaluation & calibration
A ModernBERT classifier that handles the easy documents quickly. It calibrates its own confidence, so it knows when to pass a document to an LLM.
PyTorch Calibration ONNX Modal
Mailroom Reloaded
Agentic pipeline · deployable rebuild
The mailroom as one service you can deploy. A deterministic driver runs CrewAI agents in a fixed order, escalates hard cases by fixed rules, and records every decision in an audit log.
CrewAI Flows FastAPI OpenTelemetry
RVL-CDIP-Classifier
Vision LLMs & prompt engineering
A study of zero-shot document classification with vision LLMs. It covers 29 tracked prompt versions, accuracy checked on larger slices than the tuning set, cost per page, and Monte Carlo analysis of ensembles and routing.
OpenRouter Evaluation Error analysis
Data engineering & visualization
Mailroom-Corpus-EDA
Data engineering · dataset build, audit & publishing
The data work behind the mailroom projects: 3,302 documents assembled from public sources, with stable identifiers, a record of how each label was made, and labels kept out of the text a model reads. An audit pipeline checks every number it publishes, and once caught itself reporting a false failure.
Python pandas Hugging Face Hub Provenance
AeroGlobe
In active development · 3D flight data on a globe
A browser globe for flight tracking, built around a static data pipeline so that flights can be replayed without an always-on server. An early version is live: it shows a short sample of real traffic recorded when the site was built and replays recorded tracks, and full-day playback is planned.
TypeScript CesiumJS React Data pipeline
Big data & distributed systems
MapReduce-Reloaded
In active development · distributed systems · Go & Python
A from-scratch rebuild of Google’s 2004 MapReduce, with a Go cluster and a Python reference. The paper mapping now includes 24 items, including performance experiments. S3 storage, compression, a VM evaluation and the final report are built; full Python worker parity remains a stretch goal.
Go Python gRPC Docker Compose Fault tolerance
Behavioral machine learning
Psychometric Digital Twin
Behavioral ML research · UW–Madison
Can an LLM, told who a survey respondent is in the second person, predict that person’s own communication-apprehension scores? Seven classical models against LLM personas on 241 respondents, with error checked by demographic group. The personas did not beat simple baselines.
scikit-learn XGBoost SHAP vLLM
Cognitive neuroscience
The Neural Architecture of Truth and Deception
Cognitive neuroscience research · UW–Parkside
Nine participants each talked to two chatbots told either to help or to deceive. Exam scores rose after the helpful personas and fell after the deceitful ones, and almost nobody flagged the deceit.
Truth-Default Theory Chatbot personas Pilot study
LLM agent design
MORNINGSTAR
Persona framework · prompt architecture
A courtroom of LLM personas that argue, vote, and issue a written ruling on engineering decisions, plus a tamper-evident log library the runner does not call yet. One model plays every seat, and it has not yet been tested against a single-prompt baseline.
Prompt design Python Hash chains
Side projects & interests
Wave Laboratory
Simulation & graphics · runs in the browser
A real-time 3D ocean you can experiment with. Spectral wave models, rogue waves, and ships that move in all six directions run in a Web Worker and render with WebGL 2.
TypeScript Three.js Physics Accessibility
Langton’s Ant
Simulation · runs in the browser · version 0.1.0
A simulator for Langton’s ant and other turmites on an unbounded grid, with a gallery of 20 published machines. It is an early version, and the engine has a pinned determinism test.
TypeScript Canvas2D Cellular automata Testing
The Mandalay Bay
Game systems · CLI, browser & pixel RPG
A satirical casino resort simulator with one chip wallet shared by a Python command-line game, a browser terminal, and a Phaser overworld. Play chips only.
Python JavaScript Phaser Testing