Writing
Lessons from the systems behind the screen.
Engineering notes, practical lessons, and an archive of earlier iOS writing. The rough edges are where systems are tested and ideas get clearer.
A Filter Is a Lookup Table
What owning the filter download path taught me about the editing pipeline underneath it, from decoded frames and framebuffers to 3D LUTs and why a draft names an effect by identifier
A Draft Is a Graph of Identifiers
Designing cloud drafts for a video editor: checkpoints, content-addressed assets, and a sync model that behaves like version control
One Codebase, Two Regions: Five Layers of Isolation
Splitting a video editor into a domestic and an international app without forking it, from workspaces and subspecs down to the one protocol method that differs
Cross-Team Collaboration Is Cross-Process Communication
Designing a sync-publish share SDK between two apps, and what passing an identifier instead of a file taught me about working across teams
A Year After WWDC 2019: Putting Property Wrappers into Production
Wrapping per-target branding differences behind a Swift 5.1 property wrapper so business code stops reading build configuration
Designing the Native Bridge for a Collaborative Web Editor
How we treated the JavaScript bridge as a protocol boundary between an iOS SDK and a real-time document engine
Why We Chose Swinject for a Document SDK
Why a Document SDK adopted Swinject: assemblies for module ownership, scopes that follow account and document lifetimes, and offline as a composition.
Why We Replaced IGListKit with UICollectionView
A reflection on moving a complex document feed back to native UIKit after iOS 13 introduced diffable data sources and compositional layout
Taming a Complex Document Feed with ReSwift
How ReSwift and unidirectional data flow gave a document feed one authoritative state for filtering, metadata updates, caching, and networking.
One Page, Two Table Views, Three Loaders
Coordinating gesture handoff in a nested table view and prioritizing three competing data loads on a banner-plus-content page
Designing Composable Document Permissions with Swift OptionSet
Modeling read, edit, and link sharing as composable Swift OptionSet capabilities, resolved from grants, folder inheritance, denials, and account policy.
Implementing an LRU Cache
How least-recently-used eviction works, why it needs a doubly linked list plus a hash map, and a complete C++ LRU cache built on std::list.
Tracing a Request Through AFNetworking 3.x
Following one GET request through AFNetworking 3.2.1, from request serialization to per-task delegates, and how to design a networking layer around it.
Objective-C Categories and Class Extensions
How Objective-C categories attach methods at runtime and rely on associated objects for storage, while class extensions compile into the class itself.
Rebuilding UITableView Cell Reuse from Zero
Deriving the reuse pool from first principles, then implementing a minimal one in sixty lines of Swift
Understanding the Objective-C Runtime
How Objective-C message sending works: isa, classes and metaclasses, selectors, IMPs, method caches, and the three stages of message forwarding.