This post is originally from my blog.
This is an overview of the tools and software I use to maintain and index of my knowledge and life in an efficient and shareable way.
The main knowledge base program I use to save and gather information is Archivy, an open source project I created that supports hierarchical and bidirectional notes, local bookmarking (downloads the webpages you want) and is highly extensible.
I run a local instance of this program on my computer, through which I edit / manage my knowledge, simply opening a new browser tab or vim when I have content to write. All my data is stored as markdown files in a local git repository that I push to a private GitHub repo for backup / access on my phone.
The git setup I have makes it so that whenever I push my changes and indicate new files in public visibility this website is updated.
This setup allows for a few advantages:
- extensibility - the software I use is very flexible so it's very easy for me to script / setup infrastructure around my knowledge base. This is possible using tools like Archivy plugins and APIs.
- ease of sharing - this extensibility allows many ways for me share my knowledge base, and also distribute the extensions / scripts I use to organize it. My knowledge base can then also have value for other people, and I can directly send my notes, on top of having it act as a personal knowledge repository.
- ease of access - I can access my knowledge whenever I want, on any device, through github / my public static site.
The actual content I save into my knowledge base can be divided into multiple types.
Notes are a very important part of my knowledge base, as they are useful for retention and helpful to go back on things I've learned. My knowledge base is constantly compounding with new information that I can link together.
Whenever I read a non-fiction book I always try to highlight and annotate it. Then, once I'm done I come back to it and try to synthesize its main ideas. Although this process is long, it helps me really make sure I understand all the core ideas of the work and have a way to review its essential message. Examples: The Selfish Gene or The Theoretical Minimum.
I also keep notes on courses or talks that I have attended, often related to STEM. For these I use embedded LaTeX and screenshots of course material. Example
This part of my knowledge base acts as somewhat of a personal record, or journal of the things I've done and the content I've consumed.
Indeed, I find it useful to compile collections of miscellaneous content I appreciated. It helps me keep track what I've done and when I did it. This is a form of bookmarking generalized beyond just links. For example, the lists of the books I've read, words I like, quotes, poetry or articles I saved. I gradually add to these whenever I find something relevant.
I also jot down lists of events or activities I participated in and would like to keep a digital reference of, in the form of a journal. I'm very fond of cyber-security for example, and when I do a cyber-security competition (CTF) I enjoy saving my opinion of the event and its challenges.
All of these different types of content benefit from links to articles as references. One of the core feature of Archivy is it's ability to download / store web content locally. To this effect, I often use Archivy's functionality to download relevant articles or webpages that I then link inside my notes. This also ensures the content survives link rot.
I also keep many standalone documents that I'd like to have backed up in my knowledge base: for example, school material that I can then share with classmates, or the poetry I write infrequently.
This process allows me to quickly search and navigate all the things I've learned / done / appreciated. I can explore and handle this content manually or programmatically through scripting.
This way of interfacing helps me access my knowledge base efficiently and share without any hassle. I'm very satisfied with my setup but plan on adding more features to the software I use; including a graph view of links similar to Obsidian's, and better tagging.
I also think there are many interesting plugin ideas I could develop to script with my content: like a script that uses Natural Language Processing to generate spaced repetition quizzes on your knowledge base.
I plan on implementing ML integrations to have automated suggestions of tags and links between notes, something I'm really excited about too!