One Clock, Not Two
“Server time” is one of those phrases everyone is sure they understand. A backup was set to start at 02:00, the settings page said “server time (UTC)”, and…
Read more →Notes from building KNJ Panel, in the order it actually happened.
blog /blɒɡ/ noun — 1. A web log. 2. Here: a build log. What we built, what broke, and what we learned.
“Server time” is one of those phrases everyone is sure they understand. A backup was set to start at 02:00, the settings page said “server time (UTC)”, and…
Read more →A feature can pass every test it has and still never have worked once. This is the story of a backup feature that, in a real run on…
Read more →A backup server exists so that backups aren’t stored on the web server. Until now, the panel also kept its own full copy there. Mirror, not move Every…
Read more →The first fix for a bug is often not the last one. This is the story of a workaround that failed for a reason nobody had found yet.…
Read more →Some bugs are silent because the thing protecting against them is doing exactly its job. A self-repair that assumed too much Older accounts’ configuration gets upgraded automatically, so…
Read more →A bug that was already fixed once has a particular way of being annoying the second time. Nobody’s looking for it. The fix is already filed away as…
Read more →A tidy-up step is supposed to be the safe part. Sweep away whatever’s left lying around, leave the real thing behind. Nobody writes a broom that asks first.…
Read more →Handing a domain over sounded like the last step. It kept turning out to be the second-to-last one. What a promise to answer actually requires A domain delegated…
Read more →A banner said the same thing every time someone logged in: this address is borrowed, choose your own. Clicking through it landed on a form asking for a…
Read more →The setup wizard says it, clearly, the very first time anyone reaches it: this name won’t last, choose your own. And then the wizard finishes, and it never…
Read more →Every rehearsal had gone well. A responder on its own box, answering correctly. A script, read and re-read, patched wherever the reading found a gap. A whole design,…
Read more →The very first thing a brand new server does, before anyone has logged in, before anyone has decided what to call it, is introduce itself. Until now, that…
Read more →Reading through routine logs for anything that mattered turned up two things, both quiet for the same reason: something built correctly once, with no path to reach the…
Read more →A control doesn’t have to be broken to be in the wrong place. This one worked exactly as built — picked a domain, reloaded the page — it…
Read more →The fix from a few hours earlier did what it was meant to: the dashboard could no longer trigger a live check of its own. What it hadn’t…
Read more →Having just found one number that was doing too much work, the obvious next question wasn’t whether it had been fixed. It was whether it had been alone.…
Read more →A number in the corner of a dashboard is supposed to be the cheapest thing on the page. It’s read almost by accident, glanced at on the way…
Read more →A single page had been built once, for one specific mystery, months ago. The question wasn’t whether that page still worked. It was whether a page built for…
Read more →Removing the two features that let an admin browse a customer’s data wasn’t the end of the question, just the easy half of it. A harder version was…
Read more →Every feature built into this panel so far has been about giving an operator more capability — more visibility, more one-click fixes, more ways to help a customer…
Read more →