Blog
Notes on iOS development, Swift, SwiftUI, app architecture, and on-device AI.
Helvi and Own AI Now Have Their Own Websites
Two of my iPhone apps moved out of my portfolio and onto their own domains. helvi.online is for finding what's on in Switzerland, ownai.online is for running AI models on your phone without sending anything anywhere.
What Whole-Module Optimization Actually Deletes
You write protocols and generics for the humans; the release binary runs like hand-written C. Here's a stage-by-stage look at what the optimizer removes on the way - specialization, devirtualization, inlining, ARC - and why the abstraction you wrote never reaches the CPU.
There Has Never Been a Better Time to Learn a New Programming Language
I'm learning Kotlin for Android after a decade of Swift, and it's the easiest language pickup of my life - not because I got smarter. The cost of learning a new language just collapsed.
Every Compiler Error Is a Bug That Didn't Ship
Sendable, actors, optionals, exhaustive switches - Swift's strictness used to feel like friction. Now that half our code starts life in an AI agent, the compiler quietly became the most valuable tool in the chain.
Migrating to Swift Testing Without a Heroic Weekend
The reason nobody's finished migrating off XCTest was never the syntax - it was that a half-migrated suite used to fail silently. Xcode 27's interop mode is the part that actually unblocks this.
Scaling an iOS Codebase: Features Vertical, Logic Horizontal
Layers or features? Wrong question. Split product code vertically, platform code horizontally, and let the compiler enforce the boundary.
Streaming LLM Responses with Swift Concurrency
Token streams are a natural fit for AsyncSequence, until cancellation, actor isolation, and UI update frequency get involved. Here's the shape that works.