build_
Make software that ships: design that survives change, tests that let you move, and Mac apps you can sell yourself.
Start here
Implementation gets cheaper; judgment does not. You can have more code generated than you can carefully judge, so the work shifts from writing to deciding: what users need, when to stop, and whether you can sign off a change as correct, tested, and intended. Start with where coding ends and the job begins, then with the design questions no rule of thumb answers for you:
-
Master Software Crafters Let the Workpiece Be
Good crafters can polish code forever. Masters ask what users need, and sometimes step away from the keyboard.
-
Do Not Apply Code Heuristics When You Need a Broader Perspective
Whether an abstraction is good is a question about the problem, not the code.
-
Being Afraid to Change a Working App
What counts as broken depends on how people use the app, so tests can only protect what you thought of.
Paths
-
Getting started with Mac app development
Architecture, AppKit, and the tooling around it, from your first window to a sandboxed release.
-
Apple's text system, from NSTextView down to the typesetter.
-
Sell your Mac app with FastSpring
Your own store next to the App Store, with a guide and free code to get it running.
-
Talk to MTP devices like the Supernote from Swift, the command line, and Emacs: a library, a CLI, and a Tramp backend.
-
A large REPL to try ideas in: Elisp packages, experiments, and the configuration around them.
Tools
Apps I built
PortfolioWork with me
Building on your own? Bring your project to a free open office hours call, or sit down with me one-on-one. Building with a team? I come to you:
-
Pair on your app, get your code reviewed, and plan the next feature with someone who has shipped.
-
Workshops for development teams
Swift, architecture, testing, and clean code, live with your team.
-
Consulting and contract development
Architecture reviews, mentoring your team, and the critical feature nobody else wants to touch.
Latest
All 932 postsHow Do You Design a Code Retreat in 2026?
This year is weird and tough and confusing for many people for many reasons. How can you hold a day of code retreat in such an athmosphere?
Swift Blog Carnival Roundup: Tiny Languages
Recap of the very first Swift Blog Carnival on the topic of Tiny Languages: six posts on task runners, DSLs, parsers, symbolic math, and grammar tools.
Swift Blog Carnival: Tiny Languages
The Swift Blog Carnival topic for April is open; it is about Tiny Languages. Read what a blog carnival is, why you should care, and how to participate!
FreeBSDKit: Swift Package to Write Capability-Aware FreeBSD Apps
FreeBSDKit is a Swift Package to e.g. work with FreeBSD Jails, kqueue, Capsicum sandboxing.
I want to get books on my Supernote and notes off it, so in my desperation I began to write scripts and make tools to help.

