The Daily
A note a day on APIs and the realities of shipping web applications. Stuff I've actually learned across 25 years of doing the work.
Loops Is the Mailchimp Replacement I Didn't Know I Needed
I switched a SaaS client from Mailchimp to Loops for transactional and lifecycle email. The API is clean, the mental model is sane, and I haven't looked back.
Mailchimp is fine if you're sending a monthly newsletter to a list you built from a contact form. The moment you need to send a password reset, a trial-expiry warning, and an onboarding drip from the same platform — and keep your user records in sync — it becomes a pile of duct tape. Loops solves that problem, and its…
Read the daily →Vonage vs. Twilio for SMS: Where the Gaps Show Up in Production
I've run both in production at volume. The pricing sheets look closer than they are, and deliverability differences show up in places you won't find in any comparison blog post.
I've shipped SMS integrations on both Vonage and Twilio across a handful of production systems — appointment reminders for a healthcare client, order status notifications for an e-commerce shop, and alert pipelines for an industrial monitoring setup that fires messages at weird hours when equipment goes out of spec…
Read the daily →Dead-Man Monitoring for Laravel Cron Jobs Without Paying for It
Paid cron monitoring SaaS is fine until you're running 40 scheduled tasks across a dozen client apps. Here's how I do heartbeat monitoring myself.
Paid cron monitoring tools are great until you're managing scheduled tasks across a dozen client applications and the per-monitor pricing starts adding up faster than the problems it's catching. I've used Cronitor, I've used Healthchecks.io, and they're genuinely well-built products. But at some point I got tired of…
Read the daily →Algolia's index sync problem when Laravel events fail mid-write
Algolia's Laravel Scout integration is deceptively simple until a job fails mid-write and your search index quietly drifts from your database.
Algolia's Scout integration looks like magic until the day you realize your search results are returning records that were deleted six weeks ago, or missing products that have been live for a month. The integration is genuinely good — but it has a consistency problem that Scout's documentation barely acknowledges and…
Read the daily →MariaDB Slow Query Log in Production Without Wrecking Your Disk
The slow query log is one of the most useful tools in MariaDB, and one of the easiest to misconfigure into a disk I/O disaster. Here's how I actually run it.
The slow query log is the first thing I enable when a client's app starts feeling sluggish, and the first thing I disable when I forget to set a sane threshold. I've done both. This post is about doing the former without accidentally doing the latter. What the Slow Query Log Actually Does It's straightforward: MariaDB…
Read the daily →