Back to the talks Previous by time: This Year in Org Next by time: rde Emacs introduction Track: General

Build a Zettelkasten with the Hyperbole Rolodex

Ramin Honary ("Rah-mean" (hard-H) "Ho-na-ree", he/him.

In this talk, Ramin Honary shares how he uses HyRolo to create and navigate links between his notes. Afterwards, he will handle questions via IRC.

The following image shows where the talk is in the schedule for Sun 2022-12-04. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.

Format: 22-min talk followed by IRC Q&A (#emacsconf-gen)
Discuss on IRC: #emacsconf-gen
Status: Talk captioned

Times in different timezones:
Sunday, Dec 4 2022, ~9:55 AM - 10:20 AM EST (US/Eastern)
which is the same as:
Sunday, Dec 4 2022, ~8:55 AM - 9:20 AM CST (US/Central)
Sunday, Dec 4 2022, ~7:55 AM - 8:20 AM MST (US/Mountain)
Sunday, Dec 4 2022, ~6:55 AM - 7:20 AM PST (US/Pacific)
Sunday, Dec 4 2022, ~2:55 PM - 3:20 PM UTC
Sunday, Dec 4 2022, ~3:55 PM - 4:20 PM CET (Europe/Paris)
Sunday, Dec 4 2022, ~4:55 PM - 5:20 PM EET (Europe/Athens)
Sunday, Dec 4 2022, ~8:25 PM - 8:50 PM IST (Asia/Kolkata)
Sunday, Dec 4 2022, ~10:55 PM - 11:20 PM +08 (Asia/Singapore)
Sunday, Dec 4 2022, ~11:55 PM - 12:20 AM JST (Asia/Tokyo)
Find out how to watch and participate


"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, 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:


  • Ramin Honary

  • Software Engineer, App Developer (mostly Python and Haskell)

  • Emacs user for about 4 years (since 2018)

Key Takeaway

  • The Hyperbole hyperlink markup language lets you create links that execute arbitrary Emacs commands.

  • To link entries, create a hyperlink that executes a HyRolo search.

Quick overview of the Zettelkasten methodology

  • Note: most of what I say about the Zettelkasten method comes from Sacha Fast of

  • 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

(use-package hyperbole
  (setq hbmap:dir-user "~/.emacs.d/hyperb/")
  (setq hyrolo-file-list '("~/.emacs.d/hyperb/"))
  (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. 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.


  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.

Questions or comments? Please e-mail

Back to the talks Previous by time: This Year in Org Next by time: rde Emacs introduction Track: General

CategoryHyperbole CategoryZettelkasten