Introduction

A Zettelkasten (German for "Note Box") is a garden for growing ideas you accumulate throughout your life. Over time it builds and becomes an architecture to structure your philosophy, help you to solve problems, and guide decisions.

Rather than scatter your digital knowledge throughout different projects, a Zettelkasten acts as your central knowledge management repository. It is the one place where everything you learn goes regardless of the project you are working on.

When you look online at other people's Zettelkasten systems, you'll notice each system is unique and personalized. And it should be. The workflow for your Zettelkasten should grow from your personal experience and needs as you use it. However, it can be daunting starting out, looking at how almost everyone makes their process super complicated. They take notes of everything they read. They spend hours writing their notes. And hours more fiddling with their processes. You don't need this. You need a system that's simple, portable, efficient, and practical. My process is much simpler. Capture, Nurture, and Share. Just read and listen and observe with a question in mind and write down what seems insightful and useful to you. Over time, you will develop an intuition to capture only that which resonates with you.

Think of consuming information as a panning for gold, the more you pan the more small amounts of gold build in the pan. You don't need to take notes on everything. Your system doesn't need to get bloated with information. You just need to pan for the few nuggets of gold that touch you every day in your digital garden's stream of thoughts to reap the benefits.

And this book will show you how to unlock the gold rush.

Connecting Ideas

The Unix philosophy suggests that programs should do one thing and do it well and your notes should do the same.

A rule of thumb is to keep notes short enough and to fit on a single screen without scrolling (and you should break this rule when needed). When you are constrained, you are forced to think about the fundamentals of the idea you want to convey. This is the key idea of atomic notes.

However, I go further, notes should not just be atomic, they should also be modular. You should design your notes in such a way that you can easily move, link, and duplicate them in your knowledge system without any rewriting or refactoring. This modularity allows you to easily connect and reconnect notes together.

Progress is rarely made by brute-force thinking. Good ideas are rarely conjured from the ether. Progress is more often made by making connections.

Writers make connections between ideas. Engineers make connections between things. Business leaders make connections between people.

By connecting notes we expand our learning and understanding. By connecting ideas, we develop a framework to represent the data and facts of our respective areas of interest, enabling us to become experts in our field. All that's left then is to elaborate on our network of connected ideas in a meaningful way.

Capture Nurture Share

The first elements of a Zettelkasten involve capturing, nurturing, and sharing.

Capture

To capture I have a simple note app that takes in all my random thoughts. I call this my "Mind Dump".

Nurture

To nurture, each day I look at this random collection of notes, thematically organize them and paste the contents into a file that's related to the content. Then I choose some areas I wish to clarify and organize these thoughts into coherent ideas. Turning each thought into an individual note.

Share

Finally, through this book, I express these thoughts. The process of which refines my thinking and leads me further to nurture my ideas.

Time-Context-Category-Hierarchy

TCCH: A Latch Method alternative

To decide where to put our notes in relation to each other, it is helpful to use this process of organization.

Time

Time and attention are our most scarce resources. It is also the one most useful in making or notes discoverable when we need them most. The first note should form the entry point to other notes that we can time-bound. For example, I have a note that I check daily that reaches all other time-related notes. This is useful for creating a routine of identifying and nurturing notes that are of most critical importance now.

Context

These are notes that are grouped related to a specific problem or occasion you have encountered or may encounter. They work a little bit like Time except there is no requirement schedule them in advance. You just access the information as needed when you encounter the context, enabling you to can act on the fly to any situation.

Category

These are the broad categories notes can belong to. You can think of them as genres for books or departments in a government. They largely should not overlap with each other. Although there's no need to strictly enforce this. It's just useful to know which category a thought belongs to or whether to create a new category.

Hierarchy

This is where things get interesting. In your categories you can break ideas into themes with as many layers of depth as you like. I suggest you tackle this iteratively and over time. Ditto for the broad categories. You want your broad categories to emerge as you merge and split ideas apart and group them into themes. Keep going until your ideas can't be split apart and your broad themes are mutually exclusive. This will leave you with a hierarchy of notes with different levels of detail going right down to the most fine-grained. These are the atoms which you can now reassemble into an interesting chemistry of ideas.

Zettelkasten Refactor Tool

To help manage my Zettelkasten, I'm building zrt - the Zettelkasten Refactor Tool. zrt has two primary goals.

  1. to be a command line tool to help nurture Zettelkasten notes and
  2. to be an introductory project for me to learn the Rust programming language.

My ordinary workflow involves using Obsidian. However, certain tasks require specific tools to help me with challenges I face. Chief among them for me right now is the question of "What notes should I organize next?".

While I could create a plugin for Obsidian, I wanted something that doesn't rely on any particular interface and that could be extended to work with any workflow, including Vim.

Hence, I started creating this cli tool in Rust. Welcome to the user guide and documentation for zrt.

YAML Frontmatter

The first thing you need to know about zrt is that it uses yaml frontmatter to organize metadata about your notes.

Your YAML frontmatter should look like this and be placed at the very top of the file.

---
tags:
  - refactored
  - blogged
---

Note The refactored tag lets me know that this note has already been processed and the blogged tag informs me that I have shared this note.

The tags you use are completely flexible. You can tag however you see fit.

Ignoring Folders

If there are files and folders you don't want to consider in your refactoring, you can add a .zrtignore file to the root of your obsidian vault or knowledge management folder.

It works like a .gitignore file.

# /.zrtignore
ARCHIVE/
CALENDAR/
DRAWINGS/
IMAGES/
.git/

now the files in these folders will be ignored by the zrt tool.