log in
consulting hosting industries the daily tools about contact
· 6 min read · Stripe Billing

Stripe Billing Idempotency Keys: What You're Probably Skipping

Most Laravel devs add idempotency keys to charge calls and call it done. That's not enough, and I've got the production incident to prove it.

Most Laravel devs add idempotency keys to their charge or payment intent calls and consider the job done. I did too, for longer than I'd like to admit. Then a subscription billing job retried after a network timeout and a Seattle-area e-commerce client ended up with two active subscriptions, two upcoming invoices, and…

Read the daily →
· 6 min read · Laravel

Laravel Queued Jobs and DB Transactions: The Silent Corruption Zone

Database transactions in queued jobs don't behave the way most people expect, and the gap between what you think rolled back and what actually did can corrupt your data quietly.

Most developers assume that if a queued job throws an exception, the database rolls back cleanly. In my experience, that assumption is half right at best - and the half that's wrong is the half that corrupts your data without a single error log entry. I hit this properly for the first time on a billing pipeline for an…

Read the daily →
· 6 min read · Backup Strategy

You Don't Have Backups. You Have Backup Files.

Taking backups and having backups are two different things. The gap between them is a restore test you've never run.

Every client I've ever onboarded has told me they have backups. Almost none of them have had backups. What they had were backup files - nightly dumps sitting in an S3 bucket, untouched, untested, quietly rotting. There's a meaningful difference between those two things, and most people don't find out which category…

Read the daily →
· 6 min read · Single-VM Architecture

The Math That Makes Vertical Scaling the Right Call

Sometimes the cheapest fix for a slow app isn't better code - it's just more CPU. Here's when the numbers make that obvious.

A few months ago I was staring at a slow Laravel app for an e-commerce client - page generation times creeping up to 900ms under modest load. My first instinct was to reach for the profiler. My second instinct, after doing the math on billable hours, was to price a CPU upgrade. The upgrade won. Here's how I think…

Read the daily →
· 5 min read · DocuSign API

DocuSign Webhooks vs. Polling: The Delivery Gap That Bites You

DocuSign's envelope status webhooks look simple until you get duplicate events and double-process a completed contract. Here's the gap and how I close it.

DocuSign's Connect webhook system looks straightforward until you've shipped it to production and watched it fire the same event twice within 400 milliseconds, triggering two contract activation emails to your client's customer and provisioning their account twice. That happened to me on a real estate SaaS project…

Read the daily →