index page - awarm.space

What notetaking tools can learn from programming languages

In this sense, with most of the current note-taking apps, working with notes feels like writing code without syntax highlighting, code autocomplete or Git integration. All the things that programmers have been taken for granted for decades. That's pretty sad, don't you think? Today's knowledge workers are facing new challenges all the time, and they deserve better tools.

- Obsidian.md

Autocomplete

Autocomplete as a basic tool exists in most notetaking systems but it's woefully underpowered. The autocomplete should operate not only on the characters of the word your typing but their position in the structure of the document you're writing.

Making a recipe and filling out the ingredients list? It should be autocompleting ingredients followed by weights. In the recipe itself autocompete should prioritize the ingredients you just entered!

Links as dependencies

Links are a basic building block of digital notes. The ability for a thing over here to reference a thing over there is incredibly useful. However links in current notetaking systems seem like GOTO statements in BASIC, a vague gesture, "go over there and figure things out".

Instead, links should be treated more as dependencies. They're ways of composing ideas, and manipulating them. A link to a note should tell you not only what/where the note is, but how it's being used . It should let you access data about that note, like when it was updated or what else links to it.

Naming things

Of course to link to something you need to know what to call it. THis is one of the hardest things about pure plaintext notetaking systems. It's extremely useful to have fine grained references for everything in your notes.

But naming things is as hard a problem in notes as it is in programming (specifically, the hardest problem). Good titles for your notes can enable really powerful thinking , but really good titles are hard to make.

Programming languages have many different ways to tackle naming, but fundamentally they give you explicit control. You have ways to give things new names in particular contexts, to

Moving around the ladder of abstraction

This I think i sthe core of why programming is a good way to think about notetaking. Notes are complex structured data that interact with both themselves and the outside world in various ways. Crucially, they sometimes are very specific, and other times extremely general, and are constantly moving between levels of complexity.