Home / Blog

Blog

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

How I run a TestFlight beta with 200 testers without losing my mind

TestFlight is the iOS beta standard. At 200+ testers the organisation gets tricky. Feedback flow, versioning, and communication.

Blog 6 min

When to shard a database, and how to make the call

Sharding is the classic answer at high scale. Done at the wrong time it's serious operational debt. Here's how to decide.

Blog 5 min

iOS accessibility: the minimum VoiceOver and Dynamic Type discipline I won’t skip

Most iOS devs treat accessibility as an afterthought. Here's the minimum set of things I actually do on every project.

Blog 6 min

API rate limiting: token bucket vs sliding window, in practice

Rate limiting is how you stop API abuse and enforce fair use. Two popular algorithms and their practical implementations.

Blog 6 min

Managing an app localized into 36 languages: automation is non-negotiable

My 12 iOS apps are localized into 36+ languages. Manual management isn't an option. String management, release workflow, and translation services.

Blog 6 min

Read replica strategy: when it earns its keep, when it’s just complexity

A read replica is the classic database scaling tool. On some projects it creates more problems than it solves. When to add…

Blog 6 min

Migrating from WatchKit to a native watchOS app: lessons from two apps

watchOS 9 deprecated the old WatchKit extensions. I ran the migration on two apps and a few surprises showed up along the…

Blog 5 min

REST vs GraphQL: when GraphQL actually wins

GraphQL gets pitched as the default for modern APIs. On most projects REST ends up winning. Here's where GraphQL really pays off.

Blog 6 min

Apple Watch companion apps: five decisions that actually matter

I added a Watch app to Dentii, and syncing with the iPhone app was trickier than I expected. Five decisions that actually…

Blog 5 min

Database connection pool sizing: why the defaults are wrong

Every framework picks a different connection pool default, and most of them are wrong. How I size pools from real production experience.

Blog 5 min

iOS deep linking in 2025: URL schemes, Universal Link, App Clip

Deep linking on iOS has had three generations: URL scheme, Universal Link, App Clip. Which one when, and how to set them…

Blog 5 min

API versioning: URL, header, content negotiation, which one ships?

/api/v1/users versus header-based negotiation. What holds up in production, and what looks clean on paper but bites you in production.

Blog 4 min