summaryrefslogtreecommitdiffstats
path: root/2022/info/rolodex-after.md
blob: bcd512c2d590403754aa2c7bbd588808ead0f566 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
<!-- Automatically generated by emacsconf-publish-after-page -->


<a name="rolodex-mainVideo-transcript"></a>
# Transcript

[[!template new="1" text="""Hello, attendees of EmacsConf 2022!""" start="00:00:00.000" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""The title of my talk is:""" start="00:00:06.760" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""&quot;Build a Zettelkasten with the Hyperbole Rolodex.&quot;""" start="00:00:08.840" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""My name is Ramin Honary.""" start="00:00:16.160" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""I work as a software engineer""" start="00:00:17.480" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""writing apps for a small machine learning consultancy.""" start="00:00:19.280" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""I have been using Emacs since roughly 2018""" start="00:00:22.840" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""after having switched from a workflow""" start="00:00:24.840" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""using Vim together with Screen/Tmux for over a decade.""" start="00:00:26.480" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""Today I'd like to talk a bit about""" start="00:00:29.440" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""the Hyperbole package for Emacs.""" start="00:00:31.440" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""Others are presenting talks later today""" start="00:00:34.040" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""about Hyperbole as well,""" start="00:00:36.160" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""including some of the the authors and maintainers,""" start="00:00:37.480" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""so I won't go into too much detail""" start="00:00:39.840" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""about how Hyperbole works.""" start="00:00:41.880" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""Instead, I want to present""" start="00:00:43.560" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""a more concrete use case for Hyperbole,""" start="00:00:45.040" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""which is how to use it to facilitate""" start="00:00:46.840" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""the Zettelkasten method.""" start="00:00:49.280" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""Most Emacs users will probably be""" start="00:00:51.920" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""more familiar with Org Roam.""" start="00:00:53.760" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""Org Roam may even be the first thing that comes to mind""" start="00:00:56.040" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""when you hear the word &quot;Zettelkasten.&quot;""" start="00:00:58.680" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""But personally, I use Hyperbole""" start="00:01:00.400" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""because I found it easier to get started with""" start="00:01:02.480" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""using it as an ideas database.""" start="00:01:05.040" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""All you need to do is install the Hyperbole package""" start="00:01:07.480" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""(which is available on GNU-ELPA)""" start="00:01:09.600" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""and then set a few customization options.""" start="00:01:11.400" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""There is nothing else you really need to do""" start="00:01:13.760" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""to get started.""" start="00:01:15.400" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""And also, Hyperbole works nicely with Org Mode.""" start="00:01:16.080" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""So Hyperbole's built-in functionality""" start="00:01:19.760" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""can be used as a nice, light-weight alternative""" start="00:01:21.800" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""to other Emacs Zettelkasten packages.""" start="00:01:24.920" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""This talk is for people who are curious about""" start="00:01:28.200" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""getting started with the Zettelkasten method,""" start="00:01:30.600" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""but are not ready to commit""" start="00:01:34.160" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""to a more purpose-built solution like Org Roam.""" start="00:01:36.080" video="mainVideo-rolodex" id="subtitle"]]
[[!template new="1" text="""So the thing I'd like people""" start="00:01:41.040" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""to take away from this presentation""" start="00:01:42.720" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""is that the Hyperbole Emacs package""" start="00:01:44.600" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""provides you with a flat-file database called &quot;HyRolo&quot;""" start="00:01:46.760" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""which you can use to store ideas.""" start="00:01:50.640" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""Then you can use what Hyperbole calls &quot;buttons&quot;""" start="00:01:53.240" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""(which are hyperlinks)""" start="00:01:56.000" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""to execute arbitrary Emacs commands""" start="00:01:57.240" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""and by inserting links into your database""" start="00:02:00.520" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""that execute queries against the database itself.""" start="00:02:03.160" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""These query-action links serve as""" start="00:02:06.160" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""a means to link ideas together,""" start="00:02:08.960" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""thus creating a functioning &quot;Zettelkasten.&quot;""" start="00:02:10.320" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""If this doesn't make sense to you,""" start="00:02:13.440" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""I'll explain what all of this means presently.""" start="00:02:15.480" video="mainVideo-rolodex" id="subtitle"]]
[[!template new="1" text="""So just a quick overview of what &quot;Zettelkasten&quot; is.""" start="00:02:19.840" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""Note that most of what I say""" start="00:02:24.360" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""about the Zettelkasten method""" start="00:02:26.200" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""comes from a guy called Sascha Fast,""" start="00:02:27.360" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""and his website: zettelkasten.de .""" start="00:02:29.760" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""So a Zettelkasten is, in brief,""" start="00:02:33.120" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""a database containing many nodes of interconnected ideas,""" start="00:02:35.000" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""each idea being a single quantity of knowledge""" start="00:02:38.200" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""(about a paragraph)""" start="00:02:40.760" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""and linked to other related ideas.""" start="00:02:42.040" video="mainVideo-rolodex" id="subtitle"]]
[[!template new="1" text="""Also, let me quickly mention""" start="00:02:46.320" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""that there are actually many tools I use""" start="00:02:47.960" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""that assist me with the zettelkasten method:""" start="00:02:49.680" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""Hyperbole for hyperlinks;""" start="00:02:51.880" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""Embark for general text editing;""" start="00:02:53.600" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""Org Mode for markup;""" start="00:02:56.080" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""Dired for managing large sets of files;""" start="00:02:57.280" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""Consult, Vertico, Orderless, Marginalia;""" start="00:02:59.440" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""for interactive search through directories and documents;""" start="00:03:01.960" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""and Magit for revision control,""" start="00:03:04.520" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""and syncing my database of ideas""" start="00:03:06.360" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""across a few of my computers.""" start="00:03:08.160" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""Each of these tools provides some unique functionality,""" start="00:03:10.200" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""but today I will be focusing mostly on Hyperbole""" start="00:03:12.960" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""and how it is especially useful""" start="00:03:15.440" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""for the task of linking information together""" start="00:03:17.040" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""which is the most important aspect""" start="00:03:19.840" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""of the Zettelkasten methodology.""" start="00:03:21.400" video="mainVideo-rolodex" id="subtitle"]]
[[!template new="1" text="""And now I'll briefly go over what Hyperbole is.""" start="00:03:25.360" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""At it's core, Hyperbole is a simple markup language""" start="00:03:28.400" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""specifically designed to markup hyperlinks.""" start="00:03:31.160" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""Now, a hyperlink usually is only able to jump to""" start="00:03:34.520" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""ordinary URLs and file paths.""" start="00:03:38.440" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""Hyperbole extends the function of a hyperlink to provide""" start="00:03:40.960" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""a simple human-readable markup""" start="00:03:44.320" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""for executing Emacs commands (called &quot;button actions&quot;)""" start="00:03:46.000" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""and then, on top of this core functionality,""" start="00:03:49.640" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""a few mini applications""" start="00:03:52.360" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""for example &quot;HyRolo&quot; and &quot;Koutline&quot;,""" start="00:03:53.240" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""have been built to make Hyperbole more generally useful""" start="00:03:56.840" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""as a personal information management tool.""" start="00:04:00.960" video="mainVideo-rolodex" id="subtitle"]]
[[!template new="1" text="""&quot;HyRolo&quot; is the feature that I use as my Zettelkasten,""" start="00:04:03.520" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""and in particular, the HyRolo search feature""" start="00:04:07.960" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""in combination with""" start="00:04:11.000" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""the usual Hyperbole hyperlink markup language.""" start="00:04:12.320" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""So let me just quote the Hyperbole manual:""" start="00:04:16.720" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""&quot;Hyperbole includes HyRolo for convenient management of""" start="00:04:19.200" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""hierarchical, record-oriented information.""" start="00:04:24.760" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""Most often, this is used for contact management""" start="00:04:27.440" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""but it can quickly be adapted to most any""" start="00:04:30.880" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""record-oriented lookup task requiring fast retrieval.&quot;""" start="00:04:33.520" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""So in other words, for example,""" start="00:04:37.200" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""it can be used to run search queries""" start="00:04:38.840" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""across the full set of nodes in a set of Org-Mode files.""" start="00:04:41.400" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""This means we can use an Org-Mode file""" start="00:04:44.680" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""as a flat-file database""" start="00:04:47.680" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""in which entries in the database can be linked together.""" start="00:04:49.640" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""This, in essence, is a what a Zettelkasten is.""" start="00:04:52.160" video="mainVideo-rolodex" id="subtitle"]]
[[!template new="1" text="""HyRolo needs almost no configuration,""" start="00:04:55.240" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""even if you are using it""" start="00:04:58.960" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""for the purpose of Zettelkasten,""" start="00:05:00.240" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""but you should at least make sure""" start="00:05:01.720" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""you set the location of the database""" start="00:05:03.840" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""in your Emacs config file, using the Customize system""" start="00:05:05.600" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""or however you prefer to configure your Emacs.""" start="00:05:08.160" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""I use &quot;use-package&quot;, and on this slide I have here""" start="00:05:10.360" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""an abridged version of what my &quot;init.el&quot; file""" start="00:05:13.800" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""looks like for the Hyperbole package.""" start="00:05:15.880" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""A few relevant environment variables are set:""" start="00:05:18.200" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""the &quot;hyrolo-file-list&quot; variable""" start="00:05:21.160" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""selects where to find Rolo database files""" start="00:05:23.880" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""for the purpose of search. I have it set""" start="00:05:26.920" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""to just the Zettelkasten flat file database.""" start="00:05:29.280" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""And I also set &quot;hyrolo-date-format&quot; variable.""" start="00:05:31.920" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""Each database entry has a time stamp, and""" start="00:05:35.200" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""I use the time stamp as a unique ID""" start="00:05:37.880" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""for each entry (that is, each idea node)""" start="00:05:40.240" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""in the database.""" start="00:05:43.280" video="mainVideo-rolodex" id="subtitle"]]
[[!template new="1" text="""Finally, before I get into the actual demo,""" start="00:05:44.280" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""let me quickly explain""" start="00:05:48.200" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""the Hyperbole mini-buffer menu system.""" start="00:05:49.600" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""Mini-buffer menus in Hyperbole work just like""" start="00:05:51.560" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""in an ordinary GUI,""" start="00:05:54.600" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""except you typically enter into the mini-buffer menu""" start="00:05:55.560" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""with a key binding instead of a mouse click.""" start="00:05:58.760" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""To open the Hyperbole menu,""" start="00:06:01.160" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""you use the Hyperbole universal leader key""" start="00:06:03.320" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""that's C-h h, which by the way,""" start="00:06:06.480" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""this rebinds the &quot;view-hello-file&quot; command,""" start="00:06:09.520" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""which is a command that probably most people never use.""" start="00:06:13.240" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""So all Hyperbole menu key sequences begin with C-h h.""" start="00:06:15.760" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""Please remember this:""" start="00:06:20.920" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""as I explain how to do things,""" start="00:06:23.240" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""please don't worry too much""" start="00:06:25.160" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""about the key sequences I use""" start="00:06:26.960" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""to perform certain actions.""" start="00:06:28.680" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""Really, I am just navigating""" start="00:06:30.320" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""the Hyperbole mini-buffer menus.""" start="00:06:32.320" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""It is a very discoverable and fluid user interface.""" start="00:06:33.480" video="mainVideo-rolodex" id="subtitle"]]
[[!template new="1" text="""Anyway, now that we have configured our Rolo database,""" start="00:06:37.600" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""let's see how we enter new ideas into the database.""" start="00:06:42.160" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""And I will start with an empty database,""" start="00:06:45.400" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""then I'll switch over to a more complete database""" start="00:06:48.880" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""that I prepared for this demo. So...""" start="00:06:53.640" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""first we type the Hyperbole universal leader key C-h h,""" start="00:06:57.040" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""and then, you can see the menus down here""" start="00:07:04.160" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""we type &quot;r&quot; for &quot;Rolo&quot; and &quot;a&quot; for &quot;add&quot;.""" start="00:07:08.920" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""That's C-h h r a to enter a new idea.""" start="00:07:15.280" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""And this command is available globally so,""" start="00:07:19.480" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""much like with the &quot;org-capture&quot; feature in Org-Mode,""" start="00:07:23.320" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""you can run this command at any time,""" start="00:07:26.600" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""at the very moment you want to enter an idea.""" start="00:07:28.880" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""First we are prompted for an entry title,""" start="00:07:32.480" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""and if you were using HyRolo as a contact list,""" start="00:07:36.160" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""this is where you would enter the person's name.""" start="00:07:38.800" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""I am using it as a Zettelkasten,""" start="00:07:40.960" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""so I instead enter a title for my idea.""" start="00:07:43.200" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""I'll just type in...""" start="00:07:45.440" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""and as soon as I press enter after this prompt,""" start="00:07:46.840" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""my Zettelkasten org file is opened,""" start="00:07:53.160" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""a new entry with the timestamp is created,""" start="00:07:56.000" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""and the cursor is placed at this entry""" start="00:08:02.880" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""ready for me to enter the body text of the idea.""" start="00:08:06.320" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""I'll type that in...""" start="00:08:09.080" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""Now I save the &quot;idea&quot; file (C-x C-s)""" start="00:08:14.800" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""and switch back to what I was working on before""" start="00:08:18.040" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""with the usual C-x 0 (delete-window) command.""" start="00:08:20.880" video="mainVideo-rolodex" id="subtitle"]]
[[!template new="1" text="""Next, I'd like to talk about""" start="00:08:23.760" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""the HyRolo database search feature,""" start="00:08:26.280" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""which is very useful.""" start="00:08:28.720" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""The HyRolo search feature uses""" start="00:08:30.880" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""only Emacs built-in functions""" start="00:08:33.720" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""and there is no indexing""" start="00:08:35.320" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""as with tools like &quot;mlocate&quot; or Org-Roam.""" start="00:08:36.600" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""So far, I have not had any trouble with efficiency.""" start="00:08:38.680" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""I don't know if at some point in the future,""" start="00:08:41.440" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""it will start slowing down.""" start="00:08:42.760" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""Emacs built-in search functionality""" start="00:08:44.080" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""is already pretty efficient as it is.""" start="00:08:46.200" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""It could also be that I am in the habit""" start="00:08:47.680" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""of storing larger bodies of text in separate files,""" start="00:08:50.840" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""and not in the flat file database.""" start="00:08:55.680" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""Anyway, you can search""" start="00:08:57.560" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""by regex, by string, or by words.""" start="00:08:59.000" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""I personally find the string search""" start="00:09:02.240" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""to be the most useful.""" start="00:09:03.800" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""The difference between word search and string search""" start="00:09:04.720" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""is that string search provides""" start="00:09:07.480" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""logical query operators like AND, OR, XOR, and NOT.""" start="00:09:09.200" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""Once you run a search query,""" start="00:09:12.120" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""a &quot;*HyRolo*&quot; buffer is opened""" start="00:09:14.200" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""with the query's results.""" start="00:09:16.480" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""And this is a read-only-mode buffer""" start="00:09:18.160" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""with a few useful single-key action bindings""" start="00:09:20.440" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""for navigating the list of results""" start="00:09:23.240" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""which I will now demonstrate.""" start="00:09:25.080" video="mainVideo-rolodex" id="subtitle"]]
[[!template new="1" text="""By the way, I have now switched over""" start="00:09:27.120" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""to a larger example Rolo database that I have created""" start="00:09:31.880" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""to demonstrate more of the HyRolo features.""" start="00:09:34.640" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""The HyRolo search is available""" start="00:09:36.560" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""in the Hyperbole mini-buffer menu""" start="00:09:39.480" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""so it is always available to you.""" start="00:09:40.680" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""Start with the Hyperbole universal leader key C-h h""" start="00:09:42.240" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""then &quot;r&quot; for Rolo and &quot;s&quot; for search. That is C-h h r s.""" start="00:09:46.960" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""Now we are prompted for a search string:""" start="00:09:53.840" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""I type in &quot;Alice Abelton&quot;, and when I press enter,""" start="00:09:56.040" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""the search results pop up""" start="00:10:02.520" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""and the number of results is printed in the mini-buffer.""" start="00:10:04.000" video="mainVideo-rolodex" id="subtitle"]]
[[!template new="1" text="""We could also enter a search expression""" start="00:10:06.960" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""similar to a Lisp S-expression""" start="00:10:09.600" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""with logical operators like AND or NOT,""" start="00:10:12.160" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""but you would not need to quote the search terms.""" start="00:10:14.760" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""So, for example (C-h h r s), I could write""" start="00:10:19.280" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""&quot;(and university character)&quot; within parentheses""" start="00:10:24.520" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""and this would find entries""" start="00:10:30.280" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""that only contain both of the words""" start="00:10:31.960" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""&quot;university&quot; and &quot;character&quot;.""" start="00:10:33.800" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""For the most part, I only really ever use""" start="00:10:35.760" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""the ordinary string search without logical operators.""" start="00:10:39.240" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""So as you can see, a search result buffer""" start="00:10:41.720" video="mainVideo-rolodex" id="subtitle"]]
[[!template new="1" text="""called &quot;*HyRolo*&quot; has popped up""" start="00:10:44.760" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""with all of the matching entries.""" start="00:10:47.240" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""And the search results buffer is a read-only buffer""" start="00:10:48.360" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""with several useful navigation key bindings:""" start="00:10:51.320" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""I can press &quot;o&quot; to switch to &quot;overview&quot; mode,""" start="00:10:54.320" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""which shows all of the headings, but no content.""" start="00:11:01.400" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""This would include subheadings""" start="00:11:03.960" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""with like 2 stars in front of it or 3 stars""" start="00:11:05.480" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""I can press &quot;a&quot; to switch to &quot;show all mode&quot;""" start="00:11:07.960" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""which shows all of the content under each heading.""" start="00:11:12.160" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""If I know I am looking for a keyword""" start="00:11:14.560" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""in a top-level heading,""" start="00:11:17.080" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""I can press &quot;t&quot; to switch to the &quot;top-level&quot; view mode""" start="00:11:18.000" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""which shows only the top-level headings.""" start="00:11:22.640" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""As is always the case""" start="00:11:25.440" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""with the Emacs default key bindings,""" start="00:11:27.120" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""&quot;n&quot; and &quot;p&quot; move the cursor down and up lines,""" start="00:11:28.880" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""so I can navigate the cursor downward""" start="00:11:32.360" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""to an entry that looks interesting.""" start="00:11:34.520" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""I can press &quot;s&quot; to show the content""" start="00:11:37.600" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""of that particular entry.""" start="00:11:40.280" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""I can press &quot;h&quot; to hide the entry again.""" start="00:11:41.520" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""And I can press &quot;e&quot; or M-RET on the entry heading""" start="00:11:44.800" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""to &quot;edit&quot; that heading (that entry),""" start="00:11:49.480" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""which will open the Org-Mode file,""" start="00:11:53.280" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""that is, the Zettelkasten database file""" start="00:11:56.280" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""with the cursor at this particular entry.""" start="00:11:59.040" video="mainVideo-rolodex" id="subtitle"]]
[[!template new="1" text="""Be warned that editing an entry creates a new timestamp,""" start="00:12:01.760" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""which I do not need, and there is currently""" start="00:12:07.640" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""no way to avoid this behavior.""" start="00:12:10.160" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""I work around this by simply using the undo command""" start="00:12:12.040" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""which removes the unwanted timestamp.""" start="00:12:15.200" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""And so that is how I use the HyRolo search functionality.""" start="00:12:20.040" video="mainVideo-rolodex" id="subtitle"]]
[[!template new="1" text="""Now... since the most important aspect of Zettelkasten""" start="00:12:25.560" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""is linking ideas in the database,""" start="00:12:32.000" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""how do we actually make this work in HyRolo?""" start="00:12:33.840" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""So this is the secret sauce of Hyperbole,""" start="00:12:37.040" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""and the key take-away""" start="00:12:40.040" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""for this presentation (as I said earlier).""" start="00:12:41.120" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""Hyperbole provides markup syntax""" start="00:12:43.280" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""for executing arbitrary Emacs commands""" start="00:12:46.680" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""so you can link HyRolo entries together""" start="00:12:50.080" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""using the HyRolo search function.""" start="00:12:53.760" video="mainVideo-rolodex" id="subtitle"]]
[[!template new="1" text="""Let me demonstrate this now.""" start="00:12:56.040" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""I am back in my example HyRolo database,""" start="00:12:58.280" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""and if you take a closer look""" start="00:13:03.880" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""you can see some of the hyperlinks""" start="00:13:06.240" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""that I already created""" start="00:13:11.400" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""with the angle-round bracket syntax.""" start="00:13:13.120" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""Now with the cursor inside of these brackets,""" start="00:13:15.840" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""I can press M-RET to &quot;click&quot; on this link.""" start="00:13:19.280" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""As you can see, the search query""" start="00:13:23.440" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""corresponding to this hyperlink here has executed""" start="00:13:27.800" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""and popped up the &quot;*HyRolo*&quot; search results buffer.""" start="00:13:32.040" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""There is only one linked entry,""" start="00:13:34.920" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""but the list of ideas that are produced""" start="00:13:38.720" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""by the search query in this buffer here""" start="00:13:41.400" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""are the list of all of the other ideas""" start="00:13:43.760" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""that are related to this hyperlink""" start="00:13:45.640" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""that we just clicked on here.""" start="00:13:47.800" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""(Let me get rid of the other window...)""" start="00:13:49.480" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""Now from within this &quot;*HyRolo*&quot; buffer,""" start="00:13:52.200" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""I can navigate to another hyperlink...""" start="00:13:55.240" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""and clicking on that updates the &quot;*HyRolo*&quot; buffer""" start="00:13:57.840" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""with new results again.""" start="00:14:03.760" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""I can just keep navigating through""" start="00:14:04.800" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""all the Zettelkasten entries in this way.""" start="00:14:10.120" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""And so this is it.""" start="00:14:13.960" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""This is my simple but effective Zettelkasten,""" start="00:14:18.640" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""constructed entirely with the functionality""" start="00:14:22.720" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""already built-in to Hyperbole.""" start="00:14:25.120" video="mainVideo-rolodex" id="subtitle"]]
[[!template new="1" text="""In the remaining time,""" start="00:14:26.800" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""I'd like to talk about how Hyperbole hyperlinks work,""" start="00:14:32.600" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""because it's slightly different""" start="00:14:37.000" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""from how hyperlinks work in Org Mode""" start="00:14:38.800" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""or with the Emacs clickable text properties.""" start="00:14:40.760" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""The easiest way to create a hyperlink button""" start="00:14:49.200" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""that runs an Emacs command""" start="00:14:52.240" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""is simply to type the Emacs command as an S-expression,""" start="00:14:55.280" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""but with angle brackets instead of parentheses.""" start="00:14:59.480" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""If you were looking closely,""" start="00:15:03.400" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""you probably already saw a hyperlink of this form,""" start="00:15:05.680" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""an angle-bracketed Emacs command.""" start="00:15:08.640" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""This hyperlink simply calls""" start="00:15:10.560" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""the &quot;hyrolo-fgrep&quot; function with this string argument.""" start="00:15:13.160" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""and so clicking on this button""" start="00:15:18.080" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""is equivalent to running a HyRolo search""" start="00:15:20.840" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""with the C-h h r s key sequence.""" start="00:15:23.120" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""As you can see, clicking on it""" start="00:15:27.320" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""produced the search results""" start="00:15:31.400" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""for entries associated with that string query.""" start="00:15:32.920" video="mainVideo-rolodex" id="subtitle"]]
[[!template new="1" text="""It's also possible to label an action""" start="00:15:35.080" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""with a so-called &quot;implicit link&quot;,""" start="00:15:41.080" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""and that's this angle-and-square bracketed notation.""" start="00:15:43.600" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""If I click on this button,""" start="00:15:47.080" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""it will activate this action""" start="00:15:52.000" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""to the right of the colon separator,""" start="00:15:54.160" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""and there are the relevant search results""" start="00:16:01.360" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""from that string query.""" start="00:16:03.640" video="mainVideo-rolodex" id="subtitle"]]
[[!template new="1" text="""Finally, there are &quot;explicit links&quot;,""" start="00:16:04.680" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""which I find to be especially useful""" start="00:16:09.120" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""for the Zettelkasten method.""" start="00:16:11.240" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""I've already shown an example""" start="00:16:12.600" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""of using an explicit link before.""" start="00:16:15.240" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""What makes explicit links so useful is, firstly,""" start="00:16:17.080" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""that the button works with just the label alone.""" start="00:16:20.760" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""There is no need to write an S-expression or anything.""" start="00:16:23.920" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""You can write the link label""" start="00:16:26.600" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""inline with the body text of the idea.""" start="00:16:28.920" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""(For example, like this.)""" start="00:16:31.960" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""Explicit links are identified by their label,""" start="00:16:34.880" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""so they are especially good for""" start="00:16:39.000" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""the names of people and places.""" start="00:16:40.840" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""By the way, this Zettelkasten database is for""" start="00:16:43.120" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""a fictional story I started writing""" start="00:16:46.400" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""for the purpose of demonstrating HyRolo""" start="00:16:47.920" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""in this presentation, and I had so much fun writing it""" start="00:16:50.080" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""that I may actually continue developing this story.""" start="00:16:52.880" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""Anyway, let's create a new explicit link""" start="00:16:55.000" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""and a new idea entry for a character in the story.""" start="00:16:58.640" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""So suppose I want to create a new idea node entry""" start="00:17:01.680" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""for this fictional character here,""" start="00:17:10.240" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""and I'll also want to link this entry to that node.""" start="00:17:11.960" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""Since hyperlinks are just string search,""" start="00:17:15.360" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""we don't actually need to have""" start="00:17:17.840" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""an entry in the database for this character.""" start="00:17:19.800" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""The worst that can happen is that the hyperlink""" start="00:17:22.280" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""executes a search that returns no results.""" start="00:17:24.880" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""So it's OK to create the hyperlink""" start="00:17:27.320" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""before we have an actual entry for this person.""" start="00:17:29.080" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""(I'll just M-w copy the name.)""" start="00:17:31.880" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""Now I use the universal Hyperbole leader key C-h h,""" start="00:17:36.720" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""and then &quot;e&quot; for &quot;explicit links&quot;""" start="00:17:40.920" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""and &quot;c&quot; for &quot;create&quot;. That's C-h h e c.""" start="00:17:44.520" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""We are prompted for an entry label""" start="00:17:49.360" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""but it defaults to the text highlighted by the region,""" start="00:17:52.640" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""so I just press enter.""" start="00:17:56.120" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""Now it prompts for a button type,""" start="00:17:57.960" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""so I select &quot;hyrolo-fgrep&quot;""" start="00:18:00.480" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""(and there's Orderless helping me go faster),""" start="00:18:03.120" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""and since &quot;hyrolo-fgrep&quot; requires""" start="00:18:06.480" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""a string argument for the search query,""" start="00:18:10.320" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""I am prompted for the query string.""" start="00:18:12.680" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""I'll type in &quot;character:&quot;, (yank &quot;Kerri Katz's&quot; name)""" start="00:18:14.480" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""and there we are, the link has been created, and""" start="00:18:21.840" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""(let me just get rid of the # character)""" start="00:18:26.840" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""I can try it out.""" start="00:18:31.160" video="mainVideo-rolodex" id="subtitle"]]
[[!template new="1" text="""There's no search results. That's fine.""" start="00:18:32.720" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""We haven't created an idea entry yet""" start="00:18:36.200" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""for this character now.""" start="00:18:38.960" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""So let's go ahead and do that now.""" start="00:18:40.800" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""If we remember how to create a new idea,""" start="00:18:43.400" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""it's C-h h r a, and then I type &quot;character:&quot;""" start="00:18:45.680" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""and then yank the name again.""" start="00:18:52.360" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""Now a new node has been created,""" start="00:18:56.800" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""and I can start describing this character.""" start="00:18:58.400" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""Notice that I like to precede my characters""" start="00:19:04.360" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""with the keyword &quot;character:&quot; colon.""" start="00:19:08.840" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""This technique helps me to create hyperlinks""" start="00:19:11.480" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""using more descriptive search queries""" start="00:19:14.920" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""that return fewer but more useful search results.""" start="00:19:17.000" video="mainVideo-rolodex" id="subtitle"]]
[[!template new="1" text="""And finally, I can create an explicit link""" start="00:19:19.880" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""from this character back to""" start="00:19:23.840" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""the other character (her boyfriend).""" start="00:19:26.040" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""I just type in &quot;<(Bertrand Becket)>&quot;,""" start="00:19:28.840" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""and this explicit link has already been created""" start="00:19:31.160" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""so I don't need to create it again. It just works.""" start="00:19:37.040" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""Hyperbole identifies buttons by their label,""" start="00:19:39.680" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""so as long as an explicit link button with that label""" start="00:19:41.880" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""has been created before,""" start="00:19:44.720" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""I just can type in the button with markup by hand,""" start="00:19:46.040" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""and then I can just use it.""" start="00:19:51.080" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""Now I am back to the search results""" start="00:19:53.280" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""for the boyfriend character.""" start="00:19:57.840" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""I hope you can see how minimal but useful""" start="00:19:59.320" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""is this particular Zettelkasten technique I have""" start="00:20:04.160" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""that uses this &quot;HyRolo&quot;.""" start="00:20:07.760" video="mainVideo-rolodex" id="subtitle"]]
[[!template new="1" text="""I should also make clear that Hyperbole explicit links""" start="00:20:10.560" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""are encoded in a separate file in the same directory""" start="00:20:19.360" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""as the Zettelkasten flat-file database.""" start="00:20:22.280" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""(So, let's go back to that and C-x C-f &quot;.hypb&quot;).""" start="00:20:24.280" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""You should not edit this file by hand,""" start="00:20:37.080" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""but it is human readable,""" start="00:20:41.240" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""so it works well with Git""" start="00:20:43.600" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""and other revision control systems.""" start="00:20:45.400" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""Whenever an explicit link is activated,""" start="00:20:47.080" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""it consults this file and runs the associated action,""" start="00:20:49.560" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""which, in the Zettelkasten use case,""" start="00:20:52.560" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""will always be to run a HyRolo search query.""" start="00:20:55.840" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""The advantage of keeping a separate table of links""" start="00:20:58.800" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""is that you can edit the link action""" start="00:21:02.040" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""(that is, the search query) in just one place,""" start="00:21:03.920" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""and the updated button action works everywhere""" start="00:21:07.000" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""without having to change any other files.""" start="00:21:10.560" video="mainVideo-rolodex" id="subtitle"]]
[[!template new="1" text="""So, that is all for today.""" start="00:21:12.480" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""Thank you so much for listening to my talk.""" start="00:21:18.400" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""I'll be available for questions""" start="00:21:20.520" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""for the next 20 minutes or so.""" start="00:21:23.080" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""If there are any questions that I cannot answer,""" start="00:21:24.920" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""you will have a chance to ask""" start="00:21:27.960" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""the author of Hyperbole himself, Bob Weiner,""" start="00:21:29.440" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""later today after his presentation.""" start="00:21:31.800" video="mainVideo-rolodex" id="subtitle"]]
[[!template text="""Thanks for your attention!""" start="00:21:34.240" video="mainVideo-rolodex" id="subtitle"]]



Captioner: ramin

Questions or comments? Please e-mail [ramin.honary@gmail.com](mailto:ramin.honary@gmail.com?subject=Comment%20for%20EmacsConf%202022%20rolodex%3A%20Build%20a%20Zettelkasten%20with%20the%20Hyperbole%20Rolodex)


<!-- End of emacsconf-publish-after-page -->