{
"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"
}
}