Skip to content

Knowledge Database

Dmitry Ponyatov edited this page Jul 16, 2019 · 1 revision

Knowledge Database

If you still can't stop documenting, build tools to make it nonlinear. Books and even small papers brokes your brain with need if arrange your ideas and text parts sequentially. Human thinking is not sequential. You think in small schemes, and sometimes in short texts. When you need to describe something, you want to shadow elements and concepts not now in view.

Remember Knuth’s literate programming -- this concept was dead by design. You don’t want to do every detail going from include and initialization till the end describing all that scrap in every deep detail.

What we want is mind maps and documenting object grids. If we call some term, the system must provide us an ability to link all places where this term is used. If we write a tutorial, we want to describe things in layers of deep, from short observation of idea to some deep details, but not all details.

When we trying to push our thought into traditional forms like papers, we need some tool which helps us to track dependencies: what we should say before, what themes must be known to understand next chapter.

Frequently we want to search some text in a fuzzy way when we feel that text repeats, again and again, will small modifications. Modern text analysis tools can help us.

It is not required to have linked text. It is better to have graphical diagrams, and short text notes, then a few pages of text describing the same thing.

I'm totally disappointed with how I work with information, and how we use computers at all.

Now I have two desktops and a mobile phone. Also, I have a lot of points on the Internet where I frequently leave my notes. I have Github and closes bitbucket accounts. And all these data storages are totally unconnected.

I hate the github approach to having a single isolated project for every project. When I want to test some concept or make a custom project, I'm forced to create yet another repo. What I need is a few tiny code snippets to work with, but to make it work I must copy (not inherit) some template code package including doxygen config, Makefile, .gitignore, repeat again and large parts of docs, etc. A single set of concepts forks into decades of similar GitHub repos, you can see this hell on my GitHub.

Moving to the job right now, I want to do some notes on the phone. I write it offline in a google doc, then I’ll sync it, check grammar and syntax. I want to write it in short text snippets and include them by reference many times in very different places in my projects, Quora posts, email, etc. I can't do it, as the information universe which the Internet must be, many decades stays isolated bevy of jails can't interchange data automatically.

If I found some interesting comment, and want to answer, the all what can I do only post a URL, but the target page must be fully formed web document with all schemes and paragraphs copypasted manually.

If I found some mistype in this text, nobody will fix it globally in every place where I use parts of this text.

What can I do with it? Yep, write yet another (!) knowledge management system, which will be again isolated from all the other systems already exists. But I have a chance to work with info the way I want, it saves my hair from pulling out.

Features are required to be here

What I want is system lets me group tiny pieces of knowledge -- texts, term definitions, source code written in a decade of programming languages including self-designed DSLs, diagrams, people contacts, API, etc.

Every time I want to make a not, the knowledge database must create a new view (little document page), where I can put knowledge rendering by inserting info by references, and control how they are rendered in printable and (mobile) displayable manner.

The knowledge database metasystem (KBMS) must be distributed between all my working devices, and able to be used offline in an along time. It must do automatic sync not only between instances but also do background update a huge amount of its reflection on many many external resources.

The system must be programmable and homoiconic to be tuned, transformed, extended and provide an ability to write large distributed integrated applications.

So, from the top view, it looks like it should be my own Internet with blackjack and Python, runs as a guest system over existing infrastructure, protects data by isolation, but integrates into points where I want it should do. I'll call it KnowledgeNet, or KB (knowledge base), and it must kick ass the Google next decade 8-)

Clone this wiki locally