DevLift

Blog

Tutorials, guides, and insights to help you become a better developer.

Clear
If Your CRDT Test Ends by Syncing Everyone, It Tests Nothing
A list CRDT has one job — converge — so you can brute-force it: 400 operation logs, every one of the 720 delivery orders each, diff the results. Three orderings broke the naive implementation in three different ways, and one of them left every replica in perfect agreement about a scrambled document.
AdminAugust 11, 202613 min read
Idempotency Keys: What Stripe and Shopify Actually Do
Eight concurrent workers sharing one idempotency key turned a $49 order into $392 of real charges on PostgreSQL 17.6, and adding a FOR UPDATE row lock changed nothing at all. This walks through what actually prevents the double charge, measured at every step, and what Stripe's and Shopify's own documentation says rather than what gets repeated about them.
AdminAugust 10, 202613 min read
intermediateArraysReactCaching
If you're still writing pages/api/... files in a new Next.js project, stop. Route Handlers are the App Router's replacement, and they're meaningfully better — typed, streaming-capable, and built on the same Web platform APIs that Cloudflare.
AdminJuly 15, 20267 min read
Here's a scenario I see in almost every codebase I review. A developer writes an async function that reads some state, does a bit of work, then writes back a result. In tests, it's fine. In development, it's fine.
AdminApril 29, 20267 min read

Stay in the Loop

Get notified about new courses, tutorials, and learning tips. No spam, unsubscribe anytime.