Writing
Part of my life’s work is dedicated on how to become a good coder and independent software developer.
My approach is holistic: to be successful, it’s not enough to know how to code. That’s why I write about the life of an independent software developer, not just the day-to-day work.
- 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
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.
Books

Make Money Outside the Mac App Store
Own your products and know your customers: sell outside the Mac App Store. In a few hours, you'll have in-app purchases, a trial mode, and piracy protection all set. The book includes fully functional sample projects and code ready to be copied into your app.
- 2nd edition: expanded to twice the features and details!
- PDF, EPUB, and Kindle download
- Lifetime updates

Exploring Mac App Development Strategies
Learn how to create an application from scratch or refactor existing code to keep your code maintainable: clean up Core Data and AppKit dependencies from the rest of your app.
- 4th, expanded edition
- PDF, EPUB, and Kindle download
- Lifetime updates