SERIES

Systems & Tooling Notes

7 Posts·Last updated on June 07, 2026

How I Keep Project Notes

January 01, 2026

Summary This post records the operating principles I set when I first opened this blog. The detailed writing rules are now managed in the repository's . Public posts should preserve real context whil…


Treat PostgreSQL Docker Env Vars as Initialization Input, Not Live Config

May 21, 2026

The new environment variables were visible inside the PostgreSQL container, but Spring Boot kept failing with the old password. At first, I suspected , Docker Compose, and networking. The key log lin…


Validate the Judge Before Evaluating RAG Retrieval

May 21, 2026

In a RAG retrieval experiment, the first question was whether a proposed query brought back better search results than the baseline. I built an evaluation pipeline that compared the two result sets w…


Stopping Scanner Requests Seen in Sentry Profiles at Caddy

May 29, 2026

When repeated , , , and SQL dump probes showed up in Sentry Profiles, the easiest first move was to hide them in Sentry. But that only quiets the dashboard. The requests still reach the app container…


Layered Debugging for a Cloudflare Tunnel Outage

June 03, 2026

Backend developers usually live at layer 7. We look at API paths, status codes, request headers, and CORS. I reacted the same way when I saw in the browser after putting a stage API behind Cloudflar…


Running a Home Server as a Runtime-Only Docker Host

June 03, 2026

The hard part of this home-server setup was not installing Ubuntu or Docker. It was deciding the operational boundaries first. How should SSH access work? Where should HTTP requests enter? Which Dock…


Not Mixing Up OAuth and Service Accounts in Google Analytics MCP Setup

June 07, 2026

Attaching Google Analytics MCP took longer than I expected. Installing the MCP server itself was not the hard part. The real confusion came after that: which credential should I use, why did the brow…