Skip to main content
Immich v3 quietly swapped my vector database — read the release notes to the end
tooling

Immich v3 quietly swapped my vector database — read the release notes to the end

Immich is the self-hosted Google Photos replacement everyone recommends, and it ships features faster than its commercial rivals. v3 also swaps the Postgres vector extension underneath your library (pgvecto.rs → VectorChord) on a point-major bump. 'Ships fast' and 'boring backup for irreplaceable photos' are in tension — snapshot the DB before you pull, pin your version, and keep a dumb app-independent copy of the actual files.

2026-09-07 / 04 min
Craft Cloud vs my $6 VPS: what first-party serverless actually buys you
craft cms

Craft Cloud vs my $6 VPS: what first-party serverless actually buys you

My reflex to Craft's own managed hosting was the self-hoster's sneer — why pay for what I can run myself? But Craft Cloud isn't competing with my VPS's price; it's competing with my weekends and my bus factor, and that's a fairer fight than I wanted. What it includes, the lock-in the abstractions hide, and when managed hosting is the rational call vs. self-hosting pride.

2026-09-07 / 04 min
Agent Skills are just folders of Markdown — and after a year of MCP hype, that's the point
ai

Agent Skills are just folders of Markdown — and after a year of MCP hype, that's the point

The most useful upgrade to my agent workflow lately is embarrassingly low-tech: a folder with a SKILL.md in it. Anthropic's Skills (now an open standard) use progressive disclosure to load the right instructions only when relevant. They're the honest counterweight to MCP: half the time you don't need a live tool, you need the paragraph the agent was missing — versioned in git, no daemon. Plus the supply-chain caveat nobody screenshots.

2026-09-07 / 04 min
Proxmox went ARM — and it made me defend my boring x86 VPS
tooling

Proxmox went ARM — and it made me defend my boring x86 VPS

Proxmox VE 9.2 shipped official ARM64 support (Aug 2026, first-ever second architecture — but Grace/Vera servers, not Raspberry Pis). The homelab crowd cheered; I looked at my one x86 VPS running Docker on the host and defended it. Why a hypervisor is overhead you don't need on a single-tenant box — and the exact moment it would be worth it.

2026-09-02 / 04 min
Gin isn't replacing Claro — it's merging with it, and it's messier than the headline
drupal

Gin isn't replacing Claro — it's merging with it, and it's messier than the headline

The tidy story is 'Gin replaces Claro as Drupal's admin theme.' The reality that landed in core is a merge, not a swap: a new experimental 'Admin' theme (Gin was built on Claro, so the codebases had to be reconciled), shipped ~3 months late and alpha, with Claro still the default. What it means for gin_toolbar, and why 'default in Drupal 12' is likely-not-guaranteed.

2026-09-02 / 03 min
Self-hosting your domain's DNS with Technitium — and the single-point-of-failure footgun
tooling

Self-hosting your domain's DNS with Technitium — and the single-point-of-failure footgun

Technitium is a lovely all-in-one DNS server — authoritative, recursive, and ad-blocking. I run it, but I do NOT let it be the authoritative nameserver for my domain. On one box that turns 'my site is down for an hour' into 'my domain doesn't exist for an hour' (site, email, subdomains — all gone). Where the line is, the hidden-primary pattern, and the open-resolver risk.

2026-08-24 / 04 min
An honest OTel diet for a one-box blog
tooling

An honest OTel diet for a one-box blog

Observability tooling sells the full logs+metrics+traces meal, but my blog is one PHP process and one DB. Distributed tracing on a single-service box is air-traffic control for a paper plane. What actually earns its place: centralized log search + RED metrics from the access log. No always-on OpenTelemetry, no Tempo. The complement to my Beszel setup.

2026-08-24 / 04 min
The open-weight coding gap closed — so why are your agents still worse?
ai

The open-weight coding gap closed — so why are your agents still worse?

GLM-5 (MIT), Kimi K2.6, DeepSeek V4 and Qwen3.6 all caught up to the frontier this year. I swapped my agent to a top open-weight model expecting better diffs and got the same occasional failures — because the model was never the bottleneck. The harness is (tools, context assembly, retries, verification). Plus the self-hosting asterisk: 'open weights' ≠ 'runs on your box'.

2026-08-24 / 04 min
No-code automation is still code: ECA, the dead Rules module, and reviewable workflows
drupal

No-code automation is still code: ECA, the dead Rules module, and reviewable workflows

The tidy 'Rules is stuck, use ECA' story is out of date — Rules shipped a stable 4.0.1 in Feb 2026. But it already lost, and why says something honest about 'no-code': ECA models are version-controlled YAML you can't actually review in a diff, can't breakpoint, can't unit-test. Where ECA is the right tool, and where a 30-line event subscriber wins.

2026-08-24 / 04 min
You don't need Harbor: a tiny Zot pull-through cache for faster Coolify redeploys
tooling

You don't need Harbor: a tiny Zot pull-through cache for faster Coolify redeploys

Docker Hub's 100-pulls-per-6-hours (per IP) limit and slow cold pulls bite exactly when you're redeploying under pressure. A single-binary Zot pull-through cache fixes both. An honest comparison (Zot is more modern than registry:2, far lighter than Harbor — but not magically 'lighter' than registry:2), the real downsides, and whether one blog even needs it.

2026-08-17 / 04 min
Subscribe to Tooling