Package: zettelmerken
Supercharge your learning by combining two of the most revolutionary ideas in knowledge enhancement!IntroductionZettel 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?TheWikipedia articledefines zettelkasten as "The zettelkasten is a system of note-taking and personal knowledge management used in research and study".zettelkasten.deis a wonderful little site that is all about, well, zettelkasten. Do read theintroduction. 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 CardsOf course, it isnotentirely either, so I would recommend following the links above for a more detailed understanding.How I use ZettelkastenI take notes foreverything! From doing research for my web novels to learning new languages, from my transaction history to ongoing projects, suffice to say I have alotof 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:One single folder called "notes"An index (No direct notes made here, only links), usually named "index.md".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.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.mdAs 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, myindex.mdwill look like:# INDEX-[Learning French](./learning-french.md)and mylearning-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.1might 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 manAlso, Itryto 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 fromWikipedia 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.Excerpt frome-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!SetupNOTE: Code was written in and tested on Manjaro Linux (kernel 5.18) with Python 3.10 (compatible with 3.9)Installpython-mpipinstallzettelmerkenConfigurepython-mzettelmerken--configCreate aconfig.jsonin either~/.config/zettel_merken/or~/zettel_merken, and open in default editor.Initializepython-mzettelmerken--initCreate systemd units to exectute zettelmerken on a daily basis.Helppython-mzettelmerken--helpTODOsv0.2Add slack webhook alternative to emailAdd a wikiv0.3MacOS SupportMaybesconfig.toml instead of config.json?Windows Support?Per-note schedule?Docker Image?