Blog

Practical lessons from 12+ years of building and shipping mobile apps.

Keeping a Long-Lived gRPC Stream Alive on Flutter

Flutter

Opening the realtime stream was the easy part; keeping the socket alive on a phone that suspends, switches networks, and lies about being connected was the hard part.

Jul 5, 202611 min read

Offline-First Messaging: Reconciling Local SQLite With the Server

Flutter

Building offline-first chat meant our on-device SQLite store and the server had to agree on reality after a reconnect, and the first version got that agreement spectacularly wrong.

May 24, 202610 min read

Storing End-to-End Encryption Keys on the Device: Keychain, Keystore, and the New-Phone Problem

iOS

End-to-end encryption is easy to describe and brutal to operate on real phones, where keys live in the Keychain and Keystore and survive, or vanish, in ways that surprise you.

Apr 12, 202611 min read

WebRTC on Flutter: Call State, CallKit, and Audio Sessions

iOS

Getting WebRTC calls to actually connect was the easy part; keeping them alive through CallKit, audio sessions, and a leaked camera light was the real work.

Feb 28, 202610 min read

Push Notifications on Flutter: Killing Duplicate Alerts Across iOS and Android

Flutter

A single Sync message once fired three alerts on one phone; here is how I hunted down duplicate, late, and missing push notifications on the device.

Jan 18, 20269 min read

Taming Flutter Rebuilds in a Data-Heavy Patient Dashboard

Flutter

The doctor dashboard felt janky and killed the tablet battery by lunch; the culprit was thousands of needless widget rebuilds hiding behind a live data stream.

Nov 8, 20258 min read

Background Photo Uploads That Survive the App Being Killed

Flutter

Patient symptom photos kept vanishing when the app was backgrounded or killed, so we handed the uploads to the OS itself.

Aug 16, 202510 min read

HealthKit Sync Gone Wrong: Timezones, Duplicates, and Data Integrity

iOS

Syncing Apple HealthKit data into a clinical backend sounds simple until duplicates, wrong timezones, and vanishing deletions teach you that clinical data has to be exactly right.

May 24, 20259 min read

Chasing a Retain Cycle: The Video Call Screen That Leaked Memory

iOS

After a few back-to-back video consultations the iOS app's memory kept climbing until the OS killed it, so I went retain-cycle hunting.

Feb 2, 20258 min read

Building a Resilient Offline Layer for Flaky Networks in Vietnam

Flutter

Our patients live on flaky 3G in elevators and rural clinics, so we stopped assuming the network works and built an app that survives it losing.

Sep 10, 202410 min read

From Objective-C to Swift: Practical Migration Lessons

iOS

Practical experience migrating a live streaming project from Objective-C to Swift, valuable lessons and best practices.

Mar 15, 20248 min read

iOS Developer Switching to Flutter: What I Wish I Knew Sooner

Flutter

After 6 years of native iOS development, I switched to Flutter. Here are the most surprising things.

Mar 10, 202412 min read

Clean Architecture in Mobile: Theory vs Reality

Architecture

After 12 years of applying Clean Architecture to projects big and small, here is a practical perspective.

Mar 5, 202410 min read

How I Built ShipDauRoi and Reached Top 50 on the App Store

Startup

The story from idea to real product, reaching Top 50 and the valuable startup lessons along the way.

Feb 28, 202415 min read

Working at a Health Tech Startup: How Does It Differ from Outsourcing?

Career

A practical comparison after 5 years in outsourcing and 5+ years at a product company in health tech.

Feb 20, 20248 min read

Building a Global Platform for Pizza Hut: Lessons in Scale

Behind the Scenes

Experience developing an iOS platform serving global markets for a major F&B brand.

Feb 15, 202410 min read