I'm a professor at George Mason University who believes the best way to learn statistics is to care about the answer. My research lives at the intersection of measurement, motivation, and meaning — how people find purpose, how we measure psychological constructs, and how to do both without fooling ourselves.
This page collects my public work: course materials for students, research code, R packages, AI-powered tools, and the occasional project born purely from curiosity. If something here is useful to you, take it. If something is broken, let me know.
"The best way to learn statistics is to care about the answer."
Featured
A daily sports statistics newsletter for friends and family. Each issue takes one strange, extreme, or counterintuitive stat and explains what it actually means — the history, the math, and the forecast. Bayesian models, broadsheet design, editorial voice. Updated 5x/week.
AI-Powered
Statistics
Sports
Newsletter
Reproducible academic CV and NIH biosketch, kept current. Also available as
PDF.
Professional
268 publications, searchable and filterable. Citation metrics, co-author network, and publication timeline — all from Google Scholar.
ResearchPublications
Teaching
PSYC 405 — Forensic psychology through the lens of real cases. Students learn research methods by investigating the psychology of crime.
CoursePSYC 405
PSYC 325 — Understanding mental disorders through evidence, not folklore.
CoursePSYC 325
Graduate-level GLM — regression, ANOVA, and the framework that unifies them.
CourseRPSYC 642
The sequel — mixed models, multilevel modeling, and the edges of the GLM.
CourseRPSYC 643
PSYC 757 — Introduction to Bayesian methods for psychologists who want to update their priors.
CourseRBayesian
Reading notes from McElreath's Statistical Rethinking (2nd ed.) — a modern Bayesian approach to applied statistics.
RBayesian
Research
My research focuses on purpose, motivation, measurement, and trust. Publications are available through the usual channels — data and analysis code become public after we've finished our work with them. For published papers, see my CV.
An R package of functions I find useful in my work — social science research utilities not on CRAN, battle-tested in actual papers.
R PackageResearch
Interactive simulation of the Dunning-Kruger effect — adjust sample size, reliability, and bias to see how the classic pattern emerges from simple statistical properties.
Source code.
ResearchInteractive
Claude Code skill that removes signs of AI-generated writing from text. Because good writing should sound like a person wrote it.
Claude CodeWriting
Enforces phased task execution — clarify, propose, review, then act. Prevents premature execution and ensures alignment.
Claude CodeWorkflow
Automates The Neuron's daily AI newsletter — aggregation, summarization, and distribution.
AutomationNewsletter
Getting started with AI tools — a practical guide for academics and professionals.
AIGuide
Fun & Curiosity
A generic crossword puzzle builder for online and print. Make your own and distribute to others.
GamesWeb
A family solitaire game passed down through generations — now with 700 million simulated games to prove just how rare a win truly is. Computational probability meets family pride.
Source code.
GamesProbabilityPython
Browser-based statistical demos — Dunning-Kruger simulator, distribution explorer, EFA, levels of measurement, and more. No R required.
Source code.
TeachingInteractiveJavaScript
All Public Repositories
60 public repos, sorted by most recent activity. View all on GitHub →
See all 60 repositories on GitHub →