Home / Blog

Blog

Short technical notes on SaaS, iOS, API and WordPress.

Real-time vs eventual consistency: how it actually shows up in UX

Eventual consistency is unavoidable in a distributed system, but how it surfaces to users is a choice. Read-your-writes, session consistency, and optimistic…

Blog 5 min

How to write an incident postmortem that actually changes your system

A postmortem isn't paperwork, it's a learning tool. How to structure a good one, what questions to ask, how to keep the…

Blog 6 min

Lazy loading: when native beats IntersectionObserver, and when it doesn’t

Is native loading=lazy enough in modern browsers, or do you still need a custom IntersectionObserver implementation? A practical comparison from three projects.

Blog 5 min

Webhook vs polling: the real trade-offs and the hybrid that actually works

Arguing webhook versus polling is asking the wrong question. When is each the right fit, and when do you need to run…

Blog 5 min

Sign in with Apple: mandatory, deceptively easy to get wrong

Under App Store Guideline 4.8, any iOS app that offers third-party login has to offer Sign in with Apple too. Practical notes…

Blog 5 min

Six design principles behind batch pipelines that actually survive production

Shared patterns from three projects where I built reporting, data migration, and nightly aggregation pipelines. Chunking, checkpoints, retry discipline, idempotency.

Blog 5 min

Designing on-call rotation: from solo developer to a real team

I was solo and on-call 24/7 for 5 years. Once the team grew, building a healthy rotation became its own discipline. Thoughts…

Blog 6 min

Image optimization that actually moves LCP: WebP, AVIF, and responsive images

On one e-commerce project, 70% of the page weight was images. Moving to WebP, trying AVIF, and tightening srcset discipline cut LCP…

Blog 5 min

gRPC vs REST: when each one actually makes sense

I moved to gRPC on microservice projects and stayed on REST for monoliths. A side-by-side comparison with the decision criteria that tell…

Blog 4 min

Live Activities and Dynamic Island: lessons from 2 production apps

Live Activities shipped with iOS 16, the Dynamic Island with the iPhone 14 Pro. Here are the ActivityKit patterns I picked up…

Blog 5 min

5 things I missed while scaling background job queues

Across Redis + BullMQ, RabbitMQ, and SQS, I've relearned the same 5 lessons about scaling job queues: poison messages, retry storms, priority…

Blog 5 min

Retrospectives that solve problems, not fill in forms

For many teams, the retrospective has become a 30-minute formality. I'm sharing the structure, facilitation techniques, and action-item discipline that turn it…

Blog 4 min