More About Me
- My /now page shows what I am doing.
- Résumé/CV shows what I have been doing.
- Work with me on your projects!

Writing
- Introduction to my most important articles.
- Wiki with important concepts.
- All About TextKit: I deal with text, and here's a collection of everything I figured out so far.
- Ultimate FastSpring Guide for Selling macOS Apps: I sell my macOS apps in my own store. Resources and tips to get you started.
Latest Blog Posts
Nov 16 2023 |
After starting the day with a pro-SwiftUI rant, to my surprise I end it with an embrace of traditional, tested and true AppKit patterns. |
Nov 15 2023 |
Not Quite 100% SwiftUI – Time Makes Perfect Marin Todorov's “A 100% SwiftUI App” talk from this year's Swift Heroes went life (and it's really worth the half hour!) |
Nov 11 2023 |
This update brings HTML export, more LaTeX export options, and much improved performance! |
Sep 21 2023 |
Sparkle v2.5 Adds Relevant Version Highlighting to Release Notes With Sparkle v2.5, you can ship release notes for multiple versions, and then use CSS to hide outdated information from the user. |
Sep 18 2023 |
Portable Painter Micro Palette As a birthday gift, I got the Portable Painter Micro watercolor palette with some new colors. Here’s my first sketch with it. |
Sep 13 2023 |
UserDefaults.register(defaults:) Is a Bit Like Nil-Coalescing Mental model: registering fallback values for UserDefaults is like Optional coalescing in Swift. |
Sep 11 2023 |
Some bullet points (and stats) about my previous year in life. |
More blog posts in the archive