From our projects
Blog
Release notes and engineering write-ups published across the Tradik projects. Every headline opens the original article on the site that wrote it.
Latest posts
Sources: Tradik · MDDB · SSG · XSLT · Shipyard · TradeWeather · Daemon Ports
What the disks cost the search index
Breadcrumbs, Honest Sitemap Dates and a Build Report
What changed in ssg 1.8.73 and 1.8.74: breadcrumbs that only link to pages that exist, a sitemap checked against Google's rules, dates in it that are true, the ssg version in templates, and a Go security fix.
One stale signal mask, and Claude Code froze on FreeBSD
Consoles that stopped taking input, zombies nobody reaped, a thread parked on a futex. The cause was one line in FreeBSD's Linux emulation layer that restored the wrong signal mask.
Print a Recipe, Cook From Your Phone, Swipe Through a Story
1.8.72 adds three things a reader sees: a Print / PDF button with a recipe card, a Cook Mode that keeps the screen awake, and Google Web Stories, all built from data the post already has.
Install Shipyard on a Raspberry Pi
Shipyard is one static binary and one SQLite file. A Raspberry Pi 4 or 5 runs it comfortably.
Migrating from native XSLT: how-to
On 17 November 2026, Chrome 158 stops running XSLT (the dates and the reasons). Two kinds of pages break: pages whose JavaScript calls new XSLTProcessor(), and XML documents the browser rendered through <?xml-stylesheet type="text/xsl"?>. This is the hands-on part: how to find both i
1.3.0: XSLT 3.0 in JavaScript, one option away
Two releases today. @tradik/xslt3 1.0.0 is a new package: XSLT 3.0 and XPath 3.1 in JavaScript, which also runs XSLT 2.0 stylesheets. And @tradik/xslt-processor 1.3.0, the browser XSLTProcessor replacement, can now hand a 2.0 or 3.0 stylesheet to it when you ask. Nothing changes for anyone who doesn
The problems Shipyard solves
One person can write software for fifty repositories. Keeping fifty repositories maintained, released and explained is a different job. These are the problems…
Three bugs in FreeBSD's ig4 driver, one dead touchpad
A touchpad that died on every resume turned out not to be a suspend bug at all. FreeBSD never started the I2C controller the touchpad is wired to, for three separate reasons.
When will the washing actually dry
Drying washing on a line is a weather-sensitive job with no product datasheet. Rain, relative humidity, wind and temperature decide it, which makes it a clean test case for the generic template engine. The laundry profile has no hard limits from a manufacturer, so it never produces STOP on its own.
What to record when weather stops work
Standing down a gang because the weather turned is a normal part of the job. Whether it becomes an entitlement or a cost lands almost entirely on what got written down that morning, and by whom. The asymmetry If the main contractor's programme slips and you have nothing in writing, the default assum
Everything published here
Posts written on tradik.com, and the archive of the blog that ran on pushpanel.io between 2018 and 2020 — infrastructure notes from the work of the time, kept because the problems did not expire with the domain.
- One stale signal mask, and Claude Code froze on FreeBSD
- Three bugs in FreeBSD's ig4 driver, one dead touchpad
- From Next.js to SSG: Rebuilding tradik.com
- Good, fast, cheap: the triangle in one diagrampushpanel.io
- Four ways to get files into a git repositorypushpanel.io
- FreeBSD 12.1: changing the default shell for jexecpushpanel.io
- FreeBSD jails: extending the jls commandpushpanel.io
- Installing Portainer on a remote machine over SSHpushpanel.io
- Trigger a Jenkins job from Bitbucket Pipelinespushpanel.io
- Mattermost 5.19 on FreeBSD 12.1, inside a jailpushpanel.io
Want this kind of engineering on your systems?
The tools we write about are the same ones we bring to client work. Tell us what you are building.