jwogrady Working notes on tools, and why they earn their place

A theme that refuses to build, and why I came around to it

resolves JRN 26-011

A date that depends on the build machine is not a date.

The theme hard-fails with no timeZone in config. Not a warning — a failed build, on a line I hadn’t written yet.

My first reaction was irritation, and I want to record that honestly, because I’ve been on the other side of this argument. A library that refuses to start over a missing config line is infuriating in the moment.

Then I worked out what it’s preventing. Unset, Hugo uses the build machine’s zone. An entry filed at 00:17 UTC is September 20 on a CI runner and September 19 on my laptop. The same commit produces two different sites, and an entry gets filed under a day its own archive page doesn’t cover.

That isn’t a bug you find. It’s a bug you notice, months later, in an index that’s been quietly wrong the whole time.

timeZone = 'America/Chicago'
[params.spectrum]
  timezone = 'America/Chicago'   # must match

The distinction I’m taking away: fail hard when the alternative is silent and plausible. A crash costs a minute. A plausible wrong answer costs however long it takes to notice — and the whole point is that nothing makes you notice.