Skip to content

p-tupe/zettel-merken

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Zettel Merken Image


Supercharge your learning by combining two of the most revolutionary ideas in knowledge enhancement!


GitHub tag (latest SemVer) GitHub license GitHub issues GitHub last commit



Introduction

Zettel stands for "note" and Merken stands for "remember" in German. A literal translation would imply "Remember your notes", but that is an overly simplistic definition of what the title stands for.

To be precise, Zettel Merken is a fusion of two impactful ideas in the field of knowledge management and learning enhancement: "Zettelkasten" and "Spaced Repetition".

What is Zettelkasten?

The Wikipedia article defines zettelkasten as "The zettelkasten is a system of note-taking and personal knowledge management used in research and study".


Zettelkasten paper schematic

zettelkasten.de is a wonderful little site that is all about, well, zettelkasten. Do read the introduction. To pick an excerpt from there:

A Zettelkasten is a personal tool for thinking and writing. [...] The difference to other systems is that you create a web of thoughts instead of notes of arbitrary size and form, and emphasize connection, not a collection.

If I had to explain the concept to someone in a hurry, I'd say: Zettelkasten = Mind Map + Flash Cards

Of course, it is not entirely either, so I would recommend following the links above for a more detailed understanding.

How I use Zettelkasten

I take notes for everything! From doing research for my web novels to learning new languages, from my transaction history to ongoing projects, suffice to say I have a lot of notes. However, I have come to realize that not all my notes are highly connected. Rather, a collection of notes is usually extremely cohesive with one another but largely decoupled from the rest. So I follow a sort-of watered-down system like so:

  1. One single folder called "notes"
  2. An index (No direct notes made here, only links), usually named "index.md".
  3. A "hub" for each topic. Imagine a hub as a collection (like a notebook or a drawer). One hub usually points to one large topic.
  4. A "zettel" for each atomic piece of info. All zettels for a topic are linked into the hub and are stored in a folder usually named after the same.

That's it! To expand on the above, here is a sample of my current notes directory:

~/Notes
├── index.md
├── books-and-articles.md
├── books-and-articles
│  ├── atomic-habits.md
│  └── ledger-accounting.md
├── code-notes.md
├── code-notes
│  ├── python.md
│  └── vim.md
├── learning-french.md
├── learning-french
│  ├── basics-1.1.md
│  ├── basics-1.2.md
│  └── basics-1.3.md
├── transactions.md
└── transactions
   ├── 01-2022.md
   └── 02-2022.md

As you can see above, I have hubs after each topic: zettel-merken, books-and-articles, learning-french, etc. Each hub has a file.md and folder with the same name. I take all my notes in neovim in markdown format No special plugins, just a couple of functions and mapping. See wiki.

Thus, my index.md will look like:

# INDEX

- [Learning French](./learning-french.md)

and my learning-french.md:

# Learning French

- [Basics 1.1](./learning-french/basics-1.1.md)

- [Basics 1.2](./learning-french/basics-1.2.md)

- [Basics 1.3](./learning-french/basics-1.3.md)

Concerning zettels, I try to have them in an easily digestible format. Each zettels has a microscopic focus on the information it is trying to convey. That is - all the content inside a zettel must directly relate to a single matter or flow in one direction. The size of the file is irrelevant, although I try to keep it short and simple.

For example, basics-1.1 might look like:

# Basic 1.1

## Level 0

- un = a (sounds: un)

- et = and (sounds: ae)

- un chat = a cat (sounds: un shaa)

- un homme = a man (sounds: un oum)

- un garcon = a boy (sounds: un gars-on)

- un chat et un homme = A cat and a man

Also, I try to avoid more than one layer of nesting below the "notes" folder but in some cases, it is inevitable. However, there should never be a need to go beyond two layers.

After following the above system consistently for a few months, you'll have a decent-sized collection of notes all linked together in a proper structure. That being said, simply "collecting" notes is never going to help you learn in the long term. That is where the Spaced Repetition comes in!

What is Spaced Repetition?

Excerpt from Wikipedia article:

The basis for spaced repetition research was laid by Hermann Ebbinghaus, who suggested that information loss over time follows a forgetting curve, but that forgetting could be reset with repetition based on active recall.


ForgettingCurve

Excerpt from e-student.org:

Spaced repetition is a memory technique that involves reviewing and recalling information at optimal spacing intervals until the information is learned at a sufficient level.

It is quite difficult to manually track hundreds of notes and review a set everyday. You'd have to keep logs of when each topic was visited, how many repetitions were completed, when the next review will be and so on. Quite cumbersome!

That is were Zettel Merken comes into play. Not only does this program keep track of your every note and its schedule, it also automatically emails notes that are due for review for the day! How awesome is that? It is quite easy to use too!

Setup

NOTE: Code was written in and tested on Manjaro Linux (kernel 5.18) with Python 3.10 (compatible with 3.9)

  1. Install

    python -m pip install zettelmerken
  2. Configure

    python -m zettelmerken --config

    Create a config.json in either ~/.config/zettel_merken/ or ~/zettel_merken, and open in default editor.

  3. Initialize

    python -m zettelmerken --init

    Create systemd units to exectute zettelmerken on a daily basis.

  • Help

    python -m zettelmerken --help

TODOs

v0.2

  • Add slack webhook alternative to email
  • Add a wiki

v0.3

  • MacOS Support

Maybes

  • config.toml instead of config.json?
  • Windows Support?
  • Per-note schedule?
  • Docker Image?

About

Supercharge your learning by combining two of the most revolutionary ideas in knowledge enhancement!

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages