Posts
A daily(ish) look inside Swift open source, lessons from engineering failures, and notes from building my own products.
- swift-async-algorithms: Backpressure at the Handoff
How AsyncChannel makes Swift producers wait for demand, handles cancellation races, and differs from buffered streams.
- GRDB at the Boundary Between Files and App State
Why ReadMachine keeps documents on disk, uses GRDB for durable app state, and treats SQLite transactions and file operations differently.
- swift-format: From Syntax Trees to Readable Code
Why swift-format needs syntax trees, rewriting rules, and a pretty printer, and why linting takes a different path.
- Optional Binding: Turn an Optional Into a Value
Learn how Swift optional binding creates safe local values, combines checks, and controls where unwrapped values are available.
- Swift Argument Parser: One Model for CLI Commands
A source-level look at how Swift Argument Parser turns property wrappers and command types into parsing rules, validation, usage, and help.
- File Identity Is Not Content Identity: How ReadMachine Uses BLAKE3
ReadMachine separates filesystem reconciliation, document preparation, and content fingerprinting so each stage solves a different problem.
- guard: Keep the Main Path Flat
Use Swift guard to state requirements early, keep successful optional bindings in scope, and leave the main path easy to follow.
- Nuke: Coalescing Image Work Across Swift Concurrency
A source-level look at how Nuke shares downloads, decoding, and image processing across concurrent requests without tying cancellation to a single caller.
- Swift Collections: Why Deque Uses a Ring Buffer
A source-level look at how Swift Collections implements Deque with circular storage, copy-on-write value semantics, and familiar integer indexing.
- The Limit That Wasn’t a Limit: SwiftNIO’s Unbounded HTTP Headers
A SwiftNIO parser migration kept HTTP working but silently lost an old resource limit, years before the missing invariant returned as a security issue.
- Tuple Patterns: Destructure Values Where You Use Them
Use Swift tuple patterns to take tuples apart, ignore values you do not need, and match several values at once.
- GRDB: Turning SQLite Queries into Live Application State
A source-level look at how GRDB turns SQLite query regions and transaction events into live application state.
- Tuples: Group Values Without Creating a Type
Swift tuples give a few related values a useful local shape without forcing every temporary relationship into a new named type.
- swift-dependencies: Dependency Injection with Task-Local Values
A source-level look at how swift-dependencies scopes dependency values with TaskLocal state, makes overrides testable, and integrates the same model with SwiftUI.
- swift-snapshot-testing: Snapshot Testing as a Composition of Transform and Diff
A source-level look at how swift-snapshot-testing separates value transformation from diffing, and why that makes snapshot strategies reusable far beyond screenshots.
- swift-http-types: Giving Swift a Shared Vocabulary for HTTP
A source-level look at how swift-http-types models HTTP messages, preserves protocol semantics, and bridges the same types into Foundation.
- swift-jobs: Separating Job Semantics from Queue Storage
A source-level look at how swift-jobs separates job definitions, processing policy, and queue storage while integrating retries, timeouts, and graceful shutdown.
- swift-service-lifecycle: Making Service Lifetime Part of Swift Structured Concurrency
A source-level look at how swift-service-lifecycle owns long-running Swift services, coordinates shutdown, and fits structured concurrency.
- Every Option Expands the Product’s State Space
A small setting can create much more than one extra branch. Every option expands the product state space — and the cost of owning it.
- Three Data Centers, One Failure Domain: The Cloudflare Outage
Cloudflare designed its control plane to survive the loss of a data center. A real outage showed that redundancy ends where a critical dependency still shares the same failure domain.
- A Backup You Haven't Restored Is Just a Hypothesis: The GitLab Database Outage
How GitLab lost its production database, discovered that several backup systems were not actually usable, and was saved by a staging snapshot made six hours earlier.
- Evolve, Don't Fear: A Developer's Manifesto
Why AI is better understood as another shift in how software is built — one that changes where engineers spend their attention, not the need for engineering judgment.