The hidden cost of string.count in Swift
4 Nov 2026
In Swift, string.count isn't free. Here's why a loop that calls it can quietly go from O(n) to O(n²).
Notes on Swift, problem solving, debugging, and how I design and build apps.
The hidden cost of string.count in Swift
4 Nov 2026
In Swift, string.count isn't free. Here's why a loop that calls it can quietly go from O(n) to O(n²).
Solving a problem before I run any code
3 Nov 2026
How I solve a problem before I open the editor, and why value versus reference semantics is often half the answer.
Learning unfamiliar code by translating it into Swift
2 Nov 2026
My method for unfamiliar code. Read it for what it does, then rewrite the idea in Swift.
Figma first: mapping the loop before I write code
1 Nov 2026
Before I build a feature, I map the screens and the data loop in Figma and ask "what breaks?" at every arrow.
Circle the verbs: picking a data structure from the problem statement
31 Oct 2026
Rewrite the problem in plain words and circle the verbs. They usually point straight at the right data structure.
28 Oct 2026
The best developers argue with their AI. How I use AI to understand code, not just to produce it.
A map designed to be experienced, not read
13 Oct 2026
What would a map feel like if it was designed to be experienced instead of read? A design note on Drift.
The scariest bugs quietly do nothing
8 Oct 2026
The scariest bugs don't crash. They quietly do nothing. Where silent failures hide in Swift and how I make them loud.
The simulator will never show you this bug
4 Oct 2026
Some bugs only exist in the real world. Why I test location and network features by walking into garages and basements.
10 Sep 2026
If your test names don't explain themselves, are they documentation or just a checkbox? How I name tests with Swift Testing.