The Backup Script I Should Have Written Years Ago
A SMART-error scare on my laptop turned into finally fixing techpad's embarrassingly loose backup setup, here's the boring three-layer script that replaced it.
A SMART-error scare on my laptop turned into finally fixing techpad's embarrassingly loose backup setup, here's the boring three-layer script that replaced it.
After thirteen years, I finally killed the ancient PHP contact form on this blog and replaced it with authenticated transactional email, once I realized it had been silently failing for months.
I finally ran a link checker against 900 old posts going back to 2011 and found nearly a third of every link Ive ever posted is dead. Heres what broke, why, and what I did about it.
Wi-Fi is great for plugs and cameras but terrible for coin-cell sensors. Here's why Zigbee sensors run for years, and how to add a Zigbee mesh to Home Assistant.
I finally replaced the janky mailto link on my site with an actual contact form backend, and wrote down what worked so I stop re-learning this every three years.
A build log: unlocking, rooting, and re-flashing a spare Moto G34 5G with LineageOS to turn it into a permanently-installed Android Auto brain that runs YouTube, Netflix, and any other app on the car's factory display.
A full build log of turning a 172×640 touch strip display into a clock, voice assistant, alarm/timer hub, and push-notification device — including every hardware quirk and bug fixed along the way.
I finally killed my 63-tab habit by replacing every browser tab manager I've ever tried with a plain text file and a cron job that emails me a guilt trip every morning.
After an UPDATE-without-a-WHERE scare wrecked my category taxonomy for four minutes, I finally set up real automated off-server backups for techpad using restic and cron.
After finding 4,812 spam messages in my contact form's mail folder, I spent a Sunday fixing it with honeypots, rate limiting, and timing checks.
How using git worktrees instead of a single shared directory stopped my parallel coding agents from quietly wrecking each other's work.
A small local model plus a five-line cron job finally tamed my Downloads folder, after two failed attempts with fancier tools.