Writing
Logs
I wrote all these for you, so don't be rude and enjoy every log.
-
I Deleted /etc/passwd on My NAS
Two weeks into Linux, I pointed tee at the password file because I thought it worked like cat. The recovery from a shell with no name, and what it taught me.
-
Proving the Firewall Innocent
My firewall has a history of breaking legitimate traffic, making it the default suspect for every outage. Seven steps that clear or convict it in a minute.
-
Crossing Fields: Kubernetes Internals
Kubernetes on bare metal, explained with the database concepts I already knew. Static pods, the kill sequence, headless DNS, and the table back to SQL.
-
Same Job, Two Engines: InnoDB and Iceberg Internals
The OLTP vs OLAP post. What InnoDB was optimizing for, and the two paths that make a lakehouse work: pruning on the read and the atomic pointer swap commit.
-
Detection Is Easy, Recovery Is Hard
My firewall's watchdog detected every outage and kept failing to reboot the box. Every layer I added broke something new, including one kernel panic.
-
When Both Mirror Drives Fail the Same Way
A ZFS mirror lost both NVMe members to the same firmware bug, one night apart, and I fired the second shot myself. What redundancy actually assumes.
-
Three Bugs Wearing One Trench Coat
Four months of DNS outages that were never one problem. A failing port, a 534k entry multiplier, and a recovery command that planted an impostor every run.
-
My Backups Ran Green Every Night and Backed Up Nothing
A replication task can succeed every night for months while protecting zero bytes. The audit that found it, and the ZFS semantics that let it happen.
-
MySQL on Kubernetes: StatefulSet and GTID Replication
Running replicated MySQL on a two-node bare-metal cluster: why StatefulSet, how pod identity picks the config, and what GTIDs actually buy you when a pod dies.
-
The Homelab: Hardware and Architecture
The two-node Kubernetes cluster, 25GbE fabric, ZFS storage, and hardened network that every other post on this blog runs on, and why each piece is there.
-
I Built Airflow, Spark, and Iceberg by Hand in MySQL
StockAlgo v1 pushed a MySQL monolith to nearly 2 billion rows on hand-rolled scheduling, partitioning, and staging. What each modern tool actually replaced.