Things I’m Working On
Teaching the frontier and pushing it are the same job done at different hours. This page is the lab notebook: projects in flight, at different stages, all running on the same convictions as everything else on this site - sharper priors, calibrated latents, honest accounting of uncertainty. Stages are stated plainly; some of this is early, and I’d rather say so than dress it up.
Sports analytics
The ML & Sports Analytics Lab is where I work with advanced students on cutting edge projects at the intersection of sports and machine learning.
Kicker skill tracking
How good is an NFL kicker right now? Raw make rates can’t answer that - a kicker attempts a handful of kicks a week, so the numbers bounce around far too much to separate a slump from bad luck. This project treats each kicker’s underlying skill as a latent trajectory that evolves smoothly through time - a Gaussian-process dynamic latent variable model - with every attempt observed as a noisy readout of that hidden state, adjusted for the difficulty of the kick. The payoff is a skill curve with honest uncertainty around it: when it moves, you can say whether it really moved, which is the question teams actually need answered.
Active.
Pitch sequencing
A pitch means almost nothing in isolation - strategy lives in sequences, and sequences are hard to compare because no two at-bats are alike. This project learns low-dimensional embeddings of pitch sequences - a UMAP-VAE trained with a pseudo-contrastive objective - so that strategic patterns become nearby points in a space you can actually look at: pitchers with similar approaches cluster, and how a pitcher’s sequencing shifts across counts and batters becomes a visible trajectory rather than a scouting anecdote.
Active.
Route style, quantized
Latent representations of how NFL skill players move - route style on and off the ball - built with quantized autoencoders. The goal is a calibrated discrete latent space that maps onto the vocabulary analysts actually use: burst, shiftiness, top-end speed, seeing holes like Le’Veon Bell, angry runners, hard-earned yards after contact. Discrete latents are the key - they make the space interpretable and the calibration checkable. The payoff is counterfactual assessment: what plausibly happens if Isaiah Pacheco is the back on a play Saquon Barkley actually ran? Does the route change, does the outcome, holding all ten other players constant? A generative exercise that starts and ends with the quality of the learned latent.
Active.
Generative modeling - exact single-shot generation
When generation goes wonky, blame the uncertainty accounting. My working thesis: the characteristic wonkiness of images generated from single shot generators comes from improper aggregation of uncertainty through the generative stack - though shortcuts are sometimes the honest price of scale. Lookup-free quantization is a new VQ-style method that admits a natural probabilistic interpretation that categorical codebooks don’t; supplement it with normalizing flows and you can build exact mappings, up to probability, to a posterior you can actually sample. This work demonstrates that we can improve the quality of generative models by adhering to the ideals that were established years ago in the Bayesian graphical models literature while still applying advances from the last decade. Capability through sharper priors, not more compute.
Active
Language models - the influence horizon
How long does an idea last inside a language model? Drop an idea into a model’s context - a character’s secret, a plot turn, a stated constraint - and it shapes what gets written next. But for how long? Fifty words? Five thousand? Until it collides with a stronger idea? This project measures what I call the influence horizon: how far downstream a piece of context keeps bending the model’s choices, traced with contrastive attribution - generate with the idea present and with it ablated, and watch where the two futures stop diverging. Branching narratives are the testbed, because every branch point is a controlled experiment in what the model remembers mattering. The aim is a calibrated answer to a question people mostly hand-wave: not can the model use its context, but how far its attention actually reaches.
Active