# Basic Ideas of Notesmachine ## Zettlekasten Zettlekasten is a note organization method to facilitate the production of intellectual work. You have a collection of boxes into which notes from different *areas* of your life belong. When you have assembled enough notes to compile a whole work out of them, you take them out of the box and arrange them on a table, re-working them if necessary, until you have the rough draft of a whole work. The notes are organized into a *hierarchy* of knowledge about that area, and when you have an idea, you have one of three steps. - If your collection is small to non-existent, you can just add the note, annotating it in a way that tells you where it goes. - If your collection is large enough you can't be sure where it goes, look to see if a similar note is already present. If it is, you have two choices: - If the idea very similar, just write your idea into the existing note. - If the idea is "kinda" similar, write a new note that compiles the idea into a single idea - If the idea is new, write a new note, and mark it in ways that place it near its relatives. What those boxes are is up to you. For example, I love to cook, write software, and write stories. It is *unlikely* that there's much overlap between those three categories, so I have separate boxes for each of them. I said it is unlikely that there's overlap, but it's not impossible. For example, I like to blog about all three of those things, and so having things tagged somehow as "blog idea" would be useful, rather than having a separate box for "blogging." More to the point, Notesmachine itself is a powerful tool for *writing stories*. Notesmachine is *primarily* a Zettlekasten support tool, but as we'll see, combined with a computer's ability to reach across itself and find other notes, it can produce powerful knowledge-building abilities. ## The Noguchi Method The Noguchi Method is more project-oriented. It still uses a boxes-and-notes method, but it's more focused on the projects. Each project has its own clearly labeled box, and the boxes are arranged in a straight line on a shelf. (Noguchi himself uses those narrow, square-bottomed plastic folders you can find at office supply stores.) Whenever he *adds* something to a folder, the folder is moved to the *leftmost* position of the shelf. Folders he *refers to* but does not *add to* stay where they are. Over time, the *rightmost* folders become irrelevant to ongoing projects, and on a fairly regular basis he archives those folders, making room for new projects. By marking every box in Notesmachine by when it was *created*, *updated*, *requested*, and finally *deleted*, it becomes possible to create a Noguchi-like view of the boxes you care about. ## Bisecting K-Means This isn't a method, it's an algorithm by which documents, usually quite large documents, are "clustered" into groups based on the prevalence of certain terms within the documents, as is used as automated way of identifying groups of documents. Notesmachine *may* provide a few different variants on the K-Means algorithms in the future, but these algorithms are known to be expensive to run and difficult to make progressive, but it might prove incredibly powerful in the future to show that unrelated notes have some overlap based on their content. ## Keyword discovery Roam provides a powerful tool in the form of "keyword discovery." Roam scans new notes for terms that already appear regularly in its list of keywords, and asks the user if it wants those terms to be made into links to the boxes that represent those keywords. Notesmachine provides this, but only as a separate *feature*. ## Note cloning Notes may be related to other notes, but sometimes its not enough to say that one note is related to another. Sometimes you want the note *in two boxes*, and in that case it's enough to copy the note. Sometimes you want the note *in both boxes simultaneously,* such that editing the note in one place makes those edits to all the notes in all other boxes. Notesmachine provides the ability to *duplicate* notes, have notes *refer to* other notes, or *fully embed* notes in multiple locations in your box collection. ## Box merging Sometimes you may find yourself with multiple boxes with the same kinds of notes in them. I have a box "Recipes" and another "Entrees". If I want to merge those two boxes, all I have to do is tell Notesmachine that I want all "entree" tags changed to "recipe". Notesmachine's links engine uses *three different* algorithms when labeling a box: The first is that it has a "title" for the box; the second is that it has a "slug" for the box, which removes stopwords and produces a simplified url-ready all-lower-case form of the title; and the third is that it *stems* the title, which uses the Porter Stemming algorithm to try and find *related* boxes such that "entrees" and "entree" will be treated the same. The preferred Porter variant is the one provided by [NLTK](https://www.nltk.org/api/nltk.stem.html?highlight=porter%20stemmer). The dataset used for stopwords is the [spark](https://github.com/loony-bean/stopwords-rs/blob/master/src/spark/data/english.txt) collection. ## 101% Markdown There are a number of different means by which notes can be entered, but the two fundamental ones are simply as a stream of text-- which can be useful when using voice input-- and Markdown, which provides *some* structure and is generally more useful. Notesmachine recognizes two different means of tagging: - [[classic]], where the tag is surrounded by double-brackets. In this mode, - #Hashtag, where the tag is prefixed by a cuddled hash symbol. (A hash symbol in the first column followed by a space is a *title*; anywhere else, it's just a hash symbol.) This also has two other features: - (feature) `#snake_case_hashes` will automatically be interpreted as separate words. - (feature) `#CamelCaseHashes` will also be automatically be interpreted as separate words. - (feature) `#lisp-case-hashes` will likewise be treated as separate words. ## Three kinds of relationships: Notes machine supports three different kinds of relationships. - **Links**: Every note in a box can be linked to other boxes. That's sorta the idea of NotesMachine, that you can have lots of notes and they all relate to one another somehow, creating a web of notes that on their own can collect ideas and spark new ones. Along with the most common sort, one note links to another box, notes can link to specific notes in another box, and then there's referring and embedding. - **Nests**: Notes can be nested *inside other notes*. This is a common organizational scheme, and it results in the sort of structure of folders-within-folders that's common in most operating systems. Nests are useful because they automagically become *outlines* for documents and projects. - **Boards**: Every once in a while it's nice to take all the notes out of a box and arrange them physically, visually in front of you. It would be nice if we could support that as a display form.