A launchd Job That Fires Once on Deprecation Day, Then Deletes Itself — and the 4 Pitfalls I Hit
This is a follow-up to my earlier post, " Automating a config migration with a one-shot launchd job ." This time the trigger is an external event wi…
Tech news from the best sources
This is a follow-up to my earlier post, " Automating a config migration with a one-shot launchd job ." This time the trigger is an external event wi…
Automation doesn't break when you write it. It breaks in production, weeks later, quietly — and my Chrome concurrency limit broke three separate tim…
Log files never announce themselves. They just sit there growing until something breaks. This is part of my "Claude Code environment" series — the p…
Nobody plans for log files. You wire up a background job, it works, and six weeks later a directory you never look at is quietly eating your disk. I…
Your Claude Code setup doesn't break in one dramatic moment — it degrades a few bytes at a time, and by the time you notice, you've been paying a co…
In my previous post, Monitoring Claude Code hook watchdogs with launchd , I set up liveness monitoring for hooks — and immediately ran into the next…
This is the next installment in my "Claude Code environment" series. Combined with the idempotent marker implementation from the previous article, I…
This is a continuation of my "Claude Code environment" series. Last time I wrote about making Google Calendar the ground truth for my Vault . This t…
Generating skills automatically is the easy part. Deciding when to throw them away is where everything falls apart. In my last post I covered auto-d…
This is another entry in my "Claude Code environment" series. Last time, in Multi-slot launchd retry design , I wrote about the "idempotent morning/…
My previous piece, " Making a launchd Job Unload Itself ," built a job that runs exactly once and then unloads itself. This time it's the mirror ima…
This continues my "Claude Code environment" series that started with showing rate limits live in the status line . This time it's a one-shot model-m…
In my previous autopilot article , I walked through a setup that runs Claude unattended via launchd. This time I want to talk about what happens beh…
This is a follow-up to my earlier post, " Automating a config migration with a one-shot launchd job ." Some breaking changes come with a known expir…