|
|
|
@ -0,0 +1,153 @@
|
|
|
|
|
# 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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|