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.