summaryrefslogtreecommitdiffstats
path: root/2024/captions/emacsconf-2024-hyperdrive--new-in-hyperdriveel-quick-install-peer-graph-transclusion--joseph-turner--answers.vtt
blob: 7b377fed83f6d4adac30066664980501d44d4290 (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
WEBVTT captioned by sachac

NOTE New version of hyperdrive.el

00:00:00.000 --> 00:00:02.596
One thing I wanted to mention was that

00:00:02.597 --> 00:00:08.596
as with last year, I just released a new version of

00:00:08.597 --> 00:00:13.476
hyperdrive.el and it depends on the latest release of

00:00:13.477 --> 00:00:19.156
transient.el and so if you are going to install this

00:00:19.157 --> 00:00:25.156
package, make sure that you restart your Emacs after you

00:00:25.157 --> 00:00:29.796
install it, if you aren't already up to date with transient,

00:00:29.797 --> 00:00:35.316
which was released yesterday. Otherwise, since it, this

00:00:35.317 --> 00:00:40.876
latest version of transient.el updates the transient

00:00:40.877 --> 00:00:46.316
prefix EIEIO class, and it won't work unless you restart

00:00:46.317 --> 00:00:50.996
Emacs. Okay, well, good to know. I think that's a small price

00:00:50.997 --> 00:00:57.076
to pay to be on a bleedingest of bleeding edges. All right, I

00:00:57.077 --> 00:00:59.596
see there's a question here. Let me see if I can read it. Yeah,

00:00:59.597 --> 00:01:01.276
sure. Do you want me to field it to you or do you want to read it?

00:01:01.277 --> 00:01:04.104
Oh, sure. Go ahead. I'd love to hear you read it. Sure.

00:01:04.105 --> 00:01:06.686
Thank you. So first question. Hi there.

NOTE Q: Network effects are tricky - do you know of any public shares people can join to try this tool out properly?

00:01:06.687 --> 00:01:07.787
Thank you for the talk.

00:01:07.788 --> 00:01:10.756
I enjoyed watching it. I tried this tool last year and it

00:01:10.757 --> 00:01:13.156
seemed to work well, but I don't know anyone who actually

00:01:13.157 --> 00:01:16.516
uses it. Network effects are tricky. Do you know of any

00:01:16.517 --> 00:01:19.636
public shares people can join to try to try this tool out

00:01:19.637 --> 00:01:24.396
properly? Thank you. Network effects are indeed tricky.

00:01:24.397 --> 00:01:29.916
Yeah. That's kind of part of the purpose of the peer graph is

00:01:29.917 --> 00:01:34.596
to make it easier to discover peers in a way that's more, uh,

00:01:34.597 --> 00:01:37.956
more reliable and consistent than just somebody puts a

00:01:37.957 --> 00:01:42.076
public key on Reddit and then it's lost unless somebody

00:01:42.077 --> 00:01:50.156
finds it. Um, but the, the public keys that I know of are,

00:01:50.157 --> 00:01:53.076
there's the public key for the Ushin hyperdrive, which is

00:01:53.077 --> 00:01:56.236
basically just the same content that's on the website

00:01:56.237 --> 00:02:00.156
mirrored to a hyperdrive. Um, and then there are a few other

00:02:00.157 --> 00:02:07.316
ones. There's like, uh, hypha.coop has some WebZine

00:02:07.317 --> 00:02:13.796
content accessible via HyperDrive and also via IPFS. And

00:02:13.797 --> 00:02:19.916
then mauvesignweaver has a blog that's also available on

00:02:19.917 --> 00:02:23.196
Hyper. So that's blog.mauve.moe .

00:02:23.197 --> 00:02:28.276
But besides that, that's kind of the purpose of this

00:02:28.277 --> 00:02:31.756
peer graph thing is to make it easier to discover other

00:02:31.757 --> 00:02:36.596
peers. Yeah, to make it also very visual in a way, because,

00:02:36.597 --> 00:02:40.436
you know, I personally, it's funny because it reminded me of

00:02:40.437 --> 00:02:45.156
talks that I did in the past about the trust system for PGP

00:02:45.157 --> 00:02:47.596
keychains, because at the end of the day, you know, this

00:02:47.597 --> 00:02:50.596
trust system, whether you trust someone absolutely or

00:02:50.597 --> 00:02:53.876
relatively, the blocking system, it feels very related.

00:02:53.877 --> 00:02:57.356
Any kind of a chain of trust like this, feels very

00:02:57.357 --> 00:03:00.436
reminiscent, obviously, but it felt very nice that for you,

00:03:00.437 --> 00:03:04.676
you had a dynamic display of this web of trust. Whereas for

00:03:04.677 --> 00:03:08.836
me, I had to make fancy diagram in ticks, in latex, just to

00:03:08.837 --> 00:03:14.956
make sure that people understood what was actually going

00:03:14.957 --> 00:03:21.596
on. Yeah, one thing I want to point out is just the difference

00:03:21.597 --> 00:03:25.556
in utility for something like the PGP web of trust versus

00:03:25.557 --> 00:03:29.956
this kind of network of peers is, if I understand right, the

00:03:29.957 --> 00:03:34.716
main purpose of web of trust is to identify that a certain

00:03:34.717 --> 00:03:42.516
public key is actually created by the person that they claim

00:03:42.517 --> 00:03:46.036
to be. So you have a way of identifying that a key actually

00:03:46.037 --> 00:03:49.996
matches like a government identity. Whereas this kind of

00:03:49.997 --> 00:03:53.356
network of peers has nothing to do with authenticating a key

00:03:53.357 --> 00:03:57.636
or associating a key with an identity, like a government

00:03:57.637 --> 00:04:03.396
identity. The purpose is exclusively just to get more peers

00:04:03.397 --> 00:04:07.276
to be able to discover more peers who have things that are

00:04:07.277 --> 00:04:07.676
worth reading.

00:04:07.677 --> 00:04:14.356
Yeah, it's a different take on a concept, but even though the

00:04:14.357 --> 00:04:18.836
concept might be the same, I find there's a wealth of things

00:04:18.837 --> 00:04:21.716
that can be done thanks to this, because as you said, you

00:04:21.717 --> 00:04:25.396
trust someone to send you a file that is trustworthy. Well,

00:04:25.397 --> 00:04:28.236
with PGP, it's mostly about communication, but about file

00:04:28.237 --> 00:04:33.356
sharing, it just opens up completely new avenues. Yeah. Do

00:04:33.357 --> 00:04:40.516
you have anything else to add? And about that, I think one of

00:04:40.517 --> 00:04:45.476
the barriers to the PGP web of trust is that it required

00:04:45.477 --> 00:04:48.916
getting together to have key parties to meet people and

00:04:48.917 --> 00:04:51.596
verify identities. Whereas with this kind of thing,

00:04:51.597 --> 00:04:54.076
there's no need to do that because so long as your content is

00:04:54.077 --> 00:04:57.876
interesting, it doesn't matter that you're not who you

00:04:57.877 --> 00:05:01.076
claim to be or that you don't even claim to be anybody. Yeah, I

00:05:01.077 --> 00:05:04.556
mean, again, as you mentioned, it's not about identifying

00:05:04.557 --> 00:05:08.196
people, it's just about identifying value, in a way, in the

00:05:08.197 --> 00:05:10.636
content that people share. It has nothing to do with

00:05:10.637 --> 00:05:13.916
verifying their actual identity. But again, it's the same

00:05:13.917 --> 00:05:16.596
technology, it's the same understanding, but for

00:05:16.597 --> 00:05:18.556
different applications, which is lovely because

00:05:18.557 --> 00:05:22.116
programming is fractals all over. The same problems repeat

00:05:22.117 --> 00:05:24.836
themselves and the same solutions show up for widely

00:05:24.837 --> 00:05:26.996
different scenarios, which is always good. Yeah. Anything

00:05:26.997 --> 00:05:32.676
else? One more thing. Yeah. One more thing is that I wanted to

00:05:32.677 --> 00:05:36.956
give some kudos to, um, some of the other projects that

00:05:36.957 --> 00:05:42.796
inspired the pure graph work. One of them is Adam Porter's or

00:05:42.797 --> 00:05:50.076
graph view, um, which is a, um, a tool for visualizing

00:05:50.077 --> 00:05:55.276
different nodes in an org file and how they link to one

00:05:55.277 --> 00:06:01.876
another. Um, he did. the pioneering work to figure out how to

00:06:01.877 --> 00:06:07.316
render interactive graphs with GraphViz. And so we worked

00:06:07.317 --> 00:06:12.476
together on it and kind of hacked down the last parts that

00:06:12.477 --> 00:06:16.796
weren't working correctly. And so this is inspired a lot.

00:06:16.797 --> 00:06:19.316
The user interface is inspired a lot by Adam's work. And then

00:06:19.317 --> 00:06:26.156
also the idea of having people that you mark as blockers and

00:06:26.157 --> 00:06:31.076
block is inspired by another project called TrustNet by

00:06:31.077 --> 00:06:37.196
Alex Cobleigh. I can type in the link there. Alex, how do you

00:06:37.197 --> 00:06:43.516
spell it? Cobleigh? Yeah, I'll type it in here. Thank you. And I

00:06:43.517 --> 00:06:50.596
think the link is https://cblgh.org/trustnet. I think that is it.

00:06:50.597 --> 00:06:57.836
I'm not totally sure. But yeah. Okay, well, that's very good.

00:06:57.837 --> 00:07:01.396
and thank you for giving credits to the inspiration, because

00:07:01.397 --> 00:07:05.556
again, nothing is done without context, and it's always nice

00:07:05.557 --> 00:07:08.516
in the free software world to acknowledge people who have

00:07:08.517 --> 00:07:11.676
influenced us, because it's very nice when people start

00:07:11.677 --> 00:07:14.556
contributing, maintaining software, publishing stuff

00:07:14.557 --> 00:07:17.916
that they actually start collaborating with people who've

00:07:17.917 --> 00:07:21.916
inspired them, which is a nice way to climb over the shoulders

00:07:21.917 --> 00:07:25.636
of giants, which this community likes so much. All right,

00:07:25.637 --> 00:07:28.676
moving on to the next question. We are, we have about seven

00:07:28.677 --> 00:07:31.063
more minutes for questions, so we're still good.

NOTE Q: blocklist or whitelist so I can make them containing useful information for only me while also being useful with in a public sense

00:07:31.064 --> 00:07:33.956
Second question, one use case for this sharing and building upon

00:07:33.957 --> 00:07:37.996
second brain, sorry, one use case for this is sharing and

00:07:37.997 --> 00:07:41.436
building upon second brains, i.e. Zettelkasten, that's

00:07:41.437 --> 00:07:44.396
denote or what I'm actually doing, but a blocker for me

00:07:44.397 --> 00:07:46.916
wanting to make one public is wanting to use a block list or

00:07:46.917 --> 00:07:51.556
whitelist so that I can make them... Cautioning?

00:07:51.557 --> 00:07:56.156
Quarantining? Containing. Yes, definitely containing.

00:07:56.157 --> 00:07:59.756
Why did I go for quarantine rather than containing? I guess

00:07:59.757 --> 00:08:04.636
my brain went to a dark place from the 2020s. So I can make

00:08:04.637 --> 00:08:08.996
containing useful information for only me while also being

00:08:08.997 --> 00:08:16.156
useful in a public sense. Yes, I think your question is about

00:08:16.157 --> 00:08:22.276
how to keep some of the content of your Zettelkasten private

00:08:22.277 --> 00:08:29.956
and only have certain parts of it be public. If your desire is

00:08:29.957 --> 00:08:35.796
to only share certain files in your Zettelkasten, then you

00:08:35.797 --> 00:08:43.596
can use the hyperdrive mirror command that we demonstrated

00:08:43.597 --> 00:08:48.596
in the Emacs 2023 talk. In short,

00:08:48.597 --> 00:08:53.916
It lets you specify either a regular expression that

00:08:53.917 --> 00:08:58.036
matches only some of the files that'll get uploaded from a

00:08:58.037 --> 00:09:02.236
directory of files on your machine. And only the files that

00:09:02.237 --> 00:09:05.716
match that regex will be put into the hyperdrive and shared

00:09:05.717 --> 00:09:08.796
with the world. But it doesn't have to be a regex. It could be a

00:09:08.797 --> 00:09:13.276
lambda. So it could match based on file size or modification

00:09:13.277 --> 00:09:18.996
time or really whatever you like. So I hope that answers your

00:09:18.997 --> 00:09:23.956
question. Great. And I personally, as someone who loves

00:09:23.957 --> 00:09:27.876
tinkering with my Elisp, I particularly like the ability to

00:09:27.877 --> 00:09:31.156
specify things with a lambda because it just opens up the

00:09:31.157 --> 00:09:34.356
ceiling of the possibilities with interactions between

00:09:34.357 --> 00:09:37.316
different parts of software. And, you know, as I have worked

00:09:37.317 --> 00:09:39.956
significantly in Org Roam, I could definitely see

00:09:39.957 --> 00:09:44.116
interactions with lambdas here to make sure that we can send

00:09:44.117 --> 00:09:47.156
and share files based on the filter list that is

00:09:47.157 --> 00:09:51.036
incrementally added to thanks to those lambdas. So thanks

00:09:51.037 --> 00:09:55.116
for this. One more thing I want to add about that is that the,

00:09:55.117 --> 00:10:00.116
that same question of being able to upload only certain

00:10:00.117 --> 00:10:04.316
files while leaving others to be private was something

00:10:04.317 --> 00:10:07.556
that was inspired by Karl Voit. I had an email thread with

00:10:07.557 --> 00:10:16.036
him in which he talked about how he uses his file tags project

00:10:16.037 --> 00:10:21.676
to organize his files. And he'll put a public tag on the files

00:10:21.677 --> 00:10:26.476
in his org database that he wants to have be published to his

00:10:26.477 --> 00:10:29.916
website. And so you could very easily just set a regular

00:10:29.917 --> 00:10:33.636
expression matches that public tag and then all of the other

00:10:33.637 --> 00:10:39.676
files would be not shared. Yeah, and, oh, sorry, I was, I

00:10:39.677 --> 00:10:42.716
misclicked, I was talking to production for a second. First

00:10:42.717 --> 00:10:45.636
time it happens today, so I think this is a testament to the

00:10:45.637 --> 00:10:47.996
level of tightness. But yeah, as you were saying, whatever

00:10:47.997 --> 00:10:51.396
heuristics you want is actually a good thing. I think people

00:10:51.397 --> 00:10:54.636
are a little antsy because they tend to brain dump into their

00:10:54.637 --> 00:10:59.836
Org Roam, Zettelkasten, Denote, and they

00:10:59.837 --> 00:11:02.516
really don't want some of their personal notes being out

00:11:02.517 --> 00:11:05.596
there. And well, if you are worried about this, I think

00:11:05.597 --> 00:11:09.356
learning some Elisp and implementing some Lambda function

00:11:09.357 --> 00:11:13.116
that allows you to filter with intention might be the best

00:11:13.117 --> 00:11:17.636
solution for you. So I hope we've covered the question as

00:11:17.637 --> 00:11:21.436
well as we could have. Next question is more about an idea

00:11:21.437 --> 00:11:24.996
about trying hyperdrive to distribute the Worg. Does that

00:11:24.997 --> 00:11:28.596
make sense to you? Yeah, I mean, you could distribute

00:11:28.597 --> 00:11:32.636
whatever you wanted. I think that'd be a great idea. Okay,

00:11:32.637 --> 00:11:36.116
great. Moving to the next question, and we have about three

00:11:36.117 --> 00:11:38.316
minutes, so I think we'll cover the last two questions and

00:11:38.317 --> 00:11:41.023
we'll move on to the next talk after that.

NOTE Q: Could you comment on the "visualization" thing, (org visualization), and your experience with this type of content in buffers and the various possibilities (svg, etc.)?

00:11:41.024 --> 00:11:43.164
Could you comment on the visualization thing,

00:11:43.165 --> 00:11:44.716
Org visualization, and your

00:11:44.717 --> 00:11:47.236
experience with this type of content in buffers and the

00:11:47.237 --> 00:11:52.916
various possibilities, SVG, et cetera?

00:11:52.917 --> 00:11:59.916
Sure. So one thing that we worked on was I added a patch that

00:11:59.917 --> 00:12:05.156
was merged as part of Emacs 30, which fixes the way that image

00:12:05.157 --> 00:12:14.196
maps scale when images are scaled. So as an Emacs 30, if you

00:12:14.197 --> 00:12:19.276
zoom in on an image or shrink an image or rotate an image, now

00:12:19.277 --> 00:12:24.276
the image map, which is the overlay, so it's not actually an

00:12:24.277 --> 00:12:26.716
overlay, but it's, so to speak, it's an overlay that allows

00:12:26.717 --> 00:12:30.116
the images to be clickable based on, you know, where the

00:12:30.117 --> 00:12:32.756
actual visual display is. You can also click on it or hit help

00:12:32.757 --> 00:12:37.356
echo. And as of Emacs 30, now that scales with the image

00:12:37.357 --> 00:12:37.796
itself.

00:12:37.797 --> 00:12:45.236
The code to make that work on previous versions of Emacs, you

00:12:45.237 --> 00:12:51.756
can see the advice that we added in hyperdrive-sbb-view, that

00:12:51.757 --> 00:12:55.956
file in hyperdrive.el, if you're curious to see how you

00:12:55.957 --> 00:13:01.196
could polyfill that code, so to speak, to make it work on

00:13:01.197 --> 00:13:06.076
previous versions of Emacs before Emacs 30. But it works

00:13:06.077 --> 00:13:11.076
great. The way that this works is we generate a GraphViz

00:13:11.077 --> 00:13:16.716
string that will be sent to GraphViz to render an SVG and also

00:13:16.717 --> 00:13:23.676
render a CMAPX string. We pipe those back into Emacs and then

00:13:23.677 --> 00:13:27.596
we generate the image map from the CMAPX file and then we put

00:13:27.597 --> 00:13:32.596
that image map with the SVG, and we render it in a buffer.

00:13:32.597 --> 00:13:37.076
Works pretty well. You can check out the code to see exactly

00:13:37.077 --> 00:13:41.876
how it works. OK, great. Well, sadly, I think we are a little

00:13:41.877 --> 00:13:44.996
short on time to cover the last two questions. So Joseph, if

00:13:44.997 --> 00:13:47.236
you want to take a little bit of time maybe to answer the

00:13:47.237 --> 00:13:51.196
questions in the BBB, you can just do this, even though the

00:13:51.197 --> 00:13:54.476
stream will be moving to the next talk. But I'll use the

00:13:54.477 --> 00:13:57.716
opportunity to thank you both for the talk and for your

00:13:57.717 --> 00:14:00.316
answers, because they were very insightful. And thank you

00:14:00.317 --> 00:14:03.636
so much for taking the time to be with us today. Thank you,

00:14:03.637 --> 00:14:05.876
Leo. Enjoy the rest of the conference. Any last words in

00:14:05.877 --> 00:14:10.356
about 15 seconds? Thank you. I'm grateful for your taking

00:14:10.357 --> 00:14:14.076
all this time to make this conference possible. Well, you

00:14:14.077 --> 00:14:16.916
know, the conference would be nothing without the speakers

00:14:16.917 --> 00:14:19.676
coming and chatting, so you are the ones to thank. I mean, we

00:14:19.677 --> 00:14:21.796
like the thanking, obviously, but it's mostly you doing the

00:14:21.797 --> 00:14:26.156
work. All right. Thank you, Joseph. We'll see you later.

00:14:26.157 --> 00:14:26.796
Bye-bye.