Pick a crate of lager, shandy or cider and we will knock 50% off a box of crisps. Take the crate
Chapter 60 · Seasoning

The site is the season it actually is.

Seasoning is the live state layer. The date decides the palette and the illustrations, the weather at OX7 decides the sky and the ambient line, the crop stage decides what the beasts are doing, the weighbridge decides the ticker, and a manual flag decides whether the site is in second-screen mode. Five inputs, and not one of them is allowed to hold up the first paint.

5 live inputs
4 seasonal states
0ms blocked on live data
2 colour pairs refused
Seasoning

Right now, at OX7.

The five inputs, their current readings, where each one comes from and how long it is cached before we go and ask again.

Right now at OX7

Watching the wheat

Harvest is coming

  • Date and season Autumn · day 242 System clock, server-sideno TTL
  • Weather at OX7 14°C, light rain Met Office DataPoint or equivalent15 min
  • Crop growth stage Winter barley, BBCH 92 Farm ops entry24 h
  • Live yield 4.9 t/ha Weighbridge, or an ops entry when the bridge is down1 h
  • Series window Closed · series six in production Manual flagno TTL

20°C at the farm shop, and dry for now

Winter barley running at 4.1 tonnes the hectare

Chapter 41 is open. Forty came before it

Every value above is a seeded placeholder in this build. Swapping in the real Met Office feed, the weighbridge and the ops entry means replacing one PHP function — dse_rail_ticker — because nothing else on the site reads those numbers directly.

The degradation rule

The rule that makes any of this safe to ship.

Four rungs. The third one is the one that matters.

  1. Render the seasonal default at build time

    The season comes from the server clock. It is known before a single request is made, it cannot fail, and it is stamped onto the root element as data-season so the palette is correct in the very first byte of HTML.

    That means the site is always in a complete, coherent, correct-looking state before any network call has been made to anybody.

    The season is not a feed. It is a fact about the calendar.

  2. Hydrate the live values afterwards

    Weather, crop stage and yield arrive after first paint and replace their placeholders in place. Nothing reflows, because the placeholder occupies the same box as the real value.

    A reading that arrives is an improvement. A reading that does not arrive is not a failure state, because there was never a hole where it should have been.

  3. If the feed is down, the site simply looks like the season it is

    This is the whole rule, and it is worth stating in the plainest possible terms: if the weather API is unavailable, nothing on this site breaks, nothing shows a spinner, nothing shows an error, and nothing shows a stale reading pretending to be current.

    The page looks like autumn, because it is autumn, and the ambient line falls back to the seasonal default. Most visitors would never know a feed existed.

    A site that needs the weather to render is a site that is down when it rains.

  4. And nothing live is ever load-bearing

    No price depends on a feed. No availability depends on a feed. No legal text depends on a feed. If every one of the five inputs failed at once, the only thing lost is texture.

    That constraint is why the whole layer is allowed to exist at all.

The same Cotswold field printed in winter, spring, summer and autumn palettes.
The illustration swap

One field, four states.

The same ground, printed four times. Scroll it and the year runs. Under reduced motion it is a single frame and a caption, which is a storyboard, which is honest.

Scroll to run it. 1 / 4

Right now

The five inputs, in full.

Input, source and effect

Date and season
Field palette and illustration set swapSystem clock, server-side · no TTL
Weather at OX7
Sky treatment and the ambient copy lineMet Office DataPoint or equivalent · 15 min
Crop growth stage
Beast and crop illustration stage, and Plotting statusFarm ops entry · 24 h
Live yield
The ambient ticker in the header railWeighbridge, or an ops entry when the bridge is down · 1 h
Series window
Second-screen mode activatesManual flag · no TTL

What happens when each one fails

Date and season
Cannot failIt is the server clock
Weather at OX7
Falls back to the seasonal sky and the seasonal ambient line
Crop growth stage
Falls back to the seasonal illustration stage
Live yield
The ticker line is omitted entirely, not blanked
Series window
Defaults to closed, which is the quieter of the two states

TTLs are deliberately long. A fifteen-minute weather cache is not a compromise — nobody needs to know it started raining in Chadlington ninety seconds ago.

The estate list

Told when the site changes state.

Four emails a year, on the first of March, June, September and December, with what changed on the site and what changed in the fields. It is the least urgent newsletter on the internet.

  • One email per season
  • What changed on the site and on the farm
  • Nothing else, ever

Next along the route

How it works

Carry on
Basket Book the pub Plot a field Join the list Bother us

Snooping, briefly.

We use a small number of cookies to keep your basket upright and to work out which pages people actually read. We do not sell anything about you to anyone, because that would be a rotten way to behave.

Read the detail