A course that finishes
Ten modules in the order the work happens — from what a row means to what wakes you up at 3am. Every lesson ends with an exercise you can run against a dataset on this site.
No fluff, no paywall, no prerequisites beyond a terminal. Ten modules in the order the job happens, 24 patterns you can look up mid-task, and 7 tools that run in your tab.
01What is here
Ten modules in the order the work happens — from what a row means to what wakes you up at 3am. Every lesson ends with an exercise you can run against a dataset on this site.
Named problem shapes — fan-out joins, censored cohorts, leakage guards. Each names the version that looks right and is not, then the one that holds.
Each one is built around a specific analytical trap: informative missingness, censored durations, a paradox that reverses on disaggregation, five date formats in one column.
A SQL engine, a chart builder, a regression lab, a distribution sandbox. All client-side, working on the datasets above or on a CSV you drop in.
02The syllabus
Built backwards from the job. You get the data, you find out it is wrong, you model it, you measure something, you tell someone, and then you keep it running. Each module stands alone — but the order is the point.
What the job actually is, what a row means, and how to turn a vague request into a question with an answer.
Ingestion, batch versus streaming, idempotency, and what happens when yesterday arrives twice.
Facts, dimensions, grain, slowly changing dimensions, and why columnar storage decides your query cost.
Joins that do not fan out, window functions, the NULL rules that catch everyone, and how to read a query plan.
Testing data like code, the anatomy of a silent failure, and how to find out before your stakeholder does.
Distributions, uncertainty, sampling, and the small number of tests that cover most real questions.
Designing a test that can succeed, reading a result honestly, and what to do when you cannot randomise.
Baselines, leakage, validation that matches deployment, and choosing a metric that means something.
Choosing a form, using colour as an encoding rather than decoration, and writing the sentence the chart is making.
Orchestration, monitoring, cost, and the on-call reality of owning something that runs every night.
03The toolkit
Every tool runs entirely in your browser against the datasets on this site — or against a CSV you drop in, which never leaves your machine.
Point it at any dataset, choose an x, a y, and a grouping, and get a chart that follows the rules — one axis, direct labels, a real legend, and a table view underneath.
A fast table with per-column profiling: type inference, missing counts, distinct values, quantiles, and a sparkline distribution for every numeric column.
Write real SELECT queries against any dataset here and get results instantly — joins, aggregates, GROUP BY, HAVING and ORDER BY, with plain errors for the things it does not support.
Sample from seven distributions, watch the central limit theorem happen at whatever sample size you choose, and see exactly when the mean stops being a useful summary.
A diverging heatmap of every numeric pair in a dataset, with a click-through scatter so you can check whether the number is telling the truth.
Fit an ordinary least squares line to any pair of columns and get the diagnostics that decide whether the fit means anything: residual plot, R², standard errors, and leverage.
Sample size before you launch, and a confidence interval after you stop. Both directions, with the assumptions written on the screen rather than buried in a footnote.
04The dataset library
14 synthetic datasets, 72,860 rows. Each page names exactly what is buried in the data and what to try against it.
05Who writes it
Nine practice areas, each owning the material closest to its day job. Every lesson and post carries the discipline it came from.
Ingestion, orchestration, and the unglamorous parts that keep everything else standing.
Turning warehouses full of raw tables into models an analyst can trust without asking anyone.
Designing tests that can succeed, and reading the results honestly.
Uncertainty, sampling, and the difference between a result and a finding.
Getting models out of notebooks and into places where they can do damage responsibly.
Tests, contracts, reconciliation, and finding out before the CFO does.
06Recent writing
Long-form articles on how the tools work, and shorter field notes from practice.
Real group means for one column across 8 segments, and what the pooled average conceals.
A measured correlation of -0.00 between two columns, what its square says, and the diagnostic that costs one line.
One column of a postings dataset, and what the shape of it means for anyone reading listings.