Zettelkasten Method Introduction

Teaser image

Sascha wrote an introduction to the Zettelkasten Method, and after months of editing and polishing, we finally published in online!

What’s a Zettelkasten, you ask?

Think personal wiki of knowledge. But instead of merely cartographing what is in the world, you create new stuff from the things you collect, building up layers upon layers of ideas by connecting what you already have, and then making a big hypertext from it.

At first you have atomic ideas, then you begin to link them and think and write about their connection.

In other words, it’s a way to add layers of abstractions to your thinking and writing.

I use something like it for 11+ years now and the amount of cross-connections is very cool. Also, by using my Zettelkasten properly, I “accidentally” prepare blog posts for this site: every note is self-contained and written in a semi-publishable manner, so I could just copy and paste notes together to make an article. That’s the sweetest part of it: how it accelerates my writing.

Check out the intro and see how simple the actual implementation is.

Hide Traffic Light Buttons in NSWindow Without Removing Resize Functionality

I noticed that in macOS’s dark mode, a window without a visible title bar won’t draw a light border. It will draw a dark/black border, unlike all the other windows, and thus be a lot less visible than it needs to be. So for a floating helper window, I had to make the title bar visible, and then hide all traffic light buttons in the window’s top-left corner:

Continue reading …

Shorten Emacs Yes-or-No Confirmation Dialogs

Some commands in Emacs and its various packages are destructive. They require a confirmation by the user. These usually use yes-or-no-p, which won’t complete the command until the user replies by writing “yes” and then hits enter, or “no”, or aborts the command with C-g. Some of the commands that require confirmation in this way are overly protective, I find. Like projectile-kill-buffers (C-p k) which closes all open buffers for a project at once. I use this heavily when e.g. editing my website: jump into the project, edit a file or two, commit, then leave. I don’t want to type “yes” and hit enter just for that. (Please note that killing a buffer this way will still ask me if I want to save or discard changes, so the kill command alone is not destructive.)

Continue reading …

Follow Link at Insertion Point in NSTextView

Teaser image

If you ever wondered how to programmatically trigger a click on a link in a NSTextView, here’s one way to do so. This assumes that clickable links are not stored as temporary attributes in the NSLayoutManager, but permanently as part of the “model” in your NSTextStorage. You can then ask the storage for the attribute at the cursor/insertion point location:

Continue reading …

Fix Your Damaged Mac App Store App by Parsing the App Store Receipt Dates Correctly

If your customers get this message when downloading your app from the Mac App Store: XYZ is damaged, remove it and download again from App Store. … it might be because you’re parsing the App Store receipt dates wrong! Apparently, Apple began to change Mac App Store receipt date formats recently: When you parse receipt dates, account for both variants. To make things easier for you, strongly consider to use ISO8601DateFormatter (NSISO8601DateFormatter in Objective-C) which should (!) handle multiple variants of ISO-8601 dates for you.

Continue reading …