Blog
Thoughts on software development, mobile apps, and building products and sometimes nothing in particular at all
Unstructured Task Leaks
You tap Cancel but the task keeps running. Your polling service outlives the view. Learn to track and cancel unstructured tasks properly.
Safe Financial Systems with Actors
Building actor-based systems that correctly handle reentrancy. Patterns for transactions, reservations, and rollbacks.
Actor Reentrancy: State Changes During Await
Actors protect against data races, but not against time. How state can change across await points and why your balance went negative.
Building Responsive Search with Debouncing
Stop firing API calls on every keystroke. Implement debounced search with proper task cancellation to prevent race conditions.
Task Cancellation: The Cooperative Contract
You call task.cancel() but nothing happens. Swift's cancellation is cooperative—your code must check and respond.
Lock Ordering and Circular Dependencies
Two locks, two threads, wrong order. How circular dependencies cause deadlocks and patterns to prevent them.
Deadlocks: Sync to Same Queue
Your app freezes with no crash log. Learn to identify and fix the two most common deadlock patterns: queue reentry and lock ordering.
DispatchQueue.main vs @MainActor
When to use the classic GCD approach versus Swift's @MainActor annotation. Trade-offs, mixing them, and common gotchas.
Main Thread Violations: The Silent Crasher
That purple Xcode warning about publishing changes from background threads? Here's why it matters and how to fix it.
Thread-Safe Collections in Swift
Swift's Dictionary and Array aren't thread-safe. Here's how to wrap them with serial queues, concurrent queues with barriers, or actors.
Race Conditions: When Threads Collide
A shopping cart that loses items. Why unsynchronized access to shared state causes unpredictable bugs and how to fix them with serial queues.
Concurrency Bugs Every iOS Dev Should Know
Kicking off a series on iOS interview prep with a look at concurrency bugs, testing patterns, and SwiftUI—plus practice projects to sharpen your skills.
Practice Projects & Setup Guide
How to set up and explore the iOS-Practice projects. Project structure, running tests, and suggested learning order.
Cold Starts Improved 15x When I Re-Wrote My Lambda in Go
How I cut my iOS app's splash screen time by rewriting critical Lambda functions from TypeScript to Go—and the architectural patterns that made it possible.
Mastering SF Symbols Rendering Modes in SwiftUI
Discover the three powerful SF Symbols rendering modes—multicolor, palette, and monochrome—and learn when to use each for beautiful, colorful icons.
Don't Get Stuck at the Border This Thanksgiving: A Planning Guide
Avoid holiday border chaos with Border Notices, community-verified crossing times, and smart planning tips for Thanksgiving week.
Create a Pulsing "Live" Indicator in SwiftUI
A simple, reusable animation for real-time status indicators. Perfect for showing live data updates without being distracting.
Why Your 40th App is the One That Finally Prints
After 2.5 months building Border Times, I'm starting to understand why it takes dozens of attempts to find success. It's not about luck—it's about mastering five different disciplines at once.
Border Times iOS App Now Available
We built an app because waiting at the border really sucks. Download Border Times on iOS and join thousands of border crossers saving time and sanity.
They say the best business ideas start with solving a personal problem!
From border crossing frustrations to launching border-times.com - how personal problems become business solutions.

Protection from advertisements
The internet feels like an advertising scheme.

Status Tracker
In part two we cover updating the status tracker to have updatable state. We also swap out the titles to have a description of a state, rather than the progress state.

Status Tracker
Make a customizable status tracker with SwiftUI.
How close is AI to replacing your job?
Is llama3.1 ready for your job?
Markdown files with AWS
How to avoid .md files not being served.
Collapsable Indicator
Build a collapsable indicator in pure SwiftUI.
Let's work together
Professional discovery, design, and complete technical coverage for your ideas