summaryrefslogtreecommitdiffstats
path: root/2022/captions/emacsconf-2022-orgsuperlinks--linking-headings-with-orgsuperlinks-poormans-zettelkasten--karl-voit--main.vtt
blob: d67d0a64825afc970ebb264a9a8ac5b78f82f6d5 (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
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
WEBVTT captioned by sachac

00:00:00.000 --> 00:00:05.600
Hello, my name is Karl Voit

00:00:05.600 --> 00:00:08.720
and I'm going to show you a little demo

00:00:08.720 --> 00:00:10.920
on how I'm working with links

00:00:10.920 --> 00:00:12.760
between arbitrary headings

00:00:12.760 --> 00:00:16.240
and how I define dependencies between tasks

00:00:16.240 --> 00:00:18.680
when I'm working with projects and so forth.

00:00:18.680 --> 00:00:22.680
For that purpose, I've created a repository

00:00:22.680 --> 00:00:27.680
that contains the files we are going to work with,

00:00:27.680 --> 00:00:30.000
with the overall setup and so forth.

00:00:30.000 --> 00:00:32.840
So you just have to download this repository

00:00:32.840 --> 00:00:36.400
and you're able to replay everything

00:00:36.400 --> 00:00:38.120
which you are going to see here.

00:00:38.120 --> 00:00:44.360
If you've downloaded the configuration of the demo,

00:00:44.360 --> 00:00:49.160
you see those files, and you start the Emacs

00:00:49.160 --> 00:00:52.800
with an empty configuration

00:00:52.800 --> 00:00:59.480
and link demo file, like that.

00:00:59.480 --> 00:01:03.800
So let me just briefly increase the font size.

00:01:03.800 --> 00:01:05.760
Setting up the demo is easy.

00:01:05.760 --> 00:01:08.600
I've done the key visualization,

00:01:08.600 --> 00:01:11.840
the webcam part, and I've started the Emacs

00:01:11.840 --> 00:01:13.920
and increased the font size.

00:01:13.920 --> 00:01:17.720
And the last thing and the most important thing

00:01:17.720 --> 00:01:18.680
you need to do here

00:01:18.680 --> 00:01:20.360
is executing the babel block,

00:01:20.360 --> 00:01:23.800
which consists of more or less dirty Elisp code

00:01:23.800 --> 00:01:27.040
that installs the necessary packages, functions,

00:01:27.040 --> 00:01:29.800
and bindings required in this demo.

00:01:29.800 --> 00:01:32.400
You need to acknowledge the execution

00:01:32.400 --> 00:01:36.160
with yes and return, and after a couple of seconds,

00:01:36.160 --> 00:01:37.920
everything is downloaded

00:01:37.920 --> 00:01:42.680
and set up nicely for your demo.

00:01:42.680 --> 00:01:45.040
The first demo is the demo

00:01:45.040 --> 00:01:46.960
where I'm going to show you

00:01:46.960 --> 00:01:48.480
how I'm working with links

00:01:48.480 --> 00:01:50.120
between arbitrary headings.

00:01:50.120 --> 00:01:52.440
It consists of two commands,

00:01:52.440 --> 00:01:55.480
org-super-links-quick-insert-inline-link,

00:01:55.480 --> 00:01:56.640
and the second one is

00:01:56.640 --> 00:01:59.160
org-super-links-quick-insert-drawer-link.

00:01:59.160 --> 00:02:01.040
So the difference is,

00:02:01.040 --> 00:02:03.720
the first one is an inline link,

00:02:03.720 --> 00:02:07.640
and the second one only depends

00:02:07.640 --> 00:02:09.960
on the drawers of the headings.

00:02:09.960 --> 00:02:12.800
So let's show you what I mean.

00:02:12.800 --> 00:02:15.240
If I'm inserting here the inline link

00:02:15.240 --> 00:02:18.680
to the second one, which I have to choose

00:02:18.680 --> 00:02:21.200
from the result set here,

00:02:21.200 --> 00:02:26.440
you see that there is this second heading link

00:02:26.440 --> 00:02:29.480
included here in the first heading.

00:02:29.480 --> 00:02:34.920
Let's open up the first and second heading.

00:02:34.920 --> 00:02:37.120
You see that I can jump this link

00:02:37.120 --> 00:02:40.520
to the second heading. The first heading

00:02:40.520 --> 00:02:42.000
as well as the second heading

00:02:42.000 --> 00:02:43.880
get human readable IDs,

00:02:43.880 --> 00:02:46.040
which I personally prefer.

00:02:46.040 --> 00:02:49.320
The second one gets

00:02:49.320 --> 00:02:51.600
a backheading in a link drawer,

00:02:51.600 --> 00:02:53.680
which was created automatically.

00:02:53.680 --> 00:02:57.440
So this is a method where I link arbitrary headings,

00:02:57.440 --> 00:02:59.167
and that's the main reason

00:02:59.168 --> 00:03:01.214
why I personally don't need any

00:03:01.215 --> 00:03:03.920
Zettelkasten-based method like Org Roam.

00:03:03.920 --> 00:03:08.600
The next command which I want to show you

00:03:08.600 --> 00:03:13.480
is the link between those drawers.

00:03:13.480 --> 00:03:17.720
So in order to link the third to the fourth,

00:03:17.720 --> 00:03:20.320
I need to look for the fourth.

00:03:20.320 --> 00:03:24.200
In this case, you do not see

00:03:24.200 --> 00:03:27.400
any inline link like here above,

00:03:27.400 --> 00:03:31.520
but you see the :PROPERTIES: drawers

00:03:31.520 --> 00:03:35.400
and the :LINKS: drawers in both headings.

00:03:35.400 --> 00:03:38.480
So there is a forward- and a back-link

00:03:38.480 --> 00:03:40.200
between those two headings,

00:03:40.200 --> 00:03:42.920
and if you see a links drawer

00:03:42.920 --> 00:03:45.440
you know that there are

00:03:45.440 --> 00:03:47.560
linked headings you can follow.

00:03:47.560 --> 00:03:51.640
I do find this method very very handy.

00:03:51.640 --> 00:03:53.600
Of course, this doesn't only work

00:03:53.600 --> 00:03:57.120
within one single Org mode file.

00:03:57.120 --> 00:04:01.440
It works between arbitrary Org mode files

00:04:01.440 --> 00:04:02.633
as long as they are

00:04:02.634 --> 00:04:05.760
part of your Org Mode agenda list.

00:04:05.760 --> 00:04:08.280
So that was the first heading

00:04:08.280 --> 00:04:09.960
with the bi-directional links.

00:04:09.960 --> 00:04:11.640
The second one is a little bit

00:04:11.640 --> 00:04:13.080
more complicated than that

00:04:13.080 --> 00:04:17.280
because I show you how I'm working with projects.

00:04:17.280 --> 00:04:19.533
Usually, I start the project

00:04:19.534 --> 00:04:22.080
by adding a "Why?" statement

00:04:22.080 --> 00:04:25.200
so that I remember why this project

00:04:25.200 --> 00:04:27.440
needs to be done in the first place.

00:04:27.440 --> 00:04:32.280
I do a brainstorming on the tasks

00:04:32.280 --> 00:04:33.933
that need to be done in the project

00:04:33.934 --> 00:04:36.280
as a simple list.

00:04:36.280 --> 00:04:39.360
With this handy command (C-c *),

00:04:39.360 --> 00:04:43.840
I'm converting it to a list of Org mode headings.

00:04:43.840 --> 00:04:47.040
Now let's add the NEXT keyword,

00:04:47.040 --> 00:04:49.000
which is my default to-do keyword,

00:04:49.001 --> 00:04:49.760
to the first heading.

00:04:49.760 --> 00:04:53.320
You notice that there is a CREATED property

00:04:53.320 --> 00:04:56.480
which is not relevant to the demo itself,

00:04:56.480 --> 00:04:57.840
but it's part of my setup.

00:04:57.840 --> 00:05:00.840
I really like those created headings

00:05:00.840 --> 00:05:03.640
because when I add arbitrary headings,

00:05:03.640 --> 00:05:07.680
this CREATED property is added automatically.

00:05:07.680 --> 00:05:11.480
So now I want to define a dependency

00:05:11.480 --> 00:05:12.967
between "Empty garage"

00:05:12.968 --> 00:05:14.800
and "Paint walls and floor."

00:05:14.800 --> 00:05:18.480
I do that by invoking my command here,

00:05:18.480 --> 00:05:22.520
and look for the "Paint walls" heading.

00:05:22.520 --> 00:05:28.600
In this dialogue, you may add a scheduled date

00:05:28.600 --> 00:05:30.233
and/or a deadline date

00:05:30.234 --> 00:05:34.240
and/or a to-do statement. For this demo

00:05:34.240 --> 00:05:37.640
I only choose the to-do keyword.

00:05:37.640 --> 00:05:39.400
You notice that there is

00:05:39.400 --> 00:05:41.000
this TRIGGER property added.

00:05:41.000 --> 00:05:43.280
That's default behavior of org-edna

00:05:43.280 --> 00:05:47.200
which is managing the dependencies, in my case.

00:05:47.200 --> 00:05:51.600
In the other one, there is this BLOCKER property.

00:05:51.600 --> 00:05:55.360
It's very handy to know that those IDs

00:05:55.360 --> 00:05:57.880
might be used for jumping

00:05:57.880 --> 00:06:00.640
between those dependencies again.

00:06:00.640 --> 00:06:03.600
Those two headings don't have to be necessarily

00:06:03.600 --> 00:06:05.560
in the very same Org Mode file.

00:06:05.560 --> 00:06:07.920
They may be scattered around

00:06:07.920 --> 00:06:11.000
your Org Mode agenda files all over the place.

00:06:11.000 --> 00:06:16.160
So continuing this definition of dependency

00:06:16.160 --> 00:06:19.040
between the second and the third one...

00:06:19.040 --> 00:06:23.000
I'm using the search "Bring back stuff"...

00:06:23.000 --> 00:06:24.800
the search functionality...

00:06:24.800 --> 00:06:28.800
I choose the NEXT keyword here, its dependency.

00:06:28.800 --> 00:06:32.480
The same holds true for the last two.

00:06:32.480 --> 00:06:37.400
"Is painted", for example. I'm going to use

00:06:37.400 --> 00:06:39.320
the NEXT keyword again.

00:06:39.320 --> 00:06:44.520
I tend to use the last task of any project

00:06:44.520 --> 00:06:47.120
to close the overall project.

00:06:47.120 --> 00:06:49.880
So if I show you this one,

00:06:49.880 --> 00:06:57.040
I'm using the dependency to "Garage" project,

00:06:57.040 --> 00:07:02.200
and this time I'm using the DONE keyword.

00:07:02.200 --> 00:07:04.920
Of course, the properties

00:07:04.920 --> 00:07:07.920
look like that all the time,

00:07:07.920 --> 00:07:11.640
so there is a trigger from the first task

00:07:11.640 --> 00:07:13.920
to the second one, and there is a blocker

00:07:13.920 --> 00:07:17.120
from the second one back to the first one,

00:07:17.120 --> 00:07:21.640
and when I'm actually doing the project,

00:07:21.640 --> 00:07:25.520
I may now mark the first task as DONE,

00:07:25.520 --> 00:07:28.360
and you notice that the second one

00:07:28.360 --> 00:07:31.440
automatically gets a next keyword.

00:07:31.440 --> 00:07:34.600
This happened, of course, for all those tasks.

00:07:34.600 --> 00:07:38.920
The neat thing is when I close the last one,

00:07:38.920 --> 00:07:42.760
the overall project gets its DONE keyword as well.

00:07:42.760 --> 00:07:46.360
So this is how I'm working with

00:07:46.360 --> 00:07:49.120
projects and dependencies.

00:07:49.120 --> 00:07:53.720
Most of the time, task dependencies

00:07:53.720 --> 00:07:58.160
are not even within the same Org Mode subheading,

00:07:58.160 --> 00:08:01.600
let's say. Also, I'm using dependencies

00:08:01.600 --> 00:08:03.720
between different Org Mode files.

00:08:03.720 --> 00:08:07.160
This is a very, very cool way of defining

00:08:07.160 --> 00:08:10.040
what to do next in a project,

00:08:10.040 --> 00:08:12.667
without looking for tasks

00:08:12.668 --> 00:08:15.640
that can't be done at that stage.

00:08:15.640 --> 00:08:20.240
You can have a look at the details of the demo

00:08:20.240 --> 00:08:23.800
by checking out the files in the repository.

00:08:23.800 --> 00:08:27.080
That's it for the demo,

00:08:27.080 --> 00:08:30.720
and therefore I thank you for your patience.

00:08:30.720 --> 00:08:32.160
I wish you good luck,

00:08:32.160 --> 00:08:39.520
and I hope that I could show you one or two tricks

00:08:39.520 --> 00:08:42.080
that you can add to your Org Mode setup

00:08:42.080 --> 00:08:47.040
in order to help you with your daily work.

00:08:47.040 --> 00:08:56.000
So bye from me, till next time.