As a professional working with multiple technologies, you’ll inevitably encounter a wide array of peculiar issues and even stranger solutions. Although you might think, “This will never happen again,” chances are it will and you will lose time to “reinvent” your solution. It took me a few years to realize this and to begin documenting my knowledge. Now I try to note down as much as possible - including hardware problem debugging and bash one-liners. Even though building your knowledgebase will take time, you’ll undoubtedly appreciate the decision to create and maintain it. So, what recommendations do I have for building such a knowledgebase/wiki?

For over a decade, I attempted (more or less unsuccessfully) to create a personal wiki. The main issue with my failed attempts was a technical one - I spent far more time selecting the right software and tools to do the job instead of focusing on the content itself. My journey involved the following tools and software:

I strongly advise you to avoid following the same path, as it could lead to a loss of valuable knowledge. Always keep in mind the primary goal of building a personal wiki: storing text, code, and images. Fancy features are generally unnecessary, although there may be exceptions. Your main priorities should be storing information in an open format for easy export or backup, and sharing the content between your devices. Initially, I believed the software I used needed to be open-source. However, it doesn’t have to be open-source as long as it works with an open format like Markdown, which allows for editing files outside the main software and sharing them across devices.

To summarize my requirements:

  • The software must work on Linux
  • It should use an open format (preferably Markdown)
  • Text files can be edited outside the software without causing issues
  • No maintenance required (avoiding self-hosted PHP or Python apps exposed to the Internet to save my time)
  • The software should facilitate navigation and searching of files (using tags, etc.)

Ultimately, I chose Obsidian. This closed-source software, free for personal use, works with plain Markdown files and incorporates additional features such as tags and a user-friendly interface. It also supports numerous plugins. Utilizing Markdown simplifies Git versioning.

Obsidian’s default UI creates a pleasant reading experience. Below is an example of a source Markdown file and its display in Obsidian.

## Publish package

```shell
python -m build
python3 -m twine upload  dist/*
# use __token__ as username
```

#linux #python #packaging

How it looks like in Obsidian:

Reading mode in Obsidian

One of the core feature of Obsidian is internal linking (one fili linking to another). Using this Obsidian build a “knowledge map” and also can show me which page links to which.

Obsidian is thoroughly documented and easy to use (at least for me). If you don’t preffer knowledgebase software running server-side (like MediaWiki), you should give Obsidian a chance.