{ "slug": "dns-night", "title": "The Night I Broke DNS and My Wife Couldn't Reach Facebook", "excerpt": "It was 2 AM when Aundrea's phone stopped loading Instagram. I thought I was being helpful. I was wrong.", "structure": { "hook": { "type": "timestamp_location_crisis", "content": "It was 2 AM when Aundrea's phone stopped loading Instagram. Not a crisis by most standards, but in our house, when the wife can't reach Facebook at oh-dark-thirty, that's DEFCON 1." }, "struggle": { "attempt_1": { "what": "Rebooted the router", "why_failed": "The problem wasn't the router. It was me. Three hours earlier, I'd been 'optimizing' our Pi-hole setup." }, "attempt_2": { "what": "Flushed DNS caches on every device in the house", "why_failed": "I was treating symptoms. The Pi-hole had blackholed something critical, and I couldn't remember which config file I'd edited." }, "escalation": "By 2:30 AM, I'd SSH'd into three different servers, had six browser tabs open with competing DNS guides, and was questioning every life choice that led me to self-hosting." }, "moment": { "realization": "I found it in /etc/pihole/adlists.list. I'd added a blocklist so aggressive it caught Facebook's CDN. The realization hit at 2:47 AM: I was the monster I was hunting.", "quote": "'You broke the internet,' Aundrea said, not looking up from her phone. She wasn't wrong." }, "fix": { "solution": "Commented out the overzealous blocklist, restarted Pi-hole FTL, and waited 30 seconds for the TTL to expire. The longest 30 seconds of my marriage.", "caveats": "Fixed Facebook, but now I had a whitelist that's 200 lines long and growing. The blocklist stayed commented out. Some battles aren't worth fighting at 3 AM." }, "reflection": { "lesson": "Now I test DNS changes on a Tuesday afternoon, not when the household is asleep. Also: Aundrea gets a dedicated DNS server that bypasses all my nonsense. Happy wife, functioning DNS.", "closing": "The Pi-hole is still running. So is my marriage. Both require more maintenance than advertised." } }, "voice_markers": { "i_statements": 15, "quotes": [ "It was 2 AM when Aundrea's phone stopped loading Instagram.", "'You broke the internet,' Aundrea said, not looking up from her phone.", "I was the monster I was hunting.", "The longest 30 seconds of my marriage.", "Happy wife, functioning DNS." ], "cost_mentions": [ "2 AM", "2:30 AM", "2:47 AM", "3 AM", "marriage", "wife" ], "struggle_patterns": [ "I thought I was being helpful. I was wrong.", "I couldn't remember which config file", "questioning every life choice", "longest 30 seconds" ], "admissions": [ "I was the monster I was hunting", "I was treating symptoms", "more maintenance than advertised" ] }, "style_notes": { "tone": "Self-deprecating humor, technical competence undermined by human error, domestic stakes", "structure": "Crisis → Escalating failures → Realization → Fix → Reflection", "technique": "Specific timestamps create urgency, quotes break up technical narration, admission of fault before solution" } }