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.
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.
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.
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.
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.