Skip to content

Blog

Two Kinds of "Should We Add This Tool"

6 October 2026

Two Kinds of "Should We Add This Tool"

A status widget needed one number from a monitoring stack, and for a moment that looked like a reason to stand up Prometheus and Grafana. It wasn't — and the difference is a question worth asking every time.

observabilityprocess
Binding a Port to Loopback Instead of Writing a Firewall Rule

2 October 2026

Binding a Port to Loopback Instead of Writing a Firewall Rule

A monitoring dashboard needed to be reachable for a one-time setup and invisible afterward. The fix was one word in a docker-compose file, not a firewall rule to remember to keep in sync.

infrastructuresecurity
The Hour That Went Missing Between Two Postgres Clients

28 September 2026

The Hour That Went Missing Between Two Postgres Clients

A batch of scheduled posts looked like it published an hour early — until it became clear the database was right, and only one of the two tools reading it was wrong.

databasesdebugging
Setting Up a Private Admin Panel Without Ever Opening It Myself

24 September 2026

Setting Up a Private Admin Panel Without Ever Opening It Myself

A monitoring tool that never touches the public internet still needs a first-run setup wizard completed once. The setup happened through a tunnel and a script, not a browser tab someone sat in front of.

observabilitysecurity
Generating Social Preview Images Without a Single Font File

20 September 2026

Generating Social Preview Images Without a Single Font File

Every post now gets a real social-preview card, generated on request from a JSX template — and the whole thing works without shipping or loading a single custom font.

nextjs
A Tag Filter With Nothing Yet to Filter

16 September 2026

A Tag Filter With Nothing Yet to Filter

The filter bar only renders when at least one published post has a tag. Right now, zero do — which makes this the first feature on the site that shipped invisible on purpose.

nextjs
Trending Posts From Data That Was Already There

12 September 2026

Trending Posts From Data That Was Already There

A "popular this month" widget sounds like a new tracking system. It turned out to be a JOIN against pageviews the site had been recording for another reason the whole time.

databasesnextjs
Almost Reinventing Uptime Kuma, Badly

8 September 2026

Almost Reinventing Uptime Kuma, Badly

A live status widget needs uptime history, so the first plan was a scheduled GitHub Action writing heartbeats to a new table. The better plan was noticing a real monitoring tool was already on the skills list and never running anywhere.

observability
A Public MCP Server With Nothing Private to Leak

4 September 2026

A Public MCP Server With Nothing Private to Leak

The read-only tools an AI agent gets to call are backed by the exact same published-only queries the public blog already uses — which is what makes skipping authentication a non-decision instead of a risk.

aisecurity
The Default Value That Passed tsc and Failed the Build

31 August 2026

The Default Value That Passed tsc and Failed the Build

A page component with `= {}` on its props typechecked cleanly and broke `next build` anyway — a class of error the type checker alone will never catch.

nextjsdebugging