-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 -- cgit v1.2.3