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.
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.
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 rule that makes any of this safe to ship.
Four rungs. The third one is the one that matters.
-
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.
-
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.
-
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.
-
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.
Four states.
One per quarter, stamped server-side, with its own palette and its own illustration set.
The site goes green and pink at one minute past midnight on the first of March, whether or…
Corn and moss-lift, the brightest state the site ever reaches, and the one that gives the contrast guard…
Sunset and furrow. The busiest state on the farm and the warmest on the screen, and the only…
Sky and slate, the coldest state and the quietest. It is also the state most people never see,…
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
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 rest of the state layer.
How it works
Build-time default, runtime hydration, and the rule that live data never blocks first paint.
The field palette
Moss, corn, sunset, sky and blossom, and which one is which season.
The poster palette
Ink, petrol, chalk, ochre and claret. The interface, which does not move with the season.
Nightworking
Only the role tokens swap. The pigments deliberately do not.
Second screen
What the site becomes on a Friday night when a new chapter drops.
Reduced motion
What every piece of motion degrades to, and why the identity survives it.
The weather
One API, four sky treatments, and a fallback nobody would notice.
The ticker
Five lines of ambient estate state in the header rail.
The illustrations
Why every scene plate exists more than once and how one gets chosen.
The crop stage
BBCH numbers, what they change on the site, and what they do to Plotting.
The contrast guard
Ochre on chalk and corn on chalk, and what happens instead.
The five feeds
Every input, where it comes from, how long it is cached and what happens when it is not there.
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