Shipping a closed-source SDK through SPM binary targets
A client needed a closed-source SDK. I used to deliver these as a Cocoapods vendored framework; since moving to SPM, binaryTarget gives…
Writing my first Swift macro: killing Codable boilerplate
I was a consumer of Swift macros in 2024 (@Observable, #Preview). In 2025 I had to write one of my own. A…
Swift Testing: five concrete wins after moving off XCTest
I’ve been using Swift Testing on two projects. After living with the differences from XCTest, it’s my default on new work. Here’s…
SwiftData in production: relationships and migrations that actually hold up
I’ve put SwiftData into production on two projects. The API that looks clean in demo tutorials behaves differently at real data volumes.…
Client management: expectations are set before the contract is
The hardest thing in freelancing isn't the tech, it's managing client expectations. Here are the rules I follow from the first call…
CDN shootout: Cloudflare, BunnyCDN, Fastly on real projects
I've run all three CDNs in production. Pricing, latency, features, and the quirks you hit only in specific scenarios, all in one…
LiteSpeed vs WP Rocket vs W3 Total Cache: which one, when
I've used the three popular WP cache plugins on different sites. Here are the real performance numbers, setup pain, and compatibility notes.
API monitoring: the four signals that actually matter during an incident
How I put the Google SRE book's four golden signals into practice. Dashboard layout, alert thresholds, and sample queries for each.
ATT without losing the user: pushing opt-in from 19% to 52%
Ask for ATT the wrong way and you lose the user. Here's the pre-prompt strategy and the experiments that pushed my opt-in…
Microservice granularity: how small is small enough?
Go too big or too small on microservices and both bite you. Here are the criteria I use and real examples from…
Solo dev: how one person ships what a five-person team ships
I learned to deliver fast as a freelancer. Here are the disciplines that actually produce output, and the ones that only look…
SSR vs CSR vs static: the trade-offs you actually feel in production
I ran all three rendering models through separate production projects. Real performance numbers and real editor experience, not theoretical comparisons.