Mind This Design Choices

This very project, Mind This, remains one of my favourite work. Have been conceived as on knowledge hub, it combines a lot of large and small ideas that somehow just perfectly clicked together, and produced a whole new organic blend.

The original idea came after researching efficient ways of learning. The spaced repetition was well known since it was established by Hermann Ebbinghaus in 1880s. Many different softwares, like Anki, proven successful for their plentiful users. The idea is quite simple. If you want to remember information better, you need to review it from time to time. Some researchers has been done and established that the ideally time periods has to increase for optimal learning schedule. How exactly they need to increase?

Spaced repetition

I thought it might be a good idea to marry a knowledge manager software with spaced repetition. You type a note while learning, researching a topic, or say reading a book. And then that note pops up for a review, after some time, and then again and again.

To review a note, you read it and then press the "Mark as reviewed" button. In the navigation menu there's always a Review item that highlights how many notes are due to review at this particular day.

Review
Review note

This feature alone is very valuable to me, as I constantly stumble upon interesting stuff I have been going through say a year or two ago. Or a list of retro games that I wanted to play, or some interesting trivia fact about some.

Since there is no particular review schedule that seems to be appropriate, after several years of using it, I came up with a schedule that seems to work the best for me. You can see it on the image below.

Schedule
Schedule can be viewed from the top menu

There are 10 levels, each note starts at level 0, and proceed to the next one after a review. One can easily see which level it's on right now, and how many days till next review, by clicking at the "Ln" icon in the top bar (where n is the current level).

The review mechanism is also great to revise what you know. As our knowledge on any topic is never constant, we learn something knew, we adjust our thought process, and so on. Very often while reviewing a note, I end up updating it with the new information, or edit it. While quite rare, but I may decide that a particular note hold no value anymore, and I delete it.

Data/platform independence principle

One of my guiding principle while building this website was the data / platform separation. Your knowledge is just a collection of markdown files, and that's all there is. Mind This is a simple manager on top of a bunch of markdown files. That's all it is.

At any point you can download an individual note as a markdown file, or download the entire archive. Then you can edit it in your preferred editor, and upload it back. Or remove your data from the website completely.

You'll see next, that a lot of features are designed the way they are to not change this simple fact.

For example, when you create a new note, it's assigned a numerical id. You start with 1, then comes 2, etc. When you download your data archive, all your notes, are named accordingly (1.md, 2.md, etc.). This simple numeration system allows to easily cross-link notes, and is reminiscent of the Zettelkasten system.

Markdown

One of the most basic functions of this website is the ability to type notes. It can be a plain text though I prefer markdown much better.

Any sort of text needs some sort of organization (think, subheading, bullet points, links, etc), and I find markdown being the easiest way to do this. You need a link, just use a syntax like [mylink](https://mylink.com). Ordered list is simply numerated lines starting from 1., 2., etc. And so on.

One
One example of a note using markdown and syntax highlighting features

Markdown is also extensible. For example, syntax highlighting is quite easy to support. We also support the fantastic mermaid diagrams. All of this gives users a lot of different tools on how to structure their notes, without really overflowing users who don't need extra functions.

Example
Example of using mermaid

Cross-note links

It's crucial for any knowledge base, to have an ability to connect different notes. It's a bit like a network of knowledge, where each individual node is a text note on a specific topic. Since all notes are numerated, and that number is unique, it's easy to link from one note to another.

Markdown provides a way to add links in the form of: [description](url). So it's a natural way to link notes. The only difference is that instead of using an actual url, you just use a number of a note you want to link to.

An
An example of cross-linking notes

When you click on such note in the system, it opens a side dialog. After having a look, you can close it and stay on the same page. This is done to not loose the context.

Focus mode

When you're in the flow, you want as minimal interruptions as possible. That's why there's a focus mode, where all the non-essential menu items are removed.

It's also nice, that you can resize the editor to occupy smaller space, and put it next to your current research interest side by side. Literally the feature, I use every day.

Focus
Focus mode side by side with a browser

Organising

As I mentioned earlier, Mind This is first of all a knowledge manager on top of markdown files. Which means its goal is to make it easier to navigate and organise notes in a meaningful way. There are several sides to it.

One way to do this is to use tags. Note, that there is no a specific control that allows you to add or remove tags. Instead, you put tags directly into the body of note, and the system will update accordingly. This is again in accordance with the first principle - everything is in markdown notes.

Tags
Tags can be anywhere within a note body; I prefer to put them in the end

A tag is just a word started with a hash #, and it can be anywhere within a note. Tag list is always at your disposition at the left menu, making it easy to navigate to a particular topic.

It's also easy to search across all of your notes with full-text search. It's fast and convinient.

Sometimes, I'd like to collect multiple notes under one umbrella note. It kinda serves as a table of contents for a specific topic, so I call them "index" notes. It's just a note like any other with links to other notes.

Example
Example of an index note

What's next

I'm looking for ways to open source the platform and try to separate ui from backend, so that it could be possible to run it on a local machine on top of a local directory with markdown files. This way your data will never be stored in a cloud. I know that for many people this is a must.

I'm also looking into more ways of using AI in a meaningful ways. One idea would be to let it create simple tests based on notes, since testing is an efficient way to improve retention with active recall, and AI nowadays is particularly good at tasks like that.

#Public

More posts by @yt →
Powered by Mind This.