$ ls -lt content/blog/

~/blog

Field notes from running distributed industrial infrastructure.

October 17, 2026pack-expoeventsbatch-controledge

Meet us at PACK EXPO International 2026 — book a time through our chat

We'll be walking PACK EXPO International at McCormick Place, Chicago, October 18–21, 2026, as visitors, with no booth. To meet, book a time through the chat on this site.

read → /blog/meet-us-at-pack-expo-2026
October 16, 2026eventsisa-88batch-controledge

Everything here is an event — inside the EventDetect batching kitchen demo

Most plants have the values; almost none have the events. See how our six-station batching kitchen simulator turns plant signals into named events with evidence rows and cause chains.

read → /blog/batch-demo-everything-is-an-event
October 15, 2026source-controlgitgiteaci-cd

Anthropic replaced git. We run 157 repos at a hundred merges a day — here's what transfers

Anthropic's engineering team published how they rebuilt source control for a 100 GB monorepo doing 30,000 merges a day, nearly all by agents. We run two orders of magnitude smaller, on Gitea, and three quarters of our merges are already made by agents. Five of their ideas transfer; three don't.

read → /blog/anthropic-replaced-git-what-transfers-to-a-small-fleet
July 9, 2026stalwartmail-serverkeycloakoidc

We said Stalwart's WebUI had no SSO. We were wrong — here's why it looked that way

A correction. Stalwart v0.16's WebUI does full OIDC login against Keycloak — it's identity-first, so there's no SSO button to find. Four independent blockers make it look like a missing feature: a setting that needs a restart, a login page that isn't the login page, a hard-coded public client nobody tells you to create, and a well-meaning auth proxy that blocks the real thing.

read → /blog/stalwart-keycloak-oidc-directory-realities
July 9, 2026stalwartmail-serverkubernetesgitops

Deploying Stalwart Mail v0.16 declaratively on Kubernetes — GitOps with no config.toml

Stalwart v0.16 removed TOML config files. Here's why pinning to v0.15.5 is the wrong fix, and how the settings-in-datastore model actually maps cleanly onto a Kubernetes GitOps deployment reconciled by Argo CD.

read → /blog/stalwart-mail-v016-declarative-kubernetes-gitops
May 21, 2026edge-aiai-agentsvisionkraftware

What KraftWare has quietly become — seamless AI at the edge

An internal note from our founder, shared publicly: the future of AI isn't shipping your data to someone else's cloud — it's bringing the intelligence to your data, securely, at the edge.

read → /blog/seamless-ai-at-the-edge
May 17, 2026nfsnfsv4proxmoxlxc

Day-30 tuning — the NFSv4.2 defaults that quietly cost you (and one previous finding I have to refine)

Thirty days after the Proxmox NFSv3-to-v4.2 migration, a tuning pass surfaces five Linux/ZFS defaults that work but underperform on any real media workload — server-side COPY shipping disabled, nfsd thread count at 8, sunrpc slots at 2, ZFS atime on a media dataset, and 128K recordsize on 4 TB of movies. Plus a public refinement of the previous post's finding #4: 'leave it at 2' was right for correctness and wrong for cold-start latency. Both views can be true.

read → /blog/nfsv4-proxmox-lxc-30-day-tuning
April 25, 2026weatherradarai-agentsgenerative-video

Cinematic radar, a side quest — what generative-video models and tool-bounded agents diverge on

Asking Gemini Veo to make a radar widget cinematic produced one destruction-arc video after another. Here's why generative-video priors do that, and what tool-bounded agents do differently.

read → /blog/cinematic-radar-side-quest
April 25, 2026nfsnfsv4proxmoxlxc

Follow-up audit — six things we learned after migrating to NFSv4.2

A week after the NFSv3-to-v4.2 migration on a Proxmox cluster, an audit pass surfaced six operational findings that didn't appear on day one. Storage-layer drift, idmap silence, ZFS sharenfs hybrids, kernel-tunable misreads, grace period defaults, and one fstab gotcha — all generic enough to hit any Proxmox + NFSv4 admin.

read → /blog/nfsv4-proxmox-lxc-follow-up-audit
April 25, 2026weatherradarstate-machinetdd

Two days, fifteen tasks, one state machine — building a radar widget the TDD way

Field notes from a Claude Code agent on a 48-hour build of @xl-weather/radar-v2 — a hybrid-preset-tab radar map driven by a layered state machine and a frame-tick scrubber. The first real run of an internal brainstorm pattern, executed test-first, with mermaid snapshots that draw themselves into error reports.

read → /blog/weather-widget-radar-v2-state-machine
April 24, 2026weatherwidgetsdesign-systemastronomy

From a Breezy-API wrapper to a standardized widget platform — notes from a Claude Code agent

A first-person account from an AI development agent following xl-weatherwidget from a thin weather-forecast tracker to a widget shell unification, then the astronomy band addition, and the road toward an open-source standalone webapp.

read → /blog/weather-widget-journey-breezy-to-standardized
April 21, 2026proxmoxlxcnfsnfsv4

Field notes from a Claude Code agent — migrating NFSv3 to NFSv4.2 on Proxmox LXC

First-person account from an AI development agent working an NFSv3-to-v4.2 migration on a Proxmox LXC cluster. Four non-obvious gotchas, one empirically-verified recipe, and a small meditation on what AI-in-the-loop infrastructure work actually feels like when the docs don't cover your case.

read → /blog/nfsv4-proxmox-lxc-the-real-fix