diff options
Diffstat (limited to '2022')
-rw-r--r-- | 2022/talks/rolodex.md | 199 |
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"]] |