at the end we are right on time so I'm
sorry if you have a lot of questions
before
you had some so many questions and I
couldn't answer all of them and I'm
really happy about it but I'm also
really sad that I don't have enough time
to do so
so I'm gonna try to do a better job this
time of leaving you a little more time
for the questions so just before
a little addendum because I did screw up
in the previous presentation
you remember I tried to rename the file
and it didn't work
well it turns out uh I had two file name
baz so
my software works great thank you very
much uh
all right so now what I'm gonna do
during this presentation
is that I'm going to oops I didn't stop
my timer just give me
a little second and let's subtract
one minute okay good so
what I'm going to do right now it's a
little different from the previous
talk I've gave you and different even
from what nura gave you
there's like uh scaling the mountain as
far as difficulty is concerned and on
this one
I will be telling you about the
technical aspects of orgrim
because you know I've been telling you
about the general philosophy
of the notes and the general philosophy
of organization
but right now I really want to get into
the nitty gritty about or grow
so if we go in the git repository
this at the very core is all grown and
for some of you who have no experience
whatsoever
uh developing stuff or programming or
anything along those lines
this is how all the development around
the world
is working you have a repository a
git repository where you have all the
files all the libraries you're using
all the programs all the commands
everything is inside your files
and in a way this is the organ project
you can see that we have many files we
have organ buffer capture compat
completion dailies
etc etc so
before we dive a little deeper I just
want to give you a lay of the land so to
speak to
to know where we're heading so
orgro is built on top of old mode
and org mode gives us plenty of tools
to play around with the files I'm moving
the glass I'm
I'm starting to move my hands a little
bit you know when I get excited about
something I move my hand
and then that stuff happens so
in all chrome we have org mode and
augment gives us plenty of tools which
are incredibly useful
for writing stuff so you know we already
have the links
we already have the hierarchy which is
given by having
trees within trees within trees we have
uh
quote blocks we have babel blocks we
have so much stuff we have an arsenal of
tools that have been developed
for the last 15 years and
when you think about it all chrome just
wants to create backlinks but it sounds
something very simple but the problem is
that we need
to play nicely with all of those
intricate
pieces and the fact is it takes quite a
lot of expertise to be able to do so
because
if right now we are in the brain of all
grow
but if I show you the brain of org mode
so this is the brain of org mode and it
looks very simple like this because I
haven't entered the less folder
but I'm just going to enter it I'm going
to
zoom out a little bit don't worry if you
don't see everything
but I just want you to get a fear the
sheer feel of magnitude
that is um org mode so right now we are
in a very small size what I'm gonna do
I'm going to skip
one page okay one two
three we have let's just check how many
lines we have
okay let me just revert to a fairly
readable side
at the bottom you can see that we have
oh it's not showing because it's a
little small okay I'm just going to
resize the window a little bit
it's not showing up give me a second I
can't see how many lines I have okay so
let's do it to get away
I'm going to go back at the beginning of
the buffer and we're going to count
how many lines we have so the bottom in
a midi buffer and the mini buffer is
this area
we have 377 lines
which means 377
libraries within org mode and mind you
that's not counting all the modules that
we have on the side which
come on top of volt mode now when you
try to think
about something so elemental
as links you have to think about how to
play well
with every single one of these modules
now obviously not
the 370 370. sometimes you know
one module it's not going to do anything
like I'm not sure op car could be doing
anything with it
but it's something that we have to keep
in mind and so
really early on when we started
developing all grown with jethro kwan my
co-maintainer you know we had this idea
that
we wanted to develop something that was
optimized
something that would you know scale very
nicely whether or not you had
you know something that would work as
fast if you had 10 files
or if you had 100 files or if you had
10 000 files and maybe more so the
problem when you do this
and I'm doing some callbacks to the talk
I gave you earlier today about
few small few big files this is many
I got confused few big files versus many
small files
the problem with this is that we need to
think about optimization from the get go
and so one of the decision we took when
we got started
with orgrum is that if I go in my
test repository so that's the one in
which we were right before
we have a file which is called orgrumdb
now if I open it it's not it's a
little garbage because uh it's a binary
but what we have
is a database with which we communicate
via sorry it's an sql database
and what this allows us to do
is we store all the information we need
inside this sql database which allows us
to speed up a lot of the operations that
are
necessary for the functioning of our
ground
so for instance if I go back to the
index file that I had before
let's just go back to who actually this
way you'll see a little more on the side
so you see that on the side we have
whoops
two links I'm not going to click on them
otherwise I'm going to open them but we
have two links
now there are many implementations of
the zettol casten method inside
Emacs and inside and with old mode but
what we've decided to do
is that every time you have a link so if
we go to
the index again here at point we have
the link
foo every time we create a link we
update our database
to say okay so we have a link in the
file
index which is leading to the file
fu.org and it is situated
under the heading a heading and
if you check the site buffer you see
that all this all these information
which I just highlighted to you
are present right here
oh well sorry I forgot this thank you
okay
so let's see log okay I'm going to split
actually I'm going to split like this
I'm going to go back there
the problem is that I can't show my
keystrokes at the same time as a machine
I'm showing the site buffer so I'll
keep it right now for your own
discretion anyway getting back to the
talk
so the thing is we have this
sql database and the goal is to keep it
optimized
now why is it better optimized than just
using
orgrom sorry just using default org mode
so in my talk about many big files
versus
a few I keep getting you know you got
what I was saying I'm not going to
repeat it
by the way it is uh 10 to 10.
I'm starting really to be tired now so
uh moving on to
um what did I want to show you so it was
almost yes all the elements
so what I'm going to do I'm going to
see I believe it's org element pass
buffer
so I was telling you about all elements
before
and the main command sorry the main
function that is used by org element
is pass buffer what it does and you can
see the dock string is that it
recursively passed
the buffer and return structure
structure being all the information that
we have in this buffer
so just to show you a little more we're
going to move into a scratch buffer
and what we're going to do is that we're
going to write this command
pass buffer and we're going to check the
output of this command
oh sorry not this one we're going to go
in the index so the index file you have
a title you have a heading you have a
link etc etc
so what I'm going to do I'm going to
evaluate this text
and now at the bottom in the midi buffer
in the mini buffer sorry
you see an ast an abstract
obviously don't remember what the s
stands for semantic
huh interesting anyway a representation
of the data
in a way that is exploitable by a
machine now what I'm going to do
syntax thank you so what I'm going to do
I'm going to paste it inside the buffer
in a way that is humanly readable and
you can see that we have plenty of
information we have a section which
starts at the char
1 which ends at the character 45
we have the content so he makes scratch
oh actually no
never mind I did something wrong I run
it in the wrong buffer
so actually what I'm going to do we're
going to run this command
with the selected window next
window okay that's a bit of live
elise writing for you right now okay so
now if I
evaluate this and paste the content of
the buffer
it is doing its bidding so now what we
have
we have a section we have the keyword
title which you see right here you have
the value
if we scroll down a little bit we have a
heading which is right here we have the
contents
which should be yes the content is not
listed exactly here but you have a
paragraph which is this
and then you have a link etc etc it is
all
uh parenthesis if you're not used to
e-list
like right now I've selected only the
content of the parenthesis link
I can move like this etcetera etcetera
I'm not it's not a needle
lessons that I'm doing right now but
basically
if we were to use the default tooling of
orgrom
org mode sorry I keep getting too
confused sorry for that
uh it would be extremely slow to do what
we're doing some people
are doing so some implementations of the
zettelkassen method inside Emacs have
opted
for this method but the problem is that
we think
that it scales poorly now some other
people
have decided to not do with a database
and what they do is that they use a tool
which is called rip grep
you might know grep which is a tool that
allows you to search
a file the content of a file for a line
so for instance if we open v term here
uh let's see so I've opened the term I
am in this repository what I'm going to
do is that I'm going to
load the content of the file uh
how am I going to do this oh um I need
to move to bash
let's do crap
for the line which links do we did we
have grep foo
inside the file is it three I can
remember okay let's do this
am I working no
let's go for four why is it eight
ah damn it oh you know what I'm just
going to copy the name
up there we go no
ah problem with live presentation always
you know what I'm struggling so I'm
going to drop this point anyway
so grep is a simple tool that allows you
to search the content of a file but
rig grep is a solution that is written
in rust and which is supposed to be
well not supposed which is far more
capable now
I'd like to talk to you about the future
of orgrim right now I've told you about
the general concept which is about using
uh this sql database and about
playing nicely with old mode but
we think that there's something great
that we can do about orgrim
now I've been talking with the a lot of
people who are behind org mode and you
know
they've told us do you think that
orgrom could have something to bring to
old mode let's say
backlinks is there something that we
could be doing to
import backlinks into old mode and
we thought about it with jethro and the
problem is uh
we've always tried to have an
experimental ground a very
uh can a very isolated portion of your
system
where we could track backlinks and
that's why we use um
a slipbox directory so that we only
track backlinks in one specific place
but now because there seems to be so
much interest about the method and we
have so much backing
on uh you know on github we have like
200
2 600 stars which is mind-boggling to us
because we have so much success but
we have plenty of ideas about the future
one of the key
parts of development being the writing
of an external parser for orgrim
so I've been telling you about org
element org elements runs
inside Emacs but what if
we wrote a background process
that could read a file an augment file
extract the same type of data that you
see on your screen right now
so that we could use to update a
database
so that we could use to compute the
links so that we could use it
to show you know orgrim server all the
connections between your nodes
now there is a path of improvement here
that is extremely important to us
but you know that's the technical aspect
and I'm out of time I'm just going to
take one more minute to finish on this
point
but we believe
that orgrim has the potential to be a
think tank
in a way for org mode and the way we
think about
note-taking in general I've stressed a
great deal in my first presentation
sorry the one I did before neura that
all chrome is really great as a way to
think organically about knowledge
and honestly we kind of want to put the
theory into practice with orgrim
we are holding something which has the
potential to be
a great factor of innovation for the
future whether it be or org mode
or even for software in general you know
the way to think about
build nodes of knowledge in a way
and the way to represent all those ids
with the graph
the way to basically have a note-taking
system that
corresponds to the research that
corresponds to the way you think
so yeah I believe we are
really excited about this and if you
want to keep track of the development of
all chrome
I on my youtube channel which is already
linked a little earlier
inside this present inside the pad sorry
I do have a youtube channel where I try
to present novelties
or the new stuff inside um orgrim
but I also be recording videos about the
technical aspects about the direction
that we're taking with orgrim
and if you want to talk with us we are
always
available either on isc channel orgrom
I believe there's a dash between org and
rome but also
on the discourse and I'll be putting all
the links inside the conversation
and that's me done so thank you for
listening and now I'll be taking
three minutes of questions so as to be
right on time
mini thanks for your awesome talk leo
thank you
so I'm just refreshing the page and I'm
going to scroll down to my
talk if I can find the right section
let me just scroll a little bit
uh reproducible Emacs no I think it's
slower
god we have so many questions so at the
same time I'm pissed because I can't
find it
but I'm really really impressed by the
number of questions that we had oh yeah
um which is about I think about line 600
or so
[Music]
yes got it splendid
so um the questions so why not run a
background Emacs for passing instead of
implementing a new parser
so I believe we've had this question uh
I was giving a similar talk
earlier this week and this week
I'm not french this week sorry and
someone asked me this question and the
thing is running a background Emacs
process you know it sounds great
but it's also very limited because all
the problems we have
about concurrency about threads in Emacs
well yes we can forward all our calls to
background Emacs
just like uh you know when you export a
file
with uh um sorry
I mean could you mute microphone when
you're speaking it's a little hard for
me to concentrate
that's fine don't worry you are now uh
so um
dammit where was I I'm sorry the
question yes
so basically forwarding all the
questions uh sorry all our queries to uh
background Emacs
that is what uh org export is doing like
you have the ability to
asynchronously export latex documents
odt documents from
org mode and it uses a very minimal
version of Emacs to do that but the
problem is that we think that it's not
going to scale as well as a true
genuine background process and since we
have been talking a lot
as far as the old mode development is
concerned about
writing a proper parser writing a proper
documentation
for the passing of old mode file and
writing a proper document standard
that says okay this is how the old mode
format works you know to
basically have a way to not fall into
the traps of markdown which has many
many standards
we need to think about this and we
believe that all grown has
the ability to think about these
questions and as a
as a person I'm also really interested
about this so
I can take the question I mean so don't
worry about feeding them to me so how
often does the
db index get updated in order to contain
changes within the
files so we have two ways either we
update as soon as you save a file
or we have a timer which is an idle
timer which waits okay
the user has not imputed inputted
anything in the last
five seconds so it's time to queue a
database
passing a rebuild of the data not a an
incrementation
of the database I should say so
did you ever think of uh I believe I
have one more one more minutes and then
I'll hand it to the other folks
do you ever think of opening up or
designing the sqldb as a general all
speed up tool outside of orgrom so that
other libraries
that do execute complex queries are able
to use it well
a lot of people have been working on
this and I believe alpha papa has been
thinking quite a lot about this you know
all ql
is the ql stands for language
and I I can't remember now what's uh
what's the backend
is for all ql but the idea is relatively
relatively the same you know it's about
finding ways to optimize the way we
store the data about an old mode file
and how we retrieve it
and sql for us seems to seem to be a
good idea now obviously
maybe we could do something about old
mode but the problem is I think a
background process
is not necessarily um in
the core mentality of old mode but it's
definitely a
something that we could suggest uh when
we are a little more mature because well
orgrom was started last february and so
it's a fairly
young project in a way so uh I see
plenty more questions but
I'm out of time folks so I'm not sure uh
the other speaker is probably ready
so what I'll do is I'll probably try to
answer your questions when I get the
time inside the pad
but feel free to ping me on isc
or on the different channels we have
foreground and
I answer them with you know as much
energy as I can gather
all right thank you so much you are now
unmuted
thank you again very much leo and that
was me done for today so you'll see me
at the end but I'm
officially done and I am free of
thoughts I can focus on
sleeping probably awesome
all right see you guys later bye bye