Memex Dreamspersonal knowledge management

Memex has become a kind of holy grail for information workers, never-built tool which inspired the web and hypertext back in 1945.

For me, the web is one side of the puzzle, although implemented in the way that leaves some things to be desired (Project Xanadu tried to solve that).

The other part, one that feels missing, is a network for my knowledge.

I stopped trusting my memory a long time ago, and I hate the feeling of stuff slipping through the cracks. I started to use a dedicated todo app sometime in early college, and discovered GTD methodology soon after. This worked well for a while. I've been a happy Things user for a while, and migrated to TaskPaper format when I felt too constrained by Things assumptions.

I even wrote my own TaskPaper parser, and started scripting my task list: automatically turning @due dates to @today at appropriate day (in combination with cron), archiving @done tasks, or a script that would group tasks by date and print them out, so I could see how my next week is looking.

This worked well for a few years, but over time, my tasks started turning more from implement X, to research Y, think through Z, etc.

Once my TaskPaper had more comments than tasks, I knew that this was not going to work for long.

I was also keeping separate folder of notes, initially using Notational Velocity, which then changed to just a folder of markdown files. Some of the notes were related to projects, some of them not. I never knew if a given piece of information should go in my TaskPaper comments, or my other notes. And then, there were notes for thinking about things, which sometimes spawned new projects. This was a disaster in slow-motion.

Since notes and tasks were overlapping so much, I decided to combine them. I wanted to introduce as little complexity as I could, so writing a web app to store all that data in a database didn't feel right. I needed just a bunch of markdown files, some basic structure, and one thing I couldn't live with — that script to show my tasks for the next few days.

The structure that I currently use looks like this:

  • /inbox.md - my first-order everything inbox
  • /Projects/ - with sub folders per personal project:
    • /Projects/Archivist/, which usually includes at least index.md and worklog.md
  • /Work/ - with the same structure as /Projects/, just with work stuff
  • /Journal/ - with single file per date — I keep that file opened the whole day, it serves as a scratchpad, brain dump, way to record reminders, ideas, etc.
  • /Calendar/ - with single file per year — used to schedule long-term reminders that don't fit anywhere else
  • /Notes/ - personal knowledge base

To deal with upcoming tasks I wrote muninn, a small CLI utility which parses all the files, and organises tasks by date. I use github flavored markdown to store my todos, and extended markdown parser to deal with @due(YYYY‑MM‑DD) dates, in the end a file for this article looks like this:

# Memex Article

- [worklog](./worklog.md)

## References

- [memex and workshop vs library](../Notes/Zettels/memex\ and\ workshop\ vs\ library.md)
- [self-cybernetics systems](../Notes/Zettels/self-cybernetics.md)

## Todo

- [x] rough outline @due(2020-04-01)
- [x] re-read outline @due(2020-04-02)
- [x] article setup @due(2020-04-03)
- [x] initial writing @due(2020-04-03)
- [ ] rough pass at first section @due(2020-04-04)

## Outline

- ...

I have two conceptual inboxes.

First one, inbox.md, is where the most interesting links end up, together with my random thoughts, waiting for a weekly review. I mainly append to that file through iOS shortcut. I can quickly share a twitter link, or jot a quick note in drafts.

Second one is a bit more convoluted. Sometimes during the day I have, well, thoughts. Some of them don't want to go away, and as a way to temporarily "close the loop" I jot them down in my daily journal. Sometimes an idea keeps coming back, and if that happens, I work on it through multiple days in those daily journals, and once it feels good enough, I move it to the longer-term storage — /Notes/ directory.

Weekly review is an important part of this process.
An inbox is not worth much if it's never cleared.

Right now, usually on Sunday mornings, I check out every collected link, and last week of daily journals. At this stage, I'd say half of the things are ignored, because after a couple of days they just don't matter much anymore.

Some things are migrated to be stored as reference materials, articles end up in pinboard, and images/gifs/short videos in pinterest. I then archive those archives in Archivist so I can be sure I won't lose them even if the online services stop working.

Keeping worklogs had the biggest positive impact on my work in recent years.

The basic idea is simple — to just jot down whatever I'm working on at the moment. Even better, jot down my assumptions, potential issues, and conclusions.

Sometimes I sketch out an API before I write it, sometimes I draw some boxes and lines, then I take a photo and add as an image to that document. Sometimes I outline a few slides for a talk, or just think through how something could work, without implementing it.

This process leaves a visible trail of what I actually did on a given project, which makes it so much easier to get back to things after a break. It also helps fight against Zeigarnik effect — I don't have to keep thinking about things once I wrote them down.

Worklogs also introduced me to the idea of writing as a thinking tool. Instead of trying to "come up" with a solution in my head, I write/draw through/with my thinking process. Writing is a great metacognition tool, it allows me to see my thinking, and debug the thinking process afterwards.

This all leads my to the way I store notes.

My main inspiration was the infamous Zettelkasten system. I'm not going to introduce the ideas here — The Zettelkasten Method on LessWrong does a great job of that.

  • obviously, everything is stored in files instead of index cards
  • I don't use stable id to name the notes, I prefer human-readable ones, even if that means I sometimes have to fix broken links
  • I'm not against adding quotes to the note, but I never leave it at a quote alone, I always write my own thoughts next to it

The main premise is there though — notes are short, they usually contain one idea, even if I can't name it yet (this also leads to interesting note titles, like spreadsheets might be a wrong model, or understanding requires effort). Notes are interlinked through direct links, and automatic backlinks (via muninn cli tooling). If I have a bunch of notes which seem related in some way, I create index note to collect them together, enforcing a specific point of view. Single note can be in multiple different indexes that way (connections are usually better than taxonomies).

I edit my thoughts in vim, which allows me to easily view multiple notes at once, and with addition of muninn-vim, to explore backlinks. Typical thinking session looks similar to this:

typical editing session

Once something ends up as a note in my system, it was probably rewritten at least a couple of times, through inboxes and daily notes. I put it there when I'm pretty sure it's not a temporary thing-to-remember, but something that will allow me to make new connections, and grow ideas. I try to not replace already existing notes, but build upon them, even if my understanding and ideas change.

Like with most of my projects, this is a very personal one. It fits my way of doing things, and similarly like with Timav, changes the things I do. The latter forces me to spend time doing the things I want to do, by showing me the time tracking data in a specific way, the former makes me think thoughts that I probably wouldn't have thought otherwise.