Independent notes from the edge of product and engineering
A cleaner, sharper home for essays on Apple platforms, AI products, and developer craft.
Long-form writing about building software with taste: from iOS and Swift to tooling, product strategy, and the changing shape of AI-native development.
Spec-Driven Development: The Missing Layer Between AI and Reliable Software
A lot of AI-assisted development still breaks in the same boring way.
Archive
Recent writing
Claude Design and the Rise of Full-Stack AI Products
For most of the generative AI boom, the central question was straightforward.
Claude Code CLI Flags That Actually Change the Workflow
Claude Code now has enough CLI surface area that a flat list of flags is not very useful anymore.
Understanding Swift Concurrency: AsyncQueue, AsyncStream, and AsyncSequence
Concurrency in Swift has come a long way. If you’ve been working in iOS for more than a couple of years, you’ve probably felt the pain of juggling DispatchQueue, ...
The Ultimate Guide to Xcode Environment Variables
Environment variables are powerful, often overlooked tools that can shape the way your iOS app behaves at runtime. With proper usage, you can control logging, tes...
Swift Compiler Directives: A Hidden Power
Happy December 20, 2024! In this post, we’ll explore Swift compiler directives, sometimes referred to as Swift’s “preprocessor commands.” Swift doesn’t use a trad...
Essential LLDB Debugger Console Commands
As iOS developers, we often find ourselves spending a good amount of time working with the debugger. When an app misbehaves, the LLDB console becomes an essential...
Mastering Task Groups in Swift Concurrency
Swift’s concurrency model provides a set of tools for running tasks in parallel while keeping code clean and organized. One of the more powerful features of this ...
Measuring Performance Using XCTest
When working on iOS applications, ensuring your app remains efficient and responsive is just as important as implementing new features. One of the most straightfo...
Advanced SwiftUI State Management Patterns
SwiftUI provides multiple ways to manage the data that drives your user interface. Knowing how to use these different state management tools effectively can help ...
Elegant async handling with async/await
Swift Concurrency is more than just a new language feature—it’s part of a broader effort to simplify how we work with asynchronous code. Before async/await, many ...