From e0452fb9ae3f28f43d3e51e133d858e2e3130a2e Mon Sep 17 00:00:00 2001 From: Sacha Chua Date: Fri, 15 Jan 2021 23:07:38 -0500 Subject: Add talk18 --- ...org-roam-technical-presentation--leo-vivier.vtt | 1640 ++++++++++++++++++++ 1 file changed, 1640 insertions(+) create mode 100644 2020/subtitles/emacsconf-2020--18-org-roam-technical-presentation--leo-vivier.vtt diff --git a/2020/subtitles/emacsconf-2020--18-org-roam-technical-presentation--leo-vivier.vtt b/2020/subtitles/emacsconf-2020--18-org-roam-technical-presentation--leo-vivier.vtt new file mode 100644 index 00000000..4c840ad7 --- /dev/null +++ b/2020/subtitles/emacsconf-2020--18-org-roam-technical-presentation--leo-vivier.vtt @@ -0,0 +1,1640 @@ +WEBVTT + +00:00:00.000 --> 00:00:02.399 +Leo Vivier: [About the previous +presentation:] At the end... We are +right on time, so I'm + +00:00:02.399 --> 00:00:04.319 +sorry if you have a lot of questions +before. + +00:00:04.319 --> 00:00:06.960 +You had so many questions and I + +00:00:06.960 --> 00:00:08.375 +couldn't answer all of them + +00:00:08.375 --> 00:00:10.080 +I'm really happy about it but I'm also + +00:00:10.080 --> 00:00:12.719 +really sad that I don't have enough time +to do so. + +00:00:12.719 --> 00:00:15.040 +I'm going to try to do a better job this + +00:00:15.040 --> 00:00:17.119 +time of leaving you a little more time + +00:00:17.119 --> 00:00:20.240 +for the questions. So, just before, + +00:00:20.240 --> 00:00:22.960 +a little addendum because I did screw up + +00:00:22.960 --> 00:00:24.400 +in the previous presentation... + +00:00:24.400 --> 00:00:27.439 +You remember I tried to rename the file + +00:00:27.439 --> 00:00:28.800 +and it didn't work? + +00:00:28.800 --> 00:00:32.559 +well it turns out I had two files named +"baz," so + +00:00:32.559 --> 00:00:36.000 +my software works great, thank you very +much. + +00:00:36.000 --> 00:00:38.800 +[Org Roam Technical Presentation]: All +right. So now what I'm going to do + +00:00:38.800 --> 00:00:40.239 +during this presentation + +00:00:40.239 --> 00:00:43.040 +is that I'm going to... Oops, I didn't start + +00:00:43.040 --> 00:00:44.399 +my timer. Just give me + +00:00:44.399 --> 00:00:47.520 +a little second, and let's subtract + +00:00:47.520 --> 00:00:50.141 +one minute. Okay. Good. + +00:00:50.141 --> 00:00:52.239 +So, what I'm going to do right now... It's a + +00:00:52.239 --> 00:00:54.079 +little different from the previous + +00:00:54.079 --> 00:00:56.879 +talk I gave you, and different even + +00:00:56.879 --> 00:00:58.239 +from what Noorah gave you. + +00:00:58.239 --> 00:01:00.480 +There's scaling the mountain as + +00:01:00.480 --> 00:01:01.941 +far as difficulty is concerned. + +00:01:01.941 --> 00:01:04.879 +On this one, I will be telling you +about the + +00:01:04.879 --> 00:01:06.799 +technical aspects of org-roam, + +00:01:06.799 --> 00:01:09.360 +because I've been telling you + +00:01:09.360 --> 00:01:11.119 +about the general philosophy + +00:01:11.119 --> 00:01:13.119 +of the notes and the general philosophy + +00:01:13.119 --> 00:01:14.560 +of organization, + +00:01:14.560 --> 00:01:16.159 +but right now, I really want to get into + +00:01:16.159 --> 00:01:18.479 +the nitty gritty about org-roam. + +00:01:18.479 --> 00:01:22.640 +So if we go in the git repository, + +00:01:22.640 --> 00:01:25.759 +this at the very core is org-roam. + +00:01:25.759 --> 00:01:28.960 +For some of you who have no experience +whatsoever + +00:01:28.960 --> 00:01:31.280 +developing stuff or programming or + +00:01:31.280 --> 00:01:32.880 +anything along those lines, + +00:01:32.880 --> 00:01:36.720 +this is how all the development +around the world + +00:01:36.720 --> 00:01:40.000 +is working. You have a repository, a + +00:01:40.000 --> 00:01:42.159 +git repository, where you have all the + +00:01:42.159 --> 00:01:44.399 +files, all the libraries you're using, + +00:01:44.399 --> 00:01:46.399 +all the programs, all the commands. + +00:01:46.399 --> 00:01:48.720 +Everything is inside your files. + +00:01:48.720 --> 00:01:52.240 +And in a way, this is the org-roam project. + +00:01:52.240 --> 00:01:53.741 +You can see that we have many files. + +00:01:53.741 --> 00:01:55.600 +We have org-roam-buffer, -capture, -compat, + +00:01:55.600 --> 00:01:58.441 +-completion, -dailies, etc. etc. + +00:01:58.441 --> 00:02:02.000 +So, before we dive a little deeper, +I just + +00:02:02.000 --> 00:02:04.640 +want to give you a lay of the land, +so to speak, + +00:02:04.640 --> 00:02:08.160 +to know where we're heading. + +00:02:08.160 --> 00:02:11.680 +Org-roam is built on top of Org Mode, + +00:02:11.680 --> 00:02:15.599 +and Org Mode gives us plenty of tools + +00:02:15.599 --> 00:02:17.408 +to play around with the files. + +00:02:17.408 --> 00:02:18.308 +I'm moving the glass. + +00:02:18.308 --> 00:02:20.080 +I'm starting to move my hands a little + +00:02:20.080 --> 00:02:21.360 +bit. You know, when I get excited about + +00:02:21.360 --> 00:02:22.959 +something, I move my hand, + +00:02:22.959 --> 00:02:26.640 +and then that stuff happens. So + +00:02:26.640 --> 00:02:29.360 +in org-roam, we have Org Mode and + +00:02:29.360 --> 00:02:31.360 +Org Roam gives us plenty of tools which + +00:02:31.360 --> 00:02:33.360 +are incredibly useful + +00:02:33.360 --> 00:02:36.560 +for writing stuff. So you know we already + +00:02:36.560 --> 00:02:37.440 +have the links, + +00:02:37.440 --> 00:02:39.440 +we already have the hierarchy which is + +00:02:39.440 --> 00:02:43.360 +given by having trees within trees +within trees. We have + +00:02:43.760 --> 00:02:45.741 +quote blocks. We have babel blocks. + +00:02:45.741 --> 00:02:48.000 +We have so much stuff. We have an +arsenal of + +00:02:48.000 --> 00:02:49.680 +tools that have been developed + +00:02:49.680 --> 00:02:53.519 +for the last 15 years. + +00:02:53.519 --> 00:02:56.640 +When you think about it, org-roam just + +00:02:56.640 --> 00:02:59.760 +wants to create backlinks. It sounds + +00:02:59.760 --> 00:03:01.360 +something very simple, but the problem is + +00:03:01.360 --> 00:03:05.519 +that we need to play nicely with all +of those + +00:03:05.519 --> 00:03:09.360 +intricate pieces. The fact is, it +takes quite a + +00:03:09.360 --> 00:03:10.879 +lot of expertise to be able to do so + +00:03:10.879 --> 00:03:14.400 +because if... Right now we are in the brain +of org-roam, + +00:03:15.200 --> 00:03:18.959 +but if I show you the brain of Org Mode... + +00:03:18.959 --> 00:03:20.608 +So this is the brain of Org Mode. + +00:03:20.608 --> 00:03:23.280 +It looks very simple like this because I + +00:03:23.280 --> 00:03:25.519 +haven't entered the lisp/ folder. + +00:03:25.519 --> 00:03:28.000 +I'm just going to enter it. I'm going + +00:03:28.000 --> 00:03:32.000 +to zoom out a little bit. Don't worry +if you + +00:03:32.000 --> 00:03:32.959 +don't see everything. + +00:03:32.959 --> 00:03:35.519 +but I just want you to get the + +00:03:35.519 --> 00:03:37.519 +sheer feel of magnitude + +00:03:37.519 --> 00:03:41.280 +that is Org Mode. So right now, we are + +00:03:41.280 --> 00:03:42.640 +in a very small size... What I'm going +to do, + +00:03:42.640 --> 00:03:43.760 +I'm going to skip + +00:03:43.760 --> 00:03:47.519 +one page, one, two, + +00:03:47.519 --> 00:03:51.040 +three, we have... Let's just check how many + +00:03:51.040 --> 00:03:52.319 +lines we have. + +00:03:52.319 --> 00:03:54.640 +Okay. Let me just revert to a fairly + +00:03:54.640 --> 00:03:56.480 +readable sight. + +00:03:56.480 --> 00:03:58.560 +At the bottom, you can see that we have... + +00:03:58.560 --> 00:03:59.599 +Oh it's not showing because it's a + +00:03:59.599 --> 00:04:00.959 +little small. Okay, I'm just going to + +00:04:00.959 --> 00:04:03.840 +resize the window a little bit. + +00:04:03.840 --> 00:04:06.959 +It's not showing up. Give me a second. I + +00:04:06.959 --> 00:04:08.720 +can't see how many lines I have. Okay. So + +00:04:08.720 --> 00:04:10.159 +let's do it the better way. + +00:04:10.159 --> 00:04:11.840 +I'm going to go back at the beginning of + +00:04:11.840 --> 00:04:14.000 +the buffer and we're going to count + +00:04:14.000 --> 00:04:16.160 +how many lines we have. So the bottom, in + +00:04:16.160 --> 00:04:18.880 +the mini buffer (and the mini buffer is +this area), + +00:04:18.880 --> 00:04:22.320 +we have 377 lines, + +00:04:22.320 --> 00:04:25.919 +which means 377 + +00:04:25.919 --> 00:04:29.759 +libraries within Org Mode. And mind you, + +00:04:29.759 --> 00:04:31.520 +that's not counting all the modules that + +00:04:31.520 --> 00:04:32.960 +we have on the side, which + +00:04:32.960 --> 00:04:36.240 +come on top of Org Mode. Now when you + +00:04:36.240 --> 00:04:37.360 +try to think + +00:04:37.360 --> 00:04:41.408 +about something so elemental as links, + +00:04:41.408 --> 00:04:45.520 +you have to think about how to play well + +00:04:45.520 --> 00:04:48.560 +with every single one of these modules. + +00:04:48.560 --> 00:04:48.875 +Now, obviously not the 370. + +00:04:48.875 --> 00:04:56.080 +Sometimes, you know one module it's not +going to do anything. + +00:04:56.080 --> 00:04:57.680 +I'm not sure ob-calc could be doing + +00:04:57.680 --> 00:04:58.639 +anything with it. + +00:04:58.639 --> 00:05:00.080 +But it's something that we have to keep + +00:05:00.080 --> 00:05:03.039 +in mind. + +00:05:03.039 --> 00:05:04.720 +So, really early on, when we started + +00:05:04.720 --> 00:05:07.520 +developing org-roam with Jethro Kuan, my + +00:05:07.520 --> 00:05:10.639 +co-maintainer, you know we had this +idea that + +00:05:10.639 --> 00:05:14.639 +we wanted to develop something that +was optimized, + +00:05:14.639 --> 00:05:18.240 +something that would scale very + +00:05:18.240 --> 00:05:20.160 +nicely, whether or not you had... + +00:05:20.160 --> 00:05:21.600 +Something that would work as + +00:05:21.600 --> 00:05:24.560 +fast if you had 10 files, + +00:05:24.560 --> 00:05:27.680 +or if you had 100 files, or if you had + +00:05:27.680 --> 00:05:30.880 +10,000 files and maybe more. So the + +00:05:30.880 --> 00:05:32.080 +problem when you do this-- + +00:05:32.080 --> 00:05:34.400 +and I'm doing some callbacks to the talk + +00:05:34.400 --> 00:05:36.320 +I gave you earlier today about + +00:05:36.320 --> 00:05:41.280 +a few big files versus many-- + +00:05:41.280 --> 00:05:44.800 +I got confused--few big files versus many + +00:05:44.800 --> 00:05:45.919 +small files, + +00:05:45.919 --> 00:05:49.280 +the problem with this is that we need to + +00:05:49.280 --> 00:05:51.600 +think about optimization from the get go. + +00:05:51.600 --> 00:05:53.680 +So one of the decisions we took when + +00:05:53.680 --> 00:05:54.800 +we got started + +00:05:54.800 --> 00:05:59.199 +with org-roam is that if I go in my + +00:05:59.199 --> 00:06:02.479 +test repository--so that's the one in + +00:06:02.479 --> 00:06:04.240 +which we were right before-- + +00:06:04.240 --> 00:06:08.000 +we have a file which is called org-roam.db. + +00:06:08.000 --> 00:06:11.600 +Now if I open it, it's not... It's a + +00:06:11.600 --> 00:06:14.160 +little garbage because it's a binary. + +00:06:14.160 --> 00:06:15.120 +But what we have + +00:06:15.120 --> 00:06:18.560 +is a database with which we communicate + +00:06:18.560 --> 00:06:21.919 +via... Sorry, it's an SQL database. + +00:06:21.919 --> 00:06:25.120 +And what this allows us to do + +00:06:25.120 --> 00:06:28.479 +is we store all the information we need + +00:06:28.479 --> 00:06:31.919 +inside this SQL database which allows us + +00:06:31.919 --> 00:06:34.720 +to speed up a lot of the operations that + +00:06:34.720 --> 00:06:38.479 +are necessary for the functioning of org-roam. + +00:06:38.479 --> 00:06:40.240 +So, for instance, if I go back to the + +00:06:40.240 --> 00:06:41.759 +index file that I had before... + +00:06:41.759 --> 00:06:43.341 +Let's just go back to "foo," actually. + +00:06:43.341 --> 00:06:45.680 +This way you'll see a little more on +the side. + +00:06:45.680 --> 00:06:47.919 +So you see that on the side we have + +00:06:47.919 --> 00:06:50.319 +two links. I'm not going to +click on them; + +00:06:50.319 --> 00:06:51.508 +otherwise, I'm going to open them. + +00:06:51.508 --> 00:06:53.199 +But we have two links. + +00:06:53.199 --> 00:06:56.319 +Now there are many implementations of + +00:06:56.319 --> 00:06:58.975 +the Zettelkasten method inside Emacs + +00:06:58.975 --> 00:07:00.541 +and with Org Mode. + +00:07:00.541 --> 00:07:02.400 +But what we've decided to do + +00:07:02.400 --> 00:07:04.639 +is that every time you have a link--so if + +00:07:04.639 --> 00:07:08.479 +we go to the index again here at point +we have + +00:07:08.479 --> 00:07:09.908 +the link "foo." Every time we create a +link, + +00:07:09.908 --> 00:07:14.160 +we update our database + +00:07:14.160 --> 00:07:17.919 +to say, okay, so we have a link in the +file + +00:07:17.919 --> 00:07:21.080 +"index" which is leading to the file + +00:07:21.080 --> 00:07:24.319 +"foo.org" and it is situated + +00:07:24.319 --> 00:07:27.840 +under the heading "A heading." + +00:07:27.840 --> 00:07:29.840 +If you check the side buffer, you see + +00:07:29.840 --> 00:07:31.440 +that all this information + +00:07:31.440 --> 00:07:33.120 +which I just highlighted to you + +00:07:33.120 --> 00:07:42.639 +is present right here. + +00:07:42.639 --> 00:07:45.599 +Oh, sorry I forgot this. Thank you. + +00:07:46.400 --> 00:07:50.879 +So let's see. Log. Okay. + +00:07:50.879 --> 00:07:53.039 +I'm going to split like this. + +00:07:53.039 --> 00:07:54.960 +I'm going to go back there. + +00:07:54.960 --> 00:07:56.960 +The problem is that I can't show my + +00:07:56.960 --> 00:07:58.720 +keystrokes at the same time as + +00:07:58.720 --> 00:08:02.080 +I'm showing the side buffer, so I'll + +00:08:02.080 --> 00:08:03.599 +keep it right now for your own + +00:08:03.599 --> 00:08:07.039 +discretion. Anyway, getting back to the +talk. + +00:08:07.039 --> 00:08:10.160 +So the thing is we have this + +00:08:10.160 --> 00:08:13.520 +SQL database. The goal is to keep it +optimized. + +00:08:13.520 --> 00:08:16.400 +Now, why is it better optimized than just + +00:08:16.400 --> 00:08:20.960 +using default Org Mode? + +00:08:20.960 --> 00:08:23.520 +So in my talk about many big files + +00:08:23.520 --> 00:08:26.879 +versus a few--I keep getting.-- +you got + +00:08:26.879 --> 00:08:28.080 +what I was saying; I'm not going to + +00:08:28.080 --> 00:08:29.120 +repeat it-- + +00:08:29.120 --> 00:08:32.240 +By the way, it is 10 to 10:00. + +00:08:32.240 --> 00:08:35.200 +I'm starting really to be tired now. + +00:08:35.200 --> 00:08:36.399 +Moving on to... + +00:08:36.399 --> 00:08:39.279 +What did I want to show you? So it was + +00:08:39.279 --> 00:08:40.800 +almost... Yes, org-elements. + +00:08:40.800 --> 00:08:44.959 +So what I'm going to do... I'm going to... + +00:08:44.959 --> 00:08:48.399 +I believe it's org-element-parse-buffer. + +00:08:48.399 --> 00:08:51.920 +So I was telling you about org-elements +before. + +00:08:51.920 --> 00:08:53.600 +And the main command--sorry, the main + +00:08:53.600 --> 00:08:55.760 +function that is used by org-element + +00:08:55.760 --> 00:08:58.560 +is -parse-buffer. What it does (and you can + +00:08:58.560 --> 00:08:59.760 +see the docstring) is that it + +00:08:59.760 --> 00:09:01.040 +recursively parsed + +00:09:01.040 --> 00:09:03.279 +the buffer and returned structure, + +00:09:03.279 --> 00:09:04.959 +structure being all the information that + +00:09:04.959 --> 00:09:06.320 +we have in this buffer. + +00:09:06.320 --> 00:09:07.680 +So just to show you a little more, we're + +00:09:07.680 --> 00:09:09.600 +going to move into a scratch buffer, + +00:09:09.600 --> 00:09:10.880 +and what we're going to do is that we're + +00:09:10.880 --> 00:09:12.800 +going to write this command + +00:09:12.800 --> 00:09:16.320 +org-element-parse-buffer, and we're going to check the + +00:09:16.320 --> 00:09:17.760 +output of this command. + +00:09:17.760 --> 00:09:19.600 +Sorry, not this one. We're going to go + +00:09:19.600 --> 00:09:22.000 +in the index. So in the index file, you have + +00:09:22.000 --> 00:09:23.680 +a title, you have a heading, you have a + +00:09:23.680 --> 00:09:25.120 +link, etc. etc. + +00:09:25.120 --> 00:09:26.880 +So what I'm going to do, I'm going to + +00:09:26.880 --> 00:09:28.560 +evaluate this text. + +00:09:28.560 --> 00:09:30.800 +Now at the bottom in the mini buffer, + +00:09:32.560 --> 00:09:36.160 +you see an AST, an abstract-- + +00:09:36.160 --> 00:09:37.600 +obviously don't remember what the S + +00:09:37.600 --> 00:09:39.839 +stands for... Semantic?-- + +00:09:39.839 --> 00:09:42.720 +Huh. Interesting. Anyway. A representation + +00:09:42.720 --> 00:09:43.519 +of the data + +00:09:43.519 --> 00:09:45.279 +in a way that is exploitable by a + +00:09:45.279 --> 00:09:47.600 +machine. Now what I'm going to do-- + +00:09:47.600 --> 00:09:49.839 +syntax, thank you--so what I'm going to do, + +00:09:49.839 --> 00:09:52.000 +I'm going to paste it inside the buffer + +00:09:52.000 --> 00:09:54.480 +in a way that is humanly readable. + +00:09:54.480 --> 00:09:56.399 +You can see that we have plenty of + +00:09:56.399 --> 00:09:58.800 +information. We have a section which + +00:09:58.800 --> 00:10:05.040 +starts at the char 1, which ends at the +character 45. + +00:10:05.040 --> 00:10:07.040 +We have the content... so "Emacs Scratch"-- + +00:10:07.040 --> 00:10:10.240 +oh actually, no, never mind, I did +something wrong, I ran + +00:10:10.240 --> 00:10:11.279 +it in the wrong buffer. + +00:10:11.279 --> 00:10:13.040 +So actually what I'm going to do, we're + +00:10:13.040 --> 00:10:14.399 +going to run this command + +00:10:14.399 --> 00:10:16.241 +with the selected window. + +00:10:16.241 --> 00:10:21.120 +Next window. Okay. That's a bit of live + +00:10:21.120 --> 00:10:23.760 +Elisp writing for you right now. + +00:10:23.760 --> 00:10:25.541 +Now if I evaluate this + +00:10:25.541 --> 00:10:28.480 +and paste the content of the buffer, + +00:10:28.480 --> 00:10:30.208 +it is doing its bidding. + +00:10:30.208 --> 00:10:32.399 +So now what we have... + +00:10:32.399 --> 00:10:34.959 +We have a section. We have the keyword + +00:10:34.959 --> 00:10:38.160 +TITLE which you see right here. You have +the :value. + +00:10:38.160 --> 00:10:39.920 +If we scroll down a little bit, we have a + +00:10:39.920 --> 00:10:42.480 +heading which is right here. We have the +contents, + +00:10:42.480 --> 00:10:44.800 +which should be... Yes, the content is not + +00:10:44.800 --> 00:10:46.320 +listed exactly here, but you have a + +00:10:46.320 --> 00:10:48.079 +paragraph, which is this, + +00:10:48.079 --> 00:10:50.308 +and then you have a link, etc. etc. + +00:10:50.308 --> 00:10:54.640 +It is all parentheses if you're not +used to Elisp. + +00:10:54.640 --> 00:10:56.320 +Like, right now, I've selected only the + +00:10:56.320 --> 00:10:58.640 +content of the parenthesis link. + +00:10:58.640 --> 00:11:00.399 +I can move like this etc. etc. + +00:11:00.399 --> 00:11:01.680 +I'm not... It's not an Elisp + +00:11:01.680 --> 00:11:05.279 +lesson that I'm doing right now, but +basically, + +00:11:05.279 --> 00:11:08.399 +if we were to use the default tooling of + +00:11:08.399 --> 00:11:12.480 +org-roam--Org Mode, sorry, I keep +getting too confused, sorry for that-- + +00:11:12.480 --> 00:11:14.240 +would be extremely slow to do what + +00:11:14.240 --> 00:11:16.399 +we're doing. Some people + +00:11:16.399 --> 00:11:19.760 +who are doing some implementations of the + +00:11:19.760 --> 00:11:22.240 +Zettelkasten method inside Emacs have + +00:11:22.240 --> 00:11:26.480 +opted for this method, but the problem +is that + +00:11:26.480 --> 00:11:28.975 +we think that it scales poorly. + +00:11:28.975 --> 00:11:33.920 +Now some other people have decided to +not do with a database, + +00:11:33.920 --> 00:11:35.600 +and what they do is that they use a tool + +00:11:35.600 --> 00:11:37.200 +which is called ripgrep. + +00:11:37.200 --> 00:11:38.800 +You might know grep, which is a tool that + +00:11:38.800 --> 00:11:41.279 +allows you to search + +00:11:41.279 --> 00:11:43.440 +a file, the content of a file, for a line. + +00:11:43.440 --> 00:11:46.560 +So for instance, if we open vterm here, + +00:11:46.560 --> 00:11:48.041 +let's see... I've opened the term. + +00:11:48.041 --> 00:11:51.308 +I am in this repository. + +00:11:51.308 --> 00:11:54.399 +What I'm going to do is that I'm +going to + +00:11:54.399 --> 00:11:58.000 +load the content of the file. + +00:11:58.000 --> 00:12:02.480 +How am I going to do this? I need to +move to bash. + +00:12:02.480 --> 00:12:06.160 +Let's do grep + +00:12:06.160 --> 00:12:08.000 +for the line... Which links did we + +00:12:08.000 --> 00:12:09.519 +have... grep foo + +00:12:09.519 --> 00:12:11.600 +inside the file. Is it three? I can't + +00:12:11.600 --> 00:12:13.760 +remember. Okay. Let's do this. + +00:12:13.760 --> 00:12:18.079 +Am I working? No. + +00:12:18.079 --> 00:12:21.279 +Let's go for four? Why, is it eight? + +00:12:21.279 --> 00:12:22.800 +Oh, you know what, I'm just + +00:12:22.800 --> 00:12:24.320 +going to copy the name. + +00:12:24.320 --> 00:12:28.240 +There we go. + +00:12:28.240 --> 00:12:33.680 +Problem with live presentation, always. + +00:12:33.680 --> 00:12:34.800 +You know what, I'm struggling, so I'm + +00:12:34.800 --> 00:12:36.720 +going to drop this point. Anyway, + +00:12:36.720 --> 00:12:38.560 +so grep is a simple tool that allows you + +00:12:38.560 --> 00:12:40.000 +to search the content of a file, but + +00:12:40.000 --> 00:12:42.480 +ripgrep is a solution that is written + +00:12:42.480 --> 00:12:44.160 +in Rust and which is supposed to be-- + +00:12:44.160 --> 00:12:48.880 +well, not supposed--which is far more +capable. + +00:12:48.880 --> 00:12:50.639 +Now I'd like to talk to you about the future + +00:12:50.639 --> 00:12:52.320 +of org-roam. Right now, I've told you about + +00:12:52.320 --> 00:12:54.720 +the general concept, which is about using + +00:12:54.720 --> 00:12:58.399 +this SQL database, and about + +00:12:58.399 --> 00:13:01.519 +playing nicely with Org Mode. + +00:13:01.519 --> 00:13:03.279 +We think that there's something great + +00:13:03.279 --> 00:13:05.200 +that we can do about org-roam. + +00:13:05.200 --> 00:13:08.320 +Now I've been talking with a lot of + +00:13:08.320 --> 00:13:10.880 +people who are behind Org Mode and you +know, + +00:13:10.880 --> 00:13:14.000 +they've told us, "Do you think that + +00:13:14.000 --> 00:13:16.880 +org-roam could have something to bring to + +00:13:16.880 --> 00:13:18.320 +Org Mode? Let's say, + +00:13:18.320 --> 00:13:20.160 +backlinks? Is there something that we + +00:13:20.160 --> 00:13:21.600 +could be doing to + +00:13:21.600 --> 00:13:25.600 +import backlinks into Org Mode?" + +00:13:25.600 --> 00:13:29.200 +We thought about it with Jethro and the +problem is + +00:13:29.200 --> 00:13:30.800 +we've always tried to have an + +00:13:30.800 --> 00:13:32.720 +experimental ground, + +00:13:32.720 --> 00:13:36.320 +a very isolated portion of your +system + +00:13:36.320 --> 00:13:37.920 +where we could track backlinks and + +00:13:37.920 --> 00:13:40.320 +that's why we use + +00:13:40.320 --> 00:13:42.320 +a slipbox directory, so that we only + +00:13:42.320 --> 00:13:44.880 +track backlinks in one specific place. + +00:13:44.880 --> 00:13:47.040 +But now, because there seems to be so + +00:13:47.040 --> 00:13:48.639 +much interest about the method and we + +00:13:48.639 --> 00:13:50.079 +have so much backing + +00:13:50.079 --> 00:13:52.480 +on Github--we have like + +00:13:53.120 --> 00:13:56.399 +2,600 stars, which is mind-boggling to us--- + +00:13:56.399 --> 00:13:59.760 +because we have so much success... + +00:13:59.760 --> 00:14:02.399 +We have plenty of ideas about the future. + +00:14:02.399 --> 00:14:06.000 +One of the key parts of development +being the writing + +00:14:06.000 --> 00:14:08.480 +of an external parser for org-roam. + +00:14:08.480 --> 00:14:11.839 +So I've been telling you about org-element. +org-element runs + +00:14:11.839 --> 00:14:15.279 +inside Emacs. But what if + +00:14:15.279 --> 00:14:19.519 +we wrote a background process + +00:14:19.519 --> 00:14:23.600 +that could read a file, an Org Mode file, + +00:14:23.600 --> 00:14:25.760 +extract the same type of data that you + +00:14:25.760 --> 00:14:27.440 +see on your screen right now, + +00:14:27.440 --> 00:14:30.959 +so that we could use to update a +database + +00:14:30.959 --> 00:14:33.279 +that we could use to compute the + +00:14:33.279 --> 00:14:34.959 +links, so that we could use it + +00:14:34.959 --> 00:14:37.360 +to show org-roam server all the + +00:14:37.360 --> 00:14:39.519 +connections between your nodes? + +00:14:39.519 --> 00:14:41.360 +Now there is a path of improvement here + +00:14:41.360 --> 00:14:44.320 +that is extremely important to us. + +00:14:44.320 --> 00:14:47.360 +But you know, that's the technical aspect. + +00:14:47.360 --> 00:14:48.639 +I'm out of time. I'm just going to + +00:14:48.639 --> 00:14:51.360 +take one more minute to finish on this +point. + +00:14:51.360 --> 00:14:57.680 +We believe that org-roam has the +potential to be a + +00:14:57.680 --> 00:14:58.399 +think tank, + +00:14:58.399 --> 00:15:00.639 +in a way, for Org Mode and the way we + +00:15:00.639 --> 00:15:01.920 +think about + +00:15:01.920 --> 00:15:04.079 +note-taking in general. I've stressed a + +00:15:04.079 --> 00:15:06.079 +great deal in my first presentation-- + +00:15:06.079 --> 00:15:10.240 +sorry, the one I did before Noorah--that + +00:15:10.240 --> 00:15:12.480 +org-roam is really great as a way to + +00:15:12.480 --> 00:15:14.639 +think organically about knowledge. + +00:15:14.639 --> 00:15:17.600 +Honestly, we want to put the + +00:15:17.600 --> 00:15:19.279 +theory into practice with org-roam. + +00:15:19.279 --> 00:15:22.079 +We are holding something which has the + +00:15:22.079 --> 00:15:23.440 +potential to be + +00:15:23.440 --> 00:15:25.120 +a great factor of innovation for the + +00:15:25.120 --> 00:15:27.279 +future, whether it be Org Mode + +00:15:27.279 --> 00:15:29.600 +or even for software in general. You know, + +00:15:29.600 --> 00:15:31.440 +the way to think about... + +00:15:31.440 --> 00:15:34.880 +build nodes of knowledge in a way, + +00:15:34.880 --> 00:15:37.440 +and the way to represent all those ids + +00:15:37.440 --> 00:15:38.240 +with the graph... + +00:15:38.240 --> 00:15:41.600 +the way to basically have a note-taking +system that + +00:15:41.600 --> 00:15:43.360 +corresponds to the research that + +00:15:43.360 --> 00:15:45.839 +corresponds to the way you think. + +00:15:45.839 --> 00:15:51.839 +I believe we are really excited about +this and if you + +00:15:51.839 --> 00:15:55.360 +want to keep track of the development of +org-roam + +00:15:55.360 --> 00:15:57.600 +on my YouTube channel (which is already + +00:15:57.600 --> 00:15:59.279 +linked a little earlier + +00:15:59.279 --> 00:16:02.639 +inside the pad), + +00:16:02.639 --> 00:16:04.240 +I do have a Youtube channel where I try + +00:16:04.240 --> 00:16:06.079 +to present novelties + +00:16:06.079 --> 00:16:09.519 +or the new stuff inside org-roam. + +00:16:09.519 --> 00:16:11.519 +I'll also be recording videos about the + +00:16:11.519 --> 00:16:13.360 +technical aspects, about the direction + +00:16:13.360 --> 00:16:15.519 +that we're taking with org-roam. + +00:16:15.519 --> 00:16:18.000 +If you want to talk with us we are + +00:16:18.000 --> 00:16:22.160 +always available either on IRC +channel #org-roam + +00:16:22.160 --> 00:16:25.279 +(I believe there's a dash between org +and roam) but also + +00:16:25.279 --> 00:16:27.279 +on the Discourse. I'll be putting all + +00:16:27.279 --> 00:16:29.440 +the links inside the conversation. + +00:16:29.440 --> 00:16:31.199 +And that's me done. So, thank you for + +00:16:31.199 --> 00:16:32.880 +listening. Now I'll be taking + +00:16:32.880 --> 00:16:34.560 +three minutes of questions so as to be + +00:16:34.560 --> 00:16:37.360 +right on time. + +00:16:37.360 --> 00:16:39.920 +(Amin: Many thanks for your awesome talk, Leo.) + +00:16:39.920 --> 00:16:41.120 +Leo: Thank you. + +00:16:41.120 --> 00:16:43.040 +I'm just refreshing the page, and I'm + +00:16:43.040 --> 00:16:44.959 +going to scroll down to my + +00:16:44.959 --> 00:16:49.600 +talk if I can find the right section. + +00:16:49.600 --> 00:16:53.120 +Let me just scroll a little bit. + +00:16:53.120 --> 00:16:55.600 +Reproducible Emacs. No, I think it's + +00:16:55.600 --> 00:16:57.120 +slower... + +00:16:57.120 --> 00:16:59.279 +We have so many questions, so at the + +00:16:59.279 --> 00:17:00.639 +same time I'm pissed because I can't + +00:17:00.639 --> 00:17:01.120 +find it, + +00:17:01.120 --> 00:17:02.639 +but I'm really, really impressed by the + +00:17:02.639 --> 00:17:05.360 +number of questions that we had. (Amin: Oh yeah. + +00:17:05.360 --> 00:17:07.760 +Yours is about I think about line 600 + +00:17:07.760 --> 00:17:08.260 +or so.) + +00:17:09.919 --> 00:17:13.199 +Leo: Yes, got it splendid. + +00:17:13.199 --> 00:17:16.400 +So, the questions. "So why not run a + +00:17:16.400 --> 00:17:18.160 +background Emacs for parsing instead of + +00:17:18.160 --> 00:17:19.919 +implementing a new parser?" + +00:17:19.919 --> 00:17:22.559 +I believe we've had this question. + +00:17:22.559 --> 00:17:24.480 +I was giving a similar talk + +00:17:24.480 --> 00:17:27.600 +earlier this week--and this week, + +00:17:27.600 --> 00:17:31.679 +I'm not French, this week, sorry--and + +00:17:31.679 --> 00:17:33.008 +someone asked me this question. + +00:17:33.008 --> 00:17:35.679 +The thing is running a background Emacs + +00:17:35.679 --> 00:17:38.320 +process... You know, it sounds great, + +00:17:38.320 --> 00:17:40.400 +but it's also very limited because all + +00:17:40.400 --> 00:17:41.760 +the problems we have + +00:17:41.760 --> 00:17:45.520 +about concurrency, about threads in Emacs... + +00:17:45.520 --> 00:17:48.160 +Well, yes, we can forward all our calls to + +00:17:48.160 --> 00:17:49.200 +background Emacs + +00:17:49.200 --> 00:17:52.240 +just like when you export a file + +00:17:52.240 --> 00:17:56.400 +with... Sorry, + +00:17:56.400 --> 00:17:57.840 +Amin, could you mute microphone when + +00:17:57.840 --> 00:17:58.799 +you're not speaking, it's a little hard for + +00:17:58.799 --> 00:18:01.520 +me to concentrate? + +00:18:01.520 --> 00:18:03.600 +That's fine. Don't worry. + +00:18:04.640 --> 00:18:06.960 +Where was I? I'm sorry. The + +00:18:06.960 --> 00:18:07.679 +question. Yes. + +00:18:07.679 --> 00:18:09.280 +So, basically, forwarding all the + +00:18:09.280 --> 00:18:11.840 +questions--sorry, all our queries to a + +00:18:11.840 --> 00:18:13.039 +background Emacs. + +00:18:13.039 --> 00:18:16.000 +That is what org export is doing. Like, + +00:18:16.000 --> 00:18:17.960 +you have the ability to + +00:18:17.960 --> 00:18:20.799 +asynchronously export LaTeX documents, + +00:18:20.799 --> 00:18:22.080 +ODT documents from + +00:18:22.080 --> 00:18:24.480 +Org Mode. It uses a very minimal + +00:18:24.480 --> 00:18:26.000 +version of Emacs to do that. But the + +00:18:26.000 --> 00:18:28.240 +problem is that we think that it's not + +00:18:28.240 --> 00:18:30.320 +going to scale as well as a true + +00:18:30.320 --> 00:18:33.039 +genuine background process. Since we + +00:18:33.039 --> 00:18:34.480 +have been talking a lot + +00:18:34.480 --> 00:18:36.000 +as far as the Org Mode development is + +00:18:36.000 --> 00:18:38.160 +concerned about, + +00:18:38.160 --> 00:18:40.640 +writing a proper parser, writing a proper + +00:18:40.640 --> 00:18:43.440 +documentation for the parsing of Org +Mode files and + +00:18:43.440 --> 00:18:46.000 +writing a proper document standard + +00:18:46.000 --> 00:18:48.400 +that says, okay, this is how the Org Mode + +00:18:48.400 --> 00:18:50.000 +format works, you know, to + +00:18:50.000 --> 00:18:52.000 +basically have a way to not fall into + +00:18:52.000 --> 00:18:55.120 +the traps of Markdown which has many + +00:18:55.120 --> 00:18:56.559 +many standards... + +00:18:56.559 --> 00:18:58.480 +We need to think about this and we + +00:18:58.480 --> 00:19:00.000 +believe that org-roam has + +00:19:00.000 --> 00:19:03.120 +the ability to think about these +questions. + +00:19:03.120 --> 00:19:04.640 +As a person, I'm also really interested + +00:19:04.640 --> 00:19:06.400 +about this. + +00:19:06.400 --> 00:19:07.840 +I can take the questions, Amin, so don't + +00:19:07.840 --> 00:19:10.160 +worry about feeding them to me. So how + +00:19:10.160 --> 00:19:11.760 +often does the + +00:19:11.760 --> 00:19:13.679 +DB index get updated in order to contain + +00:19:13.679 --> 00:19:15.175 +changes within the Org files? + +00:19:15.175 --> 00:19:17.360 +So we have two ways: either we + +00:19:17.360 --> 00:19:19.440 +update as soon as you save a file, + +00:19:19.440 --> 00:19:22.160 +or we have a timer which is an idle + +00:19:22.160 --> 00:19:23.600 +timer, which waits... Okay + +00:19:23.600 --> 00:19:25.600 +the user has not inputted + +00:19:25.600 --> 00:19:26.960 +anything in the last + +00:19:26.960 --> 00:19:29.360 +five seconds, so it's time to queue a + +00:19:29.360 --> 00:19:30.080 +database--parsing-- + +00:19:30.080 --> 00:19:33.039 +a rebuild of the data, not an + +00:19:33.039 --> 00:19:33.919 +incrementation + +00:19:33.919 --> 00:19:37.120 +of the database, I should say. + +00:19:37.120 --> 00:19:38.799 +"Did you ever think of..." I believe I + +00:19:38.799 --> 00:19:40.320 +have one more minute and then + +00:19:40.320 --> 00:19:42.240 +I'll hand it to the other folks. + +00:19:42.240 --> 00:19:43.440 +"Do you ever think of opening up or + +00:19:43.440 --> 00:19:45.440 +designing the SQL DB as a general Org + +00:19:45.440 --> 00:19:47.200 +speed up tool outside of org-roam so that + +00:19:47.200 --> 00:19:49.141 +other libraries that do execute + +00:19:49.141 --> 00:19:50.208 +complex queries are able to use it?" + +00:19:50.208 --> 00:19:53.341 +Well, a lot of people have been working +on this + +00:19:53.341 --> 00:19:54.640 +I believe alphapapa has been + +00:19:54.640 --> 00:19:56.480 +thinking quite a lot about this. + +00:19:56.480 --> 00:20:01.120 +org-ql is... The ql stands for +query language. + +00:20:01.120 --> 00:20:04.720 +I can't remember now what the backend is + +00:20:04.720 --> 00:20:08.080 +for org-ql, but the idea is + +00:20:08.080 --> 00:20:10.080 +relatively the same, you know. It's about + +00:20:10.080 --> 00:20:13.039 +finding ways to optimize the way we + +00:20:13.039 --> 00:20:14.880 +store the data about an Org Mode file + +00:20:14.880 --> 00:20:16.640 +and how we retrieve it, + +00:20:16.640 --> 00:20:20.400 +and SQL for us seems to seem to be a + +00:20:20.400 --> 00:20:22.159 +good idea. Now, obviously, + +00:20:22.159 --> 00:20:24.240 +maybe we could do something about + +00:20:24.240 --> 00:20:26.080 +Org Mode, but the problem is, I think, a + +00:20:26.080 --> 00:20:27.360 +background process + +00:20:27.360 --> 00:20:30.799 +is not necessarily in + +00:20:30.799 --> 00:20:32.960 +the core mentality of Org Mode. But it's + +00:20:32.960 --> 00:20:36.080 +definitely something that we +could suggest + +00:20:36.080 --> 00:20:37.679 +when we are a little more mature, +because, well, + +00:20:37.679 --> 00:20:40.960 +org-roam was started last February and so + +00:20:40.960 --> 00:20:43.008 +it's a fairly young project in a way. + +00:20:43.008 --> 00:20:45.840 +I see plenty more questions, but + +00:20:45.840 --> 00:20:48.400 +I'm out of time, folks, so I'm not sure. + +00:20:48.400 --> 00:20:50.559 +The other speaker is probably ready. + +00:20:50.559 --> 00:20:52.559 +So what I'll do is I'll probably try to + +00:20:52.559 --> 00:20:54.000 +answer your questions when I get the + +00:20:54.000 --> 00:20:55.360 +time inside the pad, + +00:20:55.360 --> 00:20:58.960 +but feel free to ping me on IRC + +00:20:58.960 --> 00:21:01.039 +or on the different channels we have + +00:21:01.039 --> 00:21:02.320 +for org-roam, and + +00:21:02.320 --> 00:21:04.000 +I'll answer them with as much + +00:21:04.000 --> 00:21:05.520 +energy as I can gather. + +00:21:05.520 --> 00:21:07.600 +All right, thank you so much. + +00:21:08.880 --> 00:21:10.808 +(Amin: Thank you again very much, Leo.) + +00:21:10.808 --> 00:21:14.000 +Leo: And that was me done for today. So +you'll see me at the end, but I'm + +00:21:14.000 --> 00:21:15.840 +officially done and I am free of + +00:21:15.840 --> 00:21:17.840 +thoughts. I can focus on + +00:21:17.840 --> 00:21:22.640 +sleeping, probably. (Amin: Awesome) + +00:21:22.640 --> 00:21:27.760 +Leo: See you guys later. Bye. -- cgit v1.2.3