notesmachine/docs/00_Basic_Ideas.md

154 lines
7.0 KiB
Markdown
Raw Normal View History

# 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.