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.