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
Microsoft Recall and Signal: When You Don't Worry About 3rd But 1st Party Spy Software
Signal Desktop for Windows blocks screenshots by default, using DRM protection tools, to not have the screen-scraping tool Recall silently record your conversations. At least that’s the effect that is promised.
Insert Cc and Bcc Mail Headers Conditionally in Emacs message-mode
Using a function to insert some mail composition headers only if they don’t already exist, because some mail servers won’t accept the email otherwise.
New Era of Small Software Shops
Big Tech is here to stay, but if they go full-LLM, full factory production, you will find care and craft and innovation elsewhere.
The Inlined Agile Software Craftsmanship Manifesto
What happens when you resolve the references in the four values of the Software Craftsmanship Manifesto to the corresponding values from the Agile Manifesto? You end up with this.
Xogot, Godot 4.4 for iPad, Just Dropped
Xogot is available on the App Store
Variadic Types in Swift and How to Count Them
Exploring parameter packs (the repeat-each stuff) in Swift to count how many types are in the generic argument clause, or if that’s empty.
Creating a new Cloudflared tunnel with DNS settings that allow you to map subdomains to Docker containers on your Unraid NAS using SWAG.
More blog posts in the archive