Swift Protocols
Your Protocol Extension's Default Method Isn't Overridable. It Just Looks Like It Is.
A conforming type can 'override' a protocol extension's default method and still not get called — because Swift picks that method by the variable's static type, not the object's actual type. Here's the static dispatch trap and how to avoid it.
6 min read
Swift SOLID Principles
SOLID Principles in Swift: One Bad Class, Five Real Fixes
Day 24 of the 30-day iOS series. Skip the acronym slide — here's the 70-line class I'd have shipped on day one of BrewLog, broken against all five SOLID principles, and the five already-tested files in this same repo that actually fix it.
11 min read
Swift Dependency Injection
Dependency Injection in Swift Without a Framework
Day 19 of the 30-day iOS series. Protocol-based DI, @Environment as a SwiftUI-native container, and the factory pattern — all without Resolver, Swinject, or any third-party glue. Includes a TDD example that shows why DI and testability are the same conversation.
11 min read