Home / Blog

Blog

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

Universal Links: four things Apple’s docs skip over

Universal Link setup looks simple in the docs and gets messy in production. Four real problems I hit across five apps.

Blog 5 min

Cache invalidation: two hard problems and the patterns that work

Phil Karlton's old joke: "Two hard problems in computer science: cache invalidation and naming things." Here are the patterns for the first.

Blog 5 min

Push notifications: the retry and dedupe strategy that actually holds up

Some users get the same push twice, others get nothing. The retry and dedupe patterns I've pulled from 12 apps in production.

Blog 5 min

JWT vs Session: real decision criteria, not tribal debate

The internet is split down the middle on this. A clear framework for the questions that actually matter when you pick.

Blog 5 min

App Clips: great in theory, niche in practice

Five years after App Clips launched with iOS 14, they're still niche. The real-world scenarios and the rough edges in practice.

Blog 5 min

Event sourcing: who actually uses it, who’s just posturing?

Event sourcing is a conference darling. In real projects, who is actually using it, and who quietly walks away?

Blog 5 min

WidgetKit: the real design rules for Home Screen and Lock Screen

Widget design isn't app design. I've shipped widgets in three apps and learned something new each time. Timeline, relevance, and sizing calls.

Blog 6 min

90% of webhooks are wired wrong: the retry/ack logic that actually works

Webhooks from a payments provider, an email service, a CRM. Test your handler against five minutes of downtime and it almost certainly…

Blog 4 min

HealthKit integration patterns: practical notes from 3 apps

I've used HealthKit in ByteBreak, Dentii, and Snoozio. Notes on authorization, background delivery, and interpreting the data.

Blog 5 min

Distributed transactions without the saga pattern

Saga pattern is complex, sometimes overkill. How to get distributed-transaction-like behaviour with simple compensating actions.

Blog 4 min

Building an offline-first app on CloudKit

How to build an app that keeps working without the internet and auto-syncs when it comes back. What I learnt across two…

Blog 5 min

Skip idempotency in your REST API and the invoice goes out twice

Payments, orders, message sends: idempotency is non-negotiable. How to wire it up, and the subtleties you cannot skip.

Blog 4 min