01. Start here
The note-taking system I am currently using can be summed up in a very simple sentence: local markdown files + Dropbox network disk synchronization, and the Vscode project is used to manage the entire note directory.
About a few years ago, I was jumping between Evernote, Youdao Cloud Notes, and OneNote. There was no Notion, no RoamResearch, and even PKM (Personal Knowledge Management) was rarely mentioned.
In the end, I chose the “seemingly inconvenient” method of local Markdown. After all, native Markdown has various shortcomings (picture management, no Metadata, no support for complex typesetting), and the local file method cannot get rid of the tree-like folder note structure… There was even a lack of a very handy editor at the time. But the tinkering has been used all these years, and the shortcomings mentioned above have also been improved or avoided. During this period, I have also tried Notion, RoamResearch, and Logseq, but this kind of “local Markdown-based” notes have always been my notes. System basic disk.
The benefits of this scheme are:
- The data belongs to you completely. The Dropbox network disk + the regular script written by yourself is backed up to Git. The dual measures can ensure that the notes will not be lost, and you can also trace the modification history and view the growth process of the note system through the history of Git;
- The best synchronization experience (Dropbox) + the best modern editor (Vscode): Dropbox’s multi-device synchronization is near real-time, and incremental synchronization is very suitable for lightweight text such as Markdown, if the Internet is inconvenient, you can use other synchronization disks such as nuts Alternatively, if you use Apple Family Bucket and can tolerate iCloud Drive syncing1 , it’s also ok. As for the best editor…. It depends on personal habits. Modern editors such as Sublime, Atom, and NeoVim, Spacemacs, the religious heirs of editor originalism… They are all very good, these “Code Editor” functions are similar, see yourself habits and beliefs;
- In addition to traditional editors, the note file library can be opened with a variety of software: Typora if you want a writing experience (I am using Typora to write this article now), and Obsidian (with the help of Obsidian’s dual-chain) if you need a bird’s eye view of the double chain The chain implements a mesh structure), and there is also a folder-based tree structure.
Today, with the popularity of network notes, the tree structure is still the best cognitive structure for human beings2 . - Markdown is a “source file” that can be converted to output in various formats. I will use Hexo to generate a blog (requires some scripts to do Markdown conversion, such as modifying the image path to adapt to Hexo’s directory 3 , so as to realize one-click publishing of notes to blogs), this “notes are published as blogs” is also a kind of For the practice of Digital Garden 4 , the public part of my notes is placed on gitee . In addition, use pandoc to export Markdown to PDF, PPT, DOC and other formats for various occasions, “write in one place, publish in multiple places”.
Of course, there are some inconveniences in the “local Markdown file” solution:
- Block citation: Both Vscode and Obsidian already support the use of #title as the smallest unit of block citation (such as
[[笔记名字#标题名]]
#
, but cannot support more fine-grained blocks, compared to Logseq and RoamResearch, etc. “Line-level blockquotes” are supported; - There is a lack of easy-to-use mobile terminals (iOS/Android), but I rarely edit notes directly on my mobile phone. If I have a sudden idea, I will record it in Drafts, so the requirements for the mobile terminal are easy to check/read:
- If you sync with Dropbox, 1Writer (Android), MWeb (iOS), Editorial (iOS) are all available;
- If you sync with Git, Working Copy (iOS) is my first choice, Noteshub as a fallback (iOS)
- Image management: In the early years, the Markdown editor was very troublesome, but with the help of plug-ins and newer editors, both Vscode or Obsidian support the use of
Ctrl+v
to map in a fool’s way. Compared with rich text editors, the use of images is no longer available. So troublesome. I store the images in the image folder under the project and sync them together with dropbox. The advantage is that whether the notes are moved to Git or Hexo blog, these can support local images well, and do not worry about the problem of image bed failure. - Defects in the expressiveness of Markdown:
- No Metadata: For example, Evernote’s notes also record metadata such as creation location, modification time, etc. Although the modification time can also be read from the file properties, if you change the computer or move the folder, the timestamp will fail. . Markdown can only store this kind of information through YAML Front Matter, but this thing is not native grammar, and the support of each app is not the same, which will cause confusion in the display.
- It does not support complex layout, such as double-column, graphic and text mixed layout, etc. To be fair, complex typesetting is not what Markdown should do. Markdown implements a markup language that is easy to remember and easy to write. In other words, it must be inconvenient to write a markup language that supports complex typesetting (such as LaTex, HTML, etc. ). Of course, image typesetting can be supported by adding some HTML to Markdown. For example, Obsidian’s theme Blue-Topaz provides similar functions, but I don’t use them. These are not native Markdown syntax. Maybe this app supports it but another app does not. identified
A few words about the data security of the cloud note service. Although the note products of major manufacturers have reliable technology to ensure service stability, they also have potential inconveniences:
- Content review: The sword of Damocles on the head of a major domestic manufacturer, you can refer to Kingsoft’s deletion of user files, and the early rumors “Baidu Cloud harmonized my normal video!” Why is it a rumor, because there is no such thing as a rumor? People can come up with evidence to prove the innocence of the video ?
- Product life cycle: I have also worked at BAT, and I understand the entire process and decision-making from the birth of a product to the offline, and the products of major manufacturers will also have the day when they are offline. Of course, users will be given sufficient migration time before going offline, but migration is also a cost! . In addition, foreign manufacturers are not much better, such as Google closed a number of services ( Reader, Picasa, Wave, etc… ), and closed domestic services due to changes in terms of service (Yahoo is you!)
02. Directory structure of notes
My note system has 6 directories (as shown above), which store different notes:
- ① Inbox/: Temporary notes. In many cases, a note will not be written immediately. It may take several days of brewing and data collection. The notes at this stage are stored here for further assembly and molding. Every day I only need to pay attention to here to remember what I have learned recently;
- ② Project/: Project notes, ” Everything can be a project! ” In addition to our work, other personal affairs can also be managed by project management: there are final goals, final completion time (DDL), staged time and Key Results (KP). The characteristics of project notes are: there is not too much intellectual information, most of them are time points and specific operations;
- ③ Personal/: Notes with personal information, such as some bills, medical reports, membership card numbers, and even suitcase passwords, etc… The ones stored here are more like “memos” rather than “knowledge notes”. The advantage of storing this part separately is that when I want to share my own notes, I can share several other note directories with confidence, which is an idea of information isolation;
- ④ Code Primer/: Permanent note 1 (notes of professional knowledge are placed here). The subject is a programmer, covering programming languages, architecture design, middleware, big data, etc. The number of notes in this directory is the largest, and the sub-categories are also the largest. How to classify this part will be described later;
- ⑤ Scriptorium/: Permanent Note 2 (Focus outside of professional knowledge), for example, as a code farmer who likes literature, history and philosophy, this folder contains productivity tools, finance, photography, pop culture, psychology and philosophy, etc..
- ⑥ Archive/: Archive, for those who are no longer interested in the above 1/2/3/4, will not be used for a long time or are no longer maintained, they will be thrown here;
▷ Regarding the classification of 2.Project and 6.Archive : it refers to the PARA taxonomy 5 , but it is not completely copied, only two principles are adopted, 1. Projects with time nodes should be independent, 2. No longer interested or not. The re-maintained data is put into the archive. In addition, the proposer of PARA also mentioned that his private information will also be put into the Area, so that you can share the Resource with confidence at any time, “for example, the medical report and the medical treatment record are placed in the Area named “health”, and the Resource stores the Interesting articles on exercise, health, or recommended training regimens”.
▷ For the “Flash Notes”, I don’t put them in this set of notes. I will use Drafts to record them on my mobile phone, and then I have to clear the flash notes once a day, and the ones with reserved value will be integrated into the “①Inbox” file. Continue to assemble and improve under the folder, and delete the flash notes without reservation value directly (like some worthless ravings and broken thoughts with only emotional expression, which are of no value to continue writing); the used flash notes can also be deleted. Delete but archive, so that time series fragments can still be preserved in the Drafts archive.
▷ Both ④ and ⑤ mentioned above are an independent Obsidian library. Why are they not placed in a folder but separated as permanent notes for knowledge accumulation? The first reason is that if merged, there will be too many subdirectories, which is inconvenient to manage; and the notes in ④ and ⑤ hardly refer to each other, so they are divided into two libraries (the scope of Obsidian management reference links is the library, and the files outside the library cannot be referenced , notes belonging to different libraries are “reference isolated”)
▷ About the concepts of Fleeting notes and Permanent notes: refer to Luhmann’s note classification. But there is no such category as “Literature notes (Literature notes 6 )” in my notes. For the records and summaries of literature, I am used to keeping permanent notes. This depends on personal classification habits, and sometimes the classification of types is too detailed but hinders the enthusiasm of writing.
▷ Permanent notes are not “permanent”: permanent notes are also being updated and improved all the time, splitting into small files, merging into large files, adding reference links, etc. That’s exactly what Andy Matuschak describes in Evergreen Notes: “Evergreen Notes are written and organized to evolve, contribute, and accumulate over time,” and Luhmann mentions that his Card Box Notes are ingrowth ( internal growth) 7 .
▷ About the strange naming of permanent notes:
“Code Primer” comes from my programming enlightenment book “C++ Primer”,
“Scriptorium” means room of scriptures, where books were made in the Middle Ages8
03. Structure of permanent notes
Two permanent note directories are mentioned above, as shown in the figure below. The left is the professional knowledge note, and the right is the hobby note:
There is a set of guidelines for note structure and format :
- The format of each note follows the “atomic note”: that is, a note explains one thing.
- But it is not mandatory for every note to be “atomic”. When we are just involved in a field, we can start with only one note, and at this time, various information in the note may be mixed together and not “atomic”. With the deepening of this field, the content of the notes will continue to increase, and at the same time, I also have a preliminary understanding of this field and know how to classify it, so this article may be split.
- As mentioned in Evergreen Note 9 , notes are growing. A note can not only add content, of course, it can also be split, and referenced with other notes. In short, the note system becomes a more substantial and reasonable form, so that Notes are growing .
- A complete atomic note should include: unique identifier, text (your own understanding, avoid copying and pasting), and a list of references, as shown below:
- The category folder has only one level, and no second-level category folder is created: If there are too many notes in a folder, and I have to create a second-level category, my choice is to still create a first-level folder, such as
?11.Programming-Language
Under the?11.Programming-Language
folder are programming language notes. Because I have been using Java all the time, I have accumulated a lot of Java-related notes. At this time, I do not create a subfolder at the lower level of?11.Programming-Language
, but The?12.Java
folder was created at the same level. While it may not sound like the common sense of “hierarchy of classification”, the benefits are obvious:- The tree structure can be avoided too deep, and the notes are hidden in deep folders and are easily forgotten. For the tree-like hierarchical structure, thinking “Which level should I put my notes under?” is also a kind of thinking consumption, and people with OCD will be caught in the non-stop classification work;
- Folders are prefixed with numbers, so that the display order can meet their own needs, and it is also convenient for the expansion of the directory. The subclasses of the parent category can be expanded from 1a to 1a, 1b… They are still in order
- This set of folders with serial numbers is based on the Dewey Decimal Classification, and can also be applied to other software such as Evernote, Cubox, Zotero, etc., including Zhihu Favorites, Browser Favorites, etc., so that all your data are used. A set of naming system, very convenient;
- This kind of tiled single-layer folder is more like Luhmann’s card box. Haven’t seen Luhmann use a large box to set a small box, and a small box to a small box?
- But what if a tree structure is really needed? See the following file naming rules
- The naming of the note file: the file name is prefixed with the category, such as a file name of
Java.03b.GC案例分析.md
. Some people may ask, the name of the parent folder is12.Java
, and the file name does not start with “Java”, right? The “Java” in the file name is redundant information. In fact, this is deliberately done. There is a specific operation case: there is a “file name fuzzy search” function in Vscode, the shortcut key “Cmd + P”, I only need to search for “Java GC”, so that the file name contains “Java” and All notes of “GC” will be searched out. Of course, Obsidian also has a similar function, the shortcut key Cmd + O.
Vscode filename fuzzy search
In addition to the ideographic prefix, the composition of the file name is followed by a serial number, which is also used to make the related notes sorted together, and to facilitate the “growth” of the notes. For example, a note whose content is too large needs to be split into For 2 notes, the serial number of the new note can be increased from 1 to 1a. If the 1a note becomes larger and needs to be split, add 1b note. These many sub-notes removed from a note are still in order;
Figure: On the left is Luhmann’s note numbering system description (how notes keep orderly growth through prefixes), on the right is my note numbering:
The diagram above illustrates how different hierarchies are represented within the same level of notes using Luhmann’s numbering system:
• The first level concept: 0 → 1 → 2 → 3, these notes are equal concepts
• When “Note 1” has sub-categories: 1 → 1a → 1b, 1a and 1b are both sub-notes of “Note 1”, if 1a also has sub-notes, continue with 1a1 and 1a2.
By organizing notes in this way, all the notes under the folder appear to be “tiled”, but the hierarchical relationship can still be expressed through the file name, and there will be no “deeply hidden in a sub-sub-sub-folder”. “Notes in” problem.
“Don’t classify knowledge too early”, which is also in line with the habit of learning. When you first come into contact with a certain field, you may only have one note, and we don’t know how to classify this field, so don’t think about “put your notes at the beginning.” At the appropriate classification level”, when the notes gradually become larger as the study progresses, new sub-categories will naturally be split out, allowing the notes to “naturally grow”.
- Chapters in Markdown are divided by
#
Heading. There are also skills for naming Heading. Vscode supports a ” Symbol search “. What is Symbol? For code, Symbol can be understood as a function name, which can be convenient to quickly search for a function in a large code project. In Vscode, Markdown’s Heading (title) is regarded as a Symbol, so press “Cmd + T” in Vscode, you can also enter the fuzzy search of Markdown title, and quickly locate Heading. Compared to the “File Name Fuzzy Search” above, the “Title Fuzzy Search” provides more fine-grained retrieval than the file level. As for how to make good use of this function, this requires us to put some thought into the naming of Heading when writing notes, and to “have something to say”.
Vscode Heading Fuzzy Search
In addition to Vscode , modern editors such as Atom and Sublime have this function (standard), while Obsidian needs to be implemented through the plugin obsidian-switcher-plus .
- Double-chain citation: I use the
[[ ]]
provided by Obsidian for the citation of notes. Obsidian uses the file name as the link name by default, and also provides the Heading in the file as a reference block, such as[[文件名.md#标题名]]
, if I change the file name, or split and merge notes, I don’t use Vscode, but operate in Obsidian, and let Obsidian help me update the reference automatically. - Note creation should be restrained. Only when “Note A” really needs to refer to “Note B” should the connection between the two notes be established, and only when necessary. This is also in line with the concept of “natural growth” of notes.
Originally, the mesh structure is also a kind of MOC (map of content), which helps you to clarify your thoughts. The random establishment of double chains is destroying your own note-taking system, just like an unruly label system – it can only be discarded in the end. This is not called natural growth, this is called random pairing; - Labels: I don’t use labels much, nor do I enforce label rules. But there is a principle: if the folder is already a “clear category”, there is no need to use this category to create a label, which is redundant information. For example, as mentioned above, there is already a
Java
folder, so there is no need to create a “Java” label, but “Java” cannot represent subcategories. For example, there are more detailed subcategories under Java: JVM, ClassLoader, etc. , these can create tags - Hub Notes: “In addition to the index table, Luhmann has another very important type of note: the hub notes 11 . The hub notes list many other notes that belong to the same topic”. To put it bluntly, a hub note is an index that points to a group of notes on a certain topic. In Obsidian’s relationship graph, the hub note is a centralized node, which itself does not have much information and only serves as an index. But the folder classification has already played the same role by default, and each folder is naturally a topic, so there is no need to create a hub note in this case, unless the notes span across folders.
- For this type of hub notes, I put them in the
?_index
folder. In Obsidian’s relationship graph, there will be many connections from the hub notes outward, which makes the whole graph cluttered. At this time, you can exclude this in the graph settings?_index
folder (syntax-path:_index
) to make the relational graph clearer.
- For this type of hub notes, I put them in the
In addition to the hub notes indexed by ” a certain topic “, there can also be hub notes indexed by ” timeline “, you can easily read “what did I write this month”, of course, this kind of notes is not necessary, see Your own needs are also placed in the ?_index
folder;
At this point, the rules of my note-taking system are finished, why should I set up so many rules for my note-taking format? Are you not tired…
Regardless of the tree structure, network structure, or label system, if not managed well, it will eventually become a garbage dump.
Remember the tags added to the first note-taking app back then? I won’t even look at it now.
03a. Why use this note structure
To sum up, the structure of my permanent note is: ” Dwarf tree-like structure of a single-level directory, while using double strands to form a sparse mesh “.
As for why such a structure is used, it is still necessary to compare the traditional tree structure with the recently fashionable mesh structure.
03a1. Network structure vs tree structure
Notes like RoamResearch and Logseq seem to have completely abandoned the table of contents, completely adopting a completely tiled method, showing the relationship of each note through a mesh structure,
In the note-taking system, the characteristics of the mesh structure:
- It is easy to find potential connections between different knowledge points, which can break the inherent tree-like conceptual structure and find connections across fields;
- Create and find inspiration and discover new research directions;
- Disadvantage 1. In the tree hierarchy, we clearly know that two nodes represent the relationship between superiors and subordinates, but in the network structure, this parent-child relationship cannot be represented, and we only know that the two are “related”, which is a pure network structure A semantic loss in expression.
Notion, OneNote, Evernote, and Trilium still use the traditional attribute structure. The difference is that the “folder” of EverNote is a “true folder”, and no information can be stored. In the infinite hierarchical structure of Notion, each node is a information can be stored. In addition to notes, there is also a mind map , which is also a tree topology. To summarize the characteristics of the tree structure:
- In the learning process, the tree-like hierarchy is helpful for clarifying concepts. Through the hierarchical relationship, I know that concept A is a superordinate or holistic concept, and concept B is a subordinate or more subtle concept;
- The tree-like classification is convenient for retrieval, and the tree-like growth direction is one-way, always from the “upper-level parent concept” => “child concept”, this one-way also facilitates the backtracking of concepts (compared to the network There are too many possibilities in the direction of the shape)
- Disadvantage of tree structure 1. All new notes have to think about one question: which conceptual layer should I put it in? Especially for the field that is just getting started, thinking about how to classify it is putting the cart before the horse. When you gradually master and become familiar with this field, you will naturally know “where it belongs”.
- Disadvantage 2 of the tree structure: A strict tree directory cannot represent the situation that “a note belongs to multiple subject folders at the same time”, as shown in the figure below, which can be solved by reference: “Note 1a” is still under “Category 1”, but Create a citation from “Category 2” to “Note 1a”
Bad example 1 : Overly complicated tree structure, notes are easily forgotten in deep directories (Imagine in this case, when we review the notes, we need to open the directory layer by layer, and do not know the next one. layer), and “classification and reclassification” is also a mental burden:
Bad example 2 : Such a network structure is not a valid MOC (Map of Content), this is a bacterial culture dish:
03b. The conclusion is: I want both structures
The tree-like structure facilitates retrieval and clarification of conceptual hierarchies, much like the process by which we understand knowledge;
The mesh structure can break the inherent hierarchical structure and discover the connections between different fields and levels of knowledge. At the same time, the establishment of mesh topology is also like the process of learning a new knowledge.
Both of these structures are helpful for note-taking systems, so both are required.
At the same time, through the above bad cases, we found that the disadvantages of tree and mesh appear in too much force : such as too deep tree folders, such as maze-like mesh links. So, back to the beginning of this chapter 03a: My permanent note The structure of this part is ” a dwarf tree-like structure of a single-level directory, while using double strands to form a sparse mesh “
04. Other usage skills
- In addition to writing, the more usage scenario is reading. If it is on the computer, I will use Chrome to open the note directory directly. I also need a Chrome extension: Markdown Preview Plus , which can preview Markdown and support multiple themes. It also supports TOC outline, and the structure of notes is clear at a glance:
Chrome Preview Markdown
- In the notes, I will also use some “annotations”, which are special grammars, to help with retrieval. For example, if I refer to other web pages, I will add `@ref` to mark it, such as @ref
@ref: [巧用分类法解决使用卡片笔记时遇到的困境](https://sspai.com/post/71274)
, what is the benefit of this, for example, I want to count how many webpages in my entire notebook are citing articles from sspai, I can use the Shell command line , executegrep -irn "@ref" **/*.md | grep 'sspai' | wc -l
in the note root directory:
- The same double-stranded
[[ ]]
can also be searched like this:egrep -irn "\\[\\[.+\\]\\]" **/*.md
- In addition, I will use other annotations, such as `@todo` = to-do, `@toc` = content outline, `@tldr` = note summary… etc. These annotations are not standard Markdown syntax, so they are just written In order to make your notes have a unified format and easy retrieval, because Vscode’s search is based on a single line.
05. Finally
Regarding #PKM (Personal Knowledge Management), this topic is very large and difficult to explain in a few articles. Personal knowledge management system may be updated and iterated throughout life. In addition to notes, there are too many topics such as workflow, document management, etc., here is only a little bit related to “notes”, and I will give you some ideas.
This article is reproduced from: https://sspai.com/post/75940
This site is for inclusion only, and the copyright belongs to the original author.