diff options
author | Sacha Chua <sacha@sachachua.com> | 2024-12-13 11:03:03 -0500 |
---|---|---|
committer | Sacha Chua <sacha@sachachua.com> | 2024-12-13 11:03:03 -0500 |
commit | 1147abeaa0686a5ae3c71df674ccd709b4b3617f (patch) | |
tree | 3254abd08a949d665ed0d2a1fa853cf917241f89 /2024 | |
parent | d99364ed2b2d51acdf668525d5b449a25d8a37c0 (diff) | |
download | emacsconf-wiki-1147abeaa0686a5ae3c71df674ccd709b4b3617f.tar.xz emacsconf-wiki-1147abeaa0686a5ae3c71df674ccd709b4b3617f.zip |
Diffstat (limited to '2024')
24 files changed, 19494 insertions, 3 deletions
diff --git a/2024/captions/emacsconf-2024-blee--about-blee-towards-an-integrated-emacs-environment-for-enveloping-our-own-autonomy-directed-digital-ecosystem--mohsen-banan--answers.vtt b/2024/captions/emacsconf-2024-blee--about-blee-towards-an-integrated-emacs-environment-for-enveloping-our-own-autonomy-directed-digital-ecosystem--mohsen-banan--answers.vtt new file mode 100644 index 00000000..47d7b53b --- /dev/null +++ b/2024/captions/emacsconf-2024-blee--about-blee-towards-an-integrated-emacs-environment-for-enveloping-our-own-autonomy-directed-digital-ecosystem--mohsen-banan--answers.vtt @@ -0,0 +1,533 @@ +WEBVTT + +00:00:00.000 --> 00:00:04.199 +Thank you for the talk. I mean, it was a fairly long one and we + +00:00:04.200 --> 00:00:07.999 +had two very distinct parts, one which dealt with a + +00:00:08.000 --> 00:00:12.079 +philosophy of Libre-Halaal software and then the application, + +00:00:12.080 --> 00:00:14.279 +obviously, of Bisos. So thank you so much for the + +00:00:14.280 --> 00:00:17.839 +presentation. Before we get started with the question, and + +00:00:17.840 --> 00:00:21.799 +for the record, we have about 14 minutes of question time, is + +00:00:21.800 --> 00:00:25.079 +there anything that you'd like to add on top of your + +00:00:25.080 --> 00:00:27.759 +presentation, something that perhaps would not have fit in + +00:00:27.760 --> 00:00:33.399 +the actual presentation format? Sure, but prior to that, + +00:00:33.400 --> 00:00:37.839 +félicitations à tous les Français pour le rouvrir de + +00:00:37.840 --> 00:00:42.719 +Notre-Dame. Thank you. I'll say thank you because I'm a + +00:00:42.720 --> 00:00:48.039 +Francophone and I'm also French, but OK. + +00:00:48.040 --> 00:00:58.159 +Yeah, so a few things have come up in various other talks, + +00:00:58.160 --> 00:01:04.359 +that kind of EmacsConf 2024 talks, that kind of dovetail + +00:01:04.360 --> 00:01:10.599 +with what I was saying. One idea was Peter Prevos's + +00:01:10.600 --> 00:01:20.639 +observation of working with Emacs versus working on Emacs. + +00:01:20.640 --> 00:01:28.279 +And I'm all for that. So the idea of BLEE is that + +00:01:28.280 --> 00:01:32.599 +Others can package things, and we are seeing this in the form + +00:01:32.600 --> 00:01:38.119 +of redistributions. There is Doom, there is Space Max, and + +00:01:38.120 --> 00:01:44.079 +we are seeing the evolution of Emacs into layers. So there is + +00:01:44.080 --> 00:01:50.119 +the core Emacs, and there are layers on top of it. And Peter + +00:01:50.120 --> 00:01:59.799 +also mentioned about too much choice, this notion of + +00:01:59.800 --> 00:02:08.919 +Not always too much choice is the right thing to have. And + +00:02:08.920 --> 00:02:18.279 +packaging Emacs with a layer on top of Debian gives you a + +00:02:18.280 --> 00:02:24.159 +platform and an environment where the choices are a lot + +00:02:24.160 --> 00:02:31.159 +less. And that is not necessarily a bad thing. + +00:02:31.160 --> 00:02:36.719 +So that was one idea. The other idea or the other theme + +00:02:36.720 --> 00:02:42.919 +throughout the various talks that we saw was this concept of + +00:02:42.920 --> 00:02:53.519 +mixing org mode with programming languages and What Babel + +00:02:53.520 --> 00:03:00.479 +has done is two things. One is it has successfully + +00:03:00.480 --> 00:03:06.799 +integrated org mode with all kinds of languages. And that + +00:03:06.800 --> 00:03:13.039 +has happened in the context of literate programming. Um, so + +00:03:13.040 --> 00:03:16.839 +a talk coming after mine is literate programming for the + +00:03:16.840 --> 00:03:22.399 +21st century, mixing org mode with program languages. And + +00:03:22.400 --> 00:03:27.359 +what I am saying is that there is an alternative and that's + +00:03:27.360 --> 00:03:33.839 +great, but we should also, uh, consider a traditional + +00:03:33.840 --> 00:03:40.159 +programming mixed with org mode and, um, Polymode is key to + +00:03:40.160 --> 00:03:49.239 +that. So those were some of the key concepts that I saw a + +00:03:49.240 --> 00:03:55.799 +resonance with as the conference went forward. Yeah, and I + +00:03:55.800 --> 00:03:59.959 +think, if my memory serves me right, we have another talk + +00:03:59.960 --> 00:04:04.199 +about hyperbole this year, right after this Q&A session. + +00:04:04.200 --> 00:04:07.919 +And hyperbole, it's not Org Mode, but I'm not sure if you're + +00:04:07.920 --> 00:04:10.359 +familiar with it, Mohsen, you might have seen it from + +00:04:10.360 --> 00:04:14.639 +various talks last year, but it also tends to have a similar + +00:04:14.640 --> 00:04:18.919 +stance than you, with the fact that text should be embedded + +00:04:18.920 --> 00:04:21.919 +in programming languages rather than having Org Mode + +00:04:21.920 --> 00:04:25.439 +implement, I mean, integrate other languages. And I found + +00:04:25.440 --> 00:04:28.359 +it funny that we have your talk and this talk which are about + +00:04:28.360 --> 00:04:32.999 +the other direction, which I find very resonating as well. + +00:04:33.000 --> 00:04:40.439 +Right, right, right. So in terms of other things that did not + +00:04:40.440 --> 00:04:46.999 +fit into my talk is that the several concepts that I + +00:04:47.000 --> 00:04:49.599 +introduced, namely + +00:04:49.600 --> 00:04:57.879 +dynamic blocks everywhere and COMEEGA. + +00:04:57.880 --> 00:05:07.719 +I'd be happy to expand on those by sharing your screen in due + +00:05:07.720 --> 00:05:12.519 +course, whatever is appropriate. Sure, considering the + +00:05:12.520 --> 00:05:16.119 +time that we have, we only have about 8 minutes 30 and we + +00:05:16.120 --> 00:05:18.999 +already have about four, five questions actually. I + +00:05:19.000 --> 00:05:22.599 +suggest we perhaps leave the screen sharing until later if + +00:05:22.600 --> 00:05:25.399 +people are interested. I mean this Q&A can last as long as you + +00:05:25.400 --> 00:05:30.079 +want. That makes perfect sense. OK, cool. So how about we + +00:05:30.080 --> 00:05:33.279 +focus on the question now and starting with the first one. + +NOTE Q: I'm from Brazil, which edition would you recommend? + +00:05:33.280 --> 00:05:36.279 +You mentioned that there are two editions, one named at + +00:05:36.280 --> 00:05:40.159 +Westerners and one for worldwide readers. I'm from Brazil. + +00:05:40.160 --> 00:05:42.599 +Which edition would you recommend? It's a Western country, + +00:05:42.600 --> 00:05:45.479 +but you didn't make the distinction exclusive for the + +00:05:45.480 --> 00:05:48.199 +second edition. So I thought it would be better to ask. + +00:05:48.200 --> 00:05:56.119 +Right. So definitely, I would say for everybody who is on + +00:05:56.120 --> 00:06:01.959 +this conference, the international edition is the right + +00:06:01.960 --> 00:06:11.639 +choice. In this book, I take some aggressive stance against + +00:06:11.640 --> 00:06:19.279 +intellectual property and I link that specifically to the + +00:06:19.280 --> 00:06:27.439 +American culture. So there are pieces in the book where the + +00:06:27.440 --> 00:06:36.399 +typical American audience may be offended. And if your skin + +00:06:36.400 --> 00:06:43.279 +is thick enough to deal with what I consider reasonable + +00:06:43.280 --> 00:06:48.319 +criticism, then the International Edition is definitely + +00:06:48.320 --> 00:06:54.439 +the better choice. Right. So yeah, I believe you also + +00:06:54.440 --> 00:06:56.959 +mentioned it. Pretty much exactly the same thing in your + +00:06:56.960 --> 00:07:00.239 +talk. So if you need to review, just watch the talk. And I + +00:07:00.240 --> 00:07:03.439 +think Mohsen also provides extra information about this. + +00:07:03.440 --> 00:07:07.079 +Moving on to the second question. Thank you for this talk. + +NOTE Q: Thank you for this talk! How does your perspective interface with works such as Yanis Varoufakis' Technofeudalism? + +00:07:07.080 --> 00:07:10.319 +How does your perspective interface with work such as Yanis + +00:07:10.320 --> 00:07:14.639 +Varoufakis' Technofeudalism? + +00:07:14.640 --> 00:07:24.919 +I haven't read much of that. I think there is a whole lot of + +00:07:24.920 --> 00:07:34.199 +global growth and collective understanding towards this + +00:07:34.200 --> 00:07:42.479 +notion that the direction we are headed in And by that, I mean + +00:07:42.480 --> 00:07:46.879 +American digital ecosystems + +00:07:46.880 --> 00:07:53.159 +are dangerous and that we should revisit + +00:07:53.160 --> 00:08:03.239 +the entirety of the model and strategy. + +00:08:03.240 --> 00:08:10.119 +If the person who asked the question has any additional + +00:08:10.120 --> 00:08:16.119 +information, I'll be happy to hear it. Sure. We'll see if the + +00:08:16.120 --> 00:08:19.559 +person actually comes back to this. All right. In the + +00:08:19.560 --> 00:08:21.979 +meantime, moving on to the next question. + +NOTE Q: To what extent do you agree that the introduction of proprietary systems in education creates an environment for exploitation while at the same time diluting the learning value of the curriculum? + +00:08:21.980 --> 00:08:22.959 +To what extent do + +00:08:22.960 --> 00:08:25.519 +you agree that the introduction of proprietary systems in + +00:08:25.520 --> 00:08:29.279 +education creates an environment for exploitation whilst + +00:08:29.280 --> 00:08:31.679 +at the same time diluting the learning value of the + +00:08:31.680 --> 00:08:34.879 +curriculum? My computing education at school amounted to + +00:08:34.880 --> 00:08:38.399 +learning how to use the Microsoft Office suite, i.e. the + +00:08:38.400 --> 00:08:44.679 +opposite of lasting open knowledge. Yeah, that's right on + +00:08:44.680 --> 00:08:49.719 +the mark. That's right on the mark. So the idea is that + +00:08:49.720 --> 00:08:55.919 +teaching and learning should be unrestricted. In the + +00:08:55.920 --> 00:09:02.479 +Muslim tradition and in Iranian tradition, we say that + +00:09:02.480 --> 00:09:12.919 +passing along the learning is the tax on having learned. So + +00:09:12.920 --> 00:09:20.359 +absolutely. I think it makes very little sense for the + +00:09:20.360 --> 00:09:27.039 +proprietary Microsoft software to be used as part of + +00:09:27.040 --> 00:09:33.519 +education. So the question is right on the mark. Okay, + +00:09:33.520 --> 00:09:38.519 +great. Let me just take a note of this. All right, moving on to + +00:09:38.520 --> 00:09:40.052 +the next question. + +NOTE Q: As a specific example of how "ownership is not clean" ... + +00:09:40.053 --> 00:09:43.359 +As a specific example of how ownership is + +00:09:43.360 --> 00:09:46.239 +not something clean, look at the Star Trek Picard series. + +00:09:46.240 --> 00:09:48.839 +They continuously asked Patrick Stewart to come to do + +00:09:48.840 --> 00:09:52.159 +another Star Trek series, but he couldn't because Star Trek + +00:09:52.160 --> 00:09:54.959 +changed from what it used to be, at least until they came up + +00:09:54.960 --> 00:09:57.999 +with a series that honored what Star Trek used to be. Does + +00:09:58.000 --> 00:10:21.839 +this intersect? Let me read this for a moment. + +00:10:21.840 --> 00:10:30.599 +Yeah, I am not sure I fully get the point, but. Let me make a + +00:10:30.600 --> 00:10:35.959 +point about my criticisms of the false movement + +00:10:35.960 --> 00:10:47.399 +in the presentation and in the book. The idea is that we have + +00:10:47.400 --> 00:10:53.919 +jumped on the false movement and recognize it as an + +00:10:53.920 --> 00:11:02.279 +alternative But we haven't looked deeply enough to see if + +00:11:02.280 --> 00:11:07.759 +our own philosophy and movement have problems. The + +00:11:07.760 --> 00:11:14.959 +problems that I note is that The first movement does not + +00:11:14.960 --> 00:11:21.279 +recognize clearly and explicitly that the entirety of the + +00:11:21.280 --> 00:11:30.399 +intellectual property rights regime is flawed. The second + +00:11:30.400 --> 00:11:37.239 +piece is that it's only now that we are seeing the FOSS + +00:11:37.240 --> 00:11:45.479 +movement is broader than the Western world. The third + +00:11:45.480 --> 00:11:54.919 +problem is that the labels of free software and open source + +00:11:54.920 --> 00:12:01.159 +are not necessarily correct. The fourth problem is that we + +00:12:01.160 --> 00:12:07.239 +are not paying enough attention to establishing a + +00:12:07.240 --> 00:12:09.999 +relationship with society. + +00:12:10.000 --> 00:12:16.439 +So there's a whole chapter in the book dedicated to this + +00:12:16.440 --> 00:12:23.959 +topic. What I'm not sure about is if I got the point of the + +00:12:23.960 --> 00:12:30.279 +question correctly. So again, if the person who asked the + +00:12:30.280 --> 00:12:35.679 +question could clarify, I'll be happy to further expand. + +00:12:35.680 --> 00:12:40.279 +Okay, considering the time, we only have about one minute to + +00:12:40.280 --> 00:12:42.959 +ten seconds until we go. So what we're going to do, as we + +00:12:42.960 --> 00:12:45.439 +usually do, Mohsen, is that we're going to move the stream + +00:12:45.440 --> 00:12:47.839 +onto the next talk. And if you want to take a little bit of time + +00:12:47.840 --> 00:12:51.799 +in this room to answer the question, I'm putting a link to the + +00:12:51.800 --> 00:12:56.519 +pad in the BBB chat so you can open it on your end. But as we are + +00:12:56.520 --> 00:12:59.319 +still live for 15 more seconds, do you have any last words? + +00:12:59.320 --> 00:13:09.039 +Keep up the good work. Those would be my last words, that the + +00:13:09.040 --> 00:13:14.239 +free software and the open source and Emacs are a very valid + +00:13:14.240 --> 00:13:24.479 +strategy for inside of IPR resistance. And thank you, Leo + +00:13:24.480 --> 00:13:29.719 +and Sacha and the rest of the folks for this wonderful yearly + +00:13:29.720 --> 00:13:33.559 +event. Well, thank you so much. And it's always a pleasure to + +00:13:33.560 --> 00:13:36.119 +have you. And thank you for your thankings. So we'll be + +00:13:36.120 --> 00:13:38.439 +moving to the next talk in 10 seconds. Mohsen, thank you so + +00:13:38.440 --> 00:13:47.559 +much. And I'll see you later. Thank you. Bye-bye. Bye. + +00:13:47.560 --> 00:13:50.159 +All right. We are off air. So thank you so much, Mohsen. I'll + +00:13:50.160 --> 00:13:52.559 +need to get moving to get ready for the next talk. So again, + +00:13:52.560 --> 00:13:54.519 +feel free to take the time you need to answer the questions. + +00:13:54.520 --> 00:13:56.719 +I'm going to stop sharing my screen because I need to leave. + +00:13:56.720 --> 00:13:59.319 +But take all the time you need. And when you're finished, you + +00:13:59.320 --> 00:14:04.039 +can just leave the room. OK. All right, bye-bye. Thank you. + +00:14:04.040 --> 00:14:23.439 +Great. I see one more person in the room. + +00:14:23.440 --> 00:14:35.679 +Hi, John. + +00:14:35.680 --> 00:14:38.079 +I was looking at the questions. + +00:14:38.080 --> 00:14:46.239 +To see if there is more that I can add. So. + +00:14:46.240 --> 00:14:54.919 +through the regard of societal impacts on ethical, + +00:14:54.920 --> 00:14:58.439 +philosophical and wider force community. I'm involved in + +00:14:58.440 --> 00:15:02.239 +politics in my country, my party is very sympathetic to + +00:15:02.240 --> 00:15:05.277 +force ideas and I have public... + +NOTE Q: Do you have any recommended reading materials designed for such an audience? + +00:15:05.278 --> 00:15:08.039 +Do you have any recommendation + +00:15:08.040 --> 00:15:12.359 +to reading materials designed for such an audience? Um, + +00:15:12.360 --> 00:15:17.999 +yeah, this is with regard to the last question + +00:15:18.000 --> 00:15:24.439 +that's on the etherpad at this moment. The idea is + +00:15:24.440 --> 00:15:32.199 +that my own book would be an excellent resource. I'd + +00:15:32.200 --> 00:15:39.279 +say the bibliography in the book contains various + +00:15:39.280 --> 00:15:43.039 +other pointers that could be quite useful. + +00:15:43.040 --> 00:15:55.399 +I'm reading again. + +00:15:55.400 --> 00:15:57.799 +Yeah. + +00:15:57.800 --> 00:16:20.159 +Very good. If there are no other questions, + +00:16:20.160 --> 00:16:31.839 +I think I'm going to consider this a day and move on. + +00:16:31.840 --> 00:16:43.760 +Thank you. diff --git a/2024/captions/emacsconf-2024-casual--reimagining-the-emacs-user-experience-with-casual-suite--charles-choi--answers.vtt b/2024/captions/emacsconf-2024-casual--reimagining-the-emacs-user-experience-with-casual-suite--charles-choi--answers.vtt new file mode 100644 index 00000000..7c6db8c8 --- /dev/null +++ b/2024/captions/emacsconf-2024-casual--reimagining-the-emacs-user-experience-with-casual-suite--charles-choi--answers.vtt @@ -0,0 +1,966 @@ +WEBVTT + +NOTE Opening + +00:00:00.000 --> 00:00:05.239 +Leo? I'm doing well as well and I'm so happy to have seen your + +00:00:05.240 --> 00:00:10.719 +talk because the interaction with Emacs is always + +00:00:10.720 --> 00:00:13.719 +something that I find very interesting, and stuff like + +00:00:13.720 --> 00:00:18.839 +Transient, stuff like Hydra before, I think they really + +00:00:18.840 --> 00:00:22.119 +improve the user experience of users, and I'm really glad + +00:00:22.120 --> 00:00:24.479 +that I've seen you talk. Perhaps just starting with the + +00:00:24.480 --> 00:00:27.639 +first question, do you have anything else that you'd like to + +00:00:27.640 --> 00:00:30.719 +add on your talk? Because we are pretty stringent with the + +00:00:30.720 --> 00:00:33.199 +amount of time that we give for talks, but is there anything + +00:00:33.200 --> 00:00:35.639 +that you would have liked to mention to people that you + +00:00:35.640 --> 00:00:42.719 +weren't able to fit into the talk? I think probably one of the + +00:00:42.720 --> 00:00:46.599 +design considerations I've done is that many of the + +00:00:46.600 --> 00:00:49.359 +commands that I've exposed through my casual interfaces + +00:00:49.360 --> 00:00:56.399 +have been in Emacs. They've been in there forever, but very + +00:00:56.400 --> 00:01:00.439 +few people uh, myself included really know that they're + +00:01:00.440 --> 00:01:05.999 +there, uh, because they're just not discoverable through, + +00:01:06.000 --> 00:01:09.559 +uh, basically the existing mechanisms, you know, prior to + +00:01:09.560 --> 00:01:13.479 +transient and which key to, to even know that those, those + +00:01:13.480 --> 00:01:19.399 +functions are there. Yeah. So I think I'm going to start + +00:01:19.400 --> 00:01:21.519 +asking you questions whilst people start writing them in a + +00:01:21.520 --> 00:01:25.759 +pad. But yeah, I also think that discoverability is a very + +00:01:25.760 --> 00:01:29.559 +huge point that having stuff like the stuff that you've + +00:01:29.560 --> 00:01:32.679 +showed today actually allows. One example that I'd like to + +00:01:32.680 --> 00:01:35.759 +give that many people tend to forget, and you've already + +00:01:35.760 --> 00:01:39.559 +mentioned it in your presentation, is that I've learned so + +00:01:39.560 --> 00:01:43.479 +much about using git in general thanks to Magit, for the + +00:01:43.480 --> 00:01:46.719 +reason that it shows you so many options that you might not be + +00:01:46.720 --> 00:01:50.799 +aware of. For instance, I like to really think about when + +00:01:50.800 --> 00:01:54.519 +you think about logging in git, Magit allows you to + +00:01:54.520 --> 00:01:58.119 +discover so many of the finer options, like I only want to + +00:01:58.120 --> 00:02:01.519 +see the first commit since the merge, or I only want to + +00:02:01.520 --> 00:02:05.999 +consider this subsection of commits going from master or + +00:02:06.000 --> 00:02:08.999 +main to the point of your branch. So many things like this + +00:02:09.000 --> 00:02:11.759 +that you get to discover thanks to Transient. So do you have + +00:02:11.760 --> 00:02:16.879 +any similar experience on your end? Oh yeah, far too + +00:02:16.880 --> 00:02:22.359 +many, particularly with EditKit, + +00:02:22.360 --> 00:02:28.279 +having access to these commands, + +00:02:28.280 --> 00:02:31.771 +particularly with different granularity on + +00:02:31.772 --> 00:02:34.773 +S-expressions, sentences, words... + +00:02:34.774 --> 00:02:37.395 +Probably the most surprising thing I found + +00:02:37.396 --> 00:02:43.021 +was just how how compelling the + +00:02:43.022 --> 00:02:49.054 +S-expression would be as a unit of text for working with. + +00:02:49.055 --> 00:02:53.988 +I found that in most contexts, or in many places, + +00:02:53.989 --> 00:03:02.719 +it did what I wanted. I found that to be very surprising. + +00:03:02.720 --> 00:03:06.159 +So unless you've got anything else to add, I think we can just + +00:03:06.160 --> 00:03:10.639 +jump into questions. Okay, certainly. I'll be reading them + +00:03:10.640 --> 00:03:13.599 +for you so that it's easier for you. So the first question is, + +NOTE Q: I wonder whether casual can only be used with the packages you + +00:03:13.600 --> 00:03:17.599 +I wonder whether casual can only be used with the packages + +00:03:17.600 --> 00:03:19.599 +you mentioned or whether it can be used with whatever + +00:03:19.600 --> 00:03:25.399 +packages you like. I think it's really the latter. I'm not + +00:03:25.400 --> 00:03:29.879 +quite sure what the... What the question was really + +00:03:29.880 --> 00:03:35.039 +pointing at, you know, is the question asking for why I chose + +00:03:35.040 --> 00:03:41.679 +the packages or the different modes that I did? Or is it, are + +00:03:41.680 --> 00:03:45.519 +they looking at it from a developer perspective of, can we + +00:03:45.520 --> 00:03:50.399 +integrate casual with other packages? I mean, since we've + +00:03:50.400 --> 00:03:52.839 +got a little bit of time ahead of us, feel free to answer both + +00:03:52.840 --> 00:03:59.279 +questions. Um, I think the answer is, uh. Well, for the 1st, + +00:03:59.280 --> 00:04:05.599 +1, I've, I've generally tried to stick with using. The modes + +00:04:05.600 --> 00:04:11.039 +that are already packaged in, um, and so there was a. A big + +00:04:11.040 --> 00:04:16.759 +refactoring of it where. Initially, I made separate repos + +00:04:16.760 --> 00:04:20.879 +for the different modes that I supported. And then through a + +00:04:20.880 --> 00:04:24.959 +discussion, which I won't go into here, that got changed + +00:04:24.960 --> 00:04:30.239 +where I consolidated all of the different transient menus + +00:04:30.240 --> 00:04:35.039 +for modes that are built in for behavior that's built into + +00:04:35.040 --> 00:04:39.199 +the Emacs. I put that into a single package called casual. + +00:04:39.200 --> 00:04:44.799 +And then integrations with other third party packages that + +00:04:44.800 --> 00:04:49.879 +are not built in were given the same standalone repo here. In + +00:04:49.880 --> 00:04:55.719 +terms of folks wanting to integrate that, it's the beauty of + +00:04:55.720 --> 00:05:01.159 +open source. They can get the repo and uh, and basically + +00:05:01.160 --> 00:05:05.199 +study that the code base, uh, actually, if they even install + +00:05:05.200 --> 00:05:08.599 +it through, uh, you know, the package manager in this case, + +00:05:08.600 --> 00:05:12.679 +uh, coming from the Melbourne distribution, um, they can + +00:05:12.680 --> 00:05:17.919 +inspect that code and, and, um, make modifications or even. + +00:05:17.920 --> 00:05:21.519 +uh, you know, integrate that with their other packages and, + +00:05:21.520 --> 00:05:25.279 +uh, do that to their heart's content. Um, I think one of the + +00:05:25.280 --> 00:05:29.639 +things that I need to, or at least, uh, you know, that I, I, I + +00:05:29.640 --> 00:05:32.519 +planned on sort of elaborating further on in the + +00:05:32.520 --> 00:05:36.399 +documentation is, is that transient already has built in + +00:05:36.400 --> 00:05:41.279 +mechanisms for modifying an existing transient. So you can + +00:05:41.280 --> 00:05:47.279 +add commands or, uh, re redefine the bindings. And so. That + +00:05:47.280 --> 00:05:51.959 +mechanism is available for users if they're not happy with + +00:05:51.960 --> 00:05:57.159 +those bindings or they want to add their own commands to a + +00:05:57.160 --> 00:06:01.959 +menu. Yeah, and people are... I'm personally familiar with + +00:06:01.960 --> 00:06:05.119 +this, again, with Magit, because sometimes, even though + +00:06:05.120 --> 00:06:07.479 +you have a lot of discoverability for functions that you may + +00:06:07.480 --> 00:06:10.359 +not know, sometimes you also happen to realize that + +00:06:10.360 --> 00:06:13.999 +something is missing in the list of available options. I'm + +00:06:14.000 --> 00:06:16.919 +not sure if Casual actually supports something similar to + +00:06:16.920 --> 00:06:21.559 +Magit, which is levels of options being displayed. + +00:06:21.560 --> 00:06:24.039 +Actually, I'm not sure if it's transient native or if it's + +00:06:24.040 --> 00:06:27.439 +just something that Magit adds over this. No, transient + +00:06:27.440 --> 00:06:30.599 +supports levels. I've decided + +00:06:30.600 --> 00:06:36.799 +in large part, I've tried to avoid that just to avoid the + +00:06:36.800 --> 00:06:43.119 +added complexity of trying to define those levels. Yeah, I + +00:06:43.120 --> 00:06:47.479 +was going to say that perhaps it doesn't gel very well with + +00:06:47.480 --> 00:06:49.839 +the notion of casualness that you seem to be introducing the + +00:06:49.840 --> 00:06:52.439 +package. On one end, you've got something that is supposed + +00:06:52.440 --> 00:06:56.639 +to be very casual, very easy to use, and on the other end, you + +00:06:56.640 --> 00:06:59.599 +add levels for stuff that is fairly advanced. So advanced + +00:06:59.600 --> 00:07:05.759 +versus casual, kind of makes sense that you check this over. + +00:07:05.760 --> 00:07:09.359 +Alright, moving to the second question which is related to + +00:07:09.360 --> 00:07:10.853 +the previous one. + +NOTE Q: Are there any patterns emerging, such that it would seem possible to 1) systematize 2) automate(?) the mapping of mode commands to keyboard-driven menus? Possibly even have an auto casual wrapper for an uncovered mode? + +00:07:10.854 --> 00:07:13.159 +Are there any patterns emerging such that + +00:07:13.160 --> 00:07:15.639 +it would be impossible, sorry, such that it would be + +00:07:15.640 --> 00:07:19.719 +possible to once systematize and to automate the mapping of + +00:07:19.720 --> 00:07:23.519 +mode commands to keyboard-driven menus, possibly even + +00:07:23.520 --> 00:07:26.559 +have an auto-casual wrapper for an uncovered mode? Does it + +00:07:26.560 --> 00:07:35.519 +make sense to you? Yes, and I've gotten these comments from a + +00:07:35.520 --> 00:07:42.799 +number of different folks who really want to see some sort + +00:07:42.800 --> 00:07:49.639 +of design rule to, or basically, what is it? Some sort of + +00:07:49.640 --> 00:07:54.679 +design system to be able to generate the UI. + +00:07:54.680 --> 00:08:01.399 +Conceptually, I think it's doable, but on the flip side, it + +00:08:01.400 --> 00:08:05.319 +just requires so much coordination that it makes it really + +00:08:05.320 --> 00:08:11.199 +untenable. In this case, I have very strong opinions. I + +00:08:11.200 --> 00:08:15.719 +think we're better off trying to handcraft the user + +00:08:15.720 --> 00:08:20.759 +interface to get basically the best user experience. To try + +00:08:20.760 --> 00:08:26.399 +to emulate that with a design system, good luck, but I'm not + +00:08:26.400 --> 00:08:31.519 +I'm not interested in working on that. Right, yeah. I think + +00:08:31.520 --> 00:08:34.119 +if I try to think a little more about this, it feels like + +00:08:34.120 --> 00:08:36.559 +there's a notion of intention that is very important when + +00:08:36.560 --> 00:08:41.479 +you are designing UI and UX. And to have this intention, it + +00:08:41.480 --> 00:08:45.319 +feels like you cannot just base yourself of a design idea to + +00:08:45.320 --> 00:08:48.799 +organize the options. You cannot just work off a pattern. I + +00:08:48.800 --> 00:08:53.599 +think you need to have the trace of human understanding in + +00:08:53.600 --> 00:08:56.679 +order to have a UX that really works. And judging by the + +00:08:56.680 --> 00:08:58.999 +option that you've picked in the demos that you've showed + +00:08:59.000 --> 00:09:04.039 +today, I don't think it'd be particularly easy to organize + +00:09:04.040 --> 00:09:07.959 +them in a UX just casually for any mode. I think you need some + +00:09:07.960 --> 00:09:14.159 +human introspection to understand this, if that makes + +00:09:14.160 --> 00:09:14.679 +sense. + +00:09:14.680 --> 00:09:17.279 +Moving to the next question, which is related to something + +00:09:17.280 --> 00:09:19.605 +we discussed about with Magit. + +NOTE Q: Does Casual have a log where you can see what commands were invoked? + +00:09:19.606 --> 00:09:21.079 +Does Casual have a log where + +00:09:21.080 --> 00:09:23.759 +you can see what commands were invoked? This is always + +00:09:23.760 --> 00:09:27.479 +available via M-x view-lossage or via the command-log-mode, + +00:09:27.480 --> 00:09:30.993 +but I'm wondering if it can do for Emacs command what + +00:09:30.994 --> 00:09:34.479 +magit-process-buffer does for learning Git commands. And for + +00:09:34.480 --> 00:09:37.439 +everyone who's currently in Emacs, whenever you're + +00:09:37.440 --> 00:09:40.639 +running a command in Magit, it's always printing the exact + +00:09:40.640 --> 00:09:44.799 +command that was run in a shell, inside this $ + +00:09:44.800 --> 00:09:47.399 +menu. So does Casual actually provide something similar, + +00:09:47.400 --> 00:09:52.599 +Charles? I don't know. In general, because I'm building off + +00:09:52.600 --> 00:09:55.199 +of transient, it would have to be a mechanism that's + +00:09:55.200 --> 00:10:01.519 +available through transient. And You know, I would let + +00:10:01.520 --> 00:10:06.799 +Jonas speak more on that capability, because to be honest, I + +00:10:06.800 --> 00:10:14.879 +mean, even to my knowledge of transient is not that deep, + +00:10:14.880 --> 00:10:16.839 +actually. + +00:10:16.840 --> 00:10:21.399 +Well, it's funny that you say this because even though you + +00:10:21.400 --> 00:10:23.759 +say your knowledge might not be that big, you still managed + +00:10:23.760 --> 00:10:27.239 +to develop a whole suite of tools on top of it. So as far as + +00:10:27.240 --> 00:10:29.599 +people who do not know transient a whole lot, you're doing a + +00:10:29.600 --> 00:10:33.159 +pretty damn good job. Let me tell you that much. Thank you. + +00:10:33.160 --> 00:10:37.719 +Yeah, I think sort of what I bring to the table is, you know, + +00:10:37.720 --> 00:10:41.919 +quite a considerable career in software development on + +00:10:41.920 --> 00:10:47.879 +other software ecosystems. And as of late, I've spent + +00:10:47.880 --> 00:10:52.439 +basically the past decade working on iOS apps. Right. I + +00:10:52.440 --> 00:10:55.199 +think it's refreshing to be able to go back to something that + +00:10:55.200 --> 00:10:56.839 +looks like Emacs after iOS. + +00:10:56.840 --> 00:11:03.879 +Well, that's perhaps another longer conversation there. + +00:11:03.880 --> 00:11:08.599 +Speaking of longer conversation, we have only about 10 + +00:11:08.600 --> 00:11:11.599 +minutes left until we need to move on to the next talk. But + +00:11:11.600 --> 00:11:13.759 +thank you everyone for all the questions you're asking. I'm + +00:11:13.760 --> 00:11:17.239 +not saying this because we finished, but it's good to see so + +00:11:17.240 --> 00:11:19.919 +many people writing in the chat and asking questions. It + +00:11:19.920 --> 00:11:23.079 +always shows that you're interested and that's always + +00:11:23.080 --> 00:11:26.079 +lovely to us. And you've mentioned Jonas. Obviously, we're + +00:11:26.080 --> 00:11:29.359 +talking about Jonas Bernoulli, i.e. Tarsius, the + +00:11:29.360 --> 00:11:33.439 +maintainer of transient. And what Charles just mentioned + +00:11:33.440 --> 00:11:37.559 +about having a transient tooling to print the lossage, + +00:11:37.560 --> 00:11:43.039 +basically, of which sex were run by which command, feels + +00:11:43.040 --> 00:11:44.839 +like this is something that would be interesting. So, + +00:11:44.840 --> 00:11:50.239 +perhaps, I'm not sure if Tarsius is still on the chat + +00:11:50.240 --> 00:11:52.639 +currently, but he was definitely around earlier today, so + +00:11:52.640 --> 00:11:55.839 +we'll make sure that the ID lands on his lap later on. All + +00:11:55.840 --> 00:12:00.203 +right, moving to the next question. + +NOTE Q: Is there a setting to close menu after executing command? + +00:12:00.204 --> 00:12:00.919 +Is there a setting to + +00:12:00.920 --> 00:12:07.479 +close menu after executing a command? By default, it will. + +00:12:07.480 --> 00:12:10.879 +There's a slot that you can define in a transient + +00:12:10.880 --> 00:12:17.199 +prefix called :transient. And if you set that to true, + +00:12:17.200 --> 00:12:20.639 +then it will persist the menu after executing the command. + +00:12:20.640 --> 00:12:26.159 +But by default, it will actually dismiss the menu. This + +00:12:26.160 --> 00:12:29.359 +feels... Did you actually get to play with Hydra before + +00:12:29.360 --> 00:12:36.279 +playing with transients? To be honest, no. Yeah, I kind of + +00:12:36.280 --> 00:12:41.719 +slept on Hydra or at least, you know, I really wasn't all that + +00:12:41.720 --> 00:12:44.639 +ambitious with working with different packages until + +00:12:44.640 --> 00:12:48.639 +about like, a little less than 2 years ago or so. + +00:12:48.640 --> 00:12:57.639 +And then the other part was also, um. You know, not not really + +00:12:57.640 --> 00:13:01.999 +a technical. Start a comparison because I really don't want + +00:13:02.000 --> 00:13:05.759 +to upset folks here, but, uh. But more along the lines of just + +00:13:05.760 --> 00:13:09.559 +going with the notion that transient was being built in or + +00:13:09.560 --> 00:13:15.279 +packaged as a built in package for Emacs. I went with using + +00:13:15.280 --> 00:13:20.679 +that for my implementation. Cool. And I don't think there's + +00:13:20.680 --> 00:13:23.199 +anything controversial with what you're saying right now + +00:13:23.200 --> 00:13:28.839 +because, you know, we had earlier today, Euro Rechenko, the + +00:13:28.840 --> 00:13:32.439 +new maintainer of Augment, mentioning that he'd like to + +00:13:32.440 --> 00:13:34.319 +have a better integration with Transient because + +00:13:34.320 --> 00:13:39.159 +Transient is, it looks like it's here to stay for a long time + +00:13:39.160 --> 00:13:42.879 +and might even land in core at some point. So, it definitely + +00:13:42.880 --> 00:13:49.519 +feels comparing Hydra because for me, most of my UI needs in + +00:13:49.520 --> 00:13:54.439 +Emacs prior to Transient were done via Hydra because it was a + +00:13:54.440 --> 00:13:57.799 +very convenient tooling. For people who do not know, Hydra + +00:13:57.800 --> 00:14:02.919 +is written by AboAbo. who's also authored packages like + +00:14:02.920 --> 00:14:08.639 +Lispy, an interactive Lisp mode, also for Ivy, which you + +00:14:08.640 --> 00:14:14.239 +might know as the counterpart of Helm, maybe five years ago. + +00:14:14.240 --> 00:14:17.959 +So all those packages, they were very innovative for the + +00:14:17.960 --> 00:14:21.199 +time and it's cool to see that some of the ideas which were + +00:14:21.200 --> 00:14:28.039 +introduced by IV and Helm and all this are then taken by tools + +00:14:28.040 --> 00:14:30.279 +like Transient and done perhaps with a little more + +00:14:30.280 --> 00:14:33.639 +hindsight now that people have experienced a little more of + +00:14:33.640 --> 00:14:38.359 +it. Okay, we have still a little bit of time. Moving on to the + +00:14:38.360 --> 00:14:40.281 +next question. + +NOTE Q: What modes are you working on at the moment for casual / are excited to explore? + +00:14:40.282 --> 00:14:41.919 +What modes are you working on at the moment + +00:14:41.920 --> 00:14:44.159 +for Casual or are you excited to explore? + +00:14:44.160 --> 00:14:53.999 +Well, so I just recently published one for calendar. And so I + +00:14:54.000 --> 00:14:56.839 +think the calendar interface has a lot of really + +00:14:56.840 --> 00:15:00.479 +interesting behavior, particularly its support for + +00:15:00.480 --> 00:15:07.479 +non-Gregorian events, which is, you know, for folks who'd + +00:15:07.480 --> 00:15:13.079 +like, in my case, looking at the lunar calendar, it's great + +00:15:13.080 --> 00:15:17.799 +to have tooling to be able to not have to leave Emacs to figure + +00:15:17.800 --> 00:15:19.759 +out when a lunar date is. + +00:15:19.760 --> 00:15:29.599 +Then, I think, you know, for the most part, My work on casual + +00:15:29.600 --> 00:15:34.959 +was really kind of my summer of code for Emacs here. And so in + +00:15:34.960 --> 00:15:41.519 +many ways, the velocity of casual development is going to + +00:15:41.520 --> 00:15:48.919 +slow down where I've got a big bulk of the modes that I really + +00:15:48.920 --> 00:15:57.519 +wanted to take care of. Um, I think one experimental thing + +00:15:57.520 --> 00:16:00.999 +that I think is very unbaked, but I would, you know, if folks + +00:16:01.000 --> 00:16:06.879 +are interested, uh, maybe looking at it is, uh, taking a look + +00:16:06.880 --> 00:16:13.079 +at edebug and trying to make that an easier thing to do. Um, + +00:16:13.080 --> 00:16:18.359 +that is ambitious. Uh, yeah, so maybe too ambitious. + +00:16:18.360 --> 00:16:23.713 +Uh, other things are like really scary projects. + +00:16:23.714 --> 00:16:25.195 +And so, not to say that + +00:16:25.196 --> 00:16:28.319 +I really have a desire to do it, but another + +00:16:28.320 --> 00:16:33.239 +one would be ediff. Right. Okay. Relitigating it's + +00:16:33.240 --> 00:16:43.639 +interface, um, to have a transient menu. I say + +00:16:43.640 --> 00:16:47.919 +these things, but I'm also scared of those things. Yeah, I + +00:16:47.920 --> 00:16:50.719 +mean, I think it's a lovely way to tackle the project, + +00:16:50.720 --> 00:16:55.479 +really, because you are fully aware that edebug and ediffs + +00:16:55.480 --> 00:16:59.399 +are mastodons when it comes to Emacs. They work very well. If + +00:16:59.400 --> 00:17:02.639 +you've ever tried to do a conflict resolution in Magit and + +00:17:02.640 --> 00:17:07.199 +you've pressed e, that usually opens ediff for you. If you + +00:17:07.200 --> 00:17:09.959 +happen to know how it works, it's amazing, but if you do not know + +00:17:09.960 --> 00:17:13.719 +it works, the interface is a little... It's a lot to take in + +00:17:13.720 --> 00:17:20.879 +at the moment. You have to know a, b, w... I can, and I + +00:17:20.880 --> 00:17:24.439 +can never remember which one is the lower and which one is the + +00:17:24.440 --> 00:17:27.359 +upper. Like, it constantly goes in different directions. I + +00:17:27.360 --> 00:17:29.719 +can never remember which is the commit I'm trying to merge, + +00:17:29.720 --> 00:17:32.759 +which is the commit I'm currently being on. It has nothing to + +00:17:32.760 --> 00:17:36.839 +do with Magit. It's merely Git and the way they conceive + +00:17:36.840 --> 00:17:39.719 +this. And probably, there might be a very nice way to + +00:17:39.720 --> 00:17:42.079 +remember it, but I still haven't found it after 10 years as a + +00:17:42.080 --> 00:17:44.919 +software developer. So, I guess I need to dig a little + +00:17:44.920 --> 00:17:48.519 +deeper. But what I find lovely about the approach is that for + +00:17:48.520 --> 00:17:52.599 +you, working on the interface to those tools is actually + +00:17:52.600 --> 00:17:55.159 +something that allows you to discover how they work, but + +00:17:55.160 --> 00:17:59.119 +also how to make it more easy for people to understand how + +00:17:59.120 --> 00:18:02.039 +those tools work. So you're doing the work of + +00:18:02.040 --> 00:18:05.399 +understanding, of digesting a lot of the commands, so that + +00:18:05.400 --> 00:18:08.599 +people do not have to go through the same pain as you have. So I + +00:18:08.600 --> 00:18:14.279 +find this a very noble endeavor in a way. + +NOTE Getting older + +00:18:14.280 --> 00:18:18.559 +In so many ways, as perhaps I've mentioned + +00:18:18.560 --> 00:18:23.639 +in my talk, I'm getting older. I can't remember all + +00:18:23.640 --> 00:18:28.759 +these damn commands and my hand dexterity is failing. I + +00:18:28.760 --> 00:18:33.199 +mean, there's so many. Like multiple keystroke + +00:18:33.200 --> 00:18:37.479 +bindings, which I absolutely loathe. At most, + +00:18:37.480 --> 00:18:40.799 +like I can, I can only physically handle like, two + +00:18:40.800 --> 00:18:47.799 +characters, three maybe, at a time. So maybe + +00:18:47.800 --> 00:18:51.239 +that's just me, and others may + +00:18:51.240 --> 00:18:55.999 +feel differently, but at the same time, + +00:18:56.000 --> 00:19:01.519 +the work that I've invested here is has been very personal + +00:19:01.520 --> 00:19:06.239 +for me because I just don't want to work that hard, and I want to + +00:19:06.240 --> 00:19:11.159 +keep using Emacs. Yeah, and that's again a very good + +00:19:11.160 --> 00:19:13.719 +endeavor, I think, to have. And there's one last thing that + +00:19:13.720 --> 00:19:16.039 +I'd like to mention, because you've mentioned this project + +00:19:16.040 --> 00:19:19.879 +of yours, Casual, being some kind of summer of code, with the + +00:19:19.880 --> 00:19:22.399 +implication that you've worked a whole lot of it during the + +00:19:22.400 --> 00:19:26.919 +summer or during this period. and perhaps investment will + +00:19:26.920 --> 00:19:31.119 +die down a little bit now. But I think it's completely fine to + +00:19:31.120 --> 00:19:33.879 +have moments when you feel particularly excited and you do a + +00:19:33.880 --> 00:19:36.959 +lot of work, and sometimes it dies down a little bit. + +00:19:36.960 --> 00:19:41.439 +Personally, I've been... Four years ago, I was working a lot + +00:19:41.440 --> 00:19:44.679 +on Org Roam and I had my Summer of Code on Org Roam. And that was + +00:19:44.680 --> 00:19:47.159 +great. I was able to do a lot of things, to get a lot of things + +00:19:47.160 --> 00:19:50.559 +out of my head. But eventually, you know, you have to go make + +00:19:50.560 --> 00:19:53.279 +some money to survive or you have to take care of family and + +00:19:53.280 --> 00:19:56.399 +stuff like this. So, life tends to get in the way of your + +00:19:56.400 --> 00:20:00.519 +hobbies, especially when, you know, it's so... It's + +00:20:00.520 --> 00:20:03.239 +hobbies that involve so much of your time to get things + +00:20:03.240 --> 00:20:07.879 +right, like programming does. But, you know, we appreciate + +00:20:07.880 --> 00:20:09.799 +all the work you've done, Charles, and the fact that you've + +00:20:09.800 --> 00:20:12.679 +put it out there for people to enjoy. It's already a victory. + +00:20:12.680 --> 00:20:14.999 +You don't need to feel compelled to keep working on it + +00:20:15.000 --> 00:20:18.159 +because ultimately, as you said, the beauty of open source + +00:20:18.160 --> 00:20:21.759 +is that people can just send PRs and get the project going + +00:20:21.760 --> 00:20:28.519 +again. Yeah. I mean, and if anything, you know, folks have + +00:20:28.520 --> 00:20:33.319 +expressed to me that, you know, in many ways, a lot of this + +00:20:33.320 --> 00:20:37.959 +stuff should be, you know, sort of folded in the core. And, + +00:20:37.960 --> 00:20:45.159 +you know, I would love to see at least the ideals of, or at + +00:20:45.160 --> 00:20:49.319 +least an openness into thinking, rethinking the interface + +00:20:49.320 --> 00:20:54.119 +for Emacs. So, you know, it doesn't have to be, basically + +00:20:54.120 --> 00:20:59.119 +work the way it worked for basically the last half of the 20th + +00:20:59.120 --> 00:21:03.519 +century here. Yeah, Emacs is flexible enough to have + +00:21:03.520 --> 00:21:10.279 +different approaches and, you know, transient is one + +00:21:10.280 --> 00:21:17.759 +approach, but at the same time, you know, the ability to + +00:21:17.760 --> 00:21:22.559 +reimagine the user interface for, you know, the computing + +00:21:22.560 --> 00:21:28.159 +needs, you know, for basically users needs today, whether + +00:21:28.160 --> 00:21:33.119 +you write or code or anything of that nature, I think is an + +00:21:33.120 --> 00:21:39.039 +exciting and great thing. Yeah, well, thank you so much for + +00:21:39.040 --> 00:21:41.639 +this conclusion. So I'm a little sorry, because sadly, we + +00:21:41.640 --> 00:21:45.919 +needed to move the stream to the next talk. So we've lost + +00:21:45.920 --> 00:21:49.639 +about 20 seconds of what you said. But don't worry, whatever + +00:21:49.640 --> 00:21:51.999 +you've said will be available on the website. I didn't want + +00:21:52.000 --> 00:21:55.759 +to interrupt, sadly, because I didn't want to be rude. But I + +00:21:55.760 --> 00:21:58.679 +think we did a great job answering the questions. So thank + +00:21:58.680 --> 00:22:01.199 +you so much for taking the time. I'll need to get going, + +00:22:01.200 --> 00:22:02.759 +because we might have a problem with the next talk. So thank + +00:22:02.760 --> 00:22:05.919 +you so much, Charles. Certainly. Take care. Thank you. + +00:22:05.920 --> 00:22:12.120 +Appreciate it. Bye. diff --git a/2024/captions/emacsconf-2024-color--colour-your-emacs-with-ease--ryota--answers.vtt b/2024/captions/emacsconf-2024-color--colour-your-emacs-with-ease--ryota--answers.vtt new file mode 100644 index 00000000..b27008a3 --- /dev/null +++ b/2024/captions/emacsconf-2024-color--colour-your-emacs-with-ease--ryota--answers.vtt @@ -0,0 +1,747 @@ +WEBVTT + +00:00.169 --> 00:01.830 +... Org mode and kind of note taking. And that meant that it wasn't + +00:02.810 --> 00:08.532 +too difficult to get started with. But when I started more on + +00:08.972 --> 00:15.474 +the coding side, because I'm a software engineer, you know, + +00:08.972 --> 00:15.474 +on the day job. That kind of got me to think that the colors and + +00:16.366 --> 00:24.790 +how themes look, how Emacs looks, was affecting. And that's + +00:25.331 --> 00:28.973 +how it kind of came to picture. So I could have kind of gone + +00:29.073 --> 00:36.917 +into a little bit more coding side of things, but I didn't + +00:29.073 --> 00:36.917 +want to stress too much on the talk. So that's why I kind of + +00:36.957 --> 00:41.919 +stuck to a very small bits of Org Mode and Elisp. And yeah, I + +00:42.319 --> 00:45.321 +think that's how it came about. Yeah, but that's perfectly + +00:46.536 --> 00:48.577 +fine. That's one of the chief reasons why we have two tracks + +00:49.437 --> 00:52.778 +for Emacs content. We've had those for the last four years, I + +00:52.798 --> 00:55.059 +think. It's because we have a general track, which is more + +00:55.119 --> 01:05.442 +geared towards people who want a general... well, + +00:55.119 --> 01:05.442 +generally people who are highly interested into org mode + +00:55.119 --> 01:05.442 +and not necessarily into coding, but just to whet their + +00:55.119 --> 01:05.442 +appetite to what can be done. And on the DevTrack, we have, + +01:06.082 --> 01:12.986 +well, this year we have talked about Rust and about other + +01:06.082 --> 01:12.986 +fancy things that people can do with Emacs. But, you know, + +01:13.006 --> 01:15.768 +I'm also a software engineer, you know, we do this all the + +01:13.006 --> 01:15.768 +time. Sometimes it's just fine to just chat about colors and + +01:15.808 --> 01:21.751 +just the results of what we develop rather than how the + +01:15.808 --> 01:21.751 +sausage is made. So that's completely fine too. I'm not sure + +NOTE Why colour? + +01:23.733 --> 01:32.618 +if you mentioned it in your presentation, but why color, out + +01:23.733 --> 01:32.618 +of all the things you could be ricing on your setup, why were + +01:23.733 --> 01:32.618 +you so interested about colors? I think it was just that + +01:34.870 --> 01:41.176 +mainly that I had to do a lot of context switch between + +01:34.870 --> 01:41.176 +different languages. Elisp is not the one because Elisp is + +01:41.576 --> 01:46.600 +something that I would do for Emacs editing. But for day job, + +01:47.061 --> 01:52.385 +I had to use mainly Go as I work with Kubernetes quite a bit. So + +01:52.525 --> 01:57.109 +Go and also web languages like TypeScript, JavaScript, you + +01:58.090 --> 02:13.642 +know, those languages, where I felt that whenever I was + +01:58.090 --> 02:13.642 +switching context to a different language, I felt that it's + +01:58.090 --> 02:13.642 +kind of annoying to see all the different colors in + +01:58.090 --> 02:13.642 +languages like TypeScript, where, you know, VS Code way + +01:58.090 --> 02:13.642 +would be very full of colors. which I felt that, okay, like, + +02:14.262 --> 02:23.569 +why do I have to have that many different colors on let and + +02:14.262 --> 02:23.569 +constant or the keywords where it could be just a white text? + +02:23.789 --> 02:25.170 +It didn't have to be that colorful. So that was the bit, the + +02:25.890 --> 02:30.373 +most annoying bit when it came to context switching. And I + +02:30.974 --> 02:35.197 +felt that that just didn't happen in the Org Mode or writing + +02:30.974 --> 02:35.197 +in general. So I had to find a way to make it work, make more + +02:36.017 --> 02:41.481 +coding make my coding more kind of friendly to me and that's + +02:42.173 --> 02:59.576 +when I thought maybe just the colors are something that's + +02:42.173 --> 02:59.576 +bothering me and it actually was the case and that's how I got + +02:42.173 --> 02:59.576 +to more into the color kind of journey and got too much into it + +02:42.173 --> 02:59.576 +I guess. Right, and was it what eventually motivated you to + +NOTE What motivated you to learn Elisp and get into the Emacs core? + +03:00.535 --> 03:05.778 +learn Elisp and to get into the Emacs core? Because it's + +03:05.798 --> 03:22.406 +funny how you find plenty of people using Emacs in Org Mode + +03:05.798 --> 03:22.406 +and then they find something that they take particular + +03:05.798 --> 03:22.406 +issue with, for you it's the color, and then they just go all + +03:05.798 --> 03:22.406 +in trying to pull the rope as far as they can to try to + +03:05.798 --> 03:22.406 +understand as much as possible about what code is managing + +03:05.798 --> 03:22.406 +this part of the application. Like for you it was color, for + +03:22.786 --> 03:25.047 +me it was the org agenda, I desperately wanted to make Org + +03:25.367 --> 03:30.692 +Agenda do something that it wasn't able to do. And five + +03:31.433 --> 03:36.318 +years, well, actually, no, 10 years later, I find myself + +03:31.433 --> 03:36.318 +hosting Emacs Cons. So, you never know just how far you're + +03:36.598 --> 03:39.201 +going to be pulling this rope. So, it's really interesting + +03:39.561 --> 03:42.224 +for me that my call was this. But back to the question, is this + +03:42.464 --> 03:48.150 +what eventually motivated you to get into Elisp and the core + +03:42.464 --> 03:48.150 +of Emacs? I think that the original journey to move to Emacs + +03:49.798 --> 04:02.250 +was around keybindings that I got annoyed with with other + +03:49.798 --> 04:02.250 +solutions, not just, you know, not speaking of Emacs + +03:49.798 --> 04:02.250 +keybinding or anything, like anything in general. The main + +04:02.870 --> 04:09.797 +reason was that I used Dovrak keyboard layout, and that + +04:02.870 --> 04:09.797 +meant that all the C-c, C-v, C-p, whatever, It just is + +04:10.257 --> 04:11.417 +all over the place. So I had to find something that could work + +04:11.577 --> 04:14.298 +for me. And Emacs was a solution that allowed me to do + +04:14.898 --> 04:17.499 +anything. And that's the kind of the journey that it + +04:18.019 --> 04:21.519 +originally started. And from there, started tweaking org + +04:21.599 --> 04:28.421 +mode and writing experience to be tuned to my liking. Color + +04:29.101 --> 04:33.682 +was another thing that I thought, OK, maybe I could do it + +04:29.101 --> 04:33.682 +easily with org mode. And when I started to use more of the + +04:34.262 --> 04:37.983 +coding side of things on Emacs, I felt that, okay, that was + +04:39.355 --> 04:41.697 +something I needed to solve. So Elisp was always kind of + +04:41.877 --> 04:48.022 +just a toolkit that, you know, I knew that it was available. I + +04:48.322 --> 04:52.105 +knew that it would be something that I want to be able to use. + +04:52.646 --> 04:58.090 +So I think in a way color was a good segue to understand how I + +04:52.646 --> 04:58.090 +can kind of work out more of a complex logic with the editor + +04:59.136 --> 05:07.220 +without having to write JavaScript or things that I don't + +04:59.136 --> 05:07.220 +particularly like. So yeah, I think the journey around the + +05:07.440 --> 05:13.583 +functional languages, functional kind of programming was + +05:07.440 --> 05:13.583 +always something that I was keen about. And yeah, the whole + +05:13.943 --> 05:16.644 +journey kind of made sense for me. And then moving on to the + +05:16.984 --> 05:21.246 +color was just one way to get more involved in. So I can + +05:21.406 --> 05:27.069 +totally see that this journey kind of making to a little bit + +05:21.406 --> 05:27.069 +different angle But yeah, we shall see how that really turns + +05:27.669 --> 05:30.972 +out. But for now, I think I'm happy with the color setup. Now I + +05:33.514 --> 05:35.095 +can really focus on the coding. Well, that's all good. And + +05:37.156 --> 05:44.162 +I'm sure plenty of people listening to you now, you know, + +05:37.156 --> 05:44.162 +find this relatable, how they eventually got into + +05:37.156 --> 05:44.162 +programming. Like for you, you did say that you were a + +05:44.222 --> 05:47.745 +software engineer now. But I found plenty of people, + +05:48.705 --> 05:53.469 +especially doing workshops, that just started you know, + +05:54.339 --> 06:01.267 +their software engineering journey just with Emacs and + +05:54.339 --> 06:01.267 +they just realized they were doing something completely + +05:54.339 --> 06:01.267 +different, like I was studying humanities. But then you + +06:01.787 --> 00:06:02.687 +touch Emacs and you realize, yeah, this whole programming + +06:01.787 --> 06:06.693 +shtick is actually pretty damn cool. + +00:06:07.280 --> 00:06:09.399 +And then you find yourself again, + +00:06:09.400 --> 00:06:11.039 +five to 10 years later, becoming a software + +00:06:11.040 --> 00:06:12.919 +engineer. So yeah, that's all good. + +00:06:12.920 --> 00:06:14.519 +So we do have a couple of + +00:06:14.520 --> 00:06:18.439 +questions and I'd like to move into them so that I, I mean, + +00:06:18.440 --> 00:06:22.439 +people have questions and for me it's okay for me to chat with + +00:06:22.440 --> 00:06:25.119 +you but obviously it's better if people ask you the question + +00:06:25.120 --> 00:06:27.679 +themselves. And again, if you want to ask questions to Ryota + +00:06:27.680 --> 00:06:31.079 +directly, feel free to join us on BBB and whenever we're done + +00:06:31.080 --> 00:06:33.519 +with the questions on the pad, I'm more than happy + +00:06:33.520 --> 00:06:34.444 +to let you ask your questions live. + +NOTE Q: Is there any intention to create a library for working with more experimental color spaces? Pulling code out of Hasliberg for this purpose, perhaps? + +06:35.982 --> 00:06:37.902 +All right, so starting with the first question, + +00:06:37.903 --> 00:06:45.108 +is there any intention to create a library + +00:06:37.903 --> 06:45.108 +for working with more experimental color spaces, pulling + +06:35.982 --> 06:45.108 +code out of Hasliberg for this purpose, perhaps? Although I + +06:45.329 --> 06:46.049 +do not know. Hasliberg, you might? Yeah, Hasliberg. And to + +06:49.692 --> 06:50.892 +answer the question, started the journey just for myself + +06:52.859 --> 07:04.331 +and I didn't think that it would be actually useful for other + +06:52.859 --> 07:04.331 +use cases and this conference talk just came about kind of + +06:52.859 --> 07:04.331 +out of sheer luck really. So the idea I think I can definitely + +07:04.771 --> 07:14.501 +work it out and I don't think there will be too, the original + +07:04.771 --> 07:14.501 +code that I started with was I had to use some color space and I + +07:15.931 --> 07:21.595 +started with sRGB and then went to HSL and then went to LCH. So + +07:21.996 --> 07:24.678 +I think there has been quite a bit that I learned from it. At + +07:25.458 --> 07:33.885 +the same time, I may be tempted to actually maybe perhaps + +07:25.458 --> 07:33.885 +contribute back to ct.el rather than creating my own. I + +07:34.105 --> 07:36.227 +think that would make more sense perhaps. + +07:36.607 --> 00:07:39.548 +But for my own kind of taste that I thought + +00:07:39.549 --> 00:07:42.891 +that it would be something I can work out in my theme, + +00:07:42.892 --> 00:07:44.273 +but I don't have any I think, you know, making a + +07:45.813 --> 07:53.975 +library is definitely something that I can think about, but + +07:45.813 --> 07:53.975 +perhaps maybe making it too many packages isn't exactly + +07:45.813 --> 07:53.975 +what I want. But for my own use case, I think I just wanted to + +07:55.175 --> 08:06.317 +have something that just didn't have any external + +07:55.175 --> 08:06.317 +dependency so that I can use the vanilla Emacs with my + +07:55.175 --> 08:06.317 +colors. I think that's how it started, but I'm definitely up + +08:06.757 --> 08:11.558 +for it if there is interest about it. Yeah, well, thank you + +08:12.622 --> 00:08:13.615 +for this. It's always good to contribute. + +00:08:16.040 --> 00:08:16.399 +I'm tempted to say + +00:08:16.400 --> 00:08:18.679 +that's how they get you. You know, you do something really + +00:08:18.680 --> 00:08:24.799 +cool and you share it with people and they have the, you know, + +00:08:24.800 --> 00:08:27.080 +they just ask you, oh, do you have your code online? And you + +08:27.166 --> 08:28.667 +realize, no, I haven't pushed it. And then they start + +08:28.707 --> 08:30.107 +pressing you on. well, you need to do this, this is amazing + +08:30.287 --> 08:33.349 +and you need to share it. You know, I had plenty of people ask + +08:33.849 --> 08:41.735 +me to share my dot files when I was tackling the org agenda + +08:33.849 --> 08:41.735 +issue that I mentioned earlier. And yeah, eventually when + +08:42.575 --> 08:54.243 +you get to publishing your stuff, you also feel great + +08:42.575 --> 08:54.243 +because you're putting a little bit of your intelligence + +08:42.575 --> 08:54.243 +into the world and it can be the start of the journey for + +08:42.575 --> 08:54.243 +someone else. You know, maybe someone will find your + +08:54.283 --> 08:59.867 +library at some point and realize, yeah, I wanted to do + +08:54.283 --> 08:59.867 +something slightly differently. and then they either + +09:00.387 --> 09:10.793 +contribute to a library or they make their own but it's a + +09:00.387 --> 09:10.793 +complete journey that starts with just people taking the + +09:00.387 --> 09:10.793 +time to publish the content of the brain basically. Yeah, + +09:11.894 --> 09:13.354 +that's the power of open source now. It's just how we really + +09:13.654 --> 09:21.276 +appreciate the open source culture being cultivated + +09:13.654 --> 09:21.276 +throughout so many years. And yeah, this is something that + +09:21.736 --> 09:24.337 +I'm definitely keen about. So yeah, open for suggestions. + +09:26.618 --> 09:29.298 +And exactly, that's how I started with the journey. And + +00:09:29.760 --> 00:09:33.559 +yeah, while this is very experimental and very personal, + +00:09:33.560 --> 00:09:38.239 +yeah, I'm not, you know, tied down to one particular way + +00:09:38.240 --> 00:09:41.679 +only. So yeah we'll be open to suggestions like this one + +00:09:41.680 --> 00:09:44.839 +which I would definitely think about. Yeah that's amazing + +00:09:44.840 --> 00:09:46.879 +and just to be clear you know this is not a there's no + +00:09:46.880 --> 00:09:47.840 +incentive one. I'm not pushing you to publish your library. + +09:51.070 --> 09:57.595 +You know it was very personal for you and at the end if you + +09:51.070 --> 09:57.595 +believe it might be useful for others it's a nice thing to + +09:51.070 --> 09:57.595 +eventually think about publishing it. But just the fact + +09:58.056 --> 10:00.117 +that you showed up at EmacsConf... Sorry, I'm + +10:01.278 --> 00:10:02.698 +starting to lose my voice on the morning + +00:10:02.699 --> 00:10:03.280 +of the first day. That's + +10:03.520 --> 00:10:08.559 +not boding well for the two next days. I mean, just one day. + +00:10:08.560 --> 00:10:10.079 +But just the + +00:10:10.080 --> 00:10:13.279 +fact that you're showing up at EmacsConf and sharing about + +00:10:13.280 --> 00:10:17.119 +all of this, the process, how you got to it eventually, it's + +00:10:17.120 --> 00:10:19.439 +also a part of sharing. And I think it's also amazing in its + +00:10:19.440 --> 00:10:26.039 +own way. Absolutely. Okay, I'm going to try to read the next + +00:10:26.040 --> 00:10:31.719 +question and then try to cough a little bit. So can we have... + +00:10:31.720 --> 00:10:36.919 +Oh, sorry, Bala. Sorry. I was the one who asked the question. + +00:10:36.920 --> 00:10:40.120 +I thought I could ask it live here rather than... Thank you. + +10:40.188 --> 10:41.368 +I'll go cough a little bit. So here I am. Thanks, Ryota, for + +10:45.050 --> 10:47.190 +the nice talk. This is great. I loved it. Your attention to + +10:49.531 --> 00:10:50.140 +detail was awesome. + +NOTE Q: Can we have a dark as well as light theme variations made from your theme? + +00:10:51.880 --> 00:10:55.079 +So I was just looking at the code and I was + +00:10:55.080 --> 00:10:58.839 +wondering, do you have a dark and a light theme variation + +00:10:58.840 --> 00:11:02.479 +which can be made from your theme? Or do you have to customize + +00:11:02.480 --> 00:11:05.519 +it every time? That was my question. And thanks for that. + +00:11:05.520 --> 00:11:07.640 +Thank you very much. I appreciate your feedback and + +00:11:10.240 --> 00:11:15.079 +questions. So to answer the question, the short answer is + +00:11:15.080 --> 00:11:18.639 +that I do have both dark and light themes with some sorts of + +00:11:18.640 --> 00:11:22.199 +standard colors that I personally liked. And there were a + +00:11:22.200 --> 00:11:26.719 +few things that I showed in the demo. where I showed, I think, + +00:11:26.720 --> 00:11:30.039 +three different dark theme colors. So light theme is + +00:11:30.040 --> 00:11:31.440 +definitely something that I can do. + +00:11:31.800 --> 00:11:33.879 +And the idea around Hasliberg theme + +00:11:33.880 --> 00:11:36.359 +and just my theming in general was that + +00:11:36.360 --> 00:11:39.679 +when I feel like I want to work in dark theme and when I want to + +00:11:39.680 --> 00:11:42.440 +work in the standard way, I would just use the standard color. + +00:11:42.480 --> 00:11:44.959 +But when I feel like maybe it's just so cold that I want + +00:11:44.960 --> 00:11:49.399 +to have a bit of a warm colors near me, I would use the orange + +00:11:49.400 --> 00:11:52.359 +theme, without changing too much of the kind of general + +00:11:52.360 --> 00:11:55.679 +feeling and experience. So that can be said for the light + +00:11:55.680 --> 00:11:58.959 +theme as well. So there is something and the kind of + +00:11:58.960 --> 00:12:04.919 +customization isn't that difficult to extend. So I do have + +00:12:04.920 --> 00:12:09.079 +both dark and light, but primarily I'm just looking at the + +00:12:09.080 --> 00:12:10.239 +dark theme as my main driver. But yeah, they are both + +00:12:10.240 --> 00:12:13.240 +available. Great. Thank you so much. I will definitely try + +00:12:18.208 --> 12:18.865 +your theme out. I'm definitely on the lookout for a nice, + +12:19.205 --> 12:22.426 +friendly theme. Thank you very much. As I said, this is a + +12:25.388 --> 12:27.429 +personal theme. I'm not sure if it really fits everyone's + +12:29.089 --> 12:42.816 +need, but it is one inspiration that I hope that can lead to + +12:29.089 --> 12:42.816 +another nice theming that could work for someone + +12:29.089 --> 12:42.816 +specifically for some use cases. I don't have to solve + +12:42.996 --> 12:44.977 +everyone's problem. Yeah, and I mean, it was sufficient to + +12:46.553 --> 12:49.715 +be inspirational to people. I mean, just Bala just + +12:49.755 --> 12:58.619 +mentioned it right now, but I'm sure plenty of people who + +12:49.755 --> 12:58.619 +watched live, but also people will be watching in the + +12:49.755 --> 12:58.619 +future, will have the interest to speak by what you've done. + +12:58.699 --> 13:00.040 +So thank you again so much for this. Yep. All right, well, I + +13:04.102 --> 13:06.603 +don't see any further questions. So I suggest we move + +13:07.083 --> 13:10.525 +towards closure. Ryota, do you have any last words? No, I + +13:13.775 --> 13:14.175 +don't. So yeah, thank you very much for attending. And it was + +13:16.577 --> 13:18.979 +great fun putting this together. And I really didn't think + +13:19.299 --> 13:27.545 +that I would be talking about my personal colors and + +13:19.299 --> 13:27.545 +personal favorites, like orange being my favorite color. + +13:27.845 --> 13:31.228 +This wouldn't be something that I would say out in any + +13:27.845 --> 13:31.228 +conference, to be honest. But it just came out to be. And + +13:33.890 --> 13:35.491 +happy that I had a chance. So thank you very much for giving me + +13:35.651 --> 13:39.154 +the opportunity to talk. in this amazing conference and + +13:39.574 --> 13:52.473 +yeah I can't just wait to check out other talks which you know + +13:39.574 --> 13:52.473 +I know that there isn't you know other talks that are + +13:39.574 --> 13:52.473 +happening right now I was actually wanted to to join them and + +13:39.574 --> 13:52.473 +check check that out so I will probably do that right now. + +13:53.419 --> 13:53.899 +Well, sure. Well, I won't hold you any longer then. Thank + +13:56.401 --> 13:56.741 +you. For me, it was just amazing to, you know, generally when + +13:57.682 --> 14:03.285 +you ask someone what their favorite color, you know, they + +13:57.682 --> 14:03.285 +just tell you orange or blue or whatever. They don't go then + +14:03.586 --> 14:10.690 +to chat about 20 minutes about their favorite color and how + +14:03.586 --> 14:10.690 +they tuned their entire editor to work exactly around their + +14:03.586 --> 14:10.690 +favorite colors. So it was inspiring. And I also want to try + +14:12.912 --> 14:21.057 +it out, frankly, because my theme has been utterly bad for + +14:12.912 --> 14:21.057 +the last five years and I need some change into my life. All + +14:21.497 --> 14:21.677 +right. Thank you so much for your time. Thank you very much, + +14:23.629 --> 14:24.654 +everyone. Cheers. Bye-bye. diff --git a/2024/captions/emacsconf-2024-emacs30--emacs-30-highlights--philip-kaludercic--answers.vtt b/2024/captions/emacsconf-2024-emacs30--emacs-30-highlights--philip-kaludercic--answers.vtt new file mode 100644 index 00000000..74b1254c --- /dev/null +++ b/2024/captions/emacsconf-2024-emacs30--emacs-30-highlights--philip-kaludercic--answers.vtt @@ -0,0 +1,957 @@ +WEBVTT + +00:00:00.000 --> 00:00:05.079 +You sound great. And on the stream, my eyeball says it looks + +00:00:05.080 --> 00:00:08.239 +great with Leo doing the streaming. So I say let's dive right + +00:00:08.240 --> 00:00:12.639 +in. You got a long, huge line. And in order to be a little more + +00:00:12.640 --> 00:00:16.279 +dialectical, I'll be reading the questions. So first + +NOTE Q: which-key was a third-party package for a long time. Is there work to bring any other popular packages into core Emacs for Emacs 31+? (magit, counsel, etc) + +00:00:16.280 --> 00:00:18.559 +question, which key was a third party package for a long + +00:00:18.560 --> 00:00:21.879 +time? Is there work to bring any other popular packages into + +00:00:21.880 --> 00:00:25.399 +the core of Emacs for Emacs 31 plus, like Magit or Counsel? + +00:00:25.400 --> 00:00:30.279 +Uh, right. I already answered that one on the, as you can see, + +00:00:30.280 --> 00:00:33.999 +uh, right. Yeah. Do you want to quickly read the answer so + +00:00:34.000 --> 00:00:38.439 +that everyone, I just can read it out again. Um, as far as I + +00:00:38.440 --> 00:00:41.159 +remember, the one package that was being discussed just + +00:00:41.160 --> 00:00:43.999 +around the time that the Emacs 30 branch was cut was macro + +00:00:44.000 --> 00:00:47.599 +step. That's the package that was like, does an overlay, uh, + +00:00:47.600 --> 00:00:51.479 +replaces a macro with the macro expansion using overlays. + +00:00:51.480 --> 00:00:53.799 +So you don't have to pop up another buffer, modified, + +00:00:53.800 --> 00:00:57.599 +modified current buffer. But we didn't manage to address + +00:00:57.600 --> 00:01:00.759 +all the concerns in time for the Emacs 30 cuts and I believe + +00:01:00.760 --> 00:01:03.799 +it's sort of stagnated around that but it might be picked up + +00:01:03.800 --> 00:01:07.399 +anytime someone mentions it on Emacs Devil again. Another + +00:01:07.400 --> 00:01:11.519 +package question mentioned was Magit. That's a constant + +00:01:11.520 --> 00:01:14.959 +discussion regarding Magit. And actually, from the top of + +00:01:14.960 --> 00:01:19.039 +my head, I can't recall if Magit is on NonGNU ELPA or GNU ELPA + +00:01:19.040 --> 00:01:22.999 +right now. It's still on NonGNU ELPA. + +00:01:23.000 --> 00:01:29.039 +For those who don't know, only packages which are in ELPA are + +00:01:29.040 --> 00:01:33.039 +considered for addition, considered to be added to the + +00:01:33.040 --> 00:01:36.119 +Emacs core, to be bundled along with Emacs. And then there's + +00:01:36.120 --> 00:01:40.519 +another totally parallel discussion about having a sort of + +00:01:40.520 --> 00:01:43.519 +fat Emacs distribution, I call it fat Emacs distribution, + +00:01:43.520 --> 00:01:48.119 +where Emacs comes with a lot of ELPA packages or the + +00:01:48.120 --> 00:01:55.039 +pre-installed by default. Part of Emacs itself. Yeah. + +00:01:55.040 --> 00:01:59.159 +Maybe I could jump in with an active listening style, + +00:01:59.160 --> 00:02:03.359 +you know, kind of follow up question almost. You know, I + +00:02:03.360 --> 00:02:07.159 +understand the kind of different repositories. We have + +00:02:07.160 --> 00:02:13.799 +things that aren't maintained by GNU at all, you know, most + +00:02:13.800 --> 00:02:17.919 +notably MELPA. And then we have kind of NonGNU ELPA, which + +00:02:17.920 --> 00:02:21.639 +is sort of an entryway project where it's not necessarily + +00:02:21.640 --> 00:02:24.759 +curated, but there'll be some advice given, which you can + +00:02:24.760 --> 00:02:28.159 +take or leave. And that's the repository where anything + +00:02:28.160 --> 00:02:32.519 +that was the newer repository that represents, you know, + +00:02:32.520 --> 00:02:36.319 +help, you know, help, help supplied from GNU. And then + +00:02:36.320 --> 00:02:41.319 +there's the, actually the GNU, the GNU ELPA, what most of us + +00:02:41.320 --> 00:02:46.479 +are used to calling just ELPA. And that's what you're + +00:02:46.480 --> 00:02:50.839 +talking about there when you say, + +00:02:50.840 --> 00:02:53.959 +I mean, all packages on ELPA are officially considered to be + +00:02:53.960 --> 00:02:56.959 +part of Emacs, they're licensed under the same conditions + +00:02:56.960 --> 00:03:00.359 +as Emacs itself, same license, same everything. And + +00:03:00.360 --> 00:03:03.719 +they're more likely to be, to drop, to kind of be dropping + +00:03:03.720 --> 00:03:07.839 +patched. Oh yeah, it's time for this to move to core. Is that + +00:03:07.840 --> 00:03:12.559 +right? They have the legal conditions for that to be done. + +00:03:12.560 --> 00:03:15.039 +Everything's necessary from a paperwork standpoint. I + +00:03:15.040 --> 00:03:17.959 +mean, but other than that, there's not really a big + +00:03:17.960 --> 00:03:21.159 +difference between GNU ELPA and NonGNU ELPA. It's + +00:03:21.160 --> 00:03:23.839 +really just the main thing is this copyrights notice. So if + +00:03:23.840 --> 00:03:28.519 +you want to add a package to ELPA, to GNU ELPA, then all + +00:03:28.520 --> 00:03:32.359 +significance contributors have to have signed the FSF + +00:03:32.360 --> 00:03:36.399 +copyright assignment and the package script, actually the + +00:03:36.400 --> 00:03:41.519 +ELPA build script, checks if the copyright lines are all + +00:03:41.520 --> 00:03:43.879 +attributed to the Free Software Foundation. + +00:03:43.880 --> 00:03:52.119 +But that's not going to attach, right? So because that's not + +00:03:52.120 --> 00:03:57.799 +in place, it'd be a lot more work to merge it to core. I didn't + +00:03:57.800 --> 00:04:01.039 +hear the beginning. Nevermind. I think I understood. You + +00:04:01.040 --> 00:04:05.559 +made your point well. Okay. All right, moving on to the + +00:04:05.560 --> 00:04:06.466 +second question. + +NOTE Q: Any way to get the goodness of Emacs for android with this other stuff? + +00:04:06.467 --> 00:04:08.279 +When thinking about using Emacs on + +00:04:08.280 --> 00:04:11.279 +Android, I started realizing all the other software I also + +00:04:11.280 --> 00:04:15.279 +want on it. For example, PDF Tools wants a small additional + +00:04:15.280 --> 00:04:18.519 +Emacs-specific program to be installed on, and notmuch + +00:04:18.520 --> 00:04:21.359 +obviously wants notmuch. Any way to get the goodness of + +00:04:21.360 --> 00:04:25.639 +Emacs for Android with this other stuff, using either Nix OS + +00:04:25.640 --> 00:04:29.279 +or Guix or nix-on-droid to make an APK with extra stuff? Are you + +00:04:29.280 --> 00:04:34.439 +familiar with this topic? Absolutely not. The extent to + +00:04:34.440 --> 00:04:39.319 +which I have used Emacs on Android was entirely + +00:04:39.320 --> 00:04:43.719 +demonstrated in this video, I think. In my previous video. I + +00:04:43.720 --> 00:04:48.719 +mean, I know it does a few scrolling stuff, but I have no idea + +00:04:48.720 --> 00:04:52.719 +how external stuff, because I mean, Android is, it's a Unix + +00:04:52.720 --> 00:04:55.439 +or it's a Linux based system, but it's really heavily + +00:04:55.440 --> 00:05:01.439 +modified to the preferences of Google, which includes not + +00:05:01.440 --> 00:05:04.719 +being able to have your own software on it. Yeah, + +00:05:04.720 --> 00:05:08.799 +definitely. All right, moving on to the next question. Does + +00:05:08.800 --> 00:05:12.239 +package-vc... Oh, no, that's fine. I mean, you can't answer + +00:05:12.240 --> 00:05:15.199 +all the questions. I mean, it wouldn't be fun for me + +00:05:15.200 --> 00:05:15.753 +otherwise. + +NOTE Q: Does package-vc download a tarball from the specified git repository or clone the repository itself? + +00:05:15.754 --> 00:05:17.919 +Does package-vc download a tarball from the + +00:05:17.920 --> 00:05:21.759 +specified Git repository or clone the repository itself? + +00:05:21.760 --> 00:05:25.439 +It clones the repository. That's the VC part in the name. + +00:05:25.440 --> 00:05:33.719 +package-vc uses VC, the C-x v stuff. In Emacs 29, there's a + +00:05:33.720 --> 00:05:37.679 +new command called vc-clone, which in Emacs 31, it was + +00:05:37.680 --> 00:05:42.479 +actually exposed as an interactive command. And when you + +00:05:42.480 --> 00:05:47.319 +clone the repository, or when you, you can give it any URL of a + +00:05:47.320 --> 00:05:50.559 +Git repository or a CVS repository or subversion + +00:05:50.560 --> 00:05:53.519 +repository. Interestingly enough, most people only use + +00:05:53.520 --> 00:05:57.559 +Git, but anything that's, that implements this clone + +00:05:57.560 --> 00:06:01.519 +command for VC, and it could download it. So there's no + +00:06:01.520 --> 00:06:05.119 +tarballs involved. Which is also, one should emphasize, + +00:06:05.120 --> 00:06:07.879 +part of the difficulty of VC packages because when you have + +00:06:07.880 --> 00:06:10.759 +version control and you want to upgrade it, it might be that + +00:06:10.760 --> 00:06:14.399 +the upstream did a force push. For that, you make local + +00:06:14.400 --> 00:06:17.519 +changes and then you have to merge them upstream with the + +00:06:17.520 --> 00:06:21.239 +upstream changes when fetching stuff. It's one of the big + +00:06:21.240 --> 00:06:23.559 +downsides of version-controlled stuff, and I'm saying + +00:06:23.560 --> 00:06:26.999 +this as the guy who actually wrote package-vc. There's + +00:06:27.000 --> 00:06:29.719 +times to use it, there's advantages to it, but that's + +00:06:29.720 --> 00:06:32.959 +something you should keep in mind, why tarballs are + +00:06:32.960 --> 00:06:37.969 +interesting to have, in my opinion. Okay. + +NOTE How is the new behavior of M-q in prog-mode (prog-fill-reindent-defun or something like that) different from the behavior of C-M-q (indent-pp-sexp) in older Emacs versions? + +00:06:37.970 --> 00:06:39.639 +How is the new + +00:06:39.640 --> 00:06:42.439 +behavior of M-q in prog mode, prog-fill-reindent-defun + +00:06:42.440 --> 00:06:45.159 +or something like that, different from the behavior + +00:06:45.160 --> 00:06:48.799 +of C-M-q, i.e. indent-pp-sexp in older Emacs + +00:06:48.800 --> 00:06:52.199 +version? My apologies if indent-pp-sexp, it's really tough to + +00:06:52.200 --> 00:06:55.959 +read M-x commands out loud. It's not bound to + +00:06:55.960 --> 00:07:01.519 +C-M-q by default, I can't tell. Let me try that command + +00:07:01.520 --> 00:07:05.599 +out because I've never tried it, never used it before. + +00:07:05.600 --> 00:07:09.079 +You know, that isn't bound by default. I bind that up myself + +00:07:09.080 --> 00:07:11.759 +and I have that binding. I think that's, that's not right. It + +00:07:11.760 --> 00:07:15.119 +says so. I mean, I'm currently executing it here in Emacs and + +00:07:15.120 --> 00:07:20.839 +it says you can also run the commands indent-pp-sexp with + +00:07:20.840 --> 00:07:26.359 +M-q, C-M-q. Apparently it is. I mean, I + +00:07:26.360 --> 00:07:31.359 +didn't set it myself. I don't know what's up with that. to try + +00:07:31.360 --> 00:07:35.439 +and move it. And then each line started with points or pretty + +00:07:35.440 --> 00:07:37.239 +printed. I mean, the difference, the main difference + +00:07:37.240 --> 00:07:41.279 +between that and the command highlighted, what's the name + +00:07:41.280 --> 00:07:47.479 +again? I forget it all the time. The prog-mode command. + +00:07:47.480 --> 00:07:50.359 +prog-fill-reindent-defun is that + +00:07:50.360 --> 00:07:56.319 +it checks if it's in a string or not. If it's in a string or if + +00:07:56.320 --> 00:07:58.959 +it's in a comma, then it will refill. Otherwise, it's going + +00:07:58.960 --> 00:07:59.799 +to re-indent. + +00:07:59.800 --> 00:08:05.679 +That's, I think, as far as I see, that's going to be the main + +00:08:05.680 --> 00:08:09.599 +difference. If we have some long comments somewhere. Let's + +00:08:09.600 --> 00:08:15.439 +try that out. Yeah, that's the difference. I just, you can't + +00:08:15.440 --> 00:08:19.679 +see it, but I did try it. Okay, good. Thank you. You did a + +00:08:19.680 --> 00:08:22.119 +wonderful job describing visually what you're doing. All + +00:08:22.120 --> 00:08:26.759 +right, moving on to the next question, and we have about, we + +00:08:26.760 --> 00:08:28.759 +have just enough time to cover the last three questions, + +00:08:28.760 --> 00:08:32.239 +especially because the next one, I can pretty much surmise + +00:08:32.240 --> 00:08:33.143 +the answer. + +NOTE Q: Any plans for Emacs running in iOS? + +00:08:33.144 --> 00:08:36.759 +Any plans for Emacs running on iOS? Probably not + +00:08:36.760 --> 00:08:40.319 +because it's not, I mean, as I emphasized in the video, the + +00:08:40.320 --> 00:08:43.639 +Emacs port in Android is completely free. And to my + +00:08:43.640 --> 00:08:45.319 +knowledge, that's not something that's currently + +00:08:45.320 --> 00:08:49.799 +possible with iOS. You need Xcode or something like that to + +00:08:49.800 --> 00:08:56.639 +build iOS stuff. So that's a big no-no. I mean, maybe Apple's + +00:08:56.640 --> 00:09:00.919 +going to change their mind on that one. Well, I won't be the + +00:09:00.920 --> 00:09:04.039 +one liaising with Apple to make sure that they do, but PR + +00:09:04.040 --> 00:09:07.599 +welcomes, I guess, or motivated folks welcome. Second to + +00:09:07.600 --> 00:09:08.647 +last question. + +NOTE Q: I am worried about the situation on non-free systems. There was talk about the Windows and the macOS versions being as good as unmaintained. Where do we go from here? + +00:09:08.648 --> 00:09:11.719 +I am worried about the situation on non-free + +00:09:11.720 --> 00:09:14.519 +systems. There was talk about the Windows and the macOS + +00:09:14.520 --> 00:09:17.039 +versions being as good as unmaintained. Where do we go from + +00:09:17.040 --> 00:09:20.399 +here? I gather that most users of Emacs are still on non-free + +00:09:20.400 --> 00:09:24.799 +platforms and will remain to be there. I don't know about the + +00:09:24.800 --> 00:09:28.279 +last point, if that's true, because there's no statistics + +00:09:28.280 --> 00:09:35.039 +on that matter. But the main, I mean, someone has to, I know + +00:09:35.040 --> 00:09:37.959 +that Corwin is involved with the Mac, with the Windows + +00:09:37.960 --> 00:09:43.199 +stuff. Modestly. Sure, I'd love to jump in, but I'm far more + +00:09:43.200 --> 00:09:45.839 +interested in your thoughts than mine. Please, please + +00:09:45.840 --> 00:09:51.039 +continue. Someone has to do the work. Eli uses, as far as I + +00:09:51.040 --> 00:09:58.719 +know, Eli's on the Windows XP system. So as long as he's doing + +00:09:58.720 --> 00:10:02.519 +that, there's going to be Windows support for one form or + +00:10:02.520 --> 00:10:07.959 +another, or at least DOS. All right. And now you put a quarter + +00:10:07.960 --> 00:10:12.439 +in me, so I'll jump right back in. That's perfect for where I + +00:10:12.440 --> 00:10:14.519 +guess I would take the question. To me, it's an + +00:10:14.520 --> 00:10:17.439 +accessibility issue. Think about it this way. Maybe that + +00:10:17.440 --> 00:10:23.319 +Windows XP system is what someone can afford. Likewise, + +00:10:23.320 --> 00:10:27.679 +from a freedom versus I have to do my job and I have to use + +00:10:27.680 --> 00:10:31.679 +certain technology to do my job. Maybe Emacs is what + +00:10:31.680 --> 00:10:35.559 +somebody can afford right? It might be the only free tool + +00:10:35.560 --> 00:10:37.439 +that they use and they don't have a lot of choice about the + +00:10:37.440 --> 00:10:40.039 +operating system that they're in most of the day. In fact, + +00:10:40.040 --> 00:10:42.279 +somebody could be in the situation where their computing + +00:10:42.280 --> 00:10:45.839 +device at work is really their internet access, right? All + +00:10:45.840 --> 00:10:48.279 +of those situations are possible. Therefore, I tend to + +00:10:48.280 --> 00:10:53.479 +assume they all exist and when I ask, you know, how much It + +00:10:53.480 --> 00:10:58.039 +definitely is concerning when we hear about kind of black + +00:10:58.040 --> 00:11:02.079 +holes in the brain trust of something like support for the + +00:11:02.080 --> 00:11:06.359 +Windows port. I feel like I've heard a lot of people + +00:11:06.360 --> 00:11:10.959 +answering that call, but the importance of that is that it + +00:11:10.960 --> 00:11:14.119 +doesn't stop echoing, right? Free software goes as long as + +00:11:14.120 --> 00:11:16.399 +there are people that are irritated enough about something + +00:11:16.400 --> 00:11:20.839 +to sort of come hack on it. Yeah. And the same applies to Mac + +00:11:20.840 --> 00:11:25.199 +OS. But I don't know any concrete details about who's + +00:11:25.200 --> 00:11:28.079 +currently working on it. I can't recollect any details on + +00:11:28.080 --> 00:11:29.439 +who's currently working on what. + +00:11:29.440 --> 00:11:35.279 +Okay. And that leaves us with the last question of the day. + +NOTE Q: Is there a best practice on what Org to use when following emacs-latest? + +00:11:35.280 --> 00:11:38.159 +I'm a bit confused about what version of Org that I should + +00:11:38.160 --> 00:11:40.919 +write towards because there's Org in Emacs, the one that + +00:11:40.920 --> 00:11:44.279 +ships built-in. There's the one in ELPA. There's the one in + +00:11:44.280 --> 00:11:48.519 +Org, probably the Org ELPA, I assume. Is there a best + +00:11:48.520 --> 00:11:51.959 +practice on what Org to use when following Emacs latest? + +00:11:51.960 --> 00:11:58.919 +when following us latest. It depends on, I think, my rough + +00:11:58.920 --> 00:12:02.559 +heuristic is if you do use Org a lot and if you follow the + +00:12:02.560 --> 00:12:06.279 +newest features, then use the version on Elpa, because the + +00:12:06.280 --> 00:12:09.959 +Elpa version should be the most up-to-date one. The Org Elpa + +00:12:09.960 --> 00:12:14.999 +was deprecated, to my knowledge. If that seems true, please + +00:12:15.000 --> 00:12:18.319 +someone interrupt me before I make a fool of myself. + +00:12:18.320 --> 00:12:24.519 +No one's done that yet. + +00:12:24.520 --> 00:12:29.519 +I think a couple of years ago there were chats and then we + +00:12:29.520 --> 00:12:33.999 +deprecated the all contrib ELPA, but I think all the ELPA is + +00:12:34.000 --> 00:12:40.759 +still alive. I didn't know that about that. Okay, in that + +00:12:40.760 --> 00:12:44.839 +case, that relativizes how absolute my answer is. + +00:12:44.840 --> 00:12:49.559 +Personally, I just use the version in Emacs, which is + +00:12:49.560 --> 00:12:53.399 +bundled with Emacs, which is regularly updated on master + +00:12:53.400 --> 00:12:58.319 +whenever there's a release. But that might take maybe, it + +00:12:58.320 --> 00:13:03.559 +might be a short time behind the ELPA version, or the other + +00:13:03.560 --> 00:13:11.879 +ELPA, the Org ELPA, which we mentioned. But I'm a very light + +00:13:11.880 --> 00:13:16.119 +Org mode user, so please don't take my word for that one. No, + +00:13:16.120 --> 00:13:23.439 +and I'm happy to come to you. Yeah. I + +00:13:23.440 --> 00:13:27.719 +feel like we lost Leo again. OK. Well, that's all right. I + +00:13:27.720 --> 00:13:31.279 +wanted a bite at that, Apple. I'm a little bit. Yeah, I also + +00:13:31.280 --> 00:13:34.239 +describe myself as a light org user, but somehow your + +00:13:34.240 --> 00:13:37.159 +comment made me think, well, maybe I do use it just a little + +00:13:37.160 --> 00:13:41.719 +bit more than you, Philip. + +00:13:41.720 --> 00:13:45.359 +From my standpoint, I'm using it as a technical basis for + +00:13:45.360 --> 00:13:49.959 +dungeon mode in order to keep the game notes for the games + +00:13:49.960 --> 00:13:52.479 +that are made using this game engine I'm making that I talked + +00:13:52.480 --> 00:13:56.079 +about a few years ago. As soon as you said technical grounds, + +00:13:56.080 --> 00:13:59.319 +you definitely use it more. Right, right. So I've studied + +00:13:59.320 --> 00:14:04.159 +its internals a bit, and I have my own thoughts about this or + +00:14:04.160 --> 00:14:06.959 +that. But of course, I'm rolling with the punches because + +00:14:06.960 --> 00:14:10.119 +I'm just grateful that the bear dances. What an amazing + +00:14:10.120 --> 00:14:14.519 +thing is Org Mode. But Leo knows far more than me, + +00:14:14.520 --> 00:14:18.359 +conveniently having his stage right here, so he can't + +00:14:18.360 --> 00:14:22.359 +defend himself from this. But I've had thoughts around this + +00:14:22.360 --> 00:14:28.559 +space. Are you back, Leo? Yeah, sorry, I'm back. You save us + +00:14:28.560 --> 00:14:33.479 +all. Maybe closing remarks. I was trying to clear my throat + +00:14:33.480 --> 00:14:36.079 +to be very inconspicuous about me coming back, but + +00:14:36.080 --> 00:14:39.319 +apparently I was ousted. Yeah, I was trying to answer the + +00:14:39.320 --> 00:14:42.239 +question and I was trying to desperately save you from + +00:14:42.240 --> 00:14:45.999 +answering, Philip, because yes, the thing about Org Mode is + +00:14:46.000 --> 00:14:48.879 +that if you are the kind of people who tend to check out master + +00:14:48.880 --> 00:14:51.919 +on Org Mode, generally it's roughly pretty stable. Like + +00:14:51.920 --> 00:14:54.319 +when we were working with Org Element and stuff like this, + +00:14:54.320 --> 00:14:56.479 +Perhaps there were some elements of stability which + +00:14:56.480 --> 00:14:59.199 +weren't there quite yet, but usually now it's pretty + +00:14:59.200 --> 00:15:02.039 +stable. So I think that if you are really excited about + +00:15:02.040 --> 00:15:04.639 +contributing to Org Mode and stuff like this, I think there + +00:15:04.640 --> 00:15:08.199 +isn't all that many risks to just checking out Org Mode + +00:15:08.200 --> 00:15:10.999 +Master, so cloning the repository and just keeping up to + +00:15:11.000 --> 00:15:15.119 +date. Otherwise, ELPA is a fairly safe bet if you want to have + +00:15:15.120 --> 00:15:19.839 +the latest stable version. And we've got a question about + +00:15:19.840 --> 00:15:24.759 +[??] as with Emacs itself. You can follow whatever is + +00:15:24.760 --> 00:15:28.519 +published in your package archives or in your system + +00:15:28.520 --> 00:15:32.399 +distribution package manager. You can build it yourself if + +00:15:32.400 --> 00:15:36.839 +you want to contribute and fix bugs, add features, and so on. + +00:15:36.840 --> 00:15:40.399 +Yeah, and I don't think perhaps a little more with Emacs, + +00:15:40.400 --> 00:15:43.439 +because the features that tends to get introduced in Emacs + +00:15:43.440 --> 00:15:48.039 +are slightly more wild. Not wild in the sense that they are + +00:15:48.040 --> 00:15:50.679 +less stable, but wild in the sense that they tend to change a + +00:15:50.680 --> 00:15:54.119 +lot more stuff. The core of Org, at least during Bastien's + +00:15:54.120 --> 00:15:56.879 +maintenance ship, was very stable when you think about it. + +00:15:56.880 --> 00:15:59.719 +So things might change with Ihor right now in terms of how he + +00:15:59.720 --> 00:16:02.839 +wants to change some of the core behaviors, but it's usually + +00:16:02.840 --> 00:16:06.079 +pretty stable. And whether you use the latest major + +00:16:06.080 --> 00:16:09.159 +version, the latest minor version, things are probably + +00:16:09.160 --> 00:16:11.679 +going to be pretty stable. It's like you heard me while you + +00:16:11.680 --> 00:16:16.199 +were offline. And I do agree with that, in case you might have + +00:16:16.200 --> 00:16:18.319 +heard both our remarks and think we're talking different + +00:16:18.320 --> 00:16:22.439 +angles. Actually, I think we would tend to agree on this, Leo + +00:16:22.440 --> 00:16:26.759 +and I. For the record, when I'm saying, oh, I have to go keep up + +00:16:26.760 --> 00:16:30.719 +with org, that's because org grows behaviors that I've got + +00:16:30.720 --> 00:16:34.639 +my own. I had to figure out at some point my own way to do it, and + +00:16:34.640 --> 00:16:38.119 +now I'm learning how it's done, right? So I'm like, in my + +00:16:38.120 --> 00:16:41.279 +abstraction, blah, right? And those conversations + +00:16:41.280 --> 00:16:44.279 +usually end at, and somebody else took the time to figure out + +00:16:44.280 --> 00:16:48.039 +how to actually make Emacs do that. Go be quiet. And I do, and I + +00:16:48.040 --> 00:16:52.999 +do consider that under Bastien's tenure, it has been quite + +00:16:53.000 --> 00:16:57.039 +stable. We might notice the occasional like, oh, this + +00:16:57.040 --> 00:17:00.519 +highlights now and that didn't, right? But very often, very + +00:17:00.520 --> 00:17:03.599 +infrequently is it breaking my workflow as a user, any of it. + +00:17:03.600 --> 00:17:07.799 +It's interesting to me that this mirrors my experience with + +00:17:07.800 --> 00:17:12.679 +Emacs itself, where I think, in my perception, Emacs master + +00:17:12.680 --> 00:17:17.199 +is very stable and I might notice the slight changes between + +00:17:17.200 --> 00:17:21.839 +git pulls. But otherwise, in my experience, Org mode + +00:17:21.840 --> 00:17:24.879 +suddenly changes something, I don't know what changed or + +00:17:24.880 --> 00:17:29.439 +what's going on or what caused it, and it seemed... I + +00:17:29.440 --> 00:17:33.719 +perceive it as being a sudden uncontrolled change or + +00:17:33.720 --> 00:17:36.239 +something. I think that's apt. Right. That gets + +00:17:36.240 --> 00:17:40.159 +right at it. If we're following, if we're pulling for more + +00:17:40.160 --> 00:17:42.759 +pretty regularly, cronjob every night or pulling a few + +00:17:42.760 --> 00:17:44.639 +times a day or something like that, we're going to the + +00:17:44.640 --> 00:17:48.639 +internals yeah, we'll have a different experience than, + +00:17:48.640 --> 00:17:51.959 +you know, if we only remember to update Org once every four + +00:17:51.960 --> 00:17:54.759 +months. It really pays to stick with everything. And + +00:17:54.760 --> 00:17:59.199 +suddenly lots of things might change. Whatever broke in my + +00:17:59.200 --> 00:18:03.439 +own config, right? And so a lot of, like a lot of things within + +00:18:03.440 --> 00:18:06.759 +Emacs, but also within the free software tool chain, it's + +00:18:06.760 --> 00:18:09.559 +how much you're going to invent in the config, invest in the + +00:18:09.560 --> 00:18:14.199 +config, might limit you know, and maintaining your config + +00:18:14.200 --> 00:18:17.199 +may limit the depth of how far it makes sense for you to go with + +00:18:17.200 --> 00:18:21.759 +the tool at any given point in time. Actually just looked up + +00:18:21.760 --> 00:18:25.279 +my org config and it's four, I said four options, user + +00:18:25.280 --> 00:18:29.239 +options. So that's, if that's the measurements of org + +00:18:29.240 --> 00:18:32.119 +expertise, that's my level, it's four. + +00:18:32.120 --> 00:18:38.559 +That's all good then. Four of four, I'm assuming that is, + +00:18:38.560 --> 00:18:44.279 +right? Four of what? What was the metric there, four of like a + +00:18:44.280 --> 00:18:48.119 +thousand? Four out of the number of user options that Word + +00:18:48.120 --> 00:18:54.239 +provides. Oh, okay, I see. Four, yeah, more like 10,000. I'm + +00:18:54.240 --> 00:18:59.079 +there. Yeah. All right. On that note, I suggest we move to + +00:18:59.080 --> 00:19:00.999 +what's close because it's fairly late for me and I need to + +00:19:01.000 --> 00:19:03.119 +sleep. And Philip, I think it's pretty late for you as well, + +00:19:03.120 --> 00:19:07.239 +isn't it? I'm in Germany, so it's about... So it is pretty + +00:19:07.240 --> 00:19:09.799 +late. It's the same time zone as me. It's 11 p.m. for you. + +00:19:09.800 --> 00:19:16.399 +Truly, yeah. Yeah, so I suggest we both take the chance to go + +00:19:16.400 --> 00:19:20.359 +to bed as soon as we can. But Philip, thank you so much for + +00:19:20.360 --> 00:19:22.759 +both the presentation and also the answers that you + +00:19:22.760 --> 00:19:26.119 +provided to us and the nice little chat we had at the end. We + +00:19:26.120 --> 00:19:29.519 +look forward to seeing you again next year, perhaps for + +00:19:29.520 --> 00:19:34.159 +Emacs 31. I'm not sure. I was chatting with wasamasa + +00:19:34.160 --> 00:19:37.679 +trying to make prognostics about when Emacs 30 is going to be + +00:19:37.680 --> 00:19:40.839 +released. There's a pre-release coming soon. I should have + +00:19:40.840 --> 00:19:46.719 +mentioned that earlier. Well, there you go. Gone. + +00:19:46.720 --> 00:19:51.839 +All right. Well, thank you so much, Philip. We'll be moving + +00:19:51.840 --> 00:19:54.479 +towards close. Give us about two minutes to get set up in the + +00:19:54.480 --> 00:19:58.439 +other room. And Philip, we'll see you next time. Goodbye. + +00:19:58.440 --> 00:20:02.160 +Bye-bye. Thank you. diff --git a/2024/captions/emacsconf-2024-guile--beguiling-emacs-guileemacs-relaunched--robin-templeton--answers.vtt b/2024/captions/emacsconf-2024-guile--beguiling-emacs-guileemacs-relaunched--robin-templeton--answers.vtt new file mode 100644 index 00000000..510e556e --- /dev/null +++ b/2024/captions/emacsconf-2024-guile--beguiling-emacs-guileemacs-relaunched--robin-templeton--answers.vtt @@ -0,0 +1,720 @@ +WEBVTT + +00:00:00.000 --> 00:00:08.119 +All right. Hey, thanks for bearing with us there. We had a + +00:00:08.120 --> 00:00:11.239 +couple of bumps in the road, a cross between a couple of + +00:00:11.240 --> 00:00:13.479 +different versions of our program that we deliver here, + +00:00:13.480 --> 00:00:17.959 +different ways that we bring this stream together between + +00:00:17.960 --> 00:00:22.359 +the recorded content that that speakers are putting + +00:00:22.360 --> 00:00:26.879 +together in advance in the live content, such as what you're + +00:00:26.880 --> 00:00:31.039 +seeing right here. So thanks go to Sacha and Leo, and + +00:00:31.040 --> 00:00:34.359 +everybody behind the stages gluing it all together. And + +00:00:34.360 --> 00:00:40.199 +we're back here now, and I'm speaking with Robin, who us + +00:00:40.200 --> 00:00:42.799 +ready to take on some of your questions and address some of + +00:00:42.800 --> 00:00:46.879 +the comments over here on the etherpad. If you want to jump in + +00:00:46.880 --> 00:00:51.319 +there, there's links in the chat. And thanks so much, Robin, + +00:00:51.320 --> 00:00:53.999 +for your talk. And it's also been a pleasure chatting with + +00:00:54.000 --> 00:00:57.919 +you just a little bit over the last couple of months on IRC. + +00:00:57.920 --> 00:01:33.319 +Yeah, absolutely. Great meeting you. + +00:01:33.320 --> 00:01:37.679 +All right. All right, everyone. I think I am streaming now. + +00:01:37.680 --> 00:01:42.439 +So let's look at it. Let's see. I see the IRC scrolling. So + +00:01:42.440 --> 00:01:47.199 +let's see where that's going. Yes, the Common Lisp is what I + +00:01:47.200 --> 00:01:50.519 +thought would piss people off. And because it's not part of + +00:01:50.520 --> 00:01:54.239 +either community, but I think it would be a good compromise + +00:01:54.240 --> 00:01:57.839 +for building a Lisp into a language that's more suitable for + +00:01:57.840 --> 00:02:01.879 +building large systems like the kind that we are building in + +00:02:01.880 --> 00:02:07.279 +Emacs today. I also left out an important part of the talk, + +00:02:07.280 --> 00:02:12.079 +which is part of the motivation for transitioning from C to + +00:02:12.080 --> 00:02:15.599 +Lisp. And that's the performance characteristics + +00:02:15.600 --> 00:02:19.399 +fundamentally change when you get a modern and high + +00:02:19.400 --> 00:02:23.559 +performance Lisp system involved. it starts getting less + +00:02:23.560 --> 00:02:27.799 +practical to just call out to C to speed up every operation. + +00:02:27.800 --> 00:02:31.559 +Among other things, you lose the ability to use more + +00:02:31.560 --> 00:02:34.759 +advanced control structures, like the limited + +00:02:34.760 --> 00:02:40.039 +continuations. And you also have to pay the overhead of + +00:02:40.040 --> 00:02:43.879 +calling out to our foreign function. So it gets to be an + +00:02:43.880 --> 00:02:47.879 +increasingly better deal to optimize your list + +00:02:47.880 --> 00:02:52.719 +implementation and provide ways for building faster list + +00:02:52.720 --> 00:02:55.879 +programs, such as type annotations, once you've gotten + +00:02:55.880 --> 00:03:01.479 +over a certain threshold of performance. + +NOTE Q: About fibers: My understanding is that the problem with making Elisp concurrent is that none of the data structures (buffer, cons, vector, window etc) are concurrency-safe. How do fibers help with this? + +00:03:01.480 --> 00:03:07.359 +I'm going to look at the pad. Here we go. The first question is + +00:03:07.360 --> 00:03:12.519 +about fibers and whether they help with making Elisp + +00:03:12.520 --> 00:03:18.279 +concurrent in terms of its data structures. Yes, that's + +00:03:18.280 --> 00:03:23.879 +absolutely correct. Fibers by themselves do not provide + +00:03:23.880 --> 00:03:26.799 +thread safety for any of the existing Emacs data + +00:03:26.800 --> 00:03:32.879 +structures. What they are useful for is building things + +00:03:32.880 --> 00:03:38.199 +that don't use Emacs data structures, say a network client + +00:03:38.200 --> 00:03:44.559 +that reads input from a stream or in scheme, a port or a stream + +00:03:44.560 --> 00:03:49.679 +instead of a buffer. And we can also take a look at options for + +00:03:49.680 --> 00:03:54.199 +making more Emacs features concurrency safe or thread + +00:03:54.200 --> 00:03:58.079 +safe. For example, we could introduce the idea of a thread + +00:03:58.080 --> 00:04:03.039 +local buffer that didn't require locks for sharing between + +00:04:03.040 --> 00:04:09.239 +different threads. And I'm not sure how that would develop, + +00:04:09.240 --> 00:04:12.319 +but I'm sure the Emacs maintainers already have some ideas + +00:04:12.320 --> 00:04:17.519 +in this direction. Fibers will basically provide a + +00:04:17.520 --> 00:04:22.159 +high-performance system that you can use apart from + +00:04:22.160 --> 00:04:28.079 +ordinary Emacs-less constructs. + +NOTE Q: Do you have a rough idea of how much of Guile is written in C? + +00:04:28.080 --> 00:04:34.839 +Let's see. We have another question. Emacs is roughly 25% C. + +00:04:34.840 --> 00:04:38.839 +How much of Guile is in C? + +00:04:38.840 --> 00:04:45.679 +Well, part of my point about C is not so much that there, well, + +00:04:45.680 --> 00:04:50.279 +obviously, I phrased it a little provocatively, but the + +00:04:50.280 --> 00:04:54.719 +problem is not so much that there is C, but that there is so + +00:04:54.720 --> 00:05:00.279 +much C involved in every single layer of the application. + +00:05:00.280 --> 00:05:04.559 +So, for example, we're limited in our ability to use tools + +00:05:04.560 --> 00:05:08.159 +like limit continuations, which can be used to express + +00:05:08.160 --> 00:05:13.599 +buffer local variable binding in a few dozen lines, because + +00:05:13.600 --> 00:05:21.839 +Emacs has so much calling back and forth between guile and C, + +00:05:21.840 --> 00:05:26.599 +due to so much basic functionality being in primitive C + +00:05:26.600 --> 00:05:34.119 +subroutines. So that's one issue apart from the question of + +00:05:34.120 --> 00:05:38.359 +how much is in a particular language. To answer the question + +00:05:38.360 --> 00:05:45.879 +about Guile, Guile has about 165,000 lines of scheme code + +00:05:45.880 --> 00:05:51.599 +and about 160,000 lines of C code, so it's about half and + +00:05:51.600 --> 00:05:55.879 +half. And that shouldn't really be surprising given that it + +00:05:55.880 --> 00:06:00.359 +is actually focused on low-level things like building a + +00:06:00.360 --> 00:06:05.079 +high-performance bytecode compiler, and a just-in-time + +00:06:05.080 --> 00:06:09.719 +compiler, and so on, as well as providing its own fairly + +00:06:09.720 --> 00:06:14.999 +rich, but still far less complete than Emacs's standard + +00:06:15.000 --> 00:06:19.239 +library, in terms of Ice9 and other system libraries + +NOTE Q: A Common Lisp implementation for Guile sounds really cool! Is there already work on this underway? + +00:06:19.240 --> 00:06:24.359 +shipped with Guile. The next question is on a Common Lisp + +00:06:24.360 --> 00:06:27.759 +implementation for Guile, and whether work on it is + +00:06:27.760 --> 00:06:33.079 +underway. In fact, work on it is already underway. I've been + +00:06:33.080 --> 00:06:36.399 +working on it on and off in my spare time for a couple of years + +00:06:36.400 --> 00:06:40.039 +now. I've gotten, I think, a couple of chapters of the + +00:06:40.040 --> 00:06:43.519 +hyperspectin, if you want to measure it that way. But I've + +00:06:43.520 --> 00:06:51.719 +been focusing my work more on research and on what we need to + +00:06:51.720 --> 00:06:57.399 +do to have a LISP environment, a polyglot LISP environment, + +00:06:57.400 --> 00:07:02.759 +wherein the features of Common Lisp and Scheme and Emacs + +00:07:02.760 --> 00:07:08.919 +Lisp can all work easily and ergonomically together. So + +00:07:08.920 --> 00:07:13.879 +this involves things like the question of Lisps having + +00:07:13.880 --> 00:07:22.079 +Lisp1s versus Lisp2s. That is, a Lisp1-like scheme has one + +00:07:22.080 --> 00:07:27.599 +namespace, like every variable is a single name that can + +00:07:27.600 --> 00:07:31.999 +refer to one value, whereas in Lisp2s like EmacsLisp, + +00:07:32.000 --> 00:07:37.399 +symbols can have different definitions as functions and as + +00:07:37.400 --> 00:07:41.119 +variables, as well as other namespaces like property + +00:07:41.120 --> 00:07:45.719 +lists. So Kent Pittman has some interesting thoughts on + +00:07:45.720 --> 00:07:51.039 +this that I've been looking into. Another issue is the + +00:07:51.040 --> 00:07:57.519 +interaction between package and module systems. So I don't + +00:07:57.520 --> 00:08:01.839 +have really anything ready to publish just yet on this, but I + +00:08:01.840 --> 00:08:05.279 +have been looking into the background issues of + +00:08:05.280 --> 00:08:08.119 +integrating this into Guile in a useful way. + +00:08:08.120 --> 00:08:15.719 +And let's see, one other thing I was going to mention. + +00:08:15.720 --> 00:08:27.679 +Okay, I've lost it. But yeah, there is some work already. And + +00:08:27.680 --> 00:08:30.399 +if people are interested in moving Emacs in this direction, + +00:08:30.400 --> 00:08:34.479 +then we'll certainly start working on it in earnest. + +NOTE Q: Did switching from guile 2 to 3 give any performance benefits? + +00:08:34.480 --> 00:08:41.119 +Another question, did switching from Guile 2 to 3 give any + +00:08:41.120 --> 00:08:46.279 +performance benefits? Well, honestly, we're not really + +00:08:46.280 --> 00:08:50.759 +benchmarking stuff here because Guile Emacs has so much + +00:08:50.760 --> 00:08:55.759 +overhead from structuring the compiler to closely conform + +00:08:55.760 --> 00:08:59.879 +to Emacs in terms of like even things as simple as metadata + +00:08:59.880 --> 00:09:03.879 +layout for variable information. + +00:09:03.880 --> 00:09:11.999 +So I haven't actually noticed a perceptual change. I would + +00:09:12.000 --> 00:09:15.359 +guess based on the Gabriel benchmark results that is + +00:09:15.360 --> 00:09:21.399 +benefited from what somewhat from Gal 3's performance + +00:09:21.400 --> 00:09:27.479 +improvements but for Emacs I just don't know yet and working + +00:09:27.480 --> 00:09:30.199 +on the compiler's code generation and lowering the + +00:09:30.200 --> 00:09:33.719 +overhead is going to be the thing that provides the most + +00:09:33.720 --> 00:09:37.319 +return for improving that aspect of Gal Emacs. + +00:09:37.320 --> 00:09:54.079 +Let's see, I see SICL mentioned here, as well as SPCL. And it + +00:09:54.080 --> 00:09:56.919 +could certainly help with the implementation of + +00:09:56.920 --> 00:10:01.519 +Commonwealth and Guile, because a lot of the basic stuff is + +00:10:01.520 --> 00:10:05.559 +just providing a new interface to some bit of + +00:10:05.560 --> 00:10:08.879 +functionality. Like the sequence library, it's mostly + +00:10:08.880 --> 00:10:13.279 +stuff that we already have through SR5 and so on. The + +00:10:13.280 --> 00:10:16.879 +difficult, well, not the difficult but the time consuming + +00:10:16.880 --> 00:10:21.599 +parts are going to be all the little DSL sitcom on this path + +00:10:21.600 --> 00:10:26.999 +packed up inside it like pretty printing format loop and so + +00:10:27.000 --> 00:10:32.359 +on. It's for those high-level features that I think we could + +00:10:32.360 --> 00:10:34.959 +potentially share code with other Common Lisp + +00:10:34.960 --> 00:10:39.039 +implementations. And Common Lisp implementations do tend + +00:10:39.040 --> 00:10:43.239 +to be permissively licensed, SPCL's public domain, for + +00:10:43.240 --> 00:10:46.439 +example, so there's no barrier to sharing code with them. + +NOTE Q: Do you know if the Emacs maintainers are interested in switching to Guile as the engine for Emacs Lisp? + +00:10:46.440 --> 00:10:52.719 +There's another question about whether the Emacs + +00:10:52.720 --> 00:10:55.679 +maintainers are interested in switching to Guile as the + +00:10:55.680 --> 00:10:59.199 +engine for Emacs Lisp. I can't speak for the current + +00:10:59.200 --> 00:11:05.439 +maintainers. I can say that people have talked to previous + +00:11:05.440 --> 00:11:10.439 +Emacs maintainers about the whole idea, and their attitude + +00:11:10.440 --> 00:11:15.479 +was generally cautiously optimistic. As in, it's not + +00:11:15.480 --> 00:11:18.799 +something they, it's somewhat political, they didn't want + +00:11:18.800 --> 00:11:23.479 +to get into it, but they didn't think that it was a bad idea, + +00:11:23.480 --> 00:11:25.919 +and they wanted to know more about how it might evolve in the + +00:11:25.920 --> 00:11:31.879 +future. I can comment that Eli Zaretsky, who I believe is the + +00:11:31.880 --> 00:11:36.879 +current Emacs maintainer, is very concerned about + +00:11:36.880 --> 00:11:44.679 +cross-platform compatibility. And so if I can guess at his + +00:11:44.680 --> 00:11:48.519 +priorities correctly, I think that that's something that + +00:11:48.520 --> 00:11:52.599 +we'll have to make sure is rock solid before we propose any + +00:11:52.600 --> 00:11:58.359 +kind of upstreaming of Gala Emacs. but in general + +00:11:58.360 --> 00:12:03.719 +maintainers have been cautious but curious. So I just + +00:12:03.720 --> 00:12:06.719 +wanted to break in and note at this point that as lives I + +00:12:06.720 --> 00:12:09.519 +didn't sorry I couldn't do so more gracefully while we were + +00:12:09.520 --> 00:12:13.439 +still on stream but I wanted to let you know that just as of 10 + +00:12:13.440 --> 00:12:17.399 +seconds ago or so we've had to cut away into our next talk but + +00:12:17.400 --> 00:12:22.199 +we can keep going here as long as we like. Okay, let's wrap up. + +00:12:22.200 --> 00:12:25.399 +There's only a couple questions left on the pad, so I'll + +00:12:25.400 --> 00:12:29.999 +answer those, and then I'll be available on IRC. So, the next + +NOTE Q: Do you think guile-emacs will be able to use or (collaborate with) some of the other awesome projects around Emacs Lisp? + +00:12:30.000 --> 00:12:33.319 +question is whether Guile Emacs will be able to collaborate + +00:12:33.320 --> 00:12:35.959 +with projects like Gypsum and + +00:12:35.960 --> 00:12:44.319 +the native compilation projects or the pre-scheme + +00:12:44.320 --> 00:12:48.039 +efforts. Oh, yes, that is one of the things I forgot to bring + +00:12:48.040 --> 00:12:53.199 +up in my talk. So, first of all, Gypsum is approaching a + +00:12:53.200 --> 00:12:58.199 +similar idea from a different direction. And we clearly + +00:12:58.200 --> 00:13:03.919 +have a different focus. My focus is on improving Emacs Lisp + +00:13:03.920 --> 00:13:09.279 +and making Emacs itself better by integrating Guile Elisp + +00:13:09.280 --> 00:13:15.159 +and Emacs, rather than replacing eLisp or deprecating it in + +00:13:15.160 --> 00:13:20.159 +any way. But given gypsum's requirements, I do think that we + +00:13:20.160 --> 00:13:26.439 +could share a lot of code required for emulating basic Emacs + +00:13:26.440 --> 00:13:29.839 +functionality. And this could even become interesting if + +00:13:29.840 --> 00:13:35.799 +we get to the point of rewriting parts of Emacs in Lisp. With + +00:13:35.800 --> 00:13:41.279 +respect to the native compilation effort, I'm familiar + +00:13:41.280 --> 00:13:45.879 +with it. I'm not that impressed with the results of it. It's a + +00:13:45.880 --> 00:13:52.359 +very impressive effort, but as far as I can tell, it's + +00:13:52.360 --> 00:13:57.239 +accelerating a bytecode interpreter that just simply has + +00:13:57.240 --> 00:14:02.719 +an out-of-date design, to be quite blunt. It's possible + +00:14:02.720 --> 00:14:08.919 +that Emacs's JIT has ideas that Guile should adopt, like + +00:14:08.920 --> 00:14:14.039 +perhaps libgccjit might perhaps be better than GNU + +00:14:14.040 --> 00:14:16.999 +Lightning, which is a relatively simple JIT that Guile + +00:14:17.000 --> 00:14:17.639 +uses. + +00:14:17.640 --> 00:14:25.839 +But it doesn't have to have a direct relationship to Guile + +00:14:25.840 --> 00:14:31.159 +Emacs. And as far as pre-scheme goes, I have been watching + +00:14:31.160 --> 00:14:36.199 +Flat Watson's work on pre-scheme with great interest + +00:14:36.200 --> 00:14:39.999 +because Scheme 48 used to be my favorite implementation. + +00:14:40.000 --> 00:14:44.919 +And I do think that it could be, it's a tool that we should look + +00:14:44.920 --> 00:14:47.879 +at when we're thinking about moving functionality into + +00:14:47.880 --> 00:14:53.199 +Lisp and could certainly make it easier to upstream some of + +00:14:53.200 --> 00:14:54.519 +the work we may end up doing. + +00:14:54.520 --> 00:15:04.199 +All right, do we have more questions? + +NOTE Q: SBCL, ...You mentioned Robert Strandh's SICL along with SBCL---does that work help with the implementation of CL in Guile? + +00:15:04.200 --> 00:15:13.159 +There's a question about SICL and SBCL. I think I answered + +00:15:13.160 --> 00:15:17.519 +that earlier. It should help us implement Common Lisp when + +00:15:17.520 --> 00:15:24.999 +it comes to high-level features and the various large + +00:15:25.000 --> 00:15:28.759 +subcomponents of Common Lisp. Another important factor is + +00:15:28.760 --> 00:15:32.279 +that Guile already has decent support for the Common Lisp + +00:15:32.280 --> 00:15:35.799 +object system. Without that, it would be far more + +00:15:35.800 --> 00:15:41.919 +difficult. But I do expect that we can share code with other + +00:15:41.920 --> 00:15:44.799 +Common Lisp implementations. I've personally rated + +00:15:44.800 --> 00:15:49.199 +Common Lisp compiler code when working on Guile Hoot, for + +00:15:49.200 --> 00:15:52.959 +example. So there are definitely places where they can + +00:15:52.960 --> 00:15:54.039 +contribute. + +00:15:54.040 --> 00:16:02.839 +Regarding the Hoot project and its relationship to + +00:16:02.840 --> 00:16:11.079 +Galimax, it's a purely speculative thing. First of all, + +00:16:11.080 --> 00:16:17.079 +Hoot is only tested on Scheme-to-WebAssembly + +00:16:17.080 --> 00:16:22.599 +compilations. I've heard some suggestions that some uses + +00:16:22.600 --> 00:16:26.439 +of Tree.io may not be compatible with the Hoot compiler. I'm + +00:16:26.440 --> 00:16:29.999 +not sure if that's the case or not. + +00:16:30.000 --> 00:16:41.199 +But it is a complete enough project that if Emacs is, say, 90% + +00:16:41.200 --> 00:16:45.119 +Lisp, there's only a few thousand lines of C code to + +00:16:45.120 --> 00:16:49.159 +implement, then it would be entirely practical to compile + +00:16:49.160 --> 00:16:54.159 +Emacs WebAssembly, as long as we had a back end, like one + +00:16:54.160 --> 00:16:58.119 +based on the browser's document object model, or some sort + +00:16:58.120 --> 00:17:04.439 +of graphical interface through WASI. And that may have some + +00:17:04.440 --> 00:17:07.359 +interesting applications for portability to unusual + +00:17:07.360 --> 00:17:11.359 +platforms. It may even bring performance advantages in + +00:17:11.360 --> 00:17:18.959 +cases where the WebAssembly implementation is connected + +00:17:18.960 --> 00:17:22.759 +to a tracing just-in-time compiler, because that may be + +00:17:22.760 --> 00:17:26.839 +more appropriate to the high level of dynamism the Emacs + +00:17:26.840 --> 00:17:32.439 +list has than the kind of simple template JITs that both + +00:17:32.440 --> 00:17:34.519 +Emacs and Guile are using. + +00:17:34.520 --> 00:17:39.799 +What a fascinating point. Just to break into active + +00:17:39.800 --> 00:17:43.999 +listening a little so this doesn't, to you, feel like you're + +00:17:44.000 --> 00:17:46.919 +talking to yourself. I can see from chat and the questions + +00:17:46.920 --> 00:17:51.439 +still coming in, you know, comments. You know, it isn't, but + +00:17:51.440 --> 00:17:54.999 +I just want you to be able to hear and feel that. Yeah, great, + +00:17:55.000 --> 00:18:00.679 +great point there. All right. Thank you. And yes, if there + +00:18:00.680 --> 00:18:04.679 +are more questions, keep throwing them at me. I should + +00:18:04.680 --> 00:18:07.999 +probably also mention I will have to jump out myself, but the + +00:18:08.000 --> 00:18:10.799 +recording will automatically end when we all jump out or + +00:18:10.800 --> 00:18:15.199 +just drop a note anywhere, ping me, whatever. And I'll come + +00:18:15.200 --> 00:18:18.439 +along and shut off the recording and we'll trim it up before + +00:18:18.440 --> 00:18:21.879 +we publish it. I'm looking forward to reading through + +00:18:21.880 --> 00:18:30.199 +anything I do miss. Thank you. Sounds good. + +00:18:30.200 --> 00:19:08.439 +All right, I'm not seeing changes in the etherpad. So I'm + +00:19:08.440 --> 00:19:14.999 +going to close this in maybe 30 seconds if there are no more + +00:19:15.000 --> 00:19:21.159 +additions. Thanks, everyone, for the interesting and very + +00:19:21.160 --> 00:19:26.399 +pointed questions on some of the most significant areas. I + +00:19:26.400 --> 00:19:31.919 +appreciate everyone's feedback. I'm glad this provoked so + +00:19:31.920 --> 00:19:33.679 +much curiosity in people. + +00:19:33.680 --> 00:19:44.519 +Thank you, janneke. + +00:19:44.520 --> 00:19:51.439 +All right, I think we are done with the Q&A session, so I'm + +00:19:51.440 --> 00:19:57.199 +going to close this BBB and we can continue with the rest of + +00:19:57.200 --> 00:19:58.719 +EmacsConf. + +00:19:58.720 --> 00:20:10.160 +You are currently the only person in this conference. diff --git a/2024/captions/emacsconf-2024-gypsum--gypsum-my-clone-of-emacs-and-elisp-written-in-scheme--ramin-honary--answers.vtt b/2024/captions/emacsconf-2024-gypsum--gypsum-my-clone-of-emacs-and-elisp-written-in-scheme--ramin-honary--answers.vtt new file mode 100644 index 00000000..0142a879 --- /dev/null +++ b/2024/captions/emacsconf-2024-gypsum--gypsum-my-clone-of-emacs-and-elisp-written-in-scheme--ramin-honary--answers.vtt @@ -0,0 +1,725 @@ +WEBVTT + +00:00.069 --> 00:01.850 +Troy Hinckley's project that I'm talking about. I was going + +00:02.350 --> 00:22.139 +to mention this in my presentation, but it's possible, + +00:02.350 --> 00:22.139 +theoretically, that Troy Hinckley, his project could be + +00:02.350 --> 00:22.139 +used as a scheme of limitation that actually runs my own + +00:02.350 --> 00:22.139 +version of Emacs. And although, you know, This is + +00:25.478 --> 00:29.380 +completely theoretical, and I don't know how difficult + +00:25.478 --> 00:29.380 +that would be. But if Troy Hinckley implemented enough of + +00:30.781 --> 00:47.029 +the R7-RS standard in Rust, it would theoretically be + +00:30.781 --> 00:47.029 +possible to run the Gypsum editor in Troy Hinckley's own + +00:30.781 --> 00:47.029 +editor. I thought that was kind of interesting, and I + +00:48.270 --> 00:53.833 +thought it was worth mentioning, at least in the questions + +00:48.270 --> 00:53.833 +and answers. + +01:12.179 --> 01:14.080 +I also mentioned this in the presentation. I wanted to see + +01:14.940 --> 01:22.364 +Robin Templeton's project presentation, but + +01:14.940 --> 01:22.364 +unfortunately it's going to be at like four in the morning + +01:14.940 --> 01:22.364 +for me. So I'm going to try and watch that tomorrow, but + +01:22.984 --> 01:31.428 +that's also going to be a very interesting project to keep an + +01:22.984 --> 01:31.428 +eye on if you're interested in Scheme. That's the project + +01:33.149 --> 01:38.051 +where you've got the Guylain interpreter running inside of + +01:33.149 --> 01:38.051 +the Emacs process. It's dynamically linked as a library. + +02:04.699 --> 02:06.748 +I'm ready for questions from anybody. You can ask or you can + +02:07.431 --> 02:09.079 +type. It's up to you. + +02:32.319 --> 02:34.521 +Okay, let me check the etherpad. + +02:37.304 --> 02:38.245 +Let's see here. + +02:41.208 --> 02:42.830 +I'm not sure if I'm doing that right. + +02:46.373 --> 02:47.554 +Let me check one more time. Oh, there it goes. + +02:54.221 --> 02:55.702 +Let's see, so this is... + +03:00.151 --> 03:02.072 +I didn't know about that first bit of history. Oh, I've heard + +03:02.332 --> 00:03:09.369 +RMS say that Scheme Guile is just a nicer Lisp, but I didn't + +03:02.332 --> 03:09.776 +know there were concrete talks attempts to use Guile for + +03:02.332 --> 03:09.776 +Emacs that early. Let's see, that was from janneke. + +NOTE Q: I'm curious to know how the hell guile-emacs deals with all of the dynamically scoped modules out there. Is there any effort to automatically modularize and namespace stuff? + +00:03:09.370 --> 00:03:19.241 +I'm curious to know how the hell Guile Emacs deals with all the + +03:14.318 --> 03:19.241 +dynamically scoped modules out there. Is there any effort + +03:20.181 --> 03:24.943 +to automatically modularize and name? Let's see. + +03:30.523 --> 03:35.806 +That might be a better question for Robin Templeton. In my + +03:36.727 --> 03:46.573 +own project, + +03:36.727 --> 03:46.573 +there's no module system for Emacs Lisp. There is a module + +03:46.693 --> 03:48.234 +system for Scheme. And the Emacs Lisp interpreter runs in + +03:49.695 --> 03:55.158 +its own environment. the require system or whatever module + +03:57.068 --> 04:11.736 +system that Emacs has, once it's implemented, all of that + +03:57.068 --> 04:11.736 +would just happen inside of the Emacs Lisp environment, + +03:57.068 --> 04:11.736 +which is inside of the Scheme environment. And + +04:12.437 --> 04:15.898 +environments are objects in Scheme. + +04:21.522 --> 04:24.103 +I think a more difficult question is how to handle + +04:26.420 --> 04:31.942 +threading, and Scheme has very good threading built in, in + +04:26.420 --> 04:31.942 +Serphe-18[??]. + +04:34.283 --> 04:48.028 +But I don't think it will be easy to write Emacs Lisp form + +04:34.283 --> 04:48.028 +bindings to the Scheme multi-threading implementation. + +04:48.548 --> 04:50.749 +Emacs Lisp was just not cut out for that kind of thing. So I + +04:51.710 --> 04:59.894 +think each Emacs Lisp, you could, I suppose, have multiple + +04:51.710 --> 04:59.894 +threads each running their own Emacs Lisp environment. + +05:01.375 --> 05:02.956 +Scheme would make that very simple to do. + +05:06.018 --> 05:16.744 +And then there'd just be a question of how you would get those + +05:06.018 --> 05:16.744 +different interpreters to communicate with each other, + +05:06.018 --> 05:16.744 +perhaps using the same protocol that's used by the Emacs + +05:06.018 --> 05:16.744 +server. But I haven't thought that far ahead yet. + +NOTE Q: Would it be possible to support a GUI toolkit other than GTK? + +05:23.646 --> 05:28.709 +Would it be possible to support a GUI toolkit other than the + +05:23.646 --> 05:28.709 +GTK? Like, how is it still supports Lucid? Yes, this is + +05:31.291 --> 05:33.232 +absolutely a goal of the project. I'm trying to keep the back + +05:33.873 --> 05:38.416 +end separate as possible. The scheme has what you call + +05:39.817 --> 05:42.478 +parameters. And these are like global variables that are + +05:43.199 --> 05:46.221 +still somewhat thread safe. And every call to the GUI goes + +05:47.484 --> 05:51.225 +through a parameter. So the Emacs, the interpreter and the + +05:52.125 --> 05:59.367 +editor logic is all in one module. And then that module calls + +05:59.987 --> 06:04.309 +out into a separate GUI module. And then you can implement + +06:04.989 --> 06:07.690 +different GUI modules. So you could have one for GTK3, one + +06:08.430 --> 06:13.171 +for GTK4, if you want to write the extern C bindings around Qt + +06:13.843 --> 06:20.725 +or full tick, that would certainly be possible as well. It + +06:21.185 --> 06:32.168 +would be nice maybe to have an SDL implementation based + +06:21.185 --> 06:32.168 +maybe on Chikiti or some kind of immediate mode GUI, + +06:21.185 --> 06:32.168 +something like that. But definitely GTK3 through Guile GI + +06:33.808 --> 06:38.750 +is the reference implementation. Things start there. But + +06:41.298 --> 06:43.959 +I'm very interested in supporting other GUIs, yes. Let's + +06:45.199 --> 00:06:45.256 +see. + +NOTE Q: Do you plan to provide improvements to Elisp as a language, or is the focus on a compatibility layer to facilitate doing all new extensions, etc. in Scheme? + +00:06:45.257 --> 00:06:45.879 +Question, do you plan to provide improvements to ELisp + +06:47.540 --> 06:56.342 +as a language or focus on a compatibility layer to + +06:47.540 --> 06:56.342 +facilitate all new extensions in Scheme? Yeah, the second + +06:57.142 --> 06:57.962 +one. I want to move off to Scheme. I would like for this + +07:03.384 --> 07:05.264 +project to try and keep up to date with each new release of + +07:05.666 --> 07:10.789 +Emacs and Emacs Lisp. That's a difficult moving target to + +07:11.850 --> 07:14.552 +follow, I realize. But to the greatest extent possible, any + +07:15.152 --> 07:23.397 +new features to Emacs Lisp will be pulled in from GNU Emacs. + +07:25.419 --> 07:29.041 +If we happen to be able to implement something cool in + +07:25.419 --> 07:29.041 +Scheme, and be able to port it over to Emacs Lisp, then sure, + +07:29.437 --> 07:36.543 +it'd be nice to be able to upload or to submit that upstream to + +07:29.437 --> 07:36.543 +the GNU Emacs. But I think I would prefer to have new features + +07:38.584 --> 07:43.708 +written in Scheme. I would like this gypsum to be more of a + +07:43.989 --> 07:52.075 +Scheme app platform that just happens to be able to also run + +07:43.989 --> 07:52.075 +Emacs Lisp. That's how I see it. Of course, this will be a + +07:54.577 --> 07:56.699 +community project. I'm open to debate about that if anybody + +07:58.809 --> 08:02.012 +wants to convince me otherwise. + +08:08.439 --> 08:11.683 +Why is being able to interpret all of that EL a useful goal? + +08:12.464 --> 08:14.626 +Sure, there is a lot of code written in Elisp. Can we + +08:15.206 --> 08:17.749 +consider... Oh, it's still being written. Please go ahead + +08:18.390 --> 08:19.491 +and finish writing. + +NOTE Q: Can we consider a translator like utility to convert elisp to scheme, once guile-emacs becomes a reality? + +08:29.673 --> 08:35.576 +Can we consider a translator like utility to convert eLisp + +08:29.673 --> 08:35.576 +to Scheme once Guile-Emacs has become a reality? + +08:36.716 --> 08:37.076 +Certainly. For the time being, I just wanted to get the + +08:38.717 --> 08:42.639 +interpreter running. So the actual, the Guile-Emacs Lisp, + +08:44.520 --> 08:58.666 +the one that was written in 2011 that I didn't write, that + +08:44.520 --> 08:58.666 +actually does compile to, I think it's the tree + +08:44.520 --> 08:58.666 +intermediate representation It's one of the intermediate + +08:59.076 --> 09:03.697 +languages that Guile uses to compile Guile scheme itself. + +09:04.817 --> 09:09.299 +So the Emacs lisp that was written before actually does + +09:04.817 --> 09:09.299 +that. It actually compiles and makes use of the entire Guile + +09:09.339 --> 09:20.761 +compiler tool chain and actually produces like JIT + +09:09.339 --> 09:20.761 +compilable binaries, which is really cool. Like I said, + +09:23.342 --> 09:25.943 +that's the one that I had trouble getting to work properly. + +09:29.209 --> 09:30.890 +Maybe we can follow that architecture. I'm not sure how to do + +09:33.052 --> 09:45.102 +that, but I would like to be able to do some kind of + +09:33.052 --> 09:45.102 +translating, keeping in mind that we want to have this be + +09:33.052 --> 09:45.102 +portable, do various schemes. And so Guile makes this very + +09:45.988 --> 09:50.289 +easy, but other schemes don't. Gambit might do this pretty + +09:51.549 --> 09:53.530 +well as well. It compiles to C and then compiles C down to a + +09:53.950 --> 10:01.471 +dynamically linkable library. So yeah, I think probably + +10:03.372 --> 10:09.373 +the most portable, I'm just thinking out loud right now, + +10:10.652 --> 10:21.715 +most portable implementation will just be able to + +10:10.652 --> 10:21.715 +translate Emacs Lisp directly to Scheme, which is not what + +10:10.652 --> 10:21.715 +the old Guile Emacs Lisp implementation does. That goes to + +10:21.755 --> 10:26.777 +TreeIL, so it's very, very Guile-specific, can't be + +10:21.755 --> 10:26.777 +ported. But yeah, if we could somehow get Emacs Lisp + +10:28.359 --> 10:42.045 +translated to Scheme and then compiled, say, in Shea Scheme + +10:28.359 --> 10:42.045 +or Gambit or MIT Scheme or one of those other compilers, that + +10:28.359 --> 10:42.045 +would be very cool. And I would absolutely love to do that. + +10:44.906 --> 10:49.948 +And I would very quickly accept any code into the code base + +10:44.906 --> 10:49.948 +that would do that. + +NOTE Q: Why is being able to interpret all of \`init.el\` an useful goal? + +10:54.390 --> 10:56.291 +Oh, and to answer the question about init.el, + +10:59.207 --> 11:17.215 +It's just because people spend a lot of time on their configs + +10:59.207 --> 11:17.215 +and it would be nice if, you know, you're starting to use this + +10:59.207 --> 11:17.215 +new editor and want it to be similar to Emacs users, just the + +10:59.207 --> 11:17.215 +Emacs community in general and people who are familiar with + +10:59.207 --> 11:17.215 +using Emacs. It would be more useful to everybody in the + +11:17.715 --> 11:25.379 +Emacs community if this were more compatible with GNU + +11:17.715 --> 11:25.379 +Emacs. And so that's why that's, I think that's an important + +11:25.679 --> 11:27.960 +goal. + +11:34.465 --> 11:35.467 +Question is not yet. Great. Oh, here comes another + +11:38.471 --> 11:39.613 +question. + +NOTE Q: What is the plan to handle elisp packages that depend on 3rd party/external libraries? (libgit/magit or rg/ripgrep)? + +12:08.539 --> 12:17.742 +Okay, what is the plan to handle elisp packages that depend + +12:08.539 --> 12:17.742 +on third-party or external libraries like git or magit + +12:08.539 --> 12:17.742 +or ripgrep? So that's going to be tricky. It depends on how + +12:21.523 --> 12:26.224 +these external packages are linked into emacs. If it's + +12:26.844 --> 12:33.646 +going to be a dynamic library like Robin Templeton's + +12:26.844 --> 12:33.646 +project which you load the libgit library into the Emacs + +12:35.289 --> 12:41.931 +process, that is going to be extremely difficult. So if you + +12:44.032 --> 12:52.975 +have an external library like, I don't know, libgit or + +12:44.032 --> 12:52.975 +what's the GUI thing? Cabal. No, not Cabal. Cairo, libcairo + +12:57.736 --> 13:01.398 +to do SVG graphics and so on. + +13:04.483 --> 13:17.480 +You can do that very easily with Guile, but then on top of + +13:04.483 --> 13:17.480 +that, implementing Emacs list bindings to it, I mean, + +13:04.483 --> 13:17.480 +you've got two layers there, and that makes things pretty + +13:04.483 --> 13:17.480 +difficult. So it's possible. And to some degree, maybe + +13:21.935 --> 13:30.842 +necessary for example, Cairo, if we want to do SVG graphics + +13:21.935 --> 13:30.842 +the way that Emacs Lisp does, we're going to have to have + +13:21.935 --> 13:30.842 +that. So that would be necessary. We would have to have those + +13:32.643 --> 13:33.944 +two layers. Yes, let's do that. But if it's like for Magit, + +13:38.047 --> 13:50.596 +you can just call out to your git process, and then you're + +13:38.047 --> 13:50.596 +just using the regular process APIs that Emacs Lisp has. And + +13:51.451 --> 13:58.475 +that can be, already we, like Guile has some very good + +13:51.451 --> 13:58.475 +implementations for process management. And so it would + +13:59.055 --> 14:05.438 +just be a matter of wrapping up those in the Emacs lisp form + +13:59.055 --> 14:05.438 +bindings. So yeah, dynamic libraries, I wanna try to avoid. + +14:12.222 --> 14:20.366 +And I would prefer to do things more through, you know, + +14:12.222 --> 14:20.366 +launching a child process in the Emacs process. and then + +14:20.956 --> 14:24.798 +communicating over the standard in, standard out + +14:20.956 --> 14:24.798 +channels. + +14:29.460 --> 14:40.386 +That's the easier way to do things, I think, because then you + +14:29.460 --> 14:40.386 +can just use the process library that Emacs already has, and + +14:29.460 --> 14:40.386 +you can just reuse all of that code. + +14:43.969 --> 14:49.912 +I'm not sure how ripgrep works, unfortunately, but I + +14:43.969 --> 14:49.912 +believe that's also a process, a child process. So, we can + +14:50.412 --> 14:53.774 +just reuse all of the Emacs Lisp code that does that already. + +14:54.014 --> 15:05.979 +We just need to make sure that the process management + +14:54.014 --> 15:05.979 +implementation and scheme is properly bound to Emacs Lisp, + +14:54.014 --> 15:05.979 +and it works the same as GNU Emacs does. Once that's all set, + +15:06.360 --> 15:13.383 +then these porcelains, like around git, should fall into + +15:06.360 --> 15:13.383 +place. without too much difficulty, hopefully. + +NOTE Q: Not really a question, but how about Schemacs as a name? + +15:21.112 --> 15:22.593 +How about Schemax as a name? I like the name. I like that name. + +15:28.937 --> 15:32.920 +I haven't really looked into like, is that already used or is + +15:28.937 --> 15:32.920 +that going to be confusing? But certainly something we can + +15:33.380 --> 15:35.021 +discuss. + +15:38.243 --> 15:39.264 +Another thing I should mention, + +15:42.157 --> 15:48.278 +I should probably set up a server or something like Discord + +15:42.157 --> 15:48.278 +or something like that. Discourse, not Discord. + +15:51.619 --> 15:56.220 +Discourse, the open source one, where we could actually + +15:51.619 --> 15:56.220 +chat about this stuff. For the time being, ActivityPub, + +15:56.540 --> 16:05.562 +mostly Mastodon, is how I communicate with people in real + +15:56.540 --> 16:05.562 +time, that or email. So if you want to get a hold of me, check + +16:09.809 --> 16:15.571 +the notes for this presentation and just send me an email. + +16:16.752 --> 16:18.012 +Any question at all is fine. If you want to contribute code, + +16:19.633 --> 16:25.495 +if you want to just learn how to contribute code, send me any + +16:19.633 --> 16:25.495 +questions. It's fine. I'm happy to answer them. And we can + +16:30.256 --> 16:31.757 +talk about the name as well. + +NOTE Q: Why is it not feasible for the Emacs layer that interprets Emacs Lisp (the core in C) ot have a Scheme interpreter, instead of using Guile? + +16:45.931 --> 16:54.215 +Okay, why is it not feasible for the Emacs layer that + +16:45.931 --> 16:54.215 +interprets Emacs Lisp, the core in C, have a Scheme + +16:45.931 --> 16:54.215 +interpreter instead of using Guile? Let's see, I have to, + +16:55.496 --> 16:57.257 +okay. Emacs layer interprets Emacs Lisp, the core in C, have + +16:57.737 --> 17:05.942 +a Scheme interpreter instead of using Guile. Okay, so that, + +17:07.362 --> 17:13.906 +the question xlarsx is asking, xlars, x, So Lars is asking, + +17:14.744 --> 17:28.093 +is it not feasible for there to be an + +17:14.744 --> 17:28.093 +Emacs layer that interprets Emacs Lisp have a scheme + +17:14.744 --> 17:28.093 +interpreter? This is Robin Templeton's project. And + +17:30.815 --> 17:32.156 +they're presenting later today. So check the roster and be + +17:32.697 --> 17:41.303 +sure to see that presentation because that's exactly what + +17:32.697 --> 17:41.303 +Robin Templeton is doing. That's not what I'm doing though. + +17:44.419 --> 17:46.459 +I'm trying to create something in Scheme. But yes, there is + +17:48.280 --> 17:54.921 +an attempt to get an Scheme interpreter to run inside of + +17:48.280 --> 17:54.921 +Emacs itself. And it has its own method of binding to Emacs + +17:55.181 --> 18:05.323 +Lisp functions and translating data like Lisp structures + +17:55.181 --> 18:05.323 +between Guile Scheme and Emacs Lisp. Robin will explain all + +18:05.943 --> 18:08.284 +of that in their presentation. + +18:28.519 --> 18:33.020 +OK, I think I've got through all the questions on Etherpad. + +18:33.620 --> 18:35.500 +But I'm going to hang out here for a bit longer. And yeah, feel + +18:37.621 --> 18:46.182 +free to do a video chat with me or send me more questions on + +18:37.621 --> 18:46.182 +Etherpad or here in the big blue button. And so I'm just going + +18:47.002 --> 18:48.082 +to hang out. And thanks for asking all your questions. And + +18:51.663 --> 18:56.024 +yeah, I look forward to working with all of you if you're + +18:51.663 --> 18:56.024 +interested. take it easy. Thanks so much for the talk and + +18:59.935 --> 19:08.180 +looking forward to seeing some of your progress as this + +18:59.935 --> 19:08.180 +moves forward, exciting space. We'll go ahead and leave the + +19:09.261 --> 19:14.925 +room open for you and thanks for offering to hang out and chat + +19:09.261 --> 19:14.925 +with other people that come by. Feel free to throw something + +19:15.025 --> 19:18.287 +in the chat if you want to remind people you're still here. + +19:19.557 --> 19:25.143 +Meanwhile, on the stream, we have moved along to our next + +19:19.557 --> 19:25.143 +talk on Rust, and that is just getting started. But again, + +19:25.283 --> 19:30.549 +we're continuing to record this, and I'll just keep an eye on + +19:25.283 --> 19:30.549 +it to stop the recording. Thank you. Thank you. It was + +19:33.352 --> 19:33.853 +awesome. + +21:47.935 --> 21:50.558 +So it seems like it's slowed down here for the Q&A. I don't see + +21:50.638 --> 21:53.741 +anybody else on BBB, so I'm going to go ahead and stop the + +21:50.638 --> 21:53.741 +recording. We can start it back up. I would say, yes, there's + +21:55.282 --> 21:58.906 +a lot of things you can do with this. You can handle + +21:58.926 --> 22:00.627 +processing. Yeah, I'm going to try and join over the chat for + +22:02.029 --> 22:07.614 +the next talk. I'm not sure if I can do both big blue buttons at + +22:08.635 --> 22:11.538 +the same time. You should be able to just watch your mute + +22:13.206 --> 22:19.998 +settings and mute tab settings and whatever all you have to + +22:13.206 --> 22:19.998 +avoid bleed through. Okay. diff --git a/2024/captions/emacsconf-2024-hyperbole--fun-things-with-gnu-hyperbole--mats-lidell--answers.vtt b/2024/captions/emacsconf-2024-hyperbole--fun-things-with-gnu-hyperbole--mats-lidell--answers.vtt new file mode 100644 index 00000000..f1425353 --- /dev/null +++ b/2024/captions/emacsconf-2024-hyperbole--fun-things-with-gnu-hyperbole--mats-lidell--answers.vtt @@ -0,0 +1,690 @@ +WEBVTT + +00:00:00.000 --> 00:00:12.919 +And I believe we are live. Hi, Mats, how are you doing? Oh, I'm + +00:00:12.920 --> 00:00:17.319 +fine. It's a pleasure to see you again after last year. And I + +00:00:17.320 --> 00:00:20.519 +was trying to think about it. We saw you last year, but didn't + +00:00:20.520 --> 00:00:26.919 +we see you as well in 2022? Yes. This is my third year. Yeah, + +00:00:26.920 --> 00:00:29.559 +well, thank you for being a regular at EmacsConf. It's + +00:00:29.560 --> 00:00:31.919 +always a pleasure to have you chat about hyperbole. + +00:00:31.920 --> 00:00:33.559 +Although I think you're the only one chatting about + +00:00:33.560 --> 00:00:37.159 +hyperbole this year compared to last year. Yes, + +00:00:37.160 --> 00:00:41.879 +unfortunately, that's, yeah, Bob has some family issues. + +00:00:41.880 --> 00:00:45.839 +So yeah, I'm here, but I'm here. Yeah, but we are happy to have + +00:00:45.840 --> 00:00:49.199 +you here. And as I was saying before, I'm not sure if you were, + +00:00:49.200 --> 00:00:52.519 +you had the time to watch the previous talk by Mohsen, you + +00:00:52.520 --> 00:00:56.239 +know, you had, there were plenty of ideas, I think that were + +00:00:56.240 --> 00:00:58.999 +very similar to what Hyperbole is trying to do by having + +00:00:59.000 --> 00:01:04.399 +buttons and having stuff that can be in any other mode that + +00:01:04.400 --> 00:01:08.399 +would allow you to supplement a coding file with extra + +00:01:08.400 --> 00:01:11.879 +information. So the ideas are living on. And even though + +00:01:11.880 --> 00:01:15.239 +hyperbole is one thing, I feel like other packages are also + +00:01:15.240 --> 00:01:17.759 +taking a lot of inspiration for it. So congratulations on + +00:01:17.760 --> 00:01:21.439 +being an inspiration, I suppose. Oh, thanks. + +00:01:21.440 --> 00:01:24.839 +Unfortunately, I have not had any time to watch anything of + +00:01:24.840 --> 00:01:29.759 +the Emacs conference since apparently my life is like every + +00:01:29.760 --> 00:01:33.559 +time it's Emacs conference, I do something else. So I've been + +00:01:33.560 --> 00:01:37.919 +just moving this weekend. So, I'm in a new apartment, but I'm + +00:01:37.920 --> 00:01:42.479 +connected and everything seems to work okay. So, I can't + +00:01:42.480 --> 00:01:45.199 +relate to what we said in any of the other talks, I'm afraid. + +00:01:45.200 --> 00:01:48.199 +So, sorry about that. No, that's okay. No, but that's + +00:01:48.200 --> 00:01:51.559 +completely fine, because you may be able to watch the talks + +00:01:51.560 --> 00:01:54.599 +at any point later on, because I'll remind the viewers that + +00:01:54.600 --> 00:01:57.319 +the talks are currently available on EmacsConf or the + +00:01:57.320 --> 00:02:01.199 +pre-recorded one. And I think we only had one live talk + +00:02:01.200 --> 00:02:04.239 +yesterday. All of them are already available with + +00:02:04.240 --> 00:02:08.039 +subtitles and all the funny stuff that we usually put. So + +00:02:08.040 --> 00:02:11.359 +that's an invitation for people to watch it. All right. So, + +00:02:11.360 --> 00:02:14.439 +Mats, before we start with the questions, I see people in the + +00:02:14.440 --> 00:02:17.959 +process of writing them. Was there anything else you wanted + +00:02:17.960 --> 00:02:21.159 +to add on top of your presentation? Maybe some supplements + +00:02:21.160 --> 00:02:29.039 +or whatnot? No, no. Nothing to add. Right. I mean, this year + +00:02:29.040 --> 00:02:31.519 +was more a bag of tricks, some new stuff that you've + +00:02:31.520 --> 00:02:36.159 +implemented in Hyperbole. And it's fun because I see the UI + +00:02:36.160 --> 00:02:40.159 +that you have for some of those modes. And earlier, you + +00:02:40.160 --> 00:02:42.399 +weren't able to watch those talks, but we were talking a lot + +00:02:42.400 --> 00:02:46.119 +about Transient and about what it allows you to do in terms of + +00:02:46.120 --> 00:02:51.039 +interactivity. I'm actually familiar with Transient. No, + +00:02:51.040 --> 00:02:56.279 +no, no. It's a mode written by Tarsius, so Jonas Bernoulli, + +00:02:56.280 --> 00:03:01.599 +the person behind Magit, and it's a very nice way to create + +00:03:01.600 --> 00:03:06.319 +menus for interactive setups. So, if you are interested in + +00:03:06.320 --> 00:03:10.039 +perhaps augmenting what you currently have with + +00:03:10.040 --> 00:03:12.959 +Hyperbole, it might be nice to look into Transient because I + +00:03:12.960 --> 00:03:16.359 +think this is heading towards eventually being merged into + +00:03:16.360 --> 00:03:18.879 +the core of Emacs. I mean, don't quote me on this. and I'm not + +00:03:18.880 --> 00:03:21.719 +sure how Tarsius feels about it, but because of the + +00:03:21.720 --> 00:03:25.879 +adoption, because Magit obviously uses transient, Org is + +00:03:25.880 --> 00:03:28.839 +trying to make a move towards adopting transient, it feels + +00:03:28.840 --> 00:03:32.479 +like Hyperbole would do well as well to adopt it because it's + +00:03:32.480 --> 00:03:36.799 +starting to become a grammar of general UI at this point. + +00:03:36.800 --> 00:03:40.839 +Yeah, now when you mention it, I remember because I'm a heavy + +00:03:40.840 --> 00:03:47.519 +user of Magic, of course. So I know Transient that way. I know + +00:03:47.520 --> 00:03:50.999 +also that people have been complaining about Hyperbole's + +00:03:51.000 --> 00:03:56.079 +menu system. You know that Hyperbole reach back to + +00:03:56.080 --> 00:04:02.639 +something like 1993, so it has some maybe things that are not + +00:04:02.640 --> 00:04:07.279 +modern in that sense. So we have it on the plate to maybe look + +00:04:07.280 --> 00:04:11.479 +into these things and how we can sort of make things modern, + +00:04:11.480 --> 00:04:16.279 +etc. Sure, but it's completely fine to take your time. You + +00:04:16.280 --> 00:04:19.359 +don't necessarily have to follow the latest fads when it + +00:04:19.360 --> 00:04:24.439 +comes to completion engines or interactive engines like + +00:04:24.440 --> 00:04:26.879 +Transient is. I'm not actually sure how you would call + +00:04:26.880 --> 00:04:31.519 +Transient. Is this a UI maker, an interaction engine? I + +00:04:31.520 --> 00:04:36.559 +don't know. I'll need to ask Tarsius at some point. All + +00:04:36.560 --> 00:04:41.439 +right. Okay. Okay so let's move on to the questions. We've + +00:04:41.440 --> 00:04:45.719 +got a couple of them and for the Q&A we'll have about five + +00:04:45.720 --> 00:04:49.199 +minutes and 30 seconds until we got to lunch. So starting + +00:04:49.200 --> 00:04:51.193 +with the first question. + +NOTE Q: How is the log buffer generated? + +00:04:51.194 --> 00:04:52.679 +How is the log buffer generated in + +00:04:52.680 --> 00:04:56.719 +your presentation? But it's a very quick answer to this. + +00:04:56.720 --> 00:04:59.839 +We recommend at EmacsConf that speakers use the + +00:04:59.840 --> 00:05:02.679 +interaction-log package, which allows you to have a + +00:05:02.680 --> 00:05:07.879 +slightly prettier lossage. Lossage being in Emacs how you + +00:05:07.880 --> 00:05:10.359 +call the comments that you've used. And so if you're + +00:05:10.360 --> 00:05:12.439 +interested in using this for your own presentation, + +00:05:12.440 --> 00:05:17.519 +interaction log, and you'll be able to find it fairly + +00:05:17.520 --> 00:05:18.999 +easily. + +00:05:19.000 --> 00:05:21.050 +Moving to the next question. + +NOTE Q: So, the "select a thing" C-c RET is similar to expand-region? How does it behave in codes (functions, class, ...) + +00:05:21.051 --> 00:05:23.651 +So the selector thing C-c RET + +00:05:23.652 --> 00:05:26.479 +is similar to expand-region. How does it behave in + +00:05:26.480 --> 00:05:31.999 +codes i.e functions or class? + +00:05:32.000 --> 00:05:45.319 +Well I think it behaves exactly the same. I mean in the + +00:05:45.320 --> 00:05:50.079 +In any sort of buffer, it might depend on what + +00:05:50.080 --> 00:05:54.679 +constitutes a word, et cetera, and a sentence in the mood. + +00:05:54.680 --> 00:06:00.799 +That's how I would say it. Right. + +00:06:00.800 --> 00:06:09.279 +I'm just, in that sense, I'm just a user of the function. I + +00:06:09.280 --> 00:06:12.359 +haven't implemented it. I haven't tested it more than that. + +00:06:12.360 --> 00:06:17.959 +We can do this as a demo that you start with maybe select a + +00:06:17.960 --> 00:06:21.999 +small thing and by hitting it over and over again, you select + +00:06:22.000 --> 00:06:26.399 +more and more. Yeah, but it's completely fine sometimes to + +00:06:26.400 --> 00:06:30.199 +merely be a user of something, you know. It's easy. It's a + +00:06:30.200 --> 00:06:33.079 +testament to how amazing Emacs is because everything is + +00:06:33.080 --> 00:06:35.759 +written in Lisp in the background, that as soon as you start + +00:06:35.760 --> 00:06:38.119 +becoming a maintainer of something, you kind of expect it to + +00:06:38.120 --> 00:06:40.639 +just be able to understand everything else. And whilst it's + +00:06:40.640 --> 00:06:43.919 +technically true, the limiter here is the amount of time + +00:06:43.920 --> 00:06:47.199 +that you can invest looking at the definitions, + +00:06:47.200 --> 00:06:50.359 +understanding what they do, and sadly we don't have the time + +00:06:50.360 --> 00:06:53.319 +to do all of this. And especially with Hyperbole, which is + +00:06:53.320 --> 00:06:55.959 +obviously interacting with major modes in something that + +00:06:55.960 --> 00:07:01.239 +is more involved than Org mode, for instance. We do have + +00:07:01.240 --> 00:07:05.879 +another question. So, I know you Hyperbole devs are active + +00:07:05.880 --> 00:07:08.919 +and interested in sharing and interoperating with other + +00:07:08.920 --> 00:07:09.971 +Emacs tools. + +NOTE Q: What is a recent tool that you find exciting to think about using in combination with Hyperbole, or would like to suggest using in combination with it? + +00:07:09.972 --> 00:07:11.839 +What is a recent tool that you find exciting to + +00:07:11.840 --> 00:07:14.799 +think about using in combination with Hyperbole or would + +00:07:14.800 --> 00:07:21.599 +like to suggest using in combination with it? Well, lately + +00:07:21.600 --> 00:07:24.519 +we've been focusing a lot of sort of trying to make Hyperbole + +00:07:24.520 --> 00:07:29.639 +work together with Org Mode and in in a good way so they can + +00:07:29.640 --> 00:07:36.119 +sort of, I mean... The idea with Hyperbole is not to be better + +00:07:36.120 --> 00:07:40.119 +than everything else, but more to be like the glue or spider + +00:07:40.120 --> 00:07:46.349 +that could integrate different modes in a good way together. + +00:07:46.350 --> 00:07:51.359 +So that being top of everything. And Org is a very + +00:07:51.360 --> 00:07:55.559 +popular mode, and there are a lot of sub-modes, or whatever + +00:07:55.560 --> 00:07:59.519 +you can call it, with Org for information management. And we + +00:07:59.520 --> 00:08:03.119 +would want Hyperbole to work together with Org in a good way, + +00:08:03.120 --> 00:08:09.119 +so Org users could benefit from Hyperbole as well. So we put + +00:08:09.120 --> 00:08:13.319 +in some effort in that. But I think there's a lot of way to go. + +00:08:13.320 --> 00:08:17.319 +There's much more that can be done there as well because + +00:08:17.320 --> 00:08:21.559 +different modes can easily compete in a bad way in the + +00:08:21.560 --> 00:08:26.519 +details. So it's a little bit of a tricky thing, especially + +00:08:26.520 --> 00:08:32.839 +like we have this and how probably we have this M-RET + +00:08:32.840 --> 00:08:36.319 +for the action production key and that's also used in many + +00:08:36.320 --> 00:08:40.639 +modes. So we would really, in the best of words, we would like + +00:08:40.640 --> 00:08:46.388 +Emacs to sort of come to some agreement on using of the + +00:08:46.389 --> 00:08:52.759 +M-RET in a good way for modes to sort of be able to work and + +00:08:52.760 --> 00:08:58.119 +live together. Yeah, I mean it's a tough thing to share the + +00:08:58.120 --> 00:09:01.759 +key bindings and the grammar of interaction between + +00:09:01.760 --> 00:09:04.719 +packages because you tell me M-RET, I don't want you + +00:09:04.720 --> 00:09:07.759 +to touch M-RET. For me it's just inserting a new line + +00:09:07.760 --> 00:09:10.639 +and not adding indentation at the start and everyone is + +00:09:10.640 --> 00:09:14.639 +going to have their own you know, feelings and thoughts about + +00:09:14.640 --> 00:09:17.959 +this, so it's really hard to impose any kind of system on + +00:09:17.960 --> 00:09:20.559 +this. But I'm glad to hear that you're looking into + +00:09:20.560 --> 00:09:23.239 +interaction with Org Mode because I remember the questions + +00:09:23.240 --> 00:09:26.359 +we were having on your first conference when people were + +00:09:26.360 --> 00:09:28.959 +asking, oh I'm so glad that you're talking about Hyperbole + +00:09:28.960 --> 00:09:31.719 +because the only way I'm interacting with it is when people + +00:09:31.720 --> 00:09:35.599 +chat about Org Mode and then whenever we had announcements + +00:09:35.600 --> 00:09:39.039 +about Hyperbole, be it on Reddit, be it on Hacker News, + +00:09:39.040 --> 00:09:41.999 +people would say, but don't we already have Org Mode? And we + +00:09:42.000 --> 00:09:44.879 +won't get into the topic again, because I think you've done a + +00:09:44.880 --> 00:09:47.279 +wonderful job of explaining the differences in previous + +00:09:47.280 --> 00:09:51.359 +years. And today, the conference, your talk at the + +00:09:51.360 --> 00:09:54.199 +conference also made it obvious that it's doing something + +00:09:54.200 --> 00:09:58.039 +that Org Mode is not able to do. But ultimately, being able to + +00:09:58.040 --> 00:10:00.254 +interface between the two is something great. + +NOTE On Ihor as the new maintainer for Org Mode + +00:10:00.255 --> 00:10:02.676 +And I kind of wanted to ask you as well the question, + +00:10:02.677 --> 00:10:04.719 +because you haven't + +00:10:04.720 --> 00:10:10.199 +seen the talk, but yesterday we had the announcement that + +00:10:10.200 --> 00:10:13.879 +Ihor Radchenko was becoming the new maintainer of Org Mode. + +00:10:13.880 --> 00:10:18.799 +So obviously, a new maintainer introduces idea of changes + +00:10:18.800 --> 00:10:23.719 +of, you know, philosophy and strategy and all this. Is this + +00:10:23.720 --> 00:10:28.199 +somehow on your end with Hyperbole inspiring you perhaps to + +00:10:28.200 --> 00:10:31.999 +also innovate in a sense to maybe try to change the way some + +00:10:32.000 --> 00:10:32.559 +things are done? + +00:10:32.560 --> 00:10:45.239 +Hmm, tricky question. I know, right? Yeah, no, well, I don't + +00:10:45.240 --> 00:10:46.159 +know. + +00:10:46.160 --> 00:10:52.799 +I don't know if it answers the question, but we have this + +00:10:52.800 --> 00:11:02.919 +idea that we meet and work from our point of view. And then we + +00:11:02.920 --> 00:11:07.679 +pick up maybe details from the outside world. So we're not + +00:11:07.680 --> 00:11:13.079 +heavily looking into what happens in the rest of the world + +00:11:13.080 --> 00:11:17.239 +when it comes to Emacs and personal information + +00:11:17.240 --> 00:11:21.159 +management, etc. But but we do pick up some ideas. + +00:11:21.160 --> 00:11:26.719 +Sometimes. But yeah, we mostly do hacking and then we want to + +00:11:26.720 --> 00:11:31.639 +we meet once a week and work on hyperbole and you know, so + +00:11:31.640 --> 00:11:35.599 +Yeah, that's already very cool. And the reason I'm + +00:11:35.600 --> 00:11:38.799 +mentioning this is not because I know that you are operating + +00:11:38.800 --> 00:11:42.079 +in a little bit of a silo when it comes to all of Hyperbole, but + +00:11:42.080 --> 00:11:45.399 +it's always nice for me personally to see a lot of energy + +00:11:45.400 --> 00:11:49.039 +being brought in by people. Whenever there's a new major + +00:11:49.040 --> 00:11:52.919 +version being published, be it Org Mode or be it Hyperbole, + +00:11:52.920 --> 00:11:55.519 +people are excited. There's a lot of energy in here because + +00:11:55.520 --> 00:11:58.039 +people are chatting about what you're doing. And that's why + +00:11:58.040 --> 00:12:02.399 +I find that people, a new maintenanceship for Org Mode + +00:12:02.400 --> 00:12:05.199 +actually benefits Hyperbole in a way because you get a lot of + +00:12:05.200 --> 00:12:07.559 +excitement, a lot of people thinking and bringing ideas to + +00:12:07.560 --> 00:12:12.279 +the table. And I think it's a prime time to actually try I'm + +00:12:12.280 --> 00:12:14.599 +using the word stealing, but in a very nice way, stealing in + +00:12:14.600 --> 00:12:17.519 +terms of floss, stealing some ideas and trying to see if you + +00:12:17.520 --> 00:12:21.199 +can run with them on your own end. And that's also why I was + +00:12:21.200 --> 00:12:24.479 +suggesting transient, because transient looks like it's + +00:12:24.480 --> 00:12:28.759 +on its path to reach core at some point. And it would be nice if + +00:12:28.760 --> 00:12:31.479 +you had the idea early on to integrate with it, because it + +00:12:31.480 --> 00:12:34.319 +might save you time later on and make your user happy, + +00:12:34.320 --> 00:12:37.319 +because they can find the same grammar between the Git, + +00:12:37.320 --> 00:12:41.639 +between org mode, and between hyperbole. All right. Is + +00:12:41.640 --> 00:12:46.439 +there... I don't think... Yeah, go on, please. Yeah, I just + +00:12:46.440 --> 00:12:49.879 +want to add on that, that, I mean, as an ultimate goal, in the + +00:12:49.880 --> 00:12:56.679 +far distance, we would want sort of Hyperbole or hyperbole + +00:12:56.680 --> 00:13:00.399 +type of functionality be part of the core Emacs. So in that + +00:13:00.400 --> 00:13:06.839 +sense, it's sort of totally sort of okay with us that + +00:13:06.840 --> 00:13:10.599 +different packages steal ideas and try to merge them into + +00:13:10.600 --> 00:13:16.359 +sort of the core system. Yeah. All right, I don't see any more + +00:13:16.360 --> 00:13:19.279 +questions, so I think we can move to close. Actually, we're + +00:13:19.280 --> 00:13:22.439 +actually three minutes over time, so I'm glad we managed to + +00:13:22.440 --> 00:13:24.759 +discuss a little more, but that's fine. Mats, do you have + +00:13:24.760 --> 00:13:31.519 +any last words? I'll try it out. Okay, well, then, you heard + +00:13:31.520 --> 00:13:35.479 +it, everyone. Just try it out. Try it out, and if you like it, + +00:13:35.480 --> 00:13:37.239 +you can join us on Sundays + +00:13:37.240 --> 00:13:41.959 +Right. And every Sunday, well, if you do not know what to do, + +00:13:41.960 --> 00:13:44.919 +you know, here's an idea for you. All right. Thank you so + +00:13:44.920 --> 00:13:47.079 +much, Mats, for coming again to Emacs Conf. And we look + +00:13:47.080 --> 00:13:50.319 +forward, perhaps, to seeing you next year. Yes. I'll be + +00:13:50.320 --> 00:13:55.119 +there. Hopefully, I can see some of the presentations live + +00:13:55.120 --> 00:13:58.399 +then. OK. That's OK. You've got the entire year to catch up on + +00:13:58.400 --> 00:14:01.159 +the ones you haven't seen this year and next year. But you'll + +00:14:01.160 --> 00:14:04.359 +have the time to catch another one live. All right. Yes. + +00:14:04.360 --> 00:14:09.519 +Great! For the folks watching, we will be taking a break, a + +00:14:09.520 --> 00:14:14.039 +one hour and one minute break. We'll be back at 1 p.m. EST and I + +00:14:14.040 --> 00:14:21.479 +think if my UTC conversion is working right, it should be 6 + +00:14:21.480 --> 00:14:24.679 +p.m. UTC, so at least in one hour. All right, see you in a bit + +00:14:24.680 --> 00:14:30.159 +folks! Oh yes, and sorry, I've got a little elf speaking + +00:14:30.160 --> 00:14:32.999 +in my ears. In case you're interested in discussing further + +00:14:33.000 --> 00:14:35.999 +hyperbole with Mats, Mats is in the room right now and I see + +00:14:36.000 --> 00:14:39.919 +people have joined the BBB chat. So if you want to join and + +00:14:39.920 --> 00:14:42.439 +chat directly with Mats, I'm sure Mats would be more than + +00:14:42.440 --> 00:14:44.999 +happy to answer your questions. And obviously everything + +00:14:45.000 --> 00:14:48.239 +has been recorded and will be published later on. But for me, + +00:14:48.240 --> 00:14:54.119 +I will use the break to rest a little bit and I'll be back in the + +00:14:54.120 --> 00:14:59.039 +afternoon. All right, see you folks. Bye, take a break. + +00:14:59.040 --> 00:15:03.160 +Okay. diff --git a/2024/captions/emacsconf-2024-hyperdrive--new-in-hyperdriveel-quick-install-peer-graph-transclusion--joseph-turner--answers.vtt b/2024/captions/emacsconf-2024-hyperdrive--new-in-hyperdriveel-quick-install-peer-graph-transclusion--joseph-turner--answers.vtt new file mode 100644 index 00000000..7b377fed --- /dev/null +++ b/2024/captions/emacsconf-2024-hyperdrive--new-in-hyperdriveel-quick-install-peer-graph-transclusion--joseph-turner--answers.vtt @@ -0,0 +1,630 @@ +WEBVTT captioned by sachac + +NOTE New version of hyperdrive.el + +00:00:00.000 --> 00:00:02.596 +One thing I wanted to mention was that + +00:00:02.597 --> 00:00:08.596 +as with last year, I just released a new version of + +00:00:08.597 --> 00:00:13.476 +hyperdrive.el and it depends on the latest release of + +00:00:13.477 --> 00:00:19.156 +transient.el and so if you are going to install this + +00:00:19.157 --> 00:00:25.156 +package, make sure that you restart your Emacs after you + +00:00:25.157 --> 00:00:29.796 +install it, if you aren't already up to date with transient, + +00:00:29.797 --> 00:00:35.316 +which was released yesterday. Otherwise, since it, this + +00:00:35.317 --> 00:00:40.876 +latest version of transient.el updates the transient + +00:00:40.877 --> 00:00:46.316 +prefix EIEIO class, and it won't work unless you restart + +00:00:46.317 --> 00:00:50.996 +Emacs. Okay, well, good to know. I think that's a small price + +00:00:50.997 --> 00:00:57.076 +to pay to be on a bleedingest of bleeding edges. All right, I + +00:00:57.077 --> 00:00:59.596 +see there's a question here. Let me see if I can read it. Yeah, + +00:00:59.597 --> 00:01:01.276 +sure. Do you want me to field it to you or do you want to read it? + +00:01:01.277 --> 00:01:04.104 +Oh, sure. Go ahead. I'd love to hear you read it. Sure. + +00:01:04.105 --> 00:01:06.686 +Thank you. So first question. Hi there. + +NOTE Q: Network effects are tricky - do you know of any public shares people can join to try this tool out properly? + +00:01:06.687 --> 00:01:07.787 +Thank you for the talk. + +00:01:07.788 --> 00:01:10.756 +I enjoyed watching it. I tried this tool last year and it + +00:01:10.757 --> 00:01:13.156 +seemed to work well, but I don't know anyone who actually + +00:01:13.157 --> 00:01:16.516 +uses it. Network effects are tricky. Do you know of any + +00:01:16.517 --> 00:01:19.636 +public shares people can join to try to try this tool out + +00:01:19.637 --> 00:01:24.396 +properly? Thank you. Network effects are indeed tricky. + +00:01:24.397 --> 00:01:29.916 +Yeah. That's kind of part of the purpose of the peer graph is + +00:01:29.917 --> 00:01:34.596 +to make it easier to discover peers in a way that's more, uh, + +00:01:34.597 --> 00:01:37.956 +more reliable and consistent than just somebody puts a + +00:01:37.957 --> 00:01:42.076 +public key on Reddit and then it's lost unless somebody + +00:01:42.077 --> 00:01:50.156 +finds it. Um, but the, the public keys that I know of are, + +00:01:50.157 --> 00:01:53.076 +there's the public key for the Ushin hyperdrive, which is + +00:01:53.077 --> 00:01:56.236 +basically just the same content that's on the website + +00:01:56.237 --> 00:02:00.156 +mirrored to a hyperdrive. Um, and then there are a few other + +00:02:00.157 --> 00:02:07.316 +ones. There's like, uh, hypha.coop has some WebZine + +00:02:07.317 --> 00:02:13.796 +content accessible via HyperDrive and also via IPFS. And + +00:02:13.797 --> 00:02:19.916 +then mauvesignweaver has a blog that's also available on + +00:02:19.917 --> 00:02:23.196 +Hyper. So that's blog.mauve.moe . + +00:02:23.197 --> 00:02:28.276 +But besides that, that's kind of the purpose of this + +00:02:28.277 --> 00:02:31.756 +peer graph thing is to make it easier to discover other + +00:02:31.757 --> 00:02:36.596 +peers. Yeah, to make it also very visual in a way, because, + +00:02:36.597 --> 00:02:40.436 +you know, I personally, it's funny because it reminded me of + +00:02:40.437 --> 00:02:45.156 +talks that I did in the past about the trust system for PGP + +00:02:45.157 --> 00:02:47.596 +keychains, because at the end of the day, you know, this + +00:02:47.597 --> 00:02:50.596 +trust system, whether you trust someone absolutely or + +00:02:50.597 --> 00:02:53.876 +relatively, the blocking system, it feels very related. + +00:02:53.877 --> 00:02:57.356 +Any kind of a chain of trust like this, feels very + +00:02:57.357 --> 00:03:00.436 +reminiscent, obviously, but it felt very nice that for you, + +00:03:00.437 --> 00:03:04.676 +you had a dynamic display of this web of trust. Whereas for + +00:03:04.677 --> 00:03:08.836 +me, I had to make fancy diagram in ticks, in latex, just to + +00:03:08.837 --> 00:03:14.956 +make sure that people understood what was actually going + +00:03:14.957 --> 00:03:21.596 +on. Yeah, one thing I want to point out is just the difference + +00:03:21.597 --> 00:03:25.556 +in utility for something like the PGP web of trust versus + +00:03:25.557 --> 00:03:29.956 +this kind of network of peers is, if I understand right, the + +00:03:29.957 --> 00:03:34.716 +main purpose of web of trust is to identify that a certain + +00:03:34.717 --> 00:03:42.516 +public key is actually created by the person that they claim + +00:03:42.517 --> 00:03:46.036 +to be. So you have a way of identifying that a key actually + +00:03:46.037 --> 00:03:49.996 +matches like a government identity. Whereas this kind of + +00:03:49.997 --> 00:03:53.356 +network of peers has nothing to do with authenticating a key + +00:03:53.357 --> 00:03:57.636 +or associating a key with an identity, like a government + +00:03:57.637 --> 00:04:03.396 +identity. The purpose is exclusively just to get more peers + +00:04:03.397 --> 00:04:07.276 +to be able to discover more peers who have things that are + +00:04:07.277 --> 00:04:07.676 +worth reading. + +00:04:07.677 --> 00:04:14.356 +Yeah, it's a different take on a concept, but even though the + +00:04:14.357 --> 00:04:18.836 +concept might be the same, I find there's a wealth of things + +00:04:18.837 --> 00:04:21.716 +that can be done thanks to this, because as you said, you + +00:04:21.717 --> 00:04:25.396 +trust someone to send you a file that is trustworthy. Well, + +00:04:25.397 --> 00:04:28.236 +with PGP, it's mostly about communication, but about file + +00:04:28.237 --> 00:04:33.356 +sharing, it just opens up completely new avenues. Yeah. Do + +00:04:33.357 --> 00:04:40.516 +you have anything else to add? And about that, I think one of + +00:04:40.517 --> 00:04:45.476 +the barriers to the PGP web of trust is that it required + +00:04:45.477 --> 00:04:48.916 +getting together to have key parties to meet people and + +00:04:48.917 --> 00:04:51.596 +verify identities. Whereas with this kind of thing, + +00:04:51.597 --> 00:04:54.076 +there's no need to do that because so long as your content is + +00:04:54.077 --> 00:04:57.876 +interesting, it doesn't matter that you're not who you + +00:04:57.877 --> 00:05:01.076 +claim to be or that you don't even claim to be anybody. Yeah, I + +00:05:01.077 --> 00:05:04.556 +mean, again, as you mentioned, it's not about identifying + +00:05:04.557 --> 00:05:08.196 +people, it's just about identifying value, in a way, in the + +00:05:08.197 --> 00:05:10.636 +content that people share. It has nothing to do with + +00:05:10.637 --> 00:05:13.916 +verifying their actual identity. But again, it's the same + +00:05:13.917 --> 00:05:16.596 +technology, it's the same understanding, but for + +00:05:16.597 --> 00:05:18.556 +different applications, which is lovely because + +00:05:18.557 --> 00:05:22.116 +programming is fractals all over. The same problems repeat + +00:05:22.117 --> 00:05:24.836 +themselves and the same solutions show up for widely + +00:05:24.837 --> 00:05:26.996 +different scenarios, which is always good. Yeah. Anything + +00:05:26.997 --> 00:05:32.676 +else? One more thing. Yeah. One more thing is that I wanted to + +00:05:32.677 --> 00:05:36.956 +give some kudos to, um, some of the other projects that + +00:05:36.957 --> 00:05:42.796 +inspired the pure graph work. One of them is Adam Porter's or + +00:05:42.797 --> 00:05:50.076 +graph view, um, which is a, um, a tool for visualizing + +00:05:50.077 --> 00:05:55.276 +different nodes in an org file and how they link to one + +00:05:55.277 --> 00:06:01.876 +another. Um, he did. the pioneering work to figure out how to + +00:06:01.877 --> 00:06:07.316 +render interactive graphs with GraphViz. And so we worked + +00:06:07.317 --> 00:06:12.476 +together on it and kind of hacked down the last parts that + +00:06:12.477 --> 00:06:16.796 +weren't working correctly. And so this is inspired a lot. + +00:06:16.797 --> 00:06:19.316 +The user interface is inspired a lot by Adam's work. And then + +00:06:19.317 --> 00:06:26.156 +also the idea of having people that you mark as blockers and + +00:06:26.157 --> 00:06:31.076 +block is inspired by another project called TrustNet by + +00:06:31.077 --> 00:06:37.196 +Alex Cobleigh. I can type in the link there. Alex, how do you + +00:06:37.197 --> 00:06:43.516 +spell it? Cobleigh? Yeah, I'll type it in here. Thank you. And I + +00:06:43.517 --> 00:06:50.596 +think the link is https://cblgh.org/trustnet. I think that is it. + +00:06:50.597 --> 00:06:57.836 +I'm not totally sure. But yeah. Okay, well, that's very good. + +00:06:57.837 --> 00:07:01.396 +and thank you for giving credits to the inspiration, because + +00:07:01.397 --> 00:07:05.556 +again, nothing is done without context, and it's always nice + +00:07:05.557 --> 00:07:08.516 +in the free software world to acknowledge people who have + +00:07:08.517 --> 00:07:11.676 +influenced us, because it's very nice when people start + +00:07:11.677 --> 00:07:14.556 +contributing, maintaining software, publishing stuff + +00:07:14.557 --> 00:07:17.916 +that they actually start collaborating with people who've + +00:07:17.917 --> 00:07:21.916 +inspired them, which is a nice way to climb over the shoulders + +00:07:21.917 --> 00:07:25.636 +of giants, which this community likes so much. All right, + +00:07:25.637 --> 00:07:28.676 +moving on to the next question. We are, we have about seven + +00:07:28.677 --> 00:07:31.063 +more minutes for questions, so we're still good. + +NOTE Q: blocklist or whitelist so I can make them containing useful information for only me while also being useful with in a public sense + +00:07:31.064 --> 00:07:33.956 +Second question, one use case for this sharing and building upon + +00:07:33.957 --> 00:07:37.996 +second brain, sorry, one use case for this is sharing and + +00:07:37.997 --> 00:07:41.436 +building upon second brains, i.e. Zettelkasten, that's + +00:07:41.437 --> 00:07:44.396 +denote or what I'm actually doing, but a blocker for me + +00:07:44.397 --> 00:07:46.916 +wanting to make one public is wanting to use a block list or + +00:07:46.917 --> 00:07:51.556 +whitelist so that I can make them... Cautioning? + +00:07:51.557 --> 00:07:56.156 +Quarantining? Containing. Yes, definitely containing. + +00:07:56.157 --> 00:07:59.756 +Why did I go for quarantine rather than containing? I guess + +00:07:59.757 --> 00:08:04.636 +my brain went to a dark place from the 2020s. So I can make + +00:08:04.637 --> 00:08:08.996 +containing useful information for only me while also being + +00:08:08.997 --> 00:08:16.156 +useful in a public sense. Yes, I think your question is about + +00:08:16.157 --> 00:08:22.276 +how to keep some of the content of your Zettelkasten private + +00:08:22.277 --> 00:08:29.956 +and only have certain parts of it be public. If your desire is + +00:08:29.957 --> 00:08:35.796 +to only share certain files in your Zettelkasten, then you + +00:08:35.797 --> 00:08:43.596 +can use the hyperdrive mirror command that we demonstrated + +00:08:43.597 --> 00:08:48.596 +in the Emacs 2023 talk. In short, + +00:08:48.597 --> 00:08:53.916 +It lets you specify either a regular expression that + +00:08:53.917 --> 00:08:58.036 +matches only some of the files that'll get uploaded from a + +00:08:58.037 --> 00:09:02.236 +directory of files on your machine. And only the files that + +00:09:02.237 --> 00:09:05.716 +match that regex will be put into the hyperdrive and shared + +00:09:05.717 --> 00:09:08.796 +with the world. But it doesn't have to be a regex. It could be a + +00:09:08.797 --> 00:09:13.276 +lambda. So it could match based on file size or modification + +00:09:13.277 --> 00:09:18.996 +time or really whatever you like. So I hope that answers your + +00:09:18.997 --> 00:09:23.956 +question. Great. And I personally, as someone who loves + +00:09:23.957 --> 00:09:27.876 +tinkering with my Elisp, I particularly like the ability to + +00:09:27.877 --> 00:09:31.156 +specify things with a lambda because it just opens up the + +00:09:31.157 --> 00:09:34.356 +ceiling of the possibilities with interactions between + +00:09:34.357 --> 00:09:37.316 +different parts of software. And, you know, as I have worked + +00:09:37.317 --> 00:09:39.956 +significantly in Org Roam, I could definitely see + +00:09:39.957 --> 00:09:44.116 +interactions with lambdas here to make sure that we can send + +00:09:44.117 --> 00:09:47.156 +and share files based on the filter list that is + +00:09:47.157 --> 00:09:51.036 +incrementally added to thanks to those lambdas. So thanks + +00:09:51.037 --> 00:09:55.116 +for this. One more thing I want to add about that is that the, + +00:09:55.117 --> 00:10:00.116 +that same question of being able to upload only certain + +00:10:00.117 --> 00:10:04.316 +files while leaving others to be private was something + +00:10:04.317 --> 00:10:07.556 +that was inspired by Karl Voit. I had an email thread with + +00:10:07.557 --> 00:10:16.036 +him in which he talked about how he uses his file tags project + +00:10:16.037 --> 00:10:21.676 +to organize his files. And he'll put a public tag on the files + +00:10:21.677 --> 00:10:26.476 +in his org database that he wants to have be published to his + +00:10:26.477 --> 00:10:29.916 +website. And so you could very easily just set a regular + +00:10:29.917 --> 00:10:33.636 +expression matches that public tag and then all of the other + +00:10:33.637 --> 00:10:39.676 +files would be not shared. Yeah, and, oh, sorry, I was, I + +00:10:39.677 --> 00:10:42.716 +misclicked, I was talking to production for a second. First + +00:10:42.717 --> 00:10:45.636 +time it happens today, so I think this is a testament to the + +00:10:45.637 --> 00:10:47.996 +level of tightness. But yeah, as you were saying, whatever + +00:10:47.997 --> 00:10:51.396 +heuristics you want is actually a good thing. I think people + +00:10:51.397 --> 00:10:54.636 +are a little antsy because they tend to brain dump into their + +00:10:54.637 --> 00:10:59.836 +Org Roam, Zettelkasten, Denote, and they + +00:10:59.837 --> 00:11:02.516 +really don't want some of their personal notes being out + +00:11:02.517 --> 00:11:05.596 +there. And well, if you are worried about this, I think + +00:11:05.597 --> 00:11:09.356 +learning some Elisp and implementing some Lambda function + +00:11:09.357 --> 00:11:13.116 +that allows you to filter with intention might be the best + +00:11:13.117 --> 00:11:17.636 +solution for you. So I hope we've covered the question as + +00:11:17.637 --> 00:11:21.436 +well as we could have. Next question is more about an idea + +00:11:21.437 --> 00:11:24.996 +about trying hyperdrive to distribute the Worg. Does that + +00:11:24.997 --> 00:11:28.596 +make sense to you? Yeah, I mean, you could distribute + +00:11:28.597 --> 00:11:32.636 +whatever you wanted. I think that'd be a great idea. Okay, + +00:11:32.637 --> 00:11:36.116 +great. Moving to the next question, and we have about three + +00:11:36.117 --> 00:11:38.316 +minutes, so I think we'll cover the last two questions and + +00:11:38.317 --> 00:11:41.023 +we'll move on to the next talk after that. + +NOTE Q: Could you comment on the "visualization" thing, (org visualization), and your experience with this type of content in buffers and the various possibilities (svg, etc.)? + +00:11:41.024 --> 00:11:43.164 +Could you comment on the visualization thing, + +00:11:43.165 --> 00:11:44.716 +Org visualization, and your + +00:11:44.717 --> 00:11:47.236 +experience with this type of content in buffers and the + +00:11:47.237 --> 00:11:52.916 +various possibilities, SVG, et cetera? + +00:11:52.917 --> 00:11:59.916 +Sure. So one thing that we worked on was I added a patch that + +00:11:59.917 --> 00:12:05.156 +was merged as part of Emacs 30, which fixes the way that image + +00:12:05.157 --> 00:12:14.196 +maps scale when images are scaled. So as an Emacs 30, if you + +00:12:14.197 --> 00:12:19.276 +zoom in on an image or shrink an image or rotate an image, now + +00:12:19.277 --> 00:12:24.276 +the image map, which is the overlay, so it's not actually an + +00:12:24.277 --> 00:12:26.716 +overlay, but it's, so to speak, it's an overlay that allows + +00:12:26.717 --> 00:12:30.116 +the images to be clickable based on, you know, where the + +00:12:30.117 --> 00:12:32.756 +actual visual display is. You can also click on it or hit help + +00:12:32.757 --> 00:12:37.356 +echo. And as of Emacs 30, now that scales with the image + +00:12:37.357 --> 00:12:37.796 +itself. + +00:12:37.797 --> 00:12:45.236 +The code to make that work on previous versions of Emacs, you + +00:12:45.237 --> 00:12:51.756 +can see the advice that we added in hyperdrive-sbb-view, that + +00:12:51.757 --> 00:12:55.956 +file in hyperdrive.el, if you're curious to see how you + +00:12:55.957 --> 00:13:01.196 +could polyfill that code, so to speak, to make it work on + +00:13:01.197 --> 00:13:06.076 +previous versions of Emacs before Emacs 30. But it works + +00:13:06.077 --> 00:13:11.076 +great. The way that this works is we generate a GraphViz + +00:13:11.077 --> 00:13:16.716 +string that will be sent to GraphViz to render an SVG and also + +00:13:16.717 --> 00:13:23.676 +render a CMAPX string. We pipe those back into Emacs and then + +00:13:23.677 --> 00:13:27.596 +we generate the image map from the CMAPX file and then we put + +00:13:27.597 --> 00:13:32.596 +that image map with the SVG, and we render it in a buffer. + +00:13:32.597 --> 00:13:37.076 +Works pretty well. You can check out the code to see exactly + +00:13:37.077 --> 00:13:41.876 +how it works. OK, great. Well, sadly, I think we are a little + +00:13:41.877 --> 00:13:44.996 +short on time to cover the last two questions. So Joseph, if + +00:13:44.997 --> 00:13:47.236 +you want to take a little bit of time maybe to answer the + +00:13:47.237 --> 00:13:51.196 +questions in the BBB, you can just do this, even though the + +00:13:51.197 --> 00:13:54.476 +stream will be moving to the next talk. But I'll use the + +00:13:54.477 --> 00:13:57.716 +opportunity to thank you both for the talk and for your + +00:13:57.717 --> 00:14:00.316 +answers, because they were very insightful. And thank you + +00:14:00.317 --> 00:14:03.636 +so much for taking the time to be with us today. Thank you, + +00:14:03.637 --> 00:14:05.876 +Leo. Enjoy the rest of the conference. Any last words in + +00:14:05.877 --> 00:14:10.356 +about 15 seconds? Thank you. I'm grateful for your taking + +00:14:10.357 --> 00:14:14.076 +all this time to make this conference possible. Well, you + +00:14:14.077 --> 00:14:16.916 +know, the conference would be nothing without the speakers + +00:14:16.917 --> 00:14:19.676 +coming and chatting, so you are the ones to thank. I mean, we + +00:14:19.677 --> 00:14:21.796 +like the thanking, obviously, but it's mostly you doing the + +00:14:21.797 --> 00:14:26.156 +work. All right. Thank you, Joseph. We'll see you later. + +00:14:26.157 --> 00:14:26.796 +Bye-bye. diff --git a/2024/captions/emacsconf-2024-julia--exploring-shared-philosophies-in-julia-and-emacs--gabriele-bozzola--answers.vtt b/2024/captions/emacsconf-2024-julia--exploring-shared-philosophies-in-julia-and-emacs--gabriele-bozzola--answers.vtt new file mode 100644 index 00000000..d37f80ef --- /dev/null +++ b/2024/captions/emacsconf-2024-julia--exploring-shared-philosophies-in-julia-and-emacs--gabriele-bozzola--answers.vtt @@ -0,0 +1,346 @@ +WEBVTT + +NOTE Q: Do you have any suggestions for interactive debugging of Julia code in Emacs? + +00:00.089 --> 00:00.829 +... answer to that. I, I think the infrastructure for an + +00:01.509 --> 00:14.192 +ecosystem in Julia in general is as mature as other + +00:01.509 --> 00:14.192 +languages, and even debugger infiltrator themselves are + +00:01.509 --> 00:14.192 +not particularly well developed. And so I don't think + +00:15.853 --> 00:19.214 +there's much we can do about that right now. I think that it's + +00:21.570 --> 00:28.057 +unfortunate that most of the development for these type of + +00:21.570 --> 00:28.057 +tools is tightly linked to VS code. But even there, I don't + +00:29.218 --> 00:36.225 +think that there's much done in terms of interactive + +00:29.218 --> 00:36.225 +debugging. So I, yeah, I think this has to be worked on mostly + +00:36.866 --> 00:43.213 +on the Julia side first. And then probably Emacs can get + +00:43.820 --> 00:48.303 +something out of that. I know that there's development in + +00:49.183 --> 00:57.728 +debugger.jl itself for future releases to make it at least + +00:49.183 --> 00:57.728 +faster and more stable. But yeah, I think we're not there as + +00:58.809 --> 01:03.852 +Julia community itself. So let alone Emacs, integration + +01:04.192 --> 01:07.234 +with Emacs. The way I personally debug is mostly using, + +01:08.286 --> 01:15.508 +well, debugger and infiltrator with Julia REPL mode in + +NOTE Q: Can you call out something that Julia has that Emacs does not, and which could benefit Emacs? + +01:08.286 --> 01:15.508 +Emacs. The second question, can you call out something that + +01:18.009 --> 01:24.891 +Julia has that Emacs does not and which could benefit Emacs? + +01:26.852 --> 01:27.852 +Nothing stands out to me except the usual multi-threading + +01:28.848 --> 01:32.552 +and things like this. I don't necessarily see something + +01:33.432 --> 01:46.783 +that Julia has going on that DMX doesn't have, but I see some + +01:33.432 --> 01:46.783 +differences and approaches that I think are important, + +01:33.432 --> 01:46.783 +like the community. I think Julia is a very active and tight + +01:47.384 --> 01:50.266 +community. Julia uses Slack and is very, very active. I + +01:54.093 --> 01:57.736 +think he might say something like that, but it's maybe more + +01:54.093 --> 01:57.736 +on Reddit, IRC. JuliaCon is big and brings together lots and + +01:59.078 --> 02:02.381 +lots of people. And I think the sense of community is really + +02:03.221 --> 02:05.263 +powerful. It's very easy to essentially meet people that + +02:06.364 --> 02:16.834 +are interested in what we're building and interested in + +02:06.364 --> 02:16.834 +what we're doing and interested in Julian, our, you know, + +02:06.364 --> 02:16.834 +hacker spirit. I think Emacs is a very strong community. + +02:21.228 --> 02:26.151 +We're here on a Saturday talking about Emacs, which again + +02:21.228 --> 02:26.151 +proves that we are doing this. But I'd like to emphasize that + +02:27.192 --> 02:35.696 +the community is a really important aspect in Julia that I + +02:27.192 --> 02:35.696 +think we should double down on our side. The next question is + +NOTE Q: Is there a way to use lisp syntax with Julia, like hy for python or lisp flavoured erlang? + +02:36.797 --> 02:44.841 +about Lisp syntax with Julia, like what we can do in Python. + +02:48.038 --> 02:53.180 +I don't think that's, I don't, I am not aware of any package + +02:48.038 --> 02:53.180 +that does that. I would bet that there's something there. I + +02:56.722 --> 02:58.063 +think that that's possible. Indeed, there used to be a Lisp + +02:59.243 --> 03:07.027 +interpreter in Julia itself until the latest release. The + +03:07.647 --> 03:12.229 +syntax parsing was done with a Lisp, it was called TemtoList + +03:07.647 --> 03:12.229 +indeed. I think this got rid, get rid of this for our more + +03:16.124 --> 03:23.489 +Julia-based solution that is faster and with better code + +03:16.124 --> 03:23.489 +provenance. I think that it should be possible to use the + +03:25.430 --> 03:35.437 +metaprogramming features in Julia to change the structure + +03:25.430 --> 03:35.437 +of your syntax to be a Lispy syntax. I do want to emphasize + +03:36.238 --> 00:03:44.664 +that Julia is heavily inspired by Lisp, so I wouldn't be + +03:36.238 --> 03:44.664 +surprised if if something like this were possible. + +03:49.309 --> 00:03:51.167 +I have tried Julia Snail. + +NOTE Q: Have you tried the Julia Snail package for Emacs? It tries to be like SLY/SLIME for Common Lisp. + +00:03:51.168 --> 00:03:51.070 +So the next question is about Julia + +03:51.270 --> 03:52.712 +Snail. I found Julia REPL to be a little bit easier to set up + +03:53.312 --> 03:58.436 +and use. So I just settled on that. I should maybe revisit + +04:00.918 --> 04:03.480 +that. In particular, I use the Julia REPL with the vterm + +04:03.720 --> 04:11.406 +backend, which essentially makes a companion REPL to my + +04:03.720 --> 04:11.406 +scripts. And that works for me. I do think that the tooling + +04:15.638 --> 04:16.518 +uh, could be improved. I think there is definitely much room + +04:17.399 --> 04:22.040 +and I would like to see improvement in that area. Um, and, uh, + +NOTE Q: Is there a data inspector for a Julia REPL available that you can use in Emacs? + +04:22.940 --> 04:28.322 +so we have data inspector for Julia REPL. + +04:32.043 --> 04:34.784 +I don't think so. I don't, is there any data inspector + +04:34.804 --> 04:39.826 +in for, for the Julia REPL that we can use in Emacs? + +04:43.223 --> 00:04:43.489 +I'm not sure. I don't think so. + +00:04:44.840 --> 00:04:47.839 +I think the way I look at data is + +00:04:47.840 --> 00:04:50.519 +essentially ignoring Emacs when encoded. It's just using the + +00:04:50.520 --> 00:04:54.759 +REPL. And again, with Julia REPL. So I'm not aware of any + +00:04:54.760 --> 00:04:57.720 +specialized tool And again, maybe this is, again, a good + +04:58.652 --> 05:05.595 +moment to emphasize that tooling, the Julia community + +04:58.652 --> 05:05.595 +clusters around VS Code. And there is tools like the, pretty + +05:06.315 --> 05:11.578 +much all the work with VS Code, unfortunately. And while + +05:12.578 --> 05:21.242 +there's a very, very decent Julia mode and Julia repo mode + +05:12.578 --> 05:21.242 +and Julia snail, there's definitely, definitely room for + +05:12.578 --> 05:21.242 +improvement. + +NOTE Q: Have you tried literate programming Julia (using Org babel or some other means) in Emacs? + +05:24.443 --> 05:28.145 +Next, we have a question about literate programming in + +05:24.443 --> 05:28.145 +Julia. I haven't done much of it with Org Babel or + +05:29.505 --> 05:32.906 +anything else. I haven't done much of it. I can say that Julia + +05:35.827 --> 05:46.070 +has developed a new iteration of notebooks called Pluto. + +05:46.090 --> 05:48.471 +Here I'm thinking about Jupyter notebooks. The Pluto + +05:51.021 --> 06:02.988 +notebooks for Julia try to remove a bunch of the pain points + +05:51.021 --> 06:02.988 +that Jupyter notebooks have, meaning you cannot easily + +05:51.021 --> 06:02.988 +commit them to Git or things like this. + +06:06.450 --> 06:09.152 +I haven't used them, but I know some people are very fond of + +06:06.450 --> 06:09.152 +them. And so I think that that's what some of the Julia + +06:09.872 --> 06:15.195 +community would use for notebooks. And I think they can + +06:15.315 --> 06:19.298 +interact with Emacs with no problem. And that would be a form + +06:20.974 --> 06:23.035 +of later programming. But if you can do it in Python, you can + +06:24.015 --> 06:27.696 +do it in Julia. I think there is no reason. And actually, you + +06:30.617 --> 06:38.719 +can take advantage of all this just-in-time or + +06:30.617 --> 06:38.719 +just-out-of-time compilation by keeping the same + +06:30.617 --> 06:38.719 +session. So I think it will be definitely a nice use case. So + +06:44.681 --> 06:47.222 +these are the questions that I see here. I'm going to scroll + +06:48.561 --> 06:54.486 +through the comments and see if there's something that I + +06:48.561 --> 06:54.486 +should say about comments. I'm excited people want to learn + +06:56.228 --> 06:57.669 +Julia. I have to say that if I want to do GPU computing + +06:58.990 --> 07:06.757 +nowadays, I find it much easier to do it with Julia than with + +06:58.990 --> 07:06.757 +CUDA. So I encourage people to look into that. And I do, + +07:11.758 --> 07:26.807 +again, I would like to share what makes me excited about + +07:11.758 --> 07:26.807 +Emacs, about this being open, being collaborative, being + +07:11.758 --> 07:26.807 +respectable with documentation is something that I find in + +07:11.758 --> 07:26.807 +Julia. So I think people that are excited about the same + +07:27.367 --> 07:35.192 +features will find a little bit of joy in working with Julia. + +07:38.214 --> 07:39.675 +I think I addressed what I have here. I don't know if there's + +07:40.189 --> 07:43.532 +anything else that I should add. + +07:51.718 --> 07:54.000 +It took me a minute to unmute there. + +00:07:54.040 --> 00:07:58.399 +No, I think that was awesome. And thank you so much. + +00:07:58.400 --> 00:08:00.399 +I guess I thought it would + +00:08:00.400 --> 00:08:06.559 +collapse that shared area on BBB, my mistake, on the stream, + +00:08:06.560 --> 00:08:12.399 +or I would have left it open. But in any case, no, I thought + +00:08:12.400 --> 00:08:15.079 +that was great. You did a great job of responding to all the + +00:08:15.080 --> 00:08:17.879 +questions and comments. And thank you again so much for your + +00:08:17.880 --> 00:08:20.920 +talk and getting us all excited to learn Julia. Thank you. + +08:24.094 --> 08:25.275 +Enjoy EmacsConf. And again, thanks so much for attending, + +08:25.335 --> 08:30.220 +for being EmacsConf. Thank you. diff --git a/2024/captions/emacsconf-2024-learning--survival-of-the-skillest-thriving-in-the-learning-jungle--bala-ramadurai--answers.vtt b/2024/captions/emacsconf-2024-learning--survival-of-the-skillest-thriving-in-the-learning-jungle--bala-ramadurai--answers.vtt new file mode 100644 index 00000000..009f023d --- /dev/null +++ b/2024/captions/emacsconf-2024-learning--survival-of-the-skillest-thriving-in-the-learning-jungle--bala-ramadurai--answers.vtt @@ -0,0 +1,961 @@ +WEBVTT + +00:00:00.000 --> 00:00:05.159 +I'm doing well. Thank you so much. I was supposed to chat and + +00:00:05.160 --> 00:00:08.799 +write down stuff in the etherpad, but you guys accommodated + +00:00:08.800 --> 00:00:12.439 +me very nicely, swiftly, efficiently, in spite of my quirky + +00:00:12.440 --> 00:00:16.599 +last minute requests. Yeah, but that's okay because, well, + +00:00:16.600 --> 00:00:19.479 +it's funny that you talk about accommodating you and doing + +00:00:19.480 --> 00:00:22.159 +all the things we need to do because, frankly, your talk is + +00:00:22.160 --> 00:00:24.199 +about getting things done and you've mentioned the book, + +00:00:24.200 --> 00:00:27.439 +obviously, but the philosophy of getting things done is + +00:00:27.440 --> 00:00:30.759 +ultimately what we've been applying with Emacs Conf so that + +00:00:30.760 --> 00:00:33.759 +when we have curveballs thrown at us, like you've done right + +00:00:33.760 --> 00:00:36.399 +now, we can accommodate them because we made sure that + +00:00:36.400 --> 00:00:41.039 +everything else was done. So we'll move to questions and I + +00:00:41.040 --> 00:00:45.039 +invite viewers to go to the pad, to the etherpad that is on IRC + +00:00:45.040 --> 00:00:48.199 +and also on the talk page and put your questions over there. + +00:00:48.200 --> 00:00:51.559 +But first I wanted to make sure, Bala, that if you had + +00:00:51.560 --> 00:00:54.639 +anything that you could not include in your presentation, + +00:00:54.640 --> 00:01:00.159 +just to give you some time to mention them now if you want. I + +00:01:00.160 --> 00:01:09.119 +think I mentioned most of what I wanted to convey. I wanted to + +00:01:09.120 --> 00:01:12.479 +keep it general with whichever format people are + +00:01:12.480 --> 00:01:15.719 +comfortable with, whether it's Org Mode, whether it's + +00:01:15.720 --> 00:01:21.599 +plain text, whether it is docx. In fact, I was speaking to one + +00:01:21.600 --> 00:01:25.799 +of my friends and he said, Hey, I use Google Sheets to note + +00:01:25.800 --> 00:01:28.679 +down everything, all the tasks that are coming. I said, suit + +00:01:28.680 --> 00:01:33.439 +yourself, whatever it is. So, in that way, this methodology + +00:01:33.440 --> 00:01:37.359 +or whatever, the way which we follow is quite flexible. The + +00:01:37.360 --> 00:01:41.679 +system is quite flexible in whichever way you want to use it. + +00:01:41.680 --> 00:01:46.919 +go ahead and use it. But start emptying your teacup. That + +00:01:46.920 --> 00:01:50.599 +will be my first and foremost. I have nothing else to add per + +00:01:50.600 --> 00:01:54.879 +se. Okay, cool. So we'll start with the first question and + +00:01:54.880 --> 00:01:58.279 +I'll be reading the questions to you. And just so we know, we + +00:01:58.280 --> 00:02:01.079 +have about eight minutes of Q&A until we need to move to the + +00:02:01.080 --> 00:02:03.553 +next talk. All right, so first question. + +NOTE Q: What is TRIZ? + +00:02:03.554 --> 00:02:06.399 +What is TRIZ? Okay, + +00:02:06.400 --> 00:02:11.679 +this is a Russian methodology. It's pardon my, I mean poor + +00:02:11.680 --> 00:02:16.679 +Russian, but it translates to theory of inventive problem + +00:02:16.680 --> 00:02:21.919 +solving. So, that's what it translates to. What it is, is it + +00:02:21.920 --> 00:02:26.119 +is said that all the inventions problem solved so far in + +00:02:26.120 --> 00:02:30.239 +humanity. If you can categorize them, they fall into + +00:02:30.240 --> 00:02:36.159 +exactly 40 principles. That's one of the core tenets in + +00:02:36.160 --> 00:02:40.959 +theory of inventive problem solving. Also, that creative + +00:02:40.960 --> 00:02:46.319 +people have a process they follow. and in defining a problem + +00:02:46.320 --> 00:02:49.839 +and solving a problem. So, this is what I was trained in a + +00:02:49.840 --> 00:02:55.359 +company that I work for and I started using it and started + +00:02:55.360 --> 00:02:59.199 +applying it. So, creative process starts with defining a + +00:02:59.200 --> 00:03:02.799 +problem and solving a problem in a very systematic manner + +00:03:02.800 --> 00:03:06.239 +and you can be as creative as the creatives that we know about + +00:03:06.240 --> 00:03:11.759 +as the methodology talks about. So, that is what TRIZ is, + +00:03:11.760 --> 00:03:15.639 +Theory of Inventive Problem Solving. There is lot of open + +00:03:15.640 --> 00:03:19.799 +source literature like we have in Emacs. It is the same way + +00:03:19.800 --> 00:03:24.159 +with TRIZ, people share very generous and you can learn + +00:03:24.160 --> 00:03:29.879 +about it. what it can be useful for what in the core of our talk + +00:03:29.880 --> 00:03:34.679 +also is that many times we face conflicts, that is, I don't + +00:03:34.680 --> 00:03:38.719 +want to spend a lot of time, you know, figuring out a system + +00:03:38.720 --> 00:03:42.919 +like this. However, I want everything in one place, you + +00:03:42.920 --> 00:03:46.839 +know, how can that happen? So start little by little is one + +00:03:46.840 --> 00:03:50.399 +suggestion I have. Don't And this is also a contradiction we + +00:03:50.400 --> 00:03:55.199 +have, right? So, we need to spend a lot of time to set up things + +00:03:55.200 --> 00:03:58.559 +before we can start organizing our life. But there's not a + +00:03:58.560 --> 00:04:01.599 +lot of time because we haven't organized our life. So, we + +00:04:01.600 --> 00:04:04.839 +don't have that's a conundrum or a contradiction. That's + +00:04:04.840 --> 00:04:09.479 +what TRIZ methodology is about to identify that this is a + +00:04:09.480 --> 00:04:15.039 +contradiction and we have to resolve it not compromise. So, + +00:04:15.040 --> 00:04:18.319 +resolve it in a manner that gives you enough time to set up a + +00:04:18.320 --> 00:04:22.439 +system and enough time, free time to enjoy your life or focus + +00:04:22.440 --> 00:04:26.559 +on a project and be present when you're working with + +00:04:26.560 --> 00:04:31.439 +something. So, that's what the crux of the methodology is. + +00:04:31.440 --> 00:04:34.359 +Okay, splendid answer. Thank you. Moving on to the next one. + +NOTE Q: Do you agree that learning similar but different things again and again is ultimately wasted bandwidth? What can we do as technologists to push back against this? + +00:04:34.360 --> 00:04:37.199 +Thank you for this talk. Very interesting. One of the things + +00:04:37.200 --> 00:04:40.199 +that frustrates me about modern web development is the rate + +00:04:40.200 --> 00:04:43.279 +of churn when it comes to useful knowledge. I think Emacs can + +00:04:43.280 --> 00:04:45.679 +help to counteract against this by building lasting tools + +00:04:45.680 --> 00:04:48.279 +where mastery can be built. Do you agree that learning + +00:04:48.280 --> 00:04:50.799 +similar but different things again and again is ultimately + +00:04:50.800 --> 00:04:54.079 +wasted bandwidth? What can we do as technologists to push + +00:04:54.080 --> 00:05:00.159 +back against this? Yeah, this is an interesting one + +00:05:00.160 --> 00:05:04.879 +because, I mean, I'm like everyone else where a new package + +00:05:04.880 --> 00:05:09.439 +shows up. I mentioned that in my talk also, the first + +00:05:09.440 --> 00:05:12.879 +introduction. Sajajo's newsletter is amazing. It has all + +00:05:12.880 --> 00:05:15.599 +these new things coming up and new developments coming up. + +00:05:15.600 --> 00:05:18.879 +Same thing with web dev, I guess, you have new things coming + +00:05:18.880 --> 00:05:25.519 +up. So you want to learn that new thing. However, you need to + +00:05:25.520 --> 00:05:31.559 +also be aware that there are so many other projects and + +00:05:31.560 --> 00:05:37.879 +hobbies or life that's also waiting for you. And it's not a + +00:05:37.880 --> 00:05:42.799 +balancing act, but if you if you pay attention and be present + +00:05:42.800 --> 00:05:46.199 +and give whatever is in front of you, it's full attention. + +00:05:46.200 --> 00:05:50.959 +Then look back and connect. That's an interesting way, + +00:05:50.960 --> 00:05:55.759 +because hindsight is 20 20. Use it to your advantage. So my I + +00:05:55.760 --> 00:05:59.679 +don't know, I don't want to push back against this because + +00:05:59.680 --> 00:06:02.879 +some of it is just amazing because it thinks that you think is + +00:06:02.880 --> 00:06:05.759 +a waste of time and it's a distraction right now. could + +00:06:05.760 --> 00:06:09.719 +potentially be. I'm not saying it will be because there are + +00:06:09.720 --> 00:06:13.359 +things that are truly a waste of time that could truly + +00:06:13.360 --> 00:06:17.250 +potentially tie back to something and be really helpful. + +NOTE org-mode export, CSS, WeasyPrint + +00:06:17.251 --> 00:06:22.039 +I can give you an example from our Emacs part of my life. I was + +00:06:22.040 --> 00:06:27.839 +experimenting with CSS and Cascade style sheets and how I + +00:06:27.840 --> 00:06:34.599 +can customize it to use it in org mode export. For me at the + +00:06:34.600 --> 00:06:38.639 +time, it seemed like a waste of time. I was spending so much + +00:06:38.640 --> 00:06:42.599 +time. Then I parked it. I didn't do much about it later. But + +00:06:42.600 --> 00:06:47.319 +then one of my students said, "Your slides are too bulky for me + +00:06:47.320 --> 00:06:49.588 +to scroll through to get to exactly what I am looking for." + +00:06:49.589 --> 00:06:55.319 +I was using the reveal HTML and I used to pass on the link + +00:06:55.320 --> 00:07:00.999 +before. And the student sort of hinted at a handout. And now + +00:07:01.000 --> 00:07:05.319 +that's not easy with the RevealJS framework. It's rather + +00:07:05.320 --> 00:07:08.439 +tricky. At least I couldn't figure it out. but then it + +00:07:08.440 --> 00:07:10.879 +occurred to me that, hey, wait a second i've already looked at + +00:07:10.880 --> 00:07:15.799 +this CSS thing and maybe that'll help. It did help. I can + +00:07:15.800 --> 00:07:18.995 +drop in the name of the tool that I use now. + +00:07:18.996 --> 00:07:23.016 +It's called WeasyPrint uh let me use the uh + +00:07:23.017 --> 00:07:24.877 +i don't know if some... + +00:07:24.878 --> 00:07:32.100 +If you can look it up, W-E-A-S-Y print. + +00:07:32.101 --> 00:07:32.519 +That's what it's called. And that's + +00:07:32.520 --> 00:07:36.399 +mighty useful. That's really, really useful. You can + +00:07:36.400 --> 00:07:40.919 +customize it. You can change everything. I think I can even, + +00:07:40.920 --> 00:07:44.519 +I'll probably even share the code later on. It's really + +00:07:44.520 --> 00:07:48.959 +useful and I've been able to, so what seemed like a waste of + +00:07:48.960 --> 00:07:52.039 +time is actually something that became useful later on. But + +00:07:52.040 --> 00:07:55.519 +there are several other things I have truly wasted and it's + +00:07:55.520 --> 00:07:58.439 +not been useful because I couldn't connect the dots. So, + +00:07:58.440 --> 00:08:06.239 +perhaps the, let's say, wasteful of time so that you look at + +00:08:06.240 --> 00:08:09.159 +something and see how to connect back like the Zettelkasten + +00:08:09.160 --> 00:08:12.839 +that everybody talks about. I do not use it, but I like the + +00:08:12.840 --> 00:08:15.399 +idea that you look at it keeping in mind that you could + +00:08:15.400 --> 00:08:19.359 +probably connect to something later on. Perhaps, just try + +00:08:19.360 --> 00:08:24.519 +it out. OK, great, Bala. Sadly, we are a little short on time + +00:08:24.520 --> 00:08:27.159 +to answer all the questions that we have. I see three + +00:08:27.160 --> 00:08:31.039 +questions currently that can still be answered, and I don't + +00:08:31.040 --> 00:08:33.919 +think any of them would be answerable within just one + +00:08:33.920 --> 00:08:37.559 +minute. So what I suggest we do, Bala, feel free. Do you have + +00:08:37.560 --> 00:08:40.919 +access to the pad on your end? Yes, I do. I do. I have it here. + +00:08:40.920 --> 00:08:43.707 +Okay, cool. I'm putting the link on BBB just in case you need + +00:08:43.708 --> 00:08:44.919 +to review it. + +00:08:44.920 --> 00:08:47.039 +We're going to leave the room open. By the way, + +00:08:47.040 --> 00:08:49.399 +if anyone in the crowd wants to join so that they can ask the + +00:08:49.400 --> 00:08:51.919 +question directly with their voice to Bala, feel free to do + +00:08:51.920 --> 00:08:56.119 +so. The links are on the website. But Bala, if no one shows up, + +00:08:56.120 --> 00:08:58.559 +if you could just answer the three questions that we haven't + +00:08:58.560 --> 00:09:01.239 +covered yet, actually. Well, three questions because + +00:09:01.240 --> 00:09:04.359 +Sacha just put the link right there. That'd be lovely. And + +00:09:04.360 --> 00:09:06.080 +we'll make sure that the entire Q&A + +00:09:06.120 --> 00:09:07.839 +finds its place into the + +00:09:07.840 --> 00:09:10.719 +website afterwards. How does that sound for you? Yeah, + +00:09:10.720 --> 00:09:14.559 +sounds great. Thank you so much. I'll do make sure that I will + +00:09:14.560 --> 00:09:17.159 +have the answers there, but I'm going to wait here for some + +00:09:17.160 --> 00:09:20.559 +time so that somebody can join. Okay, sure. Any last word in + +00:09:20.560 --> 00:09:26.799 +10 seconds for the public? Well, empty your teacup and enjoy + +00:09:26.800 --> 00:09:27.199 +your life. + +00:09:27.200 --> 00:09:29.879 +Splendid. Thank you so much, Bala, for coming + +00:09:29.880 --> 00:09:32.359 +again to EmacsConf this year, and hopefully we'll be seeing + +00:09:32.360 --> 00:09:36.439 +you next year with further talks to discuss. Yeah, thank you + +00:09:36.440 --> 00:09:39.559 +so much. All right, and right now we'll be moving to the next + +00:09:39.560 --> 00:09:42.039 +talk of the day in about five seconds. Thank you again, Bala, + +00:09:42.040 --> 00:09:46.799 +and see you later. Bye. + +00:09:46.800 --> 00:09:49.399 +All right, we are a fair. So, Bala, I'll need to move to make + +00:09:49.400 --> 00:09:51.759 +sure that everything is working for the next talk. So, do as + +00:09:51.760 --> 00:09:55.320 +we said, and everything will be fine. Okay. + +00:09:55.333 --> 00:09:58.879 +Okay, bye-bye, Bala. Bye. Bye, Leo. + +00:09:58.880 --> 00:10:15.119 +Okay. + +00:10:15.120 --> 00:10:21.679 +Hello everyone, do you want me to answer a question? I'll be + +00:10:21.680 --> 00:10:23.399 +happy to answer that. You want to discuss something? You + +00:10:23.400 --> 00:10:27.759 +want to share something? I'm here for that. Please let me + +00:10:27.760 --> 00:11:06.479 +know. + +00:11:06.480 --> 00:11:10.599 +I'll hang around for another 5 to 10 minutes. Please let me + +00:11:10.600 --> 00:11:14.439 +know if you have any questions or if you're the ones who ask + +00:11:14.440 --> 00:11:36.739 +those questions also, please let me know. + +00:11:36.740 --> 00:11:38.560 +Are you there? + +00:11:38.625 --> 00:11:44.359 +Hi, yes. Some tips I've found for getting + +00:11:44.360 --> 00:11:50.399 +things done with an image for this stuff is like for + +00:11:50.400 --> 00:11:53.919 +separations you have like your Zettelkasten, you're + +00:11:53.920 --> 00:11:56.799 +getting things done, and then beyond that you have like + +00:11:56.800 --> 00:12:00.559 +dailies and global. + +00:12:00.560 --> 00:12:06.439 +Daily Zettelkasten would be journaling. Okay, okay. And + +00:12:06.440 --> 00:12:10.479 +then, like, global or daily getting things done, I + +00:12:10.480 --> 00:12:11.919 +generally like doing it in a week. + +00:12:11.920 --> 00:12:13.800 +And then splitting the, + +00:12:13.833 --> 00:12:16.120 +like, core tasks, secondary tasks, + +00:12:16.121 --> 00:12:17.220 +unplanned tasks, + +00:12:17.221 --> 00:12:22.079 +because those are good categories. + +00:12:22.080 --> 00:12:26.439 +I like what you're doing. + +00:12:26.440 --> 00:12:32.199 +Sorry? Do you do things like that at all? + +00:12:32.200 --> 00:12:38.279 +Or are there separations like with Zettelkasten + +00:12:38.280 --> 00:12:45.839 +versus the Getting Things Done? + +00:12:45.840 --> 00:12:52.279 +That's very interesting, yes. Daily log and weekly log, + +00:12:52.280 --> 00:12:56.800 +that's really helpful. I've also been trying to do that but + +00:12:56.821 --> 00:13:02.279 +not being able to successfully do a daily log plus a weekly + +00:13:02.280 --> 00:13:06.879 +log. So I gave up on the daily log because it seemed to be like a + +00:13:06.880 --> 00:13:12.479 +lot of overhead for me, so I just switch to a weekly review + +00:13:12.480 --> 00:13:16.759 +where I would log what's going on and how it is. But it's also + +00:13:16.760 --> 00:13:19.759 +interesting to see how it connects back to something that + +00:13:19.760 --> 00:13:22.639 +we've already worked on, or we've already learned + +00:13:22.640 --> 00:13:26.039 +somewhere, which is essentially using the ZIP and custom + +00:13:26.040 --> 00:13:30.239 +method. I probably want to try that a bit later on also. + +00:13:30.240 --> 00:13:34.199 +That's a great suggestion, nice idea. Oh, so some of the + +00:13:34.200 --> 00:13:38.039 +reason for the separation would be with the daily log, like, + +00:13:38.040 --> 00:13:42.839 +for instance, the title for the journal would be, Audinet + +00:13:42.840 --> 00:13:47.359 +would be the day, and it starts blank. And then, so if you have + +00:13:47.360 --> 00:13:50.159 +a straight thought, if you know it can go straight to your + +00:13:50.160 --> 00:13:53.479 +Zettelkasten, it goes into your Zettelkasten. If you don't + +00:13:53.480 --> 00:13:57.679 +know where it goes, it goes into your journal. And then same + +00:13:57.680 --> 00:14:01.839 +thing for like the week, is like your weeks always start + +00:14:01.840 --> 00:14:04.879 +emptying, so like if you have your core tasks, like if it + +00:14:04.880 --> 00:14:08.119 +spells beyond three, it's probably not a core task. So it + +00:14:08.120 --> 00:14:11.359 +gives you the idea of like, did I actually do what I wanted to + +00:14:11.360 --> 00:14:16.999 +yesterday, rather than getting 20 things done that I don't + +00:14:17.000 --> 00:14:22.159 +really care about that much. Yes. True, true, true. Very + +00:14:22.160 --> 00:14:23.759 +true. Yeah. + +00:14:23.760 --> 00:14:30.959 +Nice, nice talk. Thank you so much for sharing that. I've + +00:14:30.960 --> 00:14:35.279 +been a, let's say a start and many times I've started on + +00:14:35.280 --> 00:14:40.799 +Zettelkasten, you know, with little notes. They have these + +00:14:40.800 --> 00:14:43.399 +fleeting notes and permanent notes. I've tried many of + +00:14:43.400 --> 00:14:48.199 +those, but somehow it's not sticky for me. I've not been + +00:14:48.200 --> 00:14:51.399 +able to get rid of that. + +00:14:51.400 --> 00:14:55.919 +Yeah, I've got multiple attempts of using these systems, + +00:14:55.920 --> 00:15:01.999 +becoming too big or complex, like I don't know where to put a + +00:15:02.000 --> 00:15:06.679 +new piece of information, so then I throw the whole system + +00:15:06.680 --> 00:15:14.639 +away. So, this is my favorite iteration that I've done so + +00:15:14.640 --> 00:15:23.399 +far. I'm sure it'll change with time. Okay, okay, okay, I + +00:15:23.400 --> 00:15:25.079 +see. Yeah, I... + +NOTE Daily log + +00:15:25.080 --> 00:15:31.759 +I like the way the daily log works, that it has an embedded, + +00:15:31.760 --> 00:15:36.799 +you know, you just have a name stamp and then you embed + +00:15:36.800 --> 00:15:40.479 +something from another project. And when you go to the + +00:15:40.480 --> 00:15:44.559 +project page, the same thing shows up there in the log also. I + +00:15:44.560 --> 00:15:48.679 +wanted to take that feature and have that in my optimal + +00:15:48.680 --> 00:15:53.399 +setup. I'm not well versed enough to get that set up because I + +00:15:53.400 --> 00:15:56.799 +like that with that. Anything I enter in the daily log should + +00:15:56.800 --> 00:16:00.359 +show up in my project log also and vice versa. I want to + +00:16:00.360 --> 00:16:04.799 +execute on my project. I need that notes where I'm looking + +00:16:04.800 --> 00:16:10.599 +for. That's a key feature of that is with logseq you just have + +00:16:10.600 --> 00:16:14.160 +a button that says go to today. So you don't think about it and + +00:16:14.161 --> 00:16:18.060 +it always starts empty. It's that blank sheet that's always + +00:16:18.061 --> 00:16:23.079 +confirming you want the things that I used that before. + +00:16:23.080 --> 00:16:26.360 +One of the things I really wanted was, I want this, + +00:16:26.397 --> 00:16:29.198 +but I want it for Getting Things Done on my journal. + +00:16:29.199 --> 00:16:36.279 +I want two separate ones. + +00:16:36.280 --> 00:16:45.319 +Yeah, I like the, also I'm trying to see how to create pages + +00:16:45.320 --> 00:16:51.119 +quickly from within Org Mode. I know we can do the square + +00:16:51.120 --> 00:16:55.879 +bracket thing and enter and it should go into a new page. but + +00:16:55.880 --> 00:17:00.879 +it's not as seamless as in logseq or obsidian i'm trying to + +00:17:00.880 --> 00:17:06.239 +see how which way do i do that quickly so that you don't spend + +00:17:06.240 --> 00:17:10.439 +time on organizing once you have the bigger setup of the + +00:17:10.440 --> 00:17:14.959 +folder structures and the to do then it's easier to + +00:17:14.960 --> 00:17:18.599 +integrate it but if i'm starting from a business point of + +00:17:18.600 --> 00:17:22.679 +view it's rather tough for them to set it all up because the + +00:17:22.680 --> 00:17:27.679 +setup costs are very high in terms of system first and then + +00:17:27.680 --> 00:17:30.639 +start with this. Or like you said, you know we could also + +00:17:30.640 --> 00:17:33.759 +start with a blank sheet and then start filling it up and then + +00:17:33.760 --> 00:17:39.159 +see how to link up things or move it around so that it fits into + +00:17:39.160 --> 00:17:44.719 +your larger system or evolve a system as it goes. Don't start + +00:17:44.720 --> 00:17:47.959 +with the system in mind, but evolve it because it then fits + +00:17:47.960 --> 00:17:52.559 +into how you are rather than the you trying to adapt to the + +00:17:52.560 --> 00:17:53.159 +system. + +NOTE Capturing + +00:17:53.160 --> 00:18:00.559 +So, Denote and org-roam, they'll have a feature, like the + +00:18:00.560 --> 00:18:05.199 +note, you have a command called, let's see, create or + +00:18:05.200 --> 00:18:09.479 +existing note, and org-roam has an equivalent to that, and + +00:18:09.480 --> 00:18:14.999 +what that, you need to consult with that, as you are browsing + +00:18:15.000 --> 00:18:19.279 +your notes, you see that, and so if you're making a new note, + +00:18:19.280 --> 00:18:23.119 +power generation or something like that you'll easily see + +00:18:23.120 --> 00:18:27.799 +if you have any notes that are in power generation or like + +00:18:27.800 --> 00:18:30.839 +let's say you have something in power and if you don't you + +00:18:30.840 --> 00:18:34.079 +just go down to where you're just you know you don't have + +00:18:34.080 --> 00:18:39.599 +anything selected or so it's your what's in your uh what your + +00:18:39.600 --> 00:18:46.719 +current so you're not pre-selecting something existing + +00:18:46.720 --> 00:18:51.599 +and voila now you have a file And then you have consult so you + +00:18:51.600 --> 00:18:57.879 +can preview them as you move up and down the list. + +00:18:57.880 --> 00:19:02.319 +And then you also got Emacs + +00:19:02.320 --> 00:19:10.719 +Org Capture to just pop up a template + +00:19:10.720 --> 00:19:16.599 +capture buffer that is blank that you can tell to go into + +00:19:16.600 --> 00:19:20.919 +something like a journal or a GTD inbox. + +00:19:20.920 --> 00:19:27.279 +And yeah, this allows you to just make it like a specific + +00:19:27.280 --> 00:19:30.999 +buffer to do that specific task. I think Protesilaos has a + +00:19:31.000 --> 00:19:35.479 +video about how to make that into just a pop-up window. Like + +00:19:35.480 --> 00:19:41.519 +for instance, you're in your browser, you pop it up, Uh, jot + +00:19:41.520 --> 00:19:49.599 +down your task, press enter, and it's gone. Hmm, okay. Okay, + +NOTE Note silos + +00:19:49.600 --> 00:19:54.919 +okay, makes sense, makes sense. Yeah, for me, I wanted to try + +00:19:54.920 --> 00:20:01.079 +denote, but my folder structure, I found it very difficult + +00:20:01.080 --> 00:20:04.559 +to move it to a denote kind of a structure where the folder + +00:20:04.560 --> 00:20:08.519 +hierarchy is not as important because all nodes are treated + +00:20:08.520 --> 00:20:12.639 +the same. But for me, because I'm focusing on a project, I + +00:20:12.640 --> 00:20:17.079 +need only the project files show up. It was tricky for me to, + +00:20:17.080 --> 00:20:20.599 +because sometimes I share the folder with my colleagues and + +00:20:20.600 --> 00:20:24.519 +who are not on Emacs or more. So I can't show them all the + +00:20:24.520 --> 00:20:28.879 +files, all the notes. I just want that folder to be shared and + +00:20:28.880 --> 00:20:32.439 +ignore the todo.org that is there because it's not readable + +00:20:32.440 --> 00:20:37.679 +for them. So, I find it easier to share a folder level or a + +00:20:37.680 --> 00:20:41.639 +project level and that's why I stuck to this format which is a + +00:20:41.640 --> 00:20:46.639 +hierarchy of folders with the to-do inside those folders. + +00:20:46.640 --> 00:20:49.719 +That works very well for me, particularly keeping in mind + +00:20:49.720 --> 00:20:52.479 +that I need to share some folders sometimes with my + +00:20:52.480 --> 00:20:57.439 +colleagues. Whereas Denote with a flat structure or + +00:20:57.440 --> 00:21:01.919 +Roam with a flat structure, I find it very tricky to do that. + +00:21:01.920 --> 00:21:06.079 +With Denote, you can actually have, there's a feature + +00:21:06.080 --> 00:21:07.759 +called silos that will + +00:21:07.760 --> 00:21:13.199 +allow you to do both and I think you can make customized + +00:21:13.200 --> 00:21:17.959 +commands to go that work only in specific silos. I haven't + +00:21:17.960 --> 00:21:20.919 +messed around to it. too much with them. I don't think org run + +00:21:20.920 --> 00:21:24.719 +has anything like that though. Yes, I don't think they have + +00:21:24.720 --> 00:21:28.239 +that. But I remember seeing silos. Maybe I should give it + +00:21:28.240 --> 00:21:32.119 +another spin and see if that works. Because if it can solve my + +00:21:32.120 --> 00:21:36.519 +creating new node quickly from the denote part itself while + +00:21:36.520 --> 00:21:40.439 +I'm writing the nodes itself rather than go through the R + +00:21:40.440 --> 00:21:45.439 +capture. That will really help me in linking back and seeing + +00:21:45.440 --> 00:21:49.399 +how it maps to another project that I've already worked on + +00:21:49.400 --> 00:21:53.999 +from an archive and then bring it there. I think that's a good + +00:21:54.000 --> 00:21:57.639 +idea. I'll look at silos again. Also, with the silos, let's + +00:21:57.640 --> 00:22:03.719 +say you're going to use ripgrep on the directory, you could + +00:22:03.720 --> 00:22:07.799 +intentionally keep your Zettelkasten and your journal + +00:22:07.800 --> 00:22:13.159 +separated. in different folders, like, yeah. So that, + +00:22:13.160 --> 00:22:19.039 +like, if you direct them, or if you wanted to share folder by + +00:22:19.040 --> 00:22:23.399 +folder basis, yeah, you don't have to be the all-in or + +00:22:23.400 --> 00:22:30.759 +nothing approach. Yeah, that works. That works. + +00:22:30.760 --> 00:22:35.119 +Excellent. + +00:22:35.120 --> 00:22:37.839 +OK. + +00:22:37.840 --> 00:22:44.159 +Well, thank you so much for your time and for sharing what is + +00:22:44.160 --> 00:22:47.919 +really helpful for me. I hope the talk was useful for you. + +00:22:47.920 --> 00:22:53.839 +Yep. Thanks for sharing. Have fun with the rest of the Emacs + +00:22:53.840 --> 00:23:00.799 +camp. Okay. All right. Then see you then. Happy Emacs month + +00:23:00.800 --> 00:23:06.200 +to you too. Okay. Bye. Bye. diff --git a/2024/captions/emacsconf-2024-literate--literate-programming-for-the-21st-century--howard-abrams--answers.vtt b/2024/captions/emacsconf-2024-literate--literate-programming-for-the-21st-century--howard-abrams--answers.vtt new file mode 100644 index 00000000..803d43df --- /dev/null +++ b/2024/captions/emacsconf-2024-literate--literate-programming-for-the-21st-century--howard-abrams--answers.vtt @@ -0,0 +1,996 @@ +WEBVTT + +00:00:00.000 --> 00:00:04.839 +I'm doing great. Good to hear from you guys. Yeah, I mean, + +00:00:04.840 --> 00:00:07.959 +you've been a regular of the show, I would say, for quite a + +00:00:07.960 --> 00:00:11.399 +while, and it's good. I really like the retrospective that + +00:00:11.400 --> 00:00:14.959 +you did the first time you attended EmacsConf. And when was + +00:00:14.960 --> 00:00:18.759 +it? Was it 2015? I can't actually remember. 2015 was when I + +00:00:18.760 --> 00:00:22.319 +presented that, but I did an earlier talk the year before. So + +00:00:22.320 --> 00:00:25.479 +yeah, that's why it's kind of thing. It's like, wow, it's + +00:00:25.480 --> 00:00:31.279 +been a decade. It's been a while. Yeah, and I'm glad that you + +00:00:31.280 --> 00:00:35.559 +are in a much better recording situation than you were in + +00:00:35.560 --> 00:00:39.439 +2015 at the back of your colleague's house. It's good to see + +00:00:39.440 --> 00:00:44.359 +you at your own place. Well, it's also nice to pre-record and + +00:00:44.360 --> 00:00:48.239 +then just share. Yeah, I mean, that's why we keep talking + +00:00:48.240 --> 00:00:51.519 +about pre-recording. You know, when we really pushed + +00:00:51.520 --> 00:00:53.759 +pre-recordings, I think it was five years ago when we + +00:00:53.760 --> 00:00:57.679 +started, people were not really liking it. They thought, + +00:00:57.680 --> 00:01:00.039 +oh, but most conferences are just asking you to come and + +00:01:00.040 --> 00:01:02.919 +chat. And, you know, I don't need to do the pesky + +00:01:02.920 --> 00:01:06.319 +pre-recording. But now, and especially for you regulars, + +00:01:06.320 --> 00:01:08.359 +you're really starting to realize that pre-recordings are + +00:01:08.360 --> 00:01:11.279 +actually amazing for everyone. You're less stressed on the + +00:01:11.280 --> 00:01:14.199 +day of the conference. We, the organizers, are way less + +00:01:14.200 --> 00:01:16.519 +stressed. So it's a win-win scenario for absolutely + +00:01:16.520 --> 00:01:19.359 +everyone in the equation. Okay, so there's some + +00:01:19.360 --> 00:01:22.519 +confirmation bias at work, but I'm not really arguing with + +00:01:22.520 --> 00:01:27.639 +what Leo says for the record. It may be that we are just that + +00:01:27.640 --> 00:01:30.759 +this stoked that we're lying to ourselves by the + +00:01:30.760 --> 00:01:33.959 +opportunity that we have to chat with each of you. Sure. + +00:01:33.960 --> 00:01:38.759 +Sure. Sure. I have really appreciated all of the, the + +00:01:38.760 --> 00:01:43.559 +transcripts. It's been great that, you know, to be able to + +00:01:43.560 --> 00:01:46.519 +read and copy and paste and all that kind of thing. Yeah, it's + +00:01:46.520 --> 00:01:49.959 +great. So yeah, let's answer some questions here. + +00:01:49.960 --> 00:01:58.159 +Let's see. Yeah, just feel free to jump onto the Etherpad and + +00:01:58.160 --> 00:02:01.239 +just drop on the questions. I'll keep answering them all day + +00:02:01.240 --> 00:02:07.399 +kind of thing and get better answers as we go along. + +NOTE Q: What's the largest code base you've ever tackled with the literate approach (esp. Emacs + Org-mode)? + +00:02:07.400 --> 00:02:12.439 +So yeah, the first question here is, what's my largest code base? + +00:02:12.440 --> 00:02:18.359 +I kind of touched it in my presentation. However, I think + +00:02:18.360 --> 00:02:22.439 +someone just went through and did a better count than it + +00:02:22.440 --> 00:02:27.879 +looks like. a little bit more. So + +00:02:27.880 --> 00:02:32.959 +as I joked about in the video, we've all worked on larger code + +00:02:32.960 --> 00:02:36.799 +bases, but that's still, it's kind of significant. So it's + +00:02:36.800 --> 00:02:43.679 +not, so yeah, anyway. So let's talk a little bit about + +00:02:43.680 --> 00:02:49.519 +searching for functions here. If you've got your functions + +00:02:49.520 --> 00:02:53.679 +in your code or code block, well, you can search for the + +00:02:53.680 --> 00:02:59.319 +descriptions, you know, as long as you've evaluated it. And + +00:02:59.320 --> 00:03:04.519 +so that wasn't so much of a problem, but I did want to like look + +00:03:04.520 --> 00:03:07.839 +at the commentary around any function that I would define. + +00:03:07.840 --> 00:03:14.039 +And that's where, yeah, you know, the C-x or the + +00:03:14.040 --> 00:03:18.919 +C-f to define that function and display it. It won't + +00:03:18.920 --> 00:03:22.279 +pull out the literate stuff around it, obviously, it'll + +00:03:22.280 --> 00:03:27.159 +only do the doc header. But if you could search for it and find + +00:03:27.160 --> 00:03:30.559 +it quick, then it might be just as useful. And I guess that's + +00:03:30.560 --> 00:03:36.079 +why I started getting into seeing if I can't tie that into the + +00:03:36.080 --> 00:03:40.839 +X ref. you know, just the standard ways. My first part, I + +00:03:40.840 --> 00:03:45.799 +noticed that evil has a different way of searching through + +00:03:45.800 --> 00:03:50.999 +for looking for code definitions. That was my first foray + +00:03:51.000 --> 00:03:53.959 +into it. It's like, oh, that's not a bad idea. Let's hook it up + +00:03:53.960 --> 00:03:58.079 +under, you know, in the standard way. + +NOTE Q: Have you ever used org-transclusion? + +00:03:58.080 --> 00:04:02.279 +Let's see. Have I ever used org-transclusion? + +00:04:02.280 --> 00:04:05.319 +No, I haven't, but I think I want to + +00:04:05.320 --> 00:04:08.439 +take a look at it. I haven't heard of it before. + +NOTE Q: What is your usage of dynamic blocks in such workflows? + +00:04:08.440 --> 00:04:16.519 +Let's see. What's my usage of dynamic blocks in my + +00:04:16.520 --> 00:04:21.439 +workflows? You know, that's a real good question. I haven't + +00:04:21.440 --> 00:04:26.319 +really used them a lot in all of my workflows, but yeah, it's + +00:04:26.320 --> 00:04:29.439 +an interesting, you know, we always start. + +00:04:29.440 --> 00:04:30.999 +At first, all + +00:04:31.000 --> 00:04:33.679 +we're doing is just taking a few notes, then we start + +00:04:33.680 --> 00:04:36.039 +organizing, then we've got links, and then we're writing + +00:04:36.040 --> 00:04:39.519 +code blocks, and then agendas, and table, you know, we keep + +00:04:39.520 --> 00:04:40.999 +building up on it. + +00:04:41.000 --> 00:04:44.399 +I guess I haven't really added that to + +00:04:44.400 --> 00:04:46.978 +my workflow, but maybe I'll have to come back + +00:04:46.979 --> 00:04:48.839 +and report on that. + +NOTE Q: Is the minibuffer being deliberately hidden in this video? + +00:04:48.840 --> 00:04:51.599 +Is the mini buffer being deliberately hidden in my + +00:04:51.600 --> 00:04:57.879 +video? Not deliberately. I recorded it first and + +00:04:57.880 --> 00:05:03.759 +accidentally not clipped the video and turned that all off. + +00:05:03.760 --> 00:05:07.359 +So I went through and started fixing all of it. But yeah, so + +00:05:07.360 --> 00:05:10.759 +you'll notice the mini buffer kind of comes and goes in the + +00:05:10.760 --> 00:05:12.444 +video. Sorry about that. + +00:05:12.445 --> 00:05:17.340 +So yeah, it wasn't intentional at all. + +NOTE Q: What's your take on Emacs+Org vs. Jupyter notebooks (for interactive programming)? + +00:05:17.341 --> 00:05:21.839 +What's my take on Emacs Org versus Jupyter? That's a real + +00:05:21.840 --> 00:05:29.519 +good question. I've been toying about seeing if I could do + +00:05:29.520 --> 00:05:32.479 +everything that some people do with Jupyter notebooks in + +00:05:32.480 --> 00:05:36.079 +order. I don't need to do it as much because I'm still kind of + +00:05:36.080 --> 00:05:40.319 +doing a lot of list programming and a lot of my DevOps, which + +00:05:40.320 --> 00:05:45.559 +is a lot of shell work and a lot of Python. Most of the Jupyter + +00:05:45.560 --> 00:05:49.639 +notebooks, they automatically include a lot of things in + +00:05:49.640 --> 00:05:56.679 +from either Julia or Python, like NumPy and all the dynamic + +00:05:56.680 --> 00:06:01.439 +stuff that's going on there. Since it has a server, + +00:06:01.440 --> 00:06:07.439 +it seems like it's running a lot more stuff and then just + +00:06:07.440 --> 00:06:10.719 +shipping it back off into the web app. That has been the + +00:06:10.720 --> 00:06:16.239 +biggest challenge as I've tried to kind of duplicate that. I + +00:06:16.240 --> 00:06:20.439 +don't really know NumPy and all the math stuff and that sort + +00:06:20.440 --> 00:06:25.039 +of stuff that well. So trying to do like matrix + +00:06:25.040 --> 00:06:27.359 +multiplications and that kind of thing that seemed to be + +00:06:27.360 --> 00:06:33.119 +pretty easy in the Jupyter, it's not very easy in Org. I've + +00:06:33.120 --> 00:06:36.639 +attempted to kind of work with Julia and the Julia support + +00:06:36.640 --> 00:06:45.759 +for Org is really limited it seems. That's the, So, yeah, + +00:06:45.760 --> 00:06:49.199 +there's some improvements we could probably make. So, I + +00:06:49.200 --> 00:06:53.159 +think if somebody is comfortable with Jupiter, and that + +00:06:53.160 --> 00:06:59.039 +seems to work, you may have to stay there. I don't know how + +00:06:59.040 --> 00:07:04.679 +easy. I would be curious to try to see what we could do as a + +00:07:04.680 --> 00:07:07.799 +community to kind of make that transition a lot easier. + +NOTE Q: Do you think any programming language is more suited to literate programming than another? + +00:07:07.800 --> 00:07:12.416 +Do you think any programming language + +00:07:12.417 --> 00:07:13.559 +is more suited to literate + +00:07:13.560 --> 00:07:16.959 +programming than another? Hey, that's a real good + +00:07:16.960 --> 00:07:22.359 +question. A lot of mine is with Emacs Lisp, and obviously + +00:07:22.360 --> 00:07:27.639 +that's a first-class citizen in Emacs. Go figure, right? So + +00:07:27.640 --> 00:07:33.519 +that one certainly works. A lot depends on the support in the + +00:07:33.520 --> 00:07:38.199 +OB version for the Babel work. Python is really well + +00:07:38.200 --> 00:07:45.599 +supported, and yeah, Emacs Lisp. Others, Shell, you know, + +00:07:45.600 --> 00:07:50.439 +it works, but it's hard to get both the values, the variables + +00:07:50.440 --> 00:07:53.479 +out of the environment variables into your thing. So most + +00:07:53.480 --> 00:07:58.959 +everything is just with the results of output. So, you know, + +00:07:58.960 --> 00:08:03.079 +some languages aren't quite as good as others for sure. I + +00:08:03.080 --> 00:08:06.879 +would love to see better support for more interesting + +00:08:06.880 --> 00:08:10.439 +languages, especially ones that are compiled. I've been + +00:08:10.440 --> 00:08:16.639 +dabbling with Rust and like, yeah, what can we do to have Rust + +00:08:16.640 --> 00:08:21.559 +more iterative as well? So... + +NOTE Q: Do you use inline org function calls and org babel library and such? + +00:08:21.560 --> 00:08:29.159 +Do you use inline org function calls in Org Babel library? So + +00:08:29.160 --> 00:08:33.599 +I used to do a lot of Org Babel libraries to kind of share + +00:08:33.600 --> 00:08:35.639 +things. + +00:08:35.640 --> 00:08:46.399 +Yeah. What I. But yeah. Sorry, I'm just kind of thinking + +00:08:46.400 --> 00:08:49.839 +through here. I've done a lot of it in the past. There were a + +00:08:49.840 --> 00:08:54.919 +lot of bugs in it. Oh, I don't know, eight years ago when I was + +00:08:54.920 --> 00:08:59.359 +playing with it. I bet things have improved a lot more and it + +00:08:59.360 --> 00:09:04.239 +probably saved me a lot more effort. Right now, most of the + +00:09:04.240 --> 00:09:08.639 +literate devops, the devops kind of stuff that I'm doing, is + +00:09:08.640 --> 00:09:14.079 +calling a lot of back-end programs and that sort of thing. So + +00:09:14.080 --> 00:09:19.359 +the Org Babel kind of has limited help in that regard. And as + +00:09:19.360 --> 00:09:23.999 +far as my Emacs work, well, it's just part of the session. So + +00:09:24.000 --> 00:09:26.759 +it's going to be available or not. So that hasn't been as + +00:09:26.760 --> 00:09:30.559 +helpful either. So it's kind of dropped off. But I bet if + +00:09:30.560 --> 00:09:34.519 +you're using something like, say, Python, it might be a lot + +00:09:34.520 --> 00:09:36.969 +more helpful. + +NOTE Q: How do you handle the cases where org markup may sometimes interfere with some of the code? + +00:09:36.970 --> 00:09:40.159 +Another question, how do you handle the cases + +00:09:40.160 --> 00:09:43.999 +where markup may sometimes interfere with some of the code + +00:09:44.000 --> 00:09:50.559 +in places where you can't escape? Oh, okay. All right. Let me + +00:09:50.560 --> 00:09:54.719 +see if I understand the question correctly. + +00:09:54.720 --> 00:10:01.759 +When I, like, when I'm making prose, and I'm talking about a + +00:10:01.760 --> 00:10:04.839 +function that I've written somewhere else, like, oh, I need + +00:10:04.840 --> 00:10:09.439 +to work on this, or this calls this, and yeah, I'll use the + +00:10:09.440 --> 00:10:14.839 +tildes or the equal signs on either side to make sure it's. + +00:10:14.840 --> 00:10:20.399 +that it's clear that it's code. In my xref, when I'm doing a + +00:10:20.400 --> 00:10:27.479 +thing-at-point so it can go look for that symbol, I do look for + +00:10:27.480 --> 00:10:31.919 +those things at the end and strip them off so that I can mark it + +00:10:31.920 --> 00:10:35.039 +up and still search and it's still okay. I'm not sure if + +00:10:35.040 --> 00:10:39.359 +that's the answer to the question. Yeah, clarifying. I'm + +00:10:39.360 --> 00:10:41.759 +making prose. I'm talking about a function I've written + +00:10:41.760 --> 00:10:47.319 +somewhere else. Yeah, yeah, yeah, that is what I'm talking + +00:10:47.320 --> 00:10:53.279 +about, where a function with tildes on either end, and if I do + +00:10:53.280 --> 00:10:57.359 +an xref search find for that symbol, it'll strip that off and + +00:10:57.360 --> 00:11:01.439 +then still look for the function name, so I can still mark it + +00:11:01.440 --> 00:11:06.219 +correctly. + +NOTE Q: You said at the start that literate didn't catch on in corporate DevOps - why not? + +00:11:06.220 --> 00:11:08.439 +You said at the start that literate didn't catch on in + +00:11:08.440 --> 00:11:14.719 +corporate devops, why not? You know, + +00:11:14.720 --> 00:11:18.919 +I guess the big thing is not everybody's using Emacs, + +00:11:18.920 --> 00:11:20.610 +and I don't think anybody would be + +00:11:20.611 --> 00:11:23.651 +doing literate programming if you didn't + +00:11:23.652 --> 00:11:25.199 +have Emacs. I mean, you got to have Org, or it just + +00:11:25.200 --> 00:11:29.420 +doesn't work that well, right? + +NOTE Q: Why not that full stack on Markdown? + +00:11:29.421 --> 00:11:36.359 +Why not that full stack on Markdown? Yeah, so I often do a lot + +00:11:36.360 --> 00:11:44.279 +of Markdown. I have got, so I've gone through and make my + +00:11:44.280 --> 00:11:49.039 +markdown look a lot like Org. So my headers are the same size + +00:11:49.040 --> 00:11:54.759 +as org. When I mark, do the triple back ticks, you know, and + +00:11:54.760 --> 00:11:59.279 +specify your language, we can now colorize that. + +00:11:59.280 --> 00:12:01.521 +So you can kind of now have it + +00:12:01.522 --> 00:12:05.679 +syntactically marked up. It would be + +00:12:05.680 --> 00:12:11.199 +interesting if we kind of expanded on Markdown so that I + +00:12:11.200 --> 00:12:14.479 +could do a C-c twice on it and run that code block. + +00:12:14.480 --> 00:12:22.119 +That's a real good idea. Maybe we should work on that. + +NOTE Corwin's aside on orgvm + +00:12:22.120 --> 00:12:28.039 +How does your management of TODOs, projects, and tasks + +00:12:28.040 --> 00:12:31.679 +interact with this literate mindset? I can't believe I'm + +00:12:31.680 --> 00:12:33.879 +going to do this, but Howard, I'm going to break right in + +00:12:33.880 --> 00:12:37.119 +there because I just can't. I need to talk about that. So this + +00:12:37.120 --> 00:12:41.799 +is I bought a domain. And really what I mean is I have this + +00:12:41.800 --> 00:12:45.599 +domain if somebody gets some work done in this area. I'm + +00:12:45.600 --> 00:12:48.839 +fascinated by this. That's mostly really actually my whole + +00:12:48.840 --> 00:12:52.599 +comment. But I just wanted to say, indeed, that is something + +00:12:52.600 --> 00:12:56.599 +maybe we should work on. Well said. I think the idea of having + +00:12:56.600 --> 00:12:59.559 +something that's full-stack baked around Emacs is pretty + +00:12:59.560 --> 00:13:03.079 +fascinating, just thinking about it as some command line + +00:13:03.080 --> 00:13:05.639 +tool that we can run to get some work done, and then there are + +00:13:05.640 --> 00:13:07.969 +documents involved, and as you know coming back + +00:13:07.970 --> 00:13:10.511 +to the kind of corporate + +00:13:10.512 --> 00:13:12.759 +sense of some of the things like there... + +00:13:12.760 --> 00:13:15.319 +that's a little dicey the same way a free software + +00:13:15.320 --> 00:13:19.038 +project raising money for itself is a little dicey. + +00:13:19.039 --> 00:13:21.720 +It might be a necessary way to get through + +00:13:21.721 --> 00:13:23.882 +certain kinds of things and like + +00:13:23.883 --> 00:13:26.559 +what the corporate side of the world brings to the table + +00:13:26.560 --> 00:13:31.989 +Here in my mind is that idea of I've got a formal process, + +00:13:31.990 --> 00:13:33.830 +like the process itself is an asset. + +00:13:33.831 --> 00:13:35.239 +If I were selling my company, + +00:13:35.240 --> 00:13:39.399 +that would be visibly of value to outside auditors that + +00:13:39.400 --> 00:13:43.257 +would help us arbitrate the sale. It's just empirical. + +00:13:43.258 --> 00:13:48.239 +Then tie that together with free software is maybe a little + +00:13:48.240 --> 00:13:53.159 +unstated ethos of doing our work in the open, and you might + +00:13:53.160 --> 00:13:58.759 +even deal with some of the ick factor. that you know that for a + +00:13:58.760 --> 00:14:05.119 +handler. Maybe so, but yeah, the downside to that is you'd + +00:14:05.120 --> 00:14:09.679 +still need to use Emacs to run through it, right? You know, + +00:14:09.680 --> 00:14:13.719 +for all those cool features, yes, it would be kind of a yet + +00:14:13.720 --> 00:14:17.519 +another killer app that we would have. So my domain name is + +00:14:17.520 --> 00:14:22.239 +orgvm, and my concept is really put org into a box, build a UI + +00:14:22.240 --> 00:14:25.119 +around it, it executes things that manipulate files that + +00:14:25.120 --> 00:14:30.239 +generate, let's say, And that's just one conceptual + +00:14:30.240 --> 00:14:34.359 +solution. But I really do think this is a super fun topic. And + +00:14:34.360 --> 00:14:37.479 +that's the space. I'm not sure my idea is that wonderful. I + +00:14:37.480 --> 00:14:42.439 +personally haven't soaked too many weekends into it. But I + +00:14:42.440 --> 00:14:45.159 +just love the way you're thinking in terms of, well, we + +00:14:45.160 --> 00:14:49.519 +should think more about that. Gosh, that's great to hear. + +NOTE Org and Markdown fragmentation + +00:14:49.520 --> 00:14:53.399 +Yeah. Yeah, I mean, just like the talk yesterday on the + +00:14:53.400 --> 00:14:57.639 +future of org, it's like, let's standardize it. Because, + +00:14:57.640 --> 00:15:03.239 +yeah, we don't want to have org fragmented like Markdown is. + +00:15:03.240 --> 00:15:06.839 +Markdown is terribly fragmented. You know, everybody's + +00:15:06.840 --> 00:15:10.199 +got different implementations. And Yeah, what I've ended + +00:15:10.200 --> 00:15:15.039 +up doing, I don't know if you've seen my blog, but I often I'm + +00:15:15.040 --> 00:15:19.119 +always just writing an org and talking to myself and writing + +00:15:19.120 --> 00:15:22.919 +questions and answers and essays come out of that. And then + +00:15:22.920 --> 00:15:26.319 +I'll put them on my web page and easy. It's easy to publish to a + +00:15:26.320 --> 00:15:30.079 +web page. Well, I do the same thing at work, but I need to have + +00:15:30.080 --> 00:15:33.319 +it marked down. I don't start Markdown though. I'm always + +00:15:33.320 --> 00:15:36.479 +starting an org because that, you know, I can really work + +00:15:36.480 --> 00:15:40.239 +through the problem space, you know, executing code blocks + +00:15:40.240 --> 00:15:44.759 +and making sure they work and all of that sort of stuff. And + +00:15:44.760 --> 00:15:47.959 +then I just export to Markdown and then go cleaned up a little + +00:15:47.960 --> 00:15:51.679 +bit if I need to. And that makes sense. But I am editing + +00:15:51.680 --> 00:15:55.999 +Markdown afterwards. So yeah, it would be nice. It would be + +00:15:56.000 --> 00:16:00.359 +nice. It's just, it's all done over here as opposed to, you + +00:16:00.360 --> 00:16:02.879 +know, Adding it over there, but yeah, let's think about + +00:16:02.880 --> 00:16:06.519 +every bit as much as as that. You know, I jumped in in the + +00:16:06.520 --> 00:16:09.959 +spirit of yes, let's think about it. You know, your, your + +00:16:09.960 --> 00:16:12.599 +comments about, let's think about the workflows that work + +00:16:12.600 --> 00:16:17.919 +for us. Wow. Does that hit home? Right? So great. Yeah. Yeah. + +NOTE Q: How does your management of "TODOs" (projects/tasks) interact with this literate mindset, any insightful things you do on that front? + +00:16:17.920 --> 00:16:25.279 +Yeah. Okay. So, uh, on to do's and that sort of thing, um. You + +00:16:25.280 --> 00:16:32.199 +know, a lot is the same as it was 10 years ago. At the beginning + +00:16:32.200 --> 00:16:33.319 +of every sprint, + +00:16:33.320 --> 00:16:38.279 +my company, we're using JIRA. + +00:16:38.280 --> 00:16:46.159 +All jokes are valid when I say that. But I just go to its web + +00:16:46.160 --> 00:16:49.639 +page. I copy all the tasks that I need to do that sprint. I + +00:16:49.640 --> 00:16:54.119 +wrote a function that takes that code and reformats it as a + +00:16:54.120 --> 00:16:58.199 +bunch of org tasks for me to do that I can just now have all my + +00:16:58.200 --> 00:17:02.799 +to-dos. And I start to work off of that from that point on. So + +00:17:02.800 --> 00:17:06.479 +it'll reference all the projects, and I do symlinks to every + +00:17:06.480 --> 00:17:12.479 +code base that I need to use. Most of the to-dos I put inside my + +00:17:12.480 --> 00:17:16.639 +code block is kind of just for me, just so I can remember it. + +00:17:16.640 --> 00:17:21.086 +Because the work that I have to do + +00:17:21.087 --> 00:17:24.119 +needs to be tracked a little more + +00:17:24.120 --> 00:17:30.629 +fine-grained, I guess. Yeah. + +NOTE Q: Do you LP also on larger projects? + +00:17:30.630 --> 00:17:33.439 +Do I use LP also on larger + +00:17:33.440 --> 00:17:37.199 +projects? More files and nested directories? Yeah, I + +00:17:37.200 --> 00:17:43.879 +haven't really done nested directories, but I can now. Now + +00:17:43.880 --> 00:17:49.839 +that I've now kind of realized that I have the feature that I + +00:17:49.840 --> 00:17:54.439 +demonstrated where I can just jump to any projects for a + +00:17:54.440 --> 00:17:59.559 +particular project, all the org files and all the headings + +00:17:59.560 --> 00:18:02.439 +show up, that works in nested directories. + +00:18:02.440 --> 00:18:10.999 +Oh, okay, yeah, somebody's typing it in. Yeah, so it's + +00:18:11.000 --> 00:18:15.359 +definitely possible. And I have now, since I recorded the + +00:18:15.360 --> 00:18:20.519 +talk, I've been busy typing in and trying to extract that out + +00:18:20.520 --> 00:18:24.479 +of my init file and make it into a package. I'm looking for a + +00:18:24.480 --> 00:18:30.239 +good name right now. I'm calling it jobs, jump to project + +00:18:30.240 --> 00:18:36.399 +sections. Anyway, but yeah, I think that's kind of a nice, + +00:18:36.400 --> 00:18:38.935 +useful feature. + +NOTE Q: Have you used Cucumber/Gherkin/BDD and do you think it has a strong overlap to what you talked about here? + +00:18:38.936 --> 00:18:41.919 +Have I used Cucumber, Gherkin, and other + +00:18:41.920 --> 00:18:44.479 +behavior-driven development? + +00:18:44.480 --> 00:18:50.719 +Have I, I mean, I do a lot of... + +00:18:50.720 --> 00:19:00.279 +more test driven. I do a lot of unit tests and I just put it + +00:19:00.280 --> 00:19:04.679 +right in my code base because if it's in my pros, I can just + +00:19:04.680 --> 00:19:07.199 +shove it in there. I've got the test right next to the + +00:19:07.200 --> 00:19:11.519 +function that I'm testing. I like that so I can kind of see it. + +00:19:11.520 --> 00:19:15.359 +I don't tangle it out to that same source file. I tangle it + +00:19:15.360 --> 00:19:19.119 +somewhere else if I tangle it at all because I don't need to. I + +00:19:19.120 --> 00:19:23.199 +can just, you know, C-c that and run it. I like that + +00:19:23.200 --> 00:19:24.879 +aspect of it. + +00:19:24.880 --> 00:19:29.319 +Yeah, just keeping things together. That's the big problem + +00:19:29.320 --> 00:19:32.479 +I have with a lot of tests is the tests are somewhere else. + +00:19:32.480 --> 00:19:35.319 +It's separate from the code. I like seeing it all together, + +00:19:35.320 --> 00:19:39.879 +but a lot depends on how extensive it is. So for a lot of the, + +00:19:39.880 --> 00:19:43.359 +you know, the tests that we end up doing where, you know, + +00:19:43.360 --> 00:19:47.759 +you've got to do a lot of mocks and a lot of startup and tear + +00:19:47.760 --> 00:19:51.839 +down, that kind of thing. Yeah, that doesn't help as much. + +00:19:51.840 --> 00:19:54.599 +And you probably have to kind of go old school on that. + +NOTE Q: What granularity are you looking for re your org files and contents, with respect to a codebase that it tangles to, or in non-coding contexts? + +00:19:54.600 --> 00:20:01.359 +What granularity I'm looking for with my org files and my + +00:20:01.360 --> 00:20:03.634 +subcontent? That's a real good question + +00:20:03.635 --> 00:20:05.255 +and really subjective. + +00:20:05.256 --> 00:20:13.159 +I change that over time. I begin by just dumping. + +00:20:13.160 --> 00:20:16.378 +I just dump everything in my head into a file + +00:20:16.379 --> 00:20:19.679 +and then I go through and start to refine it. + +00:20:19.680 --> 00:20:26.159 +My goal at one point was to have an Emacs config file that was + +00:20:26.160 --> 00:20:29.919 +really small and simple. And boy, that just doesn't happen. + +00:20:29.920 --> 00:20:35.759 +It's just too fun to add things and try new ideas. And I found + +00:20:35.760 --> 00:20:41.839 +my files were just littered with good ideas that were + +00:20:41.840 --> 00:20:47.119 +half-baked and not finished. And so it's like, oh, I need to + +00:20:47.120 --> 00:20:49.959 +extract these and put them into different files so I can keep + +00:20:49.960 --> 00:20:54.359 +it clean. And so I think it's like with any code base, you're + +00:20:54.360 --> 00:20:58.999 +just going to keep refactoring. It's an iterative process. + +00:20:59.000 --> 00:21:04.199 +So having the ability to, like with an Org file, where you can + +00:21:04.200 --> 00:21:09.159 +archive a subtree. Okay, this idea didn't pan out. Archive + +00:21:09.160 --> 00:21:13.519 +it. I can come back to it later. Being able to just kind of + +00:21:13.520 --> 00:21:20.399 +shove it somewhere else is really a nice little feature. All + +00:21:20.400 --> 00:21:25.079 +right. Not a question, just a comment. We need more of your + +00:21:25.080 --> 00:21:29.239 +insightful posts and videos. Oh, thanks. + +00:21:29.240 --> 00:21:35.519 +I appreciate it. Yes, it's been a fun journey. And I think we + +00:21:35.520 --> 00:21:38.519 +are coming up on our time, actually. So that is just an + +00:21:38.520 --> 00:21:41.919 +amazing quiz. And it helps me from manipulating, as I said, + +00:21:41.920 --> 00:21:46.959 +or as I put it earlier, like my chance as an organizer, or not + +00:21:46.960 --> 00:21:50.679 +manipulating, monopolizing my chance as an organizer to + +00:21:50.680 --> 00:21:53.439 +just get a chance to pick your brain on all kinds of things, + +00:21:53.440 --> 00:21:58.959 +which is too kind, too kind. Appreciate it. It's been fun. + +00:21:58.960 --> 00:22:04.679 +All right, I'll try answering more questions online as + +00:22:04.680 --> 00:22:07.959 +well. All right, talk to you later. And we appreciate your + +00:22:07.960 --> 00:22:10.399 +being in a huge resource that you are to the community. + +00:22:10.400 --> 00:22:14.199 +Thanks to everyone for tuning in and we'll be coming over to + +00:22:14.200 --> 00:22:18.239 +our next talk in just a moment here. And so bear with us + +00:22:18.240 --> 00:22:23.239 +through the transition as we slip into, I think it's our, is + +00:22:23.240 --> 00:22:26.919 +that our penultimate or our ultimate talk? We have one or two + +00:22:26.920 --> 00:22:30.119 +left, I'm not sure. I think we've got a couple of talks left. + +00:22:30.120 --> 00:22:34.079 +I'm back. Thank you, Howard. And we will be moving to the next + +00:22:34.080 --> 00:22:37.159 +talk in about six minutes. So if you need to grab some coffee, + +00:22:37.160 --> 00:22:42.119 +some tea, use the time wisely. And to confirm, we will have + +00:22:42.120 --> 00:22:44.319 +one, two, three more talks this afternoon. So there's still + +00:22:44.320 --> 00:22:48.160 +plenty to go around. See you in a bit, folks. diff --git a/2024/captions/emacsconf-2024-mcclim--elisp-and-mcclim--screwlisp--answers.vtt b/2024/captions/emacsconf-2024-mcclim--elisp-and-mcclim--screwlisp--answers.vtt new file mode 100644 index 00000000..812e174f --- /dev/null +++ b/2024/captions/emacsconf-2024-mcclim--elisp-and-mcclim--screwlisp--answers.vtt @@ -0,0 +1,574 @@ +WEBVTT + +NOTE I would love to see the GUI interacting with the scheduling stuff + +00:00:00.000 --> 00:00:01.999 +...volume of code I've written that. + +00:00:02.000 --> 00:00:06.319 +I will do a follow-up video with the kind of synchronized + +00:00:06.320 --> 00:00:12.519 +elisp-mode stuff because that is the point of the talk. Sorry + +00:00:12.520 --> 00:00:38.599 +for talking over you. Please continue. + +00:00:38.600 --> 00:00:41.879 +sachac is saying (car kill-ring). + +00:00:41.880 --> 00:00:57.559 +Oh, yeah, so this question, they're just asking in the + +NOTE Q: Or any other GUI stuff you've worked on in the past that you'd be comfortable showing? + +00:00:57.560 --> 00:01:01.319 +Scratchpad, is there any other GUI stuff I've worked on in + +00:01:01.320 --> 00:01:07.319 +the past? I guess my Toobnix channel, I was doing a bunch of + +00:01:07.320 --> 00:01:12.639 +that, so just Common Lisp development, homed around + +00:01:12.640 --> 00:01:16.359 +McCLIM. What is my Toobnix channel? If you find a Toobnix + +00:01:16.360 --> 00:01:21.519 +channel and it has a name like Screwtape, that'll + +00:01:21.520 --> 00:01:28.679 +presumably be that. So Toobnix is SDF.org's PeerTube. + +00:01:28.680 --> 00:01:35.719 +Nope, not that one. + +00:01:35.720 --> 00:01:41.319 +Sacha's got it here in the IRC. I think it's + +00:01:41.320 --> 00:01:47.959 +screwtape_channels/videos. Yeah. So the + +00:01:47.960 --> 00:01:52.639 +author of mastodon.el, which hopefully lots of us are using + +00:01:52.640 --> 00:01:58.079 +for our mastodoning, I used the name Screwtape as my + +00:01:58.080 --> 00:02:01.519 +username, and I think Wintermute said some kind of + +00:02:01.520 --> 00:02:06.119 +exasperated Emacs theme. You know what? Screw Lisp. Then + +00:02:06.120 --> 00:02:09.719 +Mousebot of mastodon.el rechristened me screwlisp. So + +00:02:09.720 --> 00:02:12.319 +sometimes you see my name written one way, and sometimes you + +00:02:12.320 --> 00:02:15.039 +see my name written the other way. I quite like it. A lot of + +00:02:15.040 --> 00:02:19.319 +people thought that I was quitting Emacs when I changed my + +00:02:19.320 --> 00:02:23.399 +name to be mainly screwlisp. I love it. That's a great story. + +00:02:23.400 --> 00:02:27.319 +Thank you. It's so great to have a name from somebody else. I + +00:02:27.320 --> 00:02:29.999 +was just thrilled. So thank you, mousebot. Everyone use + +00:02:30.000 --> 00:02:35.199 +mousebot's mode. Welcome to Green Guest. I'm with you + +00:02:35.200 --> 00:02:38.399 +there. All my kids want to choose their own names, and I'm + +00:02:38.400 --> 00:02:41.359 +just like, more power to you. I'm very glad that my parents + +00:02:41.360 --> 00:02:45.479 +picked mine for me, and that's one thing I never had to think + +00:02:45.480 --> 00:02:50.439 +about. All right, so do we have to cut short so I can go back to + +00:02:50.440 --> 00:02:55.839 +watching MPV? of the other stuff. We don't have to, but you + +00:02:55.840 --> 00:02:58.999 +are not obligated to sit here one moment more answering our + +00:02:59.000 --> 00:03:02.039 +questions than, you know, but of course, you know, we've + +00:03:02.040 --> 00:03:07.399 +talked a little before, but I, so I have a pile of questions. + +NOTE Lispy Gopher Show + +00:03:07.400 --> 00:03:11.159 +You promised to come on the Lispy Gopher show. That's right. + +00:03:11.160 --> 00:03:13.239 +I have so much to say. I could, I could, I could come right on + +00:03:13.240 --> 00:03:16.039 +your show and just talk to you there, but I'm just curious. + +00:03:16.040 --> 00:03:18.559 +Talk to us a little bit about that. Tell us more about the + +00:03:18.560 --> 00:03:23.799 +program. Oh, the Lispy Gopher climate. What do we do? So it's + +00:03:23.800 --> 00:03:29.039 +hosted by the Superdimensional Fortress, SDF.org, who are + +00:03:29.040 --> 00:03:32.919 +a public access Unix mainly. They do their own little radio + +00:03:32.920 --> 00:03:38.359 +thing as well. And so I guess for a few years now, I do a weekly + +00:03:38.360 --> 00:03:45.559 +show every zero hundred hours UTC. We always start off with + +00:03:45.560 --> 00:03:49.119 +kind of climate crisis topics, because that is a climate + +00:03:49.120 --> 00:03:54.439 +crisis topic. But there's a sort of joy in that, because Kent + +00:03:54.440 --> 00:03:58.279 +Pitman, who Kent Pitman you're familiar with from the + +00:03:58.280 --> 00:04:03.599 +Pit Manual and so forth, writes a kind of climate crisis + +00:04:03.600 --> 00:04:07.599 +haiku, which we kind of lead out with, and we kind of go into + +00:04:07.600 --> 00:04:10.239 +the discussions there. Then obviously the show has- It's a + +00:04:10.240 --> 00:04:16.959 +highlight, not gonna lie. Yeah, yeah, I love it. I try and do + +00:04:16.960 --> 00:04:19.479 +these dramatic readings, but it's often stumble over. + +00:04:19.480 --> 00:04:23.719 +Actually, when Sacha was on, there was an auxiliary poem + +00:04:23.720 --> 00:04:27.959 +that happened, which was pretty interesting, too. What was + +00:04:27.960 --> 00:04:31.319 +I going to say? Then, I mean, the way we got named the Lispy + +00:04:31.320 --> 00:04:33.839 +Gopher Climate was because, broadly speaking, I like to + +00:04:33.840 --> 00:04:37.959 +talk about kind of lisp, and most of my writing for a long time + +00:04:37.960 --> 00:04:41.919 +was on the Gopher. Though I accidentally locked myself out + +00:04:41.920 --> 00:04:45.679 +of the Gopher recently, so there hasn't been an update there + +00:04:45.680 --> 00:04:52.159 +for a while. I'm kind of around the IRCs and Mastodon quite a + +00:04:52.160 --> 00:04:56.759 +bit now. Lisp, I like to use the term Lisp inclusively, + +00:04:56.760 --> 00:04:59.719 +basically. Obviously this talk, I was making the point that + +00:04:59.720 --> 00:05:05.519 +I just could go through a 1978 paper written in, and so pre-D + +00:05:05.520 --> 00:05:10.279 +machine inter-LISP, right? And it basically just worked in + +00:05:10.280 --> 00:05:13.439 +modern Emacs LISP. Somebody was pointing out to me, who + +00:05:13.440 --> 00:05:20.119 +pointed out where I was like, I don't know what PUT is in, + +00:05:20.120 --> 00:05:23.039 +in Emacs Lisp, and somebody was saying definitely there's + +00:05:23.040 --> 00:05:28.319 +put in Emacs Lisp. So I'm going to come back to the recording + +00:05:28.320 --> 00:05:31.199 +of this talk, and I'm going to just pinpoint this moment the + +00:05:31.200 --> 00:05:34.519 +next time somebody says, we need to modernize Lisp. I'm + +00:05:34.520 --> 00:05:37.799 +going to say, no, no, no, this is modern Emacs Lisp. You see, + +00:05:37.800 --> 00:05:42.359 +here's people talking about, yeah, I'm just tripping over, + +00:05:42.360 --> 00:05:45.519 +not tripping over, I'm amused by your phrase there, but + +00:05:45.520 --> 00:05:48.599 +that's exactly how I see it too. And I take your point utterly + +00:05:48.600 --> 00:05:53.359 +that, you know, this tradition of Lisp of carrying forward + +00:05:53.360 --> 00:05:57.799 +ideas. And, you know, we, you know, especially in Emacs, it + +00:05:57.800 --> 00:06:00.799 +really is like a brain trust, right? Buckets of knowledge of + +00:06:00.800 --> 00:06:04.399 +how to get some sort of work done, or, you know, how to work + +00:06:04.400 --> 00:06:08.919 +with some kind of code or some kind of data. Yeah, but I had a + +00:06:08.920 --> 00:06:12.079 +kind of, interesting experience with some great friends of + +00:06:12.080 --> 00:06:15.799 +mine, whom I love dearly. Vidak, if you're watching this, + +00:06:15.800 --> 00:06:21.559 +I'm gossiping about you people over in Australia there. + +NOTE Lisp already did it + +00:06:21.560 --> 00:06:25.439 +Where people come to you with really exciting ideas that + +00:06:25.440 --> 00:06:30.359 +seem to be very cutting edge and like, you know, very much the + +00:06:30.360 --> 00:06:33.559 +current talk of the day, like you can hear in other + +00:06:33.560 --> 00:06:36.119 +programming languages, and they're telling you how they + +00:06:36.120 --> 00:06:39.639 +think you might be able to do this in Lisp. And you have to say, + +00:06:39.640 --> 00:06:43.719 +well, you know, if we go back to the late 70s, where the Lisp + +00:06:43.720 --> 00:06:47.959 +community really kind of pioneered this topic already. + +00:06:47.960 --> 00:06:51.399 +Here's how we did it in the late 70s. And there's actually + +00:06:51.400 --> 00:06:56.439 +quite a kind of awkward, just kind of disjunction there. I + +00:06:56.440 --> 00:06:59.079 +mean, that's the thing, right? Where use of Emacs in + +00:06:59.080 --> 00:07:03.759 +particular use of Lisp in general will unravel somebody's + +00:07:03.760 --> 00:07:06.319 +whole big bag of wind that they've built up around why + +00:07:06.320 --> 00:07:10.439 +something has to be rebuilt and well right but that's just a + +00:07:10.440 --> 00:07:13.359 +function you know it's data so we'll probably just think + +00:07:13.360 --> 00:07:16.679 +about that as I don't know sitting in a variable. + +00:07:16.680 --> 00:07:21.359 +Oh, so that whole problem, like the elegance of a solution + +00:07:21.360 --> 00:07:25.959 +can entirely fall away once you fall back to an earlier way of + +00:07:25.960 --> 00:07:29.479 +thinking about it. And then, you know, look at the pieces + +00:07:29.480 --> 00:07:32.039 +you've carried forward the idea of the declarative + +00:07:32.040 --> 00:07:37.119 +language, right? Declaring user experience. Yeah. Once + +00:07:37.120 --> 00:07:41.999 +again, tangentially to, um, to the actual talk we've just + +00:07:42.000 --> 00:07:47.479 +watched, which I will try and follow up on as well. But one + +00:07:47.480 --> 00:07:51.919 +example was After watching me use the Common Lisp loop + +00:07:51.920 --> 00:07:55.999 +facility so much, Kent pointed out to me, hey, you know, why + +00:07:56.000 --> 00:08:01.719 +don't you try using Richard Waters' series iteration + +00:08:01.720 --> 00:08:05.799 +stuff, which was kind of lazy evaluation of series that + +00:08:05.800 --> 00:08:09.119 +Waters did. And so after criticizing Haskell for a long + +00:08:09.120 --> 00:08:12.879 +time, me kind of saying, hey, you know, I don't think this + +00:08:12.880 --> 00:08:16.519 +lazy evaluation is important. then Kent pointed out to me + +00:08:16.520 --> 00:08:22.399 +that, for example, the series, like what is it? AIM 1082 or + +00:08:22.400 --> 00:08:28.799 +something published in 1989 was Lazy Evaluation in LISP + +00:08:28.800 --> 00:08:33.639 +with series. And so I thought, well, once I realized that + +00:08:33.640 --> 00:08:37.879 +this was part of kind of almost classic LISP history to have + +00:08:37.880 --> 00:08:43.679 +lazy evaluation, I adopted series, I kind of had to rethink + +00:08:43.680 --> 00:08:47.799 +my LISP worldview to realize it did already include lazy + +00:08:47.800 --> 00:08:51.679 +evaluation, which I attributed to the late 80s. And then + +00:08:51.680 --> 00:08:55.239 +when I actually read a little bit further, lazy evaluation, + +00:08:55.240 --> 00:08:59.159 +depending on your research group, has been, was kind of + +00:08:59.160 --> 00:09:02.719 +established in the late 70s by Waters again, actually. + +00:09:02.720 --> 00:09:05.719 +Sorry for the anecdote, just kind of the interesting + +00:09:05.720 --> 00:09:11.159 +medley. Not at all. + +00:09:11.160 --> 00:09:17.919 +Yeah. + +00:09:17.920 --> 00:09:25.639 +Ellis over in the IRC has come up with a good slime about + +00:09:25.640 --> 00:09:33.339 +async. Oh, I see. So yeah, + +00:09:33.340 --> 00:09:38.199 +I guess that would work. I have to try that. OK, so you're just + +00:09:38.200 --> 00:09:42.679 +getting me reading this. They have had a stab at resolving + +00:09:42.680 --> 00:09:49.279 +our asynchronous calls thing more elegantly than me. Left + +00:09:49.280 --> 00:09:53.879 +as an exercise to the listener. It's one of the big virtues of + +00:09:53.880 --> 00:09:56.799 +something like a convention. It'll bring us together with + +00:09:56.800 --> 00:10:01.079 +other people that can kind of see past the boats in our eyes. + +00:10:01.080 --> 00:10:06.239 +Oh yeah, that's easy for me. Yeah, definitely. Hearing + +00:10:06.240 --> 00:10:10.279 +somebody else's kind of thought process from you and from + +00:10:10.280 --> 00:10:16.639 +just the past speaker who was Robin, I think, because this + +00:10:16.640 --> 00:10:19.519 +was in the morning for me, so I just kind of got up and caught + +00:10:19.520 --> 00:10:25.919 +some of Robin. Yeah, it's so great, kind of vicariously + +00:10:25.920 --> 00:10:30.559 +experiencing somebody else's Emacs usage and how it kind of + +00:10:30.560 --> 00:10:34.799 +subtly backs onto their own development flows. Yeah, so I + +00:10:34.800 --> 00:10:37.319 +really appreciate this talk. I'm constantly cribbing from + +00:10:37.320 --> 00:10:40.519 +everyone I meet. And yeah, this talk has been eye-popping, + +00:10:40.520 --> 00:10:43.599 +just watching you casually navigate Emacs, actually. + +NOTE IELM + +00:10:43.600 --> 00:10:51.519 +Yeah, it's cool. Yeah, I enjoyed discovering IELM mode. + +00:10:51.520 --> 00:10:54.959 +That was going to be my other question for people. Are there + +00:10:54.960 --> 00:10:59.439 +any IELM Power users around? I could really go for an + +00:10:59.440 --> 00:11:05.679 +EmacsConf talk on IELM mode. Aha, yes. Very good. Note + +00:11:05.680 --> 00:11:12.199 +taken. Yeah. So, just thoughts for next year? Oh, well, I + +00:11:12.200 --> 00:11:15.999 +kind of want to get back onto the MPV, but thank you so much for + +00:11:16.000 --> 00:11:22.039 +this. You are cmak in the IRC, right? I am Corwin, same as you. + +00:11:22.040 --> 00:11:26.159 +So you're Corwin. There's also cmak, and I guess there are a + +00:11:26.160 --> 00:11:28.719 +few other people. Sorry that I'm tripping over the + +00:11:28.720 --> 00:11:31.359 +different people here. But you're going to come on the Lispy + +00:11:31.360 --> 00:11:35.719 +Gopher Climate later. Sure, I'm happy to. That sounds + +00:11:35.720 --> 00:11:38.479 +like fun. I always got a million things to talk about me or an + +00:11:38.480 --> 00:11:42.399 +opinion on everything. But of course, my favorite thing to + +00:11:42.400 --> 00:11:48.359 +talk about is just the huge thanks that, you know, sharing + +00:11:48.360 --> 00:11:53.639 +that, the generosity or the, you know, my appreciation for + +00:11:53.640 --> 00:11:57.159 +you and all the other members of the Emacs community that + +00:11:57.160 --> 00:12:00.519 +create talks like this and make the conference and the rest + +00:12:00.520 --> 00:12:04.839 +of the community so rich. Well, yeah, and thank you for your + +00:12:04.840 --> 00:12:09.759 +work. Sacha is just saying over in Lambda that when I say I + +00:12:09.760 --> 00:12:13.039 +want someone to give the talk, this means I'm volunteering + +00:12:13.040 --> 00:12:17.079 +to give the IELM talk. That's what I wrote down. Oh, yeah. I've + +00:12:17.080 --> 00:12:19.479 +been working for Sacha. I mean, helping Sacha with this + +00:12:19.480 --> 00:12:23.919 +conference for years. I know. No, I'm kidding. That would be + +00:12:23.920 --> 00:12:28.559 +cool. I will absolutely go to your ielm talk. I make a lot of use + +00:12:28.560 --> 00:12:32.879 +of that and could do more. Yeah, we're meant to suddenly + +NOTE Q: Are we going to get a McCLIM LambdaMOO client? + +00:12:32.880 --> 00:12:36.639 +stop. But a guest over in Lambda also said, are we going to get + +00:12:36.640 --> 00:12:41.239 +a McCLIM LambdaMOO client? And I actually had all my kind of + +00:12:41.240 --> 00:12:44.519 +Moo stuff I'd written in Common Lisp, which I was thinking of + +00:12:44.520 --> 00:12:47.639 +just kind of jettisoning. But you're right, I should make + +00:12:47.640 --> 00:12:51.479 +that into a client for Common Lisp. Anyway, I'm going to hang + +00:12:51.480 --> 00:12:55.839 +up so I can keep watching the conference sounds good so we'll + +00:12:55.840 --> 00:12:58.399 +just cut away with the stream throw some music and a + +00:12:58.400 --> 00:13:02.799 +countdown uh back on give us just a second to make that on bbb + +00:13:02.800 --> 00:13:05.359 +and then i'll give you the big thumbs up thank you thank you + +00:13:05.360 --> 00:13:08.359 +recording here we'll get it all posted up uh right next to + +00:13:08.360 --> 00:13:09.839 +your awesome pre-recorded talk + +00:13:09.840 --> 00:13:17.159 +thanks again like it's been fun chatting and uh Yeah, + +00:13:17.160 --> 00:13:20.799 +definitely seeing you around in the conference channel off + +00:13:20.800 --> 00:13:23.879 +off season. So to speak, you're like, you're totally + +00:13:23.880 --> 00:13:26.679 +welcome to use our chat like it to the extent you need to IRC + +00:13:26.680 --> 00:13:29.039 +channel that's been working on great for me. It's fun to fun + +00:13:29.040 --> 00:13:30.639 +to see it. + +00:13:30.640 --> 00:13:39.319 +All right, I'm gonna hang up this thing. All right. Happy day + +00:13:39.320 --> 00:13:44.119 +flowy. Sorry, I mean, screwlisp. Oh my gosh, I have + +00:13:44.120 --> 00:13:54.360 +conference brain. Bye bye. All right, later, later. diff --git a/2024/captions/emacsconf-2024-org-update--the-future-of-org--ihor-radchenko--answers.vtt b/2024/captions/emacsconf-2024-org-update--the-future-of-org--ihor-radchenko--answers.vtt new file mode 100644 index 00000000..a32b0da2 --- /dev/null +++ b/2024/captions/emacsconf-2024-org-update--the-future-of-org--ihor-radchenko--answers.vtt @@ -0,0 +1,1294 @@ +WEBVTT + +00:00:00.000 --> 00:00:05.039 +And I believe we are live. Okay. Hi again, Ihor. How are you + +00:00:05.040 --> 00:00:09.359 +doing? Ready to answer questions, right? Yes. Ready to + +00:00:09.360 --> 00:00:13.039 +answer questions and all this. I mean, ready for + +00:00:13.040 --> 00:00:14.999 +everything. It's not just a question, it's the maintenance + +00:00:15.000 --> 00:00:21.679 +that is now lying in front of you. So... Oh, that's not the end + +00:00:21.680 --> 00:00:25.159 +of the day. I mean, it's a rare thing indeed, because you + +00:00:25.160 --> 00:00:27.439 +might not be able to see it on BBB. I'm checking in, but we've + +00:00:27.440 --> 00:00:30.599 +got Ihor, obviously, but we also have Bastien and also + +00:00:30.600 --> 00:00:34.199 +Carsten in the room. So, we have three maintainers of Org + +00:00:34.200 --> 00:00:36.119 +Mode right there in the room to answer all your questions. + +00:00:36.120 --> 00:00:40.759 +So, it's a rare occasion that I invite all of you to seize the + +00:00:40.760 --> 00:00:44.679 +day on this. Ihor, do you have anything maybe to say before we + +00:00:44.680 --> 00:00:49.599 +start moving into the questions? Well, I hope that I said + +00:00:49.600 --> 00:00:51.759 +everything I wanted. Hello, Bastien. during the + +00:00:51.760 --> 00:00:55.519 +presentation. Well, actually, I can say a lot more, like + +00:00:55.520 --> 00:01:01.439 +infinitely, because when I first recorded it, it was like + +00:01:01.440 --> 00:01:05.999 +one hour. So yeah. I mean, you did a, I'll just let you know, + +00:01:06.000 --> 00:01:08.359 +you did a fine job condensing everything in just 40 minutes. + +00:01:08.360 --> 00:01:14.079 +So congratulations on this. Yeah, it's, yeah, usually one + +00:01:14.080 --> 00:01:18.039 +minute per slide is the best way. Otherwise, it's something + +00:01:18.040 --> 00:01:22.319 +that's wrong with this presentation. Right, so just moving + +00:01:22.320 --> 00:01:25.519 +into the question, and by the way we've got 20 minutes, we + +00:01:25.520 --> 00:01:27.799 +might be able to chat a little more if Bastien wants to say + +00:01:27.800 --> 00:01:29.919 +something as well and Carsten, you know, feel free to + +00:01:29.920 --> 00:01:33.119 +intervene at any point during the questions if you've got + +00:01:33.120 --> 00:01:35.279 +anything to contribute or our voice will just show the + +00:01:35.280 --> 00:01:37.879 +breeze later on. So the first question is relating to + +00:01:37.880 --> 00:01:41.479 +something you said about 10 minutes 34 that might speak more + +00:01:41.480 --> 00:01:42.685 +to you than to me. + +NOTE Q: Is the track-changes item about the org-element parser? + +00:01:42.686 --> 00:01:45.159 +Is the track changes item about the org + +00:01:45.160 --> 00:01:51.519 +element parser Yes, the track changes is a new library that + +00:01:51.520 --> 00:01:58.959 +helps to receive changes in buffers incrementally. So like + +00:01:58.960 --> 00:02:03.079 +you can, it has API where you can request what changes + +00:02:03.080 --> 00:02:07.999 +happened in buffer since last request, chunk by chunk. And + +00:02:08.000 --> 00:02:14.119 +in org mode, in org element parser, we do pretty much the same + +00:02:14.120 --> 00:02:19.879 +thing, but using timers. So this track changes library + +00:02:19.880 --> 00:02:25.159 +should improve things, first, because it's a bit faster, + +00:02:25.160 --> 00:02:29.279 +because we don't need to conjure every single change, and + +00:02:29.280 --> 00:02:32.119 +track changes can agglomerate changes into chunks much + +00:02:32.120 --> 00:02:36.039 +more efficiently. And second, it's a built-in library, so + +00:02:36.040 --> 00:02:40.439 +it's a good idea to use built-in library when there is such an + +00:02:40.440 --> 00:02:45.879 +option, instead of running out our own implementation. + +00:02:45.880 --> 00:02:49.399 +Definitely. Moving on to the second question, although I'm + +00:02:49.400 --> 00:02:52.664 +not sure it refers that much to what you can do. + +NOTE Q: Could you please keep IRC alive? I prefer it to Matrix + +00:02:52.665 --> 00:02:57.759 +Could you please keep IRC alive? And I prefer it to Matrix. I mean, + +00:02:57.760 --> 00:03:03.239 +you did talk about IRC, right? But did we talk about phasing + +00:03:03.240 --> 00:03:08.799 +it out? So I try to be live on IRC, but I use mobile client for + +00:03:08.800 --> 00:03:12.999 +IRC to keep connected. So I usually connected, I usually see + +00:03:13.000 --> 00:03:15.519 +messages, except certain times when I don't have mobile + +00:03:15.520 --> 00:03:19.239 +internet. Right. Okay. That's why many people will tell + +00:03:19.240 --> 00:03:23.399 +you, you need a bouncer and all this, but the IRC crowd is very + +00:03:23.400 --> 00:03:33.679 +loud. I just don't know a good bouncer. I don't have a good + +00:03:33.680 --> 00:03:36.399 +setup for a bouncer. Okay. + +00:03:36.400 --> 00:03:41.239 +Personally, I use WeChat usually to stay connected to + +00:03:41.240 --> 00:03:44.119 +email. It's obviously a client for IRC, but it also allows + +00:03:44.120 --> 00:03:47.959 +you to, you know, you can keep it as a bouncer, but it's not in + +00:03:47.960 --> 00:03:54.159 +Emacs. It is. I don't have a computer that is running 24 + +00:03:54.160 --> 00:03:56.839 +hours, so. I mean, that's the thing. I do have a server to run + +00:03:56.840 --> 00:04:02.239 +it off. All right, moving on to the third question. That is + +00:04:02.240 --> 00:04:06.559 +what is running 24 hours. Right. Okay. All right. Moving on + +00:04:06.560 --> 00:04:07.987 +to the third question. + +NOTE Q: Is there any plan for adding support for other modalities of notes like handwritten, audio, etc.? + +00:04:07.988 --> 00:04:09.519 +Is there any plan for adding support + +00:04:09.520 --> 00:04:11.959 +for other modalities of note-like, handwritten, audio, + +00:04:11.960 --> 00:04:14.919 +and et cetera? Would that be interesting to the community? + +00:04:14.920 --> 00:04:20.319 +It will definitely be useful for me. I didn't. Okay. So this + +00:04:20.320 --> 00:04:25.399 +is not the idea I hear frequently. So there's no plan for such + +00:04:25.400 --> 00:04:29.959 +thing. Modalities of notes like handwritten audio. I think + +00:04:29.960 --> 00:04:34.519 +John Kitchin did some handwritten note. + +00:04:34.520 --> 00:04:46.119 +John Kitchin. Yeah. And for audio, I think as well. I. So + +00:04:46.120 --> 00:04:48.999 +basically you can use attachments, you can use images to + +00:04:49.000 --> 00:04:54.279 +paste you. I think John Kitchin even use it to automatically + +00:04:54.280 --> 00:04:58.519 +recognize notes. + +00:04:58.520 --> 00:05:05.359 +I think the previous speaker was talking about a whisper to + +00:05:05.360 --> 00:05:10.399 +recognize voice. Right. + +00:05:10.400 --> 00:05:13.959 +Otherwise there is no special workflow and I'm not even sure + +00:05:13.960 --> 00:05:16.919 +what we can do to support this workflow specifically. + +00:05:16.920 --> 00:05:22.759 +Yeah, it definitely feels like Org Mode is a good format for + +00:05:22.760 --> 00:05:25.719 +textual stuff, and a lot of things are textual. I mean, + +00:05:25.720 --> 00:05:29.679 +that's the whole philosophy behind Emacs. But when it comes + +00:05:29.680 --> 00:05:34.439 +to voice, it feels like it's... I think the person asking the + +00:05:34.440 --> 00:05:36.799 +question probably needs to specify what they mean by voice. + +00:05:36.800 --> 00:05:40.279 +Is it just raw note-taking, as Blaine mentioned in a + +00:05:40.280 --> 00:05:43.199 +previous talk, or is it something else? Feel free to add up to + +00:05:43.200 --> 00:05:46.759 +the question and we'll return to it later on. + +00:05:46.760 --> 00:05:51.919 +I think this is kind of related to drag and drop. I think you + +00:05:51.920 --> 00:05:57.279 +would like to be able to have an audio file and drop it in and + +00:05:57.280 --> 00:06:00.879 +have it translated to text. I think that would be an + +00:06:00.880 --> 00:06:03.959 +interesting API to do this, right? So that you can integrate + +00:06:03.960 --> 00:06:07.599 +it into something like drag and drop. I think I'm going to + +00:06:07.600 --> 00:06:12.079 +talk with supporters in since overnight. So we have, I + +00:06:12.080 --> 00:06:14.959 +believe what constant is alluring to is the fact that not + +00:06:14.960 --> 00:06:17.679 +just pictures but imagine if you were bringing in an audio + +00:06:17.680 --> 00:06:20.399 +file maybe you could, I mean I'm not sure it would work with + +00:06:20.400 --> 00:06:24.279 +whisper but. transcribing it in a way and inserting it as + +00:06:24.280 --> 00:06:27.079 +text. Although I'm not sure how we would be able to do this, + +00:06:27.080 --> 00:06:30.159 +but it's an interesting idea though. It can work if you write + +00:06:30.160 --> 00:06:35.359 +some kind of automatic speech recognition. It's not really + +00:06:35.360 --> 00:06:39.479 +a job for work. If you have some library that can transform + +00:06:39.480 --> 00:06:43.959 +audio to text or transform image to text in Elixir, then we + +00:06:43.960 --> 00:06:47.599 +can happily use that library. Definitely, but I can tell you + +00:06:47.600 --> 00:06:50.119 +that Whisper is not something that works very quickly. We do + +00:06:50.120 --> 00:06:53.479 +use Whisper AI to transcribe some of the talks that we + +00:06:53.480 --> 00:06:56.879 +broadcast during EmacsConf, and I can tell you it takes a + +00:06:56.880 --> 00:06:59.359 +fair while. If you have a video that lasts one minute, it's + +00:06:59.360 --> 00:07:03.439 +definitely going to take more than one minute to try to + +00:07:03.440 --> 00:07:09.239 +transcribe the video. We had to wait for a few years until it + +00:07:09.240 --> 00:07:12.679 +passed. Probably, but it's good to have the ID now so + +00:07:12.680 --> 00:07:17.479 +that we are ready eventually to do this. There is the new + +00:07:17.480 --> 00:07:23.319 +asynchronous IP. It's called org-pending. It's work in + +00:07:23.320 --> 00:07:29.599 +progress. And that basically allows to defer inserting + +00:07:29.600 --> 00:07:34.199 +text into our buffers until later. And while it's being + +00:07:34.200 --> 00:07:37.719 +worked on, it will basically highlight the place where it + +00:07:37.720 --> 00:07:43.159 +will be inserted. And you can click on it, see the progress, + +00:07:43.160 --> 00:07:49.519 +and stuff like that. So this is for Babylon, but I imagine for + +00:07:49.520 --> 00:07:56.159 +things like voice recognition, it can also work. + +00:07:56.160 --> 00:07:59.799 +All right, what I suggest we do, we're going to fill the two + +00:07:59.800 --> 00:08:02.279 +questions that we have now, and then it'd be nice if we could + +00:08:02.280 --> 00:08:05.399 +hear a word from Bastien and from Carsten as well, because + +00:08:05.400 --> 00:08:08.719 +it's rare to have all of you three in a room, and it would be + +00:08:08.720 --> 00:08:11.439 +nice maybe to chat a little bit about this. So quickly, with + +NOTE Q: WRT IETF standardization, have you looked at Karl Voit's OrgDown? + +00:08:11.440 --> 00:08:14.199 +the last two questions, with regards to IETF + +00:08:14.200 --> 00:08:17.039 +standardization, have you looked at Karl Voit's Orgdown? + +00:08:17.040 --> 00:08:24.919 +So, of course, there was a discussion on the mailing list, + +00:08:24.920 --> 00:08:28.319 +and there was a lot of pushback to this idea, especially to + +00:08:28.320 --> 00:08:33.399 +simplify the syntax. So, in short, the conclusion from + +00:08:33.400 --> 00:08:37.799 +there is we want the full syntax, we don't want to have things + +00:08:37.800 --> 00:08:43.079 +like different versus Org mode. But for the syntax, we may + +00:08:43.080 --> 00:08:49.279 +specify different like coverage. So for example, it's a + +00:08:49.280 --> 00:08:53.119 +minimal, it has a minimal support so people can, there's + +00:08:53.120 --> 00:08:59.079 +some parsers or apps can support just whatever curl calls + +00:08:59.080 --> 00:09:04.239 +fork down like level zero or level one or whatever. But the + +00:09:04.240 --> 00:09:10.079 +key point is, when it goes to IETF, we want to have the full + +00:09:10.080 --> 00:09:13.119 +syntax. We don't want to split it into pieces. + +00:09:13.120 --> 00:09:18.959 +Makes a lot of sense. All right. And the last question we have + +NOTE Q: About a year ago we discussed switching GNU documentation from texinfo to org. Do you still consider this? + +00:09:18.960 --> 00:09:22.359 +for now. About a year ago, we discussed switching new + +00:09:22.360 --> 00:09:26.239 +documentation from texinfo to org. Do you still consider + +00:09:26.240 --> 00:09:30.879 +this? definitely contributed to some of the ideas about + +00:09:30.880 --> 00:09:34.479 +syntax. For example, the inline special blocks, I think + +00:09:34.480 --> 00:09:41.639 +about them with this in mind, so that, so basically, one + +00:09:41.640 --> 00:09:45.999 +clarity, we don't want to complicate our syntax, we don't + +00:09:46.000 --> 00:09:50.319 +want to have special built-in support for variable, or I + +00:09:50.320 --> 00:09:54.319 +don't know, function name, or all this kind of specific + +00:09:54.320 --> 00:10:00.959 +markup. But instead, the idea is to have some generic custom + +00:10:00.960 --> 00:10:06.479 +syntax. And then when it goes to software manuals, we want + +00:10:06.480 --> 00:10:09.759 +some like optional library that will provide certain + +00:10:09.760 --> 00:10:12.439 +syntax extensions, like inline special block for + +00:10:12.440 --> 00:10:15.479 +variables, inline special block for acronym and stuff like + +00:10:15.480 --> 00:10:20.999 +that. Then people who want to use Org mode for manuals should + +00:10:21.000 --> 00:10:26.119 +be able to use that new markup to achieve what they want. + +00:10:26.120 --> 00:10:34.359 +That's a distant idea. But the key point is we want to keep org + +00:10:34.360 --> 00:10:39.039 +mode as generic syntax. We don't want to specialize it for + +00:10:39.040 --> 00:10:43.799 +software specifically. But generic in the sense that it can + +00:10:43.800 --> 00:10:44.759 +be used for software as well. + +00:10:44.760 --> 00:10:50.959 +All right, well thank you so much for your answer here and + +00:10:50.960 --> 00:10:56.399 +that was very enlightening but I'd first like to give the mic + +00:10:56.400 --> 00:11:00.359 +to Bastien who might need to leave shortly and I just want to + +00:11:00.360 --> 00:11:03.559 +make sure that you get to chat a little bit Bastien because + +00:11:03.560 --> 00:11:06.199 +it's a big thing we've had you as a maintainer for however + +00:11:06.200 --> 00:11:13.199 +long now? Well, officially, it was 14 years. But obviously, + +00:11:13.200 --> 00:11:17.999 +EHO has been doing much of the groundwork as a de facto + +00:11:18.000 --> 00:11:20.239 +maintainer for several years now, I believe for three or + +00:11:20.240 --> 00:11:28.679 +four years. And before Before IHO, there was Nicolas Goaziou, + +00:11:28.680 --> 00:11:33.679 +who's doing a lot of work. Also Kyle Meyer, who is still + +00:11:33.680 --> 00:11:40.599 +active, backporting Emacs changes. So + +00:11:40.600 --> 00:11:46.039 +it's a relief that we can do things properly, that I didn't + +00:11:46.040 --> 00:11:51.439 +give up before someone could really step up. I'm glad we're + +00:11:51.440 --> 00:11:57.679 +doing this. And I'm glad there was so much help during the + +00:11:57.680 --> 00:12:01.959 +time when I was not available enough. Well, thank you, + +00:12:01.960 --> 00:12:05.039 +Bastien. I think on behalf of the community, I think I'd like + +00:12:05.040 --> 00:12:07.719 +to extend a big thank you for all the work you've done + +00:12:07.720 --> 00:12:12.279 +throughout those 14 years. And if we pull the rope just a + +00:12:12.280 --> 00:12:15.719 +little more, before those 14 years, we had someone else + +00:12:15.720 --> 00:12:18.199 +maintaining Org Mode, well, not actually just maintaining + +00:12:18.200 --> 00:12:20.879 +Org Mode, but also inventing it. Carsten, how are you doing? + +00:12:20.880 --> 00:12:26.799 +I am. I'm doing fine. A really great opportunity to be here. + +NOTE Community + +00:12:26.800 --> 00:12:31.279 +First, I would like to start by indeed thanking Bastien + +00:12:31.280 --> 00:12:34.839 +because, I mean, he was not only maintainer after I stopped, + +00:12:34.840 --> 00:12:37.839 +but already during the time I was there, he was one of the key + +00:12:37.840 --> 00:12:40.559 +contributors who helped the project along for quite a bit. + +00:12:40.560 --> 00:12:44.759 +So it's an incredible investment of time and energy that + +00:12:44.760 --> 00:12:48.399 +Basquiat has shown, which is really fantastic. And now I see + +00:12:48.400 --> 00:12:52.479 +Ihor taking over with, as far as I can see, deep knowledge and + +00:12:52.480 --> 00:12:56.199 +all the right ideas about philosophy. So I'm really + +00:12:56.200 --> 00:13:00.039 +impressed. For me, this is really totally amazing because I + +00:13:00.040 --> 00:13:04.719 +started hacking this more than 20 years ago. And to just see + +00:13:04.720 --> 00:13:07.679 +that there's a community that has sustained itself with the + +00:13:07.680 --> 00:13:11.439 +help of new maintainers for such a long time makes me + +00:13:11.440 --> 00:13:13.999 +extremely grateful. So thank you very much to all of you. + +00:13:14.000 --> 00:13:20.679 +Okay, well, amazing. I mean, I'm a little flustered, I must + +00:13:20.680 --> 00:13:23.559 +admit, because I'm seeing three players of the community in + +00:13:23.560 --> 00:13:27.639 +a way that have kept me busy with very fun stuff to do with Org + +00:13:27.640 --> 00:13:30.999 +Mode, and it's really amazing to see three giants of the + +00:13:31.000 --> 00:13:34.239 +community being able to maintain Org Mode for so long and + +00:13:34.240 --> 00:13:38.199 +contribute so much to it. So, again, thanks to all of you + +00:13:38.200 --> 00:13:40.981 +three. I must also admit that it's really amazing for me + +00:13:40.982 --> 00:13:45.442 +that all of you three stress the importance of the community + +00:13:45.440 --> 00:13:48.479 +a whole lot, and I know that Bastien, you've talked about + +00:13:48.480 --> 00:13:51.359 +maintaining software last year at Emacs Confs, and even + +00:13:51.360 --> 00:13:55.519 +today, during the one-minute little chat that you did in + +00:13:55.520 --> 00:13:59.279 +Ihor's chat, you stressed the importance of maintenance and to + +00:13:59.280 --> 00:14:06.559 +be future-oriented about it. I'm kind of wondering, why do + +00:14:06.560 --> 00:14:12.679 +you think community is so important to Org Mode in general? + +00:14:12.680 --> 00:14:14.679 +Like, obviously we've talked about maintainers and we've + +00:14:14.680 --> 00:14:16.879 +talked about volunteers, but don't you think there's + +00:14:16.880 --> 00:14:19.159 +something more about community in general, about Org Mode + +00:14:19.160 --> 00:14:20.950 +and the fact that we are all taking notes + +00:14:20.951 --> 00:14:34.799 +and doing so much with it? Yeah, are you asking me? + +00:14:34.800 --> 00:14:40.640 +I remember Carsten made his point during the Google talk about + +00:14:40.680 --> 00:14:45.159 +the core idea of Org Mode, about mixing note taking and to-do + +00:14:45.160 --> 00:14:49.959 +manager. It was really powerful. And also in the same + +00:14:49.960 --> 00:14:53.399 +presentation that 98% + +00:14:53.400 --> 00:14:57.047 +of the features were organically developed as ideas + +00:14:57.048 --> 00:15:00.668 +by the community. And Ihor just said the same today + +00:15:00.669 --> 00:15:03.589 +in the presentation, like most of the features, + +00:15:03.590 --> 00:15:06.875 +not only the ideas, but also the code came from + +00:15:06.876 --> 00:15:11.350 +the communities. So that's why the community is so rich. + +00:15:11.351 --> 00:15:12.759 +And another thing is + +00:15:12.760 --> 00:15:16.919 +also that I do remember. Now everyone is having kind of an open + +00:15:16.920 --> 00:15:20.799 +source fatigue and questions about how is it okay to be + +00:15:20.800 --> 00:15:24.039 +maintainer? How do you keep open source project + +00:15:24.040 --> 00:15:28.199 +sustainable? And I'm saying open source on purpose with + +00:15:28.200 --> 00:15:33.119 +this audience to see beyond just the small GNU project and + +00:15:33.120 --> 00:15:36.359 +the small free software community. So at large, there is + +00:15:36.360 --> 00:15:40.679 +some sense of fatigue. I remember that the Org community + +00:15:40.680 --> 00:15:44.079 +right from the beginning had a reputation of being an + +00:15:44.080 --> 00:15:48.839 +amazing community and I think it + +00:15:48.840 --> 00:15:54.879 +continues to be one and I'm amazed that sometimes when I'm, + +00:15:54.880 --> 00:15:59.199 +you know, sometimes I'm, I have this fatigue of moderating + +00:15:59.200 --> 00:16:01.839 +emails from the mailing list, for example, and filtering + +00:16:01.840 --> 00:16:06.199 +out spam. And then I go on the list and I read some emails and I + +00:16:06.200 --> 00:16:09.536 +feel like, okay, this is still there. And it's really + +00:16:09.537 --> 00:16:14.559 +a boost of energy. I wish that this repetition outside Org Mode, + +00:16:14.560 --> 00:16:19.239 +outside Emacs, of being a nice welcoming, + +00:16:19.240 --> 00:16:22.559 +community of knowledgeable people talking of things + +00:16:22.560 --> 00:16:25.319 +and learning from each other that we can + +00:16:25.320 --> 00:16:30.159 +keep up with this pace. Yeah, maybe if I + +00:16:30.160 --> 00:16:32.919 +can just add to this, I think you're making an extremely + +00:16:32.920 --> 00:16:36.679 +important point, Pascal. I think that was really, from the + +00:16:36.680 --> 00:16:39.639 +beginning, something that was really special. And I think + +00:16:39.640 --> 00:16:45.639 +the reason why we all community still works is that first me, + +00:16:45.640 --> 00:16:49.239 +but in particular also the two of you and more people have + +00:16:49.240 --> 00:16:53.359 +been able to keep up the friendly spirit in this community. + +00:16:53.360 --> 00:16:57.239 +Because we had very few fights on the mailing list. There + +00:16:57.240 --> 00:17:02.879 +were a few at some point, we had a few contributors with a + +00:17:02.880 --> 00:17:06.719 +little bit of fights. And I remember that I, for example, had + +00:17:06.720 --> 00:17:10.159 +to invest a lot of time to keep that one under control, but I + +00:17:10.160 --> 00:17:14.199 +think it was totally worth it because as a group, as a whole, I + +00:17:14.200 --> 00:17:18.679 +think it was really fantastic. Our friendly people + +00:17:18.680 --> 00:17:21.719 +always were, and I think that has spurred all the + +00:17:21.720 --> 00:17:22.640 +contributions that we had. Because + +00:17:22.680 --> 00:17:25.542 +if you are in a toxic environment, you will + +00:17:25.543 --> 00:17:29.458 +not be willing to stay and to invest all their time. And if you + +00:17:29.708 --> 00:17:32.291 +are in an appreciative environment where people support + +00:17:32.292 --> 00:17:35.191 +each other, it's a completely different game. So I really + +00:17:35.192 --> 00:17:38.566 +think that Org Mode is a great example for open source + +00:17:38.567 --> 00:17:43.774 +projects that many other communities can learn from. + +00:17:43.775 --> 00:17:52.441 +If I may just interject for a second, because we need to go + +00:17:52.442 --> 00:17:55.441 +into the next chat for the live stream. But as usual, I invite + +00:17:55.442 --> 00:17:57.524 +you, if you're interested with the discussion, we are + +00:17:57.525 --> 00:18:01.482 +staying on BBB, asking questions to Bastien, to Ihor and + +00:18:01.483 --> 00:18:04.316 +to Carsten. So feel free to join on BBB and chat with them + +00:18:04.317 --> 00:18:07.857 +live. The stream will be moving on to the next chat, but we + +00:18:07.858 --> 00:18:10.566 +will be recording the Q&A and posting it afterwards on + +00:18:10.567 --> 00:18:13.441 +emacsconf. So, I'll use the opportunity to thank you again, + +00:18:13.442 --> 00:18:18.941 +all three, for taking part in this EmacsConf, and enjoy the + +00:18:18.942 --> 00:18:27.482 +discussion, and we'll see you later! Thank you, bye bye! So, + +00:18:27.483 --> 00:18:31.274 +yeah, what I was starting to say actually is I feel that the + +00:18:31.275 --> 00:18:35.024 +Org Mode community and to the big extent the Emacs community + +00:18:35.000 --> 00:18:38.679 +is a bit like research in the early days when there was a bunch + +00:18:38.680 --> 00:18:43.959 +of enthusiasts who just exchanged mails together and tried + +00:18:43.960 --> 00:18:49.159 +to find out something new. And there was like no feeling of + +00:18:49.160 --> 00:18:52.719 +competition or too much competition at that time. Unlike + +00:18:52.720 --> 00:18:58.759 +now when we like we all rise for funding and stuff. So it's, + +00:18:58.760 --> 00:19:02.199 +it's really, it's really nice to, to, to have communities + +00:19:02.200 --> 00:19:05.919 +that has the spirit and they hope it can keep the spirit in + +00:19:05.920 --> 00:19:08.279 +future as well. + +00:19:08.280 --> 00:19:14.599 +Yeah. Yeah. I thought I'm very optimistic after. So I mean, + +00:19:14.600 --> 00:19:18.679 +actually had not been reading the mailing list for quite a + +00:19:18.680 --> 00:19:23.039 +while, but I started to read it again a little while ago and I + +00:19:23.040 --> 00:19:26.719 +could just see you also working on it and see how everything + +00:19:26.720 --> 00:19:30.919 +was going. That made me extremely happy to see that and made + +00:19:30.920 --> 00:19:37.679 +me very proud that this is still ongoing. + +00:19:37.680 --> 00:19:42.799 +I was interested about your point about the tables with + +00:19:42.800 --> 00:19:49.079 +multi-lines. My unsolicited advice is don't do it, because + +00:19:49.080 --> 00:19:52.639 +I think it's going to be a mess. Which I think is reflected + +00:19:52.640 --> 00:19:56.039 +also by you saying that nobody has a good idea on how to do + +00:19:56.040 --> 00:20:01.079 +this. I have certainly thought about it. It is requested so + +00:20:01.080 --> 00:20:04.599 +often. It's requested so often that it feels like it would be + +00:20:04.600 --> 00:20:07.959 +nice to come out with something. The question is, it is what? + +00:20:07.960 --> 00:20:11.399 +Yeah, that's a big question. Because I don't always ask + +00:20:11.400 --> 00:20:15.919 +eDocs, for example, and they do have multi line cells in + +00:20:15.920 --> 00:20:21.279 +tables, but that syntax is so ugly. Yes. Yeah, no, exactly. I + +00:20:21.280 --> 00:20:28.719 +think this is a problem and the question is, how far do you + +00:20:28.720 --> 00:20:33.639 +want to develop or want to be a completely full authoring + +00:20:33.640 --> 00:20:35.839 +system in the sense that you have all these options there + +00:20:35.840 --> 00:20:39.999 +because I think to me, the Org Mode tables have a specific + +00:20:40.000 --> 00:20:42.759 +application. They have this fast way of building + +00:20:42.760 --> 00:20:46.079 +something. And if I would have to go and build a hugely + +00:20:46.080 --> 00:20:50.279 +complicated table with different numbers of columns and + +00:20:50.280 --> 00:20:53.959 +columns going away and appearing further down the table, so + +00:20:53.960 --> 00:20:56.639 +I would probably go somewhere else. So for me, this seems to + +00:20:56.640 --> 00:21:00.319 +be overkill. So I don't want to curb anybody's enthusiasm. + +00:21:00.320 --> 00:21:04.919 +But I think it's really important to keep to keep the kind of + +00:21:04.920 --> 00:21:11.199 +functionality that it has. It's a very easy use and quick + +00:21:11.200 --> 00:21:15.879 +ability to do something interesting that I think is more + +00:21:15.880 --> 00:21:23.319 +important. There could be reasons to not do something. So + +00:21:23.320 --> 00:21:28.399 +again, the thing is, we don't have a good idea. But what I know + +00:21:28.400 --> 00:21:32.319 +100% is that we are not going to give up the existing syntax. + +00:21:32.320 --> 00:21:38.839 +Yeah, for sure. So even if you come up with something good, + +00:21:38.840 --> 00:21:42.279 +the existing syntax will remain working. And if people who + +00:21:42.280 --> 00:21:46.159 +need to use simple tables, they should remain possible in + +00:21:46.160 --> 00:21:52.759 +exactly the same way. But I know many people struggle and try + +00:21:52.760 --> 00:21:55.839 +in LaTeX and other workarounds just to create more complex + +00:21:55.840 --> 00:22:01.039 +tables. So there's clearly a demand. I think this is related + +00:22:01.040 --> 00:22:04.439 +to the other question that you asked earlier. I think it's + +00:22:04.440 --> 00:22:06.639 +related to the question about the different parsers. And + +00:22:06.640 --> 00:22:09.999 +then, of course, the way the tables are implemented now is by + +00:22:10.000 --> 00:22:11.944 +basically just looking at what's around you + +00:22:11.945 --> 00:22:13.484 +and doing the right things with + +00:22:13.485 --> 00:22:20.479 +this regular expression-based part of + +00:22:20.480 --> 00:22:24.279 +the parser. And you probably would have to fully use the + +00:22:24.280 --> 00:22:28.839 +other parts and to do all the changes in the formal structure + +00:22:28.840 --> 00:22:31.559 +in order to do something like this. So I have to be honest that + +00:22:31.560 --> 00:22:35.559 +I don't understand this well enough to really have a + +00:22:35.560 --> 00:22:39.679 +meaningful idea about it. Not only that, we'll also need to + +00:22:39.680 --> 00:22:42.799 +rewrite the spreadsheet functionality because it is + +00:22:42.800 --> 00:22:47.679 +completely using regular expressions. Exactly. Not only + +00:22:47.680 --> 00:22:50.639 +idea is missing that the roadmap will be very complicated if + +00:22:50.640 --> 00:22:57.519 +you get there. Yeah. I mean, I do remember. Yeah, go ahead. + +00:22:57.520 --> 00:23:03.359 +Yeah, sorry. I do remember Richard Stallman saying that + +00:23:03.360 --> 00:23:09.759 +Org Mode was doing too much. So my answer was just, coming from + +00:23:09.760 --> 00:23:14.159 +the inventor of Emacs, I took it as a compliment for Org Mode. + +00:23:14.160 --> 00:23:19.319 +But of course, that was just humor. And I agree that the + +00:23:19.320 --> 00:23:24.279 +simple things should keep being simple. And I like the + +00:23:24.280 --> 00:23:30.039 +custom syntax idea of Juan because it goes in the direction + +00:23:30.040 --> 00:23:34.159 +of flexibility while keeping things simple. + +00:23:34.160 --> 00:23:40.319 +And looking forward to what people will come up with. I like + +00:23:40.320 --> 00:23:44.839 +the idea that you want to formalize the syntax. I think that + +00:23:44.840 --> 00:23:48.479 +is really very good. I'd like to also submit it. I think that + +00:23:48.480 --> 00:23:52.359 +would be excellent. I'm also... I think it was proposed by + +00:23:52.360 --> 00:23:57.239 +Timothy, yeah. Initially. Okay. Yeah, that's really + +00:23:57.240 --> 00:24:02.839 +helpful. Pascal, are you still talking, I think? No, yeah, I + +00:24:02.840 --> 00:24:08.399 +just wanted to say also for the younger Emacs users, there is + +00:24:08.400 --> 00:24:12.839 +a lot of new things in Emacs the last five years. It has been so + +00:24:12.840 --> 00:24:17.719 +exciting. And I believe it's exciting for Org Mode too, the + +00:24:17.720 --> 00:24:22.439 +things you mentioned about track changes. uh native + +00:24:22.440 --> 00:24:25.639 +compilation and all that stuff that that's really good like + +00:24:25.640 --> 00:24:29.879 +some some performance problems that we had for org mode for + +00:24:29.880 --> 00:24:33.759 +the agenda and stuff like that were suddenly solved by uh the + +00:24:33.760 --> 00:24:38.159 +the crazy amazing work by Eli and emacs maintainers so + +00:24:38.160 --> 00:24:40.457 +it's really exciting for org as well. + +00:24:40.458 --> 00:24:43.566 +I don't know how you feel, Ihor, about this, + +00:24:43.567 --> 00:24:45.482 +but I know you are reading the Emacs + +00:24:45.483 --> 00:24:50.732 +development mailing list and keeping this is a job in + +00:24:50.733 --> 00:24:54.774 +itself, but it's really exciting for everyone, I guess. Not + +00:24:54.775 --> 00:24:58.274 +only that, I hope we can upstream org-ql, which will speed up + +00:24:58.275 --> 00:25:00.566 +agenda specifically even more. + +00:25:00.567 --> 00:25:06.982 +Okay. I need to fly away, but it was really nice connecting + +00:25:06.983 --> 00:25:13.899 +and I hope everyone has a great conference. Bye-bye. It was + +00:25:13.900 --> 00:25:16.107 +so good to see you. Thank you again for everything that you + +00:25:16.108 --> 00:25:21.399 +have done. Thanks to you both. Thank you. Bye-bye. Bye-bye. + +NOTE Off-stream Q&A + +00:25:28.520 --> 00:25:35.959 +All right. Is it only the two of us now? I don't really know who + +00:25:35.960 --> 00:25:40.239 +else. Can you see if there's anybody else in this room? I + +00:25:40.240 --> 00:25:45.079 +don't know. There are like two, four, six people and Sacha is + +00:25:45.080 --> 00:25:48.159 +one of them, so probably five people. Oh, Sacha is here. + +00:25:48.160 --> 00:25:51.999 +Okay. I haven't heard her say anything, but I see her in the + +00:25:52.000 --> 00:25:58.479 +chat. Okay. It's the same room, basically. Hi, Sacha. Oh, + +00:25:58.480 --> 00:26:02.199 +okay. They're also at her pad, so we may want to finish other + +00:26:02.200 --> 00:26:08.839 +questions, maybe, if there are some. This is just a circle. + +NOTE microemacs + +00:26:08.840 --> 00:26:12.079 +This is just a historical question, but Carsten, I think you + +00:26:12.080 --> 00:26:14.359 +used microemacs back in the day. + +00:26:14.360 --> 00:26:17.839 +Did that have any influence + +00:26:17.840 --> 00:26:23.879 +on Org? That is a really interesting question. I used + +00:26:23.880 --> 00:26:27.359 +microemacs as my first version of emacs, and then I stepped + +00:26:27.360 --> 00:26:33.359 +over to Emacs. I actually did two things at the same time. I + +00:26:33.360 --> 00:26:39.119 +also was working with so Awk basically, that language. I ran + +00:26:39.120 --> 00:26:45.599 +against walls with both Micro-Emacs and with Awk, where I had + +00:26:45.600 --> 00:26:48.639 +the feeling I don't have enough freedom to do everything + +00:26:48.640 --> 00:26:52.839 +that I wanted, so I switched to Perl on one side and to Emacs on + +00:26:52.840 --> 00:26:58.679 +the other side. That's what it was. Micro-Emacs absolutely + +00:26:58.680 --> 00:27:02.679 +had the function to pull me into Emacs, But it's not that I + +00:27:02.680 --> 00:27:04.759 +have specific microemacs features that would have + +00:27:04.760 --> 00:27:08.119 +triggered me to do something for Org Mode. I think that would be + +00:27:08.120 --> 00:27:14.207 +the answer to your question. All right, thanks. + +00:27:14.200 --> 00:27:21.639 +Are you a user of microemacs, George? I posted the source to + +00:27:21.640 --> 00:27:26.719 +CompSource's Amiga in 86, and I was somewhat responsible + +00:27:26.720 --> 00:27:31.959 +for it being in the wild. Oh, I'm so sorry that I didn't, + +00:27:31.960 --> 00:27:35.199 +wasn't really aware that I made the connection to your name. + +00:27:35.200 --> 00:27:39.719 +No, no, no, no. We all moved on and the world is a better place. + +00:27:39.720 --> 00:27:44.799 +Yeah. No, I actually did use it for something like, I think + +00:27:44.800 --> 00:27:47.440 +six years as my only admin at the time before I made the + +00:27:47.440 --> 00:27:51.359 +switch. No, I put it out to the list. David Lawrence ran with + +00:27:51.360 --> 00:27:55.399 +it and you know, that was about, that was the end of it. And I + +00:27:55.400 --> 00:27:57.599 +actually implemented something like fly spell for + +00:27:57.600 --> 00:28:02.359 +microemacs. I remember doing that at some point. Yeah, no, I + +00:28:02.360 --> 00:28:05.319 +don't want us to get stuck on that. I don't want us to get stuck + +00:28:05.320 --> 00:28:10.279 +on that, so. Yeah, yeah. Good. Thank you. Thank you for + +00:28:10.280 --> 00:28:17.679 +Org Mode. Yeah, you're most welcome. + +00:28:17.680 --> 00:28:22.199 +For microemacs, actually, I also tried it once. It feels + +00:28:22.200 --> 00:28:27.959 +like at home after Emacs, of course, the major downside was at + +00:28:27.960 --> 00:28:33.599 +this point is that there is no UTF support. I think that was + +00:28:33.600 --> 00:28:40.039 +like, unfortunately, that that's not going to work. I + +00:28:40.040 --> 00:28:43.959 +think I'm also going to disconnect now. But it was really + +00:28:43.960 --> 00:28:49.119 +fantastic to listen to your talk. I wish you all the best. I'm + +00:28:49.120 --> 00:28:53.479 +sure that is a good answer. Thank you for joining, and nice to + +00:28:53.480 --> 00:29:00.159 +meet you. Yeah, bye. Bye. + +00:29:00.160 --> 00:29:02.799 +Okay, so there are still people in the room, so if you want to + +00:29:02.800 --> 00:29:10.440 +ask questions, feel free to do it. I + +00:29:10.440 --> 00:29:12.679 +think there's one unanswered question in the etherpad + +00:29:12.680 --> 00:29:18.119 +also. Let me see. + +00:29:18.120 --> 00:29:21.639 +It's probably awkward to answer. Okay, I can answer and then + +00:29:21.640 --> 00:29:24.039 +probably answering the answer for this one. So there's a + +00:29:24.040 --> 00:29:28.519 +question about, from a person, I spent some time writing a + +00:29:28.520 --> 00:29:31.919 +library for myself, which involved working with Org files. + +NOTE Q: Is there/could there be a resource with which to recommend particularly well written codebases for review by others? + +00:29:31.920 --> 00:29:34.359 +One thing I struggled with was finding a good source of + +00:29:34.360 --> 00:29:41.599 +reference code which demonstrated idiomatic usage. + +00:29:41.600 --> 00:29:46.319 +particularly well-written code bases for review by + +00:29:46.320 --> 00:29:52.599 +others? That's a good question. We have some wiki pages. + +00:29:52.600 --> 00:29:57.039 +I'll put it in the answer later. You can also check Org Mode's + +00:29:57.040 --> 00:30:02.399 +code, but usually in org-element there are good usages, and + +00:30:02.400 --> 00:30:06.919 +in Org export. + +00:30:06.920 --> 00:30:10.279 +Otherwise, maybe something from Alphapapa, but I need to + +00:30:10.280 --> 00:30:13.320 +check that and probably reply later. + +00:30:16.167 --> 00:30:23.875 +Otherwise, that's all. So I'm going to end this. + +00:30:52.400 --> 00:32:09.720 +Bye bye. diff --git a/2024/captions/emacsconf-2024-p-search--psearch-a-local-search-engine-in-emacs--zac-romero--answers.vtt b/2024/captions/emacsconf-2024-p-search--psearch-a-local-search-engine-in-emacs--zac-romero--answers.vtt new file mode 100644 index 00000000..cd09d3cb --- /dev/null +++ b/2024/captions/emacsconf-2024-p-search--psearch-a-local-search-engine-in-emacs--zac-romero--answers.vtt @@ -0,0 +1,2017 @@ +WEBVTT + +00:00:00.000 --> 00:00:03.559 +...starting the recording here in the chat, and I see some + +00:00:03.560 --> 00:00:06.039 +questions already coming in. So thank you so much for your + +00:00:06.040 --> 00:00:09.359 +talk, Zac, and I'll step out of your way and let you field + +00:00:09.360 --> 00:00:10.279 +some of these questions. + +00:00:10.280 --> 00:00:21.999 +Sounds good. All right, so let's see. I'm going off of the + +00:00:22.000 --> 00:00:22.969 +question list. + +NOTE Q: Do you think a reduced version of this functionality could be integrated into isearch? + +00:00:22.970 --> 00:00:25.839 +So the first one is about having reduced + +00:00:25.840 --> 00:00:31.999 +version of the functionality integrated into iSearch. So + +00:00:32.000 --> 00:00:37.919 +yeah, with the way things are set up, it is essentially a + +00:00:37.920 --> 00:00:42.679 +framework. So + +00:00:42.680 --> 00:00:46.279 +you can create a candidate. So just a review from the talk. So + +00:00:46.280 --> 00:00:49.919 +you have these candidate generators which generate search + +00:00:49.920 --> 00:00:54.559 +candidates. So you can have a file system candidate which + +00:00:54.560 --> 00:00:58.519 +generates these file documents, which have text content in + +00:00:58.520 --> 00:01:01.799 +them. In theory, you could have like a website candidate + +00:01:01.800 --> 00:01:06.399 +generator, and it could be like a web crawler. I mean, so + +00:01:06.400 --> 00:01:10.519 +there's a lot of different options. So one option, it's on my + +00:01:10.520 --> 00:01:15.039 +mind, and I hope to get to this soon, is create a defun, like a + +00:01:15.040 --> 00:01:18.599 +defun candidate generator. So basically it takes a file, + +00:01:18.600 --> 00:01:22.279 +splits it up into like defunds, kind of like just like what + +00:01:22.280 --> 00:01:26.279 +iSearch would do. and then use each of those, the body of + +00:01:26.280 --> 00:01:30.959 +those, as a content for the search session. So, I mean, + +00:01:30.960 --> 00:01:35.359 +essentially you could just, you could start up a session, + +00:01:35.360 --> 00:01:39.479 +and there's like programmatic ways to start these up too. So + +00:01:39.480 --> 00:01:42.599 +you could, if such a candidate generator was created, you + +00:01:42.600 --> 00:01:49.559 +could easily, and just like, you know, one command. Get the + +00:01:49.560 --> 00:01:54.599 +defunds, create a search session with it, and then just go + +00:01:54.600 --> 00:02:01.439 +straight to your query. So, definitely, something + +00:02:01.440 --> 00:02:06.919 +just like this is in the works. And I guess another thing is + +00:02:06.920 --> 00:02:08.239 +interface. + +00:02:08.240 --> 00:02:17.079 +The whole dedicated buffer is helpful for searching, but + +00:02:17.080 --> 00:02:21.919 +with this isearch case, there's currently not a way to have a + +00:02:21.920 --> 00:02:27.839 +reduced UI, where it's just like, OK, I have these function + +00:02:27.840 --> 00:02:32.239 +defuns for the current file. I just want them to pop up at the + +00:02:32.240 --> 00:02:35.799 +bottom so I can quickly go through it. So currently, I don't + +00:02:35.800 --> 00:02:41.199 +have that. But such a UI is definitely, yeah, thinking about + +00:02:41.200 --> 00:02:45.359 +how that could be done. + +NOTE Q: Any idea how this would work with personal information like Zettlekastens? + +00:02:45.360 --> 00:02:50.359 +Alright, so yeah. So next question. Any idea how this + +00:02:50.360 --> 00:02:52.599 +will work with personal information like Zettelkasten? + +00:02:52.600 --> 00:02:58.319 +So this is, this is like, I mean, it's essentially usable as + +00:02:58.320 --> 00:03:04.559 +is with Zettelkasten method. So, I mean, that I mean + +00:03:04.560 --> 00:03:08.279 +basically what like for example org-roam, and I think other + +00:03:08.280 --> 00:03:12.159 +ones like Denote, they put all these files in the + +00:03:12.160 --> 00:03:15.919 +directory, and so with the already existing file system + +00:03:15.920 --> 00:03:19.679 +candidate generator all you'd have to do is set that to be the + +00:03:19.680 --> 00:03:23.199 +directory of your Zettelkasten system and then it would + +00:03:23.200 --> 00:03:26.799 +just pick up all the files in there and + +00:03:26.800 --> 00:03:28.799 +then add those as search candidates. So you could easily + +00:03:28.800 --> 00:03:33.279 +just search whatever system you have. + +00:03:33.280 --> 00:03:36.039 +Based off of the ways it's set up, if you had maybe your + +00:03:36.040 --> 00:03:40.999 +dailies you didn't want to search, it's just as easy to add a + +00:03:41.000 --> 00:03:44.519 +criteria saying, I don't want dailies to be searched. Like + +00:03:44.520 --> 00:03:47.599 +give, like just eliminate the date, like the things from the + +00:03:47.600 --> 00:03:51.679 +daily from the sub directory. And then there you go. you have + +00:03:51.680 --> 00:03:57.799 +your Zettelkasten search engine, and you could just copy + +00:03:57.800 --> 00:03:59.999 +the, you know, there's, I mean, I need, I'm working on + +00:04:00.000 --> 00:04:03.519 +documentation for this to kind of set this up easily, but, + +00:04:03.520 --> 00:04:06.679 +you know, you could just create your simple command, just + +00:04:06.680 --> 00:04:10.679 +like, your simple command, just like, just take in a text + +00:04:10.680 --> 00:04:14.359 +query, run it through the system, and then just get your + +00:04:14.360 --> 00:04:19.599 +search results right there. So yeah, definitely that is a + +00:04:19.600 --> 00:04:22.040 +use case that's on top of my mind. + +NOTE Q: How good does the search work for synonyms especially if you use different languages? + +00:04:22.041 --> 00:04:23.239 +So next one, how good does a + +00:04:23.240 --> 00:04:26.439 +search work for synonyms, especially if you use different + +00:04:26.440 --> 00:04:30.719 +languages? Okay, this is a good question because with the + +00:04:30.720 --> 00:04:34.719 +way that VM25 works, it's essentially just like trying to + +00:04:34.720 --> 00:04:41.119 +find where terms occur and just counts them up. + +00:04:41.120 --> 00:04:43.999 +I mean, this is something I couldn't get into. There's just + +00:04:44.000 --> 00:04:46.919 +too much on the topic of information retrieval to kind of go + +00:04:46.920 --> 00:04:52.879 +into this, but there is a whole kind of field of just like, how + +00:04:52.880 --> 00:04:58.279 +do you, given a search term, how do you know what you should + +00:04:58.280 --> 00:05:02.519 +search for? So like popular kind of industrial search + +00:05:02.520 --> 00:05:07.519 +engines, like they have kind of this feature where you can + +00:05:07.520 --> 00:05:11.039 +like define synonyms, define, term replacement. So + +00:05:11.040 --> 00:05:14.079 +whenever you see this term, it should be this. And it even + +00:05:14.080 --> 00:05:15.091 +gets even further. + +NOTE Plurals + +00:05:15.092 --> 00:05:19.439 +If someone searches for a plural string, + +00:05:19.440 --> 00:05:22.279 +how do you get the singular from that and search for that? So + +00:05:22.280 --> 00:05:27.559 +this is a huge topic that currently p-search doesn't + +00:05:27.560 --> 00:05:33.519 +address, but it's on the top of my mind as to how. So that's one + +00:05:33.520 --> 00:05:33.882 +part. + +NOTE Different languages + +00:05:33.883 --> 00:05:38.999 +The next part is for different languages, one thing + +00:05:39.000 --> 00:05:42.839 +that kind of seems like it's promising is vector search, + +00:05:42.840 --> 00:05:47.399 +which, I mean, with the way p-search is set up, you could + +00:05:47.400 --> 00:05:51.159 +easily just create a vector search prior, plug it into the + +00:05:51.160 --> 00:05:54.599 +system, and start using it. The only problem is that kind of + +00:05:54.600 --> 00:05:58.879 +the vector search functions, like you have to do like cosine + +00:05:58.880 --> 00:06:03.639 +similarity, like if you have like 10,000 documents, If + +00:06:03.640 --> 00:06:06.679 +you're writing Elisp to calculate the cosine similarity + +00:06:06.680 --> 00:06:09.879 +between the vectors, that's going to be very slow. And so now + +00:06:09.880 --> 00:06:14.159 +the whole can of worms of indexing comes up. And how do you do + +00:06:14.160 --> 00:06:17.479 +that? And is that going to be native elisp? And so that's a + +00:06:17.480 --> 00:06:21.839 +whole other can of worms. So yeah, vector search seems + +00:06:21.840 --> 00:06:25.959 +promising. And then hopefully maybe other traditional + +00:06:25.960 --> 00:06:33.439 +synonyms, stemming, that kind of stuff for alternate + +00:06:33.440 --> 00:06:40.199 +terms, that could also be incorporated. + +NOTE Q: When searching by author I know authors may setup a new machine and not put the exact same information. Is this doing anything to combine those into one author? + +00:06:40.200 --> 00:06:43.719 +Okay, next one. When searching by author, I know authors may + +00:06:43.720 --> 00:06:47.119 +set up a new machine and not put the exact same information. + +00:06:47.120 --> 00:06:49.519 +Is this doing anything to combine these two in one author? + +00:06:49.520 --> 00:06:54.399 +Okay, so for this one, it's not. So it's like the way the get + +00:06:54.400 --> 00:06:58.119 +prior is currently set up is that it just does like a get + +00:06:58.120 --> 00:07:01.999 +command to get all the get authors. You select one and then it + +00:07:02.000 --> 00:07:07.959 +just uses that. But the thing is, is if you knew the two emails + +00:07:07.960 --> 00:07:12.519 +that user might have used, the two usernames, you could just + +00:07:12.520 --> 00:07:14.279 +set up the + +00:07:14.280 --> 00:07:19.799 +two priors. One for the old user's email, and then just add + +00:07:19.800 --> 00:07:24.079 +another prior for the new user's email. And then that would + +00:07:24.080 --> 00:07:29.279 +be a way to just get both of those set up. So that's kind of a + +00:07:29.280 --> 00:07:32.959 +running theme throughout p-search is that It's made to be + +00:07:32.960 --> 00:07:36.239 +very flexible and very kind of like Lego block ish kind of + +00:07:36.240 --> 00:07:39.959 +like you can just, you know, if you need, you know, if + +00:07:39.960 --> 00:07:41.919 +something doesn't meet your needs, you know, it's easy to + +00:07:41.920 --> 00:07:45.959 +put pieces in, create new components of the search + +00:07:45.960 --> 00:07:51.799 +engine. Let's see, a cool powerful grep "Rak" to maybe have + +00:07:51.800 --> 00:07:58.839 +some good ideas. I have searches record code while + +00:07:58.840 --> 00:08:04.039 +searching. Okay. So. Okay, that's interesting. I'll have + +00:08:04.040 --> 00:08:05.239 +to look into this + +00:08:05.240 --> 00:08:15.279 +tool. I haven't seen that. I do kind of keep my eyes out for + +00:08:15.280 --> 00:08:18.199 +these kind of things. One thing I have seen that was kind of + +00:08:18.200 --> 00:08:24.439 +that, I mean, looked interesting was kind of like AST, like + +00:08:24.440 --> 00:08:29.519 +the treesitter, the treesitter grep tools. But like, you + +00:08:29.520 --> 00:08:35.359 +can grep for a string in the language itself. So that's + +00:08:35.360 --> 00:08:37.959 +something I think would be cool to implement either, + +00:08:37.960 --> 00:08:41.359 +because I mean, there's treesitter in Emacs, so it's + +00:08:41.360 --> 00:08:44.519 +possible to do a new list. If not, there are those kind of like + +00:08:44.520 --> 00:08:47.719 +treesitter. So that's, that's something that I think would + +00:08:47.720 --> 00:08:50.719 +be cool to incorporate. + +NOTE Q: Have you thought about integrating results from using cosine similarity with a deep-learning based vector embedding? + +00:08:50.720 --> 00:08:58.279 +Let's see. Have you thought about integrating results from + +00:08:58.280 --> 00:09:00.999 +using cosine similarity with a deep learning based vector + +00:09:01.000 --> 00:09:06.679 +embedding? Yeah, exactly. So yeah, this kind of goes back to + +00:09:06.680 --> 00:09:09.759 +the topic before it. Definitely the whole semantic search + +00:09:09.760 --> 00:09:12.679 +with vector embeddings, that's something that, I mean, it + +00:09:12.680 --> 00:09:15.479 +would be actually kind of trivial to implement that in + +00:09:15.480 --> 00:09:20.239 +p-search. But like I said, computing the cosine similarity + +00:09:20.240 --> 00:09:25.959 +in elisp, it's probably too slow. + +00:09:25.960 --> 00:09:34.879 +And then also there's a whole question of how do you get the embeddings? + +00:09:34.880 --> 00:09:36.919 +Like, how do you get the system running locally on your + +00:09:36.920 --> 00:09:41.239 +machine if you want to run it that or, I mean, so that's + +00:09:41.240 --> 00:09:48.879 +actually another kind of aspect that I need to look into. + +00:09:48.880 --> 00:10:01.939 +Okay, so let's see. + +NOTE Q: Is it possible to save/bookmark searches or search templates so they can be used again and again? + +00:10:01.940 --> 00:10:06.319 +Okay, next question. Let's see. I'm sorry if this has been + +00:10:06.320 --> 00:10:09.079 +covered. Is it possible to save/bookmark searches or search + +00:10:09.080 --> 00:10:14.559 +templates so they can be used again and again? Exactly. So + +00:10:14.560 --> 00:10:18.199 +just recently I added bookmarking capabilities. So + +00:10:18.200 --> 00:10:21.119 +you can essentially just bookmark whatever search session you + +00:10:21.120 --> 00:10:26.359 +have. And yeah, and it's just, it was just a bookmark. You can + +00:10:26.360 --> 00:10:29.839 +just open and just like reopen that, rerun that search from + +00:10:29.840 --> 00:10:36.119 +where you left off. So there's that. And then also, I tried to + +00:10:36.120 --> 00:10:40.559 +set this up so that there is a one-to-one mapping of a Lisp + +00:10:40.560 --> 00:10:44.759 +object to the search session. So from every search session + +00:10:44.760 --> 00:10:49.519 +you make, you should be able to get a, there's a command to do + +00:10:49.520 --> 00:10:55.199 +this, to get a data representation of the search. So it would + +00:10:55.200 --> 00:11:00.079 +just be like some plist. All you have to do is just take that + +00:11:00.080 --> 00:11:04.479 +plist, call this function p-search-setup-buffer with that + +00:11:04.480 --> 00:11:09.119 +data. And then that function should set up the session as you + +00:11:09.120 --> 00:11:12.599 +left off. So then like, you know, you could make your + +00:11:12.600 --> 00:11:15.359 +commands easy. You can make custom search commands super + +00:11:15.360 --> 00:11:18.919 +easy. You just get the data representation of that search, + +00:11:18.920 --> 00:11:22.519 +find what pieces you want the user to be able to, you know, the + +00:11:22.520 --> 00:11:26.333 +search term, make that a parameter in the + +00:11:26.334 --> 00:11:29.079 +command, in the interactive code. So you'd have like + +00:11:29.080 --> 00:11:31.906 +print on top and then there you go. You have, + +00:11:31.907 --> 00:11:34.327 +you have a command to do the search + +00:11:34.328 --> 00:11:35.759 +just like just right there. So, so + +00:11:35.760 --> 00:11:38.519 +there's a lot of those things and there's a lot more that + +00:11:38.520 --> 00:11:40.999 +could be done. Like maybe having, you know, there's kind of + +00:11:41.000 --> 00:11:45.479 +in the works and like thinking about having groups of groups + +00:11:45.480 --> 00:11:48.959 +of these things, like maybe you can set up like, Oh, I always + +00:11:48.960 --> 00:11:51.919 +add these three criteria together. So I, you know, maybe I + +00:11:51.920 --> 00:11:54.559 +can make a preset out of these and make them easy, easily + +00:11:54.560 --> 00:11:58.079 +addable. So yeah. A lot of things like that are, you know, I'm + +00:11:58.080 --> 00:12:02.799 +thinking about a lot of things about that, so. + +NOTE Q: You mentioned about candidate generators. Could you explain about to what the score is assigned to? + +00:12:02.800 --> 00:12:06.079 +Okay, so next question. You mentioned about candidate + +00:12:06.080 --> 00:12:08.479 +generators. Could you explain about what the score is + +00:12:08.480 --> 00:12:12.199 +assigned to? Is this to a line or whatever the candidate + +00:12:12.200 --> 00:12:17.079 +generates? How does it work with our junior demo? Okay, + +00:12:17.080 --> 00:12:21.799 +yeah, so this is a, this is, so actually I had to implement, I + +00:12:21.800 --> 00:12:26.719 +had to rewrite p-search just to get this part right. So the + +00:12:26.720 --> 00:12:31.159 +candidate generator generates documents. Documents have + +00:12:31.160 --> 00:12:36.919 +properties. So the most notable property is the content + +00:12:36.920 --> 00:12:40.599 +property. So essentially what happens is that when you + +00:12:40.600 --> 00:12:42.879 +create a file system candidate generator and give it a + +00:12:42.880 --> 00:12:45.919 +directory, the code goes into the directory, kind of + +00:12:45.920 --> 00:12:49.079 +recursively goes through all the directories, and + +00:12:49.080 --> 00:12:51.559 +generates a candidate, which is just like a simple list + +00:12:51.560 --> 00:12:55.679 +form. It's saying, this is a file, the file path is this. So + +00:12:55.680 --> 00:13:00.799 +that's the document ID. So this is saying, this is a file, + +00:13:00.800 --> 00:13:05.559 +it's a file, and its file path is this. And so from that, you + +00:13:05.560 --> 00:13:09.279 +get all of the different properties, the sub properties. If + +00:13:09.280 --> 00:13:11.719 +you're given that, you know how to get the content. If you're + +00:13:11.720 --> 00:13:15.439 +given that, you know how to... So all these properties come + +00:13:15.440 --> 00:13:18.839 +out. And then also the candidate generator is the thing that + +00:13:18.840 --> 00:13:25.439 +knows how best to search for the terms. So for example, there + +00:13:25.440 --> 00:13:29.159 +is a buffer candidate generator. What that does is it just + +00:13:29.160 --> 00:13:34.759 +puts all your buffers as search candidates. So obviously + +00:13:34.760 --> 00:13:37.879 +you can't, you can't run ripgrep on buffers like you can't you + +00:13:37.880 --> 00:13:41.759 +can't do that, you can't run ripgrep on just like yeah just + +00:13:41.760 --> 00:13:44.319 +just like buffers that don't have files attached or, for + +00:13:44.320 --> 00:13:47.559 +example, maybe there's like an internet search candidate + +00:13:47.560 --> 00:13:51.279 +generator, like a web crawler thing. You just imagine it + +00:13:51.280 --> 00:13:55.759 +goes to a website, kind of crawls all the links and all that, + +00:13:55.760 --> 00:13:58.119 +and then just gets your web pages for the candidates. + +00:13:58.120 --> 00:14:01.159 +Obviously, you can't use ripgrep for that either. So, every + +00:14:01.160 --> 00:14:04.679 +candidate generator knows how best to search for the terms + +00:14:04.680 --> 00:14:08.919 +of what candidate it's generating. So, the file system + +00:14:08.920 --> 00:14:12.359 +candidate generator will say, okay, I have a base + +00:14:12.360 --> 00:14:17.239 +directory. So, if you ask me, the file system candidate + +00:14:17.240 --> 00:14:21.239 +generator, how to get the terms, it knows it's set up to use + +00:14:21.240 --> 00:14:25.199 +ripgrep. And so, it runs ripgrep, and so then it goes + +00:14:25.200 --> 00:14:29.439 +through, it runs the command, gets the counts, and then + +00:14:29.440 --> 00:14:32.359 +store those counts. So, the lines have nothing. At this + +00:14:32.360 --> 00:14:35.999 +point, the lines have nothing. There's no notion of lines at + +00:14:36.000 --> 00:14:40.559 +all. It's just document, document ID with the amount of + +00:14:40.560 --> 00:14:43.839 +times it matched. And that's all you need to run this BM25 + +00:14:43.840 --> 00:14:47.519 +algorithm. But then when you get the top results, you + +00:14:47.520 --> 00:14:51.359 +obviously want to see the lines that matched. And so there's + +00:14:51.360 --> 00:14:56.399 +another thing, another method to kind of get the exact + +00:14:56.400 --> 00:15:00.559 +thing, to kind of match out the particular lines. And so + +00:15:00.560 --> 00:15:03.159 +that's a separate mechanism. And that can be done in Elist, + +00:15:03.160 --> 00:15:05.719 +because if you're not displaying, that's kind of a design + +00:15:05.720 --> 00:15:09.319 +decision of P-Search, is that it only displays like maybe 10 + +00:15:09.320 --> 00:15:12.519 +or 20. It doesn't display all the results. So you can have + +00:15:12.520 --> 00:15:16.679 +Elist just go crazy with just like highlighting things, + +00:15:16.680 --> 00:15:22.719 +picking the best kind of pieces to show. So yeah, that's how + +00:15:22.720 --> 00:15:27.359 +that's set up. + +00:15:27.360 --> 00:15:38.279 +So, here's perhaps a good moment for me to just jump in and + +00:15:38.280 --> 00:15:42.079 +comment that in a minute or so we will break away with the live + +00:15:42.080 --> 00:15:47.439 +stream to give people an hour of less content to make sure + +00:15:47.440 --> 00:15:50.639 +everybody goes and takes their lunch and break a little bit. + +00:15:50.640 --> 00:15:55.039 +But if you would like to keep going in here, Love to love to + +00:15:55.040 --> 00:15:59.839 +take as many questions. And, of course, we will include + +00:15:59.840 --> 00:16:06.159 +that all when we publish the Q and A. Sounds good. Yeah, I'll go + +00:16:06.160 --> 00:16:12.199 +and stick around on the stream as we cut away, as we've got a + +00:16:12.200 --> 00:16:15.999 +little video surprise we've all prepared to play, just some + +00:16:16.000 --> 00:16:19.359 +comments from an Emacs user dated in 2020 or something like + +00:16:19.360 --> 00:16:29.679 +this. I forget the detail. Thank you again so much, Zac, for + +00:16:29.680 --> 00:16:30.959 +your fascinating talk. + +00:16:30.960 --> 00:16:32.301 +Yeah, so, okay. + +NOTE Q: easy filtering with orderless - did this or something like this help or infulce the design of psearch? + +00:16:32.302 --> 00:16:33.359 +This makes me really think about the + +00:16:33.360 --> 00:16:35.999 +emergent workflows with Denote and easy filtering with + +00:16:36.000 --> 00:16:36.639 +orderless. + +00:16:36.640 --> 00:16:42.039 +Did this or something like this help influence the design of + +00:16:42.040 --> 00:16:47.359 +p-search? Yeah, exactly. So, I mean, yeah, I mean, there's + +00:16:47.360 --> 00:16:49.919 +just so many different searches. Like, it's just kind of + +00:16:49.920 --> 00:16:52.519 +mind-boggling. Like, you could search for whatever you want + +00:16:52.520 --> 00:16:54.599 +on your computer. Like, there's just so much, like, you + +00:16:54.600 --> 00:17:01.199 +can't, yeah, you can't just like, you can't just like hard + +00:17:01.200 --> 00:17:04.159 +code any of these things. It's all malleable. Like maybe + +00:17:04.160 --> 00:17:09.279 +somebody wants to search these directories. And so, yeah, + +00:17:09.280 --> 00:17:10.639 +like + +00:17:10.640 --> 00:17:18.399 +exactly like that use case of having a directory of files + +00:17:18.400 --> 00:17:18.959 +where + +00:17:18.960 --> 00:17:25.919 +they contain your personal knowledge management system. + +00:17:25.920 --> 00:17:33.479 +Yeah, that use case definitely was at the top of my mind. + +00:17:33.480 --> 00:17:35.879 +Let's see. + +00:17:35.880 --> 00:17:56.959 +Let's see, so Git covers the multiple names thing itself. + +NOTE Q: Notmuch with the p-search UI + +00:17:56.960 --> 00:18:00.359 +Okay, yeah, + +00:18:00.360 --> 00:18:09.599 +so something about notmuch with p-search UI. Actually, + +00:18:09.600 --> 00:18:16.399 +interestingly, I think notmuch is, I haven't used it + +00:18:16.400 --> 00:18:22.759 +myself, but that's the, email something about yeah so i mean + +00:18:22.760 --> 00:18:25.679 +this is like these things are just like these these kind of + +00:18:25.680 --> 00:18:30.479 +extensions could kind of go go forever but one thing i + +00:18:30.480 --> 00:18:33.369 +thought about is like i use mu4e for email + +00:18:33.370 --> 00:18:41.119 +and that uses a full-fledged index. And so having + +00:18:41.120 --> 00:18:44.879 +some method to kind of reach into these different systems + +00:18:44.880 --> 00:18:47.938 +and kind of be kind of like a front end for this. + +00:18:47.939 --> 00:18:52.000 +Another thing is maybe SQL database. + +00:18:52.001 --> 00:18:55.823 +You can create a candidate generator from a SQLite query + +00:18:55.824 --> 00:19:01.919 +and then... yeah... + +00:19:02.583 --> 00:19:05.519 +I've had tons of ideas of different things you could + +00:19:05.520 --> 00:19:09.559 +incorporate into the system. Slowly, + +00:19:09.560 --> 00:19:13.599 +they're being implemented. Just recently, I implemented + +NOTE Info + +00:19:13.600 --> 00:19:17.039 +an info file candidate generator. So it lists out all the + +00:19:17.040 --> 00:19:21.559 +info files, and then it creates a candidate for each of the + +00:19:21.560 --> 00:19:26.759 +info nodes. So it turns out, yeah, I mean, it works pretty, I + +00:19:26.760 --> 00:19:32.559 +mean, just as well as Google. So I'm up for my own testing. + +00:19:32.560 --> 00:19:39.999 +Let's see, you can search a buffer using ripgrep feeding in + +00:19:40.000 --> 00:19:44.759 +as standard in to the ripgrep process, can't you? Yep, yeah, + +00:19:44.760 --> 00:19:50.039 +you can definitely search a buffer that way. So, yeah, I + +00:19:50.040 --> 00:19:56.359 +mean, based off of I mean, if this, yeah, so one thing that + +00:19:56.360 --> 00:19:59.039 +came up is that the system wants, I mean, I wanted the system + +00:19:59.040 --> 00:20:03.559 +to be able to search a lot of different things. And so it came + +00:20:03.560 --> 00:20:05.999 +up that I had, you know, implementing, + +00:20:06.000 --> 00:20:10.159 +doing these search things, having an Elist + +00:20:10.160 --> 00:20:13.079 +implementation, despite it being slow, would be + +00:20:13.080 --> 00:20:17.399 +necessary. So like anything that isn't represented as a + +00:20:17.400 --> 00:20:21.639 +file, Elisp, there's a mechanism in p-search to search for + +00:20:21.640 --> 00:20:23.319 +it. + +00:20:23.320 --> 00:20:29.719 +So, yeah, so having that redundancy kind of lets you get into + +00:20:29.720 --> 00:20:32.799 +the, you know, using kind of ripgrep for the big scale + +00:20:32.800 --> 00:20:37.759 +things. But then when you get to the individual file, you + +00:20:37.760 --> 00:20:40.999 +know, just going back to Elisp to kind of get the finer + +00:20:41.000 --> 00:20:47.199 +details seems to, you know, seems to end up working pretty + +00:20:47.200 --> 00:21:04.239 +well. + +00:21:04.240 --> 00:21:27.399 +Thank you all for listening. Yeah, sounds like we're about + +00:21:27.400 --> 00:21:31.279 +out of questions. Hi, Zacc. I have a question or still a + +00:21:31.280 --> 00:21:34.119 +question. I just want to thank everybody one more time for + +00:21:34.120 --> 00:21:37.719 +their participation, especially you for speaking, Zack. I + +00:21:37.720 --> 00:21:41.239 +look forward to playing with p-search myself. Thank you. + +00:21:41.240 --> 00:21:44.039 +Yeah, there might be one last question. Is there someone? + +00:21:44.040 --> 00:21:48.519 +Yes, there is. I don't know if you can understand me, but + +00:21:48.520 --> 00:21:50.359 +thank you for making this lovely thing + +00:21:50.360 --> 00:21:57.919 +I feel inspired to try it out and I'm thinking about how to + +00:21:57.920 --> 00:22:04.199 +integrate it because it sounds modular and nicely thought + +00:22:04.200 --> 00:22:09.799 +out. One small question. Have you thought about Project L + +00:22:09.800 --> 00:22:13.719 +integration? And then I have a little bigger question about + +00:22:13.720 --> 00:22:14.879 +the interface. + +NOTE project.el integration + +00:22:14.880 --> 00:22:20.799 +Yeah, project.el integration, it's used in a couple of ways. + +00:22:20.800 --> 00:22:25.719 +It's kind of used to kind of as like kind of like a default. + +00:22:25.720 --> 00:22:31.279 +This is the directory I want to search for the default + +00:22:31.280 --> 00:22:33.639 +p-search command. It does, yeah, it kind of goes off of + +00:22:33.640 --> 00:22:37.119 +project.el. If there is a project, it kind of says, okay, this, + +00:22:37.120 --> 00:22:40.319 +I want to search this project. And so it kind of, it used that + +00:22:40.320 --> 00:22:46.119 +as a default. So there's that. Because I use the project-grep + +00:22:46.120 --> 00:22:50.679 +or git-grep search a lot and maybe this is a better solution to + +00:22:50.680 --> 00:22:55.319 +the search and the interface you have right now for the + +00:22:55.320 --> 00:22:56.476 +search results. + +NOTE Q: How happy are you with the interface? + +00:22:56.477 --> 00:22:58.719 +How happy are you with it and have you + +00:22:58.720 --> 00:23:02.599 +thought about improving or have you ideas for + +00:23:02.600 --> 00:23:06.639 +improvements? Yeah, well actually what you see in the demo + +00:23:06.640 --> 00:23:09.199 +in the video isn't... There's actually, there is an + +00:23:09.200 --> 00:23:13.959 +improvement in the current code. Basically, what it + +00:23:13.960 --> 00:23:17.239 +does is it scans there's the current default as it scans + +00:23:17.240 --> 00:23:20.054 +the entire file for all of the searches. + +00:23:20.055 --> 00:23:25.959 +It finds the window that that has the highest score. So it kind + +00:23:25.960 --> 00:23:29.599 +of goes through entire file and just says... And it kind of finds + +00:23:29.600 --> 00:23:33.479 +like the piece of the section of text that has the most + +00:23:33.480 --> 00:23:37.919 +matches with the terms that score the best. So it's, I mean, + +00:23:37.920 --> 00:23:40.119 +that section is pretty good. I mean, that, so yeah, that, + +00:23:40.120 --> 00:23:44.519 +that ends up working pretty well. So I mean, in terms of other + +00:23:44.520 --> 00:23:46.879 +UI stuff, there's, there's tons, there's tons more that + +00:23:46.880 --> 00:23:50.159 +could be done, like, especially like debug ability or like + +00:23:50.160 --> 00:23:53.799 +introspection. Like, so this, this result, like, for + +00:23:53.800 --> 00:23:57.119 +example, this result ranks really high. Maybe you don't + +00:23:57.120 --> 00:24:01.719 +know why though. It's like, because of this, this text query + +00:24:01.720 --> 00:24:04.479 +arrow, was it because of this criteria? I think + +00:24:04.480 --> 00:24:09.039 +there's some UI elements that could kind of help the user + +00:24:09.040 --> 00:24:12.519 +understand why results are scoring high or low. So that's + +00:24:12.520 --> 00:24:15.639 +definitely... And that makes a lot of sense to me. You know, a + +00:24:15.640 --> 00:24:19.039 +lot of it is demystifying, like understanding what you're + +00:24:19.040 --> 00:24:22.719 +learning better and not just finding the right thing. A lot + +00:24:22.720 --> 00:24:26.519 +of it is, you know, kind of exploring your data. I love that. + +00:24:26.520 --> 00:24:31.639 +Thanks. Okay. I'm not trying to hurry us through either by + +00:24:31.640 --> 00:24:36.599 +any stretch. I would be happy to see this be a conversation. + +00:24:36.600 --> 00:24:42.359 +I also want to be considerate of your time. And I also wanted to + +00:24:42.360 --> 00:24:45.479 +make a quick shout out to everybody who's been updating and + +00:24:45.480 --> 00:24:50.479 +helping us capture the questions and the comments and the + +00:24:50.480 --> 00:24:53.639 +etherpad. That's just a big help to the extent that people + +00:24:53.640 --> 00:24:57.199 +are jumping in there and you know, revising and extending + +00:24:57.200 --> 00:24:59.799 +and just doing the best job we can to capture all the + +00:24:59.800 --> 00:25:00.799 +thoughtful remarks. + +00:25:00.800 --> 00:25:14.839 +Yeah, thank you, Zac. I'm not too sure what to ask anymore, + +00:25:14.840 --> 00:25:20.559 +but yes, would love to try it out now. Yeah, I mean, + +00:25:20.560 --> 00:25:22.076 +definitely feel free to... + +00:25:22.077 --> 00:25:25.679 +any feedback, here's my mail, or issues... + +00:25:25.680 --> 00:25:29.039 +I mean I'm happy to get any any feedback. It's + +00:25:29.040 --> 00:25:31.679 +still in the early stages, so still kind of a lot of + +00:25:31.680 --> 00:25:35.599 +documentation that needs to be writing. There's a lot. + +00:25:35.600 --> 00:25:38.439 +There's a lot on the roadmap, but yeah, I mean, hopefully, I + +00:25:38.440 --> 00:25:42.759 +could even publish this to ELPA and have a nice + +00:25:42.760 --> 00:25:47.727 +manual so yeah hopefully yeah those come soon. Epic. + +00:25:47.728 --> 00:25:50.279 +That sounds great, yes. + +NOTE gptel + +00:25:50.280 --> 00:25:59.359 +The ability to save your searches kind of reminds me of like + +00:25:59.360 --> 00:26:05.119 +the gptel package for the AI, where you can save searches, + +00:26:05.120 --> 00:26:10.799 +which makes it feel a lot more different. And yeah, we don't + +00:26:10.800 --> 00:26:14.839 +have something for that with search, but yeah, that's a + +00:26:14.840 --> 00:26:19.279 +whole different dynamic where it's like, okay, yeah, and + +00:26:19.280 --> 00:26:24.679 +makes it a unique tool that is, I guess would be unique to + +00:26:24.680 --> 00:26:28.079 +Emacs where you don't see that with like this AI package + +00:26:28.080 --> 00:26:31.119 +where the gptel is kind of unique because it's not just throw + +00:26:31.120 --> 00:26:37.039 +away. It's how did I get this? How did I search for it? And be an + +00:26:37.040 --> 00:26:40.319 +organic search, kind of like the orderless and vertico + +00:26:40.320 --> 00:26:43.039 +and... + +00:26:43.040 --> 00:26:46.279 +Yeah, that's a good, I mean, that brings me to another thing + +00:26:46.280 --> 00:26:48.239 +in that, so, + +00:26:48.240 --> 00:26:53.199 +I mean, you could easily... + +00:26:53.200 --> 00:26:57.399 +you could create bridges from p-search to these different + +00:26:57.400 --> 00:27:01.519 +other packages, like, for example, kind of a RAG search, + +00:27:01.520 --> 00:27:04.679 +like there's this RAG, there's this thing called a RAG + +00:27:04.680 --> 00:27:06.879 +workflow, which is kind of popular these days. It's like + +00:27:06.880 --> 00:27:11.639 +retrieval augmented generation. So, you do a search and + +00:27:11.640 --> 00:27:14.199 +then based off the search results you get, then you pass + +00:27:14.200 --> 00:27:20.359 +those into LLM. So, the cool thing is that like you could use + +00:27:20.360 --> 00:27:25.119 +p-search for the retrieval. And so you could even like, I + +00:27:25.120 --> 00:27:28.799 +mean, you could even ask an LM to come up with the search terms + +00:27:28.800 --> 00:27:32.079 +and then have it search. There's no + +00:27:32.080 --> 00:27:35.439 +programmatical interface now to do this exact workflow. + +00:27:35.440 --> 00:27:39.039 +But I mean, there's another kind of direction I'm starting + +00:27:39.040 --> 00:27:43.199 +to think about. So like you could have maybe + +00:27:43.200 --> 00:27:47.759 +a question answer kind of workflow where it does + +00:27:47.760 --> 00:27:51.639 +like an initial search for the terms and then you get the top + +00:27:51.640 --> 00:27:57.199 +results and then you can put that through maybe gptel or all + +00:27:57.200 --> 00:27:59.759 +these other different systems. So that's, and that seems + +00:27:59.760 --> 00:28:01.479 +like a promising thing. And then another thing is like, + +NOTE Saving a search + +00:28:01.480 --> 00:28:10.594 +well, you mentioned the ability to save a search. + +00:28:10.595 --> 00:28:11.479 +One thing I've noticed + +00:28:11.480 --> 00:28:15.359 +kind of like with the DevOps workflows is, I'll write a + +00:28:15.360 --> 00:28:20.519 +CLI command that I do, or like a calculator command. Then I end + +00:28:20.520 --> 00:28:23.999 +up in the org mode document, write what I wrote, had the + +00:28:24.000 --> 00:28:26.943 +results in there, and then I'll go back to that. + +00:28:26.944 --> 00:28:31.966 +It's like, oh, this is why, this is that calculation I did + +00:28:31.967 --> 00:28:34.007 +and this is why I did it. + +00:28:34.008 --> 00:28:36.959 +I'll have run the same tool three different + +00:28:36.960 --> 00:28:40.519 +times to get three different answers, if it was like a + +00:28:40.520 --> 00:28:41.799 +calculator, for example. + +NOTE Workflows + +00:28:41.800 --> 00:28:49.319 +But yeah, that's a very unique feature that isn't seen and + +00:28:49.320 --> 00:28:53.959 +will make me look at it and see about integrating it into my + +00:28:53.960 --> 00:28:59.079 +workflow. Yeah, I think you get on some interesting, you + +00:28:59.080 --> 00:29:03.159 +know, kind of what makes Emacs really unique there and how + +00:29:03.160 --> 00:29:07.399 +to... interesting kind of ways to exploit + +00:29:07.400 --> 00:29:12.439 +Emacs to learn in the problem. I'm seeing a number of + +00:29:12.440 --> 00:29:15.799 +ways you're getting at that. For example, if I think about + +00:29:15.800 --> 00:29:18.999 +like an automation workflow, and there's just a million + +00:29:19.000 --> 00:29:22.719 +we'll say, assumptions that are baked into a search + +00:29:22.720 --> 00:29:26.719 +product, so to speak, like represented by a Google search or + +00:29:26.720 --> 00:29:31.639 +Bing or what have you. And then as I unpack that and repack it + +00:29:31.640 --> 00:29:35.159 +from an Emacs workflow standpoint, thinking about, well, + +00:29:35.160 --> 00:29:39.079 +first of all, what is the yak I'm shaving? And then also, what + +00:29:39.080 --> 00:29:43.759 +does doing it right mean? How would I reuse this? How would I + +00:29:43.760 --> 00:29:47.679 +make the code accessible to others for their own purposes in + +00:29:47.680 --> 00:29:52.439 +a free software world kind of way? and all of the different + +00:29:52.440 --> 00:29:57.479 +sort of say like orthogonal headspacey kind of things, + +00:29:57.480 --> 00:30:00.079 +right? Emacs brings a lot to the table from a search + +00:30:00.080 --> 00:30:03.719 +standpoint because I'm going to want to think about. I'm + +00:30:03.720 --> 00:30:07.799 +going to want to think about where does the UI come in? Where + +00:30:07.800 --> 00:30:11.399 +might the user want to get involved interactively? Where + +00:30:11.400 --> 00:30:14.359 +might the user want to get involved declaratively with + +00:30:14.360 --> 00:30:16.919 +their configuration, perhaps based on the particular + +00:30:16.920 --> 00:30:21.359 +environment where this Emacs is running? And there's just a + +00:30:21.360 --> 00:30:24.879 +lot of what Emacs users think about that really applies. + +00:30:24.880 --> 00:30:28.359 +I'll use the word again, orthogonally across all my many + +00:30:28.360 --> 00:30:33.239 +workflows as an Emacs user. You know, the search is just such + +00:30:33.240 --> 00:30:38.519 +a big word. Yeah, that's actually, this exact point I was + +00:30:38.520 --> 00:30:43.159 +thinking about with this. It's like, I mean, it seems kind of + +00:30:43.160 --> 00:30:46.319 +obvious, like just like using grep or something, just like to + +00:30:46.320 --> 00:30:49.359 +get search counts, like, okay, you can just run the command, + +00:30:49.360 --> 00:30:51.439 +get the term counts and you could just run it through a + +00:30:51.440 --> 00:30:55.959 +relatively simple algorithm. to get your search score. So + +00:30:55.960 --> 00:31:01.759 +if it's this easy, though, why don't we see this in other... And + +00:31:01.760 --> 00:31:06.919 +the results are actually surprisingly good. So why don't we + +00:31:06.920 --> 00:31:10.559 +see this anywhere, really? And it occurred to me that just + +00:31:10.560 --> 00:31:16.399 +the amount of configuration... The amount of setup you have to + +00:31:16.400 --> 00:31:20.039 +do to get it right. + +00:31:20.040 --> 00:31:24.599 +It's above this threshold that you need something like + +00:31:24.600 --> 00:31:27.856 +Emacs to kind of get pushed through that configuration. + +NOTE Transient and configuration + +00:31:27.857 --> 00:31:30.799 +So for example, that's why I rely heavily on transient + +00:31:30.800 --> 00:31:34.119 +to set up the system. 'Cause like, if you want to get good + +00:31:34.120 --> 00:31:36.079 +search results, you're going to have to configure a lot + +00:31:36.080 --> 00:31:38.519 +of stuff. I want this directory. I want this, I don't + +00:31:38.520 --> 00:31:41.559 +want this directory. I want these search terms, you know, + +00:31:41.560 --> 00:31:48.159 +there's a lot to set up. And in most programs, I mean, they + +00:31:48.160 --> 00:31:52.079 +don't have an easy way to, I mean, they'll often try and try to + +00:31:52.080 --> 00:31:55.039 +hide all this complexity. Like they say, okay, our users + +00:31:55.040 --> 00:31:59.199 +too, you know, we don't want to, you know, we don't wanna, you + +00:31:59.200 --> 00:32:02.719 +know, make our users, we don't wanna scare our users with + +00:32:02.720 --> 00:32:06.879 +like, complicated search engine configuration. So we're + +00:32:06.880 --> 00:32:09.079 +just going to do it all in the background and we're just not + +00:32:09.080 --> 00:32:12.599 +going to let the user even know that it's happening. I mean, + +00:32:12.600 --> 00:32:15.119 +that's the third time you've made me laugh out loud. Sorry + +00:32:15.120 --> 00:32:17.879 +for interrupting you, but yeah, you're just spot on there. + +00:32:17.880 --> 00:32:22.999 +You're some people's users. Am I right? like, you know, and + +00:32:23.000 --> 00:32:25.390 +also some people's workflows. + +NOTE Problem space + +00:32:25.391 --> 00:32:27.719 +And, you know, another case + +00:32:27.720 --> 00:32:30.799 +where just like, if you're thinking about Emacs, you either + +00:32:30.800 --> 00:32:33.279 +have to pick a tunnel to dive into and be like, no, this is + +00:32:33.280 --> 00:32:37.759 +going to be right for my work, or your problem space is never + +00:32:37.760 --> 00:32:40.879 +ending in terms of discovering the ways other people are + +00:32:40.880 --> 00:32:45.839 +using Emacs and how that breaks your feature. and how that + +00:32:45.840 --> 00:32:49.679 +breaks your conceptualization of the problem space, + +00:32:49.680 --> 00:32:53.559 +right? Or you just have to get so narrowed down that can + +00:32:53.560 --> 00:32:57.119 +actually be hard to find people that are quite understand + +00:32:57.120 --> 00:33:00.279 +you, right? You get into the particular, well, it solves + +00:33:00.280 --> 00:33:03.039 +these three problems for me. Well, what are these three + +00:33:03.040 --> 00:33:08.639 +problems again? And this is a month to unpack. You have Emacs + +00:33:08.640 --> 00:33:12.639 +and I don't know, it's like you got a lot of, they all agree is + +00:33:12.640 --> 00:33:16.559 +like we're going to use elisp to set variables every emacs + +00:33:16.560 --> 00:33:21.199 +package is going to do that we're going to use elisp and have a + +00:33:21.200 --> 00:33:25.479 +search in place to put our documentation and like it does + +00:33:25.480 --> 00:33:32.559 +also eliminate a lot of confusion and gives a lot of + +00:33:32.560 --> 00:33:37.719 +expectations of what they want. One thing that I'm + +00:33:37.720 --> 00:33:39.855 +surprised I haven't seen elsewhere is you have the + +NOTE consult-omni + +00:33:39.856 --> 00:33:44.239 +consult-omni package which allows you to search multiple websites + +00:33:44.240 --> 00:33:49.799 +simultaneously for multiple web search engines. and put + +00:33:49.800 --> 00:33:52.799 +them in one thing and it's like, and then you use orderless. + +NOTE orderless + +00:33:52.800 --> 00:33:55.159 +Why would you use orderless? Because that's what you + +00:33:55.160 --> 00:33:57.799 +configured and you know exactly what you wanna use and you + +00:33:57.800 --> 00:34:01.679 +use the same font and your same mini buffer and you use all + +00:34:01.680 --> 00:34:04.079 +that existing configuration because, well, you're an + +00:34:04.080 --> 00:34:07.599 +Emacs user or like you're a command line user. You know how + +00:34:07.600 --> 00:34:11.559 +you want these applications to go. You don't want them to be + +00:34:11.560 --> 00:34:17.399 +reinvented the wheel 1600 times in 1,600 different ways, + +00:34:17.400 --> 00:34:23.079 +you want it to use your mini buffer, your font, your et + +00:34:23.080 --> 00:34:28.159 +cetera, et cetera, et cetera. But I haven't + +00:34:28.160 --> 00:34:32.479 +seen a website where I can search multiple websites at the + +00:34:32.480 --> 00:34:35.159 +same time in something like Emacs before. And it's like, + +00:34:35.160 --> 00:34:38.319 +yeah, with my sorting algorithm, + +00:34:38.320 --> 00:34:49.359 +Yeah, exactly. Yeah. Yeah. Yeah. I mean, just setting the + +00:34:49.360 --> 00:34:57.079 +bar for configuration and set up just like, yeah, you have to + +00:34:57.080 --> 00:35:02.839 +have a list. Yeah. I mean, it, it does, obviously it's not, + +00:35:02.840 --> 00:35:05.839 +it's not most beginner beginner friendly, but I mean, it, + +00:35:05.840 --> 00:35:10.319 +yeah, it definitely widens the amount of the solution space + +00:35:10.320 --> 00:35:14.679 +you can have to such problems. Oh my gosh, you used the word + +00:35:14.680 --> 00:35:18.759 +solution space. I love it. But on the flip side, it's like, + +00:35:18.760 --> 00:35:25.119 +why does Emacs get this consult-omni package? Or let's see, + +00:35:25.120 --> 00:35:30.719 +you have elfeed-youtube where it will put a flowing + +00:35:30.720 --> 00:35:34.479 +transcript on a YouTube video or you got your package. Why + +00:35:34.480 --> 00:35:39.879 +does it get all these applications? And I don't see + +00:35:39.880 --> 00:35:45.679 +applications like this as much outside of Emacs. So there's + +00:35:45.680 --> 00:35:46.267 +a way that it just makes it easier. + +NOTE User interface + +00:35:46.268 --> 00:35:47.479 +It's because user + +00:35:47.480 --> 00:35:51.439 +interface is the, you know, it's the economy stupid of + +00:35:51.440 --> 00:35:58.119 +technology, right? If you grab people by the UX, you can sell + +00:35:58.120 --> 00:36:01.679 +a million of any product that solves problem that I didn't + +00:36:01.680 --> 00:36:04.639 +think technology could solve, or that I didn't think I had + +00:36:04.640 --> 00:36:08.319 +the patience to use technology to solve, which is a lot of + +00:36:08.320 --> 00:36:12.159 +times what it comes down to. And here exactly is the, you + +00:36:12.160 --> 00:36:16.799 +know, the the Emacs sort of conundrum, right? How much time + +00:36:16.800 --> 00:36:20.759 +should I spend today updating my Emacs so that tomorrow I can + +00:36:20.760 --> 00:36:26.319 +just work more, right? And, you know, I love that little + +00:36:26.320 --> 00:36:29.839 +graph of the Emacs learning curve, right? Where it's this + +00:36:29.840 --> 00:36:33.399 +concentric, it becomes this concentric spiral, right? The + +00:36:33.400 --> 00:36:38.759 +Vim learning curve is like a ladder, right? Or, you know, and + +00:36:38.760 --> 00:36:44.119 +And the nano learning curve is like just a flat plane, you + +00:36:44.120 --> 00:36:49.279 +know, or a ladder, a vertical ladder or a horizontal ladder. + +00:36:49.280 --> 00:36:56.719 +There we go. And the Emacs learning curve is this kind of + +00:36:56.720 --> 00:36:59.799 +straight up line until it curves back on itself and + +00:36:59.800 --> 00:37:03.079 +eventually spirals. And the more you learn, the harder it is + +00:37:03.080 --> 00:37:05.839 +to learn the next thing. And are you really moving forward at + +00:37:05.840 --> 00:37:09.039 +all? Like, it just works for me. What a great analogy. And + +00:37:09.040 --> 00:37:15.279 +that's my answer, I think. Yeah. You know, it's because + +00:37:15.280 --> 00:37:20.199 +we... The spiral is great. Sorry. There are each of these + +00:37:20.200 --> 00:37:26.639 +weird little packages that some of us, you know, it solves + +00:37:26.640 --> 00:37:29.279 +that one problem and lets us get back to work. And for others, + +00:37:29.280 --> 00:37:32.439 +it makes us go, gosh, now that makes me rethink a whole bunch + +00:37:32.440 --> 00:37:35.239 +of things because there's... Like I don't even know what + +00:37:35.240 --> 00:37:37.719 +you're talking about with some of your conceptualizations + +00:37:37.720 --> 00:37:41.039 +of UI. Maybe it comes from Visual Studio, and I've not + +00:37:41.040 --> 00:37:44.679 +used that or something. So for you, it's a perfectly normal UX + +00:37:44.680 --> 00:37:48.799 +paradigm that you kind of lean on for others. It's like you + +00:37:48.800 --> 00:37:51.999 +know occupying some screen space and I don't know what the + +00:37:52.000 --> 00:37:57.759 +gadgets do and when I open them up... They're thinking + +00:37:57.760 --> 00:38:00.999 +about... they have... they imply their own + +00:38:01.000 --> 00:38:03.639 +abstractions let's say logically against a programming + +00:38:03.640 --> 00:38:06.999 +language. This would be tree sitter, right. If i'm not used to + +00:38:07.000 --> 00:38:11.719 +thinking in terms of an abstract abstract syntax tree, some + +00:38:11.720 --> 00:38:14.799 +of the concepts just aren't as natural for me. If i'm used to + +00:38:14.800 --> 00:38:19.039 +like emacs at a more fundamental level is, or the old modes + +00:38:19.040 --> 00:38:23.479 +right, we're used to them thinking in terms of progressing + +00:38:23.480 --> 00:38:26.959 +forward through some text, managing a stack of markers into + +00:38:26.960 --> 00:38:29.239 +the text, right? It's a different paradigm. The world + +00:38:29.240 --> 00:38:33.559 +changes. Emacs kind of supports it all. That's why all the + +00:38:33.560 --> 00:38:37.039 +apps are built there. That's why when you're talking about + +00:38:37.040 --> 00:38:40.759 +that spiral. what that hints at is that this is really just a + +00:38:40.760 --> 00:38:44.239 +different algorithm that you're transferring out that + +00:38:44.240 --> 00:38:47.319 +makes some things a lot easier and some things a lot harder. + +00:38:47.320 --> 00:38:51.719 +That's why I was bringing in those three packages, because + +00:38:51.720 --> 00:38:59.708 +in some way it's making these search terms with reusable... + +00:38:59.709 --> 00:39:07.083 +Let's see... saveable buffers or interactive buffers in a way + +00:39:07.084 --> 00:39:10.359 +that... in a way, that is bigger than what I think it should have, + +00:39:10.360 --> 00:39:15.479 +especially in comparison to like how many people use + +00:39:15.480 --> 00:39:20.319 +YouTube, but I don't see very many YouTube apps that will + +00:39:20.320 --> 00:39:26.279 +show Rolling subtitle list that you can click on to move up + +00:39:26.280 --> 00:39:27.315 +and down the video + +00:39:27.316 --> 00:39:30.139 +even though YouTube's been around for years. + +00:39:30.140 --> 00:39:33.359 +Why does Emacs have a very good implementation + +00:39:33.360 --> 00:39:37.159 +that was duct taped together? So before I let you respond to + +00:39:37.160 --> 00:39:40.439 +that, Zac, let me just say we're coming up on eating up a + +00:39:40.440 --> 00:39:43.879 +whole half hour of your lunchtime and thank you for giving us + +00:39:43.880 --> 00:39:47.879 +that extra time. But let me just say, let's, you know, if I + +00:39:47.880 --> 00:39:50.879 +could ask you to take like up to another five minutes and then + +00:39:50.880 --> 00:39:53.759 +I'll try to kick us off here and make sure everybody does + +00:39:53.760 --> 00:39:54.999 +remember to eat. + +00:39:55.000 --> 00:40:04.119 +Yeah, so yeah, it looks like there's one other question. So + +NOTE Q: Do you think the Emacs being kinda slow will get in the way of being able to run a lot of scoring algorithms? + +00:40:04.120 --> 00:40:06.679 +yeah, do you think Emacs being kind of slow will get in the way + +00:40:06.680 --> 00:40:11.319 +of being able to run a lot of scoring algorithms? So this is + +00:40:11.320 --> 00:40:15.039 +actually a thought I had. Yeah, Emacs, because the code + +00:40:15.040 --> 00:40:19.919 +currently kind of does, I mean, it kind of does, it's kind of + +00:40:19.920 --> 00:40:24.039 +dumb in a lot of places. a lot of times it just, it does just go + +00:40:24.040 --> 00:40:27.599 +through all the files and then just compute some score for + +00:40:27.600 --> 00:40:30.679 +them. But I'm surprised that it's, that part actually isn't + +00:40:30.680 --> 00:40:34.799 +that slow. Like, like it turns out like, okay, like if you + +00:40:34.800 --> 00:40:40.759 +take, for example, Emacs, like the Emacs directory or the + +00:40:40.760 --> 00:40:44.879 +Emacs Git repository, or maybe another big Git repository, + +00:40:44.880 --> 00:40:49.079 +like you could have an Elisp function enumerate those, and + +00:40:49.080 --> 00:40:52.599 +multiply some numbers, maybe multiply 10 numbers + +00:40:52.600 --> 00:41:01.039 +together. And that isn't that slow. And that's the bulk of + +00:41:01.040 --> 00:41:05.799 +what the only thing that Elisp has to do is just like multiply + +00:41:05.800 --> 00:41:11.599 +these numbers. Obviously, if you have to resort to Elisp to + +00:41:11.600 --> 00:41:15.519 +search all the files and you have like 10 or 100,000 files, + +00:41:15.520 --> 00:41:18.759 +then yeah, Emacs will be slow + +00:41:18.760 --> 00:41:23.959 +to manually search, like if you're not using ripgrep or any + +00:41:23.960 --> 00:41:26.839 +faster tool and you have, and you have millions of files and + +00:41:26.840 --> 00:41:30.959 +yeah, it will be slow. But what I noticed though is like, for + +00:41:30.960 --> 00:41:35.119 +example, let's say you want to search for, let's say you want + +00:41:35.120 --> 00:41:40.199 +to search like info directory, like info files for Emacs and + +00:41:40.200 --> 00:41:46.039 +the Emacs info file and the Elisp info file. So those are two + +00:41:46.040 --> 00:41:49.279 +decently sized kind of books, kind of like reference + +00:41:49.280 --> 00:41:50.199 +material on Emacs. + +00:41:50.200 --> 00:41:55.999 +Relying on Elisp to search both of those together, it's + +00:41:56.000 --> 00:41:58.079 +actually pretty, it's actually like almost instant. I + +00:41:58.080 --> 00:42:00.639 +mean, it's not slow enough. So I think that's + +00:42:00.640 --> 00:42:03.679 +another thing is like scale. Like I think on, on kind of like + +00:42:03.680 --> 00:42:09.679 +individual human level scales, I think Elisp can be good + +00:42:09.680 --> 00:42:14.359 +enough. if you're going on the scale of like enterprise, + +00:42:14.360 --> 00:42:18.399 +like all the repositories, all the Git repositories of an + +00:42:18.400 --> 00:42:21.199 +enterprise, then yeah, that scale might, it might, it might + +00:42:21.200 --> 00:42:26.039 +be too much. But I think on, on the scale of what most + +00:42:26.040 --> 00:42:30.519 +individuals have to deal with on a daily basis, like for + +00:42:30.520 --> 00:42:34.719 +example, maybe somebody has some, yeah, I mean, I think it + +00:42:34.720 --> 00:42:36.959 +should, I think it hopefully should be enough. And if not, + +00:42:36.960 --> 00:42:39.639 +there's always room for optimizations. + +00:42:39.640 --> 00:42:55.999 +Yeah, so so I'll redirect you a little bit because based on a + +00:42:56.000 --> 00:43:00.279 +couple of things I got into, you know, or if you want to be done + +00:43:00.280 --> 00:43:04.759 +be like, you know, give me the hi sign by all means and we can + +00:43:04.760 --> 00:43:08.639 +we can shut up shop, but I'm curious, you know, what are what + +NOTE Boundary conditions + +00:43:08.640 --> 00:43:13.079 +are your boundary conditions? What what tends to cause you + +00:43:13.080 --> 00:43:16.679 +to to to write something more complicated and what what + +00:43:16.680 --> 00:43:20.959 +causes you to? So to work around it with more complex + +00:43:20.960 --> 00:43:23.559 +workflow in Emacs terms, like where do you break out the big + +00:43:23.560 --> 00:43:27.919 +guns? Just thinking about, like search, we talked about, + +00:43:27.920 --> 00:43:31.439 +maybe that's too abstract a question, but just general + +00:43:31.440 --> 00:43:36.679 +usage. Search is an example where almost all of us have + +00:43:36.680 --> 00:43:39.599 +probably written something to go find something, right? + +00:43:39.600 --> 00:43:43.519 +Yeah, I mean, this is a good question. I'm actually of the + +00:43:43.520 --> 00:43:51.999 +idea, at my work, for example, I tried to get rid of all, I + +00:43:52.000 --> 00:43:54.879 +mean, this is probably a typical Emacs user thing, but like, + +00:43:54.880 --> 00:43:59.319 +I mean, I think that just like getting, just like having + +00:43:59.320 --> 00:44:02.559 +Emacs expand to whatever it can get into and whatever it can + +00:44:02.560 --> 00:44:08.839 +automate, like any task, any, like, just like the more you + +00:44:08.840 --> 00:44:13.719 +can kind of get that coded, I actually find that kind of like, + +00:44:13.720 --> 00:44:20.439 +I mean, it is kind of like a meme. Like, yeah, I have to + +00:44:20.440 --> 00:44:24.199 +configure my Emacs until it's fun, and then I'll do it. But I + +00:44:24.200 --> 00:44:27.959 +actually I actually think that maybe for like a normal + +00:44:27.960 --> 00:44:31.999 +software developer, if you invest, if you invest, maybe, + +00:44:32.000 --> 00:44:34.839 +maybe you have like some spare time after you've done all + +00:44:34.840 --> 00:44:39.679 +your tasks, if you invest all that time in, in just like kind + +00:44:39.680 --> 00:44:42.359 +of going through all the workflows, all the, you know, just, + +00:44:42.360 --> 00:44:46.279 +just getting all of that in, in Emacs, then I think that that, + +00:44:46.280 --> 00:44:52.039 +that acts as kind of like a, it kind of like a productivity + +00:44:52.040 --> 00:44:56.759 +multiplier. And so. So I found that, I mean, I found to not + +00:44:56.760 --> 00:44:59.519 +have those boundaries. I mean, obviously there's things + +00:44:59.520 --> 00:45:04.599 +you can't do, like web-based things. I mean, that's a hard + +00:45:04.600 --> 00:45:10.199 +boundary, but that's more because... Yeah, there's really + +00:45:10.200 --> 00:45:13.719 +not much to do about that. Nobody's written a front-end + +00:45:13.720 --> 00:45:18.759 +engine, and too much of the forebrain is occupied with + +00:45:18.760 --> 00:45:22.559 +things that should happen on the "end-users + +00:45:22.560 --> 00:45:29.839 +infrastructure", so to speak. So with like 40 seconds left, I + +00:45:29.840 --> 00:45:33.519 +was going to say a minute, but I guess, any final thoughts? + +00:45:33.520 --> 00:45:40.159 +Yeah, I mean, just thank you for listening, and And thank you + +00:45:40.160 --> 00:45:45.559 +for putting this on. It's a really nice conference to have, + +00:45:45.560 --> 00:45:50.679 +and I'm glad things like this exist. So thank you. Yeah, it's + +00:45:50.680 --> 00:45:54.639 +you and the other folks on this call. Thank you so much, + +00:45:54.640 --> 00:45:58.639 +PlasmaStrike, and all the rest of you for hopping on the BBB + +00:45:58.640 --> 00:46:03.119 +and having such an interesting discussion. Keeps it really + +00:46:03.120 --> 00:46:08.239 +fun for us as organizers. And thanks, everybody, for being + +00:46:08.240 --> 00:46:21.320 +here. diff --git a/2024/captions/emacsconf-2024-papers--writing-academic-papers-in-orgroam--vincent-conus--answers.vtt b/2024/captions/emacsconf-2024-papers--writing-academic-papers-in-orgroam--vincent-conus--answers.vtt new file mode 100644 index 00000000..392644e1 --- /dev/null +++ b/2024/captions/emacsconf-2024-papers--writing-academic-papers-in-orgroam--vincent-conus--answers.vtt @@ -0,0 +1,833 @@ +WEBVTT indexed by sachac + +00:00:00.000 --> 00:00:04.639 +mentally over the next couple of days, but I can assure you + +00:00:04.640 --> 00:00:06.759 +that it will be many organizers in the background also + +00:00:06.760 --> 00:00:10.199 +working. You'll probably get to see us later on. But for now, + +00:00:10.200 --> 00:00:13.639 +without further ado, I want to say hi to Vincent. Hi, + +00:00:13.640 --> 00:00:19.039 +Vincent. Hi, thanks for having me. Yeah, and thanks for + +00:00:19.040 --> 00:00:22.919 +coming and thanks for presenting. I mean, you didn't decide + +00:00:22.920 --> 00:00:25.639 +to go first. It's mostly the time zone for you which decided + +00:00:25.640 --> 00:00:28.919 +for you because I believe you are in Japan, correctly. Yeah, + +00:00:28.920 --> 00:00:33.039 +exactly. So I'm living there now and it's very late. It's + +00:00:33.040 --> 00:00:37.319 +really funny to see everyone saying good morning in the + +00:00:37.320 --> 00:00:39.959 +chat. It's always the same for me. So personally, I'm in + +00:00:39.960 --> 00:00:43.959 +France. So for me, it's only 3 p.m. For you, it's probably 9 or + +00:00:43.960 --> 00:00:47.959 +10 p.m. if I'm correct. Already 11 here, yeah. It's already + +00:00:47.960 --> 00:00:53.519 +11, so thank you for staying up so late for us. And how about we + +00:00:53.520 --> 00:00:55.639 +just get started with the questions because you've just + +00:00:55.640 --> 00:00:59.239 +presented something that is very dear to my heart, which is + +00:00:59.240 --> 00:01:01.959 +writing academic paper with Org Mode, which is, for the + +00:01:01.960 --> 00:01:05.279 +record, how I got started with Org Roam and stuff like this. + +00:01:05.280 --> 00:01:08.799 +So, unless you've got anything else to add on top of your + +00:01:08.800 --> 00:01:11.839 +presentation that wasn't able to fit in, I suggest we just + +00:01:11.840 --> 00:01:16.559 +start taking questions. All right. So yeah, right now I'm + +00:01:16.560 --> 00:01:19.439 +reading the question from IRC and also from the pad. So I + +00:01:19.440 --> 00:01:23.159 +guess I'm gonna take what's already written there. + +NOTE Q: I'd be interested how to start this journey of writing academic papers in Org-Roam when not having used Emacs Org-Mode yet? Thanks! + +00:01:23.160 --> 00:01:27.359 +So the first one is asking, I'd be interested in how to start this + +00:01:27.360 --> 00:01:30.239 +journey to write academic paper in org-roam when not having + +00:01:30.240 --> 00:01:36.639 +used Emacs org mode yet. So I saw this one before and I guess it + +00:01:36.640 --> 00:01:43.039 +would be possible to do that, to use Org documents only + +00:01:43.040 --> 00:01:46.759 +as the way that you are writing papers. Maybe you can + +00:01:46.760 --> 00:01:51.959 +just use that as a template that you're going to export. + +00:01:51.960 --> 00:01:54.959 +If you are familiar with LaTeX, it's going to be more useful, + +00:01:54.960 --> 00:01:59.599 +and maybe more convenient to work with inside of + +00:01:59.600 --> 00:02:04.999 +Emacs. But then I'm not 100% sure if that's... How do you say + +00:02:05.000 --> 00:02:10.799 +that? Maybe, in my opinion, the benefits of using + +00:02:10.800 --> 00:02:14.679 +org-roam in that setup is that you can link the things. For + +00:02:14.680 --> 00:02:18.839 +me, I'm using the search function for org-roam to just + +00:02:18.840 --> 00:02:21.959 +navigate between the files. So that's really some, a good + +00:02:21.960 --> 00:02:26.119 +advantage, but like, yeah, that could be, like Leo said in + +00:02:26.120 --> 00:02:28.039 +the presentation, that's some, maybe that's something you + +00:02:28.040 --> 00:02:35.839 +can start using org-mode with to write papers. So yeah. + +NOTE Q: How about connecting Emacs Org-Roam to Zotero? Is that something you have experience with? + +00:02:35.840 --> 00:02:38.879 +Second question. So how about connecting Emacs or Roam + +00:02:38.880 --> 00:02:42.079 +to Zotero? Is that something that you have experience with? + +00:02:42.080 --> 00:02:47.119 +Not at all. Actually, I used briefly Zotero in the past and I + +00:02:47.120 --> 00:02:51.439 +really didn't like it or didn't really get into that. I don't + +00:02:51.440 --> 00:02:55.599 +know. But right now, + +NOTE Q: Out of curiosity, how do you manage your bibliography? Do you do it from inside Emacs, or using a separate program like Zotero? + +00:02:55.600 --> 00:03:00.319 +I don't connect that at all. The question after, out of + +00:03:00.320 --> 00:03:03.559 +curiosity, how do you manage your bibliography? Do you do it + +00:03:03.560 --> 00:03:06.519 +from inside Emacs or using a separate program, ex: Zotero? + +00:03:06.520 --> 00:03:09.119 +Because personally, I have struggled to do it from Emacs, + +00:03:09.120 --> 00:03:13.879 +though I have wanted to for some time. So the way I manage that + +00:03:13.880 --> 00:03:20.799 +is I just have a couple of .bib files that I edit by hand, where + +00:03:20.800 --> 00:03:25.359 +I put the reference when I find them. + +00:03:25.360 --> 00:03:28.599 +And yeah, I just showed very briefly in the presentation, + +00:03:28.600 --> 00:03:34.119 +but the way. + +00:03:34.120 --> 00:03:39.519 +One of the great thing with the org reference system is that + +00:03:39.520 --> 00:03:43.239 +if you have your bibliographic files that are connected to + +00:03:43.240 --> 00:03:47.959 +that system, you can just like, you can put the link, the + +00:03:47.960 --> 00:03:51.879 +reference to the paper, like click on it from your org note, + +00:03:51.880 --> 00:03:56.479 +and then you can open the PDF. You can open the DOI link to open + +00:03:56.480 --> 00:04:00.719 +the whatever publisher page. + +00:04:00.720 --> 00:04:10.159 +So no, I don't use Zotero and I just edit bib or bib files by + +00:04:10.160 --> 00:04:12.959 +hand in Emacs. + +00:04:12.960 --> 00:04:16.159 +I was just going to add something because you know + +00:04:16.160 --> 00:04:20.919 +org-roam-bibtex is actually one of the packages that I + +00:04:20.920 --> 00:04:25.279 +developed and I got it working with Zotero because for me it + +00:04:25.280 --> 00:04:28.839 +was convenient. I was studying humanities and for me it was + +00:04:28.840 --> 00:04:32.599 +very easy to connect reference taken in my browser with + +00:04:32.600 --> 00:04:36.799 +Zotero and just post-processing them a little bit but it is + +00:04:36.800 --> 00:04:40.279 +possible to make org-roam, org-roam-bibtex and Zotero + +00:04:40.280 --> 00:04:44.959 +work together. But it's a little bit of an involved process to + +00:04:44.960 --> 00:04:49.439 +get everything working in Emacs. + +00:04:49.440 --> 00:04:54.519 +Yeah, for sure. And + +00:04:54.520 --> 00:05:01.999 +yeah, I guess the way I'm doing it, I understand the appeal + +00:05:02.000 --> 00:05:03.839 +for having it integrated in the browser. Maybe + +00:05:03.840 --> 00:05:06.279 +that's something I should look up, actually, because right + +00:05:06.280 --> 00:05:09.359 +now I just like doing it very much by hand, like going on the + +00:05:09.360 --> 00:05:15.199 +publisher page and copying the bibtex block and + +00:05:15.200 --> 00:05:20.039 +just using putting that in my file. Yes, it can be not a very + +00:05:20.040 --> 00:05:23.359 +efficient workflow on that side. But after that, you're + +00:05:23.360 --> 00:05:26.599 +having the PDF and having it inside the note. + +00:05:26.600 --> 00:05:30.759 +Yeah, it's great. Yeah. To some extent, it kind of depends on + +00:05:30.760 --> 00:05:33.319 +the reference system that is used by the field in which you + +00:05:33.320 --> 00:05:36.279 +are or the university in which you're publishing. Because + +00:05:36.280 --> 00:05:39.519 +sometimes, you know, you're going to have some basic BibTeX + +00:05:39.520 --> 00:05:41.479 +file and sometimes you're going to have better BibTeX + +00:05:41.480 --> 00:05:44.959 +files. And those are very different metadata that you need + +00:05:44.960 --> 00:05:49.119 +to reconcile. And depending on which LaTeX compiler you're + +00:05:49.120 --> 00:05:52.439 +using, be it zLaTeX[??], be it regular LaTeX, lualatex, it's + +00:05:52.440 --> 00:05:55.439 +going to be all different. So it's a whole can of worms that + +00:05:55.440 --> 00:05:57.799 +I'm not sure we want to be opening now. But if you are + +00:05:57.800 --> 00:06:00.999 +interested and if you're not too attached about getting + +00:06:01.000 --> 00:06:03.679 +everything right, it's really easy to get started with + +00:06:03.680 --> 00:06:06.319 +stuff like org-roam-bibtex. It's supposed to get you + +00:06:06.320 --> 00:06:11.319 +most of the way down to a working setup. And if you need to get + +00:06:11.320 --> 00:06:14.359 +everything working down to the comma based on your + +00:06:14.360 --> 00:06:16.479 +reference system, that's going to be a little harder. But + +00:06:16.480 --> 00:06:19.439 +it's possible. I managed to do it and many people actually + +00:06:19.440 --> 00:06:22.599 +managed to do it. Okay, anyway, so let's move on to the next + +NOTE Q: How do you start a new document? + +00:06:22.600 --> 00:06:26.679 +question. All right, so the next question asking how do you + +00:06:26.680 --> 00:06:30.999 +start a new document? There are a lot of headers you have to + +00:06:31.000 --> 00:06:34.639 +set up. Do you use a template? I'm curious if you use your + +00:06:34.640 --> 00:06:38.839 +snippets to deal with all of these LaTeX org metacommands. + +00:06:38.840 --> 00:06:44.759 +So I don't use a snippets template of any kind for that. + +00:06:44.760 --> 00:06:47.279 +Probably I should. That's actually a good idea. I'm + +00:06:47.280 --> 00:06:51.279 +probably going to look into that. No, the way I do actually is + +00:06:51.280 --> 00:06:56.199 +I just reuse some previous documents. I copy it, delete all + +00:06:56.200 --> 00:07:01.439 +the contents and adjust it until it works the way I like. + +00:07:01.440 --> 00:07:09.679 +The main issue in general after that step is to make it work + +00:07:09.680 --> 00:07:13.999 +with the template I receive and Let's say if I have some + +00:07:14.000 --> 00:07:20.839 +template that needs to work with another LaTeX compiler, + +00:07:20.840 --> 00:07:26.599 +I'm probably going to try to copy an existing file that I have + +00:07:26.600 --> 00:07:30.959 +that uses the same compiler to save me some work. But yeah, + +00:07:30.960 --> 00:07:37.119 +no, I don't use any snippet or something. Probably I should, + +00:07:37.120 --> 00:07:40.879 +but I'm just doing it the quick and dirty way to just copy some + +00:07:40.880 --> 00:07:41.719 +existing thing. + +NOTE Q: What do you think of using citar with org-roam-bibtex? + +00:07:41.720 --> 00:07:48.319 +Then what do you think of citar with org-roam-bibtex? It seems + +00:07:48.320 --> 00:07:55.999 +that bibtex completion is tied to org-roam-bibtex. I don't + +00:07:56.000 --> 00:08:02.079 +know. I never really looked into citar that much. I + +00:08:02.080 --> 00:08:06.799 +don't know about that. I don't know either, so I'm not going + +00:08:06.800 --> 00:08:07.759 +to be able to help on this one. + +00:08:07.760 --> 00:08:17.119 +Because yeah, the bibtex completion is tied to the overall + +00:08:17.120 --> 00:08:24.799 +bibtex. I guess so. So what I'm interpreting, because I do, + +00:08:24.800 --> 00:08:30.039 +so BibTeX completion is the single motor that drives helm + +00:08:30.040 --> 00:08:32.719 +BibTeX and Ivy BibTeX. Perhaps there's another + +00:08:32.720 --> 00:08:35.679 +alternative now that is using the Vertico stack for + +00:08:35.680 --> 00:08:40.399 +completion. But org-roam-bibtex was interfacing with BibTeX + +00:08:40.400 --> 00:08:46.679 +completion to retrieve all the references from a bib file. + +00:08:46.680 --> 00:08:50.599 +and I assume citar would be something very similar in a way + +00:08:50.600 --> 00:08:54.039 +that it interfaces with a bib file, but I couldn't tell you + +00:08:54.040 --> 00:08:57.439 +more. I need to explore a little more and sadly I haven't + +00:08:57.440 --> 00:09:00.759 +touched any of this stack in like three years, so I'm a little + +00:09:00.760 --> 00:09:03.199 +out of touch. I guess this is what comes with leaving + +00:09:03.200 --> 00:09:07.519 +academia to go work as a corporate developer. I'm no longer + +00:09:07.520 --> 00:09:10.319 +so interested in the publishing process, even though I'm + +00:09:10.320 --> 00:09:12.799 +obviously very appreciative of people who still do, and + +00:09:12.800 --> 00:09:13.679 +especially people who use + +00:09:13.680 --> 00:09:20.239 +Yeah, same here. I definitely going to look into the citar + +00:09:20.240 --> 00:09:23.399 +package to see what's possible. Maybe can be using in some + +00:09:23.400 --> 00:09:26.319 +way that is useful for me. Yeah. + +NOTE Q: Most academic journals insist that papers are formatted in their own custom LaTeX documentclass. Does org-roam make it easy to do that? + +00:09:26.320 --> 00:09:30.919 +And if I go to the next question, so most academic journal + +00:09:30.920 --> 00:09:33.639 +insist that paper are formatted in their own custom LaTeX + +00:09:33.640 --> 00:09:38.199 +document class. Does org-roam make it easy to do that? The + +00:09:38.200 --> 00:09:43.239 +answer is no. That's mostly what I was presenting in the + +00:09:43.240 --> 00:09:44.279 +slide. + +00:09:44.280 --> 00:09:50.839 +Actually, that's also why I made the presentation, because + +00:09:50.840 --> 00:09:59.759 +if someone has a solution, I would gladly take it. No, the way + +00:09:59.760 --> 00:10:05.079 +I do it is that I have to add a I don't have that on top of my head. + +00:10:05.080 --> 00:10:10.599 +plus. Yeah, exactly. So I just make a custom class with the + +00:10:10.600 --> 00:10:16.159 +name of the latex template. In general, I think people use + +00:10:16.160 --> 00:10:19.359 +that to redefine like stuff like section and subsection, + +00:10:19.360 --> 00:10:24.279 +but for me, I just, it shows in the slide where I just map the + +00:10:24.280 --> 00:10:27.239 +section to the same section. I just changed the name of the + +00:10:27.240 --> 00:10:33.719 +class. And this way it allows to import the, the CLS and then + +00:10:33.720 --> 00:10:39.079 +the rest is just like putting the tech template that is + +00:10:39.080 --> 00:10:48.519 +provided either in headers, in LaTeX headers at the top or + +00:10:48.520 --> 00:10:56.079 +Yeah, or just on a LaTeX block in the body of the document if + +00:10:56.080 --> 00:11:02.039 +that's needed, for example, for the acknowledgement. + +00:11:02.040 --> 00:11:05.759 +Sometimes they need some different formatting, but no, + +00:11:05.760 --> 00:11:09.079 +it's not really easy because it needs to modify some + +00:11:09.080 --> 00:11:12.359 +configuration in Unix to do that. Then after that, a little + +00:11:12.360 --> 00:11:15.719 +bit like manually adapt the templates into your org notes. + +00:11:15.720 --> 00:11:18.799 +So that's a little bit some upfront work to do. But once it's + +00:11:18.800 --> 00:11:22.159 +done, your notes are going to be exported exactly like the + +00:11:22.160 --> 00:11:27.319 +template and you don't have to worry about it. Yeah, it's an + +00:11:27.320 --> 00:11:32.679 +interesting topic because the thing about, on one side, you + +00:11:32.680 --> 00:11:36.159 +know, you want to have, when you're using LaTeX, it kind of + +00:11:36.160 --> 00:11:39.359 +translates into you caring a lot about the document that you + +00:11:39.360 --> 00:11:42.879 +produce. Either you care about how quickly you can turn a + +00:11:42.880 --> 00:11:46.719 +plain text document into a very nicely formatted PDF at the + +00:11:46.720 --> 00:11:52.239 +end, or, you know, you just care about the output of your + +00:11:52.240 --> 00:11:54.439 +documents, making sure that everything is properly + +00:11:54.440 --> 00:11:57.039 +formatted. We were talking about references just before, + +00:11:57.040 --> 00:12:00.239 +you know, the formatting rule for references are highly + +00:12:00.240 --> 00:12:04.319 +dependent upon the manual that you're using and, you know, + +00:12:04.320 --> 00:12:07.159 +some people really care about this. And what I found in my + +00:12:07.160 --> 00:12:09.799 +particular experience, my own personal experience + +00:12:09.800 --> 00:12:15.199 +writing for academia, was that I was more in the latter crowd + +00:12:15.200 --> 00:12:17.839 +that really cared about the output format and making sure + +00:12:17.840 --> 00:12:20.599 +everything was correct and it's really a struggle to get + +00:12:20.600 --> 00:12:23.519 +everything working especially when you're transpiling + +00:12:23.520 --> 00:12:27.199 +from Org Mode documents straight into LaTeX. You're + +00:12:27.200 --> 00:12:30.119 +obviously going to be resorting to a number of hacks to get + +00:12:30.120 --> 00:12:32.439 +everything working like Vincent just mentioned with the + +00:12:32.440 --> 00:12:36.519 +class or you're going to end up with many imported files just + +00:12:36.520 --> 00:12:39.999 +to get everything working, but really you're fighting + +00:12:40.000 --> 00:12:42.839 +against the tide if you want to get something a little + +00:12:42.840 --> 00:12:45.759 +different from what is shipping with Walmart. Maybe + +00:12:45.760 --> 00:12:48.479 +everything has gotten better since I was writing my papers, + +00:12:48.480 --> 00:12:53.879 +but generally... Kindly disagree. Yeah, go on. I kindly + +00:12:53.880 --> 00:12:57.159 +disagree. I actually, I'm surprised that a lot of template + +00:12:57.160 --> 00:13:00.679 +is so complex that you don't just change the document class, + +00:13:00.680 --> 00:13:03.359 +but also need to do something else. I'd say it's rather + +00:13:03.360 --> 00:13:05.919 +uncommon. I guess it depends on the area of your search. + +00:13:05.920 --> 00:13:12.599 +Yeah, exactly. I mean, that's it. It just needs CLS and + +00:13:12.600 --> 00:13:17.559 +that's all. Yeah, but it really depends on, as you said, on + +00:13:17.560 --> 00:13:19.639 +the field in which you're publishing. Some fields are a + +00:13:19.640 --> 00:13:22.599 +little more lax with their rules. And just the fact that you + +00:13:22.600 --> 00:13:26.479 +can introduce mathematic formulas kind of makes LaTeX the + +00:13:26.480 --> 00:13:29.919 +de facto for publishing math documents. But when you're + +00:13:29.920 --> 00:13:33.599 +doing humanities, they're more attached to other kinds of + +00:13:33.600 --> 00:13:36.879 +formatting. So I think things are much better, anyway, + +00:13:36.880 --> 00:13:42.919 +since I started five years ago. Oh, yeah. I have heard from + +00:13:42.920 --> 00:13:46.639 +humanities people Microsoft Word. Yes. Sadly, that's the + +00:13:46.640 --> 00:13:51.879 +format we're fighting against. Yeah. As for document, + +00:13:51.880 --> 00:13:57.079 +yeah, for LaTeX classes, it is a customization and it is the + +00:13:57.080 --> 00:14:00.319 +right way to customize this thing, that's all. I'm not sure + +00:14:00.320 --> 00:14:03.999 +why it's a hack. It's not a hack. It's an actual user + +00:14:04.000 --> 00:14:08.959 +customization. Right. So, we've got about four more + +00:14:08.960 --> 00:14:13.559 +minutes of question. Vincent, we've got a couple of Yeah. So + +00:14:13.560 --> 00:14:15.319 +I've got a little voice talking in my ear telling me that + +00:14:15.320 --> 00:14:17.839 +exactly the same thing. So we've got about two more + +00:14:17.840 --> 00:14:21.159 +questions. Vincent, do you want to field them? Sure. So, are + +NOTE Q: Are you using zotra or org-ref? + +00:14:21.160 --> 00:14:27.799 +you using Zotra (sending some link) or org-ref? No, I don't. + +00:14:27.800 --> 00:14:31.879 +I've never heard of Zotra, actually. Looking that very + +00:14:31.880 --> 00:14:34.639 +briefly. That's something I'm going to have to look into. + +00:14:34.640 --> 00:14:38.519 +Apparently, the short for Zotero translator, so that might + +00:14:38.520 --> 00:14:41.759 +be something useful for me since I'm not using Zotero yet, + +00:14:41.760 --> 00:14:45.119 +maybe trying to combine. But no, I've never really tried + +NOTE Q: How much of this is tied to org-roam specifically? + +00:14:45.120 --> 00:14:52.519 +these, but I will. Then the last question, how much of this is + +00:14:52.520 --> 00:14:59.479 +tied to Org-roam specifically? Not a lot. Actually apart + +00:14:59.480 --> 00:15:02.959 +from the org-roam-bibtex, I think. + +00:15:02.960 --> 00:15:11.919 +Maybe I'm mixing up stuff there. But no, not a lot actually. + +00:15:11.920 --> 00:15:14.999 +It's just the fact that I'm using that as a in my org-roam + +00:15:15.000 --> 00:15:22.159 +system. But apart from that, most of, I mean, actually all of + +00:15:22.160 --> 00:15:27.519 +the exports can be done from a normal org-note or any other + +00:15:27.520 --> 00:15:31.799 +knowledge management system that you do with org-notes. So + +00:15:31.800 --> 00:15:34.119 +no, it's not specifically tied to org-roam, just that + +00:15:34.120 --> 00:15:38.399 +that's the way I'm using it. And I'm showing it this way, but + +00:15:38.400 --> 00:15:41.759 +yeah, actually the export process can be, can be done with, + +00:15:41.760 --> 00:15:49.839 +Yes, specifically tight work room. Yeah, just confirming + +00:15:49.840 --> 00:15:54.519 +this, the only way Org Roam intervenes into this process is + +00:15:54.520 --> 00:15:57.439 +just referencing + +00:15:57.440 --> 00:16:00.319 +bibliography elements. It just kind of intercedes a little + +00:16:00.320 --> 00:16:03.319 +bit between what Org Roam usually does. But when it comes to + +00:16:03.320 --> 00:16:08.759 +the exports to LaTeX and PDF eventually, that's completely + +00:16:08.760 --> 00:16:13.279 +deferring to org exports. So, ox-latex and all of this. So, + +00:16:13.280 --> 00:16:16.039 +we are not intervening in any way into this transpiling + +00:16:16.040 --> 00:16:20.719 +format. One comment. Yeah, I don't know if I imagine it is, + +00:16:20.720 --> 00:16:25.759 +but it looked from the slides that it was our graph was it. + +00:16:25.760 --> 00:16:35.439 +Sorry, that it was? org-ref, org-ref. + +00:16:35.440 --> 00:16:42.719 +Yes. Because it is a link system for citations. Built-in + +00:16:42.720 --> 00:16:46.359 +citations, which is, there is a built-in citation system in + +00:16:46.360 --> 00:16:50.639 +art mode. It uses, it doesn't use links. It has a special way + +00:16:50.640 --> 00:16:57.359 +to cite things. Yeah, because I believe, yeah, go on please, + +00:16:57.360 --> 00:17:01.519 +Vincent. No, I just wanted to say, in that case, I'm using the + +00:17:01.520 --> 00:17:10.119 +link with the cite command. I'm not using the org-roam link + +00:17:10.120 --> 00:17:14.079 +for the reference. I didn't really show that very + +00:17:14.080 --> 00:17:17.679 +carefully. But then, yeah, it's a site element that is + +00:17:17.680 --> 00:17:21.639 +exported. So the roam part is just like, you can access the + +00:17:21.640 --> 00:17:26.519 +org notes that you have attached to a reference paper. But + +00:17:26.520 --> 00:17:31.879 +that's it. Okay, because I was confused by why the + +00:17:31.880 --> 00:17:35.919 +bibliography is a link, why style is a link, because it is the + +00:17:35.920 --> 00:17:37.239 +approach org-ref uses. + +00:17:37.240 --> 00:17:47.839 +Ah, right. Okay, I see. Yeah, the thing is, actually I don't + +00:17:47.840 --> 00:17:52.159 +know why, but In my experience, using the org-roam, + +00:17:52.160 --> 00:17:57.599 +org-roam-bibtex links doesn't export or doesn't export + +00:17:57.600 --> 00:18:01.999 +properly. So like adding them with the org-ref-cite worked + +00:18:02.000 --> 00:18:05.359 +better. So that's, that's why I'm using these. If I may + +00:18:05.360 --> 00:18:07.439 +interject. If you're using org-ref-cite, you're using + +00:18:07.440 --> 00:18:11.319 +org-ref-for-export, which is slightly different. I'm + +00:18:11.320 --> 00:18:14.039 +going to interject very quickly because sadly we are a + +00:18:14.040 --> 00:18:15.919 +little pressed for time because we are heading into the next + +00:18:15.920 --> 00:18:18.559 +discussion. So just very quickly, if you want to continue + +00:18:18.560 --> 00:18:21.279 +the discussion, the BBB room is available at + +00:18:21.280 --> 00:18:24.319 +emacsconf-org. You can go to the talk and get the link to join + +00:18:24.320 --> 00:18:27.319 +the BBB. And the stream will be moving on to the next stream in + +00:18:27.320 --> 00:18:30.239 +about 5 to 10 seconds. So I'll see you on the other side. And + +00:18:30.240 --> 00:18:36.439 +thank you, Vincent. Thank you. All right, sorry for cutting + +00:18:36.440 --> 00:18:38.839 +a little abruptly. It's because we use crontabs to move to + +00:18:38.840 --> 00:18:42.519 +the next talk. And sadly, I don't have any leeway on this. So + +00:18:42.520 --> 00:18:45.279 +feel free to continue the discussion. I'll be moving on to + +00:18:45.280 --> 00:18:48.639 +make sure everything is working. So enjoy the discussion. + +00:18:48.640 --> 00:19:00.720 +Thank you very much. Bye-bye. diff --git a/2024/captions/emacsconf-2024-pgmacs--pgmacs-browsing-and-editing-postgresql-databases-from-emacs--eric-marsden--answers.vtt b/2024/captions/emacsconf-2024-pgmacs--pgmacs-browsing-and-editing-postgresql-databases-from-emacs--eric-marsden--answers.vtt new file mode 100644 index 00000000..c361ae62 --- /dev/null +++ b/2024/captions/emacsconf-2024-pgmacs--pgmacs-browsing-and-editing-postgresql-databases-from-emacs--eric-marsden--answers.vtt @@ -0,0 +1,873 @@ +WEBVTT + +00:00:00.000 --> 00:00:10.839 +And I believe we are live. Hi, Eric, how are you doing? Very + +00:00:10.840 --> 00:00:15.599 +well, thanks. It's a pleasure to have you as one of our + +00:00:15.600 --> 00:00:19.639 +speakers but it's also very nice to see you present about + +00:00:19.640 --> 00:00:24.239 +pgmacs because I found your talk to be very didactic and very + +00:00:24.240 --> 00:00:26.479 +visual. So thank you for taking the time to do a very nice + +00:00:26.480 --> 00:00:31.079 +presentation. I wanted to give the opportunity as I do with + +00:00:31.080 --> 00:00:36.279 +other speakers to maybe talk about some stuff that you could + +00:00:36.280 --> 00:00:39.279 +not include into the talk because of the format. So is there + +00:00:39.280 --> 00:00:41.319 +anything you'd like to share with the viewers that you + +00:00:41.320 --> 00:00:45.439 +weren't able to include? + +00:00:45.440 --> 00:00:50.719 +Oh, I think I gave most of the most of the relevant + +00:00:50.720 --> 00:00:54.759 +information. This is a fairly young application. I've been + +00:00:54.760 --> 00:00:58.159 +developing this since roughly the beginning of the year. So + +00:00:58.160 --> 00:01:02.879 +there are probably some rough edges that people will run + +00:01:02.880 --> 00:01:07.479 +into if they use Postgres differently from what I do. Or they + +00:01:07.480 --> 00:01:10.919 +hear maybe conflicts with some other Emacs packages that + +00:01:10.920 --> 00:01:14.959 +people use that I don't use. So I would really welcome people + +00:01:14.960 --> 00:01:19.359 +trying it out and sending out bug reports if they do + +00:01:19.360 --> 00:01:23.479 +encounter some. Yeah, I mean, it's usually... Go on, + +00:01:23.480 --> 00:01:29.079 +please. Yeah, that would certainly help to make sure it's + +00:01:29.080 --> 00:01:31.599 +nice and robust. And of course, if you're letting this loose + +00:01:31.600 --> 00:01:35.959 +on some production database that you might have, you want + +00:01:35.960 --> 00:01:41.239 +this to be quite robust, obviously. Yeah, indeed. Because + +00:01:41.240 --> 00:01:43.879 +usually, you know, when you start publishing packages like + +00:01:43.880 --> 00:01:46.599 +this, that's when you realize that it has bad interaction + +00:01:46.600 --> 00:01:49.759 +with other modes in the Emacs of other persons. But + +00:01:49.760 --> 00:01:52.039 +especially when you're dealing with databases, you also + +00:01:52.040 --> 00:01:54.639 +realize that the domain space of what you're trying to do + +00:01:54.640 --> 00:01:58.999 +with your mode also is hugely dependent on what people have + +00:01:59.000 --> 00:02:03.839 +in their database, which schema they have. So, indeed, if + +00:02:03.840 --> 00:02:05.839 +you have been interested, and I think plenty of people have + +00:02:05.840 --> 00:02:09.039 +been interested by what you've presented, part of the + +00:02:09.040 --> 00:02:11.679 +reason a software becomes great is that you've got plenty of + +00:02:11.680 --> 00:02:14.759 +people making bug reports and making sure that all the + +00:02:14.760 --> 00:02:18.799 +faults have been ironed out. So, you know what your task is. I + +00:02:18.800 --> 00:02:21.319 +will also ask you, particularly right now, people + +00:02:21.320 --> 00:02:24.519 +currently viewing, to add your questions on the pad as + +00:02:24.520 --> 00:02:27.639 +usual, because you've had plenty of nice reactions, but I'm + +00:02:27.640 --> 00:02:30.799 +sure you have plenty of questions as well. So Eric, what I'll + +00:02:30.800 --> 00:02:33.759 +be doing, I'll be reading you the questions so that it's a + +00:02:33.760 --> 00:02:37.439 +little more didactic. Starting with the first one. This is + +NOTE Q: Do you know if PGmacs works with TRAMP? + +00:02:37.440 --> 00:02:41.079 +brilliant, thank you. Do you know if pgmacs works with TRAMP? + +00:02:41.080 --> 00:02:44.119 +I often use TRAMP multi-hop to access databases both + +00:02:44.120 --> 00:02:46.959 +remotely when accessing via bastion server and locally + +00:02:46.960 --> 00:02:49.639 +when using OCI containers. I believe you've already + +00:02:49.640 --> 00:02:53.079 +answered but if you could just perhaps read your answer as + +00:02:53.080 --> 00:02:58.799 +well for everyone to benefit from it. Yep, sure, that's my + +00:02:58.800 --> 00:03:02.319 +comment indeed. So I haven't currently implemented any + +00:03:02.320 --> 00:03:07.559 +TRAMP support. I'm not sure that TRAMP is really useful for + +00:03:07.560 --> 00:03:11.439 +this type of situation, because as I understand it, TRAMP is + +00:03:11.440 --> 00:03:17.159 +establishing SSH connections itself to remote servers. + +00:03:17.160 --> 00:03:22.519 +pgmacs is doing the same thing, so it doesn't currently have + +00:03:22.520 --> 00:03:27.399 +any support for hooking in with the TRAMP support. Right. + +00:03:27.400 --> 00:03:31.439 +Pardon me if I missed the presentation. Oh, go on, please. I + +00:03:31.440 --> 00:03:34.359 +guess you could set up an SSH tunnel. It does work with an SSH + +00:03:34.360 --> 00:03:39.919 +tunnel, obviously, but there's no support for hooking into + +00:03:39.920 --> 00:03:43.799 +an SSH tunnel that TRAMP might be able to create. I'm not sure + +00:03:43.800 --> 00:03:46.959 +TRAMP actually uses SSH tunnels rather than direct + +00:03:46.960 --> 00:03:51.439 +commands, but anyway. Yeah, I think that might be useful. + +00:03:51.440 --> 00:03:54.759 +Yeah, I don't know either. I don't have the answer whether + +00:03:54.760 --> 00:03:59.039 +TRAMP actually can create tunnels like this. I'm usually + +00:03:59.040 --> 00:04:02.039 +used to TRAMP connecting to an endpoint, be it a directory or + +00:04:02.040 --> 00:04:06.239 +a file, and the tunnel is just you accessing the file. But + +00:04:06.240 --> 00:04:08.959 +usually, if you're trying to access a remote Postgres + +00:04:08.960 --> 00:04:12.039 +database, you would probably manage the port forwarding in + +00:04:12.040 --> 00:04:15.199 +a separate terminal just to be able to make sure that + +00:04:15.200 --> 00:04:17.759 +everything maps correctly to your machine, and then you + +00:04:17.760 --> 00:04:21.959 +would launch pgmacs with the forward port information. + +00:04:21.960 --> 00:04:25.519 +That's, I assume, how you would do it anyway. But yeah, I + +00:04:25.520 --> 00:04:29.119 +mean, if you could specify what you mean by TRAMP support and + +00:04:29.120 --> 00:04:31.839 +if you have something specific in mind, I'm talking to the + +00:04:31.840 --> 00:04:35.119 +questioner, feel free to specify and we'll see if you can + +00:04:35.120 --> 00:04:38.239 +answer it. But in the meantime, moving to the next question. + +NOTE Q: How did you come up with this brilliant idea? + +00:04:38.240 --> 00:04:41.999 +Great work, I'm impressed. How did you come up with this + +00:04:42.000 --> 00:04:49.079 +brilliant idea, I assume, to create pgmacs? Well, thanks for + +00:04:49.080 --> 00:04:52.839 +the compliment. It's a lot of fun developing something + +00:04:52.840 --> 00:04:57.799 +which is, as I said, such a small amount of code and which + +00:04:57.800 --> 00:05:02.359 +provides quite a bit of useful functionality. In + +00:05:02.360 --> 00:05:06.839 +particular, if you compare it with existing Terminal mode + +00:05:06.840 --> 00:05:12.799 +applications for manipulating Postgres data, they are + +00:05:12.800 --> 00:05:19.279 +not as extensible as Emacs is naturally. So I actually got + +00:05:19.280 --> 00:05:23.439 +the idea for developing this when I first tested out the + +00:05:23.440 --> 00:05:27.439 +SQLite mode, which is available in Emacs 29.1. + +00:05:27.440 --> 00:05:31.879 +And I thought, well, that's really quite impressive. And it + +00:05:31.880 --> 00:05:37.359 +allows you to delete rows and insert content and so on. And I + +00:05:37.360 --> 00:05:42.359 +was thinking, yeah, Emacs is a, is a useful environment to do + +00:05:42.360 --> 00:05:50.079 +that. And since several years ago, when I was doing my PhD, so + +00:05:50.080 --> 00:05:53.999 +to avoid doing my PhD, I was developing Emacs, I was + +00:05:54.000 --> 00:05:58.399 +developing stuff in Emacs Lisp and one of the libraries I + +00:05:58.400 --> 00:06:02.959 +developed was an interface to Postgres over the network. So + +00:06:02.960 --> 00:06:08.039 +that's the library called pg.el, which is used by pgmacs to + +00:06:08.040 --> 00:06:14.239 +access Postgres and to do all the parsing of data which + +00:06:14.240 --> 00:06:19.279 +arrives in Postgres formats into the Emacs Lisp into the + +00:06:19.280 --> 00:06:22.999 +Emacs corresponding versions. So, for example, integers + +00:06:23.000 --> 00:06:25.399 +are passed as Emacs integers, floating point numbers as + +00:06:25.400 --> 00:06:30.839 +floating point numbers, and so on. Right, yeah. I mean, it's + +00:06:30.840 --> 00:06:34.439 +pretty needed, obviously, when you have such a tooling like + +00:06:34.440 --> 00:06:37.359 +this, to make sure that the type conversion works properly, + +00:06:37.360 --> 00:06:39.879 +because the types that you have in Postgres do not + +00:06:39.880 --> 00:06:43.879 +necessarily map over to what we have in Emacs. Like, I'm + +00:06:43.880 --> 00:06:49.239 +interested, how would you handle g's and b columns in pgmacs? + +00:06:49.240 --> 00:06:55.039 +JSON is mapped to an edis dict, a dictionary. + +00:06:55.040 --> 00:07:03.759 +It depends on the top level object type for your JSON column. + +00:07:03.760 --> 00:07:07.599 +If it's an array, it's mapped to an Emacs Lisp array. If it's a + +00:07:07.600 --> 00:07:12.639 +dict, which is most common, it's mapped to an Emacs Lisp + +00:07:12.640 --> 00:07:17.679 +dictionary. All right, well it makes perfect sense. So I can + +00:07:17.680 --> 00:07:21.839 +break in with a question. Thanks, I just helped myself to the + +00:07:21.840 --> 00:07:26.159 +BBB privilege of kind of running around backstage, being a + +00:07:26.160 --> 00:07:31.679 +helper backstage. So thanks for your awesome talk, Eric. I + +00:07:31.680 --> 00:07:36.719 +super appreciated it. You know, I noticed that you that + +00:07:36.720 --> 00:07:43.159 +you're on a slightly older version of Emacs that I deal with + +00:07:43.160 --> 00:07:49.519 +in helping with producing the Windows binaries I run into + +00:07:49.520 --> 00:07:53.839 +and with some other stuff I do. I'm dealing with that + +00:07:53.840 --> 00:07:56.919 +friction of sometimes I've got some work of my own that + +00:07:56.920 --> 00:07:59.719 +applies against a specific version of Emacs and it's a bunch + +00:07:59.720 --> 00:08:02.519 +of work to think about moving it forward. Just curious if you + +00:08:02.520 --> 00:08:06.479 +started thinking about that or if you routine, if that's a + +00:08:06.480 --> 00:08:09.919 +routine that you haven't done or there's something maybe + +00:08:09.920 --> 00:08:14.599 +specifically going on with, you know, with trunk + +00:08:14.600 --> 00:08:20.599 +development that looks intimidating to deal with. Thanks + +00:08:20.600 --> 00:08:24.959 +for the comment. I'm not sure I'm using a really old version + +00:08:24.960 --> 00:08:29.239 +for Windows. I don't really develop often on Windows, but I I + +00:08:29.240 --> 00:08:32.639 +occasionally check that it works, and I took a screenshot + +00:08:32.640 --> 00:08:34.799 +that I included in the slides here, but I think I'm using + +00:08:34.800 --> 00:08:40.559 +29.4, the current version on Windows. I thought I saw 29.1, + +00:08:40.560 --> 00:08:48.839 +so that's probably my, I probably missed it when it went by. + +00:08:48.840 --> 00:08:54.879 +My bad. No, no, I use it via the choco package updater so that + +00:08:54.880 --> 00:08:58.479 +updates the Emacs version quite easily on Windows. So + +00:08:58.480 --> 00:09:03.079 +thanks for your work on maintaining Windows binaries. I + +00:09:03.080 --> 00:09:07.519 +realize that was- I sit downstream at the end of a lot of other + +00:09:07.520 --> 00:09:11.399 +people's hard work and then just focus on trying to QA well + +00:09:11.400 --> 00:09:15.559 +and help catch problems early. It's really fun. But of + +00:09:15.560 --> 00:09:16.399 +course, my pleasure. + +00:09:16.400 --> 00:09:21.799 +Coming back to the previous question, so the the + +00:09:21.800 --> 00:09:26.919 +questionnaire actually provided a little more context. So + +NOTE TRAMP continued + +00:09:26.920 --> 00:09:30.599 +with docker.el, kubel, etc, it's often possible to, for + +00:09:30.600 --> 00:09:33.919 +example, select a container pod or whatever that is hosted + +00:09:33.920 --> 00:09:36.639 +on the machine you've connected to via TRAMP, such as + +00:09:36.640 --> 00:09:41.799 +Podman, colon image colon path and trigger a terminal shell + +00:09:41.800 --> 00:09:44.959 +as well as pull forward on other similar things. It'd be nice + +00:09:44.960 --> 00:09:47.679 +to be able to use this tool in a similar way since it would open + +00:09:47.680 --> 00:09:49.919 +up the ability to use it with complex connection + +00:09:49.920 --> 00:09:53.679 +configuration. Doing SSH tunnel manually is of course + +00:09:53.680 --> 00:09:56.879 +totally fine in practice and if it is actually the case + +00:09:56.880 --> 00:10:01.319 +personally when I need to remote into a kubernetes machine I + +00:10:01.320 --> 00:10:05.239 +use POSIX script that I use on most of my machines but I don't + +00:10:05.240 --> 00:10:08.599 +do it inside Emacs. But yeah, if such a thing is possible via + +00:10:08.600 --> 00:10:11.039 +TRAMP, it definitely feels like it would be possible to do + +00:10:11.040 --> 00:10:14.919 +something similar in pgmacs. So perhaps that's a path of + +00:10:14.920 --> 00:10:19.559 +investigation for you that has opened up. Yeah, thanks for + +00:10:19.560 --> 00:10:22.759 +these comments. I'll look into that indeed if people have + +00:10:22.760 --> 00:10:26.159 +some shortcuts registered in TRAMP. So not for a terminal, + +00:10:26.160 --> 00:10:29.599 +because pgmacs won't work through a terminal, but through a + +00:10:29.600 --> 00:10:33.439 +port forward, then that would be convenient. I'll see how + +00:10:33.440 --> 00:10:38.639 +easy that is to set up. Yeah, I'm pretty sure the way it works + +00:10:38.640 --> 00:10:41.279 +is that it starts some processes in the background in Emacs + +00:10:41.280 --> 00:10:45.359 +just to either maintain the port forward or to maybe remap + +00:10:45.360 --> 00:10:49.239 +some kubecon things or whatever. So with pgmacs, + +00:10:49.240 --> 00:10:51.879 +considering complex pipelines to get to the end + +00:10:51.880 --> 00:10:54.679 +destination, it feels like it would be possible to do + +00:10:54.680 --> 00:10:57.439 +something. But perhaps it's not the responsibility of + +00:10:57.440 --> 00:11:00.199 +pgmacs, perhaps it's the responsibility of another, + +00:11:00.200 --> 00:11:03.639 +perhaps something that would target TRAMP more so than + +00:11:03.640 --> 00:11:08.399 +pgmacs. But it's nice to see again how the beauty of Emacs + +00:11:08.400 --> 00:11:12.119 +is that everything is Elisp at the end, and the way they + +00:11:12.120 --> 00:11:16.079 +interact, you might want to question yourself whether this + +00:11:16.080 --> 00:11:18.919 +belongs more to pgmacs or more to TRAMP, but at the end of the + +00:11:18.920 --> 00:11:22.439 +day, both applications will be able to benefit from the + +00:11:22.440 --> 00:11:24.759 +functions of the other. So that's the beauty of the + +00:11:24.760 --> 00:11:29.159 +philosophy right here. I do see... Absolutely, I agree. + +00:11:29.160 --> 00:11:32.279 +Sorry, before we move to different questions, an + +00:11:32.280 --> 00:11:36.759 +additional point. I should point out that to warn people + +00:11:36.760 --> 00:11:41.159 +that probably running over an SSH tunnel is going to be a bit + +00:11:41.160 --> 00:11:46.839 +slow. I mostly use it on my own machine via a local Unix + +00:11:46.840 --> 00:11:50.439 +connection. And for some reason that I haven't understood, + +00:11:50.440 --> 00:11:55.119 +pgmacs is quite a bit slower when it's even connecting to the + +00:11:55.120 --> 00:12:00.359 +same database on the local machine, but via Emacs' network + +00:12:00.360 --> 00:12:05.039 +support instead of via the Unix socket support. There is + +00:12:05.040 --> 00:12:11.639 +like a factor 10 difference in throughput and in latency. I + +00:12:11.640 --> 00:12:15.839 +don't really understand why currently, because it's using + +00:12:15.840 --> 00:12:21.919 +exactly the same Emacs Lisp level primitives. And when you + +00:12:21.920 --> 00:12:24.799 +do this using other libraries like libpq, which is the + +00:12:24.800 --> 00:12:30.639 +Postgres standard official library for connecting to + +00:12:30.640 --> 00:12:34.319 +Postgres, there's not such a performance difference. So + +00:12:34.320 --> 00:12:39.759 +there's probably something that is not working perfectly + +00:12:39.760 --> 00:12:43.879 +in the Emacs network support. I'll have to see whether I can + +00:12:43.880 --> 00:12:48.679 +investigate how to improve that performance. Yeah, I'm + +00:12:48.680 --> 00:12:52.999 +going to say it sounds like a great bug to have because it + +00:12:53.000 --> 00:12:57.319 +feels like it will allow you to dig deeper into Emacs to + +00:12:57.320 --> 00:12:59.679 +understand what is going on here. Because as you said, + +00:12:59.680 --> 00:13:01.519 +normally it's supposed to work exactly the same, + +00:13:01.520 --> 00:13:04.319 +especially if it's still in your local machine, but it + +00:13:04.320 --> 00:13:07.919 +doesn't. Personally, that's the kind of bug that I really + +00:13:07.920 --> 00:13:11.199 +like and that I'd like to spend more time investigating. So + +00:13:11.200 --> 00:13:14.759 +perhaps you might think otherwise, but I wish you luck on the + +00:13:14.760 --> 00:13:18.599 +debugging with this particular matter. All right, moving + +00:13:18.600 --> 00:13:21.519 +to the last question that we have and then we'll probably go + +00:13:21.520 --> 00:13:22.965 +on a little bit of a break. + +NOTE Q: Is sqlite-mode also capable of all of this functionality (table relations, etc)? If not, will it be possible to abstract out this functionality from pgmacs somehow? + +00:13:22.966 --> 00:13:25.399 +Question. Is SQLite mode also + +00:13:25.400 --> 00:13:28.439 +capable of all of this functionality, table relations, + +00:13:28.440 --> 00:13:31.559 +etc.? If not, would it be possible to abstract out this + +00:13:31.560 --> 00:13:33.279 +functionality from pgmacs somehow? + +00:13:33.280 --> 00:13:41.319 +So I'm not very familiar with SQLite because I don't really + +00:13:41.320 --> 00:13:46.439 +use it very much myself. I'm not sure I can answer that + +00:13:46.440 --> 00:13:53.079 +question. Sorry about that. I think it is probably a bit more + +00:13:53.080 --> 00:13:56.639 +basic because SQLite itself is quite a bit more basic in + +00:13:56.640 --> 00:14:01.639 +terms of the types of indexes it's able to support and the + +00:14:01.640 --> 00:14:09.199 +types of constraints it's able to support. Is it relevant to + +00:14:09.200 --> 00:14:13.799 +create an abstract API for connecting to databases? I think + +00:14:13.800 --> 00:14:19.639 +there is already actually a library that abstracts out from + +00:14:19.640 --> 00:14:25.439 +SQLite and Postgres. Postgres, when you connect to it via a + +00:14:25.440 --> 00:14:29.159 +PSQL subsystem, + +00:14:29.160 --> 00:14:38.439 +it might be worthwhile doing that, but there are often a few + +00:14:38.440 --> 00:14:42.279 +minor differences in SQL syntax and so on between + +00:14:42.280 --> 00:14:45.879 +databases. So it might be difficult to have something that + +00:14:45.880 --> 00:14:53.159 +really works with generic queries in an effective way. All + +00:14:53.160 --> 00:14:58.239 +these SQL dialects are a little bit different, + +00:14:58.240 --> 00:15:02.319 +unfortunately. So there was another question about I was + +00:15:02.320 --> 00:15:06.510 +just going to read out the next question. + +NOTE Q: Would it be possible to move it into Emacs tree? Are the maintainers interested in it? + +00:15:06.511 --> 00:15:07.519 +So have you thought + +00:15:07.520 --> 00:15:12.559 +about integrating your work into the Emacs tree? Do you know + +00:15:12.560 --> 00:15:17.599 +if people are interested? This was a question from the past. + +00:15:17.600 --> 00:15:24.639 +Yeah, I think it's probably a bit young to do so, so far. + +00:15:24.640 --> 00:15:30.119 +I'm updating it quite regularly. Maybe once it's more + +00:15:30.120 --> 00:15:35.399 +stabilized, I wouldn't necessarily object to this. I have + +00:15:35.400 --> 00:15:38.559 +some sort of philosophical objections to giving away my + +00:15:38.560 --> 00:15:42.519 +copyright, so I'm not sure that will actually be possible. + +00:15:42.520 --> 00:15:48.079 +Oh, that'd be interesting. I'd love to get you on maybe a + +00:15:48.080 --> 00:15:51.639 +panel talk about that sometime. Something I'd think about. + +00:15:51.640 --> 00:15:55.999 +Well, from a very simple point of view, I think that the + +00:15:56.000 --> 00:16:01.159 +copyright and the system works well with the existing + +00:16:01.160 --> 00:16:05.319 +license and without a license transfer, so I don't feel that + +00:16:05.320 --> 00:16:07.766 +the, sorry, without a copyright transfer, + +00:16:07.767 --> 00:16:14.679 +I don't feel that the copyright transfer is really a necessary step for + +00:16:14.680 --> 00:16:21.639 +taking things away from maintainers. It feels like asking + +00:16:21.640 --> 00:16:26.559 +the maintainers to give up on some of their copyright... + +00:16:26.560 --> 00:16:29.999 +Indeed. Yeah, I see where that's a little beyond our scope, + +00:16:30.000 --> 00:16:33.519 +but it's a fascinating topic and I appreciate your sharing + +00:16:33.520 --> 00:16:36.959 +your views there. I mean, that sounds like a whole topic of + +00:16:36.960 --> 00:16:41.599 +its own, frankly. + +00:16:41.600 --> 00:16:47.039 +Yeah. Corwin, do you want to fill the last question? Sure. So + +00:16:47.040 --> 00:16:52.039 +the question was, I almost missed this one, so glad I didn't. + +00:16:52.040 --> 00:16:53.849 +This may have been answered already. + +NOTE Q: What do you use for the in-buffer tables? Vtable? + +00:16:53.850 --> 00:16:55.159 +What do you use for + +00:16:55.160 --> 00:17:00.039 +in-buffer tables? Do you use vtable? Yep. Thanks for the + +00:17:00.040 --> 00:17:04.599 +question. It is indeed vtable. However, it's not really + +00:17:04.600 --> 00:17:10.919 +vtable. It's a fork that I made, which is called pgmix table. + +00:17:10.920 --> 00:17:17.199 +because Vtable doesn't have exactly the right + +00:17:17.200 --> 00:17:22.119 +functionality in particular for recoloring rows when you + +00:17:22.120 --> 00:17:28.239 +add a row. So I've currently forked this. I'm thinking about + +00:17:28.240 --> 00:17:36.359 +giving those back as patches to Vtable, plausibly. + +00:17:36.360 --> 00:17:40.719 +I know that there is some ongoing work also on vTable in the + +00:17:40.720 --> 00:17:45.839 +core. So I'll have to look at what is plausible to feed back + +00:17:45.840 --> 00:17:46.719 +into the main version. + +00:17:46.720 --> 00:17:55.199 +All right, great. I think we are nearing the end of the Q&A. We + +00:17:55.200 --> 00:17:59.079 +are due to move to the next talk in about three minutes now. I + +00:17:59.080 --> 00:18:02.719 +can fill 30 seconds or a minute of that with I guess one more + +00:18:02.720 --> 00:18:05.079 +maybe back and forth and I'll try to be quicker this time. + +00:18:05.080 --> 00:18:08.879 +First of all, thanks for your kind remarks. But my question + +00:18:08.880 --> 00:18:11.839 +wasn't really about Windows so much, it was just how I'm + +00:18:11.840 --> 00:18:16.639 +relating... So have you, let me put it more simply, have you + +NOTE Integrating with Emacs 30? + +00:18:16.640 --> 00:18:20.639 +started looking at integrating with Emacs 30 or with the + +00:18:20.640 --> 00:18:24.679 +master branch at all? Do you have any sense of how much work + +00:18:24.680 --> 00:18:27.079 +it's going to be for you to carry things forward there? I've + +00:18:27.080 --> 00:18:31.039 +tested it with the pre-release, yes. I mean, just a very + +00:18:31.040 --> 00:18:35.079 +basic testing and everything works perfectly. There's + +00:18:35.080 --> 00:18:39.799 +really no... There was no difference that I have noticed + +00:18:39.800 --> 00:18:46.279 +between 29.4 and the 30 pre-release on the aspects that I use + +00:18:46.280 --> 00:18:48.959 +at least in Emacs. Neato. + +00:18:48.960 --> 00:18:56.439 +That was it, Leo. Thanks for letting me back in for one more + +00:18:56.440 --> 00:18:58.799 +bite at the apple there. And I appreciate everybody tuning + +00:18:58.800 --> 00:19:03.479 +in and participating in the Q&A and this awesome talk. + +00:19:03.480 --> 00:19:06.879 +Thanks for your questions. That was great. Yeah, and thank + +00:19:06.880 --> 00:19:10.319 +you for answering them and for the presentation as well. So + +00:19:10.320 --> 00:19:14.199 +we'll be moving in about two minutes to the next talk, which + +00:19:14.200 --> 00:19:20.159 +is pre-recorded as well. Well, we didn't really give you the + +00:19:20.160 --> 00:19:29.399 +chance, Eric, to have the last word. So do you have any last + +00:19:29.400 --> 00:19:29.799 +word? + +00:19:29.800 --> 00:19:34.479 +please try it out, try out pgmacs and send some feedback + +00:19:34.480 --> 00:19:39.279 +that'll help improve it over time. Sure, great. Well, thank + +00:19:39.280 --> 00:19:41.559 +you so much, Eric, for taking the time to come to the + +00:19:41.560 --> 00:19:45.999 +conference, and we'll see you soon. Thank you. Bye, + +00:19:46.000 --> 00:19:50.279 +everyone. Bye. And we'll be live with the next talk in about 1 + +00:19:50.280 --> 00:19:53.119 +minute 30. So we'll take a little bit of a breather, go make + +00:19:53.120 --> 00:19:56.599 +some coffee, go take a bio break. We'll be back soon. See you + +00:19:56.600 --> 00:20:01.880 +in a bit. diff --git a/2024/captions/emacsconf-2024-project--managing-writing-project-metadata-with-orgmode--blaine-mooers--answers.vtt b/2024/captions/emacsconf-2024-project--managing-writing-project-metadata-with-orgmode--blaine-mooers--answers.vtt new file mode 100644 index 00000000..14ca3104 --- /dev/null +++ b/2024/captions/emacsconf-2024-project--managing-writing-project-metadata-with-orgmode--blaine-mooers--answers.vtt @@ -0,0 +1,2420 @@ +WEBVTT + +00:00:00.000 --> 00:00:10.319 +And about, I think we are live. Okay, hi again everyone. And hi + +00:00:10.320 --> 00:00:14.679 +Blaine, how are you doing? Fantastic, happy to be here. + +00:00:14.680 --> 00:00:17.479 +Yeah, it's good to see you again. We were just reminiscing in + +00:00:17.480 --> 00:00:20.239 +a room right now that it's almost been a year exactly since we + +00:00:20.240 --> 00:00:23.879 +last spoke because you were at the EmacsConf last year. That's + +00:00:23.880 --> 00:00:28.559 +right. This is great fun. Yeah, well, thank you for coming in + +00:00:28.560 --> 00:00:33.079 +and especially every time you come with a very well-crafted + +00:00:33.080 --> 00:00:37.279 +talks talking about, you know, what you do with Org Mode, Org + +00:00:37.280 --> 00:00:41.039 +Roam and whatever. And it's really fascinating as someone + +00:00:41.040 --> 00:00:43.479 +who develops and use those tools constantly to see you put + +00:00:43.480 --> 00:00:46.199 +them in action so well. Because you, you know, the way you + +00:00:46.200 --> 00:00:49.719 +talk about your research, it really reminds me on what we + +00:00:49.720 --> 00:00:53.279 +were, sorry, I've got elves talking in my ears and I'm still + +00:00:53.280 --> 00:00:56.639 +not used to it at this point. But it's really nice to see you + +00:00:56.640 --> 00:01:00.359 +put all of this together into a very cohesive way for you to + +00:01:00.360 --> 00:01:03.759 +write. Okay, let me just share my screen and I'll be sharing + +00:01:03.760 --> 00:01:11.879 +the questions. Where is it? All right, take presenter. And I + +00:01:11.880 --> 00:01:18.079 +will be sharing the questions. All right. Can you see my + +00:01:18.080 --> 00:01:24.159 +screen all right? I can, yes. OK, cool. So we move straight to + +00:01:24.160 --> 00:01:26.999 +the question. Let me just check on the time. I think we have + +00:01:27.000 --> 00:01:31.999 +about until 10.20, which is in 17 minutes. So let's take + +00:01:32.000 --> 00:01:35.639 +about 10 to 15 minutes of question time. And if people have + +00:01:35.640 --> 00:01:38.599 +joined on BBB, we'll also be taking questions live. All + +NOTE Q: what does 0573 means in your init. file name? + +00:01:38.600 --> 00:01:44.079 +right. Starting with the first question, what does 0573 + +00:01:44.080 --> 00:01:49.719 +mean in your init file name? So this name is, you can think of + +00:01:49.720 --> 00:01:55.879 +it as a prefix or a stub. It's an index number that I utilize + +00:01:55.880 --> 00:02:01.479 +before a short name that describes the project. So I have all + +00:02:01.480 --> 00:02:06.119 +my projects in my home directory, and I just start typing the + +00:02:06.120 --> 00:02:12.199 +project number or index number. in the terminal and I have + +00:02:12.200 --> 00:02:17.879 +autocompletion available through oh my ZSH package. So I + +00:02:17.880 --> 00:02:21.199 +just hit tab and it autocompletes the name of the project and + +00:02:21.200 --> 00:02:26.319 +pops me into that folder. And so I find this to be very easy for + +00:02:26.320 --> 00:02:30.919 +navigating between projects. As you saw, I work on multiple + +00:02:30.920 --> 00:02:37.399 +projects in a given day and this helps me move about. And I + +00:02:37.400 --> 00:02:45.639 +also use this number at the start of the log file name and at + +00:02:45.640 --> 00:02:50.639 +the start of the manuscript name and the start of the, I also + +00:02:50.640 --> 00:02:54.079 +have an annotated bibliography. So all those files are + +00:02:54.080 --> 00:02:59.359 +identified just in case I accidentally save one to the wrong + +00:02:59.360 --> 00:03:04.639 +folder. I can avoid, I can sort them out later. Great + +00:03:04.640 --> 00:03:09.519 +question. Thank you. Next question, which I think is going + +NOTE Q: What does Zettelkasten mean? + +00:03:09.520 --> 00:03:16.159 +to be a long one. What does Zettelkasten mean? So this means + +00:03:16.160 --> 00:03:20.719 +like, I guess, notebox, something along those lines. You + +00:03:20.720 --> 00:03:24.879 +can think of it as a- Yeah, spitbox usually, that's the word + +00:03:24.880 --> 00:03:29.159 +we use. Thank you. So this is a kind of like a card catalog + +00:03:29.160 --> 00:03:33.359 +system that when it was done on paper, and now it's being done + +00:03:33.360 --> 00:03:38.679 +electronically through various software packages. So in + +00:03:38.680 --> 00:03:43.199 +the Emacs world, org-roam is a one of several alternate + +00:03:43.200 --> 00:03:47.999 +packages that you can use. Prot has the note and there's a + +00:03:48.000 --> 00:03:59.079 +couple others. So, idea is that you create a note, usually a, + +00:03:59.080 --> 00:04:04.239 +ultimately what you want to do is create a nugget of + +00:04:04.240 --> 00:04:09.479 +knowledge from your reading that you've done. and you add it + +00:04:09.480 --> 00:04:15.879 +to this note system in such a way that you can recover it more + +00:04:15.880 --> 00:04:20.159 +easily than what had to be done in the old days with index + +00:04:20.160 --> 00:04:23.719 +cards. + +00:04:23.720 --> 00:04:28.199 +So you set up backlinks and then you can use the search + +00:04:28.200 --> 00:04:34.919 +features in Org Roam to filter and find the notes again in the + +00:04:34.920 --> 00:04:43.079 +future. Org Roam has a wonderful GUI interface where you can + +00:04:43.080 --> 00:04:47.079 +display it as a knowledge graph, essentially, all your + +00:04:47.080 --> 00:04:52.479 +nodes and the backlinks between them. I set mine up in a + +00:04:52.480 --> 00:04:56.639 +rather hierarchical fashion to, at least right now, it's + +00:04:56.640 --> 00:05:01.959 +pretty hierarchical at this point, but it may become more + +00:05:01.960 --> 00:05:07.679 +disorganized over time. But I find it I'm sort of a visual + +00:05:07.680 --> 00:05:12.519 +person. I like mind maps a lot. I find that this visual + +00:05:12.520 --> 00:05:16.919 +display of my Zettelkasten is similar, resembles to a + +00:05:16.920 --> 00:05:22.439 +certain degree, a mind map. + +00:05:22.440 --> 00:05:25.599 +Okay, well, that's a pretty good definition of what + +00:05:25.600 --> 00:05:28.839 +Zettelkasten is, and you also went on to specify what it + +00:05:28.840 --> 00:05:31.599 +means inside Emacs, so thank you. I think that clarifies it + +00:05:31.600 --> 00:05:34.199 +for the two people in the room who still do not know, after + +00:05:34.200 --> 00:05:36.759 +attending four Emacs conferences, what is the + +00:05:36.760 --> 00:05:41.759 +Zettelkasten method. Moving on to the next question, + +NOTE Q: How many papers are you writing at the same time? + +00:05:41.760 --> 00:05:44.399 +how many papers are you writing at the same time? Because I + +00:05:44.400 --> 00:05:47.759 +believe you mentioned that you had concurrent papers being + +00:05:47.760 --> 00:05:51.959 +written during your presentation. So I'm probably working + +00:05:51.960 --> 00:05:57.839 +on, in a given year, somewhere between 10 and 15. How many do I + +00:05:57.840 --> 00:06:03.199 +get published in a year? Probably anywhere from one to four + +00:06:03.200 --> 00:06:08.639 +or five. So these papers often, the work on them spans + +00:06:08.640 --> 00:06:13.559 +multiple years. will start working on a paper when I begin, + +00:06:13.560 --> 00:06:16.519 +before I begin the experiments, ideally, because I'm + +00:06:16.520 --> 00:06:23.439 +trying to do hypothesis-driven research. And so that helps + +00:06:23.440 --> 00:06:27.559 +define the scope of the project and limit the number of + +00:06:27.560 --> 00:06:32.959 +rabbit holes I go down. So, but through the nature of the + +00:06:32.960 --> 00:06:36.919 +work, there's a lot of waiting required in my case for + +00:06:36.920 --> 00:06:39.679 +crystals to grow and then the opportunity to collect + +00:06:39.680 --> 00:06:43.879 +diffraction data on the crystals. And then the structures + +00:06:43.880 --> 00:06:48.559 +have to be determined and refined and analyzed and then + +00:06:48.560 --> 00:06:52.799 +deposited, figures have to be made. So a lot of steps are + +00:06:52.800 --> 00:06:57.759 +involved that those take generally span, that work can span + +00:06:57.760 --> 00:07:02.559 +several years. + +00:07:02.560 --> 00:07:09.399 +In a given day, I try to work on two papers, ideally. I haven't + +00:07:09.400 --> 00:07:12.279 +been doing so well lately over the past month. + +00:07:12.280 --> 00:07:19.759 +In the past year, there was a couple of days where I worked on + +00:07:19.760 --> 00:07:24.239 +five papers. There was something like a half dozen where I + +00:07:24.240 --> 00:07:29.159 +worked on four, about 40 days where I worked on three, and I + +00:07:29.160 --> 00:07:33.479 +think there was something like about 100 days where I worked + +00:07:33.480 --> 00:07:40.999 +on two papers a day, about 140 days where I just worked on one. + +00:07:41.000 --> 00:07:45.719 +So my idea is, I've been sort of developing more recently is + +00:07:45.720 --> 00:07:49.159 +that I'll start doing like the generative writing on a paper + +00:07:49.160 --> 00:07:51.959 +at the beginning of the day on the paper project I'm most + +00:07:51.960 --> 00:07:55.439 +excited about. I tried to, I'm a night owl. I tried to do this + +00:07:55.440 --> 00:08:00.519 +work early in the morning when I'm half awake to try to + +00:08:00.520 --> 00:08:03.439 +overcome my internal editor that inhibits me from writing + +00:08:03.440 --> 00:08:09.879 +prose freely. And so the idea is just to get a lot of words out, + +00:08:09.880 --> 00:08:14.639 +worry about editing them later. And then after about three + +00:08:14.640 --> 00:08:17.999 +hours, I'll switch to the second project that I'm less + +00:08:18.000 --> 00:08:21.999 +excited about. And I can go for another 90 minutes to two + +00:08:22.000 --> 00:08:27.719 +hours on that project. So I build up a lot of momentum, and + +00:08:27.720 --> 00:08:31.959 +then I do the switch. And I find that switch to be relatively + +00:08:31.960 --> 00:08:37.359 +easy. So my process will be On project A, make some final + +00:08:37.360 --> 00:08:42.359 +notes about what was accomplished in the writing log. Then + +00:08:42.360 --> 00:08:47.999 +I'll switch over to the writing log for the project B, and + +00:08:48.000 --> 00:08:51.359 +I'll go to the diary section at the beginning. I'll make a + +00:08:51.360 --> 00:08:57.279 +little to-do list and maybe look at the prior entry in the + +00:08:57.280 --> 00:09:03.199 +diary if I need to reboot my memory. And then I'll move on to + +00:09:03.200 --> 00:09:07.919 +the manuscript and go for 90 minutes or two hours. + +00:09:07.920 --> 00:09:12.479 +Generally, you're only good for somewhere between four and + +00:09:12.480 --> 00:09:15.359 +a half, five and a half hours. If you try to write in a + +00:09:15.360 --> 00:09:17.839 +generative fashion much longer than that, your + +00:09:17.840 --> 00:09:21.279 +productivity goes down quite a bit. You're better off + +00:09:21.280 --> 00:09:24.039 +switching to a completely different activity and then + +00:09:24.040 --> 00:09:30.159 +using your experience doing that writing to essentially + +00:09:30.160 --> 00:09:33.199 +launch background jobs in your subconscious. And so you + +00:09:33.200 --> 00:09:37.479 +will get those ideas in the shower the next morning. + +00:09:37.480 --> 00:09:44.519 +I find it really funny because I also relate. I've also + +00:09:44.520 --> 00:09:48.919 +worked a lot on organization as linked to paper writing but + +00:09:48.920 --> 00:09:53.719 +also to on my work as a developer and it's funny how you refer + +00:09:53.720 --> 00:09:56.999 +to your ability to think about something in very similar + +00:09:57.000 --> 00:09:59.399 +terms to how a computer would think about something. You've + +00:09:59.400 --> 00:10:02.399 +mentioned in your presentation the cost of context + +00:10:02.400 --> 00:10:04.919 +switching between different things but it's also + +00:10:04.920 --> 00:10:08.119 +something that we use in computing when a processor needs to + +00:10:08.120 --> 00:10:11.719 +be thinking about something else, well, it has a cost. And + +00:10:11.720 --> 00:10:15.359 +it's really fun for me to hear you talk about, oh, I need to + +00:10:15.360 --> 00:10:19.159 +select two topics, but no longer than 90 minutes per topic, + +00:10:19.160 --> 00:10:21.319 +because it's really about maximizing your output for + +00:10:21.320 --> 00:10:25.239 +creativity. And overall, your entire chat, your entire + +00:10:25.240 --> 00:10:28.519 +presentation here is about really maximizing the + +00:10:28.520 --> 00:10:32.959 +engagement that you have between outputs and your + +00:10:32.960 --> 00:10:37.159 +cognition. And I really find this amazing how down to the T + +00:10:37.160 --> 00:10:40.279 +you've managed to do this. And it actually leads me to + +00:10:40.280 --> 00:10:42.679 +another question which is being asked of you, which is, + +NOTE Q: How you capture those ideas when when you are away from Emacs? + +00:10:42.680 --> 00:10:45.959 +how do you capture those ideas when you are away from Emacs? And + +00:10:45.960 --> 00:10:47.999 +perhaps not only those you have in the showers, but also + +00:10:48.000 --> 00:10:53.919 +elsewhere. So that's a great question. Over the past year, I + +00:10:53.920 --> 00:10:59.239 +actually, last January, upon recommendation of a senior + +00:10:59.240 --> 00:11:05.399 +colleague, I bought a digital voice recorder for $85 from + +00:11:05.400 --> 00:11:10.279 +Sony, and it's the best investment I've made in a very long + +00:11:10.280 --> 00:11:16.399 +time. other than my laptop computer, because I then record + +00:11:16.400 --> 00:11:21.439 +my thoughts. So I have a half hour commute. And to me, that's + +00:11:21.440 --> 00:11:25.359 +largely a waste of time. I wish I lived a lot closer to work. + +00:11:25.360 --> 00:11:33.679 +But I use that time to generate ideas. So maybe I'll start my + +00:11:33.680 --> 00:11:40.559 +day at home for 90 minutes, worked on paper A, and then I might + +00:11:40.560 --> 00:11:44.799 +try to prime my mind about project B, or I might still have + +00:11:44.800 --> 00:11:48.199 +ideas that are flowing about project A. And I'll record + +00:11:48.200 --> 00:11:51.439 +those in the digital voice recorder. And then when I get to + +00:11:51.440 --> 00:11:54.599 +the lab, I'll transfer the audio file to my computer, and + +00:11:54.600 --> 00:12:00.159 +I'll transcribe it using a whisper. So I've set up some + +00:12:00.160 --> 00:12:03.759 +Python scripts and bash functions to go through and I + +00:12:03.760 --> 00:12:10.999 +convert all the sentences into one sentence per line + +00:12:11.000 --> 00:12:16.359 +because that's the way I like to write and edit things. And so + +00:12:16.360 --> 00:12:19.679 +it does all this pre-processing for me. And I have this + +00:12:19.680 --> 00:12:23.279 +transcript that's in pretty good shape. I don't have to do + +00:12:23.280 --> 00:12:29.159 +very much editing. And I'll then copy that over and work on + +00:12:29.160 --> 00:12:33.079 +it, clean it up, and pluck out the ideas that I think might be + +00:12:33.080 --> 00:12:40.439 +useful. Unfortunately, I'm not very I'm not away from my + +00:12:40.440 --> 00:12:47.959 +computer that much. I'm in front of it, 12, 14 hours a day. So + +00:12:47.960 --> 00:12:53.039 +when I'm teaching, when I'm in seminar, other committee + +00:12:53.040 --> 00:12:58.359 +meetings, traveling, then I'll capture ideas on paper. I + +00:12:58.360 --> 00:13:02.399 +don't have a cell phone. I'm trying to be the last human on + +00:13:02.400 --> 00:13:07.359 +earth without a cell phone. I think I would be so distracted + +00:13:07.360 --> 00:13:12.719 +by a cell phone. Worst person on the planet, I would be + +00:13:12.720 --> 00:13:16.399 +totally focused on my cell phone if I had one. So I'm like one + +00:13:16.400 --> 00:13:22.999 +of the few people left who can read a map. So I do run into some + +00:13:23.000 --> 00:13:26.199 +difficulties hailing taxis and that sort of thing when I'm + +00:13:26.200 --> 00:13:30.599 +traveling. So there are some downsides to not having a cell + +00:13:30.600 --> 00:13:35.719 +phone, but these days. Yeah, but I think there's a pretty + +00:13:35.720 --> 00:13:38.639 +significant upside because, you know, you talk about cell + +00:13:38.640 --> 00:13:40.999 +phones here, but before you were talking about the 90 + +00:13:41.000 --> 00:13:44.799 +minutes of uninterrupted focus on a given topic. And I think + +00:13:44.800 --> 00:13:48.359 +plenty of people would be envious of this ability to focus + +00:13:48.360 --> 00:13:54.519 +for that long on a topic. And I guess if we are to thread the + +00:13:54.520 --> 00:13:57.239 +needle here, well, the lack of cell phone might be for + +00:13:57.240 --> 00:14:00.839 +something for this ability to focus. So take of this what you + +00:14:00.840 --> 00:14:06.799 +will. True, I am a sucker for the web browser. I can get + +00:14:06.800 --> 00:14:11.759 +distracted going down various rabbit holes thanks to + +00:14:11.760 --> 00:14:17.279 +Google searches and that sort of thing. Likewise, email is + +00:14:17.280 --> 00:14:22.399 +another tension grabber. So, there's those other battles I + +00:14:22.400 --> 00:14:27.599 +have to fight too. So, right, that is a huge battle that all of + +00:14:27.600 --> 00:14:31.839 +us face is developing focus and being able to maintain + +00:14:31.840 --> 00:14:37.159 +focus. Right. So, we have about three more minutes of + +00:14:37.160 --> 00:14:39.279 +questions. So, thank you so much already for answering many + +00:14:39.280 --> 00:14:43.319 +questions. How about we do a quick fire for the remaining + +00:14:43.320 --> 00:14:47.079 +questions and then maybe we will take a question from... from + +00:14:47.080 --> 00:14:50.272 +here or in the room. So how about we go for the next one? + +NOTE Q: What if an ideas does not belong to any current working manuscript? + +00:14:50.273 --> 00:14:51.573 +What if an ID does not belong + +00:14:51.574 --> 00:14:55.199 +to any current working manuscript? So I + +00:14:55.200 --> 00:14:57.799 +have a sandbox area in the log file. + +00:14:57.800 --> 00:15:04.319 +So if it's likely going to be related to something to a + +00:15:04.320 --> 00:15:09.119 +certain degree, if the idea is totally unrelated to + +00:15:09.120 --> 00:15:12.719 +anything I'm working on, then I will + +00:15:12.720 --> 00:15:21.359 +I maintain a 700 through 750 words. I maintain a kind of a + +00:15:21.360 --> 00:15:26.719 +external diary and I just capture those kind of ideas there. + +00:15:26.720 --> 00:15:31.199 +So, I have access to a web interface to this big text area with + +00:15:31.200 --> 00:15:37.079 +nothing in it. And I just dump ideas all day long in there. So, + +00:15:37.080 --> 00:15:42.799 +and I save that away. I have that in a big LaTeX document + +00:15:42.800 --> 00:15:49.999 +currently on Overleaf. but each day has its own page. And so + +00:15:50.000 --> 00:15:53.079 +that information is captured and I can recover it. And maybe + +00:15:53.080 --> 00:15:57.599 +it's gonna take me a week, a month, a year to take that idea and + +00:15:57.600 --> 00:16:00.279 +think about it. And then eventually I'll get to a point where + +00:16:00.280 --> 00:16:04.279 +I have a critical mass of momentum and data and so forth, + +00:16:04.280 --> 00:16:08.279 +where I could start a new writing project. But you're right, + +00:16:08.280 --> 00:16:11.399 +that is a problem, capturing those ideas and keeping track + +00:16:11.400 --> 00:16:16.719 +of them. The Xenocasting can also help with that. Right. OK, + +00:16:16.720 --> 00:16:19.159 +so we have time for one more question and I think I'm going to + +00:16:19.160 --> 00:16:22.679 +skip this one. You can take all the time you want after we're + +00:16:22.680 --> 00:16:25.679 +done with the live show for you to answer in BBB, obviously, + +00:16:25.680 --> 00:16:28.319 +and even after the conference. But I'd really like to finish + +00:16:28.320 --> 00:16:28.801 +on this one. + +NOTE Q: If there were one habit from your process (referencing your extensive flow chart) that you want active learners/professional researchers to adopt, which would it be and why? + +00:16:28.802 --> 00:16:31.879 +So, if there were one habit from your process, + +00:16:31.880 --> 00:16:35.079 +referencing your extensive flowchart, that you want + +00:16:35.080 --> 00:16:37.839 +active learners or professional researchers to adopt, + +00:16:37.840 --> 00:16:44.479 +which would it be and why? So, + +00:16:44.480 --> 00:16:49.999 +I think just keeping that daily diary, that's the essential + +00:16:50.000 --> 00:16:55.239 +part for overcoming the fear of forgetting and the fear of + +00:16:55.240 --> 00:16:58.319 +losing momentum. One reason why people don't work on two + +00:16:58.320 --> 00:17:02.399 +projects a day is that they fear losing momentum on the first + +00:17:02.400 --> 00:17:07.319 +project they're working on. But we often are stuck with + +00:17:07.320 --> 00:17:09.999 +working on multiple writing projects, and they're best + +00:17:10.000 --> 00:17:13.199 +done over longer periods of time rather than in a hasty + +00:17:13.200 --> 00:17:18.679 +fashion. I try to avoid binge writing, although I do my share + +00:17:18.680 --> 00:17:23.479 +of that, too. Okay, well, Blaine, thank you so much for all + +00:17:23.480 --> 00:17:29.199 +your questions. The stream is going to move to the next chat + +00:17:29.200 --> 00:17:31.999 +and talk. We're moving to the next talk of the day, but feel + +00:17:32.000 --> 00:17:35.159 +free to stay in a room. For everyone interested in asking + +00:17:35.160 --> 00:17:38.479 +more questions to Blaine, the BBB, sorry, BigBlueButton + +00:17:38.480 --> 00:17:41.250 +link is available on the website. You can join and ask + +00:17:41.240 --> 00:17:43.319 +questions directly to Blaine. And otherwise, we'll make + +00:17:43.320 --> 00:17:45.479 +sure that all the remaining questions on the pad get their + +00:17:45.480 --> 00:17:48.239 +answer eventually. Thank you so much, Blaine. You're + +00:17:48.240 --> 00:17:56.559 +welcome. Bye-bye. Bye. + +00:17:56.560 --> 00:18:00.079 +okay I think the stream is moving on. Just making sure. okay. Yes + +00:18:00.080 --> 00:18:02.079 +we are moving on to the next stream. So Blaine, I'm going to need to + +00:18:02.080 --> 00:18:04.919 +get ready for the next talk. Thank you so much for all your + +00:18:04.920 --> 00:18:08.079 +answers and feel free to answer your questions. I'm + +00:18:08.080 --> 00:18:11.759 +sorry that i didn't get to fill your question live. It's just + +00:18:11.760 --> 00:18:16.599 +there was a lot of questions actually. It was a comment. Okay. + +NOTE Off-stream Q&A + +00:18:16.600 --> 00:18:24.199 +Yeah, yeah. You mentioned about that you sit all the day in + +00:18:24.200 --> 00:18:27.999 +front of computer, right? And I have to say, it's not too + +00:18:28.000 --> 00:18:31.439 +different from a bathroom if you get distracted by web + +00:18:31.440 --> 00:18:34.919 +browser. I also have the same problem. And one interesting + +00:18:34.920 --> 00:18:38.679 +solution I found at some point is that I pry my mind about + +00:18:38.680 --> 00:18:44.039 +certain task, I leave my office and I go for a walk while + +00:18:44.040 --> 00:18:49.079 +thinking about this. And that really forces to focus + +00:18:49.080 --> 00:18:52.839 +because while you're working you have nothing else to do. + +00:18:52.840 --> 00:18:56.999 +You cannot go and like go like searching Google and stuff + +00:18:57.000 --> 00:19:03.359 +like that. It can really help in some cases. + +00:19:03.360 --> 00:19:09.559 +Yeah, I try to. Periodically, I'll try to restart doing the + +00:19:09.560 --> 00:19:12.879 +Pomodoro method, where you're supposed to get up every 25 + +00:19:12.880 --> 00:19:17.959 +minutes and take a break. But that requires a lot of + +00:19:17.960 --> 00:19:23.799 +discipline. And it also has, I find I'm more exhausted by + +00:19:23.800 --> 00:19:26.879 +following that method at the end of the day. But I think the + +00:19:26.880 --> 00:19:30.919 +problem with, well, I think in part- No, no, I don't mean + +00:19:30.920 --> 00:19:36.079 +Pomodoro actually. I mean, more like showers. Because when + +00:19:36.080 --> 00:19:39.079 +you take a shower, you think about something, right? When + +00:19:39.080 --> 00:19:43.159 +you just go for a walk, you again think about it. So this is not + +00:19:43.160 --> 00:19:46.119 +a break to take rest. It's a break to think away from + +00:19:46.120 --> 00:19:49.039 +computer. + +00:19:49.040 --> 00:19:54.239 +And you prime yourself, your brain by... picking something + +00:19:54.240 --> 00:19:56.719 +to work on. So I have a project, I think, like certain + +00:19:56.720 --> 00:20:01.079 +questions I want to think about. I sometimes take my, like a + +00:20:01.080 --> 00:20:05.319 +piece of paper with me. And then when I walk, I like take + +00:20:05.320 --> 00:20:10.279 +notes. You can record voice in your case. And like half an + +00:20:10.280 --> 00:20:15.239 +hour and you can really generate ideas. + +00:20:15.240 --> 00:20:18.519 +I have been doing a similar thing. I will take a clipboard. + +00:20:18.520 --> 00:20:24.799 +Maybe I'll have, um, Some blank pages where I'll write, jot + +00:20:24.800 --> 00:20:29.799 +down ideas as I walk. I'll go for like a half hour, hour-long + +00:20:29.800 --> 00:20:33.879 +walk and also read a paper sometimes, and in the process of + +00:20:33.880 --> 00:20:39.159 +reading, I get ideas. + +00:20:39.160 --> 00:20:45.159 +The clipboard though is socially less acceptable. It + +00:20:45.160 --> 00:20:49.359 +reminds people of their gym teacher, I think, or their + +00:20:49.360 --> 00:20:53.799 +marine drill sergeant, and they give me all kinds of weird + +00:20:53.800 --> 00:20:59.279 +looks. Even though they're walking and reading their cell + +00:20:59.280 --> 00:21:03.759 +phone, looking down at their cell phone, they give me weird + +00:21:03.760 --> 00:21:08.599 +looks for looking down at a clipboard as I walk. So there's + +00:21:08.600 --> 00:21:16.719 +that weird aspect to it. It's kind of hilarious. + +00:21:16.720 --> 00:21:21.479 +Thank you very much for the comment. Yeah, hopefully it's + +00:21:21.480 --> 00:21:24.799 +helpful. Because I really struggled about this web browser + +00:21:24.800 --> 00:21:28.346 +in the past. Not so much these days. Very good. + +00:21:28.347 --> 00:21:57.279 +That's good to hear. + +00:21:57.280 --> 00:21:57.639 +I asked, + +00:21:57.640 --> 00:22:06.519 +when I write notes, I've noticed like with the + +00:22:06.520 --> 00:22:10.360 +Getting Things Done and the Zettelkasten, I like to separate them + +00:22:10.400 --> 00:22:14.759 +out. And beyond that, I also like to separate them out on + +00:22:14.760 --> 00:22:19.959 +daily things and the global things. So that, for instance, + +00:22:19.960 --> 00:22:24.719 +your Zettelkasten, a daily would be like a journal. If you + +00:22:24.720 --> 00:22:29.599 +separate it out, It gives a lot of tension of, oh, well, if + +00:22:29.600 --> 00:22:33.119 +it's just a stray thought, I'll write it into my journal if I + +00:22:33.120 --> 00:22:36.959 +don't know where it goes. If I can think of a permanent place + +00:22:36.960 --> 00:22:41.479 +for it to go, it goes into the Zettelkasten. Same thing with, + +00:22:41.480 --> 00:22:44.599 +and then with like the getting things done is like, I don't, + +00:22:44.600 --> 00:22:48.159 +you start with like a fresh sheet of paper every single day or + +00:22:48.160 --> 00:22:54.639 +note or whatever. You ever done, you have tricks like that + +00:22:54.640 --> 00:22:59.359 +that you've noticed? So I'm sort of doing something similar + +00:22:59.360 --> 00:23:04.279 +through this. Well, to be honest, I like at the start of the + +00:23:04.280 --> 00:23:07.399 +day, I actually will just do sort of a brain dump of what + +00:23:07.400 --> 00:23:11.879 +happened the day before, just to try to get writing again. + +00:23:11.880 --> 00:23:16.959 +And these days, because of carpal tunnel syndrome, I'll use + +00:23:16.960 --> 00:23:22.159 +a voice speech to text to generate that initial text. And I'm + +00:23:22.160 --> 00:23:28.479 +just trying to, build up momentum of generating words. And + +00:23:28.480 --> 00:23:35.559 +so I capture, but I'm also adding to that document + +00:23:35.560 --> 00:23:40.719 +throughout the day. And so that is available through the web + +00:23:40.720 --> 00:23:47.279 +browser. I have a tab open to 750 words all the time. There's + +00:23:47.280 --> 00:23:51.719 +an alternate to it that is called Write Honey, that somebody + +00:23:51.720 --> 00:23:55.919 +in Berlin started, because they benefited so greatly from + +00:23:55.920 --> 00:23:58.679 +this practice. They have made it available for free, + +00:23:58.680 --> 00:24:05.039 +apparently for life. And so there's no word limit, whereas I + +00:24:05.040 --> 00:24:10.599 +have a grandfathered version of 750 words, and I have a word + +00:24:10.600 --> 00:24:15.519 +limit of 5,000 words. I rarely hit it. It's nice to know that + +00:24:15.520 --> 00:24:20.599 +right honey doesn't have that limit. So, that's how I'm + +00:24:20.600 --> 00:24:26.199 +capturing things. And then, so some of that text winds up + +00:24:26.200 --> 00:24:32.279 +being moved into my log file or even sometimes into the + +00:24:32.280 --> 00:24:37.799 +manuscript. + +00:24:37.800 --> 00:24:42.079 +So maybe a little less organized than the getting things + +00:24:42.080 --> 00:24:47.559 +done approach with the dailies and then the refiling + +00:24:47.560 --> 00:24:54.319 +process. So I don't do any refiling. I want to file once. I + +00:24:54.320 --> 00:24:58.079 +don't want to file a second time or have to go back and handle + +00:24:58.080 --> 00:25:03.319 +something a second time. So that's my rationale for the + +00:25:03.320 --> 00:25:08.159 +approach I take. I'm not using it. I've had various + +00:25:08.160 --> 00:25:12.759 +iterations of systems I've used, but I think my favorite one + +00:25:12.760 --> 00:25:15.559 +for like getting things done is actually not using + +00:25:15.560 --> 00:25:18.799 +Org Agenda, just like making a blank sheet and kind of doing + +00:25:18.800 --> 00:25:24.039 +like a template where it's just like, and separating my + +00:25:24.040 --> 00:25:28.119 +tasks out into three categories, like core tasks, like, and + +00:25:28.120 --> 00:25:32.279 +rule of thumb is like, if it's beyond three, it's too much too + +00:25:32.280 --> 00:25:36.359 +many. And like core tasks, secondary tasks and unplanned + +00:25:36.360 --> 00:25:39.759 +tasks. So these, those three categories, like for + +00:25:39.760 --> 00:25:42.039 +instance, the core task, if it's greater than three, it's + +00:25:42.040 --> 00:25:46.999 +too many. That way is like, when you look back, then you can + +00:25:47.000 --> 00:25:51.439 +see, like, if I got my core tasks done, I did really good. or if + +00:25:51.440 --> 00:25:56.879 +I got a lot of secondary tasks but not my core tasks done, I got + +00:25:56.880 --> 00:25:58.873 +side reactions with things that don't matter. + +00:25:58.874 --> 00:26:00.674 +If I got a lot of unplanned tasks, + +00:26:00.640 --> 00:26:03.679 +I could look at those unplanned tasks to see, oh yeah, okay, + +00:26:03.680 --> 00:26:07.639 +that was fine. Okay, the day didn't go as + +00:26:07.640 --> 00:26:14.999 +planned, but it was, yeah. That's an excellent suggestion. + +00:26:15.000 --> 00:26:20.119 +I generally just And I ended up long of a to-do list. It's + +00:26:20.120 --> 00:26:25.079 +impossible to accomplish in a day. Then I just like + +00:26:25.080 --> 00:26:29.799 +furnaces. Another trick that I liked was I also put like that + +00:26:29.800 --> 00:26:34.719 +under like a week. Cause it makes more sense to do it under a + +00:26:34.720 --> 00:26:39.079 +week. And then I'd have like subheadings under that, like, + +00:26:39.080 --> 00:26:45.079 +you know, so week day. Um, then I'd have those three + +00:26:45.080 --> 00:26:48.599 +categories for each of the tasks and then kind of as an + +00:26:48.600 --> 00:26:51.719 +unofficial day at the end, I just like have a staging area for + +00:26:51.720 --> 00:26:56.199 +all tasks. So I just kind of, then I just, I want to be using org + +00:26:56.200 --> 00:27:00.319 +agenda. So then I just be moving up and down, you know, cause + +00:27:00.320 --> 00:27:03.199 +you could, cause you're able to rearrange stuff in org mode + +00:27:03.200 --> 00:27:08.079 +so easily. I don't know if there's a good way of, that's been + +00:27:08.080 --> 00:27:11.919 +my favorite iteration + +00:27:11.920 --> 00:27:20.759 +of doing it. So I wrote a little function that pops in the + +00:27:20.760 --> 00:27:25.439 +to-dos that are specific to a particular project in the log + +00:27:25.440 --> 00:27:31.359 +file for that project. + +00:27:31.360 --> 00:27:36.599 +And then I add the log file name to the list of org files that + +00:27:36.600 --> 00:27:41.919 +Org Agenda searches, so those to-dos will show up. But my + +00:27:41.920 --> 00:27:46.199 +list is too long, and that becomes overwhelming. So I'll + +00:27:46.200 --> 00:27:51.399 +just assign a to-do heading to the top item in my to-do list to + +00:27:51.400 --> 00:27:54.479 +try to, but maybe it should be three. That would be a + +00:27:54.480 --> 00:27:58.479 +reasonable compromise. + +00:27:58.480 --> 00:28:03.879 +That's a good idea. + +00:28:03.880 --> 00:28:12.879 +So you're doing weekly planning then? I can show up. I was. + +00:28:12.880 --> 00:28:16.879 +This is, yeah, this was, yeah. What ended up making me stop is + +00:28:16.880 --> 00:28:20.439 +I didn't know how to make a template of it. And I, I ended up + +00:28:20.440 --> 00:28:25.879 +getting annoyed by manually changing the days every single + +00:28:25.880 --> 00:28:29.759 +time and naming like my files and stuff like that. If I Maybe + +00:28:29.760 --> 00:28:34.159 +if I did it now, I could figure out how to program it or if I + +00:28:34.160 --> 00:28:36.439 +spent enough time, but that's what I think eventually made + +00:28:36.440 --> 00:28:42.479 +me stop doing it. So there's a, um, you can make a snippet for + +00:28:42.480 --> 00:28:45.640 +the week and then you could have code in the snippet that + +00:28:45.680 --> 00:28:51.519 +would generate the dates automatically. Um, So I have like + +00:28:51.520 --> 00:28:56.599 +for my daily entry, I have a snippet called entry and then I + +00:28:56.600 --> 00:29:02.079 +hit tab and our control or whatever to insert the snippet and + +00:29:02.080 --> 00:29:07.919 +that has the current date already entered. So I skip that, I + +00:29:07.920 --> 00:29:13.479 +don't have to deal with that. So I think you could probably + +00:29:13.480 --> 00:29:18.639 +feed what you want to accomplish to a copilot, for example, + +00:29:18.640 --> 00:29:21.801 +being copilot. I've been using Bing Copilot + +00:29:21.802 --> 00:29:25.833 +for the past three or four months to return + +00:29:25.834 --> 00:29:29.227 +Elisp code that works 90% of the time. + +00:29:29.228 --> 00:29:34.399 +I've been pretty impressed. And it's free. So no + +00:29:34.400 --> 00:29:43.119 +API key required. It runs. So I guess I installed the Bing + +00:29:43.120 --> 00:29:49.362 +Copilot plugin in the Google Chrome. + +00:29:49.363 --> 00:29:50.199 +And that's what I've been using. + +00:29:50.200 --> 00:30:00.807 +Yeah, I can show you my screen if + +00:30:00.808 --> 00:30:05.852 +you want to see what the screen looks like. + +00:30:05.853 --> 00:30:06.839 +I can email you the template. I kind of have it saved as a + +00:30:06.840 --> 00:30:12.639 +template. I've got to find it, though. Let's see. + +00:30:12.640 --> 00:30:17.439 +Not exactly set up to. + +00:30:17.440 --> 00:30:44.159 +Alright, so. I + +00:30:44.160 --> 00:30:50.159 +don't know if you can see this well enough, but... + +00:30:50.160 --> 00:30:59.599 +Yeah, let's make it bigger. Can you see that at all? I can see a + +00:30:59.600 --> 00:31:01.279 +little bit of it. Yeah, it's kind of blurry. + +00:31:01.280 --> 00:31:07.399 +Alright, well. But then you just do that right there. So it's + +00:31:07.400 --> 00:31:13.239 +all color coded. I, so I get a sense of, uh, uh, what the kind of + +00:31:13.240 --> 00:31:18.599 +greenish blue lines must be or days, I guess, or. Okay. Well, + +00:31:18.600 --> 00:31:22.639 +right. There's like, so you can see like startup show two + +00:31:22.640 --> 00:31:27.519 +levels. Then I have like numbers right there. So right on one + +00:31:27.520 --> 00:31:30.919 +day you have like the core tasks, there's three out of four + +00:31:30.920 --> 00:31:37.119 +done. Then I have like secondary and unplanned and then. + +00:31:37.120 --> 00:31:42.079 +Yeah, that's just the general idea + +00:31:42.080 --> 00:31:50.319 +So that this is you raise you know the so the dilemma I face of + +00:31:50.320 --> 00:31:55.119 +course is that I have maintain like a to-do list and our + +00:31:55.120 --> 00:31:58.799 +project specific and then there's the all the other things I + +00:31:58.800 --> 00:32:04.439 +have to do and So there should be like some The org agenda + +00:32:04.440 --> 00:32:09.879 +should be a way of being able to pull the two sets together, I + +00:32:09.880 --> 00:32:10.319 +guess. + +00:32:10.320 --> 00:32:16.959 +I had broken up my, + +00:32:16.960 --> 00:32:25.359 +well, I had way too many to-do lists stored in various + +00:32:25.360 --> 00:32:25.919 +places. + +00:32:25.920 --> 00:32:32.199 +And so that's a problem, I guess, when you have too many + +00:32:32.200 --> 00:32:37.359 +to-dos and the org Agenda becomes overwhelming and sort of + +00:32:37.360 --> 00:32:44.479 +discourages Yeah, I figure that the general task on that is + +00:32:44.480 --> 00:32:49.199 +like I start writing things up. I get more and more items. + +00:32:49.200 --> 00:32:52.319 +I'll make a master to-do list. Oh my master to-do list has too + +00:32:52.320 --> 00:32:58.759 +many items. Let me throw it out Well, there's another name + +00:32:58.760 --> 00:33:01.559 +for that kind of list you could you know called a grass + +NOTE Time Power + +00:33:01.560 --> 00:33:06.959 +catcher list. So Charles Hobbs was this, he wrote a book in + +00:33:06.960 --> 00:33:16.079 +the 80s called Time Power. And he had like, you know, so he was + +00:33:16.080 --> 00:33:22.679 +one of these time management gurus. And so, let's + +00:33:22.680 --> 00:33:26.519 +see, you get the name of some, like Tony Robbins and, + +00:33:26.520 --> 00:33:34.879 +I forget the name of the other guy, that's Brian Tracy. So + +00:33:34.880 --> 00:33:39.119 +that they have kind of pushed the same kind of similar + +00:33:39.120 --> 00:33:43.279 +approaches. But Charles Hobbs had a very more organized + +00:33:43.280 --> 00:33:46.679 +approach, I think, and more disciplined. And he identified + +00:33:46.680 --> 00:33:49.439 +that kind of list as a grass catcher list, where you have a + +00:33:49.440 --> 00:33:52.839 +list of items that you think you might want to do, but you + +00:33:52.840 --> 00:33:57.359 +haven't prioritized them yet. And you haven't scheduled + +00:33:57.360 --> 00:34:03.199 +them yet. but they need a safe place to be stored. When time + +00:34:03.200 --> 00:34:06.199 +permits, the idea was you would pull items off that grass + +00:34:06.200 --> 00:34:10.599 +catcher list and move it into a to-do item that you will + +00:34:10.600 --> 00:34:18.079 +schedule and commit to getting done. That was the idea, + +00:34:18.080 --> 00:34:20.999 +separating them between core tasks, secondary tasks, + +00:34:21.000 --> 00:34:24.119 +unplanned tasks, because your whole day can't be planned. + +00:34:24.120 --> 00:34:27.919 +Right, right. You have things you have to do that are + +00:34:27.920 --> 00:34:31.319 +unscheduled that come through your door or land in your + +00:34:31.320 --> 00:34:35.239 +inbox or land in your email. You've got to do them. And then + +00:34:35.240 --> 00:34:38.799 +core tasks, I don't know, like to-do lists, their whole + +00:34:38.800 --> 00:34:43.279 +point is. So for instance, like journal and Zettelkasten + +00:34:43.280 --> 00:34:46.679 +are kind of, and like that's global lists versus the daily + +00:34:46.680 --> 00:34:49.399 +lists are kind of. done a little differently. With + +00:34:49.400 --> 00:34:53.639 +Zettelkasten, it's organic. Things build up. If you make a + +00:34:53.640 --> 00:34:56.359 +note, it's great. If you don't, if it has a small amount, + +00:34:56.360 --> 00:35:00.479 +that's great. Have a small note. With a daily to-do, you want + +00:35:00.480 --> 00:35:05.199 +to use it to make decisions. That's the idea of having the + +00:35:05.200 --> 00:35:08.639 +core task and the secondary task separate because the whole + +00:35:08.640 --> 00:35:12.719 +thing about it is, I wanna use this to eliminate what I'm + +00:35:12.720 --> 00:35:15.759 +going to do. It's to choose what I'm going to do, like the core + +00:35:15.760 --> 00:35:19.839 +tasks. Because if I can get my core tasks, I can be happy with + +00:35:19.840 --> 00:35:26.519 +my previous days. And then I would probably start using + +00:35:26.520 --> 00:35:30.639 +agenda a lot more if I was more consistent with using like + +00:35:30.640 --> 00:35:34.439 +these as like weekly files. I don't know. But then the whole + +00:35:34.440 --> 00:35:37.559 +goal thing is just like, let me see what I wanna populate the + +00:35:37.560 --> 00:35:43.879 +day list with. So how many core tasks wind up spanning + +00:35:43.880 --> 00:35:47.359 +multiple days because they're such big projects? + +00:35:47.360 --> 00:35:54.519 +I would need more time using the system before I'd figure + +00:35:54.520 --> 00:35:59.679 +something like that out. As I said, I'm not using it right + +00:35:59.680 --> 00:36:04.759 +now, but that has been my favorite iteration of using these. + +00:36:04.760 --> 00:36:13.519 +So within the core tasks, do you assign priorities? So the + +00:36:13.520 --> 00:36:20.279 +way I would translate this a little bit would be like in this + +00:36:20.280 --> 00:36:24.999 +method that Charles Hobbs had, he had a category for the + +00:36:25.000 --> 00:36:29.399 +items that you really have to get done, and they're really + +00:36:29.400 --> 00:36:34.119 +important. And so they get a priority of A. And then the + +00:36:34.120 --> 00:36:39.519 +secondary tasks would get a priority of B. But then within + +00:36:39.520 --> 00:36:42.079 +the A category, you would number them like one through + +00:36:42.080 --> 00:36:45.039 +three, I guess. All right, so this would be part of the + +00:36:45.040 --> 00:36:49.079 +purpose of separating the daily list or like the weekly list + +00:36:49.080 --> 00:36:51.719 +from the global list. So for instance, your global list, + +00:36:51.720 --> 00:36:55.679 +you'd say, I want this project that will take a long duration + +00:36:55.680 --> 00:37:00.639 +of time. But your daily list would just say, I want to work on + +00:37:00.640 --> 00:37:05.039 +it today, even if I don't get it done today. Like, I want to + +00:37:05.040 --> 00:37:11.399 +work on it today. then maybe you can link like for instance + +00:37:11.400 --> 00:37:16.239 +that your daily list to that global list or something along + +00:37:16.240 --> 00:37:20.479 +those lines. But that would be I think a good answer to that + +00:37:20.480 --> 00:37:24.719 +type of problem because yeah, the daily list is like + +00:37:24.720 --> 00:37:30.999 +supposed to be for that day, not for, Like for instance, you + +00:37:31.000 --> 00:37:34.679 +start out clean, you make the list like that would probably + +00:37:34.680 --> 00:37:38.599 +be your first task for the week is what do I want for the week? + +00:37:38.600 --> 00:37:41.639 +Then you have some tasks that you do with staging. And then + +00:37:41.640 --> 00:37:43.799 +like for instance, since you look at it as a whole week at a + +00:37:43.800 --> 00:37:47.559 +time, you're able to rearrange it and say, these are the + +00:37:47.560 --> 00:37:51.159 +things I wanna get done this week. This is what I really wanna + +00:37:51.160 --> 00:37:53.639 +get done on this day. This is what I don't care about on this + +00:37:53.640 --> 00:37:53.959 +day or yeah. + +00:37:53.960 --> 00:38:03.079 +Another person that kind of, and this is kind of related, + +00:38:03.080 --> 00:38:05.559 +there's this idea of + +00:38:05.560 --> 00:38:14.039 +of time blocking. So obviously, three tasks, core tasks, + +00:38:14.040 --> 00:38:18.839 +maybe they're going to take three or four hours each or two or + +00:38:18.840 --> 00:38:23.919 +three. And you can assign blocks of time in your schedule to + +00:38:23.920 --> 00:38:30.039 +get them done. And often, what happens is they take longer + +00:38:30.040 --> 00:38:33.799 +than you expect. And you have to extend the blocks. Calvin + +00:38:33.800 --> 00:38:39.359 +Newport has a that's a kind of approach he advocates is you + +00:38:39.360 --> 00:38:43.519 +and I think the power to that is you're you. you're mapping + +00:38:43.520 --> 00:38:48.599 +out, you know, you're allocating the time to do these things + +00:38:48.600 --> 00:38:52.679 +and you're seeing how you actually, how much time things + +00:38:52.680 --> 00:38:56.119 +actually take. And then you, so you wind up adjusting in the + +00:38:56.120 --> 00:39:00.079 +future. And the idea is with this approach is do it on paper. + +00:39:00.080 --> 00:39:03.559 +And then you have to like, uh, if something takes longer, + +00:39:03.560 --> 00:39:06.599 +that pushes everything else down. You just wind up + +00:39:06.600 --> 00:39:12.799 +redrawing your schedule for the day, uh, manually. And, um, + +00:39:12.800 --> 00:39:17.399 +So it's kind of laborious, and that labor is supposed to + +00:39:17.400 --> 00:39:21.799 +inhibit you from spending too much time on a project. As you + +00:39:21.800 --> 00:39:24.959 +know, you've got the pain of redrawing everything if you + +00:39:24.960 --> 00:39:27.919 +spend too much time on the first project. + +00:39:27.920 --> 00:39:36.999 +Yeah, there was a, let's see. It's whatever you strategy you + +00:39:37.000 --> 00:39:40.359 +want to do. Like for instance, to me, it's like doing it this + +00:39:40.360 --> 00:39:45.519 +way makes me say, I want to focus on like what matters. Then + +00:39:45.520 --> 00:39:49.239 +it'll tell me if I feel good about that day, depends on what + +00:39:49.240 --> 00:39:52.759 +algorithm, what level and what type of strategy you're + +00:39:52.760 --> 00:39:56.119 +using. If you're using time blocking, you're optimizing + +00:39:56.120 --> 00:40:02.879 +for each level of time block where I'm, where's like, And you + +00:40:02.880 --> 00:40:09.359 +can combine the approaches. It'd be trickier. But like, now + +00:40:09.360 --> 00:40:12.919 +let's see. I was listening to a talk with Jordan Peterson. + +00:40:12.920 --> 00:40:15.159 +One of the things he said that really resonated with me is + +00:40:15.160 --> 00:40:19.119 +like, you wanna use a calendar, but the first rule of using a + +00:40:19.120 --> 00:40:24.599 +calendar is don't let the calendar tyrannize you. Because + +00:40:24.600 --> 00:40:27.999 +like the first thing you wanna do whenever you use a calendar + +00:40:28.000 --> 00:40:33.039 +is schedule every single minute of the day Now you don't have + +00:40:33.040 --> 00:40:37.279 +any room for if any task overruns at all. And after a couple of + +00:40:37.280 --> 00:40:42.719 +tests, you're like, I don't want to do this anymore. I rebel. + +00:40:42.720 --> 00:40:49.879 +I'm going to throw it out. So one kind of combination is + +00:40:49.880 --> 00:40:53.799 +through this Pomodoro method I mentioned earlier, where + +00:40:53.800 --> 00:40:57.719 +you would sort of like block out, say, two hours. You work for + +00:40:57.720 --> 00:41:02.199 +like 25 minutes, take a little, break for up to five minutes + +00:41:02.200 --> 00:41:07.279 +and get back to work. And then after two hours, you're to take + +00:41:07.280 --> 00:41:11.119 +like a 15 minute break in the morning. In the afternoon, you + +00:41:11.120 --> 00:41:14.599 +might even let that break run longer and you might only have + +00:41:14.600 --> 00:41:19.279 +three work sessions between breaks. So because you're + +00:41:19.280 --> 00:41:24.319 +going to be more run down in the afternoon. And so you build in + +00:41:24.320 --> 00:41:26.919 +some + +00:41:26.920 --> 00:41:31.639 +into your schedule, some flex like, okay, that's supposed + +00:41:31.640 --> 00:41:34.439 +to be a break time, but you know, maybe some urgency comes up + +00:41:34.440 --> 00:41:37.999 +and you got to deal with, um, and you have to break out of this, + +00:41:38.000 --> 00:41:44.039 +uh, Pomodoro technique. So, uh, that, that, that's one way + +00:41:44.040 --> 00:41:48.799 +of kind of scheduling in some, uh, flexibility is through + +00:41:48.800 --> 00:41:54.399 +the breaks at Peterson's[??], right. Right. That... I can't, I + +00:41:54.400 --> 00:41:59.239 +can't... I don't schedule to that kind of detail. That's just + +00:41:59.240 --> 00:42:00.039 +too oppressive. + +00:42:00.040 --> 00:42:05.399 +Well, neither do I, but it's like that, like I, that's, I + +00:42:05.400 --> 00:42:09.119 +don't try to, to me, the much more interesting question that + +00:42:09.120 --> 00:42:12.479 +I tried to do is like, let's try to make sure I do the important + +00:42:12.480 --> 00:42:15.199 +things. Cause if I do those, my life would probably move a lot + +00:42:15.200 --> 00:42:19.319 +quicker. If I get, if I choose a couple items that I really + +00:42:19.320 --> 00:42:22.239 +want and am able to consistently do them, I think my life + +00:42:22.240 --> 00:42:26.319 +would bastically start improving. Not necessarily if I can + +00:42:26.320 --> 00:42:28.879 +play the game of optimizing every hour. + +00:42:28.880 --> 00:42:36.879 +Maybe that could be, and it's a place to start rather, and I + +00:42:36.880 --> 00:42:39.079 +think it'd be the most effective place to start. And if I got + +00:42:39.080 --> 00:42:42.719 +better at using it all the time, perhaps I'd be playing + +00:42:42.720 --> 00:42:46.999 +optimizing every hour game. But this is the game I think + +00:42:47.000 --> 00:42:52.719 +would be best bang for buck for me to optimize now. What + +00:42:52.720 --> 00:42:56.039 +you're trying to optimize for is accomplishing these core + +00:42:56.040 --> 00:43:03.559 +tasks, getting them done as quickly as possible, or as + +00:43:03.560 --> 00:43:10.559 +effectively as possible, and as effectively as you need, or + +00:43:10.560 --> 00:43:15.359 +whatever your goal is. But yeah, focusing on that rather + +00:43:15.360 --> 00:43:19.679 +than the scheduling, I think. Plus, a core task could be, I + +00:43:19.680 --> 00:43:26.119 +don't know, catch up on all my house chores, or let, or do a + +00:43:26.120 --> 00:43:28.879 +specific one if it's really big or like, I don't know, it's + +00:43:28.880 --> 00:43:32.159 +whatever you want it to be. It's like, you can make them + +00:43:32.160 --> 00:43:37.559 +bigger or smaller depending on, on how you word them and + +00:43:37.560 --> 00:43:40.919 +everything. Cause like, if you say cap, capture all of your + +00:43:40.920 --> 00:43:44.879 +house chores up for like one week and you haven't done + +00:43:44.880 --> 00:43:47.279 +anything, that's probably a little too ambitious. + +00:43:47.280 --> 00:43:56.439 +That's right. Yeah, well, a lot of. Yeah. + +00:43:56.440 --> 00:44:03.039 +I spend, I don't know, at least 15 minutes, half an hour at the + +00:44:03.040 --> 00:44:07.119 +beginning of the day, sort of my my planning and sort of my + +00:44:07.120 --> 00:44:12.359 +initial writing session is involves a bit of planning and + +00:44:12.360 --> 00:44:20.399 +there's always. A lot more time. So generally, depending on + +00:44:20.400 --> 00:44:21.279 +the nature of your work, + +00:44:21.280 --> 00:44:28.119 +it can take up to 15% of your time. It can take quite a bit of + +00:44:28.120 --> 00:44:33.919 +time. And I think people don't really acknowledge that as + +00:44:33.920 --> 00:44:39.039 +part of your work is planning. And it can take a significant + +00:44:39.040 --> 00:44:39.839 +amount of time. + +00:44:39.840 --> 00:44:44.799 +Yeah, that's what I was meaning though is like the very first + +00:44:44.800 --> 00:44:48.119 +thing I think people generally always try to do with the + +00:44:48.120 --> 00:44:51.279 +scanners like look at how productive I can be let's schedule + +00:44:51.280 --> 00:44:55.319 +every single minute up and it's like You're not gonna want to + +00:44:55.320 --> 00:45:00.519 +do that for very long and it's not gonna work out And what you + +00:45:00.520 --> 00:45:06.359 +were saying about The pomodoro technique one of the core + +00:45:06.360 --> 00:45:11.919 +Let's see, one of the benefits could be described of another + +00:45:11.920 --> 00:45:16.879 +benefit I've seen of like multiple habits books is if you + +00:45:16.880 --> 00:45:19.599 +start multiple small habits where you try to do them + +00:45:19.600 --> 00:45:23.319 +consistently, you give yourself an opening to where if you + +00:45:23.320 --> 00:45:28.279 +get into the flow state, you can do a lot more of it. Like, I + +00:45:28.280 --> 00:45:31.759 +don't know, let's say you got a habit of, I don't know, just + +00:45:31.760 --> 00:45:36.519 +write a journal entry. You're a journal entry of like at + +00:45:36.520 --> 00:45:39.279 +least two lines. I don't know that could very easily turn to + +00:45:39.280 --> 00:45:42.759 +like three paragraphs and if you have like a whole bunch of + +00:45:42.760 --> 00:45:46.279 +Like the pomodoro technique it could be like stubs to allow + +00:45:46.280 --> 00:45:47.639 +you to do more stuff + +00:45:47.640 --> 00:45:54.319 +Where are they in spur to allow inspiration to allow you to + +00:45:54.320 --> 00:45:57.239 +generate inspiration and then capture it when it strikes if + +00:45:57.240 --> 00:45:58.759 +the mood fancies you + +00:45:58.760 --> 00:46:08.319 +Yeah, so that's kind of an issue with the Pomodoro + +00:46:08.320 --> 00:46:13.839 +technique. So, one idea is that you just, if you really have + +00:46:13.840 --> 00:46:19.359 +to break out, because the idea is too big to put on the back + +00:46:19.360 --> 00:46:24.359 +burner and hold in place, then you do have to break out of the + +00:46:24.360 --> 00:46:30.039 +Pomodoro and go, you know, jot down a quick note or three + +00:46:30.040 --> 00:46:30.719 +paragraphs. + +00:46:30.720 --> 00:46:36.839 +but like how much... You don't get to count that as a + +00:46:36.840 --> 00:46:40.679 +Pomodoro. You have to like reset your count because you've + +00:46:40.680 --> 00:46:48.759 +broken it. I mean, according to that method, it's + +00:46:48.760 --> 00:46:52.879 +kind of rigid. It's a different algorithm optimizing for + +00:46:52.880 --> 00:46:55.479 +different things. And this may just be like a by-product, + +00:46:55.480 --> 00:47:00.759 +but this could be very easily like a core advantage that may + +00:47:00.760 --> 00:47:05.599 +or may not be the core reason that you were using it but didn't + +00:47:05.600 --> 00:47:08.719 +realize it, and may not be something that it's optimizing + +00:47:08.720 --> 00:47:17.399 +for. So + +00:47:17.400 --> 00:47:22.159 +are you developing a Emacs package then with your template? + +00:47:22.160 --> 00:47:30.319 +No. As I said, + +00:47:30.320 --> 00:47:36.319 +My next steps where I think would make it work a lot better is + +00:47:36.320 --> 00:47:39.999 +if I figured out some way of automatically filling out the + +00:47:40.000 --> 00:47:45.439 +dates or maybe automatically adding the file per week into + +00:47:45.440 --> 00:47:51.999 +and out of Org Agenda. That would be my next steps. I think if I + +00:47:52.000 --> 00:47:55.719 +did that, it would have a much greater chance of becoming + +00:47:55.720 --> 00:48:01.879 +part of my workflow at all times. Yeah, I bet you could do it + +00:48:01.880 --> 00:48:08.439 +pretty Something I got to work with the help of copilot. I'm + +00:48:08.440 --> 00:48:14.959 +not a wizard yet at Emacs Lisp, but I find that copilot is + +00:48:14.960 --> 00:48:26.439 +quite helpful. + +00:48:26.440 --> 00:48:32.799 +Yeah, their AIs are definitely interesting. + +NOTE Do you use a lot of TeX inside Org Mode? + +00:48:32.800 --> 00:48:38.279 +So. do you ever use any, uh, a lot of TeX inside of org mode? + +00:48:38.280 --> 00:48:49.639 +No, mostly because I know that like I could try to learn it, + +00:48:49.640 --> 00:48:57.639 +but I just don't have a need for it. So yeah. And then also like + +00:48:57.640 --> 00:49:05.279 +I remember learning, when I learned HTML, I like writing + +00:49:05.280 --> 00:49:08.519 +HTML more than like, for instance, Word, because it was a lot + +00:49:08.520 --> 00:49:14.959 +more transparent, like a plain text document is, and kind of + +00:49:14.960 --> 00:49:20.159 +wrote the ordered list, unordered list, in such a way that it + +00:49:20.160 --> 00:49:25.599 +kind of looked similar to the page. But I find that I like Org + +00:49:25.600 --> 00:49:26.439 +Mode more than, + +00:49:26.440 --> 00:49:35.479 +HTML because, well, it's optimized for, like, my writing + +00:49:35.480 --> 00:49:38.479 +and consumption and overall use case rather than, like, + +00:49:38.480 --> 00:49:43.359 +optimizing it for somebody else to view, which I generally + +00:49:43.360 --> 00:49:45.039 +don't have as much. + +00:49:45.040 --> 00:49:52.799 +But, so, like, I don't know. Org Mode is what I'm going to end + +00:49:52.800 --> 00:49:57.879 +up using the most, so. I just want to use LaTeX enough. + +00:49:57.880 --> 00:50:00.999 +Although I'd be interested in learning LaTeX snippets + +00:50:01.000 --> 00:50:06.519 +inside of Org Mode for like the math stuff, but then again, I + +00:50:06.520 --> 00:50:13.479 +just never have to type it. So my attitude towards Org Mode + +00:50:13.480 --> 00:50:18.199 +changed radically over the summer. I was avoiding it + +00:50:18.200 --> 00:50:25.439 +somewhat before and then when I realized I can keep all the + +00:50:25.440 --> 00:50:33.279 +great aspects of LaTeX and still use all the great features + +00:50:33.280 --> 00:50:39.959 +of Org Mode. So I view now, I think of Org Mode as a wrapper + +00:50:39.960 --> 00:50:44.559 +around LaTeX. I know it's not really that, but by thinking + +00:50:44.560 --> 00:50:49.159 +about it that way, uh, it's much more palatable to me to, uh, + +00:50:49.160 --> 00:50:54.679 +uh, just go, uh, commit to doing as much as possible in org + +00:50:54.680 --> 00:50:58.559 +mode. So I've been, that's what I've been doing. Um, this + +00:50:58.560 --> 00:51:01.839 +fall is just, uh, every document I started as an org file. + +00:51:01.840 --> 00:51:09.959 +I imagine I would like it if I knew it, it's just because I, + +00:51:09.960 --> 00:51:13.319 +because I imagine it would feel to me like HTML, or it's just + +00:51:13.320 --> 00:51:18.519 +like, Yeah, I can write it, I can format it the way I want to. + +00:51:18.520 --> 00:51:24.439 +This is just guesses from my experience with HTML. I can read + +00:51:24.440 --> 00:51:27.679 +the source code of it and kind of get an idea of how it will look + +00:51:27.680 --> 00:51:30.919 +like, but I just... + +00:51:30.920 --> 00:51:36.799 +It's like if you're gonna use the Linux terminal, but you're + +00:51:36.800 --> 00:51:41.639 +gonna use it for an hour a week every... Yeah, an hour a week. + +00:51:41.640 --> 00:51:45.199 +It's just like, it's just not enough time to dedicate to + +00:51:45.200 --> 00:51:48.279 +learn it for to start paying off. That's right. And you can + +00:51:48.280 --> 00:51:52.559 +always export your org file to an HTML file. + +00:51:52.560 --> 00:51:56.079 +Yeah. + +00:51:56.080 --> 00:52:06.039 +But the org file is what I stare at 95% of the time or more. I + +00:52:06.040 --> 00:52:10.519 +only use a PDF. So I export to PDF generally. And when I export + +00:52:10.520 --> 00:52:16.239 +to HTML, it's very cool. I like looking at the document in the + +00:52:16.240 --> 00:52:20.879 +web browser. I like navigating it. But I generally will + +00:52:20.880 --> 00:52:24.879 +export it to PDF so I can print it out when I'm traveling to + +00:52:24.880 --> 00:52:30.439 +carry out editing. But that's just a small, tiny fraction of + +00:52:30.440 --> 00:52:34.039 +the time that I'm actually working with the document. So + +00:52:34.040 --> 00:52:38.119 +most of the time it's in org mode. You know, maybe it doesn't + +00:52:38.120 --> 00:52:44.199 +look as pretty as in, you know, uh, HTML, but it's, uh, it's so + +00:52:44.200 --> 00:52:48.679 +such a pleasure to work in because of the way you can reorder + +NOTE Org Mode versus Markdown + +00:52:48.680 --> 00:52:55.119 +lists, you know, create headlines. So what about org mode + +00:52:55.120 --> 00:52:57.719 +versus Markdown? Cause I know when, cause when I looked at + +00:52:57.720 --> 00:53:00.559 +org mode versus Markdown, I was like, yeah, more stuff + +00:53:00.560 --> 00:53:05.039 +supports Markdown, but. Org mode has more stuff built into + +00:53:05.040 --> 00:53:10.519 +it, like the calendar and agenda stuff. And it's obvious + +00:53:10.520 --> 00:53:14.559 +what this is supposed to be in org mode. And Emacs has got the + +00:53:14.560 --> 00:53:18.919 +best client. I use Emacs. And I think it's got a better syntax + +00:53:18.920 --> 00:53:23.319 +than Markdown. You've got stuff like Obsidian and Notes. + +00:53:23.320 --> 00:53:30.959 +And what about the Markdown? So Markdown, I use it a lot on + +00:53:30.960 --> 00:53:35.479 +GitHub repositories for the readme files. Sometimes I'll + +00:53:35.480 --> 00:53:38.959 +do them in org, but generally just go with the GitHub + +00:53:38.960 --> 00:53:44.159 +Markdown. But tables are still kind of a pain in Markdown, + +00:53:44.160 --> 00:53:48.719 +whereas tables are such a pleasure to build in org mode, + +00:53:48.720 --> 00:53:52.959 +because you have that dynamic adjusting of the column width + +00:53:52.960 --> 00:53:59.239 +as you make entries that become wider. And it's so easy to add + +00:53:59.240 --> 00:54:04.159 +columns. And it's so hard to add columns. It's much harder in + +00:54:04.160 --> 00:54:12.479 +Markdown and in LaTeX. It's more of a pain to add new columns. + +00:54:12.480 --> 00:54:16.919 +So the table aspect, that, to me, was one of the killer + +00:54:16.920 --> 00:54:20.439 +features. And then the other killer feature, of course, is + +00:54:20.440 --> 00:54:24.159 +the literate programming or interactive programming. So + +00:54:24.160 --> 00:54:26.559 +interactive computing that you can do where you have a code + +00:54:26.560 --> 00:54:30.639 +block and then you can execute it and have the output show up + +00:54:30.640 --> 00:54:35.159 +right below the code block. And + +00:54:35.160 --> 00:54:40.839 +org modes support for that kind of interactive computing is + +00:54:40.840 --> 00:54:46.039 +I'm not aware of anything more sophisticated, because you + +00:54:46.040 --> 00:54:50.799 +could have parallel sessions. You could have four Python + +00:54:50.800 --> 00:54:55.039 +sessions going, each of them labeled differently. And + +00:54:55.040 --> 00:54:57.519 +they're all walled off from each other. They don't see each + +00:54:57.520 --> 00:55:07.079 +other. Or you can have different programming languages. So + +00:55:07.080 --> 00:55:11.039 +you can do polyglottic + +00:55:11.040 --> 00:55:14.359 +programming where you have... Maybe Python's generating a + +00:55:14.360 --> 00:55:18.239 +table, and then that table gets, you decide you want to plot + +00:55:18.240 --> 00:55:24.199 +it using R, or you want to use ggplot2 and R to plot it, so that + +00:55:24.200 --> 00:55:29.719 +table gets fed into R in the next code block down, and then + +00:55:29.720 --> 00:55:33.559 +below it, you get a graph made in R, or you can make it in new + +00:55:33.560 --> 00:55:39.559 +plot, or you could, or some other, or you could move it into a + +00:55:39.560 --> 00:55:47.399 +LaTeX code block, plot the data in with Tikz, + +00:55:47.400 --> 00:55:52.719 +or you could move it into Clojure and use one of the + +00:55:52.720 --> 00:55:56.399 +Clojure plotting programs. Just kind of limitless what you + +00:55:56.400 --> 00:56:00.119 +can do in terms of recombining the best of different + +00:56:00.120 --> 00:56:01.599 +programming languages. + +00:56:01.600 --> 00:56:09.239 +Yeah, let's see. The literate DevOps are really good talks + +00:56:09.240 --> 00:56:13.359 +and subjects to get into this type of stuff. And they give a + +00:56:13.360 --> 00:56:17.119 +very good example of some tips on how to do this. You start + +00:56:17.120 --> 00:56:20.359 +writing in the previous or past tenses, though. You got the + +00:56:20.360 --> 00:56:23.719 +answer already, and then your notes are already formatted + +00:56:23.720 --> 00:56:28.559 +out as you're doing it for after the fact. And like, one thing + +NOTE Raku + +00:56:28.560 --> 00:56:32.679 +I like doing a lot is using the Raku language as a calculator, + +00:56:32.680 --> 00:56:37.239 +because I can just type in math as normal and it all works. + +00:56:37.240 --> 00:56:44.919 +I've tried that. Yeah, you can just say like, I don't know, 25 + +00:56:44.920 --> 00:56:49.559 +times four with, and you can put like parentheses in it. I'm + +00:56:49.560 --> 00:56:55.039 +not exactly, I haven't used it very heavily. Oh, it also + +00:56:55.040 --> 00:57:01.839 +supports Unicode. So if you wanted to have + +00:57:01.840 --> 00:57:07.319 +the not equals sign, the Unicode not equals sign, it will + +00:57:07.320 --> 00:57:12.919 +actually do that. Cool. Or like the division sign. I don't + +00:57:12.920 --> 00:57:22.759 +know how it will do it. Yeah. But yeah. And then using that in, + +00:57:22.760 --> 00:57:28.239 +I also wrote a shell script where it would just help me do a + +00:57:28.240 --> 00:57:31.879 +calculation. I was trying to do a business calculation + +00:57:31.880 --> 00:57:35.359 +where I was, and I'd have variable names and I ended up + +00:57:35.360 --> 00:57:39.319 +writing the, in the parentheses I'd have enters, returns, + +00:57:39.320 --> 00:57:42.319 +and then just a variable name with like a dollar sign, kind of + +00:57:42.320 --> 00:57:45.799 +like how you'd have in the shell. And I outputted every + +00:57:45.800 --> 00:57:47.479 +single line that I had in the enter. + +00:57:47.480 --> 00:57:54.479 +six or 10 variables in this paragraph, the paragraph + +00:57:54.480 --> 00:57:57.759 +spanned, I don't know, like four lines or something like + +00:57:57.760 --> 00:58:01.039 +that. Maybe, yeah, something, I think it was along those + +00:58:01.040 --> 00:58:04.599 +lines. And I was just thinking of like what this would be in + +00:58:04.600 --> 00:58:07.879 +something else, just like, it was a lot nicer. Yeah, I had + +00:58:07.880 --> 00:58:10.879 +like equations for the variable, like in like one line, but + +00:58:10.880 --> 00:58:13.839 +when I wrote that, what my output should be is like, like I + +00:58:13.840 --> 00:58:16.359 +wasn't putting all of these like, you know, string join, + +00:58:16.360 --> 00:58:21.159 +string join, string join, It looked relatively close to + +00:58:21.160 --> 00:58:25.239 +what my terminal output would be, and then a later iteration + +00:58:25.240 --> 00:58:29.039 +I found on this was, let's write what I'm going to put into the + +00:58:29.040 --> 00:58:36.119 +command line, made a couple changeable variables in it, and + +00:58:36.120 --> 00:58:40.039 +then I can see my results, and that ended up being very nice. + +00:58:40.040 --> 00:58:44.199 +Ended up being nicer than the shells. Yeah, ended up + +00:58:44.200 --> 00:58:45.959 +enhancing that shell script that I wrote. + +00:58:45.960 --> 00:58:50.919 +That's a Raku calculator. + +00:58:50.920 --> 00:58:57.759 +Uh, it's the Raku programming language, which I was just + +00:58:57.760 --> 00:59:02.479 +using it, which I was just using as, which I'll just use as + +00:59:02.480 --> 00:59:06.079 +just straight up that calculator. Cause I'll do like, + +00:59:06.080 --> 00:59:11.999 +because it supports math well enough that I, like I, yeah, + +00:59:12.000 --> 00:59:17.239 +you can put like 25 divided by four and it doesn't start + +00:59:17.240 --> 00:59:24.439 +doing, what's the word, modular fractal, the double math, + +00:59:24.440 --> 00:59:28.079 +like it, + +00:59:28.080 --> 00:59:28.639 +if it's, + +00:59:28.640 --> 00:59:34.439 +the double math where it's like negative .2 versus like + +00:59:34.440 --> 00:59:40.399 +minus one, or sometimes it'll do optimized computer math + +00:59:40.400 --> 00:59:43.999 +where it doesn't give you the right answer, why people will + +00:59:44.000 --> 00:59:44.639 +like Mathematica. + +00:59:44.640 --> 00:59:56.439 +So, how do you, do you access it through, in org mode then? + +00:59:56.440 --> 01:00:05.199 +I'll do it in that. Sometimes I just fire up a Raku shell, but + +01:00:05.200 --> 01:00:09.159 +one of the biggest things I'll fire up a Raku shell for is like + +01:00:09.160 --> 01:00:17.399 +just, um, what's oh just recently I was just like doing it for + +01:00:17.400 --> 01:00:20.399 +some math and like how many people how much money will I have + +01:00:20.400 --> 01:00:24.559 +to spend on Christmas oh I've got I'm gonna buy this gift it's + +01:00:24.560 --> 01:00:33.799 +gonna cost this much and then I've got so let's I think 15 + +01:00:33.800 --> 01:00:37.959 +times four because it's no 60 divided by four because it was a + +01:00:37.960 --> 01:00:42.919 +four pack And then times, and then I put it in parentheses, + +01:00:42.920 --> 01:00:47.519 +oh, four plus like two plus two, because like of the + +01:00:47.520 --> 01:00:49.119 +families, each of the units, and I just started doing it that + +01:00:49.120 --> 01:00:53.479 +way. And I put them all in a parentheses. And then at the end of + +01:00:53.480 --> 01:00:55.959 +this spit out the numbers, like, so I could just use the + +01:00:55.960 --> 01:00:58.279 +parentheses without thinking about, you know, like, oh, + +01:00:58.280 --> 01:01:02.679 +I'm actually in a programming language. No, I just kind of + +01:01:02.680 --> 01:01:07.279 +wrote it like I was in algebra, algebra, not in, + +01:01:07.280 --> 01:01:11.359 +not finding some special program, not finding a + +01:01:11.360 --> 01:01:14.999 +calculator, because it's easy for me to file up a terminal. + +01:01:15.000 --> 01:01:20.439 +Then I open that up, and it all just works. Plus, I also got a + +01:01:20.440 --> 01:01:22.639 +full programming language behind it if I ever need it. + +01:01:22.640 --> 01:01:33.679 +I wasn't aware that it utilizes standard math notation + +01:01:33.680 --> 01:01:37.279 +rather than the Polish math notation that we use in ELISP. + +01:01:37.280 --> 01:01:42.839 +Um, that's interesting because it's, it's in the list + +01:01:42.840 --> 01:01:45.279 +family of programming languages. + +01:01:45.280 --> 01:01:54.399 +Yeah. It's like, Hey, I can use, I can actually use my math + +01:01:54.400 --> 01:01:57.879 +knowledge. I can use the order of operations. + +01:01:57.880 --> 01:02:00.879 +Yep. + +01:02:00.880 --> 01:02:07.999 +I just wish that when I was in high school, they started + +01:02:08.000 --> 01:02:10.239 +telling me how to practically use this rather than me + +01:02:10.240 --> 01:02:14.119 +discover it years later when I'm out of it. Yeah. + +01:02:14.120 --> 01:02:27.399 +Well, I probably better move along to attend the other + +01:02:27.400 --> 01:02:32.839 +talks. All right. So it's been great talking to you, Plasma + +01:02:32.840 --> 01:02:35.159 +Strike. Yep, you too. diff --git a/2024/captions/emacsconf-2024-rust--an-experimental-emacs-core-in-rust--troy-hinckley--answers.vtt b/2024/captions/emacsconf-2024-rust--an-experimental-emacs-core-in-rust--troy-hinckley--answers.vtt new file mode 100644 index 00000000..1b881325 --- /dev/null +++ b/2024/captions/emacsconf-2024-rust--an-experimental-emacs-core-in-rust--troy-hinckley--answers.vtt @@ -0,0 +1,926 @@ +WEBVTT + +00:00:00.000 --> 00:00:06.519 +Okay, so I'm going to look at some of the questions showing up + +00:00:06.520 --> 00:00:08.499 +in the etherpad we got here. + +NOTE Q: Have you considered using CRDTs to share buffers between threads and merge any concurrent edits automatically? + +00:00:08.500 --> 00:00:09.439 +It says, have you considered + +00:00:09.440 --> 00:00:12.799 +using a CRDT to share buffers between threads and merge any + +00:00:12.800 --> 00:00:16.039 +concurrent edits automatically? So I have looked at that. + +00:00:16.040 --> 00:00:20.559 +And the problem with CRDTs is that even though they give you a + +00:00:20.560 --> 00:00:22.839 +mathematically correct answer when you're trying to merge + +00:00:22.840 --> 00:00:26.479 +two conflicts, it's not always a useful answer. Like, it's + +00:00:26.480 --> 00:00:29.199 +not coherent. If you have two things trying to edit the same + +00:00:29.200 --> 00:00:31.359 +thing, there's no good way to resolve that. And so they + +00:00:31.360 --> 00:00:33.559 +really work well when you have two people working live, both + +00:00:33.560 --> 00:00:35.639 +editing the same document, because they can fix any + +00:00:35.640 --> 00:00:37.199 +particular issues like that, like you would with Google + +00:00:37.200 --> 00:00:39.919 +Docs. But you have different packages that aren't aware of + +00:00:39.920 --> 00:00:42.159 +each other, and you're going to run into problems. And so + +00:00:42.160 --> 00:00:44.999 +this is something, if you read from the Xi editor, which was + +00:00:45.000 --> 00:00:48.039 +one of the first ones to use CRDTs, in the retrospective, he + +00:00:48.040 --> 00:00:52.359 +talks about how they had this problem, where the CRDTs They + +00:00:52.360 --> 00:00:53.999 +give you an answer, but it's not always an answer that's + +00:00:54.000 --> 00:00:59.079 +useful. And so I feel like locks at least are going to make it. + +00:00:59.080 --> 00:01:00.439 +It's not going to be as efficient if you have a whole bunch of + +00:01:00.440 --> 00:01:02.319 +packages, but I don't imagine there's going to be a ton of + +00:01:02.320 --> 00:01:04.799 +those. It can actually, I think it'll be more useful in + +00:01:04.800 --> 00:01:05.873 +practice. + +NOTE Q: Why hosted on GitHub? GitHub is nonfree. Is it possible to report bugs/send patches without using GitHub? + +00:01:05.874 --> 00:01:11.239 +I host on GitHub because that's what I know. + +00:01:11.240 --> 00:01:13.239 +If there's a way to host it on somewhere else, I'd be + +00:01:13.240 --> 00:01:15.439 +interested in doing that. If you're interested in setting + +00:01:15.440 --> 00:01:17.799 +patches without using GitHub, you could always send an + +00:01:17.800 --> 00:01:22.959 +email. I'm more than happy to accept email patches. + +NOTE Q: Do you think it's possible to achieve 100% compatibility with current Emacs code? + +00:01:22.960 --> 00:01:24.959 +Do you think it's possible to achieve with the current Emacs + +00:01:24.960 --> 00:01:29.719 +code? I do. I think, I think you can do that. Um, like I said, + +00:01:29.720 --> 00:01:33.279 +there's a couple things inside there that are intentional + +00:01:33.280 --> 00:01:37.919 +breaks with existing Emacs code. And some of those being + +00:01:37.920 --> 00:01:43.159 +like functions are immutable. As well as having data shared + +00:01:43.160 --> 00:01:44.759 +switch between different threads, which means there's + +00:01:44.760 --> 00:01:46.599 +going to be some copying going on. So there's going to be + +00:01:46.600 --> 00:01:48.399 +subtle things that are going to be different. And we've + +00:01:48.400 --> 00:01:50.359 +really got to think about those intentionally, but I'm + +00:01:50.360 --> 00:01:54.519 +really going for bug compatibility with GNU Emacs so that + +00:01:54.520 --> 00:01:57.159 +you can take an existing Elisp package and just run it and it + +00:01:57.160 --> 00:01:59.879 +just works, 'cause I think that's one of the big strengths of + +00:01:59.880 --> 00:02:03.399 +the Emacs ecosystem is the millions of lines of Elisp that + +00:02:03.400 --> 00:02:07.479 +people have written. + +00:02:07.480 --> 00:02:11.912 +Um, So I'm not, okay... + +NOTE Q: so you're re-implementing elisp in rust? have you considered using a more modern lisp, such as scheme? [11:03] + +00:02:11.913 --> 00:02:14.279 +So since you're re-implementing Elisp and + +00:02:14.280 --> 00:02:17.039 +Rust, have you considered using more modern Lisp such as + +00:02:17.040 --> 00:02:20.919 +Scheme? So I'm not re-implementing Elisp and Rust. I'm + +00:02:20.920 --> 00:02:25.439 +re-implementing the C in Rust. In fact, I would like to make + +00:02:25.440 --> 00:02:30.479 +more of the core that's written in C in Elisp instead of C or + +00:02:30.480 --> 00:02:33.839 +Rust, because then it's actually introspectible. There's + +00:02:33.840 --> 00:02:38.719 +a talk by Tom Tromney that he gave a while ago about Emacs + +00:02:38.720 --> 00:02:42.239 +should be Emacs Lisp. I kind of like that philosophy, + +00:02:42.240 --> 00:02:44.799 +that as much of it as should be Elisp as possible, and we + +00:02:44.800 --> 00:02:48.079 +should only have C or Rust or some systems level language for + +00:02:48.080 --> 00:02:52.319 +really low-level stuff. Using a more modern LISP such as + +00:02:52.320 --> 00:02:54.839 +Scheme. I know there's, I mean, there's two talks, I think, + +00:02:54.840 --> 00:02:58.239 +in this conference about using Scheme inside Emacs. And I + +00:02:58.240 --> 00:03:00.719 +looked at this at one point about what if you wrote it inside + +00:03:00.720 --> 00:03:03.919 +Common LISP, because that's also has some really low level + +00:03:03.920 --> 00:03:05.879 +details. And then you could go from Elisp down to Common + +00:03:05.880 --> 00:03:09.199 +Lisp. But the problem is, is under the hood, you still need a + +00:03:09.200 --> 00:03:12.559 +systems language. You can't, you still need either C or Rust + +00:03:12.560 --> 00:03:15.639 +or something underneath the Common Lisp to implement the + +00:03:15.640 --> 00:03:17.799 +primitives. And so it's not going to give you just two + +00:03:17.800 --> 00:03:19.719 +languages, you know, you'll have three. You'll have the + +00:03:19.720 --> 00:03:24.919 +elisp, common lisp, and C under the hood. And so in this case + +00:03:24.920 --> 00:03:29.559 +we just have the two. We have the Elisp and the rest. + +00:03:29.560 --> 00:03:42.999 +All right that's all the questions I see there. Let + +00:03:43.000 --> 00:03:54.079 +me go look at... Okay, + +00:03:54.080 --> 00:04:01.399 +so I see into the chat. + +NOTE Q: Do you have specific features from the Rust compiler that are missing (or are nightly-only) that you would take advantage of? + +00:04:01.400 --> 00:04:03.839 +Does it features from the Rust compiler that are missing + +00:04:03.840 --> 00:04:06.239 +that way you would take advantage of? Oh, that is a great + +00:04:06.240 --> 00:04:10.679 +question. Um, there's a handful of them. Uh, I should've + +00:04:10.680 --> 00:04:13.599 +written down a list of these. One of them is Polonius, which + +00:04:13.600 --> 00:04:17.959 +is the new borrow checker because we're trying to be used + +00:04:17.960 --> 00:04:21.759 +lifetime to track our objects. We often run into situations + +00:04:21.760 --> 00:04:24.239 +where we've kind of got a hack around things because the + +00:04:24.240 --> 00:04:26.199 +limitations with the borrow checker. And so I have a whole + +00:04:26.200 --> 00:04:29.559 +bunch of like notes inside there about where. A better + +00:04:29.560 --> 00:04:34.959 +Polonius would help inside there and help ease some of the + +00:04:34.960 --> 00:04:40.599 +issues. Another thing is enum variances types, because + +00:04:40.600 --> 00:04:42.999 +right now we have an object which is defined as a big enum that + +00:04:43.000 --> 00:04:46.079 +had all the possible objects, but if we want to have a subset + +00:04:46.080 --> 00:04:47.479 +of those objects or just pass in one of those objects, we've + +00:04:47.480 --> 00:04:50.079 +got to define a new struct. And so we have a whole bunch of + +00:04:50.080 --> 00:04:52.839 +boilerplate code to define that all out. And if we had + +00:04:52.840 --> 00:04:56.719 +variances types, that would make the code a lot easier. + +00:04:56.720 --> 00:05:00.079 +Another one is the allocator API. Right now we're kind of + +00:05:00.080 --> 00:05:02.479 +working around it, but ultimately we're going to need our + +00:05:02.480 --> 00:05:07.719 +own allocator. And the allocator API is still nightly only. + +00:05:07.720 --> 00:05:10.919 +So there's a couple more. I'll look at that more, but that's a + +00:05:10.920 --> 00:05:24.279 +great question. + +00:05:24.280 --> 00:05:26.879 +Let's see. + +NOTE Q: Can remacs be reused? + +00:05:26.880 --> 00:05:30.799 +Okay. I see a question you might not have noticed just asking + +00:05:30.800 --> 00:05:37.159 +about reuse of Remacs. Oh, yes, so I have reused some of Remacs + +00:05:37.160 --> 00:05:40.159 +code, and some taken, like I mentioned, taken some of their + +00:05:40.160 --> 00:05:45.319 +ideas, but ultimately we're using a different model + +00:05:45.320 --> 00:05:49.439 +because under the hood in Remacs, everything is just defined + +00:05:49.440 --> 00:05:53.799 +as an opaque external type that's defined inside Emacs and + +00:05:53.800 --> 00:05:56.159 +so it just pulls those in interacts with those and passes + +00:05:56.160 --> 00:05:58.879 +them back into C. We're trying to see what we can do if we + +00:05:58.880 --> 00:06:02.279 +say okay we're not going to take the same... So they're bound to + +00:06:02.280 --> 00:06:06.839 +the implementation details of Emacs, and we don't want to do + +00:06:06.840 --> 00:06:09.559 +that. We've re-implemented all the core types + +00:06:09.560 --> 00:06:12.559 +ourselves. So that means that we can't just take the + +00:06:12.560 --> 00:06:16.559 +Remacs code one for one and use it in our project, but we can + +00:06:16.560 --> 00:06:18.799 +take a lot of their ideas. I've spent some time reading + +00:06:18.800 --> 00:06:20.439 +through their documentation, different things about how + +00:06:20.440 --> 00:06:23.856 +they approached strings and GC + +00:06:23.857 --> 00:06:24.759 +and different stuff like that. + +00:06:24.760 --> 00:07:23.599 +Looks like all the questions. + +NOTE Q: What are you thoughts on the GUI layer. Any plans on how to reimplement it? + +00:07:23.600 --> 00:07:26.199 +Okay, so another question. What are your thoughts on the GUI + +00:07:26.200 --> 00:07:30.959 +layer? Any plans on how to reimplement it? This is something + +00:07:30.960 --> 00:07:34.079 +I've thought a lot about, but I still don't have a solid plan + +00:07:34.080 --> 00:07:37.253 +for. I'm not really a GUI person. I mostly work with + +00:07:37.254 --> 00:07:42.719 +low-level. And so my two thoughts is you can go the GTK route. + +00:07:42.720 --> 00:07:45.519 +There's Rust bindings for that. That's well understood. + +00:07:45.520 --> 00:07:48.319 +It's got a good support. But there's also some interesting + +00:07:48.320 --> 00:07:53.919 +projects to try and do GUI in Rust, native Rust, and have it + +00:07:53.920 --> 00:07:57.399 +use Rust idioms and stuff like that. And so those are things + +00:07:57.400 --> 00:08:01.439 +like Druid and there's eGUI and a bunch of those that are that + +00:08:01.440 --> 00:08:05.359 +way. And I've never used one of them, but I'd be interested to + +00:08:05.360 --> 00:08:08.879 +try that out first and see how well does this work and how well + +00:08:08.880 --> 00:08:21.239 +supported is this doing a Rust-first GUI. + +NOTE Q: If money could fix the problem, how much would it cost to ship this with feature parity before 2026? + +00:08:21.240 --> 00:08:23.639 +If money could fix the problem, how much would it cost to ship + +00:08:23.640 --> 00:08:28.399 +this with feature parity before 2026? Ooh, in a year. Uh, + +00:08:28.400 --> 00:08:32.079 +that's a good question. Even if we had the money, it would + +00:08:32.080 --> 00:08:36.639 +take more than just me, even if I was working on it full time. + +00:08:36.640 --> 00:08:40.630 +Um, I don't know. That's a good question. + +00:08:40.631 --> 00:08:41.769 +I would think it would take a team + +00:08:41.770 --> 00:08:45.239 +of at least a handful of people to get this + +00:08:45.240 --> 00:08:48.559 +shipping within one year. Because there's still a lot of + +00:08:48.560 --> 00:08:50.759 +work to do. And even once you have everything implemented, + +00:08:50.760 --> 00:08:55.119 +there's a lot of bug finding and smoothing it out so that it + +00:08:55.120 --> 00:08:57.519 +runs as well as Emacs, which has been, you know, battle + +00:08:57.520 --> 00:08:58.359 +tested for a long time. + +00:08:58.360 --> 00:09:06.599 +Um, okay, so this might be a good moment for me to break in and + +00:09:06.600 --> 00:09:09.039 +just say that we've got about 10 minutes left before we + +00:09:09.040 --> 00:09:12.519 +resume new talks on on both tracks. Of course, we're happy to + +00:09:12.520 --> 00:09:18.119 +keep this. This chat open and keep the recording going here, + +00:09:18.120 --> 00:09:21.599 +which will share after the conference as long as as long as + +00:09:21.600 --> 00:09:28.349 +there's discussion here. Thank you. + +NOTE GObject implementation + +00:09:28.350 --> 00:09:29.119 +GTK project has + +00:09:29.120 --> 00:09:31.079 +automatic binding with a framework called GObject + +00:09:31.080 --> 00:09:33.599 +introspection, which is what I'm using for gypsum project. + +00:09:33.600 --> 00:09:35.959 +Probably Rust has a G object implementation, which you can + +00:09:35.960 --> 00:09:39.119 +use. Yeah, I know it has some GTK bindings. Um, I'm not sure if + +00:09:39.120 --> 00:09:41.954 +it's specifically GObject, but that's a good path + +00:09:41.955 --> 00:09:44.335 +because I feel like the problem + +00:09:44.336 --> 00:09:46.759 +with the Rust GUIs is that they're all + +00:09:46.760 --> 00:09:50.359 +very new. And so, you know, everything works in a demo, but + +00:09:50.360 --> 00:09:52.319 +you need something that can work across all different + +00:09:52.320 --> 00:09:54.319 +devices and all different platforms and have really good + +00:09:54.320 --> 00:09:56.599 +support and good accessibility and stuff like that. + +NOTE Q: elisp is implemented in c, so if you're not implementing elisp in rust, are you using/keeping the c implementation of elisp? + +00:09:56.600 --> 00:10:03.399 +All right, Elisp is implemented in C. So if you're not + +00:10:03.400 --> 00:10:07.359 +implementing Elisp in Rust, we're keeping the C + +00:10:07.360 --> 00:10:13.639 +implementation of Elisp. So let me see if I can do a better job + +00:10:13.640 --> 00:10:18.439 +of explaining this. So inside Emacs, you have about a + +00:10:18.440 --> 00:10:21.519 +million lines of Elisp. And underneath that, you have the C, + +00:10:21.520 --> 00:10:24.079 +which is the primitives everything's implemented yet. And + +00:10:24.080 --> 00:10:27.079 +so we're keeping all of the Elisp, and we're just taking that + +00:10:27.080 --> 00:10:30.559 +C layer and replacing it with Rust. And so when you call a + +00:10:30.560 --> 00:10:33.079 +built-in function, it's calling into a Rust function + +00:10:33.080 --> 00:10:40.079 +instead of a C function under the hood. So all the Elisp stays + +00:10:40.080 --> 00:10:42.679 +Elisp, but the C becomes Rust. + +NOTE Clarifying rewriting Elisp in Rust + +00:10:42.680 --> 00:10:54.599 +So looking at the IRC chat, it feels to me like maybe there's a + +00:10:54.600 --> 00:10:59.159 +little bit of confusion around what do we mean when we say + +00:10:59.160 --> 00:11:04.839 +rewriting Elisp in Rust, right? I think there are some + +00:11:04.840 --> 00:11:07.399 +people that are like, A, we're reinventing ELISP, and + +00:11:07.400 --> 00:11:09.679 +there's other people that are like, no, we're trying to be + +00:11:09.680 --> 00:11:12.879 +byte-for-byte compatible with Rust. + +00:11:12.880 --> 00:11:17.500 +So some people are questioning your no answer on that. + +00:11:17.501 --> 00:11:20.000 +Aren't you really, maybe, is what I'm reading in there. + +00:11:20.001 --> 00:11:21.769 +Do you want to respond to that? + +00:11:21.770 --> 00:11:26.119 +Yeah, I'm trying to think about how I can make this + +00:11:26.120 --> 00:11:29.559 +clearer. So the Elisp stays Elisp. We're not changing the + +00:11:29.560 --> 00:11:33.239 +Elisp at all, or at least very minimally. We want to be able to + +00:11:33.240 --> 00:11:36.519 +take, like I said, bug compatible. So whatever works inside + +00:11:36.520 --> 00:11:39.999 +existing Emacs, you can take all the Lisp and you can run it in + +00:11:40.000 --> 00:11:43.599 +Rune and it works the same. So the Elisp stays the same. It's + +00:11:43.600 --> 00:11:47.119 +just the under the hood core that is getting replaced. And + +00:11:47.120 --> 00:11:49.199 +this in turn adds some new features such as + +00:11:49.200 --> 00:11:52.799 +multi-threading. So it's not exactly compatible, but + +00:11:52.800 --> 00:11:55.559 +you should be able to use your existing code and the Elisp will + +00:11:55.560 --> 00:12:00.639 +stay Elisp. So the idea is that anything that I've written as + +00:12:00.640 --> 00:12:04.559 +an Emacs user, my config, my custom packages, whatever it + +00:12:04.560 --> 00:12:08.999 +may be, that's all going to be valid code. If you take, you + +00:12:09.000 --> 00:12:13.163 +know, the Elisp implementation as being the C code + +00:12:13.164 --> 00:12:15.745 +and the parts of Elisp written in Elisp + +00:12:15.746 --> 00:12:18.448 +that represent opportunity space + +00:12:18.449 --> 00:12:20.799 +thinking about Rust as an implementation language... + +00:12:20.800 --> 00:12:24.479 +Okay fine. You know, you can make a semantic argument, okay + +00:12:24.480 --> 00:12:25.995 +we're re-implementing, we're creating + +00:12:25.996 --> 00:12:29.018 +an alternate implementation of Elisp + +00:12:29.019 --> 00:12:31.639 +but what Elisp is isn't the problem + +00:12:31.640 --> 00:12:35.039 +space here. That's a fixed, a given, if you will. + +00:12:35.040 --> 00:12:36.065 +Is that all right? + +00:12:36.066 --> 00:12:39.199 +That's a good way of saying it. Okay. Yeah, what you + +00:12:39.200 --> 00:12:42.559 +said makes sense. I was kind of responding to some comments, + +00:12:42.560 --> 00:12:44.959 +like I'm not sure it connected for everybody. Makes a lot of + +00:12:44.960 --> 00:12:47.399 +sense. Yeah, I wasn't sure how much I needed to expand on that + +00:12:47.400 --> 00:12:51.119 +and explain that, but I appreciate you jumping in. + +00:12:51.120 --> 00:12:57.907 +Um, okay. So if I were just going to, but... + +NOTE Q: Will your Rust implementation also be able to run Emacs bytecode? Or are you implementing it at the Lisp level? + +00:12:57.908 --> 00:13:02.239 +Will your Rust implementation also be able to run Emacs bytecode or the + +00:13:02.240 --> 00:13:04.359 +implemented at the Lisp level? So I already have a bytecode + +00:13:04.360 --> 00:13:06.759 +interpreter inside there that runs the existing Elisp + +00:13:06.760 --> 00:13:09.519 +bytecode. And so that was one of the first things I did was + +00:13:09.520 --> 00:13:11.679 +bootstrap the interpreter and then bootstrap the bytecode + +00:13:11.680 --> 00:13:14.999 +engine. And so we compile, we use the... because the bytecode + +00:13:15.000 --> 00:13:19.079 +compiler is written in Emacs Lisp. So you bootstrap that + +00:13:19.080 --> 00:13:22.919 +and it gives you the Emacs bytecode. I have a bytecode + +00:13:22.920 --> 00:13:26.039 +engine that runs the bytecode. So that's already done. And + +00:13:26.040 --> 00:13:28.239 +you can potentially, on top of that, do something like the + +00:13:28.240 --> 00:13:31.999 +data compilation or a JIT. But we have both an + +00:13:32.000 --> 00:13:47.019 +interpreter and a bytecode compiler. + +00:13:47.020 --> 00:13:50.799 +And I'll just break in one more time to say with about five + +00:13:50.800 --> 00:13:56.319 +minutes left in our live time with this Q&A session, which + +00:13:56.320 --> 00:13:58.439 +we're happy to keep going as long as there are questions. + +00:13:58.440 --> 00:14:03.959 +Coming up in five minutes, we'll have a talk on color on the + +00:14:03.960 --> 00:14:09.639 +gen track. And then right here, we'll have the p-search + +00:14:09.640 --> 00:14:09.959 +talk. + +00:14:09.960 --> 00:14:20.099 +Thank you. + +NOTE Q: Is it possible to bootstrap with just the bytecode interpreter? + +00:14:20.100 --> 00:14:22.559 +Is it possible to bootstrap with just the bytecode + +00:14:22.560 --> 00:14:25.759 +interpreter? So I'll have to put in a link to one of my blog + +00:14:25.760 --> 00:14:28.519 +posts. So that was my original idea was to say, I don't want to + +00:14:28.520 --> 00:14:31.559 +have an interpreter, a bytecode interpreter and a native + +00:14:31.560 --> 00:14:33.180 +compiler. I want to just have just one. + +00:14:33.181 --> 00:14:36.741 +So I'm only going to have the bytecode. + +00:14:36.742 --> 00:14:37.708 +And so that's what I did initially. + +00:14:37.709 --> 00:14:42.079 +The problem with that is, is that a bunch of the early bootstrap + +00:14:42.080 --> 00:14:45.117 +Emacs code is written with the assumption + +00:14:45.118 --> 00:14:47.278 +that it's going to be interpreted. + +00:14:47.279 --> 00:14:49.019 +This is especially true with macros, + +00:14:49.020 --> 00:14:50.821 +where you'll have a function defined, + +00:14:50.822 --> 00:14:52.642 +you'll evaluate part of the function. + +00:14:52.643 --> 00:14:55.599 +The other half of the function has macros in it + +00:14:55.600 --> 00:14:59.719 +that are not defined yet, but it doesn't matter because they + +00:14:59.720 --> 00:15:02.399 +don't get used. But with the bytecode interpreter, it + +00:15:02.400 --> 00:15:04.639 +expands all macros when it gets the function definition. + +00:15:04.640 --> 00:15:08.799 +And so those weren't macros when the function was expanded, + +00:15:08.800 --> 00:15:12.359 +and therefore they got instantiated as functions, but + +00:15:12.360 --> 00:15:15.759 +they're not functions, they're macros. And so I initially + +00:15:15.760 --> 00:15:18.999 +spent a bunch of time trying to work around this, trying to + +00:15:19.000 --> 00:15:21.599 +move code around, work stuff around, refactor the code to + +00:15:21.600 --> 00:15:24.759 +try and get it to work with only bytecode interpreter. And + +00:15:24.760 --> 00:15:27.039 +eventually I just gave up. I said, you know what, I'm just + +00:15:27.040 --> 00:15:30.039 +going to write an actual interpreter to handle this because + +00:15:30.040 --> 00:15:33.799 +trying to handle all these lazy macros is too much work. And + +00:15:33.800 --> 00:15:35.759 +everything in the bootstrap is built with the assumption + +00:15:35.760 --> 00:15:37.799 +that you have lazy macro expansion. + +00:15:37.800 --> 00:15:45.159 +I'm guessing the Emacs bytecode interpreter isn't + +00:15:45.160 --> 00:15:45.959 +complete. + +00:15:45.960 --> 00:15:52.279 +So it's mostly complete. There's a handful of opcodes that + +00:15:52.280 --> 00:15:55.239 +aren't implemented that are pretty easy to add that I + +00:15:55.240 --> 00:15:57.879 +haven't run into. And there's some of them that are + +00:15:57.880 --> 00:16:00.119 +deprecated that aren't implemented, but it's essentially + +00:16:00.120 --> 00:16:00.479 +complete. + +00:16:00.480 --> 00:16:11.999 +We also provide a bytecode JIT compilation via libgcc the + +00:16:12.000 --> 00:16:17.344 +way Emacs currently does it. Eventually I would like to... + +00:16:17.345 --> 00:16:22.919 +I'm more inclined to have a proper runtime JIT than an + +00:16:22.920 --> 00:16:27.399 +ahead-of-time compiler like libgcc, like the current + +00:16:27.400 --> 00:16:29.919 +Emacs native compilation, because it allows you to take + +00:16:29.920 --> 00:16:34.559 +type information and actually apply that to the code, which + +00:16:34.560 --> 00:17:03.959 +can let you do more aggressive optimizations to it. + +NOTE What would it take to bootstrap Guile in Rune? + +00:17:03.960 --> 00:17:06.319 +He said, we may either get a new Emacs with an ancient C core + +00:17:06.320 --> 00:17:09.039 +with a modern Lisp, or an Emacs with modern core, but stuck + +00:17:09.040 --> 00:17:11.879 +with ancient Elisp. So there was another project I was + +00:17:11.880 --> 00:17:16.639 +talking to, one of the Guile implementations, about how we + +00:17:16.640 --> 00:17:19.119 +could potentially, he was like, what would it take to + +00:17:19.120 --> 00:17:24.479 +bootstrap Guile in Rune, where you have both, you could have + +00:17:24.480 --> 00:17:27.399 +Elisp and Guile running inside this project. And so we've + +00:17:27.400 --> 00:17:28.999 +started that discussion, which I think would be, which + +00:17:29.000 --> 00:17:33.999 +would be interesting. But it's tricky too, because + +00:17:34.000 --> 00:17:36.199 +fundamentally Elisp and Guile are two different + +00:17:36.200 --> 00:17:38.119 +languages. They have different semantics. They have + +00:17:38.120 --> 00:17:39.879 +different ways of handling things. You've really got to + +00:17:39.880 --> 00:17:42.479 +consider both of those when you're trying to make them work + +00:17:42.480 --> 00:17:42.799 +together. + +00:17:42.800 --> 00:17:57.319 +How would you do the native module system? What would be + +00:17:57.320 --> 00:17:59.799 +different? We can do the same thing. We have an FFI. So I + +00:17:59.800 --> 00:18:03.839 +haven't looked into it a ton, but I feel like it could be + +00:18:03.840 --> 00:18:06.359 +similar. And I'm actually interested, there's a couple + +00:18:06.360 --> 00:18:12.759 +projects on GitHub right now to have an FFI written in Elisp. + +00:18:12.760 --> 00:18:17.239 +So you don't even need to create a separate C or Rust module, + +00:18:17.240 --> 00:18:21.679 +because you can actually write native modules in Rust or C. + +00:18:21.680 --> 00:18:25.559 +And so you can just have direct bindings to a C FFI written in + +00:18:25.560 --> 00:18:27.799 +Elisp. You don't need any C code inside there. And I think + +00:18:27.800 --> 00:18:33.699 +that would be an interesting approach to look at as well. + +00:18:33.700 --> 00:18:35.839 +Oh, Ramin. Yeah, that's right. We were talking about that, + +00:18:35.840 --> 00:18:41.539 +about bootstrapping Scheme. + +00:18:41.540 --> 00:18:45.519 +And at this point, we have broken away from, uh, from this + +00:18:45.520 --> 00:18:47.399 +talk, but we're continuing to record and this will all be + +00:18:47.400 --> 00:18:50.439 +published. I'd say, go ahead and keep going as long as you'd + +00:18:50.440 --> 00:18:54.959 +like in here. And, um, thanks once again for the awesome + +00:18:54.960 --> 00:18:58.639 +discussion. Thank you so much. So I'll just pay attention to + +00:18:58.640 --> 00:19:02.919 +the ether pad and the chat and see. + +00:19:02.920 --> 00:19:05.919 +That sounds good. I'll keep an eye on IRC. And if there are + +00:19:05.920 --> 00:19:08.559 +more questions here, I'll bounce people toward the ether + +00:19:08.560 --> 00:19:12.760 +pad or this, uh, chat room. All right, thank you. diff --git a/2024/captions/emacsconf-2024-students--an-example-of-a-cohesive-student-workflow-in-emacs--daniel-pinkston--answers.vtt b/2024/captions/emacsconf-2024-students--an-example-of-a-cohesive-student-workflow-in-emacs--daniel-pinkston--answers.vtt new file mode 100644 index 00000000..2ea0a13c --- /dev/null +++ b/2024/captions/emacsconf-2024-students--an-example-of-a-cohesive-student-workflow-in-emacs--daniel-pinkston--answers.vtt @@ -0,0 +1,846 @@ +WEBVTT + +00:00:00.000 --> 00:00:11.119 +And I believe we are live. Hi, Daniel, how are you doing? I'm + +00:00:11.120 --> 00:00:17.199 +doing great. It's cold outside, but it's nice in here, yeah. + +00:00:17.200 --> 00:00:21.439 +I can assure you it's very cold in my own place as well. We do + +00:00:21.440 --> 00:00:24.679 +EmacsConf always in December and that's always when it's + +00:00:24.680 --> 00:00:27.479 +particularly cold where I live and I assume where you live as + +00:00:27.480 --> 00:00:31.039 +well. So, don't worry, we'll try to keep you warm with + +00:00:31.040 --> 00:00:35.039 +interesting questions. But first, thank you for taking the + +00:00:35.040 --> 00:00:38.359 +time out of your busy high school life to make a presentation + +NOTE Q: Do you have any thoughts about the process of recording something for a conference? + +00:00:38.360 --> 00:00:41.439 +about Emacs. Do you have any thoughts about the process of + +00:00:41.440 --> 00:00:44.399 +recording something for a conference? Because I assume + +00:00:44.400 --> 00:00:47.279 +it's one of the first ones you're ever doing. + +00:00:47.280 --> 00:00:55.879 +I think it was not as difficult as I thought it would be. I just + +00:00:55.880 --> 00:01:04.479 +recorded in my basement and prepared some notes + +00:01:04.480 --> 00:01:08.639 +beforehand. I think it was definitely helpful to have Emacs + +00:01:08.640 --> 00:01:11.959 +as a tool for that, because I made my presentation with + +00:01:11.960 --> 00:01:18.559 +Beamer. Right. I mean, it's amazing to see so many of the + +00:01:18.560 --> 00:01:22.519 +tools because, you know, you've shown Emacs, but you've + +00:01:22.520 --> 00:01:27.399 +shown Beamer. You've shown tools that are about twice as old + +00:01:27.400 --> 00:01:30.239 +as you are yourself, which is amazing when you think about + +00:01:30.240 --> 00:01:33.199 +it. But I think many people in the audience can actually + +00:01:33.200 --> 00:01:36.479 +relate to your discovery of those tools because we were + +00:01:36.480 --> 00:01:40.679 +pretty much, I mean a lot of us were your age when we started + +00:01:40.680 --> 00:01:43.999 +playing with those tools so it's like there's a little bit of + +00:01:44.000 --> 00:01:45.759 +nostalgia that we feel looking at your presentation + +00:01:45.760 --> 00:01:48.719 +because we are, we can see the excitement behind everything + +00:01:48.720 --> 00:01:51.919 +you've touched and that's great for us because it brings us + +00:01:51.920 --> 00:01:55.919 +back maybe 10 or 20 years in the past and for others perhaps 30 + +00:01:55.920 --> 00:02:01.079 +or 40 years so that's kind of amazing. + +00:02:01.080 --> 00:02:05.039 +How about we start taking some questions? So, just for + +00:02:05.040 --> 00:02:09.199 +timekeeping, we have until 20 of the current hours, which is + +00:02:09.200 --> 00:02:12.079 +8 minutes and 30 seconds to cover as many questions as + +00:02:12.080 --> 00:02:16.599 +possible. Now, if we might take the first one. So, Corwin, + +00:02:16.600 --> 00:02:20.359 +can you scroll down to the questions? Yes. I'll be reading + +00:02:20.360 --> 00:02:22.319 +you the questions just to make it a little easier for you, + +00:02:22.320 --> 00:02:23.791 +Daniel, to answer them. + +NOTE Q: I use org-roam for notes and find it very useful - have you considered it? + +00:02:23.792 --> 00:02:25.999 +I use Org-roam for notes and find it + +00:02:26.000 --> 00:02:30.639 +very useful. Have you considered it? Uh, yeah, that's + +00:02:30.640 --> 00:02:35.519 +actually where I started out for taking notes. Um, that, + +00:02:35.520 --> 00:02:38.719 +that I moved to Denote because I didn't use all of its + +00:02:38.720 --> 00:02:44.319 +features, um, for, Org Roam, I meant. + +00:02:44.320 --> 00:02:46.999 +Uh, I also didn't, didn't really like the dependency on an + +00:02:47.000 --> 00:02:51.919 +external database. Uh, it just like took a while for, um, + +00:02:51.920 --> 00:02:56.879 +stuff to index if I moved it between like, uh, using sync + +00:02:56.880 --> 00:03:03.679 +thing. laptop and my desktop. Yeah. Yeah, it's definitely + +00:03:03.680 --> 00:03:08.119 +something, I mean, I co-maintain Org Roam, so I'm fully aware + +00:03:08.120 --> 00:03:12.159 +of this problem with it. And yeah, SyncThing is not great to + +00:03:12.160 --> 00:03:16.639 +sync a database, a SQLite database that we use. And, I mean, + +00:03:16.640 --> 00:03:19.399 +whichever solution you use, whatever works for you is good. + +00:03:19.400 --> 00:03:21.919 +Orgrim was kind of thought in terms of scalability for + +00:03:21.920 --> 00:03:26.199 +people who had, you know, thousands of notes with thousands + +00:03:26.200 --> 00:03:28.919 +of links inside of them. so perhaps it's not adapted to your + +00:03:28.920 --> 00:03:31.039 +note-taking style right now, but perhaps it's something to + +00:03:31.040 --> 00:03:34.599 +keep in mind, you know, it's many tools and you use them when + +00:03:34.600 --> 00:03:39.599 +you need to. Colin, if we can switch the questions, I'm + +00:03:39.600 --> 00:03:40.879 +switching to the second one. + +NOTE Q: Do you use the Getting Things Done methodology as part of your Org workflow? + +00:03:40.880 --> 00:03:42.159 +Do you use the Getting Things + +00:03:42.160 --> 00:03:46.639 +Done methodology as part of your Org workflow? So there's an + +00:03:46.640 --> 00:03:50.039 +interesting thing about that. I started with Org first and + +00:03:50.040 --> 00:03:54.959 +then I heard about Getting Things Done, so I didn't exactly + +00:03:54.960 --> 00:04:01.679 +design my workflow with that in mind, but I sort of + +00:04:01.680 --> 00:04:06.439 +reinvented it, I would say, not really, but I do a lot of + +00:04:06.440 --> 00:04:09.439 +the similar things, but I don't have the different TODO + +00:04:09.440 --> 00:04:11.319 +states like... + +00:04:11.320 --> 00:04:17.279 +I don't know an example because I didn't really look into it + +00:04:17.280 --> 00:04:22.719 +that much, but it would be like NEXT isn't the next thing + +00:04:22.720 --> 00:04:28.879 +you're going to do. But I don't think I... + +00:04:28.880 --> 00:04:35.239 +where I just write what I need to do and then schedule it and + +00:04:35.240 --> 00:04:40.999 +then look at my agenda for the next thing. Yeah, I mean, part + +00:04:41.000 --> 00:04:45.959 +of the beauty of using Emacs, Org Mode or using a methodology + +00:04:45.960 --> 00:04:49.719 +like Getting Things Done is that I think you need to find room + +00:04:49.720 --> 00:04:53.519 +in the method or the tool for you to organically do what you + +00:04:53.520 --> 00:04:57.279 +want. And it's okay to not do everything in a Getting Things + +00:04:57.280 --> 00:05:00.599 +Done methodology. I know a lot of people take issue + +00:05:00.600 --> 00:05:04.719 +with the tickler file, where you're supposed to put stuff to + +00:05:04.720 --> 00:05:07.319 +review in the future. For instance, if you don't want + +00:05:07.320 --> 00:05:10.439 +to work on this particular topic right now in your life, you + +00:05:10.440 --> 00:05:14.679 +decide, oh, I'd like to revisit this topic maybe in six + +00:05:14.680 --> 00:05:17.399 +months. And then you have this tickler file, which has + +00:05:17.400 --> 00:05:21.799 +entries and folders for each month of the year. And when six + +00:05:21.800 --> 00:05:24.039 +months comes and you find yourself at the beginning of the + +00:05:24.040 --> 00:05:27.319 +next month, you open the file and you see, oh there's the task + +00:05:27.320 --> 00:05:30.319 +I left off for later. A lot of people don't like to do it this + +00:05:30.320 --> 00:05:34.279 +way, some people really like it, but part of the beauty of + +00:05:34.280 --> 00:05:38.119 +having tools which are very modular like Emacs and Org Mode + +00:05:38.120 --> 00:05:41.479 +allows you to have, well, you just adjust the method for + +00:05:41.480 --> 00:05:44.439 +something that works. And there's something to be garnered + +00:05:44.440 --> 00:05:48.759 +as well for applying these lessons to how you organize your + +00:05:48.760 --> 00:05:51.559 +life, not merely in front of a computer, but also how you + +00:05:51.560 --> 00:05:54.519 +manage your tasks elsewhere at school, iSchool or + +00:05:54.520 --> 00:05:58.519 +elsewhere. + +NOTE Q: org-fc and org-drill are emacs org mode centric flash card solutions, have you looked into them? + +00:05:58.520 --> 00:06:02.799 +All right, moving to the next question. Org-fc and org-drill + +00:06:02.800 --> 00:06:06.319 +are Emacs Org Mode-centric flashcard solutions. Have you + +00:06:06.320 --> 00:06:11.599 +looked into them? I think I looked into Org-Drill, but I + +00:06:11.600 --> 00:06:17.359 +wanted to use Anki because of... I wanted to use it on my + +00:06:17.360 --> 00:06:21.439 +phone, but then I realized I had to pay for the app, and then I + +00:06:21.440 --> 00:06:24.119 +didn't want to use it on my phone anymore. + +00:06:24.120 --> 00:06:31.799 +but it's just something that I used before without work mode + +00:06:31.800 --> 00:06:35.239 +for a little bit. And then I liked it, + +00:06:35.240 --> 00:06:42.919 +but yeah, it works pretty well with Org mode. So I didn't + +00:06:42.920 --> 00:06:47.799 +find a reason to switch to one of those because like I might be + +00:06:47.800 --> 00:06:53.559 +not at a computer one day and have to learn something. Yeah, + +00:06:53.560 --> 00:06:56.399 +that's something that you call premature optimization. + +00:06:56.400 --> 00:06:59.479 +And if you continue as a software engineer at university, + +00:06:59.480 --> 00:07:02.679 +you'll get to hear plenty of this. But yes, Anki is also a tool + +00:07:02.680 --> 00:07:06.399 +that I've used a whole lot in my learning journeys, be it + +00:07:06.400 --> 00:07:09.719 +about languages, be it about literature, be it about + +00:07:09.720 --> 00:07:15.519 +whatever really, and it's a very good tool and I recommend + +00:07:15.520 --> 00:07:17.799 +people to look into it, especially since they've released a + +00:07:17.800 --> 00:07:20.839 +new algorithm to manage learning a little differently than + +00:07:20.840 --> 00:07:23.719 +the old one. If you're familiar with SuperMemo, I really + +00:07:23.720 --> 00:07:25.992 +invite you to look into the advancement + +00:07:25.993 --> 00:07:27.505 +in Anki in recent years. + +NOTE Q: What do other students think about your approach - and what are they doing instead (if anything)? And your teachers - what do they think? + +00:07:27.506 --> 00:07:31.399 +Moving to another question, what do other students + +00:07:31.400 --> 00:07:33.919 +think about your approach and what are they doing instead, + +00:07:33.920 --> 00:07:39.359 +if anything? And your teachers, what do they think? So for + +00:07:39.360 --> 00:07:43.199 +other students they usually are just confused about what's + +00:07:43.200 --> 00:07:51.879 +going on when I show my computer because they know that I use + +00:07:51.880 --> 00:07:56.759 +Linux but they don't know what it is so they're just assuming + +00:07:56.760 --> 00:08:03.839 +everything on my computer is I'm either hacking or like + +00:08:03.840 --> 00:08:05.999 +doing some Linux thing and + +00:08:06.000 --> 00:08:09.919 +I don't really bother to explain it to them so that's kind + +00:08:09.920 --> 00:08:17.079 +But for I love it. See my see my prior videos. That's that's + +00:08:17.080 --> 00:08:19.559 +wonderful. Pardon me. Pardon me for breaking in, Daniel. + +00:08:19.560 --> 00:08:22.239 +But I just since I have, I want to say wonderful + +00:08:22.240 --> 00:08:28.559 +presentation. I love your spirit, your tone and great + +00:08:28.560 --> 00:08:29.319 +thought there. + +00:08:29.320 --> 00:08:31.399 +For my teachers, I think... + +00:08:31.400 --> 00:08:38.799 +because if I write an essay or something, I usually paste it + +00:08:38.800 --> 00:08:46.879 +in Google Docs. But recently, I got more confident, which is + +00:08:46.880 --> 00:08:53.879 +export to LaTeX, and I did that for my physics labs. My + +00:08:53.880 --> 00:08:56.439 +teacher was pretty satisfied with the results for the math + +00:08:56.440 --> 00:09:03.119 +formatting. So I think they don't really have a problem with + +00:09:03.120 --> 00:09:06.959 +it, where it's actually more convenient, maybe. + +00:09:06.960 --> 00:09:13.039 +That's really great to hear and if you continue at + +00:09:13.040 --> 00:09:16.519 +university, which I'm almost sure that you will, your + +00:09:16.520 --> 00:09:19.279 +professors, you'll be pretty much using the same tools as + +00:09:19.280 --> 00:09:23.359 +they are, so you'll find yourself in a like-minded crowd of + +00:09:23.360 --> 00:09:28.519 +people once you get to university. We are a little short on + +00:09:28.520 --> 00:09:30.719 +time because we need to move to the next talk in about one + +00:09:30.720 --> 00:09:35.999 +minute. There are still some questions and Daniel, I would + +00:09:36.000 --> 00:09:40.399 +invite you to stay and maybe answer them in a room so that we + +00:09:40.400 --> 00:09:43.399 +can gather as many of your answers as possible. But before we + +00:09:43.400 --> 00:09:45.239 +leave, I just want to give you the opportunity, if you have + +00:09:45.240 --> 00:09:46.919 +any last words, to share them with the crowd. + +00:09:46.920 --> 00:09:53.479 +Well, for the students who may be watching this, I hope that + +00:09:53.480 --> 00:09:57.319 +you give Emacs a try. And good luck if you decide to use + +00:09:57.320 --> 00:10:01.519 +something else because it's probably won't be as great. + +00:10:01.520 --> 00:10:07.399 +It's very good to be so young and to already be convinced that + +00:10:07.400 --> 00:10:09.879 +Emacs is the best thing. For some of us, it took us many + +00:10:09.880 --> 00:10:12.839 +decades to reach this conclusion, and I'm so happy + +00:10:12.840 --> 00:10:15.095 +to see young people. I used to be a teacher, + +00:10:15.096 --> 00:10:17.016 +by the way, so I used to teach people your age, + +00:10:17.017 --> 00:10:19.799 +but I'm so happy to see people your age + +00:10:19.800 --> 00:10:23.359 +interested in Emacs because it makes me hopeful that in the + +00:10:23.360 --> 00:10:26.799 +future we'll have people carrying the flame and standing on + +00:10:26.800 --> 00:10:30.039 +the shoulders of current people. So thank you so much, + +00:10:30.040 --> 00:10:32.917 +Daniel. We'll be seeing you soon. We wish you good luck with + +00:10:32.917 --> 00:10:35.999 +your studies. And for EmacsConf, we'll be moving to the next + +00:10:36.000 --> 00:10:39.624 +talk in five seconds. See you soon. And I want to reassure + +00:10:39.625 --> 00:10:44.332 +you, we'll post all the Q&A info when we do post this video. + +00:10:44.333 --> 00:10:47.839 +Yes. So Daniel, as I said, + +00:10:47.840 --> 00:10:49.239 +if you want to stick around a little more with + +00:10:49.240 --> 00:10:51.839 +Corwin to answer the questions, that's all fine. + +00:10:51.840 --> 00:10:53.599 +I'll be moving to the next room to get ready for the next + +00:10:53.600 --> 00:10:59.159 +talks. So thank you, Daniel. And I'll see you later. + +00:10:59.160 --> 00:11:06.199 +All right, the cops are gone. Wait, no, I'm just kidding. No, + +00:11:06.200 --> 00:11:10.042 +but if you'd like to walk through a few more of these + +00:11:10.043 --> 00:11:11.960 +questions, I'd be happy to record that. You're not + +00:11:12.000 --> 00:11:14.559 +obligated to do that. You could also, the pad's there. You + +00:11:14.560 --> 00:11:16.999 +could just type out your answers or whatever you prefer to + +00:11:17.000 --> 00:11:24.559 +do. I guess I can answer them still. Cool. + +00:11:24.560 --> 00:11:25.359 +So we're here. + +NOTE Q: What was your biggest source of frustration/friction/confusion when getting started with Emacs? + +00:11:25.360 --> 00:11:27.759 +What was your biggest source of frustration, friction, + +00:11:27.760 --> 00:11:32.319 +confusion when getting started? + +00:11:32.320 --> 00:11:38.239 +I honestly don't really remember. It + +00:11:38.240 --> 00:11:45.279 +somehow just clicked one day and I figured it out. + +00:11:45.280 --> 00:11:48.123 +All right, it takes us pretty naturally to the next one. + +NOTE Q: How did you come across Emacs? What got you into it? + +00:11:48.124 --> 00:11:54.079 +How did you come across Emacs? What got you into it? I could ask + +00:11:54.080 --> 00:11:58.280 +this question quite + +00:11:58.320 --> 00:12:05.479 +similar to how I stumbled into Linux, where I was... I heard + +00:12:05.480 --> 00:12:09.519 +of it before, but I saw screenshots of it + +00:12:09.520 --> 00:12:11.247 +or something on Reddit, and I was like, oh, + +00:12:11.248 --> 00:12:14.648 +that looks pretty cool, maybe I'll look into that. + +00:12:14.649 --> 00:12:16.599 +And then on YouTube, I would see videos + +00:12:16.600 --> 00:12:21.199 +about Doom Emacs, and then the Doomcasts video, + +00:12:21.200 --> 00:12:37.239 +I think that's what really got me into it. + +00:12:37.240 --> 00:12:42.279 +Okay, I did my best to capture that. So what's the situation + +00:12:42.280 --> 00:12:46.439 +with respect to the mobile use, if that's applicable? And + +00:12:46.440 --> 00:12:47.639 +Orgzly is, + +00:12:47.640 --> 00:12:52.359 +sorry, was it not Doomcast? Is it System Crafters? + +00:12:52.360 --> 00:12:58.199 +Sorry if I botched the note. Oh yeah, System Crafters was + +00:12:58.200 --> 00:13:01.679 +also one of the things I used for getting into Emacs from + +00:13:01.680 --> 00:13:08.079 +scratch. I'm sorry if my dog is barking. + +00:13:08.080 --> 00:13:16.799 +the, I'm not sure how to pronounce his name, but Protesilaos, + +00:13:16.800 --> 00:13:20.399 +I think that's how you say it. I always say Prot just to get me + +00:13:20.400 --> 00:13:23.039 +out of that problem for what it's worth. I'm not sure that I + +00:13:23.040 --> 00:13:26.719 +can say it properly either. Yeah, his videos were really + +00:13:26.720 --> 00:13:30.479 +great for getting started with each, each individual + +00:13:30.480 --> 00:13:31.240 +component of + +00:13:31.292 --> 00:13:34.124 +something like there's entire videos just + +00:13:34.125 --> 00:13:40.249 +about completion and about a tool called Embark. And like, I + +00:13:40.250 --> 00:13:41.318 +would just watch those videos + +00:13:41.319 --> 00:13:42.999 +while I was doing the dishes or something. + +00:13:43.000 --> 00:13:53.679 +and I would learn a lot from that. + +NOTE Q: What the situation with respect to "mobile" use (if ever that's applicable)? (yes, Orgzly...using that?) + +00:13:53.680 --> 00:13:59.120 +Awesome. I love it. What about the mobile... + +00:13:59.121 --> 00:14:04.960 +sorry, did I get that question out there already? Oh, no. + +00:14:04.961 --> 00:14:07.917 +I don't use Emacs or any Org Mode things on my + +00:14:07.918 --> 00:14:19.963 +phone. I have an iPhone, unfortunately. + +00:14:19.964 --> 00:14:24.120 +But for org files, I couldn't really get it to sync over + +00:14:24.121 --> 00:14:26.800 +without using a paid app. + +00:14:26.801 --> 00:14:28.040 +And I didn't really look into it + +00:14:28.041 --> 00:14:30.140 +that much because I have a computer with me + +00:14:30.141 --> 00:14:36.000 +almost all the time. + +00:14:36.001 --> 00:14:39.520 +Usually I carry around a notebook. And if I really need to + +00:14:39.521 --> 00:14:41.940 +know something or remember it for later, + +00:14:41.941 --> 00:14:52.660 +I just write it down. + +00:14:52.661 --> 00:15:01.759 +I've seen people get started with e-ink tablets, and they + +00:15:01.760 --> 00:15:07.959 +sync it with SyncThing because it's Android, but I don't use + +00:15:07.960 --> 00:15:21.919 +that, so I can't really attest to how good it is. + +NOTE Q: Has using emacs led to expanded interest in programming/computer science? + +00:15:21.920 --> 00:15:25.559 +So has using Emacs led you to an expanded interest in + +00:15:25.560 --> 00:15:28.519 +programming and computer science? Sorry if + +00:15:28.520 --> 00:15:31.781 +I could have got that out of the presentation. + +00:15:31.782 --> 00:15:33.999 +I think Emacs is what got me + +00:15:34.000 --> 00:15:37.840 +started with Lisp specifically. + +00:15:37.900 --> 00:15:40.380 +Otherwise, I probably would have not really looked into it + +00:15:40.381 --> 00:15:44.920 +that much, other than like maybe dabbling in Scheme + +00:15:44.921 --> 00:15:50.180 +from the Structures and Interpretations of Computer + +00:15:50.181 --> 00:15:53.680 +Programs book. But I probably wouldn't have seen that if I + +00:15:53.681 --> 00:16:06.120 +hadn't discovered Emacs either so. + +00:16:06.121 --> 00:16:08.792 +I was already into programming + +00:16:08.793 --> 00:16:14.958 +before Emacs, and I had used VS Code for a little bit and then + +00:16:14.959 --> 00:16:22.917 +Vim. But I think I've done most of my programming + +00:16:22.918 --> 00:16:26.667 +inside of Emacs, in terms of lines of code written, + +00:16:26.668 --> 00:16:40.671 +projects made... + +NOTE Q: How does interaction with others work in technical terms? + +00:16:40.672 --> 00:16:44.519 +So maybe we'd jump from there, right, to, you mentioned + +00:16:44.520 --> 00:16:48.359 +exporting notes, essays, and so on, handing them on to other + +00:16:48.360 --> 00:16:53.319 +people. How does interaction with others work in technical + +00:16:53.320 --> 00:16:57.759 +terms? We mostly find workflows centered around like + +00:16:57.760 --> 00:17:00.479 +Microsoft products, and that makes sense to me. I have a day + +00:17:00.480 --> 00:17:03.719 +job where I have to work with a bunch of Microsoft products, + +00:17:03.720 --> 00:17:08.399 +and I know the workflows for that. So how do you manage your + +00:17:08.400 --> 00:17:14.519 +kind of Emacs-y you know, workflows, um, you know, in terms of + +00:17:14.520 --> 00:17:19.119 +sharing with people. Yeah. So for sharing with like my + +00:17:19.120 --> 00:17:22.719 +teachers or something, I would, we use like Google at our + +00:17:22.720 --> 00:17:25.759 +school. So for, I'm very fortunate that I don't have to deal + +00:17:25.760 --> 00:17:29.639 +with Microsoft other than with a very niche situations in + +00:17:29.640 --> 00:17:32.599 +which I can just use LibreOffice and then convert to Doc X or + +00:17:32.600 --> 00:17:35.719 +something. I heard that chef. That's, that's how all my + +00:17:35.720 --> 00:17:39.679 +vendors, uh, my vendors all roll their eyes when they were, + +00:17:39.680 --> 00:17:42.885 +oh, you're a Microsoft shop. Yep. Heard. + +00:17:42.886 --> 00:17:45.947 +Then they're all Google shops too, in education. + +00:17:45.948 --> 00:17:51.958 +Great point. For Google, I just... If my teachers wanted + +00:17:51.959 --> 00:17:53.125 +a Google Doc or something, + +00:17:53.126 --> 00:17:54.299 +I usually just copy paste + +00:17:54.300 --> 00:17:55.679 +whatever I wrote in Emacs + +00:17:55.680 --> 00:17:59.333 +and then still keep it, anyway, as a side thing + +00:17:59.334 --> 00:18:00.667 +because I don't really trust the cloud + +00:18:00.668 --> 00:18:02.875 +that much in terms of using + +00:18:02.876 --> 00:18:10.667 +it for later if I wanted to look at it. But for that, I don't + +00:18:10.668 --> 00:18:14.339 +really have too much problems. Hopefully, I will find a way + +00:18:14.340 --> 00:18:21.439 +to figure it out when I get into university. + +00:18:21.440 --> 00:18:26.679 +Awesome. Okay, well, I know we did it once already, but since + +00:18:26.680 --> 00:18:30.479 +this will be the end of the video, let me just open the floor + +00:18:30.480 --> 00:18:33.439 +one more time for parting thoughts. + +00:18:33.440 --> 00:18:41.719 +I'm not sure that I have any. I mean, you said it pretty well, + +00:18:41.720 --> 00:18:46.639 +right? I hope my peers see this. I hope they realize other + +00:18:46.640 --> 00:18:49.879 +tools are kind of inferior from a gets things done + +00:18:49.880 --> 00:18:54.639 +standpoint. Saw your talk. Heard that message in this Q&A. + +00:18:54.640 --> 00:18:58.159 +I think you did a great job. You don't have to say more, but + +00:18:58.160 --> 00:19:02.835 +just offering you the chance. Thank you. + +00:19:02.836 --> 00:19:03.916 +Well, thank you, Daniel, + +00:19:03.917 --> 00:19:07.439 +and thanks to everybody watching this video + +00:19:07.440 --> 00:19:09.838 +during the conference or after it, + +00:19:09.839 --> 00:19:12.159 +and appreciate and look forward + +00:19:12.160 --> 00:19:18.880 +to your talks in the future, Daniel. Thank you. diff --git a/2024/captions/emacsconf-2024-theme--my-journey-of-finding-and-creating-the-perfect-emacs-theme--metrowind--answers.vtt b/2024/captions/emacsconf-2024-theme--my-journey-of-finding-and-creating-the-perfect-emacs-theme--metrowind--answers.vtt new file mode 100644 index 00000000..bb183779 --- /dev/null +++ b/2024/captions/emacsconf-2024-theme--my-journey-of-finding-and-creating-the-perfect-emacs-theme--metrowind--answers.vtt @@ -0,0 +1,405 @@ +WEBVTT + +00:00:00.000 --> 00:00:09.279 +So just to be clear, right now we are currently streaming. So + +00:00:09.280 --> 00:00:12.679 +if you want to answer with your voice, you can as well. Oh, I'm + +00:00:12.680 --> 00:00:17.999 +sorry. Okay. Yeah. So I've got a question. I think there was a + +00:00:18.000 --> 00:00:20.279 +little bit of a misunderstanding with whether we were doing + +00:00:20.280 --> 00:00:25.079 +a Q&A on BBB or if we were doing it on Etherpad. So it's really + +00:00:25.080 --> 00:00:28.479 +up to you. Right now we've set up everything. So if you want to + +00:00:28.480 --> 00:00:32.119 +start answering questions with your voice, we might as + +00:00:32.120 --> 00:00:33.864 +well. So OK, so I can just do it live. + +NOTE Q: When you choose colors based on the same lightness, does it not hurt readability since the eye sees lightness most? + +00:00:33.865 --> 00:00:38.239 +So one question is, so I + +00:00:38.240 --> 00:00:41.839 +assume this is a question on the lab space, where all the + +00:00:41.840 --> 00:00:46.959 +colors are the same lightness. Does it hurt readability? So + +00:00:46.960 --> 00:00:53.679 +far, I find it to be OK. For the lab theme, I picked the colors + +00:00:53.680 --> 00:01:00.999 +manually. So like I could just fix a angle essentially so + +00:01:01.000 --> 00:01:11.759 +that no colors are similar, so I have good readability. But + +00:01:11.760 --> 00:01:18.959 +for a random theme in Monte Carlo, it's hard because like + +00:01:18.960 --> 00:01:24.639 +it's just random. But yeah, that's a really good point. And + +00:01:24.640 --> 00:01:28.959 +also that's one of the motivations I did the nothing, you + +00:01:28.960 --> 00:01:33.999 +know, the great scale theme to explore just using + +00:01:34.000 --> 00:01:39.759 +lightness. Yeah. + +00:01:39.760 --> 00:01:48.199 +So looking at other questions. + +00:01:48.200 --> 00:01:52.279 +Okay, great. Do you want to take the next question. So, okay. + +NOTE Q: For monte-carlo, are all the "random" colors picked using a colorwheel/hue rotation? + +00:01:52.280 --> 00:01:56.959 +Okay, let's go to the third first. Let's finish. Yes, for + +00:01:56.960 --> 00:01:59.999 +Monte Carlo are all the random colors that using a color + +00:02:00.000 --> 00:02:06.479 +wheel here. Yes. Well, so basically, what this theme does is + +00:02:06.480 --> 00:02:14.159 +it. It picks a saturation and lightness for me first. These + +00:02:14.160 --> 00:02:19.759 +are also random, but they are picked with some kind of range. + +00:02:19.760 --> 00:02:26.559 +And that's a parameter that I can play with, you know, the + +00:02:26.560 --> 00:02:28.959 +range of lightness and separation. + +00:02:28.960 --> 00:02:33.479 +Once those are fixed, the colors are picked by angles in the + +00:02:33.480 --> 00:02:38.399 +color wheel, or heel rotation, as you would put it. So yes, + +00:02:38.400 --> 00:02:43.719 +that's roughly the process. + +NOTE Q: One area I see emacs able to do themes that is "underused?" is changing the font + +00:02:43.720 --> 00:02:47.239 +OK, great. I think the second question is still in the + +00:02:47.240 --> 00:02:51.679 +process. Oh, well, maybe you could start fielding it. I + +00:02:51.680 --> 00:02:55.319 +think you've got already something to work on. I see one area + +00:02:55.320 --> 00:03:01.199 +I see Emacs able to do. under use is changing the font, font + +00:03:01.200 --> 00:03:09.759 +size, font type, model space based on various faces. Yeah, + +00:03:09.760 --> 00:03:13.439 +so to paraphrase the question, one thing that Emacs is + +00:03:13.440 --> 00:03:17.399 +definitely not doing a whole lot of right now is changing the + +00:03:17.400 --> 00:03:21.079 +font that is being used, be it the font size, the font family. + +00:03:21.080 --> 00:03:25.039 +Sometimes you see themes, especially old mode themes, + +00:03:25.040 --> 00:03:29.199 +fontify differently the headers of the documents versus + +00:03:29.200 --> 00:03:31.879 +the content, and usually you do have a little bit of a + +00:03:31.880 --> 00:03:34.719 +contrast that is being introduced. But is it something that + +00:03:34.720 --> 00:03:38.959 +you find value in, this type of contrast based on font? And to + +00:03:38.960 --> 00:03:45.159 +me, it's my personal preference to just use one font. I don't + +00:03:45.160 --> 00:03:51.479 +even change the font size a lot in org mode. It's just + +00:03:51.480 --> 00:03:55.319 +personal preference. + +00:03:55.320 --> 00:03:58.999 +I've seen scenes where once I applied, I opened the org doc + +00:03:59.000 --> 00:04:04.639 +and suddenly all the titles are like Serif or some fancy + +00:04:04.640 --> 00:04:12.759 +fonts. That works. And to me, again, it's a personal + +00:04:12.760 --> 00:04:16.919 +preference that I don't really like that, but I know a lot of + +00:04:16.920 --> 00:04:21.799 +people like that. So it's up to you, I guess. Yeah, I mean, + +00:04:21.800 --> 00:04:25.839 +this, as we've seen in your talk and as well as the previous + +00:04:25.840 --> 00:04:29.279 +one we had this morning, you know, themes are very personal + +00:04:29.280 --> 00:04:33.079 +and at the end, whatever you need to, you know, some people + +00:04:33.080 --> 00:04:35.799 +are going to need more contrast than others, some people are + +00:04:35.800 --> 00:04:37.999 +going to need a little more variety in the fonts that they + +00:04:38.000 --> 00:04:41.359 +use. Ultimately, it's up to you really what you want to use. + +00:04:41.360 --> 00:04:45.199 +The end point, the angle that one should be aiming for is to + +00:04:45.200 --> 00:04:49.039 +feel comfortable in what they're editing. And whether this + +00:04:49.040 --> 00:04:52.799 +comfort translates into a very barebone color theme like + +00:04:52.800 --> 00:04:56.319 +the one we saw this morning with very slight colors but still + +00:04:56.320 --> 00:04:59.079 +which has a lot of personality or perhaps something closer + +00:04:59.080 --> 00:05:04.279 +to yours which tends to use equal luminance or lightness for + +00:05:04.280 --> 00:05:07.879 +the different entries. Well, everyone needs to tune in and + +00:05:07.880 --> 00:05:13.959 +find whatever works best for them, I think. Yep. And also, I + +00:05:13.960 --> 00:05:18.479 +want to note, I actually have a personal rule. It's also in + +00:05:18.480 --> 00:05:24.479 +all my themes. It's that comments have to be italic. I just + +00:05:24.480 --> 00:05:31.999 +like the look of italic comments. So, I actually... So, if + +00:05:32.000 --> 00:05:37.799 +you... In one of the section in the video, I mentioned I have + +00:05:37.800 --> 00:05:41.959 +hooks. Maybe I didn't mention, but I have hooks when using + +00:05:41.960 --> 00:05:47.359 +the picking the random theme setup. One of the purpose of + +00:05:47.360 --> 00:05:52.359 +that hook is I can add italic to all the themes on the comment + +00:05:52.360 --> 00:05:58.999 +face. Which I don't think it works actually right now, but + +00:05:59.000 --> 00:06:02.679 +that's the intention. Yeah, but I think it answers the + +00:06:02.680 --> 00:06:05.879 +question we started on originally. Because changing the + +00:06:05.880 --> 00:06:11.559 +font, I mean, using the italic variant of the font, it's + +00:06:11.560 --> 00:06:14.119 +literally a different font. And so, being able to have this + +00:06:14.120 --> 00:06:17.479 +type of contrast is actually important for you. So, it's + +00:06:17.480 --> 00:06:20.839 +nice that you managed to find this particular bit of + +00:06:20.840 --> 00:06:25.519 +knowledge through experimentation. And also I want to add + +00:06:25.520 --> 00:06:30.719 +that if you pick a monospace font like I do, usually there's + +00:06:30.720 --> 00:06:37.439 +not a lot of... Creativity? No, that's not the word. It's a + +00:06:37.440 --> 00:06:45.639 +lot of personality in the regular font part. But people do + +00:06:45.640 --> 00:06:51.799 +put a lot of different things in the italic. So yeah, if you + +00:06:51.800 --> 00:06:55.999 +can find a way to utilize the italic face, you could see some + +00:06:56.000 --> 00:07:01.239 +interesting results. Yeah, definitely. Again, I think + +00:07:01.240 --> 00:07:03.719 +it's important to consider all the things you can play with + +00:07:03.720 --> 00:07:06.519 +in terms of contrast. Because at the end of the day, you know, + +00:07:06.520 --> 00:07:08.839 +some people are going to be more receptive to a change of font + +00:07:08.840 --> 00:07:11.639 +than change of color. You know, just considering the amount + +00:07:11.640 --> 00:07:14.439 +of people who are colorblind and who are using software like + +00:07:14.440 --> 00:07:19.279 +this. You know, sometimes your vision optimizes for + +00:07:19.280 --> 00:07:22.039 +particular kind of changes and some people are going to be + +00:07:22.040 --> 00:07:26.279 +more sensitive to a slanted eye than they would be to an eye + +00:07:26.280 --> 00:07:31.479 +that is red or an eye that is blue. So, But it's not for + +00:07:31.480 --> 00:07:31.999 +everyone. + +00:07:32.000 --> 00:07:37.519 +So I'm looking at the time and we have about eight minutes + +00:07:37.520 --> 00:07:38.839 +until we go into the next talk. + +00:07:38.840 --> 00:07:44.519 +To be frank, I don't think I've got any more questions on my + +00:07:44.520 --> 00:07:46.879 +end. I'm not sure if we've got any people on BBB who has joined + +00:07:46.880 --> 00:07:49.119 +us and would like to ask a question. Let me check on IRC + +00:07:49.120 --> 00:07:53.799 +quickly if we've got any questions coming our way. I don't + +00:07:53.800 --> 00:07:57.199 +see any. Do you see any on your end? + +00:07:57.200 --> 00:08:06.479 +Not really. Well, then I suggest we just leave it at that and + +00:08:06.480 --> 00:08:08.679 +enjoy a little break before the next chat. So, thank you so + +00:08:08.680 --> 00:08:11.559 +much Metrowind for coming to EmacsConf and talking about + +00:08:11.560 --> 00:08:14.399 +colors because, as you saw, many people are interested + +00:08:14.400 --> 00:08:17.199 +about them, so much that another person decided to have a + +00:08:17.200 --> 00:08:20.639 +chat about theme. We didn't plan for this, but it's nice to + +00:08:20.640 --> 00:08:23.959 +see. And, well, perhaps you could collaborate in the future + +00:08:23.960 --> 00:08:26.919 +and both find the mutual confidence that you need to push + +00:08:26.920 --> 00:08:29.799 +your stuff to Melpa. Because I did hear that you weren't + +00:08:29.800 --> 00:08:33.119 +feeling too confident about your random color theme + +00:08:33.120 --> 00:08:37.439 +package. But, you know, you've done the first step, which is + +00:08:37.440 --> 00:08:40.559 +talking about it and sharing it with all of us. And perhaps + +00:08:40.560 --> 00:08:42.759 +the next step is to actually clean up the code to your + +00:08:42.760 --> 00:08:47.959 +satisfaction and publish it eventually. Oh, I can see + +00:08:47.960 --> 00:08:53.460 +another question. Should we go to that? Sure. + +NOTE Q: Have you ever kept any of the random themes that were thrown up? + +00:08:53.461 --> 00:08:54.079 +Have you ever + +00:08:54.080 --> 00:08:59.719 +kept any of the random themes that were thrown up? So I assume + +00:08:59.720 --> 00:09:05.119 +this is for the Monte Carlo setup. The answer is no. The + +00:09:05.120 --> 00:09:09.999 +reason is, like I mentioned, I'm using the randomly picking + +00:09:10.000 --> 00:09:15.079 +a theme setup right now. And Monte Carlo is one of them. Now, + +00:09:15.080 --> 00:09:18.639 +when Emacs picks Monte Carlo by chance, I wouldn't know + +00:09:18.640 --> 00:09:23.239 +about it. So I wouldn't know this is my random theme. That's + +00:09:23.240 --> 00:09:28.839 +the reason I never kept any, like, good color schemes + +00:09:28.840 --> 00:09:34.959 +generated. So, no. Right, okay. Well, considering we don't + +00:09:34.960 --> 00:09:37.359 +have any further questions, what I suggest now is that we'll + +00:09:37.360 --> 00:09:40.239 +leave it at that. So, again, Metrowind, thank you so much. + +00:09:40.240 --> 00:09:43.079 +Thank you. And hopefully we'll hear more of your themes in + +00:09:43.080 --> 00:09:51.120 +the future. Cool. Thanks. All right. Bye bye. Bye bye. diff --git a/2024/captions/emacsconf-2024-transducers--transducers-finally-ergonomic-data-processing-for-emacs--colin-woodbury--answers.vtt b/2024/captions/emacsconf-2024-transducers--transducers-finally-ergonomic-data-processing-for-emacs--colin-woodbury--answers.vtt new file mode 100644 index 00000000..375cad2a --- /dev/null +++ b/2024/captions/emacsconf-2024-transducers--transducers-finally-ergonomic-data-processing-for-emacs--colin-woodbury--answers.vtt @@ -0,0 +1,1032 @@ +WEBVTT chapters by sachac + +00:00:00.000 --> 00:00:07.559 +Hopefully the internet goes well. It's a nice Monday + +00:00:07.560 --> 00:00:31.999 +morning here in Tokyo. + +00:00:32.000 --> 00:00:37.879 +Are we connected all right? + +00:00:37.880 --> 00:00:40.879 +Okay, I seem to be struggling still with my audio. 1 2nd + +00:00:40.880 --> 00:00:44.519 +calling. Yeah, you were muted for a moment there. Okay, + +00:00:44.520 --> 00:00:49.959 +there we are. Okay. All right. Sorry about that. I got a mute + +00:00:49.960 --> 00:00:55.119 +out my, my back office chatter. That's kind of distracting + +00:00:55.120 --> 00:00:58.079 +me a little bit. All right. Sorry. I may have lost the plot a + +00:00:58.080 --> 00:01:04.919 +little bit. I think I did. However, find the 1st question. + +00:01:04.920 --> 00:01:09.919 +I got pretty distracted by conversation backstage. Yeah, + +NOTE Q: When I tried comparing transducers.el to cl-lib and dash (benchmark-compiled), I got the following results + +00:01:09.920 --> 00:01:15.879 +no problem. So the first question here, someone's asking, + +00:01:15.880 --> 00:01:22.279 +when they first tried comparing transducers.el, the cl-lib + +00:01:22.280 --> 00:01:27.959 +and Dash bookmark compiled, and they give some detailed + +00:01:27.960 --> 00:01:32.479 +results we're sharing on the stream. Um, they expected + +00:01:32.480 --> 00:01:36.679 +transducers to be slower than CL loop, but faster than CL lib + +00:01:36.680 --> 00:01:41.119 +or dash. However, this isn't the case, any idea why. And so + +00:01:41.120 --> 00:01:43.639 +I'll, I'll come back into their data to show there's they're + +00:01:43.640 --> 00:01:48.279 +showing, um, you know, there's not a lot of detail on the, on + +00:01:48.280 --> 00:01:52.199 +the, on the use case here. We could certainly click through + +00:01:52.200 --> 00:02:02.559 +it, do it. + +00:02:02.560 --> 00:02:06.999 +Oh, I should've waited to zoom until I find my spot here. + +00:02:07.000 --> 00:02:13.639 +There we are. + +00:02:13.640 --> 00:02:18.599 +All right, so there's our example. + +00:02:18.600 --> 00:02:23.759 +Looks like we are doing a simple map and a sum. + +00:02:23.760 --> 00:02:29.239 +Mm-hmm. Yeah, that's right. Yeah, question about + +00:02:29.240 --> 00:02:36.279 +performance. So a case like this, a simple, I just want to rip + +00:02:36.280 --> 00:02:40.279 +through a collection of numbers and sum them all. That's a + +00:02:40.280 --> 00:02:44.679 +case where basically loop is always going to win because + +00:02:44.680 --> 00:02:51.319 +loop is optimized. This is true in both Emacs Lisp and in + +00:02:51.320 --> 00:02:56.039 +Common Lisp. For a case like this where you're not really + +00:02:56.040 --> 00:03:02.399 +doing two nested of chained calls, like you don't have many + +00:03:02.400 --> 00:03:05.839 +sort of what I was compositional steps. If you're just + +00:03:05.840 --> 00:03:09.999 +ripping through a collection of numbers, loop is always + +00:03:10.000 --> 00:03:15.559 +going to win. Transducers kind of shines when you have to do + +00:03:15.560 --> 00:03:19.639 +things that loop can't in terms of expressing yourself. So + +00:03:19.640 --> 00:03:22.559 +there are lots of different transducers that you can chain + +00:03:22.560 --> 00:03:27.079 +together. And in that case, you're kind of prioritizing + +00:03:27.080 --> 00:03:33.039 +developer time and developer happiness because you're + +00:03:33.040 --> 00:03:36.399 +able to yourself more clearly, whereas sometimes those + +00:03:36.400 --> 00:03:40.679 +kind of algorithms can get very hairy if you're just using + +00:03:40.680 --> 00:03:45.399 +loop. Now that sounds like I'm moving the goalposts, and + +00:03:45.400 --> 00:03:48.639 +there's really no excuse for these things not being as + +00:03:48.640 --> 00:03:54.559 +performant as possible. In this specific case, my guess is + +00:03:54.560 --> 00:03:57.759 +that the transducers is slower because it has to do a whole + +00:03:57.760 --> 00:04:03.239 +bunch of like inner function calls in order to actually do + +00:04:03.240 --> 00:04:09.239 +the adding and the collecting. So there's a lot of stuff that + +00:04:09.240 --> 00:04:12.119 +just the raw loop doesn't have to do, which transducers + +00:04:12.120 --> 00:04:20.439 +does. And so in this case, that's why it would be slower. + +00:04:20.440 --> 00:04:29.079 +All right, makes sense. + +00:04:29.080 --> 00:04:36.239 +Um... I cannot comment against Dash. And also a reminder + +00:04:36.240 --> 00:04:40.159 +that transducers both in CL and in Emacs Lisp here doesn't + +00:04:40.160 --> 00:04:44.919 +attempt to do any, you know, fun, you know, inner rewriting + +00:04:44.920 --> 00:04:48.239 +or, you know, what's called an Haskell fusion. Like if you + +00:04:48.240 --> 00:04:51.359 +have two different map steps, like in a row, it's not gonna + +00:04:51.360 --> 00:04:55.159 +see that and somehow fuse them internally. It's a fairly, in + +00:04:55.160 --> 00:04:59.679 +that sense, the implementation is just as is. + +00:04:59.680 --> 00:05:04.159 +to make it you know as raw fast as possible. The idea being + +00:05:04.160 --> 00:05:12.839 +that ergonomics is more important up front. Yeah, that's + +00:05:12.840 --> 00:05:17.519 +kind of a whole fascinating sub-panel, right? My theme this + +00:05:17.520 --> 00:05:19.799 +conference has been, oh, all these different things we + +00:05:19.800 --> 00:05:24.039 +should try to get sub-panels going for and use that. Maybe + +00:05:24.040 --> 00:05:29.039 +fill in the dev track or even have a third track or whatever. + +00:05:29.040 --> 00:05:31.519 +I'm not that concerned about the logistics of squeezing + +00:05:31.520 --> 00:05:38.519 +into the schedule so much. But anyway, interesting, I mean, + +00:05:38.520 --> 00:05:40.839 +to say. + +NOTE Q: Do you know of any theoretical texts on transducers? + +00:05:40.840 --> 00:05:47.799 +Did we already speak to theoretical texts? No, right? No, + +00:05:47.800 --> 00:05:53.399 +let's continue. Okay, so another question from the group. + +00:05:53.400 --> 00:05:58.879 +Do you know of any theoretical texts on transducers? My + +00:05:58.880 --> 00:06:01.959 +readme, particularly of the Common Lisp implementation, + +00:06:01.960 --> 00:06:06.159 +is the theoretical text on transducers. Rich Hickey has + +00:06:06.160 --> 00:06:10.439 +some YouTube videos which also come close. I mean, he + +00:06:10.440 --> 00:06:14.799 +invented the things. But in terms of having a full + +00:06:14.800 --> 00:06:21.559 +explanation of everything, it's my readme and it's also + +00:06:21.560 --> 00:06:23.319 +the... + +00:06:23.320 --> 00:06:28.559 +The info manual of Guile Scheme, their documentation on + +00:06:28.560 --> 00:06:34.199 +Surfy 171 is what I used to learn transducers and to + +00:06:34.200 --> 00:06:38.399 +re-implement them in other LISPs. So if you just want like a + +00:06:38.400 --> 00:06:41.639 +document explaining them, MyReadMe is actually the + +00:06:41.640 --> 00:06:46.959 +clearest that I've found. Awesome. Okay, next question. + +00:06:46.960 --> 00:06:50.119 +And I'm sorry, you gave a name, you referred to somebody's + +00:06:50.120 --> 00:06:55.439 +videos. Rich Hickey, the inventor of Clojure. Rich Hickey, + +00:06:55.440 --> 00:07:00.399 +thank you. Hope I got the spelling right, and maybe somebody + +00:07:00.400 --> 00:07:04.719 +can catch that and fix it. If not, I'll reach on. Thank you. + +NOTE Q: Did you think about [compiler features, macros] viz your cl, fennel, elisp, porting of your transducers? + +00:07:04.720 --> 00:07:08.239 +Reach on to the next question. Waters (Lazy Series in + +00:07:08.240 --> 00:07:12.799 +Lisp, late 70s) said this should have been done as an + +00:07:12.800 --> 00:07:16.799 +additional compiler feature in compilers, but if not, must + +00:07:16.800 --> 00:07:21.439 +be a macro package. Do you think about that vis your CL, + +00:07:21.440 --> 00:07:27.519 +Fennel, Elisp, porting of transducers? I think that + +00:07:27.520 --> 00:07:28.519 +there's definitely + +00:07:28.520 --> 00:07:36.519 +some Galaxy Brain Lisp author out there is probably smart + +00:07:36.520 --> 00:07:40.599 +enough to turn a bunch of this stuff into macros. I believe + +00:07:40.600 --> 00:07:47.119 +that's how the common Lisp library series works. It sees + +00:07:47.120 --> 00:07:52.079 +that you were calling map or whatever, and it actually knows + +00:07:52.080 --> 00:07:56.639 +that that's a special macro key. in order to be fast. I did not + +00:07:56.640 --> 00:08:01.839 +do that. The implementation as I have it is very simple and + +00:08:01.840 --> 00:08:05.759 +simplicity shouldn't be underestimated. + +00:08:05.760 --> 00:08:13.559 +I love it. What a nice succinct answer. Even I can manage to + +00:08:13.560 --> 00:08:16.578 +type that out as I scroll us to the next question. + +NOTE Q: Does t-buffer-read provide a lazy stream that's linewise, or charwise, or do something else entirely? + +00:08:16.579 --> 00:08:24.079 +So, does t-buffer-read provide a lazy stream + +00:08:24.080 --> 00:08:28.359 +that's line-wise or character-wise or do something else + +00:08:28.360 --> 00:08:29.018 +entirely? + +00:08:29.019 --> 00:08:31.587 +Okay, there are two functions. I showed + +00:08:31.588 --> 00:08:35.073 +t-buffer-read. There's also one called t-file-read, + +00:08:35.074 --> 00:08:38.682 +which does that. You actually have the buffer open, + +00:08:38.683 --> 00:08:40.239 +it's much more clever. + +00:08:40.240 --> 00:08:45.999 +t-buffer-read, I believe, is simpler. As long as you have an + +00:08:46.000 --> 00:08:52.079 +Emacs list, what is called the current buffer active. I'm + +00:08:52.080 --> 00:08:56.679 +fairly sure you're able to just call next-line on it. I don't + +00:08:56.680 --> 00:08:59.479 +believe that I'm doing anything fancy there, looking for + +00:08:59.480 --> 00:09:03.999 +line ends. I believe I'm just grabbing the next line and then + +00:09:04.000 --> 00:09:09.423 +processing that line-wise. Very good. + +NOTE Q: Can the Elisp library be combined with the stream.el API or seq in general? + +00:09:09.424 --> 00:09:17.303 +Can the Elisp library be combined with the stream.el API + +00:09:17.304 --> 00:09:22.830 +or seq in general? I would say that these libraries + +00:09:22.831 --> 00:09:27.596 +are completely orthogonal. You saw that everything + +00:09:27.597 --> 00:09:29.279 +was prefixed by t-. + +00:09:29.280 --> 00:09:36.879 +Basically, transducer is its own zone. However, one thing + +00:09:36.880 --> 00:09:40.239 +that I do in the common lisp, which is theoretically + +00:09:40.240 --> 00:09:44.359 +possible for the Emacs Lisp as well, is kind of like little + +00:09:44.360 --> 00:09:48.919 +shim libraries. So I provide, at least for Common Lisp, for a + +00:09:48.920 --> 00:09:51.799 +number of, you know, popular sort of third-party + +00:09:51.800 --> 00:09:55.239 +collection types, I provide an ability to use them as + +00:09:55.240 --> 00:09:59.559 +sources. Maybe that's what you mean. Like + +00:09:59.560 --> 00:10:04.439 +the built-in containers for Emacs Lisp are already + +00:10:04.440 --> 00:10:06.519 +supported. So, you know, a vector hash table and so on. + +00:10:06.520 --> 00:10:13.719 +make sense so i think what i heard there is yeah go ahead + +00:10:13.720 --> 00:10:17.879 +please sorry in terms of mixing like you know like for + +00:10:17.880 --> 00:10:22.599 +instance you know like seq-map used in transducers + +00:10:22.600 --> 00:10:28.119 +we'll put it that way + +00:10:28.120 --> 00:10:31.879 +i was just gonna say i think it um it it sounds like you're + +00:10:31.880 --> 00:10:37.199 +saying Yeah, probably they are actually. We don't know yet + +00:10:37.200 --> 00:10:41.239 +about any places where they don't play nicely together. So + +00:10:41.240 --> 00:10:45.399 +quite possibly so. We can use sequence and transducers + +00:10:45.400 --> 00:10:49.959 +together, for example. As a source potentially, yeah. It's + +00:10:49.960 --> 00:10:54.159 +very easy because that just uses defgeneric. As long as you + +00:10:54.160 --> 00:10:57.719 +have a new, like if you have a new collection type, as long as + +00:10:57.720 --> 00:11:01.519 +you implement a def method for it somewhere, it'll just + +00:11:01.520 --> 00:11:12.159 +magically work with this library. That's the magic of... + +00:11:12.160 --> 00:11:18.439 +Yeah, as an Emacs user enjoying, you know, sort of the + +00:11:18.440 --> 00:11:21.959 +renaissance of new features it's had, or sorry, Emacs ERC + +00:11:21.960 --> 00:11:27.799 +user for chat. I've seen a lot of awesome stuff get done in the + +00:11:27.800 --> 00:11:32.119 +last couple of years with generic set. JP never was working + +00:11:32.120 --> 00:11:36.679 +on that. And like, that's just making me my eyes pop and go, + +00:11:36.680 --> 00:11:39.279 +wow, that does make a whole lot of things simpler, doesn't + +00:11:39.280 --> 00:11:44.279 +it? I think we're a lot of us running into generics and how + +00:11:44.280 --> 00:11:47.542 +that solves problems in Emacs. + +NOTE Q: How does one debug a t-comp expression? Can you single step and see intermediate results of the different statements you declare? + +00:11:47.543 --> 00:11:50.279 +How does one debug a t-comp + +00:11:50.280 --> 00:11:55.119 +expression? Can you talk in terms of single step, + +00:11:55.120 --> 00:11:58.479 +step-by-step, intermediate results of the different + +00:11:58.480 --> 00:12:08.759 +statements you declare? Yes. So in Common Lisp, this is + +00:12:08.760 --> 00:12:12.919 +and sly stickers and things like that. In Emacs Lisp, it's a + +00:12:12.920 --> 00:12:19.559 +little bit, shall we say, more difficult. For step + +00:12:19.560 --> 00:12:20.479 +debugging, + +00:12:20.480 --> 00:12:25.679 +so what comp does is comp internally, it should be a macro, + +00:12:25.680 --> 00:12:28.839 +but currently it's not, although there's work to improve + +00:12:28.840 --> 00:12:33.559 +that. It's doing an internal reduce and it's turning into + +00:12:33.560 --> 00:12:37.479 +one giant kind of composed lambda inside. So I don't know if + +00:12:37.480 --> 00:12:42.999 +step debugging would work there. However, we do have one + +00:12:43.000 --> 00:12:47.439 +function called log, which lets you inspect intermediate + +00:12:47.440 --> 00:12:50.759 +results. So you could technically use that to inject + +00:12:50.760 --> 00:12:54.279 +yourself somewhere into the transduction chain and, you + +00:12:54.280 --> 00:12:57.239 +know, halt or, you know, inspect the current value, et + +00:12:57.240 --> 00:13:01.119 +cetera. So you get a bunch of questions lined up. I think + +00:13:01.120 --> 00:13:04.199 +we're coming up, uh, within our last five minutes, uh, + +00:13:04.200 --> 00:13:07.919 +before some declared, uh, reset time that we have + +00:13:07.920 --> 00:13:11.919 +internally to just roll our closing credits, so to speak. + +00:13:11.920 --> 00:13:14.839 +Um, not that I would want to cut the question and answer + +00:13:14.840 --> 00:13:18.399 +short, but I might have to step away personally. But, um, as + +00:13:18.400 --> 00:13:21.519 +we discussed before, you can just kind of run the QA, however + +00:13:21.520 --> 00:13:24.879 +you want here. Um, or, or take questions offline if you'd + +00:13:24.880 --> 00:13:27.999 +like to answer them off the pad. And I just want to say one more + +00:13:28.000 --> 00:13:30.959 +time. Kitt said it managed later. Thanks again for your talk + +00:13:30.960 --> 00:13:35.759 +for dedicating the time to this live QA. And I think we can see + +00:13:35.760 --> 00:13:40.279 +by the many questions that are here. So I'll try to kind of + +00:13:40.280 --> 00:13:42.959 +flip us through as many of them as I can with our last couple of + +00:13:42.960 --> 00:13:48.399 +minutes, if that sounds good. Alternately, this might be a + +00:13:48.400 --> 00:13:52.079 +good time if you have kind of wrap it up, final thoughts, as + +00:13:52.080 --> 00:13:58.399 +Leo Sopanda saying. By all means, have at. Sure, thanks a + +00:13:58.400 --> 00:14:01.639 +lot. I'd say that if you are still curious, check out the + +00:14:01.640 --> 00:14:05.159 +read-me's because those have a lot of information, + +00:14:05.160 --> 00:14:09.519 +including a full description of the API and everything + +00:14:09.520 --> 00:14:10.719 +that's available. + +00:14:10.720 --> 00:14:16.599 +Otherwise, just give them a shot. Using these things is the + +00:14:16.600 --> 00:14:21.639 +best way to learn them, of course. I use them everywhere, + +00:14:21.640 --> 00:14:24.719 +basically, all across my Emacs list and all across my common + +00:14:24.720 --> 00:14:29.839 +list now. They get a lot of mileage. All right. You're + +00:14:29.840 --> 00:14:33.639 +speaking our language now. As Emacs users, all our ears poke + +00:14:33.640 --> 00:14:36.039 +up when you say, I'm getting a lot of mileage. I'm using it + +00:14:36.040 --> 00:14:39.879 +across everything. Every Emacs user has a story that + +00:14:39.880 --> 00:14:42.494 +harmonizes with that, I think. + +NOTE Q: Is there a path for transducers to enable elisp processing of otherwise overly large datasets as if just normal Emacs \"buffers\" (i.e. just pulling one thing at a time so essentially stream-like under the hood but buffer-like in interface), with none of the usual perf issues with a traditional buffer structure? + +00:14:42.495 --> 00:14:44.519 +So our next question, is + +00:14:44.520 --> 00:14:48.599 +there a path for transducers to enable Elisp processing or + +00:14:48.600 --> 00:14:53.999 +otherwise overly large data sets as if just normal Emacs + +00:14:54.000 --> 00:14:56.959 +buffers, i.e. just pulling one thing at a time. So + +00:14:56.960 --> 00:15:00.719 +essentially stream like under the hood, but buffer like an + +00:15:00.720 --> 00:15:03.519 +interface. I think that makes sense to me. with none of the + +00:15:03.520 --> 00:15:07.799 +usual performance issues, like as if, you know, the history + +00:15:07.800 --> 00:15:11.399 +with long files is what that brings to mind, I guess. Yes, so + +00:15:11.400 --> 00:15:15.799 +as you saw before, the withBufferRead sort of stream + +00:15:15.800 --> 00:15:19.879 +function does have to have the actual buffer in memory, and + +00:15:19.880 --> 00:15:22.679 +then you can go really fast. But there's another one with + +00:15:22.680 --> 00:15:26.839 +file read. Now, again, I haven't tried to optimize that yet. + +00:15:26.840 --> 00:15:30.119 +But in theory, it is able to read right from the underlying + +00:15:30.120 --> 00:15:32.839 +file without having to open it as a buffer first. + +00:15:32.840 --> 00:15:39.199 +Awesome. Ari, the performance issues mentioned, and that + +00:15:39.200 --> 00:15:43.479 +popped up recently in the list and forums, to what extent + +00:15:43.480 --> 00:15:46.959 +does tail call optimization and other mechanisms like + +00:15:46.960 --> 00:15:50.159 +inlining, garbage collection friendliness, and so on, + +00:15:50.160 --> 00:15:55.159 +could these alleviate issues, enable their use at little to + +00:15:55.160 --> 00:15:58.439 +no extra costs? I feel like we're leading the witness here, + +00:15:58.440 --> 00:16:01.279 +but I'm sure you see where we're going. Yeah, no problem. So + +00:16:01.280 --> 00:16:03.799 +in terms of tail optimization, that's already happening + +00:16:03.800 --> 00:16:09.199 +because the internal loop mechanism is using CL labels. And + +00:16:09.200 --> 00:16:12.199 +in Emacs Lisp, CL labels is just a macro that is like + +00:16:12.200 --> 00:16:16.079 +extremely tail recursive. So that's very, very fast. It's + +00:16:16.080 --> 00:16:19.039 +not tail recursive, but it's using like goto. So it's + +00:16:19.040 --> 00:16:22.519 +extremely, extremely fast, like the raw looping of it. So, + +00:16:22.520 --> 00:16:24.359 +okay, well then where does the slowness come from? It's + +00:16:24.360 --> 00:16:26.439 +probably coming from those lambdas and it's probably + +00:16:26.440 --> 00:16:32.399 +coming from, uh, like extra consing, extra allocation + +00:16:32.400 --> 00:16:35.999 +somewhere, which is, um, sort of what you were, what you're + +00:16:36.000 --> 00:16:38.519 +referring to with the GC friendliness. So perhaps there's + +00:16:38.520 --> 00:16:45.199 +some, um, um, yeah, some, like some fusion that I can do to + +00:16:45.200 --> 00:16:51.199 +speed it up. Yeah, that just sounds fascinating endlessly. + +NOTE Q: Is there an option to read a csv/json and produce an alist or plist instead of a hash table for an entry? + +00:16:51.200 --> 00:16:55.559 +Are there options to like read from a CSV, JSON, produce an + +00:16:55.560 --> 00:17:01.679 +alist or plist instead of hash table? Absolutely. + +00:17:01.680 --> 00:17:06.239 +Yes, I need to double check that, but we can read both CSV and + +00:17:06.240 --> 00:17:10.359 +JSON, and you should be able to just turn on the plist option. + +00:17:10.360 --> 00:17:14.159 +I will double check, but there's fairly free conversion + +00:17:14.160 --> 00:17:18.039 +between those three types because hash table is not always + +00:17:18.040 --> 00:17:22.039 +what you want. And actually, I suspect that slowness that we + +00:17:22.040 --> 00:17:24.559 +saw in the demo before was because it was allocating hash + +00:17:24.560 --> 00:17:29.239 +tables for every, like, all of the 50,000 lines. And had it + +00:17:29.240 --> 00:17:32.599 +been a plist, it would have been faster. Interesting, so + +00:17:32.600 --> 00:17:35.399 +maybe there's opportunities even if you end up with hash + +00:17:35.400 --> 00:17:38.799 +lists, but then they're shared strategically and you pay + +00:17:38.800 --> 00:17:42.039 +the cost of a little extra layer in there that buckets them + +00:17:42.040 --> 00:17:46.439 +together the way that we might group files by the first four + +00:17:46.440 --> 00:17:50.519 +characters in the file name once we've got a million files. + +NOTE Q: Is the common lisp version ready for 'production' use? Is it complete enough and the API stable enough? + +00:17:50.520 --> 00:17:54.479 +Anyway, is the Common Lisp version ready for production + +00:17:54.480 --> 00:17:59.959 +use? Do you want to comment on API stability? I use it all the + +00:17:59.960 --> 00:18:04.159 +time. I'm writing a game in Common Lisp right now, and I'm + +00:18:04.160 --> 00:18:08.559 +using transducers everywhere in there, and it doesn't even + +00:18:08.560 --> 00:18:11.119 +make a dent in the frame rate, and I'm using them + +00:18:11.120 --> 00:18:15.359 +extensively. Okay, well, I'll just read from chat. Thanks + +00:18:15.360 --> 00:18:17.476 +so much for the answers. + +NOTE Q: Do we need a pre-written \"t-\" version for every already existing reducing function like + or is there a function to construct them from already defined reducer 2-arg functions? + +00:18:17.477 --> 00:18:20.439 +Do we need a pre-written or t-minus + +00:18:20.440 --> 00:18:24.959 +version for every already existing reducing function, + +00:18:24.960 --> 00:18:30.239 +plus, as an example? Or is there a function that constructs, + +00:18:30.240 --> 00:18:33.559 +in my, I'm going to add the word, auto-visualifies them + +00:18:33.560 --> 00:18:37.319 +already, auto-defines or something, or just generically + +00:18:37.320 --> 00:18:42.239 +wraps function calls some way? already defined. This is + +00:18:42.240 --> 00:18:49.399 +basically fold. Some built-in functions like plus already + +00:18:49.400 --> 00:18:52.599 +function like reducers. It's a coincidence that they do + +00:18:52.600 --> 00:18:56.799 +that. But there's an example in the README. Max is one that + +00:18:56.800 --> 00:19:00.559 +does not act like that. For instance, maybe I could screen + +00:19:00.560 --> 00:19:06.479 +share later, but if you just type in plus one, If you call plus + +00:19:06.480 --> 00:19:10.519 +one in Emacs or Common Lisp, you get back one. It actually + +00:19:10.520 --> 00:19:15.119 +only needs one argument. If you only type plus, it actually + +00:19:15.120 --> 00:19:20.839 +gives you zero. Plus and multiple satisfy the API of + +00:19:20.840 --> 00:19:24.759 +reducers. But if you have one that doesn't, like the max + +00:19:24.760 --> 00:19:28.759 +function, and similarly, just type in plus as a function + +00:19:28.760 --> 00:19:32.359 +call, just plus with nothing else, and you'll see. No, as a + +00:19:32.360 --> 00:19:37.199 +function. zero will come out. This basically means it + +00:19:37.200 --> 00:19:43.159 +satisfies the reducer API. But a function like max does not. + +00:19:43.160 --> 00:19:48.399 +If you just type in max and then one, it won't work. Pardon me, + +00:19:48.400 --> 00:19:54.239 +it did. But if you type in max with nothing else, it wouldn't + +00:19:54.240 --> 00:19:55.239 +work. + +00:19:55.240 --> 00:19:58.599 +Hence, we have to wrap it in something like fold. I would say + +00:19:58.600 --> 00:20:01.919 +go look at the fold function. Right, which that I won't do. + +00:20:01.920 --> 00:20:04.839 +I'm not that well enough prepped. Darn it. Leo would have + +00:20:04.840 --> 00:20:08.399 +been here, but oh, well, you got me. Yeah, no problem. But + +00:20:08.400 --> 00:20:16.879 +fold is sort of the ultimate reducer function. Great. So is + +00:20:16.880 --> 00:20:26.319 +there, where was I? Here we go. We're way past this, right? So + +NOTE Q: Is the compelling argument for transducers is that it's a better abstraction? + +00:20:26.320 --> 00:20:34.279 +is the compiling argument for transducers that it's a + +00:20:34.280 --> 00:20:38.879 +better abstraction? It seems like there are concerns, + +00:20:38.880 --> 00:20:42.399 +objections, while problematically valid focused on + +00:20:42.400 --> 00:20:45.679 +implementation. Can this abstraction allow for advances + +00:20:45.680 --> 00:20:50.559 +in implementation? Yes, what I've basically done is mostly + +00:20:50.560 --> 00:20:55.999 +followed the pattern of usage that exists in Clojure and in + +00:20:56.000 --> 00:21:01.159 +Scheme's SERP 171. In theory, the service level API is the + +00:21:01.160 --> 00:21:04.999 +same no matter where you're using this, and that's the idea. + +00:21:05.000 --> 00:21:08.039 +If you learn them in one list, you should be able to use them + +00:21:08.040 --> 00:21:12.879 +everywhere. Then what it's actually doing under the hood is + +00:21:12.880 --> 00:21:18.359 +free for us to change around. My implementations are mostly + +00:21:18.360 --> 00:21:23.679 +based on the scheme with a few alterations here and there. + +00:21:23.680 --> 00:21:27.079 +And in the Common Lisp case, like adding some Common Lisp + +00:21:27.080 --> 00:21:27.959 +isms + +00:21:27.960 --> 00:21:34.759 +to improve usage like UX a little bit. But overall, we are + +00:21:34.760 --> 00:21:38.959 +free to do whatever we want internally to speed up + +00:21:38.960 --> 00:21:42.439 +performance. I just haven't done that work. Awesome. + +00:21:42.440 --> 00:21:47.239 +Awesome. So here's where I have to, where we're getting the + +00:21:47.240 --> 00:21:50.079 +hook. We've just been pulled off the stream. The viewers + +00:21:50.080 --> 00:21:54.079 +just saw the crawl by as it sent us over to the other pad where I + +00:21:54.080 --> 00:21:57.919 +get to jump on and get involved with that now. But I can't + +00:21:57.920 --> 00:22:00.359 +thank you enough, Colin. Would you like me to stop the + +00:22:00.360 --> 00:22:03.799 +recording here? Any other comments you'd like to make? Uh, + +00:22:03.800 --> 00:22:06.439 +yeah, sure. Like, I mean, I'll stick around for any more live + +00:22:06.440 --> 00:22:10.639 +questions. I'm looking at both IRC and, and, um, uh, big blue + +00:22:10.640 --> 00:22:13.239 +button here. So if people have more questions, I'll hang + +00:22:13.240 --> 00:22:15.959 +around for a bit. I'm going to leave the channel open. I see + +00:22:15.960 --> 00:22:17.839 +you do have a few people in here, so I'm just going to go ahead + +00:22:17.840 --> 00:22:20.839 +and leave the recording. We can always trim it. Um, trim it + +00:22:20.840 --> 00:22:24.279 +up. If you, uh, let us know, Hey, the last 10 minutes weren't + +00:22:24.280 --> 00:22:26.999 +anything, you know, or whatever. No, no pressure, no + +00:22:27.000 --> 00:22:29.839 +worries, no mistakes. Thank you. Really appreciate you. + +00:22:29.840 --> 00:22:31.959 +Yep. Thanks a lot. + +NOTE Q: Question about how the transducers video was made? Did you use Reveal.js? Do you have a pointer to the html hosted presentation? How did you generate the content for Reveal? + +00:22:31.960 --> 00:22:48.399 +OK, does anyone else have some questions? I see Mohsen in the + +00:22:48.400 --> 00:22:52.839 +BigBlueButton chat is asking how I made the video. So the + +00:22:52.840 --> 00:22:59.079 +presentation itself was done with RevealJS from Org Mode. + +00:22:59.080 --> 00:23:03.639 +So as you saw, I had a raw Org Mode buffer, which was + +00:23:03.640 --> 00:23:09.319 +which was the presentation itself, which I then just + +00:23:09.320 --> 00:23:11.759 +exported with a few certain settings, a few + +00:23:11.760 --> 00:23:15.919 +customizations. And then for screen recording, I used OBS, + +00:23:15.920 --> 00:23:19.719 +which worked flawlessly on Arch Linux. I used Sway, + +00:23:19.720 --> 00:23:23.159 +Wayland, and all of that. So all of that just worked, which + +00:23:23.160 --> 00:23:27.999 +was very impressive. Where do the HTML host the + +00:23:28.000 --> 00:23:51.959 +presentation? I don't have that presentation hosted + +00:23:51.960 --> 00:23:52.599 +anywhere. + +00:23:52.600 --> 00:23:59.119 +I'll look at the. + +00:23:59.120 --> 00:24:00.079 +I don't see that. + +00:24:00.080 --> 00:24:08.159 +Here it is. So we've got the file here as well. + +00:24:08.160 --> 00:24:10.999 +Looks like that's it for questions, basically. + +00:24:11.000 --> 00:24:14.919 +Yep, and it looks like everyone's moved on for now. Let's + +00:24:14.920 --> 00:24:20.159 +see. I mean, it would be so this is answering lounge 81 on IRC. + +NOTE Q: From your investigations and tests so far, do you think there would be the necessity of transducers to eventually go down into the C level code for things like using them to solve "infinitely-big" buffer-like interfaces and such? + +00:24:20.160 --> 00:24:24.599 +Yeah, like, if we really wanted to go that hardcore, maybe + +00:24:24.600 --> 00:24:29.439 +there's some like C level stuff that we could + +00:24:29.440 --> 00:24:36.119 +you know, significant demand for such a thing. You know, so + +00:24:36.120 --> 00:24:39.239 +far there hasn't been such demand, but maybe there will be in + +00:24:39.240 --> 00:24:42.519 +the future. Yeah, perhaps there's some custom stuff we + +00:24:42.520 --> 00:24:43.039 +could do. + +00:24:43.040 --> 00:24:48.599 +And otherwise, magic one. + +00:24:48.600 --> 00:25:00.599 +Well, it looks like some people are quite happy with this. + +00:25:00.600 --> 00:25:14.959 +All right. That's about what I've seen. So why don't we end it + +00:25:14.960 --> 00:25:19.839 +here? I think I can control the recording from my end. If I + +00:25:19.840 --> 00:25:23.800 +pause it, will that work? All right. Thank you, everyone. diff --git a/2024/info/hyperdrive-after.md b/2024/info/hyperdrive-after.md index 12461ec8..6727bb6e 100644 --- a/2024/info/hyperdrive-after.md +++ b/2024/info/hyperdrive-after.md @@ -288,7 +288,7 @@ Captioner: sachac -<div class="transcript transcript-qanda"><a name="hyperdrive-qanda-transcript"></a><h1>Q&A transcript (unedited)</h1> +<div class="transcript transcript-qanda"><a name="hyperdrive-qanda-transcript"></a><h1>Q&A transcript</h1> <div class="transcript-heading">[[!template new="1" text="""New version of hyperdrive.el""" start="00:00:00.000" video="qanda-hyperdrive" id="subtitle"]]</div>[[!template text="""One thing I wanted to mention was that""" start="00:00:00.000" video="qanda-hyperdrive" id="subtitle"]] diff --git a/2024/info/hyperdrive-before.md b/2024/info/hyperdrive-before.md index ce013637..92d1ea38 100644 --- a/2024/info/hyperdrive-before.md +++ b/2024/info/hyperdrive-before.md @@ -20,6 +20,6 @@ Status: TO_CAPTION_QA 07:31.064 Q: blocklist or whitelist so I can make them containing useful information for only me while also being useful with in a public sense 11:41.024 Q: Could you comment on the "visualization" thing, (org visualization), and your experience with this type of content in buffers and the various possibilities (svg, etc.)? -"""]]<div>Listen to just the audio:<br /><audio controls preload="none" id="hyperdrive-qanda-audio" src="https://media.emacsconf.org/2024/emacsconf-2024-hyperdrive--new-in-hyperdriveel-quick-install-peer-graph-transclusion--joseph-turner--answers.opus"></audio></div><div></div>Duration: 22:34 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2024-hyperdrive">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-hyperdrive--new-in-hyperdriveel-quick-install-peer-graph-transclusion--joseph-turner--answers--chapters.vtt">Download --answers--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-hyperdrive--new-in-hyperdriveel-quick-install-peer-graph-transclusion--joseph-turner--answers.opus">Download --answers.opus (10MB)</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-hyperdrive--new-in-hyperdriveel-quick-install-peer-graph-transclusion--joseph-turner--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-hyperdrive--new-in-hyperdriveel-quick-install-peer-graph-transclusion--joseph-turner--answers.webm">Download --answers.webm (25MB)</a></li></ul></div></div> +"""]]<div>Listen to just the audio:<br /><audio controls preload="none" id="hyperdrive-qanda-audio" src="https://media.emacsconf.org/2024/emacsconf-2024-hyperdrive--new-in-hyperdriveel-quick-install-peer-graph-transclusion--joseph-turner--answers.opus"></audio></div><div></div>Duration: 22:34 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2024-hyperdrive">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-hyperdrive--new-in-hyperdriveel-quick-install-peer-graph-transclusion--joseph-turner--answers--chapters.vtt">Download --answers--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-hyperdrive--new-in-hyperdriveel-quick-install-peer-graph-transclusion--joseph-turner--answers.opus">Download --answers.opus (10MB)</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-hyperdrive--new-in-hyperdriveel-quick-install-peer-graph-transclusion--joseph-turner--answers.vtt">Download --answers.vtt</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-hyperdrive--new-in-hyperdriveel-quick-install-peer-graph-transclusion--joseph-turner--answers.webm">Download --answers.webm (25MB)</a></li></ul></div></div> # Description <!-- End of emacsconf-publish-before-page -->
\ No newline at end of file diff --git a/2024/schedule-details.md b/2024/schedule-details.md index 921aad67..291fc5a4 100644 --- a/2024/schedule-details.md +++ b/2024/schedule-details.md @@ -9,7 +9,7 @@ Jump to: <a href="#dev">Development</a> [[!template id=sched resources="""<li><a href="https://media.emacsconf.org/2024/emacsconf-2024-water--watering-my-digital-plant-with-emacs-timers--christopher-howard--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-water--watering-my-digital-plant-with-emacs-timers--christopher-howard--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-water--watering-my-digital-plant-with-emacs-timers--christopher-howard--main.json">Download --main.json</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-water--watering-my-digital-plant-with-emacs-timers--christopher-howard--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-water--watering-my-digital-plant-with-emacs-timers--christopher-howard--main.webm">Download --main.webm (37MB)</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-water--watering-my-digital-plant-with-emacs-timers--christopher-howard.mp4">Download .mp4 (21MB)</a></li>""" title="""Watering my (digital) plant with Emacs timers""" url="""/2024/talks/water""" speakers="""Christopher Howard""" watch="""https://emacsconf.org/2024/watch/gen""" slug="""water""" note="""captioned, video posted, video: 13:50"""]] [[!template id=sched resources="""<li><a href="https://media.emacsconf.org/2024/emacsconf-2024-shell--emacs-as-a-shell--christopher-howard--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-shell--emacs-as-a-shell--christopher-howard--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-shell--emacs-as-a-shell--christopher-howard--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-shell--emacs-as-a-shell--christopher-howard--main.webm">Download --main.webm (87MB)</a></li>""" title="""Emacs as a shell""" url="""/2024/talks/shell""" speakers="""Christopher Howard""" watch="""https://emacsconf.org/2024/watch/gen""" slug="""shell""" note="""captioned, video posted, video: 37:13"""]] [[!template id=sched resources="""<li><a href="https://media.emacsconf.org/2024/emacsconf-2024-casual--reimagining-the-emacs-user-experience-with-casual-suite--charles-choi--answers--chapters.vtt">Download --answers--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-casual--reimagining-the-emacs-user-experience-with-casual-suite--charles-choi--answers.opus">Download --answers.opus (12MB)</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-casual--reimagining-the-emacs-user-experience-with-casual-suite--charles-choi--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-casual--reimagining-the-emacs-user-experience-with-casual-suite--charles-choi--answers.webm">Download --answers.webm (44MB)</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-casual--reimagining-the-emacs-user-experience-with-casual-suite--charles-choi--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-casual--reimagining-the-emacs-user-experience-with-casual-suite--charles-choi--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-casual--reimagining-the-emacs-user-experience-with-casual-suite--charles-choi--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-casual--reimagining-the-emacs-user-experience-with-casual-suite--charles-choi--main.webm">Download --main.webm (32MB)</a></li>""" title="""Re-imagining the Emacs user experience with Casual Suite""" url="""/2024/talks/casual""" speakers="""Charles Choi""" watch="""https://emacsconf.org/2024/watch/gen""" slug="""casual""" note="""captioned, video posted, Q&A posted, video: 18:24, answers: 22:12"""]] -[[!template id=sched resources="""<li><a href="https://media.emacsconf.org/2024/emacsconf-2024-hyperdrive--new-in-hyperdriveel-quick-install-peer-graph-transclusion--joseph-turner--answers--chapters.vtt">Download --answers--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-hyperdrive--new-in-hyperdriveel-quick-install-peer-graph-transclusion--joseph-turner--answers.opus">Download --answers.opus (10MB)</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-hyperdrive--new-in-hyperdriveel-quick-install-peer-graph-transclusion--joseph-turner--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-hyperdrive--new-in-hyperdriveel-quick-install-peer-graph-transclusion--joseph-turner--answers.webm">Download --answers.webm (25MB)</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-hyperdrive--new-in-hyperdriveel-quick-install-peer-graph-transclusion--joseph-turner--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-hyperdrive--new-in-hyperdriveel-quick-install-peer-graph-transclusion--joseph-turner--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-hyperdrive--new-in-hyperdriveel-quick-install-peer-graph-transclusion--joseph-turner--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-hyperdrive--new-in-hyperdriveel-quick-install-peer-graph-transclusion--joseph-turner--main.webm">Download --main.webm (74MB)</a></li>""" title="""New in hyperdrive.el: quick install, peer graph, transclusion!""" url="""/2024/talks/hyperdrive""" speakers="""Joseph Turner""" watch="""https://emacsconf.org/2024/watch/gen""" slug="""hyperdrive""" note="""captioned, video posted, Q&A posted, video: 20:25, answers: 22:34"""]] +[[!template id=sched resources="""<li><a href="https://media.emacsconf.org/2024/emacsconf-2024-hyperdrive--new-in-hyperdriveel-quick-install-peer-graph-transclusion--joseph-turner--answers--chapters.vtt">Download --answers--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-hyperdrive--new-in-hyperdriveel-quick-install-peer-graph-transclusion--joseph-turner--answers.opus">Download --answers.opus (10MB)</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-hyperdrive--new-in-hyperdriveel-quick-install-peer-graph-transclusion--joseph-turner--answers.vtt">Download --answers.vtt</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-hyperdrive--new-in-hyperdriveel-quick-install-peer-graph-transclusion--joseph-turner--answers.webm">Download --answers.webm (25MB)</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-hyperdrive--new-in-hyperdriveel-quick-install-peer-graph-transclusion--joseph-turner--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-hyperdrive--new-in-hyperdriveel-quick-install-peer-graph-transclusion--joseph-turner--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-hyperdrive--new-in-hyperdriveel-quick-install-peer-graph-transclusion--joseph-turner--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-hyperdrive--new-in-hyperdriveel-quick-install-peer-graph-transclusion--joseph-turner--main.webm">Download --main.webm (74MB)</a></li>""" title="""New in hyperdrive.el: quick install, peer graph, transclusion!""" url="""/2024/talks/hyperdrive""" speakers="""Joseph Turner""" watch="""https://emacsconf.org/2024/watch/gen""" slug="""hyperdrive""" note="""captioned, video posted, Q&A posted, video: 20:25, answers: 22:34"""]] [[!template id=sched resources="""<li><a href="https://media.emacsconf.org/2024/emacsconf-2024-writing--emacs-writing-studio--peter-prevos--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-writing--emacs-writing-studio--peter-prevos--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-writing--emacs-writing-studio--peter-prevos--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-writing--emacs-writing-studio--peter-prevos--main.webm">Download --main.webm (41MB)</a></li>""" title="""Emacs Writing Studio""" url="""/2024/talks/writing""" speakers="""Peter Prevos""" watch="""https://emacsconf.org/2024/watch/gen""" slug="""writing""" note="""captioned, video posted, video: 13:31"""]] [[!template id=sched resources="""<li><a href="https://media.emacsconf.org/2024/emacsconf-2024-emacs30--emacs-30-highlights--philip-kaludercic--answers--chapters.vtt">Download --answers--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-emacs30--emacs-30-highlights--philip-kaludercic--answers.opus">Download --answers.opus (10MB)</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-emacs30--emacs-30-highlights--philip-kaludercic--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-emacs30--emacs-30-highlights--philip-kaludercic--answers.webm">Download --answers.webm (39MB)</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-emacs30--emacs-30-highlights--philip-kaludercic--edited.webm">Download --edited.webm (52MB)</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-emacs30--emacs-30-highlights--philip-kaludercic--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-emacs30--emacs-30-highlights--philip-kaludercic--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-emacs30--emacs-30-highlights--philip-kaludercic--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-emacs30--emacs-30-highlights--philip-kaludercic--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-emacs30--emacs-30-highlights--philip-kaludercic--main.webm">Download --main.webm (60MB)</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-emacs30--emacs-30-highlights--philip-kaludercic--notes.org">Download --notes.org</a></li>""" title="""Emacs 30 Highlights""" url="""/2024/talks/emacs30""" speakers="""Philip Kaludercic""" watch="""https://emacsconf.org/2024/watch/gen""" slug="""emacs30""" note="""captioned, video posted, Q&A posted, video: 24:55, answers: 23:36"""]] [[!template id=sched resources="""<li><a href="https://media.emacsconf.org/2024/emacsconf-2024-links--unlocking-linked-data-replacing-specialized-apps-with-an-orgbased-semantic-wiki--abhinav-tushar--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-links--unlocking-linked-data-replacing-specialized-apps-with-an-orgbased-semantic-wiki--abhinav-tushar--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-links--unlocking-linked-data-replacing-specialized-apps-with-an-orgbased-semantic-wiki--abhinav-tushar--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-links--unlocking-linked-data-replacing-specialized-apps-with-an-orgbased-semantic-wiki--abhinav-tushar--main.webm">Download --main.webm (21MB)</a></li>""" title="""Unlocking linked data: replacing specialized apps with an Org-based semantic wiki""" url="""/2024/talks/links""" speakers="""Abhinav Tushar""" watch="""https://emacsconf.org/2024/watch/gen""" slug="""links""" note="""captioned, video posted, video: 11:21"""]] |