summaryrefslogtreecommitdiffstats
path: root/2024/captions/emacsconf-2024-hyperdrive--new-in-hyperdriveel-quick-install-peer-graph-transclusion--joseph-turner--main.vtt
blob: 4f12bbed8cf86e34d9cc366afd30f91dd827ac9a (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
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
WEBVTT captioned by sachac

00:00:00.000 --> 00:00:03.919
Hello, welcome to this talk on hyperdrive.el. I'm Joseph

00:00:03.920 --> 00:00:07.439
Turner presenting on behalf of Ushin, a tiny independent

00:00:07.440 --> 00:00:12.039
information freedom nonprofit. Hyperdrive.el is an Emacs

00:00:12.040 --> 00:00:14.959
interface to the Hyperdrive peer-to-peer file sharing

00:00:14.960 --> 00:00:18.399
system built by HolePunch. Like other peer-to-peer file

00:00:18.400 --> 00:00:22.119
sharing tools, such as BitTorrent, Hyperdrive lets you

00:00:22.120 --> 00:00:25.959
share unlimited files directly with other users without

00:00:25.960 --> 00:00:29.519
having to go through a central hub. One thing that sets

00:00:29.520 --> 00:00:32.519
HyperDrive apart is that the files you share can be

00:00:32.520 --> 00:00:35.759
modified. Since Hyperdrive has built-in versioning,

00:00:35.760 --> 00:00:38.519
you can explore the history of changes that you make to your

00:00:38.520 --> 00:00:42.199
files or others make to theirs. You can stream video and

00:00:42.200 --> 00:00:45.639
audio. There's no sign-up or account creation process

00:00:45.640 --> 00:00:49.319
required. It's all free software. This means that the

00:00:49.320 --> 00:00:52.319
community has the legal right, the tools, and the

00:00:52.320 --> 00:00:55.359
information necessary to participate in the development

00:00:55.360 --> 00:00:58.337
process, or even fork the project

00:00:58.338 --> 00:01:00.799
and go somewhere on[??]. Since

00:01:00.800 --> 00:01:04.919
last year's talk, we've added a few new features. It's now

00:01:04.920 --> 00:01:08.559
much easier to get started using hyperdrive.el, since we

00:01:08.560 --> 00:01:12.399
added the hyperdrive install command, which downloads the

00:01:12.400 --> 00:01:16.399
gateway program and installs it on your machine. We added a

00:01:16.400 --> 00:01:19.959
peer graph feature, which lets you visualize your network

00:01:19.960 --> 00:01:24.719
of sources of information. We also published a new package,

00:01:24.720 --> 00:01:29.079
hyperdrive-org-transclusion, which lets you display live

00:01:29.080 --> 00:01:34.599
updating snippets of Hyperdrive files in Org documents.

00:01:34.600 --> 00:01:37.319
Let's get started. Let's say you get an email from your

00:01:37.320 --> 00:01:41.079
friend Alice inviting you to check out hyperdrive.el.

00:01:41.080 --> 00:01:45.519
Let's click on the link here to look at the manual. Let's go

00:01:45.520 --> 00:01:50.239
down to the installation section. It says you need to have

00:01:50.240 --> 00:01:54.639
GNU Emacs version 28.1 or later. I'll assume you have it

00:01:54.640 --> 00:01:57.479
installed, but if not, you can click this link.

00:01:57.480 --> 00:01:59.399
You need to have curl installed,

00:01:59.400 --> 00:02:01.919
which is likely already the case, but if not,

00:02:01.920 --> 00:02:04.719
hyperdrive.el will let you know.

00:02:04.720 --> 00:02:10.879
Now from within Emacs you can install hyperdrive.el.

00:02:10.880 --> 00:02:14.399
Run M-x package-refresh-contents.

00:02:14.400 --> 00:02:20.919
Then, M-x package-install, type in hyperdrive,

00:02:20.920 --> 00:02:26.079
and hit return. Next, we'll install hypergateway ushin.

00:02:26.080 --> 00:02:32.999
Let's run M-x hyperdrive-install. It's prompting me to

00:02:33.000 --> 00:02:35.880
download and install the gateway, which is 51 megabytes.

00:02:35.881 --> 00:02:39.780
I'll press y.

00:02:39.781 --> 00:02:44.159
I will skip most of the download process. The download is

00:02:44.160 --> 00:02:49.439
wrapping up.

00:02:49.440 --> 00:02:53.399
Now, it's prompting me to start the gateway. I can either run

00:02:53.400 --> 00:02:59.279
M-x hyperdrive start, or I can press this button. And

00:02:59.280 --> 00:03:03.479
after a few moments, we'll see that the gateway will start.

00:03:03.480 --> 00:03:07.279
It's ready. You can also click this button, View Hyperdrive

00:03:07.280 --> 00:03:10.239
User Info Manual, to view the same manual that we were

00:03:10.240 --> 00:03:13.479
viewing in the browser. The info manual comes with

00:03:13.480 --> 00:03:17.319
hyperdrive.el and is available offline. Now that

00:03:17.320 --> 00:03:20.559
everything's installed and the gateway is running, we're

00:03:20.560 --> 00:03:23.399
back at Alice's email. Let's click on the link to her

00:03:23.400 --> 00:03:28.719
hyperdrive. Here's Alice's hyperdrive. Let's open her

00:03:28.720 --> 00:03:33.079
hello.org file.

00:03:33.080 --> 00:03:37.319
I'm being prompted to mark Alice's hyperdrive. Currently,

00:03:37.320 --> 00:03:41.879
it's unknown. I'll press ? to see more details.

00:03:41.880 --> 00:03:48.279
Safe, unsafe, unknown. I'll press e for explain. In the info

00:03:48.280 --> 00:03:54.139
manual, it says that if a hyperdrive is marked as safe, that

00:03:54.140 --> 00:03:57.799
means files in that hyperdrive will automatically have

00:03:57.800 --> 00:04:02.559
their major mode enabled based on their file extension. In

00:04:02.560 --> 00:04:06.719
this case, if I mark Alice's hyperdrive as safe and I click on

00:04:06.720 --> 00:04:10.519
this hello.org file, Emacs will automatically enable org

00:04:10.520 --> 00:04:14.919
mode in that file. Since I know Alice directly, I'll mark her

00:04:14.920 --> 00:04:19.639
hyperdrive as safe. I'll click on the file hello.org again,

00:04:19.640 --> 00:04:25.679
and now I'll press Shift-s for safe.

00:04:25.680 --> 00:04:30.639
Now I'm going to set Alice's pet name. Hyperdrive.el has

00:04:30.640 --> 00:04:34.679
different ways to name a hyperdrive. The public key is the

00:04:34.680 --> 00:04:38.719
drive's unique identifier. You can also assign yourself a

00:04:38.720 --> 00:04:42.359
public nickname, which you announce to the world. Then

00:04:42.360 --> 00:04:45.959
users on their own machines can assign each hyperdrive that

00:04:45.960 --> 00:04:50.439
they are aware of a private pet name. I'll assign Alice a

00:04:50.440 --> 00:04:54.079
pet name, which is the way that I will identify Alice just on

00:04:54.080 --> 00:05:01.906
my own machine. I'll type in my friend Alice.

00:05:01.907 --> 00:05:03.707
Then when I refresh her drive,

00:05:03.708 --> 00:05:07.359
we see that it says pet name in the top left.

00:05:07.360 --> 00:05:09.392
Now I'll do what she asks,

00:05:09.393 --> 00:05:11.613
which is to right click on her name and

00:05:11.614 --> 00:05:15.259
open her peer graph. In the context menu, I see a few

00:05:15.260 --> 00:05:19.159
different actions I can take, but I'll click on peer graph.

00:05:19.160 --> 00:05:22.959
It's prompting me to pick the max hops for sources. Default

00:05:22.960 --> 00:05:26.799
3. I'll choose the default. Same for blockers. I'll explain

00:05:26.800 --> 00:05:27.599
what that means later.

00:05:30.380 --> 00:05:35.959
This is Alice's peer graph. Here we can see that Alice has two

00:05:35.960 --> 00:05:41.279
direct sources, Bob and Eve. Both Bob and Eve have assigned

00:05:41.280 --> 00:05:45.919
themselves nicknames, and so we see Bob and Eve here. Eve has

00:05:45.920 --> 00:05:50.479
assigned this other hyperdrive to be a source. But this

00:05:50.480 --> 00:05:55.959
other hyperdrive, whose public key is KB3ZR6MQ

00:05:55.960 --> 00:05:59.519
and so on--if we hover over the hyperdrive, we'll see the full

00:05:59.520 --> 00:06:03.239
public key--has not assigned itself a nickname. So we

00:06:03.240 --> 00:06:07.999
just see the truncated short public key. Because we've

00:06:08.000 --> 00:06:10.917
assigned a pet name for Alice,

00:06:10.918 --> 00:06:14.558
we see Alice's pet name show up here.

00:06:14.559 --> 00:06:17.839
Now I'll open the peer list view to show the same

00:06:17.840 --> 00:06:21.479
information in a different way. Since I'm using a large

00:06:21.480 --> 00:06:25.199
font, I'll widen this window so we can see everything going

00:06:25.200 --> 00:06:29.319
on in the peer list. We see that the root hyperdrive is pet

00:06:29.320 --> 00:06:33.639
name, my friend Alice, nickname Alice, public key, DM1, and

00:06:33.640 --> 00:06:38.359
so on. We've set the sources max hops to three, which means

00:06:38.360 --> 00:06:42.359
that we will go out at most three hops from Alice in order to

00:06:42.360 --> 00:06:49.839
find sources. One hop from Alice are Bob and Eve. One hop

00:06:49.840 --> 00:06:55.839
from Eve is KB3, which is two hops from Alice. Now we've set

00:06:55.840 --> 00:06:59.159
the max hops for sources to three, but in this case, the

00:06:59.160 --> 00:07:04.279
network is small, and KB3 has no sources. So we can only go

00:07:04.280 --> 00:07:07.959
out two hops from Alice until we run out of sources. In the

00:07:07.960 --> 00:07:11.159
future, we plan to add a search feature based on this list of

00:07:11.160 --> 00:07:14.479
sources. You type in a query, and you get back a list of

00:07:14.480 --> 00:07:19.879
results published by Eve, Bob, or KB3. It's also possible to

00:07:19.880 --> 00:07:23.239
block peers. I'll open the transient menu by pressing

00:07:23.240 --> 00:07:28.759
question mark. For now, let's turn on showing blocked

00:07:28.760 --> 00:07:35.439
peers. I'll press s x, and now it says blocked sources.

00:07:35.440 --> 00:07:38.839
Now we can see Mallory also shows up. Mallory has been

00:07:38.840 --> 00:07:43.399
included as a source by Eve, but is blocked. So in the end

00:07:43.400 --> 00:07:47.039
result, she does not show up in the list of sources. Instead,

00:07:47.040 --> 00:07:51.839
she shows up as a blocked source. But how is it that Mallory

00:07:51.840 --> 00:07:55.039
ended up being blocked? Let's open up the transient menu

00:07:55.040 --> 00:08:02.759
once more and click S, B to show blockers. Now we can see that

00:08:02.760 --> 00:08:07.079
Bob has blocked Mallory. This means that Bob is not

00:08:07.080 --> 00:08:12.519
interested in seeing search results from Mallory. Since

00:08:12.520 --> 00:08:17.639
Alice has included Bob as a blocker, that means that Alice

00:08:17.640 --> 00:08:23.439
trusts Bob to block people on her behalf. So since Bob has

00:08:23.440 --> 00:08:27.479
blocked Mallory, Mallory does not show up in Alice's

00:08:27.480 --> 00:08:31.919
peergraph as a source. Well, now I'm curious to see what it is

00:08:31.920 --> 00:08:35.919
Mallory published that drove Bob to block her. I'll

00:08:35.920 --> 00:08:39.439
right-click on Mallory, and in the context menu, open

00:08:39.440 --> 00:08:44.319
Hyperdrive, and... Wingsuit Flying Grand Canyon Point of

00:08:44.320 --> 00:08:49.879
View Not Clickbait? I gotta check this out.

00:08:49.880 --> 00:08:56.159
No! Disgusting! No wonder Bob blocked Mallory. Let's go

00:08:56.160 --> 00:09:01.839
back to Alice's paragraph. Mallory is a blocked source.

00:09:01.840 --> 00:09:05.599
Are there any peers who are blocked but who aren't sources?

00:09:05.600 --> 00:09:11.739
I'll open the transient menu and I'll press s x. Now we're

00:09:11.740 --> 00:09:16.839
looking at blocked non-sources. Darth, who's been blocked

00:09:16.840 --> 00:09:20.759
by Bob, has not been added by any of Alice's sources as a

00:09:20.760 --> 00:09:25.559
source. So Darth is a blocked non-source. I'll open the

00:09:25.560 --> 00:09:29.699
transient menu again and I'll press s x. Now we're

00:09:29.700 --> 00:09:34.639
looking at all blocked peers. Both Mallory and Darth show

00:09:34.640 --> 00:09:37.959
up. If I scroll down in the peer list, we'll see that Mallory

00:09:37.960 --> 00:09:42.519
is listed under blocked sources, and Darth is listed under

00:09:42.520 --> 00:09:45.559
blocked non-sources. This view has gotten a little bit

00:09:45.560 --> 00:09:49.319
busy. Let's say that we're only interested in how Alice

00:09:49.320 --> 00:09:54.519
relates to Mallory. I'll open the transient menu, and I

00:09:54.520 --> 00:09:58.519
will filter the graph to show paths only to Mallory. I'll

00:09:58.520 --> 00:10:05.519
press o a, type in Mallory, and hit enter. Now we see that

00:10:05.520 --> 00:10:11.479
Mallory has a bold border and KB3 and Darth are missing from

00:10:11.480 --> 00:10:16.679
the graph. Eve shows up because there's a path from Alice to

00:10:16.680 --> 00:10:22.479
Mallory that goes through Eve. Same for Bob. We can also add

00:10:22.480 --> 00:10:28.599
more than one peer in this view. I'll press OA again, and

00:10:28.600 --> 00:10:34.719
this time I'll choose Darth. Now Darth and Mallory have bold

00:10:34.720 --> 00:10:38.839
borders, and KB3 is still missing. We can remove Mallory and

00:10:38.840 --> 00:10:42.799
Darth one at a time with o r, or we can press C-u, the

00:10:42.800 --> 00:10:47.679
universal prefix argument, and then o r to remove both

00:10:47.680 --> 00:10:51.239
Mallory and Darth from the list. Now we're back to seeing

00:10:51.240 --> 00:10:55.679
everybody. This view of the graph is somewhat simplified

00:10:55.680 --> 00:10:57.537
because we're showing only

00:10:57.538 --> 00:11:00.238
the shortest paths between peers.

00:11:00.239 --> 00:11:06.039
If I press Shift-s now we're looking at all paths.

00:11:06.040 --> 00:11:10.039
Here, we can see that in addition to going from Alice to

00:11:10.040 --> 00:11:15.519
Bob as a source directly, we also go from Alice to Bob through

00:11:15.520 --> 00:11:21.079
Eve as a source. Let's go back to showing only the shortest

00:11:21.080 --> 00:11:27.719
paths. Currently, the max hops for sources and for blockers

00:11:27.720 --> 00:11:31.679
is set to 3. Let's see what happens if we set the blockers max

00:11:31.680 --> 00:11:33.519
hops to 0.

00:11:35.800 --> 00:11:39.479
After the graph reloads, we now see that Mallory

00:11:39.480 --> 00:11:43.286
shows up as a source, not as a blocked source.

00:11:43.287 --> 00:11:44.759
This is because Bob,

00:11:44.760 --> 00:11:49.199
who is one hop away from Alice, is no longer included as a

00:11:49.200 --> 00:11:52.479
blocker, because we've set the blockers max hops to 0. And

00:11:52.480 --> 00:11:57.519
since Bob is not a blocker, the fact that Bob blocks Mallory

00:11:57.520 --> 00:12:01.719
doesn't factor in. While Alice is the only one who gets to

00:12:01.720 --> 00:12:05.959
decide who her direct sources, blockers, and blocked peers

00:12:05.960 --> 00:12:10.239
are, anyone can view Alice's peer graph, tinker with the

00:12:10.240 --> 00:12:14.439
sources or blockers' max hops, and use her list of sources to

00:12:14.440 --> 00:12:19.239
do a search. Let's see what happens if we set sources' max

00:12:19.240 --> 00:12:24.719
hops to 2. Well, the graph doesn't change, because we only

00:12:24.720 --> 00:12:29.239
ever went out 2 hops anyway. Let's set source's max hops to 1.

00:12:30.140 --> 00:12:35.159
Now we only see Bob and Eve, since KB3 and Mallory are

00:12:35.160 --> 00:12:43.079
2 hops out. Source hops 0. Now we're left with just Alice.

00:12:44.120 --> 00:12:47.999
Now I'd like to create a new hyperdrive and add Alice as a

00:12:48.000 --> 00:12:52.731
source. I'll run M-x hyperdrive new.

00:12:52.732 --> 00:12:53.812
Now it's prompting me

00:12:53.813 --> 00:12:57.479
for a new hyperdrive seed. Seed is a string of characters

00:12:57.480 --> 00:13:01.359
that's combined with your secret key, which is generated

00:13:01.360 --> 00:13:04.719
for you by the gateway program, in order to create a new

00:13:04.720 --> 00:13:10.679
public key for this new hyperdrive. I'll type in Joseph, a

00:13:10.680 --> 00:13:15.319
new drive. Now, I'll right-click on my own name, and in the

00:13:15.320 --> 00:13:21.599
context menu, I'll choose Set Relation From. From Joseph

00:13:21.600 --> 00:13:32.279
to Alice, as a source. Now, I'll right-click on my name again,

00:13:32.280 --> 00:13:40.919
and click on Peer Graph. Max hops, let's say three, and for

00:13:40.920 --> 00:13:41.879
blockers as well,

00:13:45.440 --> 00:13:49.399
Here's the peer graph from my newly created

00:13:49.400 --> 00:13:54.199
hyperdrive's perspective. Mallory is included as a

00:13:54.200 --> 00:13:58.519
source, three hops from the root. Let's open the list view.

00:14:01.220 --> 00:14:06.439
If we were to mark Alice as a blocker by clicking on this

00:14:06.440 --> 00:14:10.319
button in the blocker column next to the pet name for Alice,

00:14:12.120 --> 00:14:16.959
Then we see that Mallory shows up as a blocked source. Only

00:14:16.960 --> 00:14:21.359
now that Joseph includes Alice as a blocker does the fact

00:14:21.360 --> 00:14:26.399
that Bob blocked Mallory take effect. You can click on

00:14:26.400 --> 00:14:30.539
another peer to set them as the root hyperdrive. I'll click

00:14:30.540 --> 00:14:34.999
on Eve. Now we're looking at the peer graph from Eve's

00:14:35.000 --> 00:14:39.519
perspective. This peer graph view has a history. If I open

00:14:39.520 --> 00:14:42.359
the transient menu, you'll see here there's a back and a

00:14:42.360 --> 00:14:47.359
forward button. Back is bound to l for left. If I press l,

00:14:48.440 --> 00:14:51.839
we're looking at the graph from Joseph's perspective. If I

00:14:51.840 --> 00:14:56.279
press l again, now we're looking at Alice, as at the

00:14:56.280 --> 00:15:01.439
beginning. I'll press r to go forward, and r again, and now

00:15:01.440 --> 00:15:04.734
we're back at Eve. Now, I'd like to show you

00:15:04.735 --> 00:15:08.337
the hyperdrive-org-transclusion package we published.

00:15:08.338 --> 00:15:10.358
I'll open up the HyperDrive manual

00:15:10.359 --> 00:15:14.399
to see how to install it.

00:15:15.680 --> 00:15:20.999
Now, from here, I'll press m and type in transclusion to jump

00:15:21.000 --> 00:15:23.599
straight to the org-transclusion integration section of

00:15:23.600 --> 00:15:27.079
the manual. To summarize, we can install HyperDrive

00:15:27.080 --> 00:15:30.879
org-transclusion with M-x package-install

00:15:32.220 --> 00:15:33.919
hyperdrive-org-transclusion.

00:15:37.000 --> 00:15:42.159
Then, once this is done, we will copy the following snippet

00:15:43.780 --> 00:15:47.559
and add it either to our init.el file or, in this case, I'll

00:15:47.560 --> 00:15:52.439
just evaluate it. Now, hyperdrive-org-transclusion mode is

00:15:52.440 --> 00:15:52.879
enabled.

00:15:58.100 --> 00:16:01.479
Let's go back to the hello.org file in Alice's hyperdrive.

00:16:01.480 --> 00:16:07.239
I'll right-click on Alice, then click Open Hyperdrive, and

00:16:07.240 --> 00:16:11.359
hit Enter on hello.org. This time, I'm not prompted to mark

00:16:11.360 --> 00:16:16.199
Alice's hyperdrive as safe, since we did it already. I'll

00:16:16.200 --> 00:16:20.719
navigate to the Check Out My Peers heading. Then I'll run

00:16:20.720 --> 00:16:28.359
M-x org-store-link. Now, I'll create a new file in my

00:16:28.360 --> 00:16:32.959
hyperdrive by running M-x hyperdrive-find-file. I'll

00:16:32.960 --> 00:16:38.488
select my hyperdrive and I'll call this new file

00:16:38.489 --> 00:16:45.919
response-to-alice.org.

00:16:45.920 --> 00:16:50.780
Now, I'll paste in a response that I've written.

00:16:50.781 --> 00:16:57.979
I'll go to the bottom and I will run M-x org-insert-link

00:16:57.980 --> 00:16:59.423
and I'll insert the link

00:16:59.424 --> 00:17:02.799
that I stored earlier. As a link

00:17:02.800 --> 00:17:07.759
description, I'll change it to snippet from Alice's

00:17:08.880 --> 00:17:09.879
hyperdrive file.

00:17:12.700 --> 00:17:18.399
I'll save my hyperdrive file.

00:17:18.400 --> 00:17:21.839
Now, to show that the link works, I'll just kill this buffer

00:17:21.840 --> 00:17:27.099
showing the hello.org file, and I'll click on the link.

00:17:27.100 --> 00:17:29.487
Now in addition to linking from my file

00:17:29.488 --> 00:17:31.488
to the heading in Alice's file,

00:17:31.489 --> 00:17:35.699
I'd like to transclude this headings content in my file.

00:17:35.700 --> 00:17:38.634
So I'll go to the link in my file and run

00:17:38.635 --> 00:17:45.400
M-x org-transclusion-make-from-link

00:17:45.401 --> 00:17:47.879
and I'll save my file again.

00:17:47.880 --> 00:17:50.504
All that's been added is another link

00:17:50.505 --> 00:17:54.433
prefixed with this transclude keyword.

00:17:54.434 --> 00:17:57.034
To make the transclusion show up inline,

00:17:57.035 --> 00:18:02.359
I'll run M-x org-transclusion-add. The content

00:18:02.360 --> 00:18:05.359
of Alice's file hasn't been copied into mine. It's just

00:18:05.360 --> 00:18:12.959
being transcluded. If I run M-x org-transclusion-remove,

00:18:12.960 --> 00:18:15.439
you'll see that the underlying content is still

00:18:15.440 --> 00:18:21.639
just the transclude keyword and the link.

00:18:21.640 --> 00:18:24.319
Now some time has passed and Alice has updated her

00:18:24.320 --> 00:18:29.879
hyperdrive file. She wrote, please add me as a source. Since

00:18:29.880 --> 00:18:33.559
the transclude link that I added in my file does not specify a

00:18:33.560 --> 00:18:36.879
version, it will always transclude the latest version of

00:18:36.880 --> 00:18:42.639
Alice's hello.org file. If I run M-x org-transclusion-add

00:18:42.640 --> 00:18:46.719
once more, we'll see that the latest version of Alice's

00:18:46.720 --> 00:18:51.679
file gets transcluded into mine. Let's say that I want to

00:18:51.680 --> 00:18:54.959
transclude the previous version of Alice's hello.org

00:18:54.960 --> 00:18:58.879
file, and I don't want my transclusion to change when Alice

00:18:58.880 --> 00:19:02.919
updates her file. That's possible too. I'll go over to her

00:19:02.920 --> 00:19:09.759
file and run M-x hyperdrive-open-previous-version. Now

00:19:09.760 --> 00:19:14.079
when I widen the window a little, we can see in the mode line

00:19:14.080 --> 00:19:18.279
that this is version 57. For an explanation of what the

00:19:18.280 --> 00:19:21.599
version numbers mean, check out the last video or the info

00:19:21.600 --> 00:19:25.759
manual. For now, I'll go down to her check out my peers

00:19:25.760 --> 00:19:32.999
heading and run M-x org-store-link. Now, in my response to

00:19:33.000 --> 00:19:39.159
Alice, I'll insert the link. I'll run org transclusion make

00:19:39.160 --> 00:19:44.759
from link. Now there are two transclusions. The first

00:19:44.760 --> 00:19:47.719
transclusion will update whenever Alice updates her file,

00:19:47.720 --> 00:19:52.919
and the second transclusion is pinned to version 57. That

00:19:52.920 --> 00:19:53.356
covers Hyperdrive install, the peer graph, and

00:19:53.357 --> 00:19:58.298
hyperdrive-org-transclusion.

00:19:58.299 --> 00:20:00.519
Feel free to check out the hyperdrive.el

00:20:00.520 --> 00:20:04.119
info manual in the Ushin hyperdrive here, or on the

00:20:04.120 --> 00:20:08.439
ushin.org website. Thanks to the folks at Sopranica, we

00:20:08.440 --> 00:20:11.879
have a public XMPP group chat you can join, either using an

00:20:11.880 --> 00:20:15.919
XMPP client or anonymously from your browser. If you use

00:20:15.920 --> 00:20:19.799
Matrix, there's also a bridge. Thank you for watching, and

00:20:19.800 --> 00:20:22.519
thank you to the EmacsConf organizers and all the

00:20:22.520 --> 00:20:25.160
presenters who made this wonderful event possible.