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.
|