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.
MariaDB JSON vs Postgres JSONB: What You Actually Lose
I've run both in production. MariaDB's JSON support is not what Postgres JSONB is, and the gap matters more than MariaDB's docs let on.
I keep running into developers who assume MariaDB's JSON column support is roughly equivalent to Postgres JSONB. It is not. The marketing language is similar, the SQL syntax looks similar, but under the hood they're solving the problem at completely different levels of seriousness. After running both in production…
Read the daily →Finding Your Real Ceiling Before Traffic Does
Reading MariaDB slow query log and PHP-FPM status in isolation gives you half the picture. Here's how I read them together to find the actual breaking point.
The server isn't slow yet, but it will be. That's the only thing I know for certain about any production system I've ever run. The question is whether you find the ceiling on your terms or whether a flash sale, a crawl spike, or a badly-timed cron job finds it for you at 11pm on a Friday. I've done this wrong more…
Read the daily →Inngest vs. Laravel Queues: Where the Tradeoffs Actually Land
I swapped Laravel queues for Inngest on a multi-step workflow project and learned exactly where the abstraction earns its keep — and where it costs you.
Inngest sold me on the demo and then made me earn it in production. After shipping it on a healthcare-adjacent intake workflow last year, I have a clearer picture of where it genuinely beats Laravel queues and where you're paying a complexity tax for something you didn't need. The short version: if your workflow has…
Read the daily →Bind Mounts in Dev Will Lie to Your Face
The convenient dev setup that makes everything work locally is the same one that hides broken deploys until Friday afternoon.
Bind mounts in a Docker Compose dev setup are one of those things that feel like pure upside until they aren't. You edit a file, the change is live instantly, no rebuild needed. It's fast, it's convenient, and it's been quietly lying to you about whether your image actually works. I've been burned by this more than…
Read the daily →Clerk JWT Claims in Laravel: The SDK-Less Way That Actually Works
Clerk's frontend SDKs are slick, but the backend story for Laravel is 'bring your own.' Here's exactly how I wired it without surprises.
Clerk has no official Laravel SDK. That's not a complaint — it's just a fact you should know before you commit to it on a PHP project. What Clerk does have is a well-documented JWT-based session model, a public JWKS endpoint, and enough rope to hang yourself if you skip a few steps. I learned most of what's below by…
Read the daily →