I’m exploring zettelkasten-esque Creativity Systems. I am attempting to “own” my own data by building out the networked notes in markdown. I’m a vim fan, but I’m looking at other tools too.
This makes Markdown appealing particularly to users who don’t have a background in IT or web design skills, but still want to write texts for the internet regularly: for example, bloggers who work with a content management system (CMS). But even tech-savvy people resort to Markdown for writing simple texts. I am looking for a Markdown viewer. Air display for mac and ipad. It should:run locally on Ubuntu - be a normal program, not a browser addon, webapp or anything else that requires usage of an internet browser.Preferable:s.
Update: I’ve updated my recommendation to use YML frontmatter instead of MultiMarkdown. More here.
As I’ve lurked productivity twitter I’ve noticed that a lot of the digitalZettelkasten1 systems that I’ve seen fall into two categories: ones usingmarkdown plain text files, and ones using a dedicated tool likeRoam/Notion/Evernote. Systems using markdown files can differ wildly giventhe needs of the particular user, and their favorite text editor.
As I’ve tried to build my own system my goals were simplicity and portability.I want files that are compatible with different apps and editors, so that I caneasily take my knowledge-base anywhere.
After intense research I discovered my “new” idea is an old idea2. Here is amodified version of what the experts at Zettelkasten.de say is be the mostcompatible markdown format for plain-text Zettelkasten files:
There is more detail about the parts of a simple markdown zettelkasten over atzettelkasten.de.Edit: There is more argument for using YML frontmatter in a later post.
Implementation Details
Connections
In the original paper implementation3, notes relate to other notes byproximity, and by a ID-powered link.
In a digital format you have a couple different ways to relate notes: Folders,Links, and Tags. I won’t concern myself too much with folders in this document…I will probably have a very flat file structure, only occasionally usingfolders for very specific domains (work vs. home, etc.)
Links
Markdown has a syntax for making a link via [link text](url/or/path/to/file)
.While this is great, I have found that it’s nice to have a separate syntaxspecifically for the in-archive links between notes.4
Although it’s not part of the official markdown spec, it seems a fair number ofmajor editors5 support “wikilink” or “freelink”style links (e.g., [[link]]
). Theones that don’t6 are more prose-writing centric rather than notes databases,so I feel pretty comfortable continuing down this path.
Some of these editors prefer links without the file extension (just thefilename/title), and some support the file extension. For maximum backwardscompatibility, I recommend the full filename and extension.
Tags
There are many different ways to represent a tag7, but using #hashtags
inside of MMD/YAML front matter is the most compatible implementation.
The incredibly organized @sirupsen is using#hashtagstylein the body of the zettel, but that can conflict with the markdown syntax for aheader, so I’m worried about the ramifications8. Putting the hashtags intothe frontmatter dodges this issue by keeping them outside the normalmarkdown, while still letting some apps search for and take advantage of thecommon hashtag format9.
Its just files
I am constantly distracted by lovely tools 😈. One lovely thing aboutimplementing zettelkasten as flat text files is that you can technically workit by hand…
Since I’ve been paralyzed too long by trying to build/discover the perfecttooling, I am going to just start building my “archive”. By hand. Then I willslowly develop tooling to enable what I do most often. On desktop, I amperfectly able to use vim to create, edit, and search files quickly. I’m justgoing to start, and build tools as I need them.
References
I’ve been scouring my own old wiki for references… here are links I used whileresearching and putting this together.
General Information about what is a Zettelkasten
Building Blocks of a Zettelkasten
There’s a thing called “Zettelkasten”, and then there’s you using it. Theformer is the toolkit, the latter is your application of a method.
Required Reading. If any of this intrigues you, this is where I think youshould start.
How to Take Smart Notes: A Step-by-Step Guide
Simple Markdown
A review of a book about a particular implementation of a Zettelkasten systemfor taking notes. There’s some key points in here about how to run thissystem.
Baseline Zettelkasten Software Reviews
This article helped me understand what it is that I’m trying to build, andlargely influenced the direction I’m headed in.
Zettelkasten — How One German Scholar Was So Freakishly Productive
A popular medium post about zettelkasten. Generally good infio.
You Only Find What You Have Identified
The importance of identifiers in the Zettelkasten archive.
How to Write a Note That You Will Actually Understand
Not only good advice for writing ZK, but generally technical writing.
When Should You Start a New Note?
A helpful flowchart of when to write a new note, when to split a long note,etc. Interesting context for how a zettelkasten works in practice.
Manage Citations for a Zettelkasten
Luhmann’s Zettelkasten with DEVONthink
There are other ways to build a inter-woven linked archive. Here’s one.
Markdown-Specific Implementations
Using nvALT as a Zettel Note Archive
If you don’t already have a preferred text editor, but this idea fascinates you, you should probably just use nvALT. Very helpful for anyone thinking about setting up a ZK.
vim-zettel
Very cool package built on top of fzf and vimwiki.
renerocksai/sublime_zk
A very robust package for sublime text. Popular on the zettelkasten.de forums.
How to Make Yourself Into a Learning Machine
A look into how one zettelkasten fan uses his system to expand his learningpower. Some links to some very customized viml scripts to make his system flow.
https://docs.zettlr.com/en/guides/guide-zettelkasten/
How zettlr (an OSS note taking app) can be used for ZK. Obviously by the name,it’s designed a little bit for this.
Some Thoughts on How to Keep a Zettelkasten
Online Markdown Editor
A great post on how this writer uses iA Writer to build his ZK.
Supported Zettelkasten-Specific Editors
Being markdown plain text editors, all of these “support” all the features… butwhich ones have built-in tooling to search? This is by no means an exhaustivelist, just the ones that I tested.
If there’s ones I’m missing, feel free to message me and I’ll addthem to the table. I know there’s some org-mode/emacs afficiandos out there whohave some amazing stuff.
Editor | Link Styles | Tag Styles | Notes | |||
---|---|---|---|---|---|---|
Freelink | Other | Hashtag | MMD | Other | ||
nvim + vimwiki | ✅ | ✅ | ❌ | ❌ | :tag: , same as org-mode | Vim being vim, you can adjust or grep for any string, so #tag or front matter will work, it’s just not built in. |
nvim + vimwiki + vim-zettel | ✅ | Vim’s capability | ❌ | ❌ | :tag: , same as org-mode | Pretty robust… especially for the backlinks. |
sublime text 3 + sublime_zk | ✅ | Vim’s capability | ✅ | ❌ | Seems super well put together… very cool. | |
Drafts.app | ❌ | drafts:// URLscheme | ❌ | ❌ | Built-in tags | More for capturing information than storing it, but you could do it if you wanted. Drafts.app lists documents by the first line in the document, so while it supports MMD front matter, it makes the title look strange. |
Bear.app | ✅ | ✅ | ✅ | ✅ | n/a | Honestly… as this app seems to check so many of the options, I’m surprised I haven’t given it a better go. |
nvAlt | ✅ | ✅ | ❌ | ❌ | Stores tags in database | The search and interface is very good. |
nvUltra | ✅ | urlScheme | ❌ | ✅ | n/a | Still in beta… seems very promising. Has a super powerful “related notes” feature that I think is nearly ideal for this. |
The Archive.app | ✅ | ❌ | ✅ | ❌ | The OG zettelkasten application. | |
Zettlr | ✅ | n/a | ✅ | ❌ | This seems like a cool tool. | |
1Writer | ✅ | iOS urls | ✅ | ❌ | ❌ | |
obsidian | ✅ | ❌ | ✅ | ❌ | Supports a graph mode like roam research. |
For this document, I’m not going to try to define what the Zettelkasten system or practice is, there are entire blogs and YouTube videos dedicated to this topic. ↩
I thought I was being very clever… I had originally written this long argument for structuring files this way, but it turns out that the answer has been there all along. ↩
I’m not really an expert, I only know as much as can be known by reading blog posts on the subject. I haven’t taken a course or read the book. ↩
It makes searching for in-archive links a lot simpler… imagine you want to write a regex for searching for all notes that link to the current note… it’s a lot easier if you can assume that all in-archive links follow freelink syntax. Some editors go a step further and the text within a freelink is actually more of a search than a file link. (I think The Archive does this.) ↩
I tested: vimwiki, Bear, nvAlt, nvUltra, Drafts with a custom action and 1Writer ↩
Editors that don’t support [[free links]] include: Drafts, Vim’s default markdown syntax, iA Writer, and Ulysses ↩
In my current files, I have been lightly using vimwiki style tags (I think they get them from mediawiki?) They look like
:this:
. I don’t like writing the regex for these tags, and I can’t find anything but vimwiki that supports them. ↩This issue here shows some of the issues that can arise when you allow this in markdown. ↩
NvUltra uses MMD style front matter for tags, and offers syncing them to OS X metadata so you can search in spotlight, which is very cool. 1Writer uses the #hashtag format for it’s built in tag search. I stole my solution from prolific ZK blogger Christian uses a combo of MMD and hashtag, which I may adopt since 1Writer is pretty nifty on the iPhone. ↩
- 2021-02-04 16:00:39 +0000
Update: Link the new zettelkasten recommendations
- 2020-06-26 18:16:03 +0000
Add obsidian to the list
- 2020-06-18 19:26:02 +0000
Move everything to CST
Don't know why I didn't do that before. It caused _no_ end of
problems. - 2020-06-14 20:51:50 +0000
Update articles with series and series partials
After the refactor, needed to move the series metadata to the actual
name. - 2020-06-14 14:56:03 +0000
Move zettelkasten files to their own series
- 2020-06-08 17:34:07 +0000
Hack together more series pages
- 2020-03-17 19:37:01 +0000
:tag: comes from org-mode
Thanks @benjwrdill!
- 2020-03-13 16:38:32 +0000
Post: Simple Markdown Zettelkasten
Generating documents is always not the most pleasant job but it can be made easier by using easier markup language like Markdown. For that purpose I made last year a simple Markdown to HTML Page Generator Maven Plugin and now it's also available in Maven Central.
'Markdown to HTML Page Generator' is a simple Maven Plugin which reads the input directory for Markdown files with .md suffix and outputs HTML files to target directory. There are couple of configuration options to set the input/output directories and if you want to add header and footer files to make it structurally valid HTML. The plugin uses pegdown Markdown processor.
Maven plugin artifacts can be found in Sonatypes' OSS Maven repository:
- Snapshots: https://oss.sonatype.org/content/repositories/snapshots/com/ruleoftech/markdown-page-generator-plugin/
- Releases: https://oss.sonatype.org/content/groups/public/com/ruleoftech/markdown-page-generator-plugin/
Read more about the plugin and how to use it from markdown-page-generator-plugin's GitHub page.