Field note · May 27, 2026

Why the datasets are seeded

Every dataset on this site is generated at build time from a fixed seed. Rebuild the site and the CSVs come out byte-identical.

1 min read ·Data platform ·engineering quality

Every dataset on this site is generated at build time from a fixed seed. Rebuild the site and the CSVs come out byte-identical.

That is not an optimisation. It is what lets a lesson say "the row with a zero distance and a non-zero fare" and still be correct a year later. Random-at-build-time datasets would mean every deploy churns megabytes of CSV, every example needs hedging, and the git history becomes noise.

python
def make_rng(seed_text):
    h = 2166136261
    for ch in seed_text:
        h = ((h ^ ord(ch)) * 16777619) & 0xFFFFFFFF
    ...

A hash of the dataset name seeds a small PRNG. Same name, same numbers, forever.

The constraint this imposes is that every generator has to draw its randomness in a fixed order. Add a column in the middle of a spec and every subsequent draw shifts, which changes every row — so new columns go on the end, and a genuine change to a dataset gets a new seed and a note on the dataset page rather than a silent rewrite.

That is a real cost and it is worth paying. The alternative is a dataset library where every example needs hedging and no lesson can point at a specific row.

Reproducibility is cheaper to build in than to retrofit.