Home / Blog

Blog

Your blog category

From Combine to async/await: a six-week code diff

I moved an iOS app from Combine to async/await. What I gained, what I lost, with real code numbers.

Blog 4 min

Drawing bounded-context boundaries: 4 concrete ways

Bounded context is DDD's most confusing idea. Four angles that let you actually draw the line.

Blog 4 min

SwiftData or CoreData? Choosing after iOS 17

Apple started replacing CoreData with SwiftData. I've shipped both on real apps; in some situations CoreData still wins. Practical selection criteria.

Blog 3 min

Domain-driven design in practice: when it’s overkill, when it saves you

DDD isn't for every project, but for the right project it's the only way out. From years of consulting: when it earns…

Blog 4 min

How to stop getting rejected by App Store review: lessons from 40+ submissions

Every rejection costs three days. I've made 40+ submissions across 12 apps. Here are the reasons I've been bounced most, and how…

Blog 4 min

SwiftUI state: when to reach for @State, @Observable, or @Environment

SwiftUI's state APIs feel tangled. Here's a practical decision tree worth the two minutes it'll save you on picking the right one.

Blog 3 min

How I hold a 0% crash rate across 12 App Store apps

Crash-rate discipline doesn't come from a tool, it comes from a code culture. The concrete techniques I use in production.

Blog 4 min

How I stopped silently losing 10% of StoreKit 2 subscription revenue

Five subscription-flow edge cases that look fine in code but quietly leak money. The expensive lessons I picked up moving to StoreKit…

Blog 4 min