Summary: Introducing a local search engine for Markdown files, available on Github. And how note-taking got me a new brain.
One colleague once told me I had an elephant brain because I’d remember all the configuration details of a rather complex app we developed that time. The truth is actually the opposite. Memorising has always been a weak side of mine. I tried to improve my remembering skills by dabbling with mnemonics and reading “Moonwalking with Einstein” but nothing really helped. In fact, I sometimes feel that something in me wants to oppose the need to remember mere facts that could be easily looked up.
However, around ten years ago, I did something else. I was working on 2-3 projects at the same time and noticed that I tend to look up the same kind of information over and over again. I got annoyed by this. Why couldn’t I remember something I found out a few days ago? So I tried something new: whenever I had to search for some fact or made a decision I knew I might forget later on, I took a note of it. Over the years I made a habit out of this and I think I’d qualify for being an excessive note-taker.
I write down everything I think I’d might forget or what might become a “remembering” challenge later. There are obvious things like “how do git hooks work”, “how do I create Intellij files using Gradle?”, the Stackoverflow kind of knowledge chunks. But also when developing software, for example, things I consider not clear and that may become a problem later, I document those. Speed is important. Nowadays, before thinking “should I take a note of this…” I probably have it already written down somewhere.
The advantages of note-taking
The obvious advantage is I’m able to remember much faster a fact. I have it stored somewhere and “all” I need is to find it (more about that later). But there are other advantages:
- It helps to digest the material. Not really news, every student knows that, but worth repeating. Learning something and then writing it down, preferably in one’s own words, helps a lot digesting and integrating new knowledge.
- Taking notes makes one more productive. Instead of merely consuming knowledge I actually create something.
- It is writing practice. Writing is a habit (as any author can confirm) and even though it might not be sufficient to write your next novel, writing down little things every day do help increasing one’s writing fluency.
- You become the guy with the deja-vus in your team (because you took a note somewhere and problems start to sound familiar “haven’t we talked about this two months ago…”)
Plain text + preferred editor as the best note taking software
Over the years I have tried quite a lot of note taking applications. One crash of an application that used a proprietary binary format, however, taught me the value of plain text. That plus the invention of Markdown never let me look back to anything else. There are now plenty of nice Markdown editors available that make creating notes a snap. I have a folder on my disk (backed-up constantly) that contains all my notes (in some hierarchy) and that’s it.
Creating new notes is not the problem. Finding them is, once you have a certain amount of data.
Finding notes is the challenge
Plain text has another huge advantage: it enables processing the files on my own. Most of the time it is possible with “on board” search of any OS to find what you are looking for. But it can be done better. Why not take advantage of the fact that the files are written in Markdown? For example, how about giving words a boost that are emphasized? Or those that are in the headlines?
Another habit I started some time ago was that the first line of my files (usually the h1 headline
#) is a list of keywords that makes it easier to find the note later. It has become a fluent process for me to write down my notes that way. How about a search engine that treats the first line of a Markdown as a list of tags and that allows me to search for those?
Show HN: markdown search, tagging included
It is actually quite easy (weekend effort) to build a local search engine that does all this.
Built using Flask, Whoosh and Mistune.
The project (with documentation) is on Github1 if you like to try it out for yourself.