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
Getting Over Frustratingly New Topics (Swift Concurrency) with a Zettelkasten
I am learning to speak a new language: Swift Concurrency. It is densely packed with familiar-sounding concepts and details I am not aware of (yet). This is how I tackle it.
How Many Zettelkästen Should You Have?
The Zettelkasten is a tool for personal productivity and writing, first and foremost. So the answer is almost always ...
Emacs Carnival 2025-06: Take Two
I’m hosting this month’s Emacs Carnival. Submit your blog posts on the topic “Take Two” in June to participate!
My Procedure to Create New Zettelkasten Notes Inline
Apply wishful programming to reserve things you want to research or write about later, so that you can keep up the writing flow now.
No Open Office Hour On May 27th
Tuesday, May 27th I am out of office.
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.
More blog posts in the archive