For a month this blog published tech news almost every day: model releases, security incidents, platform changes. Some posts turned out well. But none of them were about what I actually do, and anyone who wants tech news already has a hundred better places to get it.
So it changes course. From now on this is my build log: the projects I build, what I ship and what I fix. I've taken the news posts down. Nothing new will show up here unless it comes from something I built, broke or learned.
What to expect
- At most once a week, and only if there's something worth telling. If a week is all small fixes, there's no post. I'd rather publish less than fill space.
- The open-source projects in detail: PullPilot, vuzon, EasyPages, Glassys and whatever comes next, with links to the code.
- Products that aren't open source, like this site or tercio14.com, told from the outside: what changes for the people who use them, and the lesson behind it when there is one. Not their internals.
The first two posts of the new stage are already up: the shared pipeline for all my open-source repos and the Glassys launch.
The tune-up that came with it
While I was at it, I gave the site a thorough review, from the content pipeline down to the last aria attribute. Nothing was broken for readers, but there were enough latent problems to fill a post.
Node 26 everywhere. The platform that runs the site's scheduled tasks was retiring Node 22. Instead of upgrading only those, I moved the whole project to the same major line: local development, CI, the site build and the tasks. Two different Node versions in the same chain is the kind of thing that eventually bites.
A PWA that doesn't nag. After every deploy the site showed "New version available, reload to update". But pages always come fresh from the network, so in the usual case what you were reading was already the new version and the notice asked you to reload for nothing. Now it updates silently, and the one case that really matters (a tab left open from before a deploy) switches to a full page load on the next click, so it never mixes code from two versions.
Prefetch, twice. Cloudflare's Speed Brain was answering 503 to every prefetch, because it only serves from its cache and never on routes that go through a Worker. I turned it off. Then I found that the framework's own prefetch was configured but never actually ran. It now prefetches on hover, including the language switch, so going from Spanish to English is instant.
The feed behaves. Clearing a search left the posts in relevance order, and "load more" then revealed them out of date order. And going back from a post lost how many you had loaded, so you landed at the bottom of the page. Both fixed.
Language signals. The site told search engines the versions were es-ES and en-US. An English reader in the UK, Canada or India matched neither and was sent to the default, which is Spanish. It's now plain es and en.
The content pipeline. The CMS rounds the "last edited" time down to the minute. If a render happened in the same minute as an edit, the site could keep a half-written version of a post and consider it up to date forever, because the date never changed again. Now a page edited in the last 90 seconds is published but not cached, and the next build renders it again. I also fixed a date comparison that could fail the whole build when one date had a time and the other didn't.
None of this changes how the site looks. It changes how much I can trust it. And that's exactly the kind of thing this blog is going to be about.
Comments