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
Open Office Hours (Daylight Saving Time): Tuesdays, 18:30 CEST (That’s 1 Hour Late)
Every Tuesday is Open Office day: hop on a (video) chat and ask question or just hang out. During DST, it’ll be 1 hour later than before.
Working with Process Pipe and Its 64KiB Limit
Piping data from your Swift program to another program, or receiving large amounts of data from standard input, can be prone to errors, freezing your program. Here is how to do it safely.
NSPopover in NSTextView With Links Is Broken: Accessibility Hierarchy Slowdown
Showing a popover relative to a text view will compute the accessibility hierarchy 3 times per clickable link in the text view; that can get slow real quick.
NSFileWrapper Sometimes Changes Modification Date to the Past
Beware when overwriting files with the same content using NSFileWrapper: the modification date can mess up.
NSTextView Bypasses performKeyEquivalent Check for Backspace and Option-Backspace
Shortcuts, aka “key equivalents”, are usually handled by views in your vier hierarchy in the same, predicatable way. Except deleting a character or word with backspace in a text view. These two, apparently, short-circuit this mechanism.
Comparing Use of AI vs Learning to Code Has Nothing to Do With Knowledge
LLM code output is faster, yes, but it’s incommensurable with gaining knowledge.
Preview Mass Text Replacements with Emacs 30.1 replace-regexp-as-diff
Performing text replacements on large documents or multiple files is annoying: you get false-positive results all too quickly; stepping through each and every match interactively is cumbersome, too. What about previewing changes as a diff, though?
More blog posts in the archive