summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--2022/talks/rolodex.md199
1 files changed, 148 insertions, 51 deletions
diff --git a/2022/talks/rolodex.md b/2022/talks/rolodex.md
index ae707a6b..8ec7c6aa 100644
--- a/2022/talks/rolodex.md
+++ b/2022/talks/rolodex.md
@@ -7,67 +7,164 @@
<!-- You can manually edit this file to update the abstract, add links, etc. --->
# Build a Zettelkasten with the Hyperbole Rolodex
-Ramin Honary ("Rah-mean" (hard-H) "Ho-na-ree", he/him, <mailto:ramin.honary@gmail.com>, <https://tilde.town/~ramin_hal9001/>)
+Ramin Honary ("Rah-mean" (hard-H) "Ho-na-ree", he/him.
+
+- Email: <mailto:ramin.honary@gmail.com>
+- Homepage: <https://tilde.town/~ramin_hal9001/>
+- GitHub: <https://github.com/RaminHAL9001>
[[!inline pages="internal(2022/info/rolodex-before)" raw="yes"]]
-"Zettelkasten" is a methodology for marshalling your knowledge,
+"Zettelkasten" is a methodology for marshaling your knowledge,
ideas, creativity, into a database of hyperlinked notes, each note
representing a single quantity of knowledge. The method was first
devised by a well-published social scientist named Niklas Luhmann.
Though he constructed his database with actual slips of paper in a
box with a notebook for indexing, naturally, modern software removes
-the manual labor from the process. In the world of Emacs packages,
-Org Mode is the most well-known package that provides the tools
-necessary for building a Zettelkasten, but it is not the only Emacs
-package to provide such tools. But there is an alternative: an
-oft-overlooked Emacs package called Hyperbole, and in particular the
-"Rolodex" feature, called "HyRolo." It was originally designed for
-tracking your personal relations, but it can be used to build a
-Zettelkasten with almost no additional configuration or 3rd-party
-packages. HyRolo is a purely textual database, and does not require
-an external database software to index the notes. It also provides a
-very rich set of "actions" so that notes not only link to each
-other, but can also trigger Emacs to execute code as well.
-
-Outline: (about 1 minute per outline item)
-
-1. Quick overview of the Zettelkasten methodology
- - 1.1. What is a single quantity of knowledge
- - 1.2. Linking between pieces of knowledge
- - 1.3. Composing pieces of knoweldge into hierarchies
-2. Tools provided by the Hyperbole Rolodex (HyRolo)
-
- 2.1. The plain text database format
-
- 2.1.1. Possible brief digression to explain Hyperbole menu
- system
-
- 2.2. Demo how to add a new entry
-
- 2.3. Demo how to searching entries
-
- 2.4. Demo how to hyperlink entries
-
- 2.5. Overview of the many various types of hyperlink actions
-
- 2.6. How to compose a hierarchy of notes.
-3. Practical examples
- - 3.1. Managing daily tasks
- - 3.1.1. Integration with Org Agenda to manage TODO lists
- - 3.1.2. Keeping track of people, conversations, mail
- - 3.1.3. Keeping track of work, projects
- - 3.2. Doing research, writing blogs or papers
- - 3.2.1. Note hierarchies become your table of contents
- - 3.2.2. Following chains of ideas to fill in each section, trimming excess prose
- - 3.2.3. Keeping track of sources, references
- - 3.3. Writing fiction
- - 3.3.1. Heirarchy is less rigid, should follow the story telling model: intro -> conflict -> climax -> resolution
- - 3.3.2. Rolodex of fictional characters, chain ideas such that they construct a personal history for each character
- - 3.3.3. Chains of events are not as important as establishing tone and mood. Order of exposition need not be linear
-4. Conclusions
+the manual labor from the process.
+
+In the world of Emacs packages, Org Mode is the most well-known
+package that provides the tools necessary for building a Zettelkasten,
+along with extensions such as "Org Roam" which add functionality that
+manage links between Org Mode documents. But Org Mode is not the only
+Emacs package to provide such tools.
+
+In this talk, I demonstrate how to use an oft-overlooked package
+called Hyperbole as an alternative to Org Roam for managing hyperlinks
+and building a Zettelkasten. In particular I use the Hyperbole
+"Rolodex" feature, called "HyRolo." It was originally designed for
+tracking your personal relations, but it can be used to build a
+Zettelkasten with almost no additional configuration or 3rd-party
+packages. HyRolo is a purely textual database, and does not require
+an external database software to index the notes. It also provides a
+very rich set of "actions" so that notes not only link to each other,
+but can also trigger Emacs to execute code as well.
+
+## Presentation outline:
+
+### Quick overview of the Zettelkasten methodology
+
+ - **Note:** most of what I say about the Zettelkasten method comes
+ from Sacha Fast of <https://zettelkasten.de>
+
+ - **Zettelkasten is:** a database of interconnected ideas
+
+### Tools I use in day-to-day writing
+
+ - **Hyperbole:** for hyperlinking, search, project management
+
+ - **Embark:** arranging text, copy and paste
+
+ - **Org-Mode:** for markup
+
+ - **Dired:** for working with sets of files
+
+ - **Consult, Vertico, Orderless, Marginalia:** interactive search
+
+ - **Magit:** Git revision control of my plain-text database
+
+### Quick overview of Hyperbole
+
+ - **Core functionality:** a markup language for hyperlinks
+
+ - Applications such as **HyRolo** and **Koutline** built on top of
+ this core functionality.
+
+ - **HyRolo** is the feature I use as my Zettelkasten.
+
+### Configuration of Hyperbole using `use-package`
+
+ ```emacs-lisp
+ (use-package hyperbole
+ :config
+ (setq hbmap:dir-user "~/.emacs.d/hyperb/")
+ (setq hyrolo-file-list '("~/.emacs.d/hyperb/ideas.org"))
+ (setq hyrolo-date-format "%Y-%m-%d %H:%M:%S"))
+ ```
+
+### The Hyperbole Menu-Driven User Interface
+
+ - Menus are a kind of modal user interface
+
+ - Enter menu with Hyperbole leader key `{C-h h ...}`
+
+ - Select menu items with key presses
+
+ - Works a little like `which-key`
+
+### Getting started with **HyRolo**: Create a *zettel*
+
+ - Add entry: `{C-h h r a}` "*hyperbole rolodex add*"
+ - Prompts you for a title for the entry
+ - The Zettelkasten file (e.g. ~idea.org~) is opened
+ - Write the body of the *zettel*, save the file.
+
+### Searching the *HyRolo* database
+
+ - Multiple search options: by **string**, by **regex**, by **word**.
+
+ - I use **string search** most often: `{C-h h r s}`
+
+ - String search provides logical `AND`, `OR`, `XOR`, `NOT`
+
+ - Executing a search opens the `*HyRolo*` buffer.
+
+ - Read-only mode buffer with useful single-key navigation.
+
+### Searching the **HyRolo** database
+
+ - **`{o}` as in "overview":** hides all but the headings
+
+ - **`{a}` as in "all":** shows all information under each heading
+
+ - **`{t}` as in "top":** shows top-level entries
+
+ - **`{n}` and `{p}`:** next/previous result
+
+ - **`{h}` and `{s}`:** hide/show a search result subheading
+
+ - **`{C-u r}` as in "regex":** prompts for a new string search
+
+ - **`{e}` or `{M-RET}` :** jump to that entry for editing, although
+ using this command inserts a new timestamp, I just use `{C-/}`
+ to undo insertion of the timestamp.
+
+### How is **HyRolo** a Zettelkasten?
+
+ - **Key take-away:** The Hyperbole hyperlink markup language lets
+ you execute *arbitrary Emacs commands.*
+
+ - To link Zettelkasten entries, create an hyperlinks that execute a
+ **HyRolo** search.
+
+### How to create an explicit link
+
+ 1. Highlight text to be linked
+
+ 2. `{C-h h e c}` to create a link
+
+ 3. Prompted for link text with highlighted region (press enter)
+
+ 4. Prompted for action: `hyrolo-fgrep`
+
+ 5. Prompted for search string: `hyperbole`
+
+### How "explicit buttons" encode actions
+
+ - A **separate file** from the HyRolo flat-file database.
+
+ - By default, called `.hypb`, exists in the same directory as the
+ HyRolo flat-file database.
+
+### Conclusion
+
+ 1. A Zettelkasten is database of ideas linked together
+
+ 2. The Hyperbole **HyRolo** can run search queries
+ 3. The Hyperbole markdown creates links that execute queries
+ 4. This results in a minimal but useful Zettelkasten.
[[!inline pages="internal(2022/info/rolodex-after)" raw="yes"]]