Dark Mode: Worth Building, or a Distraction From What Matters?
Dark mode looks like a small toggle but it's rarely a small job to do properly. Here's how I decide whether it's worth building for a given system.
Insights
Practical thinking on business systems, automation and software built around the way organisations actually work.
Dark mode looks like a small toggle but it's rarely a small job to do properly. Here's how I decide whether it's worth building for a given system.
I use both Laravel Forge and Laravel Cloud on live projects. Here's the honest difference between them, and how I decide which one a project needs.
A look at the stack I reach for on most projects, why boring and well-supported beats fashionable, and when I'd pick something different.
Adding a deleted_at column is easy. Making soft deletes actually work with uniqueness rules, relationships, restores, reporting and GDPR is a different job entirely.
An updated_at column tells you something changed. It doesn't tell you who changed it, what it was before, or whether a person or a script did it. Here's what a proper audit trail looks like.
A plain-English look at idempotency: the one question that tells you whether your software will double-charge, double-book or double-email a customer when something runs twice.
Queuing background jobs isn't just for big apps handling huge traffic. It's how I stop a single slow email or API call from taking down a form submission for everyone.
A webhook firing successfully isn't the same as your system handling it correctly once. Here's why retries and duplicate delivery cause double charges, and how to build handlers that don't care how many times an event arrives.
A single 'balance' column looks simple until two requests hit it at once, or a customer disputes a charge and asks where the number came from. Here's why credits, refunds and prepaid balances belong in a ledger.
Got a problem worth solving properly?
Tell me what's slowing your business down. The first conversation is free and straightforward, and it's with me, not a salesperson.
Or email me at josh@thackr.co.uk