Seventy-eight items reached Done this week and none went to Won't Do. Three sites went live in two days — one a client's, two our own — which sounds like a burst of effort and was largely the opposite. The launches were short because the work that makes a launch short had been done weeks earlier.
The independent garage's site went live on the Saturday morning. Nameservers moved, the custom domain attached, email-hardening records were set at the new zone, and the old shared hosting was decommissioned within the hour — the client's hosting line reduced to nothing, which is what a static site on a free tier costs to run. Verification followed the same day: the legacy addresses redirect, the contact route works end to end against production, and the response headers set no cookies at all. The services agreement and its data-processing schedule were signed on the Wednesday, which is the order these things are supposed to happen in.
CronCal went live on croncal.dev the day before, making public a tool that has been quietly internal for most of a year. Both the apex and www are custom domains on the static host, with certificates issued and renewed automatically, strict transport security on each, and an authorisation record naming the one certificate authority permitted to issue for the domain — housekeeping that matters on exactly one day, which is the day somebody tries to issue a certificate nobody asked for. An end-to-end suite covering five scenarios across three browsers went in alongside it. Shared links now carry their own view state, so a link that names a timezone reproduces that timezone for whoever opens it instead of quietly substituting their own: the kind of behaviour that is invisible when it is right and baffling when it is not.
N17 Time went live on n17time.app over the same weekend, built and shipped in a day. One worker refreshes Tottenham's next fixture and the opponent's recent form from a third-party fixtures feed into a key-value store on an hourly schedule, and the page is served from that stored snapshot rather than from the feed. No cookies, no third-party requests, no web fonts; the whole page is a few kilobytes. Kickoff renders in UK time with scripting disabled and converts to the reader's own zone when it is not. If the feed stops answering, the page serves the last good snapshot — established by putting a bad token in and waiting for the next scheduled run, rather than by reasoning about it. A live-match state went in the same day, decided from the clock at render time so that it stays correct between refreshes.
Forty-seven of the week's seventy-eight items belong to that project, and about thirty-five of them closed together in a single pass. They were last year's plan for it: onion layers, repository wrappers, separate domain and infrastructure and presentation folders — a considered architecture for a page that displays one football fixture. It was retired in favour of two source files, one namespace, one key and one schedule. Those thirty-five are worth naming as what they are, which is a plan closed rather than work delivered.
— On architecture —The careful design was the one that never shipped.
The junior chess club's continuous integration was rebuilt on much the same instinct. Its required job had been running four browser checks on every change, including changes that touched no page at all. Those now run only when something under the site directory has changed, and the heaviest of them only when a change could affect the thing it actually tests. Two properties were held deliberately while narrowing it. The job still runs and still reports on every pull request — it is the single required status, so a filter on the workflow itself would have left it silent and nothing could ever have merged. And it never narrows on doubt: a scheduled run, a missing base, an unrecognised event, all run everything. Every skip prints its reason and raises an annotation, on the principle that a skipped check is not a passing check and should never be able to resemble one. Seven minutes thirty-nine down to one minute one, and seventeen billable minutes to six, with nothing removed.
Link checking on the same site moved onto firmer ground. Every page carries an absolute canonical naming the club's own domain, and those are now asserted against a sitemap generated from the tree being deployed rather than fetched over the network against the version already live. Only the first can see a page that is being added; the second amounts to asking whether something about to be published has already been published, which is not a question with an answer. Links to anywhere else keep their network check, those being the ones that can rot without anybody touching them.
Both that site and our own consolidated onto a single canonical address in the same week, with www and the underlying platform hostname now redirecting to the apex. One address, one certificate path, one thing to write down.
Photographs are stripped of embedded metadata before publication, and the check proving it now fetches them back off the public internet rather than reading the copies on the machine that produced them — including the derivatives nothing on the page references, which are precisely the ones a cleanup driven by the markup would walk past. Proving a property where a file was made is not the same as proving it where the file now lives.
The same week offered a reminder of the difference between reasoning and measuring. Moving a page's images to a second origin was expected to make it faster: a second connection, less contention on the first. The argument was careful and it was written down. Measured, it was three hundred milliseconds slower — a new connection is a cost before it is ever a parallelisation win, and over a throttled link the cost arrives first. Four separate resource hints were tried afterwards and were worth nothing between them. Sound argument, backwards conclusion, which is what measurement is for.
The retained veterinary practice's service agreement and data-processing schedule were finalised, with signatures in progress. In progress across every project stands at eight.
Three launches in two days is not a matter of working faster. Two of the three run on infrastructure that costs nothing, behind gates that finish in about a minute, with certificates that renew themselves and checks that put their questions from the outside rather than from the machine that built the thing. The launch is the short part, and it is short on purpose.