summaryrefslogtreecommitdiffstats
path: root/2020
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--2020/subtitles/emacsconf-2020--18-org-roam-technical-presentation--leo-vivier.vtt1640
1 files changed, 1640 insertions, 0 deletions
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.