FIELD NOTES
Latest notes
Newest notes from the archive

A Code Block Label That Stays Put
Add a language label to Astro's Shiki code blocks with one pseudo-element, and keep it in place while long lines scroll sideways.

CSS Columns Masonry Reads in the Wrong Order
A column-count masonry grid shuffles a newest-first post list down each column; a capped CSS grid keeps it in reading order without JavaScript.

Tailwind Typography Lost Its Paragraph Spacing
An unlayered CSS reset quietly beat Tailwind Typography's prose styles; cascade layers explain why, and one @layer block fixes it.

First Cool Night of the Year
On the first cool evening of autumn, every window in the building opens and the courtyard ends up following one neighbor's piano practice.

fail2ban for SSH on Debian 13
Install fail2ban on Debian 13, understand the sshd jail the package already enables, tune bans in a local override, and check, test, and undo bans safely.

ufw Without Locking Yourself Out
Set up ufw on a Debian or Ubuntu VPS with SSH allowed first, a timed rollback in case a rule is wrong, and a clear view of the Docker ports ufw cannot see.

One Screw, Medium Length
A trip to the corner hardware store to replace a single cabinet screw turns into a careful matching session at the counter.

Unattended Upgrades You Can Actually Check
Enable automatic security updates with unattended-upgrades on Debian and Ubuntu, see exactly what it will install, pick a reboot policy, and confirm it really ran.

Add a Swap File to a Small VPS
Check memory first, create a swap file that survives reboots, set vm.swappiness with a sysctl drop-in, and remove it cleanly if you change your mind.

The Browser Tab I Kept Open for 143 Days
A browser tab holding a walking-trail map survives 143 days of updates and restarts while the trail itself quietly changes.

The Laundromat at 2:13 A.M.
A late-night laundry run comes with a washer that needs politeness, a dryer that counts upward, and two socks that belong to nobody.

A Safe 90-Second Linux Disk Space Triage
A read-only sequence for finding what filled a Linux server before deleting logs, images, caches, or data you may still need.