Fastlane release automation: the pipeline I run across 12 apps
An iOS release should be one command. Here's the repeatable pipeline I use on 12 shipped apps.
Where circuit breakers actually earn their keep in production
When a downstream service fails, don't go down with it. When circuit breakers are needed, how to implement them correctly.
Xcode Cloud or Fastlane: when each one earns its keep
Apple's native CI/CD is Xcode Cloud. Is it a Fastlane replacement or a complement? After trying it on two projects, here's how…
Doc-first API development with OpenAPI: the discipline that pays off
Writing docs after the fact is an anti-pattern. Four practical wins from writing the OpenAPI spec first.
Crash symbolication: the dSYM discipline that keeps stack traces readable
You got a crash in Crashlytics, but the stack trace is hex addresses. Why? Your .dSYM files never made it. The discipline…
Log aggregation from zero: building a production ELK stack
How do you collect logs across ten microservices? Here's how the Elasticsearch, Logstash, Kibana stack actually goes together on real projects.
How I cut an iOS app from 150MB to 40MB
Dentii's binary had swollen to 150MB. Every release the size crept up. Here's how I got it down to 40MB and what…
API gateways in production: Kong vs Traefik vs rolling your own
In a microservice system the gateway is the hinge everything swings on. Kong, Traefik, or a custom gateway: here are the criteria…
Subscription analytics: RevenueCat vs a custom implementation
For iOS subscription analytics: the RevenueCat SDK or a custom implementation? What I've tried across 12 apps.
Picking a message queue: Redis, RabbitMQ, SQS compared
Async work needs a message queue. Redis, RabbitMQ, AWS SQS. Which one fits which scenario.
Collecting in-app feedback: three approaches that actually work
Users hit problems in your app but rarely leave an App Store review. Three approaches to collecting in-app feedback.
Pagination: cursor vs offset, and when to pick which
Two ways to paginate lists in an API: offset-based (LIMIT/OFFSET) and cursor-based. How each affects performance and user experience.