Writing

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.

Arguing with your AI

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.

Test names are documentation

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.