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.