WEBVTT 00:00:00.240 --> 00:00:01.520 ([Amin Bandali]: I mean, we are ahead of the schedule 00:00:01.520 --> 00:00:03.679 a little bit, but I mean we also were 00:00:03.679 --> 00:00:05.680 a little bit earlier in the day. 00:00:05.680 --> 00:00:09.040 Yeah, I'd say that's fine. Go for it. 00:00:09.040 --> 00:00:10.800 Take it away.) 00:00:10.800 --> 00:00:14.240 [Leo Vivier]: Sure. Thank you. So am I live already? 00:00:14.240 --> 00:00:16.640 [Amin]: Yep, you're live. 00:00:16.640 --> 00:00:17.359 [Leo]: Hello 00:00:17.359 --> 00:00:18.880 Splendid. So I'll just start the timer to 00:00:18.880 --> 00:00:20.720 make sure that I don't go overboard. 00:00:20.720 --> 00:00:22.720 All right. ([BBB:] you are now muted) Okay, good 00:00:22.720 --> 00:00:24.160 to go now. 00:00:24.160 --> 00:00:26.960 Hello again, everyone! I hope you had, 00:00:26.960 --> 00:00:28.240 well, quite a lot of talks 00:00:28.240 --> 00:00:30.880 ever since the last one I did, and all 00:00:30.880 --> 00:00:32.000 more interesting 00:00:32.000 --> 00:00:35.040 one after the other. 00:00:35.040 --> 00:00:36.559 You know, I'm a bit in a bit of a weird 00:00:36.559 --> 00:00:38.239 spot right now, because I'm supposed to 00:00:38.239 --> 00:00:40.239 be presenting to you (as you can see on my screen) 00:00:40.239 --> 00:00:42.879 "One big-ass Org file or multiple tiny ones: 00:00:42.879 --> 00:00:44.960 finally, the end of the debate," 00:00:44.960 --> 00:00:48.160 and it sounds about as clickbaity 00:00:48.160 --> 00:00:49.760 as you can possibly get with those 00:00:49.760 --> 00:00:51.280 topics. By the way, 00:00:51.280 --> 00:00:54.000 credit where credit is due, the title 00:00:54.000 --> 00:00:55.760 is not mine. It's actually from Bastien 00:00:55.760 --> 00:00:57.039 Guerry, the current Org 00:00:57.039 --> 00:01:00.719 maintainer. Yeah, I wanted to 00:01:00.719 --> 00:01:03.199 talk to you a little bit today about 00:01:03.199 --> 00:01:04.879 this question because 00:01:04.879 --> 00:01:07.600 if you are used to going on reddit.com/r/emacs , 00:01:07.600 --> 00:01:09.600 you know the subreddit that we have, 00:01:09.600 --> 00:01:11.840 if you go on Hacker News often, you know 00:01:11.840 --> 00:01:13.200 it's a question that 00:01:13.200 --> 00:01:16.000 you see pop up every once in a while. 00:01:16.000 --> 00:01:17.520 "Should I be using 00:01:17.520 --> 00:01:20.640 one big file, or should I be using 00:01:20.640 --> 00:01:24.799 a lot of tiny files?" I believe you know 00:01:24.799 --> 00:01:27.600 we've got defenders on both sides. If I 00:01:27.600 --> 00:01:29.520 just show you one example... 00:01:29.520 --> 00:01:32.479 We have Karl Voit. He's one 00:01:32.479 --> 00:01:35.280 of the organizers for the conference. 00:01:35.280 --> 00:01:37.920 He is the guy who probably has the 00:01:37.920 --> 00:01:40.000 biggest Org Mode files 00:01:40.000 --> 00:01:42.000 right now in all the people I know, and 00:01:42.000 --> 00:01:43.759 god knows I know plenty of people use 00:01:43.759 --> 00:01:44.479 Org Mode. 00:01:44.479 --> 00:01:46.880 But if you just look at this line--I hope 00:01:46.880 --> 00:01:48.320 it's not too small; you just 00:01:48.320 --> 00:01:51.360 make it a little larger--but 00:01:51.360 --> 00:01:56.719 Karl basically has a file with 00:01:56.719 --> 00:02:01.759 126,000 lines. I'm just going to pause 00:02:01.759 --> 00:02:04.560 and try to have you imagine how large a 00:02:04.560 --> 00:02:06.399 file it actually is. 00:02:06.399 --> 00:02:08.399 Just think about all of these lines 00:02:08.399 --> 00:02:10.000 being tasks in your days. 00:02:10.000 --> 00:02:13.200 Think about all those lines being about little thoughts 00:02:13.200 --> 00:02:14.400 you know that you've had throughout the 00:02:14.400 --> 00:02:17.200 day or project that you were working on. 00:02:17.200 --> 00:02:19.680 It's massive. You know one of the 00:02:19.680 --> 00:02:23.920 problems that Karl Voit actually approaches on 00:02:23.920 --> 00:02:27.680 this topic is that it takes him roughly 00:02:27.680 --> 00:02:30.160 20 seconds to get his Org agenda going, 00:02:30.160 --> 00:02:32.400 which is a massive amount of time. 00:02:32.400 --> 00:02:35.680 I mean, we have very fast computers now. 00:02:35.680 --> 00:02:37.720 You know, ever since Emacs was created in 00:02:37.720 --> 00:02:42.319 1976, computers... I have no idea how much faster 00:02:42.319 --> 00:02:43.440 they've gotten. 00:02:43.440 --> 00:02:47.760 And yet, you know, for 100,000 lines, 00:02:47.760 --> 00:02:49.599 Emacs seems to be choking. It's 00:02:49.599 --> 00:02:51.120 certainly not reasonable, in a way, to 00:02:51.120 --> 00:02:52.720 have to wait 20 seconds 00:02:52.720 --> 00:02:55.360 just for your entire file to be parsed. 00:02:55.360 --> 00:02:57.040 So basically what I want to do-- 00:02:57.040 --> 00:02:58.480 By the way, I forgot to introduce the 00:02:58.480 --> 00:03:00.879 presentation, but I'm Leo Vivier. I did this 00:03:00.879 --> 00:03:02.879 before, for those who were around. 00:03:02.879 --> 00:03:05.519 I help maintain a software which 00:03:05.519 --> 00:03:06.640 is called org-roam, 00:03:06.640 --> 00:03:08.560 and that's the expertise that I have on 00:03:08.560 --> 00:03:09.840 the topic. 00:03:09.840 --> 00:03:11.760 Actually, if you go online, I do have a 00:03:11.760 --> 00:03:13.599 Github page. I will make sure that you 00:03:13.599 --> 00:03:15.440 have all the links available afterwards. 00:03:15.440 --> 00:03:18.640 But I do publish my init files, 00:03:18.640 --> 00:03:20.720 and you can see, if you scroll at the 00:03:20.720 --> 00:03:22.319 bottom, I have a little demonstration 00:03:22.319 --> 00:03:23.200 which shows you 00:03:23.200 --> 00:03:25.519 the fancy things that I can do with my 00:03:25.519 --> 00:03:28.159 Org Mode setup. That might be even interesting 00:03:28.159 --> 00:03:30.720 in light of the talk you've just had 00:03:30.720 --> 00:03:32.319 about GTD stuff, because 00:03:32.319 --> 00:03:34.080 the first one is about how I handle my 00:03:34.080 --> 00:03:36.159 projects, the second one is about 00:03:36.159 --> 00:03:39.680 the flow from a task as I work on it... 00:03:39.680 --> 00:03:41.519 So I won't spend too much time on this, but 00:03:41.519 --> 00:03:43.120 basically that's my expertise. 00:03:43.120 --> 00:03:45.440 I have spent eight years 00:03:45.440 --> 00:03:46.959 working with Org Mode, 00:03:46.959 --> 00:03:48.959 three of them actually thinking about 00:03:48.959 --> 00:03:50.720 writing packages. 00:03:50.720 --> 00:03:54.080 The thing is, if I go into a little 00:03:54.080 --> 00:03:55.680 bit of detail (and obviously it's only a 00:03:55.680 --> 00:03:57.760 lighting talk, so I won't have time to 00:03:57.760 --> 00:04:00.720 actually go really in depth about it), but 00:04:00.720 --> 00:04:01.840 there is something 00:04:01.840 --> 00:04:03.599 in the Org Mode library which is 00:04:03.599 --> 00:04:05.200 called org-element. 00:04:05.200 --> 00:04:07.000 You have the name right there, 00:04:07.000 --> 00:04:08.319 org-element.el, 00:04:08.319 --> 00:04:12.319 .el being for Elisp file. As you can see, 00:04:12.319 --> 00:04:14.799 the page is on the Worg wiki, so it's 00:04:14.799 --> 00:04:16.239 accessible by everyone. 00:04:16.239 --> 00:04:19.280 It's basically the API that 00:04:19.280 --> 00:04:23.759 Org Mode uses to parse Org Mode files. 00:04:23.759 --> 00:04:26.400 For those who don't know, parsing 00:04:26.400 --> 00:04:27.199 means basically 00:04:27.199 --> 00:04:29.360 checking a file, checking all the contents 00:04:29.360 --> 00:04:30.880 of the file, and extracting all the 00:04:30.880 --> 00:04:32.880 information that we need from that file. 00:04:32.880 --> 00:04:34.960 As you can imagine, you all have 00:04:34.960 --> 00:04:36.560 Org Mode files in your mind, 00:04:36.560 --> 00:04:38.240 well you know they can be fairly complex. 00:04:38.240 --> 00:04:39.840 You can have properties, 00:04:39.840 --> 00:04:41.759 you can have contextual information, like 00:04:41.759 --> 00:04:43.040 if you write a line 00:04:43.040 --> 00:04:45.199 which starts at column zero (which means 00:04:45.199 --> 00:04:46.560 at the left), 00:04:46.560 --> 00:04:48.000 it doesn't have the same 00:04:48.000 --> 00:04:49.680 meaning, whether or not it is 00:04:49.680 --> 00:04:52.639 before the beginning of a headline or if 00:04:52.639 --> 00:04:54.160 it is after the beginning of a headline. 00:04:54.160 --> 00:04:55.199 It's going to be 00:04:55.199 --> 00:04:57.759 relatively different, hierarchically 00:04:57.759 --> 00:04:58.960 speaking. 00:04:58.960 --> 00:05:02.639 So the problem, when it comes to the question of 00:05:02.639 --> 00:05:05.759 many files versus one big file or 00:05:05.759 --> 00:05:08.560 few big files, is that we always have to 00:05:08.560 --> 00:05:09.600 keep in mind 00:05:09.600 --> 00:05:12.880 what org-element wants you to do. 00:05:12.880 --> 00:05:15.680 The thing is, there are plenty of 00:05:15.680 --> 00:05:17.440 problems when it comes to parsing files, 00:05:17.440 --> 00:05:19.330 the first one being obviously 00:05:19.330 --> 00:05:22.160 that Emacs is a single-thread 00:05:22.160 --> 00:05:24.880 process (or has some threading 00:05:24.880 --> 00:05:26.400 capabilities; we're not going to go into 00:05:26.400 --> 00:05:28.639 the details right now, that's not my goal). 00:05:28.639 --> 00:05:32.400 It makes it incredibly hard to 00:05:32.400 --> 00:05:35.919 parallelize parsing processes 00:05:35.919 --> 00:05:39.280 with the current technology. 00:05:39.280 --> 00:05:42.320 So you'd have to imagine that if you 00:05:42.320 --> 00:05:44.080 have a very large file--if you go back 00:05:44.080 --> 00:05:46.479 to the example of Karl Voit from before: 00:05:46.479 --> 00:05:49.199 100,000 lines--that means that you have 00:05:49.199 --> 00:05:50.000 to scan 00:05:50.000 --> 00:05:52.320 through every single line, basically. 00:05:52.320 --> 00:05:53.759 Because sometimes... Let's just say that 00:05:53.759 --> 00:05:56.080 you have a property drawer, for instance, 00:05:56.080 --> 00:05:59.440 which tells you, oh okay, this tree 00:05:59.440 --> 00:06:03.520 has the tag :foo:. So the problem is, there 00:06:03.520 --> 00:06:05.120 are multiple ways for you 00:06:05.120 --> 00:06:08.720 to define a tag. You can use the 00:06:08.720 --> 00:06:11.840 usual way, which is about wrapping in 00:06:11.840 --> 00:06:14.000 columns the :tag: at the end of a heading. 00:06:14.000 --> 00:06:16.160 For instance, if I... (I'm not going to 00:06:16.160 --> 00:06:17.360 switch to Emacs, that's going to waste too 00:06:17.360 --> 00:06:18.240 much time) 00:06:18.240 --> 00:06:21.520 That's one way to say your tag. But say, 00:06:21.520 --> 00:06:23.520 you have tag inheritance, which means 00:06:23.520 --> 00:06:25.360 that when you have a parent with a tag, 00:06:25.360 --> 00:06:28.160 you also want the child to inherit the 00:06:28.160 --> 00:06:29.520 tag. If you have 00:06:29.520 --> 00:06:32.400 first heading with the tag :foo:, you have 00:06:32.400 --> 00:06:33.680 the first subheading, 00:06:33.680 --> 00:06:37.520 and the tag :foo: is implied. Now imagine 00:06:37.520 --> 00:06:39.680 having to do that with a file that is 00:06:39.680 --> 00:06:41.039 completely nested, 00:06:41.039 --> 00:06:44.160 a file that has maybe 9, 10, 00:06:44.160 --> 00:06:47.280 11 levels of depth to it. 00:06:47.280 --> 00:06:49.039 It's mind-bogglingly complicated for the 00:06:49.039 --> 00:06:51.039 software to do that, knowing that... I've 00:06:51.039 --> 00:06:52.639 told you about tags, 00:06:52.639 --> 00:06:55.919 but any property can be inheritable. 00:06:55.919 --> 00:06:58.639 Anything like priorities, even. Though why 00:06:58.639 --> 00:07:00.240 would you do this? 00:07:00.240 --> 00:07:03.759 You can have groups. You can have all this. 00:07:03.759 --> 00:07:05.599 And as someone who went through the trouble 00:07:05.599 --> 00:07:07.199 of optimizing his Org agenda... So 00:07:07.199 --> 00:07:08.560 basically, if we go back to the 00:07:08.560 --> 00:07:12.160 GIFs--oh god we've already had this discussion 00:07:12.160 --> 00:07:14.479 between the "git" and "magit" and now I've 00:07:14.479 --> 00:07:16.400 started "gif" and "gif" and I only have one 00:07:16.400 --> 00:07:18.080 more minute left to do so, so let's just 00:07:18.080 --> 00:07:19.599 say I'm going to say "gif" 00:07:19.599 --> 00:07:23.599 just to spite people... So if you go on 00:07:23.599 --> 00:07:26.880 the way I organize my agenda, what I did 00:07:26.880 --> 00:07:29.120 in order to keep my agenda build time 00:07:29.120 --> 00:07:30.960 under two seconds, 00:07:30.960 --> 00:07:33.440 is that I've rewritten a whole lot of 00:07:33.440 --> 00:07:36.560 codes to be able to parse my Org agenda files. 00:07:36.560 --> 00:07:40.080 So the thing is, I'm going to be talking 00:07:40.080 --> 00:07:41.360 more about this later. 00:07:41.360 --> 00:07:43.440 I only have, let's say, one minute to 00:07:43.440 --> 00:07:44.479 conclude. 00:07:44.479 --> 00:07:47.440 So as you've gathered, I'm not going to 00:07:47.440 --> 00:07:48.479 be giving you the answer right now. 00:07:48.479 --> 00:07:51.039 I'm going to be talking about 00:07:51.039 --> 00:07:53.440 org-roam a little later, which is about 00:07:53.440 --> 00:07:55.680 following the principle of having many 00:07:55.680 --> 00:07:57.759 small files. 00:07:57.759 --> 00:08:01.120 But as someone who has been using 00:08:01.120 --> 00:08:02.960 one large file to manage my life, 00:08:02.960 --> 00:08:04.879 you know, I'm sitting on the fence. 00:08:04.879 --> 00:08:08.319 I do not know which one is the best, 00:08:08.319 --> 00:08:10.560 but I hope that my presentation has 00:08:10.560 --> 00:08:12.240 given you a little idea 00:08:12.240 --> 00:08:15.199 of what goes on behind the principles. 00:08:15.520 --> 00:08:16.560 You also need to think about the 00:08:16.560 --> 00:08:18.560 philosophy behind the organization of 00:08:18.560 --> 00:08:19.120 your notes. 00:08:19.120 --> 00:08:21.039 I hope to be approaching this topic 00:08:21.039 --> 00:08:23.280 with you in about 00:08:23.280 --> 00:08:25.360 two hours or so (maybe one hour actually). 00:08:25.360 --> 00:08:27.520 I'm actually finished. I've decided to 00:08:27.520 --> 00:08:28.960 leave you two minutes of questions. 00:08:28.960 --> 00:08:31.520 If someone could feed me the 00:08:31.520 --> 00:08:32.880 questions, that might be best, 00:08:32.880 --> 00:08:34.399 because I don't want... oh actually I can 00:08:34.399 --> 00:08:36.240 just open the pad. 00:08:36.240 --> 00:08:39.919 I can just open it. Give me a second, okay. 00:08:40.800 --> 00:08:43.039 Just loading up. I might stop showing 00:08:43.039 --> 00:08:43.839 my screen. 00:08:43.839 --> 00:08:46.959 That might make it easier. So I mean if 00:08:46.959 --> 00:08:47.519 you can make 00:08:47.519 --> 00:08:49.360 myself big now on the screen, that would 00:08:49.360 --> 00:08:52.000 be splendid. ([Amin]: yeah sure) 00:08:52.000 --> 00:08:55.839 Thank you. Where are we... 00:08:55.839 --> 00:08:58.720 Question 12. Okay, so what's better, one 00:08:58.720 --> 00:09:00.160 big file or...? 00:09:00.160 --> 00:09:02.160 Is it a jab to tell me that I 00:09:02.160 --> 00:09:03.120 haven't answered the question because 00:09:03.120 --> 00:09:04.240 someone just 00:09:04.240 --> 00:09:06.320 asked me the question? Well, personally, if 00:09:06.320 --> 00:09:08.080 I were to give you a quick answer in 00:09:08.560 --> 00:09:11.600 20 seconds, personally, I think it's a 00:09:11.600 --> 00:09:13.920 question that is contextually based. 00:09:13.920 --> 00:09:15.680 Do you want something that is efficient 00:09:15.680 --> 00:09:17.839 as far as optimization is concerned? 00:09:17.839 --> 00:09:21.200 Then you need to think about 00:09:21.200 --> 00:09:23.440 this. Personally, for all the 00:09:23.440 --> 00:09:24.640 organization that I do, 00:09:24.640 --> 00:09:27.760 all this stuff, all the TODOs that I handle, 00:09:27.760 --> 00:09:30.080 I like to do this in one simple big file 00:09:30.080 --> 00:09:31.519 because you benefit from all the 00:09:31.519 --> 00:09:33.760 refiling capabilities of Org Mode, 00:09:33.760 --> 00:09:37.200 so I would do that. But for knowledge management, 00:09:37.200 --> 00:09:40.080 for note-taking and all this, well I'd 00:09:40.080 --> 00:09:41.279 much rather follow the 00:09:41.279 --> 00:09:42.959 org-roam way of doing things, which is 00:09:42.959 --> 00:09:44.480 about having many 00:09:44.480 --> 00:09:48.240 small files. I'm not getting any 00:09:48.240 --> 00:09:50.000 more questions. I'm not sure if there is 00:09:50.000 --> 00:09:52.080 one on IRC that could be fed to me. 00:09:52.080 --> 00:09:57.040 Otherwise, I'm happy to pass over to the next speaker. 00:09:57.040 --> 00:09:59.360 By the way, just before I finish, your 00:09:59.360 --> 00:10:01.360 world is a lie. It's not a three-piece 00:10:01.360 --> 00:10:04.399 suit. I'm wearing jeans below, so I hope 00:10:04.399 --> 00:10:06.520 that satisfies your curiosity. 00:10:10.640 --> 00:10:12.640 Okay, there's one more question appearing. 00:10:12.640 --> 00:10:15.040 "but otherwise one big file to have 00:10:15.040 --> 00:10:17.680 everything..." So I'm putting you on the 00:10:17.680 --> 00:10:19.760 spot, I believe. It was such a short talk. 00:10:19.760 --> 00:10:21.040 You know the problem is, 00:10:21.040 --> 00:10:24.720 I just wanted to give you a little answer. 00:10:24.720 --> 00:10:26.959 A little, you know, path of thinking on 00:10:26.959 --> 00:10:27.920 this topic. 00:10:27.920 --> 00:10:29.839 Obviously it's a topic I could be 00:10:29.839 --> 00:10:31.600 spending 40 minutes on, 00:10:31.600 --> 00:10:33.200 but I'm going to be drained, you're going to 00:10:33.200 --> 00:10:35.120 be drained, nobody's going to be happy 00:10:35.120 --> 00:10:35.680 if I do this. 00:10:39.440 --> 00:10:41.200 Someone asked me if I switch between 00:10:41.200 --> 00:10:42.880 British and French accents. 00:10:42.880 --> 00:10:46.560 A little secret for you: 00:10:46.560 --> 00:10:48.480 when I'm stressed, I tend to revert to a 00:10:48.480 --> 00:10:49.760 French accent, 00:10:49.760 --> 00:10:53.760 so you can measure the amount of stress 00:10:53.760 --> 00:10:56.160 that I'm feeling during this talk 00:10:56.160 --> 00:10:58.880 with the amount of h's that I drop and 00:10:58.880 --> 00:11:02.720 the amount of sheer fright that you can see sometimes 00:11:02.720 --> 00:11:04.399 in my eyes, when I'm thinking about what 00:11:04.399 --> 00:11:08.240 to say next. 00:11:08.240 --> 00:11:10.880 All right sir. So, Amin, do you believe 00:11:10.880 --> 00:11:14.240 we can leave it at that? I'll be... 00:11:14.240 --> 00:11:15.519 People will see plenty more of me 00:11:15.519 --> 00:11:17.040 later on, anyway. 00:11:17.040 --> 00:11:20.640 ([Amin:] So, looking at the schedule, I think 00:11:20.640 --> 00:11:23.920 your talk has until like 2:02, meaning 00:11:23.920 --> 00:11:27.120 like five or six minutes from now.) 00:11:27.120 --> 00:11:28.000 Oh, right. 00:11:28.000 --> 00:11:30.000 ([Amin:] So if you do like to take one 00:11:30.000 --> 00:11:31.680 or two questions, to add two more 00:11:31.680 --> 00:11:33.920 questions, by all means.) 00:11:33.920 --> 00:11:37.040 So someone has asked me what is 00:11:37.040 --> 00:11:38.320 the Emacs 00:11:38.320 --> 00:11:40.640 icon (sorry, see, another French accent) 00:11:40.640 --> 00:11:42.880 here in my status bar... 00:11:42.880 --> 00:11:44.880 Oh sorry, I'm not sharing any more. 00:11:44.880 --> 00:11:46.640 I might just share again just so that 00:11:46.640 --> 00:11:49.200 everyone can catch a glimpse of that. 00:11:49.200 --> 00:11:53.120 There we go. Allow... 00:11:53.120 --> 00:11:54.880 So it should be... So if you could make me 00:11:54.880 --> 00:11:56.240 small again, Amin, I'm not sure if it's 00:11:56.240 --> 00:11:56.959 going to do it 00:11:56.959 --> 00:12:00.480 by itself, but I do have a little icon 00:12:00.480 --> 00:12:01.839 here in my status bar 00:12:01.839 --> 00:12:04.480 which is basically a way to interact 00:12:04.480 --> 00:12:05.760 with org-protocol. 00:12:05.760 --> 00:12:09.120 I'm not going to look for it right now, 00:12:09.120 --> 00:12:10.800 but it's a browser extension that is 00:12:10.800 --> 00:12:12.399 developed by one of my friends 00:12:12.399 --> 00:12:15.680 over at Ranger whose name is Li Fong (??) and 00:12:16.160 --> 00:12:18.240 it's very useful. I'm someone who uses a 00:12:18.240 --> 00:12:22.320 lot of Org protocols. And by the way, 00:12:22.320 --> 00:12:25.279 I used to teach English to high schoolers, and they 00:12:25.279 --> 00:12:27.279 were supremely worried 00:12:27.279 --> 00:12:29.600 when I showed them my status line and they 00:12:29.600 --> 00:12:34.000 saw "kill" and "explore" in my status line. 00:12:34.000 --> 00:12:36.560 As fellow Emacs users, you know that 00:12:36.560 --> 00:12:40.880 obviously kill means to kill a selection of text and 00:12:40.880 --> 00:12:44.320 keep it inside your clipboard, 00:12:44.320 --> 00:12:47.279 but for my students, they 00:12:47.279 --> 00:12:48.320 were very worried 00:12:48.320 --> 00:12:51.600 about what their professor was up to 00:12:51.600 --> 00:12:53.600 during his nights. 00:12:53.600 --> 00:12:55.120 So let's see if we've got more questions. 00:12:55.120 --> 00:12:56.560 I'm showing you the questions on the 00:12:56.560 --> 00:12:57.920 rainbow. Let's see if 00:12:57.920 --> 00:13:00.560 we've got more. People are posting a 00:13:00.560 --> 00:13:01.920 lot of questions now. 00:13:01.920 --> 00:13:03.920 So how do you feel about archiving files 00:13:03.920 --> 00:13:06.399 in Org Mode and how can that work? 00:13:06.399 --> 00:13:09.360 So one of the things when we think about 00:13:09.360 --> 00:13:13.920 optimization is: yes, archiving done trees 00:13:13.920 --> 00:13:16.240 is a good idea because it means that if 00:13:16.240 --> 00:13:17.920 we go back to the org-element, the way it 00:13:17.920 --> 00:13:20.399 works (and we'll get into technical details 00:13:20.399 --> 00:13:22.079 afterwards; I'm giving a presentation 00:13:22.079 --> 00:13:24.079 about org-roam technical 00:13:24.079 --> 00:13:26.880 aspects, sorry, so I'll have a chance to 00:13:26.880 --> 00:13:28.399 expand a little more on this) 00:13:28.399 --> 00:13:31.360 but basically, org-element needs to... 00:13:31.360 --> 00:13:35.279 Every time it sees a TODO, it has to consider it, 00:13:35.279 --> 00:13:38.320 even though it is a done TODO. Why? 00:13:38.320 --> 00:13:40.000 Because let's say, for instance, that in 00:13:40.000 --> 00:13:41.839 your agenda you want to activate 00:13:41.839 --> 00:13:45.519 log mode, which is going to show the 00:13:45.519 --> 00:13:48.959 tasks which are done... Now you could be 00:13:48.959 --> 00:13:51.440 clever and say, oh okay, the Org agenda does not 00:13:51.440 --> 00:13:53.360 need to show done items, so it's not going 00:13:53.360 --> 00:13:54.880 to look for them, 00:13:54.880 --> 00:13:56.959 but the problem is that org-element is 00:13:56.959 --> 00:13:59.519 always called. It always needs to parse the buffer. 00:13:59.519 --> 00:14:01.839 You know, Nicolas Goaziou, who is the 00:14:01.839 --> 00:14:03.519 French developer who's worked a whole 00:14:03.519 --> 00:14:05.040 lot on org-element 00:14:05.040 --> 00:14:07.440 has gone through a lot of trouble to 00:14:07.440 --> 00:14:11.600 optimize org-element, but the problem is 00:14:11.600 --> 00:14:13.279 there's just so much that we can do with 00:14:13.279 --> 00:14:14.720 a concurrent process. 00:14:14.720 --> 00:14:18.560 Right now it leaves somewhat 00:14:18.560 --> 00:14:21.120 things to be desired, but 00:14:21.120 --> 00:14:22.079 we're working on it. 00:14:22.079 --> 00:14:24.800 One more time... I feel like I spent 00:14:24.800 --> 00:14:25.839 half of this talk 00:14:25.839 --> 00:14:28.000 teasing my next talks, but I'll be 00:14:28.000 --> 00:14:29.360 talking more about this 00:14:29.360 --> 00:14:31.279 in my future talks in about one to two 00:14:31.279 --> 00:14:32.639 hours. 00:14:32.639 --> 00:14:34.959 So, continuing with questions, how big are 00:14:34.959 --> 00:14:36.079 my Org files? 00:14:36.079 --> 00:14:37.760 So in the background, I'm just going to 00:14:37.760 --> 00:14:40.720 check how many lines I have in my main file. 00:14:40.720 --> 00:14:42.959 In my own file, so the one I told you 00:14:42.959 --> 00:14:44.079 about where I keep all 00:14:44.079 --> 00:14:47.279 my TODO GTD stuff, I have 00:14:47.279 --> 00:14:50.720 38,000 lines, which is... 00:14:50.720 --> 00:14:54.000 It's sizable, definitely. 00:14:54.000 --> 00:14:57.040 But I do archive a lot of stuff, 00:14:57.040 --> 00:14:58.480 so that might be a slight difference 00:14:58.480 --> 00:15:00.880 between myself and Karl Voit, 00:15:00.880 --> 00:15:02.079 even though I don't remember if they 00:15:02.079 --> 00:15:04.880 actually archive stuff. 00:15:04.880 --> 00:15:06.639 So does it not consume more resources 00:15:06.639 --> 00:15:08.480 and time to load multiple files 00:15:08.480 --> 00:15:10.839 files than a large file or the same 00:15:10.839 --> 00:15:12.560 content now? 00:15:12.560 --> 00:15:15.839 Theoretically, yes, having many files 00:15:15.839 --> 00:15:19.279 open concurrently is slightly slower 00:15:19.279 --> 00:15:22.240 than having one main file opened. 00:15:22.240 --> 00:15:24.160 Now the problem is for those of you who 00:15:24.160 --> 00:15:25.279 have large files, 00:15:25.279 --> 00:15:27.199 you may have noticed that when you are 00:15:27.199 --> 00:15:29.360 scrolling in a very large file, 00:15:29.360 --> 00:15:32.560 it starts taking quite a bit of time. Why? 00:15:32.560 --> 00:15:34.480 It's because in Org Mode, 00:15:34.480 --> 00:15:35.920 you have a lot of content 00:15:35.920 --> 00:15:38.959 that is hidden, so when you have 00:15:38.959 --> 00:15:40.959 the view mode which hides as much stuff 00:15:40.959 --> 00:15:43.600 as possible, meaning that you only see 00:15:43.600 --> 00:15:45.360 the top heading--and I'm checking the 00:15:45.360 --> 00:15:46.880 time, Amin, don't worry, I'm finished 00:15:46.880 --> 00:15:50.240 on this one-- 00:15:50.240 --> 00:15:52.160 when you're hiding a whole lot of stuff, 00:15:52.160 --> 00:15:54.720 Org Mode needs to keep track, or I should say, 00:15:54.720 --> 00:15:56.959 Emacs needs to keep track of which areas 00:15:56.959 --> 00:15:58.160 of text to show 00:15:58.160 --> 00:16:00.560 and which areas of text to hide. 00:16:00.560 --> 00:16:02.320 The problem is that when you're hiding stuff-- 00:16:02.320 --> 00:16:04.480 let's say you're moving from the 00:16:04.480 --> 00:16:06.320 first heading to the second heading, 00:16:06.320 --> 00:16:08.639 but you've got like 10,000 lines between 00:16:08.639 --> 00:16:09.839 those two headings-- 00:16:09.839 --> 00:16:11.519 well, Emacs needs to compute the 00:16:11.519 --> 00:16:13.680 difference between the two passages, 00:16:13.680 --> 00:16:15.680 and that takes quite a lot of time. 00:16:15.680 --> 00:16:18.560 That's why you might realize that it's a little 00:16:18.560 --> 00:16:21.199 choppy when you start scrolling in large files. 00:16:21.199 --> 00:16:22.560 Anyway I could be answering questions 00:16:22.560 --> 00:16:25.120 about Org Mode for literally two hours straight, 00:16:25.120 --> 00:16:26.720 so I'm gonna hand it over to the next 00:16:26.720 --> 00:16:28.639 speakers. I'll be seeing 00:16:28.639 --> 00:16:31.759 you guys a little later. ([Amin]: Thank you 00:16:31.759 --> 00:16:33.440 very much, Leo.) 00:16:33.440 --> 00:16:36.959 Oh, thank you. ([Amin:] Yes. Bye.) 00:16:36.959 --> 00:16:39.839 Bye.