Why?

Recently I have been reading up about the Zettelkasten method, seemingly getting quite popular in our digital age, together with Tiago Forte’s PARA system and his philosophy around building a second brain.

For many years I have used a mixture of modes for capturing ideas, ranging from regular note applications: Evernote, Apple Notes; handwritten note taking forms such as Notability; fully fledged customised systems through Notion; various scattered papers and notebooks, among others.

Notability powered my university studies, and since finishing my master’s degree three years ago I find the knowledge gradually fading away. All my notes were synced to Google Drive, some of them rewritten in Notion, none of them revisited or remembered.

Then I stumbled across the idea of a hypertext garden, a place where you store your ideas and connect them together using hyperlinks, similar to Wikipedia, and publishing it online. Allowing visitors to promenade through your ideas, thoughts, projects, by clicking through the hyperlinks. You may find new paths through your web, identifying new links spurring new thoughts.

Zettelkasten

Some time ago I came across the zettelkasten method, which relies on connecting atomic notes together to form a web of knowledge. It shifts the perspective from amassing volumes of notes, as in my case from university, to nurturing a web of living knowledge. Similar to Wikipedia, and hypertext gardens, you may find yourself connecting atomic pieces of knowledge together in unexpected ways.

Where Zettelkasten Doesn’t Work

This system falls short of any notes not related to knowledge. The core principle of a zettelkasten is to distil knowledge into it’s atomic parts, and creating atomic self-contained notes of said knowledge. It shines in the area of knowledge work; aid in writing essays, research papers and the like.

A lot of the times, however, we might want to write other types of notes: documentation, general notes from lectures or courses or anything that vaguely can’t be categorised as pure “knowledge”. This is where PARA comes in. Simply organising notes into Projects, Areas, Resources and Archive.

How I Combine the Two

The setup is quite simple, I run everything in Obsidian

/root
├── 0_inbox
├── 1_projects
│   └── pkm
├── 2_areas
│   └── software-engineering
├── 3_resources
│   └── pkm
├── 4_archive
├── 5_slipbox
├── 6_daily
├── 7_weekly
├── attachments
└── templates
process.base

All new notes enter through the inbox, at the end of the week I go through this inbox and decide in what folder it lives. If it is worthy of becoming a permanent knowledge note, it is rewritten and enters the slipbox. This folder is entirely flat, and contains a mixture of maps of content, structure notes and permanent notes. For more information regarding slipbox, read Zettelkasten. Other notes end up in a project, an area, or a resource, as per PARA and the philosophy behind building a second brain.

Workflow

Throughout my day, I may take notes wherever feels easiest. This may include a notebook, Apple Notes, Todoist or Obsidian. At the end of every week all of these inboxes are cleared and organised into Obsidian if relevant.

I pay for Obsidian Sync, so that I can access my vault on whatever device. The vault further exists as a private GitHub repo. The repo has a workflow which triggers on main and runs a Rust script, which checksums all notes tagged with public in the frontmatter.

These notes are copied into a second, also private repository. I call this the staging repository. Here, a pull-request is opened, where all files with the public tag are copied flat into the director.

The staging repository serves as a last line of defense. Due to using my vault for any notes, without restriction, I prefer a manual review of files before they are published. I am aware Quartz has its handling for opt-in publish but for my end it has two problems:

  1. I want to have my Quartz site as a public repository, so that other people may take inspiration. If I simply had the /content folder be my entire vault, in a public repository, all my personal notes would be visible. This goes against a major principle of Zettelkasten, or any “free” note taking space for that matter. I want to have the freedom to write whatever I want, without having to worry about other people seeing it.
  2. I could keep /content a private submoduled repository. The issue here is that I may forget what notes are and aren’t public, and would have to rely on text search to manage these. To this end, I much prefer a visual pull request, with a change diff, to see exactly what will go out on the site, and a satisfying green merge button to commit the publish.

Anyone interested in this setup can view my workspace wrapper: pkm, for more in depth explanation of the entire CI/CD pipeline, along with the Rust binary that is responsible for copying notes over to the staging area. There also exists documentation on this over at Technical Details of my PKM System