We all learn so much through various modes in our day-to-day life. There are so many concepts, so many theories, if kept at our fingertips could be useful in various situations of life.
What Really Happens In Our Learning Process?
We learn a concept and understand it
If it was learned from a book, we highlight it. If it was online, we bookmark it
We remember it for a few weeks or months
After this period we still remember the topic on a very high level but with a lot of gaps
What Do We Need?
Generally, a story linking the concept to a bigger picture is missing
A visualization of the problem and solution is missing
No matter what you do, it will still be forgotten, even though you highlighted it but most probably you won't read it ever again. So a better way of repetitive learning is required.
A way to link different learned concepts and easy access to it is required
System
We need a way to maintain cards for the summaries of all the topics that we learned.
But physical cards are not durable, or linkable, and they make it hard to have diagrams.
So, We need a Digital Flash Cards system. And this system should provide simple APIs/Commands to work with these cards. You can easily link these cards, add URLs to other sites, and add URLs to diagrams you created using draw.io and kept in your drive.
This might sound confusing but to make things clearer, I'll take the example of what I do now and how it is helping me.
I have created a simple command line utility using Golang. Using this utility I can add a new card, get a random card for revising, etc. There is a simple HTML file as well which can be used to read the summaries in a more formatted manner.
Each card has the following properties -
Title
Note (this is the main summary content)(Can be a 1 liner or a big write up)
Tags (array of string)(example - networking,java,security)
Linked (array of all linked cards)(cards should get linked covering the whole depth of relations. You can use your tree ds skills here)
ID (auto increment)
URLs
Mentos Point (Anything interesting you found out while learning this concept)
Examples Of Cards I have - TCP Congestion, Server Name Indication, Linux Namespaces, and many more .....
To make this centralized, you can decide to host this on some remote server.
This is a simple and powerful way if you are serious about not forgetting the important things you learn.
There might already be tools doing this for you but generally, they have limited functionalities for the free tier. Having your own tool helps to customize it the way that suits you and also makes you more serious about following the system.