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
|
<!-- Automatically generated by emacsconf-publish-after-page -->
<div class="transcript transcript-mainVideo"><a name="hyperdrive-mainVideo-transcript"></a>
# Transcript
[[!template text="""Hello, welcome to this talk on hyperdrive.el. I'm Joseph""" start="00:00:00.000" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""Turner presenting on behalf of ushin, a tiny independent""" start="00:00:03.920" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""information freedom nonprofit. hyperdrive.el is an Emacs""" start="00:00:07.440" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""interface to the hyperdrive peer-to-peer file sharing""" start="00:00:12.040" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""system built by Holepunch. Like other peer-to-peer file""" start="00:00:14.960" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""sharing tools, such as BitTorrent, hyperdrive lets you""" start="00:00:18.400" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""share unlimited files directly with other users without""" start="00:00:22.120" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""having to go through a central hub. One thing that sets""" start="00:00:25.960" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""Hyperdrive apart is that the files you share can be""" start="00:00:29.520" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""modified. Since hyperdrive has built-in versioning,""" start="00:00:32.520" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""you can explore the history of changes that you make to your""" start="00:00:35.760" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""files or others make to theirs. You can stream video and""" start="00:00:38.520" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""audio. There's no sign-up or account creation process""" start="00:00:42.200" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""required. It's all free software. This means that the""" start="00:00:45.640" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""community has the legal right, the tools, and the""" start="00:00:49.320" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""information necessary to participate in the development""" start="00:00:52.320" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""process, or even fork the project""" start="00:00:55.360" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""and go cimarron. Since""" start="00:00:58.338" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""last year's talk, we've added a few new features. It's now""" start="00:01:00.800" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""much easier to get started using hyperdrive.el, since we""" start="00:01:04.920" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""added the hyperdrive-install command, which downloads the""" start="00:01:08.560" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""gateway program and installs it on your machine. We added a""" start="00:01:12.400" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""peer graph feature, which lets you visualize your network""" start="00:01:16.400" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""of sources of information. We also published a new package,""" start="00:01:19.960" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""hyperdrive-org-transclusion, which lets you display live""" start="00:01:24.720" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""updating snippets of hyperdrive files in Org documents.""" start="00:01:29.080" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""Let's get started. Let's say you get an email from your""" start="00:01:34.600" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""friend Alice inviting you to check out hyperdrive.el.""" start="00:01:37.320" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""Let's click on the link here to look at the manual. Let's go""" start="00:01:41.080" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""down to the installation section. It says you need to have""" start="00:01:45.520" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""GNU Emacs version 28.1 or later. I'll assume you have it""" start="00:01:50.240" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""installed, but if not, you can click this link.""" start="00:01:54.640" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""You need to have curl installed,""" start="00:01:57.480" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""which is likely already the case, but if not,""" start="00:01:59.400" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""hyperdrive.el will let you know.""" start="00:02:01.920" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""Now from within Emacs you can install hyperdrive.el.""" start="00:02:04.720" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""Run M-x package-refresh-contents.""" start="00:02:10.880" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""Then, M-x package-install, type in hyperdrive,""" start="00:02:14.400" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""and hit return. Next, we'll install hyper-gateway-ushin.""" start="00:02:20.920" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""Let's run M-x hyperdrive-install. It's prompting me to""" start="00:02:26.080" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""download and install the gateway, which is 51 megabytes.""" start="00:02:33.000" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""I'll press y.""" start="00:02:35.881" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""I will skip most of the download process. The download is""" start="00:02:39.781" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""wrapping up.""" start="00:02:44.160" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""Now, it's prompting me to start the gateway. I can either run""" start="00:02:49.440" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""M-x hyperdrive-start, or I can press this button. And""" start="00:02:53.400" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""after a few moments, we'll see that the gateway will start.""" start="00:02:59.280" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""It's ready. You can also click this button, "View hyperdrive""" start="00:03:03.480" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""User Info Manual", to view the same manual that we were""" start="00:03:07.280" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""viewing in the browser. The info manual comes with""" start="00:03:10.240" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""hyperdrive.el and is available offline. Now that""" start="00:03:13.480" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""everything's installed and the gateway is running, we're""" start="00:03:17.320" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""back at Alice's email. Let's click on the link to her""" start="00:03:20.560" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""hyperdrive. Here's Alice's hyperdrive. Let's open her""" start="00:03:23.400" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""hello.org file.""" start="00:03:28.720" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""I'm being prompted to mark Alice's hyperdrive. Currently,""" start="00:03:33.080" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""it's unknown. I'll press ? to see more details.""" start="00:03:37.320" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text=""""safe", "unsafe", "unknown". I'll press e for "explain". In the info""" start="00:03:41.880" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""manual, it says that if a hyperdrive is marked as safe, that""" start="00:03:48.280" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""means files in that hyperdrive will automatically have""" start="00:03:54.140" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""their major mode enabled based on their file extension. In""" start="00:03:57.800" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""this case, if I mark Alice's hyperdrive as safe and I click on""" start="00:04:02.560" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""this hello.org file, Emacs will automatically enable Org""" start="00:04:06.720" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""mode in that file. Since I know Alice directly, I'll mark her""" start="00:04:10.520" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""hyperdrive as safe. I'll click on the file hello.org again,""" start="00:04:14.920" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""and now I'll press Shift-s for safe.""" start="00:04:19.640" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""Now I'm going to set Alice's petname. hyperdrive.el has""" start="00:04:25.680" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""different ways to name a hyperdrive. The public key is the""" start="00:04:30.640" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""drive's unique identifier. You can also assign yourself a""" start="00:04:34.680" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""public nickname, which you announce to the world. Then""" start="00:04:38.720" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""users on their own machines can assign each hyperdrive that""" start="00:04:42.360" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""they are aware of a private petname. I'll assign Alice a""" start="00:04:45.960" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""petname, which is the way that I will identify Alice just on""" start="00:04:50.440" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""my own machine. I'll type in "My Friend Alice".""" start="00:04:54.080" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""Then when I refresh her drive,""" start="00:05:01.907" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""we see that it says petname in the top left.""" start="00:05:03.708" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""Now I'll do what she asks,""" start="00:05:07.360" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""which is to right click on her name and""" start="00:05:09.393" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""open her peer graph. In the context menu, I see a few""" start="00:05:11.614" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""different actions I can take, but I'll click on "Peer Graph".""" start="00:05:15.260" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""It's prompting me to pick the max hops for sources. Default 3.""" start="00:05:19.160" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""I'll choose the default. Same for blockers. I'll explain""" start="00:05:22.960" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""what that means later.""" start="00:05:26.800" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""This is Alice's peer graph. Here we can see that Alice has two""" start="00:05:30.380" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""direct sources, Bob and Eve. Both Bob and Eve have assigned""" start="00:05:35.960" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""themselves nicknames, and so we see Bob and Eve here. Eve has""" start="00:05:41.280" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""assigned this other hyperdrive to be a source. But this""" start="00:05:45.920" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""other hyperdrive, whose public key is "kb3zr6mq"""" start="00:05:50.480" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""and so on--if we hover over the hyperdrive, we'll see the full""" start="00:05:55.960" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""public key--has not assigned itself a nickname. So we""" start="00:05:59.520" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""just see the truncated short public key. Because we've""" start="00:06:03.240" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""assigned a petname for Alice,""" start="00:06:08.000" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""we see Alice's petname show up here.""" start="00:06:10.918" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""Now I'll open the peer list view to show the same""" start="00:06:14.559" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""information in a different way. Since I'm using a large""" start="00:06:17.840" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""font, I'll widen this window so we can see everything going""" start="00:06:21.480" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""on in the peer list. We see that the root hyperdrive is""" start="00:06:25.200" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""petname "My Friend Alice", nickname "alice", public key "dm1",""" start="00:06:29.320" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""and so on. We've set the sources max hops to three, which means""" start="00:06:33.640" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""that we will go out at most three hops from Alice in order to""" start="00:06:38.360" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""find sources. One hop from Alice are Bob and Eve. One hop""" start="00:06:42.360" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""from Eve is "kb3", which is two hops from Alice. Now we've set""" start="00:06:49.840" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""the max hops for sources to three, but in this case, the""" start="00:06:55.840" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""network is small, and "kb3" has no sources. So we can only go""" start="00:06:59.160" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""out two hops from Alice until we run out of sources. In the""" start="00:07:04.280" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""future, we plan to add a search feature based on this list of""" start="00:07:07.960" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""sources. You type in a query, and you get back a list of""" start="00:07:11.160" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""results published by Eve, Bob, or "kb3". It's also possible to""" start="00:07:14.480" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""block peers. I'll open the transient menu by pressing""" start="00:07:19.880" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""question mark. For now, let's turn on showing blocked""" start="00:07:23.240" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""peers. I'll press "s x", and now it says blocked sources.""" start="00:07:28.760" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""Now we can see Mallory also shows up. Mallory has been""" start="00:07:35.440" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""included as a source by Eve, but is blocked. So in the end""" start="00:07:38.840" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""result, she does not show up in the list of sources. Instead,""" start="00:07:43.400" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""she shows up as a blocked source. But how is it that Mallory""" start="00:07:47.040" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""ended up being blocked? Let's open up the transient menu""" start="00:07:51.840" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""once more and click "s b" to show blockers. Now we can see that""" start="00:07:55.040" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""Bob has blocked Mallory. This means that Bob is not""" start="00:08:02.760" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""interested in seeing search results from Mallory. Since""" start="00:08:07.080" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""Alice has included Bob as a blocker, that means that Alice""" start="00:08:12.520" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""trusts Bob to block people on her behalf. So since Bob has""" start="00:08:17.640" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""blocked Mallory, Mallory does not show up in Alice's""" start="00:08:23.440" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""peergraph as a source. Well, now I'm curious to see what it is""" start="00:08:27.480" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""Mallory published that drove Bob to block her. I'll""" start="00:08:31.920" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""right-click on Mallory, and in the context menu, "Open Hyperdrive"""" start="00:08:35.920" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""and... Wingsuit Flying Grand Canyon Point of View Not Clickbait?""" start="00:08:39.440" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""I gotta check this out! [playing: Rick Astley's "Never Gonna Give You Up"]""" start="00:08:44.320" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""No! Disgusting! No wonder Bob blocked Mallory. Let's go""" start="00:08:49.880" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""back to Alice's peer graph. Mallory is a blocked source.""" start="00:08:56.160" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""Are there any peers who are blocked but who aren't sources?""" start="00:09:01.840" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""I'll open the transient menu and I'll press "s x". Now we're""" start="00:09:05.600" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""looking at blocked non-sources. Darth, who's been blocked""" start="00:09:11.740" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""by Bob, has not been added by any of Alice's sources as a""" start="00:09:16.840" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""source. So Darth is a blocked non-source. I'll open the""" start="00:09:20.760" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""transient menu again and I'll press "s x". Now we're""" start="00:09:25.560" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""looking at all blocked peers. Both Mallory and Darth show""" start="00:09:29.700" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""up. If I scroll down in the peer list, we'll see that Mallory""" start="00:09:34.640" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""is listed under blocked sources, and Darth is listed under""" start="00:09:37.960" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""blocked non-sources. This view has gotten a little bit busy.""" start="00:09:42.520" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""Let's say that we're only interested in how Alice""" start="00:09:45.560" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""relates to Mallory. I'll open the transient menu, and I""" start="00:09:49.320" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""will filter the graph to show paths only to Mallory. I'll""" start="00:09:54.520" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""press "o a", type in Mallory, and hit enter. Now we see that""" start="00:09:58.520" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""Mallory has a bold border and "kb3" and Darth are missing from""" start="00:10:05.520" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""the graph. Eve shows up because there's a path from Alice to""" start="00:10:11.480" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""Mallory that goes through Eve. Same for Bob. We can also add""" start="00:10:16.680" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""more than one peer in this view. I'll press "o a" again, and""" start="00:10:22.480" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""this time I'll choose Darth. Now Darth and Mallory have bold""" start="00:10:28.600" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""borders, and "kb3" is still missing. We can remove Mallory and""" start="00:10:34.720" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""Darth one at a time with "o r", or we can press C-u, the""" start="00:10:38.840" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""universal prefix argument, and then "o r" to remove both""" start="00:10:42.800" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""Mallory and Darth from the list. Now we're back to seeing""" start="00:10:47.680" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""everybody. This view of the graph is somewhat simplified""" start="00:10:51.240" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""because we're showing only""" start="00:10:55.680" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""the shortest paths between peers.""" start="00:10:57.538" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""If I press Shift-s now we're looking at all paths.""" start="00:11:00.239" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""Here, we can see that in addition to going from Alice to""" start="00:11:06.040" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""Bob as a source directly, we also go from Alice to Bob through""" start="00:11:10.040" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""Eve as a source. Let's go back to showing only the shortest""" start="00:11:15.520" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""paths. Currently, the max hops for sources and for blockers""" start="00:11:21.080" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""is set to 3. Let's see what happens if we set the""" start="00:11:27.720" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""blockers max hops to 0.""" start="00:11:31.680" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""After the graph reloads, we now see that Mallory""" start="00:11:35.800" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""shows up as a source, not as a blocked source.""" start="00:11:39.480" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""This is because Bob,""" start="00:11:43.287" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""who is one hop away from Alice, is no longer included as a""" start="00:11:44.760" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""blocker, because we've set the blockers max hops to 0. And""" start="00:11:49.200" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""since Bob is not a blocker, the fact that Bob blocks Mallory""" start="00:11:52.480" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""doesn't factor in. While Alice is the only one who gets to""" start="00:11:57.520" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""decide who her direct sources, blockers, and blocked peers""" start="00:12:01.720" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""are, anyone can view Alice's peer graph, tinker with the""" start="00:12:05.960" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""sources or blockers max hops, and use her list of sources to""" start="00:12:10.240" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""do a search. Let's see what happens if we set sources max""" start="00:12:14.440" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""hops to 2. Well, the graph doesn't change, because we only""" start="00:12:19.240" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""ever went out 2 hops anyway. Let's set source's max hops to 1.""" start="00:12:24.720" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""Now we only see Bob and Eve, since "kb3" and Mallory are""" start="00:12:30.140" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""2 hops out. Source hops 0. Now we're left with just Alice.""" start="00:12:35.160" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""Now I'd like to create a new hyperdrive and add Alice as a""" start="00:12:44.120" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""source. I'll run M-x hyperdrive-new.""" start="00:12:48.000" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""Now it's prompting me""" start="00:12:52.732" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""for a new hyperdrive seed. A seed is a string of characters""" start="00:12:53.813" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""that's combined with your secret key, which is generated""" start="00:12:57.480" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""for you by the gateway program, in order to create a new""" start="00:13:01.360" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""public key for each new hyperdrive. I'll type in "Joseph".""" start="00:13:04.720" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""A new drive. Now, I'll right-click on my own name, and in the""" start="00:13:10.680" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""context menu, I'll choose "Set Relation From". From Joseph...""" start="00:13:15.320" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""to Alice...as a source. Now, I'll right-click on my name again,""" start="00:13:21.600" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""and click on "Peer Graph". Sources max hops, let's say three""" start="00:13:32.280" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""and [three] for blockers as well,""" start="00:13:40.920" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""Here's the peer graph from my newly created""" start="00:13:45.440" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""hyperdrive's perspective. Mallory is included as a""" start="00:13:49.400" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""source, three hops from the root. Let's open the list view.""" start="00:13:54.200" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""If we were to mark Alice as a blocker by clicking on this""" start="00:14:01.220" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""button in the blocker column next to the petname for Alice,""" start="00:14:06.440" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""Then we see that Mallory shows up as a blocked source. Only""" start="00:14:12.120" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""now that Joseph includes Alice as a blocker does the fact""" start="00:14:16.960" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""that Bob blocked Mallory take effect. You can click on""" start="00:14:21.360" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""another peer to set them as the root hyperdrive. I'll click""" start="00:14:26.400" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""on Eve. Now we're looking at the peer graph from Eve's""" start="00:14:30.540" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""perspective. This peer graph view has a history. If I open""" start="00:14:35.000" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""the transient menu, you'll see here there's a back and a""" start="00:14:39.520" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""forward button. Back is bound to "l" for "left". If I press "l",""" start="00:14:42.360" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""we're looking at the graph from Joseph's perspective. If I""" start="00:14:48.440" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""press "l" again, now we're looking at Alice, as at the""" start="00:14:51.840" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""beginning. I'll press "r" to go forward, and "r" again, and now""" start="00:14:56.280" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""we're back at Eve. Now, I'd like to show you""" start="00:15:01.440" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""the hyperdrive-org-transclusion package we published.""" start="00:15:04.735" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""I'll open up the hyperdrive manual""" start="00:15:08.338" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""to see how to install it.""" start="00:15:10.359" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""Now, from here, I'll press "m" and type in transclusion to jump""" start="00:15:15.680" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""straight to the "Org-transclusion integration" section of""" start="00:15:21.000" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""the manual. To summarize, we can install""" start="00:15:23.600" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""hyperdrive-org-transclusion with""" start="00:15:27.080" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""M-x package-install RET hyperdrive-org-transclusion.""" start="00:15:32.220" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""Then, once this is done, we will copy the following snippet""" start="00:15:37.000" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""and add it either to our init.el file or, in this case, I'll""" start="00:15:43.780" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""just evaluate it. Now, hyperdrive-org-transclusion-mode is""" start="00:15:47.560" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""enabled.""" start="00:15:52.440" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""Let's go back to the hello.org file in Alice's hyperdrive.""" start="00:15:58.100" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""I'll right-click on Alice, then click "Open Hyperdrive", and""" start="00:16:01.480" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""hit RET on hello.org. This time, I'm not prompted to mark""" start="00:16:07.240" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""Alice's hyperdrive as safe, since we did it already. I'll""" start="00:16:11.360" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""navigate to the "Check out my peers" heading. Then I'll run""" start="00:16:16.200" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""M-x org-store-link. Now, I'll create a new file in my""" start="00:16:20.720" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""hyperdrive by running M-x hyperdrive-find-file. I'll""" start="00:16:28.360" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""select my hyperdrive and I'll call this new file""" start="00:16:32.960" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""response-to-alice.org.""" start="00:16:38.489" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""Now, I'll paste in a response that I've written.""" start="00:16:45.920" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""I'll go to the bottom and I will run M-x org-insert-link""" start="00:16:50.781" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""and I'll insert the link""" start="00:16:57.980" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""that I stored earlier. As a link""" start="00:16:59.424" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""description, I'll change it to""" start="00:17:02.800" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text=""""Snippet from Alice's hyperdrive file".""" start="00:17:08.880" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""I'll save my hyperdrive file.""" start="00:17:12.700" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""Now, to show that the link works, I'll just kill this buffer""" start="00:17:18.400" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""showing the hello.org file, and I'll click on the link.""" start="00:17:21.840" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""Now, in addition to linking from my file""" start="00:17:27.100" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""to the heading in Alice's file,""" start="00:17:29.488" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""I'd like to transclude this heading's content in my file.""" start="00:17:31.489" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""So I'll go to the link in my file and run""" start="00:17:35.700" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""M-x org-transclusion-make-from-link""" start="00:17:38.635" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""and I'll save my file again.""" start="00:17:45.401" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""All that's been added is another link,""" start="00:17:47.880" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""prefixed with this transclude keyword.""" start="00:17:50.505" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""To make the transclusion show up inline,""" start="00:17:54.434" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""I'll run M-x org-transclusion-add. The content""" start="00:17:57.035" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""of Alice's file hasn't been copied into mine. It's just""" start="00:18:02.360" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""being transcluded. If I run M-x org-transclusion-remove,""" start="00:18:05.360" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""you'll see that the underlying content is still""" start="00:18:12.960" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""just the transclude keyword and the link.""" start="00:18:15.440" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""Now some time has passed and Alice has updated her""" start="00:18:21.640" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""hyperdrive file. She wrote, "Please add me as a source." Since""" start="00:18:24.320" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""the transclude link that I added in my file does not specify a""" start="00:18:29.880" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""version, it will always transclude the latest version of""" start="00:18:33.560" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""Alice's hello.org file. If I run M-x org-transclusion-add""" start="00:18:36.880" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""once more, we'll see that the latest version of Alice's""" start="00:18:42.640" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""file gets transcluded into mine. Let's say that I want to""" start="00:18:46.720" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""transclude the previous version of Alice's hello.org""" start="00:18:51.680" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""file, and I don't want my transclusion to change when Alice""" start="00:18:54.960" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""updates her file. That's possible too. I'll go over to her""" start="00:18:58.880" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""file and run M-x hyperdrive-open-previous-version. Now""" start="00:19:02.920" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""when I widen the window a little, we can see in the mode line""" start="00:19:09.760" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""that this is version 57. For an explanation of what the""" start="00:19:14.080" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""version numbers mean, check out the last video or the info""" start="00:19:18.280" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""manual. For now, I'll go down to her "Check out my peers"""" start="00:19:21.600" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""heading and run M-x org-store-link. Now, in my response to""" start="00:19:25.760" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""Alice, I'll insert the link. I'll run org-transclusion-make-from-link.""" start="00:19:33.000" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""Now there are two transclusions. The first""" start="00:19:39.160" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""transclusion will update whenever Alice updates her file,""" start="00:19:44.760" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""and the second transclusion is pinned to version 57.""" start="00:19:47.720" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""That covers hyperdrive-install, the peer graph, and""" start="00:19:52.920" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""hyperdrive-org-transclusion.""" start="00:19:53.357" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""Feel free to check out the hyperdrive.el""" start="00:19:58.299" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""info manual in the ushin hyperdrive here, or on the""" start="00:20:00.520" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""ushin.org website. Thanks to the folks at Sopranica, we""" start="00:20:04.120" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""have a public XMPP group chat you can join, either using an""" start="00:20:08.440" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""XMPP client or anonymously from your browser. If you use""" start="00:20:11.880" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""Matrix, there's also a bridge. Thank you for watching, and""" start="00:20:15.920" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""Thank you to the EmacsConf organizers and all the""" start="00:20:19.800" video="mainVideo-hyperdrive" id="subtitle"]]
[[!template text="""presenters who made this wonderful event possible.""" start="00:20:22.520" video="mainVideo-hyperdrive" id="subtitle"]]
</div>
Captioner: sachac
Questions or comments? Please e-mail [contact@ushin.org](mailto:contact@ushin.org?subject=Comment%20for%20EmacsConf%202023%20hyperdrive%3A%20New%20in%20hyperdrive.el%3A%20quick%20install%2C%20peer%20graph%2C%20transclusion%21)
<!-- End of emacsconf-publish-after-page -->
|