The project can be found on GitHub.

Contents

Zettelkasten everywhere

May 2020. News regarding the Zettelkasten system, popped up everywhere and I was intrigued. It was said that it structures your notes in such a way that it greatly supports idea generation. Many people were even calling it their 'second brain'. I wanted to make my own Zettelkasten, so I started to search for the perfect program to use. But I wasn't really content with the existing programs, so I decided to create my own.

From a GUI to a terminal application

My first version of my Zettelkasten program was a windows application I developed using C#. I was around 90% done with it when a problem occurred.

I changed my main operating system to Linux. As terminals are a major part of Linux I grew accustomed and even began to favor them over GUI applications. So I began having the thought of how great it would be to have access to my Zettelkasten by using the terminal.

So I started from scratch.

But for some reason I wasn't content with just rewriting the program. I also wanted to learn something new. So I decided to use Rust, a programming language I've never used before, to create this new version of the program.

Naturally, learning a new language, especially Rust with its complex rules of ownership and lifetimes, made it much more time consuming than it would've been. But now after nearly 2 years since the first idea, it's complete.

The final product

The final product has everything someone may need for creating a Zettelkasten. You can add notes, remove unused ones, or search using multiple keywords. It even has Vim keybindings 😉.

Furthermore, a template can be created, which determines how newly created notes look like.

There are even some commands that may be helpful if you want to create scripts to improve your workflow. I created some myself, which can be found here.

For example, the script dmenu-zettelkasten-link-handler enables me to search my current terminal window for note links and open one of them using dmenu.

Conclusion

In the end I'm pretty satisfied with the small tool I've built.

I may not be proud of the long timespan it took to complete such a seemingly small program, but I can say with confidence that I learned much along the way. And if I would make this program again, then I'm sure that I would only take 2-3 weeks 😉.