Building Canopy: A Native GitHub Inbox and a Testbed for Lists
How building a native macOS GitHub notification client exposed surprising gaps in GitHub's public API and stress-tested Lists in a real app.
19 articles on Swift, iOS development, and developer tools.
How building a native macOS GitHub notification client exposed surprising gaps in GitHub's public API and stress-tested Lists in a real app.
How to set up an iOS project for git worktrees, including DerivedData isolation, SPM caching, simulator conflicts, and project file merge strategies.
A deep dive into the design, performance, and trade-offs behind Lists — a pure-Swift replacement for UICollectionViewDiffableDataSource that's up to 1000x faster than Apple's implementation.
What I learned building claude-deep-review, a code review skill that decomposes review into 15 specialized agents running in parallel.
What I learned building Claudio, a tool that runs multiple AI coding agents simultaneously using git worktrees
What it's actually like to build a real tool on Apple's on-device FoundationModels framework — the 4,096 token ceiling, blind token budgeting, and everything in between
What I learned building a CLI toolset that captures SwiftUI previews programmatically, giving AI coding assistants a visual feedback loop.
Views in UIViewsDirectly add a SwiftUI View to your UIView without a UIHostingController
How to quickly generate a preview for your UIKit View
How to quickly extend cross-platform SwiftUI for macOS size classes
Hashable and Equatable for functionsOften, we pass functions as stored arguments to an object. In this quick tip, we explore how we can still maintain `Hashable` and `Equatable` when we do so, without having to write it ourselves.
How view modifiers work, tips & tricks for declaring our own, and nipping subtle bugs in the bud.
With so many property wrappers for data flow and data binding in SwiftUI, it's easy to get confused about which one to use. Here, we'll learn about the differences between State, StateObject, Binding, and ObservedObject. We'll look at when to use each one, and the differences between them.
An introduction to some of the most powerful tools in SwiftUI, stack views
What is SwiftUI, why should I use it, and what's the most basic building block?
Get highlight styles for SwiftUI views in List, without using a NavigationLink
How to use cross import overlays in your project, today
Why I build `UIView`s, not `UITableViewCell`s.
Integrating SwiftUI at the Leaf Nodes