WEBVTT captioned by sachac 00:00:00.000 --> 00:00:03.919 Hello, welcome to this talk on hyperdrive.el. I'm Joseph 00:00:03.920 --> 00:00:07.439 Turner presenting on behalf of Ushin, a tiny independent 00:00:07.440 --> 00:00:12.039 information freedom nonprofit. Hyperdrive.el is an Emacs 00:00:12.040 --> 00:00:14.959 interface to the Hyperdrive peer-to-peer file sharing 00:00:14.960 --> 00:00:18.399 system built by HolePunch. Like other peer-to-peer file 00:00:18.400 --> 00:00:22.119 sharing tools, such as BitTorrent, Hyperdrive lets you 00:00:22.120 --> 00:00:25.959 share unlimited files directly with other users without 00:00:25.960 --> 00:00:29.519 having to go through a central hub. One thing that sets 00:00:29.520 --> 00:00:32.519 HyperDrive apart is that the files you share can be 00:00:32.520 --> 00:00:35.759 modified. Since Hyperdrive has built-in versioning, 00:00:35.760 --> 00:00:38.519 you can explore the history of changes that you make to your 00:00:38.520 --> 00:00:42.199 files or others make to theirs. You can stream video and 00:00:42.200 --> 00:00:45.639 audio. There's no sign-up or account creation process 00:00:45.640 --> 00:00:49.319 required. It's all free software. This means that the 00:00:49.320 --> 00:00:52.319 community has the legal right, the tools, and the 00:00:52.320 --> 00:00:55.359 information necessary to participate in the development 00:00:55.360 --> 00:00:58.337 process, or even fork the project 00:00:58.338 --> 00:01:00.799 and go somewhere on[??]. Since 00:01:00.800 --> 00:01:04.919 last year's talk, we've added a few new features. It's now 00:01:04.920 --> 00:01:08.559 much easier to get started using hyperdrive.el, since we 00:01:08.560 --> 00:01:12.399 added the hyperdrive install command, which downloads the 00:01:12.400 --> 00:01:16.399 gateway program and installs it on your machine. We added a 00:01:16.400 --> 00:01:19.959 peer graph feature, which lets you visualize your network 00:01:19.960 --> 00:01:24.719 of sources of information. We also published a new package, 00:01:24.720 --> 00:01:29.079 hyperdrive-org-transclusion, which lets you display live 00:01:29.080 --> 00:01:34.599 updating snippets of Hyperdrive files in Org documents. 00:01:34.600 --> 00:01:37.319 Let's get started. Let's say you get an email from your 00:01:37.320 --> 00:01:41.079 friend Alice inviting you to check out hyperdrive.el. 00:01:41.080 --> 00:01:45.519 Let's click on the link here to look at the manual. Let's go 00:01:45.520 --> 00:01:50.239 down to the installation section. It says you need to have 00:01:50.240 --> 00:01:54.639 GNU Emacs version 28.1 or later. I'll assume you have it 00:01:54.640 --> 00:01:57.479 installed, but if not, you can click this link. 00:01:57.480 --> 00:01:59.399 You need to have curl installed, 00:01:59.400 --> 00:02:01.919 which is likely already the case, but if not, 00:02:01.920 --> 00:02:04.719 hyperdrive.el will let you know. 00:02:04.720 --> 00:02:10.879 Now from within Emacs you can install hyperdrive.el. 00:02:10.880 --> 00:02:14.399 Run M-x package-refresh-contents. 00:02:14.400 --> 00:02:20.919 Then, M-x package-install, type in hyperdrive, 00:02:20.920 --> 00:02:26.079 and hit return. Next, we'll install hypergateway ushin. 00:02:26.080 --> 00:02:32.999 Let's run M-x hyperdrive-install. It's prompting me to 00:02:33.000 --> 00:02:35.880 download and install the gateway, which is 51 megabytes. 00:02:35.881 --> 00:02:39.780 I'll press y. 00:02:39.781 --> 00:02:44.159 I will skip most of the download process. The download is 00:02:44.160 --> 00:02:49.439 wrapping up. 00:02:49.440 --> 00:02:53.399 Now, it's prompting me to start the gateway. I can either run 00:02:53.400 --> 00:02:59.279 M-x hyperdrive start, or I can press this button. And 00:02:59.280 --> 00:03:03.479 after a few moments, we'll see that the gateway will start. 00:03:03.480 --> 00:03:07.279 It's ready. You can also click this button, View Hyperdrive 00:03:07.280 --> 00:03:10.239 User Info Manual, to view the same manual that we were 00:03:10.240 --> 00:03:13.479 viewing in the browser. The info manual comes with 00:03:13.480 --> 00:03:17.319 hyperdrive.el and is available offline. Now that 00:03:17.320 --> 00:03:20.559 everything's installed and the gateway is running, we're 00:03:20.560 --> 00:03:23.399 back at Alice's email. Let's click on the link to her 00:03:23.400 --> 00:03:28.719 hyperdrive. Here's Alice's hyperdrive. Let's open her 00:03:28.720 --> 00:03:33.079 hello.org file. 00:03:33.080 --> 00:03:37.319 I'm being prompted to mark Alice's hyperdrive. Currently, 00:03:37.320 --> 00:03:41.879 it's unknown. I'll press ? to see more details. 00:03:41.880 --> 00:03:48.279 Safe, unsafe, unknown. I'll press e for explain. In the info 00:03:48.280 --> 00:03:54.139 manual, it says that if a hyperdrive is marked as safe, that 00:03:54.140 --> 00:03:57.799 means files in that hyperdrive will automatically have 00:03:57.800 --> 00:04:02.559 their major mode enabled based on their file extension. In 00:04:02.560 --> 00:04:06.719 this case, if I mark Alice's hyperdrive as safe and I click on 00:04:06.720 --> 00:04:10.519 this hello.org file, Emacs will automatically enable org 00:04:10.520 --> 00:04:14.919 mode in that file. Since I know Alice directly, I'll mark her 00:04:14.920 --> 00:04:19.639 hyperdrive as safe. I'll click on the file hello.org again, 00:04:19.640 --> 00:04:25.679 and now I'll press Shift-s for safe. 00:04:25.680 --> 00:04:30.639 Now I'm going to set Alice's pet name. Hyperdrive.el has 00:04:30.640 --> 00:04:34.679 different ways to name a hyperdrive. The public key is the 00:04:34.680 --> 00:04:38.719 drive's unique identifier. You can also assign yourself a 00:04:38.720 --> 00:04:42.359 public nickname, which you announce to the world. Then 00:04:42.360 --> 00:04:45.959 users on their own machines can assign each hyperdrive that 00:04:45.960 --> 00:04:50.439 they are aware of a private pet name. I'll assign Alice a 00:04:50.440 --> 00:04:54.079 pet name, which is the way that I will identify Alice just on 00:04:54.080 --> 00:05:01.906 my own machine. I'll type in my friend Alice. 00:05:01.907 --> 00:05:03.707 Then when I refresh her drive, 00:05:03.708 --> 00:05:07.359 we see that it says pet name in the top left. 00:05:07.360 --> 00:05:09.392 Now I'll do what she asks, 00:05:09.393 --> 00:05:11.613 which is to right click on her name and 00:05:11.614 --> 00:05:15.259 open her peer graph. In the context menu, I see a few 00:05:15.260 --> 00:05:19.159 different actions I can take, but I'll click on peer graph. 00:05:19.160 --> 00:05:22.959 It's prompting me to pick the max hops for sources. Default 00:05:22.960 --> 00:05:26.799 3. I'll choose the default. Same for blockers. I'll explain 00:05:26.800 --> 00:05:27.599 what that means later. 00:05:30.380 --> 00:05:35.959 This is Alice's peer graph. Here we can see that Alice has two 00:05:35.960 --> 00:05:41.279 direct sources, Bob and Eve. Both Bob and Eve have assigned 00:05:41.280 --> 00:05:45.919 themselves nicknames, and so we see Bob and Eve here. Eve has 00:05:45.920 --> 00:05:50.479 assigned this other hyperdrive to be a source. But this 00:05:50.480 --> 00:05:55.959 other hyperdrive, whose public key is KB3ZR6MQ 00:05:55.960 --> 00:05:59.519 and so on--if we hover over the hyperdrive, we'll see the full 00:05:59.520 --> 00:06:03.239 public key--has not assigned itself a nickname. So we 00:06:03.240 --> 00:06:07.999 just see the truncated short public key. Because we've 00:06:08.000 --> 00:06:10.917 assigned a pet name for Alice, 00:06:10.918 --> 00:06:14.558 we see Alice's pet name show up here. 00:06:14.559 --> 00:06:17.839 Now I'll open the peer list view to show the same 00:06:17.840 --> 00:06:21.479 information in a different way. Since I'm using a large 00:06:21.480 --> 00:06:25.199 font, I'll widen this window so we can see everything going 00:06:25.200 --> 00:06:29.319 on in the peer list. We see that the root hyperdrive is pet 00:06:29.320 --> 00:06:33.639 name, my friend Alice, nickname Alice, public key, DM1, and 00:06:33.640 --> 00:06:38.359 so on. We've set the sources max hops to three, which means 00:06:38.360 --> 00:06:42.359 that we will go out at most three hops from Alice in order to 00:06:42.360 --> 00:06:49.839 find sources. One hop from Alice are Bob and Eve. One hop 00:06:49.840 --> 00:06:55.839 from Eve is KB3, which is two hops from Alice. Now we've set 00:06:55.840 --> 00:06:59.159 the max hops for sources to three, but in this case, the 00:06:59.160 --> 00:07:04.279 network is small, and KB3 has no sources. So we can only go 00:07:04.280 --> 00:07:07.959 out two hops from Alice until we run out of sources. In the 00:07:07.960 --> 00:07:11.159 future, we plan to add a search feature based on this list of 00:07:11.160 --> 00:07:14.479 sources. You type in a query, and you get back a list of 00:07:14.480 --> 00:07:19.879 results published by Eve, Bob, or KB3. It's also possible to 00:07:19.880 --> 00:07:23.239 block peers. I'll open the transient menu by pressing 00:07:23.240 --> 00:07:28.759 question mark. For now, let's turn on showing blocked 00:07:28.760 --> 00:07:35.439 peers. I'll press s x, and now it says blocked sources. 00:07:35.440 --> 00:07:38.839 Now we can see Mallory also shows up. Mallory has been 00:07:38.840 --> 00:07:43.399 included as a source by Eve, but is blocked. So in the end 00:07:43.400 --> 00:07:47.039 result, she does not show up in the list of sources. Instead, 00:07:47.040 --> 00:07:51.839 she shows up as a blocked source. But how is it that Mallory 00:07:51.840 --> 00:07:55.039 ended up being blocked? Let's open up the transient menu 00:07:55.040 --> 00:08:02.759 once more and click S, B to show blockers. Now we can see that 00:08:02.760 --> 00:08:07.079 Bob has blocked Mallory. This means that Bob is not 00:08:07.080 --> 00:08:12.519 interested in seeing search results from Mallory. Since 00:08:12.520 --> 00:08:17.639 Alice has included Bob as a blocker, that means that Alice 00:08:17.640 --> 00:08:23.439 trusts Bob to block people on her behalf. So since Bob has 00:08:23.440 --> 00:08:27.479 blocked Mallory, Mallory does not show up in Alice's 00:08:27.480 --> 00:08:31.919 peergraph as a source. Well, now I'm curious to see what it is 00:08:31.920 --> 00:08:35.919 Mallory published that drove Bob to block her. I'll 00:08:35.920 --> 00:08:39.439 right-click on Mallory, and in the context menu, open 00:08:39.440 --> 00:08:44.319 Hyperdrive, and... Wingsuit Flying Grand Canyon Point of 00:08:44.320 --> 00:08:49.879 View Not Clickbait? I gotta check this out. 00:08:49.880 --> 00:08:56.159 No! Disgusting! No wonder Bob blocked Mallory. Let's go 00:08:56.160 --> 00:09:01.839 back to Alice's paragraph. Mallory is a blocked source. 00:09:01.840 --> 00:09:05.599 Are there any peers who are blocked but who aren't sources? 00:09:05.600 --> 00:09:11.739 I'll open the transient menu and I'll press s x. Now we're 00:09:11.740 --> 00:09:16.839 looking at blocked non-sources. Darth, who's been blocked 00:09:16.840 --> 00:09:20.759 by Bob, has not been added by any of Alice's sources as a 00:09:20.760 --> 00:09:25.559 source. So Darth is a blocked non-source. I'll open the 00:09:25.560 --> 00:09:29.699 transient menu again and I'll press s x. Now we're 00:09:29.700 --> 00:09:34.639 looking at all blocked peers. Both Mallory and Darth show 00:09:34.640 --> 00:09:37.959 up. If I scroll down in the peer list, we'll see that Mallory 00:09:37.960 --> 00:09:42.519 is listed under blocked sources, and Darth is listed under 00:09:42.520 --> 00:09:45.559 blocked non-sources. This view has gotten a little bit 00:09:45.560 --> 00:09:49.319 busy. Let's say that we're only interested in how Alice 00:09:49.320 --> 00:09:54.519 relates to Mallory. I'll open the transient menu, and I 00:09:54.520 --> 00:09:58.519 will filter the graph to show paths only to Mallory. I'll 00:09:58.520 --> 00:10:05.519 press o a, type in Mallory, and hit enter. Now we see that 00:10:05.520 --> 00:10:11.479 Mallory has a bold border and KB3 and Darth are missing from 00:10:11.480 --> 00:10:16.679 the graph. Eve shows up because there's a path from Alice to 00:10:16.680 --> 00:10:22.479 Mallory that goes through Eve. Same for Bob. We can also add 00:10:22.480 --> 00:10:28.599 more than one peer in this view. I'll press OA again, and 00:10:28.600 --> 00:10:34.719 this time I'll choose Darth. Now Darth and Mallory have bold 00:10:34.720 --> 00:10:38.839 borders, and KB3 is still missing. We can remove Mallory and 00:10:38.840 --> 00:10:42.799 Darth one at a time with o r, or we can press C-u, the 00:10:42.800 --> 00:10:47.679 universal prefix argument, and then o r to remove both 00:10:47.680 --> 00:10:51.239 Mallory and Darth from the list. Now we're back to seeing 00:10:51.240 --> 00:10:55.679 everybody. This view of the graph is somewhat simplified 00:10:55.680 --> 00:10:57.537 because we're showing only 00:10:57.538 --> 00:11:00.238 the shortest paths between peers. 00:11:00.239 --> 00:11:06.039 If I press Shift-s now we're looking at all paths. 00:11:06.040 --> 00:11:10.039 Here, we can see that in addition to going from Alice to 00:11:10.040 --> 00:11:15.519 Bob as a source directly, we also go from Alice to Bob through 00:11:15.520 --> 00:11:21.079 Eve as a source. Let's go back to showing only the shortest 00:11:21.080 --> 00:11:27.719 paths. Currently, the max hops for sources and for blockers 00:11:27.720 --> 00:11:31.679 is set to 3. Let's see what happens if we set the blockers max 00:11:31.680 --> 00:11:33.519 hops to 0. 00:11:35.800 --> 00:11:39.479 After the graph reloads, we now see that Mallory 00:11:39.480 --> 00:11:43.286 shows up as a source, not as a blocked source. 00:11:43.287 --> 00:11:44.759 This is because Bob, 00:11:44.760 --> 00:11:49.199 who is one hop away from Alice, is no longer included as a 00:11:49.200 --> 00:11:52.479 blocker, because we've set the blockers max hops to 0. And 00:11:52.480 --> 00:11:57.519 since Bob is not a blocker, the fact that Bob blocks Mallory 00:11:57.520 --> 00:12:01.719 doesn't factor in. While Alice is the only one who gets to 00:12:01.720 --> 00:12:05.959 decide who her direct sources, blockers, and blocked peers 00:12:05.960 --> 00:12:10.239 are, anyone can view Alice's peer graph, tinker with the 00:12:10.240 --> 00:12:14.439 sources or blockers' max hops, and use her list of sources to 00:12:14.440 --> 00:12:19.239 do a search. Let's see what happens if we set sources' max 00:12:19.240 --> 00:12:24.719 hops to 2. Well, the graph doesn't change, because we only 00:12:24.720 --> 00:12:29.239 ever went out 2 hops anyway. Let's set source's max hops to 1. 00:12:30.140 --> 00:12:35.159 Now we only see Bob and Eve, since KB3 and Mallory are 00:12:35.160 --> 00:12:43.079 2 hops out. Source hops 0. Now we're left with just Alice. 00:12:44.120 --> 00:12:47.999 Now I'd like to create a new hyperdrive and add Alice as a 00:12:48.000 --> 00:12:52.731 source. I'll run M-x hyperdrive new. 00:12:52.732 --> 00:12:53.812 Now it's prompting me 00:12:53.813 --> 00:12:57.479 for a new hyperdrive seed. Seed is a string of characters 00:12:57.480 --> 00:13:01.359 that's combined with your secret key, which is generated 00:13:01.360 --> 00:13:04.719 for you by the gateway program, in order to create a new 00:13:04.720 --> 00:13:10.679 public key for this new hyperdrive. I'll type in Joseph, a 00:13:10.680 --> 00:13:15.319 new drive. Now, I'll right-click on my own name, and in the 00:13:15.320 --> 00:13:21.599 context menu, I'll choose Set Relation From. From Joseph 00:13:21.600 --> 00:13:32.279 to Alice, as a source. Now, I'll right-click on my name again, 00:13:32.280 --> 00:13:40.919 and click on Peer Graph. Max hops, let's say three, and for 00:13:40.920 --> 00:13:41.879 blockers as well, 00:13:45.440 --> 00:13:49.399 Here's the peer graph from my newly created 00:13:49.400 --> 00:13:54.199 hyperdrive's perspective. Mallory is included as a 00:13:54.200 --> 00:13:58.519 source, three hops from the root. Let's open the list view. 00:14:01.220 --> 00:14:06.439 If we were to mark Alice as a blocker by clicking on this 00:14:06.440 --> 00:14:10.319 button in the blocker column next to the pet name for Alice, 00:14:12.120 --> 00:14:16.959 Then we see that Mallory shows up as a blocked source. Only 00:14:16.960 --> 00:14:21.359 now that Joseph includes Alice as a blocker does the fact 00:14:21.360 --> 00:14:26.399 that Bob blocked Mallory take effect. You can click on 00:14:26.400 --> 00:14:30.539 another peer to set them as the root hyperdrive. I'll click 00:14:30.540 --> 00:14:34.999 on Eve. Now we're looking at the peer graph from Eve's 00:14:35.000 --> 00:14:39.519 perspective. This peer graph view has a history. If I open 00:14:39.520 --> 00:14:42.359 the transient menu, you'll see here there's a back and a 00:14:42.360 --> 00:14:47.359 forward button. Back is bound to l for left. If I press l, 00:14:48.440 --> 00:14:51.839 we're looking at the graph from Joseph's perspective. If I 00:14:51.840 --> 00:14:56.279 press l again, now we're looking at Alice, as at the 00:14:56.280 --> 00:15:01.439 beginning. I'll press r to go forward, and r again, and now 00:15:01.440 --> 00:15:04.734 we're back at Eve. Now, I'd like to show you 00:15:04.735 --> 00:15:08.337 the hyperdrive-org-transclusion package we published. 00:15:08.338 --> 00:15:10.358 I'll open up the HyperDrive manual 00:15:10.359 --> 00:15:14.399 to see how to install it. 00:15:15.680 --> 00:15:20.999 Now, from here, I'll press m and type in transclusion to jump 00:15:21.000 --> 00:15:23.599 straight to the org-transclusion integration section of 00:15:23.600 --> 00:15:27.079 the manual. To summarize, we can install HyperDrive 00:15:27.080 --> 00:15:30.879 org-transclusion with M-x package-install 00:15:32.220 --> 00:15:33.919 hyperdrive-org-transclusion. 00:15:37.000 --> 00:15:42.159 Then, once this is done, we will copy the following snippet 00:15:43.780 --> 00:15:47.559 and add it either to our init.el file or, in this case, I'll 00:15:47.560 --> 00:15:52.439 just evaluate it. Now, hyperdrive-org-transclusion mode is 00:15:52.440 --> 00:15:52.879 enabled. 00:15:58.100 --> 00:16:01.479 Let's go back to the hello.org file in Alice's hyperdrive. 00:16:01.480 --> 00:16:07.239 I'll right-click on Alice, then click Open Hyperdrive, and 00:16:07.240 --> 00:16:11.359 hit Enter on hello.org. This time, I'm not prompted to mark 00:16:11.360 --> 00:16:16.199 Alice's hyperdrive as safe, since we did it already. I'll 00:16:16.200 --> 00:16:20.719 navigate to the Check Out My Peers heading. Then I'll run 00:16:20.720 --> 00:16:28.359 M-x org-store-link. Now, I'll create a new file in my 00:16:28.360 --> 00:16:32.959 hyperdrive by running M-x hyperdrive-find-file. I'll 00:16:32.960 --> 00:16:38.488 select my hyperdrive and I'll call this new file 00:16:38.489 --> 00:16:45.919 response-to-alice.org. 00:16:45.920 --> 00:16:50.780 Now, I'll paste in a response that I've written. 00:16:50.781 --> 00:16:57.979 I'll go to the bottom and I will run M-x org-insert-link 00:16:57.980 --> 00:16:59.423 and I'll insert the link 00:16:59.424 --> 00:17:02.799 that I stored earlier. As a link 00:17:02.800 --> 00:17:07.759 description, I'll change it to snippet from Alice's 00:17:08.880 --> 00:17:09.879 hyperdrive file. 00:17:12.700 --> 00:17:18.399 I'll save my hyperdrive file. 00:17:18.400 --> 00:17:21.839 Now, to show that the link works, I'll just kill this buffer 00:17:21.840 --> 00:17:27.099 showing the hello.org file, and I'll click on the link. 00:17:27.100 --> 00:17:29.487 Now in addition to linking from my file 00:17:29.488 --> 00:17:31.488 to the heading in Alice's file, 00:17:31.489 --> 00:17:35.699 I'd like to transclude this headings content in my file. 00:17:35.700 --> 00:17:38.634 So I'll go to the link in my file and run 00:17:38.635 --> 00:17:45.400 M-x org-transclusion-make-from-link 00:17:45.401 --> 00:17:47.879 and I'll save my file again. 00:17:47.880 --> 00:17:50.504 All that's been added is another link 00:17:50.505 --> 00:17:54.433 prefixed with this transclude keyword. 00:17:54.434 --> 00:17:57.034 To make the transclusion show up inline, 00:17:57.035 --> 00:18:02.359 I'll run M-x org-transclusion-add. The content 00:18:02.360 --> 00:18:05.359 of Alice's file hasn't been copied into mine. It's just 00:18:05.360 --> 00:18:12.959 being transcluded. If I run M-x org-transclusion-remove, 00:18:12.960 --> 00:18:15.439 you'll see that the underlying content is still 00:18:15.440 --> 00:18:21.639 just the transclude keyword and the link. 00:18:21.640 --> 00:18:24.319 Now some time has passed and Alice has updated her 00:18:24.320 --> 00:18:29.879 hyperdrive file. She wrote, please add me as a source. Since 00:18:29.880 --> 00:18:33.559 the transclude link that I added in my file does not specify a 00:18:33.560 --> 00:18:36.879 version, it will always transclude the latest version of 00:18:36.880 --> 00:18:42.639 Alice's hello.org file. If I run M-x org-transclusion-add 00:18:42.640 --> 00:18:46.719 once more, we'll see that the latest version of Alice's 00:18:46.720 --> 00:18:51.679 file gets transcluded into mine. Let's say that I want to 00:18:51.680 --> 00:18:54.959 transclude the previous version of Alice's hello.org 00:18:54.960 --> 00:18:58.879 file, and I don't want my transclusion to change when Alice 00:18:58.880 --> 00:19:02.919 updates her file. That's possible too. I'll go over to her 00:19:02.920 --> 00:19:09.759 file and run M-x hyperdrive-open-previous-version. Now 00:19:09.760 --> 00:19:14.079 when I widen the window a little, we can see in the mode line 00:19:14.080 --> 00:19:18.279 that this is version 57. For an explanation of what the 00:19:18.280 --> 00:19:21.599 version numbers mean, check out the last video or the info 00:19:21.600 --> 00:19:25.759 manual. For now, I'll go down to her check out my peers 00:19:25.760 --> 00:19:32.999 heading and run M-x org-store-link. Now, in my response to 00:19:33.000 --> 00:19:39.159 Alice, I'll insert the link. I'll run org transclusion make 00:19:39.160 --> 00:19:44.759 from link. Now there are two transclusions. The first 00:19:44.760 --> 00:19:47.719 transclusion will update whenever Alice updates her file, 00:19:47.720 --> 00:19:52.919 and the second transclusion is pinned to version 57. That 00:19:52.920 --> 00:19:53.356 covers Hyperdrive install, the peer graph, and 00:19:53.357 --> 00:19:58.298 hyperdrive-org-transclusion. 00:19:58.299 --> 00:20:00.519 Feel free to check out the hyperdrive.el 00:20:00.520 --> 00:20:04.119 info manual in the Ushin hyperdrive here, or on the 00:20:04.120 --> 00:20:08.439 ushin.org website. Thanks to the folks at Sopranica, we 00:20:08.440 --> 00:20:11.879 have a public XMPP group chat you can join, either using an 00:20:11.880 --> 00:20:15.919 XMPP client or anonymously from your browser. If you use 00:20:15.920 --> 00:20:19.799 Matrix, there's also a bridge. Thank you for watching, and 00:20:19.800 --> 00:20:22.519 thank you to the EmacsConf organizers and all the 00:20:22.520 --> 00:20:25.160 presenters who made this wonderful event possible.