diff options
Diffstat (limited to '')
104 files changed, 38522 insertions, 487 deletions
diff --git a/2025/captions/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--answers.vtt b/2025/captions/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--answers.vtt new file mode 100644 index 00000000..0afe639f --- /dev/null +++ b/2025/captions/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--answers.vtt @@ -0,0 +1,1021 @@ +WEBVTT + +00:00:00.000 --> 00:00:05.199 +Greetings. Salaam again. I'm delighted to be here + +00:00:05.200 --> 00:00:11.199 +and happy to answer your questions. + +00:00:11.200 --> 00:00:12.839 +I'm not seeing anything yet, + +00:00:12.840 --> 00:00:17.679 +but let me take advantage of this time + +00:00:17.680 --> 00:00:20.079 +to speak about one question + +00:00:17.800 --> 00:00:43.439 +If you can bring up the pad so that you can look at it. + +00:00:20.080 --> 00:00:22.879 +that I saw coming in earlier on the pad, + +00:00:22.880 --> 00:00:25.039 +which was all the outputs + +00:00:25.040 --> 00:00:29.399 +and the inputs that you mentioned, where are they? + +00:00:29.400 --> 00:00:35.439 +So they are on GitHub, and this is in one of my slides. + +00:00:35.440 --> 00:00:43.359 +I mentioned the URL for it. I'll show you that as well. + +00:00:43.360 --> 00:00:50.391 +So the URL for it is github.com bxplpc18068, + +00:00:43.440 --> 00:01:00.119 +Okay. Hang on a second. I will. + +00:00:50.392 --> 00:00:58.679 +which is the handle for this talk. + +00:00:58.680 --> 00:01:06.039 +In there, you have all the PDFs and the HTMLs, + +00:01:00.120 --> 00:01:07.879 +And then people can join here as well. + +00:01:06.040 --> 00:01:12.119 +a citation, a bib input, and also the sources. + +00:01:12.120 --> 00:01:19.439 +So if you were to go to the PDF, you will see + +00:01:19.440 --> 00:01:24.319 +Um, both the article presentation and the, + +00:01:24.320 --> 00:01:27.279 +let's take a quick look at the. + +00:01:27.280 --> 00:01:34.159 +Which is what you have seen. So. + +00:01:34.160 --> 00:01:40.279 +And as far as the sources are, there are two primary files. + +00:01:37.000 --> 00:01:45.999 +I think we're now in a live Q&A session for Blee-LCNT, + +00:01:40.280 --> 00:01:47.199 +This presentation, left to right, + +00:01:46.000 --> 00:01:54.959 +and people can join us here in the Big Blue Button room, + +00:01:47.200 --> 00:01:50.919 +is the one that includes all the LaTeX packages. + +00:01:50.920 --> 00:01:52.641 +We might as well take a quick look. + +00:01:52.642 --> 00:01:57.600 +So what's in there is primarily the use packages. + +00:01:57.601 --> 00:02:06.999 +And then it dispatches to body press art. + +00:02:07.000 --> 00:02:11.519 +And this is where the code is. + +00:02:11.520 --> 00:02:14.559 +And I walked through this briefly. + +00:02:14.560 --> 00:02:26.839 +So, notice here again that this is a mixture of LaTeX and Org. + +00:02:26.840 --> 00:02:31.039 +Each of the presentation slides are here. + +00:02:31.040 --> 00:02:34.519 +For example, my introduction + +00:02:34.520 --> 00:02:37.239 +is just a video that gets included. + +00:02:37.240 --> 00:02:41.119 +And then the notes that I use, the voiceover, + +00:02:41.120 --> 00:02:47.319 +is also included in the LaTeX file. + +00:02:47.320 --> 00:02:50.079 +Let me... It'll probably be easy + +00:02:50.080 --> 00:02:52.399 +to take those voiceover notes + +00:02:52.400 --> 00:02:54.959 +and then align them with a tool like NES. + +00:02:54.960 --> 00:02:58.399 +to make subtitles for your videos. + +00:02:58.400 --> 00:03:01.199 +Exactly, and that is what I do. + +00:03:01.200 --> 00:03:08.519 +So there is a way to gather them all as P-notes. + +00:03:08.520 --> 00:03:13.839 +And so all the P-notes get together in a single file, + +00:03:13.840 --> 00:03:20.599 +and then you feed that to Aeneas, and it will align them. + +00:03:20.600 --> 00:03:23.319 +And then there is the work of using your subed + +00:03:23.320 --> 00:03:30.279 +to just get the right sort of line length on them. + +00:03:30.280 --> 00:03:33.039 +But you did all of that for me this year, Sacha. + +00:03:33.040 --> 00:03:34.519 +Thank you very much. + +00:03:34.520 --> 00:03:37.559 +It was just a matter of not having time. + +00:03:37.560 --> 00:03:43.559 +Otherwise, I plan to do it myself. It's all right. + +00:03:43.560 --> 00:03:46.639 +It was very easy since he provided the full narration. + +00:03:46.640 --> 00:03:50.399 +I still need to tweak it sometimes, + +00:03:50.400 --> 00:03:52.919 +so I often use the waveforms in subed + +00:03:52.920 --> 00:03:58.559 +to find the right starting time and ending time for things. + +00:03:58.560 --> 00:04:01.519 +But it is so nice to have a presentation + +00:04:01.520 --> 00:04:03.879 +where you can experience it in different forms, + +00:04:03.880 --> 00:04:10.159 +as an article, as a video, as a post with links and everything. + +00:04:10.160 --> 00:04:11.479 +Very handy. + +00:04:11.480 --> 00:04:20.919 +Right, and in case a teacher uses this for class lectures, + +00:04:20.920 --> 00:04:26.079 +then the student profits from all sorts. + +00:04:26.080 --> 00:04:28.999 +The article presentation format is very useful + +00:04:29.000 --> 00:04:33.239 +for a student to add their own notes to it and the rest. + +00:04:33.240 --> 00:04:37.519 +Exactly as you said, having multiple forms is great. + +00:04:37.520 --> 00:04:40.479 +Video has its place, reveal has its place, + +00:04:40.480 --> 00:04:44.039 +PDF has its place, article has its place. + +00:04:44.040 --> 00:04:48.399 +All of them work together. + +00:04:48.400 --> 00:04:50.479 +I've been having a hard time figuring out + +00:04:50.480 --> 00:04:54.719 +how to make the reveal.js version of a presentation + +00:04:54.720 --> 00:04:56.999 +more easily distributable, though. + +00:04:57.000 --> 00:04:58.839 +This is something we've had a hard time + +00:04:58.840 --> 00:05:00.199 +with in the past, too. + +00:05:00.200 --> 00:05:02.759 +You have these lovely EmacsConf presentations + +00:05:02.760 --> 00:05:04.839 +that could be reveal presentations, + +00:05:04.840 --> 00:05:07.759 +but hosting them doesn't quite fit + +00:05:07.760 --> 00:05:13.639 +in the usual assumptions people have. Exactly, exactly. + +00:05:13.640 --> 00:05:16.559 +So if we were to have a reveal server, + +00:05:16.560 --> 00:05:20.479 +then we could upload our reveal inputs to it. + +00:05:20.480 --> 00:05:24.999 +But you're right, we should look + +00:05:25.000 --> 00:05:26.679 +for some sort of a packaging + +00:05:26.680 --> 00:05:34.079 +that is more plug and distribute. Yeah, so I'd be all game + +00:05:34.080 --> 00:05:36.919 +if we wanted to do it for next year, + +00:05:36.920 --> 00:05:42.039 +I'd be happy to provide all the reveal outputs. + +00:05:42.040 --> 00:05:45.919 +In fact, they are here, let me touch on that quickly. + +00:05:45.920 --> 00:05:53.639 +Good point you brought up. So, this is the. Reveal output. + +00:05:53.640 --> 00:05:57.519 +So all of these, you see the images and the audio + +00:05:57.520 --> 00:06:02.359 +in my own environment are SIM links to where I keep them. + +00:06:02.360 --> 00:06:06.239 +So those need to come in, + +00:06:06.240 --> 00:06:10.599 +but the reveal output really comes right here. + +00:06:10.600 --> 00:06:13.679 +And this is how it looks. + +00:06:13.680 --> 00:06:15.679 +If that's a link you can add to the pad, + +00:06:15.680 --> 00:06:19.799 +then I can add you to the top page afterwards. + +00:06:19.800 --> 00:06:21.839 +I think as a, as a speaker, + +00:06:21.840 --> 00:06:24.119 +I tend to just self host the thing. + +00:06:24.120 --> 00:06:28.319 +And that way also, if I find a bug, which often happens, + +00:06:28.320 --> 00:06:30.679 +I can go and quietly update it. + +00:06:30.680 --> 00:06:36.439 +Exactly. Exactly. Sure. Sure. Yeah. + +00:06:36.440 --> 00:06:44.239 +This right now, what we are looking at is from GitHub. + +00:06:44.240 --> 00:06:48.599 +And the audio and the images, of course, are large, + +00:06:48.600 --> 00:06:55.759 +and I did not upload them. But I can send them, sure. + +00:06:55.760 --> 00:07:01.999 +So, a few other things maybe I can elaborate on. + +00:07:02.000 --> 00:07:08.639 +This is the kombut strapping page for BISOS, also on there. + +00:07:08.640 --> 00:07:11.079 +And if somebody wanted to actually + +00:07:11.080 --> 00:07:12.919 +dig deeper and go through this, + +00:07:12.920 --> 00:07:18.959 +a good starting point would be my GitHub page. + +00:07:18.960 --> 00:07:24.639 +But my GitHub page is not done and organized the usual way. + +00:07:24.640 --> 00:07:26.999 +So I only have three repositories + +00:07:27.000 --> 00:07:30.359 +and the repositories basically say, + +00:07:30.360 --> 00:07:32.266 +here is where you need to go. + +00:07:32.267 --> 00:07:39.159 +So all of my work is organized as organizations. + +00:07:39.160 --> 00:07:48.039 +So, for example, for Emacs, if you were to go to BXBli, + +00:07:48.040 --> 00:07:56.359 +you will see all the relevant repos for that purpose. + +00:07:56.360 --> 00:07:58.975 +So, for example, if you wanted to + +00:07:58.976 --> 00:08:03.319 +come and take a look at mail template, + +00:08:03.320 --> 00:08:08.719 +templating, distribution, and tracking, + +00:08:08.720 --> 00:08:16.239 +you would get a Emacs package ready to go over here. + +00:08:16.240 --> 00:08:23.479 +But again, all of this is through the use of GitHub organizations. + +00:08:23.480 --> 00:08:26.399 +So my repos are by subject + +00:08:26.400 --> 00:08:33.239 +and the by source itself has 69 repositories + +00:08:33.240 --> 00:08:38.719 +where different sections of it are packaged as PIP packages. + +00:08:38.720 --> 00:08:42.359 +So, for example, for LCNT, we can go there. + +00:08:42.360 --> 00:08:46.439 +So, these are the packages that let you, + +00:08:46.440 --> 00:08:53.159 +let me go there, that let you dissect. + +00:08:53.160 --> 00:08:55.199 +Sorry, you have your slides shared at the moment, + +00:08:55.200 --> 00:08:59.599 +so I don't know if you're in a different tab. + +00:08:59.600 --> 00:09:03.079 +Oh, am I in a different tab? + +00:09:03.080 --> 00:09:06.399 +I thought that that would follow me. + +00:09:06.400 --> 00:09:16.119 +Yes, I am in a different tab. Let me see. + +00:09:16.120 --> 00:09:19.879 +This is the one that you are seeing, + +00:09:19.880 --> 00:09:28.839 +so let me go over here. Perfect. Now you're seeing it. + +00:09:28.840 --> 00:09:31.279 +So literally on the same page. Awesome. Right. + +00:09:31.280 --> 00:09:33.679 +So you were not actually seeing what I was saying. + +00:09:33.680 --> 00:09:36.159 +So, so what I was saying that is that + +00:09:36.160 --> 00:09:42.159 +if you go to my primary website, GitHub page, + +00:09:42.160 --> 00:09:45.439 +you will see that there are only three repos there. + +00:09:45.440 --> 00:09:49.759 +And those repos just give information + +00:09:49.760 --> 00:09:52.959 +about where the real repos are. + +00:09:52.960 --> 00:09:57.399 +And the real repos are organized in various organizations. + +00:09:57.400 --> 00:10:06.719 +So, for example, for Emacs packages, I use the bxblee + +00:10:06.720 --> 00:10:11.999 +And in there, there are 40 repositories. + +00:10:12.000 --> 00:10:15.399 +And as an example, you can choose, for example, + +00:10:15.400 --> 00:10:26.519 +AI plus is just a few additional libraries for menus, for AIDERMAX. + +00:10:26.520 --> 00:10:31.719 +And the rest of BLEE is done that way as well. + +00:10:31.720 --> 00:10:36.919 +So if you were to let me also show + +00:10:36.920 --> 00:10:43.759 +more relevant stuff to the content generation. + +00:10:43.760 --> 00:10:48.839 +And everything related to BySauce in Python is in BySauce pip. + +00:10:48.840 --> 00:10:52.879 +These are packages that are ready + +00:10:52.880 --> 00:10:57.959 +to be exported to pypi and + +00:10:57.960 --> 00:11:02.749 +For example, for LCNT, if you go here, + +00:11:02.750 --> 00:11:04.558 +let's go to the bin directory. + +00:11:04.559 --> 00:11:15.808 +These are the utilities that dissect the PDF output of Beamer + +00:11:15.809 --> 00:11:23.839 +converted to images so that you can insert them in Reveal. + +00:11:23.840 --> 00:11:29.159 +And then again, if you were to just wanted to dig deeper + +00:11:29.160 --> 00:11:34.759 +in any of these as components, + +00:11:34.760 --> 00:11:40.559 +you would simply start from this top level page + +00:11:40.560 --> 00:11:44.719 +and explore the organizations. + +00:11:44.720 --> 00:11:48.719 +So in total, maybe there is 300 repos, + +00:11:48.720 --> 00:11:54.279 +but they are organized by subject matter + +00:11:54.280 --> 00:12:03.399 +within GitHub organizations. + +00:12:03.400 --> 00:12:10.799 +Yeah. Additional general comment. + +00:12:10.800 --> 00:12:13.039 +If you were to look at my presentation, + +00:12:13.040 --> 00:12:17.519 +I'd say I touched on five different topics. + +00:12:17.520 --> 00:12:24.039 +So, one topic was this content generation in general. + +00:12:24.040 --> 00:12:35.279 +The second one was this challenge of DIY model and recipes + +00:12:35.280 --> 00:12:38.319 +versus building something large + +00:12:38.320 --> 00:12:40.919 +and including everything in it. + +00:12:40.920 --> 00:12:43.519 +And that is, that has been the motivation + +00:12:43.520 --> 00:12:46.919 +for BySauce and BLE. + +00:12:46.920 --> 00:12:50.279 +And I'm interested in getting feedback on it. + +00:12:50.280 --> 00:12:54.519 +In general, the open source culture + +00:12:54.520 --> 00:13:00.719 +has been focusing on components + +00:13:00.720 --> 00:13:03.439 +and large American corporations + +00:13:03.440 --> 00:13:07.719 +have focused in integration of these components. + +00:13:07.720 --> 00:13:11.679 +So my short message here is that + +00:13:11.680 --> 00:13:17.959 +we should start thinking as providing solutions + +00:13:17.960 --> 00:13:23.519 +as opposed to minor pieces and packages + +00:13:23.520 --> 00:13:30.599 +and put them all together and claim them as our own digital ecosystem. + +00:13:30.600 --> 00:13:38.319 +And this is the concept behind ByStar, BySource and BLEE. + +00:13:38.320 --> 00:13:40.999 +The third point I was making throughout + +00:13:41.000 --> 00:13:45.479 +is this concept of dynamic blocks everywhere, + +00:13:45.480 --> 00:13:51.599 +and Comiga, which is the inverse of Babel. + +00:13:51.600 --> 00:13:57.479 +And I'd also be interested in feedback on those. + +00:13:57.480 --> 00:14:03.239 +I think the d-blocks-everywhere concept, + +00:14:03.240 --> 00:14:13.079 +I can very quickly show that. + +00:14:13.080 --> 00:14:18.039 +it would be in the LaTeX file, as an example. + +00:14:18.040 --> 00:14:23.319 +I didn't really do a good job in digging deeper into that. + +00:14:23.320 --> 00:14:25.479 +So if you go to the sources + +00:14:25.480 --> 00:14:31.319 +and you look at any of the slides, + +00:14:31.320 --> 00:14:39.719 +All the slides are in here inside of a dynamic block. + +00:14:39.720 --> 00:14:41.919 +This is an org D block, + +00:14:41.920 --> 00:14:46.919 +but you would invoke it in LaTeX mode. + +00:14:46.920 --> 00:14:51.199 +And then from this begin to this end, + +00:14:51.200 --> 00:14:54.559 +everything is auto-generated + +00:14:54.560 --> 00:15:00.039 +through the Elisp function, body MM video. + +00:15:00.040 --> 00:15:06.879 +And the parameters that it takes are the video pass. + +00:15:06.880 --> 00:15:12.239 +So all of this code is repeated all over the place. + +00:15:12.240 --> 00:15:15.799 +And all you need in it is the video pass. + +00:15:15.800 --> 00:15:21.959 +So it's very easy to think of this as a macro capability, + +00:15:21.960 --> 00:15:25.079 +except that the macro is visible. + +00:15:25.080 --> 00:15:29.479 +And it has one additional benefit + +00:15:29.480 --> 00:15:34.799 +on top of general macro capabilities, + +00:15:34.800 --> 00:15:36.759 +and that is that it's open. + +00:15:36.760 --> 00:15:41.679 +In this particular case, it closes, + +00:15:41.680 --> 00:15:46.439 +but let me show you another one where it is open. + +00:15:46.440 --> 00:15:54.879 +So if you look at, this is latex section, this one is good. + +00:15:54.880 --> 00:16:00.439 +This is a derived image. And by saying that it's open + +00:16:00.440 --> 00:16:06.679 +is that you see my begin verbatim and my begin frame. + +00:16:06.680 --> 00:16:11.439 +They end and there is no closing for them. + +00:16:11.440 --> 00:16:14.999 +So the extra text that is outside + +00:16:15.000 --> 00:16:21.319 +of the D block and closes it is down here. + +00:16:21.320 --> 00:16:24.959 +And none of the existing macro capabilities + +00:16:24.960 --> 00:16:30.799 +gives you this feature. This even comes handy in Lisp. + +00:16:30.800 --> 00:16:40.039 +So that is a proposal saying + +00:16:40.040 --> 00:16:47.719 +that let's make D blocks, dynamic blocks, + +00:16:47.720 --> 00:16:52.959 +generalized to all of Emacs, as opposed to just org mode. + +00:16:52.960 --> 00:16:54.759 +And that's relatively simple. + +00:16:54.760 --> 00:17:01.359 +And the Emacs source team could easily decide + +00:17:01.360 --> 00:17:02.959 +that this is worthwhile doing. + +00:17:02.960 --> 00:17:07.759 +And then, of course, I've gone + +00:17:07.760 --> 00:17:09.959 +over it through the presentation. + +00:17:09.960 --> 00:17:20.399 +So, I see 1 question coming in. What changes have you seen? + +00:17:20.400 --> 00:17:24.719 +the culture while developing all these things + +00:17:24.720 --> 00:17:28.639 +like liver halal system and now BLCNT. + +00:17:28.640 --> 00:17:40.079 +Well, it's a work in progress, I would say. + +00:17:40.080 --> 00:17:43.039 +We learn from one another. + +00:17:43.040 --> 00:17:47.719 +And what I'm doing may be considered + +00:17:47.720 --> 00:17:52.199 +just a stepwise increment, + +00:17:52.200 --> 00:18:01.799 +but the cultural input is that we really should start + +00:18:01.800 --> 00:18:09.399 +thinking about providing solutions as opposed to packages. + +00:18:09.400 --> 00:18:19.319 +The FOSS culture is really limited in its scope to packages + +00:18:19.320 --> 00:18:24.799 +or even if when you think something very large like Debian, + +00:18:24.800 --> 00:18:28.159 +which is a collection of packages. + +00:18:28.160 --> 00:18:31.479 +And it is still choice oriented, + +00:18:31.480 --> 00:18:55.399 +as opposed to solution oriented. + +00:18:55.400 --> 00:19:03.599 +Yeah. Are there any additional topics or questions? + +00:19:03.600 --> 00:19:11.159 +Otherwise, I'll just add a few additional concepts. + +00:19:11.160 --> 00:19:18.079 +So the two other points made throughout the presentations + +00:19:18.080 --> 00:19:28.759 +are that this statement about clear invalidity + +00:19:28.760 --> 00:19:30.719 +of the Western IPO regime. + +00:19:30.720 --> 00:19:34.399 +So throughout the first movement, + +00:19:34.400 --> 00:19:42.719 +we have been focusing on providing alternative licenses + +00:19:42.720 --> 00:19:49.319 +which coexist with the IPR system. + +00:19:49.320 --> 00:19:52.199 +And that is the practical thing to do. + +00:19:52.200 --> 00:19:55.879 +We are doing a jujitsu on IPR. + +00:19:55.880 --> 00:20:00.919 +We are saying that this is our license to it. + +00:20:00.920 --> 00:20:07.399 +But conceptually, there has been little discussion + +00:20:07.400 --> 00:20:14.319 +and also positioning on this basic question + +00:20:14.320 --> 00:20:17.479 +as to whether or not copyright + +00:20:17.480 --> 00:20:21.119 +and patents are valid or invalid. + +00:20:21.120 --> 00:20:26.639 +And what I am saying is that it is clear that they are invalid, + +00:20:26.640 --> 00:20:30.439 +particularly once you start looking at them + +00:20:30.440 --> 00:20:33.759 +with the lens of polyexistentials. + +00:20:33.760 --> 00:20:39.239 +And that the false movement + +00:20:39.240 --> 00:20:42.199 +really needs to combine these two, + +00:20:42.200 --> 00:20:47.359 +this notion of free software and open source licenses, + +00:20:47.360 --> 00:20:51.679 +and combined with the belief system + +00:20:51.680 --> 00:20:55.839 +that we are completely and utterly against + +00:20:55.840 --> 00:21:00.679 +the validity of the Western intellectual property rights regime. + +00:21:00.680 --> 00:21:05.399 +And I use the Western and the American occasionally, + +00:21:05.400 --> 00:21:12.479 +and the reason behind that is that in fact it is, they are Western. + +00:21:12.480 --> 00:21:16.479 +If you go to any other language, if you go to Farsi, + +00:21:16.480 --> 00:21:19.079 +if you go to Arabic, if you go to Chinese, + +00:21:19.080 --> 00:21:24.159 +if you go to Japanese, which are non-Western cultures, + +00:21:24.160 --> 00:21:28.639 +the concept of intellectual property, + +00:21:28.640 --> 00:21:33.159 +the words, the vocabulary of those + +00:21:33.160 --> 00:21:36.639 +combination of intellectual and property, + +00:21:36.640 --> 00:21:40.559 +did not exist anywhere in those cultures. + +00:21:40.560 --> 00:21:44.559 +It's only in the past, maybe 60, 70 years + +00:21:44.560 --> 00:21:52.279 +that they have been translated from the Western world and brought into it. + +00:21:52.280 --> 00:21:54.639 +So there is an inherent root + +00:21:54.640 --> 00:21:58.959 +into the intellectual property rights system, + +00:21:58.960 --> 00:22:02.679 +which goes to the Western culture. + +00:22:02.680 --> 00:22:08.439 +The second point that I have brought into + +00:22:08.440 --> 00:22:10.999 +this presentation and the previous ones + +00:22:11.000 --> 00:22:16.239 +is this question of, if we go with free software, + +00:22:16.240 --> 00:22:18.119 +if we go with open software, + +00:22:18.120 --> 00:22:22.159 +are we really creating the right labels? + +00:22:22.160 --> 00:22:25.679 +And my point is that no, neither of them, + +00:22:25.680 --> 00:22:29.479 +neither free software, nor open source + +00:22:29.480 --> 00:22:33.159 +are capturing really the essence + +00:22:33.160 --> 00:22:36.399 +of what we are trying to do. + +00:22:36.400 --> 00:22:41.439 +And I claim that that is in fact ethics and morality. + +00:22:41.440 --> 00:22:48.879 +And it is societal belief that if we reject + +00:22:48.880 --> 00:22:51.879 +intellectual property rights regime, + +00:22:51.880 --> 00:22:53.279 +what do we replace it with? + +00:22:53.280 --> 00:22:58.799 +And in my thinking is that a software developer + +00:22:58.800 --> 00:23:00.919 +does not get to choose + +00:23:00.920 --> 00:23:04.919 +what license goes with his or her software, + +00:23:04.920 --> 00:23:09.319 +and that the equivalent of a federal GPL + +00:23:09.320 --> 00:23:13.839 +is the default correct license + +00:23:13.840 --> 00:23:16.319 +to use for all of your software + +00:23:16.320 --> 00:23:21.039 +because it is the one that reflects the belief system + +00:23:21.040 --> 00:23:24.719 +that all software should be ethical software. + +00:23:24.720 --> 00:23:43.559 +Yeah, I'm looking at the Etherpad again and + +00:23:43.560 --> 00:23:48.679 +The question is about IP and AI. + +00:23:48.680 --> 00:23:54.359 +So yeah, over the past two years, + +00:23:54.360 --> 00:23:56.599 +something huge has happened. + +00:23:56.600 --> 00:24:04.919 +And what I am seeing in there as a solution + +00:24:04.920 --> 00:24:12.319 +is essentially comes down to a talk + +00:24:12.320 --> 00:24:16.839 +that was given maybe two years ago by someone at EmacsConf, + +00:24:16.840 --> 00:24:22.359 +and its label was attribution-based economics. + +00:24:22.360 --> 00:24:28.319 +In my thinking, intellectual property + +00:24:28.320 --> 00:24:29.839 +as a whole is invalid. + +00:24:29.840 --> 00:24:36.119 +But that means that through something like a federal GPL, + +00:24:36.120 --> 00:24:41.719 +you focus on attribution basing, proper attribution basing. + +00:24:41.720 --> 00:24:43.839 +If somebody has done some work, + +00:24:43.840 --> 00:24:48.599 +it should be clear, no matter what, that that work is his. + +00:24:48.600 --> 00:24:54.879 +And that we already, even prior to AI, we were seeing this. + +00:24:54.880 --> 00:24:59.399 +We were seeing large GitHub repos with hundreds of authors. + +00:24:59.400 --> 00:25:09.879 +And it was utterly unclear as to who would own this whole thing. + +00:25:09.880 --> 00:25:14.119 +And any piece of it is not of significance. + +00:25:14.120 --> 00:25:16.879 +What is of significance is the whole thing. + +00:25:16.880 --> 00:25:25.039 +So moving towards that attribution based economics is key. + +00:25:25.040 --> 00:25:27.599 +And then once we do that, + +00:25:27.600 --> 00:25:31.919 +and then we accept AI as a reality. + +00:25:31.920 --> 00:25:38.199 +AI should still take very seriously + +00:25:38.200 --> 00:25:43.999 +and conform to attribution-based economics. + +00:25:44.000 --> 00:25:47.879 +In other words, what is generated by the machine + +00:25:47.880 --> 00:25:51.279 +should not be claimed to be no one's + +00:25:51.280 --> 00:25:54.239 +or the machine owners, the AI owners. + +00:25:54.240 --> 00:25:56.879 +It should still clearly be attributed + +00:25:56.880 --> 00:26:03.039 +to the people who contributed in its creation. + +00:26:03.040 --> 00:26:06.959 +This all becomes very muddy, very clear, + +00:26:06.960 --> 00:26:11.919 +and I don't have a simple or clear answer to it. + +00:26:11.920 --> 00:26:16.079 +But the perimeters of the solution lie in + +00:26:16.080 --> 00:26:21.479 +rejection of intellectual property, + +00:26:21.480 --> 00:26:25.039 +replacement of the intellectual property + +00:26:25.040 --> 00:26:27.399 +with attribution-based economics, + +00:26:27.400 --> 00:26:31.199 +and restrictions on AI use + +00:26:31.200 --> 00:26:38.199 +of not properly attributed content. + +00:26:38.200 --> 00:26:50.239 +Yeah, I'd say that would be, it's a complicated topic + +00:26:50.240 --> 00:26:56.119 +and I would simply say I haven't figured it out at all. + +00:26:56.120 --> 00:27:03.759 +I just have a perimeter set of concepts + +00:27:03.760 --> 00:27:06.479 +that can be used to drive it. + +00:27:06.480 --> 00:27:20.679 +Are there any other questions? If there aren't any, + +00:27:20.680 --> 00:27:23.159 +I thank everybody again, + +00:27:23.160 --> 00:27:27.799 +and particularly the EmacsConf organizers and Sacha. + +00:27:27.800 --> 00:27:32.639 +And I look forward to continuing all of this next year. + +00:27:32.640 --> 00:27:39.079 +Unless there is any objection, + +00:27:39.080 --> 00:27:45.360 +I'll leave the session and close it. Thank you. diff --git a/2025/captions/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--answers.vtt b/2025/captions/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--answers.vtt new file mode 100644 index 00000000..feeab999 --- /dev/null +++ b/2025/captions/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--answers.vtt @@ -0,0 +1,2107 @@ +WEBVTT + +00:00.000 --> 00:07.879 +All right, take it away. Okay, am I, are we live? + +00:07.880 --> 00:12.759 +Yes, we're live. Oh man, holy moly. + +00:12.760 --> 00:19.359 +Oh, that's surreal. Hi everyone. Oh man. + +00:19.360 --> 00:26.319 +Ah, so excited to be here. So good to see all of you. Okay. + +00:26.320 --> 00:29.479 +So, should we just go ahead and get right into it? + +00:29.480 --> 00:38.479 +Yeah, let me, let me see here. So I have. + +00:38.480 --> 00:41.559 +Yeah, I see, I see some, I see some questions coming in. + +00:41.560 --> 00:47.079 +Perfect. I am going to show my share my screen real quick. + +00:47.080 --> 00:54.399 +We have currently currently we have + +00:54.400 --> 00:59.079 +a sort of a dross thing going. + +00:59.080 --> 01:04.519 +And so I just wanted to, while we're waiting + +01:04.520 --> 01:05.559 +for some more stuff to come in, + +01:05.560 --> 01:11.919 +I just wanted to sort of idle on this buffer here. + +01:11.920 --> 01:13.559 +If you increase your font size slightly, + +01:13.560 --> 01:15.959 +that might be even nicer. + +01:15.960 --> 01:38.159 +Yes, absolutely, gladly. Whoa, okay. There we go. + +01:38.160 --> 01:41.559 +All right, the first question + +01:41.560 --> 01:45.839 +was looking for examples of files in book club style. + +01:45.840 --> 01:48.799 +The person says, that seems to be related + +01:48.800 --> 01:49.679 +to what I've been doing, + +01:49.680 --> 01:54.239 +but coming from different influences. Yes, yes. + +01:54.240 --> 02:03.559 +So I included a, included a, + +02:03.560 --> 02:07.879 +Let me see, I'm just looking at the IRC here + +02:07.880 --> 02:16.719 +and smiling at all the people. So, yes, I provided a link. + +02:16.720 --> 02:19.039 +So I think that an excellent. + +02:19.040 --> 02:24.159 +So I have gone ahead and provided + +02:24.160 --> 02:26.959 +the get the link to the repo + +02:26.960 --> 02:30.479 +and I'm going to go ahead and post that again. + +02:30.480 --> 02:34.039 +So this should serve as a full example + +02:34.040 --> 02:39.519 +of what a just sort of standard book club file looks like. + +02:39.520 --> 02:41.559 +And if anyone has like specific questions + +02:41.560 --> 02:42.839 +about anything in particular, + +02:42.840 --> 02:47.799 +they would love to see my sort of like walkthrough + +02:47.800 --> 02:52.239 +and narrate like specifically, you know, any place in this file + +02:52.240 --> 02:55.319 +that they would like to see me sort of like go over live, + +02:55.320 --> 02:58.719 +I would be super happy to do that. + +02:58.720 --> 03:03.439 +So I have the whole, you know, more or less complete + +03:03.440 --> 03:10.799 +book club file for Squint pulled up here. + +03:10.800 --> 03:14.599 +Yeah, I have my vision laid out, + +03:14.600 --> 03:18.639 +which has my initial sort of goal. + +03:18.640 --> 03:22.879 +you know, the background and the vision sort of combined + +03:22.880 --> 03:28.559 +to lay out what my general sort of goal is. + +03:28.560 --> 03:31.319 +I just realized, let me kill my stream there. + +03:31.320 --> 03:39.079 +There we go. All right. There's another question. + +03:39.080 --> 03:41.439 +The product of a tapa like squint.org + +03:41.440 --> 03:44.359 +would be pure gold for an agent like Cloud Code. + +03:44.360 --> 03:47.519 +Have you experimented with providing an agent with a final output + +03:47.520 --> 03:50.919 +and letting it chew through to-dos? + +03:50.920 --> 03:53.319 +That would be a really excellent question. + +03:53.320 --> 03:54.919 +I actually just kind of recently + +03:54.920 --> 03:58.159 +got into Clawed in particular. + +03:58.160 --> 04:01.679 +I played quite a bit with GPT and + +04:01.680 --> 04:07.239 +and a lot of 8 billion parameter local models. + +04:07.240 --> 04:09.879 +And I was never super impressed. + +04:09.880 --> 04:12.999 +It always felt like I was just sort of wrangling + +04:13.000 --> 04:14.639 +to get it on the same page, + +04:14.640 --> 04:16.799 +whether as a result of sycophantism + +04:16.800 --> 04:19.399 +or really just not having enough parameters + +04:19.400 --> 04:21.919 +in order to understand the context of what's going on. + +04:21.920 --> 04:25.759 +Cloud has completely changed my perception + +04:25.760 --> 04:27.359 +of what an LLM can do or not. + +04:27.360 --> 04:31.119 +It makes autonomy not seem like a total fever train. + +04:31.120 --> 04:36.439 +I have definitely been curious about + +04:36.440 --> 04:39.639 +how an LLM would react to book club files. + +04:39.640 --> 04:41.719 +I think that, yeah, especially like, + +04:41.720 --> 04:43.799 +I've been daydreaming a little bit about, + +04:43.800 --> 04:49.919 +you know, having it generate scratch artifacts + +04:49.920 --> 04:54.799 +or suggesting, you know, changes to the format. + +04:54.800 --> 04:58.959 +It's like, yeah, the fact that + +04:58.960 --> 05:01.959 +this is all like, you know, like super, + +05:01.960 --> 05:05.239 +The goal and the hope for all of this + +05:05.240 --> 05:08.359 +is that we're being verbose about our thinking anyway. + +05:08.360 --> 05:12.199 +This is sort of how, by default, + +05:12.200 --> 05:14.159 +deep reasoning kind of works. + +05:14.160 --> 05:15.799 +I actually think that I totally agree. + +05:15.800 --> 05:17.559 +It would be a great fit. + +05:17.560 --> 05:19.599 +I have yet to personally do it, + +05:19.600 --> 05:21.279 +because I've always been just + +05:21.280 --> 05:23.319 +a little bit wary about, like, you know... + +05:23.320 --> 05:24.999 +Well, if I'm writing a program, + +05:25.000 --> 05:26.879 +I want to write it, you know? + +05:26.880 --> 05:29.239 +People often talk about, like, you know, + +05:29.240 --> 05:31.919 +oh, I just want to hand off + +05:31.920 --> 05:34.159 +the boring parts to Claude. + +05:34.160 --> 05:36.519 +But the thing is, if I'm writing an e-list, + +05:36.520 --> 05:39.479 +I find the whole thing to be kind of fun. + +05:39.480 --> 05:46.079 +be super, um, it would be super interested in, you know, + +05:46.080 --> 05:48.159 +just sort of as a point of exercise, + +05:48.160 --> 05:49.479 +like seeing what it's capable of. + +05:49.480 --> 05:51.479 +Because I think, I really do think + +05:51.480 --> 05:54.119 +that this would be kind of an ideal environment. + +05:54.120 --> 05:55.879 +It is kind of close to, you know, + +05:55.880 --> 05:59.039 +native-ish, how LLMs think. + +05:59.040 --> 06:01.399 +There's also, like, you know, of course, + +06:01.400 --> 06:03.479 +the, um, the privacy angle. + +06:03.480 --> 06:05.119 +I don't necessarily want to provide + +06:05.120 --> 06:09.319 +a whole bunch of code verbatim that I intend to GPL3. + +06:09.320 --> 06:15.719 +But I believe that Claude kind of has a better policy + +06:15.720 --> 06:20.639 +in terms of what does and does not become training data. + +06:20.640 --> 06:22.439 +I'll have to look into Claude in particular + +06:22.440 --> 06:24.599 +because I feel like that would be my target for it. + +06:24.600 --> 06:29.679 +But yeah, I think that's definitely onto something. + +06:29.680 --> 06:31.439 +I've definitely thought about this. + +06:31.440 --> 06:33.759 +I've definitely been really curious about this. + +06:33.760 --> 06:40.279 +Next question, do you think every Tapa + +06:40.280 --> 06:42.479 +should have its own book club file as well? + +06:42.480 --> 06:45.559 +Or would you rather keep just one book club file + +06:45.560 --> 06:46.559 +in the top of the project? + +06:46.560 --> 06:51.559 +So I think that I definitely would advise + +06:51.560 --> 06:54.879 +that each Tapa have its own book club file. + +06:54.880 --> 06:59.479 +The reason being is because I find that for me personally, + +06:59.480 --> 07:00.799 +the way that my brain kind of works + +07:00.800 --> 07:06.239 +is that out of sight, out of mind is very literal for me. + +07:06.240 --> 07:13.519 +I find that I find that. What am I thinking of? + +07:13.520 --> 07:19.959 +Sorry, I just saw that I got an email + +07:19.960 --> 07:22.799 +and I'm like, yeah, okay, cool. + +07:22.800 --> 07:27.319 +Case in point, right? We are at case in point, you know, + +07:27.320 --> 07:30.519 +out of sight, out of mind. Yes, no, absolutely. + +07:30.520 --> 07:35.799 +Yeah, no, exactly. I, um, I'm definitely quite ADHD + +07:35.800 --> 07:36.879 +and it works for my advantage + +07:36.880 --> 07:38.959 +because it provides all sorts of versatility. + +07:38.960 --> 07:42.439 +This is another great advantage of book club. + +07:42.440 --> 07:46.399 +If you have an ADHD mind like I do where, you know, + +07:46.400 --> 07:48.319 +You love jumping around and working on + +07:48.320 --> 07:51.519 +all sorts of different pieces simultaneously. + +07:51.520 --> 07:52.999 +You don't like sitting down + +07:53.000 --> 07:54.519 +and doing the same thing all day + +07:54.520 --> 07:57.239 +unless it really latches onto you. + +07:57.240 --> 07:59.759 +You know, you can pivot and you don't do anything. + +07:59.760 --> 08:02.559 +It really rewards the fact that you can pivot. + +08:02.560 --> 08:06.039 +So I find that to be really excellent. + +08:06.040 --> 08:08.359 +But to go back to the original a question, + +08:08.360 --> 08:11.519 +I would definitely recommend, + +08:11.520 --> 08:13.759 +at least in my circumstance, + +08:13.760 --> 08:15.679 +I find it to be incredibly useful + +08:15.680 --> 08:19.199 +to have each tapa be its own book club file + +08:19.200 --> 08:21.839 +rather than to have a unified file + +08:21.840 --> 08:26.599 +that holds all of your tapas. You can definitely do this, + +08:26.600 --> 08:28.959 +especially if you're using org + +08:28.960 --> 08:31.279 +to organize it hierarchically. + +08:31.280 --> 08:33.759 +It's just sort of a matter of preference + +08:33.760 --> 08:34.719 +and style at that point. + +08:34.720 --> 08:39.319 +So long as you're making a clear distinction between your tapas, + +08:39.320 --> 08:40.359 +that's the main thing + +08:40.360 --> 08:42.399 +that I would recommend no matter what, + +08:42.400 --> 08:44.919 +because the whole hope that I have is that + +08:44.920 --> 08:47.879 +you have a sort of separation of focus + +08:47.880 --> 08:49.599 +between the different you know, + +08:49.600 --> 08:54.719 +the different focuses of your different tapas, + +08:54.720 --> 08:57.959 +they really should ideally feel like different programs + +08:57.960 --> 09:00.119 +so that you're not, you know, + +09:00.120 --> 09:02.079 +getting over yourself, getting ahead of yourself. + +09:02.080 --> 09:05.079 +I think that, you know, on that basis, + +09:05.080 --> 09:07.479 +I would probably default to recommending + +09:07.480 --> 09:12.919 +that tapas have their own separate book club files, + +09:12.920 --> 09:15.679 +because ideally they should kind of be different + +09:15.680 --> 09:19.239 +sort of independent but related thoughts. + +09:19.240 --> 09:21.719 +But at the same time, I mean, like, you know, + +09:21.720 --> 09:23.559 +this is coming from someone + +09:23.560 --> 09:26.679 +who like has a billion small, like, you know, + +09:26.680 --> 09:28.679 +I had one giant org file for a long time + +09:28.680 --> 09:31.759 +and then realized that really didn't work for me. + +09:31.760 --> 09:34.239 +So now I have a billion tiny ones. + +09:34.240 --> 09:38.439 +So depending upon how you feel about, you know, + +09:38.440 --> 09:40.759 +should I have one really big org file + +09:40.760 --> 09:42.479 +or a bunch of really little org files? + +09:42.480 --> 09:44.639 +I feel like that more or less gives your answer. + +09:44.640 --> 09:48.359 +I think it's whatever works best for you. + +09:48.360 --> 09:51.439 +I know that far and away what works best for me + +09:51.440 --> 09:55.239 +is having separate files. No matter what, you should have + +09:55.240 --> 09:57.999 +separation of concept though. + +09:58.000 --> 10:00.639 +But however you do that is, you know, + +10:00.640 --> 10:01.919 +is best your judgment call. + +10:01.920 --> 10:11.399 +Next question, how do you build habits + +10:11.400 --> 10:13.119 +when it comes to documentation? + +10:13.120 --> 10:16.039 +I tend to produce lots of documentation in one go, + +10:16.040 --> 10:19.319 +then effectively forget to do it for long periods of time + +10:19.320 --> 10:20.599 +and end up playing catch up, + +10:20.600 --> 10:22.479 +which results in a loss of precision, + +10:22.480 --> 10:24.319 +as you alluded to in your talk. + +10:24.320 --> 10:26.519 +In a work setting, when something goes on fire + +10:26.520 --> 10:28.919 +or priorities change, it can be hard to keep discipline. + +10:28.920 --> 10:32.559 +Would love your thoughts. Thanks. Yes, absolutely. + +10:32.560 --> 10:35.719 +So what I tend to do is I don't + +10:35.720 --> 10:39.239 +So really, so far, what I've been doing + +10:39.240 --> 10:42.159 +is that I haven't been making a conscious priority + +10:42.160 --> 10:45.359 +of writing documentation at all. + +10:45.360 --> 10:48.039 +And if that sounds contradictory + +10:48.040 --> 10:51.759 +to the talk, that is correct. + +10:51.760 --> 10:54.999 +What I mean by this is that I go about + +10:55.000 --> 11:00.039 +is that when I'm writing code, + +11:00.040 --> 11:03.959 +when I'm writing, you know, drafts of my functions, + +11:03.960 --> 11:05.439 +the way that I tend to approach this, + +11:05.440 --> 11:07.279 +the way that I really emphasize the approach for it, + +11:07.280 --> 11:12.999 +is that I want to focus first and foremost + +11:13.000 --> 11:15.559 +on sort of like just writing down + +11:15.560 --> 11:17.519 +what my internal monologue is + +11:17.520 --> 11:23.519 +for what I'm doing for that pass working on the file. + +11:23.520 --> 11:25.919 +So my document takes ultimate + +11:25.920 --> 11:29.519 +Distance of dark is ultimately a property + +11:29.520 --> 11:32.359 +from the fact that I am writing + +11:32.360 --> 11:35.119 +what I'm doing as I'm doing it. + +11:35.120 --> 11:37.759 +And it's more or less just I'm just + +11:37.760 --> 11:39.759 +mashing out the stream of consciousness + +11:39.760 --> 11:43.359 +of what's going on inside my head as it's happening. + +11:43.360 --> 11:47.679 +So if we go down and we take a look at, + +11:47.680 --> 11:53.319 +yeah, so let's go ahead and take a look back at the macro. + +11:53.320 --> 11:56.359 +Yeah, really, this is kind of cheating, + +11:56.360 --> 12:01.119 +because mostly I would consider this to be self-documenting, + +12:01.120 --> 12:07.919 +but we all kind of know that + +12:07.920 --> 12:11.759 +that in and of itself is a slippery slope. + +12:11.760 --> 12:14.799 +That's not great. Because it's like, I could believe + +12:14.800 --> 12:17.719 +that this would be self-documenting + +12:17.720 --> 12:19.959 +if this was a three-liner. + +12:19.960 --> 12:24.719 +It is not. which, you know, also goes to show me + +12:24.720 --> 12:27.759 +that this needs to be splitting into its own topos. + +12:27.760 --> 12:32.239 +I intend to, you know, write a Tapa that's a sort of, + +12:32.240 --> 12:37.079 +that's a sort of like macro builder + +12:37.080 --> 12:40.559 +that automatically, you know, does the gensims for you. + +12:40.560 --> 12:41.959 +Something along the lines of + +12:41.960 --> 12:46.679 +what's the common Lisp macro for that called? + +12:46.680 --> 12:51.879 +It's like, There's some common list faculty + +12:51.880 --> 12:53.919 +that does automatic Jensen binding. + +12:53.920 --> 12:55.479 +I can't quite remember what it's called. + +12:55.480 --> 13:01.559 +A prior version of this talk had my live coding that, + +13:01.560 --> 13:04.319 +but that ended up sort of distracting + +13:04.320 --> 13:07.399 +from what I kind of wanted to nail out and focus on. + +13:07.400 --> 13:12.279 +But really kind of what I do is that, + +13:12.280 --> 13:19.159 +let me see here if I can find some sort of, + +13:19.160 --> 13:26.159 +Yeah, so I have in my research section + +13:26.160 --> 13:36.039 +sort of layout like what the quirks of all this sort of are. + +13:36.040 --> 13:39.839 +I think my development focuses contain + +13:39.840 --> 13:41.479 +a little bit of what could be ultimately + +13:41.480 --> 13:42.959 +considered to be documentation. + +13:42.960 --> 13:46.999 +Yeah, as I'm looking through all of this, + +13:47.000 --> 13:48.279 +I'm kind of realizing that like, + +13:48.280 --> 13:49.319 +you know, yeah, there's stuff + +13:49.320 --> 13:51.319 +that I'm into documentation here, + +13:51.320 --> 13:53.119 +but it's all a little ad hoc. + +13:53.120 --> 13:55.719 +You know, I would, in part, + +13:55.720 --> 13:57.319 +the design of this particular tapa + +13:57.320 --> 13:59.639 +is arguably not currently, + +13:59.640 --> 14:02.319 +but is going to be simple enough such that + +14:02.320 --> 14:04.679 +a doc string is sufficient for documentation. + +14:04.680 --> 14:06.999 +That is not the case currently. + +14:07.000 --> 14:12.279 +All right, next question is, + +14:12.280 --> 14:18.559 +how do you write examples and tests? + +14:18.560 --> 14:24.679 +I think that you mentioned that during the talk, + +14:24.680 --> 14:27.359 +but I couldn't find them on a very quick look + +14:27.360 --> 14:35.239 +at your org file in the Squint repo. + +14:35.240 --> 14:40.519 +My use of the word test was a little bit creative. + +14:40.520 --> 14:42.759 +It's my validation of the code that I've written. + +14:42.760 --> 14:45.479 +I more or less tend to do a, + +14:45.480 --> 14:50.079 +I tend to try and write really small functions + +14:50.080 --> 14:52.039 +and have really aggressive validation + +14:52.040 --> 14:55.799 +by just making sure that, like, you know, + +14:55.800 --> 14:59.919 +when I chain functions in the REPL, + +14:59.920 --> 15:03.199 +each step of them produces results + +15:03.200 --> 15:07.799 +that are really quite immediately and self-verifiably seen. + +15:07.800 --> 15:11.719 +Now, this isn't a great excuse to not use a test suite, + +15:11.720 --> 15:12.879 +but it's gotten me pretty far. + +15:12.880 --> 15:19.199 +What I mean by tests is that in the research sections, + +15:19.200 --> 15:26.279 +what I've done is, so I've created a sort of tested + +15:26.280 --> 15:29.399 +in the sense that I have created + +15:29.400 --> 15:33.759 +a really highly representative case + +15:33.760 --> 15:38.279 +of the way that the program ultimately ought to behave. + +15:38.280 --> 15:43.399 +In doing so, I created a sort of embedded domain language + +15:43.400 --> 15:46.359 +that I have termed animal houses. + +15:46.360 --> 15:50.999 +And Animal Houses is a sort of markup language + +15:51.000 --> 15:54.879 +that has rather simple rules. + +15:54.880 --> 16:00.879 +This here is the entirety of the spec for Animal Houses. + +16:00.880 --> 16:06.559 +Grammar or anything, but like, it is more or less. + +16:06.560 --> 16:08.839 +Breadth of everything that needs to be known + +16:08.840 --> 16:10.519 +about how animal houses works. + +16:10.520 --> 16:14.279 +And I've created animal houses because it is an ideal + +16:14.280 --> 16:18.479 +and incredibly simple circumstance. + +16:18.480 --> 16:22.679 +For how to go about as needed tests. + +16:22.680 --> 16:28.119 +For how squint ultimately ought to work in practice. + +16:28.120 --> 16:30.239 +So when I'm doing research, + +16:30.240 --> 16:34.759 +what I do is I take the text of animal houses, + +16:34.760 --> 16:39.879 +and I will go ahead and insert it into a buffer. + +16:39.880 --> 16:46.599 +And I'll just create an analog buffer. + +16:46.600 --> 16:48.639 +I just called it a woo. + +16:48.640 --> 16:55.959 +And then what I'll do is in my research sections, I will write + +16:55.960 --> 17:01.199 +Like I'll write like step-by-step + +17:01.200 --> 17:07.919 +like instructions on how to go about with a REPL-driven detection + +17:07.920 --> 17:15.119 +using animal houses. So it does squint pass label + +17:15.120 --> 17:16.799 +to width restriction correctly. + +17:16.800 --> 17:20.479 +The tests conducted here indicate that it does not. + +17:20.480 --> 17:25.839 +And then I link to a development focus. + +17:25.840 --> 17:29.959 +that um effectively acts as my bug report + +17:29.960 --> 17:33.999 +or sorry my uh you know my bug for um + +17:34.000 --> 17:37.599 +my bug listing for this particular problem + +17:37.600 --> 17:38.479 +that I've identified + +17:38.480 --> 17:41.439 +I lay out some criteria of how to + +17:41.440 --> 17:44.959 +go about using the REPL to um + +17:44.960 --> 17:47.079 +you know I identify what I believe + +17:47.080 --> 17:49.479 +is sort of like the quarantined area + +17:49.480 --> 17:50.639 +that I found for the bug + +17:50.640 --> 17:56.799 +and then test is that I will go about + +17:56.800 --> 17:59.279 +engaging with narration + +17:59.280 --> 18:03.479 +the step-by-step of how I produce + +18:03.480 --> 18:07.039 +the circumstances around the bug + +18:07.040 --> 18:10.559 +until I ultimately narrow all the way in + +18:10.560 --> 18:14.199 +and arrive at a conclusion. + +18:14.200 --> 18:16.879 +Something's going on with the screen share. + +18:16.880 --> 18:18.799 +I can see your screen but + +18:18.800 --> 18:23.239 +the server cannot see your screen updating. + +18:23.240 --> 18:28.439 +Sorry. Oh, no. Maybe you stop switching. + +18:28.440 --> 18:33.399 +Yeah, and then we just redo it again. Thank you. + +18:33.400 --> 18:36.039 +Yes, absolutely. + +18:36.040 --> 18:39.039 +Thanks to someone who noticed the buffer time, + +18:39.040 --> 18:42.919 +the time in the load line was not updating. + +18:42.920 --> 18:50.079 +Okay, let's try that again. Now it's updating. Gotcha. + +18:50.080 --> 18:54.999 +I hope that wasn't going on for too, too long. + +18:55.000 --> 18:57.279 +Hopefully what I was saying + +18:57.280 --> 19:02.559 +wasn't completely indecipherable. Let me see here. + +19:02.560 --> 19:06.959 +Yeah, this is the sample text for animal houses. + +19:06.960 --> 19:10.839 +This is the spec, not a formal grammar, + +19:10.840 --> 19:12.719 +but it is more or less the whole of the spec + +19:12.720 --> 19:16.399 +that you need to write a parser for animal houses. + +19:16.400 --> 19:19.359 +Most of the tests around Squint involve + +19:19.360 --> 19:23.999 +writing sort of ad hoc parsers for animal houses. + +19:24.000 --> 19:27.199 +Just when I have it in its own buffer, you know, + +19:27.200 --> 19:29.719 +I find more or less it's an excellent way + +19:29.720 --> 19:31.199 +of going about testing + +19:31.200 --> 19:36.359 +in an ad hoc sort of REPL driven manner. + +19:36.360 --> 19:39.879 +that I just sort of write regular + +19:39.880 --> 19:43.799 +that pull out the pieces of the sections of buffer + +19:43.800 --> 19:49.439 +that represent the different fields and data types + +19:49.440 --> 19:51.599 +in association with the animals + +19:51.600 --> 19:54.879 +and the houses to which they belong. + +19:54.880 --> 20:00.319 +And then when I am engaging in research, + +20:00.320 --> 20:03.559 +Um, you know, what, what my research section is, + +20:03.560 --> 20:05.079 +is I'm ultimately just sort of like + +20:05.080 --> 20:06.399 +laying out, like, you know, + +20:06.400 --> 20:10.239 +I'm sort of thinking to myself, is this working right? + +20:10.240 --> 20:11.319 +I feel like, like, I feel like + +20:11.320 --> 20:14.639 +there's something here, something in this area. + +20:14.640 --> 20:16.919 +And I'll, you know, ask myself, well, + +20:16.920 --> 20:20.199 +kind of like, what is it, you know, what am I looking for? + +20:20.200 --> 20:22.519 +And then nail down, how am I going + +20:22.520 --> 20:24.439 +to go about looking for it? + +20:24.440 --> 20:30.559 +The process of working with the REPL + +20:30.560 --> 20:34.319 +to sort of pin down like what exactly is going on + +20:34.320 --> 20:36.119 +and come to a conclusion + +20:36.120 --> 20:44.519 +on completely jumping out of order. + +20:44.520 --> 20:47.799 +Have you experimented in like whisper.el + +20:47.800 --> 20:49.759 +for doing speech to text + +20:49.760 --> 20:51.999 +as you think out loud into your book club? + +20:52.000 --> 20:56.799 +Now I am. I love that idea. That is awesome. + +20:56.800 --> 21:00.039 +Yeah, no, I love that. + +21:00.040 --> 21:04.839 +Even with, I only have a CPU, no GPU on mine, + +21:04.840 --> 21:08.039 +it does capture things a lot faster. + +21:08.040 --> 21:12.199 +And because it actually saves the recording to a WAV, + +21:12.200 --> 21:14.239 +or I guess you can configure it, + +21:14.240 --> 21:16.959 +in case it doesn't recognize something well, + +21:16.960 --> 21:20.799 +you can go back and check it. That's nice. + +21:20.800 --> 21:24.319 +I like that more than a straight speech-text thing. + +21:24.320 --> 21:27.439 +I've been mulling over the idea + +21:27.440 --> 21:30.959 +of having a keystroke save into a background buffer + +21:30.960 --> 21:33.399 +so that even when I'm looking at something else, + +21:33.400 --> 21:37.919 +I can dictate into my equivalent of the book club file. + +21:37.920 --> 21:41.759 +Yes, yes, yes, absolutely. + +21:41.760 --> 21:44.719 +So you can be scrolling through documentation on, like, + +21:44.720 --> 21:48.079 +you can be scrolling through documentation on one screen + +21:48.080 --> 21:49.799 +and you can be musing to yourself about, + +21:49.800 --> 21:52.479 +like, you know, is this supposed to work this way? + +21:52.480 --> 21:57.319 +Like, you know, like, what in terms of, like, + +21:57.320 --> 21:59.799 +you know, like, I see this function. + +21:59.800 --> 22:01.279 +It sounds like it's what I'm looking for. + +22:01.280 --> 22:03.399 +I don't know if the types are quite right. + +22:03.400 --> 22:05.679 +I don't understand. It's named what I'm looking for, + +22:05.680 --> 22:07.319 +but I don't know what it's taking in. + +22:07.320 --> 22:09.439 +You can reason through all of this. + +22:09.440 --> 22:10.599 +You're not even writing into the buffer + +22:10.600 --> 22:14.119 +that you're working with. That's actually so cool. + +22:14.120 --> 22:17.279 +Or you can type into the org capture process + +22:17.280 --> 22:21.039 +so that it can pick up an annotation automatically. + +22:21.040 --> 22:24.719 +Sorry, annotation is the link to the thing, + +22:24.720 --> 22:26.159 +whatever you're looking at. + +22:26.160 --> 22:32.999 +Oh, that's super cool. Yes. No, I actually really love it. + +22:33.000 --> 22:36.119 +I haven't, you know, hooking this all up to Org Capture at all. + +22:36.120 --> 22:58.639 +I actually really love that idea in of itself. Yeah. + +22:58.640 --> 23:01.119 +Or a capture will give you a lot of capture options. + +23:01.120 --> 23:03.159 +Like you can capture to your currently + +23:03.160 --> 23:11.039 +clocked in, uh, heading. So then it just files your note + +23:11.040 --> 23:12.919 +in the right place automatically. + +23:12.920 --> 23:19.199 +Absolutely. I love that. Let me see. + +23:19.200 --> 23:22.279 +I'm actually like writing a note to try that out. + +23:22.280 --> 23:25.159 +I'm definitely going to have to do that. + +23:25.160 --> 23:36.039 +Like the flexibility of that in particular sounds just perfect. + +23:36.040 --> 23:38.239 +I'd like to finish typing noises + +23:38.240 --> 23:39.679 +and then we can ask the next question + +23:39.680 --> 23:41.239 +for which there is one. + +23:41.240 --> 23:45.839 +The question is, what is the largest project + +23:45.840 --> 23:48.479 +in terms of team size you had the chance to consult + +23:48.480 --> 23:51.079 +and introduce the book club tapas concept? + +23:51.080 --> 23:53.199 +And what has been your experiences with these setups, + +23:53.200 --> 23:56.279 +implying larger applications or solutions + +23:56.280 --> 23:57.319 +that company is working on? + +23:57.320 --> 24:01.959 +So yeah, probably the largest application. + +24:01.960 --> 24:05.879 +So I have, It's been interesting. + +24:05.880 --> 24:08.879 +So in regards to this, the largest, + +24:08.880 --> 24:10.119 +I would say two people + +24:10.120 --> 24:12.719 +in a couple of different circumstance. + +24:12.720 --> 24:20.079 +So it's the pair of us working in a startup context. + +24:20.080 --> 24:24.439 +And then, you know, we both have + +24:24.440 --> 24:25.799 +like rather technical backgrounds. + +24:25.800 --> 24:27.479 +We can both more or less, you know, + +24:27.480 --> 24:33.639 +You know, sort of reason about particularly excite, + +24:33.640 --> 24:37.199 +especially as we've been building up top us is that, + +24:37.200 --> 24:39.559 +you know, well, we're both rather technical. + +24:39.560 --> 24:42.679 +You know, I'm definitely software engineering sort of end. + +24:42.680 --> 24:47.359 +And, you know, this partner is more. + +24:47.360 --> 24:50.999 +I mean, he's done all sorts of different engineering, + +24:51.000 --> 24:54.039 +but none of it in a, like, especially software context. + +24:54.040 --> 24:56.559 +So like, you know, but what's been + +24:56.560 --> 24:58.119 +really cool about that is that + +24:58.120 --> 24:59.599 +especially as we've built up top us + +24:59.600 --> 25:00.799 +and made clear distinctions + +25:00.800 --> 25:02.879 +about what they ought to do, you know, + +25:02.880 --> 25:04.599 +he doesn't have a ton of like really, + +25:04.600 --> 25:10.839 +he doesn't like experience like + +25:10.840 --> 25:12.479 +specifically in software engineering, + +25:12.480 --> 25:15.559 +but because we have it all laid out + +25:15.560 --> 25:17.399 +in this really flexible way, + +25:17.400 --> 25:20.199 +he's able to pick up the ball and like, + +25:20.200 --> 25:21.879 +you know, like he's able to + +25:21.880 --> 25:23.119 +take the ball and run with it. + +25:23.120 --> 25:25.279 +because it's all laid out + +25:25.280 --> 25:26.559 +in a way that's so intuitive. + +25:26.560 --> 25:28.719 +Like, you know, he's able to like + +25:28.720 --> 25:31.199 +collaborate with me and like, + +25:31.200 --> 25:33.279 +you know, like, you know, run off these ideas + +25:33.280 --> 25:34.919 +and like really go for it. + +25:34.920 --> 25:37.399 +Like, you know, almost as quickly as I can, + +25:37.400 --> 25:39.319 +just because we've set up a structure + +25:39.320 --> 25:42.159 +where like all of the different pieces + +25:42.160 --> 25:43.719 +have these really intuitive + +25:43.720 --> 25:46.399 +and intrinsic and straightforward roles. + +25:46.400 --> 25:47.839 +And that's, that's something + +25:47.840 --> 25:49.044 +that's really exciting in of itself + +25:49.045 --> 25:50.669 +that I didn't really go over in the talk. + +25:50.670 --> 25:54.359 +Like a managerial perspective, + +25:54.360 --> 25:56.919 +this is actually a really excellent way + +25:56.920 --> 26:01.199 +of understanding the whole context + +26:01.200 --> 26:04.799 +of like what the software stack looks like. + +26:04.800 --> 26:06.439 +Because it's like, you know, + +26:06.440 --> 26:09.119 +it makes it more intuitive for developers for sure, + +26:09.120 --> 26:10.719 +but it makes it more intuitive for everyone. + +26:10.720 --> 26:12.759 +You know, it's on that basis + +26:12.760 --> 26:14.839 +that I can't imagine clients + +26:14.840 --> 26:18.239 +like just a better way at this point. + +26:18.240 --> 26:22.239 +Um, that was that was the other circumstance + +26:22.240 --> 26:25.239 +where I have been working with a partner. + +26:25.240 --> 26:29.399 +This has been with, um, you know, I would be, uh. + +26:29.400 --> 26:31.919 +You know, sort of going back and forth + +26:31.920 --> 26:34.199 +with someone who had hired me. + +26:34.200 --> 26:40.159 +Um, to, uh, like, you know, to work on contract. + +26:40.160 --> 26:42.839 +And I would use this to sort of go + +26:42.840 --> 26:45.199 +over with them about, um. + +26:45.200 --> 26:51.239 +Sort of get a solid idea of scope and function, + +26:51.240 --> 26:57.199 +do pre-planning as we're going into more specifics + +26:57.200 --> 27:01.359 +on what the overall look for the project + +27:01.360 --> 27:03.479 +and how it ought to look + +27:03.480 --> 27:05.679 +and how it all ought to be laid out. + +27:05.680 --> 27:11.519 +So there's a lot of really exciting flexibility there + +27:11.520 --> 27:13.199 +that I think is really cool. + +27:13.200 --> 27:23.679 +People will, of course, be curious + +27:23.680 --> 27:25.919 +about the mechanics of that collaboration. + +27:25.920 --> 27:28.719 +Did you get other people using Emacs in org? + +27:28.720 --> 27:32.359 +Were you using version control? Did you try out CRDT? + +27:32.360 --> 27:33.239 +How did it work? + +27:33.240 --> 27:39.639 +So all of this so far has been over screen share, + +27:39.640 --> 27:43.679 +where I would be stepping through the buffer by hand. + +27:43.680 --> 27:47.839 +I would love to set up some sort of an environment + +27:47.840 --> 27:52.359 +where I could get you know, clients and partners, + +27:52.360 --> 27:53.359 +like, you know, really excited + +27:53.360 --> 27:54.799 +about using Emacs on org. + +27:54.800 --> 27:58.559 +But, you know, it's, it can be a little bit to ask, + +27:58.560 --> 28:00.119 +I would love to see if I can, like, + +28:00.120 --> 28:01.879 +put together some sort of a config that, + +28:01.880 --> 28:04.519 +like, sands off all of this and, you know, + +28:04.520 --> 28:08.079 +makes this this really, you know, you know, + +28:08.080 --> 28:13.759 +like safety-proof sort of intuitive environment + +28:13.760 --> 28:16.599 +just for CRDT in particular. + +28:16.600 --> 28:18.879 +I love the idea of like, you know, + +28:18.880 --> 28:21.479 +sort of like spawning CRDT + +28:21.480 --> 28:24.159 +so that like, you know, the two of us can, + +28:24.160 --> 28:27.559 +you know, type SPAC and ideas + +28:27.560 --> 28:31.239 +and sort of like draft together on, you know, + +28:31.240 --> 28:33.559 +especially like the glue code tapa + +28:33.560 --> 28:35.639 +for a larger software stack. + +28:35.640 --> 28:38.399 +like collaborating on that over CRDT + +28:38.400 --> 28:43.399 +or having folks step through Tapas and, + +28:43.400 --> 28:45.599 +you know, unfold them and like, you know, + +28:45.600 --> 28:46.719 +point to a particular thing. + +28:46.720 --> 28:49.159 +And it's like, you know, like, what's, what's this? + +28:49.160 --> 28:50.119 +What's the clock here? + +28:50.120 --> 28:52.239 +It looks like we're spending a lot of time + +28:52.240 --> 28:54.519 +and I would like to get a little bit clearer + +28:54.520 --> 28:56.319 +of an idea of like what exactly we're doing here. + +28:56.320 --> 29:01.319 +back up a little bit because the stream just disconnected + +29:01.320 --> 29:02.759 +and reconnected from the audio. + +29:02.760 --> 29:06.599 +So, please repeat just the last sentence. + +29:06.600 --> 29:11.959 +Yeah, yeah, for sure. Yeah, so I would like, you know, + +29:11.960 --> 29:18.239 +I love the idea of, yeah, like, you know, collaborating on, + +29:18.240 --> 29:20.519 +especially like on the glue code. + +29:20.520 --> 29:23.839 +tapa for a particular software stack, you know, + +29:23.840 --> 29:26.159 +having the both of us use CRDT + +29:26.160 --> 29:27.719 +to type into it simultaneously, + +29:27.720 --> 29:30.159 +I think that would be super cool. + +29:30.160 --> 29:33.679 +I also really love the idea of, you know, + +29:33.680 --> 29:38.159 +having a client or partner, you know, + +29:38.160 --> 29:41.479 +thumb through individual tapas in the stack. + +29:41.480 --> 29:45.639 +And then like, you know, like, look at and be like, + +29:45.640 --> 29:47.879 +well, we seem to have time on this recently, + +29:47.880 --> 29:51.759 +can you give me like, some clarification on like, + +29:51.760 --> 29:55.519 +you know, what, what this part is and how it's, you know, + +29:55.520 --> 29:57.559 +what it means for the whole + +29:57.560 --> 30:00.799 +and sort of like what, you know, what it represents + +30:00.800 --> 30:02.599 +in terms of how all of this is going to come together. + +30:02.600 --> 30:06.439 +I think that would be super cool. I love the idea of that. + +30:06.440 --> 30:11.679 +I would even consider like, you know, if not Emacs proper, + +30:11.680 --> 30:17.119 +I would love like, you know, maybe a, a web-based org parser. + +30:17.120 --> 30:21.399 +for, you know, even on just a read-only version + +30:21.400 --> 30:25.399 +of the document where, you know, clients and partners, yeah, + +30:25.400 --> 30:26.879 +just sort of thumb through with it + +30:26.880 --> 30:28.199 +and then chat with questions. + +30:28.200 --> 30:34.159 +Make the, you know, screen sharing for, you know, + +30:34.160 --> 30:36.519 +peer programming process + +30:36.520 --> 30:41.599 +just a little bit cleaner, you know, more intuitive on their end. + +30:41.600 --> 30:50.399 +I think that'd be super cool. I love these ideas. + +30:50.400 --> 30:55.002 +All right, theoretically, the big blue button is open. + +30:55.003 --> 30:57.002 +I think we've gotten to the end + +30:57.003 --> 31:00.294 +of the questions on the etherpad. + +31:00.295 --> 31:03.085 +If anyone else would like to join or ask, + +31:03.086 --> 31:04.840 +I'm gonna need a couple of minutes + +31:04.841 --> 31:06.359 +and then I can do closing remarks + +31:06.360 --> 31:07.999 +whenever people are ready. + +31:08.000 --> 31:14.479 +So I will meet now when people figure things out. + +31:14.480 --> 31:22.039 +I would also be super down if, you know, + +31:22.040 --> 31:25.319 +anyone was curious about hearing more + +31:25.320 --> 31:28.999 +about some of the projects + +31:29.000 --> 31:30.799 +that I was kind of rambling + +31:30.800 --> 31:34.679 +at the close of the talk, + +31:34.680 --> 31:36.479 +if people wanted to, you know, + +31:36.480 --> 31:39.359 +hear more about, um, some of my ideas + +31:39.360 --> 31:42.799 +in regards to, um, uh, + +31:42.800 --> 31:45.719 +what am I thinking at home with the, uh, + +31:45.720 --> 31:49.759 +What's it called? + +31:49.760 --> 31:53.479 +Yeah, yeah, just sort of the, you know, + +31:53.480 --> 31:55.439 +some of the funding for passion projects, + +31:55.440 --> 31:58.319 +I would be interested in laying out some of the ideas + +31:58.320 --> 31:59.959 +about how that could work mechanically. + +31:59.960 --> 32:02.559 +And I think that that would be, you know, + +32:02.560 --> 32:04.719 +really cool for the whole ecosystem, + +32:04.720 --> 32:06.719 +because I think that there are definitely, + +32:06.720 --> 32:09.639 +you know, things that we could bang out, you know, + +32:09.640 --> 32:12.919 +for getting kind of all sorts of people on that model. + +32:12.920 --> 32:14.519 +I think that it would be really cool + +32:14.520 --> 32:18.399 +to to having a, you know, funding model + +32:18.400 --> 32:20.239 +for things that are really worth using. + +32:20.240 --> 32:26.519 +um and developing um the other thing is like + +32:26.520 --> 32:28.199 +you know just sort of um yeah + +32:28.200 --> 32:31.559 +just rattling off specifics on things + +32:31.560 --> 32:34.960 +that people could potentially vote for uh on that + +32:34.961 --> 32:53.759 +and in terms of specific might want to work on + +32:53.760 --> 32:56.877 +All right, there's a question from IRC. + +32:56.878 --> 33:01.880 +Sorry, I just got that. Did you address that one already? + +33:01.881 --> 33:07.127 +Let's see. Where is it? + +33:07.128 --> 33:12.359 +I will copy it from IRC. Thank you. + +33:12.360 --> 33:14.319 +Gotcha. Into the past. + +33:14.320 --> 33:27.759 +Perfect, perfect, perfect. + +33:27.760 --> 33:30.679 +Let me read the question out loud so it's in the recording. + +33:30.680 --> 33:33.719 +I guess a major pro is it has less friction + +33:33.720 --> 33:35.759 +as people can do a lot, + +33:35.760 --> 33:39.039 +maybe not everything in book lab tapas files + +33:39.040 --> 33:42.639 +versus having to log into gazillions of different systems, + +33:42.640 --> 33:45.199 +each one of them keeping a portion of the information. + +33:45.200 --> 33:47.359 +Did I get that viewing point right + +33:47.360 --> 33:49.479 +from your elaboration of the collaboration + +33:49.480 --> 33:52.159 +between you and your teammates? + +33:52.160 --> 33:55.439 +Yes. No, that's absolutely right. + +33:55.440 --> 33:57.999 +um because yeah like really + +33:58.000 --> 34:00.519 +my hope is that we can you know + +34:00.520 --> 34:03.239 +there's there's a lot of conflict into that + +34:03.240 --> 34:13.359 +we assume that a lot of um pieces of tooling + +34:13.360 --> 34:14.559 +and the separation between them + +34:14.560 --> 34:16.439 +is really sort of a necessary evil + +34:16.440 --> 34:19.239 +i think that you know having a system + +34:19.240 --> 34:21.519 +where really the complexity + +34:21.520 --> 34:25.719 +of engaging in all of the information + +34:25.720 --> 34:29.119 +relevant to the program. + +34:29.120 --> 34:30.319 +If it's in a format + +34:30.320 --> 34:31.799 +where you can just email it back and forth, + +34:31.800 --> 34:33.199 +break off pieces of it, + +34:33.200 --> 34:35.119 +work with those individually, + +34:35.120 --> 34:38.759 +I think that that's something + +34:38.760 --> 34:40.279 +that's incredibly rewarding. + +34:40.280 --> 34:42.639 +Something that just dawned on me + +34:42.640 --> 34:44.439 +that I wanted to mention + +34:44.440 --> 34:46.959 +that I've been daydreaming about + +34:46.960 --> 34:49.399 +is that in a circumstance + +34:49.400 --> 34:52.079 +where you have multiple developers, + +34:52.080 --> 34:53.879 +like, you know, across a larger team, + +34:53.880 --> 34:57.359 +working on a book club tapas driven project, + +34:57.360 --> 35:02.559 +what you can do is have, you know, + +35:02.560 --> 35:04.559 +a clear, you can lay out your goal, + +35:04.560 --> 35:08.439 +and then start splitting it to tapas from that point, + +35:08.440 --> 35:11.839 +and then assign each teammate their own tapa, + +35:11.840 --> 35:13.279 +which becomes their baby. + +35:13.280 --> 35:15.639 +And I really love the idea + +35:15.640 --> 35:17.479 +of people being able to, you know, + +35:17.480 --> 35:20.319 +have an idea of an interface + +35:20.320 --> 35:21.599 +about how all of these are + +35:21.600 --> 35:22.719 +ultimately come back together, + +35:22.720 --> 35:26.639 +but people have their own like agency + +35:26.640 --> 35:27.919 +over their own code base, + +35:27.920 --> 35:29.119 +despite the fact that they're + +35:29.120 --> 35:30.479 +working in collaboration. + +35:30.480 --> 35:32.719 +I think that it can be incredibly motivating + +35:32.720 --> 35:36.079 +for a team to, you know, have each person + +35:36.080 --> 35:38.039 +in charge of their own project, + +35:38.040 --> 35:39.839 +but of course it's all ultimately + +35:39.840 --> 35:41.319 +going to the same code base. + +35:41.320 --> 35:43.199 +So, you know, I think that, + +35:43.200 --> 35:45.479 +that a pursuit of beauty + +35:45.480 --> 35:48.519 +is this really solid motivator + +35:48.520 --> 35:50.839 +in terms of how people perceive + +35:50.840 --> 35:53.959 +the merits of their efforts + +35:53.960 --> 35:56.479 +and how that lights a fire under them + +35:56.480 --> 35:58.999 +to continue and keep going and dig deep + +35:59.000 --> 36:00.559 +when things get frustrating. + +36:00.560 --> 36:02.799 +When you have a personal stake + +36:02.800 --> 36:03.399 +in your project, + +36:03.400 --> 36:06.479 +I think that that's a really excellent time + +36:06.480 --> 36:08.599 +to really push and move forward on it. + +36:08.600 --> 36:10.559 +And people having ownership + +36:10.560 --> 36:12.719 +over this idea of their specific tapa + +36:12.720 --> 36:14.999 +could be a really cool way to do that + +36:15.000 --> 36:15.759 +in a team setting. + +36:15.760 --> 36:19.999 +But I pivoted off a little bit. + +36:20.000 --> 36:24.559 +So yes, but I absolutely did that. + +36:24.560 --> 36:28.599 +You know, that having a simplistic format + +36:28.600 --> 36:29.999 +for your information + +36:30.000 --> 36:33.319 +is a really solid way to have + +36:33.320 --> 36:36.319 +collaboration be frictionless. + +36:36.320 --> 36:38.719 +You have one source of information + +36:38.720 --> 36:40.799 +and you don't have to drown in your tooling. + +36:40.800 --> 36:51.839 +All right, I think you've addressed + +36:51.840 --> 36:54.919 +all the questions on the etherpad. + +36:54.920 --> 36:56.799 +And as you said, people can email you, + +36:56.800 --> 36:58.439 +even though the website looks like + +36:58.440 --> 37:00.479 +it's still not quite there yet, + +37:00.480 --> 37:03.719 +people can email you or ask questions + +37:03.720 --> 37:05.039 +to the etherpad afterwards. + +37:05.040 --> 37:07.439 +Is there anything else that + +37:07.440 --> 37:11.039 +you'd like to share or shall I wrap up, + +37:11.040 --> 37:13.279 +introduce myself doing the closing remarks + +37:13.280 --> 37:16.959 +and then try to do the closing remarks? + +37:16.960 --> 37:18.839 +Yes, so I have two last thoughts. + +37:18.840 --> 37:21.439 +Yes, no, I did just want to confirm + +37:21.440 --> 37:24.319 +that my email is completely working. + +37:24.320 --> 37:27.199 +If you want to keep up to date + +37:27.200 --> 37:29.399 +with the stuff that I'm working on, + +37:29.400 --> 37:35.239 +please shoot and I will, you know, at your request, + +37:35.240 --> 37:38.119 +I will add you to a mailing list. + +37:38.120 --> 37:40.479 +which will have intermittent updates. + +37:40.480 --> 37:42.919 +I'm not going to send you spam, + +37:42.920 --> 37:47.279 +but it will have updates for what I'm working on, + +37:47.280 --> 37:48.599 +what this all looks like, + +37:48.600 --> 37:52.359 +and just context for the different things + +37:52.360 --> 37:53.119 +that I'm working on. + +37:53.120 --> 37:56.999 +My website will be going up soon enough. + +37:57.000 --> 38:01.119 +I just got a little distracted because I'm like, + +38:01.120 --> 38:05.239 +oh, I'm just gonna spin up a Gux server + +38:05.240 --> 38:06.999 +and I'm gonna make it super cool + +38:07.000 --> 38:09.119 +when really I just need just + +38:09.120 --> 38:12.439 +Debian and Apache real quick, just something. + +38:12.440 --> 38:16.679 +So the website will be going up. It's just not up yet. + +38:16.680 --> 38:19.959 +And the very last thing is that + +38:19.960 --> 38:22.959 +I would really like to thank everyone + +38:22.960 --> 38:27.199 +that helped me to get here. I would like to thank you know, + +38:27.200 --> 38:32.319 +all of my, you know, I would like to thank my fiance. + +38:32.320 --> 38:34.519 +I would like to thank all of my friends. + +38:34.520 --> 38:39.359 +I would like to thank my, you know, + +38:39.360 --> 38:42.119 +my mentor and business partner, Sharon. + +38:42.120 --> 38:45.119 +I would like to thank Tracy, my therapist. + +38:45.120 --> 38:48.279 +I would like to thank my parents. + +38:48.280 --> 38:53.279 +I invited people to come watch this thing, + +38:53.280 --> 38:55.279 +and I would like to thank all of them. + +38:55.280 --> 38:57.919 +I would like to thank everyone + +38:57.920 --> 39:02.439 +who was planning on coming to this event anyway. + +39:02.440 --> 39:06.359 +The Emacs community is incredible, incredibly encouraging, + +39:06.360 --> 39:09.399 +incredibly kind, incredibly smart and talented. + +39:09.400 --> 39:13.719 +Y'all make Emacs what it is, and it is so cool. + +39:13.720 --> 39:15.919 +I would like to thank you, Satya. + +39:15.920 --> 39:19.559 +I would like to thank all of the organizers + +39:19.560 --> 39:20.879 +that made this possible. + +39:20.880 --> 39:25.719 +This thing is the coolest and it was, this was so cool. diff --git a/2025/captions/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--answers.vtt b/2025/captions/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--answers.vtt new file mode 100644 index 00000000..eaf3a04e --- /dev/null +++ b/2025/captions/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--answers.vtt @@ -0,0 +1,1051 @@ +WEBVTT + +00:00:00.000 --> 00:00:04.599 +Recording started. + +00:00:04.600 --> 00:00:07.199 +Great. All right, you are live in Common Lisp on dev. + +00:00:07.200 --> 00:00:14.399 +This is Corwin back and I've got screwlisp with me, + +00:00:14.400 --> 00:00:18.759 +the host of the Lispy Gopher... Climate, I like to say. + +00:00:18.760 --> 00:00:20.319 +It used to be show. + +00:00:20.320 --> 00:00:24.679 +The Lispy Gopher show or the Lispy Gopher Climate. + +00:00:24.680 --> 00:00:31.119 +Thank you so much for joining us. Minutes. + +00:00:31.120 --> 00:00:33.639 +Yeah, we're just, we've got already + +00:00:33.640 --> 00:00:35.359 +a whole pad full of questions + +00:00:35.360 --> 00:00:38.039 +and we have a unique opportunity if you, + +00:00:38.040 --> 00:00:39.159 +if you check out the etherpad, + +00:00:39.160 --> 00:00:42.239 +you'll see some instructions there to join on Lambda Moo, + +00:00:42.240 --> 00:00:43.039 +which screwless, + +00:00:43.040 --> 00:00:46.319 +but I'm hoping you will talk to us a little bit about that + +00:00:46.320 --> 00:00:48.879 +as well as your, your very cool project. + +00:00:48.880 --> 00:00:52.839 +Oh yeah, so I main on Lambda, as Corwin is saying. + +00:00:52.840 --> 00:00:55.639 +And Corwin was pretending not to know the name of the show, + +00:00:55.640 --> 00:00:59.399 +but he has in fact appeared on an episode of it + +00:00:59.400 --> 00:01:00.879 +in January this year, I think. + +00:01:00.880 --> 00:01:04.919 +So he was just pretending there. I'm screwless of this. + +00:01:04.920 --> 00:01:06.919 +What's happening? + +00:01:06.920 --> 00:01:13.439 +10 minutes or less before we started going live here, + +00:01:13.440 --> 00:01:16.159 +they were like, remember how you said you fixed that bug? + +00:01:16.160 --> 00:01:21.479 +And then I had to quickly recapitulate my whole talk. + +00:01:21.480 --> 00:01:23.719 +And I introduced some new bugs while that was happening. + +00:01:23.720 --> 00:01:26.199 +But let's go through some of these questions. + +00:01:26.200 --> 00:01:29.479 +We're all hanging out in LambdaMoo. + +00:01:29.480 --> 00:01:37.639 +So if you mx telnet over to lambda.moo.mud.org port 8888. + +00:01:37.640 --> 00:01:40.279 +This is where we're talking at the moment + +00:01:40.280 --> 00:01:45.399 +with people like Ed Swarthout, DM, and yduJ, + +00:01:45.400 --> 00:01:47.559 +who I gossiped about in the show, + +00:01:47.560 --> 00:01:50.519 +and Sasha, and people were there a little bit as well. + +00:01:50.520 --> 00:01:53.359 +I'm just going to read some of the questions + +00:01:53.360 --> 00:01:59.759 +that GGXX in Lambdomoo has been relaying to me there, + +00:01:59.760 --> 00:02:08.239 +though I hear that there are a whole bunch of them now. + +00:02:08.240 --> 00:02:09.759 +Someone asks on the Etherpad, + +00:02:09.760 --> 00:02:13.199 +what do you mean when I say the agent is running slowly? + +00:02:13.200 --> 00:02:17.119 +Yeah, so if you saw in the talk, + +00:02:17.120 --> 00:02:19.639 +I was having the agent only attempt + +00:02:19.640 --> 00:02:21.959 +to act every 20 seconds. + +00:02:21.960 --> 00:02:25.399 +This is what I mean by the agent is acting slowly. + +00:02:25.400 --> 00:02:26.599 +So this is quite different + +00:02:26.600 --> 00:02:28.599 +to what people might expect within AI + +00:02:28.600 --> 00:02:30.679 +if people are talking about like the graphics card ones + +00:02:30.680 --> 00:02:33.599 +where you're trying crunch as fast as you can + +00:02:33.600 --> 00:02:36.399 +for as few seconds as you can, and then you stop. + +00:02:36.400 --> 00:02:39.399 +In contrast, my agent is just trying to do + +00:02:39.400 --> 00:02:42.279 +a simple action every 20 seconds. + +00:02:42.280 --> 00:02:45.119 +But if you keep going continuously + +00:02:45.120 --> 00:02:47.919 +at a simple action every 20 seconds + +00:02:47.920 --> 00:02:49.959 +without sleeping for days, + +00:02:49.960 --> 00:02:51.239 +it still adds up to a lot. + +00:02:51.240 --> 00:02:57.039 +So that was the significance of it running slowly. + +00:02:57.040 --> 00:03:00.639 +What else are people saying? TGXX to screwtape. + +00:03:00.640 --> 00:03:02.519 +Someone asked on the Etherpad, + +00:03:02.520 --> 00:03:04.759 +do you think that it would be too hard + +00:03:04.760 --> 00:03:06.439 +to add a second way + +00:03:06.440 --> 00:03:09.959 +to send commands from Common Lisps to Emacs? + +00:03:09.960 --> 00:03:12.919 +No, I put three of them together + +00:03:12.920 --> 00:03:14.559 +and I didn't talk about it + +00:03:14.560 --> 00:03:17.239 +because this is a kind of affected choice. + +00:03:17.240 --> 00:03:20.039 +Right now you're using Emacs client for that. + +00:03:20.040 --> 00:03:22.039 +That is the simplest way to implement. + +00:03:22.040 --> 00:03:24.039 +How about using the slime protocol? + +00:03:24.040 --> 00:03:28.799 +Elsewhere, I am just using the SLIME protocol. + +00:03:28.800 --> 00:03:31.639 +So, in everyone that's SLIME-connected. + +00:03:31.640 --> 00:03:33.399 +So, earlier on, you saw somebody + +00:03:33.400 --> 00:03:35.399 +running a SWANK server in Python. + +00:03:35.400 --> 00:03:38.439 +Normally, you run a SWANK server in Common Lisp. + +00:03:38.440 --> 00:03:41.599 +And a SWANK server is what Emacs SLIME, + +00:03:41.600 --> 00:03:45.039 +Superior Lisp Interaction Mode for Emacs, connects to. + +00:03:45.040 --> 00:03:49.039 +And then Swank comes with Swank Eval and Emacs. + +00:03:49.040 --> 00:03:50.959 +So after you've been slime connected, + +00:03:50.960 --> 00:03:55.039 +you can trivially send Emacs Lisp forms to Emacs + +00:03:55.040 --> 00:03:57.319 +using Swank Eval and Emacs. + +00:03:57.320 --> 00:04:00.679 +The reason that I chose to use + +00:04:00.680 --> 00:04:05.199 +Emacs server and Emacs client + +00:04:05.200 --> 00:04:14.039 +was that I was letting the Leonardo agent + +00:04:14.040 --> 00:04:18.799 +talk to Emacs using Swank, Eval, and Emacs. + +00:04:18.800 --> 00:04:21.599 +And I wanted my ECL image to be using + +00:04:21.600 --> 00:04:23.119 +a different notion of a server. + +00:04:23.120 --> 00:04:27.039 +So the ECL image, just because + +00:04:27.040 --> 00:04:28.959 +I chose to do it like this, + +00:04:28.960 --> 00:04:33.279 +is using Emacs client and Emacs server going via, + +00:04:33.280 --> 00:04:35.239 +I guess it's executing a program + +00:04:35.240 --> 00:04:36.439 +rather than using a shell. + +00:04:36.440 --> 00:04:40.639 +And Yeah, I was letting somebody else + +00:04:40.640 --> 00:04:42.439 +use Slime eval in Emacs. + +00:04:42.440 --> 00:04:45.039 +It would have been simpler + +00:04:45.040 --> 00:04:48.319 +if everybody just used Slime eval in Emacs. + +00:04:48.320 --> 00:04:50.919 +I thought I was getting something + +00:04:50.920 --> 00:04:56.079 +out of adding Emacs server into the mix. + +00:04:56.080 --> 00:04:57.319 +What's somebody saying? + +00:04:57.320 --> 00:05:00.319 +Idaj is weirded out by doing get foo bar + +00:05:00.320 --> 00:05:02.439 +instead of get foo quote bar. + +00:05:02.440 --> 00:05:04.359 +Yeah, that was Sandewall's choice. + +00:05:04.360 --> 00:05:06.679 +He was trying to pitch Lisp + +00:05:06.680 --> 00:05:09.159 +to logic notation people, + +00:05:09.160 --> 00:05:12.319 +so he lets people put commas in + +00:05:12.320 --> 00:05:15.559 +and then ignores them in certain expressions, + +00:05:15.560 --> 00:05:18.679 +and he doesn't have these Lisp-style quotes. + +00:05:18.680 --> 00:05:22.439 +Idaj is obviously from like Schlumberger + +00:05:22.440 --> 00:05:24.879 +and wherever else she was at in + +00:05:24.880 --> 00:05:28.039 +in the kind of list of traditions. + +00:05:28.040 --> 00:05:30.359 +Full of Spain is saying good observation. + +00:05:30.360 --> 00:05:33.839 +Yidaj is shocked that she's being mentioned. + +00:05:33.840 --> 00:05:40.519 +Interestingly Nosredna yduJ capitalizes Nosredna at the front, + +00:05:40.520 --> 00:05:45.079 +but she capitalizes yduJ at the back, just for clarity. + +00:05:45.080 --> 00:05:49.199 +You should read her Stanford page or her recipe site + +00:05:49.200 --> 00:05:57.999 +or anything if you're not clear on who yduJ is. + +00:05:58.000 --> 00:06:00.679 +It's actually you're looking for the word eclipsed. + +00:06:00.680 --> 00:06:03.559 +I think she eclipsed a dodge, + +00:06:03.560 --> 00:06:06.119 +I think is the English phrase that you're looking for. + +00:06:06.120 --> 00:06:08.839 +He does just saying she would not. + +00:06:08.840 --> 00:06:10.519 +She's no matter what I say + +00:06:10.520 --> 00:06:13.039 +she's not going to hug my software agent + +00:06:13.040 --> 00:06:20.719 +like she would hug a grandchild eyes me warily. + +00:06:20.720 --> 00:06:22.119 +And Sasha is not going to. + +00:06:22.120 --> 00:06:24.759 +Totally not training a general intelligence + +00:06:24.760 --> 00:06:26.199 +who requires a lot of data + +00:06:26.200 --> 00:06:28.959 +and also cuddles. Okay, so everybody who has children + +00:06:28.960 --> 00:06:31.599 +is disagreeing with me quoting Sandewall, + +00:06:31.600 --> 00:06:33.319 +who did have children and grandchildren, + +00:06:33.320 --> 00:06:36.119 +saying that he wanted machine intelligences + +00:06:36.120 --> 00:06:37.759 +to be like his grandchild. + +00:06:37.760 --> 00:06:40.839 +GGXX is saying somebody on Etherpad + +00:06:40.840 --> 00:06:43.119 +is asking what the Leonardo system is. + +00:06:43.120 --> 00:06:46.599 +Sandewall is a LISP scientist + +00:06:46.600 --> 00:06:51.159 +from the 60s, 70s, 80s, 90s, 90s, 10s. + +00:06:51.160 --> 00:06:55.599 +with things like bronze statues of him in Sweden. + +00:06:55.600 --> 00:06:59.599 +People outside of the Swedish-speaking sphere of science + +00:06:59.600 --> 00:07:01.119 +are less familiar with him. + +00:07:01.120 --> 00:07:04.119 +I guess he famously taught Robert Strand + +00:07:04.120 --> 00:07:08.319 +how to program in LISP, if that places him for you. + +00:07:08.320 --> 00:07:10.199 +What else did he do? + +00:07:10.200 --> 00:07:15.599 +Yeah, so he was on a kind of long trajectory of AI, + +00:07:15.600 --> 00:07:18.039 +which would now be called good old-fashioned AI. + +00:07:18.040 --> 00:07:22.639 +And he was coming from the situation calculus, + +00:07:22.640 --> 00:07:26.559 +then activity calculus kind of direction, + +00:07:26.560 --> 00:07:28.759 +which are extended first order logics + +00:07:28.760 --> 00:07:31.559 +for reasoning about change over time. + +00:07:31.560 --> 00:07:35.759 +And his last program he contributed to the world was this. + +00:07:35.760 --> 00:07:39.319 +From 2005 to 2014, he worked on + +00:07:39.320 --> 00:07:43.479 +this Leonardo system for his master's program. + +00:07:43.480 --> 00:07:45.279 +He was teaching at that time + +00:07:45.280 --> 00:07:48.519 +at the University of Linköping in Sweden. + +00:07:48.520 --> 00:07:53.199 +And... Then he just kind of gradually faded from view + +00:07:53.200 --> 00:07:55.519 +while he wrote his unpublished books + +00:07:55.520 --> 00:08:01.639 +on reasoning and change, I guess, between 2010 and 2014. + +00:08:01.640 --> 00:08:03.959 +And then I just kind of noticed this eventually. + +00:08:03.960 --> 00:08:07.839 +And I brought that software back. And that's what this is. + +00:08:07.840 --> 00:08:09.999 +And that's why it kind of weirdly exists. + +00:08:10.000 --> 00:08:15.479 +Welcome to Khaki Guest. Magenta Guest is gone. + +00:08:15.480 --> 00:08:16.759 +Pink Guest is gone. + +00:08:16.760 --> 00:08:23.639 +Blue Guest has arrived. Great. Somebody order six. + +00:08:23.640 --> 00:08:26.239 +Everybody orders sake from Emily. + +00:08:26.240 --> 00:08:29.599 +We're hanging out in Jay Lamott's sushi bar in Lambda, + +00:08:29.600 --> 00:08:31.639 +which is on the model railway + +00:08:31.640 --> 00:08:35.599 +on the table in the second guest bedroom in Lambda House + +00:08:35.600 --> 00:08:36.639 +where we're all hanging out. + +00:08:36.640 --> 00:08:43.559 +Oh, I think GGXX is ordering people up things. + +00:08:43.560 --> 00:08:46.399 +You know, just teach people about this. + +00:08:46.400 --> 00:08:52.279 +All right, I'm going to try looking + +00:08:52.280 --> 00:08:55.519 +at the etherpad manually. Sorry, I can read you. + +00:08:55.520 --> 00:08:57.319 +So the next question you have, + +00:08:57.320 --> 00:09:00.479 +somebody says, I found Eduardo's blog. + +00:09:00.480 --> 00:09:03.199 +OK, you just got through that. + +00:09:03.200 --> 00:09:06.199 +And then we were also, a question you answered + +00:09:06.200 --> 00:09:10.799 +is the other one that I see here, just about Lambda Moo. + +00:09:10.800 --> 00:09:14.199 +And I think you started to answer in the pad. + +00:09:14.200 --> 00:09:16.079 +But if you want to kind of read that out. + +00:09:16.080 --> 00:09:19.119 +I definitely haven't written anything in the pad. + +00:09:19.120 --> 00:09:23.719 +I'm going to just talk to Khaki Guest in Lambda. + +00:09:23.720 --> 00:09:25.879 +Sure, so why don't you do a little bit + +00:09:25.880 --> 00:09:27.279 +and just read this question. + +00:09:27.280 --> 00:09:31.279 +The question was, what is LambdaMOO and how do we use it? + +00:09:31.280 --> 00:09:33.399 +LambdaMOO is a module introduction, + +00:09:33.400 --> 00:09:35.319 +and you can tell that to it. + +00:09:35.320 --> 00:09:36.799 +There's instructions in the pad. + +00:09:36.800 --> 00:09:40.039 +I'll go ahead and drop that in the gen channel + +00:09:40.040 --> 00:09:42.599 +or in the dev channel chat right now. + +00:09:42.600 --> 00:09:46.919 +And I see it is already in there. + +00:09:46.920 --> 00:09:49.559 +But down at the bottom + +00:09:49.560 --> 00:09:53.439 +of the discussion links feedback area, + +00:09:53.440 --> 00:09:55.679 +you'll see a set of detailed instructions + +00:09:55.680 --> 00:09:58.519 +that ScrewList has provided us to get in there. + +00:09:58.520 --> 00:10:01.159 +I think that was actually GGXX + +00:10:01.160 --> 00:10:03.959 +who might have written that for us. + +00:10:03.960 --> 00:10:08.039 +Several changes evolved in the last 10 minutes + +00:10:08.040 --> 00:10:09.679 +before we went live here. + +00:10:09.680 --> 00:10:12.839 +But yeah, so LambdaMoo is + +00:10:12.840 --> 00:10:14.879 +the world's longest-running virtual reality. + +00:10:14.880 --> 00:10:19.119 +I guess it started in the end of October in 1990 + +00:10:19.120 --> 00:10:21.759 +and has run continuously to today. + +00:10:21.760 --> 00:10:24.599 +You can get there, ideally, with a MUD client. + +00:10:24.600 --> 00:10:27.479 +Technically, it's a MUD, comma, object-oriented. + +00:10:27.480 --> 00:10:30.199 +This is just where I hang out some degree of the week. + +00:10:30.200 --> 00:10:36.799 +yduJ is the wizard yduJ, or sorry, + +00:10:36.800 --> 00:10:40.919 +yduJ is also the wizard Nosredna of Lambdomoo, for example. + +00:10:40.920 --> 00:10:44.479 +It kind of fits into quite less history. + +00:10:44.480 --> 00:10:47.679 +I guess Pavel Curtis would have started in 1990 + +00:10:47.680 --> 00:10:52.799 +for Xerox PARC, originally. Just to go to what Khaki Guest + +00:10:52.800 --> 00:10:54.839 +has been continuing to talk about. + +00:10:54.840 --> 00:10:57.799 +Welcome to Brown, Guest, as well, I guess. + +00:10:57.800 --> 00:11:03.399 +Aki Guest says, to Screwtape, + +00:11:03.400 --> 00:11:04.959 +it seems like you're trying to build + +00:11:04.960 --> 00:11:07.279 +a more restrictive Turing test + +00:11:07.280 --> 00:11:11.159 +using the input output logs of an Emacs conversation. + +00:11:11.160 --> 00:11:12.159 +Is that accurate? + +00:11:12.160 --> 00:11:15.079 +Can you explain this idea of if it is intelligent, + +00:11:15.080 --> 00:11:17.239 +I'd like it to be like me? + +00:11:17.240 --> 00:11:20.039 +Otherwise, I don't know what intelligence is. + +00:11:20.040 --> 00:11:21.959 +Doesn't that seem a little egocentric? + +00:11:21.960 --> 00:11:25.399 +Is that a joke or a genuine definition of intelligence? + +00:11:25.400 --> 00:11:27.439 +Why do you think the link between + +00:11:27.440 --> 00:11:30.519 +input-output of Emacs human input-output + +00:11:30.520 --> 00:11:33.919 +is stronger than other forms of Turing tests? + +00:11:33.920 --> 00:11:36.319 +So I'm going to misread Turing tests + +00:11:36.320 --> 00:11:37.839 +for a moment as Turing-complete. + +00:11:37.840 --> 00:11:40.279 +And Sandewall's system is very specifically + +00:11:40.280 --> 00:11:45.519 +Our first-order logic, if we don't extend it, + +00:11:45.520 --> 00:11:49.239 +is not Turing-complete, for starters. + +00:11:49.240 --> 00:11:51.959 +And things like situation calculus, + +00:11:51.960 --> 00:11:53.839 +McCarthy's situation calculus, + +00:11:53.840 --> 00:11:55.239 +which I guess is prior to + +00:11:55.240 --> 00:11:58.439 +Sandewall's Leonardo's calculus, + +00:11:58.440 --> 00:12:02.319 +are extended first-order logics + +00:12:02.320 --> 00:12:03.959 +for reasoning about change. + +00:12:03.960 --> 00:12:05.519 +And so they're slightly + +00:12:05.520 --> 00:12:07.639 +more restricted than conventional, + +00:12:07.640 --> 00:12:10.239 +than general-purpose computer programs. + +00:12:10.240 --> 00:12:14.639 +And then what you're saying is, if it's intelligent, + +00:12:14.640 --> 00:12:16.119 +I'd expect it to be like me. + +00:12:16.120 --> 00:12:19.799 +I'm really just paraphrasing what Sandewall says about, + +00:12:19.800 --> 00:12:23.319 +well, he thinks his grandchildren are intelligent. + +00:12:23.320 --> 00:12:24.759 +So if a computer is intelligent, + +00:12:24.760 --> 00:12:26.239 +he thinks the computer will have to be + +00:12:26.240 --> 00:12:28.039 +similar to his grandchildren. + +00:12:28.040 --> 00:12:32.279 +This is in contrast to people + +00:12:32.280 --> 00:12:33.839 +who are using the terms AI + +00:12:33.840 --> 00:12:37.319 +to mean something a graphics card does + +00:12:37.320 --> 00:12:41.319 +with extremely specialized bulk matrix multiplication + +00:12:41.320 --> 00:12:43.919 +for a very short period of time + +00:12:43.920 --> 00:12:47.519 +on absolutely gigantic electrical + +00:12:47.520 --> 00:12:50.159 +and kind of memory and computing resources, + +00:12:50.160 --> 00:12:51.519 +which doesn't look at all like what + +00:12:51.520 --> 00:12:54.999 +Sandewall's grandchildren were doing. + +00:12:55.000 --> 00:12:56.399 +And this is why I'm kind of saying, + +00:12:56.400 --> 00:12:57.559 +well, if I have an agent, + +00:12:57.560 --> 00:13:00.839 +And my agent is quite simple. + +00:13:00.840 --> 00:13:04.519 +It uses Emacs server and Emacs client + +00:13:04.520 --> 00:13:07.559 +to send lines of basically extended + +00:13:07.560 --> 00:13:09.199 +first-order logic to the agent, + +00:13:09.200 --> 00:13:12.959 +and the agent then takes a kind of + +00:13:12.960 --> 00:13:15.399 +first-order logic-y action. + +00:13:15.400 --> 00:13:21.079 +And I was making the point + +00:13:21.080 --> 00:13:23.479 +that this looks more like me computing + +00:13:23.480 --> 00:13:27.519 +using of REPL-driven development like EEV, + +00:13:27.520 --> 00:13:30.479 +where in EEV I have basically a log + +00:13:30.480 --> 00:13:32.119 +of something I've previously done, + +00:13:32.120 --> 00:13:34.239 +and I can tap F8 and execute + +00:13:34.240 --> 00:13:36.479 +line after line after line. + +00:13:36.480 --> 00:13:38.839 +And I think if I see an agent doing that, + +00:13:38.840 --> 00:13:40.399 +I can clearly understand + +00:13:40.400 --> 00:13:43.639 +and relate to what the agent is doing. + +00:13:43.640 --> 00:13:45.519 +And so I'm not classifying + +00:13:45.520 --> 00:13:49.399 +Like, I never do gigabytes and gigabytes + +00:13:49.400 --> 00:13:52.279 +and gigabytes of matrix multiplications, + +00:13:52.280 --> 00:13:54.959 +so I can't relate to this as an idea of intelligence. + +00:13:54.960 --> 00:13:57.919 +Sorry. Welcome to GreenGuest teleporting in. + +00:13:57.920 --> 00:14:02.759 +FullSpain is saying, no one truly knows what intelligence is. + +00:14:02.760 --> 00:14:10.759 +All right. I kind of wished that this was working, + +00:14:10.760 --> 00:14:13.199 +because just before we went live, they said, + +00:14:13.200 --> 00:14:15.919 +hey, just have your example working quickly. + +00:14:15.920 --> 00:14:18.999 +Then I downloaded my example from my blog, + +00:14:19.000 --> 00:14:22.479 +and I'd double escaped some characters + +00:14:22.480 --> 00:14:26.799 +so that the escaped characters would show up in my blog. + +00:14:26.800 --> 00:14:29.759 +And I caused a lot of rampant chaos. + +00:14:29.760 --> 00:14:32.319 +If anyone else has a question. + +00:14:32.320 --> 00:14:40.759 +Guest has said, but. So. Great. + +00:14:40.760 --> 00:14:47.279 +I guess I could go back and try it. + +00:14:47.280 --> 00:14:50.399 +I probably should have jumped in a couple of minutes ago + +00:14:50.400 --> 00:14:53.279 +and just said the live stream did cut over, + +00:14:53.280 --> 00:14:54.919 +but we're continuing to record this + +00:14:54.920 --> 00:14:57.119 +and the whole session will be published + +00:14:57.120 --> 00:14:58.399 +along with the video on the website. + +00:14:58.400 --> 00:15:04.079 +Oh, well. Sorry about that. I tried that. + +00:15:04.080 --> 00:15:06.799 +I just lost a couple of minutes there + +00:15:06.800 --> 00:15:08.879 +and failed to give you the smooth morning. + +00:15:08.880 --> 00:15:14.199 +Oh, no, no. That's fine. I was just kind of rambling. + +00:15:14.200 --> 00:15:16.959 +Listen. Don't download a web page + +00:15:16.960 --> 00:15:19.799 +and try and convert it to an org file on the fly + +00:15:19.800 --> 00:15:21.959 +and just before you go live somewhere + +00:15:21.960 --> 00:15:23.319 +is the kind of moral here. + +00:15:23.320 --> 00:15:27.799 +You know, just saying that's pretty graphics, but it's long. + +00:15:27.800 --> 00:15:29.399 +She's dropping. See you later. Yeah. + +00:15:29.400 --> 00:15:31.239 +Let's, let's, let's all get out of here. + +00:15:31.240 --> 00:15:32.399 +Basically. I'm going to go see + +00:15:32.400 --> 00:15:36.159 +if I can look at this ether pad one last time + +00:15:36.160 --> 00:15:37.639 +and see if there are any questions + +00:15:37.640 --> 00:15:39.359 +just to not leave anyone else. + +00:15:39.360 --> 00:15:43.559 +Anyone out much to their chagrin possibly. + +00:15:43.560 --> 00:15:47.639 +Um, how to connect to LambdaMu, seems great. + +00:15:47.640 --> 00:15:52.159 +Oh, interesting guides, somebody wrote that. + +00:15:52.160 --> 00:15:55.439 +What do you mean by slowly? Yeah, so I'm saying taking + +00:15:55.440 --> 00:15:57.279 +a simple action every 20 seconds, + +00:15:57.280 --> 00:15:59.079 +this still adds up to a lot over time. + +00:15:59.080 --> 00:16:01.599 +Question, do you think that it would be, + +00:16:01.600 --> 00:16:04.079 +yeah, well, if you've used Slime, + +00:16:04.080 --> 00:16:05.959 +and hence you're using Swank, + +00:16:05.960 --> 00:16:07.239 +you can just Swank, Eval, + +00:16:07.240 --> 00:16:08.839 +and Emacs would be the more trivial way. + +00:16:08.840 --> 00:16:10.719 +I felt like I was getting something bonus + +00:16:10.720 --> 00:16:13.959 +by using, um, Emacs server. + +00:16:13.960 --> 00:16:17.359 +Somebody has a link to Eduardo's blog, + +00:16:17.360 --> 00:16:19.839 +which I think has been misspelled. + +00:16:19.840 --> 00:16:23.079 +It should be angkwu with no dot there, + +00:16:23.080 --> 00:16:27.199 +dot net, sharp sign EEV. + +00:16:27.200 --> 00:16:31.519 +So, Eduardo is the author of EEV mode. + +00:16:31.520 --> 00:16:33.079 +I found Eduardo's thing. + +00:16:33.080 --> 00:16:36.199 +Oh, this was the question, what is the Leonardo system, + +00:16:36.200 --> 00:16:38.479 +which I just answered. + +00:16:38.480 --> 00:16:42.959 +What is LambdaMOO? How do you use it? + +00:16:42.960 --> 00:16:45.559 +It's a mud, comma, object-oriented. + +00:16:45.560 --> 00:16:49.319 +So it's a multi-user dungeon kind of classical video game, + +00:16:49.320 --> 00:16:52.799 +still popular, but with extended object-oriented facilities. + +00:16:52.800 --> 00:16:57.359 +Companies like Harlequin, which yduJ + +00:16:57.360 --> 00:17:00.319 +and Ken Pitman, for example, were at, I think, in the 90s. + +00:17:00.320 --> 00:17:05.319 +Instead of modernly, you'd have Slack web apps or something. + +00:17:05.320 --> 00:17:08.079 +People used to have these MOOs and things. + +00:17:08.080 --> 00:17:15.519 +Okay, the music that's replaced me is evidently quite nice. + +00:17:15.520 --> 00:17:22.119 +Yes, get the hints. Thanks for being here. + +00:17:22.120 --> 00:17:29.359 +Well, let's continue this diatribe + +00:17:29.360 --> 00:17:33.639 +possibly on the Mastodon or something like that. + +00:17:33.640 --> 00:17:35.999 +We'll do some kind of... + +00:17:36.000 --> 00:17:40.519 +Let me thank you one more time for preparing this talk + +00:17:40.520 --> 00:17:44.359 +and for all that you do for the Free Software community + +00:17:44.360 --> 00:17:47.879 +and especially for Emacs. particularly appreciate you. + +00:17:47.880 --> 00:17:50.439 +Thank you for all you do for the Free Software community + +00:17:50.440 --> 00:17:53.319 +and particularly Emacs, Corwin and Bruce. + +00:17:53.320 --> 00:17:56.079 +I'm still waiting for a working demo of Dungeon Mode. + +00:17:56.080 --> 00:17:58.559 +My joke that I was setting up and never had a chance for + +00:17:58.560 --> 00:17:59.959 +was that I was going to say + +00:17:59.960 --> 00:18:03.599 +I wanted my agent to be using Dungeon Mode in Emacs. + +00:18:03.600 --> 00:18:05.999 +How's that? Okay, well, we'll work on that. + +00:18:06.000 --> 00:18:10.119 +That could be a project for the two of us in our copious free time. + +00:18:10.120 --> 00:18:13.559 +Definitely. Yeah. Okay. I'll let you go. + +00:18:13.560 --> 00:18:14.679 +I'm gonna abandon this stream. + +00:18:14.680 --> 00:18:17.039 +All right. I'll end out the recording + +00:18:17.040 --> 00:18:24.560 +and thanks to all who participated. Okay. See you later. diff --git a/2025/captions/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--main.vtt b/2025/captions/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--main.vtt new file mode 100644 index 00000000..49bf10f3 --- /dev/null +++ b/2025/captions/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--main.vtt @@ -0,0 +1,1426 @@ +WEBVTT + +00:00:00.000 --> 00:00:02.319 +Nice to have you here on this talk. + +00:00:02.320 --> 00:00:04.519 +This is my second talk this year. + +00:00:04.520 --> 00:00:09.919 +First one was on things that I've done to Org Mode. + +00:00:09.920 --> 00:00:13.799 +Just as a side note, this presentation + +00:00:13.800 --> 00:00:16.279 +that I'm going to share with you + +00:00:16.280 --> 00:00:19.879 +about my work on Corfu and Jasnipit. + +00:00:19.880 --> 00:00:21.839 +I've prepared that on Org Mode + +00:00:21.840 --> 00:00:25.079 +and exported that with a work I've been doing + +00:00:25.080 --> 00:00:26.839 +to the latest exporter. + +00:00:26.840 --> 00:00:31.959 +Anyhow, what is my talk going to be about? + +00:00:31.960 --> 00:00:34.599 +It's going to be about Corfu and Yasnippet, + +00:00:34.600 --> 00:00:36.599 +which I thought would be difficult to integrate, + +00:00:36.600 --> 00:00:42.799 +and it was much easier than I thought. + +00:00:42.800 --> 00:00:46.959 +So just a short outline, my motivation, + +00:00:46.960 --> 00:00:49.959 +step-by-step of the things that I've been investigating, + +00:00:49.960 --> 00:00:55.919 +and some takeaways. So my motivation, yeah, snippet is old. + +00:00:55.920 --> 00:00:59.599 +So I've tried another, I've tried Temple + +00:00:59.600 --> 00:01:02.519 +and other template management packages, + +00:01:02.520 --> 00:01:08.159 +but it was really not my cup of tea. So mainly why? + +00:01:08.160 --> 00:01:10.919 +Mainly because I have a nice base of VR snippets + +00:01:10.920 --> 00:01:14.479 +I have generated for my needs. + +00:01:14.480 --> 00:01:17.799 +So it's not that I've been importing snippets + +00:01:17.800 --> 00:01:20.359 +from packages which are out there. + +00:01:20.360 --> 00:01:23.599 +No, they are my snippets. I'm used to them. + +00:01:23.600 --> 00:01:26.559 +And of course, migration counts as a cost. + +00:01:26.560 --> 00:01:32.639 +I've been using Company as my completion point function GUI for years, + +00:01:32.640 --> 00:01:38.919 +but with the time coming in features and so on it + +00:01:38.920 --> 00:01:44.359 +was it's was not as easy to set up as I wanted for my needs + +00:01:44.360 --> 00:01:53.119 +so I had been working I've been playing with Eaglet already some time for a language server protocol + +00:01:53.120 --> 00:01:57.039 +I had read about how easy it was to integrate with Corfu + +00:01:57.040 --> 00:02:02.839 +which was really nice and I had given it a try, + +00:02:02.840 --> 00:02:06.439 +but I'm using both graphical user interface mode in Emacs + +00:02:06.440 --> 00:02:07.839 +and text mode, + +00:02:07.840 --> 00:02:10.319 +and for text mode you need a corporate terminal, + +00:02:10.320 --> 00:02:16.399 +which was yet another package that I don't download. + +00:02:16.400 --> 00:02:21.479 +Well, and I didn't really find a quick way + +00:02:21.480 --> 00:02:24.479 +to get rid of company to get just snippet. + +00:02:24.480 --> 00:02:26.679 +So at the end, when, at the beginning, + +00:02:26.680 --> 00:02:33.959 +when I was using Corfu and Eglot, I also needed to load a company + +00:02:33.960 --> 00:02:35.759 +to have a snippet support, + +00:02:35.760 --> 00:02:37.639 +which was really like sort of weird + +00:02:37.640 --> 00:02:40.559 +because I wanted to get rid of, of your snippet. + +00:02:40.560 --> 00:02:47.199 +Anyhow, while I try now, I'm following the mailing list, + +00:02:47.200 --> 00:02:48.559 +the development mailing list, + +00:02:48.560 --> 00:02:51.799 +and I got interested when I heard something about + +00:02:51.800 --> 00:02:57.119 +TTI charge frames being announced for master. + +00:02:57.120 --> 00:02:59.599 +That would mean less packages to download + +00:02:59.600 --> 00:03:04.159 +because I thought I could get rid of Corfu, + +00:03:04.160 --> 00:03:07.359 +and I wanted to try if I could get rid of Corfu terminal + +00:03:07.360 --> 00:03:11.199 +and run Corfu without that. + +00:03:11.200 --> 00:03:18.799 +So, there were some hints there in that mailing list + +00:03:18.800 --> 00:03:21.879 +that made it interesting for me. + +00:03:21.880 --> 00:03:26.639 +And at the end, I'm also like a why not trying man, + +00:03:26.640 --> 00:03:29.119 +so I said let's give it a try. + +00:03:29.120 --> 00:03:33.479 +My requirements, I'm working always on a new Emacs, + +00:03:33.480 --> 00:03:36.759 +a decently new Emacs, normally from Master Vanilla. + +00:03:36.760 --> 00:03:42.559 +completely Vanilla and I don't have any extras like Doom or things like that. + +00:03:42.560 --> 00:03:45.519 +So I'm only Vanilla. And one of the things + +00:03:45.520 --> 00:03:50.279 +that I don't want is that on this Vanilla recent Emacs, + +00:03:50.280 --> 00:03:55.719 +I don't want a Kung Fu Terminal. I need your snippet. + +00:03:55.720 --> 00:03:57.359 +I'm basically an old man. + +00:03:57.360 --> 00:04:02.479 +Old dog does new tricks and snippets must, + +00:04:02.480 --> 00:04:06.239 +in my way of working, must be easy and quick to configure + +00:04:06.240 --> 00:04:10.479 +and Tempo or others that I've seen are not. + +00:04:10.480 --> 00:04:13.919 +I don't want any reminiscence of a company in my setup. + +00:04:13.920 --> 00:04:18.679 +And of course, don't forget that I've embraced + +00:04:18.680 --> 00:04:24.119 +the language protocol implementations and basically Eglot. + +00:04:24.120 --> 00:04:28.159 +My main focus now is Python and LaTeX, + +00:04:28.160 --> 00:04:31.719 +and I have PyLSB and TechLab. + +00:04:31.720 --> 00:04:37.599 +And I don't want to have to stop using them. + +00:04:37.600 --> 00:04:40.479 +So basic setup for Corfu and Eglot. + +00:04:40.480 --> 00:04:43.439 +You can find it everywhere you look for it. + +00:04:43.440 --> 00:04:46.559 +It's really easy. + +00:04:46.560 --> 00:04:51.119 +And actually, I also do something somehow naughty, + +00:04:51.120 --> 00:04:53.079 +which is to set this variable, + +00:04:53.080 --> 00:04:55.519 +the Corfu auto variable to true, + +00:04:55.520 --> 00:04:58.399 +although I know it's not recommended, blah, blah, blah. + +00:04:58.400 --> 00:05:02.959 +But I use that because I'm a bit lazy in that. + +00:05:02.960 --> 00:05:07.239 +So next step was looking at completion at point functions. + +00:05:07.240 --> 00:05:10.479 +So the information there if you go through the scatter + +00:05:10.480 --> 00:05:13.999 +and sometimes a bit cryptic. + +00:05:14.000 --> 00:05:16.599 +At the end I came up with something like the thing + +00:05:16.600 --> 00:05:18.399 +that you see there on the screen. + +00:05:18.400 --> 00:05:21.879 +So it's a function for just completion point + +00:05:21.880 --> 00:05:24.639 +so I need my list of keywords + +00:05:24.640 --> 00:05:30.039 +so that I'm going to be talking later + +00:05:30.040 --> 00:05:34.399 +and I have my bounds which is normally a word + +00:05:34.400 --> 00:05:37.119 +and from that I get the start and the end + +00:05:37.120 --> 00:05:38.919 +of the of the thing that I want to + +00:05:38.920 --> 00:05:47.319 +that I want to be my seed for looking and bringing up Corfu + +00:05:47.320 --> 00:05:53.439 +and of course I need some completion properties here + +00:05:53.440 --> 00:05:55.719 +This looked like this is what you need to do, + +00:05:55.720 --> 00:05:57.519 +but I had to dig quite deep + +00:05:57.520 --> 00:06:01.319 +to create a JavaScript keyword test + +00:06:01.320 --> 00:06:04.759 +and to understand the completion props. + +00:06:04.760 --> 00:06:11.759 +And as an update of what I've been doing in the last weeks, + +00:06:11.760 --> 00:06:13.879 +I've created a bound of things + +00:06:13.880 --> 00:06:18.679 +that point for me with a different thing + +00:06:18.680 --> 00:06:22.039 +that doesn't skip over non-blank characters, + +00:06:22.040 --> 00:06:25.039 +that only skips over non-blank characters. + +00:06:25.040 --> 00:06:28.999 +Why? Because Word was confusingly tech, + +00:06:29.000 --> 00:06:30.759 +because the backslash, + +00:06:30.760 --> 00:06:34.999 +like in the example for the teletype text, + +00:06:35.000 --> 00:06:36.919 +was not taken into account by Word. + +00:06:36.920 --> 00:06:39.959 +So I had to create my own one, + +00:06:39.960 --> 00:06:42.119 +which was a bunch of thing at point, + +00:06:42.120 --> 00:06:44.879 +and then my thing is non-blanks. + +00:06:44.880 --> 00:06:53.239 +Completion at point properties, what are they? + +00:06:53.240 --> 00:06:56.039 +They allow Emacs to know how to handle the information + +00:06:56.040 --> 00:06:57.879 +for a specific completion time. + +00:06:57.880 --> 00:07:02.319 +So you normally will have an annotation, + +00:07:02.320 --> 00:07:08.519 +which then can disappear if you use NerdIconScoreFull. + +00:07:08.520 --> 00:07:11.839 +which is what I'm doing currently, + +00:07:11.840 --> 00:07:17.559 +but I keep it commented just in case I get tired of Corfu + +00:07:17.560 --> 00:07:20.079 +and I want to have my completion function. + +00:07:20.080 --> 00:07:26.759 +Then the company kind is actually not something + +00:07:26.760 --> 00:07:30.999 +that comes from the company package, but does not require. + +00:07:31.000 --> 00:07:39.439 +And that's going to allow NerdEye Conscorfu to identify + +00:07:39.440 --> 00:07:44.839 +and put the right icon there in the completion list, + +00:07:44.840 --> 00:07:47.159 +as you will see in a couple of minutes. + +00:07:47.160 --> 00:07:50.439 +So it's a snippet key. + +00:07:50.440 --> 00:07:52.599 +So basically what this is telling you + +00:07:52.600 --> 00:07:54.319 +is that this is a snippet keyword. + +00:07:54.320 --> 00:07:56.799 +These two lines, either line, + +00:07:56.800 --> 00:07:59.999 +tell you that this is a snippet keyword. + +00:08:00.000 --> 00:08:05.279 +And that it should be added to the other completions + +00:08:05.280 --> 00:08:08.079 +that you already have in your list. + +00:08:08.080 --> 00:08:15.479 +Problems looking now next step + +00:08:15.480 --> 00:08:19.079 +once I had the completion props + +00:08:19.080 --> 00:08:21.439 +which was relatively easy was to go + +00:08:21.440 --> 00:08:24.399 +and get the keyword list right. + +00:08:24.400 --> 00:08:27.199 +I've been looking at pre-existing solutions + +00:08:27.200 --> 00:08:29.319 +like for example how the menu + +00:08:29.320 --> 00:08:34.399 +is built in by your snippet and it looked a bit like Mission Impossible. + +00:08:34.400 --> 00:08:40.439 +because the approach by all the things + +00:08:40.440 --> 00:08:43.199 +that I have seen and I have examined + +00:08:43.200 --> 00:08:45.639 +is to get the keys and the names + +00:08:45.640 --> 00:08:50.799 +and then further process them. + +00:08:50.800 --> 00:08:55.279 +My take was, do I really need both? + +00:08:55.280 --> 00:08:58.159 +At the end, if I use my own snippets, + +00:08:58.160 --> 00:09:00.439 +I'm going to be using something + +00:09:00.440 --> 00:09:02.559 +I would call meaningful keys for them + +00:09:02.560 --> 00:09:06.359 +or at least meaningful for these keys are meaningful for me + +00:09:06.360 --> 00:09:07.679 +and I try not to repeat them + +00:09:07.680 --> 00:09:09.959 +because it makes little sense to repeat a keyword. + +00:09:09.960 --> 00:09:13.919 +So why not center everything around the keys only + +00:09:13.920 --> 00:09:18.879 +and can that help simplify my code? + +00:09:18.880 --> 00:09:23.639 +So I started to dive into your snippet + +00:09:23.640 --> 00:09:27.319 +and I found a lot of useful semi-hidden functions there. + +00:09:27.320 --> 00:09:30.679 +I discovered that getting the list + +00:09:30.680 --> 00:09:34.959 +the list of keys for a given mode was not that difficult. + +00:09:34.960 --> 00:09:40.079 +And at the end what I started doing + +00:09:40.080 --> 00:09:47.079 +is get all the snipple tables used by a major mode + +00:09:47.080 --> 00:09:52.399 +and get the lists of the keys that you have in each table. + +00:09:52.400 --> 00:09:55.839 +Sometimes the list is empty + +00:09:55.840 --> 00:10:01.959 +so it's going to return a nil and that you have to discard. + +00:10:01.960 --> 00:10:05.999 +When you're using structured snippets + +00:10:06.000 --> 00:10:08.919 +like snippets and submenus and so on + +00:10:08.920 --> 00:10:12.359 +to get a structured menu, + +00:10:12.360 --> 00:10:14.999 +you also get some non-strings that you need to filter out + +00:10:15.000 --> 00:10:18.999 +in order to get a workable keyword list. + +00:10:19.000 --> 00:10:24.879 +At the end of the day, what I had was something like this. + +00:10:24.880 --> 00:10:30.959 +I have, for a mode, I went through all modes. + +00:10:30.960 --> 00:10:37.159 +through all modes associated to that and then I went + +00:10:37.160 --> 00:10:42.519 +I got my results from all the tables that I had + +00:10:42.520 --> 00:10:45.279 +for a for a given time for a given table + +00:10:45.280 --> 00:10:48.079 +so what you do is you get your the tables + +00:10:48.080 --> 00:10:53.119 +that are associated to a mode because surprise surprise + +00:10:53.120 --> 00:10:55.958 +Some modes have more than one table, + +00:10:55.959 --> 00:11:00.917 +and then what you do is you filter out all non strings + +00:11:00.918 --> 00:11:07.719 +from each of the keys list that you have for each table. + +00:11:07.720 --> 00:11:12.679 +So as you see, it's a 1, 2, 3, 4, 5, 6, 7 liner, + +00:11:12.680 --> 00:11:14.319 +which was not too much. + +00:11:14.320 --> 00:11:20.039 +By the way, if someone from Yasnippet is around, + +00:11:20.040 --> 00:11:26.959 +I sent a pull request to include this + +00:11:26.960 --> 00:11:28.999 +as a public function in Yasnipit + +00:11:29.000 --> 00:11:32.319 +because it might be nice to have it in a packet + +00:11:32.320 --> 00:11:33.840 +in order to do this kind of things. + +00:11:33.840 --> 00:11:41.239 +So fine-tuning I just adding a yes completion + +00:11:41.240 --> 00:11:44.719 +to the completion point functions was not enough + +00:11:44.720 --> 00:11:46.799 +I don't really know + +00:11:46.800 --> 00:11:51.199 +but exclusive node didn't seem to work how I wanted + +00:11:51.200 --> 00:11:57.399 +so I needed to escape sorry yeah I was saying I was getting rid of packages + +00:11:57.400 --> 00:12:00.999 +and I had to add one package + +00:12:01.000 --> 00:12:04.479 +in order to get a function which is very very nice + +00:12:04.480 --> 00:12:08.919 +and which is part of the cape function of the cape package + +00:12:08.920 --> 00:12:12.799 +and that's cape cap super. + +00:12:12.800 --> 00:12:16.439 +So at the end using that you define an alias + +00:12:16.440 --> 00:12:23.199 +which for that where you use cape cap super + +00:12:23.200 --> 00:12:25.799 +to have a list of what you want + +00:12:25.800 --> 00:12:29.079 +so in this case for example for the demo + +00:12:29.080 --> 00:12:32.759 +I'm going to make I'm using yes completion + +00:12:32.760 --> 00:12:37.719 +and then the elisp completion point function provided by Emacs. + +00:12:37.720 --> 00:12:43.999 +I combine them using cape cap super + +00:12:44.000 --> 00:12:47.679 +and with that I create a completion point + +00:12:47.680 --> 00:12:53.159 +a new completion point function which I call cape list mode + +00:12:53.160 --> 00:12:58.480 +and then I add this alias to the completion functions list + +00:12:58.520 --> 00:13:05.719 +and with that it is enough snippet expansion + +00:13:05.720 --> 00:13:14.479 +if you want to have your snippets expanded automatically, + +00:13:14.480 --> 00:13:27.999 +you have to add an exit function to the, I'm sorry, + +00:13:28.000 --> 00:13:30.879 +to the completion properties + +00:13:30.880 --> 00:13:34.119 +yet another functionality you have to add + +00:13:34.120 --> 00:13:39.199 +and to avoid this automatic selection to be too eager + +00:13:39.200 --> 00:13:43.319 +you need to add this set corfu + +00:13:43.320 --> 00:13:48.599 +on exact match to nil because otherwise + +00:13:48.600 --> 00:13:51.839 +you will always get the snippet expanded + +00:13:51.840 --> 00:13:55.039 +even if you don't want it Basically why? + +00:13:55.040 --> 00:13:57.639 +Basically because this would be suboptimal + +00:13:57.640 --> 00:14:05.359 +because the key can appear as part of a variable name. + +00:14:05.360 --> 00:14:10.599 +Another nice thing, I'm also creating my own themes. + +00:14:10.600 --> 00:14:13.759 +I'm trying to have very sleek themes + +00:14:13.760 --> 00:14:16.839 +that only cover the modes that I use + +00:14:16.840 --> 00:14:22.959 +and for that I have my own theme creator fork + +00:14:22.960 --> 00:14:26.959 +from the original team creator. + +00:14:26.960 --> 00:14:31.719 +In my personal work that I'm running at home, + +00:14:31.720 --> 00:14:34.159 +I only have the faces for the modes I use. + +00:14:34.160 --> 00:14:38.159 +I don't want to overload the thing + +00:14:38.160 --> 00:14:41.839 +with too much different things. + +00:14:41.840 --> 00:14:45.999 +Looking at this, I really didn't need, as you will see now, + +00:14:46.000 --> 00:14:50.079 +I don't need to add anything to my themes + +00:14:50.080 --> 00:14:53.279 +because the default faces for Corfu + +00:14:53.280 --> 00:14:58.319 +adapt quite well to most of the themes. + +00:14:58.320 --> 00:15:02.839 +So if I go back to my checklist decently remax yes + +00:15:02.840 --> 00:15:06.559 +compiled the one you'll see + +00:15:06.560 --> 00:15:09.239 +for the for in the demo I'm doing is a master + +00:15:09.240 --> 00:15:11.999 +compiled the day before yesterday + +00:15:12.000 --> 00:15:15.199 +so and I don't need Corfu terminal there. + +00:15:15.200 --> 00:15:16.559 +I need your snippet, + +00:15:16.560 --> 00:15:20.159 +and you're going to see that in a second + +00:15:20.160 --> 00:15:24.439 +with a couple of snippets that I can expand here. + +00:15:24.440 --> 00:15:27.479 +I don't want any reminiscence of a company in my setup, + +00:15:27.480 --> 00:15:32.119 +and there's none. Well, actually, company kind is there + +00:15:32.120 --> 00:15:33.719 +you see the company there + +00:15:33.720 --> 00:15:39.559 +but it isn't if I buy companies strictly speaking + +00:15:39.560 --> 00:15:44.679 +and for I don't want I need Eglot integration + +00:15:44.680 --> 00:15:50.400 +which I will also be showing you. Takeaways from all this, + +00:15:50.440 --> 00:15:55.279 +if you accept the extra burden + +00:15:55.280 --> 00:16:02.239 +of Corfu terminal for Emacs 30 or earlier Emacs 30s, + +00:16:02.240 --> 00:16:07.559 +it's not too difficult to get this set up running. + +00:16:07.560 --> 00:16:11.759 +Corfu was easier to integrate and configure than Company, + +00:16:11.760 --> 00:16:13.799 +and it's much lighter in terms + +00:16:13.800 --> 00:16:20.039 +of number of lines, et cetera. I learned a lot. + +00:16:20.040 --> 00:16:25.159 +Well, actually, yes, with the help of Cape, + +00:16:25.160 --> 00:16:27.399 +but it is much lighter and much easier + +00:16:27.400 --> 00:16:30.119 +to integrate and configure. + +00:16:30.120 --> 00:16:34.879 +I've learned a lot about computational functions in the process, + +00:16:34.880 --> 00:16:40.439 +which is, something that is always nice to learn new things + +00:16:40.440 --> 00:16:45.039 +and the Nerd Icons Corfu makes the + +00:16:45.040 --> 00:16:48.319 +at least at this point in time I might get tired of it + +00:16:48.320 --> 00:16:50.399 +but at this point in time it makes + +00:16:50.400 --> 00:16:53.679 +a makes a very nice overall look + +00:16:53.680 --> 00:16:58.039 +and look and feel for for Emacs. + +00:16:58.040 --> 00:17:02.039 +requests to whom it may concern cape has nice features + +00:17:02.040 --> 00:17:06.279 +that maybe could make their way into emacs + +00:17:06.280 --> 00:17:09.159 +i'm thinking basically about this cape super fun + +00:17:09.160 --> 00:17:12.399 +uh super function super cape function functionality + +00:17:12.400 --> 00:17:18.799 +which is very nice and overcomes the problem of linking + +00:17:18.800 --> 00:17:22.239 +and this exclusive and all this kind of things + +00:17:22.240 --> 00:17:26.479 +that we have currently in Corfu + +00:17:26.480 --> 00:17:28.439 +with the computational point functions. + +00:17:28.440 --> 00:17:32.959 +Corfu is also really nice to have and it's not too big + +00:17:32.960 --> 00:17:35.559 +so is there any possibility + +00:17:35.560 --> 00:17:40.079 +that it makes its way into Emacs? + +00:17:40.080 --> 00:17:42.399 +Please keep Yarn Snippet alive. + +00:17:42.400 --> 00:17:48.559 +I'm not saying here that my pull request should be there, + +00:17:48.560 --> 00:17:51.559 +but it would be nice if someone took a look + +00:17:51.560 --> 00:17:57.399 +and made it part of Yarn Snippet. + +00:17:57.400 --> 00:18:01.799 +And PS, currently on master, + +00:18:01.800 --> 00:18:07.799 +there's a lot of semantic highlighting going on, + +00:18:07.800 --> 00:18:13.719 +which is very, very nice. No criticism on that. + +00:18:13.720 --> 00:18:19.639 +but you may need to add to your snippet hook + +00:18:19.640 --> 00:18:25.039 +this simple local value for ElixirFontify semantically + +00:18:25.040 --> 00:18:30.719 +because at least in my case I felt that + +00:18:30.720 --> 00:18:32.439 +the face were a bit too pushy + +00:18:32.440 --> 00:18:37.280 +so I had to make a snippet mode + +00:18:37.334 --> 00:18:41.279 +use the old Emacs Lisp fontification. + +00:18:41.280 --> 00:18:46.279 +That's what we want to talk about. + +00:18:46.280 --> 00:18:54.999 +Any initial reactions to this? There's a question here. + +00:18:55.000 --> 00:18:59.159 +Someone asked, did you try Jasnepet Cup? + +00:18:59.160 --> 00:19:05.959 +If so, what did you miss from this approach? I tried that. + +00:19:05.960 --> 00:19:11.239 +And it's not that I missed anything. + +00:19:11.240 --> 00:19:16.519 +It was more or less that I wanted to do it myself. + +00:19:16.520 --> 00:19:24.159 +So I wanted to see what was behind it. That's my answer. + +00:19:24.160 --> 00:19:26.679 +There are lots of packages there, + +00:19:26.680 --> 00:19:31.719 +but I try to keep learning. So, this was a nice objective + +00:19:31.720 --> 00:19:40.159 +to learn a bit more about Emacs. And now, just a second. + +00:19:40.160 --> 00:19:44.879 +Now, a small demo. This is the interaction. + +00:19:44.880 --> 00:19:47.199 +And as you see, I have the snippet there. + +00:19:47.200 --> 00:19:52.879 +and I have a couple of snippets. + +00:19:52.880 --> 00:19:55.839 +So, for example, if I would like to say + +00:19:55.840 --> 00:19:58.879 +I want to define a function, I can go like this. + +00:19:58.880 --> 00:20:00.519 +And what you see here is that + +00:20:00.520 --> 00:20:04.319 +I have two snippets appearing and then some variables. + +00:20:04.320 --> 00:20:09.879 +So, I could go for def one or if I want a key map, for def key map, + +00:20:09.880 --> 00:20:11.479 +which would be something like this. + +00:20:11.480 --> 00:20:18.319 +And then when I press enter, I get directly into the map + +00:20:18.320 --> 00:20:26.719 +and I could say like, Show off mob. + +00:20:26.720 --> 00:20:30.079 +Then it sets out directly a prefix T, + +00:20:30.080 --> 00:20:35.039 +which is something that I asked for in Emacs master. + +00:20:35.040 --> 00:20:39.479 +So with prefix T, for those who prefix it true, + +00:20:39.480 --> 00:20:41.399 +for those who don't know it, + +00:20:41.400 --> 00:20:46.799 +it makes integrating this into keymaps in use package much easier. + +00:20:46.800 --> 00:20:51.119 +So the next thing would be + +00:20:51.120 --> 00:20:55.999 +I would like to write a description + +00:20:56.000 --> 00:21:04.999 +like for example a cool show off team up + +00:21:05.000 --> 00:21:08.599 +and then my keys are my functions and that would be it + +00:21:08.600 --> 00:21:15.839 +but you also have like but also have like this define function + +00:21:15.840 --> 00:21:21.679 +and of course you can say that's nice but there's no + +00:21:21.680 --> 00:21:23.799 +but you're not showing the integration + +00:21:23.800 --> 00:21:25.439 +with Eglot and you're right. + +00:21:25.440 --> 00:21:30.279 +So I'm going just to open up a small program + +00:21:30.280 --> 00:21:33.319 +that I'm currently developing in Python. + +00:21:33.320 --> 00:21:38.239 +X is a tool to do things in MP3. + +00:21:38.240 --> 00:21:42.279 +And here I would have like all these things. + +00:21:42.280 --> 00:21:45.359 +As you see here in the bottom, + +00:21:45.360 --> 00:21:49.079 +service running, pilot is local, eglot is active. + +00:21:49.080 --> 00:21:57.919 +So I have my eglot stop and then I go down. + +00:21:57.920 --> 00:22:00.519 +And I want to add a new argument here. + +00:22:00.520 --> 00:22:08.799 +I would go like for it. I would go like add flag. + +00:22:08.800 --> 00:22:13.759 +For example, I would add a flag + +00:22:13.760 --> 00:22:21.759 +and I would get a new flag to add here. + +00:22:21.760 --> 00:22:33.119 +Oops. Of course, this is integrated into Eagle Lord. + +00:22:33.120 --> 00:22:42.759 +So I'm getting your information about what I have. + +00:22:42.760 --> 00:22:52.359 +I don't have OS, so I would need to import here, + +00:22:52.360 --> 00:22:59.279 +but I can go up just to see + +00:22:59.280 --> 00:23:01.759 +if I would like to, for example, + +00:23:01.760 --> 00:23:11.879 +create a new a regular expression + +00:23:11.880 --> 00:23:15.439 +I'm getting this information that you see right now on call + +00:23:15.440 --> 00:23:17.359 +for I'm getting that from Eglot + +00:23:17.360 --> 00:23:18.919 +so you see there's the integration + +00:23:18.920 --> 00:23:20.839 +with with Eglot too in Python + +00:23:20.840 --> 00:23:23.559 +I have Eglot and as you've seen + +00:23:23.560 --> 00:23:30.239 +I also have the and all these are snippets fine + +00:23:30.240 --> 00:23:38.199 +more reactions and questions + +00:23:38.200 --> 00:23:54.239 +Because that would be my show off here. + +00:23:54.240 --> 00:23:56.759 +Any questions? Any more questions on the pad? + +00:23:56.760 --> 00:24:11.479 +but anyhow i'm going to try + +00:24:11.480 --> 00:24:13.239 +i'm going to try your snippet too + +00:24:13.240 --> 00:24:16.279 +and i'm going to be answering this question more + +00:24:16.280 --> 00:24:21.079 +yeah time is good okay fine + +00:24:21.080 --> 00:24:30.039 +so I would be done if there's no more reactions + +00:24:30.040 --> 00:24:33.239 +thank you so much You're welcome. + +00:24:33.240 --> 00:24:34.919 +If you have any other questions, folks, + +00:24:34.920 --> 00:24:37.079 +you can always follow up on the pad. + +00:24:37.080 --> 00:24:39.639 +That was a great demonstration, and I'm sure lots of people + +00:24:39.640 --> 00:24:43.519 +are looking forward to trying it out. + +00:24:43.520 --> 00:24:45.239 +Oh, I see some questions coming in now. + +00:24:45.240 --> 00:24:46.199 +You may go ahead if you like. + +00:24:46.200 --> 00:24:51.879 +okay fine uh what uh there's someone asking + +00:24:51.880 --> 00:24:57.079 +what do special characters in your snippets work well too + +00:24:57.080 --> 00:25:02.479 +what kind of i don't use special characters in the key name + +00:25:02.480 --> 00:25:05.199 +so in this case everything works quite nicely + +00:25:05.200 --> 00:25:11.359 +and then i'm passing i'm passing the control to your snippets + +00:25:11.360 --> 00:25:13.679 +so if there's any problem in your snippets + +00:25:13.680 --> 00:25:15.359 +with uh special characters + +00:25:15.360 --> 00:25:24.399 +that i don't know I don't use that as a key. + +00:25:24.400 --> 00:25:30.519 +I'm just using for key names. + +00:25:30.520 --> 00:25:38.399 +I normally use a, I only use letters, but that should work. + +00:25:38.400 --> 00:25:43.959 +I mean, let's, uh, let's give it a trial. + +00:25:43.960 --> 00:25:58.039 +Let's kill here. Yes. I don't want, I don't want to touch this. + +00:25:58.040 --> 00:26:01.039 +Ugh. let's go into this one uh + +00:26:01.040 --> 00:26:06.920 +let's say I'm going to define this for example like this + +00:26:06.959 --> 00:26:10.919 +and I'm going to create a new snippet + +00:26:10.920 --> 00:26:15.359 +I'm going to create a new snippet + +00:26:15.360 --> 00:26:18.119 +and use this is for example when you look at this + +00:26:18.120 --> 00:26:20.599 +if you if you have the the venue uh the new + +00:26:20.600 --> 00:26:26.159 +sorry the new way of the the new emacs uh + +00:26:26.160 --> 00:26:31.639 +semantical highlighting working + +00:26:31.640 --> 00:26:39.199 +this would be quite cramped this is why i'm using + +00:26:39.200 --> 00:26:43.039 +this is why i said uh the snippet the + +00:26:43.040 --> 00:26:49.039 +so is this more or less what you're talking about + +00:26:49.040 --> 00:27:01.479 +This is what you're talking about. Snippet. Save the snippet. + +00:27:01.480 --> 00:27:15.479 +So I'm going to... Snippet, load and put window. + +00:27:15.480 --> 00:27:21.279 +Enable interaction mode. Yes, I'm going to save. + +00:27:21.280 --> 00:27:24.439 +And I'm going to save that as FD test. on the file. + +00:27:24.440 --> 00:27:41.479 +No, I'm going to save this. Load. Load input window. + +00:27:41.480 --> 00:27:53.679 +I'm going to put this in Emacs Lisp mode. I want to save it. No. + +00:27:53.680 --> 00:28:27.359 +I'm going to write that directly into Emacs Lisp mode. + +00:28:27.360 --> 00:28:30.639 +going to go back into scratch buffer + +00:28:30.640 --> 00:28:43.079 +and here I have it and we have it here but anyhow + +00:28:43.080 --> 00:28:52.079 +and I'm just going to try to see if I feel like empty of course + +00:28:52.080 --> 00:28:58.839 +there's only one it will not show in Corfu, + +00:28:58.840 --> 00:29:01.519 +but I mean, I don't have any problems + +00:29:01.520 --> 00:29:20.999 +with that, as you see. Was that what you were meaning? + +00:29:21.000 --> 00:29:24.839 +Yeah, I guess that works. Fine. + +00:29:24.840 --> 00:29:29.039 +All right, shall we wrap up here + +00:29:29.040 --> 00:29:31.279 +so that you can have supper + +00:29:31.280 --> 00:29:40.919 +and have lunch and other things? Okay, fine for me. + +00:29:40.920 --> 00:29:46.319 +I was hoping to see the drop down. Just a second. + +00:29:46.320 --> 00:29:49.959 +I think we can do that too. Two seconds. + +00:29:49.960 --> 00:29:52.559 +How can we do that with a drop down? + +00:29:52.560 --> 00:29:57.719 +Yeah, if I say something like this. + +00:29:57.720 --> 00:30:04.919 +And then I go and save it. + +00:30:04.920 --> 00:30:08.799 +And I'm going to go and write this + +00:30:08.800 --> 00:30:16.719 +into, with a second, fine. + +00:30:16.720 --> 00:30:19.919 +And now I need to quit here, sorry. + +00:30:19.920 --> 00:30:26.639 +And I'm going to come back in a second with another remark. + +00:30:26.640 --> 00:30:31.559 +Well, I'm bringing back and now let's see. + +00:30:31.560 --> 00:30:34.839 +Let's see what we have in your snippets. + +00:30:34.840 --> 00:30:44.159 +It's not there. Why not? Just a second. Let's see if I go. + +00:30:44.160 --> 00:30:47.839 +I don't know if it matters that the name was + +00:30:47.840 --> 00:30:52.599 +that didn't have the characters in the beginning. + +00:30:52.600 --> 00:31:03.159 +Just a second. I think I know what is happening here. + +00:31:03.160 --> 00:31:21.439 +Do I have here? I have them. I'm going to clean. + +00:31:21.440 --> 00:31:28.879 +Oh, you're back in your home directories. Why? + +00:31:28.880 --> 00:31:35.879 +CD dash to get back in. Yeah. That's right. + +00:31:35.880 --> 00:31:37.799 +So you see how the name also has + +00:31:37.800 --> 00:31:39.319 +it doesn't have the same as the keys. + +00:31:39.320 --> 00:31:41.039 +I don't know if that affects what shows up. + +00:31:41.040 --> 00:31:49.399 +Yeah, we we can try that. That's a quick one. This is my. + +00:31:49.400 --> 00:31:51.279 +Fine, now that I have this, + +00:31:51.280 --> 00:31:55.359 +which is going to be quicker, we check again. + +00:31:55.360 --> 00:31:57.919 +They both seem to be the same now + +00:31:57.920 --> 00:32:03.079 +and I don't know if that affects, but anyhow, let's try it. + +00:32:03.080 --> 00:32:07.679 +I go and then I look at the AR snippets, if it's there. + +00:32:07.680 --> 00:32:11.879 +Yes, it is. Yeah, it's there. + +00:32:11.880 --> 00:32:18.559 +And then if I say there, there you are. Oh, look at that. + +00:32:18.560 --> 00:32:24.159 +It doesn't seem to be affecting. Fantastic. + +00:32:24.160 --> 00:32:32.119 +And by the way, it is there. + +00:32:32.120 --> 00:32:33.999 +Yeah, I really should spend time + +00:32:34.000 --> 00:32:36.599 +getting more templates set up with Snippet. + +00:32:36.600 --> 00:32:37.639 +I really love the fact that + +00:32:37.640 --> 00:32:40.399 +you can evaluate Emacs Lisp in it too. + +00:32:40.400 --> 00:32:43.399 +Yeah, I mean, just to make it bigger, + +00:32:43.400 --> 00:32:51.359 +try that because if I go into my, for example, + +00:32:51.360 --> 00:32:55.679 +into my org mode stuff + +00:32:55.680 --> 00:32:59.439 +and in my org mode, I go to the article, + +00:32:59.440 --> 00:33:03.319 +which is one of the big ones. + +00:33:03.320 --> 00:33:06.199 +I have things like, for example, + +00:33:06.200 --> 00:33:10.719 +I defined a couple of functions here to do if it's empty, + +00:33:10.720 --> 00:33:16.399 +if that is empty, just add a white space. + +00:33:16.400 --> 00:33:19.599 +If one is empty, add a white space. + +00:33:19.600 --> 00:33:23.319 +add a white space here so it becomes a comment. + +00:33:23.320 --> 00:33:27.279 +I have functions for to do more things on that + +00:33:27.280 --> 00:33:29.799 +and I also have like menus to see + +00:33:29.800 --> 00:33:33.599 +what language I want to choose for + +00:33:33.600 --> 00:33:37.079 +for my spell checking and so on so + +00:33:37.080 --> 00:33:40.319 +and that's all that's as you see + +00:33:40.320 --> 00:33:41.959 +this is a Lisp being evaluated + +00:33:41.960 --> 00:33:45.119 +so yes do I really encourage you + +00:33:45.120 --> 00:33:46.519 +I've also heard people use it, + +00:33:46.520 --> 00:33:47.799 +like, especially if they're working + +00:33:47.800 --> 00:33:49.919 +in different programming languages, + +00:33:49.920 --> 00:33:52.399 +so they can just have the syntax + +00:33:52.400 --> 00:33:54.359 +for the different languages + +00:33:54.360 --> 00:33:58.239 +be condensed into a consistent abbreviation. Yeah. + +00:33:58.240 --> 00:34:01.319 +And look, this is my article. I have another. + +00:34:01.320 --> 00:34:07.799 +This is when I'm writing articles. I have another one. + +00:34:07.800 --> 00:34:10.279 +I have another one for writing letters + +00:34:10.280 --> 00:34:14.399 +in org mode and so on. So, it's like letter, block, + +00:34:14.400 --> 00:34:16.559 +and you have the complete infrastructure + +00:34:16.560 --> 00:34:20.159 +and you don't have to type it by hand. + +00:34:20.160 --> 00:34:22.879 +So, it's really, really nice. + +00:34:22.880 --> 00:34:25.959 +Hmm, I think it might be nice to have + +00:34:25.960 --> 00:34:28.079 +a future Emacs carnival, you know, + +00:34:28.080 --> 00:34:31.239 +shared blogging theme thing be around + +00:34:31.240 --> 00:34:33.359 +having people share their snippets. + +00:34:33.360 --> 00:34:39.359 +No snippets and other things like for example, + +00:34:39.360 --> 00:34:41.319 +this is something stupid. + +00:34:41.320 --> 00:34:44.519 +I'm switching my themes. All right. + +00:34:44.520 --> 00:34:48.639 +And of course, there you see, + +00:34:48.640 --> 00:34:51.439 +I have also, this is also with, + +00:34:51.440 --> 00:34:54.519 +this is my way of switching buffers, + +00:34:54.520 --> 00:34:58.159 +which is with the shift control and tab, + +00:34:58.160 --> 00:35:00.559 +I can switch different families + +00:35:00.560 --> 00:35:02.519 +and then when I'm in a family, + +00:35:02.520 --> 00:35:06.999 +I can go and switch with control tab between the different, + +00:35:07.000 --> 00:35:15.599 +I'm using tab line by the way. I'm not using the other one. + +00:35:15.600 --> 00:35:20.839 +I'm using the old plain tab line with my themes. + +00:35:20.840 --> 00:35:23.519 +So that's more or less everything. + +00:35:23.520 --> 00:35:26.519 +Thank you for the peek into your workflow. + +00:35:26.520 --> 00:35:30.759 +I will work on getting the recordings for the live talks + +00:35:30.760 --> 00:35:33.919 +sorted out at some point very soon. + +00:35:33.920 --> 00:35:37.839 +I might even be able to get them out next week. + +00:35:37.840 --> 00:35:44.920 +So thanks again. All right. Have a nice supper. Same to you. diff --git a/2025/captions/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--answers.vtt b/2025/captions/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--answers.vtt new file mode 100644 index 00000000..c9034d0b --- /dev/null +++ b/2025/captions/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--answers.vtt @@ -0,0 +1,448 @@ +WEBVTT + +00:00:00.000 --> 00:00:02.219 +I first of all want to address the feedback. + +00:00:02.220 --> 00:00:06.099 +You're absolutely right. I should have stuck to one theme. + +00:00:06.100 --> 00:00:09.099 +Unfortunately, I was using vanilla Emacs + +00:00:09.100 --> 00:00:10.299 +and not my own config. + +00:00:10.300 --> 00:00:13.459 +So to show that it can work, apologies for that. + +00:00:13.460 --> 00:00:18.419 +I will keep that in mind the next time I do such a demo. + +00:00:18.420 --> 00:00:21.539 +The first question, I mean, the feedback was considered + +00:00:21.540 --> 00:00:23.819 +using similar background dark only + +00:00:23.820 --> 00:00:25.419 +or light only throughout the help, + +00:00:25.420 --> 00:00:29.859 +throughout the help with iStream. + +00:00:29.860 --> 00:00:31.819 +The question, the first question is, + +00:00:31.820 --> 00:00:35.419 +should I know all my contact email address by heart + +00:00:35.420 --> 00:00:38.499 +or is some kind of contact list? + +00:00:38.500 --> 00:00:42.019 +Unfortunately, right now, this is just to get started. + +00:00:42.020 --> 00:00:45.859 +So it is, you have to know it by heart, + +00:00:45.860 --> 00:00:47.619 +but I take this as feedback. + +00:00:47.620 --> 00:00:51.339 +I will write this down for myself as a feature request. + +00:00:51.340 --> 00:00:53.779 +I will make sure that all contacts + +00:00:53.780 --> 00:00:58.419 +or some kind of tab support is present for email addresses. + +00:00:58.420 --> 00:01:03.659 +I do not use the org system for replying so much. + +00:01:03.660 --> 00:01:06.259 +I use it for knowing the context. + +00:01:06.260 --> 00:01:12.019 +So I don't really reply using the org mode itself to reply. + +00:01:12.020 --> 00:01:16.019 +So I did not focus on that feature. But this is doable. + +00:01:16.020 --> 00:01:18.739 +We can certainly add a tab support + +00:01:18.740 --> 00:01:24.619 +for any contacts that you may have, org contacts. + +00:01:24.620 --> 00:01:28.059 +Or I don't know if there's any other package that does that. + +00:01:28.060 --> 00:01:29.699 +So if it is, let me know. + +00:01:29.700 --> 00:01:33.899 +Org contacts is what comes to my mind. + +00:01:33.900 --> 00:01:36.739 +The second question is, what would it take + +00:01:36.740 --> 00:01:40.139 +to use the org pieces of this with? + +00:01:40.140 --> 00:01:45.019 +offline IMAP or other non Gmail mail setups. + +00:01:45.020 --> 00:01:46.059 +I use fast mail. + +00:01:46.060 --> 00:01:52.779 +Currently, I use only Gmail because that's my workflow + +00:01:52.780 --> 00:01:58.019 +and it works with a Gmail API. + +00:01:58.020 --> 00:02:00.859 +So which means the Python script that goes along with it + +00:02:00.860 --> 00:02:05.179 +only works with Gmail and no other system for now. + +00:02:05.180 --> 00:02:06.939 +This is the current package. + +00:02:06.940 --> 00:02:09.459 +However, yes, I will note this down. + +00:02:09.460 --> 00:02:12.059 +I don't know what it will take + +00:02:12.060 --> 00:02:16.379 +to include this offline IMAP setup + +00:02:16.380 --> 00:02:18.499 +or any other non-Gmail setup. + +00:02:18.500 --> 00:02:23.139 +Let me tinker with it and find out what it will involve. + +00:02:23.140 --> 00:02:30.019 +So give me some time, maybe I will get to it. + +00:02:30.020 --> 00:02:43.739 +Sorry, sorry. Oops. Okay. Okay. May I continue? + +00:02:43.740 --> 00:02:46.739 +Hi, Bella. Yes, please. Sorry for the confusion. + +00:02:46.740 --> 00:02:53.179 +Hi, Amin. All right. So the next one is, + +00:02:53.180 --> 00:02:56.939 +do you worry about sending some info to a wrong person + +00:02:56.940 --> 00:02:58.899 +due to some unseen technical issues, + +00:02:58.900 --> 00:03:03.299 +for example, due to memory overflow? + +00:03:03.300 --> 00:03:05.739 +Again, I have not been focusing + +00:03:05.740 --> 00:03:07.139 +on replying from within Emacs. + +00:03:07.140 --> 00:03:09.659 +so much, or using my package, + +00:03:09.660 --> 00:03:13.019 +I usually do it through the Gmail interface. + +00:03:13.020 --> 00:03:18.299 +I usually use this to get the context within the project, + +00:03:18.300 --> 00:03:22.059 +download all the emails, make sure that I have acted on emails + +00:03:22.060 --> 00:03:23.859 +which Gmail doesn't do so well. + +00:03:23.860 --> 00:03:25.099 +I don't know what the action is. + +00:03:25.100 --> 00:03:28.499 +I don't want to use Gmail as a to-do list. + +00:03:28.500 --> 00:03:30.146 +Org Mode is great at this. + +00:03:30.147 --> 00:03:32.646 +Any work I have to do, any reports I have to compile, + +00:03:32.647 --> 00:03:39.099 +all of that Org Mode does. I don't use it for replying + +00:03:39.100 --> 00:03:43.459 +or doing its actions around the email, which I focus on. + +00:03:43.460 --> 00:03:45.859 +But point taken, let me see + +00:03:45.860 --> 00:03:47.779 +if there is a like Gmail offers. + +00:03:47.780 --> 00:03:52.219 +you know, for 10 seconds or something you can still undo + +00:03:52.220 --> 00:03:54.739 +so that it doesn't go out of your email + +00:03:54.740 --> 00:03:59.659 +if you made a mistake or if there's a problem with your, + +00:03:59.660 --> 00:04:04.619 +you know, Gmail or email sending should sort of stop. + +00:04:04.620 --> 00:04:07.019 +Let me think about that. + +00:04:07.020 --> 00:04:09.396 +So, I've not paid attention to that, + +00:04:09.397 --> 00:04:11.104 +but I'll take your point. + +00:04:11.105 --> 00:04:17.539 +The next one, you should say what org-gmail is + +00:04:17.540 --> 00:04:20.219 +and not its goals and non-goals, + +00:04:20.220 --> 00:04:22.019 +which in this case is more helpful + +00:04:22.020 --> 00:04:24.739 +to help people get their head around this. + +00:04:24.740 --> 00:04:26.379 +You had some good ones in your slides, + +00:04:26.380 --> 00:04:28.859 +but not your GitHub page. Okay, great. + +00:04:28.860 --> 00:04:30.579 +Okay, so I will definitely take + +00:04:30.580 --> 00:04:33.779 +the information from the slides + +00:04:33.780 --> 00:04:38.499 +and give it to, I mean, put it back into my readme. + +00:04:38.500 --> 00:04:40.179 +It's been a while since I updated ReadMe, + +00:04:40.180 --> 00:04:42.179 +and you're absolutely right. + +00:04:42.180 --> 00:04:45.779 +It probably doesn't say why you need org email. + +00:04:45.780 --> 00:04:49.059 +So that would be definitely something that I can do. + +00:04:49.060 --> 00:04:51.659 +Wanting to add the goal is an easier way + +00:04:51.660 --> 00:04:53.819 +to add one-off email into org mode + +00:04:53.820 --> 00:04:56.419 +and org agenda workflows and first. + +00:04:56.420 --> 00:04:57.779 +Love seeing a different way + +00:04:57.780 --> 00:04:59.539 +of looking at and working with email. + +00:04:59.540 --> 00:05:00.659 +Thank you so much for that. + +00:05:00.660 --> 00:05:05.619 +Yes, that's the idea here is if we can integrate email + +00:05:05.620 --> 00:05:08.339 +and I think there is memacs, you know, + +00:05:08.340 --> 00:05:11.579 +that's one package that I love. + +00:05:11.580 --> 00:05:17.099 +It can integrate all of the other stuff into your org mode. + +00:05:17.100 --> 00:05:21.539 +That worked, but I like email and dealing with email. + +00:05:21.540 --> 00:05:26.099 +That is my single source of truth outside of org mode. + +00:05:26.100 --> 00:05:28.819 +So that's the only one I need for now. + +00:05:28.820 --> 00:05:32.659 +And I like seeing the action + +00:05:32.660 --> 00:05:35.099 +and the history on my org agenda. + +00:05:35.100 --> 00:05:37.259 +That's one of the reasons why I built this package. + +00:05:37.260 --> 00:05:43.699 +And I hope that answers that. + +00:05:43.700 --> 00:05:49.459 +There is one more saying, how does it handle attachments? + +00:05:49.460 --> 00:05:52.819 +If it doesn't, do you have a plan to add this feature? + +00:05:52.820 --> 00:05:55.859 +Attachments is a bit tricky for me right now + +00:05:55.860 --> 00:05:58.619 +because I don't understand org-attach so well. + +00:05:58.620 --> 00:06:01.299 +I don't use org-attach, but you're absolutely right. + +00:06:01.300 --> 00:06:05.339 +It does make sense to have org-attach also. + +00:06:05.340 --> 00:06:08.259 +And it's definitely in my plan to include org-attach. + +00:06:08.260 --> 00:06:12.459 +I don't think I talked about it in my talk, + +00:06:12.460 --> 00:06:14.739 +but I definitely have that idea. + +00:06:14.740 --> 00:06:17.339 +First I have to wrap myself, my head + +00:06:17.340 --> 00:06:21.339 +around the idea of org-attach and how it, + +00:06:21.340 --> 00:06:26.059 +because I don't like, what I don't like about org-attach, + +00:06:26.060 --> 00:06:28.899 +I'll tell you, is default is, + +00:06:28.900 --> 00:06:31.699 +it opens a new folder called data + +00:06:31.700 --> 00:06:34.379 +and there are, it uses a unique code + +00:06:34.380 --> 00:06:37.859 +and there are subfolders in it, which I do not appreciate + +00:06:37.860 --> 00:06:43.659 +because I want all those files also to be within the same context. + +00:06:43.660 --> 00:06:45.779 +of my project or area. + +00:06:45.780 --> 00:06:50.859 +And that's one of the reasons I, and I'm sure you can customize that. + +00:06:50.860 --> 00:06:52.099 +There are ways to do that, + +00:06:52.100 --> 00:06:55.379 +but I have to pay more attention to this. + +00:06:55.380 --> 00:06:58.729 +Right now, all of the attachments are dealt with in Gmail, + +00:06:58.730 --> 00:07:01.219 +which is not a good system to handle that + +00:07:01.220 --> 00:07:03.579 +because it's so out of context. + +00:07:03.580 --> 00:07:06.379 +And there are like 25 contexts in the same inbox, + +00:07:06.380 --> 00:07:08.419 +which I do not appreciate. + +00:07:08.420 --> 00:07:11.059 +So even the attachments are like that. + +00:07:11.060 --> 00:07:13.539 +But Org Mode has a much better way of handling it, + +00:07:13.540 --> 00:07:16.099 +or Emacs has a much better way of handling it. + +00:07:16.100 --> 00:07:20.339 +I will definitely put my attention + +00:07:20.340 --> 00:07:22.219 +to this and get this feature out. + +00:07:22.220 --> 00:07:25.299 +This is all customer feedback for me, so to speak. + +00:07:25.300 --> 00:07:30.179 +So I would definitely request all of you to try it out. + +00:07:30.180 --> 00:07:32.179 +And tell me, you know, good + +00:07:32.180 --> 00:07:34.939 +or bad things about the package. + +00:07:34.940 --> 00:07:38.619 +And you've been very candid so far. Please be so. + +00:07:38.620 --> 00:07:43.539 +So, you know, so be it that be candid with your feedback + +00:07:43.540 --> 00:07:46.699 +and I will get to know how to go with this. + +00:07:46.700 --> 00:07:49.699 +With so much, I mean, I'm not an expert in Elisp, + +00:07:49.700 --> 00:07:57.019 +but I have a workaround, which is I have generative AI support, + +00:07:57.020 --> 00:07:58.339 +which has done well with me. + +00:07:58.340 --> 00:08:03.659 +I test the software better, so I can use the generative AI + +00:08:03.660 --> 00:08:05.139 +to help me with the coding, + +00:08:05.140 --> 00:08:08.539 +but I can test it so that it works for me. + +00:08:08.540 --> 00:08:10.739 +And I would request your help + +00:08:10.740 --> 00:08:13.259 +also in testing this software. + +00:08:13.260 --> 00:08:16.179 +So for sure. Thank you so much for your question. + +00:08:16.180 --> 00:08:21.271 +If there are any more, I can definitely answer them. diff --git a/2025/captions/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--answers.vtt b/2025/captions/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--answers.vtt new file mode 100644 index 00000000..3e22e18d --- /dev/null +++ b/2025/captions/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--answers.vtt @@ -0,0 +1,973 @@ +WEBVTT + +00:00:00.000 --> 00:00:02.117 +Okay, so first question. + +00:00:02.118 --> 00:00:05.037 +I noticed that it took considerable amount of time to send email. + +00:00:05.038 --> 00:00:09.637 +Is it possible to configure to use an external SMTP client + +00:00:09.638 --> 00:00:14.357 +to send emails? Right, yes, it definitely is possible. + +00:00:14.358 --> 00:00:18.957 +In fact, in the past, I've used, I believe, MSMTP, + +00:00:18.958 --> 00:00:23.317 +which is a small SMTP implementation + +00:00:23.318 --> 00:00:27.437 +that's independent of Emacs. So you can do that. + +00:00:27.438 --> 00:00:30.757 +It's also possible to, pointed + +00:00:30.758 --> 00:00:34.997 +to have it use the sendmail binary on your system. + +00:00:34.998 --> 00:00:41.637 +If you have a local MTA mail transfer agents + +00:00:41.638 --> 00:00:46.117 +like Exim or Postfix installed and configure. + +00:00:46.118 --> 00:00:50.037 +I believe that should also dispatch + +00:00:50.038 --> 00:00:51.997 +and return instantaneously + +00:00:51.998 --> 00:00:55.157 +and then have Postfix or Exim + +00:00:55.158 --> 00:00:57.997 +deal with sending the message on their terms + +00:00:57.998 --> 00:01:02.197 +without blocking Emacs. I don't know, it depends. + +00:01:02.198 --> 00:01:04.917 +Normally it's not always that slow. Sometimes it is. + +00:01:04.918 --> 00:01:11.917 +I think it also depends on the load on your mail server. + +00:01:11.918 --> 00:01:14.917 +Sometimes it's instantaneous, sometimes not. + +00:01:14.918 --> 00:01:17.837 +So I hope that helps. + +00:01:17.838 --> 00:01:20.597 +Let's see, is the Dovecot workaround + +00:01:20.598 --> 00:01:21.917 +actually a solution? + +00:01:21.918 --> 00:01:24.437 +I haven't tried it, but if it works smoothly, + +00:01:24.438 --> 00:01:27.477 +I'll surely do so. It is, it really is. + +00:01:27.478 --> 00:01:31.637 +I've actually been using that setup for many years. + +00:01:31.638 --> 00:01:45.837 +I can't remember. Oh, I believe it's Eric Abramson + +00:01:45.838 --> 00:01:49.077 +who first shared instructions on how to set this up. + +00:01:49.078 --> 00:02:04.037 +Let's see if I can find it. There we go. Yeah, this is it. + +00:02:04.038 --> 00:02:06.957 +I'll share this on IRC as well. + +00:02:06.958 --> 00:02:15.517 +Yeah, so Dovecot is very, very efficient. + +00:02:15.518 --> 00:02:21.557 +It's written in C. And yeah, when you point Gnu's + +00:02:21.558 --> 00:02:23.237 +to an IMAP server like Dovecot, + +00:02:23.238 --> 00:02:25.037 +dealing with email is pretty instantaneous. + +00:02:25.038 --> 00:02:29.157 +This article or post by Eric is great. + +00:02:29.158 --> 00:02:32.397 +Although I will say that + +00:02:32.398 --> 00:02:34.997 +there was a recent major release of Dovecot. + +00:02:34.998 --> 00:02:37.877 +I can't remember if it's 2.4 or 2.5. + +00:02:37.878 --> 00:02:39.597 +and it's a breaking change. + +00:02:39.598 --> 00:02:42.557 +They change a lot of the configuration syntax, + +00:02:42.558 --> 00:02:44.077 +so there's a high likelihood + +00:02:44.078 --> 00:02:47.477 +that this drop-in configuration won't work, + +00:02:47.478 --> 00:02:49.237 +even though that's what I used + +00:02:49.238 --> 00:02:51.957 +as my starting point a couple years ago. + +00:02:51.958 --> 00:02:56.237 +I will be writing an article on my personal site + +00:02:56.238 --> 00:03:02.717 +to go over how to configure recent versions of Dofconn + +00:03:02.718 --> 00:03:07.117 +for such a setup, for a local setup. + +00:03:07.118 --> 00:03:15.957 +Let's see. Do you have experience with Mu4e or not much? + +00:03:15.958 --> 00:03:22.397 +And why would you say Gnus is worth using compared to these? + +00:03:22.398 --> 00:03:23.837 +I do have experience with these, + +00:03:23.838 --> 00:03:25.517 +although it goes back many years, + +00:03:25.518 --> 00:03:27.757 +and I'm sure both of these have evolved since, + +00:03:27.758 --> 00:03:31.837 +and they're great pieces of software in their own rights. + +00:03:31.838 --> 00:03:33.917 +And actually I did use them in that order. + +00:03:33.918 --> 00:03:37.397 +Like I first tried Mu4e in Emacs, + +00:03:37.398 --> 00:03:40.277 +when I started using email in Emacs, + +00:03:40.278 --> 00:03:44.277 +then I tried Notmuch for a while, and then I went to Gnus. + +00:03:44.278 --> 00:03:51.157 +They're great. They have like pros and cons. + +00:03:51.158 --> 00:03:52.397 +Mu4e, I believe, has + +00:03:52.398 --> 00:03:55.357 +excellent maildir handling directly, + +00:03:55.358 --> 00:03:58.357 +if I'm not mistaken, unlike Gnus, + +00:03:58.358 --> 00:04:00.837 +so you can point it directly + +00:04:00.838 --> 00:04:03.637 +to your maildirs locally, + +00:04:03.638 --> 00:04:06.157 +and it should work fine, + +00:04:06.158 --> 00:04:08.157 +if I'm remembering correctly. + +00:04:08.158 --> 00:04:11.477 +NotMuch is also excellent. + +00:04:11.478 --> 00:04:12.477 +The thing with Notmuch + +00:04:12.478 --> 00:04:13.957 +is that it uses Xapien + +00:04:13.958 --> 00:04:17.877 +for indexing and searching email. + +00:04:17.878 --> 00:04:20.397 +It's tag-based, so you can tag messages. + +00:04:20.398 --> 00:04:24.077 +And then, yeah, it's amazing + +00:04:24.078 --> 00:04:26.197 +for tagging and searching capabilities, + +00:04:26.198 --> 00:04:28.877 +very powerful search features. + +00:04:28.878 --> 00:04:31.677 +And my reason for trying Gnus + +00:04:31.678 --> 00:04:33.637 +and then, I don't know, eventually + +00:04:33.638 --> 00:04:37.037 +liking it was couple of years ago, + +00:04:37.038 --> 00:04:38.437 +I went through this kind of phase + +00:04:38.438 --> 00:04:40.597 +of trying and trying to like use + +00:04:40.598 --> 00:04:43.357 +and stick with packages + +00:04:43.358 --> 00:04:45.317 +that are built into GNU Emacs + +00:04:45.318 --> 00:04:47.157 +as much as possible. + +00:04:47.158 --> 00:04:51.877 +No particular reason that I would like, + +00:04:51.878 --> 00:04:54.197 +you know, recommend people do that per se, + +00:04:54.198 --> 00:04:57.037 +but yeah, that's just what I wanted to do. + +00:04:57.038 --> 00:05:00.597 +Cause I noticed my configurations + +00:05:00.598 --> 00:05:02.277 +were like growing unwieldy. + +00:05:02.278 --> 00:05:07.797 +So I, like many others declared, Emacs in its bankruptcy, + +00:05:07.798 --> 00:05:11.677 +in its file bankruptcy, and configure things from scratch + +00:05:11.678 --> 00:05:15.717 +and try to use whatever that Emacs had to offer + +00:05:15.718 --> 00:05:18.797 +built in itself, and then only reach for a couple + +00:05:18.798 --> 00:05:20.277 +of external packages here and there. + +00:05:20.278 --> 00:05:24.717 +So that's what I went to. That's how I ended up on Gnu's. + +00:05:24.718 --> 00:05:26.397 +And it's been very nice. + +00:05:26.398 --> 00:05:29.557 +I've tried a few other email clients + +00:05:29.558 --> 00:05:31.237 +since then, temporarily, + +00:05:31.238 --> 00:05:33.197 +like I tried AERC, A-E-R-C, + +00:05:33.198 --> 00:05:36.197 +which is not built into Emacs, + +00:05:36.198 --> 00:05:36.797 +but I don't know, + +00:05:36.798 --> 00:05:38.197 +I keep coming back to Gnus. + +00:05:38.198 --> 00:05:42.757 +It's great to have it all, to be able to do all these things + +00:05:42.758 --> 00:05:47.677 +from within GNU Emacs. Let's see, some notes and feedback. + +00:05:47.678 --> 00:05:52.557 +Thank you for all the kind words folks, appreciate it. + +00:05:52.558 --> 00:05:56.557 +I'm glad that you found the presentation helpful + +00:05:56.558 --> 00:05:59.157 +or somewhat useful. Let's see, new question. + +00:05:59.158 --> 00:06:02.357 +Oh, and I will check IRC as well. + +00:06:02.358 --> 00:06:06.917 +Let's see, at my organization, + +00:06:06.918 --> 00:06:09.317 +we're forced to use OAuth with Outlook, + +00:06:09.318 --> 00:06:11.157 +and they've also blacklisted + +00:06:11.158 --> 00:06:13.517 +all email clients except Thunderbird, + +00:06:13.518 --> 00:06:15.237 +but they don't support it, + +00:06:15.238 --> 00:06:17.037 +only the Webmail or the Outlook app. + +00:06:17.038 --> 00:06:18.517 +Do you know if this is something + +00:06:18.518 --> 00:06:23.997 +that can be circumvented in Gnus? Let's see. + +00:06:23.998 --> 00:06:29.797 +So if I'm pretty sure, at least with the recent Emacs versions, + +00:06:29.798 --> 00:06:37.677 +Gnus does support xOAuth as a backend. + +00:06:37.678 --> 00:06:41.557 +So I think you should be able to do that + +00:06:41.558 --> 00:06:45.677 +even with just the things, the machinery built into Emacs. + +00:06:45.678 --> 00:06:53.917 +Even so, I think there are external packages and programs. + +00:06:53.918 --> 00:06:58.717 +One of them I think comes from this Cyrus IMAP world + +00:06:58.718 --> 00:07:02.357 +of things that implement like XOAuth. + +00:07:02.358 --> 00:07:04.797 +So you should be able to do that. + +00:07:04.798 --> 00:07:09.397 +You should be able to use that to get authenticated + +00:07:09.398 --> 00:07:12.237 +to your organization's mail server. + +00:07:12.238 --> 00:07:15.797 +But I've never tried that myself. + +00:07:15.798 --> 00:07:22.837 +In terms of like blacklisting all email clients, + +00:07:22.838 --> 00:07:27.637 +I don't know how they would do it outside of, you know, + +00:07:27.638 --> 00:07:29.797 +this kind of authentication thingy. + +00:07:29.798 --> 00:07:32.317 +If, you know, they check + +00:07:32.318 --> 00:07:36.397 +the user agent header or something, + +00:07:36.398 --> 00:07:42.037 +that's pretty easy to customize and set. + +00:07:42.038 --> 00:07:50.437 +With Gnus, you can set, define a posting style + +00:07:50.438 --> 00:07:55.237 +to set a custom user agent. + +00:07:55.238 --> 00:07:58.157 +So, yeah, that's as far as I know. + +00:07:58.158 --> 00:08:00.877 +Thunderbird is pretty nice too. + +00:08:00.878 --> 00:08:05.157 +Like I reach out for it sometimes + +00:08:05.158 --> 00:08:10.557 +when I'm in a rush or can't, + +00:08:10.558 --> 00:08:15.957 +don't have the time to like set up Gnus with + +00:08:15.958 --> 00:08:24.117 +like some new like IMAP server or something. + +00:08:24.118 --> 00:08:28.757 +I reach for it sometimes, but yeah, + +00:08:28.758 --> 00:08:32.397 +I primarily use Gnus. I see. + +00:08:32.398 --> 00:08:34.757 +So the question says they tried it + +00:08:34.758 --> 00:08:38.117 +with not much and it never worked. + +00:08:38.118 --> 00:08:39.877 +Even KML on Android didn't work. + +00:08:39.878 --> 00:08:45.597 +Right. Yeah, I'm not sure. + +00:08:45.598 --> 00:08:47.677 +If you can like provide maybe more details + +00:08:47.678 --> 00:08:57.477 +as to like what doesn't work + +00:08:57.478 --> 00:09:02.517 +or if you get any particular error messages + +00:09:02.518 --> 00:09:05.677 +or like how they're trying to like prevent you from using it, + +00:09:05.678 --> 00:09:08.557 +then maybe folks could have some ideas + +00:09:08.558 --> 00:09:11.877 +of maybe how to get around that. + +00:09:11.878 --> 00:09:16.237 +Yeah. Let's see, I'm going to go + +00:09:16.238 --> 00:09:29.597 +over and take a look at IRC. Yes, scoring is great. + +00:09:29.598 --> 00:09:33.357 +In it for bankruptcy, + +00:09:33.358 --> 00:09:39.157 +they have mail to use outlook from Gnus, right? + +00:09:39.158 --> 00:09:43.637 +Yeah, there are various like solutions and workarounds. + +00:09:43.638 --> 00:09:47.277 +Yeah, let's see. How's the schedule looking? + +00:09:47.278 --> 00:09:48.277 +I think the next talk + +00:09:48.278 --> 00:09:52.637 +is gonna start pretty soon, if I'm not mistaken. + +00:09:52.638 --> 00:10:34.557 +Yeah, so I believe that's about all the time + +00:10:34.558 --> 00:10:35.717 +that we have on the stream for the Q&A, + +00:10:35.718 --> 00:10:38.757 +but of course I'll hang around here on big blue button + +00:10:38.758 --> 00:10:43.077 +and IRC for a while if folks would like to ask more questions. + +00:10:43.078 --> 00:10:43.757 +And also feel free to email me, + +00:10:43.758 --> 00:10:44.877 +bandali@gnu.org + +00:10:44.878 --> 00:10:46.437 +or at kelar.org with any questions. + +00:10:46.438 --> 00:10:49.557 +Thanks again for the kind words folks, appreciate it. + +00:10:49.558 --> 00:10:51.037 +Yeah, I myself also wish + +00:10:51.038 --> 00:10:53.637 +that there were like some tutorials or something + +00:10:53.638 --> 00:10:54.997 +when I was getting started with Guinness, + +00:10:54.998 --> 00:10:56.557 +but we didn't have that. So, and I've been meaning + +00:10:56.558 --> 00:10:59.117 +to like record a talk like this for years for EmacsConf, + +00:10:59.118 --> 00:11:12.277 +but yeah, funnily enough, after like 10 years of, + +00:11:12.278 --> 00:11:22.117 +at my 10th anniversary + +00:11:22.118 --> 00:11:27.397 +of being involved with the conference, + +00:11:27.398 --> 00:11:29.357 +I finally put together a talk of my own + +00:11:29.358 --> 00:11:32.317 +to talk about configuring Gnus. + +00:11:32.318 --> 00:11:35.757 +Let's see. Oh, I see, I see. + +00:11:35.758 --> 00:11:41.517 +So the organization is doing some kind of check + +00:11:41.518 --> 00:11:43.437 +during setting up of OAuth. + +00:11:43.438 --> 00:11:44.637 +So I think how that works is + +00:11:44.638 --> 00:11:47.157 +sometimes these email clients, + +00:11:47.158 --> 00:11:50.117 +I think at least this is the case for Gmail or something, + +00:11:50.118 --> 00:11:55.037 +where a project such as Thunderbird + +00:11:55.038 --> 00:12:00.557 +needs to apply for some kind of token + +00:12:00.558 --> 00:12:02.517 +to be able to authenticate + +00:12:02.518 --> 00:12:05.117 +and connect its users to a mail server. + +00:12:05.118 --> 00:12:10.197 +So all I will say is + +00:12:10.198 --> 00:12:12.237 +that Thunderbird is free software + +00:12:12.238 --> 00:12:13.517 +and the sources are available + +00:12:13.518 --> 00:12:15.517 +and you might be able to find + +00:12:15.518 --> 00:12:19.637 +the token that they use and yeah. + +00:12:19.638 --> 00:13:13.877 +Right, so yeah, I'm just reading this comment here. + +00:13:13.878 --> 00:13:16.077 +You're very welcome again. + +00:13:16.078 --> 00:13:18.797 +I hope you find it useful in some way. + +00:13:18.798 --> 00:13:21.597 +So they say that they like the fact + +00:13:21.598 --> 00:13:25.237 +that I started with a clean setup and built from that. + +00:13:25.238 --> 00:13:27.117 +Reading and writing emails in Emacs + +00:13:27.118 --> 00:13:28.917 +is definitely not straightforward. + +00:13:28.918 --> 00:13:30.357 +And I find it frustrating + +00:13:30.358 --> 00:13:32.317 +that there are so many pieces to put together + +00:13:32.318 --> 00:13:34.397 +and a bunch of documentation to read. + +00:13:34.398 --> 00:13:39.317 +And they admit that they find Gnus overwhelming. + +00:13:39.318 --> 00:13:42.757 +I sympathize and empathize. + +00:13:42.758 --> 00:13:45.317 +I've been in that very same situation. + +00:13:45.318 --> 00:13:50.557 +And yeah, it's totally okay to feel like that. + +00:13:50.558 --> 00:13:55.437 +I mean, email itself is kind of complex, + +00:13:55.438 --> 00:13:57.517 +even on the server side. + +00:13:57.518 --> 00:14:00.517 +If you've ever looked or have been interested + +00:14:00.518 --> 00:14:02.677 +in self-hosting your email, + +00:14:02.678 --> 00:14:06.637 +you know that there are so many moving parts and pieces. + +00:14:06.638 --> 00:14:14.397 +So yeah, I hope that this short video + +00:14:14.398 --> 00:14:18.277 +can be a useful first step + +00:14:18.278 --> 00:14:19.757 +of getting you set up to + +00:14:19.758 --> 00:14:22.957 +at least be able to read your emails + +00:14:22.958 --> 00:14:26.557 +and compose and send them within Emacs + +00:14:26.558 --> 00:14:30.837 +so that you can see that it's possible + +00:14:30.838 --> 00:14:34.837 +and get that positive feedback loop going + +00:14:34.838 --> 00:14:41.157 +and get the encouragement and then go from there. + +00:14:41.158 --> 00:15:06.597 +Yeah, Gnus is most definitely very extensible. + +00:15:06.598 --> 00:15:10.157 +It already has a lot of backends built into GNU Emacs, + +00:15:10.158 --> 00:15:12.437 +and there are other ones + +00:15:12.438 --> 00:15:14.237 +that people have written externally + +00:15:14.238 --> 00:15:18.557 +on various code hosting forges + +00:15:18.558 --> 00:15:27.877 +that you can download and set up. Yeah, thank you all. + +00:15:27.878 --> 00:15:30.717 +It's nice to see that the talk + +00:15:30.718 --> 00:15:33.917 +has kind of resonated with so many folks. + +00:15:33.918 --> 00:15:41.237 +And, yeah, it is encouragement + +00:15:41.238 --> 00:15:44.197 +for me to finally get around to starting + +00:15:44.198 --> 00:15:47.997 +perhaps either a tutorial series + +00:15:47.998 --> 00:15:50.477 +or like a video series like this + +00:15:50.478 --> 00:15:54.117 +concretely showing and walking through + +00:15:54.118 --> 00:15:57.917 +how to like set up and configure these different aspects. + +00:15:57.918 --> 00:16:00.277 +There were so many other things that I wanted to show, + +00:16:00.278 --> 00:16:04.557 +but didn't have the time + +00:16:04.558 --> 00:16:06.437 +or couldn't squeeze it into + +00:16:06.438 --> 00:16:09.037 +the 15, 20 minute format for the conference. + +00:16:09.038 --> 00:16:28.917 +Yeah. I'm going to hang out here for a few more minutes. + +00:16:28.918 --> 00:17:36.557 +Another comment, they would have liked + +00:17:36.558 --> 00:17:38.717 +to see a quick demo of Gnus + +00:17:38.718 --> 00:17:41.117 +while it is fully configured and tweaked. + +00:17:41.118 --> 00:17:43.357 +That's kind of a teaser. + +00:17:43.358 --> 00:17:52.357 +I can definitely do that sometime after the conference. + +00:17:52.358 --> 00:17:59.637 +Truth be told, I don't customize the looks of it heavily. + +00:17:59.638 --> 00:18:01.757 +I use the default layout + +00:18:01.758 --> 00:18:03.957 +for the summary and article buffers. + +00:18:03.958 --> 00:18:12.557 +With Gnus, you can even reconfigure that + +00:18:12.558 --> 00:18:15.637 +to arrange these in your preferred location or layout. + +00:18:15.638 --> 00:18:18.717 +I don't really do any of that. + +00:18:18.718 --> 00:18:22.797 +For the most part, my setup is pretty simple. + +00:18:22.798 --> 00:18:27.757 +I can actually maybe show my init file here. Let's see. + +00:18:27.758 --> 00:18:58.717 +Yeah, so this is, I guess, part of my Gnus configuration. + +00:18:58.718 --> 00:19:01.437 +I configure a couple of mail servers, + +00:19:01.438 --> 00:19:04.637 +set up these expiry targets + +00:19:04.638 --> 00:19:07.597 +so that I can hit capital E on a message + +00:19:07.598 --> 00:19:12.437 +and then have it be archived. You can have it be immediate. + +00:19:12.438 --> 00:19:15.477 +I do that for work messages + +00:19:15.478 --> 00:19:17.677 +or you can use the default seven day, + +00:19:17.678 --> 00:19:21.797 +where if a message is older than seven days, + +00:19:21.798 --> 00:19:23.317 +like once it reaches that age + +00:19:23.318 --> 00:19:26.357 +and it's been marked as expired and it'll be moved into, + +00:19:26.358 --> 00:19:29.597 +like for example, this yearly archive directory, + +00:19:29.598 --> 00:19:31.757 +like archive. For example, 2025. + +00:19:31.758 --> 00:19:35.317 +Yeah, you can do like mail splitting, + +00:19:35.318 --> 00:19:38.557 +automatically filing email. + +00:19:38.558 --> 00:19:44.037 +The fancy splitting is the more powerful variant. + +00:19:44.038 --> 00:19:46.917 +You can use like all kinds of regular expressions + +00:19:46.918 --> 00:19:48.917 +and move email around depending on + +00:19:48.918 --> 00:19:50.877 +what field or what header + +00:19:50.878 --> 00:19:52.637 +matches what regular expression. + +00:19:52.638 --> 00:20:00.397 +What else? Gnus has things, + +00:20:00.398 --> 00:20:03.477 +has a facility like Gnus parameters + +00:20:03.478 --> 00:20:07.237 +for configuring individual groups or directories. + +00:20:07.238 --> 00:20:11.477 +Like if you file all the mailing or the mails + +00:20:11.478 --> 00:20:15.797 +for a particular mailing list into a certain group. + +00:20:15.798 --> 00:20:20.237 +And for example, if they add + +00:20:20.238 --> 00:20:22.917 +the name of the mailing list + +00:20:22.918 --> 00:20:26.437 +to the, subject header. + +00:20:26.438 --> 00:20:28.957 +They prefix the subject header with the name of the list. + +00:20:28.958 --> 00:20:30.637 +You can set that here + +00:20:30.638 --> 00:20:32.877 +and Gnus will automatically + +00:20:32.878 --> 00:20:39.117 +hide that for you. So, let's see. + +00:20:39.118 --> 00:20:54.637 +There's a news agent, + +00:20:54.638 --> 00:20:58.917 +which I won't even get into because it's a rabbit hole. + +00:20:58.918 --> 00:21:01.877 +It's pretty cool. Definitely check it out. + +00:21:01.878 --> 00:21:07.517 +You can define what MIME parts should be buttonized + +00:21:07.518 --> 00:21:09.277 +so that you can like easily toggle them + +00:21:09.278 --> 00:21:11.077 +when displaying the article. + +00:21:11.078 --> 00:21:14.837 +Yeah, you can customize the list + +00:21:14.838 --> 00:21:17.597 +of the headers that are displayed and the order of them. + +00:21:17.598 --> 00:21:22.997 +Like I showed in the sample init file that I provided. + +00:21:22.998 --> 00:21:25.437 +Games can integrate with Dired. + +00:21:25.438 --> 00:21:35.957 +You can set like custom signatures like here. + +00:21:35.958 --> 00:21:37.877 +I might define something + +00:21:37.878 --> 00:21:44.797 +and then I use it later in the posting, + +00:21:44.798 --> 00:21:48.517 +in the posting, the news posting styles variable. + +00:21:48.518 --> 00:21:52.117 +I set a signature to that. Yeah. + +00:21:52.118 --> 00:22:09.997 +You can write custom like functions to move email around. + +00:22:09.998 --> 00:22:16.077 +So I have this like Gnus chunk article function + +00:22:16.078 --> 00:22:19.117 +that I bind to VS, + +00:22:19.118 --> 00:22:22.317 +so V is the prefix came up that I defined, + +00:22:22.318 --> 00:22:29.757 +and then S, so you can do things like that. + +00:22:29.758 --> 00:22:34.197 +You can customize the format of the topic lines, + +00:22:34.198 --> 00:22:39.557 +so if I actually launch Gnus with my own configuration, + +00:22:39.558 --> 00:22:43.397 +this is how it might look like, so. + +00:22:43.398 --> 00:22:58.437 +You can define archive decoders + +00:22:58.438 --> 00:23:02.317 +to let you like automatically decode + +00:23:02.318 --> 00:23:04.957 +inside the Gnus article buffer, + +00:23:04.958 --> 00:23:10.157 +how to extract certain archive formats. + +00:23:10.158 --> 00:23:13.037 +Like for example, I defined this one for Gzip. + +00:23:13.038 --> 00:23:18.637 +You can set like discouraged alternatives + +00:23:18.638 --> 00:23:22.077 +to like, for example, hide HTML email by default, + +00:23:22.078 --> 00:23:26.997 +especially if there is a plain text version. I do that. + +00:23:26.998 --> 00:23:34.997 +GNU says machinery around like encrypting emails. + +00:23:34.998 --> 00:23:36.957 +It has a bunch of customizations. + +00:23:36.958 --> 00:23:44.797 +that you can configure and have Dynos behave a certain way. + +00:23:44.798 --> 00:23:48.637 +For example, when replying to signed or encrypted emails. + +00:23:48.638 --> 00:24:01.957 +And yeah. Anyway. That's about it. + +00:24:01.958 --> 00:24:04.557 +So yeah, thanks again for hanging out with me, folks. + +00:24:04.558 --> 00:24:08.877 +I appreciate all the kind words. + +00:24:08.878 --> 00:24:13.117 +comments and yeah, I'm also + +00:24:13.118 --> 00:24:17.037 +looking forward to trying and putting together + +00:24:17.038 --> 00:24:21.997 +more videos or articles about Gnus. + +00:24:21.998 --> 00:24:28.117 +Definitely one about configuring Dovecot for local mail. + +00:24:28.118 --> 00:24:31.157 +And yeah, take it from there. Thanks again. + +00:24:31.158 --> 00:24:33.688 +Hope you enjoy the rest of the conference. diff --git a/2025/captions/emacsconf-2025-graphics--modern-emacselisp-hardwaresoftware-accelerated-graphics--emanuel-berg--main.vtt b/2025/captions/emacsconf-2025-graphics--modern-emacselisp-hardwaresoftware-accelerated-graphics--emanuel-berg--main.vtt index 333eb857..f922227a 100644 --- a/2025/captions/emacsconf-2025-graphics--modern-emacselisp-hardwaresoftware-accelerated-graphics--emanuel-berg--main.vtt +++ b/2025/captions/emacsconf-2025-graphics--modern-emacselisp-hardwaresoftware-accelerated-graphics--emanuel-berg--main.vtt @@ -1,4 +1,75 @@ WEBVTT captioned by sachac -00:00:00.000 --> 00:22:15.777 -[ This video has no audio. ] +00:00:00.000 --> 00:00:04.999 +[ This video has no narration. ] + +NOTE space box intro (elisp model matrix pipeline c dynamic module) + +00:00:05.000 --> 00:01:58.999 +space box intro (elisp model matrix pipeline c dynamic module) + +NOTE parallel (sdl/linux multicore pthreads) + +00:01:59.000 --> 00:02:03.999 +parallel (sdl/linux multicore pthreads) + + +NOTE bad snake (oop eieio) + +00:02:04.000 --> 00:03:29.999 +bad snake (oop eieio) + +NOTE solar (ecs) + +00:03:30.000 --> 00:04:31.999 +solar (ecs) + +NOTE 60 fps 1 (opengl cpu) + +00:04:32.000 --> 00:05:35.999 +60 fps 1 (opengl cpu) + +NOTE earth (grid ascii) + +00:05:36.000 --> 00:06:01.999 +earth (grid ascii) + +NOTE studio (image unicode) + +00:06:02.000 --> 00:09:31.999 +studio (image unicode) + +NOTE 60 fps 2 (gpu) + +00:09:32.000 --> 00:11:56.999 +60 fps 2 (gpu) + +NOTE rgb triangle (glsl vertex/fragment shaders) + +00:11:57.000 --> 00:13:08.999 +rgb triangle (glsl vertex/fragment shaders) + +NOTE ansi cube (software functional shader) + +00:13:09.000 --> 00:13:32.999 +ansi cube (software functional shader) + +NOTE horizon (gradient) + +00:13:33.000 --> 00:15:15.999 +horizon (gradient) + +NOTE shell color table (zsh) + +00:15:16.000 --> 00:16:12.999 +shell color table (zsh) + +NOTE luki-lisp (macros) + +00:16:13.000 --> 00:18:24.999 +luki-lisp (macros) + +NOTE incal & rave dave outro (debug text triangles) + +00:18:25.000 --> 00:22:15.777 +incal & rave dave outro (debug text triangles) diff --git a/2025/captions/emacsconf-2025-hyperboleqa--questions-and-answers-to-help-you-fly-with-hyperbole--bob-weiner--main.vtt b/2025/captions/emacsconf-2025-hyperboleqa--questions-and-answers-to-help-you-fly-with-hyperbole--bob-weiner--main.vtt new file mode 100644 index 00000000..d20eabe4 --- /dev/null +++ b/2025/captions/emacsconf-2025-hyperboleqa--questions-and-answers-to-help-you-fly-with-hyperbole--bob-weiner--main.vtt @@ -0,0 +1,2203 @@ +WEBVTT + +00:00:00.000 --> 00:00:12.239 +All right, you're good to go. Are people here? + +00:00:12.240 --> 00:00:15.639 +Let me read the first question to you since I'm here. + +00:00:15.640 --> 00:00:17.639 +The first question here is, + +00:00:17.640 --> 00:00:20.599 +I'm excited to know opinion and current state + +00:00:20.600 --> 00:00:23.799 +of using NCP and AI for PKMs and PIEs. + +00:00:23.800 --> 00:00:28.639 +Since they do carry a lot of burden out of us, it means a lot of process. + +00:00:28.640 --> 00:00:33.439 +How does our pipeline stand with the coming days? + +00:00:33.440 --> 00:00:35.119 +Thanks for the question. + +00:00:35.120 --> 00:00:40.239 +AI is obviously on everybody's mind. + +00:00:40.240 --> 00:00:43.719 +We haven't done a lot of integration + +00:00:43.720 --> 00:00:47.199 +with any of the popular AI engines, + +00:00:47.200 --> 00:00:50.519 +but I think as you'll see through this Q&A session, + +00:00:50.520 --> 00:00:54.559 +Hyperbole's function is really to interlink + +00:00:54.560 --> 00:00:57.959 +your information everywhere throughout Emacs. + +00:00:57.960 --> 00:01:02.279 +And so, whether you're using a chatbot + +00:01:02.280 --> 00:01:04.919 +in a specific buffer, + +00:01:04.920 --> 00:01:11.359 +you can use hyperbole implicit links, implicit buttons + +00:01:11.360 --> 00:01:17.039 +to activate different actions there as well. + +00:01:17.040 --> 00:01:20.399 +So sometimes it takes a bit of customization, + +00:01:20.400 --> 00:01:25.999 +a small amount of two to seven lines of code to do that. + +00:01:26.000 --> 00:01:30.839 +As we get to working with more of these engines, + +00:01:30.840 --> 00:01:34.119 +we'll build that into the core part of Hyperbole. + +00:01:34.120 --> 00:01:40.039 +But right now, that's left as an extension + +00:01:40.040 --> 00:01:43.359 +for users who are heavily using MCP + +00:01:43.360 --> 00:01:45.879 +or other protocols right now. + +00:01:45.880 --> 00:01:50.239 +We have, for example, integrated + +00:01:50.240 --> 00:01:57.559 +with LSPs, you know, for coding and have that interface through xref + +00:01:57.560 --> 00:02:01.199 +and basically using the single key, the action key, + +00:02:01.200 --> 00:02:02.719 +which is made a return. + +00:02:02.720 --> 00:02:08.919 +You can jump around to any of your source definitions + +00:02:08.920 --> 00:02:10.999 +from any reference in almost any language + +00:02:11.000 --> 00:02:14.599 +that anybody uses today. So you can extrapolate from that + +00:02:14.600 --> 00:02:17.119 +how that might work with AI as well. + +00:02:17.120 --> 00:02:22.999 +And I think you'll see later when we talk about HiWiki + +00:02:23.000 --> 00:02:26.719 +that we're now enabling just just wiki words + +00:02:26.720 --> 00:02:30.079 +to be buttons in hyperbole. + +00:02:30.080 --> 00:02:33.999 +So those could be part of your chat with an AI + +00:02:34.000 --> 00:02:37.519 +and you just click on it and you jump right to all your references + +00:02:37.520 --> 00:02:49.119 +associated with that terminology. Thanks for the question. + +00:02:49.120 --> 00:02:51.839 +Should I just go through the second question? + +00:02:51.840 --> 00:02:54.199 +I thought people would be glad. + +00:02:54.200 --> 00:02:56.559 +As a normal user who codes and takes notes, + +00:02:56.560 --> 00:02:58.759 +I really want to deep dive and learn Hyperbole, + +00:02:58.760 --> 00:03:02.079 +but always end up winding back up to Embark + +00:03:02.080 --> 00:03:04.399 +and Org Mode being the better system. + +00:03:04.400 --> 00:03:06.479 +For me, Hyperbole looks over engineering + +00:03:06.480 --> 00:03:08.079 +or over the peer system, + +00:03:08.080 --> 00:03:10.119 +which other individual packages do well. + +00:03:10.120 --> 00:03:15.399 +And outside DMAC, there's no system supporting Hyperbole or any usability. + +00:03:15.400 --> 00:03:17.519 +And I think you've cited answering + +00:03:17.520 --> 00:03:21.159 +that already, so go ahead. + +00:03:21.160 --> 00:03:26.919 +Right, hyperbole is large, but there's reasons behind that. + +00:03:26.920 --> 00:03:30.599 +We're just trying to link all your information in Emacs. + +00:03:30.600 --> 00:03:38.079 +So I think you can see my screen here in Emacs. + +00:03:38.080 --> 00:03:45.439 +So for example, you can take any Lisp expression, + +00:03:45.440 --> 00:03:49.239 +even a variable like here we have in hyperbole + +00:03:49.240 --> 00:03:50.959 +Hyperbdur variable + +00:03:50.960 --> 00:03:53.519 +and I just hit the action key made a return + +00:03:53.520 --> 00:03:57.759 +and in my mini buffer I see the value of that variable, + +00:03:57.760 --> 00:04:01.599 +but I could just as well take any other expression + +00:04:01.600 --> 00:04:03.919 +and take the outer parens off + +00:04:03.920 --> 00:04:05.679 +and change them to angle brackets + +00:04:05.680 --> 00:04:08.239 +and now that's a live Hyper button + +00:04:08.240 --> 00:04:12.079 +could be in a comment in a programming buffer in this case. + +00:04:12.080 --> 00:04:15.679 +It's in K outliner buffer, + +00:04:15.680 --> 00:04:19.159 +which is a an auto-numbered outliner part of hyperbole. + +00:04:19.160 --> 00:04:23.599 +So let's just try this and say made a return. + +00:04:23.600 --> 00:04:28.719 +I pressed and it ran occur and found all the occurrences of buttons. + +00:04:28.720 --> 00:04:31.919 +And similarly in here, I could just jump and go + +00:04:31.920 --> 00:04:35.519 +to any of these lines directly + +00:04:35.520 --> 00:04:37.919 +by hitting made a return in that buffer as well. + +00:04:37.920 --> 00:04:39.799 +So all your text, all your sort + +00:04:39.800 --> 00:04:44.879 +of what we call implicit links become live and hyperbole. + +00:04:44.880 --> 00:04:46.519 +And you didn't have to learn much. + +00:04:46.520 --> 00:04:48.559 +You just learn, you know, if you know a little Lisp + +00:04:48.560 --> 00:04:50.279 +or how to type any expression, + +00:04:50.280 --> 00:04:52.879 +then you just change the outer brackets. + +00:04:52.880 --> 00:04:55.079 +And all of a sudden, you have hyperbuttons. + +00:04:55.080 --> 00:05:01.079 +So hyperbole, you can learn a little bit at a time. + +00:05:01.080 --> 00:05:04.479 +And although it seems daunting at first + +00:05:04.480 --> 00:05:06.879 +because it has so much functionality, + +00:05:06.880 --> 00:05:09.679 +very large and rich architecture. + +00:05:09.680 --> 00:05:13.639 +But what we do is teach people one piece at a time. + +00:05:13.640 --> 00:05:17.919 +So just to continue on that a little bit, + +00:05:17.920 --> 00:05:19.639 +implicit buttons are buttons + +00:05:19.640 --> 00:05:23.359 +that exist just from the text pattern in the buffer. + +00:05:23.360 --> 00:05:28.279 +So you saw an example of changing Lisp into implicit buttons right there. + +00:05:28.280 --> 00:05:30.959 +I could do keystrokes. + +00:05:30.960 --> 00:05:33.119 +I can just type them out in my buffer + +00:05:33.120 --> 00:05:34.879 +and surround them with braces. + +00:05:34.880 --> 00:05:37.439 +So here's something, let's see, + +00:05:37.440 --> 00:05:41.079 +this is actually a command in the K Outliner + +00:05:41.080 --> 00:05:45.799 +to jump to the cell numbered four. So let's just do that. + +00:05:45.800 --> 00:05:47.599 +And it took me right there, right? + +00:05:47.600 --> 00:05:51.759 +So I'm just pressing made a return to activate these buttons. + +00:05:51.760 --> 00:05:56.279 +Similarly, any sort of, this is a complex example, + +00:05:56.280 --> 00:05:59.479 +but any path name I can surround with double quotes, + +00:05:59.480 --> 00:06:01.079 +and it's a live hyper button. + +00:06:01.080 --> 00:06:05.479 +In this case, I want to jump to a path name called readme.md, + +00:06:05.480 --> 00:06:08.359 +but it's in a directory that's specified + +00:06:08.360 --> 00:06:13.519 +by an actual list variable. And then I want to go directly + +00:06:13.520 --> 00:06:17.479 +to a headline within that file called hyperbole manual. + +00:06:17.480 --> 00:06:19.759 +And within that headline, I wanna go + +00:06:19.760 --> 00:06:22.719 +to the eighth line relative to that. + +00:06:22.720 --> 00:06:24.879 +So all I have to do, made a return again, + +00:06:24.880 --> 00:06:28.959 +and boom, I'm in that, I'm directly linked to that. + +00:06:28.960 --> 00:06:33.799 +And Hyperbole has ways that you can just split your windows like this + +00:06:33.800 --> 00:06:38.079 +and create that reference in the source buffer right there. + +00:06:38.080 --> 00:06:41.999 +You just press a few keys and it'll embed that link. + +00:06:42.000 --> 00:06:43.839 +We'll see that a little later. + +00:06:43.840 --> 00:06:47.319 +Another example, so all of these buttons, + +00:06:47.320 --> 00:06:49.599 +if I just show you here, + +00:06:49.600 --> 00:06:52.279 +you can press Control-H, Capital-A anytime. + +00:06:52.280 --> 00:06:54.319 +and it will show you exactly + +00:06:54.320 --> 00:06:56.559 +what made a return will do in that context. + +00:06:56.560 --> 00:06:59.479 +In this case, it's an implicit button, + +00:06:59.480 --> 00:07:03.119 +and it shows you even where the button starts and ends, + +00:07:03.120 --> 00:07:06.679 +what type of action it will run, + +00:07:06.680 --> 00:07:08.039 +it's a link to a file line, + +00:07:08.040 --> 00:07:09.999 +and then what arguments it takes. + +00:07:10.000 --> 00:07:13.999 +So Hyperbole extracts all this meta information + +00:07:14.000 --> 00:07:16.679 +just from the text in your buffer + +00:07:16.680 --> 00:07:19.119 +and displays it to you conveniently + +00:07:19.120 --> 00:07:22.319 +so you can know before you ever touch a hyper button + +00:07:22.320 --> 00:07:24.479 +if it will do something that you want it to do. + +00:07:24.480 --> 00:07:28.559 +Here we have a fairly advanced button + +00:07:28.560 --> 00:07:31.519 +that's very simple to do. You just specify a bug in Emacs + +00:07:31.520 --> 00:07:34.279 +that you want to reference to. + +00:07:34.280 --> 00:07:40.039 +Notice no delimiters, just bug pound, whatever, made a return. + +00:07:40.040 --> 00:07:45.479 +And I'm in GNU's reading the conversation for that bug. + +00:07:45.480 --> 00:07:48.719 +And I can just, you know, move + +00:07:48.720 --> 00:07:50.919 +through all the conversation. + +00:07:50.920 --> 00:07:56.039 +I can quit out of there and go back to where I was. + +00:07:56.040 --> 00:07:59.599 +So very, very easy to use these implicit buttons + +00:07:59.600 --> 00:08:00.879 +because they're already there + +00:08:00.880 --> 00:08:03.679 +throughout your Emacs buffers. + +00:08:03.680 --> 00:08:06.119 +I described the control HA, what that does. + +00:08:06.120 --> 00:08:09.359 +And there's other types of buttons + +00:08:09.360 --> 00:08:11.559 +that we can get into as questions go on, + +00:08:11.560 --> 00:08:14.719 +but you can create your own explicit buttons + +00:08:14.720 --> 00:08:18.719 +that have a little slightly different delimiter than you see + +00:08:18.720 --> 00:08:19.799 +in the implicit buttons. + +00:08:19.800 --> 00:08:24.759 +And this one I just put in here to show you that + +00:08:24.760 --> 00:08:30.439 +If you use it and you go, this is the hyperbole to do list, + +00:08:30.440 --> 00:08:31.879 +which is an org buffer. + +00:08:31.880 --> 00:08:35.079 +But I wanted to show in here that similarly, + +00:08:35.080 --> 00:08:37.799 +we have implicit buttons for to do's in the work. + +00:08:37.800 --> 00:08:39.679 +And when we hit made a return, + +00:08:39.680 --> 00:08:42.679 +it just changes the state of that to do. + +00:08:42.680 --> 00:08:44.919 +And I can cycle through those + +00:08:44.920 --> 00:08:47.399 +but even better with the prefix argument + +00:08:47.400 --> 00:08:50.399 +if I have multiple sequences of to do's + +00:08:50.400 --> 00:08:53.519 +because there's Bob and Matt's that maintain hyperbole + +00:08:53.520 --> 00:08:55.999 +so I can shift to Bob's to do's + +00:08:56.000 --> 00:08:57.759 +with control you made a return + +00:08:57.760 --> 00:09:00.079 +and then cycle through the states for me + +00:09:00.080 --> 00:09:05.039 +So very very easy to use, + +00:09:05.040 --> 00:09:08.319 +you know something that's a little bit more difficult to do + +00:09:08.320 --> 00:09:16.239 +I think in org without it and So that's an explicit button + +00:09:16.240 --> 00:09:19.479 +where I had to actually say I want to create this button, + +00:09:19.480 --> 00:09:21.599 +and I had to specify what type it is. + +00:09:21.600 --> 00:09:23.759 +If I show you the information there again, + +00:09:23.760 --> 00:09:25.879 +you see it has a little different type + +00:09:25.880 --> 00:09:29.679 +called a keyboard key, which runs just the key sequence. + +00:09:29.680 --> 00:09:34.759 +So you're starting to see already + +00:09:34.760 --> 00:09:36.839 +that explicit buttons have a type + +00:09:36.840 --> 00:09:38.159 +that's connected to an action + +00:09:38.160 --> 00:09:41.199 +that an implicit button can do as well. + +00:09:41.200 --> 00:09:42.959 +So all of this ties back together. + +00:09:42.960 --> 00:09:47.079 +And finally, there's a homepage that Hyperbole has, + +00:09:47.080 --> 00:09:49.159 +a personal homepage that you have. + +00:09:49.160 --> 00:09:52.999 +You hit Control-H-H, which is our mini-buffer menu, + +00:09:53.000 --> 00:09:58.319 +and then you hit what is it, B for button file + +00:09:58.320 --> 00:10:01.439 +and then P for personal file. + +00:10:01.440 --> 00:10:05.239 +And that just brings you to basically a set of links + +00:10:05.240 --> 00:10:10.199 +that you can create buttons in any format you want. + +00:10:10.200 --> 00:10:12.479 +There's no structure that you see here. + +00:10:12.480 --> 00:10:18.759 +But the nice thing is that all of these buttons that have these names, as we call them, + +00:10:18.760 --> 00:10:20.279 +with the delimiters here, + +00:10:20.280 --> 00:10:23.799 +can be referenced now as what we call global buttons + +00:10:23.800 --> 00:10:28.239 +wherever you are in Emacs. So I'm in a separate buffer here + +00:10:28.240 --> 00:10:30.719 +and say I want to jump to that to-do button + +00:10:30.720 --> 00:10:33.279 +that's labeled TD on line 10 down there. + +00:10:33.280 --> 00:10:35.519 +No matter what I have on screen, + +00:10:35.520 --> 00:10:39.199 +I can hit control H, H, G for global button, + +00:10:39.200 --> 00:10:43.719 +A for activate, and then it gives me a list of those. + +00:10:43.720 --> 00:10:47.119 +So I know it's TD, I just put TD in. + +00:10:47.120 --> 00:10:52.159 +Okay, that's a path link problem I have, + +00:10:52.160 --> 00:10:56.359 +but when I fix the link, it would go to it. + +00:10:56.360 --> 00:10:58.239 +So you can create buttons + +00:10:58.240 --> 00:11:01.639 +that you can access in any mode, anywhere, + +00:11:01.640 --> 00:11:05.799 +and just give them quick names, and it's very easy. + +00:11:05.800 --> 00:11:08.559 +So that kind of gives you an idea + +00:11:08.560 --> 00:11:11.719 +of how you can get very productive + +00:11:11.720 --> 00:11:14.999 +with hyperbole with just a few simple techniques. + +00:11:15.000 --> 00:11:30.439 +You still there Sacha? Yep, I'm still here. + +00:11:30.440 --> 00:11:37.079 +I have too many tabs. + +00:11:37.080 --> 00:11:46.199 +So the question is, I've been using activities.el + +00:11:46.200 --> 00:11:48.879 +and bufferload to save dedicated workplaces, + +00:11:48.880 --> 00:11:52.159 +open buffers, and decisions in tabs and frames + +00:11:52.160 --> 00:11:54.599 +for tasks and projects across the next sessions. + +00:11:54.600 --> 00:12:00.119 +Can I do something similar with Hyper-V? Yes, you can. + +00:12:00.120 --> 00:12:03.719 +And activities is a nice package from alphapapa. + +00:12:03.720 --> 00:12:07.399 +We've actually been working with it lately. + +00:12:07.400 --> 00:12:11.159 +So we're probably in the next month or so + +00:12:11.160 --> 00:12:13.479 +we'll have a specific integration + +00:12:13.480 --> 00:12:15.999 +to activities built into Hyperbole. + +00:12:16.000 --> 00:12:21.519 +But right now, we don't. But of course, you can call + +00:12:21.520 --> 00:12:23.279 +any of its functions or key bindings + +00:12:23.280 --> 00:12:26.079 +using the techniques that I just showed you earlier. + +00:12:26.080 --> 00:12:33.599 +But what we do have built in if you go to the menu again. + +00:12:33.600 --> 00:12:35.959 +and you see control HH, + +00:12:35.960 --> 00:12:43.039 +and then there's a W, Windows, WinConfig menu, + +00:12:43.040 --> 00:12:48.399 +and there's two types of window configurations that you can save here. + +00:12:48.400 --> 00:12:52.599 +They are, right now, they're per Emacs session. + +00:12:52.600 --> 00:12:55.759 +They're not stored beyond that, + +00:12:55.760 --> 00:12:58.519 +but we'll probably add that in as well, + +00:12:58.520 --> 00:12:59.879 +or we'll use activities for that. + +00:12:59.880 --> 00:13:07.199 +so the two types are you can either just save a window configuration in a frame + +00:13:07.200 --> 00:13:10.319 +to actually it stores the frame configuration + +00:13:10.320 --> 00:13:13.359 +to a ring just like the kill ring + +00:13:13.360 --> 00:13:16.119 +so you have the three commands at the right + +00:13:16.120 --> 00:13:21.239 +you can save with an s you can pop one off the ring with p + +00:13:21.240 --> 00:13:25.959 +or you can just yank and keep cycling through with a y + +00:13:25.960 --> 00:13:31.119 +and it will restore the frame configuration that you saved. + +00:13:31.120 --> 00:13:35.079 +Similarly you can just do it by name + +00:13:35.080 --> 00:13:36.839 +and you can say I want to add a name + +00:13:36.840 --> 00:13:45.799 +and then you know just give it a name again win win C and store it and it stores it there + +00:13:45.800 --> 00:13:48.559 +and then you can get back to it by name as well. + +00:13:48.560 --> 00:13:51.319 +So fairly fairly easy to use as well + +00:13:51.320 --> 00:13:54.999 +and again integrated in the same simple menu system. + +00:13:55.000 --> 00:13:57.079 +So thanks for that question. + +00:13:57.080 --> 00:14:07.119 +Should I just go to the next question? + +00:14:07.120 --> 00:14:10.079 +How well do hyperbole and org mode work together? + +00:14:10.080 --> 00:14:12.759 +Is there any kind of integration? + +00:14:12.760 --> 00:14:18.079 +Yes, in fact, that's really good. + +00:14:18.080 --> 00:14:22.359 +I'll just mention something. Let me go back to my homepage. + +00:14:22.360 --> 00:14:26.679 +I just stored that here. So we gave a talk at an earlier + +00:14:26.680 --> 00:14:31.559 +Emacs conference right here on org + +00:14:31.560 --> 00:14:33.199 +and hyperbole integration. + +00:14:33.200 --> 00:14:35.919 +So that's a good one to go back to. + +00:14:35.920 --> 00:14:39.479 +And I believe it's in this files + +00:14:39.480 --> 00:14:41.599 +included with hyperbole as well. + +00:14:41.600 --> 00:14:45.079 +So you can learn various techniques + +00:14:45.080 --> 00:14:48.199 +of how the action key helps you in org. + +00:14:48.200 --> 00:14:51.679 +It does special things in tables. + +00:14:51.680 --> 00:15:00.239 +And there's some nice support for, for example, working with code blocks. + +00:15:00.240 --> 00:15:02.639 +Let me see where that is. Okay, so right back here. + +00:15:02.640 --> 00:15:09.759 +So you can run them with the action key. + +00:15:09.760 --> 00:15:15.039 +You can refresh the output and do things like that. + +00:15:15.040 --> 00:15:17.559 +So again, if I just hit Control-H-A, + +00:15:17.560 --> 00:15:20.439 +it'll tell me that it's in SmartOrg, + +00:15:20.440 --> 00:15:24.359 +and it'll give me all the different contexts that that operates within. + +00:15:24.360 --> 00:15:26.559 +So there's a lot that it does in here. + +00:15:26.560 --> 00:15:30.479 +And you can see it would point on the dir value of a code block definition + +00:15:30.480 --> 00:15:33.559 +that will actually display a summary + +00:15:33.560 --> 00:15:35.199 +and all sorts of functionality. + +00:15:35.200 --> 00:15:37.439 +So the integration is quite tight. + +00:15:37.440 --> 00:15:39.679 +And one of the things we do + +00:15:39.680 --> 00:15:41.799 +since made return is used in org, + +00:15:41.800 --> 00:15:44.719 +we have a customization setting, C even O. + +00:15:44.720 --> 00:15:48.239 +And you have these three settings where you can say, + +00:15:48.240 --> 00:15:53.359 +I want me to return to, I want hyperbole to control that + +00:15:53.360 --> 00:15:57.279 +and everything that the action key does I want to happen. + +00:15:57.280 --> 00:16:00.479 +Or I only want hyperbole to control + +00:16:00.480 --> 00:16:03.239 +when I'm over a hyperbole implicit explicit button. + +00:16:03.240 --> 00:16:09.159 +Or I want org to control that key and never use hyperbole. + +00:16:09.160 --> 00:16:10.799 +So you just set that once, + +00:16:10.800 --> 00:16:13.919 +it's persistent across sessions and you're good to go. + +00:16:13.920 --> 00:16:16.399 +And again, it's built right into the menus. + +00:16:16.400 --> 00:16:23.919 +So but even following that we've the latest addition to hyperbole is Something + +00:16:23.920 --> 00:16:25.799 +and this is the first time + +00:16:25.800 --> 00:16:29.799 +we're really showing it publicly is the high wiki + +00:16:29.800 --> 00:16:33.559 +Which is a new subsystem as we call it + +00:16:33.560 --> 00:16:44.719 +and this is I think the best wiki capability in Emacs now what it does is it automatically highlights + +00:16:44.720 --> 00:16:48.119 +let me turn it on I have to turn on high wiki mode + +00:16:48.120 --> 00:16:54.679 +and you see those wiki words now got highlighted so any any wiki word + +00:16:54.680 --> 00:16:58.839 +which is the capitalized alpha word you know + +00:16:58.840 --> 00:17:01.439 +so you can have multiple capitals in there + +00:17:01.440 --> 00:17:06.039 +and I'll get recognized can be used as a wiki word + +00:17:06.040 --> 00:17:09.519 +so for example when I just type hi wiki here + +00:17:09.520 --> 00:17:11.559 +it automatically recognizes it, + +00:17:11.560 --> 00:17:14.239 +and you see it turned it into a hyperlink button, + +00:17:14.240 --> 00:17:18.159 +which again, Control-H-A will tell me exactly what it does there. + +00:17:18.160 --> 00:17:23.119 +But I can just hit the action key, made a return, + +00:17:23.120 --> 00:17:26.879 +and it'll display my hiwiki.org file. + +00:17:26.880 --> 00:17:30.559 +All wiki pages are org files. + +00:17:30.560 --> 00:17:35.679 +So we're using that for the wikis, and you have + +00:17:35.680 --> 00:17:40.359 +You can export an entire wiki + +00:17:40.360 --> 00:17:43.159 +using essentially the org export capability + +00:17:43.160 --> 00:17:48.599 +With a little extra set of features that we've added in + +00:17:48.600 --> 00:17:51.199 +but let's say even better you see + +00:17:51.200 --> 00:17:54.119 +I have this heading here so let me just change this + +00:17:54.120 --> 00:17:59.239 +you go back here and I'll say go to heading + +00:17:59.240 --> 00:18:01.039 +so you just put a pound on it + +00:18:01.040 --> 00:18:05.679 +and now that whole thing is a reference to a specific org section. + +00:18:05.680 --> 00:18:08.439 +Notice there's no org IDs here. + +00:18:08.440 --> 00:18:11.639 +There's nothing other than the text that you're seeing. + +00:18:11.640 --> 00:18:13.439 +There's not even a delimiter. + +00:18:13.440 --> 00:18:17.839 +So we have automatic implicit hyper buttons + +00:18:17.840 --> 00:18:20.679 +being added in any buffer. + +00:18:20.680 --> 00:18:23.959 +Could be a comment in a programming buffer with all you + +00:18:23.960 --> 00:18:26.599 +You don't have to add anything. + +00:18:26.600 --> 00:18:31.999 +I'll show you how to create a new page in a minute. + +00:18:32.000 --> 00:18:35.959 +But you see I can link to any org section without any IDs. + +00:18:35.960 --> 00:18:38.799 +And then I can also do like org-roam does, + +00:18:38.800 --> 00:18:42.039 +but without the indexing or database that it requires. + +00:18:42.040 --> 00:18:46.839 +I can scan over all of my wiki files and headings. + +00:18:46.840 --> 00:18:48.759 +find a match really quickly. + +00:18:48.760 --> 00:18:53.279 +So we can get into some of that a little later as well. + +00:18:53.280 --> 00:18:55.759 +But, you know, very convenient. + +00:18:55.760 --> 00:18:58.439 +There's nothing that you change on org to do this. + +00:18:58.440 --> 00:19:00.879 +So how do I create a wiki word? + +00:19:00.880 --> 00:19:07.359 +Well, let's say I wanted, you know, wiki word for me. + +00:19:07.360 --> 00:19:09.999 +So that's already, that was a wiki word, + +00:19:10.000 --> 00:19:12.959 +but now this is a new one. So you see it doesn't highlight + +00:19:12.960 --> 00:19:16.559 +because I haven't created a wiki page yet. + +00:19:16.560 --> 00:19:20.319 +So all I hit is the action key, and boom. + +00:19:20.320 --> 00:19:23.519 +Now it created it as a new wiki word. + +00:19:23.520 --> 00:19:24.879 +It created the .org file. + +00:19:24.880 --> 00:19:28.279 +If I don't edit this file, it won't save it, + +00:19:28.280 --> 00:19:32.359 +and it'll not become a word in case you made an accident. + +00:19:32.360 --> 00:19:34.319 +But let's just say I want to say it. + +00:19:34.320 --> 00:19:39.159 +So, you know, heading. That's it. I'm just in org mode. + +00:19:39.160 --> 00:19:42.879 +Now anytime that high wiki mode is active, + +00:19:42.880 --> 00:19:46.239 +in any buffer essentially, + +00:19:46.240 --> 00:19:50.279 +I can type that out and it'll recognize it. + +00:19:50.280 --> 00:19:53.039 +Notice so that's not a wiki word. + +00:19:53.040 --> 00:19:55.279 +So it's highlighting and it's unhighlighting + +00:19:55.280 --> 00:19:56.599 +right as I type. + +00:19:56.600 --> 00:20:03.199 +So, again, you can embed these as org links in org. + +00:20:03.200 --> 00:20:09.439 +There's a special format like this, HiWiki word + +00:20:09.440 --> 00:20:11.239 +that you can make an org link + +00:20:11.240 --> 00:20:13.479 +if I was in org mode, just like that. + +00:20:13.480 --> 00:20:16.599 +So there's all sorts of compatibility, + +00:20:16.600 --> 00:20:18.319 +but basically it's just words, + +00:20:18.320 --> 00:20:21.119 +and HiWiki takes care of the rest for you. + +00:20:21.120 --> 00:20:26.679 +So there's a directory where all these, it's HiWiki, + +00:20:26.680 --> 00:20:28.879 +hi wiki tilde slash + +00:20:28.880 --> 00:20:32.719 +hi wiki is the default place where all these would be found + +00:20:32.720 --> 00:20:36.359 +and there's a menu now in hyperbole for hi wiki h + +00:20:36.360 --> 00:20:40.639 +and you can see it has a lot of capabilities + +00:20:40.640 --> 00:20:44.359 +but i can say b go into the directory of all the files + +00:20:44.360 --> 00:20:47.799 +just pull them up and any of these you'll see + +00:20:47.800 --> 00:20:59.959 +let me give you one like this me okay so you can see the other wiki words being highlighted in here + +00:20:59.960 --> 00:21:04.039 +so it's very fast to this there's almost no delay for anything + +00:21:04.040 --> 00:21:14.679 +and yet very flexible and you have this ability you know where you could type emacs section dash 1 dash 2 + +00:21:14.680 --> 00:21:16.759 +and If you didn't have delimiters around it, + +00:21:16.760 --> 00:21:18.479 +but you can put any delimiters + +00:21:18.480 --> 00:21:20.839 +like double quotes or parentheses, + +00:21:20.840 --> 00:21:25.159 +and then it'll match without you having to change the header at all + +00:21:25.160 --> 00:21:28.439 +with the spaces included and all of those. + +00:21:28.440 --> 00:21:31.919 +know will get recognized. + +00:21:31.920 --> 00:21:35.599 +I don't know if this if the section exists right there. + +00:21:35.600 --> 00:21:41.959 +So anyway a lot of capability you can see that here where I did the high + +00:21:41.960 --> 00:21:45.519 +it actually highlights as an org link + +00:21:45.520 --> 00:21:46.839 +because it is an org link + +00:21:46.840 --> 00:21:50.319 +and it'll operate just like any other org link + +00:21:50.320 --> 00:21:54.279 +even though it's a high wiki word link as well. + +00:21:54.280 --> 00:21:55.759 +So very powerful stuff + +00:21:55.760 --> 00:22:00.959 +and totally integrated with Org Mode throughout. + +00:22:00.960 --> 00:22:06.439 +Great. There's another question. + +00:22:06.440 --> 00:22:09.039 +Are there any talks from this year's Emacs Conf + +00:22:09.040 --> 00:22:12.599 +that discuss things that would work well with Hyperbole? + +00:22:12.600 --> 00:22:19.279 +No. Unfortunately, I had to work yesterday, so I haven't... + +00:22:19.280 --> 00:22:22.639 +been following the conference as much as I do. + +00:22:22.640 --> 00:22:25.559 +Maybe somebody else could comment on that. + +00:22:25.560 --> 00:22:29.519 +But I think, you know, again, + +00:22:29.520 --> 00:22:31.879 +it's like pick your favorite mode, + +00:22:31.880 --> 00:22:34.719 +pick your favorite type of information. + +00:22:34.720 --> 00:22:36.839 +Can I hyperbole work with that? + +00:22:36.840 --> 00:22:39.999 +You know, the answer is almost always yes. + +00:22:40.000 --> 00:22:44.959 +So, you know, if I show you just a little bit, + +00:22:44.960 --> 00:22:48.679 +if I show you some of these implicit button types, + +00:22:48.680 --> 00:22:53.359 +just so you know the amount of code + +00:22:53.360 --> 00:22:56.279 +involved to create a type. + +00:22:56.280 --> 00:22:59.679 +So here's like a male, recognizing + +00:22:59.680 --> 00:23:01.639 +an email address as a button. + +00:23:01.640 --> 00:23:05.519 +It's a little long so that it creates a lot of things + +00:23:05.520 --> 00:23:09.199 +but you know it's less than 15 lines of code for that. + +00:23:09.200 --> 00:23:12.199 +Path names are complicated so that's a longer one + +00:23:12.200 --> 00:23:18.799 +but let's look at so here's one recognizing a bibliography entry. + +00:23:18.800 --> 00:23:24.879 +So it can be between two and 20 lines of code + +00:23:24.880 --> 00:23:27.519 +to create an entirely new button type. + +00:23:27.520 --> 00:23:32.159 +And you create it once, and you just add it to the set of types, + +00:23:32.160 --> 00:23:35.479 +just like at the fun, except it's done with this macro + +00:23:35.480 --> 00:23:39.479 +called def, implicit button type, and defib. + +00:23:39.480 --> 00:23:45.559 +And it's part of your hyperlinking system forever then. + +00:23:45.560 --> 00:23:49.799 +So say you got dumped with 5,000 documents + +00:23:49.800 --> 00:23:51.519 +that were in this weird text format, + +00:23:51.520 --> 00:23:54.119 +and they all had cross-references among them, + +00:23:54.120 --> 00:23:56.792 +but it was, again, using a weird format. + +00:23:56.760 --> 00:23:59.919 +You could just write your own little type for that, + +00:23:59.920 --> 00:24:04.319 +and then those 5,000 documents are hyperlinked for you + +00:24:04.320 --> 00:24:08.759 +every time you're browsing them in Emacs automatically. + +00:24:08.760 --> 00:24:11.959 +So we do that all the time, create small things, + +00:24:11.960 --> 00:24:15.159 +but all of these are built into Hyperbole. + +00:24:15.160 --> 00:24:20.199 +Markdown links, tech info links, all of that's automatic. + +00:24:20.200 --> 00:24:26.199 +I could even be in a shell mode, and I just say ls, + +00:24:26.200 --> 00:24:30.519 +and these are hyperlinks that Hyperbole understands, right? + +00:24:30.520 --> 00:24:31.759 +It just jumps right to the file. + +00:24:31.760 --> 00:24:36.999 +So grep-n, You know, looking at any line numbers, + +00:24:37.000 --> 00:24:39.839 +you don't have to remember + +00:24:39.840 --> 00:24:41.959 +all these different commands anymore. + +00:24:41.960 --> 00:24:44.319 +You just hit made a return, + +00:24:44.320 --> 00:24:46.599 +and Hyperbole does the right thing + +00:24:46.600 --> 00:24:48.359 +in all these different contexts, + +00:24:48.360 --> 00:24:52.639 +including following cross-references in code. + +00:24:52.640 --> 00:24:56.079 +So I would say that's your answer. + +00:24:56.080 --> 00:24:58.399 +Most things that people are talking about, + +00:24:58.400 --> 00:25:02.199 +we've already probably integrated with Hyperbole + +00:25:02.200 --> 00:25:04.639 +or with a little bit of custom coding. + +00:25:04.640 --> 00:25:11.199 +You can do it. I think that's the end of the etherpad questions for now, + +00:25:11.200 --> 00:25:12.919 +but I see a number of people in the room, + +00:25:12.920 --> 00:25:15.439 +so you can continue the conversation. + +00:25:15.440 --> 00:25:18.719 +We'll be on the stream for another five minutes or so, + +00:25:18.720 --> 00:25:22.319 +but yes, please go ahead. Great. Yeah. + +00:25:22.320 --> 00:25:27.639 +I mean, people, does everybody have, can talk on the conference? + +00:25:27.640 --> 00:25:31.439 +I was expecting to just talk with people here. + +00:25:31.440 --> 00:25:40.799 +Let's see. Yeah. Can anybody say anything here? + +00:25:40.800 --> 00:25:52.039 +Hi, Bob. I can say something. Hey, Matt. Hi. Yeah. + +00:25:52.040 --> 00:25:55.199 +Maybe you want to bring up a topic. + +00:25:55.200 --> 00:25:56.839 +I think I... Yes. Sorry, Bob. + +00:25:56.840 --> 00:26:05.839 +I think I saw a question here on IOC. It was like this. + +00:26:05.840 --> 00:26:08.599 +Interesting, but the many different link formats + +00:26:08.600 --> 00:26:11.279 +makes reading and analyzing my notes + +00:26:11.280 --> 00:26:14.959 +much harder and less usable outside Emacs. + +00:26:14.960 --> 00:26:18.759 +I don't know if you have some comment on that. + +00:26:18.760 --> 00:26:22.319 +Well, I mean, the different formats that you're saying, + +00:26:22.320 --> 00:26:24.839 +like angle brackets or curly braces, + +00:26:24.840 --> 00:26:31.319 +are just so that you can utilize many different types. + +00:26:31.320 --> 00:26:35.599 +of buttons, but if you just want to use key sequences, + +00:26:35.600 --> 00:26:37.759 +there's only one markup format. + +00:26:37.760 --> 00:26:41.599 +With org, you've got the square brackets, + +00:26:41.600 --> 00:26:44.919 +which are consistent, but in order to have different types, + +00:26:44.920 --> 00:26:47.279 +you have to type a prefix name, + +00:26:47.280 --> 00:26:53.279 +like you see the HY for the High Wiki buttons in org mode. + +00:26:53.280 --> 00:26:56.999 +So I think the trade-off is pretty much the same, + +00:26:57.000 --> 00:27:02.239 +but Hyperbole always, always works + +00:27:02.240 --> 00:27:04.559 +to minimize the amount of markup. + +00:27:04.560 --> 00:27:07.439 +Markdown is pretty simple. A lot of people like that. + +00:27:07.440 --> 00:27:10.759 +But I think you'll find in hyperbole texts, + +00:27:10.760 --> 00:27:15.479 +they read just like regular language. + +00:27:15.480 --> 00:27:19.599 +I mean, the delimiters are fairly invisible. + +00:27:19.600 --> 00:27:23.039 +So I'm not sure what the issue is there. + +00:27:23.040 --> 00:27:24.919 +And again, you can choose your own. + +00:27:24.920 --> 00:27:27.639 +You can make your own types with your own delimiters. + +00:27:27.640 --> 00:27:31.359 +There's even a custom macro + +00:27:31.360 --> 00:27:33.399 +that instead of using that defib + +00:27:33.400 --> 00:27:35.559 +where you have to type out list code, + +00:27:35.560 --> 00:27:37.519 +you can use regular expressions. + +00:27:37.520 --> 00:27:41.239 +And in one line, you can define your own type of button + +00:27:41.240 --> 00:27:42.919 +with its own delimiters. + +00:27:42.920 --> 00:27:47.879 +So, you know, depending on what works well for your eyes, + +00:27:47.880 --> 00:27:51.359 +you can make Hyperbole adapt quite well to that. + +00:27:51.360 --> 00:27:54.319 +And again, if you start using the HiWiki, + +00:27:54.320 --> 00:27:57.479 +there's literally zero markup on that. + +00:27:57.480 --> 00:27:59.599 +So you're just reading text, + +00:27:59.600 --> 00:28:01.759 +and when you want something hyperlinked, + +00:28:01.760 --> 00:28:04.599 +it's like a glossary or a dictionary entry. + +00:28:04.600 --> 00:28:09.599 +It's just there, and it's just highlighted in the text. + +00:28:09.600 --> 00:28:17.479 +So I don't see much barrier to using it with many different types of documents. + +00:28:17.480 --> 00:28:23.319 +Let me go back to the Emacs here. + +00:28:23.320 --> 00:28:27.039 +If there are any other questions. + +00:28:27.040 --> 00:28:36.639 +Let me see. Let me go back to that. This K outline here. + +00:28:36.640 --> 00:28:38.719 +So we covered HiWiki. + +00:28:38.720 --> 00:28:42.999 +We're in the, I'll just show you some things + +00:28:43.000 --> 00:28:44.039 +that we wanted to highlight + +00:28:44.040 --> 00:28:46.279 +if people didn't have specific questions. + +00:28:46.280 --> 00:28:48.879 +But feel free to jump in anytime + +00:28:48.880 --> 00:28:51.399 +if you want to ask something. + +00:28:51.400 --> 00:28:57.039 +So what we're looking at here is a K Outliner document. + +00:28:57.040 --> 00:29:00.399 +There's, you know, hyperbole is pretty well documented. + +00:29:00.400 --> 00:29:04.719 +There's a large manual. There's interactive. + +00:29:04.720 --> 00:29:09.319 +demos of it and there are videos as well + +00:29:09.320 --> 00:29:12.079 +but the K Outliner is unique in Emacs + +00:29:12.080 --> 00:29:17.439 +because it it can do like full legal auto numbering you + +00:29:17.440 --> 00:29:21.399 +just say I want to create a new headline + +00:29:21.400 --> 00:29:23.919 +and you can see or I could create four + +00:29:23.920 --> 00:29:26.679 +I could say I want to create three more of these + +00:29:26.680 --> 00:29:29.239 +and I can do it all at once with one key + +00:29:29.240 --> 00:29:33.679 +I can then just tab to make sublevels here + +00:29:33.680 --> 00:29:40.319 +and you see this is using a specific outline format that we have + +00:29:40.320 --> 00:29:43.919 +but if we do dot in the view specs here + +00:29:43.920 --> 00:29:48.239 +it changes to legal outlining so it's really that simple + +00:29:48.240 --> 00:29:51.399 +and all of these numbers are automatically maintained + +00:29:51.400 --> 00:29:56.639 +as I move stuff around I can use like org mode alt arrow keys + +00:29:56.640 --> 00:30:00.119 +to like move things up and down, right? + +00:30:00.120 --> 00:30:00.839 +And just move them around. + +00:30:00.840 --> 00:30:04.719 +And when I run out, you know, when it can't go any higher, + +00:30:04.720 --> 00:30:06.039 +it gives me an error. + +00:30:06.040 --> 00:30:11.079 +And then it's just free form typing here with auto-wrapping. + +00:30:11.080 --> 00:30:13.759 +The nice thing is that there's, + +00:30:13.760 --> 00:30:17.359 +there's actually these hidden, + +00:30:17.360 --> 00:30:22.519 +let's get, hidden what are called ID stamps. + +00:30:22.520 --> 00:30:24.919 +So these are permanent hyperlink anchors + +00:30:24.920 --> 00:30:26.719 +that are assigned to each cell. + +00:30:26.720 --> 00:30:29.679 +So as this cell moves in the outline, + +00:30:29.680 --> 00:30:32.679 +you notice that this 29 didn't change. + +00:30:32.680 --> 00:30:37.439 +So you can move and all those other auto numbers shift + +00:30:37.440 --> 00:30:40.359 +to represent the actual outline structure. + +00:30:40.360 --> 00:30:44.079 +But this ID stamp of 29 stays the same. + +00:30:44.080 --> 00:30:47.679 +So you can embed that in links and say, + +00:30:47.680 --> 00:30:51.719 +I want to link to cell 29. + +00:30:51.720 --> 00:30:55.999 +If I go, let me just go to the K Outliner example. + +00:30:56.000 --> 00:30:59.039 +And I'll show you one of those, which is really cool. + +00:30:59.040 --> 00:31:02.599 +Because what you can do is say, I want to link + +00:31:02.600 --> 00:31:06.999 +Let me find that. It's down here somewhere. + +00:31:07.000 --> 00:31:12.199 +I think there's 3A. Where was it? Yeah, okay. + +00:31:12.200 --> 00:31:16.479 +So see right here, this is an internal link + +00:31:16.480 --> 00:31:21.200 +with just the pound and then the relative ID, as we call it, 3B. + +00:31:21.200 --> 00:31:25.719 +But of course, somebody may have moved 3B in the outline. + +00:31:25.720 --> 00:31:27.919 +So when Hyperbole inserts a link, + +00:31:27.920 --> 00:31:32.039 +it puts this equal with the ID stamp in it automatically. + +00:31:32.040 --> 00:31:35.839 +So if what'll happen is when I reference this, + +00:31:35.840 --> 00:31:37.639 +okay, it's still the same. + +00:31:37.640 --> 00:31:40.959 +But if it had changed, it would update this link + +00:31:40.960 --> 00:31:44.759 +and would change the 3B to say it was 3D now + +00:31:44.760 --> 00:31:50.519 +based on this permalink, the 08 that's hidden away in here. + +00:31:50.520 --> 00:31:52.439 +So you don't have to do anything. + +00:31:52.440 --> 00:31:56.599 +It's just that you have these automatic hyperlink anchors + +00:31:56.600 --> 00:31:58.959 +that are embedded in your outlines again. + +00:31:58.960 --> 00:32:04.519 +sort of like org IDs, but you have to manually place those in org. + +00:32:04.520 --> 00:32:09.039 +And it just makes linking much simpler. + +00:32:09.040 --> 00:32:10.359 +And you can reference this. + +00:32:10.360 --> 00:32:13.799 +You can reference the file and the cell number. + +00:32:13.800 --> 00:32:15.999 +And again, you don't put this hyperbole. + +00:32:16.000 --> 00:32:17.679 +You don't put this in. + +00:32:17.680 --> 00:32:20.719 +And then you can even have these view specs, which say, + +00:32:20.720 --> 00:32:25.919 +I want to clip the display to one line, + +00:32:25.920 --> 00:32:27.399 +and I want to delete. ellipses. + +00:32:27.400 --> 00:32:31.079 +So here we see a view over the same outline + +00:32:31.080 --> 00:32:37.319 +that's all in one mode. So it's just incredibly capable. + +00:32:37.320 --> 00:32:40.079 +So here we've said, you know, + +00:32:40.080 --> 00:32:42.879 +there's no blank lines between cells. + +00:32:42.880 --> 00:32:46.719 +now I change the view spec and put a blank line in there + +00:32:46.720 --> 00:32:51.879 +and it's all changed so lots of consistency that you get + +00:32:51.880 --> 00:32:55.599 +when you when you change a node in the outline + +00:32:55.600 --> 00:32:58.799 +the whole tree shifts and all of this is maintained + +00:32:58.800 --> 00:33:02.839 +all of the structure is maintained automatically by hyperbole + +00:33:02.840 --> 00:33:09.479 +and you can embed or Tables in here as well. + +00:33:09.480 --> 00:33:17.079 +So if I just press made a return action key again on this or Disabled. + +00:33:17.080 --> 00:33:21.799 +Okay. So now I enabled org mode here + +00:33:21.800 --> 00:33:31.719 +and where you see like tab here shifts a cell when I'm inside a The table tab just operates like normal org tables. + +00:33:31.720 --> 00:33:33.519 +So I can do all of the things + +00:33:33.520 --> 00:33:40.839 +that I can do in org table mode as well within this k-outline. + +00:33:40.840 --> 00:33:43.399 +So it seems pretty useful to me, + +00:33:43.400 --> 00:33:48.519 +but of course, I helped write it. + +00:33:48.520 --> 00:33:51.279 +But I think you see some of the benefits + +00:33:51.280 --> 00:33:53.959 +that can accrue by using that format. + +00:33:53.960 --> 00:33:57.839 +But this is just this is just one piece of hyperbole, + +00:33:57.840 --> 00:34:01.559 +a major mode that you can choose to use or ignore entirely, + +00:34:01.560 --> 00:34:04.039 +you know, dependent on your needs. + +00:34:04.040 --> 00:34:06.399 +If you're writing requirements, documents, + +00:34:06.400 --> 00:34:08.879 +or anything that needs structure, + +00:34:08.880 --> 00:34:12.079 +I think that's where this is really ideal. + +00:34:12.080 --> 00:34:14.279 +You can write a legal document, + +00:34:14.280 --> 00:34:16.159 +and you've got auto-numbering, + +00:34:16.160 --> 00:34:18.679 +which is always, if you've ever used Word + +00:34:18.680 --> 00:34:21.039 +or any of those word processors, + +00:34:21.040 --> 00:34:26.479 +it's really a pain to maintain those hierarchies in those compared to here. + +00:34:26.480 --> 00:34:32.239 +Okay, so that was just showing you the KL liner. + +00:34:32.240 --> 00:34:35.279 +Does anybody have any questions + +00:34:35.280 --> 00:34:43.279 +or I'll just continue down a bit? + +00:34:43.280 --> 00:34:47.999 +Okay, so some other capabilities + +00:34:48.000 --> 00:34:49.959 +that we've fairly recently put in. + +00:34:49.960 --> 00:34:52.799 +Well, this has been here for a long time. + +00:34:52.800 --> 00:34:58.719 +You can, I think the binding I use is Control-C-M. + +00:34:58.720 --> 00:35:00.159 +I forget what it is. + +00:35:00.160 --> 00:35:07.159 +No, sorry, that's Control-C, Control-M. + +00:35:07.160 --> 00:35:14.319 +Now let's CTRL C, forward slash. + +00:35:14.320 --> 00:35:21.719 +Okay, so what I wanted to show you here is that the action key + +00:35:21.720 --> 00:35:26.679 +on any double quote, single quote, usually, + +00:35:26.680 --> 00:35:30.079 +or paired delimiters will select that whole thing. + +00:35:30.080 --> 00:35:33.239 +There is this capability, and I probably just select bigger + +00:35:33.240 --> 00:35:35.119 +and bigger chunks of text, + +00:35:35.120 --> 00:35:39.319 +but this is really nice that you can just go anywhere + +00:35:39.320 --> 00:35:42.479 +in pretty much any mode and hit made a return. + +00:35:42.480 --> 00:35:46.559 +And so in Lisp, you can be on the trailing paren + +00:35:46.560 --> 00:35:50.599 +and it will select the whole expression or the opening + +00:35:50.600 --> 00:35:52.879 +and it'll select just that piece + +00:35:52.880 --> 00:35:56.159 +but even better when you're copying pasting + +00:35:56.160 --> 00:36:02.039 +I can now if there's no region selected control W made a W + +00:36:02.040 --> 00:36:05.679 +will act on the structured entity + +00:36:05.680 --> 00:36:09.359 +that you're at the beginning or ending delimiter for + +00:36:09.360 --> 00:36:12.199 +without you having to highlight the region + +00:36:12.200 --> 00:36:14.719 +So if I hit made a return, it would highlight it, + +00:36:14.720 --> 00:36:19.839 +but let's just do made a W to cut that and then I'll yank it here. + +00:36:19.840 --> 00:36:23.599 +And you see it grabbed the whole expression + +00:36:23.600 --> 00:36:25.599 +and just let you yank it. + +00:36:25.600 --> 00:36:29.679 +So it's a nice add on to the basic Emacs commands + +00:36:29.680 --> 00:36:33.159 +that just let you operate a lot more efficiently. + +00:36:33.160 --> 00:36:35.359 +You can do something similar in C mode. + +00:36:35.360 --> 00:36:39.439 +You know, on the braces, you can select the whole function + +00:36:39.440 --> 00:36:40.439 +with one key press, + +00:36:40.440 --> 00:36:43.079 +made a return, and then copy it somewhere. + +00:36:43.080 --> 00:36:50.559 +And Hyperbole integrates with Ace Window if you use that. + +00:36:50.560 --> 00:36:56.799 +So let me split this a few ways. And let's do it over here. + +00:36:56.800 --> 00:37:06.799 +We'll just go to scratch. Okay. And then I can go, + +00:37:06.800 --> 00:37:08.119 +it's sort of interesting, + +00:37:08.120 --> 00:37:11.120 +it works with the, with Dired as well. + +00:37:11.120 --> 00:37:16.519 +So I can go here and say, I want to So if I do Meta O, + +00:37:16.520 --> 00:37:22.159 +ACE window will show me the labels to use, A, D, or S, to do something. + +00:37:22.160 --> 00:37:24.559 +Like I can move to any of those windows. + +00:37:24.560 --> 00:37:27.959 +But what Hyperbole lets you do + +00:37:27.960 --> 00:37:30.759 +is say I want to throw with T, + +00:37:30.760 --> 00:37:36.399 +like this glass.org file over to the bottom window. + +00:37:36.400 --> 00:37:42.479 +So I go MetaO to invoke it. I say I want a T to throw it. + +00:37:42.480 --> 00:37:46.399 +then where do I want to throw it to s the window and + +00:37:46.400 --> 00:37:49.879 +Then you see it's now displaying glass org + +00:37:49.880 --> 00:37:56.679 +so I can do that with files I can do it with regions of text you can + +00:37:56.680 --> 00:37:58.719 +Replace things in a buffer + +00:37:58.720 --> 00:38:01.199 +or throw the whole thing to the window + +00:38:01.200 --> 00:38:02.759 +so a couple extra commands + +00:38:02.760 --> 00:38:06.519 +that it extends ace window with you + +00:38:06.520 --> 00:38:12.159 +can even I think, well, we also have this command, + +00:38:12.160 --> 00:38:16.799 +I think it's Control-C, yeah. + +00:38:16.800 --> 00:38:21.719 +So what it did there was it just selected the files + +00:38:21.720 --> 00:38:22.799 +that I had marked in Dura, + +00:38:22.800 --> 00:38:26.839 +it selected and created a window grid out of all of them. + +00:38:26.840 --> 00:38:29.559 +you know, so I hit like three keystrokes. + +00:38:29.560 --> 00:38:35.159 +That's kind of convenient if you want to see + +00:38:35.160 --> 00:38:38.159 +a lot of information all at once. + +00:38:38.160 --> 00:38:42.239 +And so we covered all that. I won't go into it too much, + +00:38:42.240 --> 00:38:46.639 +but there's a whole nother window and frame control system + +00:38:46.640 --> 00:38:50.799 +under the screen menu here if you type control HHS. + +00:38:50.800 --> 00:38:54.479 +then you can select either controlling windows or frames. + +00:38:54.480 --> 00:38:56.119 +Let's do windows. + +00:38:56.120 --> 00:39:00.479 +And it has this menu where it's just sort of showing you. + +00:39:00.480 --> 00:39:07.839 +I can like split my windows vertically or horizontally. + +00:39:07.840 --> 00:39:13.759 +I can widen by a pixel or I can say, or character. + +00:39:13.760 --> 00:39:18.319 +I can say, use my prefix argument to change that to 10. + +00:39:18.320 --> 00:39:22.479 +And then when I shrink it, shrinks it up by 10 + +00:39:22.480 --> 00:39:27.319 +or it narrows it width by 10 or it widens it by 10. + +00:39:27.320 --> 00:39:33.679 +So it has this concept of prefix arguments that persist + +00:39:33.680 --> 00:39:35.719 +and you just type in the number + +00:39:35.720 --> 00:39:38.359 +and then you can issue any number of the commands. + +00:39:38.360 --> 00:39:41.679 +So you could move windows or frames + +00:39:41.680 --> 00:39:44.919 +or create them, delete them, cycle through them, + +00:39:44.920 --> 00:39:48.279 +all sorts of things, including relative to movement, + +00:39:48.280 --> 00:39:50.719 +relative to the edges of your screens. + +00:39:50.720 --> 00:39:52.559 +So if you have multiple screens + +00:39:52.560 --> 00:39:54.479 +and many frames that you use, + +00:39:54.480 --> 00:39:59.639 +it just makes management very convenient. + +00:39:59.640 --> 00:40:02.439 +And then you just cue to quit out of there + +00:40:02.440 --> 00:40:04.959 +and you're back wherever you were. + +00:40:04.960 --> 00:40:10.439 +So, Finally, we have a lot of documentation. + +00:40:10.440 --> 00:40:12.599 +This is just a link to the videos, + +00:40:12.600 --> 00:40:16.239 +which is in the readme and in the manuals. + +00:40:16.240 --> 00:40:21.399 +There's two demos or tutorials. One to get you started. + +00:40:21.400 --> 00:40:24.719 +Notice I'm using these implicit buttons, so keystrokes, + +00:40:24.720 --> 00:40:26.879 +and I can just made a return on that. + +00:40:26.880 --> 00:40:30.519 +And that takes me to, here's all the videos. + +00:40:30.520 --> 00:40:34.239 +And you can get started with that + +00:40:34.240 --> 00:40:38.279 +or just interact with this demo that we have. + +00:40:38.280 --> 00:40:41.519 +And there's one for the K Outliner as well. + +00:40:41.520 --> 00:40:45.399 +One of the things that If you're into videos + +00:40:45.400 --> 00:40:46.919 +and you need to link to them, + +00:40:46.920 --> 00:40:50.519 +notice what you're seeing here. This is a hyperbole feature + +00:40:50.520 --> 00:40:54.919 +which is very difficult to achieve any other way that I've seen + +00:40:54.920 --> 00:40:59.279 +where you want a specific start and stop time + +00:40:59.280 --> 00:41:01.039 +in a video that you want to play. + +00:41:01.040 --> 00:41:05.639 +Hyperbole has a built-in link type for that. + +00:41:05.640 --> 00:41:08.760 +as you see here. So this is the name of the link + +00:41:08.760 --> 00:41:10.919 +that you can reference it by, + +00:41:10.920 --> 00:41:14.279 +and then this is the actual link expression. + +00:41:14.280 --> 00:41:17.479 +So I could just go and play a video right here, + +00:41:17.480 --> 00:41:22.079 +and this is from one long intro to hyperbole that we did. + +00:41:22.080 --> 00:41:25.759 +So it's just linking to the specific sections. + +00:41:25.760 --> 00:41:27.439 +But that's something, again, + +00:41:27.440 --> 00:41:29.519 +this could be embedded anywhere. + +00:41:29.520 --> 00:41:33.759 +in any file and it would start to play. + +00:41:33.760 --> 00:41:36.559 +Uh, I guess I could try YouTube. + +00:41:36.560 --> 00:41:43.239 +Well, I don't want to. Yeah. Okay. It's on my other screen. + +00:41:43.240 --> 00:41:48.199 +So, but it did, it did, uh, link to it. + +00:41:48.200 --> 00:41:53.319 +So, um, yeah, just, you know, tremendous capability + +00:41:53.320 --> 00:41:56.919 +to interlink your information that way. + +00:41:56.920 --> 00:42:00.359 +And, uh, You know, again, you learn it bit by bit. + +00:42:00.360 --> 00:42:04.279 +You can study one particular section right here. + +00:42:04.280 --> 00:42:09.039 +Just jump directly to that if you want to know about it. + +00:42:09.040 --> 00:42:13.319 +The manual is interlinked, has an extensive glossary, + +00:42:13.320 --> 00:42:16.119 +cross-references of sections. + +00:42:16.120 --> 00:42:23.119 +And if you go in there, this is the hyperlinked manual. + +00:42:23.120 --> 00:42:25.119 +So this is the structure of it + +00:42:25.120 --> 00:42:27.799 +with all the subsystems documented. + +00:42:27.800 --> 00:42:31.519 +But one of the sections we've added + +00:42:31.520 --> 00:42:33.559 +is developing with hyperbole. + +00:42:33.560 --> 00:42:37.319 +So if you are or you want to create your own button types, + +00:42:37.320 --> 00:42:38.919 +this explains how to do it. + +00:42:38.920 --> 00:42:42.959 +Creating types, you can create your own action + +00:42:42.960 --> 00:42:44.999 +and implicit button types. + +00:42:45.000 --> 00:42:48.359 +And if you look in here, there are three ways + +00:42:48.360 --> 00:42:55.039 +to create implicit button types from simpler to harder. + +00:42:55.040 --> 00:42:59.079 +So like, here's an example + +00:42:59.080 --> 00:43:03.679 +where the do pressing control X after this expression + +00:43:03.680 --> 00:43:07.199 +defines a new action button link type called pilot. + +00:43:07.200 --> 00:43:13.359 +So let's say, I don't know if I have this set up, but we can try it. + +00:43:13.360 --> 00:43:21.999 +Yeah, I don't have the variable setup, + +00:43:22.000 --> 00:43:25.759 +but basically, you know, it can get you. + +00:43:25.760 --> 00:43:31.359 +This is a one line definition of a new action type. + +00:43:31.360 --> 00:43:36.399 +that can get you to a Python file + +00:43:36.400 --> 00:43:39.639 +based on whatever your Python path is set to + +00:43:39.640 --> 00:43:42.919 +with this simple syntax right here. + +00:43:42.920 --> 00:43:45.199 +And here we're going to the file. + +00:43:45.200 --> 00:43:48.399 +So we have no idea where this is on the file system. + +00:43:48.400 --> 00:43:54.959 +And the same way like if you use man path, Python path, + +00:43:54.960 --> 00:44:08.599 +you can embed buttons. Let's just go to scratch buffer. + +00:44:08.600 --> 00:44:17.919 +My first read-only. It doesn't want me to go. + +00:44:17.920 --> 00:44:24.999 +It must be kind of strange. + +00:44:25.000 --> 00:44:34.799 +Something with this key window that I have over here. + +00:44:34.800 --> 00:44:41.039 +Let me just move off there. Look at that. + +00:44:41.040 --> 00:44:46.519 +Maybe it's just activating that. + +00:44:46.520 --> 00:44:53.319 +Yeah, it keeps jumping back there. + +00:44:53.320 --> 00:44:55.919 +I don't know. I have to get this straight. + +00:44:55.920 --> 00:45:02.199 +Yeah, it's not letting me type the buttons. + +00:45:02.200 --> 00:45:15.839 +Let me see if I can turn off the key casting. + +00:45:15.840 --> 00:45:23.519 +Yeah, maybe that'll help. just gonna exit out of here. + +00:45:23.520 --> 00:45:32.960 +Does anybody have any questions they want to cover? + +00:45:33.000 --> 00:45:39.079 +I was just gonna show you yeah a little more on type definitions + +00:45:39.080 --> 00:45:53.119 +if there was any interest OK, there's nobody piping up. + +00:45:53.120 --> 00:45:56.999 +Let me see if there's any other questions. + +00:45:57.000 --> 00:46:04.439 +Hi, Bob. I haven't seen any more questions. + +00:46:04.440 --> 00:46:10.839 +Yeah, so maybe it's you, me, and someone called Max is here in the channel. + +00:46:10.840 --> 00:46:19.479 +OK. Okay, so if Max doesn't have any questions + +00:46:19.480 --> 00:46:24.839 +and there aren't other people, we can just end it there. + +00:46:24.840 --> 00:46:34.479 +I don't want to have an audience of zero or talk to that. + +00:46:34.480 --> 00:46:37.919 +So, but I think that was a good overview, Max, right? + +00:46:37.920 --> 00:46:45.479 +Yes, definitely covered a lot in a short time. + +00:46:45.480 --> 00:46:48.639 +And hopefully, you know, just try it out. + +00:46:48.640 --> 00:46:52.399 +At the top here, it shows you how to install it. + +00:46:52.400 --> 00:46:56.559 +It's pretty simple, basic package and installation. + +00:46:56.560 --> 00:47:02.719 +And we're happy to help anybody get started if they need to. + +00:47:02.720 --> 00:47:05.199 +So thanks, everyone. + +00:47:05.200 --> 00:47:09.279 +And we'll answer any further questions on the Etherpad after this. diff --git a/2025/captions/emacsconf-2025-latex--latex-export-in-orgmode-the-overhaul--pedro-a-aranda-gutirrez--main.vtt b/2025/captions/emacsconf-2025-latex--latex-export-in-orgmode-the-overhaul--pedro-a-aranda-gutirrez--main.vtt new file mode 100644 index 00000000..9f354abd --- /dev/null +++ b/2025/captions/emacsconf-2025-latex--latex-export-in-orgmode-the-overhaul--pedro-a-aranda-gutirrez--main.vtt @@ -0,0 +1,1402 @@ +WEBVTT + +00:00:00.000 --> 00:00:04.456 +Okay. Good afternoon, morning or evening, + +00:00:04.457 --> 00:00:06.519 +whatever it is in your airtime zone. + +00:00:06.520 --> 00:00:10.959 +I'm Pedro Aranda and I'm going to be talking about + +00:00:10.960 --> 00:00:12.959 +what I've been doing + +00:00:12.960 --> 00:00:16.999 +with the latest backend in Org Mode + +00:00:17.000 --> 00:00:24.719 +and the different Sorry, and the way it treats fonts. + +00:00:24.720 --> 00:00:28.279 +Just a couple of words before + +00:00:28.280 --> 00:00:30.359 +I am going to go through motivation, + +00:00:30.360 --> 00:00:35.279 +the evolution and get you an idea of what you can get + +00:00:35.280 --> 00:00:38.079 +from the feature branch that I have started + +00:00:38.080 --> 00:00:41.399 +and give a couple of demos. + +00:00:41.400 --> 00:00:47.779 +actually my motivation is I was using ox-latex currently + +00:00:47.780 --> 00:00:51.439 +and b and ox-beamer for as a foundation for my activities + +00:00:51.440 --> 00:00:54.399 +mainly for lecture notes and lecture slides + +00:00:54.400 --> 00:01:01.359 +so i came from pure latex and beamers + +00:01:01.360 --> 00:01:04.519 +and for me the real cool use case + +00:01:04.520 --> 00:01:05.959 +or I would say this was + +00:01:05.960 --> 00:01:07.959 +the killer use case for me was + +00:01:07.960 --> 00:01:09.239 +I have a programming lecture + +00:01:09.240 --> 00:01:12.199 +which is sort of a Python 101 + +00:01:12.200 --> 00:01:14.199 +and when I'm live in the lecture + +00:01:14.200 --> 00:01:18.279 +I can go and if the pupils ask me I can modify code, + +00:01:18.280 --> 00:01:21.079 +show modified code and results on the fly + +00:01:21.080 --> 00:01:25.119 +and that's something that really impresses the kids + +00:01:25.120 --> 00:01:30.159 +and makes them understand what we are talking about. + +00:01:30.160 --> 00:01:34.399 +From my pro-subjective point of view, in some, + +00:01:34.400 --> 00:01:38.159 +mainly in ox-beamer, some of the things that I was missing + +00:01:38.160 --> 00:01:41.879 +is that emojis would really break the monotony + +00:01:41.880 --> 00:01:47.679 +and I missed the support for emojis and stock Beamer themes. + +00:01:47.680 --> 00:01:52.159 +And some fonts I also found were suboptimal + +00:01:52.160 --> 00:01:56.639 +or difficult to adapt in case they need an adaptation. + +00:01:56.640 --> 00:02:01.799 +So, for example, people who need special fonts + +00:02:01.800 --> 00:02:05.799 +because of their special capabilities, + +00:02:05.800 --> 00:02:11.159 +it's difficult to get those fonts from the stock themes + +00:02:11.160 --> 00:02:17.359 +and from the stock font implementations you have there. + +00:02:17.360 --> 00:02:19.399 +So, requirements on mice + +00:02:19.400 --> 00:02:21.479 +from the Emacs site to do this is none, + +00:02:21.480 --> 00:02:24.999 +because basically, okay, the only thing I want + +00:02:25.000 --> 00:02:27.159 +is to work on a vanilla Emacs, + +00:02:27.160 --> 00:02:28.399 +which is more or less recent, + +00:02:28.400 --> 00:02:30.119 +because yes, I'm a bit of a freak + +00:02:30.120 --> 00:02:32.479 +and I compile it every two, three, + +00:02:32.480 --> 00:02:36.839 +I get it from master and compile it every two, three days. + +00:02:36.840 --> 00:02:40.599 +And Yahoo, I had to change to Neumark, + +00:02:40.600 --> 00:02:47.359 +and I'm able now to get my vanilla Neumarks within four. + +00:02:47.360 --> 00:02:53.359 +So that was a big accomplishment in these last days. + +00:02:53.360 --> 00:02:55.119 +What is the evolution? + +00:02:55.120 --> 00:03:00.719 +I mean my personal evolution and my take of xLatex + +00:03:00.720 --> 00:03:05.919 +was I put everything in a in a latex file + +00:03:05.920 --> 00:03:09.959 +and I input it through the latex shader and that's it. + +00:03:09.960 --> 00:03:12.319 +But that was not very beginner friendly + +00:03:12.320 --> 00:03:15.719 +and once I had some people interested in this, + +00:03:15.720 --> 00:03:19.159 +oh wow I can modify the code on the fly + +00:03:19.160 --> 00:03:21.119 +and see the results on the fly, + +00:03:21.120 --> 00:03:26.719 +it was more difficult for them to give it a go. + +00:03:26.720 --> 00:03:32.359 +So I just, because they, + +00:03:32.360 --> 00:03:36.919 +there are people who have not that big, + +00:03:36.920 --> 00:03:41.159 +that much experience with LaTeX + +00:03:41.160 --> 00:03:44.919 +and It can even be a bridge to introduce people into latex. + +00:03:44.920 --> 00:03:48.959 +So, in any case, it was not very beginner-friendly + +00:03:48.960 --> 00:03:52.799 +and I had complaints on that. + +00:03:52.800 --> 00:03:57.159 +So, what I think was, we can do better. + +00:03:57.160 --> 00:04:00.399 +My first attempt was something that was completely neutral + +00:04:00.400 --> 00:04:02.879 +to Babel or Polyglosia. + +00:04:02.880 --> 00:04:06.199 +and it was made basically for font Lattesch + +00:04:06.200 --> 00:04:08.839 +although some of the things can for rural Lattesch + +00:04:08.840 --> 00:04:14.279 +and some of the things can also be used with the latest. + +00:04:14.280 --> 00:04:16.519 +So overriding template fonts + +00:04:16.520 --> 00:04:21.279 +and taking into account pullback fonts + +00:04:21.280 --> 00:04:23.839 +was something that I learned uh uh + +00:04:23.840 --> 00:04:27.959 +when we started this conversation + +00:04:27.960 --> 00:04:29.839 +and the only problem with this + +00:04:29.840 --> 00:04:34.799 +is that fallback fonts only work for latex + +00:04:34.800 --> 00:04:40.679 +and because uh because it doesn't support them + +00:04:40.680 --> 00:04:42.439 +actually for fallback points is a lua feature + +00:04:42.440 --> 00:04:45.319 +There was already something in the list + +00:04:45.320 --> 00:04:48.399 +regarding script detection which helped me a lot. + +00:04:48.400 --> 00:04:52.399 +So big recognition to Romano Lafias for that + +00:04:52.400 --> 00:04:57.679 +and for his publishing the algorithm or the script + +00:04:57.680 --> 00:05:04.399 +and the in the org mode mailing list. + +00:05:04.400 --> 00:05:11.319 +And then came my sort of little nightmare, + +00:05:11.320 --> 00:05:13.879 +which was when we started talking + +00:05:13.880 --> 00:05:17.359 +about internationalization or localization. + +00:05:17.360 --> 00:05:21.599 +Looking back, I have a very strange feeling + +00:05:21.600 --> 00:05:22.919 +about a blurring target there. + +00:05:22.920 --> 00:05:29.679 +Because the reality being very, very frank, did I need it? + +00:05:29.680 --> 00:05:34.919 +Really no, because I just needed + +00:05:34.920 --> 00:05:39.999 +to add Spanish with Babel and that was it. + +00:05:40.000 --> 00:05:43.199 +Well actually for me it still is + +00:05:43.200 --> 00:05:46.519 +and you can put the British, German or Italian + +00:05:46.520 --> 00:05:48.359 +it continues to be true for me + +00:05:48.360 --> 00:05:51.839 +so I had personally I had little interest in doing that + +00:05:51.840 --> 00:05:55.319 +but I took it as a challenge + +00:05:55.320 --> 00:06:02.479 +which has shown to be really tough. + +00:06:02.480 --> 00:06:05.799 +What do you get from the feature branch? The feature branch + +00:06:05.800 --> 00:06:08.999 +adds font management for font spec, + +00:06:09.000 --> 00:06:10.839 +which is not strictly needed + +00:06:10.840 --> 00:06:16.079 +when you are on Latin, Cyrillic, and Greek scripts + +00:06:16.080 --> 00:06:20.599 +as long as the fonts in your template support them. + +00:06:20.600 --> 00:06:28.799 +But again, it's a nice way to get better support here. + +00:06:28.800 --> 00:06:33.039 +You don't need it if you're happy with the fonts you get + +00:06:33.040 --> 00:06:38.439 +from the templates that you use both for Beamer + +00:06:38.440 --> 00:06:40.359 +and the document classes in LaTeX. + +00:06:40.360 --> 00:06:43.639 +If you don't want to use alternative fonts, + +00:06:43.640 --> 00:06:47.999 +you don't need it, but you would need it. + +00:06:48.000 --> 00:06:50.639 +Of course, if you don't want things like, + +00:06:50.640 --> 00:06:55.719 +for example, emojis or need emojis, + +00:06:55.720 --> 00:06:59.359 +you really don't need forward fonts. + +00:06:59.360 --> 00:07:03.959 +So my idea is that the next thing that you can add + +00:07:03.960 --> 00:07:07.319 +is Babel and Polyglos here + +00:07:07.320 --> 00:07:13.079 +for enhanced localization and multilingual documents there. + +00:07:13.080 --> 00:07:17.799 +And at the end, my vision was that the keywords involved + +00:07:17.800 --> 00:07:19.799 +would be language, the main language. + +00:07:19.800 --> 00:07:23.039 +And then a nice idea from Ihor + +00:07:23.040 --> 00:07:27.199 +was to put all the secondary languages there too. + +00:07:27.200 --> 00:07:30.559 +Then specify the LaTeX compiler + +00:07:30.560 --> 00:07:32.639 +and then what I've added is a keyword + +00:07:32.640 --> 00:07:34.279 +which is LaTeX Montylang + +00:07:34.280 --> 00:07:37.879 +which can be fontspec or babel or polyglossia + +00:07:37.880 --> 00:07:40.319 +for localized documents. + +00:07:40.320 --> 00:07:45.359 +By default, this thing is nil and when it is nil, + +00:07:45.360 --> 00:07:51.719 +you get the behavior from OrgBug + +00:07:51.720 --> 00:07:56.559 +that you already are used to if you don't want to switch. + +00:07:56.560 --> 00:08:00.559 +and I was there and I was really + +00:08:00.560 --> 00:08:03.479 +was chirped into the conversation + +00:08:03.480 --> 00:08:06.799 +and I'm really helpful and a big thanks to him + +00:08:06.800 --> 00:08:09.199 +because he also had a an easy idea + +00:08:09.200 --> 00:08:13.079 +to support Chinese and Japanese documents + +00:08:13.080 --> 00:08:17.239 +so that the only thing that you need is to add the language + +00:08:17.240 --> 00:08:19.879 +that you're going to write your document in + +00:08:19.880 --> 00:08:23.639 +very very big thank you for that + +00:08:23.640 --> 00:08:25.399 +because that was really a challenge + +00:08:25.400 --> 00:08:29.279 +not being able to decipher + +00:08:29.280 --> 00:08:32.639 +what I was what I was coding there + +00:08:32.640 --> 00:08:34.439 +in terms of I have a document + +00:08:34.440 --> 00:08:37.519 +I copy and paste it from some place + +00:08:37.520 --> 00:08:40.039 +and from there I get my answer I get my my pdf + +00:08:40.040 --> 00:08:47.279 +and I compare whether it is correct or not + +00:08:47.280 --> 00:08:50.239 +So what is behind the scenes? + +00:08:50.240 --> 00:08:52.959 +I've always suggested that in order + +00:08:52.960 --> 00:08:55.239 +to use the feature branch efficiently + +00:08:55.240 --> 00:08:59.919 +you create a file with the default values + +00:08:59.920 --> 00:09:02.439 +you need for your variables + +00:09:02.440 --> 00:09:06.199 +and that's the this famous.locals.el files. + +00:09:06.200 --> 00:09:10.239 +What I do is I have a generic one + +00:09:10.240 --> 00:09:12.079 +in my home documents directory + +00:09:12.080 --> 00:09:16.599 +and this is used for all the org documents + +00:09:16.600 --> 00:09:20.559 +that are in subdirectories from there. + +00:09:20.560 --> 00:09:24.039 +Why? Because normally you will not be + +00:09:24.040 --> 00:09:26.599 +changing your fonts that often. + +00:09:26.600 --> 00:09:29.599 +and if you need you can always go + +00:09:29.600 --> 00:09:33.479 +and have your configuration locally. + +00:09:33.480 --> 00:09:38.639 +So it's this point where I'm collecting + +00:09:38.640 --> 00:09:40.759 +my phone configuration and + +00:09:40.760 --> 00:09:47.519 +For me, this gives me a very, very nice quick start + +00:09:47.520 --> 00:09:49.639 +for new documents and presentations. + +00:09:49.640 --> 00:09:54.639 +And there you can even configure a lot of compiler + +00:09:54.640 --> 00:09:57.919 +and font language management too, + +00:09:57.920 --> 00:10:00.919 +so you have everything in a file. + +00:10:00.920 --> 00:10:04.759 +And the other nice thing for that + +00:10:04.760 --> 00:10:08.479 +is that you can also include that in a subdirectory. + +00:10:08.480 --> 00:10:13.199 +And if this subdirectory is something that you're sharing + +00:10:13.200 --> 00:10:14.479 +in a project with other people, + +00:10:14.480 --> 00:10:17.759 +you are already configuring the, say, + +00:10:17.760 --> 00:10:23.559 +quote, unquote, corporate look and feel for your documents + +00:10:23.560 --> 00:10:26.079 +in that project for everyone + +00:10:26.080 --> 00:10:28.919 +and no one else has to care about + +00:10:28.920 --> 00:10:35.119 +how this document has to be configured. + +00:10:35.120 --> 00:10:38.679 +One of the things that I really like in this approach + +00:10:38.680 --> 00:10:40.439 +is that it is a grow-as-you-go. + +00:10:40.440 --> 00:10:44.079 +So, for example, you can start with something like that, + +00:10:44.080 --> 00:10:48.439 +which is I have my fonts, my basic fonts for main, + +00:10:48.440 --> 00:10:51.479 +which is the Serif font, for sans, + +00:10:51.480 --> 00:10:54.079 +which is the Sans Serif font, for maths, + +00:10:54.080 --> 00:10:58.639 +and for the mono, with some features like to make them scale. + +00:10:58.640 --> 00:11:02.679 +This is something that is uh provided by you + +00:11:02.680 --> 00:11:05.359 +through the font spec package + +00:11:05.360 --> 00:11:08.959 +and you're happy with it and you work with it + +00:11:08.960 --> 00:11:11.919 +and given a in a given moment + +00:11:11.920 --> 00:11:14.439 +you go and you have your own problems + +00:11:14.440 --> 00:11:16.599 +and or your own challenge + +00:11:16.600 --> 00:11:20.279 +and you need to have for example emojis for one of the fonts + +00:11:20.280 --> 00:11:24.959 +and what you do is in this case you just add the emojis + +00:11:24.960 --> 00:11:31.239 +as a fallback font in in the font that where you want to replace this + +00:11:31.240 --> 00:11:36.119 +is this is what i'm doing right now for this presentation and you will see + +00:11:36.120 --> 00:11:39.119 +You can always, as I've said, + +00:11:39.120 --> 00:11:42.359 +you can always have your dear locals + +00:11:42.360 --> 00:11:46.319 +and you can copy that into a working directory + +00:11:46.320 --> 00:11:49.439 +which needs special adaptations or has special needs + +00:11:49.440 --> 00:11:54.119 +and from there you have that directory + +00:11:54.120 --> 00:11:59.079 +with your modified or customized their local study l file + +00:11:59.080 --> 00:12:05.439 +so font spec is normally enough + +00:12:05.440 --> 00:12:09.999 +but sometimes you can't control all the fonts + +00:12:10.000 --> 00:12:15.479 +with font spec only so and there you have a polyglot here + +00:12:15.480 --> 00:12:19.319 +and babel coming to your help + +00:12:19.320 --> 00:12:21.359 +this may also be the case + +00:12:21.360 --> 00:12:25.879 +that you are working in an intended language + +00:12:25.880 --> 00:12:28.959 +i don't know which but an intended language and you found + +00:12:28.960 --> 00:12:31.279 +and you wanted to see how that was configured + +00:12:31.280 --> 00:12:34.999 +and you found the latest example + +00:12:35.000 --> 00:12:38.639 +that used Babel or Polyglossia. + +00:12:38.640 --> 00:12:42.559 +The exporter provides you three variables + +00:12:42.560 --> 00:12:48.679 +to configure both font spec, Polyglossia and Babel. + +00:12:48.680 --> 00:12:56.799 +So just as an example of how I picture this is, + +00:12:56.800 --> 00:12:59.359 +uh, you find it in the internet, + +00:12:59.360 --> 00:13:01.679 +something like that, uh, something like this, + +00:13:01.680 --> 00:13:05.599 +because you have your document and you need tie. + +00:13:05.600 --> 00:13:09.999 +So, and I found an example in the internet + +00:13:10.000 --> 00:13:12.679 +that tells me that I'm going to be using + +00:13:12.680 --> 00:13:15.079 +Babel main is going to be English. + +00:13:15.080 --> 00:13:17.919 +And I'm also going to have a tie. + +00:13:17.920 --> 00:13:22.879 +and then they tell me that for english + +00:13:22.880 --> 00:13:26.639 +i'm going to be using noto serif for the main + +00:13:26.640 --> 00:13:31.759 +for the main of the serif font noto sans for the sans font + +00:13:31.760 --> 00:13:35.799 +and then when i'm writing things in thai + +00:13:35.800 --> 00:13:40.119 +i'm going to be using noto serif thai and noto sans thai + +00:13:40.120 --> 00:13:42.399 +That's what I see in the internet. + +00:13:42.400 --> 00:13:47.159 +So what you can always do, what you would do in this case, + +00:13:47.160 --> 00:13:54.279 +is I'm going to get and map the font configurations + +00:13:54.280 --> 00:13:59.239 +from the latest into this variable. + +00:13:59.240 --> 00:14:03.479 +Things that you have to take into account here + +00:14:03.480 --> 00:14:05.919 +is, for example, the language. + +00:14:05.920 --> 00:14:11.919 +The language here is Thai. You have the language + +00:14:11.920 --> 00:14:16.759 +that you're intending this font for is Thai. + +00:14:16.760 --> 00:14:21.279 +So this appears here. In case you don't have any language, + +00:14:21.280 --> 00:14:24.799 +like in the first two lines, + +00:14:24.800 --> 00:14:27.239 +you just say that the language is nil, + +00:14:27.240 --> 00:14:31.439 +which is the language for the default language. + +00:14:31.440 --> 00:14:34.799 +The other thing is in my example, + +00:14:34.800 --> 00:14:40.039 +in this example that I found in the internet, + +00:14:40.040 --> 00:14:46.319 +I have my properties for the fonts in this part in Latex + +00:14:46.320 --> 00:14:52.239 +and I put them as properties here. + +00:14:52.240 --> 00:14:55.079 +That's the whole idea behind the feature branch. + +00:14:55.080 --> 00:15:03.119 +The Babel provide part is also integrated + +00:15:03.120 --> 00:15:10.119 +from the Org header, mainly from the language line. + +00:15:10.120 --> 00:15:14.639 +We have a variable in case you need to tweak it, + +00:15:14.640 --> 00:15:21.079 +but normally the defaults provided by Org are good enough. + +00:15:21.080 --> 00:15:27.679 +So what is the rationale behind my take at Latex Fonts Management? + +00:15:27.680 --> 00:15:31.359 +And that's something that might be something very personal. + +00:15:31.360 --> 00:15:33.759 +When am I using FontSpec? + +00:15:33.760 --> 00:15:37.239 +I'm using FontSpec when I'm with Lua or Zlatex + +00:15:37.240 --> 00:15:40.279 +and I want fonts that are different + +00:15:40.280 --> 00:15:42.439 +from those specified in the Latex class. + +00:15:42.440 --> 00:15:49.279 +That's point number one. I will also go for font spec + +00:15:49.280 --> 00:15:52.599 +when I need to support scripts, + +00:15:52.600 --> 00:15:54.559 +but I'm missing in the fonts I use, + +00:15:54.560 --> 00:15:59.479 +and I can use fallback fonts for that. I have two. + +00:15:59.480 --> 00:16:05.239 +The only limitation I have here is the following. + +00:16:05.240 --> 00:16:09.039 +All languages must be left to right. + +00:16:09.040 --> 00:16:12.799 +And if you don't say anything at all, + +00:16:12.800 --> 00:16:16.519 +the LATIC backend assumes that you want the dates, + +00:16:16.520 --> 00:16:19.159 +standard names for the abstract and so on + +00:16:19.160 --> 00:16:21.039 +in American English. if you're using them. + +00:16:21.040 --> 00:16:25.439 +In many cases, you're not using any sort of + +00:16:25.440 --> 00:16:32.319 +abstract table of contents and so on + +00:16:32.320 --> 00:16:37.239 +and you don't need that. + +00:16:37.240 --> 00:16:44.599 +The important thing is maybe date management. + +00:16:44.600 --> 00:16:50.399 +If you need dates, headings + +00:16:50.400 --> 00:16:56.919 +or anything in any other language or locale, + +00:16:56.920 --> 00:17:06.599 +then yes, then you need to use Babel or Polyglosia. + +00:17:06.600 --> 00:17:12.079 +Choice, Depends. Can use poly loss here, + +00:17:12.080 --> 00:17:15.639 +or you can use Babel, whatever you want. + +00:17:15.640 --> 00:17:20.079 +Also, in some cases, it will depend + +00:17:20.080 --> 00:17:21.839 +if you've been researching a bit + +00:17:21.840 --> 00:17:24.119 +of how this is done with pure latest, + +00:17:24.120 --> 00:17:25.999 +it will be also depending on, uh, + +00:17:26.000 --> 00:17:28.919 +on the examples that you get. + +00:17:28.920 --> 00:17:35.719 +So, what can you, when you are using + +00:17:35.720 --> 00:17:41.639 +Babel or Polygross here, what do you have? + +00:17:41.640 --> 00:17:46.239 +You have your dates, your headings, and so on. + +00:17:46.240 --> 00:17:48.279 +You might need to control the text + +00:17:48.280 --> 00:17:51.239 +in the sense that what passage + +00:17:51.240 --> 00:17:53.479 +is written in what language. + +00:17:53.480 --> 00:17:58.119 +For example, for things like hyphenation + +00:17:58.120 --> 00:18:01.919 +and some ways of writing the hyphens in a + +00:18:01.920 --> 00:18:12.039 +and direct speech and things like that. + +00:18:12.040 --> 00:18:17.359 +And the other place where you need + +00:18:17.360 --> 00:18:19.199 +other Babel or polyglots here, + +00:18:19.200 --> 00:18:24.559 +and you will see that because all examples + +00:18:24.560 --> 00:18:26.839 +that you can get for later in this case + +00:18:26.840 --> 00:18:30.679 +is when you have a language + +00:18:30.680 --> 00:18:38.199 +that uses right to left alignment + +00:18:38.200 --> 00:18:40.439 +like Arabic, Hebrew and others. + +00:18:40.440 --> 00:18:45.359 +So One note of, I would say, care is you always use the, + +00:18:45.360 --> 00:18:46.479 +if you use Unicode fonts + +00:18:46.480 --> 00:18:49.359 +that includes the scripts as you need, + +00:18:49.360 --> 00:18:51.759 +you will have done, that will be a great leap for you + +00:18:51.760 --> 00:18:53.759 +because that simplifies the configuration a lot. + +00:18:53.760 --> 00:18:55.359 +Now a couple of demos. + +00:18:55.360 --> 00:19:01.079 +I don't know if you've noticed + +00:19:01.080 --> 00:19:03.359 +first demo is that I'm using. + +00:19:03.360 --> 00:19:05.119 +fonts but are not the official fonts + +00:19:05.120 --> 00:19:06.399 +in this Beamer template + +00:19:06.400 --> 00:19:07.959 +which is by the way Boadilla. + +00:19:07.960 --> 00:19:10.519 +This would be the first thing + +00:19:10.520 --> 00:19:14.079 +so I've been using other fonts + +00:19:14.080 --> 00:19:17.639 +and they are at least from what I get in class + +00:19:17.640 --> 00:19:20.439 +they are more readable than the official + +00:19:20.440 --> 00:19:22.439 +than the default fonts in Poliglossi + +00:19:22.440 --> 00:19:24.439 +that you get in Babel for the Boadilla theme. + +00:19:24.440 --> 00:19:25.959 +Another thing is what I've told you, + +00:19:25.960 --> 00:19:27.559 +I have my own things like emojis. + +00:19:27.560 --> 00:19:29.799 +Now, if you allow me for a second, + +00:19:29.800 --> 00:19:38.399 +I'm going to switch to the Emacs + +00:19:38.400 --> 00:19:40.279 +which is running behind the scenes to show you what. + +00:19:40.280 --> 00:19:45.719 +Okay, fine. So, this is the presentation. + +00:19:45.720 --> 00:19:47.879 +that I have here, and as you see, + +00:19:47.880 --> 00:19:50.959 +I'm using Lua Latex and just one spec. + +00:19:50.960 --> 00:19:59.479 +given I don't know why I would I would need this + +00:19:59.480 --> 00:20:01.079 +this is an English presentation + +00:20:01.080 --> 00:20:03.039 +but just to show you what you can do + +00:20:03.040 --> 00:20:09.359 +if I go back here and I go to the beginning of the presentation + +00:20:09.360 --> 00:20:13.159 +and now what I don't think you're showing anything oh thank you + +00:20:13.160 --> 00:20:21.399 +Okay, this is the presentation, right? + +00:20:21.400 --> 00:20:33.559 +So what I'm going to do is I'm going to go back + +00:20:33.560 --> 00:20:35.839 +and I'm going to show the full screen. + +00:20:35.840 --> 00:20:37.199 +And in this full screen, + +00:20:37.200 --> 00:20:41.919 +you see the presentation on one side + +00:20:41.920 --> 00:20:46.079 +and you see Emacs on the other side. Oh, still nothing. + +00:20:46.080 --> 00:20:50.279 +Yeah, we're not seeing your screen at the moment, sorry. + +00:20:50.280 --> 00:20:54.079 +Oh, thank you. Thank you for that. + +00:20:54.080 --> 00:20:59.959 +Now it's starting to come. Okay. Yay! Fine. + +00:20:59.960 --> 00:21:03.479 +So this presentation, I've done it with Lua Latex, + +00:21:03.480 --> 00:21:05.839 +and what I add here is font spec and English language. + +00:21:05.840 --> 00:21:10.279 +Just to show you, but with the same configuration, + +00:21:10.280 --> 00:21:14.279 +with the same font spec configuration, + +00:21:14.280 --> 00:21:15.439 +but adding Polyglossia. + +00:21:15.440 --> 00:21:23.159 +I just have enough with adding polygons here + +00:21:23.160 --> 00:21:28.799 +with the Spanish language to get my dates correctly + +00:21:28.800 --> 00:21:32.559 +and this is something I'm going to see the date in English + +00:21:32.560 --> 00:21:46.719 +and if I now go and recompile it in a couple of seconds + +00:21:46.720 --> 00:21:48.999 +you will see that the data is in Spanish. + +00:21:49.000 --> 00:21:53.879 +We are using the same Which I can show by the way. + +00:21:53.880 --> 00:21:58.079 +I see just by adding polyglyphs here. + +00:21:58.080 --> 00:21:59.439 +I can get my dates in Spanish. + +00:21:59.440 --> 00:22:09.559 +What I have included the the locals in the. + +00:22:09.560 --> 00:22:14.999 +In this in this lines, but just to discuss it a bit more. + +00:22:15.000 --> 00:22:19.439 +I have it for all the presentations. + +00:22:19.440 --> 00:22:24.319 +I think it was here. No. For the demo. + +00:22:24.320 --> 00:22:27.719 +For the presentations I use for MX conferences. + +00:22:27.720 --> 00:22:31.119 +I have it and it's something like this. + +00:22:31.120 --> 00:22:37.359 +actually you don't need a fallback + +00:22:37.360 --> 00:22:39.439 +for for the main font here + +00:22:39.440 --> 00:22:44.239 +because the presentations are done with the sans font + +00:22:44.240 --> 00:22:46.559 +so the only thing that I would really need + +00:22:46.560 --> 00:22:48.199 +would be something like this + +00:22:48.200 --> 00:22:53.359 +this can be commented and the same happens here + +00:22:53.360 --> 00:22:56.159 +with the model this can be also commented + +00:22:56.160 --> 00:23:00.399 +and the only thing where I would really need + +00:23:00.400 --> 00:23:02.119 +a full back font is here + +00:23:02.120 --> 00:23:04.319 +and what this is telling me is that + +00:23:04.320 --> 00:23:07.079 +you have a full back for the emoji + +00:23:07.080 --> 00:23:09.799 +for the emoji script + +00:23:09.800 --> 00:23:15.399 +and you need to use the apple color emoji font with A modifier + +00:23:15.400 --> 00:23:18.759 +which in this case is that you need + +00:23:18.760 --> 00:23:21.359 +to have the half-word renderer. + +00:23:21.360 --> 00:23:24.599 +That's the only thing that you really need. + +00:23:24.600 --> 00:23:26.679 +Where do I get all these things from? + +00:23:26.680 --> 00:23:29.039 +All these things I get from the different parts + +00:23:29.040 --> 00:23:32.079 +and from different scripts in the Internet. + +00:23:32.080 --> 00:23:38.039 +I also have a couple of other things to show. + +00:23:38.040 --> 00:23:42.919 +For example, first of all, I do not need this. + +00:23:42.920 --> 00:23:44.749 +This is a letter that I've been writing this morning + +00:23:44.750 --> 00:23:55.640 +and I'm not using the full feature branches at all + +00:23:55.641 --> 00:23:58.119 +because I just needed a sans font + +00:23:58.120 --> 00:24:02.119 +and it's going to be a letter that I'm writing in. + +00:24:02.120 --> 00:24:06.119 +with the sans font and the only thing I need + +00:24:06.120 --> 00:24:09.119 +was Spanish for the date anyhow + +00:24:09.120 --> 00:24:14.719 +how did what was my first thing that I did + +00:24:14.720 --> 00:24:19.639 +with the back end back in I think it was April + +00:24:19.640 --> 00:24:23.079 +we had a this comes from the mailing list + +00:24:23.080 --> 00:24:26.759 +we had someone who had this who had this problem right + +00:24:26.760 --> 00:24:29.559 +and he wanted to add emojis + +00:24:29.560 --> 00:24:33.039 +and he had problems with the verbatim font + +00:24:33.040 --> 00:24:35.279 +And that's how everything got started. + +00:24:35.280 --> 00:24:42.599 +If you now go and I get my period + +00:24:42.600 --> 00:24:44.599 +of latex for that running. + +00:24:44.600 --> 00:24:50.559 +Well, I actually, all my latex is supported for that. + +00:24:50.560 --> 00:24:58.119 +And this was what I showed in one of the Emacs, Org Mode meetups. + +00:24:58.120 --> 00:25:00.079 +And there you see that We have the emojis. + +00:25:00.080 --> 00:25:06.879 +We had the fonts for the different things. We had maps. + +00:25:06.880 --> 00:25:13.799 +And you could even go and add scripts + +00:25:13.800 --> 00:25:16.319 +and little passages and different scripts. + +00:25:16.320 --> 00:25:22.359 +And this was done with the same principles that I want. + +00:25:22.360 --> 00:25:25.439 +I have my main font. I have the emojis. + +00:25:25.440 --> 00:25:30.559 +and I want, I have my son's phone and I have the emojis, + +00:25:30.560 --> 00:25:32.959 +the Han for Japanese and the Kana for Japanese, + +00:25:32.960 --> 00:25:36.799 +so that these characters here, + +00:25:36.800 --> 00:25:40.679 +both in the sons and in the serif passages + +00:25:40.680 --> 00:25:44.399 +are included correctly in the PDF. + +00:25:44.400 --> 00:25:49.999 +And a third thing of what you can do + +00:25:50.000 --> 00:25:53.439 +I've also shown this so this is more + +00:25:53.440 --> 00:25:55.799 +for people who have not seen it + +00:25:55.800 --> 00:26:01.399 +this is a side-by-side package a passage of + +00:26:01.400 --> 00:26:04.919 +well actually the beginning of the analysis by Xenophon + +00:26:04.920 --> 00:26:12.919 +both in in Greek and in German with some comments + +00:26:12.920 --> 00:26:18.679 +and if I go this is this is done with Polyglossia + +00:26:18.680 --> 00:26:25.279 +so if I go once again and produce + +00:26:25.280 --> 00:26:32.039 +the PDF for this just a second + +00:26:32.040 --> 00:26:41.119 +Come on. There you are. You get this. + +00:26:41.120 --> 00:26:46.399 +And there you see different fonts. + +00:26:46.400 --> 00:26:48.239 +Which fonts am I using for this? + +00:26:48.240 --> 00:26:51.279 +I'm using for the main font for me is Swissere. + +00:26:51.280 --> 00:27:01.479 +This listing is produced with Deja Vu Sansponor. + +00:27:01.480 --> 00:27:13.359 +And using Polyglos here, I'm able to go and define + +00:27:13.360 --> 00:27:15.799 +the Greek polytone for the variant, + +00:27:15.800 --> 00:27:18.799 +for the Serif variant with the Noto Serif font, + +00:27:18.800 --> 00:27:26.199 +just to differentiate it from the German text. + +00:27:26.200 --> 00:27:30.279 +And nice thing is that both in the German text + +00:27:30.280 --> 00:27:37.359 +You see for example here and with the Greek text + +00:27:37.360 --> 00:27:40.879 +everything is scaled to match + +00:27:40.880 --> 00:27:44.119 +the lower case of the main font which is free serif. + +00:27:44.120 --> 00:27:45.879 +So that everything looks + +00:27:45.880 --> 00:27:49.359 +extremely uniform and nice to read. + +00:27:49.360 --> 00:27:53.759 +So that's what you want to do. + +00:27:53.760 --> 00:27:56.519 +That's what you can do with this. + +00:27:56.520 --> 00:28:00.759 +Just a couple of final words on this. + +00:28:00.760 --> 00:28:17.519 +I want to thank once again Juan Manuel Garcia and Jim Crump + +00:28:17.520 --> 00:28:19.919 +for what they have shared. + +00:28:19.920 --> 00:28:24.079 +And I also want to thank everybody + +00:28:24.080 --> 00:28:26.479 +for productive contributions to the discussion. + +00:28:26.480 --> 00:28:32.159 +I'm saying this because I think I need a longer rest + +00:28:32.160 --> 00:28:34.839 +and I'm going to be leaving + +00:28:34.840 --> 00:28:38.559 +the feature fund untouched for a couple of months + +00:28:38.560 --> 00:28:41.719 +so that people can take the feature branch + +00:28:41.720 --> 00:28:43.519 +untouched for a couple of months. + +00:28:43.520 --> 00:28:47.599 +to see if people want to use it and how they want to use it + +00:28:47.600 --> 00:28:49.919 +and then maybe in the future we can discuss + +00:28:49.920 --> 00:28:52.559 +if we want to integrate it or not + +00:28:52.560 --> 00:28:58.839 +or if people need it and all that. Now questions, comments? + +00:28:58.840 --> 00:29:41.279 +I think there was one question on. Beautiful for. + +00:29:41.280 --> 00:29:47.119 +I think that goes beyond fonts right. + +00:29:47.120 --> 00:29:52.839 +Someone is asking what about how is about video + +00:29:52.840 --> 00:29:56.319 +mainly MP4 support on ox-latex. + +00:29:56.320 --> 00:29:58.799 +I started the presentations with many videos. + +00:29:58.800 --> 00:30:07.839 +This is something that really pushed me back using ox-latex. + +00:30:07.840 --> 00:30:18.799 +What I would say to this is I mean this goes beyond + +00:30:18.800 --> 00:30:24.319 +what we're discussing here with fonts. + +00:30:24.320 --> 00:30:29.319 +I would advise you to go and get the same + +00:30:29.320 --> 00:30:35.239 +or have the same thing that I did + +00:30:35.240 --> 00:30:39.119 +which was first of all try to write it in latex + +00:30:39.120 --> 00:30:49.599 +and then Once you have the minimal working examples, + +00:30:49.600 --> 00:30:53.159 +you can get the latest parts + +00:30:53.160 --> 00:30:58.159 +integrated into your own presentation. + +00:30:58.160 --> 00:31:01.319 +That's what I've been doing. + +00:31:01.320 --> 00:31:04.519 +By the way, I still do it, for example, not in this, + +00:31:04.520 --> 00:31:06.079 +but for my lectures, + +00:31:06.080 --> 00:31:09.119 +I have a lot of I'm using a lot of ticks + +00:31:09.120 --> 00:31:12.479 +to do graphs and animated graphs. + +00:31:12.480 --> 00:31:18.319 +And that's begin export later and export later. + +00:31:18.320 --> 00:31:20.159 +That's what I'm doing. + +00:31:20.160 --> 00:31:28.999 +Videos are generally a bit tricky because you cannot + +00:31:29.000 --> 00:31:35.119 +So I think there is something called PDF-PC that can, + +00:31:35.120 --> 00:31:37.399 +this provides a lot of cloud package + +00:31:37.400 --> 00:31:39.079 +where you can include videos + +00:31:39.080 --> 00:31:44.399 +and then they can be played through that specific program. + +00:31:44.400 --> 00:31:46.239 +And JavaScript embedding, + +00:31:46.240 --> 00:31:49.999 +that can only be done through Acrobat Reader, + +00:31:50.000 --> 00:31:54.519 +which is like also finicky. Sure, yes. + +00:31:54.520 --> 00:32:03.999 +As you said there are many things that need to be changed. + +00:32:04.000 --> 00:32:07.199 +But I mean it's always a thing of taking it + +00:32:07.200 --> 00:32:11.359 +and trying to see what you can do + +00:32:11.360 --> 00:32:13.319 +and what the specifics are. + +00:32:13.320 --> 00:32:17.079 +Maybe this can be done with Acrobat + +00:32:17.080 --> 00:32:23.959 +and with a couple of extra packages and who knows. + +00:32:23.960 --> 00:32:26.359 +And you can always keep it as as late + +00:32:26.360 --> 00:32:34.599 +as fragments inside Org, I think. Any other questions? diff --git a/2025/captions/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--answers.vtt b/2025/captions/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--answers.vtt new file mode 100644 index 00000000..f35c2d27 --- /dev/null +++ b/2025/captions/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--answers.vtt @@ -0,0 +1,1591 @@ +WEBVTT + +00:00:00.000 --> 00:00:01.759 +So let's, I'm just going to answer + +00:00:01.760 --> 00:00:04.399 +the questions as I see them on the pad. + +00:00:04.400 --> 00:00:07.079 +So yeah, this first question is really good. + +00:00:07.080 --> 00:00:09.919 +And I think it's actually this great thing + +00:00:09.920 --> 00:00:12.719 +that I did not mention is that like, + +00:00:12.720 --> 00:00:14.119 +if you have unsaved buffers, + +00:00:14.120 --> 00:00:17.679 +which is, you know, when you're actually doing editing, + +00:00:17.680 --> 00:00:21.999 +most buffers are unsaved. + +00:00:22.000 --> 00:00:25.959 +really you need something tightly integrated with Emacs + +00:00:25.960 --> 00:00:27.479 +to deal with that. + +00:00:27.480 --> 00:00:29.039 +So things like, you know, + +00:00:29.040 --> 00:00:30.239 +I demonstrated Copilot, + +00:00:30.240 --> 00:00:32.519 +I demonstrated Gptel, + +00:00:32.520 --> 00:00:35.439 +things like those things, things like Ellama, + +00:00:35.440 --> 00:00:38.719 +these things will all work with unsaved buffers + +00:00:38.720 --> 00:00:43.959 +because they work via, you know, the input is the buffer. + +00:00:43.960 --> 00:00:45.199 +as opposed to a file. + +00:00:45.200 --> 00:00:48.519 +Things like Claude Code, Gemini Code, et cetera, + +00:00:48.520 --> 00:00:49.519 +those are working with files. + +00:00:49.520 --> 00:00:51.639 +They have no idea what is going on with your buffers. + +00:00:51.640 --> 00:00:55.119 +And it could be that you can solve this problem + +00:00:55.120 --> 00:00:56.799 +by using this thing called MCP, + +00:00:56.800 --> 00:01:02.839 +which kind of gives the coding agent + +00:01:02.840 --> 00:01:05.119 +a way to see anything in particular. + +00:01:05.120 --> 00:01:06.799 +In this case, it would be Emacs + +00:01:06.800 --> 00:01:07.799 +and the state of your buffers. + +00:01:07.800 --> 00:01:11.319 +But I think that's not a particularly great solution + +00:01:11.320 --> 00:01:13.839 +if that's how you want to work. + +00:01:13.840 --> 00:01:15.719 +But I think that's kind of like + +00:01:15.720 --> 00:01:17.359 +if you're in the Claude Code + +00:01:17.360 --> 00:01:19.759 +that kind of world where you know things are happening, + +00:01:19.760 --> 00:01:24.679 +basically through a terminal. + +00:01:24.680 --> 00:01:26.399 +It's okay, like you typically + +00:01:26.400 --> 00:01:28.639 +would not be doing a mix of things. + +00:01:28.640 --> 00:01:30.119 +You would just be doing things either + +00:01:30.120 --> 00:01:32.399 +in one place or the other place. + +00:01:32.400 --> 00:01:33.599 +You know, it could be that you switch off + +00:01:33.600 --> 00:01:34.359 +from one place to another, + +00:01:34.360 --> 00:01:36.399 +but you wouldn't be doing both at the same time. + +00:01:36.400 --> 00:01:40.279 +And it's kind of a, you tend to just fall into one, + +00:01:40.280 --> 00:01:41.679 +you know, + +00:01:41.680 --> 00:01:44.759 +editing outside the editor or editing inside the editor. + +00:01:44.760 --> 00:01:47.039 +And I find myself switching between the two + +00:01:47.040 --> 00:01:48.959 +when I use those kinds of tools. + +00:01:48.960 --> 00:01:51.439 +So David, let me interrupt you for just one moment. + +00:01:51.440 --> 00:01:53.519 +I want to just take care to read out + +00:01:53.520 --> 00:01:55.079 +the question that we're answering. + +00:01:55.080 --> 00:01:58.999 +The question was, my biggest question with AI code editors + +00:01:59.000 --> 00:02:00.999 +trying to integrate with Emacs is, + +00:02:01.000 --> 00:02:04.599 +are the AI code editors able to read unsaved buffers + +00:02:04.600 --> 00:02:06.319 +and not just saved files? + +00:02:06.320 --> 00:02:11.719 +Sorry. Yes. Yeah. Thank you for reminding me to. + +00:02:11.720 --> 00:02:13.519 +I will read the questions from now on. + +00:02:13.520 --> 00:02:16.599 +But yes, that's what I think about. + +00:02:16.600 --> 00:02:20.319 +that interesting questions about unsaved buffers. + +00:02:20.320 --> 00:02:22.239 +The next question is, + +00:02:22.240 --> 00:02:23.799 +I don't agree with the comment you made + +00:02:23.800 --> 00:02:25.199 +about VS code usage dying out + +00:02:25.200 --> 00:02:26.719 +because I see companies and products + +00:02:26.720 --> 00:02:28.879 +pushing for tightly integrated agent + +00:02:28.880 --> 00:02:31.319 +and products like Windsurf. + +00:02:31.320 --> 00:02:33.239 +So thoughts on that? + +00:02:33.240 --> 00:02:35.879 +Yeah, I mean, it's really hard + +00:02:35.880 --> 00:02:36.999 +to be certain of anything, + +00:02:37.000 --> 00:02:38.439 +like things are changing very fast + +00:02:38.440 --> 00:02:40.639 +and it's very hard to predict the future. + +00:02:40.640 --> 00:02:47.839 +But the trend I see is that um, + +00:02:47.840 --> 00:02:50.919 +the sort of outside editing experience + +00:02:50.920 --> 00:02:53.519 +where you just kind of instruct a model, + +00:02:53.520 --> 00:02:56.759 +what to do is getting better. + +00:02:56.760 --> 00:02:58.679 +And as long as that keeps getting better, + +00:02:58.680 --> 00:03:00.839 +I think that's going to lessen the demand + +00:03:00.840 --> 00:03:04.879 +for these tightly integrated editing experiences. + +00:03:04.880 --> 00:03:10.839 +So it could be that, um, a lot of people, + +00:03:10.840 --> 00:03:12.839 +especially in, you know, corporate environments + +00:03:12.840 --> 00:03:14.279 +just start using, + +00:03:14.280 --> 00:03:15.599 +they're going to use whatever is + +00:03:15.600 --> 00:03:17.959 +going to make the most productive. + +00:03:17.960 --> 00:03:22.399 +And I think right now, it's not clear that that will be, + +00:03:22.400 --> 00:03:25.079 +you know, the very agent-based, you know, + +00:03:25.080 --> 00:03:27.359 +command line-centric way of doing things. + +00:03:27.360 --> 00:03:31.239 +But it certainly, the trend is, if that continues, + +00:03:31.240 --> 00:03:33.319 +I think it probably will be like that. + +00:03:33.320 --> 00:03:35.479 +So I think we'll have to see. + +00:03:35.480 --> 00:03:37.679 +I don't think your opinion is unreasonable. + +00:03:37.680 --> 00:03:40.319 +I guess I'm kind of cautiously saying + +00:03:40.320 --> 00:03:43.199 +I think it's gonna be the opposite, but I guess we'll see. + +00:03:43.200 --> 00:03:47.759 +Like, let's reconvene in a year and see what happens. + +00:03:47.760 --> 00:03:49.159 +Uh, the 3rd question answer, + +00:03:49.160 --> 00:03:55.319 +do you have any thoughts about the environmental costs + +00:03:55.320 --> 00:03:57.079 +of using either the training + +00:03:57.080 --> 00:03:59.799 +of the models are we can download or use locally + +00:03:59.800 --> 00:04:02.359 +or the larger commercial models used from the cloud. + +00:04:02.360 --> 00:04:09.839 +Um, I think. The, you know, I'm on social media, + +00:04:09.840 --> 00:04:13.039 +probably a little bit more than I should be. + +00:04:13.040 --> 00:04:15.719 +And I do see a lot of discussion there + +00:04:15.720 --> 00:04:18.639 +and a lot of concern about the environmental costs of using LLMs. + +00:04:18.640 --> 00:04:22.799 +I've looked into this as I'm also concerned + +00:04:22.800 --> 00:04:27.199 +about keeping my environmental footprint personally down. + +00:04:27.200 --> 00:04:29.199 +And I do this in many ways, + +00:04:29.200 --> 00:04:31.319 +but I certainly don't want to kind of like blow that all the water + +00:04:31.320 --> 00:04:35.039 +because I'm using LLMs so much. + +00:04:35.040 --> 00:04:38.359 +I think that the concerns are mostly overblown. + +00:04:38.360 --> 00:04:41.839 +There's a concern that, well, it uses a lot of energy. + +00:04:41.840 --> 00:04:46.599 +In aggregate, the total amount of energy + +00:04:46.600 --> 00:04:50.559 +used by the data centers in the US is a few percent. + +00:04:50.560 --> 00:04:53.839 +And this is a fraction. I think this is like LM's account + +00:04:53.840 --> 00:04:56.719 +for something like 20% now + +00:04:56.720 --> 00:05:02.479 +of all data center usage, which is a lot. + +00:05:02.480 --> 00:05:03.959 +But Those data centers are doing lots of things. + +00:05:03.960 --> 00:05:05.239 +They all need to be water cooled. + +00:05:05.240 --> 00:05:08.679 +Um, if you like per LLM prompt, + +00:05:08.680 --> 00:05:11.399 +the costs are relatively small + +00:05:11.400 --> 00:05:13.239 +and by relatively small, I mean, + +00:05:13.240 --> 00:05:14.999 +you know, people have said online, + +00:05:15.000 --> 00:05:17.879 +well, it's like a few bottles of water per prompt. + +00:05:17.880 --> 00:05:20.119 +That, that is not true. It is much, much less than that. + +00:05:20.120 --> 00:05:21.359 +It's a fraction of that. + +00:05:21.360 --> 00:05:25.119 +So, uh, I don't think the answer is nothing, + +00:05:25.120 --> 00:05:28.759 +but I would say it's, I would say you probably, + +00:05:28.760 --> 00:05:30.799 +if you want the most bang for your environmental buck, + +00:05:30.800 --> 00:05:32.879 +probably the best thing for you to do + +00:05:32.880 --> 00:05:35.799 +is take less flights and things like that. + +00:05:35.800 --> 00:05:37.319 +Like, yes, you can cut down on this, + +00:05:37.320 --> 00:05:40.559 +but I think it's pretty marginal at the moment. + +00:05:40.560 --> 00:05:43.079 +We do probably need to think about the total costs + +00:05:43.080 --> 00:05:44.599 +like of humanity using all of this. + +00:05:44.600 --> 00:05:46.519 +Like a lot of stuff you'll see + +00:05:46.520 --> 00:05:48.759 +corporations are using a lot of these things. + +00:05:48.760 --> 00:05:52.079 +And so like, just like if you look + +00:05:52.080 --> 00:05:54.359 +at water usage or energy uses in total, + +00:05:54.360 --> 00:05:56.639 +it's like really corporations that are using this. + +00:05:56.640 --> 00:05:58.519 +So there might, there's a lot of leverage there + +00:05:58.520 --> 00:06:01.399 +to make things more efficient as opposed to personal use. + +00:06:01.400 --> 00:06:06.119 +So I think it's wise to be cautious, + +00:06:06.120 --> 00:06:09.079 +but I think it's okay, I think, at least for personal use. + +00:06:09.080 --> 00:06:13.159 +The next question is another, + +00:06:13.160 --> 00:06:20.959 +yeah, this is also disagreeing with me about VS Code, + +00:06:20.960 --> 00:06:23.839 +but it says, I must say I liked your conclusion, + +00:06:23.840 --> 00:06:26.719 +but I differ insofar as you said that VS Code differs from Emacs + +00:06:26.720 --> 00:06:30.479 +because the former is not as easy to adapt as the latter. + +00:06:30.480 --> 00:06:33.559 +But why should Microsoft not adapt VS Code + +00:06:33.560 --> 00:06:35.759 +as we adapt Emacs for the new era of coding? + +00:06:35.760 --> 00:06:38.159 +And why would VS Code be harder hit? + +00:06:38.160 --> 00:06:43.599 +Could you please elaborate on this point? Yeah, thanks. + +00:06:43.600 --> 00:06:46.279 +This is a good question. + +00:06:46.280 --> 00:06:50.399 +I think maybe I wasn't as sharp on my point as I could be. + +00:06:50.400 --> 00:06:51.239 +Because I think the core + +00:06:51.240 --> 00:06:56.479 +of what I'm saying is like, there is a going to be a trend. + +00:06:56.480 --> 00:06:58.679 +I believe there will be a trend away from editing. + +00:06:58.680 --> 00:07:01.039 +And if we are going to be editing less, + +00:07:01.040 --> 00:07:04.559 +I think VS Code, like people will be in editors less. + +00:07:04.560 --> 00:07:06.919 +And that means people will be in VS Code less, + +00:07:06.920 --> 00:07:09.759 +people will probably be in Emacs less. + +00:07:09.760 --> 00:07:13.719 +And yes, I think you can, VS Code + +00:07:13.720 --> 00:07:15.399 +is to some degree extensible. + +00:07:15.400 --> 00:07:21.559 +but I think there's less of a community, or that is, + +00:07:21.560 --> 00:07:23.399 +I think the people using Emacs + +00:07:23.400 --> 00:07:25.319 +have used Emacs for a long time. + +00:07:25.320 --> 00:07:27.119 +They're going to continue to use Emacs. + +00:07:27.120 --> 00:07:28.279 +I speak for myself, but I know + +00:07:28.280 --> 00:07:30.119 +a lot of people here are kind of like this, + +00:07:30.120 --> 00:07:33.279 +and they're going to just, like, + +00:07:33.280 --> 00:07:37.759 +we have a lot of momentum to keep doing things in Emacs, + +00:07:37.760 --> 00:07:41.079 +and especially because we have a lot of things + +00:07:41.080 --> 00:07:42.799 +that we already do in Emacs. + +00:07:42.800 --> 00:07:45.079 +We do to-do lists and, you know, with org mode + +00:07:45.080 --> 00:07:47.479 +and some people read email + +00:07:47.480 --> 00:07:49.039 +and some people are using + +00:07:49.040 --> 00:07:50.959 +shells in Emacs and all these things, + +00:07:50.960 --> 00:07:53.959 +I think will make Emacs + +00:07:53.960 --> 00:07:55.559 +kind of a better environment + +00:07:55.560 --> 00:07:59.599 +if you want to do various editing like things in Emacs. + +00:07:59.600 --> 00:08:05.359 +In, you know, in an editing environment, + +00:08:05.360 --> 00:08:07.119 +because I think just emails can edit + +00:08:07.120 --> 00:08:09.239 +more types of things I think will naturally + +00:08:09.240 --> 00:08:10.959 +be a bit more useful than VS code, + +00:08:10.960 --> 00:08:14.079 +which people are really just using to edit code + +00:08:14.080 --> 00:08:16.799 +and if people find it less useful to edit code. + +00:08:16.800 --> 00:08:20.919 +I think it's VS code will be harder hit than emails + +00:08:20.920 --> 00:08:24.239 +because that's its whole like that's in the name + +00:08:24.240 --> 00:08:25.559 +like the whole reason for it + +00:08:25.560 --> 00:08:27.359 +to be doing things as to edit code. + +00:08:27.360 --> 00:08:30.839 +So I think that it's it's vulnerable + +00:08:30.840 --> 00:08:31.959 +in a way that Emacs isn't + +00:08:31.960 --> 00:08:34.519 +just because emacs is so very... + +00:08:34.520 --> 00:08:40.119 +you know, it's, it could do so many things + +00:08:40.120 --> 00:08:42.719 +and and people use it for so many different kinds of things + +00:08:42.720 --> 00:08:46.079 +that it's I think it's going to be + +00:08:46.080 --> 00:08:46.999 +a little bit more resilient. + +00:08:47.000 --> 00:08:48.879 +But as I said with the present. + +00:08:48.880 --> 00:08:52.639 +For those of us that are using Emacs, + +00:08:52.640 --> 00:08:55.159 +it's everywhere for us. + +00:08:55.160 --> 00:08:58.359 +Not necessarily everyone is an I live in Emacs person, + +00:08:58.360 --> 00:09:00.279 +but whatever you're using Emacs for, + +00:09:00.280 --> 00:09:02.999 +it is the thing you reach for to do that thing. + +00:09:03.000 --> 00:09:06.639 +Is that touching on the point? + +00:09:06.640 --> 00:09:09.079 +Yeah, that's a great way to say it. + +00:09:09.080 --> 00:09:12.439 +Thank you. Thank you, Colin. Yeah. + +00:09:12.440 --> 00:09:14.039 +Thank you. Thank you for that question. + +00:09:14.040 --> 00:09:18.759 +Do you think we're falling behind in productivity as Emacs users + +00:09:18.760 --> 00:09:19.959 +compared to all these VS code forks + +00:09:19.960 --> 00:09:21.799 +that have a thousand button and text boxes everywhere, + +00:09:21.800 --> 00:09:24.319 +which are basically much richer UIs, + +00:09:24.320 --> 00:09:25.719 +which are basically web pages? + +00:09:25.720 --> 00:09:28.799 +I do think Emacs is falling behind in some ways. + +00:09:28.800 --> 00:09:32.519 +I mean, it's definitely showing its age a little bit, + +00:09:32.520 --> 00:09:35.079 +especially you mentioned richer UIs + +00:09:35.080 --> 00:09:36.519 +that are basically web pages. + +00:09:36.520 --> 00:09:41.159 +I mean, this I think is one of the big problems Emacs has + +00:09:41.160 --> 00:09:46.479 +is that it uses a very, you know, a much more ancient way + +00:09:46.480 --> 00:09:49.799 +of kind of doing UIs that is not particularly flexible + +00:09:49.800 --> 00:09:55.959 +and not particularly comfortable for any modern UI coder. + +00:09:55.960 --> 00:09:58.639 +And I think if you look at the Emacs stuff out there, + +00:09:58.640 --> 00:10:01.959 +like, yes, you can do a few things with UIs. + +00:10:01.960 --> 00:10:04.759 +You can have some amount of UI richness, + +00:10:04.760 --> 00:10:06.279 +but it's pretty limited. + +00:10:06.280 --> 00:10:07.839 +And I kind of, if there's one thing + +00:10:07.840 --> 00:10:09.079 +I could wish for in Emacs, + +00:10:09.080 --> 00:10:12.519 +it's sort of like, I kind of wish Emacs could be on a, + +00:10:12.520 --> 00:10:18.199 +could be built on top of basically like Atom or something like that, + +00:10:18.200 --> 00:10:20.399 +where it's like a web framework + +00:10:20.400 --> 00:10:24.639 +that allows us to write actual rich pages, + +00:10:24.640 --> 00:10:29.639 +rich UIs in a modern style using things like CSS + +00:10:29.640 --> 00:10:33.599 +instead of the kinds of things Emacs lets you do. + +00:10:33.600 --> 00:10:37.199 +But that said, that is an advantage + +00:10:37.200 --> 00:10:38.959 +of VS Code and other editors like that. + +00:10:38.960 --> 00:10:45.079 +I think that Emacs does a good job + +00:10:45.080 --> 00:10:46.719 +of eventually catching up + +00:10:46.720 --> 00:10:49.759 +to all sorts of things people are doing in other editors. + +00:10:49.760 --> 00:10:52.599 +It's often that other editors get there first, + +00:10:52.600 --> 00:10:55.479 +but there's a lot of momentum + +00:10:55.480 --> 00:10:57.839 +to kind of keep Emacs fresh, keep it modern. + +00:10:57.840 --> 00:11:00.119 +And it's pretty easy to- I love that. + +00:11:00.120 --> 00:11:05.679 +I forgot about the lag. We do have a little bit of lag, + +00:11:05.680 --> 00:11:07.999 +but I just, I find that very captivating. + +00:11:08.000 --> 00:11:10.359 +We have with technologies + +00:11:10.360 --> 00:11:12.399 +like Apache Cassandra in the database world, + +00:11:12.400 --> 00:11:14.879 +we have this idea of eventual concurrency. + +00:11:14.880 --> 00:11:17.559 +And you make me think with Emacs, + +00:11:17.560 --> 00:11:21.279 +we have this idea of eventual feature parity, right? + +00:11:21.280 --> 00:11:23.919 +If a feature stays desirable long enough, + +00:11:23.920 --> 00:11:25.879 +Emacs will eventually grow it. + +00:11:25.880 --> 00:11:32.159 +I think that's a very contagious idea. Yeah, yeah, thanks. + +00:11:32.160 --> 00:11:35.839 +I hope that idea makes sense. And I hope it's correct, + +00:11:35.840 --> 00:11:39.919 +because I think that I do want Emacs to continue to succeed. + +00:11:39.920 --> 00:11:43.439 +And I personally, using Emacs, + +00:11:43.440 --> 00:11:46.479 +do not feel myself falling behind in productivity. + +00:11:46.480 --> 00:11:51.759 +That said, there's a lot of ways that Emacs can improve + +00:11:51.760 --> 00:11:53.519 +and should improve on this front. + +00:11:53.520 --> 00:11:56.599 +And a lot of these ways are pretty fundamental. + +00:11:56.600 --> 00:11:59.719 +So I kind of hope people pay a lot of attention + +00:11:59.720 --> 00:12:02.439 +to some of these more fundamental lower-level Emacs things + +00:12:02.440 --> 00:12:04.879 +that really allows the packages + +00:12:04.880 --> 00:12:07.599 +to do more richer and better things. + +00:12:07.600 --> 00:12:10.359 +Sorry, you have a ton of questions. + +00:12:10.360 --> 00:12:12.279 +I shouldn't be doing so much active listening. + +00:12:12.280 --> 00:12:17.479 +No, no, I appreciate your input. + +00:12:17.480 --> 00:12:23.079 +OK, next is I've been using Claude Code extensively. + +00:12:23.080 --> 00:12:25.519 +I recently switched to Agent Shell with Claude Code. + +00:12:25.520 --> 00:12:28.039 +Have you tried it? And what are your thoughts? + +00:12:28.040 --> 00:12:30.279 +I actually have tried Agent Shell. + +00:12:30.280 --> 00:12:34.719 +And currently, I recorded this video like three months ago. + +00:12:34.720 --> 00:12:38.119 +So Agent Shell did not exist then. + +00:12:38.120 --> 00:12:39.719 +If Agent Shell did exist, + +00:12:39.720 --> 00:12:41.239 +I probably would have demoed it as well. + +00:12:41.240 --> 00:12:45.359 +Agent Hell is great in the sense of it's + +00:12:45.360 --> 00:12:53.719 +It does use comment, which is the way that I think all Emacs users + +00:12:53.720 --> 00:12:57.039 +would prefer to interact with something like Claude Code, + +00:12:57.040 --> 00:13:00.199 +or any of those types of tools, which is like, I don't. + +00:13:00.200 --> 00:13:02.719 +Um, the other, + +00:13:02.720 --> 00:13:05.159 +but it's a trade-off it uses like on the back + +00:13:05.160 --> 00:13:06.959 +and it's, it has a common buffer. + +00:13:06.960 --> 00:13:08.759 +And then on the back end, it's using a protocol + +00:13:08.760 --> 00:13:11.759 +to talk to agent, uh, to Claude Code and other things. + +00:13:11.760 --> 00:13:15.399 +The problem is this has a lot of problems. + +00:13:15.400 --> 00:13:16.799 +For example, like you don't have + +00:13:16.800 --> 00:13:18.319 +completion of slash commands. + +00:13:18.320 --> 00:13:22.119 +You don't have, um, if you ask to see the, in Claude Code, + +00:13:22.120 --> 00:13:24.319 +you can get a visual representation of. the context window. + +00:13:24.320 --> 00:13:30.239 +But you can't do this. I mean, last time I tried, + +00:13:30.240 --> 00:13:31.719 +I couldn't do this in agent shell. + +00:13:31.720 --> 00:13:33.399 +It's progressing rapidly. + +00:13:33.400 --> 00:13:37.479 +But it's not as rich in functionality + +00:13:37.480 --> 00:13:40.119 +as using quad code directly. + +00:13:40.120 --> 00:13:44.839 +On the other hand, because it's letting Emacs be Emacs + +00:13:44.840 --> 00:13:49.239 +and using comment, it's a much better experience + +00:13:49.240 --> 00:13:50.919 +to actually give instructions. + +00:13:50.920 --> 00:13:56.519 +I think the maximum power, though, is, to me, + +00:13:56.520 --> 00:13:58.479 +the best way is still like, you know, + +00:13:58.480 --> 00:13:59.399 +do your editing in org mode, + +00:13:59.400 --> 00:14:02.359 +and then just tell, you could have, + +00:14:02.360 --> 00:14:06.959 +you know, the richer experience of using + +00:14:06.960 --> 00:14:13.639 +of using Claude Code in, in it's more like shell like form + +00:14:13.640 --> 00:14:15.559 +where everything is, it's much, you know, + +00:14:15.560 --> 00:14:17.079 +designed to be used in the terminal, + +00:14:17.080 --> 00:14:18.759 +but you don't have to type in that much + +00:14:18.760 --> 00:14:20.039 +because you're really doing your typing + +00:14:20.040 --> 00:14:21.439 +in order to me, I think there's + +00:14:21.440 --> 00:14:23.519 +kind of the sweet spot that I like. + +00:14:23.520 --> 00:14:26.639 +Um, but HHL is a great step forward + +00:14:26.640 --> 00:14:29.879 +and I think it's, uh, it's quite good to use. + +00:14:29.880 --> 00:14:32.119 +And I, I personally use it a lot. + +00:14:32.120 --> 00:14:40.479 +Um, OK, so in terms of, next question, + +00:14:40.480 --> 00:14:41.839 +in terms of agent selection, + +00:14:41.840 --> 00:14:44.639 +what has been your experience with different agents? + +00:14:44.640 --> 00:14:48.079 +And have you had any success with hosting your own models + +00:14:48.080 --> 00:14:49.439 +and using open weights? + +00:14:49.440 --> 00:14:54.159 +I think there's, you know, many people + +00:14:54.160 --> 00:14:56.519 +have many different opinions on this. + +00:14:56.520 --> 00:15:00.839 +I think Claude Code is, most people I know + +00:15:00.840 --> 00:15:03.479 +would say Claude Code is probably, + +00:15:03.480 --> 00:15:07.479 +sorry, Cloud is probably the best for coding right now. + +00:15:07.480 --> 00:15:09.919 +Gemini can be very hit and miss even with 3.0, + +00:15:09.920 --> 00:15:12.519 +but Claude is quite good. + +00:15:12.520 --> 00:15:16.119 +4.5 Opus is actually relatively cheap + +00:15:16.120 --> 00:15:21.119 +compared to the previous version of 4.1 Opus. + +00:15:21.120 --> 00:15:24.239 +There's other models out there, + +00:15:24.240 --> 00:15:29.159 +but I think most people just stick with Claude + +00:15:29.160 --> 00:15:33.999 +because it's very reliable, it's very good, + +00:15:34.000 --> 00:15:36.479 +and nothing is obviously better than that. + +00:15:36.480 --> 00:15:41.039 +And as far as DeepSeek is pretty good as well, + +00:15:41.040 --> 00:15:42.079 +and then much cheaper. + +00:15:42.080 --> 00:15:46.839 +I've had some good luck using that locally, + +00:15:46.840 --> 00:15:50.159 +but actually the problem is for my day-to-day machine, + +00:15:50.160 --> 00:15:53.079 +like my personal machine, + +00:15:53.080 --> 00:15:55.679 +it's not powerful enough to run anything locally. + +00:15:55.680 --> 00:15:58.479 +And my work machine, it is powerful enough, + +00:15:58.480 --> 00:16:02.079 +but I can spend my company's money at will + +00:16:02.080 --> 00:16:03.759 +on more powerful models. + +00:16:03.760 --> 00:16:05.519 +So there's really not a lot of incentive + +00:16:05.520 --> 00:16:06.439 +for me to run locally. + +00:16:06.440 --> 00:16:12.199 +I think, as far as I know, I haven't heard + +00:16:12.200 --> 00:16:14.359 +of local models being incredible, + +00:16:14.360 --> 00:16:16.879 +but I think you can get reasonable quality with them. + +00:16:16.880 --> 00:16:19.159 +That is, especially if you're doing + +00:16:19.160 --> 00:16:20.279 +relatively simple things, + +00:16:20.280 --> 00:16:25.679 +I think it's pretty reasonable to be using those. + +00:16:25.680 --> 00:16:29.959 +Also, they tend to be slower + +00:16:29.960 --> 00:16:33.279 +than the models that are elsewhere + +00:16:33.280 --> 00:16:36.319 +just because they just have more horsepower, + +00:16:36.320 --> 00:16:38.679 +they can churn through those tokens a little quicker. + +00:16:38.680 --> 00:16:44.719 +So, I'll just break in here to say, + +00:16:44.720 --> 00:16:46.239 +we've got about 7 minutes left + +00:16:46.240 --> 00:16:49.239 +before we're cutting over this great discussion so far. + +00:16:49.240 --> 00:16:50.839 +I'm very happy to keep going. + +00:16:50.840 --> 00:16:55.399 +There's no time limit, but at a certain point, + +00:16:55.400 --> 00:16:56.479 +I may have to leave + +00:16:56.480 --> 00:16:58.679 +to jump in and prep with the next speaker, + +00:16:58.680 --> 00:17:00.359 +but you'll be able to keep going + +00:17:00.360 --> 00:17:02.599 +as long as you have the steam for it. + +00:17:02.600 --> 00:17:06.159 +Yeah, I think we have 3 questions. Yeah, thanks. + +00:17:06.160 --> 00:17:08.239 +I think we have 3 questions. + +00:17:08.240 --> 00:17:09.719 +Let's see if we can get through them + +00:17:09.720 --> 00:17:17.359 +all in that time period. OK, this one is interesting talk. + +00:17:17.360 --> 00:17:20.439 +I'll start by asking it for everything, but is it editing? + +00:17:20.440 --> 00:17:23.239 +I think there's more of a comment than a question. + +00:17:23.240 --> 00:17:29.719 +So yes, let us all ask, but is it editing? + +00:17:29.720 --> 00:17:33.439 +All right. I can move on to the comment area. + +00:17:33.440 --> 00:17:40.319 +I'm reading angst in your thinking about AI editing. + +00:17:40.320 --> 00:17:41.839 +I think that's true. + +00:17:41.840 --> 00:17:44.119 +It says, and the question continues with, + +00:17:44.120 --> 00:17:45.159 +what are you excited about? + +00:17:45.160 --> 00:17:48.719 +Wow, that's an interesting question. + +00:17:48.720 --> 00:17:53.799 +I mean, I think there are possibilities. + +00:17:53.800 --> 00:17:58.719 +Like, yes, people are going in sort of a relatively obvious direction + +00:17:58.720 --> 00:18:01.439 +with LLMs right now. + +00:18:01.440 --> 00:18:04.599 +And I think there's lots of opportunities, + +00:18:04.600 --> 00:18:07.839 +clever opportunities to do things + +00:18:07.840 --> 00:18:11.079 +we couldn't have thought of Things that are useful, + +00:18:11.080 --> 00:18:14.919 +but in ways that are not super obvious to us, + +00:18:14.920 --> 00:18:18.519 +and I think I'm still excited + +00:18:18.520 --> 00:18:23.839 +about the possibilities of using them in ways that are super helpful + +00:18:23.840 --> 00:18:29.319 +and different than. normal. I'll give you an example. + +00:18:29.320 --> 00:18:33.199 +This is something that I intend to, I think, + +00:18:33.200 --> 00:18:36.479 +post on Reddit in a few days, + +00:18:36.480 --> 00:18:39.399 +but I have a extension to eshell + +00:18:39.400 --> 00:18:43.439 +where you can prefix a command with at, + +00:18:43.440 --> 00:18:45.199 +and then just tell it what you want to do, + +00:18:45.200 --> 00:18:46.919 +and it will substitute the command + +00:18:46.920 --> 00:18:51.919 +that you are thinking of. Because often, I do not remember. + +00:18:51.920 --> 00:18:56.919 +I never remember, like, how do you find a file in a directory tree, + +00:18:56.920 --> 00:19:00.159 +you know, recursing? Who can remember how to do that? + +00:19:00.160 --> 00:19:04.799 +It's like a find, and there's like a dash print there somewhere. + +00:19:04.800 --> 00:19:10.159 +Yes. There are some smart people who remember this + +00:19:10.160 --> 00:19:11.199 +but I am not one of them. + +00:19:11.200 --> 00:19:13.639 +And so I think like something like this is like you just type out, + +00:19:13.640 --> 00:19:17.279 +find me this file, and it will substitute + +00:19:17.280 --> 00:19:18.879 +the correct command. + +00:19:18.880 --> 00:19:20.999 +I think this is, there's a lot of little, + +00:19:21.000 --> 00:19:24.319 +little tweaks you could do like, you know, if you want the AI, + +00:19:24.320 --> 00:19:26.679 +it could be there for you. And it will help you. + +00:19:26.680 --> 00:19:27.559 +And if you don't want it, + +00:19:27.560 --> 00:19:28.919 +it's not going to get in your way. + +00:19:28.920 --> 00:19:30.639 +And I think this is where eMath can really shine. + +00:19:30.640 --> 00:19:33.079 +It can really take advantage of LLMs, + +00:19:33.080 --> 00:19:35.799 +but still remain true to its kind of editing experience, + +00:19:35.800 --> 00:19:39.319 +because it's not forcing you to use LLMs all the time. + +00:19:39.320 --> 00:19:43.919 +So thank you for that great question. + +00:19:43.920 --> 00:19:47.919 +And then the final question. Yep. + +00:19:47.920 --> 00:19:50.839 +This final question is, why does it matter to have a richer UI? + +00:19:50.840 --> 00:19:53.439 +All this left is basically running and getting the results. + +00:19:53.440 --> 00:19:56.119 +I think maybe this is a response to me complaining + +00:19:56.120 --> 00:19:58.479 +about Emacs not having a richer UI before, + +00:19:58.480 --> 00:20:03.159 +but I think it does matter a lot for all sorts of things. + +00:20:03.160 --> 00:20:07.159 +It's hard to kind of explain succinctly + +00:20:07.160 --> 00:20:08.519 +because I'm talking about UI + +00:20:08.520 --> 00:20:09.759 +and I'd have to show you things. + +00:20:09.760 --> 00:20:14.599 +But it should be just something like oh I have an error + +00:20:14.600 --> 00:20:15.799 +and I'm using flymake and I'm, + +00:20:15.800 --> 00:20:17.759 +I'm using the you know I have options + +00:20:17.760 --> 00:20:19.839 +where it'll show me the error in line + +00:20:19.840 --> 00:20:22.639 +by like underlining things and having a little message, + +00:20:22.640 --> 00:20:24.079 +but like, you know what that message + +00:20:24.080 --> 00:20:26.399 +doesn't appear quite right, a lot of the times, + +00:20:26.400 --> 00:20:30.159 +or here's another one like. I program in Python a lot. + +00:20:30.160 --> 00:20:33.479 +And Python, it's super hard to program in + +00:20:33.480 --> 00:20:35.279 +unless you have these little vertical lines + +00:20:35.280 --> 00:20:37.599 +that shows you what the indents are. At least I find it. + +00:20:37.600 --> 00:20:40.479 +There are two packages that do that. + +00:20:40.480 --> 00:20:43.039 +None of them do it particularly well, + +00:20:43.040 --> 00:20:44.599 +just because Emacs at its base + +00:20:44.600 --> 00:20:45.919 +does not allow you to do this. + +00:20:45.920 --> 00:20:47.759 +And so you kind of have to hack it in. + +00:20:47.760 --> 00:20:49.479 +And there's lots of ways to mess it up. + +00:20:49.480 --> 00:20:52.799 +And when editing, you'll find yourself messing this thing up. + +00:20:52.800 --> 00:20:57.159 +regularly. So it doesn't look quite clean. + +00:20:57.160 --> 00:20:59.079 +And like, there's little artifacts, + +00:20:59.080 --> 00:21:01.039 +or, you know, there's little ways that it, + +00:21:01.040 --> 00:21:02.359 +it kind of gets things wrong, + +00:21:02.360 --> 00:21:06.279 +or you can, you can get things wrong with it. + +00:21:06.280 --> 00:21:10.039 +So I think that, like, + +00:21:10.040 --> 00:21:11.879 +there's a lot of issues with that sort of thing. + +00:21:11.880 --> 00:21:15.759 +And, and also, like, you know, + +00:21:15.760 --> 00:21:17.719 +what if you want to do something like play a video inline, + +00:21:17.720 --> 00:21:19.559 +like, I don't know, you might should be able to do that, + +00:21:19.560 --> 00:21:20.839 +you might should be able to do anything. + +00:21:20.840 --> 00:21:23.799 +But right now it just can't and I think + +00:21:23.800 --> 00:21:24.999 +a lot of the reason as well + +00:21:25.000 --> 00:21:26.519 +we you know we wanted to be compatible + +00:21:26.520 --> 00:21:29.919 +with you know TRS 80 machines or something like that + +00:21:29.920 --> 00:21:33.159 +and it's this is important this really is important, + +00:21:33.160 --> 00:21:34.719 +but I hope there's some way + +00:21:34.720 --> 00:21:36.079 +that we can kind of eventually figure out + +00:21:36.080 --> 00:21:39.279 +how to get the best of you know both compatibility and. + +00:21:39.280 --> 00:21:44.879 +more modern UIs. So, you know, we can have more modern UIs + +00:21:44.880 --> 00:21:49.839 +for people that have modern machines and other people + +00:21:49.840 --> 00:21:51.959 +either do without that functionality + +00:21:51.960 --> 00:21:54.319 +or sort of fall back to some reasonable default. + +00:21:54.320 --> 00:21:59.079 +So we have about 30 seconds or a minute. + +00:21:59.080 --> 00:22:00.679 +I know there's one more question. + +00:22:00.680 --> 00:22:01.559 +I'd love for you to get to it. + +00:22:01.560 --> 00:22:02.839 +I just want to make sure that + +00:22:02.840 --> 00:22:04.239 +while we're still live on stream, + +00:22:04.240 --> 00:22:05.519 +you get a chance to share + +00:22:05.520 --> 00:22:06.799 +any closing remarks you might have. + +00:22:06.800 --> 00:22:10.879 +Thank you for that. Um, yes. + +00:22:10.880 --> 00:22:14.519 +So first of all, I want to thank everyone involved for listening. + +00:22:14.520 --> 00:22:18.919 +And I want to thank the core when I think thanks for moderating this. + +00:22:18.920 --> 00:22:21.279 +And Sacha, thank you for putting that together. + +00:22:21.280 --> 00:22:21.919 +And I know there's more people + +00:22:21.920 --> 00:22:23.319 +that are working behind the scenes. + +00:22:23.320 --> 00:22:25.079 +So thank you all for putting this together. + +00:22:25.080 --> 00:22:29.199 +I'm so happy that we all are here. We care about Emacs. + +00:22:29.200 --> 00:22:31.199 +We're pushing Emacs forward. + +00:22:31.200 --> 00:22:35.959 +We are I think Emacs remains + +00:22:35.960 --> 00:22:37.279 +this really remarkable achievement. + +00:22:37.280 --> 00:22:41.799 +Like it's amazing that it exists. It continues to exist. + +00:22:41.800 --> 00:22:42.999 +It hasn't got, it's hard. + +00:22:43.000 --> 00:22:45.159 +It's like, really, there's a lot of work to go into it. + +00:22:45.160 --> 00:22:47.559 +So I think let's all just appreciate everyone who, + +00:22:47.560 --> 00:22:50.679 +who like contributes and makes all of this possible. + +00:22:50.680 --> 00:22:52.159 +Cause it's, if you ever read + +00:22:52.160 --> 00:22:53.279 +the Emacs Develop mailing list, + +00:22:53.280 --> 00:22:55.479 +it's a lot of work, a lot of deep thinking, + +00:22:55.480 --> 00:22:56.679 +a lot of careful thinking. + +00:22:56.680 --> 00:22:58.599 +And I think this is really important. + +00:22:58.600 --> 00:23:02.039 +So thank you, especially to the maintainers of Emacs + +00:23:02.040 --> 00:23:04.199 +and everyone who's contributing to the core experience, + +00:23:04.200 --> 00:23:07.759 +all the libraries, all the LLM stuff we mentioned before. + +00:23:07.760 --> 00:23:09.839 +You're all doing such a fantastic job. + +00:23:09.840 --> 00:23:13.799 +It's exciting to be here. Thank you for your talk, Andrew. + +00:23:13.800 --> 00:23:16.159 +It's been just fascinating. + +00:23:16.160 --> 00:23:19.759 +If you don't mind, I'd love to jump + +00:23:19.760 --> 00:23:23.879 +right over to the last question. OK, let's do that. + +00:23:23.880 --> 00:23:27.599 +It says, I have 45 plus years editing programming. + +00:23:27.600 --> 00:23:29.239 +I'm not sure I can think about things + +00:23:29.240 --> 00:23:31.039 +without thinking of buffers, editors, et cetera. + +00:23:31.040 --> 00:23:31.959 +Is this the handicap? + +00:23:31.960 --> 00:23:34.239 +Should we have people with no experience + +00:23:34.240 --> 00:23:35.319 +with code learning to prompt? + +00:23:35.320 --> 00:23:38.799 +Well, this is something I do have a strong opinion about. + +00:23:38.800 --> 00:23:42.159 +I feel like I do not want to see people that have no experience + +00:23:42.160 --> 00:23:44.119 +with code learning to prompt. I think it's very limited + +00:23:44.120 --> 00:23:46.039 +what you could do right now with that. + +00:23:46.040 --> 00:23:48.439 +Like you could do, if you could sort of one-shot it, + +00:23:48.440 --> 00:23:51.999 +that is like, I have something that's relatively easy, + +00:23:52.000 --> 00:23:54.879 +And it could do it, and I'm going to tell it to do it, + +00:23:54.880 --> 00:23:56.039 +and then I'm going to give feedback. + +00:23:56.040 --> 00:24:00.039 +OK, as long as this is for relatively short-lived things, + +00:24:00.040 --> 00:24:02.599 +I think that works well. But for people who really care + +00:24:02.600 --> 00:24:04.279 +about the longevity of their code, + +00:24:04.280 --> 00:24:06.599 +really care about software engineering, + +00:24:06.600 --> 00:24:09.879 +which is software engineering is very different than just writing code. + +00:24:09.880 --> 00:24:11.879 +Software engineering is about maintainability. + +00:24:11.880 --> 00:24:15.119 +Software engineering is making sure everything is scalable + +00:24:15.120 --> 00:24:19.599 +and all sorts of things that it's unlikely, + +00:24:19.600 --> 00:24:21.759 +I think, that an LM is going to get right. + +00:24:21.760 --> 00:24:25.279 +And I've seen a lot of bad cases + +00:24:25.280 --> 00:24:27.199 +where people who don't understand code + +00:24:27.200 --> 00:24:31.159 +are doing things and it's not working well + +00:24:31.160 --> 00:24:33.239 +because they don't understand + +00:24:33.240 --> 00:24:35.279 +some of the some of the complexities + +00:24:35.280 --> 00:24:36.959 +or some of the concerns that that you might have + +00:24:36.960 --> 00:24:43.279 +in maintaining a piece of code. + +00:24:43.280 --> 00:24:45.759 +So I think those people who have lots of experience + +00:24:45.760 --> 00:24:46.959 +are the best people to use this. + +00:24:46.960 --> 00:24:48.119 +And I think that's what we're seeing + +00:24:48.120 --> 00:24:49.079 +in the industry as well, + +00:24:49.080 --> 00:24:51.639 +where more senior people are doing quite well + +00:24:51.640 --> 00:24:54.599 +because they're able to use LLMs + +00:24:54.600 --> 00:24:56.559 +more effectively than junior people. + +00:24:56.560 --> 00:25:00.999 +That may all even out because LLMs get even better, + +00:25:01.000 --> 00:25:03.079 +but for now hasn't happened. + +00:25:03.080 --> 00:25:06.319 +So I think, you know, I also have a ton of experience, + +00:25:06.320 --> 00:25:13.079 +not 45 years, but a lot. And, and I think that it's those, + +00:25:13.080 --> 00:25:14.839 +those years of experience will only help you. + +00:25:14.840 --> 00:25:16.919 +And I think it's, it's, it's a great, + +00:25:16.920 --> 00:25:19.639 +it's great to kind of dip your toes in the water + +00:25:19.640 --> 00:25:20.732 +and see what you can do. diff --git a/2025/captions/emacsconf-2025-open-mic--open-session--participants--main.vtt b/2025/captions/emacsconf-2025-open-mic--open-session--participants--main.vtt new file mode 100644 index 00000000..ffdfe3de --- /dev/null +++ b/2025/captions/emacsconf-2025-open-mic--open-session--participants--main.vtt @@ -0,0 +1,3058 @@ +WEBVTT + +00:00:00.000 --> 00:00:03.599 +All right, so yes, we have a little bit of time + +00:00:03.600 --> 00:00:05.719 +while we are waiting for the dev track to finish, + +00:00:05.720 --> 00:00:08.319 +and we could just declare this as a break, + +00:00:08.320 --> 00:00:12.039 +or if anyone's got any interesting last-minute stuff, + +00:00:12.040 --> 00:00:17.239 +you can come and share it here, + +00:00:17.240 --> 00:00:20.879 +where Karthik is also hanging out. + +00:00:20.880 --> 00:00:23.279 +I think every time I read one of your long blog posts, + +00:00:23.280 --> 00:00:25.559 +Karthik, I'm like, mm, life goals. + +00:00:25.560 --> 00:00:28.399 +Someday I want to write something with nice diagrams + +00:00:28.400 --> 00:00:31.279 +and, you know, deep Emacs interestingness. + +00:00:31.280 --> 00:00:34.919 +I have not yet gotten the hang of even using avy + +00:00:34.920 --> 00:00:38.119 +to nearly the extent that you do. + +00:00:38.120 --> 00:00:40.119 +But yes, I have, I have always looked + +00:00:40.120 --> 00:00:42.319 +at your diagrams very longingly + +00:00:42.320 --> 00:00:44.679 +and wondered how you make them. + +00:00:44.680 --> 00:00:51.239 +With a lot of sweat and cursing, unfortunately. + +00:00:51.240 --> 00:00:54.199 +It's all very nice. Yeah. + +00:00:54.200 --> 00:00:58.319 +And I, I, I've seen your interactive SVGs, + +00:00:58.320 --> 00:01:02.319 +which is just wizardry. I have no idea how you do that. + +00:01:02.320 --> 00:01:06.959 +You can hover over different elements in the SVG + +00:01:06.960 --> 00:01:08.759 +and do interesting things. + +00:01:08.760 --> 00:01:11.799 +Yeah, so it turns out if you just think of them as XML, + +00:01:11.800 --> 00:01:13.079 +which Emacs will let you + +00:01:13.080 --> 00:01:15.159 +because you can just control C, control C, + +00:01:15.160 --> 00:01:16.759 +and it'll switch back to text mode, right? + +00:01:16.760 --> 00:01:19.999 +Then you can be like, oh, yeah, I can work with this + +00:01:20.000 --> 00:01:23.559 +using the DOM Emacs list library. + +00:01:23.560 --> 00:01:28.479 +And then you can add title elements to it to get the hovers, + +00:01:28.480 --> 00:01:31.079 +or you can add hyperlinks. + +00:01:31.080 --> 00:01:35.039 +So in fact, the emacs-conf schedule + +00:01:35.040 --> 00:01:41.199 +is very naturally generated from emacs-lisp itself, + +00:01:41.200 --> 00:01:43.399 +because there was no way I was going to handle + +00:01:43.400 --> 00:01:45.719 +two track schedules by hand. + +00:01:45.720 --> 00:01:49.799 +And that's just SVG so that you can then have the hovers. + +00:01:49.800 --> 00:01:53.119 +The important thing is that when you're exporting it to HTML, + +00:01:53.120 --> 00:01:57.919 +it has to be an inline SVG to get the fancy behaviors. + +00:01:57.920 --> 00:02:02.799 +If you're linking it in as an image, then it doesn't work. + +00:02:02.800 --> 00:02:09.279 +It has to be inline. So for example, for my org mode, + +00:02:09.280 --> 00:02:14.079 +I have my exports for images checked first if it's an SVG. + +00:02:14.080 --> 00:02:15.959 +And unless I have an attribute + +00:02:15.960 --> 00:02:20.359 +on it that says, no, just link to it because it's large and not interactive, + +00:02:20.360 --> 00:02:22.759 +it actually inlines all of that markup + +00:02:22.760 --> 00:02:26.879 +into the exported HTML, if that makes sense. + +00:02:26.880 --> 00:02:34.279 +That does, that does make sense. + +00:02:34.280 --> 00:02:36.559 +It's a little less mysterious now. + +00:02:36.560 --> 00:02:40.319 +On the plus side, once it is in there as inline HTML, + +00:02:40.320 --> 00:02:42.519 +well, inline, you know, it's an inline markup, + +00:02:42.520 --> 00:02:44.359 +you can actually play around with it + +00:02:44.360 --> 00:03:01.919 +using JavaScript or CSS. That's really neat. + +00:03:01.920 --> 00:03:07.679 +I had a question about some other SVG wizardry I've seen you do. + +00:03:07.680 --> 00:03:09.759 +You have these SVGs that grow, right? + +00:03:09.760 --> 00:03:15.959 +Like they accumulate elements, almost like a slideshow. + +00:03:15.960 --> 00:03:20.199 +Am I remembering that correctly? Yeah, yeah, yeah. + +00:03:20.200 --> 00:03:22.399 +I started using that for one + +00:03:22.400 --> 00:03:24.519 +of the EmacsConf presentations. + +00:03:24.520 --> 00:03:26.559 +Well, the one EmacsConf presentation + +00:03:26.560 --> 00:03:27.919 +I've done in recent history, + +00:03:27.920 --> 00:03:31.639 +because it's nice to be able to add things gradually, right? + +00:03:31.640 --> 00:03:35.799 +Especially as you're giving a presentation. + +00:03:35.800 --> 00:03:38.719 +And that's also done with Emacs Lisp. + +00:03:38.720 --> 00:03:43.599 +What I do is, first I make the image, and then in Inkscape, + +00:03:43.600 --> 00:03:46.519 +I can group together the elements + +00:03:46.520 --> 00:03:49.639 +that I want to appear at the same time. + +00:03:49.640 --> 00:03:54.639 +And then I can use Emacs to, I think I just changed the, + +00:03:54.640 --> 00:04:01.039 +I just add some CSS to them to make them dimmer. + +00:04:01.040 --> 00:04:04.759 +and you just iterate through the different groups in that level, + +00:04:04.760 --> 00:04:09.839 +and you write out the intermediate SVG files, + +00:04:09.840 --> 00:04:12.279 +and then you can use Inkscape + +00:04:12.280 --> 00:04:14.839 +to convert them into PNGs if you want, + +00:04:14.840 --> 00:04:16.079 +like images of each step + +00:04:16.080 --> 00:04:18.719 +that are in PNG format instead of SVG. + +00:04:18.720 --> 00:04:20.359 +But the basic idea is you group + +00:04:20.360 --> 00:04:24.159 +the elements together that you want in one step, + +00:04:24.160 --> 00:04:25.879 +and then you can manipulate it + +00:04:25.880 --> 00:04:30.159 +using the Emacs DOM.EL library, + +00:04:30.160 --> 00:04:32.879 +because it's just an XML document. + +00:04:32.880 --> 00:04:38.719 +So you can say, all right, hide everything or have everything visible + +00:04:38.720 --> 00:04:43.159 +and then remove the last one or something like that, you know, iterated. + +00:04:43.160 --> 00:04:50.679 +Show them one at a time and then write your resulting document object model + +00:04:50.680 --> 00:05:05.919 +to a new file each step. Do you have, that makes sense. + +00:05:05.920 --> 00:05:09.159 +So do you just write the e-list, + +00:05:09.160 --> 00:05:12.079 +like is this on a case-by-case basis? + +00:05:12.080 --> 00:05:13.519 +Like every time you need to do this, + +00:05:13.520 --> 00:05:18.519 +do you write fresh e-list to step through the SVG this way? + +00:05:18.520 --> 00:05:22.479 +Or do you have some kind of package + +00:05:22.480 --> 00:05:27.159 +or library to do this more? + +00:05:27.160 --> 00:05:32.999 +Let me go see if this is the one. + +00:05:33.000 --> 00:05:39.839 +It's probably just buried in my config. + +00:05:39.840 --> 00:05:46.719 +If I do it again, I'm sure I will find another thing + +00:05:46.720 --> 00:05:51.159 +that I've completely forgotten about + +00:05:51.160 --> 00:05:56.399 +and therefore have to recode or fix or whatever. + +00:05:56.400 --> 00:06:03.199 +But let me go see. Can you see my screen? Yep. OK. + +00:06:03.200 --> 00:06:07.559 +So, oh, yeah, yeah, this one. Nice, I remember that one. + +00:06:07.560 --> 00:06:13.719 +OK, so we get this SVG, and then this animateSVGPaths + +00:06:13.720 --> 00:06:16.959 +is just a function I have. It takes the file name. + +00:06:16.960 --> 00:06:22.039 +It makes an output there. It adds one path back at a time. + +00:06:22.040 --> 00:06:25.839 +And it just creates a lot of these numbered frames. + +00:06:25.840 --> 00:06:27.639 +So as you can see here, + +00:06:27.640 --> 00:06:30.039 +I'm just saying, OK, take the whole thing. + +00:06:30.040 --> 00:06:34.479 +And then I think, yeah, maybe I said it like, + +00:06:34.480 --> 00:06:36.999 +you know, take the whole thing, + +00:06:37.000 --> 00:06:40.199 +make everything transparent, + +00:06:40.200 --> 00:06:45.079 +and then one at a time, make them opaque + +00:06:45.080 --> 00:06:50.079 +and save that, save that to the frame, to the image. + +00:06:50.080 --> 00:06:54.319 +So this theoretically is a somewhat reusable function + +00:06:54.320 --> 00:07:01.039 +that takes the SVG and just fills the directory with it. + +00:07:01.040 --> 00:07:03.399 +What's the order in which it reveals things? + +00:07:03.400 --> 00:07:12.919 +Top to bottom or bottom to top, it's whatever the SVG has. + +00:07:12.920 --> 00:07:15.959 +And so if you're grouping things together, + +00:07:15.960 --> 00:07:17.599 +you can rearrange things in Inkscape. + +00:07:17.600 --> 00:07:22.039 +If you've given them IDs, + +00:07:22.040 --> 00:07:25.119 +which I have another function for in Emacs list + +00:07:25.120 --> 00:07:26.919 +that just highlights something + +00:07:26.920 --> 00:07:28.439 +and lets me put an ID for it, + +00:07:28.440 --> 00:07:30.879 +then you can rearrange them yourself + +00:07:30.880 --> 00:07:32.319 +by looking at the markup, I guess. + +00:07:32.320 --> 00:07:35.319 +Or I think I actually have some code also + +00:07:35.320 --> 00:07:37.039 +that will rearrange the path + +00:07:37.040 --> 00:07:39.279 +based on a list of IDs that I give it. + +00:07:39.280 --> 00:07:42.759 +and sequence so this one is animating + +00:07:42.760 --> 00:07:44.319 +one element at a time here + +00:07:44.320 --> 00:07:47.319 +um it's kind of like interesting effect + +00:07:47.320 --> 00:07:49.039 +but for larger things like for this one + +00:07:49.040 --> 00:07:52.039 +i can split this up into groups + +00:07:52.040 --> 00:07:59.599 +because i don't want to necessarily animate them letter by letter and that one + +00:07:59.600 --> 00:08:03.319 +Oh yes, this is the function that I have + +00:08:03.320 --> 00:08:05.319 +for identifying the paths + +00:08:05.320 --> 00:08:08.959 +and it highlights it and then it asks me for a name. + +00:08:08.960 --> 00:08:11.359 +And this is the one that reorders it. + +00:08:11.360 --> 00:08:14.559 +So I can say, this is the sequence + +00:08:14.560 --> 00:08:19.279 +that I want it animated in. And it will, yeah, good. + +00:08:19.280 --> 00:08:23.399 +So you don't actually need Inkscape at all, right? + +00:08:23.400 --> 00:08:24.999 +Because you have an elisp function + +00:08:25.000 --> 00:08:28.399 +that will let you assign the order interactively. + +00:08:28.400 --> 00:08:34.599 +Yeah, so if you're doing just all the elements one after the other, + +00:08:34.600 --> 00:08:39.279 +Inkscape is helpful for combining the different shapes, + +00:08:39.280 --> 00:08:41.399 +well, breaking it apart, + +00:08:41.400 --> 00:08:44.719 +because when I get the PDF and I convert it, + +00:08:44.720 --> 00:08:48.559 +it's like one big element that has a very complex path. + +00:08:48.560 --> 00:08:52.479 +And if I want to animate it element by element, + +00:08:52.480 --> 00:08:53.959 +I have to break it apart + +00:08:53.960 --> 00:08:59.759 +and then recombine it so that, you know, so that this O looks like it's hollow + +00:08:59.760 --> 00:09:01.079 +instead of like a circle. + +00:09:01.080 --> 00:09:02.959 +So there's a little bit of Inkscape + +00:09:02.960 --> 00:09:04.879 +cleaning up before then, + +00:09:04.880 --> 00:09:08.439 +but I really dislike the mouse heavy stuff of Inkscape + +00:09:08.440 --> 00:09:12.119 +for assigning IDs and things like that. + +00:09:12.120 --> 00:09:13.999 +I haven't quite gotten the hang of it. + +00:09:14.000 --> 00:09:16.119 +So this is what it looks like + +00:09:16.120 --> 00:09:17.919 +before you group the elements together + +00:09:17.920 --> 00:09:20.039 +and you combine paths, + +00:09:20.040 --> 00:09:22.079 +which is what you have to do Inkscape for, + +00:09:22.080 --> 00:09:24.879 +because I can't make sense of the numbers in Emacs someday. + +00:09:24.880 --> 00:09:30.319 +So just combine, combine, combine. But once it's there, + +00:09:30.320 --> 00:09:32.719 +I don't like having to set the ID in this + +00:09:32.720 --> 00:09:34.879 +object properties on the right side, + +00:09:34.880 --> 00:09:36.959 +because there's a lot of clicking. + +00:09:36.960 --> 00:09:40.559 +press escape and tab and tab, it's not reliable. + +00:09:40.560 --> 00:09:42.599 +So that's why I have this function + +00:09:42.600 --> 00:09:46.559 +and it lets me identify the paths and animate them + +00:09:46.560 --> 00:09:50.999 +from within Emacs, because Emacs is a text editor. + +00:09:51.000 --> 00:09:55.279 +Yeah, in name only, but anyway. + +00:09:55.280 --> 00:10:02.679 +So the groups, if you've already assigned groups in Inkscape, + +00:10:02.680 --> 00:10:06.519 +Then when you run it through this function in Emacs, + +00:10:06.520 --> 00:10:09.159 +you can assign an ordering to the groups, + +00:10:09.160 --> 00:10:10.599 +the order in which it will be revealed. + +00:10:10.600 --> 00:10:15.039 +Yeah. What I did was I gave it all IDs. + +00:10:15.040 --> 00:10:17.599 +So I gave each group an ID. + +00:10:17.600 --> 00:10:25.999 +And then when I have the ID, I can say, you know, maybe when I group it, + +00:10:26.000 --> 00:10:28.319 +I'm doing it in a bit of a haphazard way, + +00:10:28.320 --> 00:10:30.279 +not grouping the first thing first, + +00:10:30.280 --> 00:10:32.279 +and then the second thing, and the third thing. + +00:10:32.280 --> 00:10:34.399 +So it's a bit of a mess. + +00:10:34.400 --> 00:10:38.119 +And this one just resorts it by, I think, + +00:10:38.120 --> 00:10:41.479 +just looking everything up, storing it, + +00:10:41.480 --> 00:10:45.039 +and then putting it back in order. + +00:10:45.040 --> 00:10:49.159 +I probably have the code for this somewhere, + +00:10:49.160 --> 00:10:52.039 +and if it's not, it's in the source code. + +00:10:52.040 --> 00:10:53.039 +There should be a source. + +00:10:53.040 --> 00:10:57.599 +Yes, so this is an org source for this post, + +00:10:57.600 --> 00:11:01.279 +and if it's not in there, then it should be in my config, + +00:11:01.280 --> 00:11:03.679 +the definition of this function. + +00:11:03.680 --> 00:11:11.439 +We are to pass. Here we are. Yeah, there you go. + +00:11:11.440 --> 00:11:17.639 +So there, it just, it takes it, it looks for it, + +00:11:17.640 --> 00:11:19.719 +and it adds it to the first layer. + +00:11:19.720 --> 00:11:29.399 +Okay, you've just explained the magic, + +00:11:29.400 --> 00:11:31.159 +which makes it less magical, + +00:11:31.160 --> 00:11:36.279 +but also something I could try. Yeah, this is interesting. + +00:11:36.280 --> 00:11:41.759 +Yeah, S2G is surprisingly powerful. Yeah, I know. + +00:11:41.760 --> 00:11:43.679 +I know it can do a lot more + +00:11:43.680 --> 00:11:46.559 +than what we typically use it for. + +00:11:46.560 --> 00:11:53.039 +So you also had this feature where, I think you used CSS, + +00:11:53.040 --> 00:11:56.599 +where if you mouse over something in the SVG, + +00:11:56.600 --> 00:11:58.839 +something is highlighted in your webpage. + +00:11:58.840 --> 00:12:04.799 +Oh yeah, yeah, yeah. Like in the organizer's notebook. + +00:12:04.800 --> 00:12:07.959 +So I have a draft schedule here. + +00:12:07.960 --> 00:12:10.679 +Yeah, we've been doing all this stuff live, that schedule, + +00:12:10.680 --> 00:12:16.239 +where if you have, let's pick someone's talk. + +00:12:16.240 --> 00:12:22.119 +Oh, yeah, highlight. + +00:12:22.120 --> 00:12:26.159 +I think, oh, maybe it's the other way around. + +00:12:26.160 --> 00:12:30.839 +I need to put this stuff here first. Oh yeah, okay. + +00:12:30.840 --> 00:12:33.959 +So you'll notice here how if I add some JavaScript, + +00:12:33.960 --> 00:12:35.999 +it takes a look at what's in the URL. + +00:12:36.000 --> 00:12:38.439 +And if so, then it can highlight a specific thing + +00:12:38.440 --> 00:12:41.679 +using just, maybe CSS might be it. + +00:12:41.680 --> 00:12:47.879 +Actually, I think it's JavaScript setting the CSS style on it. + +00:12:47.880 --> 00:12:51.279 +But yeah, you can play around with CSS. + +00:12:51.280 --> 00:12:53.639 +See, this one has a slightly darker, + +00:12:53.640 --> 00:12:59.519 +slightly thicker background. So SVGs are great for that. + +00:12:59.520 --> 00:13:01.479 +And if you inspect it, + +00:13:01.480 --> 00:13:03.199 +which I don't think I have shared here, + +00:13:03.200 --> 00:13:07.559 +but if you inspect it, I will share my inspect. + +00:13:07.560 --> 00:13:10.719 +I have too many windows open, + +00:13:10.720 --> 00:13:12.079 +so I don't want to share my whole thing. + +00:13:12.080 --> 00:13:19.074 +But one of these, oh, I don't even know which, how do I find, okay, + +00:13:19.075 --> 00:13:20.366 +it's the developer tools window. + +00:13:20.367 --> 00:13:25.324 +Do I even have developer tools? Oh, I can't see it. OK. + +00:13:25.325 --> 00:13:29.491 +If you inspect the page on the developer thingy, + +00:13:29.492 --> 00:13:38.116 +then it will show the SVG element. Yeah. + +00:13:38.117 --> 00:13:41.240 +And unfortunately, I can't share it easily right now. + +00:13:41.241 --> 00:13:46.616 +Maybe just say inspect. Oh, this is actually, I think, + +00:13:46.617 --> 00:13:55.116 +how also the individual talks have current ones, right? + +00:13:55.117 --> 00:14:00.439 +So I just have this image over here, + +00:14:00.440 --> 00:14:01.719 +and then you just have that one, + +00:14:01.720 --> 00:14:05.999 +that specific talk styled differently. + +00:14:06.000 --> 00:14:13.159 +How did you generate this SVG, + +00:14:13.160 --> 00:14:14.639 +the one showing the schedule? + +00:14:14.640 --> 00:14:24.439 +Oh, okay, okay. Emacs. Book, book, book, book. + +00:14:24.440 --> 00:14:29.599 +Emacs publish, I think. Let me share it. Emacs conf pub. + +00:14:29.600 --> 00:14:36.119 +One of these windows. Okay, let's see. + +00:14:36.120 --> 00:14:39.199 +Slow down, look at all the windows. + +00:14:39.200 --> 00:14:40.639 +Okay, I'm just gonna share the whole screen. + +00:14:40.640 --> 00:14:50.519 +Screen two, no, screen one. All right, and okay. + +00:14:50.520 --> 00:15:05.759 +I think this is the one. Is it sharing my screen? + +00:15:05.760 --> 00:15:08.079 +It is not sharing my screen. I'm going to try this again. + +00:15:08.080 --> 00:15:23.119 +Okay. All right. So, the schedule. The schedule. + +00:15:23.120 --> 00:15:24.559 +This is the actual function + +00:15:24.560 --> 00:15:28.319 +that creates the SVG rectangles for the talks. + +00:15:28.320 --> 00:15:35.279 +Oops. My screen share ended. Let me do that again. + +00:15:35.280 --> 00:15:41.239 +All right, and as you can see, + +00:15:41.240 --> 00:15:45.039 +it's just a little bit of math for the X, the Y, + +00:15:45.040 --> 00:15:48.199 +we color it differently + +00:15:48.200 --> 00:15:52.839 +depending on whether I'm making the schedule for the public view. + +00:15:52.840 --> 00:15:58.439 +So we just, you know, do we do developer, development talk + +00:15:58.440 --> 00:15:59.919 +or general talk as colors, + +00:15:59.920 --> 00:16:02.639 +or if I want to color it for the backstage view, + +00:16:02.640 --> 00:16:04.719 +I can keep track of the talk's status. + +00:16:04.720 --> 00:16:07.799 +Anyway, so SDG track takes the track + +00:16:07.800 --> 00:16:09.239 +and all the talk information, + +00:16:09.240 --> 00:16:11.559 +and it makes all the little rectangles. + +00:16:11.560 --> 00:16:15.599 +And this is the thing that adds a little hover + +00:16:15.600 --> 00:16:17.919 +for the times and titles as well. + +00:16:17.920 --> 00:16:22.639 +So, Emacs's API for dealing with this is actually pretty good. + +00:16:22.640 --> 00:16:27.559 +Oh, and of course, I have a hook here that modifies it. + +00:16:27.560 --> 00:16:30.119 +You can just run through a different function, + +00:16:30.120 --> 00:16:32.519 +different functions to tweak it. + +00:16:32.520 --> 00:16:36.399 +So I could say, okay, color it in case my time constraints are, + +00:16:36.400 --> 00:16:37.839 +you know, not being met. + +00:16:37.840 --> 00:16:40.959 +And then I can paint about this somewhere. + +00:16:40.960 --> 00:16:51.119 +And the nice thing about this + +00:16:51.120 --> 00:17:06.719 +is it's actually, it's, you can, hang on a second, let me do this carefully. + +00:17:06.720 --> 00:17:07.999 +All right, here you go. + +00:17:08.000 --> 00:17:13.479 +It's super nice to be able to refer to it within Emacs itself + +00:17:13.480 --> 00:17:15.839 +because Emacs has SVG support. + +00:17:15.840 --> 00:17:19.679 +So this is, for example, the organizer view + +00:17:19.680 --> 00:17:24.039 +inside an org mode file. And it just has all those SVGs. + +00:17:24.040 --> 00:17:25.599 +It don't have the hover things, + +00:17:25.600 --> 00:17:27.399 +because it's just an image in it. + +00:17:27.400 --> 00:17:37.759 +But yeah, SVGs, Emacs, awesome. Oh, that's very cool. + +00:17:37.760 --> 00:17:40.719 +You're actually drawing the rectangles from scratch. + +00:17:40.720 --> 00:17:44.999 +It took a little bit of figuring out, + +00:17:45.000 --> 00:17:46.959 +especially since I realized + +00:17:46.960 --> 00:17:49.679 +I wanted horizontal on the wiki pages + +00:17:49.680 --> 00:17:51.359 +so that it fits on people's screens, + +00:17:51.360 --> 00:17:56.039 +but I wanted vertical in my organized review + +00:17:56.040 --> 00:18:09.199 +so that I don't have to keep tilting my head sideways. + +00:18:09.200 --> 00:18:12.359 +and this is the code for that. + +00:18:12.360 --> 00:18:19.439 +See, I'm just directly adding G nodes for groups + +00:18:19.440 --> 00:18:23.199 +or A nodes for the hyperlinks and rep as well. + +00:18:23.200 --> 00:18:27.319 +I think the SVG library also has functions + +00:18:27.320 --> 00:18:31.079 +for adding rectangles and things like that, + +00:18:31.080 --> 00:18:32.359 +but sometimes I vaguely remember + +00:18:32.360 --> 00:18:34.999 +sometimes you can't return the node that I'm expecting. + +00:18:35.000 --> 00:18:40.559 +So, it's okay to just use the DOM functions directly. + +00:18:40.560 --> 00:18:46.079 +And then the whole thing gets SVG printed afterwards. + +00:18:46.080 --> 00:18:54.079 +So I can just say SVG printed, and then it's good to go. + +00:18:54.080 --> 00:18:57.719 +Let me see. Actually, do I have SVG? + +00:18:57.720 --> 00:19:05.679 +Let's schedule for track SVG. + +00:19:05.680 --> 00:19:08.799 +It's a shame that you can't visually interact + +00:19:08.800 --> 00:19:11.559 +with parts of an SVG in Emacs the way you can in Emacs. + +00:19:11.560 --> 00:19:16.799 +Oh, some people have some interesting experiments with that. + +00:19:16.800 --> 00:19:18.839 +I haven't dug into it much, + +00:19:18.840 --> 00:19:21.639 +but people have figured out how to use the mouse events + +00:19:21.640 --> 00:19:26.199 +and then figure out what the, like there's LEC draw, right? + +00:19:26.200 --> 00:19:30.159 +So lecdraw is a package that lets you draw SVGs + +00:19:30.160 --> 00:19:33.039 +and you can drag things and whatever. So that's very cool. + +00:19:33.040 --> 00:19:37.159 +And there's also an org related package + +00:19:37.160 --> 00:19:43.439 +that lets you visualize your schedule as boxes. + +00:19:43.440 --> 00:19:45.639 +I'd like, yeah, that's a thing also. + +00:19:45.640 --> 00:19:46.919 +So people have experimented + +00:19:46.920 --> 00:19:49.439 +with mouse interaction and it's cool, + +00:19:49.440 --> 00:19:51.919 +but I haven't had the brain space to do that yet, + +00:19:51.920 --> 00:19:55.479 +but it would be nice. Yeah, you're right. + +00:19:55.480 --> 00:19:58.079 +I remember using easy draw + +00:19:58.080 --> 00:20:01.999 +and being surprised at what it can do. + +00:20:02.000 --> 00:20:05.119 +The only thing I think I discovered + +00:20:05.120 --> 00:20:10.279 +is that it ends up creating lots of new SVGs, + +00:20:10.280 --> 00:20:13.079 +kind of the way that you do + +00:20:13.080 --> 00:20:14.959 +when you show elements one by one, + +00:20:14.960 --> 00:20:19.079 +you are essentially creating one SVG for each state, + +00:20:19.080 --> 00:20:24.439 +one full SVG for each intermediate state of the presentation, let's say. + +00:20:24.440 --> 00:20:26.479 +That's kind of what ELEasyDraw does. + +00:20:26.480 --> 00:20:30.839 +And I thought that's not good for performance. + +00:20:30.840 --> 00:20:33.039 +And it is kind of on the slow side, + +00:20:33.040 --> 00:20:37.359 +if you compare it to like Inkscape or anything else. + +00:20:37.360 --> 00:20:40.959 +But yeah, what it can do is pretty amazing. + +00:20:40.960 --> 00:20:44.559 +you can dynamically modify an SVG object, + +00:20:44.560 --> 00:20:48.399 +and it will automatically get updated in Emacs, + +00:20:48.400 --> 00:20:52.519 +which is a technique that I use a lot in FFNS in subbed. + +00:20:52.520 --> 00:20:57.559 +So for example, if I have waveform show all in this, + +00:20:57.560 --> 00:21:03.239 +it will, like, it's very easy to just move one element, for example, + +00:21:03.240 --> 00:21:08.519 +or make an element larger or smaller. + +00:21:08.520 --> 00:21:13.279 +And that's the... It might be pretty efficient, I don't know, + +00:21:13.280 --> 00:21:20.199 +but I'm certainly not like writing it to disk each time and reloading it. + +00:21:20.200 --> 00:21:25.519 +Eric and I demoed in 2020 EmacsConf for Dungeon Mode Works, + +00:21:25.520 --> 00:21:29.399 +where we demonstrated, you know, showing parts of the map + +00:21:29.400 --> 00:21:31.649 +and then, you know, different characters + +00:21:31.650 --> 00:21:33.839 +have different abilities that show, + +00:21:33.840 --> 00:21:36.599 +that allow you to see different dungeon features. + +00:21:36.600 --> 00:21:38.799 +And then if your last character, + +00:21:38.800 --> 00:21:42.719 +you know, of that class or race dies, + +00:21:42.720 --> 00:21:44.479 +then you suddenly can't see + +00:21:44.480 --> 00:21:46.759 +secret doors or whatever anymore. + +00:21:46.760 --> 00:21:48.719 +And so just make that disappear + +00:21:48.720 --> 00:21:50.559 +between one turn and the next + +00:21:50.560 --> 00:21:54.919 +is just working with just simply update the SVG + +00:21:54.920 --> 00:21:57.679 +and there goes the screen. No, no, no bus, no bus. + +00:21:57.680 --> 00:22:01.559 +It's pretty awesome. So this is an example + +00:22:01.560 --> 00:22:07.159 +of how I'm using it to kind of show where we are in the, in the track. + +00:22:07.160 --> 00:22:09.639 +And then here's mouse, mouse interaction, right? + +00:22:09.640 --> 00:22:21.359 +I can change my timestamp right from there. Which is fine. + +00:22:21.360 --> 00:22:28.079 +So, I'm curious how this works exactly. + +00:22:28.080 --> 00:22:31.799 +To effect any kind of change in the SVG, + +00:22:31.800 --> 00:22:36.239 +you have to use the DOM library, right? Yes. + +00:22:36.240 --> 00:22:39.319 +Okay, so, but that means that it's going to be, + +00:22:39.320 --> 00:22:43.639 +anytime you make a change, it's going to read in the XML, + +00:22:43.640 --> 00:22:47.999 +convert it to an Elisp DOM, right? + +00:22:48.000 --> 00:22:50.919 +And then you modify that tree. + +00:22:50.920 --> 00:22:55.839 +Yeah, you keep the DOM, like, well, in this case, for example, + +00:22:55.840 --> 00:23:00.879 +I'm actually constructing it using Emacs list objects directly. + +00:23:00.880 --> 00:23:02.959 +If you were working with an external SVG, + +00:23:02.960 --> 00:23:05.199 +you would parse it first, yes, + +00:23:05.200 --> 00:23:07.919 +using XML parse file or something like that. + +00:23:07.920 --> 00:23:11.999 +and then you would have it in memory. + +00:23:12.000 --> 00:23:14.559 +When you insert the image, + +00:23:14.560 --> 00:23:18.519 +you insert the list document object model that you have, + +00:23:18.520 --> 00:23:21.199 +and then any changes you make to that document object model + +00:23:21.200 --> 00:23:25.519 +automatically get updated in the image somehow. + +00:23:25.520 --> 00:23:33.559 +Oh, that's fantastic. Yeah. Yeah. I'll show you the code. Yeah. + +00:23:33.560 --> 00:23:38.079 +So I was under the impression + +00:23:38.080 --> 00:23:40.096 +that there's a round trip to XML involved + +00:23:40.097 --> 00:23:42.298 +to do anything like to go from displayed + +00:23:42.299 --> 00:23:46.079 +to in-memory to in-memory modified back + +00:23:46.080 --> 00:23:47.839 +to display all around trip. + +00:23:47.840 --> 00:23:52.959 +Yeah. So let me see where's my thing that changes it. + +00:23:52.960 --> 00:23:59.079 +So when it's the time. + +00:23:59.080 --> 00:24:06.999 +It's probably some kind of hook that I'm listening to here. + +00:24:07.000 --> 00:24:12.879 +Playback position hook. Oh, it's this update current bar. + +00:24:12.880 --> 00:24:15.999 +All right, so what update current bar does + +00:24:16.000 --> 00:24:19.319 +is it moves the bar to the right place. + +00:24:19.320 --> 00:24:21.159 +And you see here how this SVG, + +00:24:21.160 --> 00:24:24.719 +I'm actually just reading it off the text property + +00:24:24.720 --> 00:24:28.279 +so that I know which one is the current one in the overlay. + +00:24:28.280 --> 00:24:31.399 +I remove the old one, just the element. + +00:24:31.400 --> 00:24:34.279 +I don't have to mess around with the image. + +00:24:34.280 --> 00:24:35.599 +I removed the old one for some reason, + +00:24:35.600 --> 00:24:36.839 +just to make sure, I guess. + +00:24:36.840 --> 00:24:38.879 +You can actually just update the attribute on it. + +00:24:38.880 --> 00:24:42.919 +Oh, I think this is just so that I don't have to worry + +00:24:42.920 --> 00:24:45.519 +about whether there is one or there isn't. + +00:24:45.520 --> 00:24:47.959 +And then I add a bar at the right position + +00:24:47.960 --> 00:24:52.519 +and then it makes that little animated sweeping thingy. + +00:24:52.520 --> 00:24:55.959 +So you see how I'm not recreating the SVG at this point. + +00:24:55.960 --> 00:25:02.559 +I'm just getting it from the overlay. + +00:25:02.560 --> 00:25:07.479 +Yeah, that's very interesting. I wonder what it's doing. + +00:25:07.480 --> 00:25:09.919 +what it's actually doing under the hood when you run SVG removal. + +00:25:09.920 --> 00:25:19.439 +Yeah, I don't know, too. I think it's RSVG is tied + +00:25:19.440 --> 00:25:32.039 +into the display engine, so to speak. Yeah, that it is. + +00:25:32.040 --> 00:25:33.919 +But RSVG, the library, + +00:25:33.920 --> 00:25:39.199 +can only deal with actual SVGs, right, like XML SVGs, + +00:25:39.200 --> 00:25:43.119 +but we're dealing with the ELISP DOM of an SVG. + +00:25:43.120 --> 00:25:47.559 +So the display engine can re-enter the LISP. + +00:25:47.560 --> 00:25:49.519 +I do know that the display engine + +00:25:49.520 --> 00:25:51.839 +can re-enter the LISP engine, + +00:25:51.840 --> 00:25:53.599 +so I think that may be the answer. + +00:25:53.600 --> 00:25:58.759 +Yeah, you can just SVG insert image the object itself. + +00:25:58.760 --> 00:26:01.879 +So here, for example, SVG create just creates, + +00:26:01.880 --> 00:26:04.239 +it actually just creates a DOM model. + +00:26:04.240 --> 00:26:06.599 +So this is Lisp, and it's not, + +00:26:06.600 --> 00:26:09.079 +it doesn't get printed to string representation or anything. + +00:26:09.080 --> 00:26:13.239 +And then you can SVG insert image, + +00:26:13.240 --> 00:26:15.159 +or you can set the display and, you know, + +00:26:15.160 --> 00:26:20.719 +and use pass it like as an SVG image. + +00:26:20.720 --> 00:26:22.599 +SVG image gives you an image object + +00:26:22.600 --> 00:26:24.679 +if you want to do the like the regular + +00:26:24.680 --> 00:26:31.199 +sort of display thingy. Actually, that one says it turns it + +00:26:31.200 --> 00:26:34.399 +into a string representation. + +00:26:34.400 --> 00:26:36.719 +Or at least maybe that's just how it gets retrained. + +00:26:36.720 --> 00:26:38.559 +Anyhow, some kind of magic happens, + +00:26:38.560 --> 00:26:39.919 +but I don't have to worry about it. + +00:26:39.920 --> 00:26:44.119 +It just stays on my side. Yeah, but I was thinking about it + +00:26:44.120 --> 00:26:49.599 +because I expect that if it's converting to XML all the time, every time you make a change, + +00:26:49.600 --> 00:26:52.119 +then that's going to be the bottleneck + +00:26:52.120 --> 00:26:58.119 +for any kind of heavy interactive SVG editing or modification in Emacs. + +00:26:58.120 --> 00:27:01.199 +The kind that ELEasyDraw does. + +00:27:01.200 --> 00:27:03.839 +But maybe if we make it compelling enough, + +00:27:03.840 --> 00:27:07.279 +then the folks upstream can say, all right, + +00:27:07.280 --> 00:27:10.239 +like the way that JSON got a lot faster. + +00:27:10.240 --> 00:27:13.359 +Who knows? Maybe we can get that to be faster too. Yeah. + +00:27:13.360 --> 00:27:19.199 +I see a lot of potential for better UIs in Emacs + +00:27:19.200 --> 00:27:22.719 +with using SVGs. Yeah. + +00:27:22.720 --> 00:27:26.319 +Nicolas Rougier has all those experiments, right? + +00:27:26.320 --> 00:27:30.159 +Yeah, but all of those, I think, are bound by the limitations + +00:27:30.160 --> 00:27:33.599 +of how deeply SVGs are embedded in the display engine, + +00:27:33.600 --> 00:27:36.359 +because that's kind of what we're discussing. + +00:27:36.360 --> 00:27:38.479 +We want to avoid going to XML, + +00:27:38.480 --> 00:27:41.479 +I mean, going from XML to Elisp DOM + +00:27:41.480 --> 00:27:44.839 +to modified Elisp DOM back to XML. + +00:27:44.840 --> 00:27:50.079 +We want to avoid that round trip. Yeah, for sure. + +00:27:50.080 --> 00:28:04.799 +Or make that as fast as possible, yeah. + +00:28:04.800 --> 00:28:11.919 +Does anyone else have anything they want to share? + +00:28:11.920 --> 00:28:13.919 +I've always got stuff I can share, + +00:28:13.920 --> 00:28:17.639 +but I pretty happily defer. I've already seen what I made. + +00:28:17.640 --> 00:28:28.759 +Karthik? Oh, I'm a fly on a wall here. I'm not. + +00:28:28.760 --> 00:28:32.199 +Okay. I didn't come in with the intent to share anything. + +00:28:32.200 --> 00:28:34.239 +Yeah. How about you, Sacha? + +00:28:34.240 --> 00:28:37.999 +Do you have other stuff you haven't shown off recently? + +00:28:38.000 --> 00:28:39.839 +Aside from all the panicking + +00:28:39.840 --> 00:28:42.599 +about getting EmacsConf together this year? + +00:28:42.600 --> 00:28:45.399 +I just wanted to bring it up. + +00:28:45.400 --> 00:28:50.359 +Yeah, let's see, what do I have in my recent, like, fiddled with? + +00:28:50.360 --> 00:28:53.999 +So I have a project called... + +00:28:54.000 --> 00:28:56.879 +I have a project called Ufta, which is a little bit fun. + +00:28:56.880 --> 00:29:00.159 +Let me pull it up here before I share. + +00:29:00.160 --> 00:29:08.959 +You can see my messy, messy desktop. Okay, there it is. + +00:29:08.960 --> 00:29:21.519 +And that's supposed to want a shell. Probably that one. + +00:29:21.520 --> 00:29:29.119 +And we'll just bootroot. keeping in mind that graphics + +00:29:29.120 --> 00:29:33.399 +is going to end in about five minutes. Ooh, perfect. + +00:29:33.400 --> 00:29:38.959 +That'll keep me from from being my normal long-winded self. + +00:29:38.960 --> 00:29:47.239 +Have you already made contact with Emmanuel? I was not. + +00:29:47.240 --> 00:29:50.159 +Okay, I'm going to quickly do a check in. + +00:29:50.160 --> 00:30:00.119 +Okay, sounds good. Did you hear back from him? + +00:30:00.120 --> 00:30:01.039 +Assume that's a yes. + +00:30:01.040 --> 00:30:04.399 +All right, I'll go ahead and share screen here + +00:30:04.400 --> 00:30:08.879 +and just take a look, a very brief look at this. + +00:30:08.880 --> 00:30:16.719 +Assuming I can present. I had a question for Sacha. + +00:30:16.720 --> 00:30:22.399 +I had a question for Sacha and you, Corbin. + +00:30:22.400 --> 00:30:28.759 +Hello. Yeah, you're good. Go for it. Yeah, yeah. + +00:30:28.760 --> 00:30:33.319 +So in past years, in the EmacsConf, + +00:30:33.320 --> 00:30:36.799 +there was a talk by someone, + +00:30:36.800 --> 00:30:40.999 +usually John Wheatley, or I think Philip last year, + +00:30:41.000 --> 00:30:44.079 +about new developments in Emacs. + +00:30:44.080 --> 00:30:48.679 +Yes, and that is kind of at the whim + +00:30:48.680 --> 00:30:50.079 +of the Emacs developers, + +00:30:50.080 --> 00:30:56.919 +whether that is included in the in the conference. + +00:30:56.920 --> 00:30:59.679 +It's kind of up to the, you know, how busy folks are + +00:30:59.680 --> 00:31:02.879 +and whether somebody can follow up the time to prepare it. + +00:31:02.880 --> 00:31:07.119 +I see. Yeah, I noticed that there wasn't one for this year. + +00:31:07.120 --> 00:31:09.999 +And I know of at least one improvement + +00:31:10.000 --> 00:31:12.359 +or one change to Emacs. + +00:31:12.360 --> 00:31:17.559 +It's small, but I'm guessing it's very crucial + +00:31:17.560 --> 00:31:20.359 +for a certain class of Emacs users. + +00:31:20.360 --> 00:31:24.239 +And I can talk about that, just that one thing. + +00:31:24.240 --> 00:31:29.719 +But you can, you can, you can go right. + +00:31:29.720 --> 00:31:32.599 +So I can't share anything and we've got about one minute. + +00:31:32.600 --> 00:31:39.719 +So have that. Okay. Um, so the change is that, uh, + +00:31:39.720 --> 00:31:41.919 +in the development version of Emacs, + +00:31:41.920 --> 00:31:46.919 +sorry, child frames are now supported + +00:31:46.920 --> 00:31:53.679 +in terminal in the terminal. + +00:31:53.680 --> 00:31:56.519 +And I suspect that not many people know about it yet, + +00:31:56.520 --> 00:32:03.839 +but basically this means something like Corfu is going to work fine + +00:32:03.840 --> 00:32:05.479 +when you're running Emacs in a terminal, + +00:32:05.480 --> 00:32:14.159 +as well as pause frames or anything that shows like a little pop-up window + +00:32:14.160 --> 00:32:19.159 +that previously did not work in Terminal Emacs. + +00:32:19.160 --> 00:32:27.519 +That's it. That's the update. Cool. + +00:32:27.520 --> 00:32:29.359 +Okay, there I have a share screen button. + +00:32:29.360 --> 00:32:31.999 +We'll see if I think we're just about to cut away, + +00:32:32.000 --> 00:32:34.919 +but I'll go ahead and see if I can get this going. + +00:32:34.920 --> 00:32:36.679 +I'll just share my whole screen + +00:32:36.680 --> 00:32:39.599 +and this will be a little ugly as it comes in. + +00:32:39.600 --> 00:32:44.359 +So this is a project that I think is a little bit fun. + +00:32:44.360 --> 00:32:47.519 +It's called Oopda. And basically what this does, + +00:32:47.520 --> 00:32:49.759 +you can see it on my source site, + +00:32:49.760 --> 00:32:55.159 +that's sr.ht tilde mplscorewin slash Oopda. + +00:32:55.160 --> 00:32:59.599 +O-F-D-A, and this is a very simple approach + +00:32:59.600 --> 00:33:04.639 +to using an org file as a replacement for SQLite. + +00:33:04.640 --> 00:33:12.239 +It's very simple, but it does support like a dot style path and notation. + +00:33:12.240 --> 00:33:16.319 +So you can get at deeply nested data + +00:33:16.320 --> 00:33:19.159 +and just gives a little, + +00:33:19.160 --> 00:33:24.159 +there's a shell script wrapper that comes with it. + +00:33:24.160 --> 00:33:26.319 +All right. + +00:33:26.320 --> 00:33:32.759 +Theoretically, this is the Q&A for the graphics talk. + +00:33:32.760 --> 00:33:38.079 +Oops, I have to unmute over here. Sorry. + +00:33:38.080 --> 00:33:52.999 +All right, I had a little audio bleed through, + +00:33:53.000 --> 00:34:02.399 +my apologies, can you still hear me? + +00:34:02.400 --> 00:34:03.719 +All right, I'm gonna guess, + +00:34:03.720 --> 00:34:05.759 +because I still see us live on the screen + +00:34:05.760 --> 00:34:12.839 +that we're still live. All right, so I'll just press on. + +00:34:12.840 --> 00:34:18.599 +So what we're looking at here is a project called Upta. + +00:34:18.600 --> 00:34:21.239 +Here's the Emacs Lisp source port. + +00:34:21.240 --> 00:34:23.199 +You can see it's not real impressive + +00:34:23.200 --> 00:34:24.759 +even with all of its boilerplate. + +00:34:24.760 --> 00:34:27.399 +It's under 200 lines of code. + +00:34:27.400 --> 00:34:30.599 +And this is kind of a proof of concept, + +00:34:30.600 --> 00:34:34.999 +giving us the ability to use a org.org file + +00:34:35.000 --> 00:34:38.279 +as a flat file database. The intention here is to get + +00:34:38.280 --> 00:34:40.439 +a kind of transition from SQLite, + +00:34:40.440 --> 00:34:44.239 +which is using a flat text file as a database, + +00:34:44.240 --> 00:34:48.879 +to being able to have more of a literate database + +00:34:48.880 --> 00:34:52.759 +where we can intermix documentation about the data + +00:34:52.760 --> 00:34:54.119 +with the data itself, + +00:34:54.120 --> 00:34:57.599 +and then by giving a path on the command line. + +00:34:57.600 --> 00:35:02.199 +I'll go back to the README, just take a look at that. + +00:35:02.200 --> 00:35:05.239 +And you can see there's a couple of kind of examples here + +00:35:05.240 --> 00:35:11.319 +where we're, here we would be querying a path. + +00:35:11.320 --> 00:35:15.479 +We can also provide a value + +00:35:15.480 --> 00:35:20.039 +and that'll set data into the file. + +00:35:20.040 --> 00:35:23.119 +It also has an optional first parameter + +00:35:23.120 --> 00:35:26.319 +to specify the specific org file by default. + +00:35:26.320 --> 00:35:29.399 +It looks for a file called data.org. + +00:35:29.400 --> 00:35:34.279 +And of course that can be used inside Emacs as well, + +00:35:34.280 --> 00:35:37.799 +although the value of that may be a little bit limited + +00:35:37.800 --> 00:35:39.799 +compared to more sophisticated + +00:35:39.800 --> 00:35:41.799 +technologies like org-element. + +00:35:41.800 --> 00:35:43.839 +This is not an implementation + +00:35:43.840 --> 00:35:47.159 +that mirrors all of org-element + +00:35:47.160 --> 00:35:50.079 +or any of the more complex functionality of org. + +00:35:50.080 --> 00:35:52.919 +It's really as simple as possible proof of concept + +00:35:52.920 --> 00:35:57.679 +to just to be able to kind of work + +00:35:57.680 --> 00:35:59.559 +with the data inside an org file + +00:35:59.560 --> 00:36:01.679 +and get it back out on the command line. + +00:36:01.680 --> 00:36:07.839 +So we'll see if we can make it work here. + +00:36:07.840 --> 00:36:13.479 +Corwin, could you increase the font size? + +00:36:13.480 --> 00:36:27.199 +I surely will. All right. How's that? + +00:36:27.200 --> 00:36:30.999 +That's my picture. Yeah. Okay. Cool. + +00:36:31.000 --> 00:36:39.159 +So, let's see if we do have a, well, we can probably make it. + +00:36:39.160 --> 00:37:00.839 +Let's do this. + +00:37:00.840 --> 00:37:05.159 +All right, and then in theory, this just works. + +00:37:05.160 --> 00:37:42.199 +So we'll cut. + +00:37:42.200 --> 00:37:45.840 +So we'll just create a data file called data.org. + +00:37:45.880 --> 00:37:50.239 +Make sure that works. Looks reasonable. + +00:37:50.240 --> 00:38:13.079 +Let's try adding some data to it. Hmm, not so happy. + +00:38:13.080 --> 00:38:17.559 +Okay, let's try it the hard way. + +00:38:17.560 --> 00:38:21.079 +I'll come back over here to my usage + +00:38:21.080 --> 00:38:23.199 +and we'll just try running it. + +00:38:23.200 --> 00:38:37.319 +Is Emacs, is finding Emacs really the issue? + +00:38:37.320 --> 00:38:41.199 +It seems to me it's not, it's not liking my path. + +00:38:41.200 --> 00:38:44.079 +It's not finding out that I do EO and PWD. + +00:38:44.080 --> 00:38:49.519 +It wants it to be on the log. I see. + +00:38:49.520 --> 00:38:54.119 +So I may have to even mess with that further, + +00:38:54.120 --> 00:38:55.359 +but we'll just try it. + +00:38:55.360 --> 00:39:04.839 +So this should retrieve the value if it works. + +00:39:04.840 --> 00:39:17.119 +Oh, and let's take a take a simple + +00:39:17.120 --> 00:39:47.319 +Yeah, add-to-list takes a symbol. + +00:39:47.320 --> 00:39:52.639 +We're going to have issues with bash quoting, + +00:39:52.640 --> 00:39:58.559 +so you should escape the quoting side. + +00:39:58.560 --> 00:40:27.719 +Gotcha. You're kidding. + +00:40:27.720 --> 00:40:36.560 +I'm not letting go. Whoa. That might work. + +00:40:36.600 --> 00:41:02.159 +I got my parents right. Never demo live. How exciting. OK. + +00:41:02.160 --> 00:41:13.079 +Without batch, though, we may not get our output. OK. + +00:41:13.080 --> 00:41:20.320 +Well, that's as far as I'm going to take it. + +00:41:20.400 --> 00:41:21.959 +I should have prepped a demo environment. + +00:41:21.960 --> 00:41:26.879 +I wasn't really prepared to demo. No worries. + +00:41:26.880 --> 00:41:30.719 +Couple of questions about this feature. + +00:41:30.720 --> 00:41:37.799 +The first question is, do you use it? I do use it, yeah. + +00:41:37.800 --> 00:41:41.279 +I should have gotten onto the environment + +00:41:41.280 --> 00:41:45.599 +where I'm using it. It's a little messy. + +00:41:45.600 --> 00:41:47.079 +It gets into another project + +00:41:47.080 --> 00:41:48.839 +that's way too complicated to get into. + +00:41:48.840 --> 00:41:53.079 +Yeah, but what kinds of things do you use it for? + +00:41:53.080 --> 00:41:56.999 +It's sort of hard to answer + +00:41:57.000 --> 00:41:59.159 +that without getting into my other project, + +00:41:59.160 --> 00:42:02.919 +but essentially I've got a web development tool chain + +00:42:02.920 --> 00:42:05.759 +that is kind of a web-based REPL + +00:42:05.760 --> 00:42:10.919 +that is kind of a literate compute environment, if you will, + +00:42:10.920 --> 00:42:13.119 +allowing me to use a bunch of virtual machines + +00:42:13.120 --> 00:42:19.079 +as one big computer. That project is called Ghost Wheel. + +00:42:19.080 --> 00:42:23.719 +And so in order to show off the homepage, + +00:42:23.720 --> 00:42:30.359 +So on this page, you can see the list of machines, + +00:42:30.360 --> 00:42:34.759 +and then you'll also see there's these state indicators. + +00:42:34.760 --> 00:42:38.439 +And right now, as a matter of fact, + +00:42:38.440 --> 00:42:41.239 +what I've been hacking on + +00:42:41.240 --> 00:42:44.879 +is trying to get support for org tables. + +00:42:44.880 --> 00:42:48.759 +Right now, I support only changing all of the data + +00:42:48.760 --> 00:42:51.959 +within some heading, subheading, or whatever. + +00:42:51.960 --> 00:42:55.079 +What I'd like to be able to do is specify, + +00:42:55.080 --> 00:43:01.079 +using org table fm syntax, the particular row column. + +00:43:01.080 --> 00:43:03.839 +So find a particular named table, + +00:43:03.840 --> 00:43:06.559 +find a particular row, you know, + +00:43:06.560 --> 00:43:08.639 +column one, you know, row two, column one, + +00:43:08.640 --> 00:43:11.919 +and then set the value from the command. + +00:43:11.920 --> 00:43:18.359 +Currently, I just use it for very simple stuff. + +00:43:18.360 --> 00:43:20.519 +I don't really want to show that off. + +00:43:20.520 --> 00:43:23.599 +I've got another page that lists all of the DNS names + +00:43:23.600 --> 00:43:26.159 +that are associated that are hosted on Ghostwheel. + +00:43:26.160 --> 00:43:29.319 +And so I use that to add items to the list. + +00:43:29.320 --> 00:43:40.439 +Does it make sense? Yeah, it sounds useful. + +00:43:40.440 --> 00:43:47.279 +So one thing that I would like, + +00:43:47.280 --> 00:43:51.479 +I guess it's easy enough to write, + +00:43:51.480 --> 00:43:58.799 +but is a tool exactly like this + +00:43:58.800 --> 00:44:03.839 +where I can query my org files from the command line? + +00:44:03.840 --> 00:44:06.879 +Yeah, that's exactly what it says. + +00:44:06.880 --> 00:44:14.599 +Yeah, but it's going to be more + +00:44:14.600 --> 00:44:23.319 +like a database query where, you know, I say select, select all headings where, you know, + +00:44:23.320 --> 00:44:27.279 +that contain this string or that have this tag, right? + +00:44:27.280 --> 00:44:38.519 +The kinds of things that you can do with org-ql from outside, from inside Emacs, right? + +00:44:38.520 --> 00:44:41.119 +To be able to do those from the command line with, + +00:44:41.120 --> 00:44:48.279 +I'm going to invoke SQL here, like SQL SELECT statements, + +00:44:48.280 --> 00:44:50.519 +but it doesn't have to be that syntax, right? + +00:44:50.520 --> 00:44:52.519 +Just that capability. + +00:44:52.520 --> 00:44:57.079 +Yeah, I can see that being useful as a command line tool. + +00:44:57.080 --> 00:44:59.399 +And I don't even care about write, + +00:44:59.400 --> 00:45:02.399 +like the ability to write or manipulate the file. + +00:45:02.400 --> 00:45:11.799 +Just query. the command line that sounds yeah yeah exactly + +00:45:11.800 --> 00:45:15.159 +to be able to dig a piece of data out of an org file as well + +00:45:15.160 --> 00:45:18.359 +for my purpose it's very useful to be able to replace it + +00:45:18.360 --> 00:45:20.999 +because then i can deal with submit the form you know + +00:45:21.000 --> 00:45:23.999 +and that might be like a sign up form + +00:45:24.000 --> 00:45:29.159 +and then i just add the user add up an entry into the org file + +00:45:29.160 --> 00:45:35.239 +for that user right what it doesn't do is a relational data + +00:45:35.240 --> 00:45:40.559 +So everything, it's essentially a document data store. + +00:45:40.560 --> 00:45:53.959 +Like a Mongo kind of. True. So over on IRC, ScrewLisp asks, + +00:45:53.960 --> 00:45:57.279 +what does it mean to query an ARC file? + +00:45:57.280 --> 00:46:01.679 +Is the data in a table? Is it in an ELISP nested list view + +00:46:01.680 --> 00:46:06.559 +of a table that has a name in ARC? + +00:46:06.560 --> 00:46:10.639 +And my answer to that is that if you ever used RQL, + +00:46:10.640 --> 00:46:14.199 +written by Alpha Papa, + +00:46:14.200 --> 00:46:18.039 +then that's the kind of thing I'm talking about. + +00:46:18.040 --> 00:46:23.119 +So, you query based on one of a set of attributes. + +00:46:23.120 --> 00:46:30.599 +And these attributes are anything that's recognized by ARC. + +00:46:30.600 --> 00:46:35.239 +For example, the to-do status, the dates, + +00:46:35.240 --> 00:46:40.399 +the outline path, the headings, a full text search. + +00:46:40.400 --> 00:46:43.479 +There are several more. + +00:46:43.480 --> 00:46:46.079 +The presence or absence of certain properties. + +00:46:46.080 --> 00:46:50.879 +using any combination of those if you want to dig down + +00:46:50.880 --> 00:46:52.759 +and find some data in an art file. + +00:46:52.760 --> 00:46:56.079 +That's the kind of query I'm talking about. + +00:46:56.080 --> 00:46:58.239 +It is somewhat equivalent + +00:46:58.240 --> 00:47:02.359 +to being able to write SQL queries + +00:47:02.360 --> 00:47:09.719 +where you match on things just for your art files. + +00:47:09.720 --> 00:47:21.199 +Okay. I think we might have figured out our problem. + +00:47:21.200 --> 00:47:38.839 +It was DOS encoding. See if that works. + +00:47:38.840 --> 00:47:47.879 +I switched the development track over + +00:47:47.880 --> 00:47:53.559 +to just watching the gen track since I couldn't find it. + +00:47:53.560 --> 00:47:57.359 +Also, Eludo wants to mention + +00:47:57.360 --> 00:48:00.799 +the Emacs Carnival theme for December. + +00:48:00.800 --> 00:48:02.359 +Yes, the people of Emacs, + +00:48:02.360 --> 00:48:04.119 +of which you are all very awesome. + +00:48:04.120 --> 00:48:05.519 +Thank you so much for your patience. + +00:48:05.520 --> 00:48:08.159 +Today has been very interesting. + +00:48:08.160 --> 00:48:13.359 +But yes, at some point we can show that too. + +00:48:13.360 --> 00:48:17.199 +And we can basically wrap up anytime we like + +00:48:17.200 --> 00:48:19.279 +or hang out for as much time as we like also. + +00:48:19.280 --> 00:48:23.279 +okay so this is okay at least i got + +00:48:23.280 --> 00:48:24.519 +as far as a working demo here + +00:48:24.520 --> 00:48:26.439 +so now you can kind of see what's going on um + +00:48:26.440 --> 00:48:31.599 +and i'll just wrap that into uh + +00:48:31.600 --> 00:48:40.959 +into a little prettier output + +00:48:40.960 --> 00:48:53.159 +And you can see that it modified the value. + +00:48:53.160 --> 00:48:59.479 +So it's pretty darn simple. + +00:48:59.480 --> 00:49:06.159 +Again, all it's doing is completely replacing all of this content + +00:49:06.160 --> 00:49:11.679 +with whatever new value is given as its final argument + +00:49:11.680 --> 00:49:14.879 +after naming the data path. + +00:49:14.880 --> 00:49:23.439 +So the one refinement we can do just to get a little more complex example going. + +00:49:23.440 --> 00:49:32.759 +We'll deepen our structure a little bit. And try that. + +00:49:32.760 --> 00:49:38.799 +So here now we'll say test two. + +00:49:38.800 --> 00:49:47.639 +And we can take a look at the data file + +00:49:47.640 --> 00:49:51.599 +and see that it has adjusted that + +00:49:51.600 --> 00:49:55.959 +because test2 was completely unique, that worked fine. + +00:49:55.960 --> 00:50:00.519 +If that were not the case, + +00:50:00.520 --> 00:50:02.599 +we would have had to specify the path + +00:50:02.600 --> 00:50:17.679 +using dot notation like this. And that's pretty much it. + +00:50:17.680 --> 00:50:20.759 +It took me much longer to figure out + +00:50:20.760 --> 00:50:23.759 +why it wasn't just working than it did to demo it. + +00:50:23.760 --> 00:50:29.239 +And again, what I really like about this program, + +00:50:29.240 --> 00:50:31.639 +besides the fact that I find it quite useful + +00:50:31.640 --> 00:50:34.639 +to just be able to stuff values into an org file + +00:50:34.640 --> 00:50:36.439 +from the command line using shell script, + +00:50:36.440 --> 00:50:41.279 +is what I really like about this + +00:50:41.280 --> 00:50:45.999 +is that it's a whopping 190 lines of code, + +00:50:46.000 --> 00:50:47.919 +including all the boilerplate. + +00:50:47.920 --> 00:50:55.759 +And I will share the project into the chat. + +00:50:55.760 --> 00:51:02.199 +So, Corwin, you're not using org-element for this, are you? + +00:51:02.200 --> 00:51:06.799 +No. Yeah, that's a great question. + +00:51:06.800 --> 00:51:10.839 +Let's just dig a little into the code here. + +00:51:10.840 --> 00:51:21.039 +Or maybe it would be more fun to actually + +00:51:21.040 --> 00:51:26.719 +So the only real requires here, I do use cl-lib mostly. + +00:51:26.720 --> 00:51:33.159 +I'm directly using the macros from org. + +00:51:33.160 --> 00:51:36.879 +Particularly, I'm extremely fond of this function. + +00:51:36.880 --> 00:51:41.279 +I'd love to see this just promoted to promoted + +00:51:41.280 --> 00:51:43.559 +somewhere deeper into Emacs proper, + +00:51:43.560 --> 00:51:47.639 +so that I don't have to load all of the org macros + +00:51:47.640 --> 00:51:50.239 +to get to this particularly useful one, + +00:51:50.240 --> 00:51:54.679 +which just tells me whether ignoring whitespace + +00:51:54.680 --> 00:51:59.639 +a string has any characters, has greater than zero length. + +00:51:59.640 --> 00:52:04.439 +Isn't that just string blank B? + +00:52:04.440 --> 00:52:08.999 +So this is a little different. + +00:52:09.000 --> 00:52:14.799 +This deals with... I may struggle to remember the details, + +00:52:14.800 --> 00:52:20.999 +and it's possible that the non-org specific version + +00:52:21.000 --> 00:52:23.519 +has even been improved or I didn't use it correctly, + +00:52:23.520 --> 00:52:29.479 +but I believe my experience was it didn't handle new lines, for example, quite the same way. + +00:52:29.480 --> 00:52:38.519 +So getting into what this actually does, + +00:52:38.520 --> 00:52:43.879 +most of the program is finding the relevant part of the file. + +00:52:43.880 --> 00:52:49.079 +You'll see that we start out by doing a depth-based search, + +00:52:49.080 --> 00:52:51.959 +capture the value that we're looking for. + +00:52:51.960 --> 00:52:58.119 +And then finally, we widen the buffer + +00:52:58.120 --> 00:53:01.799 +and keep handling the case where we might be being called + +00:53:01.800 --> 00:53:05.839 +from within Emacs in a narrowed buffer. + +00:53:05.840 --> 00:53:11.079 +This is another what should be documented at the top. + +00:53:11.080 --> 00:53:13.919 +So that is obviously going to load org. + +00:53:13.920 --> 00:53:21.399 +Just double-check that. Yeah, it is going to load org. + +00:53:21.400 --> 00:53:30.039 +And we can see that because it didn't find the function. + +00:53:30.040 --> 00:53:40.399 +until I loaded Org and then it did when I did C-h f + +00:53:40.400 --> 00:53:44.999 +to get definition of a function. + +00:53:45.000 --> 00:53:51.719 +So, widen the buffer and then I just start looking for the search. + +00:53:51.720 --> 00:53:55.399 +You can see I'm doing simple regular expression based searches here. + +00:53:55.400 --> 00:54:01.719 +Looking for lines, ultimately, that start with a star. + +00:54:01.720 --> 00:54:05.119 +That was a little simpler format + +00:54:05.120 --> 00:54:07.759 +that didn't quite work out. + +00:54:07.760 --> 00:54:25.719 +So I'm searching for, here this is a little tricky, + +00:54:25.720 --> 00:54:28.839 +but I'm searching for a number of stars + +00:54:28.840 --> 00:54:30.839 +equal to the depth that I want. + +00:54:30.840 --> 00:54:33.439 +The depth that I want being calculated + +00:54:33.440 --> 00:54:38.039 +based on the number of dots that were in the query string. + +00:54:38.040 --> 00:54:47.159 +from there, you know, kind of skipping some stuff, right? + +00:54:47.160 --> 00:54:49.599 +Once we find our starting position, + +00:54:49.600 --> 00:54:53.239 +then we're going to have to find the end of that, + +00:54:53.240 --> 00:54:57.679 +the section that we're going to read or replace. + +00:54:57.680 --> 00:55:12.959 +Text a tiny bit smaller. So I checked org-string nwp, + +00:55:12.960 --> 00:55:20.079 +and it's the same as string blank p. + +00:55:20.080 --> 00:55:26.319 +exactly the same code or the same result? + +00:55:26.320 --> 00:55:30.399 +No, it's the same result. Well, it's the same check, + +00:55:30.400 --> 00:55:34.519 +but string blank p will return a match object, + +00:55:34.520 --> 00:55:35.999 +like a string match object, + +00:55:36.000 --> 00:55:39.119 +whereas the org version will return the string itself + +00:55:39.120 --> 00:55:46.159 +if it finds a match, as in if it's blank. + +00:55:46.160 --> 00:55:48.319 +I don't remember that. + +00:55:48.320 --> 00:55:51.079 +As a Boolean check, they are the same. + +00:55:51.080 --> 00:55:54.159 +If you use it as, you know, is it blank or not. + +00:55:54.160 --> 00:56:02.679 +So, um, yeah, I've talked for way longer. + +00:56:02.680 --> 00:56:04.119 +I thought I literally thought + +00:56:04.120 --> 00:56:05.319 +this would be a five minute thing. + +00:56:05.320 --> 00:56:08.399 +I'm not sure if there are any questions on it, + +00:56:08.400 --> 00:56:10.239 +but just to simply answer your question. + +00:56:10.240 --> 00:56:11.719 +No, it doesn't use org element. + +00:56:11.720 --> 00:56:23.759 +This is pure regex based work. + +00:56:23.760 --> 00:56:26.919 +So, the advantage of not using... Right. + +00:56:26.920 --> 00:56:32.679 +So, the advantage of not using arg element + +00:56:32.680 --> 00:56:37.439 +is that you don't have to load arg or arg element, right? + +00:56:37.440 --> 00:56:39.039 +And so, it's going to be faster. + +00:56:39.040 --> 00:56:45.359 +And it's going to be faster both because you don't have to load arg element + +00:56:45.360 --> 00:56:51.079 +and because you don't have to run arg element, like the arg parser. + +00:56:51.080 --> 00:56:52.879 +But on the other hand, + +00:56:52.880 --> 00:56:58.439 +you end up loading all of org anyway. + +00:56:58.440 --> 00:57:02.679 +So at that point, it might just be better + +00:57:02.680 --> 00:57:05.039 +to use org element because it's more robust. + +00:57:05.040 --> 00:57:07.919 +For example, if you have a bunch of leading stars + +00:57:07.920 --> 00:57:09.959 +inside a source block or something, + +00:57:09.960 --> 00:57:11.599 +you don't want to misclassify that. + +00:57:11.600 --> 00:57:16.639 +Matter of fact, I believe I had to do some flossing with it + +00:57:16.640 --> 00:57:18.879 +to deal with not just that, + +00:57:18.880 --> 00:57:21.439 +but drawers and things like that. + +00:57:21.440 --> 00:57:25.879 +right yeah so at the end of the day + +00:57:25.880 --> 00:57:28.039 +that was just an extra 10 or 20 characters + +00:57:28.040 --> 00:57:31.039 +in the regular expression so i just shrugged and wrote them + +00:57:31.040 --> 00:57:36.799 +you can see there are a number of i + +00:57:36.800 --> 00:57:40.279 +i happen to like writing regular expressions + +00:57:40.280 --> 00:57:42.479 +and find them relatively readable so + +00:57:42.480 --> 00:57:46.719 +So it didn't bother me doing that. + +00:57:46.720 --> 00:57:49.239 +I've also done a bunch of work with org-element + +00:57:49.240 --> 00:57:51.439 +with the dungeon project, + +00:57:51.440 --> 00:57:53.759 +which of course uses that extensively + +00:57:53.760 --> 00:57:57.079 +to pull data out of tables and so on. + +00:57:57.080 --> 00:58:01.319 +And indeed, I think that may ultimately be my solution. + +00:58:01.320 --> 00:58:06.199 +I've been kind of distracted on a side quest + +00:58:06.200 --> 00:58:09.959 +to improve the org-table-fm parser. + +00:58:09.960 --> 00:58:14.279 +There's a post on my blog about the work that I've done there, + +00:58:14.280 --> 00:58:19.359 +and recently started talking to Ihor, + +00:58:19.360 --> 00:58:20.839 +the new org maintainer, + +00:58:20.840 --> 00:58:27.579 +who took over in the last year or so from Bastien. + +00:58:27.580 --> 00:58:32.159 +Just about what it would take to pick that up, + +00:58:32.160 --> 00:58:34.279 +or at least get it to a point + +00:58:34.280 --> 00:58:35.679 +where somebody else could work on it. + +00:58:35.680 --> 00:58:39.599 +It's pretty dense right now. + +00:58:39.600 --> 00:58:59.919 +So this thing is a bit of a monster, + +00:58:59.920 --> 00:59:01.799 +but at the end of the day, + +00:59:01.800 --> 00:59:06.919 +our goal is to extend the syntax, + +00:59:06.920 --> 00:59:12.519 +is to be able to use this Org Table FM syntax + +00:59:12.520 --> 00:59:14.439 +in other contexts. + +00:59:14.440 --> 00:59:18.519 +So if you haven't looked at board table FM, + +00:59:18.520 --> 00:59:21.399 +these I bar or these I markers + +00:59:21.400 --> 00:59:26.039 +are telling us to look for the table separator. + +00:59:26.040 --> 00:59:29.759 +So positioning based on the location of a table separator. + +00:59:29.760 --> 00:59:34.439 +I find that a little bit brittle + +00:59:34.440 --> 00:59:38.679 +just because it's really easy to go in and decide, + +00:59:38.680 --> 00:59:42.919 +oh, it'll look better with an additional line separator in there. + +00:59:42.920 --> 00:59:48.039 +And then all of these formulas break everywhere. + +00:59:48.040 --> 00:59:49.919 +So it would be a little more fun + +00:59:49.920 --> 00:59:53.399 +to have at least variables in there. + +00:59:53.400 --> 00:59:56.159 +And that's kind of part of the scope. + +00:59:56.160 --> 01:00:04.119 +If we look, and here you get kind of a hint + +01:00:04.120 --> 01:00:06.639 +of the new syntax I'd like to support, + +01:00:06.640 --> 01:00:12.559 +things like $star, $underscore. + +01:00:12.560 --> 01:00:17.559 +Keyword it's it's probably a half-hour talk + +01:00:17.560 --> 01:00:20.879 +just to get into what every single one of these would do + +01:00:20.880 --> 01:00:26.319 +But this post does does give some some context of that + +01:00:26.320 --> 01:00:35.679 +And more importantly there is a as a complete test program that + +01:00:35.680 --> 01:00:39.159 +Worked the last time I was playing with it + +01:00:39.160 --> 01:00:43.959 +And this gives you complete examples + +01:00:43.960 --> 01:00:48.479 +of all the syntax that the work in progress does currently support. + +01:00:48.480 --> 01:00:52.799 +You'll see some of these items are commented out. + +01:00:52.800 --> 01:00:54.359 +Those aren't supported yet + +01:00:54.360 --> 01:00:56.119 +and before I would implement them now, + +01:00:56.120 --> 01:01:04.359 +especially now that we're talking in terms of trying to take org itself this direction, you know, + +01:01:04.360 --> 01:01:13.539 +of kind of beefing up the the TableFM format parsing + +01:01:13.540 --> 01:01:16.999 +so that it could be used in other contexts besides + +01:01:17.000 --> 01:01:19.640 +specifically within a formula. + +01:01:19.640 --> 01:01:26.839 +I wouldn't want to add features + +01:01:26.840 --> 01:01:33.399 +to it without discussing those. + +01:01:33.400 --> 01:01:37.639 +So this is just a simple, basically a literate test file + +01:01:37.640 --> 01:01:40.439 +if you want to call it that. + +01:01:40.440 --> 01:01:43.239 +The perhaps key improvement here + +01:01:43.240 --> 01:01:49.799 +is naming all of the different capture groups. + +01:01:49.800 --> 01:01:52.119 +which just, if you're working + +01:01:52.120 --> 01:01:55.919 +with really huge regular expressions, which this is, + +01:01:55.920 --> 01:01:58.839 +let me just make sure the whole pagex is right in here + +01:01:58.840 --> 01:02:00.599 +so we can see it, yeah. + +01:02:00.600 --> 01:02:05.959 +So here's the actual rewrite, scale it a little bit, + +01:02:05.960 --> 01:02:14.479 +so you can see it's kind of a monster. + +01:02:14.480 --> 01:02:27.639 +And that's all using Rx. + +01:02:27.640 --> 01:02:29.519 +So hopefully that looks pretty familiar. + +01:02:29.520 --> 01:02:35.039 +Dollars for specifying a column, at sign to specify a row. + +01:02:35.040 --> 01:02:43.959 +And we also have the keys. + +01:02:43.960 --> 01:02:58.559 +Anybody else want to show and tell? + +01:02:58.560 --> 01:03:01.399 +We're going to cut over to the automated introduction + +01:03:01.400 --> 01:03:07.799 +for the Saturday closing remarks in like four minutes. + +01:03:07.800 --> 01:03:15.599 +Oh, but quick, quick, quick mention of the Emacs Carnival. + +01:03:15.600 --> 01:03:20.559 +So the Emacs Carnival is a shared blogging theme. + +01:03:20.560 --> 01:03:25.079 +where lots of people write about a specific theme, + +01:03:25.080 --> 01:03:26.119 +and then if you write about it, + +01:03:26.120 --> 01:03:28.239 +you can send your link to whoever's hosting the carnival. + +01:03:28.240 --> 01:03:31.679 +And it's a great way to discover other people's cool stuff. + +01:03:31.680 --> 01:03:35.679 +So if I take presenter, hang on a second, take presenter. + +01:03:35.680 --> 01:03:39.519 +Oh, actually, haha, I know, + +01:03:39.520 --> 01:03:41.959 +I'm going to make Elladom present it. + +01:03:41.960 --> 01:03:47.199 +Haha, you are now in charge. Okay, take it away. + +01:03:47.200 --> 01:03:49.959 +So I've been using Emacs for like 46 years now, + +01:03:49.960 --> 01:03:53.359 +back to TECO Emacs. And as I just said in the chat, + +01:03:53.360 --> 01:03:56.319 +I've found that the people who use Emacs + +01:03:56.320 --> 01:03:59.400 +tend to be interesting people in many different ways. + +01:03:59.440 --> 01:04:03.199 +And so this month, I'm just saying, let's give a shout out + +01:04:03.200 --> 01:04:06.399 +to some of the interesting people we've met along the way. + +01:04:06.400 --> 01:04:09.239 +And including some of the people + +01:04:09.240 --> 01:04:10.159 +that are putting on this conference + +01:04:10.160 --> 01:04:11.959 +are some of the most interesting + +01:04:11.960 --> 01:04:13.439 +and helpful people I've ever met. + +01:04:13.440 --> 01:04:27.919 +So thank you. You're very kind. Thank you. + +01:04:27.920 --> 01:04:30.679 +I'll say more than that. Maybe I will. + +01:04:30.680 --> 01:04:34.279 +I completely agree with you and I couldn't agree more. + +01:04:34.280 --> 01:04:38.839 +I think that's how Sacha and Amin and Leo + +01:04:38.840 --> 01:04:40.559 +really dragged me into this, + +01:04:40.560 --> 01:04:42.319 +you know, into being a volunteer. + +01:04:42.320 --> 01:04:44.599 +And I really, I'm sure we'll talk + +01:04:44.600 --> 01:04:46.039 +about this in the closing remarks, + +01:04:46.040 --> 01:04:50.199 +but I can't recommend volunteering for this project enough. + +01:04:50.200 --> 01:04:54.319 +It's just so fun to talk backstage + +01:04:54.320 --> 01:05:00.679 +with the presenters I don't know. + +01:05:00.680 --> 01:05:11.439 +It's an extremely engaging community. + +01:05:11.440 --> 01:05:12.759 +It's really thoughtful. + +01:05:12.760 --> 01:05:15.039 +I like the way y'all are so patient and awesome + +01:05:15.040 --> 01:05:19.439 +and I can be just quietly having my little freak out here + +01:05:19.440 --> 01:05:20.679 +and everyone's fine + +01:05:20.680 --> 01:05:23.879 +and will even help debug things live as needed. + +01:05:23.880 --> 01:05:45.499 +So this is all good. + +01:05:45.500 --> 01:05:48.119 +Anyway, so if people want to participate, + +01:05:48.120 --> 01:05:49.919 +you basically write a blog post. + +01:05:49.920 --> 01:05:53.159 +If you don't have a blog yet, + +01:05:53.160 --> 01:05:56.959 +there are any number of packages in Emacs, + +01:05:56.960 --> 01:05:58.479 +as well as web-based services, + +01:05:58.480 --> 01:06:02.039 +but really, you can get something going with Emacs. + +01:06:02.040 --> 01:06:05.839 +or exporting to HTML and maybe even figure out RSS, + +01:06:05.840 --> 01:06:08.279 +or you can use a static site generator like Hugo, + +01:06:08.280 --> 01:06:10.999 +or you can find, if you can set up WordPress, + +01:06:11.000 --> 01:06:12.119 +that's another way to do it. + +01:06:12.120 --> 01:06:15.079 +Or you can email me your thing and I'll post it on my blog + +01:06:15.080 --> 01:06:20.239 +and let me know how you want to be credited for it. + +01:06:20.240 --> 01:06:23.559 +Anyway, so you can share your story + +01:06:23.560 --> 01:06:26.879 +or share your story about somebody else's story + +01:06:26.880 --> 01:06:35.319 +and celebrate Emacs community. + +01:06:35.320 --> 01:06:39.079 +And we can send it to George also. + +01:06:39.080 --> 01:06:48.399 +We'll then make links in that blog post. + +01:06:48.400 --> 01:06:50.199 +And on the subject of community, + +01:06:50.200 --> 01:06:53.439 +I also heartily recommend the IRC community on Emacs. + +01:06:53.440 --> 01:06:55.919 +Pound Emacs is another one of those things + +01:06:55.920 --> 01:06:58.279 +that I just personally can't get enough of, + +01:06:58.280 --> 01:07:05.079 +and I hear a lot of stories about just how it's helped people. + +01:07:05.080 --> 01:07:09.119 +All right, we are now having the automated introduction + +01:07:09.120 --> 01:07:12.759 +and then it's going to rejoin over here very soon. + +01:07:12.760 --> 01:07:22.439 +Hang on a second. Wow, that's going. + +01:07:22.440 --> 01:07:34.399 +Saturday close and let's arrange our screen nicely. + +01:07:34.400 --> 01:07:38.279 +All right, we made it to the end of the first day! Woohoo! + +01:07:38.280 --> 01:07:40.399 +Thank you for joining us + +01:07:40.400 --> 01:07:42.959 +for the first day of EmacsConf 2025. + +01:07:42.960 --> 01:07:44.919 +Feel free to spread the word + +01:07:44.920 --> 01:07:48.479 +because there is still another day of fun talks tomorrow. + +01:07:48.480 --> 01:07:51.399 +So hashtag EmacsConf and hashtag Emacs. + +01:07:51.400 --> 01:07:54.239 +If you do hashtag Emacs on Macedon + +01:07:54.240 --> 01:07:58.239 +or Blue Sky or other places, we'll probably find it. + +01:07:58.240 --> 01:08:01.759 +Or if I don't, you can just let me know also. + +01:08:01.760 --> 01:08:04.039 +The prerecorded talks should be up + +01:08:04.040 --> 01:08:05.639 +on the talk pages already. + +01:08:05.640 --> 01:08:09.119 +The live talks, we'll probably actually get them up + +01:08:09.120 --> 01:08:11.079 +within the next week or two. + +01:08:11.080 --> 01:08:13.359 +I think they've already started processing, + +01:08:13.360 --> 01:08:15.479 +so I just had to sit down and then work with + +01:08:15.480 --> 01:08:18.399 +our wonderful army of volunteer captioners + +01:08:18.400 --> 01:08:20.119 +to get them all nicely captioned. + +01:08:20.120 --> 01:08:22.439 +But anyway, so the prerecorded talks + +01:08:22.440 --> 01:08:23.759 +are also up on YouTube, + +01:08:23.760 --> 01:08:25.719 +and I will eventually also upload them + +01:08:25.720 --> 01:08:29.239 +to TubeNix, which is a PeerTube instance. + +01:08:29.240 --> 01:08:31.239 +We will work on extracting live talks. + +01:08:31.240 --> 01:08:32.119 +If you'd like updates, + +01:08:32.120 --> 01:08:35.319 +please subscribe to the EmacsConf Discuss mailing list. + +01:08:35.320 --> 01:08:37.279 +If you've got ideas for making things better, + +01:08:37.280 --> 01:08:39.479 +we have so many ideas. I always end up with a very long + +01:08:39.480 --> 01:08:43.359 +to-do list after these things. Please add them to the pad. + +01:08:43.360 --> 01:08:46.919 +I'd love to hear from you on how we can make it even smoother next year. + +01:08:46.920 --> 01:08:49.359 +There are about 100 people watching in gen + +01:08:49.360 --> 01:08:52.159 +and 100 people watching in devs, which is really awesome. + +01:08:52.160 --> 01:08:54.119 +It's amazing to think that we can have + +01:08:54.120 --> 01:08:56.959 +an Emacs party for a lot of people. + +01:08:56.960 --> 01:09:00.399 +And we can only do this because of all the wonderful speakers, + +01:09:00.400 --> 01:09:02.279 +volunteers, participants, + +01:09:02.280 --> 01:09:04.359 +and very patient people in our lives + +01:09:04.360 --> 01:09:07.079 +who make it possible through all the time and support. + +01:09:07.080 --> 01:09:10.039 +So this year, Corwin did most of the hosting. + +01:09:10.040 --> 01:09:13.439 +I mean, also dropped by earlier, so that's great. + +01:09:13.440 --> 01:09:17.919 +I hope Leo is okay. You know, we managed. + +01:09:17.920 --> 01:09:22.439 +And I'm Sasha, by the way. I was running around backstage + +01:09:22.440 --> 01:09:26.559 +and occasionally dropping in to go on the stream. + +01:09:26.560 --> 01:09:29.359 +There are lots of other volunteers who are not on air. + +01:09:29.360 --> 01:09:32.719 +So, for example, during the proposal review process, + +01:09:32.720 --> 01:09:34.319 +we got a lot of wonderful comments + +01:09:34.320 --> 01:09:37.759 +from J.C. Hellery, Chico, and James Andrews-Howell. + +01:09:37.760 --> 01:09:41.039 +captions from Amitav and Rodion and other people + +01:09:41.040 --> 01:09:42.879 +have actually started also helping + +01:09:42.880 --> 01:09:45.079 +with the captions as well. + +01:09:45.080 --> 01:09:49.399 +So jay_bird just sent in some stuff today too. + +01:09:49.400 --> 01:09:52.959 +We are slowly working on getting a mirror in the EU set up + +01:09:52.960 --> 01:09:55.639 +so it'll be a little faster for people. + +01:09:55.640 --> 01:09:58.079 +So thanks to Yang3 for lending us a server. + +01:09:58.080 --> 01:10:00.879 +Babin and Michael and Ian and Jamie + +01:10:00.880 --> 01:10:06.119 +and Eeyore and Floyd Coulter have also helped out as well. + +01:10:06.120 --> 01:10:08.959 +Thanks to the Free Software Foundation + +01:10:08.960 --> 01:10:12.679 +for the mailing list, the media server, and of course, GNU Emacs itself, + +01:10:12.680 --> 01:10:15.439 +for which an astonishing amount + +01:10:15.440 --> 01:10:19.319 +of the scripting is done in Emacs. It's great. + +01:10:19.320 --> 01:10:23.279 +Thanks to Ry P for the server that we're using for OBS + +01:10:23.280 --> 01:10:27.639 +so that we can just VNC into it and I can manage two tracks + +01:10:27.640 --> 01:10:30.799 +without making my computer melt. It's great. + +01:10:30.800 --> 01:10:32.879 +And of course, to all the users + +01:10:32.880 --> 01:10:33.999 +and contributors and project teams + +01:10:34.000 --> 01:10:36.119 +that work on all the free software + +01:10:36.120 --> 01:10:37.279 +that this stuff is built on. + +01:10:37.280 --> 01:10:43.639 +Emacs, Org Mode, ERC, Tramp, Magit, BigBlueButton, + +01:10:43.640 --> 01:10:48.239 +Etherpad, IkiWiki, IceCast, OBS, The Lounge, + +01:10:48.240 --> 01:10:52.959 +LiberaChat, FFmpeg, OpenAI Whisper, WhisperX, + +01:10:52.960 --> 01:10:55.039 +the Aeneas forced alignment tool, + +01:10:55.040 --> 01:11:00.279 +PsyTransfer, SubEd, SubSeg, Mozilla Firefox, MPV, and Tampermonkey, + +01:11:00.280 --> 01:11:02.199 +and other things I probably forgot to mention. + +01:11:02.200 --> 01:11:04.599 +Thanks to Shoshin for the music, + +01:11:04.600 --> 01:11:06.799 +and thanks to people also who've donated + +01:11:06.800 --> 01:11:08.679 +through the Working Together program, + +01:11:08.680 --> 01:11:12.559 +like Scott and Jonathan and other anonymous donors. + +01:11:12.560 --> 01:11:15.919 +So that's a quick thanks. There's more tomorrow, + +01:11:15.920 --> 01:11:18.359 +but Corwin, do you have any parting words? + +01:11:18.360 --> 01:11:23.559 +You know, my parting words, Sacha are a thanks to you + +01:11:23.560 --> 01:11:25.759 +and not just a thanks + +01:11:25.760 --> 01:11:27.279 +for the hundreds of hours that you put + +01:11:27.280 --> 01:11:29.399 +into preparing this conference, + +01:11:29.400 --> 01:11:32.159 +you know, over the years and probably just this year, + +01:11:32.160 --> 01:11:35.999 +but also for all that you do for the community you are. + +01:11:36.000 --> 01:11:38.759 +You are a real unsung hero, + +01:11:38.760 --> 01:11:42.319 +even though I do hear your praises sung. + +01:11:42.320 --> 01:11:43.759 +They really can't be sung enough. + +01:11:43.760 --> 01:11:45.879 +In fact, I just this last week + +01:11:45.880 --> 01:11:48.039 +recommended to two different people your blog + +01:11:48.040 --> 01:11:51.599 +as a place to get a first introduction to Emacs. + +01:11:51.600 --> 01:11:54.799 +Your Emacs news is an incredible contribution, + +01:11:54.800 --> 01:11:57.959 +and just I want you to hear us thanking you. + +01:11:57.960 --> 01:12:04.879 +Thank you, Sacha. Emacs is a lot of fun, + +01:12:04.880 --> 01:12:07.519 +and Emacs people are a lot of fun, + +01:12:07.520 --> 01:12:10.879 +so it's all very wonderful. Yeah, we can wrap up here. + +01:12:10.880 --> 01:12:15.079 +People can keep hanging out if they want. + +01:12:15.080 --> 01:12:21.119 +I have a kiddo who is probably going to be back home soon + +01:12:21.120 --> 01:12:23.559 +and will pounce on me for more hugs, + +01:12:23.560 --> 01:12:25.599 +so I will see y'all tomorrow. + +01:12:25.600 --> 01:12:29.919 +uh, for more probably the same kind of stuff. + +01:12:29.920 --> 01:12:32.679 +Shut it down, save our energy for tomorrow. + +01:12:32.680 --> 01:12:36.319 +Uh, we do like to run into like hours long closing tomorrow. + +01:12:36.320 --> 01:12:38.319 +So we'll work on resisting that. + +01:12:38.320 --> 01:12:41.559 +Um, I suggest we, we look, we go get some rest + +01:12:41.560 --> 01:12:43.839 +and come, come back at it fresh tomorrow. + +01:12:43.840 --> 01:12:47.799 +Anybody else, any concerns with that or shall we go for it? + +01:12:47.800 --> 01:12:50.479 +Sounds good to me. + +01:12:50.480 --> 01:12:53.599 +If you've got ideas, pop them into the etherpad. + +01:12:53.600 --> 01:12:56.600 +And thank you so much for sharing this time with us. + +01:12:56.640 --> 01:13:23.800 +See you tomorrow. diff --git a/2025/captions/emacsconf-2025-private-ai--emacs-and-private-ai-a-great-match--aaron-grothe--main.vtt b/2025/captions/emacsconf-2025-private-ai--emacs-and-private-ai-a-great-match--aaron-grothe--main.vtt new file mode 100644 index 00000000..a8e76986 --- /dev/null +++ b/2025/captions/emacsconf-2025-private-ai--emacs-and-private-ai-a-great-match--aaron-grothe--main.vtt @@ -0,0 +1,2602 @@ +WEBVTT + +00:00:00.000 --> 00:00:04.859 +Hey, everybody. Welcome from frigid Omaha, Nebraska. + +00:00:04.860 --> 00:00:06.619 +I'm just going to kick off my talk here, + +00:00:06.620 --> 00:00:23.899 +and we'll see how it all goes. Thanks for attending. + +00:00:23.900 --> 00:00:26.939 +So the slides will be available on my site, growthy.us, + +00:00:26.940 --> 00:00:29.899 +in the presentation section tonight or tomorrow. + +00:00:29.900 --> 00:00:33.099 +This is a quick intro to one way to do private AI in Emacs. + +00:00:33.100 --> 00:00:35.299 +There are a lot of other ways to do it. + +00:00:35.300 --> 00:00:38.899 +This one is really just more or less the easiest way to do it. + +00:00:38.900 --> 00:00:40.379 +It's a minimal viable product + +00:00:40.380 --> 00:00:42.379 +to get you an idea of how to get started with it + +00:00:42.380 --> 00:00:43.859 +and how to give it a spin. + +00:00:43.860 --> 00:00:45.819 +Really hope some of you give it a shot + +00:00:45.820 --> 00:00:48.179 +and learn something along the way. + +00:00:48.180 --> 00:00:50.379 +So the overview of the talk. + +00:00:50.380 --> 00:00:54.939 +broke down these basic bullet points of why private AI, + +00:00:54.940 --> 00:00:58.939 +what do I need to do private AI, Emacs and private AI, + +00:00:58.940 --> 00:01:02.739 +pieces for an AI Emacs solution, + +00:01:02.740 --> 00:01:08.059 +a demo of a minimal viable product, and the summary. + +00:01:08.060 --> 00:01:10.779 +Why private AI? This is pretty simple. + +00:01:10.780 --> 00:01:12.099 +Just read the terms and conditions + +00:01:12.100 --> 00:01:14.819 +for any AI system you're currently using. + +00:01:14.820 --> 00:01:17.019 +If you're using the free tiers, your queries, + +00:01:17.020 --> 00:01:18.619 +code uploaded information + +00:01:18.620 --> 00:01:20.699 +is being used to train the models. + +00:01:20.700 --> 00:01:22.939 +In some cases, you are giving the company + +00:01:22.940 --> 00:01:25.419 +a perpetual license to your data. + +00:01:25.420 --> 00:01:27.059 +You have no control over this, + +00:01:27.060 --> 00:01:29.219 +except for not using the engine. + +00:01:29.220 --> 00:01:30.699 +And keep in mind, the terms + +00:01:30.700 --> 00:01:32.179 +are changing all the time on that, + +00:01:32.180 --> 00:01:34.139 +and they're not normally changing for our benefit. + +00:01:34.140 --> 00:01:38.259 +So that's not necessarily a good thing. + +00:01:38.260 --> 00:01:40.339 +If you're using the paid tiers, + +00:01:40.340 --> 00:01:43.459 +you may be able to opt out of the data collection. + +00:01:43.460 --> 00:01:45.539 +But keep in mind, this can change, + +00:01:45.540 --> 00:01:48.619 +or they may start charging for that option. + +00:01:48.620 --> 00:01:51.419 +Every AI company wants more and more data. + +00:01:51.420 --> 00:01:53.779 +They need more and more data to train their models. + +00:01:53.780 --> 00:01:56.019 +It is just the way it is. + +00:01:56.020 --> 00:01:57.899 +They need more and more information + +00:01:57.900 --> 00:02:00.459 +to get it more and more accurate to keep it up to date. + +00:02:00.460 --> 00:02:03.219 +There's been a story about Stack Overflow. + +00:02:03.220 --> 00:02:05.819 +It has like half the number of queries they had a year ago + +00:02:05.820 --> 00:02:07.379 +because people are using AI. + +00:02:07.380 --> 00:02:08.579 +The problem with that is now + +00:02:08.580 --> 00:02:10.379 +there's less data going to Stack Overflow + +00:02:10.380 --> 00:02:12.979 +for the AI to get. vicious cycle, + +00:02:12.980 --> 00:02:14.619 +especially when you start looking at + +00:02:14.620 --> 00:02:16.579 +newer language like Ruby and stuff like that. + +00:02:16.580 --> 00:02:21.419 +So it comes down to being an interesting time. + +00:02:21.420 --> 00:02:24.739 +Another reason why to go private AI is your costs are going to vary. + +00:02:24.740 --> 00:02:27.019 +Right now, these services are being heavily subsidized. + +00:02:27.020 --> 00:02:29.419 +If you're paying Claude $20 a month, + +00:02:29.420 --> 00:02:32.579 +it is not costing Claude, those guys $20 a month + +00:02:32.580 --> 00:02:34.099 +to host all the infrastructure + +00:02:34.100 --> 00:02:35.619 +to build all these data centers. + +00:02:35.620 --> 00:02:38.779 +They are severely subsidizing that + +00:02:38.780 --> 00:02:41.259 +at a very much a loss right now. + +00:02:41.260 --> 00:02:43.659 +When they start charging the real costs plus a profit, + +00:02:43.660 --> 00:02:45.499 +it's going to change. + +00:02:45.500 --> 00:02:48.019 +Right now, I use a bunch of different services. + +00:02:48.020 --> 00:02:50.019 +I've played with Grok and a bunch of other ones. + +00:02:50.020 --> 00:02:52.459 +But Grok right now is like $30 a month + +00:02:52.460 --> 00:02:54.139 +for a regular Super Grok. + +00:02:54.140 --> 00:02:56.419 +When they start charging the real cost of that, + +00:02:56.420 --> 00:02:59.819 +it's going to go from $30 to something a great deal more, + +00:02:59.820 --> 00:03:02.379 +perhaps, I think, $100 or $200 + +00:03:02.380 --> 00:03:04.459 +or whatever really turns out to be the cost + +00:03:04.460 --> 00:03:06.059 +when you figure everything into it. + +00:03:06.060 --> 00:03:07.539 +When you start adding that cost into that, + +00:03:07.540 --> 00:03:10.179 +a lot of people are using public AI right now + +00:03:10.180 --> 00:03:11.899 +are going to have no option but to move to private AI + +00:03:11.900 --> 00:03:16.019 +or give up on AI overall. + +00:03:16.020 --> 00:03:18.659 +What do you need to be able to do private AI? + +00:03:18.660 --> 00:03:21.179 +If you're going to run your own AI, + +00:03:21.180 --> 00:03:23.579 +you're going to need a system with either some cores, + +00:03:23.580 --> 00:03:25.699 +a graphics processor unit, + +00:03:25.700 --> 00:03:28.339 +or a neural processing unit, a GPU or an NPU. + +00:03:28.340 --> 00:03:29.819 +I currently have four systems + +00:03:29.820 --> 00:03:32.979 +I'm experimenting with and playing around with on a daily basis. + +00:03:32.980 --> 00:03:37.979 +I have a System76 Pangolin AMD Ryzen 7 78040U + +00:03:37.980 --> 00:03:41.099 +with a Radeon 7080M integrated graphics card. + +00:03:41.100 --> 00:03:42.539 +It's got 32 gigs of RAM. + +00:03:42.540 --> 00:03:45.259 +It's a beautiful piece of hardware. I really do like it. + +00:03:45.260 --> 00:03:46.499 +I have my main workstation, + +00:03:46.500 --> 00:03:50.579 +it's an HP Z620 with dual Intel Xeons + +00:03:50.580 --> 00:03:53.179 +with four NVIDIA K2200 graphics cards in it. + +00:03:53.180 --> 00:03:56.699 +Why the four NVIDIA K2200 graphics card on it? + +00:03:56.700 --> 00:03:59.739 +Because I could buy four of them on eBay for $100 + +00:03:59.740 --> 00:04:02.379 +and it was still supported by the NVIDIA drivers for Debian. + +00:04:02.380 --> 00:04:08.179 +So that's why that is. A MacBook Air with an M1 processor, + +00:04:08.180 --> 00:04:10.939 +a very nice piece of kit I picked up a couple years ago, + +00:04:10.940 --> 00:04:14.139 +very cheap, but it runs AI surprisingly well, + +00:04:14.140 --> 00:04:18.099 +and an Acer Aspire 1 with an AMD Ryzen 5700H in it. + +00:04:18.100 --> 00:04:22.099 +This was my old laptop. It was a sturdy beast. + +00:04:22.100 --> 00:04:24.379 +It was able to do enough AI to do demos and stuff, + +00:04:24.380 --> 00:04:25.859 +and I liked it quite a bit for that. + +00:04:25.860 --> 00:04:28.339 +I'm using the Pangolin for this demonstration + +00:04:28.340 --> 00:04:30.979 +because it's just better. + +00:04:30.980 --> 00:04:37.219 +Apple's M4 chip has 38 teraflops of MPU performance. + +00:04:37.220 --> 00:04:40.099 +The Microsoft co-pilots are now requiring + +00:04:40.100 --> 00:04:41.459 +45 teraflops of MPU + +00:04:41.460 --> 00:04:43.939 +to be able to have the co-pilot badge on it. + +00:04:43.940 --> 00:04:48.299 +And Raspberry Pi's new AI top is about 18 teraflops + +00:04:48.300 --> 00:04:51.219 +and is $70 on top of the cost of Raspberry Pi 5. + +00:04:51.220 --> 00:04:56.059 +Keep in mind Raspberry recently + +00:04:56.060 --> 00:04:59.499 +raised the cost of their Pi 5s because of RAM pricing, + +00:04:59.500 --> 00:05:00.379 +which is going to be affecting + +00:05:00.380 --> 00:05:02.459 +a lot of these types of solutions in the near future. + +00:05:02.460 --> 00:05:05.299 +But there's going to be a lot of + +00:05:05.300 --> 00:05:06.699 +local power available in the future. + +00:05:06.700 --> 00:05:08.219 +That's what it really comes down to. + +00:05:08.220 --> 00:05:11.179 +A lot of people are going to have PCs on their desks. + +00:05:11.180 --> 00:05:13.459 +They're going to run a decent private AI + +00:05:13.460 --> 00:05:18.059 +without much issue. So for Emacs and private AI, + +00:05:18.060 --> 00:05:20.139 +there's a couple popular solutions. + +00:05:20.140 --> 00:05:22.099 +Gptel, which is the one we're going to talk about. + +00:05:22.100 --> 00:05:24.739 +It's a simple interface. It's a minimal interface. + +00:05:24.740 --> 00:05:26.579 +It integrates easily into your workflow. + +00:05:26.580 --> 00:05:29.019 +It's just, quite honestly, chef's kiss, + +00:05:29.020 --> 00:05:31.059 +just a beautifully well-done piece of software. + +00:05:31.060 --> 00:05:33.859 +OllamaBuddy has more features, + +00:05:33.860 --> 00:05:36.259 +a menu interface, has quick access + +00:05:36.260 --> 00:05:37.499 +for things like code refactoring, + +00:05:37.500 --> 00:05:38.979 +text-free formatting, et cetera. + +00:05:38.980 --> 00:05:41.979 +This is the one that you spend a little more time with, + +00:05:41.980 --> 00:05:43.939 +but you also get a little bit more back from it. + +00:05:43.940 --> 00:05:49.419 +Elama is another one, has some really good features to it, + +00:05:49.420 --> 00:05:51.059 +more different capabilities, + +00:05:51.060 --> 00:05:54.979 +but it's a different set of rules and capabilities to it. + +00:05:54.980 --> 00:05:59.179 +Itermac, which is programming with your AI and Emacs. + +00:05:59.180 --> 00:06:01.219 +The closest thing I can come up + +00:06:01.220 --> 00:06:04.139 +to comparing this to is Cursor, except it's an Emacs. + +00:06:04.140 --> 00:06:05.659 +It's really quite well done. + +00:06:05.660 --> 00:06:07.299 +These are all really quite well done. + +00:06:07.300 --> 00:06:08.499 +There's a bunch of other projects out there. + +00:06:08.500 --> 00:06:10.819 +If you go out to GitHub, type Emacs AI, + +00:06:10.820 --> 00:06:13.219 +you'll find a lot of different options. + +00:06:13.220 --> 00:06:18.459 +So what is a minimal viable product that can be done? + +00:06:18.460 --> 00:06:23.379 +A minimal viable product to show what an AI Emacs solution is + +00:06:23.380 --> 00:06:27.179 +can be done with only needing two pieces of software. + +00:06:27.180 --> 00:06:31.179 +Llamafile, this is an amazing piece of software. + +00:06:31.180 --> 00:06:32.899 +This is a whole LLM contained in one file. + +00:06:32.900 --> 00:06:36.059 +And the same file runs on Mac OS X, + +00:06:36.060 --> 00:06:39.379 +Linux, Windows, and the BSDs. + +00:06:39.380 --> 00:06:42.179 +It's a wonderful piece of kit + +00:06:42.180 --> 00:06:44.179 +based on these people who created + +00:06:44.180 --> 00:06:45.899 +this thing called Cosmopolitan + +00:06:45.900 --> 00:06:46.779 +that lets you create and execute + +00:06:46.780 --> 00:06:48.699 +while it runs on a bunch of different systems. + +00:06:48.700 --> 00:06:51.299 +And Gptel, which is an easy plug-in for Emacs, + +00:06:51.300 --> 00:06:54.979 +which we talked about in the last slide a bit. + +00:06:54.980 --> 00:07:00.179 +So setting up the LLM, you have to just go out + +00:07:00.180 --> 00:07:01.699 +and just hit the a page for it + +00:07:01.700 --> 00:07:05.099 +and go out and do a wget of it. + +00:07:05.100 --> 00:07:07.099 +That's all it takes there. + +00:07:07.100 --> 00:07:10.259 +Chmodding it so you can actually execute the executable. + +00:07:10.260 --> 00:07:12.939 +And then just go ahead and actually running it. + +00:07:12.940 --> 00:07:16.939 +And let's go ahead and do that. + +00:07:16.940 --> 00:07:18.899 +I've already downloaded it because I don't want to wait. + +00:07:18.900 --> 00:07:21.259 +And let's just take a look at it. + +00:07:21.260 --> 00:07:22.899 +I've actually downloaded several of them, + +00:07:22.900 --> 00:07:25.699 +but let's go ahead and just run lava 3.2b + +00:07:25.700 --> 00:07:31.179 +with the 3 billion instructions. And that's it firing up. + +00:07:31.180 --> 00:07:33.899 +And it is nice enough to actually be listening in port 8080, + +00:07:33.900 --> 00:07:35.339 +which we'll need in a minute. + +00:07:35.340 --> 00:07:43.139 +So once you do that, you have to install gptel and emacs. + +00:07:43.140 --> 00:07:45.659 +That's as simple as firing up emacs, + +00:07:45.660 --> 00:07:48.339 +doing the meta x install package, + +00:07:48.340 --> 00:07:49.779 +and then just typing gptel + +00:07:49.780 --> 00:07:51.499 +if you have your repository set up right, + +00:07:51.500 --> 00:07:52.299 +which hopefully you do. + +00:07:52.300 --> 00:07:54.499 +And then you just go ahead and have it. + +00:07:54.500 --> 00:07:58.139 +You also have to set up a config file. + +00:07:58.140 --> 00:08:01.739 +Here's my example config file as it currently set up, + +00:08:01.740 --> 00:08:04.019 +requiring ensuring Gptel is loaded, + +00:08:04.020 --> 00:08:05.899 +defining the Llamafile backend. + +00:08:05.900 --> 00:08:07.779 +You can put multiple backends into it, + +00:08:07.780 --> 00:08:09.859 +but I just have the one defined on this example. + +00:08:09.860 --> 00:08:12.059 +But it's pretty straightforward. + +00:08:12.060 --> 00:08:16.739 +Llama local file, name for it, stream, protocol HTTP. + +00:08:16.740 --> 00:08:20.859 +If you have HTTPS set up, that's obviously preferable, + +00:08:20.860 --> 00:08:22.779 +but a lot of people don't for their home labs. + +00:08:22.780 --> 00:08:26.379 +Host is just 127.0.0.1 port 8080. + +00:08:26.380 --> 00:08:30.099 +Keep in mind, some of the AIs run on a different port, + +00:08:30.100 --> 00:08:31.499 +so you may be 8081 + +00:08:31.500 --> 00:08:34.619 +if you're running OpenWebView at the same time. The key, + +00:08:34.620 --> 00:08:37.019 +we don't need an API key because it's a local server. + +00:08:37.020 --> 00:08:40.259 +And the models just, uh, we can put multiple models + +00:08:40.260 --> 00:08:41.339 +on there if we want to. + +00:08:41.340 --> 00:08:43.699 +So if we create one with additional stuff + +00:08:43.700 --> 00:08:45.379 +or like rag and stuff like that, + +00:08:45.380 --> 00:08:47.459 +we can actually name those models by their domain, + +00:08:47.460 --> 00:08:48.699 +which is really kind of cool. + +00:08:48.700 --> 00:08:52.099 +But, uh, that's all that takes. + +00:08:52.100 --> 00:09:03.779 +So let's go ahead and go to a quick test of it. + +00:09:03.780 --> 00:09:11.019 +Oops. Alt-X, gptel. And we're going to just choose + +00:09:11.020 --> 00:09:12.499 +the default buffer to make things easier. + +00:09:12.500 --> 00:09:15.339 +Going to resize it up a bit. + +00:09:15.340 --> 00:09:19.859 +And usually the go-to question I go to is, who was David Bowie? + +00:09:19.860 --> 00:09:24.499 +This one is actually a question + +00:09:24.500 --> 00:09:26.219 +that's turned out to be really good + +00:09:26.220 --> 00:09:28.019 +for figuring out whether or not AI is complete. + +00:09:28.020 --> 00:09:31.139 +This is one that some engines do well on, other ones don't. + +00:09:31.140 --> 00:09:33.739 +And we can just do, we can either do + +00:09:33.740 --> 00:09:36.059 +the alt X and send the gptel-send, + +00:09:36.060 --> 00:09:37.979 +or we can just do control C and hit enter. + +00:09:37.980 --> 00:09:39.139 +We'll just do control C and enter. + +00:09:39.140 --> 00:09:43.659 +And now it's going ahead and hitting our local AI system + +00:09:43.660 --> 00:09:46.659 +running on port 8080. And that looks pretty good, + +00:09:46.660 --> 00:09:50.739 +but let's go ahead and say, hey, it's set to terse mode right now. + +00:09:50.740 --> 00:10:03.859 +Please expand upon this. And there we go. + +00:10:03.860 --> 00:10:05.379 +We're getting a full description + +00:10:05.380 --> 00:10:08.739 +of the majority of, uh, about David Bowie's life + +00:10:08.740 --> 00:10:10.139 +and other information about him. + +00:10:10.140 --> 00:10:21.699 +So very, very happy with that. + +00:10:21.700 --> 00:10:23.539 +One thing to keep in mind is you look at things + +00:10:23.540 --> 00:10:24.699 +when you're looking for hallucinations, + +00:10:24.700 --> 00:10:26.899 +how accurate AI is, how it's compressed + +00:10:26.900 --> 00:10:29.259 +is it will tend to screw up on things like + +00:10:29.260 --> 00:10:30.859 +how many children he had and stuff like that. + +00:10:30.860 --> 00:10:32.459 +Let me see if it gets to that real quick. + +00:10:32.460 --> 00:10:39.739 +Is it not actually on this one? + +00:10:39.740 --> 00:10:42.179 +Alright, so that's the first question I always ask one. + +00:10:42.180 --> 00:10:44.659 +The next one is what are sea monkeys? + +00:10:44.660 --> 00:10:48.979 +It gives you an idea of the breadth of the system. + +00:10:48.980 --> 00:11:10.619 +It's querying right now. Pulls it back correctly. Yes. + +00:11:10.620 --> 00:11:12.339 +And it's smart enough to actually detect David Bowie + +00:11:12.340 --> 00:11:15.019 +even referenced see monkeys in the song sea of love, + +00:11:15.020 --> 00:11:16.179 +which came at hit single. + +00:11:16.180 --> 00:11:18.859 +So it's actually keeping the context alive + +00:11:18.860 --> 00:11:20.419 +and that which is very cool feature. + +00:11:20.420 --> 00:11:21.459 +I did not see that coming. + +00:11:21.460 --> 00:11:24.139 +Here's one that some people say is a really good one + +00:11:24.140 --> 00:11:25.739 +to ask ours in strawberry. + +00:11:25.740 --> 00:11:46.179 +All right, now she's going off the reservation. + +00:11:46.180 --> 00:11:48.139 +She's going in a different direction. + +00:11:48.140 --> 00:11:49.979 +Let me go ahead and reopen that again, + +00:11:49.980 --> 00:11:52.979 +because it's went down a bad hole there for a second. + +00:11:52.980 --> 00:11:58.419 +Let me ask it to do write hello world in Emacs list. + +00:11:58.420 --> 00:12:10.419 +Yep, that works. So the point being here, + +00:12:10.420 --> 00:12:14.939 +that was like two minutes of setup. + +00:12:14.940 --> 00:12:18.019 +And now we have a small AI embedded inside the system. + +00:12:18.020 --> 00:12:20.539 +So that gives you an idea just how easy it can be. + +00:12:20.540 --> 00:12:22.299 +And it's just running locally on the system. + +00:12:22.300 --> 00:12:25.259 +We also have the default system here as well. + +00:12:25.260 --> 00:12:32.579 +So not that bad. + +00:12:32.580 --> 00:12:35.379 +That's a basic solution, that's a basic setup + +00:12:35.380 --> 00:12:37.059 +that will get you to the point where you can go like, + +00:12:37.060 --> 00:12:39.859 +it's a party trick, but it's a very cool party trick. + +00:12:39.860 --> 00:12:42.859 +The way that Gptel works is it puts it into buffers, + +00:12:42.860 --> 00:12:45.099 +it doesn't interfere with your flow that much, + +00:12:45.100 --> 00:12:47.179 +it's just an additional window you can pop open + +00:12:47.180 --> 00:12:49.019 +to ask questions and get information for, + +00:12:49.020 --> 00:12:51.459 +dump code into it and have it refactored. + +00:12:51.460 --> 00:12:53.339 +Gptel has a lot of additional options + +00:12:53.340 --> 00:12:55.699 +for things that are really cool for that. + +00:12:55.700 --> 00:12:57.099 +But if you want a better solution, + +00:12:57.100 --> 00:12:59.939 +I recommend Ollama or LM Studio. + +00:12:59.940 --> 00:13:01.899 +They're both more capable than llama file. + +00:13:01.900 --> 00:13:03.859 +They can accept a lot of different models. + +00:13:03.860 --> 00:13:05.739 +You can do things like RAG. + +00:13:05.740 --> 00:13:09.219 +You can do loading of things onto the GPU more explicitly. + +00:13:09.220 --> 00:13:10.379 +It can speed stuff up. + +00:13:10.380 --> 00:13:13.059 +One of the things about the retrieval augmentation is + +00:13:13.060 --> 00:13:15.539 +it will let you put your data into the system + +00:13:15.540 --> 00:13:17.779 +so you can start uploading your code, your information, + +00:13:17.780 --> 00:13:20.139 +and actually being able to do analysis of it. + +00:13:20.140 --> 00:13:23.539 +OpenWebUI provides more capabilities. + +00:13:23.540 --> 00:13:24.859 +It provides an interface that's similar + +00:13:24.860 --> 00:13:25.899 +to what you're used to seeing + +00:13:25.900 --> 00:13:28.179 +for chat, GPT, and the other systems. + +00:13:28.180 --> 00:13:29.419 +It's really quite well done. + +00:13:29.420 --> 00:13:32.539 +And once again, gptel, I have to mention that + +00:13:32.540 --> 00:13:34.779 +because that's the one I really kind of like. + +00:13:34.780 --> 00:13:36.899 +And OlamaBuddy is also another really nice one. + +00:13:36.900 --> 00:13:41.019 +So what about the licensing of these models? + +00:13:41.020 --> 00:13:42.299 +Since I'm going out pulling down + +00:13:42.300 --> 00:13:43.579 +a model and doing this stuff. + +00:13:43.580 --> 00:13:46.579 +Let's take a look at a couple of highlights + +00:13:46.580 --> 00:13:49.379 +from the MetaLlama 3 community license scale. + +00:13:49.380 --> 00:13:52.579 +If your service exceeds 700 million monthly users, + +00:13:52.580 --> 00:13:54.099 +you need additional licensing. + +00:13:54.100 --> 00:13:56.099 +Probably not going to be a problem for most of us. + +00:13:56.100 --> 00:13:58.379 +There's a competition restriction. + +00:13:58.380 --> 00:14:00.899 +You can't use this model to enhance competing models. + +00:14:00.900 --> 00:14:04.219 +And there's some limitations on using the Meta trademarks. + +00:14:04.220 --> 00:14:05.939 +Not that big a deal. + +00:14:05.940 --> 00:14:09.139 +And the other ones are it's a permissive one + +00:14:09.140 --> 00:14:10.939 +designed to encourage innovation, + +00:14:10.940 --> 00:14:13.779 +open development, commercial use is allowed, + +00:14:13.780 --> 00:14:15.219 +but there are some restrictions on it. + +00:14:15.220 --> 00:14:17.259 +Yeah, you can modify the model, + +00:14:17.260 --> 00:14:20.419 +but you have to rely on the license terms. + +00:14:20.420 --> 00:14:22.339 +And you can distribute the model with derivatives. + +00:14:22.340 --> 00:14:24.059 +And there are some very cool ones out there. + +00:14:24.060 --> 00:14:25.259 +There's people who've done things + +00:14:25.260 --> 00:14:29.579 +to try and make the llama bee less, what's the phrase, + +00:14:29.580 --> 00:14:31.939 +ethical if you're doing penetration testing research + +00:14:31.940 --> 00:14:32.619 +and stuff like that. + +00:14:32.620 --> 00:14:34.459 +It has some very nice value there. + +00:14:34.460 --> 00:14:37.739 +Keep in mind licenses also vary + +00:14:37.740 --> 00:14:39.619 +depending on the model you're using. + +00:14:39.620 --> 00:14:42.419 +Mistral AI has the non-production license. + +00:14:42.420 --> 00:14:45.219 +It's designed to keep it to research and development. + +00:14:45.220 --> 00:14:46.739 +You can't use it commercially. + +00:14:46.740 --> 00:14:50.419 +So it's designed to clearly delineate + +00:14:50.420 --> 00:14:52.939 +between research and development + +00:14:52.940 --> 00:14:54.259 +and somebody trying to actually build + +00:14:54.260 --> 00:14:55.379 +something on top of it. + +00:14:55.380 --> 00:14:57.979 +And another question I get asked is, + +00:14:57.980 --> 00:14:59.899 +are there open source data model options? + +00:14:59.900 --> 00:15:02.819 +Yeah, but most of them are small or specialized currently. + +00:15:02.820 --> 00:15:05.499 +MoMo is a whole family of them, + +00:15:05.500 --> 00:15:07.339 +but there tend to be more specialized, + +00:15:07.340 --> 00:15:09.019 +but it's very cool to see where it's going. + +00:15:09.020 --> 00:15:11.339 +And it's another thing that's just going forward. + +00:15:11.340 --> 00:15:13.379 +It's under the MIT license. + +00:15:13.380 --> 00:15:15.819 +Some things to know to help you + +00:15:15.820 --> 00:15:17.499 +have a better experience with this. + +00:15:17.500 --> 00:15:21.059 +Get a Llama and OpenWebUI working by themselves, + +00:15:21.060 --> 00:15:22.659 +then set up your config file. + +00:15:22.660 --> 00:15:24.819 +I was fighting both at the same time, + +00:15:24.820 --> 00:15:26.699 +and it turned out I had a problem with my LLAMA. + +00:15:26.700 --> 00:15:28.899 +I had a conflict, so that was what my problem is. + +00:15:28.900 --> 00:15:32.819 +Llamafile, gptel is a great way to start experimenting + +00:15:32.820 --> 00:15:34.299 +just to get you an idea of how it works + +00:15:34.300 --> 00:15:36.939 +and figure out how the interfaces work. Tremendous. + +00:15:36.940 --> 00:15:40.739 +RAG loading documents into it is really easy with open web UI. + +00:15:40.740 --> 00:15:43.019 +You can create models, you can put things like + +00:15:43.020 --> 00:15:46.419 +help desk developers and stuff like that, breaking it out. + +00:15:46.420 --> 00:15:51.019 +The Hacker News has a how to build a $300 AI computer. + +00:15:51.020 --> 00:15:52.859 +This is for March 2024, + +00:15:52.860 --> 00:15:55.099 +but it still has a lot of great information + +00:15:55.100 --> 00:15:56.819 +on how to benchmark the environments, + +00:15:56.820 --> 00:16:01.339 +what some values are like the Ryzen 5700U + +00:16:01.340 --> 00:16:02.579 +inside my Acer Aspire, + +00:16:02.580 --> 00:16:04.419 +that's where I got the idea doing that. + +00:16:04.420 --> 00:16:06.739 +Make sure you do the RockM stuff correctly + +00:16:06.740 --> 00:16:09.899 +to get the GUI extensions. But it's just really good stuff. + +00:16:09.900 --> 00:16:13.059 +You don't need a great GPU or CPU to get started. + +00:16:13.060 --> 00:16:14.819 +Smaller models like Tiny Llama + +00:16:14.820 --> 00:16:16.179 +can run on very small systems. + +00:16:16.180 --> 00:16:18.499 +It gets you the ability to start playing with it + +00:16:18.500 --> 00:16:21.619 +and start experimenting and figure out if that's for you + +00:16:21.620 --> 00:16:23.379 +and to move forward with it. + +00:16:23.380 --> 00:16:29.219 +The AMD Ryzen AI Max 395 plus is a mini PC + +00:16:29.220 --> 00:16:31.179 +makes it really nice dedicated host. + +00:16:31.180 --> 00:16:34.619 +You used to be able to buy these for about $1200 now + +00:16:34.620 --> 00:16:35.579 +with the RAM price increase, + +00:16:35.580 --> 00:16:38.779 +you want to get 120 gig when you're pushing two brands so. + +00:16:38.780 --> 00:16:40.739 +It gets a little tighter. + +00:16:40.740 --> 00:16:44.099 +Macs work remarkably well with AI. + +00:16:44.100 --> 00:16:47.659 +My MacBook Air was one of my go-tos for a while, + +00:16:47.660 --> 00:16:49.779 +but once I started doing anything AI, + +00:16:49.780 --> 00:16:50.779 +I had a five-minute window + +00:16:50.780 --> 00:16:52.619 +before the thermal throttling became an issue. + +00:16:52.620 --> 00:16:54.619 +Keep in mind that's a MacBook Air, + +00:16:54.620 --> 00:16:56.659 +so it doesn't have the greatest ventilation. + +00:16:56.660 --> 00:16:58.339 +If you get the MacBook Pros and stuff, + +00:16:58.340 --> 00:17:00.139 +they tend to have more ventilation, + +00:17:00.140 --> 00:17:02.499 +but still you're going to be pushing against that. + +00:17:02.500 --> 00:17:04.939 +So Mac Minis and the Mac Ultras and stuff like that + +00:17:04.940 --> 00:17:06.099 +tend to work really well for that. + +00:17:06.100 --> 00:17:09.779 +Alex Ziskin on YouTube has a channel. + +00:17:09.780 --> 00:17:11.899 +He does a lot of AI performance benchmarking, + +00:17:11.900 --> 00:17:14.819 +like I load a 70 billion parameter model + +00:17:14.820 --> 00:17:16.699 +on this mini PC and stuff like that. + +00:17:16.700 --> 00:17:19.019 +It's a lot of fun and interesting stuff there. + +00:17:19.020 --> 00:17:21.219 +And it's influencing my decision + +00:17:21.220 --> 00:17:22.979 +to buy my next AI style PC. + +00:17:22.980 --> 00:17:27.619 +Small domain specific LLMs are happening. + +00:17:27.620 --> 00:17:29.939 +An LLM that has all your code and information, + +00:17:29.940 --> 00:17:31.659 +it sounds like a really cool idea. + +00:17:31.660 --> 00:17:34.299 +It gives you capabilities to start training stuff + +00:17:34.300 --> 00:17:35.899 +that you couldn't do with like the big ones. + +00:17:35.900 --> 00:17:38.059 +Even with in terms of fine tuning and stuff, + +00:17:38.060 --> 00:17:40.539 +it's remarkable to see where that space is coming along + +00:17:40.540 --> 00:17:41.739 +in the next year or so. + +00:17:41.740 --> 00:17:46.219 +Hugging Face Co has pointers to tons of AI models. + +00:17:46.220 --> 00:17:49.259 +You'll find the one that works for you, hopefully there. + +00:17:49.260 --> 00:17:50.539 +If you're doing cybersecurity, + +00:17:50.540 --> 00:17:52.059 +there's a whole bunch out there for that, + +00:17:52.060 --> 00:17:54.619 +that have certain training on it, information. + +00:17:54.620 --> 00:17:56.139 +It's really good. + +00:17:56.140 --> 00:18:00.099 +One last thing to keep in mind is hallucinations are real. + +00:18:00.100 --> 00:18:02.779 +You will get BS back from the AI occasionally, + +00:18:02.780 --> 00:18:05.179 +so do validate everything you get from it. + +00:18:05.180 --> 00:18:08.459 +Don't be using it for court cases like some people have + +00:18:08.460 --> 00:18:14.539 +and run into those problems. So, That is my talk. + +00:18:14.540 --> 00:18:17.219 +What I would like you to get out of that is, + +00:18:17.220 --> 00:18:21.859 +if you haven't tried it, give GPTEL and LlamaFile a shot. + +00:18:21.860 --> 00:18:23.979 +Fire up a little small AI instance, + +00:18:23.980 --> 00:18:27.339 +play around with a little bit inside your Emacs, + +00:18:27.340 --> 00:18:30.139 +and see if it makes your life better. Hopefully it will. + +00:18:30.140 --> 00:18:32.139 +And I really hope you guys + +00:18:32.140 --> 00:18:34.659 +learned something from this talk. And thanks for listening. + +00:18:34.660 --> 00:18:38.979 +And the links are at the end of the talk, if you have any questions. + +00:18:38.980 --> 00:18:42.739 +Let me see if we got anything you want, Pat. You do. + +00:18:42.740 --> 00:18:43.899 +You've got a few questions. + +00:18:43.900 --> 00:18:48.059 +Hey, this is Corwin. Thank you so much. Thank you, Aaron. + +00:18:48.060 --> 00:18:50.339 +What an awesome talk this was, actually. + +00:18:50.340 --> 00:18:52.179 +If you don't have a camera, + +00:18:52.180 --> 00:18:54.339 +I can get away with not having one too. + +00:18:54.340 --> 00:18:56.299 +I've got, I'll turn the camera on. + +00:18:56.300 --> 00:19:01.499 +Okay. All right. I'll turn mine back on. Here I come. + +00:19:01.500 --> 00:19:03.139 +Yeah, so there are a few questions, + +00:19:03.140 --> 00:19:04.579 +but first let me say thank you + +00:19:04.580 --> 00:19:06.339 +for a really captivating talk. + +00:19:06.340 --> 00:19:10.939 +I think a lot of people will be empowered from this + +00:19:10.940 --> 00:19:15.259 +to try to do more with less, especially locally. + +00:19:15.260 --> 00:19:20.179 +concerned about the data center footprint, + +00:19:20.180 --> 00:19:23.659 +environmentally concerned + +00:19:23.660 --> 00:19:26.979 +about the footprint of LLM inside data centers. + +00:19:26.980 --> 00:19:28.219 +So just thinking about how we can + +00:19:28.220 --> 00:19:32.419 +put infrastructure we have at home to use + +00:19:32.420 --> 00:19:34.019 +and get more done with less. + +00:19:34.020 --> 00:19:37.499 +Yeah, the data center impact's interesting + +00:19:37.500 --> 00:19:39.979 +because there was a study a while ago. + +00:19:39.980 --> 00:19:42.099 +Someone said every time you do a Gemini query, + +00:19:42.100 --> 00:19:45.019 +it's like boiling a cup of water. + +00:19:45.020 --> 00:19:48.619 +Yeah, I've heard that one too. So do you want to, you know, + +00:19:48.620 --> 00:19:51.699 +I don't know how much direction you want. + +00:19:51.700 --> 00:19:53.859 +I'd be very happy to read out the questions for you. + +00:19:53.860 --> 00:19:55.219 +Yeah, that would be great. + +00:19:55.220 --> 00:19:57.619 +I'm having trouble getting to that tab. + +00:19:57.620 --> 00:20:02.779 +Okay, I'm there, so I'll put it into our chat too, + +00:20:02.780 --> 00:20:07.419 +so you can follow along if you'd like. + +00:20:07.420 --> 00:20:11.219 +The first question was, why is the David Bowie question + +00:20:11.220 --> 00:20:12.219 +a good one to start with? + +00:20:12.220 --> 00:20:14.419 +Does it have interesting failure conditions + +00:20:14.420 --> 00:20:17.299 +or what made you choose that? + +00:20:17.300 --> 00:20:21.979 +First off, huge fan of David Bowie. + +00:20:21.980 --> 00:20:24.499 +But I came down to it really taught me a few things + +00:20:24.500 --> 00:20:26.299 +about how old the models work + +00:20:26.300 --> 00:20:28.819 +in terms of things like how many kids he had, + +00:20:28.820 --> 00:20:31.779 +because deep seek, which is a very popular Chinese model + +00:20:31.780 --> 00:20:33.179 +that a lot of people are using now, + +00:20:33.180 --> 00:20:35.619 +misidentifies him having three daughters, + +00:20:35.620 --> 00:20:38.459 +and he has like one son and one, one, I think, + +00:20:38.460 --> 00:20:40.899 +two sons and a daughter or something like that. + +00:20:40.900 --> 00:20:43.659 +so there's differences on that and it just goes over + +00:20:43.660 --> 00:20:45.299 +there's a whole lot of stuff + +00:20:45.300 --> 00:20:47.779 +because his story spans like 60 years + +00:20:47.780 --> 00:20:49.659 +so it gives a good good feedback + +00:20:49.660 --> 00:20:51.539 +that's the real main reason I asked that question + +00:20:51.540 --> 00:20:53.699 +because I just needed one that sea monkeys I just picked + +00:20:53.700 --> 00:20:56.579 +because it was obscure and just always have right + +00:20:56.580 --> 00:20:58.939 +I used to have it right hello world and forth + +00:20:58.940 --> 00:21:01.019 +because I thought was an interesting one as well so + +00:21:01.020 --> 00:21:03.899 +It's just picking random ones like that. + +00:21:03.900 --> 00:21:06.499 +One question asked, sorry, a lot of models is, + +00:21:06.500 --> 00:21:09.419 +what is the closest star to the Earth? + +00:21:09.420 --> 00:21:12.019 +Because most of them will say Alpha Centauri + +00:21:12.020 --> 00:21:13.739 +or Proxima Centauri and not the sun. + +00:21:13.740 --> 00:21:15.899 +And I have a whole nother talk + +00:21:15.900 --> 00:21:17.899 +where I just argue with the LLM + +00:21:17.900 --> 00:21:20.019 +trying to say, hey, the sun is a star. + +00:21:20.020 --> 00:21:26.579 +And he just wouldn't accept it, so. What? + +00:21:26.580 --> 00:21:28.419 +Oh, I can hear that. + +00:21:28.420 --> 00:21:34.379 +So what specific tasks do you like to use your local AI? + +00:21:34.380 --> 00:21:37.459 +I like to load a lot of my code into + +00:21:37.460 --> 00:21:39.739 +and actually have it do analysis of it. + +00:21:39.740 --> 00:21:42.339 +I was actually going through some code + +00:21:42.340 --> 00:21:45.619 +I have for some pen testing, and I was having it modified + +00:21:45.620 --> 00:21:47.259 +to update it for the newer version, + +00:21:47.260 --> 00:21:48.459 +because I hate to say this, + +00:21:48.460 --> 00:21:49.859 +but it was written for Python 2, + +00:21:49.860 --> 00:21:51.459 +and I needed to update it for Python 3. + +00:21:51.460 --> 00:21:53.859 +And the 2 to 3 tool did not do all of it, + +00:21:53.860 --> 00:21:56.659 +but the actual tool was able to do the refactoring. + +00:21:56.660 --> 00:21:58.499 +It's part of my laziness. + +00:21:58.500 --> 00:22:01.459 +But I use that for anything I don't want to hit the web. + +00:22:01.460 --> 00:22:03.259 +And that's a lot of stuff when you start thinking about + +00:22:03.260 --> 00:22:04.979 +if you're doing cyber security researching. + +00:22:04.980 --> 00:22:06.819 +and you have your white papers + +00:22:06.820 --> 00:22:10.779 +and stuff like that and stuff in there. + +00:22:10.780 --> 00:22:13.979 +I've got a lot of that loaded into RAG + +00:22:13.980 --> 00:22:15.659 +in one model on my OpenWebUI system. + +00:22:15.660 --> 00:22:21.059 +Neat. Have you used have you used + +00:22:21.060 --> 00:22:25.739 +any small domain specific LLMs? What kind of tasks? + +00:22:25.740 --> 00:22:30.419 +If so, what kind of tasks that they specialize in? + +00:22:30.420 --> 00:22:32.139 +And you know, how? + +00:22:32.140 --> 00:22:34.979 +Not to be honest, but there are some out there like once again, + +00:22:34.980 --> 00:22:36.779 +for cybersecurity and stuff like that, + +00:22:36.780 --> 00:22:39.739 +that I really need to dig into that's on my to do list. + +00:22:39.740 --> 00:22:41.699 +I've got a couple weeks off at the end of the year. + +00:22:41.700 --> 00:22:43.779 +And that's a big part of my plan for that. + +00:22:43.780 --> 00:22:49.379 +Are the various models updated pretty regularly? + +00:22:49.380 --> 00:22:52.059 +Can you add your own data to the pre-built models? + +00:22:52.060 --> 00:22:56.699 +Yes. The models are updated pretty reasonably. + +00:22:56.700 --> 00:22:59.699 +You can add data to a model in a couple of different ways. + +00:22:59.700 --> 00:23:01.099 +You can do something called fine-tuning, + +00:23:01.100 --> 00:23:03.819 +which requires a really nice GPU and a lot of CPU time. + +00:23:03.820 --> 00:23:05.499 +Probably not going to do that. + +00:23:05.500 --> 00:23:07.419 +You can do retrieval augmentation generation, + +00:23:07.420 --> 00:23:09.499 +which is you load your data on top of the system + +00:23:09.500 --> 00:23:11.299 +and puts inside a database + +00:23:11.300 --> 00:23:12.859 +and you can actually scan that and stuff. + +00:23:12.860 --> 00:23:14.619 +I have another talk where I go through + +00:23:14.620 --> 00:23:16.219 +and I start asking questions about, + +00:23:16.220 --> 00:23:18.579 +I load the talk into the engine + +00:23:18.580 --> 00:23:20.099 +and I ask questions against that. + +00:23:20.100 --> 00:23:22.179 +I would have one more time would have done that + +00:23:22.180 --> 00:23:26.499 +but it comes down to how many That's that's rag rag + +00:23:26.500 --> 00:23:29.419 +is pretty easy to do through open web UI or LM studio + +00:23:29.420 --> 00:23:31.419 +It's a great way you just like point a folder + +00:23:31.420 --> 00:23:34.099 +point it to a folder and it just sucks all that state into + +00:23:34.100 --> 00:23:35.499 +and it'll hit that data first + +00:23:35.500 --> 00:23:36.859 +you have like helpdesk and stuff and + +00:23:36.860 --> 00:23:39.619 +The other options there's vector databases, + +00:23:39.620 --> 00:23:41.819 +which is like if you use PostgreSQL. + +00:23:41.820 --> 00:23:43.699 +It has a PG vector I can do a lot of that stuff. + +00:23:43.700 --> 00:23:44.739 +I've not dug into that yet, + +00:23:44.740 --> 00:23:46.099 +but that is also on that to-do list + +00:23:46.100 --> 00:23:48.459 +I've got a lot of stuff planned for Cool. + +00:23:48.460 --> 00:23:51.819 +So what are your experience with rags? + +00:23:51.820 --> 00:23:54.339 +I don't even know what that means. + +00:23:54.340 --> 00:23:57.419 +Do you know what that means? + +00:23:57.420 --> 00:23:59.619 +Do you remember this question again? + +00:23:59.620 --> 00:24:03.979 +What is your experience with RAGs? RAGs is great. + +00:24:03.980 --> 00:24:07.459 +That's Retrieval Augmentation Generation. + +00:24:07.460 --> 00:24:09.739 +That loads your data first, and it hits yours, + +00:24:09.740 --> 00:24:11.499 +and it'll actually cite it and stuff. + +00:24:11.500 --> 00:24:14.659 +There's a guy who wrote a RAG in 100 lines of Python, + +00:24:14.660 --> 00:24:16.899 +and it's an impressive piece of software. + +00:24:16.900 --> 00:24:18.779 +I think if you hit one of my site, + +00:24:18.780 --> 00:24:22.099 +I've got a private AI talk where I actually refer to that. + +00:24:22.100 --> 00:24:25.219 +But retrieval augmentation, it's easy, it's fast, + +00:24:25.220 --> 00:24:26.699 +it puts your data into the system, + +00:24:26.700 --> 00:24:31.339 +Yeah, start with that and go then iterate on top of that. + +00:24:31.340 --> 00:24:32.659 +That's one of the great things about AI, + +00:24:32.660 --> 00:24:33.619 +especially private AI, + +00:24:33.620 --> 00:24:37.739 +is you can do whatever you want to with it + +00:24:37.740 --> 00:24:43.179 +and build up with it as you get more experience. + +00:24:43.180 --> 00:24:44.219 +Any thoughts on running things + +00:24:44.220 --> 00:24:49.179 +on AWS, DigitalOcean, and so on? + +00:24:49.180 --> 00:24:50.619 +AWS is not bad. + +00:24:50.620 --> 00:24:52.659 +The DigitalOcean, they have some of their GPUs. + +00:24:52.660 --> 00:24:54.379 +I still don't like having the data + +00:24:54.380 --> 00:24:57.419 +leave my house, to be honest, or at work, + +00:24:57.420 --> 00:24:59.019 +because I tend to do some stuff + +00:24:59.020 --> 00:25:01.259 +that I don't want it even hitting that situation. + +00:25:01.260 --> 00:25:03.699 +But they have pretty good stuff. + +00:25:03.700 --> 00:25:05.579 +Another one to consider is Oracle Cloud. + +00:25:05.580 --> 00:25:09.059 +Oracle has their AI infrastructure that's really well done. + +00:25:09.060 --> 00:25:12.379 +But I mean, once again, then you start looking at potential + +00:25:12.380 --> 00:25:13.779 +is saying your data is private, + +00:25:13.780 --> 00:25:14.819 +I don't necessarily trust it. + +00:25:14.820 --> 00:25:17.859 +But they do have good stuff, both DigitalOcean, AWS, + +00:25:17.860 --> 00:25:20.339 +Oracle Cloud has the free service, which isn't too bad, + +00:25:20.340 --> 00:25:21.339 +usually a certain number of stuff. + +00:25:21.340 --> 00:25:23.179 +And Google's also has it, + +00:25:23.180 --> 00:25:26.739 +but I still tend to keep more stuff on local PCs, + +00:25:26.740 --> 00:25:33.299 +because I just paranoid that way. Gotcha. + +00:25:33.300 --> 00:25:35.579 +What has your experience been using AI? + +00:25:35.580 --> 00:25:40.139 +Do you want to get into that, using AI for cybersecurity? + +00:25:40.140 --> 00:25:42.019 +You might have already touched on this. + +00:25:42.020 --> 00:25:44.379 +Yeah, really, for cybersecurity, + +00:25:44.380 --> 00:25:46.259 +what I've had to do is I've dumped logs + +00:25:46.260 --> 00:25:47.299 +to have a due correlation. + +00:25:47.300 --> 00:25:49.859 +Keep in mind, the size of that LLAMA file we were using + +00:25:49.860 --> 00:25:52.059 +for figuring out David Bowie, writing the hello world, + +00:25:52.060 --> 00:25:54.179 +all that stuff, is like six gig. + +00:25:54.180 --> 00:25:56.859 +How does it get the entire world in six gig? + +00:25:56.860 --> 00:25:59.739 +I still haven't figured that out in terms of quantization. + +00:25:59.740 --> 00:26:02.499 +So I'm really interested in seeing the ability + +00:26:02.500 --> 00:26:05.139 +to take all this stuff out of all my logs, + +00:26:05.140 --> 00:26:06.339 +dump it all in there, + +00:26:06.340 --> 00:26:08.459 +and actually be able to do intelligent queries against that. + +00:26:08.460 --> 00:26:10.899 +Microsoft has a project called Security Copilot, + +00:26:10.900 --> 00:26:12.819 +which is trying to do that in the Cloud. + +00:26:12.820 --> 00:26:15.299 +But I want to work on something to do that more locally + +00:26:15.300 --> 00:26:19.019 +and be able to actually drive this stuff over that. + +00:26:19.020 --> 00:26:21.979 +That's one also on the long-term goals. + +00:26:21.980 --> 00:26:26.059 +So we got any other questions or? + +00:26:26.060 --> 00:26:29.099 +Those are the questions that I see. + +00:26:29.100 --> 00:26:31.179 +I want to just read out a couple of comments + +00:26:31.180 --> 00:26:33.419 +that I saw in IRC though. + +00:26:33.420 --> 00:26:36.699 +Jay Rutabaga says, it went very well + +00:26:36.700 --> 00:26:39.259 +from an audience perspective. + +00:26:39.260 --> 00:26:43.619 +And G Gundam says, respect your commitment to privacy. + +00:26:43.620 --> 00:26:45.619 +And then somebody is telling us + +00:26:45.620 --> 00:26:46.779 +we might have skipped a question. + +00:26:46.780 --> 00:26:50.019 +So I'm just going to run back to my list. + +00:26:50.020 --> 00:26:52.819 +Updated regularly experience. + +00:26:52.820 --> 00:26:57.659 +I just didn't type in the answer here's + +00:26:57.660 --> 00:26:59.659 +and there's a couple more questions coming in so + +00:26:59.660 --> 00:27:04.699 +Is there a disparity where you go to paid models + +00:27:04.700 --> 00:27:08.619 +because they are better and what problems? + +00:27:08.620 --> 00:27:14.019 +You know what would drive you to? That's a good question. + +00:27:14.020 --> 00:27:17.819 +Paid models, I don't mind them. I think they're good, + +00:27:17.820 --> 00:27:21.299 +but I don't think they're actually economically sustainable + +00:27:21.300 --> 00:27:22.659 +under their current system. + +00:27:22.660 --> 00:27:24.299 +Because right now, if you're paying + +00:27:24.300 --> 00:27:26.899 +20 bucks a month for Copilot and that goes up to 200 bucks, + +00:27:26.900 --> 00:27:28.499 +I'm not going to be as likely to use it. + +00:27:28.500 --> 00:27:29.579 +You know what I mean? + +00:27:29.580 --> 00:27:33.059 +But it does do some things in a way that I did not expect. + +00:27:33.060 --> 00:27:35.459 +For example, Grok was refactoring + +00:27:35.460 --> 00:27:38.019 +some of my code in the comments and dropped an F-bomb. + +00:27:38.020 --> 00:27:39.979 +which I did not see coming, + +00:27:39.980 --> 00:27:41.619 +but the other code before + +00:27:41.620 --> 00:27:43.219 +that I had gotten off GitHub + +00:27:43.220 --> 00:27:44.059 +had F bombs in it. + +00:27:44.060 --> 00:27:45.899 +So it was just emulating the style, + +00:27:45.900 --> 00:27:47.779 +but would that be something + +00:27:47.780 --> 00:27:49.979 +I'd want to turn in a pull request? I don't know. + +00:27:49.980 --> 00:27:52.139 +But, uh, there's, there's a lot of money + +00:27:52.140 --> 00:27:53.899 +going into these AIs and stuff, + +00:27:53.900 --> 00:27:56.219 +but in terms of the ability to get a decent one, + +00:27:56.220 --> 00:27:57.979 +like the llama, llama three, two, + +00:27:57.980 --> 00:28:01.699 +and load your data into it, you can be pretty competitive. + +00:28:01.700 --> 00:28:04.779 +You're not going to get all the benefits, + +00:28:04.780 --> 00:28:07.299 +but you have more control over it. + +00:28:07.300 --> 00:28:11.819 +So it's, it's a, this and that it's a, + +00:28:11.820 --> 00:28:13.139 +it's a balancing act. + +00:28:13.140 --> 00:28:15.539 +Okay, and I think I see a couple more questions coming in. + +00:28:15.540 --> 00:28:19.619 +What is the largest parameter size for local models + +00:28:19.620 --> 00:28:22.459 +that you've been able to successfully run locally + +00:28:22.460 --> 00:28:26.059 +and do run into issues with limited context window size? + +00:28:26.060 --> 00:28:29.659 +The top eight models will tend to have a larger ceiling. + +00:28:29.660 --> 00:28:32.859 +Yes, yes, yes, yes, yes. + +00:28:32.860 --> 00:28:37.019 +By default, the context size is I think 1024. + +00:28:37.020 --> 00:28:44.619 +But I've upped it to 8192 on the on this box, the Pangolin + +00:28:44.620 --> 00:28:46.939 +because it seems to be some reason + +00:28:46.940 --> 00:28:49.459 +it's just a very working quite well. + +00:28:49.460 --> 00:28:52.219 +But the largest ones I've loaded have been in + +00:28:52.220 --> 00:28:54.059 +the have not been that huge. + +00:28:54.060 --> 00:28:55.699 +I've loaded this the last biggest one I've done. + +00:28:55.700 --> 00:28:57.459 +That's the reason why I'm planning + +00:28:57.460 --> 00:29:01.339 +on breaking down and buying a Ryzen. + +00:29:01.340 --> 00:29:03.619 +Actually, I'm going to buy + +00:29:03.620 --> 00:29:06.979 +an Intel i285H with 96 gig of RAM. + +00:29:06.980 --> 00:29:08.379 +Then I should be able to load + +00:29:08.380 --> 00:29:12.059 +a 70 billion parameter model in that. How fast will it run? + +00:29:12.060 --> 00:29:13.819 +It's going to run slow as dog, + +00:29:13.820 --> 00:29:15.819 +but it's going to be cool to be able to do it. + +00:29:15.820 --> 00:29:17.379 +It's an AI bragging rights thing, + +00:29:17.380 --> 00:29:20.019 +but I mostly stick with the smaller size models + +00:29:20.020 --> 00:29:22.819 +and the ones that are more quantitized + +00:29:22.820 --> 00:29:26.619 +because it just tends to work better for me. + +00:29:26.620 --> 00:29:29.179 +We've still got over 10 minutes before we're cutting away, + +00:29:29.180 --> 00:29:30.179 +but I'm just anticipating + +00:29:30.180 --> 00:29:32.859 +that we're going to be going strong at the 10 minute mark. + +00:29:32.860 --> 00:29:34.899 +So I'm just, just letting, you know, + +00:29:34.900 --> 00:29:37.379 +we can go as long as we like here at a certain point. + +00:29:37.380 --> 00:29:41.059 +I may have to jump away and check in with the next speaker, + +00:29:41.060 --> 00:29:44.419 +but we'll post the entirety of this, + +00:29:44.420 --> 00:29:47.979 +even if we aren't able to stay with it all. + +00:29:47.980 --> 00:29:49.739 +Okay. And we've got 10 minutes + +00:29:49.740 --> 00:29:52.379 +where we're still going to stay live. + +00:29:52.380 --> 00:30:00.139 +So next question coming in, I see, are there free as in freedom, + +00:30:00.140 --> 00:30:05.739 +free as in FSF issues with the data? + +00:30:05.740 --> 00:30:11.699 +Yes, where's the data coming from is a huge question with AI. + +00:30:11.700 --> 00:30:13.739 +It's astonishing you can ask questions + +00:30:13.740 --> 00:30:16.899 +to models that you don't know where it's coming from. + +00:30:16.900 --> 00:30:19.979 +That is gonna be one of the big issues long-term. + +00:30:19.980 --> 00:30:21.499 +There are people who are working + +00:30:21.500 --> 00:30:22.979 +on trying to figure out that stuff, + +00:30:22.980 --> 00:30:25.259 +but it's, I mean, if you look at, God, + +00:30:25.260 --> 00:30:27.059 +I can't remember who it was. + +00:30:27.060 --> 00:30:28.659 +Somebody was actually out torrenting books + +00:30:28.660 --> 00:30:30.939 +just to be able to build into their AI system. + +00:30:30.940 --> 00:30:32.339 +I think it might've been Meta. + +00:30:32.340 --> 00:30:34.819 +So there's a lot of that going on. + +00:30:34.820 --> 00:30:38.139 +The open source of the stuff is going to be tough. + +00:30:38.140 --> 00:30:39.459 +There's going to be there's some models + +00:30:39.460 --> 00:30:41.419 +like the mobile guys have got their own license, + +00:30:41.420 --> 00:30:42.739 +but where they're getting their data from, + +00:30:42.740 --> 00:30:45.499 +I'm not sure on so that that's a huge question. + +00:30:45.500 --> 00:30:47.979 +That's a that's a talk in itself. + +00:30:47.980 --> 00:30:51.979 +But yeah, but you if you train on your RAG and your data, + +00:30:51.980 --> 00:30:53.499 +you know what it's come, you know, + +00:30:53.500 --> 00:30:54.379 +you have a license that + +00:30:54.380 --> 00:30:55.139 +but the other stuff is just + +00:30:55.140 --> 00:30:56.739 +more lines of supplement + +00:30:56.740 --> 00:31:01.379 +if you're using a smaller model, + +00:31:01.380 --> 00:31:05.419 +but the comment online, I see a couple of them. + +00:31:05.420 --> 00:31:08.339 +I'll read them out in order here. Really interesting stuff. + +00:31:08.340 --> 00:31:11.659 +Thank you for your talk. Given that large AI companies + +00:31:11.660 --> 00:31:14.899 +are openly stealing intellectual property and copyright + +00:31:14.900 --> 00:31:18.939 +and therefore eroding the authority of such laws + +00:31:18.940 --> 00:31:21.579 +and maybe obscuring the truth itself, + +00:31:21.580 --> 00:31:26.579 +can you see a future where IP and copyright flaw become untenable? + +00:31:26.580 --> 00:31:29.619 +I think that's a great question. + +00:31:29.620 --> 00:31:34.979 +I'm not a lawyer, but it is really getting complicated. + +00:31:34.980 --> 00:31:37.859 +It is getting to the point, I asked a question from, + +00:31:37.860 --> 00:31:41.179 +I played with Sora a little bit, and it generated someone, + +00:31:41.180 --> 00:31:42.819 +you can go like, oh, that's Jon Hamm, + +00:31:42.820 --> 00:31:44.099 +that's Christopher Walken, + +00:31:44.100 --> 00:31:45.379 +you start figuring out who the people + +00:31:45.380 --> 00:31:47.019 +they're modeling stuff after. + +00:31:47.020 --> 00:31:48.979 +There is an apocalypse, something + +00:31:48.980 --> 00:31:52.459 +going to happen right now. + +00:31:52.460 --> 00:31:53.579 +There is, but this is once again, + +00:31:53.580 --> 00:31:56.059 +my personal opinion, and I'm not a lawyer, + +00:31:56.060 --> 00:31:57.459 +and I do not have money. + +00:31:57.460 --> 00:31:58.859 +So don't sue me, is there's going to be + +00:31:58.860 --> 00:32:02.899 +the current administration tends is very AI pro AI. + +00:32:02.900 --> 00:32:05.499 +And there's very a great deal of lobbying by those groups. + +00:32:05.500 --> 00:32:07.139 +And it's on both sides. + +00:32:07.140 --> 00:32:09.699 +And it's going to be, it's gonna be interesting to see + +00:32:09.700 --> 00:32:11.699 +what happens to copyright the next 510 years. + +00:32:11.700 --> 00:32:13.339 +I just don't know how it keeps up + +00:32:13.340 --> 00:32:16.059 +without there being some adjustments and stuff. + +00:32:16.060 --> 00:32:20.419 +Okay, and then another comment I saw, + +00:32:20.420 --> 00:32:23.219 +file size is not going to be a bottleneck. + +00:32:23.220 --> 00:32:25.819 +RAM is. You'll need 16 gigabytes of RAM + +00:32:25.820 --> 00:32:28.259 +to run the smallest local models + +00:32:28.260 --> 00:32:31.979 +and 512 gigabytes of RAM to run the larger ones. + +00:32:31.980 --> 00:32:35.059 +You'll need a GPU with that much memory + +00:32:35.060 --> 00:32:39.099 +if you want it to run quickly. Yeah. Oh no. + +00:32:39.100 --> 00:32:41.259 +It also depends upon how your memory is laid out. + +00:32:41.260 --> 00:32:45.699 +Like example being the Ultra i285H + +00:32:45.700 --> 00:32:47.899 +I plan to buy, that has 96 gig of memory. + +00:32:47.900 --> 00:32:50.499 +It's unified between the GPU and the CPU share it, + +00:32:50.500 --> 00:32:52.739 +but they go over the same bus. + +00:32:52.740 --> 00:32:55.779 +So the overall bandwidth of it tends to be a bit less, + +00:32:55.780 --> 00:32:57.579 +but you're able to load more of it into memory. + +00:32:57.580 --> 00:32:59.419 +So it's able to do some additional stuff with it + +00:32:59.420 --> 00:33:00.819 +as opposed to come off disk. + +00:33:00.820 --> 00:33:03.699 +It's all balancing act. If you hit Zyskin's website, + +00:33:03.700 --> 00:33:05.819 +that guy's done some great work on it. + +00:33:05.820 --> 00:33:07.499 +I'm trying to figure out how big a model you can do, + +00:33:07.500 --> 00:33:08.619 +what you can do with it. + +00:33:08.620 --> 00:33:12.699 +And some of the stuff seems to be not obvious, + +00:33:12.700 --> 00:33:15.299 +because like example, being that MacBook Air, + +00:33:15.300 --> 00:33:17.619 +for the five minutes I can run the model, + +00:33:17.620 --> 00:33:19.379 +it runs it faster than a lot of other things + +00:33:19.380 --> 00:33:21.339 +that should be able to run it faster, + +00:33:21.340 --> 00:33:24.619 +just because of the way the ARM cores and the unified memory work on it. + +00:33:24.620 --> 00:33:26.019 +So it's a learning process. + +00:33:26.020 --> 00:33:29.579 +But if you want to, Network Chuck had a great video + +00:33:29.580 --> 00:33:30.939 +talking about building his own system + +00:33:30.940 --> 00:33:34.379 +with a couple really powerful NVIDIA cards + +00:33:34.380 --> 00:33:35.379 +and stuff like that in it. + +00:33:35.380 --> 00:33:38.859 +And just actually setting up on his system as a node + +00:33:38.860 --> 00:33:41.459 +and using a web UI on it. So there's a lot of stuff there, + +00:33:41.460 --> 00:33:43.899 +but it is a process of learning how big your data is, + +00:33:43.900 --> 00:33:44.899 +which models you want to use, + +00:33:44.900 --> 00:33:46.219 +how much information you need, + +00:33:46.220 --> 00:33:48.019 +but it's part of the learning. + +00:33:48.020 --> 00:33:52.899 +And you can run models, even as a Raspberry PI fives, + +00:33:52.900 --> 00:33:54.499 +if you want to, they'll run slow. + +00:33:54.500 --> 00:33:56.459 +Don't get me wrong, but they're possible. + +00:33:56.460 --> 00:34:02.179 +Okay, and I think there's other questions coming in too, + +00:34:02.180 --> 00:34:04.019 +so I'll just bam for another second. + +00:34:04.020 --> 00:34:06.299 +We've got about five minutes before we'll, + +00:34:06.300 --> 00:34:09.739 +before we'll be cutting over, + +00:34:09.740 --> 00:34:13.179 +but I just want to say in case we get close for time here, + +00:34:13.180 --> 00:34:14.859 +how much I appreciate your talk. + +00:34:14.860 --> 00:34:15.979 +This is another one that I'm going to + +00:34:15.980 --> 00:34:18.339 +have to study after the conference. + +00:34:18.340 --> 00:34:21.099 +We greatly appreciate, all of us appreciate + +00:34:21.100 --> 00:34:22.459 +you guys putting on the conference. + +00:34:22.460 --> 00:34:26.299 +It's a great conference. It's well done. + +00:34:26.300 --> 00:34:28.019 +It's an honor to be on the stage + +00:34:28.020 --> 00:34:30.899 +with the brains of the project, which is you. + +00:34:30.900 --> 00:34:34.699 +So what else we got? Question wise. + +00:34:34.700 --> 00:34:39.499 +Okay, so just scanning here. + +00:34:39.500 --> 00:34:50.699 +Have you used local models capable of tool calling? + +00:34:50.700 --> 00:34:54.779 +I'm, I'm scared of agentic. + +00:34:54.780 --> 00:34:58.739 +I, I am, I'm going to be a slow adopter of that. + +00:34:58.740 --> 00:35:02.459 +I want to do it, but I just don't have the, uh, + +00:35:02.460 --> 00:35:04.339 +four decimal fortitude right now to do it. + +00:35:04.340 --> 00:35:07.179 +I, I, I've had to give me the commands, + +00:35:07.180 --> 00:35:08.739 +but I still run the commands by hand. + +00:35:08.740 --> 00:35:10.539 +I'm looking into it and it's on once again, + +00:35:10.540 --> 00:35:14.139 +it's on that list, but I just, that's a big step for me. + +00:35:14.140 --> 00:35:23.139 +So. Awesome. All right. + +00:35:23.140 --> 00:35:27.179 +Well, maybe it's, let me just scroll through + +00:35:27.180 --> 00:35:31.539 +because we might have missed one question. Oh, I see. + +00:35:31.540 --> 00:35:36.899 +Here was the piggyback question. + +00:35:36.900 --> 00:35:38.419 +Now I see the question that I missed. + +00:35:38.420 --> 00:35:41.139 +So this was piggybacking on the question + +00:35:41.140 --> 00:35:44.859 +about model updates and adding data. + +00:35:44.860 --> 00:35:46.579 +And will models reach out to the web + +00:35:46.580 --> 00:35:47.819 +if they need more info? + +00:35:47.820 --> 00:35:51.779 +Or have you worked with any models that work that way? + +00:35:51.780 --> 00:35:55.259 +No, I've not seen any models to do that + +00:35:55.260 --> 00:35:57.739 +There's there was like a group + +00:35:57.740 --> 00:35:59.899 +working on something like a package updater + +00:35:59.900 --> 00:36:02.499 +that would do different diffs on it, + +00:36:02.500 --> 00:36:03.939 +but it's so Models change so much + +00:36:03.940 --> 00:36:05.739 +even who make minor changes and fine-tuning. + +00:36:05.740 --> 00:36:07.659 +It's hard just to update them in place + +00:36:07.660 --> 00:36:10.099 +So I haven't seen one, but that doesn't mean + +00:36:10.100 --> 00:36:16.259 +they're not out there. I'm curious topic though Awesome + +00:36:16.260 --> 00:36:19.539 +Well, it's probably pretty good timing. + +00:36:19.540 --> 00:36:21.299 +Let me just scroll and make sure. + +00:36:21.300 --> 00:36:23.499 +And of course, before I can say that, + +00:36:23.500 --> 00:36:25.899 +there's one more question. So let's go ahead and have that. + +00:36:25.900 --> 00:36:28.299 +I want to make sure while we're still live, though, + +00:36:28.300 --> 00:36:31.299 +I give you a chance to offer any closing thoughts. + +00:36:31.300 --> 00:36:35.779 +So what scares you most about the agentic tools? + +00:36:35.780 --> 00:36:38.419 +How would you think about putting a sandbox around that + +00:36:38.420 --> 00:36:42.139 +if you did adopt an agentic workflow? + +00:36:42.140 --> 00:36:42.899 +That is a great question. + +00:36:42.900 --> 00:36:45.939 +In terms of that, I would just control + +00:36:45.940 --> 00:36:48.099 +what it's able to talk to, what machines, + +00:36:48.100 --> 00:36:50.059 +I would actually have it be air gap. + +00:36:50.060 --> 00:36:52.099 +I work for a defense contractor, + +00:36:52.100 --> 00:36:53.819 +and we spend a lot of time dealing with air gap systems, + +00:36:53.820 --> 00:36:55.979 +because that's just kind of the way it works out for us. + +00:36:55.980 --> 00:36:58.499 +So agentic, it's just going to take a while to get trust. + +00:36:58.500 --> 00:37:01.059 +I want to want to see more stuff happening. + +00:37:01.060 --> 00:37:02.819 +Humans screw up stuff enough. + +00:37:02.820 --> 00:37:04.819 +The last thing we need is to multiply that by 1000. + +00:37:04.820 --> 00:37:09.419 +So in terms of that, I would be restricting what it can do. + +00:37:09.420 --> 00:37:10.859 +If you look at the capabilities, + +00:37:10.860 --> 00:37:13.579 +if I created a user and gave it permissions, + +00:37:13.580 --> 00:37:15.299 +I would have a lockdown through sudo, + +00:37:15.300 --> 00:37:17.379 +what it's able to do, what the account's able to do. + +00:37:17.380 --> 00:37:18.899 +I would do those kind of things, + +00:37:18.900 --> 00:37:20.859 +but it's going to be, it's happening. + +00:37:20.860 --> 00:37:25.819 +It's just, I'm going to be one of the laggards on that one. + +00:37:25.820 --> 00:37:29.259 +So airgab, jail, extremely locked down environments, + +00:37:29.260 --> 00:37:34.899 +like we're talking about separate physicals, not Docker. + +00:37:34.900 --> 00:37:37.499 +Yeah, hopefully. Right, fair. + +00:37:37.500 --> 00:37:39.899 +So tool calling can be read-only, + +00:37:39.900 --> 00:37:42.539 +such as giving models the ability to search the web + +00:37:42.540 --> 00:37:43.979 +before answering your question, + +00:37:43.980 --> 00:37:46.219 +you know, write access, execute access. + +00:37:46.220 --> 00:37:49.219 +I'm interested to know if local models + +00:37:49.220 --> 00:37:51.419 +are any good at that. + +00:37:51.420 --> 00:37:55.579 +Yes, local models can do a lot of that stuff. + +00:37:55.580 --> 00:37:56.819 +It's their capabilities. + +00:37:56.820 --> 00:37:59.019 +If you load LM studio, you can do a lot of wonderful stuff + +00:37:59.020 --> 00:38:02.419 +with that or with open web UI with a llama. + +00:38:02.420 --> 00:38:05.739 +It's a lot of capabilities. It's amazing. + +00:38:05.740 --> 00:38:08.139 +Open web UI is actually what a lot of companies are using now + +00:38:08.140 --> 00:38:10.259 +to put their data behind that. + +00:38:10.260 --> 00:38:12.139 +They're curated data and stuff like that. So works well. + +00:38:12.140 --> 00:38:15.819 +I can confirm that from my own professional experience. + +00:38:15.820 --> 00:38:19.659 +Excellent. Okay, well, our timing should be just perfect + +00:38:19.660 --> 00:38:22.659 +if you want to give us like a 30-second, 45-second wrap-up. + +00:38:22.660 --> 00:38:24.419 +Aaron, let me squeeze in mine. + +00:38:24.420 --> 00:38:26.779 +Thank you again so much for preparing this talk + +00:38:26.780 --> 00:38:30.499 +and for entertaining all of our questions. + +00:38:30.500 --> 00:38:33.299 +Yeah, let me just thank you guys for the conference again. + +00:38:33.300 --> 00:38:35.179 +This is a great one. I've enjoyed a lot of it. + +00:38:35.180 --> 00:38:37.339 +I've only had a couple of talks so far, + +00:38:37.340 --> 00:38:41.659 +but I'm looking forward to hitting the ones after this and tomorrow. + +00:38:41.660 --> 00:38:44.739 +But the AI stuff is coming. Get on board. + +00:38:44.740 --> 00:38:46.939 +Definitely recommend it. If you want to just try it out + +00:38:46.940 --> 00:38:48.419 +and get a little taste of it, + +00:38:48.420 --> 00:38:49.779 +what my minimal viable product + +00:38:49.780 --> 00:38:51.619 +with just LlamaFile and GPTEL + +00:38:51.620 --> 00:38:53.139 +will get you to the point where you start figuring out. + +00:38:53.140 --> 00:38:55.579 +Gptel is an amazing thing. It just gets out of your way, + +00:38:55.580 --> 00:39:00.459 +but it works solo with Emacs. Design because it takes + +00:39:00.460 --> 00:39:01.699 +doesn't take your hands off the keyboard. + +00:39:01.700 --> 00:39:02.499 +It's just another buffer + +00:39:02.500 --> 00:39:04.059 +and you just put information in there. + +00:39:04.060 --> 00:39:06.979 +It's quite quite a wonderful It's a wonderful time. + +00:39:06.980 --> 00:39:10.819 +Let's put that way That's all I got Thank you + +00:39:10.820 --> 00:39:14.339 +so much for once again, and we're we're just cut away. + +00:39:14.340 --> 00:39:15.779 +So I'll stop the recording + +00:39:15.780 --> 00:39:18.259 +and you're on your own recognizance + +00:39:18.260 --> 00:39:19.699 +Well, I'm gonna punch out + +00:39:19.700 --> 00:39:21.059 +if anybody has any questions or anything + +00:39:21.060 --> 00:39:24.699 +my email address is ajgrothe@yahoo.com or at gmail and + +00:39:24.700 --> 00:39:26.779 +Thank you all for attending + +00:39:26.780 --> 00:39:29.939 +and thanks again for the conference + +00:39:29.940 --> 00:39:32.579 +Okay, I'm gonna go ahead and end the room there, thank you. + +00:39:32.580 --> 00:39:34.100 +Excellent, thanks, bye. diff --git a/2025/captions/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--answers.vtt b/2025/captions/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--answers.vtt new file mode 100644 index 00000000..676fa744 --- /dev/null +++ b/2025/captions/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--answers.vtt @@ -0,0 +1,859 @@ +WEBVTT + +00:00:00.000 --> 00:00:02.839 +So as we wait for people to drop + +00:00:02.840 --> 00:00:04.279 +in their questions and so on, + +00:00:04.280 --> 00:00:08.719 +I'll just kind of add a couple of thoughts. + +00:00:08.720 --> 00:00:12.039 +I'm not personally much of a Python developer, + +00:00:12.040 --> 00:00:17.759 +so I'm just curious as to your thoughts on using Emacs + +00:00:17.760 --> 00:00:24.319 +and kind of the development methodology you showed + +00:00:24.320 --> 00:00:26.519 +as a way to learn Python. + +00:00:26.520 --> 00:00:29.239 +Yeah, I think Emacs is perfect for it. + +00:00:29.240 --> 00:00:31.759 +If you're already an Emacs user + +00:00:31.760 --> 00:00:35.599 +and you have the keyboard commands + +00:00:35.600 --> 00:00:38.719 +and everything uploaded in your brain, + +00:00:38.720 --> 00:00:42.599 +then learning Python shouldn't be too difficult, + +00:00:42.600 --> 00:00:44.839 +because there's a lot of good packages. + +00:00:44.840 --> 00:00:51.319 +For Python, I'm using a thing called elpy, + +00:00:51.320 --> 00:00:55.679 +which is really good. for Python development. + +00:00:55.680 --> 00:01:00.039 +So you have this connection to a running backend, + +00:01:00.040 --> 00:01:06.039 +the Jedi Python backend that will give you autocomplete + +00:01:06.040 --> 00:01:09.039 +and some refactoring and things like that. + +00:01:09.040 --> 00:01:14.439 +So I think Emacs is really good for Python development. + +00:01:14.440 --> 00:01:16.679 +So what are some other... + +00:01:16.680 --> 00:01:18.319 +How long have you been using Emacs? + +00:01:18.320 --> 00:01:19.599 +Kind of a general question. + +00:01:19.600 --> 00:01:23.599 +Sorry if you covered this and I missed it. + +00:01:23.600 --> 00:01:26.599 +It's not that long actually. + +00:01:26.600 --> 00:01:31.599 +I think it was in 2019 or 2020. + +00:01:31.600 --> 00:01:34.799 +It's when I started to, I was really fortunate enough + +00:01:34.800 --> 00:01:38.039 +to join a team that had chosen to + +00:01:38.040 --> 00:01:42.919 +develop an app in Lisp, in Clojure. + +00:01:42.920 --> 00:01:45.039 +yeah and i didn't know anything about it + +00:01:45.040 --> 00:01:47.359 +i didn't know lisp at all so it was like brand new + +00:01:47.360 --> 00:01:50.639 +so i really had struggling to to learn it + +00:01:50.640 --> 00:01:53.559 +but at the same time i was looking for okay + +00:01:53.560 --> 00:01:55.279 +which editor should i pick to to do this + +00:01:55.280 --> 00:02:00.239 +and i was before that and like an ide person + +00:02:00.240 --> 00:02:02.919 +so i do use this big ideas + +00:02:02.920 --> 00:02:07.839 +and this time i figured maybe i should try something different. + +00:02:07.840 --> 00:02:10.239 +And I read this book about Clojure development + +00:02:10.240 --> 00:02:13.239 +and the author was really into Emacs + +00:02:13.240 --> 00:02:17.159 +and he was like, Clojure is really good for, + +00:02:17.160 --> 00:02:19.159 +Emacs is really good for Clojure development. + +00:02:19.160 --> 00:02:20.759 +So that's how I started. + +00:02:20.760 --> 00:02:24.479 +So I like to learn, rewired my brain + +00:02:24.480 --> 00:02:27.639 +to learn all how Emacs works + +00:02:27.640 --> 00:02:30.959 +as opposed to like the mainstream editors out there. + +00:02:30.960 --> 00:02:33.519 +So that's how it started. So like five years ago, maybe. + +00:02:33.520 --> 00:02:39.519 +Cool. Um, so did you, what were some other, + +00:02:39.520 --> 00:02:43.999 +what, what, what editor were you primarily using before you? + +00:02:44.000 --> 00:02:49.399 +Um, um, back, back then it was like, + +00:02:49.400 --> 00:02:52.719 +I think it was like Sublime Text. + +00:02:52.720 --> 00:02:57.719 +And also some IntelliJ, sorry, JetBrains, their tools. + +00:02:57.720 --> 00:03:04.599 +And before that, I was in the Microsoft world, + +00:03:04.600 --> 00:03:08.199 +so it's like Microsoft toolings basically. + +00:03:08.200 --> 00:03:10.879 +So I moved towards open source tooling + +00:03:10.880 --> 00:03:16.679 +and also open source development. Very cool. + +00:03:16.680 --> 00:03:19.119 +So I see we've got a couple people + +00:03:19.120 --> 00:03:23.479 +that have joined on the BBB here with us + +00:03:23.480 --> 00:03:24.959 +for the live question. + +00:03:24.960 --> 00:03:29.199 +You're welcome to just throw your question in this chat, + +00:03:29.200 --> 00:03:32.039 +or if you've got a microphone connected, + +00:03:32.040 --> 00:03:34.599 +you're welcome to come off mute + +00:03:34.600 --> 00:03:36.759 +and throw a question in that way as well. + +00:03:36.760 --> 00:03:40.359 +You can join on liberachat IRC. + +00:03:40.360 --> 00:03:44.119 +You can join pound emacs comp hyphen dev, + +00:03:44.120 --> 00:03:47.279 +and we would happily take your questions there. + +00:03:47.280 --> 00:03:49.479 +Meanwhile, I've got a question + +00:03:49.480 --> 00:03:52.719 +coming in on the pad right now, so take that next. + +00:03:52.720 --> 00:03:55.239 +I'll just read it out. + +00:03:55.240 --> 00:03:58.239 +I don't quite see how your setup works with IPython. + +00:03:58.240 --> 00:04:00.279 +Sorry if you already answered this. + +00:04:00.280 --> 00:04:03.519 +Do you have your Emacs connect to the IPython kernel + +00:04:03.520 --> 00:04:11.919 +over XMPP socket that IPython sets up? Oh, good question. + +00:04:11.920 --> 00:04:18.039 +So what I've done is I have two different connections. + +00:04:18.040 --> 00:04:21.359 +Like if I'm going to do this regular day-to-day Python work + +00:04:21.360 --> 00:04:24.399 +when I want to evaluate code + +00:04:24.400 --> 00:04:29.959 +without thinking about the external connection, + +00:04:29.960 --> 00:04:31.559 +then I just use IPython + +00:04:31.560 --> 00:04:36.799 +and I have my I'm using the LP Python package + +00:04:36.800 --> 00:04:39.839 +so that you can set up which of the REPLs + +00:04:39.840 --> 00:04:42.799 +you want to start when you evaluate code. + +00:04:42.800 --> 00:04:46.759 +So that's IPython. But in the second part of the talk + +00:04:46.760 --> 00:04:50.919 +where I connect to an externally running app, + +00:04:50.920 --> 00:04:55.839 +then I have set up the same configuration + +00:04:55.840 --> 00:05:00.959 +but to start Jupyter, the Jupyter console instead. + +00:05:00.960 --> 00:05:04.959 +And when I start it up, it's going to, it's like a dialogue + +00:05:04.960 --> 00:05:09.599 +that will ask for the ID of a running kernel. + +00:05:09.600 --> 00:05:10.839 +Because if you start a kernel, + +00:05:10.840 --> 00:05:12.919 +if you start something in a kernel, + +00:05:12.920 --> 00:05:17.079 +you will get this unique ID so you can connect to it. + +00:05:17.080 --> 00:05:19.679 +So that's kind of the difference. + +00:05:19.680 --> 00:05:21.639 +So I have two different ways + +00:05:21.640 --> 00:05:26.599 +of starting up the Python kernel. REPLs, either PyPython, + +00:05:26.600 --> 00:05:29.559 +which I do for most of my daily work, + +00:05:29.560 --> 00:05:32.239 +or if I want this connection to a running app, + +00:05:32.240 --> 00:05:38.479 +I'm using the Jupyter console, basically. + +00:05:38.480 --> 00:05:45.199 +Have you explored Org Babel at all? + +00:05:45.200 --> 00:05:48.199 +Can you talk about your approach + +00:05:48.200 --> 00:05:52.279 +compared to the Babel workflow? Oh, interesting. + +00:05:52.280 --> 00:05:54.879 +No, I haven't actually, I haven't done that, + +00:05:54.880 --> 00:05:59.119 +but I think it's similar to Jupyter notebooks, + +00:05:59.120 --> 00:06:02.359 +so you can do some interactive, you can run Python there, + +00:06:02.360 --> 00:06:03.279 +but I haven't, + +00:06:03.280 --> 00:06:08.119 +I have too little knowledge about it to elaborate on that. + +00:06:08.120 --> 00:06:24.159 +Sorry. Very good. All right. + +00:06:24.160 --> 00:06:26.999 +I'm just going to peek over to the other chats + +00:06:27.000 --> 00:06:28.839 +and make sure I'm not missing questions. + +00:06:28.840 --> 00:06:35.519 +Sorry, I got a lot of screens. A little dance here. + +00:06:35.520 --> 00:06:41.239 +All right, and I do see a few people in the chat. + +00:06:41.240 --> 00:06:44.559 +I'll just say again, if you've joined us on the BBB, + +00:06:44.560 --> 00:06:46.999 +you're more than welcome to jump in with your questions + +00:06:47.000 --> 00:06:50.119 +or put questions into the chat here. + +00:06:50.120 --> 00:06:52.879 +I'm not a big Python person, + +00:06:52.880 --> 00:06:57.599 +so I can't get into the really interesting questions + +00:06:57.600 --> 00:07:01.639 +that are probably more relevant, + +00:07:01.640 --> 00:07:05.799 +just because a lot of it's kind of over my head. + +00:07:05.800 --> 00:07:12.879 +Have you seen the miramo.io notebooks? + +00:07:12.880 --> 00:07:15.279 +These use standard Python? + +00:07:15.280 --> 00:07:18.119 +Oh, yes, I've seen, I haven't tried it myself, + +00:07:18.120 --> 00:07:19.359 +but I've seen it. + +00:07:19.360 --> 00:07:22.639 +It's very, I think it's a very interesting approach + +00:07:22.640 --> 00:07:26.279 +that probably will solve a lot of these things + +00:07:26.280 --> 00:07:28.839 +with interactive development in general, + +00:07:28.840 --> 00:07:31.839 +but because I think it's basically Python files + +00:07:31.840 --> 00:07:36.439 +and not the, not this other file format that you have + +00:07:36.440 --> 00:07:40.799 +for the regular notebook setup. + +00:07:40.800 --> 00:07:45.559 +So I have that in my list of things to try out in future, + +00:07:45.560 --> 00:08:00.719 +but it looks really, really cool. Awesome. + +00:08:00.720 --> 00:08:06.719 +Yeah, I'm hesitant to just ask you really boilerplate questions. + +00:08:06.720 --> 00:08:11.239 +You get an expert, a souffle chef, + +00:08:11.240 --> 00:08:16.599 +and you ask about making pasta or some other sort of thing. + +00:08:16.600 --> 00:08:20.559 +No, go ahead. Go ahead. I'm glad to ask any questions. + +00:08:20.560 --> 00:08:25.679 +So just generally about Emacs as a coding developer, + +00:08:25.680 --> 00:08:26.999 +what are the features + +00:08:27.000 --> 00:08:28.479 +that you tend to lean on more heavily? + +00:08:28.480 --> 00:08:34.319 +you know completion or you know what what have you + +00:08:34.320 --> 00:08:36.199 +maybe I could put it better + +00:08:36.200 --> 00:08:40.079 +as what have you spent more time configuring for Emacs + +00:08:40.080 --> 00:08:45.439 +to facilitate development? + +00:08:45.440 --> 00:08:49.639 +Yes initially it was basically taking away + +00:08:49.640 --> 00:08:51.319 +some of the UI features + +00:08:51.320 --> 00:08:56.599 +basically disabling it and and but fairly quickly + +00:08:56.600 --> 00:08:58.919 +for for both closure development + +00:08:58.920 --> 00:09:04.599 +where i was using cider which is like a really good uh good tool um + +00:09:04.600 --> 00:09:08.159 +and for python when i quickly found lp elp + +00:09:08.160 --> 00:09:10.599 +i'm not sure how to pronounce it + +00:09:10.600 --> 00:09:16.039 +but you you get so much uh good things from these tools + +00:09:16.040 --> 00:09:21.719 +so what i've done additionally is like theme + +00:09:21.720 --> 00:09:27.159 +and maybe having this environment + +00:09:27.160 --> 00:09:31.479 +that is without disturbance. + +00:09:31.480 --> 00:09:34.839 +So I really like the code to have my full attention. + +00:09:34.840 --> 00:09:41.239 +So I rarely have, maybe I have like a preview sometimes, + +00:09:41.240 --> 00:09:45.359 +but mostly it's the window or the buffer where I have my code + +00:09:45.360 --> 00:09:49.879 +and I've minimized the running REPL buffer. + +00:09:49.880 --> 00:09:53.439 +So sometimes it's, I'm hiding it, but it's still active. + +00:09:53.440 --> 00:09:57.679 +So basically that's how I configured, + +00:09:57.680 --> 00:10:00.279 +spent my configuration doing that. + +00:10:00.280 --> 00:10:04.799 +And also lately, trying out some LLM tools. + +00:10:04.800 --> 00:10:09.279 +So I think I have two packages + +00:10:09.280 --> 00:10:12.239 +that I'm using actively today. + +00:10:12.240 --> 00:10:15.799 +And my favorite is a tool called ECA, + +00:10:15.800 --> 00:10:20.199 +which is a LLM chat assistant, which is really good. + +00:10:20.200 --> 00:10:24.399 +The developer is also an Emacs enthusiast. + +00:10:24.400 --> 00:10:33.639 +So are you the type of person that tends to work with + +00:10:33.640 --> 00:10:37.039 +like a master builder, build your own Emacs? + +00:10:37.040 --> 00:10:40.799 +Are you using the system packages? + +00:10:40.800 --> 00:10:43.615 +What's your approach to just get Emacs + +00:10:43.616 --> 00:10:45.368 +up and off the ground for yourself? + +00:10:45.369 --> 00:10:52.519 +I'm not there yet with doing my own builds. + +00:10:52.520 --> 00:10:55.599 +Currently, I'm on macOS, + +00:10:55.600 --> 00:11:00.039 +so I'm installing Emacs through broom basically, homebrew. + +00:11:00.040 --> 00:11:04.919 +I've yet so much Emacs things to learn + +00:11:04.920 --> 00:11:07.739 +because I'm not even using org yet. + +00:11:07.740 --> 00:11:11.559 +I'm exploring the this editor. + +00:11:11.560 --> 00:11:14.799 +So I feel like I'm very much a beginner. + +00:11:14.800 --> 00:11:17.919 +I'm not using Emacs to its full potential yet. + +00:11:17.920 --> 00:11:23.279 +So I'm counting on that I will be more and more using Emacs + +00:11:23.280 --> 00:11:29.119 +for more and more different tasks basically. + +00:11:29.120 --> 00:11:32.559 +And I'm just seeing a comment. + +00:11:32.560 --> 00:11:35.799 +Ed Stallthroat says, thank you + +00:11:35.800 --> 00:11:40.839 +for publishing your configuration and offers a link. + +00:11:40.840 --> 00:11:41.879 +Oh, great. Great. + +00:11:41.880 --> 00:11:46.359 +Yes, those things that I showed in my talk, + +00:11:46.360 --> 00:11:49.319 +I haven't made any, I haven't packaged it yet, + +00:11:49.320 --> 00:11:51.199 +but everything is on my GitHub, + +00:11:51.200 --> 00:11:57.079 +and I've tried to separate each feature + +00:11:57.080 --> 00:11:59.639 +in separate LSP files. + +00:11:59.640 --> 00:12:04.319 +So it should be, I hope that it's fairly straightforward + +00:12:04.320 --> 00:12:08.959 +to understand how it's set up. Very good. + +00:12:08.960 --> 00:12:11.119 +Let me just scroll down, + +00:12:11.120 --> 00:12:12.999 +make sure I'm not missing questions here. + +00:12:13.000 --> 00:12:16.959 +Okay, I think those are the questions that we have. + +00:12:16.960 --> 00:12:20.879 +We can take a couple more minutes if you're open to that, + +00:12:20.880 --> 00:12:24.039 +just for people to consider. + +00:12:24.040 --> 00:12:26.119 +I know we're coming up on the lunch hour, + +00:12:26.120 --> 00:12:31.679 +so it may be that people are jogging off to get some food. + +00:12:31.680 --> 00:12:36.599 +Yeah, in Sweden, it's dinner time. + +00:12:36.600 --> 00:12:40.079 +It's like 6 p.m. soon. That fits. + +00:12:40.080 --> 00:12:46.439 +So are you involved with local Emacs meetups? + +00:12:46.440 --> 00:12:49.079 +I know that your part of the world + +00:12:49.080 --> 00:12:51.799 +has a really brisk community, + +00:12:51.800 --> 00:12:55.279 +you know, a lot of, just a lot going on. + +00:12:55.280 --> 00:12:58.799 +I'm always seeing in Sacha's Emacs News, + +00:12:58.800 --> 00:13:02.319 +all of the different meetups and so on. + +00:13:02.320 --> 00:13:03.519 +I'm curious if you're plugged + +00:13:03.520 --> 00:13:08.719 +into a local community there at all, No, I haven't. + +00:13:08.720 --> 00:13:10.759 +Not in any community. I haven't done that yet, + +00:13:10.760 --> 00:13:15.679 +but we are like friends that I've gotten to know + +00:13:15.680 --> 00:13:23.439 +through work and through like open source work that also use Emacs. + +00:13:23.440 --> 00:13:28.959 +We talk and share our conflicts + +00:13:28.960 --> 00:13:30.799 +basically on a regular basis, + +00:13:30.800 --> 00:13:35.999 +because we are, at least in the Python community, + +00:13:36.000 --> 00:13:37.399 +we're like a minority, + +00:13:37.400 --> 00:13:39.799 +like other editors are like the standards. + +00:13:39.800 --> 00:13:45.879 +And at work, I'm sharing what I'm doing, + +00:13:45.880 --> 00:13:48.679 +just like my talk here to my fellow co-workers + +00:13:48.680 --> 00:13:53.999 +that are not on Emacs, but I hope to get their interest up. + +00:13:54.000 --> 00:13:58.999 +So many of us Emacs users are Emacs evangelists. + +00:13:59.000 --> 00:14:06.201 +Yeah. It's the Venn diagram of Emacs user + +00:14:06.202 --> 00:14:08.868 +and Emacs evangelist is a circle, I think. + +00:14:08.869 --> 00:14:11.035 +Yeah, I think so too. + +00:14:11.036 --> 00:14:16.559 +Well, David, I super appreciate your talk + +00:14:16.560 --> 00:14:18.759 +and thank you so much also for... + +00:14:18.760 --> 00:14:24.639 +I'm sorry, I saw another question here. Let me cover that. + +00:14:24.640 --> 00:14:27.959 +Can you repeat the name of the LLM + +00:14:27.960 --> 00:14:30.319 +that you specifically mentioned there? + +00:14:30.320 --> 00:14:36.784 +Oh, it's a tool called ECA, E-C-A. + +00:14:36.785 --> 00:14:44.076 +It's basically a server and clients, + +00:14:44.077 --> 00:14:49.160 +and it's not only Emacs. It has support for other editors, + +00:14:49.161 --> 00:14:53.119 +but I think the primary support is for, + +00:14:53.120 --> 00:14:57.599 +at least the developer who does it is an Emacs user, + +00:14:57.600 --> 00:15:01.039 +and so it's like Emacs first, basically. + +00:15:01.040 --> 00:15:04.959 +And his name is Eric Dallo. + +00:15:04.960 --> 00:15:09.679 +He's a great developer in the Clojure community. + +00:15:09.680 --> 00:15:13.159 +He has done some LSP work in the Clojure world, too. + +00:15:13.160 --> 00:15:17.159 +What was the last name? What was Eric's last name? + +00:15:17.160 --> 00:15:23.919 +Eric Dallo, D-A-L-L-O. Yeah. + +00:15:23.920 --> 00:15:31.879 +So I think that's a great tool, but I also use another tool + +00:15:31.880 --> 00:15:38.919 +that for some reason I forgot to have this interactive way of, + +00:15:38.920 --> 00:15:43.599 +because I think they are developing that feature too, + +00:15:43.600 --> 00:15:46.439 +but I have another LLM that has support + +00:15:46.440 --> 00:15:50.599 +for requests and callbacks basically. + +00:15:50.600 --> 00:15:53.799 +So you can do something programmatically. + +00:15:53.800 --> 00:15:55.919 +So that's how I've solved my LLM thing + +00:15:55.920 --> 00:16:00.759 +where I select some Python variables + +00:16:00.760 --> 00:16:05.599 +and tell the LLM to populate it with some fake data + +00:16:05.600 --> 00:16:08.879 +so I can send that to the REPL. + +00:16:08.880 --> 00:16:11.479 +But for some reason, I forgot the name of it. + +00:16:11.480 --> 00:16:25.159 +I can look it up. Just give me one minute, sorry. + +00:16:25.160 --> 00:16:35.559 +oh yeah gptel gptel that's that's the name of the other tool + +00:16:35.560 --> 00:16:37.879 +which is uh also a good tool yeah + +00:16:37.880 --> 00:16:41.279 +but ECA is more like a more chat companion + +00:16:41.280 --> 00:16:46.679 +and this you can also you can tell it to write code and things like that + +00:16:46.680 --> 00:16:51.679 +but i mostly use it for reviews and research + +00:16:51.680 --> 00:16:54.599 +and like asking questions + +00:16:54.600 --> 00:17:00.279 +because i want to my I don't have a problem with typing code. + +00:17:00.280 --> 00:17:01.919 +I don't think that slows me down, + +00:17:01.920 --> 00:17:05.639 +but maybe getting some quick feedback + +00:17:05.640 --> 00:17:07.479 +on the actual work that I'm doing, + +00:17:07.480 --> 00:17:08.999 +that's what I'm using LLM for, + +00:17:09.000 --> 00:17:13.519 +on LLM for two, mostly today. That really hits for me. + +00:17:13.520 --> 00:17:15.199 +I don't mind typing either. + +00:17:15.200 --> 00:17:18.479 +I think somehow having things be so simple + +00:17:18.480 --> 00:17:20.879 +and in many cases just automated, + +00:17:20.880 --> 00:17:22.719 +Emacs just does the right thing. + +00:17:22.720 --> 00:17:26.519 +It makes me hungry to type. I want to type more. + +00:17:26.520 --> 00:17:28.559 +It feels like every keystroke does a little more. + +00:17:28.560 --> 00:17:33.519 +Speaking of evangelism, thank you. Thank you + +00:17:33.520 --> 00:17:35.599 +pop up for the for the question. + +00:17:35.600 --> 00:17:39.439 +I'm just going to peek one more time through + +00:17:39.440 --> 00:17:41.159 +and I don't see a backlog. + +00:17:41.160 --> 00:17:44.519 +There are a couple more comments here + +00:17:44.520 --> 00:17:49.319 +linking linking to the ECA Emacs and gptel. + +00:17:49.320 --> 00:17:52.239 +Comment also saying very cool setup. + +00:17:52.240 --> 00:17:56.959 +So I suppose I'll I'll hand it over to you + +00:17:56.960 --> 00:17:59.319 +if you have kind of final thoughts or. + +00:17:59.320 --> 00:18:02.079 +additional wisdoms you want to share + +00:18:02.080 --> 00:18:05.399 +I really appreciate your taking the time to prepare this presentation + +00:18:05.400 --> 00:18:11.079 +especially to do the live Q&A with us. Thank you + +00:18:11.080 --> 00:18:13.919 +and I haven't anything more than that I will + +00:18:13.920 --> 00:18:19.479 +of course I will continue like have evolving my setup + +00:18:19.480 --> 00:18:21.359 +because there's like new tools + +00:18:21.360 --> 00:18:24.759 +and maybe new ideas also coming up + +00:18:24.760 --> 00:18:28.719 +and my What I'm aiming for in Python development + +00:18:28.720 --> 00:18:30.479 +is the great developer experience + +00:18:30.480 --> 00:18:34.519 +of what's called Lisp programming, basically. + +00:18:34.520 --> 00:18:41.699 +So that's what I'm aiming at for Python 2. + +00:18:41.700 --> 00:18:44.359 +Thank you. Thank you so much. diff --git a/2025/captions/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--answers.vtt b/2025/captions/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--answers.vtt new file mode 100644 index 00000000..b9dae5b5 --- /dev/null +++ b/2025/captions/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--answers.vtt @@ -0,0 +1,1081 @@ +WEBVTT + +00:00:00.000 --> 00:00:01.479 +The first question, + +00:00:01.480 --> 00:00:03.599 +and I'm reading from the etherpad here, + +00:00:03.600 --> 00:00:05.519 +is there a scope for integrating + +00:00:05.520 --> 00:00:07.839 +the C library to Emacs itself + +00:00:07.840 --> 00:00:13.159 +with MuPDF becoming an optional dependency? + +00:00:13.160 --> 00:00:18.719 +Right, so integrating the C library into Emacs itself + +00:00:18.720 --> 00:00:24.359 +is like having MuPDF inside Emacs source tree. + +00:00:24.360 --> 00:00:27.999 +I don't think Emacs devs would be inclined to do that, + +00:00:28.000 --> 00:00:30.079 +and I don't think we really need it. + +00:00:30.080 --> 00:00:33.039 +Um, I think as it is, uh, Emacs + +00:00:33.040 --> 00:00:36.439 +with doc view needs new tool, which is something you need + +00:00:36.440 --> 00:00:38.919 +to install from new PDF anyways. + +00:00:38.920 --> 00:00:42.599 +So, um, I think it is almost expected + +00:00:42.600 --> 00:00:46.279 +that you install new PDF from system package manager. + +00:00:46.280 --> 00:00:49.119 +Um, and I think that as it is, is better + +00:00:49.120 --> 00:00:50.999 +because we don't really need to have + +00:00:51.000 --> 00:00:53.439 +a whole PDF engine inside Emacs. + +00:00:53.440 --> 00:00:59.879 +Um, Next question also from the pad, + +00:00:59.880 --> 00:01:01.759 +the dynamic module some great, + +00:01:01.760 --> 00:01:06.639 +and it's amazing that they've been there since 2017. + +00:01:06.640 --> 00:01:09.839 +Why do you think they've been slowly + +00:01:09.840 --> 00:01:11.559 +so slow to get adopted? + +00:01:11.560 --> 00:01:14.279 +Is there a prior art with them? Right? + +00:01:14.280 --> 00:01:16.359 +That's a good question. + +00:01:16.360 --> 00:01:22.119 +Actually, I think 1 of the reasons is that. + +00:01:22.120 --> 00:01:24.919 +Most of the time, I think people love Emacs + +00:01:24.920 --> 00:01:27.519 +because they can do so much with Elisp. + +00:01:27.520 --> 00:01:28.919 +I think certainly there is a bias + +00:01:28.920 --> 00:01:31.319 +towards trying to do things with Elisp. + +00:01:31.320 --> 00:01:35.039 +I think there's only a sort of specific class of problems + +00:01:35.040 --> 00:01:36.879 +that you can solve with dynamic modules, + +00:01:36.880 --> 00:01:40.879 +such as this, where you want to use a native library + +00:01:40.880 --> 00:01:44.239 +to do something in a faster, better way. + +00:01:44.240 --> 00:01:48.959 +I use that quite a lot. + +00:01:48.960 --> 00:01:53.319 +There's of course libvterm, which uses a dynamic module + +00:01:53.320 --> 00:01:55.119 +and it does it really well. + +00:01:55.120 --> 00:02:00.439 +And I think there's another one, a plotting library + +00:02:00.440 --> 00:02:05.879 +or package in Emacs that was using something from Python. + +00:02:05.880 --> 00:02:07.879 +So, dynamic modules are good, + +00:02:07.880 --> 00:02:10.039 +but I think they don't really come + +00:02:10.040 --> 00:02:13.974 +to the surface level packages, your day-to-day packages, + +00:02:13.975 --> 00:02:17.359 +because most of the day-to-day packages that we use in Emacs + +00:02:17.360 --> 00:02:20.879 +can be done with Elisp. So, unless you really need + +00:02:20.880 --> 00:02:23.199 +something system-level efficient, + +00:02:23.200 --> 00:02:29.519 +Most of the time, you don't want to write C or C++ or something. + +00:02:29.520 --> 00:02:34.919 +But there is actually a really nice Rust crate for native modules, + +00:02:34.920 --> 00:02:37.239 +and there's a really nice Haskell package. + +00:02:37.240 --> 00:02:39.879 +So there's actually really good support + +00:02:39.880 --> 00:02:41.279 +for multiple languages. + +00:02:41.280 --> 00:02:45.799 +So it's there, it's just not used as much. Yeah. + +00:02:45.800 --> 00:02:47.039 +So what you're saying is + +00:02:47.040 --> 00:02:51.279 +if Elisp weren't so simple to learn and easy to use + +00:02:51.280 --> 00:02:52.879 +and so fully featured, + +00:02:52.880 --> 00:02:54.959 +we'd get a lot more mileage + +00:02:54.960 --> 00:02:57.799 +out of this super cool dynamic module feature. + +00:02:57.800 --> 00:03:02.159 +Yeah. Cool I'll take I'll bring in the next question. + +00:03:02.160 --> 00:03:07.399 +How how? How difficult is our PDF tools to install? + +00:03:07.400 --> 00:03:10.439 +The questioner is installing it + +00:03:10.440 --> 00:03:12.519 +using the built-in package manager + +00:03:12.520 --> 00:03:16.679 +looking at the Emacs reader installation instructions + +00:03:16.680 --> 00:03:18.479 +It doesn't necessarily cover + +00:03:18.480 --> 00:03:20.399 +how how to install that easily + +00:03:20.400 --> 00:03:25.679 +person is not using use package or straight and Okay. + +00:03:25.680 --> 00:03:27.959 +Oh, and they say that you didn't + +00:03:27.960 --> 00:03:32.439 +catch much of this in the presentation. + +00:03:32.440 --> 00:03:35.079 +Okay, so you want me to skip that or should I answer? + +00:03:35.080 --> 00:03:38.159 +It's your choice. If you would like to say more. + +00:03:38.160 --> 00:03:40.519 +Yeah, I think just as a thing, + +00:03:40.520 --> 00:03:43.319 +the reason I said PDF tools is difficult + +00:03:43.320 --> 00:03:45.839 +is PDF tools has a huge list of dependencies. + +00:03:45.840 --> 00:03:47.639 +The only thing Emacs Vita depends + +00:03:47.640 --> 00:03:50.599 +on is new PDF, nothing else. There's a single dependency. + +00:03:50.600 --> 00:03:54.479 +PDF tools depends on a lot of things + +00:03:54.480 --> 00:03:57.759 +and they have their own server, + +00:03:57.760 --> 00:04:00.039 +which is packaged as a system package, + +00:04:00.040 --> 00:04:02.359 +which you don't really find everywhere. + +00:04:02.360 --> 00:04:05.039 +And there's like systems, the new Linux systems + +00:04:05.040 --> 00:04:07.359 +where the package is very difficult to build + +00:04:07.360 --> 00:04:10.079 +because of so many dependencies. + +00:04:10.080 --> 00:04:13.159 +So my goal was to sort of reduce + +00:04:13.160 --> 00:04:14.839 +the number of dependencies. + +00:04:14.840 --> 00:04:19.559 +And then right now it's very, it's sort of a key + +00:04:19.560 --> 00:04:21.119 +to install Emacs Reader. + +00:04:21.120 --> 00:04:23.319 +Once we go to GNU Elpa, it's just + +00:04:23.320 --> 00:04:25.999 +going to be Emacs package install, just that. + +00:04:26.000 --> 00:04:27.919 +Right now you have to do package VC + +00:04:27.920 --> 00:04:32.359 +a bit. Boy, we get spoiled as + +00:04:32.360 --> 00:04:35.359 +Emacs users. Everything just gets so easy + +00:04:35.360 --> 00:04:37.959 +for us. It's like an IDE for our + +00:04:37.960 --> 00:04:44.839 +whole machine. What tools did you use to measure the + +00:04:44.840 --> 00:04:48.879 +memory usage between the three packages? + +00:04:48.880 --> 00:04:50.119 +Yeah, that's a good question. + +00:04:50.120 --> 00:04:54.799 +So during my development, I used mostly for debugging + +00:04:54.800 --> 00:05:00.119 +purposes Valgrind. So Valgrind is a a set of suite + +00:05:00.120 --> 00:05:01.559 +of debugging tools. + +00:05:01.560 --> 00:05:03.799 +And one of the tools that it has is Massive. + +00:05:03.800 --> 00:05:08.919 +It's a heap analyzer, heap profiler. + +00:05:08.920 --> 00:05:10.839 +So Valgrind plus Massive, + +00:05:10.840 --> 00:05:14.119 +and then there's a KDE package + +00:05:14.120 --> 00:05:15.759 +called Massive Visualizer. + +00:05:15.760 --> 00:05:19.839 +So I first get the Massive output using Valgrind, + +00:05:19.840 --> 00:05:23.159 +and then put that output into Massive Visualizer. + +00:05:23.160 --> 00:05:24.519 +That gives me the grasp. + +00:05:24.520 --> 00:05:28.599 +Are there Emacs integrations for those components at all? + +00:05:28.600 --> 00:05:30.279 +Does Valgrind have them? + +00:05:30.280 --> 00:05:32.399 +I don't think so. I don't think so. + +00:05:32.400 --> 00:05:37.319 +There's, yeah, there's I think a few packages + +00:05:37.320 --> 00:05:38.879 +which do something with Massive, + +00:05:38.880 --> 00:05:42.159 +but I don't think like they're maintained. + +00:05:42.160 --> 00:05:47.759 +Yeah. Gotcha. Cool. Awesome opportunity + +00:05:47.760 --> 00:05:49.399 +there for someone spunky. + +00:05:49.400 --> 00:05:55.399 +How is conversion between Elisp and foreign language types? + +00:05:55.400 --> 00:05:59.039 +For example, when interfacing with the C++ library + +00:05:59.040 --> 00:06:03.439 +that makes heavy use of the C++ object system and templates. + +00:06:03.440 --> 00:06:05.879 +Yeah, that's a good question. + +00:06:05.880 --> 00:06:10.519 +So the go-to answer is the blog post that I wrote, + +00:06:10.520 --> 00:06:12.199 +which is an extensive explanation + +00:06:12.200 --> 00:06:14.679 +on how the internals of dynamic modules work. + +00:06:14.680 --> 00:06:21.119 +The short answer is that basically what happens + +00:06:21.120 --> 00:06:24.639 +is anything that is compatible with C-ABI + +00:06:24.640 --> 00:06:27.759 +When you compile that language code, + +00:06:27.760 --> 00:06:33.559 +so when I compile C++ code, I would have a particular API. + +00:06:33.560 --> 00:06:35.799 +So we have a dynamic module API, + +00:06:35.800 --> 00:06:39.119 +which is the emacs-module.h, the file that I showed. + +00:06:39.120 --> 00:06:45.799 +You have to put that into your C++ package program + +00:06:45.800 --> 00:06:48.679 +and then link it to... + +00:06:48.680 --> 00:06:51.119 +So emacs-module.h is basically going to... + +00:06:51.120 --> 00:06:56.799 +like use things in your Emacs installation + +00:06:56.800 --> 00:07:04.359 +to interact with this C++ language. So it's basically FFI. + +00:07:04.360 --> 00:07:10.959 +And what this gives you is that you can have things in C++. + +00:07:10.960 --> 00:07:13.119 +So let's say you want to do multi-threading + +00:07:13.120 --> 00:07:15.279 +the way I did system level multi-threading. + +00:07:15.280 --> 00:07:20.519 +You can have C++ be responsible for the multi-threading. + +00:07:20.520 --> 00:07:22.999 +but you want the output + +00:07:23.000 --> 00:07:24.879 +of the multithreading to go into Emacs. + +00:07:24.880 --> 00:07:29.039 +So then you write like a piece of C++ function, + +00:07:29.040 --> 00:07:31.879 +which is going to be a dynamic module function. + +00:07:31.880 --> 00:07:32.919 +A dynamic module function + +00:07:32.920 --> 00:07:34.959 +is written in the language that you target, + +00:07:34.960 --> 00:07:37.359 +that is C++ or C or Rust. + +00:07:37.360 --> 00:07:40.759 +And then that is going to be compiled + +00:07:40.760 --> 00:07:43.279 +into a share library like SO. + +00:07:43.280 --> 00:07:46.439 +shared object, and then that shared object + +00:07:46.440 --> 00:07:50.639 +is going to be loaded into Emacs system using require. + +00:07:50.640 --> 00:07:53.119 +So when I do require render core + +00:07:53.120 --> 00:07:54.799 +in one of the slides that I showed, + +00:07:54.800 --> 00:07:58.439 +I'm basically loading that shared object, + +00:07:58.440 --> 00:08:00.516 +and that shared object already has + +00:08:00.517 --> 00:08:03.891 +the compiled dynamic module functions and so on. + +00:08:03.892 --> 00:08:06.308 +But my blog will explain that better. + +00:08:06.309 --> 00:08:10.016 +Gotcha. I thought that was pretty clear. + +00:08:10.017 --> 00:08:12.016 +I'm looking forward to seeing that blog post + +00:08:12.017 --> 00:08:13.641 +and understanding what I glossed over + +00:08:13.642 --> 00:08:15.860 +trying to understand from that explanation. + +00:08:15.861 --> 00:08:18.420 +That was great. + +00:08:18.421 --> 00:08:22.879 +Can one look at PDF metadata with Emacs Reader? + +00:08:22.880 --> 00:08:26.199 +Can you do annotations? Does it understand forms? + +00:08:26.200 --> 00:08:29.959 +Can it handle encrypted PDFs? + +00:08:29.960 --> 00:08:33.159 +In other words, I think reading between the lines, + +00:08:33.160 --> 00:08:34.279 +wow, this is awesome. + +00:08:34.280 --> 00:08:39.199 +Is there anything I can't do? You're right. + +00:08:39.200 --> 00:08:44.119 +So Emacs Reader will be able to do all of those things. + +00:08:44.120 --> 00:08:48.359 +It can do annotations. It will be able to do forms. + +00:08:48.360 --> 00:08:52.279 +And we have an issue open for interpret PDFs. + +00:08:52.280 --> 00:08:54.839 +The thing is, right now we are struggling with + +00:08:54.840 --> 00:08:58.759 +making Emacs Reader be very efficient + +00:08:58.760 --> 00:09:02.679 +in terms of highlighting and text selection + +00:09:02.680 --> 00:09:05.519 +because of the challenges that I mentioned in the slides, + +00:09:05.520 --> 00:09:07.959 +so it will be able to do all that. + +00:09:07.960 --> 00:09:10.959 +Once we tackle the basic features + +00:09:10.960 --> 00:09:18.599 +down in an efficient manner. Gotcha. Um. + +00:09:18.600 --> 00:09:24.119 +Comment or questioner says, + +00:09:24.120 --> 00:09:28.799 +I installed Emacs Reader already as promised. Great job. + +00:09:28.800 --> 00:09:34.879 +How can I associate ODT files to open with Emacs Reader? + +00:09:34.880 --> 00:09:38.479 +You don't really need to do anything. + +00:09:38.480 --> 00:09:40.599 +You should be just able to do find file, + +00:09:40.600 --> 00:09:42.959 +Control X, Control F, and open. + +00:09:42.960 --> 00:09:45.319 +And it should open with Emacs Reader + +00:09:45.320 --> 00:09:47.759 +because we have an auto mode list, + +00:09:47.760 --> 00:09:51.679 +a list that takes an ODT file + +00:09:51.680 --> 00:09:53.199 +and opens it with reader mode. + +00:09:53.200 --> 00:09:55.639 +So you should just be able to do find file. + +00:09:55.640 --> 00:09:56.879 +If you're not able to do that, + +00:09:56.880 --> 00:09:58.199 +you should open Embug report. + +00:09:58.200 --> 00:10:00.759 +And I'll just mention + +00:10:00.760 --> 00:10:03.239 +we've got about 10 minutes left of our live Q&A, + +00:10:03.240 --> 00:10:06.079 +but if you're watching the stream, + +00:10:06.080 --> 00:10:08.439 +it's possible that we'll just keep going. + +00:10:08.440 --> 00:10:10.799 +The questions just keep coming, which I just love that. + +00:10:10.800 --> 00:10:14.519 +So feel free to join the BBB link + +00:10:14.520 --> 00:10:17.439 +that should have shown in the IRC chat. + +00:10:17.440 --> 00:10:21.559 +Jump in and we can take questions + +00:10:21.560 --> 00:10:25.999 +as long as Divya has steam for that. + +00:10:26.000 --> 00:10:30.439 +If a PDF file is open in Emacs Reader + +00:10:30.440 --> 00:10:33.199 +and I reintegrate the PDF with some changes, + +00:10:33.200 --> 00:10:36.519 +does the Emacs Reader refresh the PDF on its own + +00:10:36.520 --> 00:10:38.919 +or do I reload it? + +00:10:38.920 --> 00:10:41.319 +Right, that's also a really good question. + +00:10:41.320 --> 00:10:44.599 +So one answer is that it depends on + +00:10:44.600 --> 00:10:46.079 +how you change the PDF. + +00:10:46.080 --> 00:10:50.839 +So for example, if I just replaced the PDF + +00:10:50.840 --> 00:10:52.639 +with something else of the same name, + +00:10:52.640 --> 00:10:55.799 +Emacs will update it immediately. + +00:10:55.800 --> 00:10:57.919 +If you have auto revert mode on, + +00:10:57.920 --> 00:10:59.119 +it'll just revert the buffer + +00:10:59.120 --> 00:11:01.879 +and it'll reload the PDF really nicely. + +00:11:01.880 --> 00:11:05.439 +But if you're doing it something like LaTeX, + +00:11:05.440 --> 00:11:07.399 +where you're writing something in LaTeX + +00:11:07.400 --> 00:11:10.519 +and LaTeX is continuously producing the PDF, + +00:11:10.520 --> 00:11:13.279 +that needs SyncTeX integration. + +00:11:13.280 --> 00:11:16.159 +Because LaTeX, while it's producing the PDF, + +00:11:16.160 --> 00:11:19.159 +it does a lot of funky things. + +00:11:19.160 --> 00:11:24.519 +It does not provide a sort of renderable PDF all the time. + +00:11:24.520 --> 00:11:28.679 +So Emacs will sort of crash trying to + +00:11:28.680 --> 00:11:31.679 +basically render a PDF that is not ready yet. + +00:11:31.680 --> 00:11:34.799 +So we need SyncTex to sync + +00:11:34.800 --> 00:11:37.279 +with LaTeX to do that really nice. + +00:11:37.280 --> 00:11:39.559 +Okay, so we have to do some care + +00:11:39.560 --> 00:11:41.319 +and feeding of the exact timing + +00:11:41.320 --> 00:11:46.879 +if we have more of a continuous behind the curtains, so to speak. + +00:11:46.880 --> 00:11:50.959 +That makes a lot of sense to me. What are the challenges + +00:11:50.960 --> 00:11:55.719 +with integrating synctex and AucTex? + +00:11:55.720 --> 00:11:58.919 +This would be great to see as PDF handles as well, + +00:11:58.920 --> 00:12:02.319 +or PDF tools handles as well. Yeah, yeah. + +00:12:02.320 --> 00:12:04.399 +So, we have Synctex and Auctex planned. + +00:12:04.400 --> 00:12:06.839 +I don't really see any major obstacles + +00:12:06.840 --> 00:12:08.679 +for doing that, to be very honest. + +00:12:08.680 --> 00:12:11.519 +I think we can do it in a much simpler way + +00:12:11.520 --> 00:12:12.479 +than PDF Tools does. + +00:12:12.480 --> 00:12:17.479 +The only reason we haven't done it yet is because, again, + +00:12:17.480 --> 00:12:20.479 +we have more important highlighting + +00:12:20.480 --> 00:12:24.399 +and text selection and those features planned, + +00:12:24.400 --> 00:12:32.919 +but it's anticipated. Yeah. All right. This next question + +00:12:32.920 --> 00:12:36.439 +I love your presentation. Will you be giving another talk + +00:12:36.440 --> 00:12:39.399 +on the architecture you went over a deep dive on? + +00:12:39.400 --> 00:12:44.919 +That would be awesome. I'm not sure if an EmacsConf talk + +00:12:44.920 --> 00:12:48.479 +will be appropriate for this, but I do stream bi-weekly. + +00:12:48.480 --> 00:12:52.599 +So you're always welcome to come on my stream and ask, + +00:12:52.600 --> 00:12:55.359 +and I would be very happy to go deep into this. + +00:12:55.360 --> 00:12:58.119 +I'm looking forward to catching that myself. + +00:12:58.120 --> 00:13:02.639 +Thank you for the shout. Is there search functionality, + +00:13:02.640 --> 00:13:05.319 +something like isearch and occur? + +00:13:05.320 --> 00:13:07.599 +Yeah, we don't really have it, + +00:13:07.600 --> 00:13:09.599 +but this is the most immediate feature + +00:13:09.600 --> 00:13:10.959 +after we have text selection. + +00:13:10.960 --> 00:13:12.399 +So once we have text selection, + +00:13:12.400 --> 00:13:14.359 +once we're able to select the text, + +00:13:14.360 --> 00:13:17.679 +then we can have iSearch so that it can highlight the text. + +00:13:17.680 --> 00:13:26.679 +Yeah. Um, all right. And then, um, there's, I'm just gonna, + +00:13:26.680 --> 00:13:28.799 +I'll read out this question + +00:13:28.800 --> 00:13:30.639 +and then I have to do a little bookkeeping on the pad. + +00:13:30.640 --> 00:13:35.639 +Um, does the dynamic module, uh, prevent customization + +00:13:35.640 --> 00:13:39.999 +that Emacs usually provides advice, hooks, et cetera, + +00:13:40.000 --> 00:13:44.359 +or does everything just kind of + +00:13:44.360 --> 00:13:46.559 +No, if you have a dynamic module, + +00:13:46.560 --> 00:13:49.279 +it doesn't limit you into doing anything. + +00:13:49.280 --> 00:13:52.839 +You can do everything on the Elisp side that you want, + +00:13:52.840 --> 00:13:55.719 +and you only take care of certain things + +00:13:55.720 --> 00:13:56.879 +on the dynamic module side. + +00:13:56.880 --> 00:13:57.999 +If you're asking whether + +00:13:58.000 --> 00:14:01.879 +you can do advices, hooks, and all of that + +00:14:01.880 --> 00:14:03.879 +on the dynamic module itself, + +00:14:03.880 --> 00:14:05.679 +from the dynamic module itself, + +00:14:05.680 --> 00:14:09.719 +that's a bit tricky because something like + +00:14:09.720 --> 00:14:13.999 +Calling a macro or doing macros and dynamic modules + +00:14:14.000 --> 00:14:18.119 +is not really that nice You have to pretty much manually + +00:14:18.120 --> 00:14:21.359 +expand the macro yourself in the dynamic module + +00:14:21.360 --> 00:14:23.839 +so if you want to do it from the dynamic module, + +00:14:23.840 --> 00:14:25.959 +there's not much support right now, + +00:14:25.960 --> 00:14:29.479 +but you can do everything on the elisp side + +00:14:29.480 --> 00:14:33.399 +without touching the dynamic module. Got it + +00:14:33.400 --> 00:14:38.279 +So those are the questions that I see. + +00:14:38.280 --> 00:14:39.999 +I'm just going to take a quick peek, + +00:14:40.000 --> 00:14:42.639 +but let me invite you if you want to. + +00:14:42.640 --> 00:14:45.999 +We've got just about 5 minutes left + +00:14:46.000 --> 00:14:48.239 +and I will get carried away sometimes + +00:14:48.240 --> 00:14:51.279 +and fail to make this invitation before we cut away live, + +00:14:51.280 --> 00:14:54.479 +especially if we do keep going a bit. + +00:14:54.480 --> 00:14:57.799 +that you have live onto the stream. + +00:14:57.800 --> 00:15:02.599 +Of course, you don't have to do that. + +00:15:02.600 --> 00:15:05.799 +You said a lot in your presentation. + +00:15:05.800 --> 00:15:12.199 +No, I think mostly that's fine. + +00:15:12.200 --> 00:15:13.679 +I'm just really happy + +00:15:13.680 --> 00:15:17.079 +that people are interested in the package, + +00:15:17.080 --> 00:15:19.879 +and I would be glad to have contributors + +00:15:19.880 --> 00:15:25.199 +and viewers or anything. That would be nice. Awesome. + +00:15:25.200 --> 00:15:28.879 +So here comes one more question, + +00:15:28.880 --> 00:15:31.959 +or actually a couple more questions coming in. + +00:15:31.960 --> 00:15:34.239 +Following up on dynamic modules, + +00:15:34.240 --> 00:15:38.479 +do you usually create an Elisp shim + +00:15:38.480 --> 00:15:40.399 +from foreign function interface + +00:15:40.400 --> 00:15:41.559 +and then use them with Elisp? + +00:15:41.560 --> 00:15:46.159 +Yeah, so basically how you do is you write, + +00:15:46.160 --> 00:15:49.639 +let's say I have a C function + +00:15:49.640 --> 00:15:51.399 +that I've written in the dynamic module. + +00:15:51.400 --> 00:15:52.879 +It's a dynamic module function. + +00:15:52.880 --> 00:15:54.639 +And then when I'm trying to call + +00:15:54.640 --> 00:15:56.039 +the dynamic module function, + +00:15:56.040 --> 00:15:58.999 +most of the time, I don't call it like that. + +00:15:59.000 --> 00:16:01.679 +I wrap it inside a proper Elisp function + +00:16:01.680 --> 00:16:03.559 +and then call that Elisp function. + +00:16:03.560 --> 00:16:08.279 +So that's how I think it's better to do that because + +00:16:08.280 --> 00:16:12.559 +You can take care of certain cases + +00:16:12.560 --> 00:16:15.199 +on when you want the dynamic module function to be called. + +00:16:15.200 --> 00:16:17.199 +Maybe sometimes you don't want + +00:16:17.200 --> 00:16:18.839 +the dynamic module function + +00:16:18.840 --> 00:16:19.879 +to be called immediately. + +00:16:19.880 --> 00:16:22.159 +So it's better to wrap it. + +00:16:22.160 --> 00:16:26.599 +Yeah. Okay. So timing issues. Yeah. + +00:16:26.600 --> 00:16:31.679 +For the purposes of managing timing issues, + +00:16:31.680 --> 00:16:34.319 +that elisp shim is preferred. + +00:16:34.320 --> 00:16:38.959 +Yeah. Makes sense. Um. + +00:16:38.960 --> 00:16:44.639 +Uh, so question question here + +00:16:44.640 --> 00:16:47.439 +is searching for the person is searching for a roadmap. + +00:16:47.440 --> 00:16:49.279 +Is that already available as a feature? + +00:16:49.280 --> 00:16:52.239 +Searching is on the roadmap. + +00:16:52.240 --> 00:16:56.559 +It is not available yet as a feature, but it's on priority. + +00:16:56.560 --> 00:16:59.839 +I think you may have may have touched on that. + +00:16:59.840 --> 00:17:06.559 +Sorry. All right. Those are the questions that I see. + +00:17:06.560 --> 00:17:08.279 +We've got just a couple of minutes. + +00:17:08.280 --> 00:17:10.399 +I'm not sure if you have more you wanted to say, + +00:17:10.400 --> 00:17:13.719 +but I have to say how much I appreciate your talk, + +00:17:13.720 --> 00:17:16.119 +especially you jumping in live with us + +00:17:16.120 --> 00:17:19.079 +and just taking everything on the fly. + +00:17:19.080 --> 00:17:24.559 +I think this is a big part of what adds the energy, + +00:17:24.560 --> 00:17:28.039 +you in particular, just really dynamic speaker. + +00:17:28.040 --> 00:17:31.479 +Thank you. Thank you. Thank you. I enjoyed it as well. + +00:17:31.480 --> 00:17:37.159 +A person is, and I think this may have been touched on already, + +00:17:37.160 --> 00:17:39.439 +but let's maybe get into it more specifically. + +00:17:39.440 --> 00:17:42.159 +We've said that search is kind of + +00:17:42.160 --> 00:17:44.719 +a next up type of feature as things, + +00:17:44.720 --> 00:17:48.159 +as the current iteration stabilizes. + +00:17:48.160 --> 00:17:52.239 +Question was, you know, occur like, how would you? + +00:17:52.240 --> 00:17:56.159 +Totally. There will be occur searches. + +00:17:56.160 --> 00:17:59.639 +There will be isearch enabled, isearch. + +00:17:59.640 --> 00:18:02.879 +used to with PDF tools, + +00:18:02.880 --> 00:18:06.439 +we would be like parity with the features, + +00:18:06.440 --> 00:18:08.719 +all the features that you're used to with PDF tools. + +00:18:08.720 --> 00:18:12.599 +Um, so, uh, certainly occur anything + +00:18:12.600 --> 00:18:15.679 +that is important in Emacs with text + +00:18:15.680 --> 00:18:17.359 +and that can be done with PDFs. + +00:18:17.360 --> 00:18:19.839 +We really want to do that because, um, + +00:18:19.840 --> 00:18:22.679 +I want the package to be as knitted + +00:18:22.680 --> 00:18:24.959 +into Emacs ecosystem as possible. + +00:18:24.960 --> 00:18:28.159 +Okay. We'll see if we can get in this last question here. + +00:18:28.160 --> 00:18:30.319 +Do you have a timing expectation for ELPA? + +00:18:30.320 --> 00:18:33.199 +Uh, yeah, next major release essentially. + +00:18:33.200 --> 00:18:35.279 +So next major release is most likely + +00:18:35.280 --> 00:18:37.319 +going to be within a month or two. + +00:18:37.320 --> 00:18:39.639 +So once we have the next major release, we're going to be. + +00:18:39.640 --> 00:18:43.479 +Uh, timing couldn't be more perfect. + +00:18:43.480 --> 00:18:45.519 +Maybe this is a good, good point to break. + +00:18:45.520 --> 00:18:47.759 +We'll be cutting away to the next talk + +00:18:47.760 --> 00:18:48.879 +in just a couple of minutes. + +00:18:48.880 --> 00:18:51.479 +So let me say one more time how much + +00:18:51.480 --> 00:18:52.959 +on behalf of all the attendees + +00:18:52.960 --> 00:18:54.959 +and all the volunteers and all everybody, + +00:18:54.960 --> 00:18:57.079 +um, how much we appreciate your talks + +00:18:57.080 --> 00:19:01.299 +and, uh, your awesome contribution to the Emacs world. + +00:19:01.300 --> 00:19:02.766 +Thanks, Corwin. diff --git a/2025/captions/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--answers.vtt b/2025/captions/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--answers.vtt new file mode 100644 index 00000000..c41a24db --- /dev/null +++ b/2025/captions/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--answers.vtt @@ -0,0 +1,1015 @@ +WEBVTT + +00:00:00.000 --> 00:00:01.381 +So the first question, + +00:00:01.382 --> 00:00:05.461 +have you tried ivy-bibtex or bibtex-completion earlier + +00:00:05.462 --> 00:00:06.524 +and how it compares to eBib? + +00:00:06.525 --> 00:00:09.941 +Well, I would say that I use both. + +00:00:09.942 --> 00:00:14.901 +I don't think there is very much a comparison + +00:00:14.902 --> 00:00:18.661 +because for me, they're achieving different goals. + +00:00:18.662 --> 00:00:24.501 +When I want to just very quickly find the paper + +00:00:24.502 --> 00:00:28.621 +in the entirety of the literature, + +00:00:28.622 --> 00:00:34.701 +I can just go here and open ivy-bibtex and see it. + +00:00:34.702 --> 00:00:36.661 +Bibtex now needs to parse my bib files, + +00:00:36.662 --> 00:00:38.781 +so it may take a second. + +00:00:38.782 --> 00:00:41.581 +Yeah, so if I want to just search, I'll do this. + +00:00:41.582 --> 00:00:46.461 +If I want a bigger view, then I can open eBib, + +00:00:46.462 --> 00:00:49.661 +but I don't use eBib so much as a tool + +00:00:49.662 --> 00:00:54.381 +to find just one literature. I use it for other purposes. + +00:00:54.382 --> 00:00:58.501 +So I think they're not really mutually exclusive, + +00:00:58.502 --> 00:01:00.941 +like you can use both. + +00:01:00.942 --> 00:01:04.641 +And they don't think that the features that one provides + +00:01:04.642 --> 00:01:08.821 +are something that the other also provides. + +00:01:08.822 --> 00:01:13.381 +They're different kind of goals for me. + +00:01:13.382 --> 00:01:15.341 +Also, for the answers, is it OK + +00:01:15.342 --> 00:01:20.741 +if I don't write anything down and I can just write them + +00:01:20.742 --> 00:01:23.741 +After, when I have time, and I'll just talk. + +00:01:23.742 --> 00:01:27.861 +Yeah, that's OK. We'll transcribe all the answers later. + +00:01:27.862 --> 00:01:32.541 +So you can just go ahead and talk. + +00:01:32.542 --> 00:01:34.301 +And do you find showing abstract + +00:01:34.302 --> 00:01:36.661 +on your navigation panel helpful? + +00:01:36.662 --> 00:01:38.461 +I always delete the abstract info, + +00:01:38.462 --> 00:01:40.421 +and my bib files make things more concise. + +00:01:40.422 --> 00:01:44.981 +So for me, I think it is helpful to see the abstract. + +00:01:44.982 --> 00:01:50.861 +I think that if you're in a regular screen, + +00:01:50.862 --> 00:01:52.941 +you have the space to have that. + +00:01:52.942 --> 00:01:57.421 +And yeah, for example, if I go again here, + +00:01:57.422 --> 00:02:00.021 +it's kind of indeed a bit more, + +00:02:00.022 --> 00:02:01.741 +a bit longer than it can be. + +00:02:01.742 --> 00:02:09.341 +And also you find a bigger abstract somewhere. + +00:02:09.342 --> 00:02:10.421 +It may be more space, + +00:02:10.422 --> 00:02:16.381 +but like, for example, this, yeah, this is a big abstract. + +00:02:16.382 --> 00:02:19.181 +And for example, yeah, this takes a bit more space, + +00:02:19.182 --> 00:02:23.021 +but I find it easy because the only case + +00:02:23.022 --> 00:02:25.901 +where I'm actually looking at this panel + +00:02:25.902 --> 00:02:30.581 +and trying to see things is when I'm going to be either, + +00:02:30.582 --> 00:02:33.861 +is when I'm going to be trying to find something + +00:02:33.862 --> 00:02:37.141 +that I don't remember the title to search immediately. + +00:02:37.142 --> 00:02:38.581 +And if you don't remember the title + +00:02:38.582 --> 00:02:39.781 +and you're trying to search, + +00:02:39.782 --> 00:02:43.261 +the abstract will be a way + +00:02:43.262 --> 00:02:49.221 +that helps you search better maybe. + +00:02:49.222 --> 00:02:51.701 +and also the other thing they use + +00:02:51.702 --> 00:02:54.981 +is also the small little descriptions + +00:02:54.982 --> 00:02:59.261 +I add in the note entries to help me + +00:02:59.262 --> 00:03:03.381 +but I think that the abstract is nice to be there + +00:03:03.382 --> 00:03:05.141 +in case you don't remember + +00:03:05.142 --> 00:03:07.541 +to find something from the title + +00:03:07.542 --> 00:03:08.581 +or from your notes + +00:03:08.582 --> 00:03:10.581 +and just need something more general. + +00:03:10.582 --> 00:03:16.621 +So yes it can be large and not always convenient, + +00:03:16.622 --> 00:03:20.181 +but I generally like it being there + +00:03:20.182 --> 00:03:29.421 +in case I need it for anything. Then the next question. + +00:03:29.422 --> 00:03:34.381 +Also, if any question is not fully answered by what I'm saying, + +00:03:34.382 --> 00:03:36.941 +feel free to add more to your question + +00:03:36.942 --> 00:03:39.501 +and we can discuss more. I don't have a problem. + +00:03:39.502 --> 00:03:45.621 +So for the next one, yeah, I copied this from IRC + +00:03:45.622 --> 00:03:49.141 +because I prefer to answer it orally + +00:03:49.142 --> 00:03:53.261 +because it's a bit longer than the others answering in IRC. + +00:03:53.262 --> 00:03:55.261 +So it seems that there's a meta problem here. + +00:03:55.262 --> 00:03:57.621 +There's too much information. + +00:03:57.622 --> 00:04:02.221 +And does this tool reduce the cognitive load? + +00:04:02.222 --> 00:04:09.061 +Well, for me, it does reduce the cognitive load because + +00:04:09.062 --> 00:04:11.261 +Indeed, there's a lot of information, + +00:04:11.262 --> 00:04:18.661 +but that's how managing literature works, essentially. + +00:04:18.662 --> 00:04:21.061 +It necessarily has to have a lot of cognitive load, + +00:04:21.062 --> 00:04:22.981 +because you are trying to + +00:04:22.982 --> 00:04:25.021 +process more information + +00:04:25.022 --> 00:04:28.221 +than your brain can process to begin with. + +00:04:28.222 --> 00:04:31.301 +So you really need a tool + +00:04:31.302 --> 00:04:36.581 +to help you not keep everything in your mind, + +00:04:36.582 --> 00:04:40.461 +process the information externally. + +00:04:40.462 --> 00:04:44.181 +They do think that the way I do this, for me at least, + +00:04:44.182 --> 00:04:49.661 +it does help with reducing cognitive load. + +00:04:49.662 --> 00:04:51.061 +Because I'm here, for example, + +00:04:51.062 --> 00:04:55.221 +if I'm looking for something, I do not remember, + +00:04:55.222 --> 00:05:01.501 +I've read most of these papers not too many months ago, + +00:05:01.502 --> 00:05:02.701 +so a lot of them are recent. + +00:05:02.702 --> 00:05:06.181 +If I don't look at what I have written for it, + +00:05:06.182 --> 00:05:08.821 +I do not remember anything. + +00:05:08.822 --> 00:05:11.941 +So indeed, you have this kind of cognitive load + +00:05:11.942 --> 00:05:17.341 +that I cannot remember everything. + +00:05:17.342 --> 00:05:23.101 +But on the other hand, I think the tool helps + +00:05:23.102 --> 00:05:26.861 +because my notes are what keeps, what I want to remember. + +00:05:26.862 --> 00:05:30.981 +So it doesn't stay in my mind, it stays in the text. + +00:05:30.982 --> 00:05:35.221 +And regarding things like the reading list, + +00:05:35.222 --> 00:05:39.021 +I think also for me reduces the cognitive load + +00:05:39.022 --> 00:05:42.821 +because I will mostly remember + +00:05:42.822 --> 00:05:46.341 +what the papers I have in that list are, + +00:05:46.342 --> 00:05:50.901 +but just sorting them by priority helps me + +00:05:50.902 --> 00:05:54.621 +Okay, this was the thing I wanted to do next. + +00:05:54.622 --> 00:06:00.301 +Oh, sorry. This is the thing I wanted to do next. + +00:06:00.302 --> 00:06:02.501 +And I didn't have to remember + +00:06:02.502 --> 00:06:03.901 +that this is what I want to do next. + +00:06:03.902 --> 00:06:06.821 +I just had it, I saw it there. + +00:06:06.822 --> 00:06:11.261 +So for me, it reduces cognitive load, + +00:06:11.262 --> 00:06:16.981 +but the problem of too much information is 100% there + +00:06:16.982 --> 00:06:19.541 +because there's objectively + +00:06:19.542 --> 00:06:21.021 +too much information + +00:06:21.022 --> 00:06:23.181 +when you're working with literature + +00:06:23.182 --> 00:06:35.221 +that's by nature and yeah essentially that + +00:06:35.222 --> 00:06:36.381 +that's for me the thing + +00:06:36.382 --> 00:06:41.141 +that i'm i'm just putting this information elsewhere + +00:06:41.142 --> 00:06:44.941 +so i don't have to keep it in my mind + +00:06:44.942 --> 00:06:52.421 +Okay, so when you download a new article, + +00:06:52.422 --> 00:06:54.941 +how do you integrate the file to the database? + +00:06:54.942 --> 00:06:58.261 +So, for example, do you remove + +00:06:58.262 --> 00:06:59.741 +and rename the file manually? + +00:06:59.742 --> 00:07:11.781 +So, for me, I also briefly showed that in the talk, + +00:07:11.782 --> 00:07:13.781 +but I did that very quickly, + +00:07:13.782 --> 00:07:16.581 +so it's understandable that it wasn't there. + +00:07:16.582 --> 00:07:21.501 +Essentially, And when I download the article, + +00:07:21.502 --> 00:07:27.421 +then I will open Ivy Bib Tech and find the article. + +00:07:27.422 --> 00:07:31.581 +For example, this one is the first. + +00:07:31.582 --> 00:07:34.941 +You can open the menu in Ivy Bib Tech. + +00:07:34.942 --> 00:07:40.061 +It's with an alt O, and then it will give you this menu. + +00:07:40.062 --> 00:07:44.261 +And from here, it will say, add PDF to library. + +00:07:44.262 --> 00:07:47.261 +And then it will ask from where do you want to add it? + +00:07:47.262 --> 00:07:49.941 +I don't recommend the URL + +00:07:49.942 --> 00:07:53.701 +because it doesn't download it properly sometimes. + +00:07:53.702 --> 00:07:56.981 +As I also mentioned that with Zotra, + +00:07:56.982 --> 00:08:00.301 +the URLs downloading things, + +00:08:00.302 --> 00:08:02.141 +especially with academic papers + +00:08:02.142 --> 00:08:05.341 +that are sometimes paywalled, it doesn't want to work well. + +00:08:05.342 --> 00:08:07.781 +So I will download the paper + +00:08:07.782 --> 00:08:10.981 +and then you can just press the F here for file. + +00:08:10.982 --> 00:08:13.421 +And then you find the file. + +00:08:13.422 --> 00:08:20.861 +and for example for me all my PDFs are in this folder + +00:08:20.862 --> 00:08:23.181 +it's still named Zotero PDFs + +00:08:23.182 --> 00:08:25.621 +from when it was Zotero saving them now + +00:08:25.622 --> 00:08:28.341 +Zotero no longer saves them + +00:08:28.342 --> 00:08:30.381 +but I'm too bored to change the name + +00:08:30.382 --> 00:08:33.501 +and then you just find the paper you want + +00:08:33.502 --> 00:08:37.261 +so you can see there is an endless list of papers here + +00:08:37.262 --> 00:08:42.821 +and it then will automatically rename it + +00:08:42.822 --> 00:08:56.781 +to have the title of the author, a small title and a date. + +00:08:56.782 --> 00:09:01.821 +I believe the naming is also configurable, + +00:09:01.822 --> 00:09:08.941 +but I have this notation in my config for many years now + +00:09:08.942 --> 00:09:11.181 +because that's how everything + +00:09:11.182 --> 00:09:17.981 +expects to find it, essentially. I do not then move it. + +00:09:17.982 --> 00:09:19.341 +It's stored in that folder. + +00:09:19.342 --> 00:09:22.501 +I store all my PDFs in that specific folder. + +00:09:22.502 --> 00:09:27.541 +And then Emacs knows that all PDFs + +00:09:27.542 --> 00:09:29.021 +should be found in that folder. + +00:09:29.022 --> 00:09:32.581 +And it then just looks for the name + +00:09:32.582 --> 00:09:33.981 +that it expects to find. + +00:09:33.982 --> 00:09:38.221 +And ivy-bibtex has renamed it automatically to that. + +00:09:38.222 --> 00:09:54.381 +Okay, I'll wait a bit to continue with that + +00:09:54.382 --> 00:09:59.801 +for moving to the next question. + +00:09:59.802 --> 00:10:02.301 +Yeah, ivy-bibtex has that functionality. + +00:10:02.302 --> 00:10:08.061 +And then annotations with e-readers. + +00:10:08.062 --> 00:10:12.781 +Viewing and taking an Emacs or Reader touchscreen, + +00:10:12.782 --> 00:10:16.501 +highlighting notes, noter, think would be an alternative, + +00:10:16.502 --> 00:10:18.301 +e-book annotation alternative. + +00:10:18.302 --> 00:10:25.981 +So, I do not use an e-reader, personally. + +00:10:25.982 --> 00:10:29.781 +The only thing that I have is my tablet, + +00:10:29.782 --> 00:10:34.981 +I can actually show you. It's this little thing here. + +00:10:34.982 --> 00:10:39.661 +It's a Chromebook. + +00:10:39.662 --> 00:10:42.381 +And the reason it's a Chromebook is that + +00:10:42.382 --> 00:10:44.621 +when I bought it a few years ago, + +00:10:44.622 --> 00:10:48.541 +it was the most viable alternative I could find + +00:10:48.542 --> 00:10:52.301 +that can run Linux as a tablet with good touchscreen. + +00:10:52.302 --> 00:10:55.021 +That was also a bit budget + +00:10:55.022 --> 00:10:57.821 +because there are some Linux tablets, + +00:10:57.822 --> 00:11:00.301 +but they were a bit too high cost + +00:11:00.302 --> 00:11:02.181 +for what I was looking back then. + +00:11:02.182 --> 00:11:07.501 +And this thing runs Linux essentially + +00:11:07.502 --> 00:11:10.421 +natively from the Chromebook. + +00:11:10.422 --> 00:11:14.581 +And I've installed Emacs there. It has all my config. + +00:11:14.582 --> 00:11:21.741 +And so if I want to take touchscreen notes, I do it there. + +00:11:21.742 --> 00:11:27.181 +But again, that is in Emacs. And it's mostly with PDFs. + +00:11:27.182 --> 00:11:31.181 +I'm not sure if it answers exactly the question. + +00:11:31.182 --> 00:11:35.221 +So if it's an e-reader, if it's, for example, a book, + +00:11:35.222 --> 00:11:39.661 +I know that if you have an EPUB, + +00:11:39.662 --> 00:11:42.221 +I think it's called the format for books, + +00:11:42.222 --> 00:11:44.701 +and Org-noter can also read that. + +00:11:44.702 --> 00:11:49.741 +So you could also open that file inside Emacs + +00:11:49.742 --> 00:11:51.541 +using Org-noter and take notes. + +00:11:51.542 --> 00:12:02.941 +But otherwise, If you're not + +00:12:02.942 --> 00:12:06.901 +reading everything in Emacs, + +00:12:06.902 --> 00:12:09.021 +then it's hard to pass annotations + +00:12:09.022 --> 00:12:11.581 +from outside Emacs to inside it, + +00:12:11.582 --> 00:12:15.461 +because of course you have less interoperability in that case. + +00:12:15.462 --> 00:12:22.621 +but I think Emacs is featureful enough + +00:12:22.622 --> 00:12:25.621 +to where you can do all your reading inside it. + +00:12:25.622 --> 00:12:30.141 +And Org-noter has a surprising amount of different formats + +00:12:30.142 --> 00:12:31.621 +where you can read things actually. + +00:12:31.622 --> 00:12:40.141 +I hope it was clear if you want more on that + +00:12:40.142 --> 00:12:45.901 +because I know it's a bit more a complex question, I guess, + +00:12:45.902 --> 00:12:47.701 +also with e-readers. + +00:12:47.702 --> 00:12:52.061 +And if it is in Emacs or not, feel free to add more. + +00:12:52.062 --> 00:12:56.901 +And how old do you feel + +00:12:56.902 --> 00:13:00.461 +about making notes on websites, PDF, videos? + +00:13:00.462 --> 00:13:05.741 +So I will agree with the other question + +00:13:05.742 --> 00:13:07.621 +that I answered here. + +00:13:07.622 --> 00:13:11.301 +If you can convert something to PDF, + +00:13:11.302 --> 00:13:13.621 +I prefer it because then + +00:13:13.622 --> 00:13:16.741 +you need to only worry about PDFs + +00:13:16.742 --> 00:13:19.941 +and it works better that way + +00:13:19.942 --> 00:13:21.981 +than having to annotate websites. + +00:13:21.982 --> 00:13:26.181 +There is, I believe, I should have it + +00:13:26.182 --> 00:13:27.661 +in my bookmarks somewhere. + +00:13:27.662 --> 00:13:32.381 +There is a, the org-roam protocol + +00:13:32.382 --> 00:13:36.621 +that allows you to take notes directly out of a website + +00:13:36.622 --> 00:13:39.421 +and it saves all the metadata of the website. + +00:13:39.422 --> 00:13:42.941 +I did look at it at some point, + +00:13:42.942 --> 00:13:47.781 +but I haven't really continued using it too much + +00:13:47.782 --> 00:13:53.541 +because I find that I don't often take notes + +00:13:53.542 --> 00:14:00.221 +from a website where I want the and more information + +00:14:00.222 --> 00:14:02.421 +than just either the link of the website + +00:14:02.422 --> 00:14:05.741 +or if I want the full text converting into a PDF. + +00:14:05.742 --> 00:14:07.261 +So I haven't really found + +00:14:07.262 --> 00:14:08.541 +a very big use case for it, + +00:14:08.542 --> 00:14:11.301 +but I know that Org-Roam protocol is a thing. + +00:14:11.302 --> 00:14:16.701 +And then for videos is a bit of a longer story + +00:14:16.702 --> 00:14:19.901 +because if you want to take notes on videos, + +00:14:19.902 --> 00:14:21.541 +that's a bit more complex. + +00:14:21.542 --> 00:14:28.181 +And I don't know of a way to do it in Emacs, + +00:14:28.182 --> 00:14:30.941 +but I also don't know of an effective way + +00:14:30.942 --> 00:14:34.421 +to take notes on videos using other tools. + +00:14:34.422 --> 00:14:39.901 +What I typically do if I'm following the video or something + +00:14:39.902 --> 00:14:44.461 +is that I will take notes of the more important things. + +00:14:44.462 --> 00:14:50.581 +I'll take notes of the more important things + +00:14:50.582 --> 00:14:52.381 +that I was listening in the video. + +00:14:52.382 --> 00:14:55.101 +And while I'm listening, I will take + +00:14:55.102 --> 00:14:57.581 +some ideal crude notes, + +00:14:57.582 --> 00:15:00.901 +not because I don't want to lose + +00:15:00.902 --> 00:15:03.981 +a lot of my attention during the, + +00:15:03.982 --> 00:15:09.781 +what I'm trying to learn by taking very good notes. + +00:15:09.782 --> 00:15:11.141 +So most of the time, + +00:15:11.142 --> 00:15:13.741 +those kinds of notes will be in paper, + +00:15:13.742 --> 00:15:16.181 +even just very simple, crude notes. + +00:15:16.182 --> 00:15:20.381 +And then without any timestamps or anything, + +00:15:20.382 --> 00:15:23.941 +because that's too complex for what I've done. + +00:15:23.942 --> 00:15:28.501 +And after watching, I will try to + +00:15:28.502 --> 00:15:31.421 +consolidate all my thoughts that I wrote down + +00:15:31.422 --> 00:15:36.061 +into some more permanent notes using Org Roam. + +00:15:36.062 --> 00:15:46.181 +And then like move on with that also look online + +00:15:46.182 --> 00:15:50.421 +if I noted that I want to look more on on this subject + +00:15:50.422 --> 00:15:52.821 +that was mentioned the video + +00:15:52.822 --> 00:15:53.821 +and I didn't fully understand it + +00:15:53.822 --> 00:15:57.381 +then I will try and look more and things like that + +00:15:57.382 --> 00:16:02.981 +so for me that's how I do it because I think that + +00:16:02.982 --> 00:16:05.661 +Annotating a video directly with timestamps + +00:16:05.662 --> 00:16:07.821 +and everything is a bit too complex. + +00:16:07.822 --> 00:16:09.501 +I don't know if you have + +00:16:09.502 --> 00:16:12.061 +any suggestions for working with that, + +00:16:12.062 --> 00:16:19.381 +but for me, it has been very troublesome. + +00:16:19.382 --> 00:16:22.341 +And then how do you add a new article from scratch, + +00:16:22.342 --> 00:16:25.301 +a PDF that you did not have in your bib file? + +00:16:25.302 --> 00:16:29.661 +How do you generate the bib entry metadata and abstract? + +00:16:29.662 --> 00:16:36.941 +So yeah, the package is called Zotra. + +00:16:36.942 --> 00:16:44.061 +I can also show it again. Let's find something. + +00:16:44.062 --> 00:16:49.861 +and can open up. Let's not do that. + +00:16:49.862 --> 00:16:53.981 +If I open it, I need to access it through my institution. + +00:16:53.982 --> 00:16:57.621 +So I will not open the link, but I can show you essentially + +00:16:57.622 --> 00:17:02.101 +you run Zotra add entry, this function, + +00:17:02.102 --> 00:17:10.421 +and it copies what you have currently in your, in your, + +00:17:10.422 --> 00:17:12.461 +what you have already copied right now + +00:17:12.462 --> 00:17:15.861 +it's the message I copied before for the Q&A + +00:17:15.862 --> 00:17:21.861 +but if you open a paper and have the URL copied + +00:17:21.862 --> 00:17:26.341 +it will immediately come here and will save everything + +00:17:26.342 --> 00:17:28.621 +and also as I mentioned there's the + +00:17:28.622 --> 00:17:31.301 +you can also download the patches from there + +00:17:31.302 --> 00:17:34.381 +but with paywalled articles doesn't always work well + +00:17:34.382 --> 00:17:40.261 +so I just do it manually + +00:17:40.262 --> 00:17:45.821 +Oh, system is running low on power. Give me just a second. + +00:17:45.822 --> 00:17:59.021 +So the computer doesn't turn off as we're speaking. Yes. + +00:17:59.022 --> 00:18:03.541 +So yeah, the, everything is added from scratch. + +00:18:03.542 --> 00:18:14.541 +Essentially you copy the URL and give it to Soletrend. + +00:18:14.542 --> 00:18:17.381 +It does everything. uh when you fact check every details + +00:18:17.382 --> 00:18:26.261 +for a bib entry your open names published journal + +00:18:26.262 --> 00:18:29.461 +doi stuff uh so i i generally don't do that + +00:18:29.462 --> 00:18:30.861 +oh yeah thanks for the person + +00:18:30.862 --> 00:18:35.101 +that added the link to the zocha + +00:18:35.102 --> 00:18:38.381 +i i wouldn't say that i fact check the details + +00:18:38.382 --> 00:18:40.901 +i assume that When they're added, + +00:18:40.902 --> 00:18:44.541 +they're actually correct. + +00:18:44.542 --> 00:18:49.741 +Have you actually had trouble with a tool + +00:18:49.742 --> 00:18:52.021 +that automatically adds them to add them wrong? + +00:18:52.022 --> 00:18:54.861 +I'm curious. I haven't really heard + +00:18:54.862 --> 00:18:59.421 +that happening too much. + +00:18:59.422 --> 00:19:01.861 +I've always thought that, yeah, if you do it manually, + +00:19:01.862 --> 00:19:04.621 +you need to fact check that you did it correctly. + +00:19:04.622 --> 00:19:06.461 +But I always assume that if you do it + +00:19:06.462 --> 00:19:09.301 +automatically through a tool, + +00:19:09.302 --> 00:19:11.661 +It should already be correct. + +00:19:11.662 --> 00:19:15.101 +And I don't remember ever having any trouble either + +00:19:15.102 --> 00:19:20.221 +when I was using Zotero before or now + +00:19:20.222 --> 00:19:24.101 +with the more Emacs based tools. + +00:19:24.102 --> 00:19:29.781 +I feel like the big entries are copied correctly. + +00:19:29.782 --> 00:19:35.101 +I haven't noticed this being incorrect. + +00:19:35.102 --> 00:19:40.181 +But I'm curious, do you have any point + +00:19:40.182 --> 00:19:44.661 +On that, I will keep in mind. + +00:19:44.662 --> 00:19:48.541 +Sometimes, DOI records are not exactly correct. + +00:19:48.542 --> 00:19:52.861 +For example, they can contain some very strange symbols. + +00:19:52.862 --> 00:20:01.901 +So that can happen sometimes. OK. Yeah. I don't know. + +00:20:01.902 --> 00:20:05.741 +I guess then if you want to fact check, + +00:20:05.742 --> 00:20:12.141 +it's probably the best to do it directly as it is added, + +00:20:12.142 --> 00:20:14.901 +like it's added, for example, here, + +00:20:14.902 --> 00:20:17.941 +and you can just directly, when you add it, + +00:20:17.942 --> 00:20:23.501 +find it and say, is everything correct here? + +00:20:23.502 --> 00:20:27.661 +Because I think that if you leave it for later, + +00:20:27.662 --> 00:20:31.381 +it will be much more of a mess. + +00:20:31.382 --> 00:20:33.181 +So for checking, I would just do it directly + +00:20:33.182 --> 00:20:47.261 +after I add it to the bit file. + +00:20:47.262 --> 00:20:50.621 +And let me see, is there anything else? + +00:20:50.622 --> 00:20:53.501 +I think one common way it can fail + +00:20:53.502 --> 00:20:56.381 +is when the metadata includes + +00:20:56.382 --> 00:20:59.581 +HTML tags for math, for example. + +00:20:59.582 --> 00:21:03.501 +And in some papers, for some journals, it can happen. + +00:21:03.502 --> 00:21:05.061 +So then you can imagine what happens + +00:21:05.062 --> 00:21:06.981 +when you try to put that citation + +00:21:06.982 --> 00:21:08.741 +into your references. + +00:21:08.742 --> 00:21:12.421 +That's going to be a mess. + +00:21:12.422 --> 00:21:17.501 +Yeah, okay. I didn't know, to be honest, so yeah. + +00:21:17.502 --> 00:21:27.101 +Thanks for the information. + +00:21:27.102 --> 00:21:29.501 +I think our graph has automatic cleaning + +00:21:29.502 --> 00:21:30.421 +of certain things + +00:21:30.422 --> 00:21:34.741 +for common errors in the metadata. + +00:21:34.742 --> 00:21:37.221 +How did you call that? + +00:21:37.222 --> 00:21:38.381 +I can note it down also here for the discussion. + +00:21:38.382 --> 00:21:45.861 +Oh, our graph. Or graph. Or graph. Yeah. + +00:21:45.862 --> 00:22:12.261 +Okay. Okay. I will put it down the pad. + +00:22:12.262 --> 00:22:14.141 +And I think the next talk, + +00:22:14.142 --> 00:22:18.461 +the live will move in the next minute anyways. + +00:22:18.462 --> 00:22:22.141 +And I see we're done with all the questions. + +00:22:22.142 --> 00:22:26.141 +So thank you everyone. I hope this was interesting. + +00:22:26.142 --> 00:22:28.501 +Thank you for giving me a lot of questions + +00:22:28.502 --> 00:22:31.461 +so we had to discuss for the whole time + +00:22:31.462 --> 00:22:34.541 +and we weren't just here sitting. + +00:22:34.542 --> 00:22:36.182 +And enjoy the rest of EmacsConf. diff --git a/2025/captions/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--answers.vtt b/2025/captions/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--answers.vtt new file mode 100644 index 00000000..738e9779 --- /dev/null +++ b/2025/captions/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--answers.vtt @@ -0,0 +1,1531 @@ +WEBVTT + +00:00:00.000 --> 00:00:03.839 +[oops, forgot to start] object protocol has a scheme implementation. + +00:00:03.840 --> 00:00:07.159 +Does this mean schemacs will be + +00:00:07.160 --> 00:00:11.079 +meta object changeable in practice? + +00:00:11.080 --> 00:00:16.599 +So I don't actually need the meta object protocol so far. + +00:00:16.600 --> 00:00:19.279 +In the reference implementation for Guile, + +00:00:19.280 --> 00:00:27.559 +Guile has its own object-oriented system called Goops. + +00:00:27.560 --> 00:00:29.239 +I'm sorry, I'm hearing a delay. + +00:00:29.240 --> 00:00:32.519 +Anyway, I'm going to turn off my stream quick. There we go. + +00:00:32.520 --> 00:00:39.439 +So, um. Yes, uh, I, I don't I wasn't aware of the, um. + +00:00:39.440 --> 00:00:43.919 +the meta-object protocol that you have mentioned here, + +00:00:43.920 --> 00:00:45.959 +but I will look into it. + +00:00:45.960 --> 00:00:48.719 +I know that there isn't really a standard + +00:00:48.720 --> 00:00:52.119 +meta-object protocol for Scheme. + +00:00:52.120 --> 00:00:53.519 +That was an issue for me + +00:00:53.520 --> 00:00:56.919 +because I'm trying to make this cross-platform, + +00:00:56.920 --> 00:00:59.639 +and so I've done all of my work so far + +00:00:59.640 --> 00:01:00.959 +without a meta-object protocol + +00:01:00.960 --> 00:01:02.439 +because that's the easiest way to make it work + +00:01:02.440 --> 00:01:04.879 +on multiple Scheme implementations. + +00:01:04.880 --> 00:01:07.359 +But if there is a nice portable one + +00:01:07.360 --> 00:01:12.559 +that works on many implementations, I would use that, yes. + +00:01:12.560 --> 00:01:14.999 +It's just that so far it hasn't been necessary. + +00:01:15.000 --> 00:01:19.279 +I've been doing mostly functional reactive programming + +00:01:19.280 --> 00:01:21.079 +and React.js-like framework. + +00:01:21.080 --> 00:01:23.239 +I've created that for the GUI front end. + +00:01:23.240 --> 00:01:26.199 +And that's all the more I've needed so far. + +00:01:26.200 --> 00:01:33.399 +So, yeah. Oh, yeah, please, next question. Sure. + +00:01:33.400 --> 00:01:39.599 +So how will the GUI display code be R7RS compliant? + +00:01:39.600 --> 00:01:45.079 +As far as I know, there's no DL open in R7RS. That's right. + +00:01:45.080 --> 00:01:48.879 +Yeah, R7RS small is extremely small + +00:01:48.880 --> 00:01:50.439 +and does not have any features at all. + +00:01:50.440 --> 00:01:54.799 +But it does provide a conv expand macro. + +00:01:54.800 --> 00:01:57.639 +And this allows you to load in different code + +00:01:57.640 --> 00:02:00.879 +depending on which scheme implementation you're using. + +00:02:00.880 --> 00:02:03.359 +So basically, I'll have to write a different back end + +00:02:03.360 --> 00:02:05.279 +for each scheme implementation. + +00:02:05.280 --> 00:02:06.639 +And I think that's really + +00:02:06.640 --> 00:02:10.919 +the only way is possible at all, + +00:02:10.920 --> 00:02:12.719 +because there's no standardization. + +00:02:12.720 --> 00:02:14.439 +So essentially, the libraries + +00:02:14.440 --> 00:02:15.719 +that I've written for schemacs + +00:02:15.720 --> 00:02:22.439 +will become kind of a platform-independent way + +00:02:22.440 --> 00:02:25.839 +of writing GUIs for Scheme. + +00:02:25.840 --> 00:02:27.119 +It's just a matter of, + +00:02:27.120 --> 00:02:28.679 +will your Scheme implementation + +00:02:28.680 --> 00:02:32.279 +support the Schemacs GUI protocol? + +00:02:32.280 --> 00:02:34.199 +So I've kind of written my own protocol, + +00:02:34.200 --> 00:02:36.679 +and it's entirely R7 RSML compliant. + +00:02:36.680 --> 00:02:38.239 +It's all done with record, + +00:02:38.240 --> 00:02:43.039 +what are they called, record types. + +00:02:43.040 --> 00:02:46.519 +Do you think some of the Schemacs + +00:02:46.520 --> 00:02:50.679 +could be extracted into SFRIs since you've made it portable + +00:02:50.680 --> 00:02:52.879 +between scheme implementations? + +00:02:52.880 --> 00:02:55.279 +Yes, I would definitely like to do that. + +00:02:55.280 --> 00:02:59.239 +Probably first thing I'll do is start splitting up + +00:02:59.240 --> 00:03:01.679 +and publishing independent libraries + +00:03:01.680 --> 00:03:04.319 +on the Aku package manager. + +00:03:04.320 --> 00:03:07.639 +This is a kind of a package manager ecosystem for Scheme, + +00:03:07.640 --> 00:03:11.679 +and in particular R7RS Scheme. + +00:03:11.680 --> 00:03:15.239 +And it's also mirrored on the other package manager, + +00:03:15.240 --> 00:03:18.279 +Snowfort, just by the way. + +00:03:18.280 --> 00:03:21.359 +But yeah, and then I might be also, + +00:03:21.360 --> 00:03:25.079 +I've considered creating a SRFI for the lens library, + +00:03:25.080 --> 00:03:27.399 +which is based on the Haskell lens library. + +00:03:27.400 --> 00:03:29.839 +I don't think that exists yet in Scheme, + +00:03:29.840 --> 00:03:34.319 +so I thought that might make a good SRFI. + +00:03:34.320 --> 00:03:36.719 +Is there a recommended Scheme implementation? + +00:03:36.720 --> 00:03:44.559 +Guile is the reference implementation. + +00:03:44.560 --> 00:03:47.279 +It's the only one that works with GUI, + +00:03:47.280 --> 00:03:51.359 +but as I demonstrated in my presentation, + +00:03:51.360 --> 00:03:52.599 +the Emacs Lisp interpreter + +00:03:52.600 --> 00:03:55.079 +works on multiple schemes so far, + +00:03:55.080 --> 00:04:00.039 +and I've had trouble with some of the scheme compilers. + +00:04:00.040 --> 00:04:04.839 +But yeah, I would recommend Guile. + +00:04:04.840 --> 00:04:07.719 +But how would schemacs deal with + +00:04:07.720 --> 00:04:10.039 +Emacs's re-display architecture + +00:04:10.040 --> 00:04:13.159 +will be having its own display architecture? + +00:04:13.160 --> 00:04:15.359 +And if so, how will you handle + +00:04:15.360 --> 00:04:18.479 +things like overlays and images? + +00:04:18.480 --> 00:04:25.239 +Yeah, definitely. That's to be determined. + +00:04:25.240 --> 00:04:31.279 +So basically, the scheme way of doing things + +00:04:31.280 --> 00:04:36.639 +So, I've created this React-like programming framework. + +00:04:36.640 --> 00:04:40.999 +It's like ReactJS or Vue.js. + +00:04:41.000 --> 00:04:45.119 +That is just the API of how you write GUI code in Scheme. + +00:04:45.120 --> 00:04:49.719 +And each Scheme implementation + +00:04:49.720 --> 00:04:52.279 +will have its own GUI backend, + +00:04:52.280 --> 00:04:55.599 +which implements that Protocol. + +00:04:55.600 --> 00:04:59.199 +And so when it comes time to link + +00:04:59.200 --> 00:05:03.079 +the Emacs Lisp built-in functions + +00:05:03.080 --> 00:05:08.279 +that do these things like overlays and so on, + +00:05:08.280 --> 00:05:11.079 +we're going to have to come up with some way + +00:05:11.080 --> 00:05:12.079 +of modeling that + +00:05:12.080 --> 00:05:15.799 +using the scheme framework that I've designed. + +00:05:15.800 --> 00:05:17.599 +And I may have to make alterations + +00:05:17.600 --> 00:05:22.039 +specifically to support Emacs Lisp. + +00:05:22.040 --> 00:05:28.559 +I don't know yet. I haven't got that far. + +00:05:28.560 --> 00:05:30.079 +You were saying that you would like + +00:05:30.080 --> 00:05:33.479 +to get the most out of the 1300 + +00:05:33.480 --> 00:05:36.519 +and something Emacs packages that exist. + +00:05:36.520 --> 00:05:38.759 +Are there technical blockers to doing them all + +00:05:38.760 --> 00:05:44.039 +or just a problem of getting enough people to jump into it? + +00:05:44.040 --> 00:05:48.639 +Yeah, it's just a matter of implementing enough + +00:05:48.640 --> 00:05:50.839 +of the Emacs built-in functions. + +00:05:50.840 --> 00:05:57.079 +Right now, there's kind of a big bug. + +00:05:57.080 --> 00:05:59.359 +I mentioned this also in the presentation. + +00:05:59.360 --> 00:06:02.599 +The stacks trace that you saw during my presentation, + +00:06:02.600 --> 00:06:05.799 +that is the biggest bug right now + +00:06:05.800 --> 00:06:08.159 +that's preventing me from running most other code. + +00:06:08.160 --> 00:06:10.359 +And I don't think other people + +00:06:10.360 --> 00:06:13.039 +will be able to contribute to the code base + +00:06:13.040 --> 00:06:14.559 +until I get that bug fixed, + +00:06:14.560 --> 00:06:18.679 +because it doesn't capture closures correctly. + +00:06:18.680 --> 00:06:22.519 +it doesn't behave like Emacs Lisp does, + +00:06:22.520 --> 00:06:26.959 +and that's the big problem. + +00:06:26.960 --> 00:06:31.759 +So once I get that worked out, + +00:06:31.760 --> 00:06:35.599 +then it's just a matter of implementing enough + +00:06:35.600 --> 00:06:37.879 +of the EmacsLisp built-in functions, + +00:06:37.880 --> 00:06:40.679 +these are the functions that are mostly implemented in C, + +00:06:40.680 --> 00:06:42.879 +implementing those in Scheme. + +00:06:42.880 --> 00:06:45.959 +And that, yeah, that's the thing + +00:06:45.960 --> 00:06:47.839 +that I'm going to need a lot of help with + +00:06:47.840 --> 00:06:49.719 +because there's quite a few of those APIs. + +00:06:49.720 --> 00:06:53.519 +But I imagine, I have no idea, no way of knowing, + +00:06:53.520 --> 00:06:56.459 +but I imagine we don't need 100% of them + +00:06:56.460 --> 00:06:58.167 +in order to run most of Elpa. + +00:06:58.168 --> 00:07:05.084 +We probably can get some of the important large Elpa packages + +00:07:05.085 --> 00:07:12.719 +like Magit and Org mode with just enough of the Emacs Lisp + +00:07:12.720 --> 00:07:14.959 +built-in functions to handle that. + +00:07:14.960 --> 00:07:19.279 +But we won't really know until we've tried. + +00:07:19.280 --> 00:07:22.519 +So yeah, I'll try to get this bug fixed right away. + +00:07:22.520 --> 00:07:24.979 +That way we can all start working on it together, hopefully. + +00:07:24.980 --> 00:07:27.126 +Highly relatable answer there. + +00:07:27.127 --> 00:07:31.959 +We'll burn that bridge when we're on it or something. + +00:07:31.960 --> 00:07:34.559 +What are your thoughts on chicken scheme? + +00:07:34.560 --> 00:07:37.199 +Will that be a good fit? Do you think? + +00:07:37.200 --> 00:07:41.039 +I think it will be, um, I, I did show + +00:07:41.040 --> 00:07:44.959 +trying to run chicken scheme in my, um, presentation + +00:07:44.960 --> 00:07:48.839 +and, uh, I ran up against some kind of issue, + +00:07:48.840 --> 00:07:51.079 +which I really don't know how to debug. + +00:07:51.080 --> 00:07:55.879 +Um, it's probably something to do with the, uh, pattern matcher. + +00:07:55.880 --> 00:07:58.919 +Um, I'm using the pattern matcher, + +00:07:58.920 --> 00:08:00.599 +uh, written by Alex shin, + +00:08:00.600 --> 00:08:02.599 +which seems to be the most portable. + +00:08:02.600 --> 00:08:05.919 +Pattern matcher, uh, for our seven RS scheme. + +00:08:05.920 --> 00:08:13.519 +But not all scheme compilers implement, what is it called? + +00:08:13.520 --> 00:08:19.559 +The macro, I can't remember what it's called. + +00:08:19.560 --> 00:08:24.199 +There's the macro expansion system for R7 RS small. + +00:08:24.200 --> 00:08:27.199 +All of these scheme implementations + +00:08:27.200 --> 00:08:29.319 +seem to have a slightly different take on how they work. + +00:08:29.320 --> 00:08:33.919 +And so that macro expander has been, for pattern matching, + +00:08:33.920 --> 00:08:35.719 +has been the biggest difficulty + +00:08:35.720 --> 00:08:37.359 +in making this code portable. + +00:08:37.360 --> 00:08:42.239 +And so I'm thinking of ways of maybe trying to ditch pattern matching, + +00:08:42.240 --> 00:08:44.999 +but that's such a useful feature and it's hard. + +00:08:45.000 --> 00:08:49.879 +So I don't know, we'll see if I can, + +00:08:49.880 --> 00:08:52.439 +if somebody can help me get it to work on chicken team, + +00:08:52.440 --> 00:08:56.599 +I'd really appreciate it. + +00:08:56.600 --> 00:09:01.799 +Can this implementation be used by Guile's Emacs Lisp mode? + +00:09:01.800 --> 00:09:08.199 +Guile's Emacs list mode. Okay. Yeah, good question. + +00:09:08.200 --> 00:09:10.919 +I did mention this last year in my presentation. + +00:09:10.920 --> 00:09:13.719 +Emacs list in Guile is totally different + +00:09:13.720 --> 00:09:16.199 +from what I've done. + +00:09:16.200 --> 00:09:21.292 +That implementation was written about 10 or 15 years ago. + +00:09:21.293 --> 00:09:26.501 +I can't remember exactly when. It is quite incomplete. + +00:09:26.502 --> 00:09:36.542 +I don't think it even runs most of the macro expanding code. + +00:09:36.543 --> 00:09:39.679 +Some of the code that is written + +00:09:39.680 --> 00:09:42.479 +for GNU Emacs in Emacs Lisp, + +00:09:42.480 --> 00:09:45.679 +where GNU Emacs is initializing itself, + +00:09:45.680 --> 00:09:51.319 +it can't even get the first file in that code. + +00:09:51.320 --> 00:09:53.479 +It hasn't been touched in 10 or 15 years. + +00:09:53.480 --> 00:09:57.239 +Initially, when I first started this project, + +00:09:57.240 --> 00:09:59.159 +I was using the parser + +00:09:59.160 --> 00:10:02.319 +for Guile's Emacs Lisp implementation, + +00:10:02.320 --> 00:10:05.319 +but it didn't give me things like source locations, + +00:10:05.320 --> 00:10:10.639 +so I had to rewrite that. And also, it wasn't portable. + +00:10:10.640 --> 00:10:14.279 +So yeah, because I want it to be portable, + +00:10:14.280 --> 00:10:16.919 +it's necessarily going to be not reliant + +00:10:16.920 --> 00:10:19.119 +on anything that's inside of the Guile library, + +00:10:19.120 --> 00:10:21.479 +including the Emacs LISP interpreter that's there. + +00:10:21.480 --> 00:10:24.959 +Maybe I could replace the Emacs LISP interpreter in Guile + +00:10:24.960 --> 00:10:29.599 +if Andy Wingo would be interested. All right. + +00:10:29.600 --> 00:10:31.599 +And I see we've got a few people + +00:10:31.600 --> 00:10:34.039 +that did jump into the BBB. + +00:10:34.040 --> 00:10:37.159 +I'm just going to quickly, oops. + +00:10:37.160 --> 00:10:40.679 +quickly try to make my text a little bigger + +00:10:40.680 --> 00:10:42.799 +so I can read a question that came here. + +00:10:42.800 --> 00:10:48.479 +I wonder if we can do some sort of pragmatic analysis + +00:10:48.480 --> 00:10:49.959 +on popular Emacs packages + +00:10:49.960 --> 00:10:52.399 +to see what list of functions they tend to depend on + +00:10:52.400 --> 00:10:54.799 +while a function calls down to the lower level. + +00:10:54.800 --> 00:10:57.209 +Yeah, that would be good. + +00:10:57.210 --> 00:11:02.251 +Somebody please do that for me. Awesome. + +00:11:02.252 --> 00:11:05.439 +Somebody's raising their hand. Divya. + +00:11:05.440 --> 00:11:08.799 +Let's see. Yeah, can you hear me? + +00:11:08.800 --> 00:11:12.359 +Yes, I can. Yeah, go ahead. Hello, thank you. + +00:11:12.360 --> 00:11:14.079 +Yeah, this is really awesome. + +00:11:14.080 --> 00:11:16.959 +I use Guile, and I love Guile, + +00:11:16.960 --> 00:11:18.919 +and I also love functional programming, + +00:11:18.920 --> 00:11:21.599 +so this is really nice that you took + +00:11:21.600 --> 00:11:22.719 +the declarative approach. + +00:11:22.720 --> 00:11:26.319 +One thing that I'm interested in is, + +00:11:26.320 --> 00:11:29.839 +are you also considering Racket in the scheme group? + +00:11:29.840 --> 00:11:32.959 +Because I know a lot of people do not consider Racket + +00:11:32.960 --> 00:11:36.639 +as a sort of scheme thing, because it grew out of it. + +00:11:36.640 --> 00:11:39.519 +Do you think you'll take something from Racket? + +00:11:39.520 --> 00:11:42.119 +Because I think Racket has + +00:11:42.120 --> 00:11:44.519 +a lot of good ideas that can be used. + +00:11:44.520 --> 00:11:48.439 +Yeah, I briefly looked at Racket's GUI library, + +00:11:48.440 --> 00:11:51.879 +but it's very, very heavily dependent + +00:11:51.880 --> 00:11:53.839 +on Racket's macro expander, + +00:11:53.840 --> 00:11:57.679 +which is, well, yeah, the macro expander + +00:11:57.680 --> 00:11:59.679 +is extremely complex for Racket, + +00:11:59.680 --> 00:12:02.159 +and I don't think it's possible to port it to any other scheme, + +00:12:02.160 --> 00:12:07.679 +as far as I know. But Racket is based on SheaScheme. + +00:12:07.680 --> 00:12:14.479 +And I am making an effort to port my code to Shea's scheme. + +00:12:14.480 --> 00:12:18.639 +I mentioned this earlier, + +00:12:18.640 --> 00:12:22.159 +but there's the Gwen Weinholdt Aku system, + +00:12:22.160 --> 00:12:25.439 +which allows you to translate R7RS to R6RS. + +00:12:25.440 --> 00:12:28.519 +And since Shea is an R6RS compiler, + +00:12:28.520 --> 00:12:33.919 +I did at one point get the Emacs Lisp interpreter + +00:12:33.920 --> 00:12:34.919 +to compile for Shea, + +00:12:34.920 --> 00:12:38.239 +although I think There's been a change + +00:12:38.240 --> 00:12:40.479 +either to Aku or somewhere in my own code base. + +00:12:40.480 --> 00:12:42.879 +It doesn't build anymore, and I'm not sure why. + +00:12:42.880 --> 00:12:47.039 +But I would also very much like to run this on Che. + +00:12:47.040 --> 00:12:54.679 +And I guess in that sense, we'll be able to work on Racket as well. + +00:12:54.680 --> 00:12:56.199 +There's also one other option. + +00:12:56.200 --> 00:13:03.519 +Alexis King has written an R7RS language package for Racket. + +00:13:03.520 --> 00:13:05.039 +I have not yet tried. + +00:13:05.040 --> 00:13:08.479 +running my package on R7RS for Racket. + +00:13:08.480 --> 00:13:11.599 +But that would be something interesting. + +00:13:11.600 --> 00:13:12.919 +Yes, I would like to try that. + +00:13:12.920 --> 00:13:13.919 +Yeah, it'll be interesting. + +00:13:13.920 --> 00:13:15.839 +I do have some experience with chairs. + +00:13:15.840 --> 00:13:17.479 +So, uh, if I can find some time, + +00:13:17.480 --> 00:13:21.239 +I'll, I'll, I'll certainly like to, I would appreciate. + +00:13:21.240 --> 00:13:24.039 +Yes. Yeah. Go ahead. Yeah. + +00:13:24.040 --> 00:13:26.079 +Another question I have is, like, + +00:13:26.080 --> 00:13:29.199 +what exactly is sort of, like, the, the approach is that + +00:13:29.200 --> 00:13:31.479 +you'll 1st want to do the interpreter + +00:13:31.480 --> 00:13:33.799 +and then have enough list functions. + +00:13:33.800 --> 00:13:36.479 +Uh, getting the max list functions + +00:13:36.480 --> 00:13:38.119 +interpreted or interpretable. + +00:13:38.120 --> 00:13:40.999 +And then go for GUI or do you want + +00:13:41.000 --> 00:13:42.759 +to sort of like go hand in hand + +00:13:42.760 --> 00:13:45.679 +is like we have the interpreter working on + +00:13:45.680 --> 00:13:46.959 +and we have also the GUI + +00:13:46.960 --> 00:13:53.199 +and we sort of use one for the other. + +00:13:53.200 --> 00:13:56.479 +Yeah, I consider the two tasks to be parallel. + +00:13:56.480 --> 00:13:59.639 +So I'm actually doing the GUI separately. + +00:13:59.640 --> 00:14:05.519 +The reason why is because the GUI for Schemacs + +00:14:05.520 --> 00:14:10.279 +is really just a clone of the look and feel of Emacs. + +00:14:10.280 --> 00:14:14.679 +It's not like an actual clone of the low-level C code + +00:14:14.680 --> 00:14:16.039 +that puts everything on screen. + +00:14:16.040 --> 00:14:18.679 +And I'm actually not really that interested + +00:14:18.680 --> 00:14:21.439 +in the low-level details + +00:14:21.440 --> 00:14:23.479 +of how Emacs draws things on screen either. + +00:14:23.480 --> 00:14:26.839 +I think it has a lot of historical baggage, + +00:14:26.840 --> 00:14:28.839 +and I'm actually trying to move away from that. + +00:14:28.840 --> 00:14:31.759 +So that was part of the reason why I started + +00:14:31.760 --> 00:14:36.399 +with this React.js or Vue.js-like Reactive GUI framework. + +00:14:36.400 --> 00:14:39.519 +So that GUI part is completely separate. + +00:14:39.520 --> 00:14:42.239 +And I want to worry about the details + +00:14:42.240 --> 00:14:46.719 +of how we make the GUI look and feel + +00:14:46.720 --> 00:14:50.319 +similar in Schemacs, similar to GNU Emacs. + +00:14:50.320 --> 00:14:54.799 +In Schemacs, using the Emacs programming language, + +00:14:54.800 --> 00:14:59.319 +I think that's something that we should worried about + +00:14:59.320 --> 00:15:03.399 +after we have enough of the Emacs list implemented. + +00:15:03.400 --> 00:15:04.919 +Yeah, that makes sense. + +00:15:04.920 --> 00:15:06.679 +There are sort of, I'm a bit worried. + +00:15:06.680 --> 00:15:10.599 +So, I don't know if, so one of my presentations + +00:15:10.600 --> 00:15:11.479 +is going to be tomorrow. + +00:15:11.480 --> 00:15:13.119 +I'm working on something called Emacs Viewer. + +00:15:13.120 --> 00:15:15.319 +It's a document viewer in Emacs. + +00:15:15.320 --> 00:15:17.679 +And essentially one of the issues that I'm up against + +00:15:17.680 --> 00:15:20.359 +is that Emacs's display system + +00:15:20.360 --> 00:15:25.439 +is sort of very let's say, not flexible. + +00:15:25.440 --> 00:15:31.839 +When trying to analyze where this inflexibility comes from, + +00:15:31.840 --> 00:15:35.759 +I don't think it's just the display architecture. + +00:15:35.760 --> 00:15:38.319 +I think parts of eLISP itself + +00:15:38.320 --> 00:15:43.599 +are connected to the display architecture. + +00:15:43.600 --> 00:15:48.399 +The notion of a cell in a buffer, + +00:15:48.400 --> 00:15:52.199 +itself is connected tightly to + +00:15:52.200 --> 00:15:54.519 +how the re-display architecture works. + +00:15:54.520 --> 00:15:57.199 +So I think you'll have to sort of figure out + +00:15:57.200 --> 00:16:00.679 +what exactly you can salvage from ELISP + +00:16:00.680 --> 00:16:05.199 +without taking the display architecture baggage. + +00:16:05.200 --> 00:16:08.001 +That's right. I do anticipate + +00:16:08.002 --> 00:16:09.876 +that's going to be fairly challenging. + +00:16:09.877 --> 00:16:14.584 +It's all Turing-complete, + +00:16:14.585 --> 00:16:17.879 +so I imagine we're probably going to end up + +00:16:17.880 --> 00:16:21.039 +creating something like an emulator + +00:16:21.040 --> 00:16:24.319 +for the Emacs Lisp display architecture in Scheme + +00:16:24.320 --> 00:16:27.559 +that will somehow translate down + +00:16:27.560 --> 00:16:30.039 +to the React-like protocol that I've written. + +00:16:30.040 --> 00:16:32.719 +But yeah, I don't I haven't that's nice. + +00:16:32.720 --> 00:16:36.319 +No, this is this is very exciting. Yeah. Oh Yes, it is. + +00:16:36.320 --> 00:16:39.559 +Yeah, I'm glad so like a lot of people have told me + +00:16:39.560 --> 00:16:41.679 +that they really Are excited to see this project + +00:16:41.680 --> 00:16:42.719 +and this really helps me + +00:16:42.720 --> 00:16:46.399 +You know keep focused on this project + +00:16:46.400 --> 00:16:48.319 +because a lot of people are very interested. + +00:16:48.320 --> 00:16:50.359 +So It's so I'd like to move on + +00:16:50.360 --> 00:16:52.159 +to a couple of questions from the past. + +00:16:52.160 --> 00:16:54.479 +We're starting to build up a good backlog. + +00:16:54.480 --> 00:16:59.719 +Thank you for that. Yeah Next question from the pad I have. + +00:16:59.720 --> 00:17:02.239 +Can you tell us more about the show stopping bug? + +00:17:02.240 --> 00:17:04.159 +How to squash it? How can people help? + +00:17:04.160 --> 00:17:08.799 +OK, well, that one, unfortunately, I think, + +00:17:08.800 --> 00:17:11.679 +unless you're really a scheme genius + +00:17:11.680 --> 00:17:13.799 +and you can really read my code + +00:17:13.800 --> 00:17:15.479 +and immediately understand how it all works, + +00:17:15.480 --> 00:17:18.319 +I don't think you'd be able to help. + +00:17:18.320 --> 00:17:22.599 +It shouldn't be too difficult for me to fix. + +00:17:22.600 --> 00:17:26.639 +So it has to do with how closures work. + +00:17:26.640 --> 00:17:30.719 +And a closure is basically an object + +00:17:30.720 --> 00:17:33.159 +that can be created with stuff that's on the stack. + +00:17:33.160 --> 00:17:37.079 +And this is a feature, I think, + +00:17:37.080 --> 00:17:39.679 +that was introduced with Emacs 27. + +00:17:39.680 --> 00:17:40.879 +I can't remember exactly, + +00:17:40.880 --> 00:17:43.439 +but it's actually a relatively recent feature. + +00:17:43.440 --> 00:17:45.879 +It was ever since they introduced + +00:17:45.880 --> 00:17:50.999 +lexically scoped variable bindings in Emacs Lisp. + +00:17:51.000 --> 00:17:54.519 +And so yeah, the problem is that + +00:17:54.520 --> 00:17:59.839 +when you create like a let structure + +00:17:59.840 --> 00:18:01.799 +and you could declare a variable in the let. + +00:18:01.800 --> 00:18:05.399 +And then you create inside of that a second let structure, + +00:18:05.400 --> 00:18:07.239 +and you have a lambda inside of that. + +00:18:07.240 --> 00:18:11.319 +And the lambda references or uses a variable + +00:18:11.320 --> 00:18:14.399 +that was declared in the outer let binding. + +00:18:14.400 --> 00:18:18.279 +That outer let binding is somewhere on the stack. + +00:18:18.280 --> 00:18:22.999 +And the lambda you can actually return it as a value. + +00:18:23.000 --> 00:18:25.319 +So when you do return that lambda, + +00:18:25.320 --> 00:18:27.679 +it has to have a note somewhere inside + +00:18:27.680 --> 00:18:31.279 +that says, by the way, I'm using that variable. + +00:18:31.280 --> 00:18:34.359 +So you need to capture it and restore it to the stack + +00:18:34.360 --> 00:18:38.199 +whenever this lambda is applied, whenever you execute it. + +00:18:38.200 --> 00:18:40.959 +And that is where the error is. + +00:18:40.960 --> 00:18:44.399 +It's not capturing the stack variable properly. + +00:18:44.400 --> 00:18:46.879 +And I think what I'm going to do, + +00:18:46.880 --> 00:18:49.759 +I haven't looked into it in detail yet + +00:18:49.760 --> 00:18:53.279 +because I've gone back to GUI stuff recently, + +00:18:53.280 --> 00:18:55.479 +but what I'm going to do, I think, + +00:18:55.480 --> 00:18:57.799 +is just do a static analysis + +00:18:57.800 --> 00:18:59.079 +of the code inside of the Lambda + +00:18:59.080 --> 00:19:02.919 +and see which symbols are being used, + +00:19:02.920 --> 00:19:05.079 +and then just capture all of those + +00:19:05.080 --> 00:19:07.559 +and place those into the record type + +00:19:07.560 --> 00:19:09.519 +that stores the lambda. + +00:19:09.520 --> 00:19:12.679 +That's how I'm going to fix that, I think. + +00:19:12.680 --> 00:19:15.999 +I hope anyway that's going to work. + +00:19:16.000 --> 00:19:17.239 +You never know with bugs. + +00:19:17.240 --> 00:19:21.759 +They're always a little bit tricky. Okay, next question. + +00:19:21.760 --> 00:19:23.119 +Are there performance concerns + +00:19:23.120 --> 00:19:28.479 +with implementing certain C primitives in PeerScheme? + +00:19:28.480 --> 00:19:32.879 +So who is it? The famous computer scientist that said + +00:19:32.880 --> 00:19:35.879 +premature optimization is the root of all evil. + +00:19:35.880 --> 00:19:39.799 +I think it was the guy who invented the A star algorithm. + +00:19:39.800 --> 00:19:42.719 +His name escapes me at the minute. + +00:19:42.720 --> 00:19:49.359 +But yeah, I'm not concerned about performance yet, + +00:19:49.360 --> 00:19:52.119 +although most of the scheme compilers that I have seen, + +00:19:52.120 --> 00:19:56.999 +especially Shea and Gambit + +00:19:57.000 --> 00:20:02.039 +have extremely good performance characteristics. + +00:20:02.040 --> 00:20:03.679 +And so I think there won't be + +00:20:03.680 --> 00:20:05.879 +too much difficulty with performance, + +00:20:05.880 --> 00:20:08.759 +even implementing some of the C stuff. + +00:20:08.760 --> 00:20:10.759 +And besides, a lot of the GUI stuff + +00:20:10.760 --> 00:20:12.719 +is already written in C anyway. + +00:20:12.720 --> 00:20:14.399 +I mean, it would be cool + +00:20:14.400 --> 00:20:16.879 +if we had a scheme GUI library + +00:20:16.880 --> 00:20:18.599 +that painted to a canvas, + +00:20:18.600 --> 00:20:21.639 +maybe for a Wayland implementation or something. + +00:20:21.640 --> 00:20:29.079 +But I don't know. It's not a concern for me, performance. + +00:20:29.080 --> 00:20:32.079 +Okay, there are a few more questions. I do want to mention + +00:20:32.080 --> 00:20:33.839 +that the stream has cut away at this point, + +00:20:33.840 --> 00:20:36.279 +but we're still recording live. + +00:20:36.280 --> 00:20:38.799 +All of this will be put up on the website + +00:20:38.800 --> 00:20:40.399 +and so on like that. + +00:20:40.400 --> 00:20:44.199 +So, I appreciate all the enthusiastic questions + +00:20:44.200 --> 00:20:47.799 +and you're kind of tanking through them all. + +00:20:47.800 --> 00:20:52.799 +Me too. I love how many questions I'm getting. + +00:20:52.800 --> 00:20:54.039 +This is very encouraging + +00:20:54.040 --> 00:20:55.999 +and it really makes me want to keep on working on it. + +00:20:56.000 --> 00:20:56.879 +So it's great. + +00:20:56.880 --> 00:21:00.199 +I'm so glad to hear that because that's exactly the message + +00:21:00.200 --> 00:21:01.439 +I think you should be receiving. + +00:21:01.440 --> 00:21:04.159 +This is a fantastic project. Thank you so much. + +00:21:04.160 --> 00:21:08.439 +I'll just say so myself. If the project is successful, + +00:21:08.440 --> 00:21:11.479 +are you worried about a possible split in the community + +00:21:11.480 --> 00:21:15.599 +between Schemacs and GNU Emacs? + +00:21:15.600 --> 00:21:18.959 +Oh, I have thought about that. + +00:21:18.960 --> 00:21:24.039 +And I really don't know what's going to happen. + +00:21:24.040 --> 00:21:26.239 +There seems to be already a huge demand + +00:21:26.240 --> 00:21:30.439 +for a scheme-based, a modern scheme-based editor. + +00:21:30.440 --> 00:21:33.399 +You know, the Edwin scheme for MIT scheme + +00:21:33.400 --> 00:21:37.279 +hasn't been touched since like 1987 or something, + +00:21:37.280 --> 00:21:41.439 +maybe 1993 or, but anyway. + +00:21:41.440 --> 00:21:43.159 +There seems to be huge demand. + +00:21:43.160 --> 00:21:45.119 +And so I guess a lot of people + +00:21:45.120 --> 00:21:47.679 +who are currently using GNU Emacs + +00:21:47.680 --> 00:21:49.079 +will probably just switch over + +00:21:49.080 --> 00:21:50.479 +because they've been wanting + +00:21:50.480 --> 00:21:53.159 +something like this for a very long time. + +00:21:53.160 --> 00:21:56.559 +And then, I mean, is that going to cause fragmentation? + +00:21:56.560 --> 00:21:58.679 +Is it really a big deal, though? + +00:21:58.680 --> 00:22:02.479 +I mean, it's all GPL-licensed code. + +00:22:02.480 --> 00:22:08.759 +I mean, I think a rising tide raises all the ships at the same time. + +00:22:08.760 --> 00:22:13.279 +So, yeah, also, the last thing I want to say about that + +00:22:13.280 --> 00:22:18.999 +is I would like to contribute some of what I do in Schemacs + +00:22:19.000 --> 00:22:24.399 +back into GNU Emacs, if I can. So, for example, I'm going + +00:22:24.400 --> 00:22:25.959 +to be working on like a canvas library + +00:22:25.960 --> 00:22:27.879 +where you can have interactive canvases + +00:22:27.880 --> 00:22:30.879 +and you know you can actually like draw pictures + +00:22:30.880 --> 00:22:33.559 +and put things with the mouse and drag things around. + +00:22:33.560 --> 00:22:36.079 +And I was thinking you know + +00:22:36.080 --> 00:22:37.667 +if if I can figure out how that works + +00:22:37.668 --> 00:22:41.917 +maybe I can write something like that for Emacs + +00:22:41.918 --> 00:22:47.759 +or GNU Emacs using the Cairo library, you know, + +00:22:47.760 --> 00:22:49.319 +SVG rendering library that they have. + +00:22:49.320 --> 00:22:51.319 +So, you know, if I have time, + +00:22:51.320 --> 00:22:55.799 +I would like to continue contributing to GNU Emacs as well. + +00:22:55.800 --> 00:22:57.839 +I'm sorry, what was the name of the library you mentioned? + +00:22:57.840 --> 00:23:01.039 +Oh, Cairo, like Cairo. + +00:23:01.040 --> 00:23:07.599 +Oh, Cairo, yeah. Absolutely. I spelled that poorly. + +00:23:07.600 --> 00:23:12.519 +The dream of never needing to change to the web browser. + +00:23:12.520 --> 00:23:18.376 +Would schemacs bring us closer to that? I hope so. + +00:23:18.377 --> 00:23:21.709 +That's also a dream of mine. + +00:23:21.710 --> 00:23:26.479 +The part of the reason why I wanted to work, you know, + +00:23:26.480 --> 00:23:30.999 +make sure I had a really good workable GUI framework + +00:23:31.000 --> 00:23:32.626 +is so that I could, you know, + +00:23:32.627 --> 00:23:34.879 +we could write apps like, you know, + +00:23:34.880 --> 00:23:38.759 +they have a mastodon client written in Emacs Lisp. + +00:23:38.760 --> 00:23:42.199 +that would be so nice to have this, you know, + +00:23:42.200 --> 00:23:43.439 +a really nice Mastodon client + +00:23:43.440 --> 00:23:47.479 +that was right inside of, you know, our scheme environment + +00:23:47.480 --> 00:23:50.039 +where we were doing our text editing and other stuff. + +00:23:50.040 --> 00:23:52.079 +I've always wanted something like that, + +00:23:52.080 --> 00:23:53.799 +or it would be cool to have + +00:23:53.800 --> 00:23:56.319 +just a slightly nicer GUI for Magit. + +00:23:56.320 --> 00:24:04.199 +So, yeah, I mean, like, yeah, being able to avoid the web entirely + +00:24:04.200 --> 00:24:08.199 +and just be able to like, you know, do social networking + +00:24:08.200 --> 00:24:11.439 +and do your GitHub stuff, + +00:24:11.440 --> 00:24:14.759 +everything from within Emacs or Schemacs in this case, + +00:24:14.760 --> 00:24:16.919 +that's a dream of mine as well. + +00:24:16.920 --> 00:24:20.079 +And so I hope that that's where we end up in a couple of years. + +00:24:20.080 --> 00:24:29.999 +The sooner the better. Anything, just double checking. + +00:24:30.000 --> 00:24:33.319 +Anything specific other than minimalism + +00:24:33.320 --> 00:24:35.799 +that made you choose Scheme over Commonwealth? + +00:24:35.800 --> 00:24:40.199 +Oh, yeah, it's kind of a philosophical question. + +00:24:40.200 --> 00:24:45.559 +So a couple of things. First of all, it was a conversation + +00:24:45.560 --> 00:24:47.399 +I had with William Byrd, + +00:24:47.400 --> 00:24:50.519 +and he's a guy who makes the Mini Conran framework for Scheme. + +00:24:50.520 --> 00:24:52.879 +It was his PhD thesis. + +00:24:52.880 --> 00:24:57.119 +He worked with, I'm sorry, I just can't remember his name. + +00:24:57.120 --> 00:24:59.679 +He worked at the University of Indiana. + +00:24:59.680 --> 00:25:03.839 +Another famous Scheme or Lisp person was there. + +00:25:03.840 --> 00:25:06.279 +Friedman, Dan Friedman was his advisor. + +00:25:06.280 --> 00:25:09.159 +Yeah, big name in Lisp. + +00:25:09.160 --> 00:25:12.839 +Anyway, so I was talking with William Byrd, + +00:25:12.840 --> 00:25:14.639 +and I'm a huge Haskell fan, + +00:25:14.640 --> 00:25:16.919 +and he told me why he didn't like Haskell at all, + +00:25:16.920 --> 00:25:19.639 +and kind of convinced me to try Scheme out. + +00:25:19.640 --> 00:25:22.759 +And what I really like about Scheme is, + +00:25:22.760 --> 00:25:25.399 +yeah, like you said, the minimalism, + +00:25:25.400 --> 00:25:29.839 +but it's more that it is very close + +00:25:29.840 --> 00:25:34.879 +to the mathematical framework of lambda calculus. + +00:25:34.880 --> 00:25:38.519 +Haskell is probably the most pure + +00:25:38.520 --> 00:25:39.919 +lambda calculus that I've ever used, + +00:25:39.920 --> 00:25:45.519 +but Scheme is like the simply typed lambda calculus, + +00:25:45.520 --> 00:25:47.799 +and That just appeals to me. + +00:25:47.800 --> 00:25:50.839 +I think, you know, if you have this tiny, tiny core language + +00:25:50.840 --> 00:25:55.599 +from which all of the computing can be defined, + +00:25:55.600 --> 00:25:57.119 +I think it's kind of a shame + +00:25:57.120 --> 00:26:00.079 +that so far we just haven't explored that space yet. + +00:26:00.080 --> 00:26:03.639 +I mean, there's compared to JavaScript or Python, + +00:26:03.640 --> 00:26:05.879 +there's very little scheme code out there + +00:26:05.880 --> 00:26:08.239 +and it could be doing so much. And I would just like to try + +00:26:08.240 --> 00:26:10.159 +and expand the scheme ecosystem + +00:26:10.160 --> 00:26:12.999 +and see just what this tiny little language can do. + +00:26:13.000 --> 00:26:14.479 +And I think we haven't even seen + +00:26:14.480 --> 00:26:16.839 +a fraction of what it can do. + +00:26:16.840 --> 00:26:22.399 +That's why I've chosen scheme. + +00:26:22.400 --> 00:26:24.719 +Divya, I see you've got a bunch more comments. + +00:26:24.720 --> 00:26:26.679 +I think we're just about close to our time here, + +00:26:26.680 --> 00:26:28.279 +but if you wanted to jump back in, + +00:26:28.280 --> 00:26:30.519 +I'm sorry, I had to cut you off a little before. + +00:26:30.520 --> 00:26:33.959 +No, it's fine. No, it's fine. + +00:26:33.960 --> 00:26:36.599 +I think I agree with most of what he said. + +00:26:36.600 --> 00:26:40.679 +So, yeah, thank you so much. + +00:26:40.680 --> 00:26:45.159 +Um, closing thoughts, Ramin. + +00:26:45.160 --> 00:26:51.639 +Yeah, I guess everybody, please, if you're interested, + +00:26:51.640 --> 00:26:56.719 +keep watching my Mastodon and keep watching my Codeberg. + +00:26:56.720 --> 00:27:01.559 +I'm going to try and squash this bug as quickly as I can. + +00:27:01.560 --> 00:27:03.279 +I hope early next year, + +00:27:03.280 --> 00:27:07.519 +hopefully not much later than February, + +00:27:07.520 --> 00:27:12.039 +I'll actually be able to start taking in contributions + +00:27:12.040 --> 00:27:16.719 +for some of the Emacs Lisp built-ins in the code base. + +00:27:16.720 --> 00:27:21.959 +So, please keep watching. The pace of my development + +00:27:21.960 --> 00:27:24.279 +has increased pretty rapidly recently, + +00:27:24.280 --> 00:27:25.839 +and I think we're pretty close + +00:27:25.840 --> 00:27:29.119 +to getting something that we can all use together. + +00:27:29.120 --> 00:27:31.719 +Thank you once again for your amazing talk, + +00:27:31.720 --> 00:27:34.039 +for your exceptional work, + +00:27:34.040 --> 00:27:36.599 +and for jumping in, doing the live Q&A, + +00:27:36.600 --> 00:27:40.039 +rolling with us here as we have yet another + +00:27:40.040 --> 00:27:42.079 +We'll See How It Goes conference. + +00:27:42.080 --> 00:27:44.279 +It's been just amazing so far, + +00:27:44.280 --> 00:27:46.839 +and this talk is no small part of that. Thank you. + +00:27:46.840 --> 00:27:50.279 +Oh, thank you so much. Yeah. OK, cool. + +00:27:50.280 --> 00:27:51.834 +And thanks for all the questions, everyone. diff --git a/2025/captions/emacsconf-2025-sun-close--sunday-closing-remarks--main.vtt b/2025/captions/emacsconf-2025-sun-close--sunday-closing-remarks--main.vtt new file mode 100644 index 00000000..d2ad3832 --- /dev/null +++ b/2025/captions/emacsconf-2025-sun-close--sunday-closing-remarks--main.vtt @@ -0,0 +1,676 @@ +WEBVTT + +00:00:00.000 --> 00:00:17.279 +screen. That screen. Yes. All right. Thank you so much. + +00:00:17.280 --> 00:00:22.439 +We have made it thus far. It is the end of EmacsConf 2025. + +00:00:22.440 --> 00:00:24.359 +Oh, I better remember to open this + +00:00:24.360 --> 00:00:32.999 +in case anyone wants to join me in this room. + +00:00:49.460 --> 00:00:51.139 +Hang on a sec. And normally all this stuff + +00:00:51.140 --> 00:00:52.959 +gets done automatically by my scripts, + +00:00:52.960 --> 00:00:55.250 +so I'm doing it manually. Ah, there you go. + +00:00:55.251 --> 00:00:58.125 +Okay, now people can join. Hooray, we made it! + +00:00:58.126 --> 00:01:01.439 +Today was great, and yesterday was great too, + +00:01:01.440 --> 00:01:06.519 +with so many fascinating talks and conversations. + +00:01:06.520 --> 00:01:09.599 +I'm really, really glad that it all worked out, + +00:01:09.600 --> 00:01:12.159 +despite some running around + +00:01:12.160 --> 00:01:14.679 +and figuring things out on the fly, + +00:01:14.680 --> 00:01:18.559 +we all managed to get there. + +00:01:18.560 --> 00:01:20.639 +I actually have some of the live + +00:01:20.640 --> 00:01:22.959 +talks recordings up already + +00:01:22.960 --> 00:01:28.399 +on media.emacsconf.org and YouTube, assuming things work. + +00:01:28.400 --> 00:01:33.319 +I'm just going to republish it from Emacs naturally. + +00:01:33.320 --> 00:01:36.359 +As you can see, I was e-debugging things + +00:01:36.360 --> 00:01:37.479 +to the very last minute. + +00:01:37.480 --> 00:01:39.799 +Yeah, feel free to spread the word. + +00:01:39.800 --> 00:01:42.519 +I check the Emacs hashtag every week + +00:01:42.520 --> 00:01:45.839 +as part of the Emacs news process anyway. + +00:01:45.840 --> 00:01:47.839 +So if you have any favorite talks, + +00:01:47.840 --> 00:01:52.039 +that's a great way to share the ideas with more people, + +00:01:52.040 --> 00:01:54.559 +and then even more conversations can happen. + +00:01:54.560 --> 00:01:58.079 +The prerecorded talks, as I mentioned, + +00:01:58.080 --> 00:02:00.239 +are already up on the wiki + +00:02:00.240 --> 00:02:05.199 +and at the media emacsconf.org slash 2027 website. + +00:02:05.200 --> 00:02:10.959 +Sorry, 2025. We're not in the time machine. 2025 site. + +00:02:10.960 --> 00:02:13.799 +And they should already be on YouTube as well. + +00:02:13.800 --> 00:02:16.399 +I will upload the late submissions + +00:02:16.400 --> 00:02:18.999 +and the live talks and the Q&A sessions + +00:02:19.000 --> 00:02:20.439 +over the next week or two. + +00:02:20.440 --> 00:02:23.199 +I usually get that done very quickly. + +00:02:23.200 --> 00:02:27.519 +I didn't even finish this sentence. + +00:02:27.520 --> 00:02:31.079 +I'll post an update to the Emacs Conf Discuss mailing list, + +00:02:31.080 --> 00:02:34.479 +so feel free to subscribe to that if you'd like an update. + +00:02:34.480 --> 00:02:37.559 +If you've got ideas for making things better, + +00:02:37.560 --> 00:02:40.959 +then feel free to drop them into the Etherpad + +00:02:40.960 --> 00:02:45.759 +so that we can make next year's conference even smoother. + +00:02:45.760 --> 00:02:51.119 +I had a lot of people watching, so thank you for that. + +00:02:51.120 --> 00:02:53.719 +And of course, thanks to all the speakers + +00:02:53.720 --> 00:02:56.359 +who put hours and hours into their presentations, + +00:02:56.360 --> 00:03:01.079 +the volunteers who helped both before and during the conference + +00:03:01.080 --> 00:03:03.439 +and who will help in the days ahead + +00:03:03.440 --> 00:03:08.919 +as we get everything extracted and packaged and transcribed even, + +00:03:08.920 --> 00:03:11.239 +and a nice chapter indices on the Q&A + +00:03:11.240 --> 00:03:14.399 +so you can jump to when a specific question was answered, + +00:03:14.400 --> 00:03:16.519 +all that good stuff. + +00:03:16.520 --> 00:03:19.799 +and to all those other people in their lives + +00:03:19.800 --> 00:03:23.479 +whose patience and support make all of this possible. + +00:03:23.480 --> 00:03:26.919 +So thank you so much for that. + +00:03:26.920 --> 00:03:30.199 +This year's host, you saw Corwin and you saw, + +00:03:30.200 --> 00:03:32.319 +I mean, what's, why am I, + +00:03:32.320 --> 00:03:34.439 +wait, I'm like buzzing all over the place + +00:03:34.440 --> 00:03:37.039 +as people are mentioning my nick on IRC. + +00:03:37.040 --> 00:03:40.319 +All right, now that I'm in do not disturb mode. + +00:03:40.320 --> 00:03:42.199 +So thank you to the hosts + +00:03:42.200 --> 00:03:43.839 +and thank you to other volunteers, + +00:03:43.840 --> 00:03:49.919 +JC and Trico and James and Amitav and Rodion and Jaybird and Indra. + +00:03:49.920 --> 00:03:55.119 +and Yang3, and Bhavin, and Michael, and Ian, + +00:03:55.120 --> 00:03:57.879 +and Jamie, and Ihor, and FlowyCoder, + +00:03:57.880 --> 00:03:58.839 +and probably other people + +00:03:58.840 --> 00:04:02.599 +that I have forgotten to copy out of my conference.org file + +00:04:02.600 --> 00:04:05.159 +and into this, but thank you anyway. + +00:04:05.160 --> 00:04:08.039 +Thank you to the Free Software Foundation. + +00:04:08.040 --> 00:04:12.159 +They host the mailing list, they host the media server, + +00:04:12.160 --> 00:04:16.359 +and of course, they've got like Emacs, so that's awesome. + +00:04:16.360 --> 00:04:23.479 +To make things easier, our streams are actually not on my computer. + +00:04:23.480 --> 00:04:26.279 +We use OBS and a server, + +00:04:26.280 --> 00:04:30.279 +a fairly beefy one that Ry P shares with us. + +00:04:30.280 --> 00:04:33.279 +So then I can VNC into it and control OBS + +00:04:33.280 --> 00:04:36.239 +and stream to IceCast and all that other goodness. + +00:04:36.240 --> 00:04:39.719 +And I don't have to worry about my computer stressing out. + +00:04:39.720 --> 00:04:43.439 +It's all good. And so we use a whole lot of free + +00:04:43.440 --> 00:04:45.519 +and open source software in the stack. + +00:04:45.520 --> 00:04:47.119 +So we are very, very grateful + +00:04:47.120 --> 00:04:49.159 +for all the users and contributors + +00:04:49.160 --> 00:04:50.759 +who make all of that possible. + +00:04:50.760 --> 00:04:55.919 +Things like Emacs and Org Mode and ERC and Tramp and Magit + +00:04:55.920 --> 00:04:59.159 +and BigBlueButton and Etherpad and IckyWicky and IceCast + +00:04:59.160 --> 00:05:02.319 +and OBS and TheLaunch and LiberaChat and FFmpeg + +00:05:02.320 --> 00:05:05.719 +and OpenAI Whisper, WhisperX, different interface. + +00:05:05.720 --> 00:05:09.639 +The Aeneas forced alignment tool, site transfer for uploads, + +00:05:09.640 --> 00:05:11.679 +subed for editing the subtitles, + +00:05:11.680 --> 00:05:14.439 +sub-seg for cutting the subtitles into nice chunks + +00:05:14.440 --> 00:05:17.399 +so that you're not like trying to read a whole lot in one line, + +00:05:17.400 --> 00:05:22.759 +Mozilla Firefox, MPV and TamperMonkey + +00:05:22.760 --> 00:05:25.919 +so that everything gets automatically logged in + +00:05:25.920 --> 00:05:30.479 +when the stream switches to like a big blue button room, it's handy. + +00:05:30.480 --> 00:05:32.999 +and of course, many other tools and services + +00:05:33.000 --> 00:05:35.199 +that we use to prepare and host this year's conference. + +00:05:35.200 --> 00:05:37.199 +Thanks to Shoshin for the music. + +00:05:37.200 --> 00:05:39.479 +He's an Emacs geek as well. + +00:05:39.480 --> 00:05:42.159 +If you also have music that you'd like to share with us + +00:05:42.160 --> 00:05:44.999 +under the Creative Commons Attribution License, + +00:05:45.000 --> 00:05:47.239 +please feel free to let me know + +00:05:47.240 --> 00:05:50.679 +or I should put in my email address here. + +00:05:50.680 --> 00:05:57.079 +Yeah, sacha@sachachua.com. + +00:05:57.080 --> 00:05:59.559 +So let us know in case you have music + +00:05:59.560 --> 00:06:01.599 +or other things you want to share. + +00:06:01.600 --> 00:06:03.599 +Thanks to the people who donated + +00:06:03.600 --> 00:06:06.439 +via the FSF working together program. + +00:06:06.440 --> 00:06:09.919 +It costs like I think less than a hundred dollars + +00:06:09.920 --> 00:06:11.319 +to run this whole thing + +00:06:11.320 --> 00:06:14.879 +that the biggest thing really is people's time. + +00:06:14.880 --> 00:06:17.119 +And thank you so much for sharing that with us. + +00:06:17.120 --> 00:06:20.719 +So yes, but thank you specifically to Scott and Jonathan + +00:06:20.720 --> 00:06:23.039 +and the other anonymous donors + +00:06:23.040 --> 00:06:26.479 +through the Working Together program. + +00:06:26.480 --> 00:06:30.199 +And that's where we are so far. Feel free to join me. + +00:06:30.200 --> 00:06:32.319 +I can be here until the kiddo says + +00:06:32.320 --> 00:06:34.719 +I have not given her enough hugs for today. + +00:06:34.720 --> 00:06:40.439 +But if you want to like do a quick recap of your favorite talks + +00:06:40.440 --> 00:06:43.719 +or how you're excited to take things going forward + +00:06:43.720 --> 00:06:45.159 +and all that stuff. + +00:06:45.160 --> 00:06:47.719 +You can join me in this as Sunday closing. + +00:06:47.720 --> 00:06:49.519 +If you look at the talk page, + +00:06:49.520 --> 00:06:51.999 +there's going to be theoretically + +00:06:52.000 --> 00:06:54.999 +a big blue button link there that you can join. + +00:06:55.000 --> 00:07:04.839 +But thank you for this. And now it's like awkward silence. + +00:07:04.840 --> 00:07:07.719 +I'm wondering what you learned most + +00:07:07.720 --> 00:07:09.519 +from this conference this year. + +00:07:09.520 --> 00:07:11.679 +Because I'm running around so much, + +00:07:11.680 --> 00:07:23.839 +I don't get a lot of the live stuff. + +00:07:23.840 --> 00:07:30.039 +Like, for example, when I was listening to your Q&A, + +00:07:30.040 --> 00:07:34.519 +I had it in one ear and I had Christian's dental casting Q&A in the other ear, + +00:07:34.520 --> 00:07:36.879 +so that just in case he had questions also. + +00:07:36.880 --> 00:07:39.559 +which kind of just meant I was listening for silences + +00:07:39.560 --> 00:07:43.199 +and that meant I had to read the next question out loud. + +00:07:43.200 --> 00:07:46.879 +But I love going through the videos and captioning them. + +00:07:46.880 --> 00:07:50.599 +And I'm really excited about the kinds of conversations + +00:07:50.600 --> 00:07:53.719 +that people have been having on the etherpacks and IRC. + +00:07:53.720 --> 00:07:57.039 +So I think the biggest thing that I'm learning + +00:07:57.040 --> 00:08:00.999 +is that people are having a lot of fun with Emacs. + +00:08:01.000 --> 00:08:05.199 +Which is no surprise, of course. + +00:08:05.200 --> 00:08:09.079 +But it's always so exciting to see people bump into other people + +00:08:09.080 --> 00:08:11.159 +whose minds work the same way. + +00:08:11.160 --> 00:08:17.639 +And then who knows where that will go over the next year, over the next years. + +00:08:17.640 --> 00:08:22.039 +That's sort of an interesting topic, + +00:08:22.040 --> 00:08:24.279 +is like how to keep the conversations + +00:08:24.280 --> 00:08:27.439 +going between the conferences, you know? + +00:08:27.440 --> 00:08:33.039 +is where do people hang out and discuss these things? + +00:08:33.040 --> 00:08:49.359 +Reddit's one place. IRC. I figure it's... Sorry, go ahead. I'm done. + +00:08:49.360 --> 00:08:54.879 +I think it's rather... + +00:08:54.880 --> 00:08:59.679 +I like to think of it as the start of the conversation. + +00:08:59.680 --> 00:09:08.159 +And so we have around 100 people, + +00:09:08.160 --> 00:09:12.639 +more than 100, around 200 people yesterday, + +00:09:12.640 --> 00:09:14.999 +around 100 today joining us. + +00:09:15.000 --> 00:09:16.999 +And those are a lot of conversations, + +00:09:17.000 --> 00:09:18.639 +but then they're the conversations that happen + +00:09:18.640 --> 00:09:22.399 +when people look up the videos and the captions + +00:09:22.400 --> 00:09:25.399 +and the resources that people have shared. + +00:09:25.400 --> 00:09:30.079 +And so I think it gives us a lot of material, + +00:09:30.080 --> 00:09:31.679 +a lot of exciting points + +00:09:31.680 --> 00:09:34.359 +for plenty of other conversations this year. + +00:09:34.360 --> 00:09:41.119 +Yeah, it's a great community. Oh, yes, I should mention, + +00:09:41.120 --> 00:09:42.799 +the conversation doesn't stop here + +00:09:42.800 --> 00:09:44.399 +because there are mailing lists. + +00:09:44.400 --> 00:09:45.999 +Thank you, Rudy, for the reminder. + +00:09:46.000 --> 00:09:50.759 +If you're looking for more of this kind of sense of community, + +00:09:50.760 --> 00:09:56.879 +there's like, well, Emacs Develop course has a lot of technical discussions going on, + +00:09:56.880 --> 00:10:00.559 +but the Org Mode mailing list is very nice. + +00:10:00.560 --> 00:10:02.719 +There are also lots of meetups. + +00:10:02.720 --> 00:10:05.199 +There's definitely a meetup every month. + +00:10:05.200 --> 00:10:10.639 +Org Meetup, in fact, is happening in a couple of days. + +00:10:10.640 --> 00:10:13.159 +If you look on the Emacs wiki for user groups, + +00:10:13.160 --> 00:10:14.719 +or you check my Emacs news, + +00:10:14.720 --> 00:10:16.959 +or you check, if you look for like Emacs calendar, + +00:10:16.960 --> 00:10:20.679 +which I think I put on like emacslife.com slash calendar, + +00:10:20.680 --> 00:10:22.639 +then you'll find upcoming meetups. + +00:10:22.640 --> 00:10:26.999 +so that you can keep reconnecting with people. + +00:10:27.000 --> 00:10:29.599 +And if you come up with something cool, + +00:10:29.600 --> 00:10:33.759 +you don't have to wait until the next Emacs Con + +00:10:33.760 --> 00:10:35.279 +to show it to everybody. + +00:10:35.280 --> 00:10:43.079 +You can also go to these meetups and start sharing it + +00:10:43.080 --> 00:10:53.319 +and get feedback and make it even better and so on. + +00:10:53.320 --> 00:10:56.399 +Great, thank you. Rudy says, the Emacs bugs mailing list + +00:10:56.400 --> 00:10:58.599 +is surprisingly interesting as well. + +00:10:58.600 --> 00:11:01.439 +Lots of discussion on there, various details + +00:11:01.440 --> 00:11:04.159 +and upcoming little features every single day. + +00:11:04.160 --> 00:11:37.999 +Oh yes, Maddie would like another shout out for Emacs Carnival + +00:11:38.000 --> 00:11:41.319 +which is a monthly blogging people share topics + +00:11:41.320 --> 00:11:46.999 +so that people can all write about the same thing + +00:11:47.000 --> 00:11:52.439 +and then discover other people's perspectives on it. + +00:11:52.440 --> 00:11:54.839 +There have been quite a few now. + +00:11:54.840 --> 00:11:57.759 +So if you want, you can go through the Emacs Carnival page + +00:11:57.760 --> 00:12:01.239 +in the Emacs wiki and start exploring the past issues. + +00:12:01.240 --> 00:12:04.039 +The host will have a list of links + +00:12:04.040 --> 00:12:07.079 +to the people who've submitted. So it's a great way to see + +00:12:07.080 --> 00:12:09.919 +what other people in the community + +00:12:09.920 --> 00:12:11.359 +have been thinking about something. + +00:12:11.360 --> 00:12:18.279 +Also, people are very curious about the fonts and templates + +00:12:18.280 --> 00:12:20.599 +that people use for their presentations. + +00:12:20.600 --> 00:12:22.599 +It's always, that's one of the things + +00:12:22.600 --> 00:12:23.959 +I love about presentations. + +00:12:23.960 --> 00:12:26.359 +You kind of get this, you pick up so much more + +00:12:26.360 --> 00:12:28.599 +when you're looking over someone's shoulder, + +00:12:28.600 --> 00:12:32.079 +the things that they would forget to even mention + +00:12:32.080 --> 00:12:34.199 +because it's not the point of their talk + +00:12:34.200 --> 00:12:36.839 +or they take it for granted. + +00:12:36.840 --> 00:12:40.519 +So, yes. if the presenters can share their fonts + +00:12:40.520 --> 00:12:44.479 +and setups and themes and stuff like that. + +00:12:44.480 --> 00:12:47.279 +Or if you as a viewer have been watching something + +00:12:47.280 --> 00:12:50.639 +and you see someone do this really cool keyword shortcut + +00:12:50.640 --> 00:12:53.279 +and you have no idea how they did that, + +00:12:53.280 --> 00:12:56.119 +because of course, you know, it just flies by too quickly + +00:12:56.120 --> 00:12:57.639 +and it's part of their muscle memory, + +00:12:57.640 --> 00:12:59.239 +so they don't even explain it anymore. + +00:12:59.240 --> 00:13:01.799 +Go ahead and ask the speakers, hey, + +00:13:01.800 --> 00:13:05.799 +that command that you did, that just did the magic, how? + +00:13:05.800 --> 00:13:11.759 +So yes, please feel free to go back over the videos, + +00:13:11.760 --> 00:13:12.679 +look at them slowly, + +00:13:12.680 --> 00:13:45.079 +look for interesting things you want to learn more about. + +00:13:45.080 --> 00:13:49.159 +All right, it sounds like we are + +00:13:49.160 --> 00:13:53.239 +pretty much ready to wrap up. + +00:13:53.240 --> 00:13:58.999 +So thank you, everyone, for coming. + +00:13:59.000 --> 00:14:01.519 +See you next year and also in the months in between + +00:14:01.520 --> 00:14:02.479 +because there are meetups, + +00:14:02.480 --> 00:14:04.039 +which you're going to go check out and have fun at. + +00:14:04.040 --> 00:14:05.879 +Thank you for this. + +00:14:05.880 --> 00:14:07.919 +Yes, thank you for this nice Emacs weekend. + +00:14:07.920 --> 00:14:14.319 +Thanks for putting it all together, Sacha and everyone. + +00:14:14.320 --> 00:14:19.326 +That's great. Bye! diff --git a/2025/captions/emacsconf-2025-weights--weightlifting-tracking-with-emacs-on-android--zachary-romero--main.vtt b/2025/captions/emacsconf-2025-weights--weightlifting-tracking-with-emacs-on-android--zachary-romero--main.vtt new file mode 100644 index 00000000..6d1efa38 --- /dev/null +++ b/2025/captions/emacsconf-2025-weights--weightlifting-tracking-with-emacs-on-android--zachary-romero--main.vtt @@ -0,0 +1,1672 @@ +WEBVTT + +00:00.000 --> 00:05.819 +And you're ready to go. All right, perfect. + +00:05.820 --> 00:07.875 +Hello, my name is Zachary Romero + +00:07.876 --> 00:08.879 +and today I'll be giving a talk + +00:08.880 --> 00:12.719 +on how I'm using Emacs for Android + +00:12.720 --> 00:15.399 +to replace my fitness app I normally use. + +00:15.400 --> 00:17.239 +So it goes without saying + +00:17.240 --> 00:21.559 +that a lot of the mobile ecosystem these days + +00:21.560 --> 00:25.439 +are pretty hostile to the interest of its users. + +00:25.440 --> 00:26.999 +So there's privacy policies + +00:27.000 --> 00:32.959 +that are constantly collecting your data and selling it. + +00:32.960 --> 00:36.399 +without your consent, bombardment of ads. + +00:36.400 --> 00:37.999 +And then there's a lot of features that are locked. + +00:38.000 --> 00:40.479 +Sometimes features that the app gives you, + +00:40.480 --> 00:42.959 +they're put behind paywalls. + +00:42.960 --> 00:45.159 +And so a lot of the ecosystem + +00:45.160 --> 00:49.119 +isn't in the best interest of users. + +00:49.120 --> 00:51.959 +And obviously there are apps like on F-Droid + +00:51.960 --> 00:56.799 +and the Android ecosystem that do try to address this, + +00:56.800 --> 00:59.159 +but the solutions overall are lagging + +00:59.160 --> 01:05.439 +behind maybe desktop computers. + +01:05.440 --> 01:14.479 +One option that has come in the past few years + +01:14.480 --> 01:17.239 +is Emacs on Android. It's just a normal Emacs build, + +01:17.240 --> 01:21.159 +and so it can do everything, in theory, that Emacs can do. + +01:21.160 --> 01:24.399 +And so I got to thinking how could I, how I could use Emacs + +01:24.400 --> 01:27.039 +to replace some of the proprietary apps + +01:27.040 --> 01:28.479 +that I use on a daily basis. + +01:28.480 --> 01:31.279 +So I just went thinking about the apps, + +01:31.280 --> 01:33.039 +the apps that Emacs can replace. + +01:33.040 --> 01:35.119 +Some of them seem quite easy. + +01:35.120 --> 01:39.879 +Some of them... maybe might take a little effort but seem doable + +01:39.880 --> 01:41.959 +and then obviously there's a whole class of apps + +01:41.960 --> 01:47.199 +that would be pretty impossible to emulate on Emacs. + +01:47.200 --> 01:52.679 +So I mean besides like to-do lists, note taking, org mode, + +01:52.680 --> 01:55.759 +one thing that came to mind was my fitness tracking app. + +01:55.760 --> 01:59.239 +This is an app I use pretty often + +01:59.240 --> 02:06.719 +and in theory Emacs should be quite usable for this case. + +02:06.720 --> 02:09.759 +So weightlifting tracking is, + +02:09.760 --> 02:13.599 +so it's normally used to record + +02:13.600 --> 02:17.519 +what exercises you do at what intensity + +02:17.520 --> 02:20.719 +in order to progress week by week. + +02:20.720 --> 02:25.719 +So you might plan on like slowly increasing + +02:25.720 --> 02:27.399 +the amount of effort you put into + +02:27.400 --> 02:30.159 +your various workouts from week to week, + +02:30.160 --> 02:34.079 +and then maybe you'll have put some rest weeks in there. + +02:34.080 --> 02:37.439 +And so you want a detailed plan + +02:37.440 --> 02:40.439 +and recording of what you do throughout the week. + +02:40.440 --> 02:43.919 +And so I guess way back, normally + +02:43.920 --> 02:45.919 +this would have been done on pen and paper. + +02:45.920 --> 02:48.079 +So you would take your notebook + +02:48.080 --> 02:50.999 +and just write down on paper what you did. + +02:51.000 --> 02:56.559 +And this obviously works, and a lot of people do do this. + +02:56.560 --> 02:59.799 +But these days, there are quite a few apps + +02:59.800 --> 03:02.639 +that make this process quite seamless and effortless. + +03:02.640 --> 03:06.279 +So just as an example, really fast. + +03:06.280 --> 03:09.039 +So this is one of the popular apps out these days + +03:09.040 --> 03:10.399 +that has such a feature. + +03:10.400 --> 03:13.479 +So you can save all your workout routines + +03:13.480 --> 03:14.319 +and this nice interface. + +03:14.320 --> 03:18.719 +And so you click a button and then it starts, + +03:18.720 --> 03:20.919 +you have the workout interface and then + +03:20.920 --> 03:23.439 +You can kind of, you go through your workout + +03:23.440 --> 03:25.079 +and then you can input, + +03:25.080 --> 03:27.399 +you can input like what things you do. + +03:27.400 --> 03:29.119 +And then it has this like fancy timer at the bottom. + +03:29.120 --> 03:30.959 +So like, this is kind of like the, + +03:30.960 --> 03:35.839 +kind of like what a lot of people use these days, + +03:35.840 --> 03:39.319 +just for, just for, to make it as frictionless as possible. + +03:39.320 --> 03:44.359 +So obviously you can do like this bare bone text editing in Emacs. + +03:44.360 --> 03:46.959 +You just have to open up an org mode file and just right away. + +03:46.960 --> 03:48.879 +So, but there are a number of problems with this. + +03:48.880 --> 03:50.559 +So like, especially on mobile, + +03:50.560 --> 03:52.719 +character by character editing, + +03:52.720 --> 03:55.879 +just like writing all these, this text out manually, + +03:55.880 --> 03:58.759 +maybe some formatting, it can be pretty tedious + +03:58.760 --> 04:01.839 +and not, maybe not something you want to, you want to have to do, + +04:01.840 --> 04:04.559 +especially if you're like exhausted or tired. + +04:04.560 --> 04:06.479 +So, I mean, there's also like the problem + +04:06.480 --> 04:09.439 +of like remembering which, where in your workout you are, + +04:09.440 --> 04:11.839 +like how many of these, these, like which, + +04:11.840 --> 04:13.479 +which, like where are you, where you are, + +04:13.480 --> 04:17.159 +like, um like which set number set number are you on + +04:17.160 --> 04:17.679 +are you on the first second + +04:17.680 --> 04:19.919 +and then also like maybe you failed + +04:19.920 --> 04:22.239 +maybe you weren't able to like perform this + +04:22.240 --> 04:24.279 +and maybe you have to make a note that so like + +04:24.280 --> 04:28.279 +so that's even more text editing you would have to do + +04:28.280 --> 04:30.959 +um also some things like unit conversions + +04:30.960 --> 04:31.799 +like you could use calc + +04:31.800 --> 04:35.879 +but then you know you'd have to like open up the calc, + +04:35.880 --> 04:39.799 +and then number, unit conversion, switch buffers. + +04:39.800 --> 04:41.999 +So it's doable, but it takes a little effort. + +04:42.000 --> 04:43.439 +And then also the rest timer. + +04:43.440 --> 04:45.399 +So if you want to make sure you're resting + +04:45.400 --> 04:46.999 +in between these exercises you do, + +04:47.000 --> 04:51.079 +you'd have to maybe open up another app, + +04:51.080 --> 04:52.439 +or maybe you'd have to bring your watch. + +04:52.440 --> 04:53.719 +So that's another thing that + +04:53.720 --> 04:58.399 +these apps normally would do for you. + +04:58.400 --> 05:02.559 +So writing some Elisp, I created a package + +05:02.560 --> 05:04.479 +to try to emulate that experience + +05:04.480 --> 05:06.079 +I showed you on that other app. + +05:06.080 --> 05:08.159 +So let me just demo this real fast. + +05:08.160 --> 05:13.679 +So here, the package is called org-fit. + +05:13.680 --> 05:17.359 +And so here, I'm going to start a new workout. + +05:17.360 --> 05:19.559 +And then here, I'm prompted by a list of routines + +05:19.560 --> 05:22.159 +that I have pre-written in org mode. + +05:22.160 --> 05:25.759 +So the header name is the routine name. + +05:25.760 --> 05:29.279 +And so I can, out of all these routines I've written, + +05:29.280 --> 05:35.959 +I can select one and then also I can have it populate. + +05:35.960 --> 05:41.519 +So here it's populating preset weights I had for it. + +05:41.520 --> 05:45.839 +So yeah, so basically this is my current attempt + +05:45.840 --> 05:47.599 +to emulate that experience. + +05:47.600 --> 05:51.039 +So here we can, so here like the arrows and the tabs, + +05:51.040 --> 05:55.239 +they only go through like the, editable fields I can so + +05:55.240 --> 05:58.119 +on the notes section you see you see here in the table + +05:58.120 --> 06:00.439 +this is like the my plan for the day + +06:00.440 --> 06:02.159 +so I can press space to easily + +06:02.160 --> 06:03.839 +just fill out the data tab + +06:03.840 --> 06:06.879 +go the next the next the next set + +06:06.880 --> 06:10.239 +I can press quote to copy from above + +06:10.240 --> 06:13.359 +There's also some interesting things with Android, + +06:13.360 --> 06:15.719 +like you can bind the volume down key. + +06:15.720 --> 06:17.319 +So here I have the volume down key + +06:17.320 --> 06:21.439 +just like inputting the data automatically + +06:21.440 --> 06:22.399 +and going to the next field. + +06:22.400 --> 06:26.639 +So you see there it's quite seamless input of information. + +06:26.640 --> 06:30.119 +Notice also when all the sets + +06:30.120 --> 06:31.839 +of a single exercise are done, + +06:31.840 --> 06:34.759 +it marks that heading as done. + +06:34.760 --> 06:37.959 +Also, if you notice at the top, on the left, + +06:37.960 --> 06:42.239 +you have the session time for the workout. + +06:42.240 --> 06:44.199 +And then on here, we have the rest timer. + +06:44.200 --> 06:48.519 +So the rest timer is actually just defined as an org mode property. + +06:48.520 --> 06:50.839 +So here it's saying that, okay, + +06:50.840 --> 06:52.759 +you should start the auto rest timer + +06:52.760 --> 06:54.479 +for three minutes every time you do a set. + +06:54.480 --> 06:58.279 +So here, let's fill it in, go to the next one. + +06:58.280 --> 07:00.639 +And now the rest timer is set for three minutes. + +07:00.640 --> 07:03.079 +And so here I have, I can just rest + +07:03.080 --> 07:05.879 +I just have the information right here. + +07:05.880 --> 07:08.119 +Also, you'll notice here we have + +07:08.120 --> 07:09.439 +some calculations at the bottom. + +07:09.440 --> 07:12.159 +This is something also that those apps provide, + +07:12.160 --> 07:14.319 +like in order to make sure you're tracking + +07:14.320 --> 07:16.719 +on certain levels of intensity. + +07:16.720 --> 07:22.599 +Let's see, what else do we have? + +07:22.600 --> 07:30.879 +We can add warmups, automatic warmup set inserting, unit conversions, + +07:30.880 --> 07:33.439 +and then Something else to know + +07:33.440 --> 07:35.439 +is that all of these actions I'm doing, + +07:35.440 --> 07:37.079 +they're all bound to a single key + +07:37.080 --> 07:40.159 +to make things as effortless as possible. + +07:40.160 --> 07:43.679 +So yeah, that's the app in a nutshell. + +07:43.680 --> 07:47.079 +And then, so how is this done? + +07:47.080 --> 07:51.239 +So the philosophy behind this is to use org mode as a base. + +07:51.240 --> 07:55.639 +So all the functionality, the timer for the session, + +07:55.640 --> 08:00.319 +that's just clock in or clock in. + +08:00.320 --> 08:05.159 +The various, all the data you fill in, + +08:05.160 --> 08:09.519 +the exercises, routines, those are just org headings, + +08:09.520 --> 08:12.159 +like with nested entries. + +08:12.160 --> 08:14.959 +So yeah, and then all the movement, + +08:14.960 --> 08:16.759 +like a lot of the editing stuff + +08:16.760 --> 08:18.559 +is just going off of the org mode API. + +08:18.560 --> 08:22.919 +So like here, my upper field, is actually just using the, + +08:22.920 --> 08:26.239 +so it's using like the org table go to line function. + +08:26.240 --> 08:28.999 +Adding a no is org table put. + +08:29.000 --> 08:31.319 +So like all of my functions I'm using, + +08:31.320 --> 08:33.239 +they're just building off of the org mode API. + +08:33.240 --> 08:38.199 +And I found that this pattern worked work pretty well. + +08:38.200 --> 08:41.959 +So you get the benefits of org mode + +08:41.960 --> 08:48.839 +and then the ease of using it on mobile. + +08:48.840 --> 08:51.919 +And so I guess in the last few minutes of this talk, + +08:51.920 --> 08:53.479 +I'll just go over some quick things + +08:53.480 --> 08:56.319 +about working with Android that might come up. + +08:56.320 --> 08:58.879 +So the first thing is notifications. + +08:58.880 --> 09:01.039 +This is actually an interesting feature. + +09:01.040 --> 09:03.679 +So In the Android build for Emacs, + +09:03.680 --> 09:05.799 +you have the function android notifications notify. + +09:05.800 --> 09:09.039 +And so here, this is how you can send a notification. + +09:09.040 --> 09:11.999 +So my rest timer, for example, utilizes this function + +09:12.000 --> 09:14.399 +to let you know when your rest is over. + +09:14.400 --> 09:22.439 +And the cool thing about this is that the build for Emacs + +09:22.440 --> 09:29.039 +lets you, so here in the app settings, under notifications, + +09:29.040 --> 09:33.039 +so here you can actually pick a notification group, + +09:33.040 --> 09:36.639 +which is here set, which is, yeah, so it's set right here + +09:36.640 --> 09:37.999 +and you can just customize it. + +09:38.000 --> 09:39.599 +So like what sound do you want it to make? + +09:39.600 --> 09:40.439 +Do you want it to vibrate? + +09:40.440 --> 09:41.679 +Do you want to show on the screen? + +09:41.680 --> 09:43.519 +And so this way, like you can easily, + +09:43.520 --> 09:46.839 +so if you are resting, you will get a notification. + +09:46.840 --> 09:47.879 +It will vibrate. + +09:47.880 --> 09:50.079 +it might make a really loud noise if you want it to. + +09:50.080 --> 09:51.919 +And so this is all customizable. + +09:51.920 --> 09:54.479 +And the cool thing is that if you have other packages + +09:54.480 --> 09:55.639 +that utilize these notifications, + +09:55.640 --> 09:57.479 +all of the notification groups, + +09:57.480 --> 10:01.079 +they're all customizable separately. So, and there we go. + +10:01.080 --> 10:02.359 +So that notification you see on the top + +10:02.360 --> 10:04.999 +is actually from the Emacs app. + +10:05.000 --> 10:07.399 +So you notice here, we're not even running Emacs + +10:07.400 --> 10:09.759 +and yet we got that rest timer is over. + +10:09.760 --> 10:13.559 +So that's one thing. Next, keyboard. + +10:13.560 --> 10:15.039 +So just when working with Emacs, + +10:15.040 --> 10:19.079 +I found using the unexpected keyboard, in particular, + +10:19.080 --> 10:22.519 +to be really helpful with all the keybinding. + +10:22.520 --> 10:25.879 +So if you just want to try out Emacs + +10:25.880 --> 10:27.719 +from F-Droid or something, + +10:27.720 --> 10:30.239 +I would recommend using a keyboard like this + +10:30.240 --> 10:33.999 +to let you use the meta keys and the control keys. + +10:34.000 --> 10:37.039 +And then yeah, using this keyboard, + +10:37.040 --> 10:39.159 +I haven't really noticed any problems + +10:39.160 --> 10:41.679 +with Emacs key bindings. + +10:41.680 --> 10:45.159 +And then lastly, just like my setup. + +10:45.160 --> 10:49.679 +So SyncThinkFork is another app I rely on heavily. + +10:49.680 --> 10:54.399 +So as I mentioned, all the, this is org-fit files, + +10:54.400 --> 10:55.719 +they're all org-mode files. + +10:55.720 --> 10:57.439 +So I use SyncThinkFork to synchronize them + +10:57.440 --> 10:59.879 +between my laptop and my Android. + +10:59.880 --> 11:04.479 +And then also like to get this package, + +11:04.480 --> 11:06.559 +just syncing a list folder might be helpful + +11:06.560 --> 11:09.999 +if you want to easily edit your init file + +11:10.000 --> 11:12.319 +on Android on your machine. + +11:12.320 --> 11:15.639 +So yeah, SyncThinkPort is another helpful thing + +11:15.640 --> 11:17.959 +that you might wanna look into + +11:17.960 --> 11:22.919 +if you're exploring Android, the Emacs build of Android. + +11:22.920 --> 11:26.239 +So yeah, Emacs on Android does actually have the potential + +11:26.240 --> 11:30.959 +to replace a decent number of common use cases. + +11:30.960 --> 11:35.759 +And org mode can be a solid foundation + +11:35.760 --> 11:39.959 +for any of these applications that you're thinking of. + +11:39.960 --> 11:45.639 +And yeah, I highly recommend giving giving Emacs on Android a shot. + +11:45.640 --> 11:49.719 +And that concludes this presentation. + +11:49.720 --> 11:56.439 +Thank you so much, Zachary. That was an awesome talk, + +11:56.440 --> 11:59.599 +and I appreciate your preparing it for us. + +11:59.600 --> 12:03.399 +A couple questions on the pad, if anybody wants to jump in + +12:03.400 --> 12:05.119 +and throw in your questions or comments. + +12:05.120 --> 12:08.599 +Of course, happy to read them out on screen here. + +12:08.600 --> 12:12.039 +I think when we were talking backstage before, + +12:12.040 --> 12:14.239 +you had asked me to kind of read them out, + +12:14.240 --> 12:17.199 +but feel free to jump in and kind of + +12:17.200 --> 12:18.999 +take over at any point. + +12:19.000 --> 12:25.279 +This is the You Show. I'm kind of... + +12:25.280 --> 12:30.199 +So the first question we had was a comment. + +12:30.200 --> 12:31.439 +This is very cool. + +12:31.440 --> 12:33.519 +It would be nice to build up some + +12:33.520 --> 12:38.439 +org rep max calculation formula into calc. + +12:38.440 --> 12:42.119 +Is that something that you've thought about? + +12:42.120 --> 12:47.159 +Um, well, I mean, um, one rep max. Yeah. + +12:47.160 --> 12:48.799 +I mean, not in honesty, + +12:48.800 --> 12:52.359 +I'm not sure about the, like the, like, uh, + +12:52.360 --> 12:53.839 +extending calc itself. + +12:53.840 --> 12:56.799 +Like if there's, you know, if like, + +12:56.800 --> 12:59.199 +what are the ways of extending calc itself, + +12:59.200 --> 13:01.999 +but this, this package, um, or fit, + +13:02.000 --> 13:04.159 +I mean, it does have the one rep max. + +13:04.160 --> 13:11.199 +Like I kind of had to dig into that, like, um, uh, + +13:11.200 --> 13:20.079 +I can find the code, but yeah, I mean, it does, + +13:20.080 --> 13:25.079 +I mean, you know, so this is specifically this package, + +13:25.080 --> 13:33.039 +but yeah, you can use the various one rep max formulas for this. + +13:33.040 --> 13:37.159 +Extend this clock report. Yes, yeah, exactly. + +13:37.160 --> 13:39.199 +Graphical reports. These are all something that, + +13:39.200 --> 13:43.439 +It currently doesn't have, and these nice apps do have. + +13:43.440 --> 13:45.399 +They have charts of all kinds. + +13:45.400 --> 13:48.799 +You can see your progress from week to week + +13:48.800 --> 13:49.959 +on various exercise. + +13:49.960 --> 13:54.359 +They have like charts galore, all these like fancy apps. + +13:54.360 --> 14:00.319 +And in theory, it wouldn't be hard at all to like, + +14:00.320 --> 14:03.719 +cause like, you know, there's a GNU plot. + +14:03.720 --> 14:07.119 +There's those, and then they have like + +14:07.120 --> 14:10.479 +very good packages on any of them. + +14:10.480 --> 14:13.919 +So, I mean, I assume integration would be pretty seamless. + +14:13.920 --> 14:16.199 +So yes, that is definitely on the list + +14:16.200 --> 14:17.759 +of things I want to do. + +14:17.760 --> 14:21.599 +Have you ever wanted to modify + +14:21.600 --> 14:23.679 +the functionality of your mobile device + +14:23.680 --> 14:26.119 +while working out any good + +14:26.120 --> 14:28.439 +or challenging experiences or tips with that? + +14:28.440 --> 14:30.759 +Yeah, that's actually funny. + +14:30.760 --> 14:37.439 +There was a time where, yeah, I mean, like debugging, + +14:37.440 --> 14:40.999 +there was like some bug I was having with my code. + +14:41.000 --> 14:44.799 +And so I have, in the middle of a workout, + +14:44.800 --> 14:48.439 +yeah, start, like, open up the debugger and kind of, + +14:48.440 --> 14:50.959 +and the cool thing is that, I mean, + +14:50.960 --> 14:53.079 +the biggest thing, like, the biggest thing by far + +14:53.080 --> 14:54.599 +is unexpected keyboard. + +14:54.600 --> 14:56.359 +Like, I can't state how, + +14:56.360 --> 14:58.439 +I don't know how much unexpected keyboard is, + +14:58.440 --> 15:01.279 +because, like, with unexpected, with the unexpected, + +15:01.280 --> 15:03.599 +with that keyboard, you can literally just, like, + +15:03.600 --> 15:06.159 +it's, it's not hard at all to, like, + +15:06.160 --> 15:11.159 +you can do meta x or uh control meta x + +15:11.160 --> 15:13.639 +or you know control u control meta x + +15:13.640 --> 15:15.959 +to like you know debug like you can do all the key bindings + +15:15.960 --> 15:18.519 +with unexpected keyboard there's so there's no problem + +15:18.520 --> 15:20.279 +whatsoever whatsoever + +15:20.280 --> 15:23.599 +with that part the only part is muscle memory like like + +15:23.600 --> 15:25.599 +it's because you get the muscle memory + +15:25.600 --> 15:26.839 +of like the emacs key binding + +15:26.840 --> 15:28.279 +and so you have to kind of like yeah + +15:28.280 --> 15:31.639 +i mean that translation is actually kind of + +15:31.640 --> 15:35.039 +you have to think about it like, like, okay, + +15:35.040 --> 15:36.559 +what was that key binding again? + +15:36.560 --> 15:39.559 +And you have to kind of like do it with your fingers. + +15:39.560 --> 15:41.359 +And it was like doing it on the, on Android is, + +15:41.360 --> 15:44.199 +I mean, it takes a little longer + +15:44.200 --> 15:45.439 +and it's just a different, yeah, + +15:45.440 --> 15:47.079 +different set of different muscle memory. + +15:47.080 --> 15:51.559 +Gotcha. Sorry, if you've covered this, + +15:51.560 --> 15:55.439 +does the rest timer end with an audible notification? + +15:55.440 --> 15:58.199 +That's the cool thing. + +15:58.200 --> 16:02.519 +So with the Emacs, with the Android notification settings, + +16:02.520 --> 16:06.159 +you can, I can show that again in more detail. + +16:06.160 --> 16:17.079 +So bonus settings, apps, pick the app, notifications. + +16:17.080 --> 16:21.159 +And then here we get that Org Fit Restover. + +16:21.160 --> 16:22.919 +And so here you can set, for example, + +16:22.920 --> 16:24.879 +whether it's a silent notification. + +16:24.880 --> 16:27.959 +And so this won't, this won't make it make noise you can do + +16:27.960 --> 16:29.559 +or like make it have a noise + +16:29.560 --> 16:31.679 +and so you can have it make sure + +16:31.680 --> 16:33.119 +it's pop on this way the screen + +16:33.120 --> 16:37.039 +and then yeah you can just pick you can just pick whatever ringtone you want + +16:37.040 --> 16:38.679 +and you can make it look like yeah + +16:38.680 --> 16:42.559 +and then obviously you have like the whole uh volume setting + +16:42.560 --> 16:44.559 +so you can like when you're when you're uh when you're working + +16:44.560 --> 16:50.519 +you know you can just set the volume pretty high + +16:50.520 --> 16:51.679 +so if you set if you do happen + +16:51.680 --> 16:55.719 +to set your phone kind of away You set the volume high, + +16:55.720 --> 16:57.239 +maybe make a really annoying sound, + +16:57.240 --> 17:00.759 +a loud sound you won't miss. And then, yeah, you'll be set. + +17:00.760 --> 17:02.159 +So that works. + +17:02.160 --> 17:04.639 +That was actually one of the biggest surprises. + +17:04.640 --> 17:08.599 +I wasn't expecting that to work so nice. + +17:08.600 --> 17:17.279 +One of the next question relates to the unexpected keyboard. + +17:17.280 --> 17:19.399 +Question is, have you tried other keyboards, + +17:19.400 --> 17:20.399 +such as Hacker's Keyboard? + +17:20.400 --> 17:27.119 +Not recently. I haven't, so I couldn't compare them. + +17:27.120 --> 17:31.359 +Fair enough. Another keyboard question. + +17:31.360 --> 17:34.399 +Have you tried Flickboard on F-Droid? + +17:34.400 --> 17:37.959 +The commenter says, this is the craziest keyboard. + +17:37.960 --> 17:44.559 +You use one thumb. Oh, that is interesting. Let me see. + +17:44.560 --> 17:48.879 +Flickboard. Flickboard. Yeah, I'll have to try that. + +17:48.880 --> 17:53.119 +I'm curious to get the key bindings done. + +17:53.120 --> 17:57.359 +I wonder if the key bindings and all that work. + +17:57.360 --> 18:01.279 +I hope that's interesting. I'll definitely look into that. + +18:01.280 --> 18:02.359 +So I'll hold on just a moment + +18:02.360 --> 18:04.239 +as people are typing in more questions. + +18:04.240 --> 18:06.759 +A good moment to just thank you for the talk. + +18:06.760 --> 18:09.719 +It's personally, it's one of my favorite things + +18:09.720 --> 18:14.559 +to see at EmacsConf is, you know, a glimpse into a world + +18:14.560 --> 18:17.679 +that kind of isn't mine, right? + +18:17.680 --> 18:22.799 +but it shows how, you know, Emacs is sort of + +18:22.800 --> 18:25.999 +the bazaar in the cathedral + +18:26.000 --> 18:28.439 +and bazaar sense of we're all just here + +18:28.440 --> 18:31.839 +sort of hauling our bags of toys + +18:31.840 --> 18:35.679 +into the center square and, you know, making a, + +18:35.680 --> 18:38.439 +you know, I don't know if it's a house of cards + +18:38.440 --> 18:40.319 +or what exactly it is, + +18:40.320 --> 18:43.559 +but it, you know, it's managing to keep me afloat personally. + +18:43.560 --> 18:47.239 +And I just appreciate your, you know, + +18:47.240 --> 18:48.519 +kind of expanding my world. + +18:48.520 --> 18:53.759 +It's pretty cool. Yeah, definitely. Yeah, I mean, I agree. + +18:53.760 --> 19:01.079 +There's a lot of different, yeah. So, next commenter. + +19:01.080 --> 19:05.359 +I'm curious, oh, sorry, I skipped one here. + +19:05.360 --> 19:07.399 +This user interface is simplified, + +19:07.400 --> 19:09.639 +but still keyboard based. + +19:09.640 --> 19:11.959 +Have you thought about ways to make it more touch-based? + +19:11.960 --> 19:16.039 +Good question. Yeah, yeah, yeah. + +19:16.040 --> 19:19.599 +So the only thing currently, I think, + +19:19.600 --> 19:22.119 +of specific touch-based functionality I have, + +19:22.120 --> 19:25.399 +which, so this is like, so let's see, + +19:25.400 --> 19:37.679 +it's Control X, Control Plus, + +19:37.680 --> 19:40.159 +I think that's the, okay, that wrong, + +19:40.160 --> 19:42.959 +that key binding wrong, what was it? Okay, whatever. + +19:42.960 --> 19:45.559 +Yeah, so in terms of touch command, + +19:45.560 --> 19:47.839 +so pressing on a headline will actually unfold it + +19:47.840 --> 19:50.799 +and move your cursor to the next field that you, + +19:50.800 --> 19:54.639 +yeah, so like, yeah, at the beginning of the table. + +19:54.640 --> 19:56.959 +So like, there's that, yeah, and so. + +19:56.960 --> 20:02.399 +It sounds like that is something you're thinking about. + +20:02.400 --> 20:03.639 +Yeah, exactly. + +20:03.640 --> 20:05.999 +Like, you know, maybe like a little thing at the bottom, + +20:06.000 --> 20:09.559 +like, so this thing has the, this app has this, + +20:09.560 --> 20:10.839 +if you notice, like, if you do something, + +20:10.840 --> 20:12.479 +it has this rest timer at the bottom. + +20:12.480 --> 20:14.639 +So I mean, it wouldn't be, + +20:14.640 --> 20:16.599 +it wouldn't be pretty, it wouldn't be, + +20:16.600 --> 20:18.799 +it seems quite doable to just have like, + +20:18.800 --> 20:19.839 +maybe something at the bottom, + +20:19.840 --> 20:21.319 +like for a timer, + +20:21.320 --> 20:24.159 +and then you can just like plus 15 seconds or cancel it + +20:24.160 --> 20:25.239 +or, you know, just, + +20:25.240 --> 20:27.279 +and then those could all be just like touch based. + +20:27.280 --> 20:30.559 +And so, yeah. And then obviously just like, + +20:30.560 --> 20:36.119 +just like classic Emacs, the Emacs, + +20:36.120 --> 20:43.359 +like clicking actions, they just, yeah, + +20:43.360 --> 20:44.159 +they work just fine. + +20:44.160 --> 20:47.439 +Like, so there's no like weird Android touch thing + +20:47.440 --> 20:48.359 +you have to worry about. + +20:48.360 --> 20:52.559 +So let me ask a question of my own here. + +20:52.560 --> 20:57.199 +Just thinking about that myself, how would you, you know, + +20:57.200 --> 21:00.119 +ideally approach that as that you'd most prefer + +21:00.120 --> 21:02.879 +to sort of dive into yourself? + +21:02.880 --> 21:07.919 +Or would you think about factoring that out into + +21:07.920 --> 21:12.159 +like some kind of org touch higher level API or? + +21:12.160 --> 21:19.679 +Oh, I mean, personally, personally, I mean, I mean, + +21:19.680 --> 21:21.279 +I think just like the clicking + +21:21.280 --> 21:28.279 +and just like adding a lambda to it. That works. + +21:28.280 --> 21:35.759 +I mean, that feels like it works just fine. + +21:35.760 --> 21:41.639 +And you can add the code, like the command right there. + +21:41.640 --> 21:45.439 +So it's all like, yeah, it's all, I mean, + +21:45.440 --> 21:49.159 +and that's kind of a nice thing is like having everything like close, + +21:49.160 --> 21:54.159 +just like not having those, a lot of layers of abstraction. + +21:54.160 --> 22:03.279 +It's just like, you have a Lambda to the click and then just do. + +22:03.280 --> 22:06.439 +Yeah, just do. That was my experience too. + +22:06.440 --> 22:09.599 +This is a few years several years ago at ENAC's conference, + +22:09.600 --> 22:13.079 +we were shocked to learn just how usable, + +22:13.080 --> 22:18.559 +this is echoing a comment I see from Elip Energo on IRC, + +22:18.560 --> 22:21.479 +who says, touch seems so wildly usable nowadays, + +22:21.480 --> 22:22.399 +that's so awesome. + +22:22.400 --> 22:25.159 +And that was really my experience too with Dungeon. + +22:25.160 --> 22:28.719 +We were just working on it, we got the fog of war going, + +22:28.720 --> 22:32.439 +and then just took it onto a touchscreen laptop at the time, + +22:32.440 --> 22:33.959 +and we're just shocked to learn, + +22:33.960 --> 22:37.479 +you know, everything just worked. Yeah. + +22:37.480 --> 22:38.639 +Maybe like the hardest thing + +22:38.640 --> 22:40.559 +is actually just the default font size. + +22:40.560 --> 22:42.559 +You know, you have to like, you can't, + +22:42.560 --> 22:44.279 +you can't have your font too small or you'll, + +22:44.280 --> 22:46.319 +you'll like, you'll touch, you'll, + +22:46.320 --> 22:48.279 +you'll miss touch things a lot. Yeah. + +22:48.280 --> 22:50.159 +Well, there's no font size + +22:50.160 --> 22:52.999 +large enough to make me, you know, + +22:53.000 --> 22:58.159 +to make me comfortable on a smart device, unfortunately. + +22:58.160 --> 23:00.599 +But, but that, I think it may be a me problem. + +23:00.600 --> 23:04.439 +I think this question we might've missed. So the file sync. + +23:04.440 --> 23:12.679 +Yeah, so the file sync in terms of what's worked for me, + +23:12.680 --> 23:14.039 +I did have to play around with this a lot. + +23:14.040 --> 23:15.999 +Let me go ahead and read it out. + +23:16.000 --> 23:18.519 +You mentioned file sync, what have you found works well for you? + +23:18.520 --> 23:21.319 +Sorry. Yeah, yeah, yeah. + +23:21.320 --> 23:25.319 +So in terms of what, yeah, I did have to play around with this a lot, + +23:25.320 --> 23:28.639 +but sync thing fork is what I eventually settled on. + +23:28.640 --> 23:34.959 +I mean, this is another thing that, I mean, I don't, + +23:34.960 --> 23:36.319 +it wouldn't nearly be as usable, + +23:36.320 --> 23:39.679 +like Emacs wouldn't be nearly usable without it. + +23:39.680 --> 23:41.319 +So syncing fork essentially, okay. + +23:41.320 --> 23:44.559 +And then I also have like a droplet on DigitalOcean, + +23:44.560 --> 23:47.399 +just like, so that's kind of like the whole, + +23:47.400 --> 23:49.879 +that's kind of like what bridges it together. + +23:49.880 --> 23:52.519 +So like, so my Emacs can sync to that, + +23:52.520 --> 23:56.559 +and then my machine also syncs to that. + +23:56.560 --> 24:00.719 +And so like, I don't have to have them + +24:00.720 --> 24:06.359 +both on the same time. It's just there, that copy. + +24:06.360 --> 24:09.599 +And so that works pretty well. + +24:09.600 --> 24:13.559 +I also found that editing code in general, + +24:13.560 --> 24:15.359 +I think this also goes + +24:15.360 --> 24:19.919 +with the development experience question. + +24:19.920 --> 24:22.639 +So I'm curious about the development experience. + +24:22.640 --> 24:24.639 +Do you do everything on the phone? And that's the thing. + +24:24.640 --> 24:27.119 +None of my development in general is done on the phone. + +24:27.120 --> 24:32.439 +just because, for one, my muscle memory isn't there, + +24:32.440 --> 24:38.399 +and two, just in general, typing on a virtual keyboard on the phone, + +24:38.400 --> 24:40.119 +it's just really slow. + +24:40.120 --> 24:47.159 +So yeah, all the development is done on my machine, + +24:47.160 --> 24:52.119 +but then there's the problem of you have to have an init.l in your Android, + +24:52.120 --> 24:55.159 +and so you're going to have to write, you know, + +24:55.160 --> 24:56.919 +I found like you'd have to like, + +24:56.920 --> 24:58.279 +when you first get Emacs set up, + +24:58.280 --> 25:01.239 +you might have to like write some, I don't know, + +25:01.240 --> 25:03.959 +like you'll kind of have to like get into your init file + +25:03.960 --> 25:04.479 +and then just like, + +25:04.480 --> 25:06.999 +maybe just like start to put things together. + +25:07.000 --> 25:09.759 +But the cool thing is with SyncThinkFork, + +25:09.760 --> 25:15.519 +I'm syncing my, I'm setting it to load off of a sync directory. + +25:15.520 --> 25:18.559 +Like this, this init file, + +25:18.560 --> 25:21.159 +my Android file is synced with my machine. + +25:21.160 --> 25:24.319 +So if I wanted to, I could just edit it on my machine + +25:24.320 --> 25:25.879 +and just have that synced automatically. + +25:25.880 --> 25:28.839 +So that makes like the whole, like in it, + +25:28.840 --> 25:31.879 +cause like it's, it's such a, like, that is one of the, + +25:31.880 --> 25:33.079 +it's just like getting, + +25:33.080 --> 25:36.879 +sit writing your init L and M in Emacs on Android + +25:36.880 --> 25:37.839 +is just kind of a. + +25:37.840 --> 25:39.359 +We do have one more question. + +25:39.360 --> 25:41.479 +I can't help but throw in a comment there. + +25:41.480 --> 25:43.759 +I think that's like. + +25:43.760 --> 25:47.519 +That's an extremely good tip, right? + +25:47.520 --> 25:49.959 +That if we're, as we're exploring Android, + +25:49.960 --> 25:52.839 +we want to think about that as + +25:52.840 --> 25:55.759 +adding support for another port of Emacs. + +25:55.760 --> 25:58.959 +So the whole dance of, oh, I took, you know, + +25:58.960 --> 26:01.239 +I took, you know, I took my init + +26:01.240 --> 26:04.479 +and I wanted to use it on BSD + +26:04.480 --> 26:06.439 +after mostly using GNU Linux. + +26:06.440 --> 26:09.119 +Now we're going in and we're looking at our Emacs. + +26:09.120 --> 26:11.279 +all of our Emacs and it stuff + +26:11.280 --> 26:13.839 +and thinking about compatibility, + +26:13.840 --> 26:15.199 +turning features on and off + +26:15.200 --> 26:19.959 +based on the OS that we're running underneath and so on. + +26:19.960 --> 26:22.119 +I think that's pretty heads up advice. + +26:22.120 --> 26:24.759 +Let me read out this other question. + +26:24.760 --> 26:28.199 +Have you thought about integrating cardio tracking + +26:28.200 --> 26:30.559 +like time runs, bike rides, and so on? + +26:30.560 --> 26:34.319 +Yes, I definitely thought about that. + +26:34.320 --> 26:36.599 +And that might be another thing + +26:36.600 --> 26:38.479 +where a touch interface might be helpful. + +26:38.480 --> 26:41.559 +I don't know if I can easily pull it up, + +26:41.560 --> 26:47.199 +but the app itself, oh yeah, here it is. + +26:47.200 --> 26:50.199 +So you can see kind of how they have, + +26:50.200 --> 26:53.279 +and you can kind of see how this fits. + +26:53.280 --> 26:55.119 +This is like an org, you can see + +26:55.120 --> 26:57.399 +that these are just tables, right? + +26:57.400 --> 26:59.239 +This is just like this whole interface in general, + +26:59.240 --> 27:02.279 +just like kind of screams like an org mode, + +27:02.280 --> 27:05.119 +file with you have you have your different headings + +27:05.120 --> 27:06.559 +like here's a warm-up heading + +27:06.560 --> 27:07.839 +and then you have the tables + +27:07.840 --> 27:09.879 +and you know you could just like envision + +27:09.880 --> 27:12.839 +how you could have a org table + +27:12.840 --> 27:15.039 +with one of the columns called time + +27:15.040 --> 27:18.439 +and then you could just imagine like there'd be a button there + +27:18.440 --> 27:21.159 +and you can just just have it click, + +27:21.160 --> 27:24.279 +and then you'd have a timer in the background + +27:24.280 --> 27:25.799 +that would update this timer. + +27:25.800 --> 27:32.599 +It's so, I mean, conceptually, there's nothing really, + +27:32.600 --> 27:35.799 +it conceptually maps really well to this. + +27:35.800 --> 27:41.559 +So yeah, I mean, that's definitely something. + +27:41.560 --> 27:44.439 +That's awesome. Great answer. + +27:44.440 --> 27:47.759 +So I think we're just at about 90 seconds left. + +27:47.760 --> 27:50.119 +Perfect amount of time, I think, to just wrap up. + +27:50.120 --> 27:52.199 +Closing thoughts. I'll share mine first. + +27:52.200 --> 27:53.759 +Really appreciate you, Zach. + +27:53.760 --> 27:56.639 +Thank you for putting this talk together. + +27:56.640 --> 27:59.359 +I think this is the type of talk + +27:59.360 --> 28:01.239 +that's really going to tie the room together + +28:01.240 --> 28:07.559 +for people that may be, you know, not sure how they can take + +28:07.560 --> 28:12.719 +although they've been interested in that, + +28:12.720 --> 28:16.399 +this can be a really good way to kind of open up the world. + +28:16.400 --> 28:20.319 +Thank you. Thank you for putting it together. + +28:20.320 --> 28:22.439 +Yeah, yeah, yeah, yeah, I would just say + +28:22.440 --> 28:24.159 +like definitely just try things out. + +28:24.160 --> 28:25.359 +Like if you think, you know, + +28:25.360 --> 28:26.439 +they're just like random ideas, + +28:26.440 --> 28:30.319 +like a book tracking app or like a recipe app, + +28:30.320 --> 28:33.479 +like, you know, there's a lot of things + +28:33.480 --> 28:35.599 +that you do on your mobile device + +28:35.600 --> 28:37.719 +that aren't like banking apps that you could easily, + +28:37.720 --> 28:39.759 +that seem like they could be done in Emacs. + +28:39.760 --> 28:42.479 +So yeah, just try different things out + +28:42.480 --> 28:47.239 +and I would love to hear what other people do. Bravo. + +28:47.240 --> 28:52.519 +I appreciate it once again, you're coming together + +28:52.520 --> 28:56.639 +and especially you're doing it live. + +28:56.640 --> 29:00.079 +I know that as a conference, we have a lot of preference + +29:00.080 --> 29:01.479 +for those recorded talks + +29:01.480 --> 29:02.759 +and getting the captioning together, + +29:02.760 --> 29:05.319 +but I just have a special place in my heart + +29:05.320 --> 29:07.679 +for the energy that comes with a live talk + +29:07.680 --> 29:12.560 +and I appreciate you doing it. Thanks for putting this on. diff --git a/2025/captions/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--answers.vtt b/2025/captions/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--answers.vtt new file mode 100644 index 00000000..5abfd435 --- /dev/null +++ b/2025/captions/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--answers.vtt @@ -0,0 +1,3977 @@ +WEBVTT + +00:00:00.000 --> 00:00:07.319 +Yes. All right. Take it away. Thank you, Christian. Thank you, too. + +00:00:07.320 --> 00:00:09.359 +If you could have the pad open at the same time, + +00:00:09.360 --> 00:00:11.319 +you can read the questions. + +00:00:11.320 --> 00:00:13.639 +Or I can start reading some to you while I'm here. + +00:00:13.640 --> 00:00:14.959 +Oh, no. I can read them. + +00:00:14.960 --> 00:00:21.599 +I was wondering whether I should maybe copy them into a new buffer. + +00:00:21.600 --> 00:00:30.159 +So they are also on screen. Increase the font size a bit. + +00:00:30.160 --> 00:00:39.839 +So I'm trying to do this on the fly. + +00:00:39.840 --> 00:00:41.279 +Maybe a bad idea. Let's see. + +00:00:41.280 --> 00:00:42.519 +Of course, you're going to capture it + +00:00:42.520 --> 00:00:45.879 +into your Zettelkasten then. Is that what's happening? + +00:00:45.880 --> 00:00:49.559 +Well, I can start you off. + +00:00:49.560 --> 00:00:56.279 +The first question is, I wonder what they use for the fancy animations. + +00:00:56.280 --> 00:00:59.559 +I was thinking about this because that's the first question + +00:00:59.560 --> 00:01:00.959 +and I was thinking about this + +00:01:00.960 --> 00:01:02.599 +while I copied this stuff over. + +00:01:02.600 --> 00:01:09.359 +What part is the fancy part? + +00:01:09.360 --> 00:01:13.079 +I can recommend books, like if anyone wants to have book recommendations + +00:01:13.080 --> 00:01:18.039 +for how to make presentations with PowerPoint-like software + +00:01:18.040 --> 00:01:22.999 +in a very simple way, we taught this at university. + +00:01:23.000 --> 00:01:25.559 +was it now, some 15 years ago, + +00:01:25.560 --> 00:01:28.799 +to students to make animation abuse + +00:01:28.800 --> 00:01:32.439 +where everything was flashy and typed in or something. + +00:01:32.440 --> 00:01:36.679 +Don't do this, but instead do a couple of very simple tasteful things + +00:01:36.680 --> 00:01:41.959 +like fading through colors like filmmakers do, right? + +00:01:41.960 --> 00:01:44.199 +Fading through black to make a scene cut + +00:01:44.200 --> 00:01:47.839 +or just fade between things, the fanciness. + +00:01:47.840 --> 00:01:53.759 +Presentation software stack, the fanciness. + +00:01:53.760 --> 00:01:55.079 +I didn't dial fanciness up, + +00:01:55.080 --> 00:02:00.239 +I just resorted to a very simple fade animations, + +00:02:00.240 --> 00:02:04.719 +like fading stuff in and wipe, I think, for text effects. + +00:02:04.720 --> 00:02:06.879 +That was it, more or less. + +00:02:06.880 --> 00:02:09.959 +And for the lines, maybe the lines are fancy. + +00:02:09.960 --> 00:02:14.679 +I was using Apple Keynote because I'm fastest with that, + +00:02:14.680 --> 00:02:19.079 +but I also usually, we taught this workshop with PowerPoint + +00:02:19.080 --> 00:02:23.319 +and I think the LibreOffice stack got much better with that + +00:02:23.320 --> 00:02:24.239 +as well in the recent years, + +00:02:24.240 --> 00:02:26.279 +but I haven't tried that in a long time + +00:02:26.280 --> 00:02:31.599 +to like fiddle around and find all the knobs to dial. + +00:02:31.600 --> 00:02:34.719 +Because the Apple presentation thingy has this nice feature + +00:02:34.720 --> 00:02:37.079 +where you draw an arrow with a tip, + +00:02:37.080 --> 00:02:41.039 +and then you have a special animation for line drawing, + +00:02:41.040 --> 00:02:42.439 +which is only available for line art. + +00:02:42.440 --> 00:02:45.559 +And then it draws the arrow that moves around like that. + +00:02:45.560 --> 00:02:48.079 +So yeah, presentation stack, Apple Keynote, + +00:02:48.080 --> 00:02:52.559 +probably not of interest for anyone here. + +00:02:52.560 --> 00:02:56.439 +I usually don't use plain text presentation stuff, right? + +00:02:56.440 --> 00:03:03.319 +So I tried this, I tried this with markdown presentations, + +00:03:03.320 --> 00:03:08.319 +slidey things, org presentation. + +00:03:08.320 --> 00:03:12.879 +It's always not enough control for the fiddly things + +00:03:12.880 --> 00:03:17.959 +that I'm interested in to make the experience great. + +00:03:17.960 --> 00:03:20.199 +So I wonder what are the fancy animations. + +00:03:20.200 --> 00:03:25.439 +And the stack, the stack is Apple Keynote, sorry. + +00:03:25.440 --> 00:03:30.079 +Okay, that's enough. Thank you for capturing. + +00:03:30.080 --> 00:03:37.719 +Are you not a fan? Okay. You saw this in the recording. + +00:03:37.720 --> 00:03:43.839 +Why on earth is autofill mode not enabled? I don't know. + +00:03:43.840 --> 00:03:48.479 +I thought it is the default, but apparently it isn't. + +00:03:48.480 --> 00:03:52.039 +I could also use visual line mode. + +00:03:52.040 --> 00:03:55.719 +It's built in as well, right? Visual line mode. + +00:03:55.720 --> 00:03:57.999 +It's so weird to be in this vanilla setup + +00:03:58.000 --> 00:04:00.439 +and not have all my key bindings + +00:04:00.440 --> 00:04:04.959 +and my normal stuff ready, so. + +00:04:04.960 --> 00:04:08.479 +I am not a fan of using asterisk headings in org mode. + +00:04:08.480 --> 00:04:12.359 +It's interesting to see how people have different styles of writing org content. + +00:04:12.360 --> 00:04:22.359 +Am I not? What exactly? What did I do? + +00:04:22.360 --> 00:04:25.959 +And nodes, just open one of these. + +00:04:25.960 --> 00:04:33.519 +Okay. I could see how you could, in examples like this, + +00:04:33.520 --> 00:04:36.639 +use org-mode to read-only. + +00:04:36.640 --> 00:04:44.599 +Why? How you could use org-mode to use headings for this, + +00:04:44.600 --> 00:04:48.159 +because it's an outliner first and foremost, + +00:04:48.160 --> 00:04:50.439 +so outlining is very natural. + +00:04:50.440 --> 00:04:53.279 +But when I do in my personal setup, + +00:04:53.280 --> 00:04:58.079 +I also have this what's called start indentation thingy. + +00:04:58.080 --> 00:05:01.079 +enabled, so that means that everything + +00:05:01.080 --> 00:05:04.159 +would be indented one level from the start. + +00:05:04.160 --> 00:05:05.599 +So I would probably fiddle around + +00:05:05.600 --> 00:05:07.799 +with that to not get like crazy. + +00:05:07.800 --> 00:05:12.039 +But also, I don't see, I don't see, + +00:05:12.040 --> 00:05:13.839 +like really see when I look at this, + +00:05:13.840 --> 00:05:17.879 +I didn't see a potential to create subheadings, + +00:05:17.880 --> 00:05:19.479 +I mean, or even headings. + +00:05:19.480 --> 00:05:21.559 +The only heading here is the title, + +00:05:21.560 --> 00:05:24.279 +like in my perception of this node, + +00:05:24.280 --> 00:05:27.159 +and it's one, It's two lists. + +00:05:27.160 --> 00:05:28.639 +You could group these in headings. + +00:05:28.640 --> 00:05:40.319 +I didn't. That's right. Where's another one? + +00:05:40.320 --> 00:05:42.679 +I opened the autosave file because I'm stupid. + +00:05:42.680 --> 00:05:46.719 +OK. So this one could also be probably subdivided. + +00:05:46.720 --> 00:05:48.559 +But I'm also not sure. + +00:05:48.560 --> 00:05:52.359 +I'm also not sure if I would gain anything structurally + +00:05:52.360 --> 00:05:55.799 +if I do it like this because then I'm in a structural level + +00:05:55.800 --> 00:05:58.279 +and the stuff that just flows naturally + +00:05:58.280 --> 00:06:01.039 +as a sequence of text paragraphs, + +00:06:01.040 --> 00:06:07.119 +this here, it's not disconnected. + +00:06:07.120 --> 00:06:10.519 +It wasn't meant to be under organism + +00:06:10.520 --> 00:06:16.839 +and I need to create a new same level thing + +00:06:16.840 --> 00:06:23.959 +to say, hey, these are, I don't know, details or whatever. + +00:06:23.960 --> 00:06:26.119 +So that's maybe the real reason. + +00:06:26.120 --> 00:06:28.879 +I'm fine with writing snippets that are self-contained + +00:06:28.880 --> 00:06:31.159 +and essentially one or two or three or five or whatever, + +00:06:31.160 --> 00:06:32.119 +how many paragraphs, + +00:06:32.120 --> 00:06:36.119 +but it's not like, it's always an outline form. + +00:06:36.120 --> 00:06:38.679 +So I don't resort to this. + +00:06:38.680 --> 00:06:40.999 +My onSettle custom is usually written in Markdown. + +00:06:41.000 --> 00:06:43.999 +So I use subheadings for actual headings + +00:06:44.000 --> 00:06:47.559 +to subdivide like I would subdivide an essay + +00:06:47.560 --> 00:06:49.759 +or an article, blog post. + +00:06:49.760 --> 00:06:52.839 +But that's the mode of writing that I'm in here. + +00:06:52.840 --> 00:06:54.319 +It's like blog post writing. + +00:06:54.320 --> 00:06:56.239 +I wouldn't start with four headings for this. + +00:06:56.240 --> 00:06:58.839 +So I'm not doing that. That's a thing. + +00:06:58.840 --> 00:07:04.919 +Okay, I guess I'm going to read the questions, + +00:07:04.920 --> 00:07:07.519 +but I'm going to stop copying them in because I lose time. + +00:07:07.520 --> 00:07:09.439 +I want to reply to you, folks. + +00:07:09.440 --> 00:07:11.479 +Didn't see a need for a rack constructor. + +00:07:11.480 --> 00:07:13.719 +Thank you for capturing this. Next question. + +NOTE Can you use org files and all its features inside Denote? + +00:07:13.720 --> 00:07:17.799 +Can you use org files and all its features inside Denote? + +00:07:17.800 --> 00:07:22.439 +Yes. Like this is, this is an org file + +00:07:22.440 --> 00:07:25.359 +and Denote uses org headings instead of, + +00:07:25.360 --> 00:07:28.799 +with Markdown, you get YAML front meta. + +00:07:28.800 --> 00:07:32.759 +And with org, you get these attributes, + +00:07:32.760 --> 00:07:36.359 +value attribute thingies + +00:07:36.360 --> 00:07:40.079 +that are then the metadata for the node. + +00:07:40.080 --> 00:07:45.279 +So yeah, the answer is yes. You get everything and on top, + +00:07:45.280 --> 00:07:48.159 +a small layer of a link, link management. + +00:07:48.160 --> 00:07:48.999 +That's all there is. + +NOTE Where or how do you like to capture fleeting notes? + +00:07:49.000 --> 00:07:55.319 +Next question is, where or how do you like to capture fleeting notes? + +00:07:55.320 --> 00:07:58.479 +Oh, fleeting notes. If you say fleeting notes, + +00:07:58.480 --> 00:08:01.079 +you also need to say non-fleeting notes + +00:08:01.080 --> 00:08:02.399 +and figure out what these are. + +00:08:02.400 --> 00:08:05.079 +And when you say non-fleeting notes, + +00:08:05.080 --> 00:08:07.239 +and fleeting notes exist, because it's a distinction, + +00:08:07.240 --> 00:08:10.199 +and there's something on both sides of this distinction. + +00:08:10.200 --> 00:08:12.119 +If you say there's a distinction, there are two sides, + +00:08:12.120 --> 00:08:14.559 +maybe you want to subdivide the non-fleeting notes further, + +00:08:14.560 --> 00:08:16.199 +because, well, it's a non-fleeting note + +00:08:16.200 --> 00:08:21.159 +isn't very descriptive. So what else do you say there? + +00:08:21.160 --> 00:08:24.799 +And people have said a couple of things + +00:08:24.800 --> 00:08:28.479 +to define non-fleeting nodes, for example, permanent nodes. + +00:08:28.480 --> 00:08:33.199 +I guess that's a Sonke Ahrens, + +00:08:33.200 --> 00:08:35.039 +permanent nodes is the most popular. + +00:08:35.040 --> 00:08:36.159 +Let's stay with that, stick with that. + +00:08:36.160 --> 00:08:38.279 +So if you have permanent nodes and fleeting nodes, + +00:08:38.280 --> 00:08:41.599 +now we have two types of nodes. The thing is, in books, + +00:08:41.600 --> 00:08:46.319 +the only, when we would talk about note-taking + +00:08:46.320 --> 00:08:47.679 +and you would ask me, hey Christian, + +00:08:47.680 --> 00:08:49.559 +how do you take fleeting notes? + +00:08:49.560 --> 00:08:53.679 +I imagine the discussion would be in German + +00:08:53.680 --> 00:08:55.799 +because that's how people usually talk to me. + +00:08:55.800 --> 00:08:56.679 +I would pull out a book, + +00:08:56.680 --> 00:08:59.799 +this is Object-Oriented Software Engineering, + +00:08:59.800 --> 00:09:03.679 +interesting book by Iva Jacobson or Iva, Iva, + +00:09:03.680 --> 00:09:06.159 +I'm not sure because, you know, + +00:09:06.160 --> 00:09:08.719 +it's an English or American person. + +00:09:08.720 --> 00:09:14.419 +And inside I have these fleeting notes like these + +00:09:14.420 --> 00:09:18.879 +are actual paper notes square what are these three by something inch + +00:09:18.880 --> 00:09:20.999 +American standard size I guess + +00:09:21.000 --> 00:09:24.039 +and A6 minus the tariff part + +00:09:24.040 --> 00:09:29.439 +from from another notepad these are notes i took engagement notes + +00:09:29.440 --> 00:09:32.439 +if you will like engagement notes + +00:09:32.440 --> 00:09:34.999 +because the margins of the book don't suffice to take + +00:09:35.000 --> 00:09:38.799 +and this is related to i need more space so this is more space + +00:09:38.800 --> 00:09:41.119 +these are fleeting + +00:09:41.120 --> 00:09:44.999 +and as you see I have them in my pile of books + +00:09:45.000 --> 00:09:46.839 +right next to me in the shelf + +00:09:46.840 --> 00:09:52.279 +and folded them in this piece of paper, + +00:09:52.280 --> 00:09:54.879 +labeled it with the author because I lost them. + +00:09:54.880 --> 00:09:57.839 +couple of times they just fell out + +00:09:57.840 --> 00:09:58.759 +when I reached for the book + +00:09:58.760 --> 00:10:01.479 +and this is an envelope I shove it into the book + +00:10:01.480 --> 00:10:04.919 +and then forget about processing the book again + +00:10:04.920 --> 00:10:08.599 +for five or ten years. So what do I do with fleeting notes? + +00:10:08.600 --> 00:10:11.999 +I do fleeting notes on paper or if I'm using an e-reader + +00:10:12.000 --> 00:10:14.879 +maybe with an e-reader software annotation tool + +00:10:14.880 --> 00:10:21.639 +but fleeting in the most like simple non contrived sense, + +00:10:21.640 --> 00:10:23.839 +fleeting notes are meant as engagement notes + +00:10:23.840 --> 00:10:26.039 +and then you do something with them + +00:10:26.040 --> 00:10:27.519 +or like I just showed you, + +00:10:27.520 --> 00:10:29.879 +you don't because life's short, right? + +00:10:29.880 --> 00:10:31.919 +Time runs out, then you need to forget, + +00:10:31.920 --> 00:10:33.639 +then you need to remember + +00:10:33.640 --> 00:10:36.119 +how to restructure everything in your head + +00:10:36.120 --> 00:10:37.519 +to make sense of the notes again + +00:10:37.520 --> 00:10:38.359 +because they were fleeting, + +00:10:38.360 --> 00:10:40.999 +they were just little scribbles and it's + +00:10:41.000 --> 00:10:44.559 +It's basically ballast or waste. + +00:10:44.560 --> 00:10:46.679 +I'm just carrying this with me for years + +00:10:46.680 --> 00:10:50.879 +and maybe never get around to using these. + +00:10:50.880 --> 00:10:53.399 +But also, I put stuff on there, maybe I do. + +00:10:53.400 --> 00:10:55.399 +It doesn't hurt to keep them in there. + +00:10:55.400 --> 00:10:58.519 +It's just an odd collector's habit I can't get rid of. + +00:10:58.520 --> 00:11:03.399 +fleeting notes, I just capture them wherever + +00:11:03.400 --> 00:11:05.919 +and then either I process them or try to throw them away + +00:11:05.920 --> 00:11:07.079 +or forget about them + +00:11:07.080 --> 00:11:10.239 +because they're in some inbox file on a smartphone + +00:11:10.240 --> 00:11:13.159 +and then, you know, they might as well not exist, + +00:11:13.160 --> 00:11:15.439 +they're just there to engage me during the reading + +00:11:15.440 --> 00:11:17.079 +and if I don't process them in time, + +00:11:17.080 --> 00:11:21.999 +meh like, chance is up, it sucks + +00:11:22.000 --> 00:11:26.319 +Next question, like fleeting notes, permanent notes. + +00:11:26.320 --> 00:11:27.799 +I'm not going to talk about these + +00:11:27.800 --> 00:11:29.039 +unless someone asks a question. + +00:11:29.040 --> 00:11:32.119 +Zettelkasten feels like a very cagey approach + +00:11:32.120 --> 00:11:34.079 +to note-taking and knowledge management. + +00:11:34.080 --> 00:11:36.519 +Doesn't it restrict one to think in certain ways + +00:11:36.520 --> 00:11:38.919 +rather than what feels natural to someone? + +00:11:38.920 --> 00:11:45.919 +Well, yes, but so does wearing underwear, right? + +00:11:45.920 --> 00:11:50.119 +A bit of personal revelation. + +00:11:50.120 --> 00:11:54.079 +When I'm working from home, I'm wearing pants. + +00:11:54.080 --> 00:11:57.039 +You don't see them, but I don't need to. + +00:11:57.040 --> 00:12:00.079 +But I'm also kind of self-restricting myself in a way + +00:12:00.080 --> 00:12:01.239 +because there's a window, + +00:12:01.240 --> 00:12:03.479 +it's dark outside, and I'm well lit. + +00:12:03.480 --> 00:12:05.479 +And if I just stand up and have no pants on, + +00:12:05.480 --> 00:12:12.919 +I don't care that much what the neighbors like 10, 20 meters across think. + +00:12:12.920 --> 00:12:15.759 +your mileage may vary then, right? + +00:12:15.760 --> 00:12:18.319 +So there are restrictions that make sense + +00:12:18.320 --> 00:12:24.439 +to get to some point in your day-to-day life. + +00:12:24.440 --> 00:12:25.999 +And in the case of Zettelkasten, + +00:12:26.000 --> 00:12:31.639 +I try to tell people the shortest story possible + +00:12:31.640 --> 00:12:36.159 +to convey a story there, but also not to cage them in + +00:12:36.160 --> 00:12:38.679 +with 20 definitions of different notes. + +00:12:38.680 --> 00:12:42.279 +Because all that matters is try to move your thinking + +00:12:42.280 --> 00:12:44.039 +into an environment where you can write, + +00:12:44.040 --> 00:12:45.719 +where you feel comfortable writing, + +00:12:45.720 --> 00:12:47.239 +and where you can keep this stuff. + +00:12:47.240 --> 00:12:50.239 +Because I do feel comfortable with a pencil and paper. + +00:12:50.240 --> 00:12:54.199 +But what I just showed you, this might as well never have happened. + +00:12:54.200 --> 00:12:56.719 +Something has changed in my brain. + +00:12:56.720 --> 00:13:01.159 +most likely, when I engaged with a book like this. + +00:13:01.160 --> 00:13:04.199 +As far as publications and writing is concerned, + +00:13:04.200 --> 00:13:06.079 +this might as well not exist in my life, + +00:13:06.080 --> 00:13:10.279 +because I didn't do something with it. + +00:13:10.280 --> 00:13:15.239 +I mean, I was reading the book probably on a commute back then, on the train. + +00:13:15.240 --> 00:13:18.679 +I didn't take notes on the computer right away. + +00:13:18.680 --> 00:13:20.159 +So if you feel caged in, + +00:13:20.160 --> 00:13:24.319 +that may be a sign that you went too far on the, + +00:13:24.320 --> 00:13:26.479 +I need to do this, I need to do that stage, + +00:13:26.480 --> 00:13:28.359 +and lose some of the playfulness. + +00:13:28.360 --> 00:13:29.959 +There needs to be playfulness + +00:13:29.960 --> 00:13:32.599 +inside of the whole procedure, otherwise it... + +00:13:32.600 --> 00:13:36.999 +If you don't enjoy doing it, you won't be doing it. + +00:13:37.000 --> 00:13:39.319 +And if you don't do it, then you don't get a benefit. + +00:13:39.320 --> 00:13:41.039 +And it's just another chore in your life. + +00:13:41.040 --> 00:13:42.479 +Then rather not do it. + +00:13:42.480 --> 00:13:46.479 +So try to avoid the feeling of caginess + +00:13:46.480 --> 00:13:49.639 +and do whatever you want with it + +00:13:49.640 --> 00:13:52.319 +as long as you try to give your best. + +00:13:52.320 --> 00:13:55.799 +That's the cage that you will benefit from + +00:13:55.800 --> 00:13:58.959 +like really trying maybe not trying hard + +00:13:58.960 --> 00:14:02.639 +but trying in earnest to produce + +00:14:02.640 --> 00:14:05.079 +something that you can read in a year in a week whatever + +00:14:05.080 --> 00:14:10.439 +and then make sense of it like that's that's that's the minimum bar and the rest + +00:14:10.440 --> 00:14:13.799 +If you find yourself writing for hours on end, + +00:14:13.800 --> 00:14:15.279 +during the nights, during the weekends, + +00:14:15.280 --> 00:14:17.759 +whatever, and can't stop, + +00:14:17.760 --> 00:14:21.279 +then you can tackle more of the prescriptions, let's say. + +00:14:21.280 --> 00:14:22.319 +But everything I showed to you + +00:14:22.320 --> 00:14:24.439 +was there are three essential things, + +00:14:24.440 --> 00:14:26.199 +and the rest is just add-ons. + +00:14:26.200 --> 00:14:28.519 +Add-ons to inspire you to think in certain ways, + +00:14:28.520 --> 00:14:31.279 +but you don't have to do them. You can scratch all of this. + +00:14:31.280 --> 00:14:33.679 +You just need to write to think, + +00:14:33.680 --> 00:14:35.119 +and then you need to connect + +00:14:35.120 --> 00:14:37.799 +to make the thinking happen in an organic way. + +00:14:37.800 --> 00:14:40.559 +Otherwise, you get a storage that's very hard to navigate + +00:14:40.560 --> 00:14:45.999 +and doesn't grow well. Thanks. Yeah, you're welcome. + +00:14:46.000 --> 00:14:51.159 +I'm not writing another show. Yeah. Oh, combine the forums. + +00:14:51.160 --> 00:14:54.439 +Like it's a Zettelkasten anonymous group there. + +00:14:54.440 --> 00:14:56.239 +Like everyone's struggling. + +00:14:56.240 --> 00:14:58.479 +Everyone's struggling and it's okay to like, + +00:14:58.480 --> 00:15:01.319 +I'm feeling like stuck at this and that. + +00:15:01.320 --> 00:15:03.919 +And then other people will be able to relate. + +00:15:03.920 --> 00:15:10.279 +I can promise. How does it denote, question mark maybe, + +00:15:10.280 --> 00:15:11.639 +compared to org-roam? + +00:15:11.640 --> 00:15:18.559 +Roam research was setting a new trend of connectiveness + +00:15:18.560 --> 00:15:21.119 +because you could create recursive structures with links + +00:15:21.120 --> 00:15:22.199 +and everything is linkable. + +00:15:22.200 --> 00:15:25.439 +And it's like you put every sentence in its own org heading + +00:15:25.440 --> 00:15:27.679 +and then link to all the headings possibly + +00:15:27.680 --> 00:15:31.039 +and then transpile them so you can expand in place + +00:15:31.040 --> 00:15:32.239 +where you would link to. + +00:15:32.240 --> 00:15:34.959 +I think this was the approach at least. + +00:15:34.960 --> 00:15:38.479 +So this was a very interesting transclusion, not transpile. + +00:15:38.480 --> 00:15:41.919 +Transclude the contents, like move them in right then and there + +00:15:41.920 --> 00:15:45.839 +and not navigate to another page. It was interesting. + +00:15:45.840 --> 00:15:47.439 +It never made sense for me + +00:15:47.440 --> 00:15:50.239 +when people told their stories of how they used it. + +00:15:50.240 --> 00:15:53.439 +I guess you can use this tool for a lot of purposes, + +00:15:53.440 --> 00:15:59.199 +but the prevailing story of the Rome style note-taking tools + +00:15:59.200 --> 00:16:01.879 +was like, just dump everything in it. + +00:16:01.880 --> 00:16:04.439 +And garbage in, garbage out still holds. + +00:16:04.440 --> 00:16:07.559 +I do keep my personal journal away + +00:16:07.560 --> 00:16:10.279 +from my Zettelkasten nowadays + +00:16:10.280 --> 00:16:12.799 +because I want to not restrict myself + +00:16:12.800 --> 00:16:14.399 +when I feel the urge to journal, + +00:16:14.400 --> 00:16:18.919 +when I want to capture something that, for example, my 15-month-old baby daughter does. + +00:16:18.920 --> 00:16:21.239 +Like, first time she pulled a chair + +00:16:21.240 --> 00:16:22.679 +out of another room to the next room + +00:16:22.680 --> 00:16:25.479 +just to create a ladder to then climb onto another thing. + +00:16:25.480 --> 00:16:27.439 +It just was, okay, this is now the time + +00:16:27.440 --> 00:16:30.839 +to take note of this. in her life, like you were this + +00:16:30.840 --> 00:16:33.159 +and that many months old when you did this. + +00:16:33.160 --> 00:16:35.359 +So we have some reference parts. And I could put this kind + +00:16:35.360 --> 00:16:37.399 +of factual information, et cetera, custom, + +00:16:37.400 --> 00:16:42.199 +but also, like, what if I have a toothache or whatever, + +00:16:42.200 --> 00:16:47.479 +and just want to gather data for whatever reason? + +00:16:47.480 --> 00:16:52.119 +I don't know. Like this kind of personal stuff. + +00:16:52.120 --> 00:16:55.639 +That's too much of the non-useful stuff + +00:16:55.640 --> 00:16:58.199 +in a tool that I want to use to think. + +00:16:58.200 --> 00:17:00.479 +I do see the appeal there. + +00:17:00.480 --> 00:17:04.039 +But anyway, the org-roam, like that's a roam part. + +00:17:04.040 --> 00:17:05.879 +You can watch a lot of videos + +00:17:05.880 --> 00:17:07.159 +on that to get a feel for this. + +00:17:07.160 --> 00:17:10.559 +Org-roam adopted this to make the connection easier + +00:17:10.560 --> 00:17:13.479 +and replicate features. As I said, porting tools + +00:17:13.480 --> 00:17:16.399 +that exist into Emacs, very nice pastime. + +00:17:16.400 --> 00:17:18.079 +A lot of people do this for a lot of things, + +00:17:18.080 --> 00:17:20.359 +but it's not a thinking environment. + +00:17:20.360 --> 00:17:22.319 +It's just another tool to take notes in + +00:17:22.320 --> 00:17:25.279 +that behave weirdly with links or interestingly with links. + +00:17:25.280 --> 00:17:29.159 +And Denote does do even less. + +00:17:29.160 --> 00:17:31.199 +It only offers you a couple of shortcuts + +00:17:31.200 --> 00:17:33.799 +to help you find files quickly. + +00:17:33.800 --> 00:17:37.679 +It does, like you see in the bottom here in the mode line, + +00:17:37.680 --> 00:17:40.519 +it does just show square brackets D + +00:17:40.520 --> 00:17:44.359 +instead of the whole ID, which would be rather long. + +00:17:44.360 --> 00:17:48.399 +So you have a buffer list that is bearable and works. + +00:17:48.400 --> 00:17:51.439 +You can read this and find the title quickly. + +00:17:51.440 --> 00:17:56.199 +Things like that, Denote does things like that. + +00:17:56.200 --> 00:17:58.219 +Oh, I closed the wrong. + +00:17:58.200 --> 00:18:00.639 +Denote does things like that very well, + +00:18:00.640 --> 00:18:02.559 +but it gets out of your way otherwise. + +00:18:02.560 --> 00:18:04.079 +Just a couple of conventions + +00:18:04.080 --> 00:18:06.239 +to get stuff into your file system. + +00:18:06.240 --> 00:18:08.839 +I'm not sure if Org-Roam now, + +00:18:08.840 --> 00:18:11.199 +what's the current state there? + +00:18:11.200 --> 00:18:13.399 +Do they do ID generation out of the box? + +00:18:13.400 --> 00:18:18.319 +Is there a standard popular convention or whatever? + +00:18:18.320 --> 00:18:19.879 +not sure, didn't follow, + +00:18:19.880 --> 00:18:21.759 +but I'm very happy that org-roam still exists + +00:18:21.760 --> 00:18:25.039 +because I think porting tools into emacs is very cool, + +00:18:25.040 --> 00:18:27.559 +I guess next question, + +00:18:27.560 --> 00:18:31.839 +I noticed that the wikipedia link you wrote + +00:18:31.840 --> 00:18:40.279 +was typed wrongly, oh no garbage in, garbage out, + +00:18:40.280 --> 00:18:45.079 +I think garbage in, garbage out, garbage well spotted + +00:18:45.080 --> 00:18:47.199 +how do you do that oh I typed it + +00:18:47.200 --> 00:18:50.679 +I typed it from yeah right i didn't + +00:18:50.680 --> 00:18:53.359 +i didn't paste this right yeah yeah + +00:18:53.360 --> 00:18:55.879 +this janitorial tasks that's the umbrella term + +00:18:55.880 --> 00:18:56.839 +how do you deal with this + +00:18:56.840 --> 00:18:59.560 +like if you put stuff like this into into your notes + +00:18:59.560 --> 00:19:05.759 +you hopefully get a 404 code from wikipedia + +00:19:05.760 --> 00:19:07.559 +because the page doesn't exist + +00:19:07.560 --> 00:19:11.999 +let's not check um you get a 404 and then you could write a tool + +00:19:12.000 --> 00:19:13.799 +that checks all the links periodically + +00:19:13.800 --> 00:19:17.199 +and tells you about broken links like a broken link checker + +00:19:17.200 --> 00:19:19.679 +that then looks up maybe automatically + +00:19:19.680 --> 00:19:21.919 +the last good version on archive.org + +00:19:21.920 --> 00:19:23.319 +and then the Wayback Machine + +00:19:23.320 --> 00:19:26.879 +and then corrects the link with the archived version + +00:19:26.880 --> 00:19:30.479 +because the live one is gone like this happens all the time on the internet + +00:19:30.480 --> 00:19:31.919 +and even if you don't mistype + +00:19:31.920 --> 00:19:35.879 +you could you know things go out of out of order so + +00:19:35.880 --> 00:19:42.599 +What do you do with that? You need to automate this. + +00:19:42.600 --> 00:19:45.119 +I'm not clicking every link manually. + +00:19:45.120 --> 00:19:49.279 +I have like, what's it now, 11,000 notes or something. + +00:19:49.280 --> 00:19:51.999 +This is not a thing that humans are good at. + +00:19:52.000 --> 00:19:52.919 +I'm not good at this. + +00:19:52.920 --> 00:19:55.359 +I will never finish anything else if I do this manually. + +00:19:55.360 --> 00:19:57.079 +So write a tool, write a script, + +00:19:57.080 --> 00:19:58.719 +get a script from the interwebs. + +00:19:58.720 --> 00:20:01.919 +There are tools like this plenty that can do it. + +00:20:01.920 --> 00:20:06.319 +And then you just need to do the wiring. + +00:20:06.320 --> 00:20:07.599 +and that should help. + +00:20:07.600 --> 00:20:09.759 +You could automate this in Emacs, of course, right? + +00:20:09.760 --> 00:20:12.479 +For every file in my node directory, + +00:20:12.480 --> 00:20:14.359 +look if there's a link inside + +00:20:14.360 --> 00:20:16.119 +and then check the URL or whatever. + +00:20:16.120 --> 00:20:18.319 +Also works for inter-node connections. + +00:20:18.320 --> 00:20:21.239 +This could also break if you rename files or remove files + +00:20:21.240 --> 00:20:23.959 +and don't use a denote function, + +00:20:23.960 --> 00:20:26.879 +which I believe takes care of backlinks and forward links + +00:20:26.880 --> 00:20:28.639 +and keeps them organized. + +00:20:28.640 --> 00:20:31.399 +If you do this manually on another device, + +00:20:31.400 --> 00:20:38.119 +out of denote, out of Emacs, in Vim, I don't know, then yeah, mistakes happen + +00:20:38.120 --> 00:20:39.959 +and you need to deal with mistakes + +00:20:39.960 --> 00:20:44.359 +and heal and create scar tissue there in some way + +00:20:44.360 --> 00:20:48.279 +so write janitorial tools to do that it's also, + +00:20:48.280 --> 00:20:50.679 +i'm mentioning the term janitorial tools + +00:20:50.680 --> 00:20:51.679 +a couple of times now + +00:20:51.680 --> 00:20:55.439 +because that's the term that we in the forums at least + +00:20:55.440 --> 00:20:58.199 +usually talk about things like find orphaned notes, + +00:20:58.200 --> 00:21:02.119 +notes that no one links to find broken links, + +00:21:02.120 --> 00:21:07.479 +clean up references reformat nodes, stuff like this. + +00:21:07.480 --> 00:21:10.039 +Find large nodes and then suggest them + +00:21:10.040 --> 00:21:11.799 +to the user to break them up. + +00:21:11.800 --> 00:21:14.180 +Like these are tasks that you can do mechanically, + +00:21:14.160 --> 00:21:21.719 +but also it's better if you use a tool to get started, + +00:21:21.720 --> 00:21:27.519 +otherwise you waste a lot of time. + +00:21:27.520 --> 00:21:35.199 +Next question, when I complete, next long question. + +00:21:35.200 --> 00:21:39.239 +I'm going to copy this over because maybe + +00:21:39.240 --> 00:21:42.399 +When I completely reworked my configs from two years ago, + +00:21:42.400 --> 00:21:44.839 +I also tried some of these packages for making nodes, + +00:21:44.840 --> 00:21:47.119 +but none of them actually fit my purpose, + +00:21:47.120 --> 00:21:51.919 +because I do not like the idea of splitting up my ideas. + +00:21:51.920 --> 00:21:53.279 +I'm writing prose. + +00:21:53.280 --> 00:21:55.639 +I collect material, reading lists, and so on + +00:21:55.640 --> 00:21:57.519 +in just one big file. Everything fits in. + +00:21:57.520 --> 00:22:00.879 +In this notebook file, I do archiving from time to time. + +00:22:00.880 --> 00:22:02.399 +I search these files in Finder + +00:22:02.400 --> 00:22:04.439 +to find old notes I would like to go back to. + +00:22:04.440 --> 00:22:06.119 +So if I write a paper, + +00:22:06.120 --> 00:22:09.199 +it's basically an extract from my old notes + +00:22:09.200 --> 00:22:13.719 +that only have one structure. + +00:22:13.720 --> 00:22:17.959 +when I took them time structures my thought and my notes + +00:22:17.960 --> 00:22:20.359 +but they would get lost if I split them up in a network + +00:22:20.360 --> 00:22:22.799 +like structure like a wiki etc custom my two cents + +00:22:22.800 --> 00:22:32.239 +by the way I work on legal sociological topics + +00:22:32.240 --> 00:22:37.439 +i'm a lawyer by training you know Luhmann was a german german style + +00:22:37.440 --> 00:22:40.999 +weird sociologist + +00:22:41.000 --> 00:22:43.999 +and sociology studies are like the first four semesters at university, + +00:22:44.000 --> 00:22:48.639 +where a lot of, I don't know any of the terms in English, + +00:22:48.640 --> 00:22:50.999 +a lot of these things were theories + +00:22:51.000 --> 00:22:52.999 +in the loosest and broadest sense. + +00:22:53.000 --> 00:22:55.439 +Some were just models of how things might behave, + +00:22:55.440 --> 00:22:57.999 +but nobody knew because they were not empirically backed. + +00:22:58.000 --> 00:23:00.119 +Some were empirically backed, + +00:23:00.120 --> 00:23:01.959 +and then also there was some sense making. + +00:23:01.960 --> 00:23:03.599 +And then also in sociology, + +00:23:03.600 --> 00:23:08.999 +you have some structure analysis of, + +00:23:09.000 --> 00:23:11.239 +like demographics and things like that. + +00:23:11.240 --> 00:23:15.559 +So very, very hard fact and statistics heavy things. + +00:23:15.560 --> 00:23:20.639 +So broad topic. And there's a lot of interconnections. + +00:23:20.640 --> 00:23:22.599 +I can see the approach here. + +00:23:22.600 --> 00:23:25.359 +I'm not going to defend Zettelkasten + +00:23:25.360 --> 00:23:30.519 +so that you in the end become a Zettelkasten aficionado + +00:23:30.520 --> 00:23:33.639 +or whatever I mean, if it works, fine, more power to you like + +00:23:33.640 --> 00:23:37.919 +reminds me of Twyla Tharp's like the shoebox approach + +00:23:37.920 --> 00:23:39.159 +or whatever it was called + +00:23:39.160 --> 00:23:41.959 +where she just dumped everything inside + +00:23:41.960 --> 00:23:44.759 +for her next project like an idea box, + +00:23:44.760 --> 00:23:47.279 +like real physical things like oh, I want to, I don't know, + +00:23:47.280 --> 00:23:50.079 +like this weird 8-bit do controller inside + +00:23:50.080 --> 00:23:54.639 +and then eventually she would spread out everything she collected, + +00:23:54.640 --> 00:23:59.599 +newspaper clippings and I don't know, maybe toenails or some weird stuff, + +00:23:59.600 --> 00:24:01.879 +I don't know what she actually put there + +00:24:01.880 --> 00:24:03.359 +and then make sense of this + +00:24:03.360 --> 00:24:08.319 +and think of something of putting these sorted pieces into context + +00:24:08.320 --> 00:24:12.759 +and if you just dump stuff into a notebook file + +00:24:12.760 --> 00:24:20.199 +and then rework the stuff, yeah, fine + +00:24:20.200 --> 00:24:22.639 +One answer is Zettelkasten is great for mathematics. + +00:24:22.640 --> 00:24:25.239 +Or maybe you can have... Oh, next question. + +00:24:25.240 --> 00:24:31.439 +Sorry, I jumped. So my answer is, this was not a question, + +00:24:31.440 --> 00:24:34.799 +and I'm happy for you. So that's still an answer. + +00:24:34.800 --> 00:24:38.639 +Next question. How Zettelkasten is useful + +00:24:38.640 --> 00:24:42.519 +for highly mathematical STEM academic fields + +00:24:42.520 --> 00:24:44.839 +like computer science or engineering fields, + +00:24:44.840 --> 00:24:48.879 +like when studying a STEM field? + +00:24:48.880 --> 00:24:52.999 +I need to unpack the acronym again maybe for the audience. + +00:24:53.000 --> 00:24:58.199 +M is mathematics. Engineering is E. + +00:24:58.200 --> 00:25:02.519 +Science and tech, tech, techno, + +00:25:02.520 --> 00:25:05.599 +I don't know, maybe technical. I could look this up, right? + +00:25:05.600 --> 00:25:09.839 +STEM, what was STEM again? I'm doing a bad job. + +00:25:09.840 --> 00:25:12.079 +Science, technology, engineering, mathematics. + +00:25:12.080 --> 00:25:16.479 +Okay, so probably technology is the computer stuff. + +00:25:16.480 --> 00:25:17.159 +Yeah, STEM. + +00:25:17.160 --> 00:25:19.399 +Dear audience, that's science, technology, + +00:25:19.400 --> 00:25:22.999 +engineering, mathematics, academic fields. + +00:25:23.000 --> 00:25:24.799 +What should we make notes of? + +00:25:24.800 --> 00:25:27.199 +The important bits are interconnected in a hierarchy, + +00:25:27.200 --> 00:25:28.199 +usually chapters of a book. + +00:25:28.200 --> 00:25:31.639 +Yes, someone did the job of making the order + +00:25:31.640 --> 00:25:33.559 +out of the chaotic findings + +00:25:33.560 --> 00:25:35.919 +that people did over hundreds of years for you. + +00:25:35.920 --> 00:25:39.479 +That's an order. But there are also many textbooks. + +00:25:39.480 --> 00:25:42.759 +So opinions may vary. The presentation may vary. + +00:25:42.760 --> 00:25:48.279 +Some textbooks may click with you, + +00:25:48.280 --> 00:25:59.359 +while others stay opaque, and you can't get into the meat. + +00:25:59.360 --> 00:26:04.599 +Sorry, I'm just typing the answer right now. + +00:26:04.600 --> 00:26:13.319 +Copying information to another box is not, yeah. + +00:26:13.320 --> 00:26:17.719 +Yeah, let's see what the first answer is. + +00:26:17.720 --> 00:26:21.559 +Someone posted that Zettelkasten is great for mathematics, + +00:26:21.560 --> 00:26:22.919 +incredible for computer science. + +00:26:22.920 --> 00:26:25.439 +With OrgBabel you can have living source code, yes, + +00:26:25.440 --> 00:26:26.719 +that you can execute from the node, + +00:26:26.720 --> 00:26:28.479 +also true for a formula, + +00:26:28.480 --> 00:26:35.239 +and LaTeX in interspersing of images and SVGs. + +00:26:35.240 --> 00:26:37.119 +You can even use Agda if you want to. + +00:26:37.120 --> 00:26:39.279 +Ah, I think I know who typed the answer. + +00:26:39.280 --> 00:26:42.999 +Hello, Oliver. If you want to have living proofs in your nodes, + +00:26:43.000 --> 00:26:47.719 +even inline LaTeX is in here. That's, yeah, yeah, yeah. + +00:26:47.720 --> 00:26:58.959 +quote the sentence as is and add, yeah, add something, + +00:26:58.960 --> 00:27:01.319 +maybe your own summary. + +00:27:01.320 --> 00:27:02.959 +I would suggest add your own summary + +00:27:02.960 --> 00:27:11.299 +because we're looking at the etherpad, right? + +00:27:11.300 --> 00:27:14.639 +Maybe I just copy this over so you can all the either + +00:27:14.640 --> 00:27:30.879 +pets indentation is missing with what Org is doing. + +00:27:30.880 --> 00:27:36.999 +And the answer was probably submitted by Oliver + +00:27:37.000 --> 00:27:40.479 +just in case someone wants to see + +00:27:40.480 --> 00:27:47.679 +who that could have been with the Acta reference + +00:27:47.680 --> 00:27:49.799 +because nobody uses Acta, + +00:27:49.800 --> 00:27:55.999 +nobody in the world maybe so Acta is just a yeah + +00:27:56.000 --> 00:28:01.319 +let's say it's good for proofing the code that you type + +00:28:01.320 --> 00:28:04.399 +as you type it in the compilation set very weird + +00:28:04.400 --> 00:28:07.199 +if you've never heard of this so check that out + +00:28:07.200 --> 00:28:13.839 +so question was how Zettelkasten is useful for these kinds of things + +00:28:13.840 --> 00:28:16.119 +yeah it sounds like in these kinds of fields + +00:28:16.120 --> 00:28:18.359 +that you only deal with facts + +00:28:18.360 --> 00:28:24.719 +that's also kind of sort of true for psychology where you have a lot of + +00:28:24.720 --> 00:28:29.639 +and also law where you at least in at least in German + +00:28:29.640 --> 00:28:33.759 +and our style of law where you have a lot of where you have thick books of law + +00:28:33.760 --> 00:28:38.599 +and very very little records, + +00:28:38.600 --> 00:28:41.479 +that's not the right phrasing, + +00:28:41.480 --> 00:28:48.239 +where you don't rely on the ruling as much as you do in, for example, the USA, + +00:28:48.240 --> 00:28:53.919 +where you need to be aware of every court ruling to then put stuff into context + +00:28:53.920 --> 00:28:58.999 +and all of this is like the current how you do law. + +00:28:59.000 --> 00:29:01.039 +I don't know. + +00:29:01.040 --> 00:29:04.039 +I'm not a lawyer and also not good at this in English. + +00:29:04.040 --> 00:29:04.839 +So, sorry. + +00:29:04.840 --> 00:29:08.159 +If I don't find the cool words and technical terms, + +00:29:08.160 --> 00:29:11.079 +you probably all know. + +00:29:11.080 --> 00:29:12.639 +What do you do with these kinds of things? + +00:29:12.640 --> 00:29:14.719 +You need to collect a lot of stuff. + +00:29:14.720 --> 00:29:17.559 +Like the previous questionnaire mentioned, + +00:29:17.560 --> 00:29:19.719 +hey, I'm just copying stuff over + +00:29:19.720 --> 00:29:22.119 +and then I have a good time and can write about this + +00:29:22.120 --> 00:29:24.119 +and create prose in the end. + +00:29:24.120 --> 00:29:26.519 +Like with mathematics, you can't. + +00:29:26.520 --> 00:29:36.719 +You can't do a lot when you're still working on the foundations. + +00:29:36.720 --> 00:29:38.599 +Like, what do you want to do there? + +00:29:38.600 --> 00:29:41.959 +You don't innovate there. You just need to learn the stuff. + +00:29:41.960 --> 00:29:45.799 +Typing things out and creating your own organization + +00:29:45.800 --> 00:29:49.519 +of how things are connected there, + +00:29:49.520 --> 00:29:52.079 +that's where the depth of processing increases, + +00:29:52.080 --> 00:29:53.839 +like the actual depth of processing + +00:29:53.840 --> 00:29:57.759 +so that it takes more effort + +00:29:57.760 --> 00:30:01.399 +and affects more parts of your brain, basically, + +00:30:01.400 --> 00:30:03.919 +which then helps with remembering stuff. + +00:30:03.920 --> 00:30:12.759 +I'm trying not to go into a 10 minute tangent here, but + +00:30:12.760 --> 00:30:18.439 +If you've ever tried to memorize stuff with flashcards + +00:30:18.440 --> 00:30:20.879 +and you put a, I don't know, coffee stain + +00:30:20.880 --> 00:30:24.559 +or a weird scribble or spilled something on one of these cards, + +00:30:24.560 --> 00:30:26.639 +actual physical cards there, + +00:30:26.640 --> 00:30:29.119 +this card now has another piece of information + +00:30:29.120 --> 00:30:32.519 +that is actually important + +00:30:32.520 --> 00:30:36.119 +because it makes the card stand out + +00:30:36.120 --> 00:30:41.279 +more and more worthy of being remembered + +00:30:41.280 --> 00:30:42.639 +because now one of these cards + +00:30:42.640 --> 00:30:44.679 +has this coffee circle thingy + +00:30:44.680 --> 00:30:46.959 +and all the others don't so this one stands out + +00:30:46.960 --> 00:30:49.079 +and this may actually improve + +00:30:49.080 --> 00:30:51.519 +how you learn this particular fact + +00:30:51.520 --> 00:30:57.839 +that you want to remember or memorize + +00:30:57.840 --> 00:31:00.839 +Similar, like what kind of principle + +00:31:00.840 --> 00:31:04.439 +do people postulate is at play here? + +00:31:04.440 --> 00:31:06.399 +Again, last time I went into + +00:31:06.400 --> 00:31:08.079 +this kind of stuff was at university, + +00:31:08.080 --> 00:31:11.719 +so I'm not sure if there's something new + +00:31:11.720 --> 00:31:15.319 +in the field of flashcard learning. + +00:31:15.320 --> 00:31:18.919 +I'm not aware of anything, let's say. + +00:31:18.920 --> 00:31:23.279 +And the idea back then that we spread + +00:31:23.280 --> 00:31:25.360 +and that was taught to us was like this. + +00:31:27.540 --> 00:31:32.599 +That more information and more context and more stimuli + +00:31:32.600 --> 00:31:34.759 +and making things more interesting, + +00:31:34.760 --> 00:31:39.340 +that's what makes it memorable. + +00:31:39.341 --> 00:31:43.799 +if you go for a walk and then associate things with places. + +00:31:43.800 --> 00:31:47.359 +Going for a walk is a different activity + +00:31:47.360 --> 00:31:48.839 +than imagining going for a walk. + +00:31:48.840 --> 00:31:52.079 +It's also different from not doing anything + +00:31:52.080 --> 00:31:54.399 +and just sitting in your chair + +00:31:54.400 --> 00:31:56.519 +and relaxing because you're not engaged. + +00:31:56.520 --> 00:31:58.919 +You're losing, like you're using + +00:31:58.920 --> 00:32:01.959 +a bit of your brain matter to do the work + +00:32:01.960 --> 00:32:04.399 +while the rest of your body is stagnant. + +00:32:04.400 --> 00:32:07.759 +You don't smell anything different. + +00:32:07.760 --> 00:32:09.239 +You don't hear, see, feel on your skin, + +00:32:09.240 --> 00:32:11.399 +everything's constant, + +00:32:11.400 --> 00:32:15.239 +like you're in a, what are these called? + +00:32:15.240 --> 00:32:18.639 +These chambers where you're locked + +00:32:18.640 --> 00:32:21.479 +into very salty water, I think. + +00:32:21.480 --> 00:32:24.639 +Floating chambers, so sensual deprivation chambers. + +00:32:24.640 --> 00:32:29.519 +You're depriving yourself of a lot of sensual input + +00:32:29.520 --> 00:32:31.519 +if you just try to really focus + +00:32:31.520 --> 00:32:33.479 +into everything with your head. + +00:32:33.480 --> 00:32:34.999 +If you engage more of your body, + +00:32:35.000 --> 00:32:36.007 +if you engage more of your senses, + +00:32:36.008 --> 00:32:37.674 +then you have an easier time there. + +00:32:37.675 --> 00:32:40.590 +What does it have to do with this answer? + +00:32:40.560 --> 00:32:46.799 +My answer would be the value is in rephrasing, + +00:32:46.800 --> 00:32:51.799 +in making your own connections eventually. + +00:32:51.800 --> 00:32:56.439 +I don't know, the foundational laws of geometry, + +00:32:56.440 --> 00:32:58.119 +there's no room for innovation, + +00:32:58.120 --> 00:33:00.159 +but there's maybe a room for association. + +00:33:00.160 --> 00:33:03.759 +Like, hey, I remember this, like, if you can't figure out + +00:33:03.760 --> 00:33:09.759 +what the name of a certain axiom, lemma, whatever it is, and it has a name, + +00:33:09.760 --> 00:33:12.679 +adding your own story to the note doesn't hurt. + +00:33:12.680 --> 00:33:14.839 +If you say, hey, this is what my grandfather + +00:33:14.840 --> 00:33:18.719 +taught me with wire and sticks when we tried to measure + +00:33:18.720 --> 00:33:22.839 +whatever in the sand on a vacation one day. + +00:33:22.840 --> 00:33:26.199 +And these kinds of things make it more memorable. + +00:33:26.200 --> 00:33:31.039 +And that's at least something that you could need to then, + +00:33:31.040 --> 00:33:33.999 +which is the ultimate purpose of STEM at university, + +00:33:34.000 --> 00:33:39.559 +then you can pass the tests. Like that's it. + +00:33:39.560 --> 00:33:42.999 +You either, and eventually you embody the knowledge, right? + +00:33:43.000 --> 00:33:44.679 +If you do this stuff over and over again, + +00:33:44.680 --> 00:33:45.839 +then you don't need to look up + +00:33:45.840 --> 00:33:47.599 +how to do a certain kind of proof. + +00:33:47.600 --> 00:33:50.759 +And you just do the proof when you need to do the proof. + +00:33:50.760 --> 00:33:53.919 +But maybe you forget all the kinds of weird proofs + +00:33:53.920 --> 00:33:55.079 +that you encountered in your life + +00:33:55.080 --> 00:33:57.159 +because you only remember the 10 most weird ones, + +00:33:57.160 --> 00:33:58.519 +but you had 15 in your life. + +00:33:58.520 --> 00:34:00.399 +And what's about the, what do you do + +00:34:00.400 --> 00:34:02.800 +with the five missing ones? They just fade away. + +00:34:02.800 --> 00:34:05.279 +But if you capture them in some way or another, + +00:34:05.280 --> 00:34:08.559 +as superficial as it may be, + +00:34:08.560 --> 00:34:10.479 +and you still have access to this later + +00:34:10.480 --> 00:34:21.799 +when you need to check your personal inventory + +00:34:21.800 --> 00:34:30.519 +of mathematical proofs so my answer would be + +00:34:30.520 --> 00:34:33.119 +let's type in my answer + +00:34:33.120 --> 00:34:46.199 +on either pad would be I'm not able to type. + +00:34:46.200 --> 00:34:52.599 +Sorry. My answer would be this. + +00:34:52.600 --> 00:35:05.239 +Foundational knowledge is important for tests mostly + +00:35:05.240 --> 00:35:13.300 +and eventually becomes your inventory of skills. + +00:35:23.200 --> 00:35:25.879 +Synth programming, like I don't need to look up for loops, + +00:35:25.880 --> 00:35:29.519 +I just do for loops and that's it, right? + +00:35:29.520 --> 00:35:32.999 +But still, I do have notes about for loops, I think, + +00:35:33.000 --> 00:35:34.839 +in different languages, like Python, + +00:35:34.840 --> 00:35:37.679 +the, what is it called, list comprehension. + +00:35:37.680 --> 00:35:39.919 +I'm not using Python, but it's so quirky. + +00:35:39.920 --> 00:35:42.879 +It's quirky and I captured this on a note + +00:35:42.880 --> 00:35:45.879 +because I needed to get myself used to the pieces + +00:35:45.880 --> 00:35:48.159 +and I needed to look at the syntax anyway, + +00:35:48.160 --> 00:35:50.719 +and then this is that part and this goes there. + +00:35:50.720 --> 00:35:55.799 +And I did this work, like this separation stuff on a note + +00:35:55.800 --> 00:36:01.159 +to then do the work with more engagement, + +00:36:01.160 --> 00:36:04.599 +like engage more so I can remember more later. + +00:36:04.600 --> 00:36:06.079 +I don't remember all the details, + +00:36:06.080 --> 00:36:08.079 +but I do remember there were different parts, + +00:36:08.080 --> 00:36:09.519 +and then I can look up the note. + +00:36:09.520 --> 00:36:12.799 +And it helps me refresh my memory rather quickly, + +00:36:12.800 --> 00:36:15.399 +because it's written by me for me + +00:36:15.400 --> 00:36:17.199 +in a way that I'm writing these notes + +00:36:17.200 --> 00:36:18.599 +for 15 years or something. + +00:36:18.600 --> 00:36:27.119 +16, at least, 16 years or something. + +00:36:27.120 --> 00:36:30.439 +So it's much better than looking, especially now, + +00:36:30.440 --> 00:36:31.759 +it's much better than going to the web + +00:36:31.760 --> 00:36:33.399 +and doing a web search for the same topic, + +00:36:33.400 --> 00:36:37.199 +because I will probably not get the useful resource + +00:36:37.200 --> 00:36:40.199 +that I relied on some eight years ago anyway, + +00:36:40.200 --> 00:36:41.599 +but some garbage instead, + +00:36:41.600 --> 00:36:44.919 +maybe AI generated stuff, I don't know. + +00:36:44.920 --> 00:36:48.319 +So I have my personal copy of this + +00:36:48.320 --> 00:36:50.639 +and it's not just copying the thing into a box, + +00:36:50.640 --> 00:36:51.759 +like from one box into another, + +00:36:51.760 --> 00:36:53.879 +from the public internet box into my own buffer, + +00:36:53.880 --> 00:36:56.399 +that's a custom that's closer to me, + +00:36:56.400 --> 00:36:58.559 +like a fridge is closer to my kitchen + +00:36:58.560 --> 00:37:01.359 +and where I want to eat when I'm hungry + +00:37:01.360 --> 00:37:02.399 +than going to the supermarket + +00:37:02.400 --> 00:37:04.279 +or out into the wild and hunt animals, + +00:37:04.280 --> 00:37:06.199 +like this is all about proximity + +00:37:06.200 --> 00:37:10.759 +and also brought about ownership, like I own these notes + +00:37:10.760 --> 00:37:13.199 +and I still take responsibility + +00:37:13.200 --> 00:37:14.599 +for what I put on them to some degree + +00:37:14.600 --> 00:37:15.959 +like sometimes they're really bad + +00:37:15.960 --> 00:37:17.319 +and I want to distance myself, + +00:37:17.320 --> 00:37:23.919 +but still yeah, so that's it, I'm just I'm leaving, + +00:37:23.920 --> 00:37:29.639 +I'm not typing this out, I'm leaving copy box fridge, + +00:37:29.640 --> 00:37:32.119 +there was a term for this, wait a second, + +00:37:32.120 --> 00:37:38.839 +setup custom fridge can be fridge-like buffer of knowledge + +00:37:38.840 --> 00:37:48.079 +I'm just, let me just try to copy this note verbatim into the etherpad + +00:37:48.080 --> 00:37:51.879 +and then see whether you folks can do something with it. + +00:37:51.880 --> 00:38:00.959 +The formatting. See appendix A. I am doing this here. + +00:38:00.960 --> 00:38:10.319 +Appendix A. I'm not going to read this, + +00:38:10.320 --> 00:38:13.679 +but then you have a FridgeLab buffer of knowledge. + +00:38:13.680 --> 00:38:16.839 +Local link in the supply chain. That was the term. + +00:38:16.840 --> 00:38:18.199 +Didn't remember that one. + +00:38:18.200 --> 00:38:28.119 +It's at least a local link in supply chain. + +00:38:28.120 --> 00:38:36.079 +Also, engagement doing the work of not copying, + +00:38:36.080 --> 00:38:38.439 +but rephrasing, organizing, + +00:38:38.440 --> 00:38:46.399 +but sometimes also just typing the stuff in + +00:38:46.400 --> 00:38:51.759 +that's how people romanticize learning a basic + +00:38:51.760 --> 00:38:54.999 +like there were magazines with a lot of code listings + +00:38:55.000 --> 00:38:58.839 +and they just typed the code it was quite some effort + +00:38:58.840 --> 00:39:00.879 +you eventually got better at this + +00:39:00.880 --> 00:39:03.799 +but you did do mistakes and then you needed to correct + +00:39:03.800 --> 00:39:06.799 +and look through the source code carefully to spot the typo + +00:39:06.800 --> 00:39:11.839 +That's apparently virtue, at least people claim it's a virtue. + +00:39:11.840 --> 00:39:15.759 +I don't deny it's a virtue because I went through the same kind of crap + +00:39:15.760 --> 00:39:20.919 +and I believe it strengthened my character, for sure, but still. + +00:39:20.920 --> 00:39:26.639 +Maybe it's not that useful, but maybe it is. I don't know. + +00:39:26.640 --> 00:39:27.759 +There's studies I remember, + +00:39:27.760 --> 00:39:30.519 +but I don't remember any interesting results. + +00:39:30.520 --> 00:39:32.839 +It's not like it's a 10x improvement + +00:39:32.840 --> 00:39:36.959 +of recall if you type this, but it may be significant. + +00:39:36.960 --> 00:39:39.319 +Just check it out for yourself. I'm not sure. + +00:39:39.320 --> 00:39:40.959 +Next question, sorry. + +00:39:40.960 --> 00:39:45.639 +In your experience, would you say that you reuse most of your nodes? + +00:39:45.640 --> 00:39:47.959 +Watching your demo, I thought that more nodes you create, + +00:39:47.960 --> 00:39:51.279 +the less you might reuse them. Yes, that's true. + +00:39:51.280 --> 00:39:54.879 +I have 11,000 nodes or something, + +00:39:54.880 --> 00:39:57.239 +and I don't use 11,000 nodes every day. + +00:39:57.240 --> 00:39:59.879 +I can only use a fraction of them. + +00:39:59.880 --> 00:40:06.439 +But let's say you have the Feynman Darling nodes, + +00:40:06.440 --> 00:40:08.479 +then you would probably use these. + +00:40:08.480 --> 00:40:11.479 +Imagine you have the same 12 Darlings for a year. + +00:40:11.480 --> 00:40:15.559 +Then you use these 12 thingies for one year more often. + +00:40:15.560 --> 00:40:17.919 +than most of your other nodes, + +00:40:17.920 --> 00:40:19.999 +because these become your entry points + +00:40:20.000 --> 00:40:21.999 +into what's in my Zettelkasten today. + +00:40:22.000 --> 00:40:23.559 +These become your entry points + +00:40:23.560 --> 00:40:24.999 +of what do I want to work on today? + +00:40:25.000 --> 00:40:27.719 +These become your, where can I put + +00:40:27.720 --> 00:40:29.199 +the weird stuff that I just found? + +00:40:29.200 --> 00:40:31.119 +Does it stick to any of these surfaces? + +00:40:31.120 --> 00:40:33.719 +Entry point into the process. + +00:40:33.720 --> 00:40:41.839 +But let's say, five years later, + +00:40:41.840 --> 00:40:45.399 +maybe these 12 Feynman darlings were your darlings + +00:40:45.400 --> 00:40:47.719 +during university studies for STEM field, + +00:40:47.720 --> 00:40:49.479 +where you had a hard time figuring out + +00:40:49.480 --> 00:40:52.479 +how the technical system works for your benefit. + +00:40:52.480 --> 00:40:56.279 +And then five years later, you're in a job and you don't need all of them + +00:40:56.280 --> 00:41:00.799 +because your subject matters from university, they're gone. + +00:41:00.800 --> 00:41:03.119 +you're not at a day job and you have different darlings + +00:41:03.120 --> 00:41:04.319 +whatever your day job is + +00:41:04.320 --> 00:41:09.399 +maybe you're a mathematician at an insurance company + +00:41:09.400 --> 00:41:14.319 +so you will probably have insurance related domain darlings pouring in + +00:41:14.320 --> 00:41:18.119 +and some academic darlings falling off the bandwagon + +00:41:18.120 --> 00:41:21.119 +because no time for these maybe other hobbies come in + +00:41:21.120 --> 00:41:25.919 +like i didn't have anything related to child Rearing, + +00:41:25.920 --> 00:41:28.999 +bearing is when you produce them + +00:41:29.000 --> 00:41:30.199 +and put them into the wild, right? + +00:41:30.200 --> 00:41:34.639 +Rearing is when you let them grow up, I don't know + +00:41:34.640 --> 00:41:36.959 +Like when you have children and make them not die + +00:41:36.960 --> 00:41:42.039 +and get larger and do stuff, right? + +00:41:42.040 --> 00:41:44.079 +I did have a couple of things in advance, but + +00:41:44.080 --> 00:41:47.919 +That was not a daily concern. Now it is. + +00:41:47.920 --> 00:41:50.999 +Now I'm a father and that's a new concern in my life. + +00:41:51.000 --> 00:41:54.599 +Getting things done also tackled this, right? + +00:41:54.600 --> 00:41:56.239 +If you remember getting things done, everyone, + +00:41:56.240 --> 00:41:58.559 +you had areas of responsibility. + +00:41:58.560 --> 00:42:00.999 +It's a new area of responsibility and you could represent, + +00:42:01.000 --> 00:42:06.599 +sorry, you could represent these in your Zettelkasten, + +00:42:06.600 --> 00:42:10.239 +if you find that you can spell out your areas of responsibility + +00:42:10.240 --> 00:42:12.799 +well, then you can see, well, I've learned something new, + +00:42:12.800 --> 00:42:14.719 +can I become a better person + +00:42:14.720 --> 00:42:16.879 +in one of my core areas of responsibility? + +00:42:16.880 --> 00:42:18.679 +Yes or no? Why not? + +00:42:18.680 --> 00:42:21.279 +Then you will use these more than the other notes. + +00:42:21.280 --> 00:42:25.159 +Like the weird thing you found last month. + +00:42:25.160 --> 00:42:29.079 +Last month, you will probably not reference that weird thing every day. + +00:42:29.080 --> 00:42:32.359 +Natural process. But it's there. + +00:42:32.360 --> 00:42:34.799 +And eventually you get back to something, + +00:42:34.800 --> 00:42:38.999 +and then you serve access to this like that's the that + +00:42:39.000 --> 00:42:43.599 +and whatever this changes like going through these processes + +00:42:43.600 --> 00:42:51.399 +change you if I if I spend a month getting nerd sniped on + +00:42:51.400 --> 00:42:56.679 +I don't know chocolate manufacturing or something + +00:42:56.680 --> 00:43:00.759 +then I don't need this ever these things ever again most likely + +00:43:00.760 --> 00:43:02.999 +but going through the procedure of + +00:43:03.000 --> 00:43:06.199 +becoming the master chocolate manufacturer of my town, + +00:43:06.200 --> 00:43:10.159 +at least in theory, will do something with me + +00:43:10.160 --> 00:43:12.719 +when I encounter the next topic. + +00:43:12.720 --> 00:43:14.959 +I will think of chocolate manufacturing. + +00:43:14.960 --> 00:43:17.359 +I wouldn't have thought of chocolate manufacturing before. + +00:43:17.360 --> 00:43:18.919 +In fact, I didn't think about chocolate + +00:43:18.920 --> 00:43:21.719 +manufacturing yesterday. I just made this up on the spot. + +00:43:21.720 --> 00:43:23.679 +What does this say about me today? + +00:43:23.680 --> 00:43:26.159 +Maybe because we were out of chocolate, + +00:43:26.160 --> 00:43:30.279 +maybe because I don't know, + +00:43:30.280 --> 00:43:33.159 +maybe there's nothing that looks like chocolate here + +00:43:33.160 --> 00:43:36.359 +I don't know so it just came up and now it's there + +00:43:36.360 --> 00:43:39.159 +and things have changed for the better, + +00:43:39.160 --> 00:43:41.359 +for the worse, I don't know but they've changed + +00:43:41.360 --> 00:43:43.719 +and that's the real takeaway there + +00:43:43.720 --> 00:43:44.959 +where do you put the effort? + +00:43:44.960 --> 00:43:48.759 +where do you want to put the effort? and will it pay off? + +00:43:48.760 --> 00:43:54.479 +maybe if not, then maybe spend the time on something else + +00:43:54.480 --> 00:43:57.119 +like don't try to exactly customize something you hate + +00:43:57.120 --> 00:43:59.519 +just to I don't know, + +00:43:59.520 --> 00:44:04.479 +do your due diligence if you don't want to + +00:44:04.480 --> 00:44:06.719 +because then you'll hate the process + +00:44:06.720 --> 00:44:15.279 +that's worse than not using nodes a lot next questions, + +00:44:15.280 --> 00:44:17.719 +how are nodes structured and accessed + +00:44:17.720 --> 00:44:20.639 +when the nodes grow from 10k to 100k nodes? + +00:44:20.640 --> 00:44:22.119 +yes, that's a field of exploration, + +00:44:22.120 --> 00:44:25.919 +I mean that the lower realm there I don't know anybody + +00:44:25.920 --> 00:44:32.359 +who's using a hyperlinked 100k node archive. + +00:44:32.360 --> 00:44:37.239 +I do know people who have a lot of text files + +00:44:37.240 --> 00:44:38.919 +like the Evernote style + +00:44:38.920 --> 00:44:42.799 +they capture everything and put the verbatim copy into their stuff + +00:44:42.800 --> 00:44:47.519 +and then they have a lot more items of course + +00:44:47.520 --> 00:44:51.359 +but these don't really count, + +00:44:51.360 --> 00:44:54.599 +these are like web clippings of websites themselves + +00:44:54.600 --> 00:44:58.119 +I've read how many hundreds of websites today + +00:44:58.120 --> 00:45:02.919 +I could have captured everything automatically, + +00:45:02.920 --> 00:45:07.119 +but they wouldn't, like the files there, the clippings, + +00:45:07.120 --> 00:45:10.559 +they wouldn't have contributed + +00:45:10.560 --> 00:45:12.439 +anything meaningfully to my knowledge base, + +00:45:12.440 --> 00:45:14.479 +because I'm not thinking about the stuff, + +00:45:14.480 --> 00:45:16.399 +I'm thinking about the stuff that I'm spending time on. + +00:45:16.400 --> 00:45:18.839 +What about that? + +00:45:18.840 --> 00:45:20.639 +Yeah, how are nodes structured and accessed + +00:45:20.640 --> 00:45:22.919 +when the nodes go from one to 100k? + +00:45:22.920 --> 00:45:31.399 +I will imagine that it becomes a matter that's speculation. + +00:45:31.400 --> 00:45:34.759 +We'll see. My speculation is this. + +00:45:34.760 --> 00:45:40.639 +it's going to be self-similar, like Mandelbrot images, + +00:45:40.640 --> 00:45:43.199 +where you have recursive patterns. + +00:45:43.200 --> 00:45:46.519 +First, you have a couple of nodes. + +00:45:46.520 --> 00:45:49.759 +You can leave through them digitally or physically easily. + +00:45:49.760 --> 00:45:52.559 +And then eventually, you need to rely on structures + +00:45:52.560 --> 00:45:54.079 +or some kinds of entry points, + +00:45:54.080 --> 00:45:55.679 +which we usually call structures, + +00:45:55.680 --> 00:46:03.359 +thanks to Sascha. Perfect. Thank you. + +00:46:03.360 --> 00:46:04.799 +And the clue there is, + +00:46:04.800 --> 00:46:10.159 +Eventually, you have hundreds or maybe thousands, + +00:46:10.160 --> 00:46:12.359 +not hundreds or thousands, of structure nodes. + +00:46:12.360 --> 00:46:13.959 +And then you have the same problem + +00:46:13.960 --> 00:46:16.039 +that you had on the lower base layer. + +00:46:16.040 --> 00:46:19.199 +And now you will probably look for another tool. + +00:46:19.200 --> 00:46:22.759 +But there is nothing else that's not also a structure node + +00:46:22.760 --> 00:46:25.799 +but is structuring other structures mostly + +00:46:25.800 --> 00:46:28.119 +instead of structuring the low-level nodes. + +00:46:28.120 --> 00:46:31.719 +But this distinction, I want to point out, doesn't pay off. + +00:46:31.720 --> 00:46:34.879 +it seems like it doesn't pay off + +00:46:34.880 --> 00:46:37.319 +to say hey i have these foundational permanent nodes + +00:46:37.320 --> 00:46:38.759 +and then i have these meta nodes + +00:46:38.760 --> 00:46:40.519 +these these maps and structures + +00:46:40.520 --> 00:46:42.759 +and then i have these super mega structures + +00:46:42.760 --> 00:46:44.159 +which are not permanent + +00:46:44.160 --> 00:46:45.519 +which are not structures which are not + +00:46:45.520 --> 00:46:47.919 +I don't know this doesn't seem to pay off + +00:46:47.920 --> 00:46:51.079 +because eventually there is another level and another level + +00:46:51.080 --> 00:46:53.519 +and also sometimes you want to talk + +00:46:53.520 --> 00:46:56.159 +about a structure as a data point + +00:46:56.160 --> 00:46:58.079 +like hey I did this writing project + +00:46:58.080 --> 00:47:00.159 +once it was really cool link to writing project + +00:47:00.160 --> 00:47:04.959 +and the writing project is a table of contents huge hierarchy or whatever. + +00:47:04.960 --> 00:47:06.959 +Is it not a link to a thing? + +00:47:06.960 --> 00:47:10.759 +Back then you get into all these weird academic questions + +00:47:10.760 --> 00:47:12.799 +about the nature of links + +00:47:12.800 --> 00:47:17.719 +and there's no gold at the end of that rainbow, let's say. + +00:47:17.720 --> 00:47:21.159 +At least I've never seen anyone come back with any gold. + +00:47:21.160 --> 00:47:24.199 +I've seen people come back with very long faces + +00:47:24.200 --> 00:47:26.559 +and sadness in their eyes + +00:47:26.560 --> 00:47:31.239 +because all the effort, all the metadata was for naught. + +00:47:31.240 --> 00:47:32.919 +So, how do you do this? + +00:47:32.920 --> 00:47:36.119 +You figure out, when you get to 10k, + +00:47:36.120 --> 00:47:37.759 +you will probably have figured, + +00:47:37.760 --> 00:47:40.839 +and if you do 10k, not like web clippings, + +00:47:40.840 --> 00:47:42.759 +but really like you did put in effort to get there + +00:47:42.760 --> 00:47:46.879 +and type everything yourself in one way or another + +00:47:46.880 --> 00:47:47.999 +you would have figured out something + +00:47:48.000 --> 00:47:52.599 +that kind of sort of works for you around that milestone. + +00:47:52.600 --> 00:47:53.439 +And then I believe in you, + +00:47:53.440 --> 00:47:58.839 +you will be equipped to get to 20k, 30k, + +00:47:58.840 --> 00:48:00.799 +because you feel comfortable in your notes. + +00:48:00.800 --> 00:48:02.399 +And then you can expand further. + +00:48:02.400 --> 00:48:03.719 +And it will probably look different + +00:48:03.720 --> 00:48:06.639 +for someone in STEM fields than for an artist. + +00:48:06.640 --> 00:48:09.079 +Maybe, maybe not. I don't know. + +00:48:09.080 --> 00:48:14.639 +Maybe a fine arts artist would woodcrafter, + +00:48:14.640 --> 00:48:17.359 +maybe these kinds of folks will have different structures + +00:48:17.360 --> 00:48:22.519 +and rely more on visuals, schemas, + +00:48:22.520 --> 00:48:28.559 +whole part relationships, whereas mathematicians may not. + +00:48:28.560 --> 00:48:31.359 +but I don't know, I don't know, we need to compare + +00:48:31.360 --> 00:48:33.639 +and this will be the interesting like + +00:48:33.640 --> 00:48:36.159 +if the internet survives and we all survive + +00:48:36.160 --> 00:48:40.239 +and also Zettelkasten as an idea sticks on + +00:48:40.240 --> 00:48:43.039 +I hope we can have this discussion + +00:48:43.040 --> 00:48:44.839 +every year in five years, in ten years + +00:48:44.840 --> 00:48:50.039 +and then see how people transparently evolve + +00:48:50.040 --> 00:48:55.159 +their gardens, their processes, their note-taking systems + +00:48:55.160 --> 00:49:00.319 +next question not a question but i would be very interested + +00:49:00.320 --> 00:49:01.559 +in your thoughts on this video + +00:49:01.560 --> 00:49:07.039 +by westenberg okay it's it's this is not spam + +00:49:07.040 --> 00:49:13.959 +i i don't uh there's joe westenberg's uh youtube channel + +00:49:13.960 --> 00:49:15.319 +why i deleted my second brain + +00:49:15.320 --> 00:49:22.679 +a journey back to real thinking uh + +00:49:22.680 --> 00:49:30.319 +I think I didn't watch the video but read an article. + +00:49:30.320 --> 00:49:34.360 +Not sure where. Let me check my Zettelkasten. + +00:49:34.383 --> 00:49:36.215 +It's not on screen sharing. That was stupid. + +00:49:36.216 --> 00:49:48.239 +I'm probably not going to watch it right now with everyone here, + +00:49:48.240 --> 00:49:53.479 +so my thoughts on deleting and stuff like that. + +00:49:53.480 --> 00:49:58.679 +I do remember there was a very cleverly written, well-written post + +00:49:58.680 --> 00:50:02.719 +and the claim was, from my perspective, + +00:50:02.720 --> 00:50:04.919 +and that's not doing the work of + +00:50:04.920 --> 00:50:13.199 +It's not doing the work of the author justice. + +00:50:13.200 --> 00:50:19.839 +But the shortest summary is that there seems to be false contradiction, + +00:50:19.840 --> 00:50:24.759 +where the contradiction stems from how the opposite side, + +00:50:24.760 --> 00:50:27.079 +the note taking, the deliberate note taking, + +00:50:27.080 --> 00:50:28.159 +taking a lot of notes, + +00:50:28.160 --> 00:50:31.479 +all the notes every time, stuff, like how this is presented. + +00:50:31.480 --> 00:50:34.639 +I would say this is more on the collecting + +00:50:34.640 --> 00:50:36.519 +and not on the connecting side of things. + +00:50:36.520 --> 00:50:42.119 +So like I mentioned for the, some 30 minutes ago + +00:50:42.120 --> 00:50:45.039 +when I talked about Roam, Roam Research. + +00:50:45.040 --> 00:50:47.439 +If you start your day with a daily note, + +00:50:47.440 --> 00:50:50.679 +journal style, and then branch out from there, + +00:50:50.680 --> 00:50:53.759 +you do at least have time as a structure + +00:50:53.760 --> 00:50:57.039 +that helps you to organize what you put in. + +00:50:57.040 --> 00:50:59.319 +But also, it can get very messy + +00:50:59.320 --> 00:51:01.239 +and very weirdly interconnected, + +00:51:01.240 --> 00:51:04.239 +like this meme of the with a guy + +00:51:04.240 --> 00:51:10.919 +standing in front of a board + +00:51:10.920 --> 00:51:14.439 +with all these lines connecting things + +00:51:14.440 --> 00:51:17.239 +and just, you know, with the madness in his eyes + +00:51:17.240 --> 00:51:23.439 +you can do a lot of stuff in there. + +00:51:23.440 --> 00:51:27.839 +But at a certain point, it gets hard + +00:51:27.840 --> 00:51:30.799 +to also get out of your own head, let's say. + +00:51:30.800 --> 00:51:33.079 +If you do it in this kind of style, + +00:51:33.080 --> 00:51:35.679 +it can get hard to get off your own head. + +00:51:35.680 --> 00:51:39.919 +And one litmus test that you may find enjoyable + +00:51:39.920 --> 00:51:41.119 +if you struggle with this + +00:51:41.120 --> 00:51:46.199 +is to publish more. Because having access + +00:51:46.200 --> 00:51:49.199 +to a very deeply interconnected web of stuff + +00:51:49.200 --> 00:51:52.919 +thoughts, ideas, notes, wisdoms, whatever + +00:51:52.920 --> 00:51:55.079 +very deeply connected, + +00:51:55.080 --> 00:52:02.359 +like not a pile, yarn, wool, what's the ball? + +00:52:02.360 --> 00:52:06.519 +Ball of yarn? No, that's boring. + +00:52:06.520 --> 00:52:09.239 +Let's say like you have a lot of yarn + +00:52:09.240 --> 00:52:11.519 +and then you just create chaos and entropy + +00:52:11.520 --> 00:52:13.239 +and can't untangle it. It's a very tangled mess. + +00:52:13.240 --> 00:52:15.479 +So it's a very dense, dense thingy + +00:52:15.480 --> 00:52:18.639 +that's now its own kind of structure. Like if you have this + +00:52:18.640 --> 00:52:21.519 +And in your head, when you think about your notes, + +00:52:21.520 --> 00:52:24.639 +you may have some interesting pathways there. + +00:52:24.640 --> 00:52:28.999 +But you need to serialize and put into a linear order + +00:52:29.000 --> 00:52:30.079 +in order to communicate. + +00:52:30.080 --> 00:52:32.799 +Otherwise, people cannot follow your thought. + +00:52:32.800 --> 00:52:36.119 +it's a pity because we still rely + +00:52:36.120 --> 00:52:39.159 +on the book style of writing + +00:52:39.160 --> 00:52:42.639 +and also hypertext which is making navigation easy + +00:52:42.640 --> 00:52:47.439 +but not telling a story easier in our modern times + +00:52:47.440 --> 00:52:49.999 +but we still rely a lot on books + +00:52:50.000 --> 00:52:54.199 +which take take a lot of intertwined stuff, + +00:52:54.200 --> 00:52:58.759 +put it into one order so you can read from start to finish. + +00:52:58.760 --> 00:53:01.319 +But then, in order for you to make sense of this, + +00:53:01.320 --> 00:53:02.439 +you need to chop it up, + +00:53:02.440 --> 00:53:04.439 +associate with things you already know, + +00:53:04.440 --> 00:53:07.159 +and then attach things and create a new kind of structure + +00:53:07.160 --> 00:53:08.399 +through the narrative, + +00:53:08.400 --> 00:53:11.079 +because it's only one kind of presentation + +00:53:11.080 --> 00:53:12.079 +that's given to you. + +00:53:12.080 --> 00:53:14.919 +And there may also be different kinds of presentations, + +00:53:14.920 --> 00:53:16.599 +like I also mentioned for the STEM fields, + +00:53:16.600 --> 00:53:18.359 +where you have different textbooks + +00:53:18.360 --> 00:53:21.199 +from different eras of mathematics foundations, + +00:53:21.200 --> 00:53:24.140 +and then you see, hey, this one clicks, this one doesn't. + +00:53:24.120 --> 00:53:27.879 +Why? It's the same stuff, but they present it differently. + +00:53:27.880 --> 00:53:30.639 +And the presentation matters. The presentation matters. + +00:53:30.640 --> 00:53:33.119 +And if you only deal with the chaos, + +00:53:33.120 --> 00:53:34.399 +the weird entanglement, + +00:53:34.400 --> 00:53:36.479 +if you capture everything and anything, + +00:53:36.480 --> 00:53:41.239 +how many, I don't know, how many hairs you lost that day or whatever. + +00:53:41.240 --> 00:53:43.559 +If you capture everything in there, + +00:53:43.560 --> 00:53:45.119 +you don't create the kind of value + +00:53:45.120 --> 00:53:47.159 +that is linearizable into thought, + +00:53:47.160 --> 00:53:49.599 +which also makes reading your own stuff later, + +00:53:49.600 --> 00:53:55.839 +maybe unbearable, maybe at least hard and making sense. + +00:53:55.840 --> 00:53:57.719 +Now we come back to one of the earlier questions, + +00:53:57.720 --> 00:54:00.399 +like, why do I not use outlines? + +00:54:00.400 --> 00:54:03.039 +Because OrgNode allows me to do outlines. + +00:54:03.040 --> 00:54:06.319 +Well, I try to write my notes as blog posts, + +00:54:06.320 --> 00:54:09.599 +very short blog posts, microblogging, if you will, + +00:54:09.600 --> 00:54:11.439 +paragraphs, a couple of paragraphs. + +00:54:11.440 --> 00:54:14.279 +Maybe it's also more nested because it's a huge topic. + +00:54:14.280 --> 00:54:16.199 +It's a complex topic. That also happens. + +00:54:16.200 --> 00:54:18.039 +But then it's more like an article, + +00:54:18.040 --> 00:54:21.279 +a long blog post, or an essay, + +00:54:21.280 --> 00:54:26.279 +but never just vomiting thought out onto the page, + +00:54:26.280 --> 00:54:28.559 +because then you will get back to the note + +00:54:28.560 --> 00:54:31.199 +and you will find, hey, there's a lot of vomit. + +00:54:31.200 --> 00:54:36.759 +But you never follow this kind of phrase with nice. + +00:54:36.760 --> 00:54:40.880 +I enjoyed reading that. It's always me. + +00:54:40.880 --> 00:54:43.239 +Oppressing because of its mass, + +00:54:43.240 --> 00:54:46.279 +it's also getting in the way of having new ideas + +00:54:46.280 --> 00:54:48.719 +because whatever is there and you need to tangle it + +00:54:48.720 --> 00:54:52.759 +and then you lost your new genuine idea, + +00:54:52.760 --> 00:54:56.319 +this can also happen. + +00:54:56.320 --> 00:55:00.759 +So I'm not sure what the Westenberg video contains, + +00:55:00.760 --> 00:55:03.799 +but the sentiment there of deleting everything, + +00:55:03.800 --> 00:55:06.999 +it makes sense if you find yourself in a situation + +00:55:07.000 --> 00:55:09.359 +where you don't have a productive system. + +00:55:09.360 --> 00:55:13.199 +and the notes from 2009 in my own Zettelkasten + +00:55:13.200 --> 00:55:15.159 +aren't of the highest quality standards + +00:55:15.160 --> 00:55:17.959 +I rewrite most of them when I encounter them, + +00:55:17.960 --> 00:55:23.399 +but I can still use a couple as is and sometimes they're just garbage, + +00:55:23.400 --> 00:55:28.119 +but as Luhmann said garbage like trickles to the ground + +00:55:28.120 --> 00:55:34.599 +and forms a nice sediment layer there in the septic tank of your thought machine, + +00:55:34.600 --> 00:55:36.439 +your thought thinking environment. + +00:55:36.440 --> 00:55:40.319 +But clear water separates and then rises to the top + +00:55:40.320 --> 00:55:42.439 +and that's what you work with. + +00:55:42.440 --> 00:55:47.759 +it's never going to be 100% useful. But if it's 90% garbage + +00:55:47.760 --> 00:55:51.479 +and if the water is, if the septic tank is never clearing, + +00:55:51.480 --> 00:55:54.399 +then you probably need to start + +00:55:54.400 --> 00:55:55.559 +over and rethink your approach. + +00:55:55.560 --> 00:55:57.319 +Maybe there was just too much garbage, + +00:55:57.320 --> 00:56:01.559 +too much toxic waste in there, whatever that means, right? + +00:56:01.560 --> 00:56:07.839 +So I do understand this, but also I would say + +00:56:07.840 --> 00:56:11.479 +maybe maybe they tried to do too much with a different mindset + +00:56:11.480 --> 00:56:24.839 +and it just didn't click and then they, + +00:56:24.840 --> 00:56:27.199 +you know next question is there a danger? + +00:56:27.200 --> 00:56:41.959 +also, wait a second, answer do not probably a lot of collection, + +00:56:41.960 --> 00:56:52.359 +not a lot of stinking in the Zettelkasten to some purpose. + +00:56:52.360 --> 00:56:58.700 +Usually. Conflation was the word I was fishing for. + +00:56:58.701 --> 00:57:02.840 +Usually posts videos like this. + +00:57:02.841 --> 00:57:10.090 +Conflate note taking as a dumping ground + +00:57:10.091 --> 00:57:22.174 +for stuff with something that is valuable in the long term. + +00:57:22.175 --> 00:57:27.599 +Also if this was our dear friend Westenberg + +00:57:27.600 --> 00:57:30.439 +I think the note count also was higher, + +00:57:30.440 --> 00:57:33.519 +but I might confuse them with someone else. + +00:57:33.520 --> 00:57:36.959 +The note count was way higher than mine. Note count. + +00:57:36.960 --> 00:57:41.239 +But then also, you know, there's the sign + +00:57:41.240 --> 00:57:44.159 +of going for quantity in... + +00:57:44.160 --> 00:57:47.719 +just capture anything, like capturing, + +00:57:47.720 --> 00:57:48.799 +that's not the bottleneck. + +00:57:48.800 --> 00:57:52.479 +The bottleneck is finding, making connections happen, + +00:57:52.480 --> 00:57:55.919 +having thoughts and working on problems + +00:57:55.920 --> 00:57:57.279 +you really want to solve in the long term. + +00:57:57.280 --> 00:57:59.159 +So next question. + +00:57:59.160 --> 00:58:02.359 +Is there a danger that with the settled custom process, + +00:58:02.360 --> 00:58:05.679 +that the process gets a bit in the way of the content? + +00:58:05.680 --> 00:58:12.279 +yes, especially if you do it like old school style + +00:58:12.280 --> 00:58:14.639 +if you find that your handwriting sucks + +00:58:14.640 --> 00:58:16.079 +and you want to type things + +00:58:16.080 --> 00:58:19.199 +on a typewriter like that kind of process + +00:58:19.200 --> 00:58:20.479 +definitely gets in the way + +00:58:20.480 --> 00:58:21.759 +that's going to be your bottleneck + +00:58:21.760 --> 00:58:24.679 +you can't find black paper + +00:58:24.680 --> 00:58:30.759 +and put it into your typewriter and then like that's not the speed of thought + +00:58:30.760 --> 00:58:35.959 +that's the speed of, I don't know, my long deceased grandmother + +00:58:35.960 --> 00:58:54.479 +but yeah it's not like a strive for speed of thought tools + +00:58:54.480 --> 00:59:00.439 +not needing a typewriter + +00:59:00.440 --> 00:59:10.519 +and then next step reduce ritual reduce rituals and ceremony + +00:59:10.520 --> 00:59:15.239 +What I mean by that is if you find yourself doing the same moves + +00:59:15.240 --> 00:59:16.799 +or similar moves over and over again, + +00:59:16.800 --> 00:59:19.439 +but they don't contribute + +00:59:19.440 --> 00:59:23.479 +to having more cool ideas per week, then maybe ditch these, + +00:59:23.480 --> 00:59:26.639 +apart from the day timestamp, + +00:59:26.640 --> 00:59:28.479 +having a title, hashtags, and content, + +00:59:28.480 --> 00:59:32.399 +and also being very, very careful about quoting my sources. + +00:59:32.400 --> 00:59:35.639 +I don't do much with my et cetera. + +00:59:35.640 --> 00:59:37.679 +I cannot give up quoting my sources + +00:59:37.680 --> 00:59:39.399 +because then I'm plagiarizing, stealing, + +00:59:39.400 --> 00:59:41.879 +forgetting where I get ideas from and confuse. + +00:59:41.880 --> 00:59:44.599 +And I get out because I'm aware of the problem there. + +00:59:44.600 --> 00:59:47.599 +I'm also not trusting my own notes anymore. + +00:59:47.600 --> 00:59:51.159 +would not be trusting my own notes anymore + +00:59:51.160 --> 00:59:53.919 +i need to properly cite so then i can see hey + +00:59:53.920 --> 00:59:56.559 +this block has no quotations that's mine + +00:59:56.560 --> 01:00:00.559 +and i can trust this it's not like hey this is maybe mine + +01:00:00.560 --> 01:00:04.039 +maybe this is a verbatim quote from a book like this + +01:00:04.040 --> 01:00:05.799 +is not helping that's a ceremony + +01:00:05.800 --> 01:00:09.039 +that's paying off in the long term also + +01:00:09.040 --> 01:00:11.319 +so that when you write something + +01:00:11.320 --> 01:00:15.159 +you have all the sources at hand + +01:00:15.160 --> 01:00:17.279 +that's a useful ceremony title + +01:00:17.280 --> 01:00:20.799 +is just a way of summarizing the content + +01:00:20.800 --> 01:00:25.119 +do it like an excerpt, right? + +01:00:25.120 --> 01:00:26.919 +you have the whole content, that's your etc. + +01:00:26.920 --> 01:00:29.879 +do a short summary, that may be your introduction. + +01:00:29.880 --> 01:00:33.239 +So have a way to quickly get a glimpse of the relevance + +01:00:33.240 --> 01:00:35.919 +before having to read the whole settle + +01:00:35.920 --> 01:00:38.719 +when you encounter it years from now. + +01:00:38.720 --> 01:00:41.319 +And then have a one, that's one sentence summary, + +01:00:41.320 --> 01:00:44.159 +and then have an even more condensed form that's a title. + +01:00:44.160 --> 01:00:45.679 +The title is basically your API, + +01:00:45.680 --> 01:00:49.359 +the interface for you and your nodes. + +01:00:49.360 --> 01:00:54.879 +And it needs to uphold some kind of contract. + +01:00:54.880 --> 01:00:57.319 +And if it just is, like, this is my second note, + +01:00:57.320 --> 01:01:00.239 +that's not useful. This is just a technical limitation + +01:01:00.240 --> 01:01:02.839 +because you can't have the same file name twice. + +01:01:02.840 --> 01:01:05.639 +That's not going to be useful. + +01:01:05.640 --> 01:01:09.519 +But if you give yourself the permission to take time + +01:01:09.520 --> 01:01:12.919 +of titling your notes in one way and also changing titles, + +01:01:12.920 --> 01:01:16.199 +because you will know from writing introductions + +01:01:16.200 --> 01:01:18.679 +the further you get along, + +01:01:18.680 --> 01:01:22.279 +the more and more you need to rewrite your introductions + +01:01:22.280 --> 01:01:24.639 +because your understanding changes same for titles + +01:01:24.640 --> 01:01:28.319 +titles don't always stay consistent or constant + +01:01:28.320 --> 01:01:31.079 +that's why I don't link by title, because I would then need + +01:01:31.080 --> 01:01:34.279 +to go through my node archive and also need to go to + +01:01:34.280 --> 01:01:39.999 +my node archive and need to correct all the links + +01:01:40.000 --> 01:01:44.039 +that's a janitorial task I like to not do, if I can + +01:01:44.040 --> 01:01:49.759 +So answer here, less ceremony, fewer ceremonies, plural. + +01:01:49.760 --> 01:01:54.359 +Try to only do the minimum possible, minimum viable thing. + +01:01:54.360 --> 01:01:57.599 +And using Emacs and D-Node, you get a lot of defaults. + +01:01:57.600 --> 01:01:58.719 +And then you need to worry + +01:01:58.720 --> 01:02:01.199 +not about IDs and tags that much, + +01:02:01.200 --> 01:02:04.159 +or where to put them and how to put them. + +01:02:04.160 --> 01:02:06.439 +You can omit keywords. You can leave keywords out. + +01:02:06.440 --> 01:02:08.159 +They don't scale anyway. + +01:02:08.160 --> 01:02:12.079 +But they may be interesting as a way to group, + +01:02:12.080 --> 01:02:19.959 +but also Sascha from zettelkasten.de, from our website, + +01:02:19.960 --> 01:02:23.279 +Sascha also found that, I believe, he, + +01:02:23.280 --> 01:02:28.119 +structures win in the long term. + +01:02:28.120 --> 01:02:30.719 +Manual created hubs and overviews + +01:02:30.720 --> 01:02:34.639 +win over machine generated lumps. + +01:02:34.640 --> 01:02:37.959 +Because you need to reorient yourself + +01:02:37.960 --> 01:02:42.239 +in the search results all the time. + +01:02:42.240 --> 01:02:45.679 +That's not as useful as having a pathway + +01:02:45.680 --> 01:02:49.559 +through your nodes that you can follow. + +01:02:49.560 --> 01:02:52.039 +It may not be a pathway through all of your nodes, of course, + +01:02:52.040 --> 01:02:56.159 +but it may be a pathway from entry point into some topic. + +01:02:56.160 --> 01:03:01.839 +That's why some things are essential and others aren't. + +01:03:01.840 --> 01:03:06.239 +And the essential stuff, try to do it quickly, get better at it, + +01:03:06.240 --> 01:03:08.799 +practice the movements, then they get out of the way, + +01:03:08.800 --> 01:03:10.919 +and then you can focus on having ideas + +01:03:10.920 --> 01:03:12.119 +and typing them at speed of thought, + +01:03:12.120 --> 01:03:15.239 +more or less, and then you're good. + +01:03:15.240 --> 01:03:20.639 +I hope. Wishing you all the best. Next and last question. + +01:03:20.640 --> 01:03:24.519 +How do you navigate looking at all posts with a certain text? + +01:03:24.520 --> 01:03:26.679 +This might be an emacs, already new to emacs. + +01:03:26.680 --> 01:03:28.679 +I just may have answered this. + +01:03:28.680 --> 01:03:40.159 +How do you navigate looking at all posts with a certain text? + +01:03:40.160 --> 01:03:42.959 +Let me go to my actual node archive. + +01:03:42.960 --> 01:03:55.919 +and then php no language learning ah + +01:03:55.920 --> 01:03:59.319 +this is not my setup I'm very clumsy + +01:03:59.320 --> 01:04:03.119 +I'm sorry, I don't know swift language learning + +01:04:03.120 --> 01:04:28.465 +ah that's that's a boring one php By this time, I could have also, + +01:04:28.466 --> 01:04:35.299 +ah, there's the model. This would be an entry point + +01:04:35.300 --> 01:04:39.159 +into my PHP atom molecule organism learning journey + +01:04:39.160 --> 01:04:43.159 +where I tried to practice, what's visual line mode, sorry, + +01:04:43.160 --> 01:04:48.919 +where I tried to practice this atom molecule thing on something new. + +01:04:48.920 --> 01:04:51.879 +I haven't used PHP in a long time + +01:04:51.880 --> 01:04:59.199 +and found that I wasn't, yeah, you can see it on the screen also + +01:04:59.200 --> 01:05:01.439 +like language primitives are the atoms, + +01:05:01.440 --> 01:05:08.759 +I think molecules are more like idioms or patterns that are PHP special in PHP + +01:05:08.760 --> 01:05:10.599 +and different in other languages in Python + +01:05:10.600 --> 01:05:13.759 +would be list comprehension that's in a molecule + +01:05:13.760 --> 01:05:16.319 +and but also you can make a point for hey, + +01:05:16.320 --> 01:05:18.519 +this comprehension is more like a syntactical thing, + +01:05:18.520 --> 01:05:23.439 +no no get out of here, like the for loop is the syntactical atom + +01:05:23.440 --> 01:05:25.039 +and the molecule is using the for loop + +01:05:25.040 --> 01:05:26.559 +with weird other stuff + +01:05:26.560 --> 01:05:28.199 +to then make the list comprehension happen. + +01:05:28.200 --> 01:05:33.679 +That's my argument there, okay? So what do we do with this? + +01:05:33.680 --> 01:05:38.519 +I use this as an entry point if I want to see, + +01:05:38.520 --> 01:05:41.639 +hey, what kind of stuff did I take notes on + +01:05:41.640 --> 01:05:43.439 +to get a better understanding + +01:05:43.440 --> 01:05:45.239 +on multiple levels of the language. + +01:05:45.240 --> 01:05:47.479 +And project structure conventions + +01:05:47.480 --> 01:05:49.319 +and usually another language + +01:05:49.320 --> 01:05:53.239 +that I use more here would be, but I can't remember now. + +01:05:53.240 --> 01:05:57.479 +Funny, right? I can't remember how I would need to look, + +01:05:57.480 --> 01:05:58.959 +but I think I'm too clumsy in Emacs + +01:05:58.960 --> 01:06:00.639 +to do it live on camera, sorry. + +01:06:00.640 --> 01:06:05.759 +But the organisms part here would also be like my own inventions, + +01:06:05.760 --> 01:06:06.559 +let's say in code, + +01:06:06.560 --> 01:06:11.119 +like my own discoveries where I found that in Swift, for example, + +01:06:11.120 --> 01:06:13.359 +you can express things on the type level + +01:06:13.360 --> 01:06:15.639 +in a very sexy way sometimes. + +01:06:15.640 --> 01:06:19.439 +And then I would put these there as well. + +01:06:19.440 --> 01:06:20.959 +So these are also, + +01:06:20.960 --> 01:06:26.559 +There are organisms to discover in the language reference, + +01:06:26.560 --> 01:06:30.599 +but there are also organisms to discover in the world, + +01:06:30.600 --> 01:06:32.559 +and then they are your own inventions, + +01:06:32.560 --> 01:06:36.519 +discoveries, more or less. And that's a sign of mastery. + +01:06:36.520 --> 01:06:38.719 +If you work more on these things, + +01:06:38.720 --> 01:06:40.959 +then you don't need to worry + +01:06:40.960 --> 01:06:42.399 +about the basics of the language anymore. + +01:06:42.400 --> 01:06:46.239 +So I can use this as an entry point + +01:06:46.240 --> 01:06:51.039 +to get into things that are very PHP-esque. + +01:06:51.040 --> 01:06:54.359 +When do I need this? When I want to talk about PHP, + +01:06:54.360 --> 01:06:55.359 +like I do now. + +01:06:55.360 --> 01:06:59.359 +Why do I show this when the question is about tags? + +01:06:59.360 --> 01:07:10.919 +Because if I search for... Which one do I take? + +01:07:10.920 --> 01:07:22.719 +Let's try grep. php. Yep, grep exited the anomaly. + +01:07:22.720 --> 01:07:28.039 +Dang, why? Option requires an argument. + +01:07:28.040 --> 01:07:36.159 +Yes, eshell is there. + +01:07:36.160 --> 01:07:43.919 +So let's just use rg, ripgrep and then ripgrep for php. + +01:07:43.920 --> 01:07:50.879 +And you see I get, I can do filenames only, right? + +01:07:50.880 --> 01:07:56.599 +Let's not worry. I get a lot of, let's just scroll up. + +01:07:56.600 --> 01:08:03.239 +I get a lot more hits here for the PHP tech, + +01:08:03.240 --> 01:08:06.759 +which is only about PHP specific things, + +01:08:06.760 --> 01:08:09.559 +not about anything that I do in PHP. + +01:08:09.560 --> 01:08:15.279 +Like, I don't know, I don't take Laravel or Filament, + +01:08:15.280 --> 01:08:17.879 +which are frameworks, libraries in PHP, + +01:08:17.880 --> 01:08:21.199 +the Zend library or whatever, I don't know many. + +01:08:21.200 --> 01:08:23.199 +Like I wouldn't take everything + +01:08:23.200 --> 01:08:26.999 +and anything that is related to the php ecosystem + +01:08:27.000 --> 01:08:28.399 +with the php hashtag. + +01:08:28.400 --> 01:08:30.679 +Why? Because then the tag becomes useless. + +01:08:30.680 --> 01:08:33.439 +I only tag things that are about the language. + +01:08:33.440 --> 01:08:39.159 +Like how do I pass variables to php includes that's php related. + +01:08:39.160 --> 01:08:44.879 +And you see these are... I'm still not at the top. + +01:08:44.880 --> 01:08:48.399 +now i'm at the top these are a lot more findings than you could + +01:08:48.400 --> 01:08:49.879 +these don't fit on the screen + +01:08:49.880 --> 01:08:51.919 +these are three pages i believe + +01:08:51.920 --> 01:08:55.039 +and the note about my language learning journey was + +01:08:55.040 --> 01:08:58.999 +wasn't even one full page here's white space + +01:08:59.000 --> 01:09:02.799 +there wasn't okay right but still there's much more stuff + +01:09:02.800 --> 01:09:07.479 +the hashtag I don't use for navigating. + +01:09:07.480 --> 01:09:10.839 +I only use this, let's say, the shotgun approach. + +01:09:10.840 --> 01:09:14.239 +I think Sascha on our Zettelkasten blog post, + +01:09:14.240 --> 01:09:16.359 +don't remember which post, mentioned this as well. + +01:09:16.360 --> 01:09:18.079 +Sometimes you need a sniper rifle. + +01:09:18.080 --> 01:09:21.319 +Sometimes you need a shotgun. + +01:09:21.320 --> 01:09:27.199 +And the hashtag-based search would be I don't know what I'm looking for. + +01:09:27.200 --> 01:09:32.959 +It was PHP related. I hope I use the hashtag correctly + +01:09:32.960 --> 01:09:36.879 +and then kill all these nodes from my archive. + +01:09:36.880 --> 01:09:38.959 +The metaphor doesn't work that way, + +01:09:38.960 --> 01:09:41.279 +but still you get a lot of results here + +01:09:41.280 --> 01:09:45.959 +and you could use this as a way to filter from 11,000 nodes + +01:09:45.960 --> 01:09:53.559 +down to 50 or so, maybe less. + +01:09:53.560 --> 01:09:58.999 +And if you got this far, then you can start to do it in a mechanical way again. + +01:09:59.000 --> 01:10:05.279 +But wait, if you have 100 or 1000 nodes in the results there, + +01:10:05.280 --> 01:10:08.279 +then you can't mechanically go through all the nodes again. + +01:10:08.280 --> 01:10:09.919 +You can maybe skim and look + +01:10:09.920 --> 01:10:11.159 +for something that catches your eye, + +01:10:11.160 --> 01:10:14.159 +if you're lucky, and if that's the thing + +01:10:14.160 --> 01:10:15.039 +that works for you. + +01:10:15.040 --> 01:10:21.319 +but usually no, like usually the text become useless + +01:10:21.320 --> 01:10:24.079 +then maybe tag groups become more useful + +01:10:24.080 --> 01:10:28.039 +like PHP and LSP which is on screen here + +01:10:28.040 --> 01:10:30.799 +like then maybe the combination of two tags + +01:10:30.800 --> 01:10:32.519 +that reduces the search terms enough + +01:10:32.520 --> 01:10:36.639 +like this is basically glorified full text search + +01:10:36.640 --> 01:10:41.359 +where you highlight certain terms of importance that's it, + +01:10:41.360 --> 01:10:44.999 +I wouldn't use I wouldn't put more effort in there + +01:10:45.000 --> 01:10:48.639 +It's also maybe useful to group things by topic. + +01:10:48.640 --> 01:10:52.399 +For example, study notes like, I don't know, + +01:10:52.400 --> 01:10:56.759 +this is my undergrad, third semester, + +01:10:56.760 --> 01:11:01.279 +what do you do in the third semester, I don't know, + +01:11:01.280 --> 01:11:06.399 +history of philosophy of science of birds, + +01:11:06.400 --> 01:11:10.959 +very long course name, and then week 10. + +01:11:10.960 --> 01:11:13.199 +And then you assemble everything + +01:11:13.200 --> 01:11:15.479 +with this very technical tagging. + +01:11:15.480 --> 01:11:18.239 +Then you can use these folders + +01:11:18.240 --> 01:11:20.999 +to loosely group stuff together + +01:11:21.000 --> 01:11:23.119 +that happened during that week. + +01:11:23.120 --> 01:11:26.519 +And if you have 10 required readings and then do five of them, + +01:11:26.520 --> 01:11:28.879 +but they're also not closely interrelated, + +01:11:28.880 --> 01:11:33.639 +you will have read five to 10 different sources that you could process. + +01:11:33.640 --> 01:11:36.319 +You could maybe then also create an overview node + +01:11:36.320 --> 01:11:38.359 +as a preparation for the seminar + +01:11:38.360 --> 01:11:44.799 +whatever happens at university. + +01:11:44.800 --> 01:11:51.199 +Then the hashtag becomes just a way to group things. + +01:11:51.200 --> 01:11:52.479 +But once you create the structure node, + +01:11:52.480 --> 01:11:55.039 +you don't need the hashtags to navigate anymore. + +01:11:55.040 --> 01:11:57.679 +You could then maybe use the hashtags not to navigate + +01:11:57.680 --> 01:12:02.919 +but to to clump, to create collections, + +01:12:02.920 --> 01:12:07.759 +pre-assembled to some degree collections of things that exist already, + +01:12:07.760 --> 01:12:09.559 +get them out there and then review them. + +01:12:09.560 --> 01:12:13.319 +Like Twyla Tharp again, dumping all the notes on a table, + +01:12:13.320 --> 01:12:15.519 +all the stuff on the table, + +01:12:15.520 --> 01:12:17.759 +not just notes, all the clippings and so on and so on, + +01:12:17.760 --> 01:12:18.959 +and then making sense of them. + +01:12:18.960 --> 01:12:21.639 +That's what you can use a hashtag search for in the longterm. + +01:12:21.640 --> 01:12:27.799 +And I'm not convinced about navigational use in the longterm. + +01:12:27.800 --> 01:12:31.439 +which doesn't mean that it won't work for you, + +01:12:31.440 --> 01:12:32.799 +but I can't recommend it. + +01:12:32.800 --> 01:12:34.899 +I can't recommend trying to do it that way. + +01:12:34.900 --> 01:12:37.882 +So my answer is going to be, how do you navigate + +01:12:37.883 --> 01:12:45.507 +looking at all posts with certain tags? I don't. + +01:12:45.508 --> 01:12:53.439 +Tags are just a way to loosely group notes and stuff in general + +01:12:53.440 --> 01:13:05.519 +so that you can find potentially, PP, why doesn't P work? + +01:13:05.520 --> 01:13:14.919 +Potentially relevant pieces of information more quickly. + +01:13:14.920 --> 01:13:34.959 +Navigational aids. Create navigational aids + +01:13:34.960 --> 01:13:38.049 +things that help you navigate like this is for a week + +01:13:38.050 --> 01:13:42.479 +what did I say 10 of semester three + +01:13:42.480 --> 01:13:44.632 +uh the history of the sociology + +01:13:44.633 --> 01:13:46.799 +of the philosophy of science of birds + +01:13:46.800 --> 01:13:51.559 +or something lump things together there then you have a + +01:13:51.560 --> 01:13:54.119 +then you have a scratch pad to think on you do this + +01:13:54.120 --> 01:13:59.279 +did do this when you went to university with paper anyway, right? + +01:13:59.280 --> 01:14:01.039 +You would get your college book or whatever + +01:14:01.040 --> 01:14:04.439 +and then you would take notes and these like that location + +01:14:04.440 --> 01:14:07.159 +of that piece of paper in your college book + +01:14:07.160 --> 01:14:09.959 +in your whatever notes folder + +01:14:09.960 --> 01:14:15.039 +that's the important piece of information + +01:14:15.040 --> 01:14:20.079 +and the scratchpad, the thinking environment for this course + +01:14:20.080 --> 01:14:22.679 +and if you have all the other things + +01:14:22.680 --> 01:14:24.679 +that you ever did at your disposal as well + +01:14:24.680 --> 01:14:26.839 +maybe pull them in maybe pull them in + +01:14:26.840 --> 01:14:28.759 +and then bring them to the discussion + +01:14:28.760 --> 01:14:31.479 +with your professor or your teaching assistant + +01:14:31.480 --> 01:14:35.199 +and asking about, well, I read these five books + +01:14:35.200 --> 01:14:37.159 +that you recommended for this week. + +01:14:37.160 --> 01:14:40.439 +Thank you for recommending five whole books + +01:14:40.440 --> 01:14:45.399 +for one week of reading. I really enjoyed that. Long pause. + +01:14:45.400 --> 01:14:50.599 +And then you say, I also thought about other topics + +01:14:50.600 --> 01:14:54.359 +and brought them into a, I don't know, dialectic or position. + +01:14:54.360 --> 01:14:58.959 +What do you think about foxes in that regard + +01:14:58.960 --> 01:15:01.599 +and their own history and subjectivity + +01:15:01.600 --> 01:15:08.639 +when it comes to the bird's point of view or something, right? + +01:15:08.640 --> 01:15:10.999 +You can only do this if you either know this by heart + +01:15:11.000 --> 01:15:12.999 +because you do this a lot, + +01:15:13.000 --> 01:15:15.279 +think a lot about this stuff or you do this, + +01:15:15.280 --> 01:15:18.799 +you stumble upon this and then look for oppositions, + +01:15:18.800 --> 01:15:19.959 +look for certain patterns in your notes + +01:15:19.960 --> 01:15:22.479 +and then try to pull them in and represent them again + +01:15:22.480 --> 01:15:26.239 +so they actually do exist and then you can work with this, + +01:15:26.240 --> 01:15:27.399 +you can get on people's nerves + +01:15:27.400 --> 01:15:30.959 +you can write weird papers, essays + +01:15:30.960 --> 01:15:33.719 +and then get through your university studies quickly + +01:15:33.720 --> 01:15:35.959 +maybe also become an interesting columnist, + +01:15:35.960 --> 01:15:39.319 +I don't know, I've never been a columnist Right. + +01:15:39.320 --> 01:15:44.079 +I think these are all the questions. + +01:15:44.080 --> 01:15:47.159 +I'm going to delete the leftover ones. + +01:15:47.160 --> 01:15:52.439 +I hope you enjoyed some of the answers. + +01:15:52.440 --> 01:15:58.159 +Thank you so much. Thank you. That's a lot. + +01:15:58.160 --> 01:16:02.759 +We'll go back and get everything transcribed as well + +01:16:02.760 --> 01:16:08.599 +and then you can turn that into other articles in the future + +01:16:08.600 --> 01:16:10.119 +because that's how this all works, right? + +01:16:10.120 --> 01:16:14.319 +It all turns into writing. It all does. + +01:16:14.320 --> 01:16:15.999 +All the rest is garbage. + +01:16:16.000 --> 01:16:20.799 +I don't know why we invented anything else. + +01:16:20.800 --> 01:16:23.919 +It's only useful to transfer language before writing, + +01:16:23.920 --> 01:16:26.279 +but now you can just read. + +01:16:26.280 --> 01:16:29.719 +We have two people in the big blue button room + +01:16:29.720 --> 01:16:33.799 +who are still around, but I think they've got their, like, + +01:16:33.800 --> 01:16:35.719 +they don't have microphones set up. + +01:16:35.720 --> 01:16:40.679 +So I don't know if you want to just, like, CryptKNFL, + +01:16:40.680 --> 01:16:44.339 +if you want to just follow up through the etherpad, + +01:16:44.340 --> 01:16:47.639 +or email, I guess, in case you have further questions. + +01:16:47.640 --> 01:16:50.119 +But yeah, if you want to wrap up, + +01:16:50.120 --> 01:16:52.799 +I know it's getting a little bit late over there, + +01:16:52.800 --> 01:16:55.919 +you're in your time zone. Thank you so much. + +01:16:55.920 --> 01:16:59.679 +Yeah, all right. Thank you. You're welcome. + +01:16:59.680 --> 01:17:02.719 +Thanks for joining and listening. + +01:17:02.720 --> 01:17:07.640 +Okay, I'll wrap it up here then. diff --git a/2025/draft-schedule.md b/2025/draft-schedule.md index 69990b20..bea5df8c 100644 --- a/2025/draft-schedule.md +++ b/2025/draft-schedule.md @@ -6,43 +6,44 @@ Jump to: <a href="#date-2025-12-06">Sat Dec 6</a> - <a href="#date-2025-12-07">S [[!inline pages="internal(2025/schedule-2025-12-06)" raw="yes"]] <div class="schedule" data-start="2025-12-06T14:00:00+0000" data-end="2025-12-06T22:30:00+0000" data-tracks="General,Development"> -[[!template id=sched time="""10""" q-and-a="""<a href="https://pad.emacsconf.org/2025-sat-open">Etherpad</a>""" startutc="""2025-12-06T14:00:00+0000""" endutc="""2025-12-06T14:10:00+0000""" start="""9:00""" end="""9:10""" title="""Saturday opening remarks""" url="""/2025/talks/sat-open""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""sat-open""" note=""""""]] -[[!template id=sched time="""10""" q-and-a="""<a href="https://pad.emacsconf.org/2025-org-babel">Etherpad</a>""" startutc="""2025-12-06T14:10:00+0000""" endutc="""2025-12-06T14:20:00+0000""" start="""9:10""" end="""9:20""" title="""Making Org-Babel reactive""" url="""/2025/talks/org-babel""" speakers="""Abhinav Tushar""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""org-babel""" note=""""""]] -[[!template id=sched time="""15""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-schemacs.html">BBB</a>""" startutc="""2025-12-06T14:30:00+0000""" endutc="""2025-12-06T14:45:00+0000""" start="""9:30""" end="""9:45""" title="""One year progress update Schemacs (formerly Gypsum)""" url="""/2025/talks/schemacs""" speakers="""Ramin Honary""" track="""Development""" watch="""https://emacsconf.org/2025/watch/dev""" slug="""schemacs""" note=""""""]] -[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-reference.html">BBB</a>""" startutc="""2025-12-06T14:30:00+0000""" endutc="""2025-12-06T14:50:00+0000""" start="""9:30""" end="""9:50""" title="""Emacs as a fully-fledged reference manager""" url="""/2025/talks/reference""" speakers="""Vidianos Giannitsis""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""reference""" note=""""""]] -[[!template id=sched time="""20""" q-and-a="""<a href="https://pad.emacsconf.org/2025-juicemacs">Etherpad</a>""" startutc="""2025-12-06T15:05:00+0000""" endutc="""2025-12-06T15:25:00+0000""" start="""10:05""" end="""10:25""" title="""Juicemacs: Exploring Speculative JIT Compilation for ELisp in Java""" url="""/2025/talks/juicemacs""" speakers="""Kana""" track="""Development""" watch="""https://emacsconf.org/2025/watch/dev""" slug="""juicemacs""" note=""""""]] -[[!template id=sched time="""20""" q-and-a="""<a href="https://pad.emacsconf.org/2025-gmail">Etherpad</a>""" startutc="""2025-12-06T15:10:00+0000""" endutc="""2025-12-06T15:30:00+0000""" start="""10:10""" end="""10:30""" title="""org-gmail: A deep integration of Gmail into your Org Mode""" url="""/2025/talks/gmail""" speakers="""Bala Ramadurai""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""gmail""" note=""""""]] -[[!template id=sched time="""20""" q-and-a="""none""" startutc="""2025-12-06T15:35:00+0000""" endutc="""2025-12-06T15:55:00+0000""" start="""10:35""" end="""10:55""" title="""Swanky Python: Interactive development for Python""" url="""/2025/talks/swanky""" speakers="""Scott Zimmermann""" track="""Development""" watch="""https://emacsconf.org/2025/watch/dev""" slug="""swanky""" note=""""""]] -[[!template id=sched time="""10""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-languages.html">BBB</a>""" startutc="""2025-12-06T15:40:00+0000""" endutc="""2025-12-06T15:50:00+0000""" start="""10:40""" end="""10:50""" title="""Studying foreign languages with Emacs, Org Mode and gptel""" url="""/2025/talks/languages""" speakers="""Marek""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""languages""" note=""""""]] -[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-python.html">BBB</a>""" startutc="""2025-12-06T16:05:00+0000""" endutc="""2025-12-06T16:25:00+0000""" start="""11:05""" end="""11:25""" title="""Interactive Python development in Emacs""" url="""/2025/talks/python""" speakers="""David Vujic""" track="""Development""" watch="""https://emacsconf.org/2025/watch/dev""" slug="""python""" note=""""""]] -[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-latex.html">BBB</a>""" startutc="""2025-12-06T16:10:00+0000""" endutc="""2025-12-06T16:30:00+0000""" start="""11:10""" end="""11:30""" title="""LaTeX export in org-mode: the overhaul""" url="""/2025/talks/latex""" speakers="""Pedro A. Aranda Gutiérrez""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""latex""" note=""""""]] -[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-llm.html">BBB</a>""" startutc="""2025-12-06T18:00:00+0000""" endutc="""2025-12-06T18:20:00+0000""" start="""1:00""" end="""1:20""" title="""Emacs, editors, and LLM driven workflows""" url="""/2025/talks/llm""" speakers="""Andrew Hyatt""" track="""Development""" watch="""https://emacsconf.org/2025/watch/dev""" slug="""llm""" note="""video: 20:04"""]] -[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-bibliography.html">BBB</a>""" startutc="""2025-12-06T18:00:00+0000""" endutc="""2025-12-06T18:20:00+0000""" start="""1:00""" end="""1:20""" title="""An enhanced bibliography in org-mode for scientific research and self-directed learning""" url="""/2025/talks/bibliography""" speakers="""Blaine Mooers""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""bibliography""" note=""""""]] -[[!template id=sched time="""10""" q-and-a="""<a href="https://chat.emacsconf.org/?join=emacsconf">#emacsconf, speaker nick: lispmacs or lispmacs[work]</a>""" startutc="""2025-12-06T18:40:00+0000""" endutc="""2025-12-06T18:50:00+0000""" start="""1:40""" end="""1:50""" title="""Basic Calc functionality for engineering or electronics""" url="""/2025/talks/calc""" speakers="""Christopher Howard""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""calc""" note=""""""]] -[[!template id=sched time="""20""" q-and-a="""none""" startutc="""2025-12-06T18:40:00+0000""" endutc="""2025-12-06T19:00:00+0000""" start="""1:40""" end="""2:00""" title="""emacs-claude-code: Intelligent Claude Integration for Emacs""" url="""/2025/talks/claude-code""" speakers="""Yusuke Watanabe""" track="""Development""" watch="""https://emacsconf.org/2025/watch/dev""" slug="""claude-code""" note=""""""]] -[[!template id=sched time="""10""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-authoring.html">BBB</a>""" startutc="""2025-12-06T19:00:00+0000""" endutc="""2025-12-06T19:10:00+0000""" start="""2:00""" end="""2:10""" title="""How Emacs became my authoring playground—no Lisp required""" url="""/2025/talks/authoring""" speakers="""Uli""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""authoring""" note=""""""]] -[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-private-ai.html">BBB</a>""" startutc="""2025-12-06T19:10:00+0000""" endutc="""2025-12-06T19:30:00+0000""" start="""2:10""" end="""2:30""" title="""Emacs and private AI: a great match""" url="""/2025/talks/private-ai""" speakers="""Aaron Grothe""" track="""Development""" watch="""https://emacsconf.org/2025/watch/dev""" slug="""private-ai""" note=""""""]] -[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-blee-lcnt.html">BBB</a>""" startutc="""2025-12-06T19:30:00+0000""" endutc="""2025-12-06T19:50:00+0000""" start="""2:30""" end="""2:50""" title="""Blee-LCNT: An Emacs-centered content production and self-publication framework""" url="""/2025/talks/blee-lcnt""" speakers="""Mohsen BANAN""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""blee-lcnt""" note=""""""]] -[[!template id=sched time="""20""" q-and-a="""<a href="https://chat.emacsconf.org/?join=emacsconf">#emacsconf, speaker nick: screwlisp</a>""" startutc="""2025-12-06T19:50:00+0000""" endutc="""2025-12-06T20:10:00+0000""" start="""2:50""" end="""3:10""" title="""Common Lisp images communicating like-a-human through shared Emacs slime and eev""" url="""/2025/talks/commonlisp""" speakers="""screwlisp""" track="""Development""" watch="""https://emacsconf.org/2025/watch/dev""" slug="""commonlisp""" note=""""""]] -[[!template id=sched time="""10""" q-and-a="""<a href="https://chat.emacsconf.org/?join=emacsconf">#emacsconf, speaker nick: kreptocracy</a>""" note="""This talk will be narrated by a text-to-speech engine because of a request from the speaker.""" startutc="""2025-12-06T20:10:00+0000""" endutc="""2025-12-06T20:20:00+0000""" start="""3:10""" end="""3:20""" title="""GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence""" url="""/2025/talks/greader""" speakers="""Yuval Langer""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""greader""" note=""""""]] -[[!template id=sched time="""10""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-n-angulator.html">BBB</a>""" startutc="""2025-12-06T20:30:00+0000""" endutc="""2025-12-06T20:40:00+0000""" start="""3:30""" end="""3:40""" title="""Org-mode GTD vs N-angulator GTD""" url="""/2025/talks/n-angulator""" speakers="""Kevin Haddock""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""n-angulator""" note=""""""]] -[[!template id=sched time="""10""" q-and-a="""<a href="https://pad.emacsconf.org/2025-sat-close">Etherpad</a>""" startutc="""2025-12-06T21:00:00+0000""" endutc="""2025-12-06T21:10:00+0000""" start="""4:00""" end="""4:10""" title="""Saturday closing remarks""" url="""/2025/talks/sat-close""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""sat-close""" note=""""""]]</div> +[[!template id=sched time="""10""" q-and-a="""<a href="https://pad.emacsconf.org/2025-sat-open">Etherpad</a>""" startutc="""2025-12-06T14:00:00+0000""" endutc="""2025-12-06T14:10:00+0000""" start="""9:00""" end="""9:10""" title="""Saturday opening remarks""" url="""/2025/talks/sat-open""" speakers="""Sacha Chua""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""sat-open""" note="""captioned, video posted, video: 04:51"""]] +[[!template id=sched time="""10""" q-and-a="""<a href="https://pad.emacsconf.org/2025-org-babel">Etherpad</a>""" startutc="""2025-12-06T14:10:00+0000""" endutc="""2025-12-06T14:20:00+0000""" start="""9:10""" end="""9:20""" title="""Making Org-Babel reactive""" url="""/2025/talks/org-babel""" speakers="""Abhinav Tushar""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""org-babel""" note="""captioned, video posted, video: 08:08"""]] +[[!template id=sched time="""25""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-schemacs.html">BBB</a>""" pad="""https://pad.emacsconf.org/2025-schemacs""" startutc="""2025-12-06T14:30:00+0000""" endutc="""2025-12-06T14:55:00+0000""" start="""9:30""" end="""9:55""" title="""One year progress update Schemacs (formerly Gypsum)""" url="""/2025/talks/schemacs""" speakers="""Ramin Honary""" track="""Development""" watch="""https://emacsconf.org/2025/watch/dev""" slug="""schemacs""" note="""captioned, video posted, Q&A posted, video: 23:14, answers: 31:11"""]] +[[!template id=sched time="""25""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-reference.html">BBB</a>""" pad="""https://pad.emacsconf.org/2025-reference""" startutc="""2025-12-06T14:30:00+0000""" endutc="""2025-12-06T14:55:00+0000""" start="""9:30""" end="""9:55""" title="""Emacs as a fully-fledged reference manager""" url="""/2025/talks/reference""" speakers="""Vidianos Giannitsis""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""reference""" note="""captioned, video posted, video: 20:14"""]] +[[!template id=sched time="""25""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-gmail.html">BBB</a>""" pad="""https://pad.emacsconf.org/2025-gmail""" startutc="""2025-12-06T15:15:00+0000""" endutc="""2025-12-06T15:40:00+0000""" start="""10:15""" end="""10:40""" title="""org-gmail: A deep integration of Gmail into your Org Mode""" url="""/2025/talks/gmail""" speakers="""Bala Ramadurai""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""gmail""" note="""captioned, video posted, Q&A posted, video: 23:04, answers: 24:55"""]] +[[!template id=sched time="""20""" q-and-a="""<a href="https://pad.emacsconf.org/2025-juicemacs">Etherpad</a>""" startutc="""2025-12-06T15:15:00+0000""" endutc="""2025-12-06T15:35:00+0000""" start="""10:15""" end="""10:35""" title="""Juicemacs: exploring speculative JIT compilation for ELisp in Java""" url="""/2025/talks/juicemacs""" speakers="""Kana""" track="""Development""" watch="""https://emacsconf.org/2025/watch/dev""" slug="""juicemacs""" note="""captioned, video posted, video: 19:10"""]] +[[!template id=sched time="""25""" q-and-a="""none""" pad="""https://pad.emacsconf.org/2025-swanky""" startutc="""2025-12-06T15:45:00+0000""" endutc="""2025-12-06T16:10:00+0000""" start="""10:45""" end="""11:10""" title="""Swanky Python: Interactive development for Python""" url="""/2025/talks/swanky""" speakers="""Scott Zimmermann""" track="""Development""" watch="""https://emacsconf.org/2025/watch/dev""" slug="""swanky""" note="""captioned, video posted, video: 21:03"""]] +[[!template id=sched time="""25""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-gnus.html">BBB</a>""" pad="""https://pad.emacsconf.org/2025-gnus""" startutc="""2025-12-06T15:50:00+0000""" endutc="""2025-12-06T16:15:00+0000""" start="""10:50""" end="""11:15""" title="""Reading and writing emails in GNU Emacs with Gnus""" url="""/2025/talks/gnus""" speakers="""Amin Bandali""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""gnus""" note="""captioned, video posted, Q&A posted, video: 21:37, answers: 27:00"""]] +[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-python.html">BBB</a>""" pad="""https://pad.emacsconf.org/2025-python""" startutc="""2025-12-06T16:20:00+0000""" endutc="""2025-12-06T16:40:00+0000""" start="""11:20""" end="""11:40""" title="""Interactive Python programming in Emacs""" url="""/2025/talks/python""" speakers="""David Vujic""" track="""Development""" watch="""https://emacsconf.org/2025/watch/dev""" slug="""python""" note="""captioned, video posted, Q&A posted, video: 19:52, answers: 20:10"""]] +[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-latex.html">BBB</a>""" pad="""https://pad.emacsconf.org/2025-latex""" startutc="""2025-12-06T16:25:00+0000""" endutc="""2025-12-06T16:45:00+0000""" start="""11:25""" end="""11:45""" title="""LaTeX export in org-mode: the overhaul""" url="""/2025/talks/latex""" speakers="""Pedro A. Aranda Gutiérrez""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""latex""" note="""video posted, video: 33:53"""]] +[[!template id=sched time="""25""" q-and-a="""<a href="https://chat.emacsconf.org/?join=emacsconf">#emacsconf, speaker nick: lispmacs or lispmacs[work]</a>""" pad="""https://pad.emacsconf.org/2025-calc""" startutc="""2025-12-06T18:00:00+0000""" endutc="""2025-12-06T18:25:00+0000""" start="""1:00""" end="""1:25""" title="""Basic Calc functionality for engineering or electronics""" url="""/2025/talks/calc""" speakers="""Christopher Howard""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""calc""" note="""captioned, video posted, video: 23:35"""]] +[[!template id=sched time="""25""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-llm.html">BBB</a>""" pad="""https://pad.emacsconf.org/2025-llm""" startutc="""2025-12-06T18:00:00+0000""" endutc="""2025-12-06T18:25:00+0000""" start="""1:00""" end="""1:25""" title="""Emacs, editors, and LLM driven workflows""" url="""/2025/talks/llm""" speakers="""Andrew Hyatt""" track="""Development""" watch="""https://emacsconf.org/2025/watch/dev""" slug="""llm""" note="""captioned, video posted, Q&A posted, video: 20:04, answers: 27:34"""]] +[[!template id=sched time="""40""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-blee-lcnt.html">BBB</a>""" pad="""https://pad.emacsconf.org/2025-blee-lcnt""" startutc="""2025-12-06T18:35:00+0000""" endutc="""2025-12-06T19:15:00+0000""" start="""1:35""" end="""2:15""" title="""Blee-LCNT: An Emacs-centered content production and self-publication framework""" url="""/2025/talks/blee-lcnt""" speakers="""Mohsen BANAN""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""blee-lcnt""" note="""captioned, video posted, Q&A posted, video: 36:41, answers: 1:24:10"""]] +[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-private-ai.html">BBB</a>""" pad="""https://pad.emacsconf.org/2025-private-ai""" startutc="""2025-12-06T18:45:00+0000""" endutc="""2025-12-06T19:05:00+0000""" start="""1:45""" end="""2:05""" title="""Emacs and private AI: a great match""" url="""/2025/talks/private-ai""" speakers="""Aaron Grothe""" track="""Development""" watch="""https://emacsconf.org/2025/watch/dev""" slug="""private-ai""" note="""video posted, video: 41:52"""]] +[[!template id=sched time="""30""" q-and-a="""<a href="https://chat.emacsconf.org/?join=emacsconf">#emacsconf, speaker nick: screwlisp</a>""" pad="""https://pad.emacsconf.org/2025-commonlisp""" startutc="""2025-12-06T19:25:00+0000""" endutc="""2025-12-06T19:55:00+0000""" start="""2:25""" end="""2:55""" title="""Common Lisp images communicating like-a-human through shared Emacs slime and eev""" url="""/2025/talks/commonlisp""" speakers="""screwlisp""" track="""Development""" watch="""https://emacsconf.org/2025/watch/dev""" slug="""commonlisp""" note="""captioned, video posted, Q&A posted, video: 25:56, answers: 18:24"""]] +[[!template id=sched time="""5""" q-and-a="""<a href="https://chat.emacsconf.org/?join=emacsconf">#emacsconf, speaker nick: cow_2001</a>""" pad="""https://pad.emacsconf.org/2025-greader""" startutc="""2025-12-06T19:35:00+0000""" endutc="""2025-12-06T19:40:00+0000""" start="""2:35""" end="""2:40""" title="""GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence""" url="""/2025/talks/greader""" speakers="""Yuval Langer""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""greader""" note="""captioned, video posted, video: 04:08"""]] +[[!template id=sched time="""50""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-open-mic.html">BBB</a>""" pad="""https://pad.emacsconf.org/2025-open-mic""" startutc="""2025-12-06T19:50:00+0000""" endutc="""2025-12-06T20:40:00+0000""" start="""2:50""" end="""3:40""" title="""Open session""" url="""/2025/talks/open-mic""" speakers="""Participants""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""open-mic""" note="""video posted, video: 1:16:28"""]] +[[!template id=sched time="""25""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-graphics.html">BBB</a>""" note="""This talk has no narration, only music.""" pad="""https://pad.emacsconf.org/2025-graphics""" startutc="""2025-12-06T20:05:00+0000""" endutc="""2025-12-06T20:30:00+0000""" start="""3:05""" end="""3:30""" title="""Modern Emacs/Elisp hardware/software accelerated graphics""" url="""/2025/talks/graphics""" speakers="""Emanuel Berg""" track="""Development""" watch="""https://emacsconf.org/2025/watch/dev""" slug="""graphics""" note="""captioned, video posted, video: 22:15"""]] +[[!template id=sched time="""10""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-sat-close.html">BBB</a>""" pad="""https://pad.emacsconf.org/2025-sat-close""" startutc="""2025-12-06T21:00:00+0000""" endutc="""2025-12-06T21:10:00+0000""" start="""4:00""" end="""4:10""" title="""Saturday closing remarks / open session""" url="""/2025/talks/sat-close""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""sat-close""" note=""""""]]</div> Jump to: <a href="#date-2025-12-06">Sat Dec 6</a> - <a href="#date-2025-12-07">Sun Dec 7</a><a name="date-2025-12-07"></a> # Sunday Dec 7, 2025 [[!inline pages="internal(2025/schedule-2025-12-07)" raw="yes"]] <div class="schedule" data-start="2025-12-07T14:00:00+0000" data-end="2025-12-07T22:30:00+0000" data-tracks="General,Development"> -[[!template id=sched time="""10""" q-and-a="""<a href="https://pad.emacsconf.org/2025-sun-open">Etherpad</a>""" startutc="""2025-12-07T14:00:00+0000""" endutc="""2025-12-07T14:10:00+0000""" start="""9:00""" end="""9:10""" title="""Sunday opening remarks""" url="""/2025/talks/sun-open""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""sun-open""" note=""""""]] -[[!template id=sched time="""10""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-weights.html">BBB</a>""" startutc="""2025-12-07T14:10:00+0000""" endutc="""2025-12-07T14:20:00+0000""" start="""9:10""" end="""9:20""" title="""Weightlifting tracking with Emacs on Android""" url="""/2025/talks/weights""" speakers="""Zachary Romero""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""weights""" note=""""""]] -[[!template id=sched time="""20""" q-and-a="""<a href="https://chat.emacsconf.org/?join=emacsconf">#emacsconf, speaker nick: edrx</a>""" startutc="""2025-12-07T14:40:00+0000""" endutc="""2025-12-07T15:00:00+0000""" start="""9:40""" end="""10:00""" title="""Some problems of modernizing Emacs""" url="""/2025/talks/modern""" speakers="""Eduardo Ochs""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""modern""" note=""""""]] -[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-reader.html">BBB</a>""" startutc="""2025-12-07T15:10:00+0000""" endutc="""2025-12-07T15:30:00+0000""" start="""10:10""" end="""10:30""" title="""An introduction to the Emacs Reader""" url="""/2025/talks/reader""" speakers="""Divyá""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""reader""" note=""""""]] -[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-life.html">BBB</a>""" startutc="""2025-12-07T15:50:00+0000""" endutc="""2025-12-07T16:10:00+0000""" start="""10:50""" end="""11:10""" title="""From FRDCSA to FLP2: Building AI-Powered Life Planning Systems in Emacs - A Journey from Research to Real-World Impact""" url="""/2025/talks/life""" speakers="""Andrew John Dougherty""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""life""" note=""""""]] -[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-completion.html">BBB</a>""" startutc="""2025-12-07T16:30:00+0000""" endutc="""2025-12-07T16:50:00+0000""" start="""11:30""" end="""11:50""" title="""corfu+yasnippet: Easier than I thought""" url="""/2025/talks/completion""" speakers="""Pedro A. Aranda Gutiérrez""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""completion""" note=""""""]] -[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-zettelkasten.html">BBB</a>""" startutc="""2025-12-07T18:00:00+0000""" endutc="""2025-12-07T18:20:00+0000""" start="""1:00""" end="""1:20""" title="""Zettelkasten for regular Emacs hackers""" url="""/2025/talks/zettelkasten""" speakers="""Christian Tietze""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""zettelkasten""" note=""""""]] -[[!template id=sched time="""30""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-hyperboleqa.html">BBB</a>""" note="""No recorded presentation, just live Q&A""" startutc="""2025-12-07T18:40:00+0000""" endutc="""2025-12-07T19:10:00+0000""" start="""1:40""" end="""2:10""" title="""Questions and answers to help you fly with Hyperbole""" url="""/2025/talks/hyperboleqa""" speakers="""Bob Weiner""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""hyperboleqa""" note=""""""]] -[[!template id=sched time="""10""" q-and-a="""none""" startutc="""2025-12-07T19:10:00+0000""" endutc="""2025-12-07T19:20:00+0000""" start="""2:10""" end="""2:20""" title="""Gardening in Emacs: A Windows user's tale of tending, tweaking, and triumph""" url="""/2025/talks/gardening""" speakers="""Marco Bresciani""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""gardening""" note="""video: 17:36"""]] -[[!template id=sched time="""20""" q-and-a="""none""" startutc="""2025-12-07T19:30:00+0000""" endutc="""2025-12-07T19:50:00+0000""" start="""2:30""" end="""2:50""" title="""Reading and writing emails in GNU Emacs with Gnus""" url="""/2025/talks/gnus""" speakers="""Amin Bandali""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""gnus""" note=""""""]] -[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-writing.html">BBB</a>""" startutc="""2025-12-07T20:00:00+0000""" endutc="""2025-12-07T20:20:00+0000""" start="""3:00""" end="""3:20""" title="""A writing day in the life with Org-Mode""" url="""/2025/talks/writing""" speakers="""Jeremy Friesen""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""writing""" note=""""""]] -[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-bookclub-tapas.html">BBB</a>""" startutc="""2025-12-07T20:40:00+0000""" endutc="""2025-12-07T21:00:00+0000""" start="""3:40""" end="""4:00""" title="""Bookclub tapas""" url="""/2025/talks/bookclub-tapas""" speakers="""Maddie Sullivan""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""bookclub-tapas""" note=""""""]] -[[!template id=sched time="""10""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-sun-close.html">BBB</a>""" startutc="""2025-12-07T21:20:00+0000""" endutc="""2025-12-07T21:30:00+0000""" start="""4:20""" end="""4:30""" title="""Sunday closing remarks""" url="""/2025/talks/sun-close""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""sun-close""" note=""""""]]</div>
\ No newline at end of file +[[!template id=sched time="""10""" q-and-a="""<a href="https://pad.emacsconf.org/2025-sun-open">Etherpad</a>""" note="""This is the same as sat-open.""" startutc="""2025-12-07T14:00:00+0000""" endutc="""2025-12-07T14:10:00+0000""" start="""9:00""" end="""9:10""" title="""Sunday opening remarks""" url="""/2025/talks/sun-open""" speakers="""Sacha Chua""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""sun-open""" note="""captioned, video posted, video: 04:51"""]] +[[!template id=sched time="""20""" q-and-a="""<a href="https://chat.emacsconf.org/?join=emacsconf">#emacsconf, speaker nick: edrx</a>""" pad="""https://pad.emacsconf.org/2025-modern""" startutc="""2025-12-07T14:10:00+0000""" endutc="""2025-12-07T14:30:00+0000""" start="""9:10""" end="""9:30""" title="""Some problems of modernizing Emacs""" url="""/2025/talks/modern""" speakers="""Eduardo Ochs""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""modern""" note="""video posted, video: 25:22"""]] +[[!template id=sched time="""35""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-reader.html">BBB</a>""" pad="""https://pad.emacsconf.org/2025-reader""" startutc="""2025-12-07T14:40:00+0000""" endutc="""2025-12-07T15:15:00+0000""" start="""9:40""" end="""10:15""" title="""An introduction to the Emacs Reader""" url="""/2025/talks/reader""" speakers="""Divyá""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""reader""" note="""captioned, video posted, Q&A posted, video: 34:37, answers: 20:12"""]] +[[!template id=sched time="""10""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-weights.html">BBB</a>""" pad="""https://pad.emacsconf.org/2025-weights""" startutc="""2025-12-07T15:35:00+0000""" endutc="""2025-12-07T15:45:00+0000""" start="""10:35""" end="""10:45""" title="""Weightlifting tracking with Emacs on Android""" url="""/2025/talks/weights""" speakers="""Zachary Romero""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""weights""" note="""video posted, video: 30:05"""]] +[[!template id=sched time="""25""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-completion.html">BBB</a>""" pad="""https://pad.emacsconf.org/2025-completion""" startutc="""2025-12-07T16:05:00+0000""" endutc="""2025-12-07T16:25:00+0000""" start="""11:05""" end="""11:25""" title="""corfu+yasnippet: Easier than I thought""" url="""/2025/talks/completion""" speakers="""Pedro A. Aranda Gutiérrez""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""completion""" note="""video posted, video: 36:04"""]] +[[!template id=sched time="""25""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-zettelkasten.html">BBB</a>""" pad="""https://pad.emacsconf.org/2025-zettelkasten""" startutc="""2025-12-07T18:00:00+0000""" endutc="""2025-12-07T18:25:00+0000""" start="""1:00""" end="""1:25""" title="""Zettelkasten for regular Emacs hackers""" url="""/2025/talks/zettelkasten""" speakers="""Christian Tietze""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""zettelkasten""" note="""captioned, video posted, Q&A posted, video: 23:18, answers: 1:17:07"""]] +[[!template id=sched time="""30""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-hyperboleqa.html">BBB</a>""" note="""No recorded presentation, just live Q&A""" pad="""https://pad.emacsconf.org/2025-hyperboleqa""" startutc="""2025-12-07T18:45:00+0000""" endutc="""2025-12-07T19:15:00+0000""" start="""1:45""" end="""2:15""" title="""Questions and answers to help you fly with Hyperbole""" url="""/2025/talks/hyperboleqa""" speakers="""Bob Weiner""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""hyperboleqa""" note="""video posted, video: 49:02"""]] +[[!template id=sched time="""20""" q-and-a="""none""" pad="""https://pad.emacsconf.org/2025-gardening""" startutc="""2025-12-07T19:15:00+0000""" endutc="""2025-12-07T19:35:00+0000""" start="""2:15""" end="""2:35""" title="""Gardening in Emacs: A Windows user's tale of tending, tweaking, and triumph""" url="""/2025/talks/gardening""" speakers="""Marco Bresciani""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""gardening""" note="""captioned, video posted, video: 17:36"""]] +[[!template id=sched time="""35""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-bookclub-tapas.html">BBB</a>""" pad="""https://pad.emacsconf.org/2025-bookclub-tapas""" startutc="""2025-12-07T19:45:00+0000""" endutc="""2025-12-07T20:20:00+0000""" start="""2:45""" end="""3:20""" title="""Bookclub tapas""" url="""/2025/talks/bookclub-tapas""" speakers="""Maddie Sullivan""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""bookclub-tapas""" note="""captioned, video posted, Q&A posted, video: 31:25"""]] +[[!template id=sched time="""10""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-sun-close.html">BBB</a>""" pad="""https://pad.emacsconf.org/2025-sun-close""" startutc="""2025-12-07T20:40:00+0000""" endutc="""2025-12-07T20:50:00+0000""" start="""3:40""" end="""3:50""" title="""Sunday closing remarks""" url="""/2025/talks/sun-close""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""sun-close""" note="""video posted, video: 15:33"""]]</div><div class="cancelled">Cancelled:<ul><li>A writing day in the life with Org-Mode - Jeremy Friesen</li> +<li>Org-mode GTD vs N-angulator GTD - Kevin Haddock</li> +<li>How Emacs became my authoring playground—no Lisp required - Uli</li> +<li>Studying foreign languages with Emacs, Org Mode and gptel - Marek</li> +<li>From FRDCSA to FLP2: Building AI-Powered Life Planning Systems in Emacs - A Journey from Research to Real-World Impact - Andrew John Dougherty</li> +<li>emacs-claude-code: Intelligent Claude Integration for Emacs - Yusuke Watanabe</li> +<li>An enhanced bibliography in org-mode for scientific research and self-directed learning - Blaine Mooers</li></ul></div>
\ No newline at end of file diff --git a/2025/info/blee-lcnt-after.md b/2025/info/blee-lcnt-after.md index 8983bcf5..415408f8 100644 --- a/2025/info/blee-lcnt-after.md +++ b/2025/info/blee-lcnt-after.md @@ -702,7 +702,350 @@ Captioner: mohsen -Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202023%20blee-lcnt%3A%20Blee-LCNT%3A%20An%20Emacs-centered%20content%20production%20and%20self-publication%20framework) +<div class="transcript transcript-qanda"><a name="blee-lcnt-qanda-transcript"></a><h1>Q&A transcript (unedited)</h1> + +[[!template text="""Greetings. Salaam again. I'm delighted to be here""" start="00:00:00.000" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""and happy to answer your questions.""" start="00:00:05.200" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""I'm not seeing anything yet,""" start="00:00:11.200" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""but let me take advantage of this time""" start="00:00:12.840" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""to speak about one question""" start="00:00:17.680" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""If you can bring up the pad so that you can look at it.""" start="00:00:17.800" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""that I saw coming in earlier on the pad,""" start="00:00:20.080" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""which was all the outputs""" start="00:00:22.880" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""and the inputs that you mentioned, where are they?""" start="00:00:25.040" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""So they are on GitHub, and this is in one of my slides.""" start="00:00:29.400" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""I mentioned the URL for it. I'll show you that as well.""" start="00:00:35.440" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""So the URL for it is github.com bxplpc18068,""" start="00:00:43.360" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""Okay. Hang on a second. I will.""" start="00:00:43.440" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""which is the handle for this talk.""" start="00:00:50.392" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""In there, you have all the PDFs and the HTMLs,""" start="00:00:58.680" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And then people can join here as well.""" start="00:01:00.120" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""a citation, a bib input, and also the sources.""" start="00:01:06.040" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""So if you were to go to the PDF, you will see""" start="00:01:12.120" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""Um, both the article presentation and the,""" start="00:01:19.440" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""let's take a quick look at the.""" start="00:01:24.320" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""Which is what you have seen. So.""" start="00:01:27.280" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And as far as the sources are, there are two primary files.""" start="00:01:34.160" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""I think we're now in a live Q&A session for Blee-LCNT,""" start="00:01:37.000" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""This presentation, left to right,""" start="00:01:40.280" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""and people can join us here in the Big Blue Button room,""" start="00:01:46.000" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""is the one that includes all the LaTeX packages.""" start="00:01:47.200" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""We might as well take a quick look.""" start="00:01:50.920" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""So what's in there is primarily the use packages.""" start="00:01:52.642" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And then it dispatches to body press art.""" start="00:01:57.601" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And this is where the code is.""" start="00:02:07.000" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And I walked through this briefly.""" start="00:02:11.520" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""So, notice here again that this is a mixture of LaTeX and Org.""" start="00:02:14.560" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""Each of the presentation slides are here.""" start="00:02:26.840" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""For example, my introduction""" start="00:02:31.040" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""is just a video that gets included.""" start="00:02:34.520" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And then the notes that I use, the voiceover,""" start="00:02:37.240" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""is also included in the LaTeX file.""" start="00:02:41.120" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""Let me... It'll probably be easy""" start="00:02:47.320" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""to take those voiceover notes""" start="00:02:50.080" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""and then align them with a tool like NES.""" start="00:02:52.400" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""to make subtitles for your videos.""" start="00:02:54.960" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""Exactly, and that is what I do.""" start="00:02:58.400" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""So there is a way to gather them all as P-notes.""" start="00:03:01.200" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And so all the P-notes get together in a single file,""" start="00:03:08.520" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""and then you feed that to Aeneas, and it will align them.""" start="00:03:13.840" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And then there is the work of using your subed""" start="00:03:20.600" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""to just get the right sort of line length on them.""" start="00:03:23.320" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""But you did all of that for me this year, Sacha.""" start="00:03:30.280" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""Thank you very much.""" start="00:03:33.040" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""It was just a matter of not having time.""" start="00:03:34.520" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""Otherwise, I plan to do it myself. It's all right.""" start="00:03:37.560" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""It was very easy since he provided the full narration.""" start="00:03:43.560" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""I still need to tweak it sometimes,""" start="00:03:46.640" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""so I often use the waveforms in subed""" start="00:03:50.400" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""to find the right starting time and ending time for things.""" start="00:03:52.920" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""But it is so nice to have a presentation""" start="00:03:58.560" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""where you can experience it in different forms,""" start="00:04:01.520" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""as an article, as a video, as a post with links and everything.""" start="00:04:03.880" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""Very handy.""" start="00:04:10.160" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""Right, and in case a teacher uses this for class lectures,""" start="00:04:11.480" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""then the student profits from all sorts.""" start="00:04:20.920" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""The article presentation format is very useful""" start="00:04:26.080" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""for a student to add their own notes to it and the rest.""" start="00:04:29.000" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""Exactly as you said, having multiple forms is great.""" start="00:04:33.240" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""Video has its place, reveal has its place,""" start="00:04:37.520" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""PDF has its place, article has its place.""" start="00:04:40.480" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""All of them work together.""" start="00:04:44.040" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""I've been having a hard time figuring out""" start="00:04:48.400" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""how to make the reveal.js version of a presentation""" start="00:04:50.480" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""more easily distributable, though.""" start="00:04:54.720" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""This is something we've had a hard time""" start="00:04:57.000" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""with in the past, too.""" start="00:04:58.840" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""You have these lovely EmacsConf presentations""" start="00:05:00.200" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""that could be reveal presentations,""" start="00:05:02.760" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""but hosting them doesn't quite fit""" start="00:05:04.840" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""in the usual assumptions people have. Exactly, exactly.""" start="00:05:07.760" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""So if we were to have a reveal server,""" start="00:05:13.640" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""then we could upload our reveal inputs to it.""" start="00:05:16.560" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""But you're right, we should look""" start="00:05:20.480" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""for some sort of a packaging""" start="00:05:25.000" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""that is more plug and distribute. Yeah, so I'd be all game""" start="00:05:26.680" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""if we wanted to do it for next year,""" start="00:05:34.080" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""I'd be happy to provide all the reveal outputs.""" start="00:05:36.920" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""In fact, they are here, let me touch on that quickly.""" start="00:05:42.040" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""Good point you brought up. So, this is the. Reveal output.""" start="00:05:45.920" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""So all of these, you see the images and the audio""" start="00:05:53.640" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""in my own environment are SIM links to where I keep them.""" start="00:05:57.520" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""So those need to come in,""" start="00:06:02.360" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""but the reveal output really comes right here.""" start="00:06:06.240" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And this is how it looks.""" start="00:06:10.600" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""If that's a link you can add to the pad,""" start="00:06:13.680" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""then I can add you to the top page afterwards.""" start="00:06:15.680" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""I think as a, as a speaker,""" start="00:06:19.800" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""I tend to just self host the thing.""" start="00:06:21.840" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And that way also, if I find a bug, which often happens,""" start="00:06:24.120" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""I can go and quietly update it.""" start="00:06:28.320" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""Exactly. Exactly. Sure. Sure. Yeah.""" start="00:06:30.680" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""This right now, what we are looking at is from GitHub.""" start="00:06:36.440" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And the audio and the images, of course, are large,""" start="00:06:44.240" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""and I did not upload them. But I can send them, sure.""" start="00:06:48.600" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""So, a few other things maybe I can elaborate on.""" start="00:06:55.760" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""This is the kombut strapping page for BISOS, also on there.""" start="00:07:02.000" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And if somebody wanted to actually""" start="00:07:08.640" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""dig deeper and go through this,""" start="00:07:11.080" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""a good starting point would be my GitHub page.""" start="00:07:12.920" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""But my GitHub page is not done and organized the usual way.""" start="00:07:18.960" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""So I only have three repositories""" start="00:07:24.640" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""and the repositories basically say,""" start="00:07:27.000" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""here is where you need to go.""" start="00:07:30.360" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""So all of my work is organized as organizations.""" start="00:07:32.267" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""So, for example, for Emacs, if you were to go to BXBli,""" start="00:07:39.160" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""you will see all the relevant repos for that purpose.""" start="00:07:48.040" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""So, for example, if you wanted to""" start="00:07:56.360" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""come and take a look at mail template,""" start="00:07:58.976" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""templating, distribution, and tracking,""" start="00:08:03.320" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""you would get a Emacs package ready to go over here.""" start="00:08:08.720" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""But again, all of this is through the use of GitHub organizations.""" start="00:08:16.240" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""So my repos are by subject""" start="00:08:23.480" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""and the by source itself has 69 repositories""" start="00:08:26.400" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""where different sections of it are packaged as PIP packages.""" start="00:08:33.240" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""So, for example, for LCNT, we can go there.""" start="00:08:38.720" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""So, these are the packages that let you,""" start="00:08:42.360" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""let me go there, that let you dissect.""" start="00:08:46.440" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""Sorry, you have your slides shared at the moment,""" start="00:08:53.160" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""so I don't know if you're in a different tab.""" start="00:08:55.200" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""Oh, am I in a different tab?""" start="00:08:59.600" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""I thought that that would follow me.""" start="00:09:03.080" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""Yes, I am in a different tab. Let me see.""" start="00:09:06.400" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""This is the one that you are seeing,""" start="00:09:16.120" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""so let me go over here. Perfect. Now you're seeing it.""" start="00:09:19.880" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""So literally on the same page. Awesome. Right.""" start="00:09:28.840" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""So you were not actually seeing what I was saying.""" start="00:09:31.280" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""So, so what I was saying that is that""" start="00:09:33.680" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""if you go to my primary website, GitHub page,""" start="00:09:36.160" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""you will see that there are only three repos there.""" start="00:09:42.160" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And those repos just give information""" start="00:09:45.440" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""about where the real repos are.""" start="00:09:49.760" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And the real repos are organized in various organizations.""" start="00:09:52.960" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""So, for example, for Emacs packages, I use the bxblee""" start="00:09:57.400" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And in there, there are 40 repositories.""" start="00:10:06.720" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And as an example, you can choose, for example,""" start="00:10:12.000" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""AI plus is just a few additional libraries for menus, for AIDERMAX.""" start="00:10:15.400" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And the rest of BLEE is done that way as well.""" start="00:10:26.520" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""So if you were to let me also show""" start="00:10:31.720" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""more relevant stuff to the content generation.""" start="00:10:36.920" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And everything related to BySauce in Python is in BySauce pip.""" start="00:10:43.760" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""These are packages that are ready""" start="00:10:48.840" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""to be exported to pypi and""" start="00:10:52.880" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""For example, for LCNT, if you go here,""" start="00:10:57.960" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""let's go to the bin directory.""" start="00:11:02.750" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""These are the utilities that dissect the PDF output of Beamer""" start="00:11:04.559" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""converted to images so that you can insert them in Reveal.""" start="00:11:15.809" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And then again, if you were to just wanted to dig deeper""" start="00:11:23.840" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""in any of these as components,""" start="00:11:29.160" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""you would simply start from this top level page""" start="00:11:34.760" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""and explore the organizations.""" start="00:11:40.560" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""So in total, maybe there is 300 repos,""" start="00:11:44.720" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""but they are organized by subject matter""" start="00:11:48.720" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""within GitHub organizations.""" start="00:11:54.280" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""Yeah. Additional general comment.""" start="00:12:03.400" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""If you were to look at my presentation,""" start="00:12:10.800" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""I'd say I touched on five different topics.""" start="00:12:13.040" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""So, one topic was this content generation in general.""" start="00:12:17.520" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""The second one was this challenge of DIY model and recipes""" start="00:12:24.040" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""versus building something large""" start="00:12:35.280" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""and including everything in it.""" start="00:12:38.320" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And that is, that has been the motivation""" start="00:12:40.920" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""for BySauce and BLE.""" start="00:12:43.520" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And I'm interested in getting feedback on it.""" start="00:12:46.920" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""In general, the open source culture""" start="00:12:50.280" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""has been focusing on components""" start="00:12:54.520" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""and large American corporations""" start="00:13:00.720" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""have focused in integration of these components.""" start="00:13:03.440" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""So my short message here is that""" start="00:13:07.720" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""we should start thinking as providing solutions""" start="00:13:11.680" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""as opposed to minor pieces and packages""" start="00:13:17.960" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""and put them all together and claim them as our own digital ecosystem.""" start="00:13:23.520" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And this is the concept behind ByStar, BySource and BLEE.""" start="00:13:30.600" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""The third point I was making throughout""" start="00:13:38.320" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""is this concept of dynamic blocks everywhere,""" start="00:13:41.000" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""and Comiga, which is the inverse of Babel.""" start="00:13:45.480" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And I'd also be interested in feedback on those.""" start="00:13:51.600" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""I think the d-blocks-everywhere concept,""" start="00:13:57.480" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""I can very quickly show that.""" start="00:14:03.240" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""it would be in the LaTeX file, as an example.""" start="00:14:13.080" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""I didn't really do a good job in digging deeper into that.""" start="00:14:18.040" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""So if you go to the sources""" start="00:14:23.320" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""and you look at any of the slides,""" start="00:14:25.480" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""All the slides are in here inside of a dynamic block.""" start="00:14:31.320" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""This is an org D block,""" start="00:14:39.720" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""but you would invoke it in LaTeX mode.""" start="00:14:41.920" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And then from this begin to this end,""" start="00:14:46.920" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""everything is auto-generated""" start="00:14:51.200" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""through the Elisp function, body MM video.""" start="00:14:54.560" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And the parameters that it takes are the video pass.""" start="00:15:00.040" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""So all of this code is repeated all over the place.""" start="00:15:06.880" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And all you need in it is the video pass.""" start="00:15:12.240" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""So it's very easy to think of this as a macro capability,""" start="00:15:15.800" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""except that the macro is visible.""" start="00:15:21.960" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And it has one additional benefit""" start="00:15:25.080" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""on top of general macro capabilities,""" start="00:15:29.480" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""and that is that it's open.""" start="00:15:34.800" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""In this particular case, it closes,""" start="00:15:36.760" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""but let me show you another one where it is open.""" start="00:15:41.680" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""So if you look at, this is latex section, this one is good.""" start="00:15:46.440" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""This is a derived image. And by saying that it's open""" start="00:15:54.880" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""is that you see my begin verbatim and my begin frame.""" start="00:16:00.440" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""They end and there is no closing for them.""" start="00:16:06.680" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""So the extra text that is outside""" start="00:16:11.440" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""of the D block and closes it is down here.""" start="00:16:15.000" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And none of the existing macro capabilities""" start="00:16:21.320" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""gives you this feature. This even comes handy in Lisp.""" start="00:16:24.960" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""So that is a proposal saying""" start="00:16:30.800" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""that let's make D blocks, dynamic blocks,""" start="00:16:40.040" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""generalized to all of Emacs, as opposed to just org mode.""" start="00:16:47.720" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And that's relatively simple.""" start="00:16:52.960" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And the Emacs source team could easily decide""" start="00:16:54.760" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""that this is worthwhile doing.""" start="00:17:01.360" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And then, of course, I've gone""" start="00:17:02.960" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""over it through the presentation.""" start="00:17:07.760" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""So, I see 1 question coming in. What changes have you seen?""" start="00:17:09.960" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""the culture while developing all these things""" start="00:17:20.400" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""like liver halal system and now BLCNT.""" start="00:17:24.720" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""Well, it's a work in progress, I would say.""" start="00:17:28.640" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""We learn from one another.""" start="00:17:40.080" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And what I'm doing may be considered""" start="00:17:43.040" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""just a stepwise increment,""" start="00:17:47.720" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""but the cultural input is that we really should start""" start="00:17:52.200" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""thinking about providing solutions as opposed to packages.""" start="00:18:01.800" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""The FOSS culture is really limited in its scope to packages""" start="00:18:09.400" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""or even if when you think something very large like Debian,""" start="00:18:19.320" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""which is a collection of packages.""" start="00:18:24.800" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And it is still choice oriented,""" start="00:18:28.160" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""as opposed to solution oriented.""" start="00:18:31.480" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""Yeah. Are there any additional topics or questions?""" start="00:18:55.400" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""Otherwise, I'll just add a few additional concepts.""" start="00:19:03.600" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""So the two other points made throughout the presentations""" start="00:19:11.160" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""are that this statement about clear invalidity""" start="00:19:18.080" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""of the Western IPO regime.""" start="00:19:28.760" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""So throughout the first movement,""" start="00:19:30.720" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""we have been focusing on providing alternative licenses""" start="00:19:34.400" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""which coexist with the IPR system.""" start="00:19:42.720" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And that is the practical thing to do.""" start="00:19:49.320" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""We are doing a jujitsu on IPR.""" start="00:19:52.200" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""We are saying that this is our license to it.""" start="00:19:55.880" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""But conceptually, there has been little discussion""" start="00:20:00.920" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""and also positioning on this basic question""" start="00:20:07.400" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""as to whether or not copyright""" start="00:20:14.320" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""and patents are valid or invalid.""" start="00:20:17.480" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And what I am saying is that it is clear that they are invalid,""" start="00:20:21.120" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""particularly once you start looking at them""" start="00:20:26.640" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""with the lens of polyexistentials.""" start="00:20:30.440" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And that the false movement""" start="00:20:33.760" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""really needs to combine these two,""" start="00:20:39.240" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""this notion of free software and open source licenses,""" start="00:20:42.200" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""and combined with the belief system""" start="00:20:47.360" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""that we are completely and utterly against""" start="00:20:51.680" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""the validity of the Western intellectual property rights regime.""" start="00:20:55.840" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And I use the Western and the American occasionally,""" start="00:21:00.680" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""and the reason behind that is that in fact it is, they are Western.""" start="00:21:05.400" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""If you go to any other language, if you go to Farsi,""" start="00:21:12.480" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""if you go to Arabic, if you go to Chinese,""" start="00:21:16.480" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""if you go to Japanese, which are non-Western cultures,""" start="00:21:19.080" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""the concept of intellectual property,""" start="00:21:24.160" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""the words, the vocabulary of those""" start="00:21:28.640" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""combination of intellectual and property,""" start="00:21:33.160" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""did not exist anywhere in those cultures.""" start="00:21:36.640" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""It's only in the past, maybe 60, 70 years""" start="00:21:40.560" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""that they have been translated from the Western world and brought into it.""" start="00:21:44.560" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""So there is an inherent root""" start="00:21:52.280" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""into the intellectual property rights system,""" start="00:21:54.640" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""which goes to the Western culture.""" start="00:21:58.960" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""The second point that I have brought into""" start="00:22:02.680" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""this presentation and the previous ones""" start="00:22:08.440" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""is this question of, if we go with free software,""" start="00:22:11.000" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""if we go with open software,""" start="00:22:16.240" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""are we really creating the right labels?""" start="00:22:18.120" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And my point is that no, neither of them,""" start="00:22:22.160" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""neither free software, nor open source""" start="00:22:25.680" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""are capturing really the essence""" start="00:22:29.480" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""of what we are trying to do.""" start="00:22:33.160" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And I claim that that is in fact ethics and morality.""" start="00:22:36.400" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And it is societal belief that if we reject""" start="00:22:41.440" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""intellectual property rights regime,""" start="00:22:48.880" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""what do we replace it with?""" start="00:22:51.880" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And in my thinking is that a software developer""" start="00:22:53.280" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""does not get to choose""" start="00:22:58.800" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""what license goes with his or her software,""" start="00:23:00.920" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""and that the equivalent of a federal GPL""" start="00:23:04.920" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""is the default correct license""" start="00:23:09.320" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""to use for all of your software""" start="00:23:13.840" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""because it is the one that reflects the belief system""" start="00:23:16.320" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""that all software should be ethical software.""" start="00:23:21.040" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""Yeah, I'm looking at the Etherpad again and""" start="00:23:24.720" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""The question is about IP and AI.""" start="00:23:43.560" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""So yeah, over the past two years,""" start="00:23:48.680" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""something huge has happened.""" start="00:23:54.360" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And what I am seeing in there as a solution""" start="00:23:56.600" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""is essentially comes down to a talk""" start="00:24:04.920" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""that was given maybe two years ago by someone at EmacsConf,""" start="00:24:12.320" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""and its label was attribution-based economics.""" start="00:24:16.840" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""In my thinking, intellectual property""" start="00:24:22.360" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""as a whole is invalid.""" start="00:24:28.320" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""But that means that through something like a federal GPL,""" start="00:24:29.840" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""you focus on attribution basing, proper attribution basing.""" start="00:24:36.120" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""If somebody has done some work,""" start="00:24:41.720" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""it should be clear, no matter what, that that work is his.""" start="00:24:43.840" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And that we already, even prior to AI, we were seeing this.""" start="00:24:48.600" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""We were seeing large GitHub repos with hundreds of authors.""" start="00:24:54.880" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And it was utterly unclear as to who would own this whole thing.""" start="00:24:59.400" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And any piece of it is not of significance.""" start="00:25:09.880" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""What is of significance is the whole thing.""" start="00:25:14.120" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""So moving towards that attribution based economics is key.""" start="00:25:16.880" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And then once we do that,""" start="00:25:25.040" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""and then we accept AI as a reality.""" start="00:25:27.600" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""AI should still take very seriously""" start="00:25:31.920" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""and conform to attribution-based economics.""" start="00:25:38.200" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""In other words, what is generated by the machine""" start="00:25:44.000" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""should not be claimed to be no one's""" start="00:25:47.880" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""or the machine owners, the AI owners.""" start="00:25:51.280" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""It should still clearly be attributed""" start="00:25:54.240" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""to the people who contributed in its creation.""" start="00:25:56.880" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""This all becomes very muddy, very clear,""" start="00:26:03.040" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""and I don't have a simple or clear answer to it.""" start="00:26:06.960" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""But the perimeters of the solution lie in""" start="00:26:11.920" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""rejection of intellectual property,""" start="00:26:16.080" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""replacement of the intellectual property""" start="00:26:21.480" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""with attribution-based economics,""" start="00:26:25.040" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""and restrictions on AI use""" start="00:26:27.400" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""of not properly attributed content.""" start="00:26:31.200" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""Yeah, I'd say that would be, it's a complicated topic""" start="00:26:38.200" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""and I would simply say I haven't figured it out at all.""" start="00:26:50.240" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""I just have a perimeter set of concepts""" start="00:26:56.120" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""that can be used to drive it.""" start="00:27:03.760" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""Are there any other questions? If there aren't any,""" start="00:27:06.480" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""I thank everybody again,""" start="00:27:20.680" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""and particularly the EmacsConf organizers and Sacha.""" start="00:27:23.160" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""And I look forward to continuing all of this next year.""" start="00:27:27.800" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""Unless there is any objection,""" start="00:27:32.640" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""I'll leave the session and close it. Thank you.""" start="00:27:39.080" video="qanda-blee-lcnt" id="subtitle"]] + +</div>Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202023%20blee-lcnt%3A%20Blee-LCNT%3A%20An%20Emacs-centered%20content%20production%20and%20self-publication%20framework) <!-- End of emacsconf-publish-after-page --> diff --git a/2025/info/blee-lcnt-before.md b/2025/info/blee-lcnt-before.md index ef6b39b5..fe7faabf 100644 --- a/2025/info/blee-lcnt-before.md +++ b/2025/info/blee-lcnt-before.md @@ -1,18 +1,14 @@ <!-- Automatically generated by emacsconf-publish-before-page --> - -The following image shows where the talk is in the schedule for Sat 2025-12-06. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="blee-lcnt"> -<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2025/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:10 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2025/talks/org-babel" title="Making Org-Babel reactive" data-slug="org-babel"> <title> 9:10- 9:20 Making Org-Babel reactive</title> <rect x="13" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(24,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> org-babel</text></g></a> <a href="/2025/talks/reference" title="Emacs as a fully-fledged reference manager" data-slug="reference"> <title> 9:30- 9:55 Emacs as a fully-fledged reference manager</title> <rect x="41" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(73,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> reference</text></g></a> <a href="/2025/talks/gmail" title="org-gmail: A deep integration of Gmail into your Org Mode" data-slug="gmail"> <title> 10:15-10:40 org-gmail: A deep integration of Gmail into your Org Mode</title> <rect x="102" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(134,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gmail</text></g></a> <a href="/2025/talks/gnus" title="Reading and writing emails in GNU Emacs with Gnus" data-slug="gnus"> <title> 10:50-11:15 Reading and writing emails in GNU Emacs with Gnus</title> <rect x="150" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(182,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gnus</text></g></a> <a href="/2025/talks/latex" title="LaTeX export in org-mode: the overhaul" data-slug="latex"> <title> 11:25-11:45 LaTeX export in org-mode: the overhaul</title> <rect x="199" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(224,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> latex</text></g></a> <a href="/2025/talks/calc" title="Basic Calc functionality for engineering or electronics" data-slug="calc"> <title> 1:00- 1:25 Basic Calc functionality for engineering or electronics</title> <rect x="329" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(361,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> calc</text></g></a> <a href="/2025/talks/blee-lcnt" title="Blee-LCNT: An Emacs-centered content production and self-publication framework" data-slug="blee-lcnt"> <title> 1:35- 2:15 Blee-LCNT: An Emacs-centered content production and self-publication framework</title> <rect stroke-width="3" x="377" y="15" opacity="0.8" width="54" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(429,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> blee-lcnt</text></g></a> <a href="/2025/talks/greader" title="GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence" data-slug="greader"> <title> 2:35- 2:40 GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence</title> <rect x="459" y="15" opacity="0.5" width="6" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(463,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> greader</text></g></a> <a href="/2025/talks/open-mic" title="Open session" data-slug="open-mic"> <title> 2:50- 3:40 Open session</title> <rect x="480" y="15" opacity="0.5" width="68" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(546,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> open-mic</text></g></a> <a href="/2025/talks/sat-close" title="Saturday closing remarks / open session" data-slug="sat-close"> <title> 4:00- 4:10 Saturday closing remarks / open session</title> <rect x="576" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(587,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2025/talks/schemacs" title="One year progress update Schemacs (formerly Gypsum)" data-slug="schemacs"> <title> 9:30- 9:55 One year progress update Schemacs (formerly Gypsum)</title> <rect x="41" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(73,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> schemacs</text></g></a> <a href="/2025/talks/juicemacs" title="Juicemacs: exploring speculative JIT compilation for ELisp in Java" data-slug="juicemacs"> <title> 10:15-10:35 Juicemacs: exploring speculative JIT compilation for ELisp in Java</title> <rect x="102" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(127,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> juicemacs</text></g></a> <a href="/2025/talks/swanky" title="Swanky Python: Interactive development for Python" data-slug="swanky"> <title> 10:45-11:10 Swanky Python: Interactive development for Python</title> <rect x="144" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(176,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> swanky</text></g></a> <a href="/2025/talks/python" title="Interactive Python programming in Emacs" data-slug="python"> <title> 11:20-11:40 Interactive Python programming in Emacs</title> <rect x="192" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(217,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <a href="/2025/talks/llm" title="Emacs, editors, and LLM driven workflows" data-slug="llm"> <title> 1:00- 1:25 Emacs, editors, and LLM driven workflows</title> <rect x="329" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(361,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> llm</text></g></a> <a href="/2025/talks/private-ai" title="Emacs and private AI: a great match" data-slug="private-ai"> <title> 1:45- 2:05 Emacs and private AI: a great match</title> <rect x="391" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(416,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> private-ai</text></g></a> <a href="/2025/talks/commonlisp" title="Common Lisp images communicating like-a-human through shared Emacs slime and eev" data-slug="commonlisp"> <title> 2:25- 2:55 Common Lisp images communicating like-a-human through shared Emacs slime and eev</title> <rect x="446" y="75" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(485,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> commonlisp</text></g></a> <a href="/2025/talks/graphics" title="Modern Emacs/Elisp hardware/software accelerated graphics" data-slug="graphics"> <title> 3:05- 3:30 Modern Emacs/Elisp hardware/software accelerated graphics</title> <rect x="500" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(532,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> graphics</text></g></a> <g transform="translate(0,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 5 PM</text></g></svg> -</div> - [[!toc ]] -Format: 37-min talk ; Q&A: BigBlueButton conference room <https://media.emacsconf.org/2025/current/bbb-blee-lcnt.html> Etherpad: <https://pad.emacsconf.org/2025-blee-lcnt> +Format: 37-min talk ; Q&A: BigBlueButton conference room Etherpad: <https://pad.emacsconf.org/2025-blee-lcnt> Etherpad: <https://pad.emacsconf.org/2025-blee-lcnt> -Discuss on IRC: [#emacsconf-gen](https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen) -Status: Q&A finished, IRC and pad will be archived on this page +Status: TO_REVIEW_QA + +# Talk <div class="vid mainVideo"><video controls preload="none" id="mainVideo-blee-lcnt"><source src="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2025/captions/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--main--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="mainVideo-blee-lcnt" data=""" 00:05.760 Introduction @@ -41,6 +37,10 @@ Status: Q&A finished, IRC and pad will be archived on this page 35:07.720 Ingredients of BISOS platforms and their progression 36:02.560 Moving forward -"""]]<div></div>Duration: 36:41 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-blee-lcnt">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/current/bbb-blee-lcnt.html">Open public Q&A</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--main.opus">Download --main.opus (32MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--main.webm">Download --main.webm (97MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--script.txt">Download --script.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--split.txt">Download --split.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--split.vtt">Download --split.vtt</a></li><li><a href="https://youtu.be/49e0ES-nk0k">View on Youtube</a></li></ul></div></div> +"""]]<div></div>Duration: 36:41 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-blee-lcnt">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--main.opus">Download --main.opus (32MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--main.webm">Download --main.webm (97MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--script.txt">Download --script.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--split.txt">Download --split.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--split.vtt">Download --split.vtt</a></li><li><a href="https://youtu.be/49e0ES-nk0k">View on Youtube</a></li></ul></div></div> + +# Q&A + +<div class="vid qanda"><video controls preload="none" id="qanda-blee-lcnt"><source src="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--answers.m4v" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--answers.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 1:24:10 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-blee-lcnt">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--answers.json">Download --answers.json</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--answers.m4v">Download --answers.m4v (111MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--answers.tsv">Download --answers.tsv</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--answers.txt">Download --answers.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--answers.webm">Download --answers.webm (69MB)</a></li></ul></div></div> # Description <!-- End of emacsconf-publish-before-page -->
\ No newline at end of file diff --git a/2025/info/blee-lcnt-nav.md b/2025/info/blee-lcnt-nav.md index fcf1d9fe..70dd2eb8 100644 --- a/2025/info/blee-lcnt-nav.md +++ b/2025/info/blee-lcnt-nav.md @@ -1,7 +1,7 @@ <div class="talk-nav"> Back to the [[talks]] -Previous by time: <a href="/2025/talks/llm">Emacs, editors, and LLM driven workflows</a> -Next by time: <a href="/2025/talks/private-ai">Emacs and private AI: a great match</a> -Track: <span class="sched-track General">General</span> - <strong><a href="https://emacsconf.org/2025/watch/gen">Watch</a></strong> +Previous by track: <a href="/2025/talks/calc">Basic Calc functionality for engineering or electronics</a> +Next by track: <a href="/2025/talks/greader">GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence</a> +Track: <span class="sched-track General">General</span> </div> diff --git a/2025/info/bookclub-tapas-after.md b/2025/info/bookclub-tapas-after.md index c4b08e7c..0f66ac66 100644 --- a/2025/info/bookclub-tapas-after.md +++ b/2025/info/bookclub-tapas-after.md @@ -815,7 +815,712 @@ Captioner: sachac -Questions or comments? Please e-mail [hello@ElephantErgonomics.com](mailto:hello@ElephantErgonomics.com?subject=Comment%20for%20EmacsConf%202023%20bookclub-tapas%3A%20Bookclub%20tapas) +<div class="transcript transcript-qanda"><a name="bookclub-tapas-qanda-transcript"></a><h1>Q&A transcript (unedited)</h1> + +[[!template text="""All right, take it away. Okay, am I, are we live?""" start="00:00:00.000" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Yes, we're live. Oh man, holy moly.""" start="00:00:07.880" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Oh, that's surreal. Hi everyone. Oh man.""" start="00:00:12.760" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Ah, so excited to be here. So good to see all of you. Okay.""" start="00:00:19.360" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""So, should we just go ahead and get right into it?""" start="00:00:26.320" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Yeah, let me, let me see here. So I have.""" start="00:00:29.480" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Yeah, I see, I see some, I see some questions coming in.""" start="00:00:38.480" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Perfect. I am going to show my share my screen real quick.""" start="00:00:41.560" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""We have currently currently we have""" start="00:00:47.080" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""a sort of a dross thing going.""" start="00:00:54.400" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""And so I just wanted to, while we're waiting""" start="00:00:59.080" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""for some more stuff to come in,""" start="00:01:04.520" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I just wanted to sort of idle on this buffer here.""" start="00:01:05.560" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""If you increase your font size slightly,""" start="00:01:11.920" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""that might be even nicer.""" start="00:01:13.560" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Yes, absolutely, gladly. Whoa, okay. There we go.""" start="00:01:15.960" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""All right, the first question""" start="00:01:38.160" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""was looking for examples of files in book club style.""" start="00:01:41.560" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""The person says, that seems to be related""" start="00:01:45.840" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""to what I've been doing,""" start="00:01:48.800" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""but coming from different influences. Yes, yes.""" start="00:01:49.680" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""So I included a, included a,""" start="00:01:54.240" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Let me see, I'm just looking at the IRC here""" start="00:02:03.560" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""and smiling at all the people. So, yes, I provided a link.""" start="00:02:07.880" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""So I think that an excellent.""" start="00:02:16.720" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""So I have gone ahead and provided""" start="00:02:19.040" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""the get the link to the repo""" start="00:02:24.160" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""and I'm going to go ahead and post that again.""" start="00:02:26.960" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""So this should serve as a full example""" start="00:02:30.480" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""of what a just sort of standard book club file looks like.""" start="00:02:34.040" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""And if anyone has like specific questions""" start="00:02:39.520" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""about anything in particular,""" start="00:02:41.560" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""they would love to see my sort of like walkthrough""" start="00:02:42.840" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""and narrate like specifically, you know, any place in this file""" start="00:02:47.800" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""that they would like to see me sort of like go over live,""" start="00:02:52.240" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I would be super happy to do that.""" start="00:02:55.320" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""So I have the whole, you know, more or less complete""" start="00:02:58.720" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""book club file for Squint pulled up here.""" start="00:03:03.440" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Yeah, I have my vision laid out,""" start="00:03:10.800" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""which has my initial sort of goal.""" start="00:03:14.600" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""you know, the background and the vision sort of combined""" start="00:03:18.640" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""to lay out what my general sort of goal is.""" start="00:03:22.880" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I just realized, let me kill my stream there.""" start="00:03:28.560" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""There we go. All right. There's another question.""" start="00:03:31.320" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""The product of a tapa like squint.org""" start="00:03:39.080" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""would be pure gold for an agent like Cloud Code.""" start="00:03:41.440" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Have you experimented with providing an agent with a final output""" start="00:03:44.360" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""and letting it chew through to-dos?""" start="00:03:47.520" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""That would be a really excellent question.""" start="00:03:50.920" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I actually just kind of recently""" start="00:03:53.320" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""got into Clawed in particular.""" start="00:03:54.920" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I played quite a bit with GPT and""" start="00:03:58.160" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""and a lot of 8 billion parameter local models.""" start="00:04:01.680" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""And I was never super impressed.""" start="00:04:07.240" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""It always felt like I was just sort of wrangling""" start="00:04:09.880" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""to get it on the same page,""" start="00:04:13.000" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""whether as a result of sycophantism""" start="00:04:14.640" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""or really just not having enough parameters""" start="00:04:16.800" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""in order to understand the context of what's going on.""" start="00:04:19.400" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Cloud has completely changed my perception""" start="00:04:21.920" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""of what an LLM can do or not.""" start="00:04:25.760" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""It makes autonomy not seem like a total fever train.""" start="00:04:27.360" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I have definitely been curious about""" start="00:04:31.120" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""how an LLM would react to book club files.""" start="00:04:36.440" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I think that, yeah, especially like,""" start="00:04:39.640" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I've been daydreaming a little bit about,""" start="00:04:41.720" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""you know, having it generate scratch artifacts""" start="00:04:43.800" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""or suggesting, you know, changes to the format.""" start="00:04:49.920" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""It's like, yeah, the fact that""" start="00:04:54.800" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""this is all like, you know, like super,""" start="00:04:58.960" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""The goal and the hope for all of this""" start="00:05:01.960" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""is that we're being verbose about our thinking anyway.""" start="00:05:05.240" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""This is sort of how, by default,""" start="00:05:08.360" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""deep reasoning kind of works.""" start="00:05:12.200" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I actually think that I totally agree.""" start="00:05:14.160" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""It would be a great fit.""" start="00:05:15.800" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I have yet to personally do it,""" start="00:05:17.560" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""because I've always been just""" start="00:05:19.600" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""a little bit wary about, like, you know...""" start="00:05:21.280" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Well, if I'm writing a program,""" start="00:05:23.320" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I want to write it, you know?""" start="00:05:25.000" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""People often talk about, like, you know,""" start="00:05:26.880" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""oh, I just want to hand off""" start="00:05:29.240" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""the boring parts to Claude.""" start="00:05:31.920" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""But the thing is, if I'm writing an e-list,""" start="00:05:34.160" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I find the whole thing to be kind of fun.""" start="00:05:36.520" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""be super, um, it would be super interested in, you know,""" start="00:05:39.480" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""just sort of as a point of exercise,""" start="00:05:46.080" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""like seeing what it's capable of.""" start="00:05:48.160" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Because I think, I really do think""" start="00:05:49.480" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""that this would be kind of an ideal environment.""" start="00:05:51.480" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""It is kind of close to, you know,""" start="00:05:54.120" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""native-ish, how LLMs think.""" start="00:05:55.880" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""There's also, like, you know, of course,""" start="00:05:59.040" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""the, um, the privacy angle.""" start="00:06:01.400" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I don't necessarily want to provide""" start="00:06:03.480" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""a whole bunch of code verbatim that I intend to GPL3.""" start="00:06:05.120" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""But I believe that Claude kind of has a better policy""" start="00:06:09.320" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""in terms of what does and does not become training data.""" start="00:06:15.720" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I'll have to look into Claude in particular""" start="00:06:20.640" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""because I feel like that would be my target for it.""" start="00:06:22.440" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""But yeah, I think that's definitely onto something.""" start="00:06:24.600" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I've definitely thought about this.""" start="00:06:29.680" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I've definitely been really curious about this.""" start="00:06:31.440" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Next question, do you think every Tapa""" start="00:06:33.760" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""should have its own book club file as well?""" start="00:06:40.280" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Or would you rather keep just one book club file""" start="00:06:42.480" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""in the top of the project?""" start="00:06:45.560" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""So I think that I definitely would advise""" start="00:06:46.560" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""that each Tapa have its own book club file.""" start="00:06:51.560" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""The reason being is because I find that for me personally,""" start="00:06:54.880" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""the way that my brain kind of works""" start="00:06:59.480" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""is that out of sight, out of mind is very literal for me.""" start="00:07:00.800" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I find that I find that. What am I thinking of?""" start="00:07:06.240" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Sorry, I just saw that I got an email""" start="00:07:13.520" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""and I'm like, yeah, okay, cool.""" start="00:07:19.960" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Case in point, right? We are at case in point, you know,""" start="00:07:22.800" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""out of sight, out of mind. Yes, no, absolutely.""" start="00:07:27.320" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Yeah, no, exactly. I, um, I'm definitely quite ADHD""" start="00:07:30.520" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""and it works for my advantage""" start="00:07:35.800" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""because it provides all sorts of versatility.""" start="00:07:36.880" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""This is another great advantage of book club.""" start="00:07:38.960" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""If you have an ADHD mind like I do where, you know,""" start="00:07:42.440" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""You love jumping around and working on""" start="00:07:46.400" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""all sorts of different pieces simultaneously.""" start="00:07:48.320" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""You don't like sitting down""" start="00:07:51.520" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""and doing the same thing all day""" start="00:07:53.000" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""unless it really latches onto you.""" start="00:07:54.520" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""You know, you can pivot and you don't do anything.""" start="00:07:57.240" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""It really rewards the fact that you can pivot.""" start="00:07:59.760" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""So I find that to be really excellent.""" start="00:08:02.560" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""But to go back to the original a question,""" start="00:08:06.040" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I would definitely recommend,""" start="00:08:08.360" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""at least in my circumstance,""" start="00:08:11.520" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I find it to be incredibly useful""" start="00:08:13.760" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""to have each tapa be its own book club file""" start="00:08:15.680" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""rather than to have a unified file""" start="00:08:19.200" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""that holds all of your tapas. You can definitely do this,""" start="00:08:21.840" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""especially if you're using org""" start="00:08:26.600" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""to organize it hierarchically.""" start="00:08:28.960" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""It's just sort of a matter of preference""" start="00:08:31.280" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""and style at that point.""" start="00:08:33.760" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""So long as you're making a clear distinction between your tapas,""" start="00:08:34.720" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""that's the main thing""" start="00:08:39.320" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""that I would recommend no matter what,""" start="00:08:40.360" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""because the whole hope that I have is that""" start="00:08:42.400" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""you have a sort of separation of focus""" start="00:08:44.920" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""between the different you know,""" start="00:08:47.880" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""the different focuses of your different tapas,""" start="00:08:49.600" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""they really should ideally feel like different programs""" start="00:08:54.720" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""so that you're not, you know,""" start="00:08:57.960" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""getting over yourself, getting ahead of yourself.""" start="00:09:00.120" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I think that, you know, on that basis,""" start="00:09:02.080" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I would probably default to recommending""" start="00:09:05.080" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""that tapas have their own separate book club files,""" start="00:09:07.480" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""because ideally they should kind of be different""" start="00:09:12.920" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""sort of independent but related thoughts.""" start="00:09:15.680" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""But at the same time, I mean, like, you know,""" start="00:09:19.240" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""this is coming from someone""" start="00:09:21.720" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""who like has a billion small, like, you know,""" start="00:09:23.560" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I had one giant org file for a long time""" start="00:09:26.680" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""and then realized that really didn't work for me.""" start="00:09:28.680" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""So now I have a billion tiny ones.""" start="00:09:31.760" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""So depending upon how you feel about, you know,""" start="00:09:34.240" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""should I have one really big org file""" start="00:09:38.440" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""or a bunch of really little org files?""" start="00:09:40.760" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I feel like that more or less gives your answer.""" start="00:09:42.480" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I think it's whatever works best for you.""" start="00:09:44.640" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I know that far and away what works best for me""" start="00:09:48.360" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""is having separate files. No matter what, you should have""" start="00:09:51.440" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""separation of concept though.""" start="00:09:55.240" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""But however you do that is, you know,""" start="00:09:58.000" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""is best your judgment call.""" start="00:10:00.640" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Next question, how do you build habits""" start="00:10:01.920" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""when it comes to documentation?""" start="00:10:11.400" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I tend to produce lots of documentation in one go,""" start="00:10:13.120" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""then effectively forget to do it for long periods of time""" start="00:10:16.040" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""and end up playing catch up,""" start="00:10:19.320" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""which results in a loss of precision,""" start="00:10:20.600" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""as you alluded to in your talk.""" start="00:10:22.480" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""In a work setting, when something goes on fire""" start="00:10:24.320" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""or priorities change, it can be hard to keep discipline.""" start="00:10:26.520" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Would love your thoughts. Thanks. Yes, absolutely.""" start="00:10:28.920" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""So what I tend to do is I don't""" start="00:10:32.560" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""So really, so far, what I've been doing""" start="00:10:35.720" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""is that I haven't been making a conscious priority""" start="00:10:39.240" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""of writing documentation at all.""" start="00:10:42.160" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""And if that sounds contradictory""" start="00:10:45.360" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""to the talk, that is correct.""" start="00:10:48.040" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""What I mean by this is that I go about""" start="00:10:51.760" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""is that when I'm writing code,""" start="00:10:55.000" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""when I'm writing, you know, drafts of my functions,""" start="00:11:00.040" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""the way that I tend to approach this,""" start="00:11:03.960" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""the way that I really emphasize the approach for it,""" start="00:11:05.440" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""is that I want to focus first and foremost""" start="00:11:07.280" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""on sort of like just writing down""" start="00:11:13.000" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""what my internal monologue is""" start="00:11:15.560" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""for what I'm doing for that pass working on the file.""" start="00:11:17.520" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""So my document takes ultimate""" start="00:11:23.520" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Distance of dark is ultimately a property""" start="00:11:25.920" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""from the fact that I am writing""" start="00:11:29.520" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""what I'm doing as I'm doing it.""" start="00:11:32.360" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""And it's more or less just I'm just""" start="00:11:35.120" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""mashing out the stream of consciousness""" start="00:11:37.760" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""of what's going on inside my head as it's happening.""" start="00:11:39.760" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""So if we go down and we take a look at,""" start="00:11:43.360" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""yeah, so let's go ahead and take a look back at the macro.""" start="00:11:47.680" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Yeah, really, this is kind of cheating,""" start="00:11:53.320" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""because mostly I would consider this to be self-documenting,""" start="00:11:56.360" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""but we all kind of know that""" start="00:12:01.120" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""that in and of itself is a slippery slope.""" start="00:12:07.920" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""That's not great. Because it's like, I could believe""" start="00:12:11.760" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""that this would be self-documenting""" start="00:12:14.800" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""if this was a three-liner.""" start="00:12:17.720" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""It is not. which, you know, also goes to show me""" start="00:12:19.960" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""that this needs to be splitting into its own topos.""" start="00:12:24.720" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I intend to, you know, write a Tapa that's a sort of,""" start="00:12:27.760" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""that's a sort of like macro builder""" start="00:12:32.240" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""that automatically, you know, does the gensims for you.""" start="00:12:37.080" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Something along the lines of""" start="00:12:40.560" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""what's the common Lisp macro for that called?""" start="00:12:41.960" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""It's like, There's some common list faculty""" start="00:12:46.680" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""that does automatic Jensen binding.""" start="00:12:51.880" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I can't quite remember what it's called.""" start="00:12:53.920" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""A prior version of this talk had my live coding that,""" start="00:12:55.480" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""but that ended up sort of distracting""" start="00:13:01.560" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""from what I kind of wanted to nail out and focus on.""" start="00:13:04.320" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""But really kind of what I do is that,""" start="00:13:07.400" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""let me see here if I can find some sort of,""" start="00:13:12.280" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Yeah, so I have in my research section""" start="00:13:19.160" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""sort of layout like what the quirks of all this sort of are.""" start="00:13:26.160" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I think my development focuses contain""" start="00:13:36.040" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""a little bit of what could be ultimately""" start="00:13:39.840" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""considered to be documentation.""" start="00:13:41.480" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Yeah, as I'm looking through all of this,""" start="00:13:42.960" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I'm kind of realizing that like,""" start="00:13:47.000" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""you know, yeah, there's stuff""" start="00:13:48.280" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""that I'm into documentation here,""" start="00:13:49.320" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""but it's all a little ad hoc.""" start="00:13:51.320" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""You know, I would, in part,""" start="00:13:53.120" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""the design of this particular tapa""" start="00:13:55.720" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""is arguably not currently,""" start="00:13:57.320" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""but is going to be simple enough such that""" start="00:13:59.640" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""a doc string is sufficient for documentation.""" start="00:14:02.320" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""That is not the case currently.""" start="00:14:04.680" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""All right, next question is,""" start="00:14:07.000" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""how do you write examples and tests?""" start="00:14:12.280" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I think that you mentioned that during the talk,""" start="00:14:18.560" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""but I couldn't find them on a very quick look""" start="00:14:24.680" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""at your org file in the Squint repo.""" start="00:14:27.360" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""My use of the word test was a little bit creative.""" start="00:14:35.240" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""It's my validation of the code that I've written.""" start="00:14:40.520" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I more or less tend to do a,""" start="00:14:42.760" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I tend to try and write really small functions""" start="00:14:45.480" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""and have really aggressive validation""" start="00:14:50.080" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""by just making sure that, like, you know,""" start="00:14:52.040" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""when I chain functions in the REPL,""" start="00:14:55.800" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""each step of them produces results""" start="00:14:59.920" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""that are really quite immediately and self-verifiably seen.""" start="00:15:03.200" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Now, this isn't a great excuse to not use a test suite,""" start="00:15:07.800" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""but it's gotten me pretty far.""" start="00:15:11.720" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""What I mean by tests is that in the research sections,""" start="00:15:12.880" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""what I've done is, so I've created a sort of tested""" start="00:15:19.200" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""in the sense that I have created""" start="00:15:26.280" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""a really highly representative case""" start="00:15:29.400" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""of the way that the program ultimately ought to behave.""" start="00:15:33.760" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""In doing so, I created a sort of embedded domain language""" start="00:15:38.280" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""that I have termed animal houses.""" start="00:15:43.400" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""And Animal Houses is a sort of markup language""" start="00:15:46.360" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""that has rather simple rules.""" start="00:15:51.000" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""This here is the entirety of the spec for Animal Houses.""" start="00:15:54.880" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Grammar or anything, but like, it is more or less.""" start="00:16:00.880" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Breadth of everything that needs to be known""" start="00:16:06.560" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""about how animal houses works.""" start="00:16:08.840" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""And I've created animal houses because it is an ideal""" start="00:16:10.520" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""and incredibly simple circumstance.""" start="00:16:14.280" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""For how to go about as needed tests.""" start="00:16:18.480" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""For how squint ultimately ought to work in practice.""" start="00:16:22.680" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""So when I'm doing research,""" start="00:16:28.120" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""what I do is I take the text of animal houses,""" start="00:16:30.240" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""and I will go ahead and insert it into a buffer.""" start="00:16:34.760" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""And I'll just create an analog buffer.""" start="00:16:39.880" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I just called it a woo.""" start="00:16:46.600" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""And then what I'll do is in my research sections, I will write""" start="00:16:48.640" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Like I'll write like step-by-step""" start="00:16:55.960" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""like instructions on how to go about with a REPL-driven detection""" start="00:17:01.200" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""using animal houses. So it does squint pass label""" start="00:17:07.920" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""to width restriction correctly.""" start="00:17:15.120" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""The tests conducted here indicate that it does not.""" start="00:17:16.800" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""And then I link to a development focus.""" start="00:17:20.480" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""that um effectively acts as my bug report""" start="00:17:25.840" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""or sorry my uh you know my bug for um""" start="00:17:29.960" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""my bug listing for this particular problem""" start="00:17:34.000" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""that I've identified""" start="00:17:37.600" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I lay out some criteria of how to""" start="00:17:38.480" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""go about using the REPL to um""" start="00:17:41.440" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""you know I identify what I believe""" start="00:17:44.960" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""is sort of like the quarantined area""" start="00:17:47.080" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""that I found for the bug""" start="00:17:49.480" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""and then test is that I will go about""" start="00:17:50.640" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""engaging with narration""" start="00:17:56.800" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""the step-by-step of how I produce""" start="00:17:59.280" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""the circumstances around the bug""" start="00:18:03.480" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""until I ultimately narrow all the way in""" start="00:18:07.040" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""and arrive at a conclusion.""" start="00:18:10.560" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Something's going on with the screen share.""" start="00:18:14.200" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I can see your screen but""" start="00:18:16.880" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""the server cannot see your screen updating.""" start="00:18:18.800" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Sorry. Oh, no. Maybe you stop switching.""" start="00:18:23.240" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Yeah, and then we just redo it again. Thank you.""" start="00:18:28.440" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Yes, absolutely.""" start="00:18:33.400" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Thanks to someone who noticed the buffer time,""" start="00:18:36.040" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""the time in the load line was not updating.""" start="00:18:39.040" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Okay, let's try that again. Now it's updating. Gotcha.""" start="00:18:42.920" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I hope that wasn't going on for too, too long.""" start="00:18:50.080" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Hopefully what I was saying""" start="00:18:55.000" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""wasn't completely indecipherable. Let me see here.""" start="00:18:57.280" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Yeah, this is the sample text for animal houses.""" start="00:19:02.560" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""This is the spec, not a formal grammar,""" start="00:19:06.960" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""but it is more or less the whole of the spec""" start="00:19:10.840" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""that you need to write a parser for animal houses.""" start="00:19:12.720" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Most of the tests around Squint involve""" start="00:19:16.400" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""writing sort of ad hoc parsers for animal houses.""" start="00:19:19.360" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Just when I have it in its own buffer, you know,""" start="00:19:24.000" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I find more or less it's an excellent way""" start="00:19:27.200" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""of going about testing""" start="00:19:29.720" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""in an ad hoc sort of REPL driven manner.""" start="00:19:31.200" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""that I just sort of write regular""" start="00:19:36.360" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""that pull out the pieces of the sections of buffer""" start="00:19:39.880" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""that represent the different fields and data types""" start="00:19:43.800" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""in association with the animals""" start="00:19:49.440" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""and the houses to which they belong.""" start="00:19:51.600" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""And then when I am engaging in research,""" start="00:19:54.880" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Um, you know, what, what my research section is,""" start="00:20:00.320" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""is I'm ultimately just sort of like""" start="00:20:03.560" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""laying out, like, you know,""" start="00:20:05.080" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I'm sort of thinking to myself, is this working right?""" start="00:20:06.400" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I feel like, like, I feel like""" start="00:20:10.240" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""there's something here, something in this area.""" start="00:20:11.320" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""And I'll, you know, ask myself, well,""" start="00:20:14.640" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""kind of like, what is it, you know, what am I looking for?""" start="00:20:16.920" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""And then nail down, how am I going""" start="00:20:20.200" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""to go about looking for it?""" start="00:20:22.520" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""The process of working with the REPL""" start="00:20:24.440" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""to sort of pin down like what exactly is going on""" start="00:20:30.560" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""and come to a conclusion""" start="00:20:34.320" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""on completely jumping out of order.""" start="00:20:36.120" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Have you experimented in like whisper.el""" start="00:20:44.520" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""for doing speech to text""" start="00:20:47.800" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""as you think out loud into your book club?""" start="00:20:49.760" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Now I am. I love that idea. That is awesome.""" start="00:20:52.000" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Yeah, no, I love that.""" start="00:20:56.800" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Even with, I only have a CPU, no GPU on mine,""" start="00:21:00.040" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""it does capture things a lot faster.""" start="00:21:04.840" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""And because it actually saves the recording to a WAV,""" start="00:21:08.040" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""or I guess you can configure it,""" start="00:21:12.200" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""in case it doesn't recognize something well,""" start="00:21:14.240" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""you can go back and check it. That's nice.""" start="00:21:16.960" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I like that more than a straight speech-text thing.""" start="00:21:20.800" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I've been mulling over the idea""" start="00:21:24.320" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""of having a keystroke save into a background buffer""" start="00:21:27.440" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""so that even when I'm looking at something else,""" start="00:21:30.960" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I can dictate into my equivalent of the book club file.""" start="00:21:33.400" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Yes, yes, yes, absolutely.""" start="00:21:37.920" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""So you can be scrolling through documentation on, like,""" start="00:21:41.760" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""you can be scrolling through documentation on one screen""" start="00:21:44.720" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""and you can be musing to yourself about,""" start="00:21:48.080" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""like, you know, is this supposed to work this way?""" start="00:21:49.800" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Like, you know, like, what in terms of, like,""" start="00:21:52.480" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""you know, like, I see this function.""" start="00:21:57.320" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""It sounds like it's what I'm looking for.""" start="00:21:59.800" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I don't know if the types are quite right.""" start="00:22:01.280" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I don't understand. It's named what I'm looking for,""" start="00:22:03.400" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""but I don't know what it's taking in.""" start="00:22:05.680" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""You can reason through all of this.""" start="00:22:07.320" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""You're not even writing into the buffer""" start="00:22:09.440" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""that you're working with. That's actually so cool.""" start="00:22:10.600" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Or you can type into the org capture process""" start="00:22:14.120" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""so that it can pick up an annotation automatically.""" start="00:22:17.280" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Sorry, annotation is the link to the thing,""" start="00:22:21.040" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""whatever you're looking at.""" start="00:22:24.720" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Oh, that's super cool. Yes. No, I actually really love it.""" start="00:22:26.160" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I haven't, you know, hooking this all up to Org Capture at all.""" start="00:22:33.000" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I actually really love that idea in of itself. Yeah.""" start="00:22:36.120" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Or a capture will give you a lot of capture options.""" start="00:22:58.640" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Like you can capture to your currently""" start="00:23:01.120" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""clocked in, uh, heading. So then it just files your note""" start="00:23:03.160" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""in the right place automatically.""" start="00:23:11.040" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Absolutely. I love that. Let me see.""" start="00:23:12.920" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I'm actually like writing a note to try that out.""" start="00:23:19.200" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I'm definitely going to have to do that.""" start="00:23:22.280" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Like the flexibility of that in particular sounds just perfect.""" start="00:23:25.160" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I'd like to finish typing noises""" start="00:23:36.040" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""and then we can ask the next question""" start="00:23:38.240" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""for which there is one.""" start="00:23:39.680" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""The question is, what is the largest project""" start="00:23:41.240" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""in terms of team size you had the chance to consult""" start="00:23:45.840" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""and introduce the book club tapas concept?""" start="00:23:48.480" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""And what has been your experiences with these setups,""" start="00:23:51.080" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""implying larger applications or solutions""" start="00:23:53.200" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""that company is working on?""" start="00:23:56.280" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""So yeah, probably the largest application.""" start="00:23:57.320" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""So I have, It's been interesting.""" start="00:24:01.960" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""So in regards to this, the largest,""" start="00:24:05.880" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I would say two people""" start="00:24:08.880" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""in a couple of different circumstance.""" start="00:24:10.120" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""So it's the pair of us working in a startup context.""" start="00:24:12.720" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""And then, you know, we both have""" start="00:24:20.080" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""like rather technical backgrounds.""" start="00:24:24.440" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""We can both more or less, you know,""" start="00:24:25.800" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""You know, sort of reason about particularly excite,""" start="00:24:27.480" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""especially as we've been building up top us is that,""" start="00:24:33.640" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""you know, well, we're both rather technical.""" start="00:24:37.200" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""You know, I'm definitely software engineering sort of end.""" start="00:24:39.560" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""And, you know, this partner is more.""" start="00:24:42.680" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I mean, he's done all sorts of different engineering,""" start="00:24:47.360" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""but none of it in a, like, especially software context.""" start="00:24:51.000" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""So like, you know, but what's been""" start="00:24:54.040" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""really cool about that is that""" start="00:24:56.560" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""especially as we've built up top us""" start="00:24:58.120" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""and made clear distinctions""" start="00:24:59.600" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""about what they ought to do, you know,""" start="00:25:00.800" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""he doesn't have a ton of like really,""" start="00:25:02.880" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""he doesn't like experience like""" start="00:25:04.600" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""specifically in software engineering,""" start="00:25:10.840" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""but because we have it all laid out""" start="00:25:12.480" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""in this really flexible way,""" start="00:25:15.560" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""he's able to pick up the ball and like,""" start="00:25:17.400" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""you know, like he's able to""" start="00:25:20.200" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""take the ball and run with it.""" start="00:25:21.880" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""because it's all laid out""" start="00:25:23.120" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""in a way that's so intuitive.""" start="00:25:25.280" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Like, you know, he's able to like""" start="00:25:26.560" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""collaborate with me and like,""" start="00:25:28.720" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""you know, like, you know, run off these ideas""" start="00:25:31.200" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""and like really go for it.""" start="00:25:33.280" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Like, you know, almost as quickly as I can,""" start="00:25:34.920" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""just because we've set up a structure""" start="00:25:37.400" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""where like all of the different pieces""" start="00:25:39.320" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""have these really intuitive""" start="00:25:42.160" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""and intrinsic and straightforward roles.""" start="00:25:43.720" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""And that's, that's something""" start="00:25:46.400" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""that's really exciting in of itself""" start="00:25:47.840" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""that I didn't really go over in the talk.""" start="00:25:49.045" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Like a managerial perspective,""" start="00:25:50.670" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""this is actually a really excellent way""" start="00:25:54.360" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""of understanding the whole context""" start="00:25:56.920" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""of like what the software stack looks like.""" start="00:26:01.200" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Because it's like, you know,""" start="00:26:04.800" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""it makes it more intuitive for developers for sure,""" start="00:26:06.440" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""but it makes it more intuitive for everyone.""" start="00:26:09.120" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""You know, it's on that basis""" start="00:26:10.720" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""that I can't imagine clients""" start="00:26:12.760" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""like just a better way at this point.""" start="00:26:14.840" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Um, that was that was the other circumstance""" start="00:26:18.240" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""where I have been working with a partner.""" start="00:26:22.240" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""This has been with, um, you know, I would be, uh.""" start="00:26:25.240" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""You know, sort of going back and forth""" start="00:26:29.400" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""with someone who had hired me.""" start="00:26:31.920" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Um, to, uh, like, you know, to work on contract.""" start="00:26:34.200" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""And I would use this to sort of go""" start="00:26:40.160" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""over with them about, um.""" start="00:26:42.840" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Sort of get a solid idea of scope and function,""" start="00:26:45.200" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""do pre-planning as we're going into more specifics""" start="00:26:51.240" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""on what the overall look for the project""" start="00:26:57.200" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""and how it ought to look""" start="00:27:01.360" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""and how it all ought to be laid out.""" start="00:27:03.480" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""So there's a lot of really exciting flexibility there""" start="00:27:05.680" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""that I think is really cool.""" start="00:27:11.520" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""People will, of course, be curious""" start="00:27:13.200" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""about the mechanics of that collaboration.""" start="00:27:23.680" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Did you get other people using Emacs in org?""" start="00:27:25.920" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Were you using version control? Did you try out CRDT?""" start="00:27:28.720" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""How did it work?""" start="00:27:32.360" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""So all of this so far has been over screen share,""" start="00:27:33.240" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""where I would be stepping through the buffer by hand.""" start="00:27:39.640" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I would love to set up some sort of an environment""" start="00:27:43.680" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""where I could get you know, clients and partners,""" start="00:27:47.840" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""like, you know, really excited""" start="00:27:52.360" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""about using Emacs on org.""" start="00:27:53.360" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""But, you know, it's, it can be a little bit to ask,""" start="00:27:54.800" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I would love to see if I can, like,""" start="00:27:58.560" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""put together some sort of a config that,""" start="00:28:00.120" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""like, sands off all of this and, you know,""" start="00:28:01.880" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""makes this this really, you know, you know,""" start="00:28:04.520" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""like safety-proof sort of intuitive environment""" start="00:28:08.080" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""just for CRDT in particular.""" start="00:28:13.760" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I love the idea of like, you know,""" start="00:28:16.600" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""sort of like spawning CRDT""" start="00:28:18.880" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""so that like, you know, the two of us can,""" start="00:28:21.480" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""you know, type SPAC and ideas""" start="00:28:24.160" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""and sort of like draft together on, you know,""" start="00:28:27.560" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""especially like the glue code tapa""" start="00:28:31.240" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""for a larger software stack.""" start="00:28:33.560" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""like collaborating on that over CRDT""" start="00:28:35.640" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""or having folks step through Tapas and,""" start="00:28:38.400" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""you know, unfold them and like, you know,""" start="00:28:43.400" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""point to a particular thing.""" start="00:28:45.600" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""And it's like, you know, like, what's, what's this?""" start="00:28:46.720" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""What's the clock here?""" start="00:28:49.160" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""It looks like we're spending a lot of time""" start="00:28:50.120" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""and I would like to get a little bit clearer""" start="00:28:52.240" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""of an idea of like what exactly we're doing here.""" start="00:28:54.520" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""back up a little bit because the stream just disconnected""" start="00:28:56.320" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""and reconnected from the audio.""" start="00:29:01.320" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""So, please repeat just the last sentence.""" start="00:29:02.760" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Yeah, yeah, for sure. Yeah, so I would like, you know,""" start="00:29:06.600" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I love the idea of, yeah, like, you know, collaborating on,""" start="00:29:11.960" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""especially like on the glue code.""" start="00:29:18.240" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""tapa for a particular software stack, you know,""" start="00:29:20.520" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""having the both of us use CRDT""" start="00:29:23.840" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""to type into it simultaneously,""" start="00:29:26.160" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I think that would be super cool.""" start="00:29:27.720" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I also really love the idea of, you know,""" start="00:29:30.160" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""having a client or partner, you know,""" start="00:29:33.680" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""thumb through individual tapas in the stack.""" start="00:29:38.160" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""And then like, you know, like, look at and be like,""" start="00:29:41.480" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""well, we seem to have time on this recently,""" start="00:29:45.640" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""can you give me like, some clarification on like,""" start="00:29:47.880" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""you know, what, what this part is and how it's, you know,""" start="00:29:51.760" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""what it means for the whole""" start="00:29:55.520" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""and sort of like what, you know, what it represents""" start="00:29:57.560" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""in terms of how all of this is going to come together.""" start="00:30:00.800" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I think that would be super cool. I love the idea of that.""" start="00:30:02.600" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I would even consider like, you know, if not Emacs proper,""" start="00:30:06.440" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I would love like, you know, maybe a, a web-based org parser.""" start="00:30:11.680" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""for, you know, even on just a read-only version""" start="00:30:17.120" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""of the document where, you know, clients and partners, yeah,""" start="00:30:21.400" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""just sort of thumb through with it""" start="00:30:25.400" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""and then chat with questions.""" start="00:30:26.880" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Make the, you know, screen sharing for, you know,""" start="00:30:28.200" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""peer programming process""" start="00:30:34.160" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""just a little bit cleaner, you know, more intuitive on their end.""" start="00:30:36.520" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I think that'd be super cool. I love these ideas.""" start="00:30:41.600" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""All right, theoretically, the big blue button is open.""" start="00:30:50.400" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I think we've gotten to the end""" start="00:30:55.003" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""of the questions on the etherpad.""" start="00:30:57.003" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""If anyone else would like to join or ask,""" start="00:31:00.295" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I'm gonna need a couple of minutes""" start="00:31:03.086" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""and then I can do closing remarks""" start="00:31:04.841" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""whenever people are ready.""" start="00:31:06.360" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""So I will meet now when people figure things out.""" start="00:31:08.000" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I would also be super down if, you know,""" start="00:31:14.480" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""anyone was curious about hearing more""" start="00:31:22.040" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""about some of the projects""" start="00:31:25.320" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""that I was kind of rambling""" start="00:31:29.000" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""at the close of the talk,""" start="00:31:30.800" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""if people wanted to, you know,""" start="00:31:34.680" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""hear more about, um, some of my ideas""" start="00:31:36.480" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""in regards to, um, uh,""" start="00:31:39.360" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""what am I thinking at home with the, uh,""" start="00:31:42.800" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""What's it called?""" start="00:31:45.720" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Yeah, yeah, just sort of the, you know,""" start="00:31:49.760" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""some of the funding for passion projects,""" start="00:31:53.480" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I would be interested in laying out some of the ideas""" start="00:31:55.440" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""about how that could work mechanically.""" start="00:31:58.320" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""And I think that that would be, you know,""" start="00:31:59.960" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""really cool for the whole ecosystem,""" start="00:32:02.560" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""because I think that there are definitely,""" start="00:32:04.720" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""you know, things that we could bang out, you know,""" start="00:32:06.720" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""for getting kind of all sorts of people on that model.""" start="00:32:09.640" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I think that it would be really cool""" start="00:32:12.920" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""to to having a, you know, funding model""" start="00:32:14.520" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""for things that are really worth using.""" start="00:32:18.400" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""um and developing um the other thing is like""" start="00:32:20.240" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""you know just sort of um yeah""" start="00:32:26.520" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""just rattling off specifics on things""" start="00:32:28.200" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""that people could potentially vote for uh on that""" start="00:32:31.560" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""and in terms of specific might want to work on""" start="00:32:34.961" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""All right, there's a question from IRC.""" start="00:32:53.760" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Sorry, I just got that. Did you address that one already?""" start="00:32:56.878" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Let's see. Where is it?""" start="00:33:01.881" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I will copy it from IRC. Thank you.""" start="00:33:07.128" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Gotcha. Into the past.""" start="00:33:12.360" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Perfect, perfect, perfect.""" start="00:33:14.320" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Let me read the question out loud so it's in the recording.""" start="00:33:27.760" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I guess a major pro is it has less friction""" start="00:33:30.680" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""as people can do a lot,""" start="00:33:33.720" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""maybe not everything in book lab tapas files""" start="00:33:35.760" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""versus having to log into gazillions of different systems,""" start="00:33:39.040" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""each one of them keeping a portion of the information.""" start="00:33:42.640" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Did I get that viewing point right""" start="00:33:45.200" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""from your elaboration of the collaboration""" start="00:33:47.360" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""between you and your teammates?""" start="00:33:49.480" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Yes. No, that's absolutely right.""" start="00:33:52.160" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""um because yeah like really""" start="00:33:55.440" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""my hope is that we can you know""" start="00:33:58.000" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""there's there's a lot of conflict into that""" start="00:34:00.520" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""we assume that a lot of um pieces of tooling""" start="00:34:03.240" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""and the separation between them""" start="00:34:13.360" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""is really sort of a necessary evil""" start="00:34:14.560" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""i think that you know having a system""" start="00:34:16.440" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""where really the complexity""" start="00:34:19.240" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""of engaging in all of the information""" start="00:34:21.520" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""relevant to the program.""" start="00:34:25.720" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""If it's in a format""" start="00:34:29.120" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""where you can just email it back and forth,""" start="00:34:30.320" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""break off pieces of it,""" start="00:34:31.800" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""work with those individually,""" start="00:34:33.200" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I think that that's something""" start="00:34:35.120" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""that's incredibly rewarding.""" start="00:34:38.760" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Something that just dawned on me""" start="00:34:40.280" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""that I wanted to mention""" start="00:34:42.640" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""that I've been daydreaming about""" start="00:34:44.440" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""is that in a circumstance""" start="00:34:46.960" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""where you have multiple developers,""" start="00:34:49.400" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""like, you know, across a larger team,""" start="00:34:52.080" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""working on a book club tapas driven project,""" start="00:34:53.880" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""what you can do is have, you know,""" start="00:34:57.360" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""a clear, you can lay out your goal,""" start="00:35:02.560" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""and then start splitting it to tapas from that point,""" start="00:35:04.560" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""and then assign each teammate their own tapa,""" start="00:35:08.440" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""which becomes their baby.""" start="00:35:11.840" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""And I really love the idea""" start="00:35:13.280" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""of people being able to, you know,""" start="00:35:15.640" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""have an idea of an interface""" start="00:35:17.480" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""about how all of these are""" start="00:35:20.320" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""ultimately come back together,""" start="00:35:21.600" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""but people have their own like agency""" start="00:35:22.720" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""over their own code base,""" start="00:35:26.640" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""despite the fact that they're""" start="00:35:27.920" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""working in collaboration.""" start="00:35:29.120" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I think that it can be incredibly motivating""" start="00:35:30.480" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""for a team to, you know, have each person""" start="00:35:32.720" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""in charge of their own project,""" start="00:35:36.080" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""but of course it's all ultimately""" start="00:35:38.040" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""going to the same code base.""" start="00:35:39.840" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""So, you know, I think that,""" start="00:35:41.320" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""that a pursuit of beauty""" start="00:35:43.200" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""is this really solid motivator""" start="00:35:45.480" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""in terms of how people perceive""" start="00:35:48.520" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""the merits of their efforts""" start="00:35:50.840" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""and how that lights a fire under them""" start="00:35:53.960" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""to continue and keep going and dig deep""" start="00:35:56.480" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""when things get frustrating.""" start="00:35:59.000" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""When you have a personal stake""" start="00:36:00.560" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""in your project,""" start="00:36:02.800" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I think that that's a really excellent time""" start="00:36:03.400" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""to really push and move forward on it.""" start="00:36:06.480" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""And people having ownership""" start="00:36:08.600" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""over this idea of their specific tapa""" start="00:36:10.560" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""could be a really cool way to do that""" start="00:36:12.720" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""in a team setting.""" start="00:36:15.000" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""But I pivoted off a little bit.""" start="00:36:15.760" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""So yes, but I absolutely did that.""" start="00:36:20.000" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""You know, that having a simplistic format""" start="00:36:24.560" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""for your information""" start="00:36:28.600" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""is a really solid way to have""" start="00:36:30.000" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""collaboration be frictionless.""" start="00:36:33.320" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""You have one source of information""" start="00:36:36.320" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""and you don't have to drown in your tooling.""" start="00:36:38.720" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""All right, I think you've addressed""" start="00:36:40.800" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""all the questions on the etherpad.""" start="00:36:51.840" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""And as you said, people can email you,""" start="00:36:54.920" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""even though the website looks like""" start="00:36:56.800" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""it's still not quite there yet,""" start="00:36:58.440" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""people can email you or ask questions""" start="00:37:00.480" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""to the etherpad afterwards.""" start="00:37:03.720" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Is there anything else that""" start="00:37:05.040" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""you'd like to share or shall I wrap up,""" start="00:37:07.440" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""introduce myself doing the closing remarks""" start="00:37:11.040" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""and then try to do the closing remarks?""" start="00:37:13.280" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Yes, so I have two last thoughts.""" start="00:37:16.960" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Yes, no, I did just want to confirm""" start="00:37:18.840" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""that my email is completely working.""" start="00:37:21.440" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""If you want to keep up to date""" start="00:37:24.320" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""with the stuff that I'm working on,""" start="00:37:27.200" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""please shoot and I will, you know, at your request,""" start="00:37:29.400" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I will add you to a mailing list.""" start="00:37:35.240" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""which will have intermittent updates.""" start="00:37:38.120" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I'm not going to send you spam,""" start="00:37:40.480" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""but it will have updates for what I'm working on,""" start="00:37:42.920" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""what this all looks like,""" start="00:37:47.280" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""and just context for the different things""" start="00:37:48.600" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""that I'm working on.""" start="00:37:52.360" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""My website will be going up soon enough.""" start="00:37:53.120" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I just got a little distracted because I'm like,""" start="00:37:57.000" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""oh, I'm just gonna spin up a Gux server""" start="00:38:01.120" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""and I'm gonna make it super cool""" start="00:38:05.240" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""when really I just need just""" start="00:38:07.000" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Debian and Apache real quick, just something.""" start="00:38:09.120" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""So the website will be going up. It's just not up yet.""" start="00:38:12.440" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""And the very last thing is that""" start="00:38:16.680" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I would really like to thank everyone""" start="00:38:19.960" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""that helped me to get here. I would like to thank you know,""" start="00:38:22.960" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""all of my, you know, I would like to thank my fiance.""" start="00:38:27.200" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I would like to thank all of my friends.""" start="00:38:32.320" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I would like to thank my, you know,""" start="00:38:34.520" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""my mentor and business partner, Sharon.""" start="00:38:39.360" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I would like to thank Tracy, my therapist.""" start="00:38:42.120" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I would like to thank my parents.""" start="00:38:45.120" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I invited people to come watch this thing,""" start="00:38:48.280" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""and I would like to thank all of them.""" start="00:38:53.280" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I would like to thank everyone""" start="00:38:55.280" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""who was planning on coming to this event anyway.""" start="00:38:57.920" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""The Emacs community is incredible, incredibly encouraging,""" start="00:39:02.440" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""incredibly kind, incredibly smart and talented.""" start="00:39:06.360" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""Y'all make Emacs what it is, and it is so cool.""" start="00:39:09.400" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I would like to thank you, Satya.""" start="00:39:13.720" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""I would like to thank all of the organizers""" start="00:39:15.920" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""that made this possible.""" start="00:39:19.560" video="qanda-bookclub-tapas" id="subtitle"]] +[[!template text="""This thing is the coolest and it was, this was so cool.""" start="00:39:20.880" video="qanda-bookclub-tapas" id="subtitle"]] + +</div>Questions or comments? Please e-mail [hello@ElephantErgonomics.com](mailto:hello@ElephantErgonomics.com?subject=Comment%20for%20EmacsConf%202023%20bookclub-tapas%3A%20Bookclub%20tapas) <!-- End of emacsconf-publish-after-page --> diff --git a/2025/info/bookclub-tapas-before.md b/2025/info/bookclub-tapas-before.md index c58ce85f..9a2f6c00 100644 --- a/2025/info/bookclub-tapas-before.md +++ b/2025/info/bookclub-tapas-before.md @@ -1,21 +1,17 @@ <!-- Automatically generated by emacsconf-publish-before-page --> - -The following image shows where the talk is in the schedule for Sun 2025-12-07. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="bookclub-tapas"> -<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2025/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:10 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2025/talks/modern" title="Some problems of modernizing Emacs" data-slug="modern"> <title> 9:10- 9:30 Some problems of modernizing Emacs</title> <rect x="13" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(38,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> modern</text></g></a> <a href="/2025/talks/reader" title="An introduction to the Emacs Reader" data-slug="reader"> <title> 9:40-10:15 An introduction to the Emacs Reader</title> <rect x="54" y="15" opacity="0.5" width="48" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(100,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> reader</text></g></a> <a href="/2025/talks/weights" title="Weightlifting tracking with Emacs on Android" data-slug="weights"> <title> 10:35-10:45 Weightlifting tracking with Emacs on Android</title> <rect x="130" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(141,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> weights</text></g></a> <a href="/2025/talks/completion" title="corfu+yasnippet: Easier than I thought" data-slug="completion"> <title> 11:05-11:25 corfu+yasnippet: Easier than I thought</title> <rect x="171" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(196,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> completion</text></g></a> <a href="/2025/talks/zettelkasten" title="Zettelkasten for regular Emacs hackers" data-slug="zettelkasten"> <title> 1:00- 1:25 Zettelkasten for regular Emacs hackers</title> <rect x="329" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(361,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> zettelkasten</text></g></a> <a href="/2025/talks/hyperboleqa" title="Questions and answers to help you fly with Hyperbole" data-slug="hyperboleqa"> <title> 1:45- 2:15 Questions and answers to help you fly with Hyperbole</title> <rect x="391" y="15" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(430,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperboleqa</text></g></a> <a href="/2025/talks/gardening" title="Gardening in Emacs: A Windows user's tale of tending, tweaking, and triumph" data-slug="gardening"> <title> 2:15- 2:35 Gardening in Emacs: A Windows user's tale of tending, tweaking, and triumph</title> <rect x="432" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(457,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gardening</text></g></a> <a href="/2025/talks/bookclub-tapas" title="Bookclub tapas" data-slug="bookclub-tapas"> <title> 2:45- 3:20 Bookclub tapas</title> <rect stroke-width="3" x="473" y="15" opacity="0.8" width="48" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(519,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> bookclub-tapas</text></g></a> <a href="/2025/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 3:40- 3:50 Sunday closing remarks</title> <rect x="549" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(560,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <g transform="translate(0,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 5 PM</text></g></svg> -</div> - [[!toc ]] -Format: 32-min talk ; Q&A: BigBlueButton conference room <https://media.emacsconf.org/2025/current/bbb-bookclub-tapas.html> Etherpad: <https://pad.emacsconf.org/2025-bookclub-tapas> +Format: 32-min talk ; Q&A: BigBlueButton conference room Etherpad: <https://pad.emacsconf.org/2025-bookclub-tapas> Etherpad: <https://pad.emacsconf.org/2025-bookclub-tapas> -Discuss on IRC: [#emacsconf-gen](https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen) -Status: Q&A open for participation -<div>Times in different time zones:</div><div class="times" start="2025-12-07T19:45:00Z" end="2025-12-07T20:20:00Z"><div class="conf-time">Sunday, Dec 7 2025, ~2:45 PM - 3:20 PM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Sunday, Dec 7 2025, ~1:45 PM - 2:20 PM CST (US/Central)<br />Sunday, Dec 7 2025, ~12:45 PM - 1:20 PM MST (US/Mountain)<br />Sunday, Dec 7 2025, ~11:45 AM - 12:20 PM PST (US/Pacific)<br />Sunday, Dec 7 2025, ~7:45 PM - 8:20 PM UTC <br />Sunday, Dec 7 2025, ~8:45 PM - 9:20 PM CET (Europe/Paris)<br />Sunday, Dec 7 2025, ~9:45 PM - 10:20 PM EET (Europe/Athens)<br />Monday, Dec 8 2025, ~1:15 AM - 1:50 AM IST (Asia/Kolkata)<br />Monday, Dec 8 2025, ~3:45 AM - 4:20 AM +08 (Asia/Singapore)<br />Monday, Dec 8 2025, ~4:45 AM - 5:20 AM JST (Asia/Tokyo)</div></div><div><strong><a href="/2025/watch/gen/">Find out how to watch and participate</a></strong></div> +Status: TO_REVIEW_QA + +# Talk + <div class="vid mainVideo"><video controls preload="none" id="mainVideo-bookclub-tapas"><source src="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2025/captions/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--main--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="mainVideo-bookclub-tapas" data=""" -00:00:00.620 Introduction +00:00.620 Introduction 00:29.680 Hi, I'm Maddie! 01:03.840 Bookclub Tapas 02:00.520 Bookclub @@ -38,6 +34,10 @@ Status: Q&A open for participation 28:36.100 What else does Bookclub Tapas do? 29:08.160 Let's work together -"""]]<div></div>Duration: 31:25 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-bookclub-tapas">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/current/bbb-bookclub-tapas.html">Open public Q&A</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--main.opus">Download --main.opus (27MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--main.webm">Download --main.webm (74MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--script.org">Download --script.org</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--split.txt">Download --split.txt</a></li><li><a href="https://youtu.be/GAOZzrm6ecA">View on Youtube</a></li></ul></div></div> +"""]]<div></div>Duration: 31:25 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-bookclub-tapas">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--main.opus">Download --main.opus (27MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--main.webm">Download --main.webm (74MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--script.org">Download --script.org</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--split.txt">Download --split.txt</a></li><li><a href="https://youtu.be/GAOZzrm6ecA">View on Youtube</a></li></ul></div></div> + +# Q&A + +<div class="vid qanda"><div></div><div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-bookclub-tapas">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--answers.json">Download --answers.json</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--answers.m4v">Download --answers.m4v (100MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--answers.tsv">Download --answers.tsv</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--answers.txt">Download --answers.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--answers.webm">Download --answers.webm (107MB)</a></li></ul></div></div> # Description <!-- End of emacsconf-publish-before-page -->
\ No newline at end of file diff --git a/2025/info/bookclub-tapas-nav.md b/2025/info/bookclub-tapas-nav.md index cd9e1a88..9cc95b9c 100644 --- a/2025/info/bookclub-tapas-nav.md +++ b/2025/info/bookclub-tapas-nav.md @@ -1,7 +1,7 @@ <div class="talk-nav"> Back to the [[talks]] -Previous by time: <a href="/2025/talks/gardening">Gardening in Emacs: A Windows user's tale of tending, tweaking, and triumph</a> -Next by time: <a href="/2025/talks/sun-close">Sunday closing remarks</a> -Track: <span class="sched-track General">General</span> - <strong><a href="https://emacsconf.org/2025/watch/gen">Watch</a></strong> +Previous by track: <a href="/2025/talks/gardening">Gardening in Emacs: A Windows user's tale of tending, tweaking, and triumph</a> +Next by track: <a href="/2025/talks/schemacs">One year progress update Schemacs (formerly Gypsum)</a> +Track: <span class="sched-track General">General</span> </div> diff --git a/2025/info/calc-before.md b/2025/info/calc-before.md index 8e5c5bd5..34fe5808 100644 --- a/2025/info/calc-before.md +++ b/2025/info/calc-before.md @@ -1,14 +1,8 @@ <!-- Automatically generated by emacsconf-publish-before-page --> - -The following image shows where the talk is in the schedule for Sat 2025-12-06. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="calc"> -<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2025/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:10 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2025/talks/org-babel" title="Making Org-Babel reactive" data-slug="org-babel"> <title> 9:10- 9:20 Making Org-Babel reactive</title> <rect x="13" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(24,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> org-babel</text></g></a> <a href="/2025/talks/reference" title="Emacs as a fully-fledged reference manager" data-slug="reference"> <title> 9:30- 9:55 Emacs as a fully-fledged reference manager</title> <rect x="41" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(73,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> reference</text></g></a> <a href="/2025/talks/gmail" title="org-gmail: A deep integration of Gmail into your Org Mode" data-slug="gmail"> <title> 10:15-10:40 org-gmail: A deep integration of Gmail into your Org Mode</title> <rect x="102" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(134,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gmail</text></g></a> <a href="/2025/talks/gnus" title="Reading and writing emails in GNU Emacs with Gnus" data-slug="gnus"> <title> 10:50-11:15 Reading and writing emails in GNU Emacs with Gnus</title> <rect x="150" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(182,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gnus</text></g></a> <a href="/2025/talks/latex" title="LaTeX export in org-mode: the overhaul" data-slug="latex"> <title> 11:25-11:45 LaTeX export in org-mode: the overhaul</title> <rect x="199" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(224,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> latex</text></g></a> <a href="/2025/talks/calc" title="Basic Calc functionality for engineering or electronics" data-slug="calc"> <title> 1:00- 1:25 Basic Calc functionality for engineering or electronics</title> <rect stroke-width="3" x="329" y="15" opacity="0.8" width="34" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(361,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> calc</text></g></a> <a href="/2025/talks/blee-lcnt" title="Blee-LCNT: An Emacs-centered content production and self-publication framework" data-slug="blee-lcnt"> <title> 1:35- 2:15 Blee-LCNT: An Emacs-centered content production and self-publication framework</title> <rect x="377" y="15" opacity="0.5" width="54" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(429,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> blee-lcnt</text></g></a> <a href="/2025/talks/greader" title="GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence" data-slug="greader"> <title> 2:35- 2:40 GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence</title> <rect x="459" y="15" opacity="0.5" width="6" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(463,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> greader</text></g></a> <a href="/2025/talks/open-mic" title="Open session" data-slug="open-mic"> <title> 2:50- 3:40 Open session</title> <rect x="480" y="15" opacity="0.5" width="68" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(546,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> open-mic</text></g></a> <a href="/2025/talks/sat-close" title="Saturday closing remarks / open session" data-slug="sat-close"> <title> 4:00- 4:10 Saturday closing remarks / open session</title> <rect x="576" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(587,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2025/talks/schemacs" title="One year progress update Schemacs (formerly Gypsum)" data-slug="schemacs"> <title> 9:30- 9:55 One year progress update Schemacs (formerly Gypsum)</title> <rect x="41" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(73,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> schemacs</text></g></a> <a href="/2025/talks/juicemacs" title="Juicemacs: exploring speculative JIT compilation for ELisp in Java" data-slug="juicemacs"> <title> 10:15-10:35 Juicemacs: exploring speculative JIT compilation for ELisp in Java</title> <rect x="102" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(127,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> juicemacs</text></g></a> <a href="/2025/talks/swanky" title="Swanky Python: Interactive development for Python" data-slug="swanky"> <title> 10:45-11:10 Swanky Python: Interactive development for Python</title> <rect x="144" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(176,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> swanky</text></g></a> <a href="/2025/talks/python" title="Interactive Python programming in Emacs" data-slug="python"> <title> 11:20-11:40 Interactive Python programming in Emacs</title> <rect x="192" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(217,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <a href="/2025/talks/llm" title="Emacs, editors, and LLM driven workflows" data-slug="llm"> <title> 1:00- 1:25 Emacs, editors, and LLM driven workflows</title> <rect x="329" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(361,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> llm</text></g></a> <a href="/2025/talks/private-ai" title="Emacs and private AI: a great match" data-slug="private-ai"> <title> 1:45- 2:05 Emacs and private AI: a great match</title> <rect x="391" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(416,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> private-ai</text></g></a> <a href="/2025/talks/commonlisp" title="Common Lisp images communicating like-a-human through shared Emacs slime and eev" data-slug="commonlisp"> <title> 2:25- 2:55 Common Lisp images communicating like-a-human through shared Emacs slime and eev</title> <rect x="446" y="75" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(485,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> commonlisp</text></g></a> <a href="/2025/talks/graphics" title="Modern Emacs/Elisp hardware/software accelerated graphics" data-slug="graphics"> <title> 3:05- 3:30 Modern Emacs/Elisp hardware/software accelerated graphics</title> <rect x="500" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(532,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> graphics</text></g></a> <g transform="translate(0,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 5 PM</text></g></svg> -</div> - [[!toc ]] -Format: 24-min talk ; Q&A: IRC <https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen> Etherpad: <https://pad.emacsconf.org/2025-calc> +Format: 24-min talk ; Q&A: IRC Etherpad: <https://pad.emacsconf.org/2025-calc> Etherpad: <https://pad.emacsconf.org/2025-calc> -Discuss on IRC: [#emacsconf-gen](https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen) -Status: Q&A finished, IRC and pad will be archived on this page +Status: TO_REVIEW_QA @@ -29,6 +23,6 @@ Status: Q&A finished, IRC and pad will be archived on this page 20:08.800 Wish list 22:38.600 Wrapping up -"""]]<div></div>Duration: 23:35 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-calc">Open Etherpad</a></li><li><a href="https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen">Open public Q&A</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--main.opus">Download --main.opus (20MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--main.webm">Download --main.webm (56MB)</a></li><li><a href="https://youtu.be/MAc6gCUHjOw">View on Youtube</a></li></ul></div></div> +"""]]<div></div>Duration: 23:35 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-calc">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--main.opus">Download --main.opus (20MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--main.webm">Download --main.webm (56MB)</a></li><li><a href="https://youtu.be/MAc6gCUHjOw">View on Youtube</a></li></ul></div></div> # Description <!-- End of emacsconf-publish-before-page -->
\ No newline at end of file diff --git a/2025/info/calc-nav.md b/2025/info/calc-nav.md index 85146398..cd4095ba 100644 --- a/2025/info/calc-nav.md +++ b/2025/info/calc-nav.md @@ -1,7 +1,7 @@ <div class="talk-nav"> Back to the [[talks]] -Previous by time: <a href="/2025/talks/latex">LaTeX export in org-mode: the overhaul</a> -Next by time: <a href="/2025/talks/llm">Emacs, editors, and LLM driven workflows</a> -Track: <span class="sched-track General">General</span> - <strong><a href="https://emacsconf.org/2025/watch/gen">Watch</a></strong> +Previous by track: <a href="/2025/talks/latex">LaTeX export in org-mode: the overhaul</a> +Next by track: <a href="/2025/talks/blee-lcnt">Blee-LCNT: An Emacs-centered content production and self-publication framework</a> +Track: <span class="sched-track General">General</span> </div> diff --git a/2025/info/commonlisp-after.md b/2025/info/commonlisp-after.md index 0b866149..05c47a8d 100644 --- a/2025/info/commonlisp-after.md +++ b/2025/info/commonlisp-after.md @@ -431,7 +431,360 @@ Captioner: sachac -Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202023%20commonlisp%3A%20Common%20Lisp%20images%20communicating%20like-a-human%20through%20shared%20Emacs%20slime%20and%20eev) +<div class="transcript transcript-qanda"><a name="commonlisp-qanda-transcript"></a><h1>Q&A transcript (unedited)</h1> + +[[!template text="""Recording started.""" start="00:00:00.000" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Great. All right, you are live in Common Lisp on dev.""" start="00:00:04.600" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""This is Corwin back and I've got screwlisp with me,""" start="00:00:07.200" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""the host of the Lispy Gopher... Climate, I like to say.""" start="00:00:14.400" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""It used to be show.""" start="00:00:18.760" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""The Lispy Gopher show or the Lispy Gopher Climate.""" start="00:00:20.320" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Thank you so much for joining us. Minutes.""" start="00:00:24.680" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Yeah, we're just, we've got already""" start="00:00:31.120" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""a whole pad full of questions""" start="00:00:33.640" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""and we have a unique opportunity if you,""" start="00:00:35.360" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""if you check out the etherpad,""" start="00:00:38.040" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""you'll see some instructions there to join on Lambda Moo,""" start="00:00:39.160" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""which screwless,""" start="00:00:42.240" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""but I'm hoping you will talk to us a little bit about that""" start="00:00:43.040" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""as well as your, your very cool project.""" start="00:00:46.320" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Oh yeah, so I main on Lambda, as Corwin is saying.""" start="00:00:48.880" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""And Corwin was pretending not to know the name of the show,""" start="00:00:52.840" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""but he has in fact appeared on an episode of it""" start="00:00:55.640" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""in January this year, I think.""" start="00:00:59.400" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""So he was just pretending there. I'm screwless of this.""" start="00:01:00.880" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""What's happening?""" start="00:01:04.920" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""10 minutes or less before we started going live here,""" start="00:01:06.920" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""they were like, remember how you said you fixed that bug?""" start="00:01:13.440" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""And then I had to quickly recapitulate my whole talk.""" start="00:01:16.160" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""And I introduced some new bugs while that was happening.""" start="00:01:21.480" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""But let's go through some of these questions.""" start="00:01:23.720" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""We're all hanging out in LambdaMoo.""" start="00:01:26.200" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""So if you mx telnet over to lambda.moo.mud.org port 8888.""" start="00:01:29.480" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""This is where we're talking at the moment""" start="00:01:37.640" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""with people like Ed Swarthout, DM, and yduJ,""" start="00:01:40.280" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""who I gossiped about in the show,""" start="00:01:45.400" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""and Sasha, and people were there a little bit as well.""" start="00:01:47.560" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""I'm just going to read some of the questions""" start="00:01:50.520" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""that GGXX in Lambdomoo has been relaying to me there,""" start="00:01:53.360" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""though I hear that there are a whole bunch of them now.""" start="00:01:59.760" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Someone asks on the Etherpad,""" start="00:02:08.240" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""what do you mean when I say the agent is running slowly?""" start="00:02:09.760" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Yeah, so if you saw in the talk,""" start="00:02:13.200" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""I was having the agent only attempt""" start="00:02:17.120" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""to act every 20 seconds.""" start="00:02:19.640" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""This is what I mean by the agent is acting slowly.""" start="00:02:21.960" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""So this is quite different""" start="00:02:25.400" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""to what people might expect within AI""" start="00:02:26.600" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""if people are talking about like the graphics card ones""" start="00:02:28.600" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""where you're trying crunch as fast as you can""" start="00:02:30.680" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""for as few seconds as you can, and then you stop.""" start="00:02:33.600" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""In contrast, my agent is just trying to do""" start="00:02:36.400" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""a simple action every 20 seconds.""" start="00:02:39.400" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""But if you keep going continuously""" start="00:02:42.280" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""at a simple action every 20 seconds""" start="00:02:45.120" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""without sleeping for days,""" start="00:02:47.920" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""it still adds up to a lot.""" start="00:02:49.960" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""So that was the significance of it running slowly.""" start="00:02:51.240" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""What else are people saying? TGXX to screwtape.""" start="00:02:57.040" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Someone asked on the Etherpad,""" start="00:03:00.640" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""do you think that it would be too hard""" start="00:03:02.520" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""to add a second way""" start="00:03:04.760" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""to send commands from Common Lisps to Emacs?""" start="00:03:06.440" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""No, I put three of them together""" start="00:03:09.960" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""and I didn't talk about it""" start="00:03:12.920" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""because this is a kind of affected choice.""" start="00:03:14.560" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Right now you're using Emacs client for that.""" start="00:03:17.240" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""That is the simplest way to implement.""" start="00:03:20.040" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""How about using the slime protocol?""" start="00:03:22.040" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Elsewhere, I am just using the SLIME protocol.""" start="00:03:24.040" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""So, in everyone that's SLIME-connected.""" start="00:03:28.800" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""So, earlier on, you saw somebody""" start="00:03:31.640" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""running a SWANK server in Python.""" start="00:03:33.400" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Normally, you run a SWANK server in Common Lisp.""" start="00:03:35.400" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""And a SWANK server is what Emacs SLIME,""" start="00:03:38.440" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Superior Lisp Interaction Mode for Emacs, connects to.""" start="00:03:41.600" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""And then Swank comes with Swank Eval and Emacs.""" start="00:03:45.040" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""So after you've been slime connected,""" start="00:03:49.040" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""you can trivially send Emacs Lisp forms to Emacs""" start="00:03:50.960" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""using Swank Eval and Emacs.""" start="00:03:55.040" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""The reason that I chose to use""" start="00:03:57.320" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Emacs server and Emacs client""" start="00:04:00.680" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""was that I was letting the Leonardo agent""" start="00:04:05.200" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""talk to Emacs using Swank, Eval, and Emacs.""" start="00:04:14.040" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""And I wanted my ECL image to be using""" start="00:04:18.800" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""a different notion of a server.""" start="00:04:21.600" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""So the ECL image, just because""" start="00:04:23.120" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""I chose to do it like this,""" start="00:04:27.040" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""is using Emacs client and Emacs server going via,""" start="00:04:28.960" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""I guess it's executing a program""" start="00:04:33.280" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""rather than using a shell.""" start="00:04:35.240" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""And Yeah, I was letting somebody else""" start="00:04:36.440" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""use Slime eval in Emacs.""" start="00:04:40.640" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""It would have been simpler""" start="00:04:42.440" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""if everybody just used Slime eval in Emacs.""" start="00:04:45.040" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""I thought I was getting something""" start="00:04:48.320" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""out of adding Emacs server into the mix.""" start="00:04:50.920" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""What's somebody saying?""" start="00:04:56.080" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Idaj is weirded out by doing get foo bar""" start="00:04:57.320" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""instead of get foo quote bar.""" start="00:05:00.320" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Yeah, that was Sandewall's choice.""" start="00:05:02.440" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""He was trying to pitch Lisp""" start="00:05:04.360" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""to logic notation people,""" start="00:05:06.680" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""so he lets people put commas in""" start="00:05:09.160" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""and then ignores them in certain expressions,""" start="00:05:12.320" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""and he doesn't have these Lisp-style quotes.""" start="00:05:15.560" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Idaj is obviously from like Schlumberger""" start="00:05:18.680" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""and wherever else she was at in""" start="00:05:22.440" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""in the kind of list of traditions.""" start="00:05:24.880" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Full of Spain is saying good observation.""" start="00:05:28.040" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Yidaj is shocked that she's being mentioned.""" start="00:05:30.360" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Interestingly Nosredna yduJ capitalizes Nosredna at the front,""" start="00:05:33.840" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""but she capitalizes yduJ at the back, just for clarity.""" start="00:05:40.520" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""You should read her Stanford page or her recipe site""" start="00:05:45.080" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""or anything if you're not clear on who yduJ is.""" start="00:05:49.200" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""It's actually you're looking for the word eclipsed.""" start="00:05:58.000" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""I think she eclipsed a dodge,""" start="00:06:00.680" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""I think is the English phrase that you're looking for.""" start="00:06:03.560" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""He does just saying she would not.""" start="00:06:06.120" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""She's no matter what I say""" start="00:06:08.840" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""she's not going to hug my software agent""" start="00:06:10.520" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""like she would hug a grandchild eyes me warily.""" start="00:06:13.040" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""And Sasha is not going to.""" start="00:06:20.720" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Totally not training a general intelligence""" start="00:06:22.120" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""who requires a lot of data""" start="00:06:24.760" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""and also cuddles. Okay, so everybody who has children""" start="00:06:26.200" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""is disagreeing with me quoting Sandewall,""" start="00:06:28.960" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""who did have children and grandchildren,""" start="00:06:31.600" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""saying that he wanted machine intelligences""" start="00:06:33.320" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""to be like his grandchild.""" start="00:06:36.120" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""GGXX is saying somebody on Etherpad""" start="00:06:37.760" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""is asking what the Leonardo system is.""" start="00:06:40.840" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Sandewall is a LISP scientist""" start="00:06:43.120" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""from the 60s, 70s, 80s, 90s, 90s, 10s.""" start="00:06:46.600" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""with things like bronze statues of him in Sweden.""" start="00:06:51.160" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""People outside of the Swedish-speaking sphere of science""" start="00:06:55.600" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""are less familiar with him.""" start="00:06:59.600" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""I guess he famously taught Robert Strand""" start="00:07:01.120" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""how to program in LISP, if that places him for you.""" start="00:07:04.120" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""What else did he do?""" start="00:07:08.320" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Yeah, so he was on a kind of long trajectory of AI,""" start="00:07:10.200" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""which would now be called good old-fashioned AI.""" start="00:07:15.600" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""And he was coming from the situation calculus,""" start="00:07:18.040" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""then activity calculus kind of direction,""" start="00:07:22.640" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""which are extended first order logics""" start="00:07:26.560" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""for reasoning about change over time.""" start="00:07:28.760" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""And his last program he contributed to the world was this.""" start="00:07:31.560" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""From 2005 to 2014, he worked on""" start="00:07:35.760" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""this Leonardo system for his master's program.""" start="00:07:39.320" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""He was teaching at that time""" start="00:07:43.480" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""at the University of Linköping in Sweden.""" start="00:07:45.280" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""And... Then he just kind of gradually faded from view""" start="00:07:48.520" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""while he wrote his unpublished books""" start="00:07:53.200" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""on reasoning and change, I guess, between 2010 and 2014.""" start="00:07:55.520" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""And then I just kind of noticed this eventually.""" start="00:08:01.640" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""And I brought that software back. And that's what this is.""" start="00:08:03.960" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""And that's why it kind of weirdly exists.""" start="00:08:07.840" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Welcome to Khaki Guest. Magenta Guest is gone.""" start="00:08:10.000" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Pink Guest is gone.""" start="00:08:15.480" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Blue Guest has arrived. Great. Somebody order six.""" start="00:08:16.760" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Everybody orders sake from Emily.""" start="00:08:23.640" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""We're hanging out in Jay Lamott's sushi bar in Lambda,""" start="00:08:26.240" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""which is on the model railway""" start="00:08:29.600" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""on the table in the second guest bedroom in Lambda House""" start="00:08:31.640" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""where we're all hanging out.""" start="00:08:35.600" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Oh, I think GGXX is ordering people up things.""" start="00:08:36.640" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""You know, just teach people about this.""" start="00:08:43.560" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""All right, I'm going to try looking""" start="00:08:46.400" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""at the etherpad manually. Sorry, I can read you.""" start="00:08:52.280" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""So the next question you have,""" start="00:08:55.520" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""somebody says, I found Eduardo's blog.""" start="00:08:57.320" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""OK, you just got through that.""" start="00:09:00.480" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""And then we were also, a question you answered""" start="00:09:03.200" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""is the other one that I see here, just about Lambda Moo.""" start="00:09:06.200" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""And I think you started to answer in the pad.""" start="00:09:10.800" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""But if you want to kind of read that out.""" start="00:09:14.200" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""I definitely haven't written anything in the pad.""" start="00:09:16.080" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""I'm going to just talk to Khaki Guest in Lambda.""" start="00:09:19.120" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Sure, so why don't you do a little bit""" start="00:09:23.720" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""and just read this question.""" start="00:09:25.880" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""The question was, what is LambdaMOO and how do we use it?""" start="00:09:27.280" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""LambdaMOO is a module introduction,""" start="00:09:31.280" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""and you can tell that to it.""" start="00:09:33.400" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""There's instructions in the pad.""" start="00:09:35.320" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""I'll go ahead and drop that in the gen channel""" start="00:09:36.800" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""or in the dev channel chat right now.""" start="00:09:40.040" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""And I see it is already in there.""" start="00:09:42.600" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""But down at the bottom""" start="00:09:46.920" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""of the discussion links feedback area,""" start="00:09:49.560" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""you'll see a set of detailed instructions""" start="00:09:53.440" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""that ScrewList has provided us to get in there.""" start="00:09:55.680" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""I think that was actually GGXX""" start="00:09:58.520" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""who might have written that for us.""" start="00:10:01.160" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Several changes evolved in the last 10 minutes""" start="00:10:03.960" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""before we went live here.""" start="00:10:08.040" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""But yeah, so LambdaMoo is""" start="00:10:09.680" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""the world's longest-running virtual reality.""" start="00:10:12.840" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""I guess it started in the end of October in 1990""" start="00:10:14.880" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""and has run continuously to today.""" start="00:10:19.120" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""You can get there, ideally, with a MUD client.""" start="00:10:21.760" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Technically, it's a MUD, comma, object-oriented.""" start="00:10:24.600" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""This is just where I hang out some degree of the week.""" start="00:10:27.480" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""yduJ is the wizard yduJ, or sorry,""" start="00:10:30.200" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""yduJ is also the wizard Nosredna of Lambdomoo, for example.""" start="00:10:36.800" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""It kind of fits into quite less history.""" start="00:10:40.920" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""I guess Pavel Curtis would have started in 1990""" start="00:10:44.480" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""for Xerox PARC, originally. Just to go to what Khaki Guest""" start="00:10:47.680" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""has been continuing to talk about.""" start="00:10:52.800" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Welcome to Brown, Guest, as well, I guess.""" start="00:10:54.840" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Aki Guest says, to Screwtape,""" start="00:10:57.800" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""it seems like you're trying to build""" start="00:11:03.400" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""a more restrictive Turing test""" start="00:11:04.960" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""using the input output logs of an Emacs conversation.""" start="00:11:07.280" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Is that accurate?""" start="00:11:11.160" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Can you explain this idea of if it is intelligent,""" start="00:11:12.160" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""I'd like it to be like me?""" start="00:11:15.080" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Otherwise, I don't know what intelligence is.""" start="00:11:17.240" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Doesn't that seem a little egocentric?""" start="00:11:20.040" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Is that a joke or a genuine definition of intelligence?""" start="00:11:21.960" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Why do you think the link between""" start="00:11:25.400" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""input-output of Emacs human input-output""" start="00:11:27.440" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""is stronger than other forms of Turing tests?""" start="00:11:30.520" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""So I'm going to misread Turing tests""" start="00:11:33.920" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""for a moment as Turing-complete.""" start="00:11:36.320" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""And Sandewall's system is very specifically""" start="00:11:37.840" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Our first-order logic, if we don't extend it,""" start="00:11:40.280" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""is not Turing-complete, for starters.""" start="00:11:45.520" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""And things like situation calculus,""" start="00:11:49.240" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""McCarthy's situation calculus,""" start="00:11:51.960" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""which I guess is prior to""" start="00:11:53.840" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Sandewall's Leonardo's calculus,""" start="00:11:55.240" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""are extended first-order logics""" start="00:11:58.440" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""for reasoning about change.""" start="00:12:02.320" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""And so they're slightly""" start="00:12:03.960" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""more restricted than conventional,""" start="00:12:05.520" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""than general-purpose computer programs.""" start="00:12:07.640" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""And then what you're saying is, if it's intelligent,""" start="00:12:10.240" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""I'd expect it to be like me.""" start="00:12:14.640" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""I'm really just paraphrasing what Sandewall says about,""" start="00:12:16.120" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""well, he thinks his grandchildren are intelligent.""" start="00:12:19.800" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""So if a computer is intelligent,""" start="00:12:23.320" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""he thinks the computer will have to be""" start="00:12:24.760" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""similar to his grandchildren.""" start="00:12:26.240" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""This is in contrast to people""" start="00:12:28.040" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""who are using the terms AI""" start="00:12:32.280" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""to mean something a graphics card does""" start="00:12:33.840" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""with extremely specialized bulk matrix multiplication""" start="00:12:37.320" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""for a very short period of time""" start="00:12:41.320" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""on absolutely gigantic electrical""" start="00:12:43.920" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""and kind of memory and computing resources,""" start="00:12:47.520" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""which doesn't look at all like what""" start="00:12:50.160" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Sandewall's grandchildren were doing.""" start="00:12:51.520" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""And this is why I'm kind of saying,""" start="00:12:55.000" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""well, if I have an agent,""" start="00:12:56.400" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""And my agent is quite simple.""" start="00:12:57.560" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""It uses Emacs server and Emacs client""" start="00:13:00.840" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""to send lines of basically extended""" start="00:13:04.520" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""first-order logic to the agent,""" start="00:13:07.560" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""and the agent then takes a kind of""" start="00:13:09.200" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""first-order logic-y action.""" start="00:13:12.960" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""And I was making the point""" start="00:13:15.400" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""that this looks more like me computing""" start="00:13:21.080" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""using of REPL-driven development like EEV,""" start="00:13:23.480" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""where in EEV I have basically a log""" start="00:13:27.520" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""of something I've previously done,""" start="00:13:30.480" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""and I can tap F8 and execute""" start="00:13:32.120" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""line after line after line.""" start="00:13:34.240" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""And I think if I see an agent doing that,""" start="00:13:36.480" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""I can clearly understand""" start="00:13:38.840" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""and relate to what the agent is doing.""" start="00:13:40.400" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""And so I'm not classifying""" start="00:13:43.640" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Like, I never do gigabytes and gigabytes""" start="00:13:45.520" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""and gigabytes of matrix multiplications,""" start="00:13:49.400" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""so I can't relate to this as an idea of intelligence.""" start="00:13:52.280" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Sorry. Welcome to GreenGuest teleporting in.""" start="00:13:54.960" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""FullSpain is saying, no one truly knows what intelligence is.""" start="00:13:57.920" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""All right. I kind of wished that this was working,""" start="00:14:02.760" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""because just before we went live, they said,""" start="00:14:10.760" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""hey, just have your example working quickly.""" start="00:14:13.200" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Then I downloaded my example from my blog,""" start="00:14:15.920" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""and I'd double escaped some characters""" start="00:14:19.000" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""so that the escaped characters would show up in my blog.""" start="00:14:22.480" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""And I caused a lot of rampant chaos.""" start="00:14:26.800" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""If anyone else has a question.""" start="00:14:29.760" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Guest has said, but. So. Great.""" start="00:14:32.320" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""I guess I could go back and try it.""" start="00:14:40.760" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""I probably should have jumped in a couple of minutes ago""" start="00:14:47.280" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""and just said the live stream did cut over,""" start="00:14:50.400" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""but we're continuing to record this""" start="00:14:53.280" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""and the whole session will be published""" start="00:14:54.920" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""along with the video on the website.""" start="00:14:57.120" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Oh, well. Sorry about that. I tried that.""" start="00:14:58.400" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""I just lost a couple of minutes there""" start="00:15:04.080" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""and failed to give you the smooth morning.""" start="00:15:06.800" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Oh, no, no. That's fine. I was just kind of rambling.""" start="00:15:08.880" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Listen. Don't download a web page""" start="00:15:14.200" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""and try and convert it to an org file on the fly""" start="00:15:16.960" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""and just before you go live somewhere""" start="00:15:19.800" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""is the kind of moral here.""" start="00:15:21.960" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""You know, just saying that's pretty graphics, but it's long.""" start="00:15:23.320" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""She's dropping. See you later. Yeah.""" start="00:15:27.800" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Let's, let's, let's all get out of here.""" start="00:15:29.400" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Basically. I'm going to go see""" start="00:15:31.240" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""if I can look at this ether pad one last time""" start="00:15:32.400" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""and see if there are any questions""" start="00:15:36.160" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""just to not leave anyone else.""" start="00:15:37.640" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Anyone out much to their chagrin possibly.""" start="00:15:39.360" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Um, how to connect to LambdaMu, seems great.""" start="00:15:43.560" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Oh, interesting guides, somebody wrote that.""" start="00:15:47.640" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""What do you mean by slowly? Yeah, so I'm saying taking""" start="00:15:52.160" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""a simple action every 20 seconds,""" start="00:15:55.440" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""this still adds up to a lot over time.""" start="00:15:57.280" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Question, do you think that it would be,""" start="00:15:59.080" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""yeah, well, if you've used Slime,""" start="00:16:01.600" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""and hence you're using Swank,""" start="00:16:04.080" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""you can just Swank, Eval,""" start="00:16:05.960" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""and Emacs would be the more trivial way.""" start="00:16:07.240" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""I felt like I was getting something bonus""" start="00:16:08.840" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""by using, um, Emacs server.""" start="00:16:10.720" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Somebody has a link to Eduardo's blog,""" start="00:16:13.960" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""which I think has been misspelled.""" start="00:16:17.360" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""It should be angkwu with no dot there,""" start="00:16:19.840" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""dot net, sharp sign EEV.""" start="00:16:23.080" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""So, Eduardo is the author of EEV mode.""" start="00:16:27.200" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""I found Eduardo's thing.""" start="00:16:31.520" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Oh, this was the question, what is the Leonardo system,""" start="00:16:33.080" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""which I just answered.""" start="00:16:36.200" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""What is LambdaMOO? How do you use it?""" start="00:16:38.480" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""It's a mud, comma, object-oriented.""" start="00:16:42.960" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""So it's a multi-user dungeon kind of classical video game,""" start="00:16:45.560" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""still popular, but with extended object-oriented facilities.""" start="00:16:49.320" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Companies like Harlequin, which yduJ""" start="00:16:52.800" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""and Ken Pitman, for example, were at, I think, in the 90s.""" start="00:16:57.360" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Instead of modernly, you'd have Slack web apps or something.""" start="00:17:00.320" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""People used to have these MOOs and things.""" start="00:17:05.320" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Okay, the music that's replaced me is evidently quite nice.""" start="00:17:08.080" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Yes, get the hints. Thanks for being here.""" start="00:17:15.520" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Well, let's continue this diatribe""" start="00:17:22.120" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""possibly on the Mastodon or something like that.""" start="00:17:29.360" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""We'll do some kind of...""" start="00:17:33.640" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Let me thank you one more time for preparing this talk""" start="00:17:36.000" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""and for all that you do for the Free Software community""" start="00:17:40.520" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""and especially for Emacs. particularly appreciate you.""" start="00:17:44.360" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Thank you for all you do for the Free Software community""" start="00:17:47.880" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""and particularly Emacs, Corwin and Bruce.""" start="00:17:50.440" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""I'm still waiting for a working demo of Dungeon Mode.""" start="00:17:53.320" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""My joke that I was setting up and never had a chance for""" start="00:17:56.080" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""was that I was going to say""" start="00:17:58.560" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""I wanted my agent to be using Dungeon Mode in Emacs.""" start="00:17:59.960" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""How's that? Okay, well, we'll work on that.""" start="00:18:03.600" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""That could be a project for the two of us in our copious free time.""" start="00:18:06.000" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""Definitely. Yeah. Okay. I'll let you go.""" start="00:18:10.120" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""I'm gonna abandon this stream.""" start="00:18:13.560" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""All right. I'll end out the recording""" start="00:18:14.680" video="qanda-commonlisp" id="subtitle"]] +[[!template text="""and thanks to all who participated. Okay. See you later.""" start="00:18:17.040" video="qanda-commonlisp" id="subtitle"]] + +</div>Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202023%20commonlisp%3A%20Common%20Lisp%20images%20communicating%20like-a-human%20through%20shared%20Emacs%20slime%20and%20eev) <!-- End of emacsconf-publish-after-page --> diff --git a/2025/info/commonlisp-before.md b/2025/info/commonlisp-before.md index dd88acf3..099e4f98 100644 --- a/2025/info/commonlisp-before.md +++ b/2025/info/commonlisp-before.md @@ -1,19 +1,19 @@ <!-- Automatically generated by emacsconf-publish-before-page --> - -The following image shows where the talk is in the schedule for Sat 2025-12-06. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="commonlisp"> -<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2025/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:10 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2025/talks/org-babel" title="Making Org-Babel reactive" data-slug="org-babel"> <title> 9:10- 9:20 Making Org-Babel reactive</title> <rect x="13" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(24,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> org-babel</text></g></a> <a href="/2025/talks/reference" title="Emacs as a fully-fledged reference manager" data-slug="reference"> <title> 9:30- 9:55 Emacs as a fully-fledged reference manager</title> <rect x="41" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(73,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> reference</text></g></a> <a href="/2025/talks/gmail" title="org-gmail: A deep integration of Gmail into your Org Mode" data-slug="gmail"> <title> 10:15-10:40 org-gmail: A deep integration of Gmail into your Org Mode</title> <rect x="102" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(134,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gmail</text></g></a> <a href="/2025/talks/gnus" title="Reading and writing emails in GNU Emacs with Gnus" data-slug="gnus"> <title> 10:50-11:15 Reading and writing emails in GNU Emacs with Gnus</title> <rect x="150" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(182,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gnus</text></g></a> <a href="/2025/talks/latex" title="LaTeX export in org-mode: the overhaul" data-slug="latex"> <title> 11:25-11:45 LaTeX export in org-mode: the overhaul</title> <rect x="199" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(224,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> latex</text></g></a> <a href="/2025/talks/calc" title="Basic Calc functionality for engineering or electronics" data-slug="calc"> <title> 1:00- 1:25 Basic Calc functionality for engineering or electronics</title> <rect x="329" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(361,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> calc</text></g></a> <a href="/2025/talks/blee-lcnt" title="Blee-LCNT: An Emacs-centered content production and self-publication framework" data-slug="blee-lcnt"> <title> 1:35- 2:15 Blee-LCNT: An Emacs-centered content production and self-publication framework</title> <rect x="377" y="15" opacity="0.5" width="54" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(429,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> blee-lcnt</text></g></a> <a href="/2025/talks/greader" title="GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence" data-slug="greader"> <title> 2:35- 2:40 GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence</title> <rect x="459" y="15" opacity="0.5" width="6" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(463,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> greader</text></g></a> <a href="/2025/talks/open-mic" title="Open session" data-slug="open-mic"> <title> 2:50- 3:40 Open session</title> <rect x="480" y="15" opacity="0.5" width="68" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(546,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> open-mic</text></g></a> <a href="/2025/talks/sat-close" title="Saturday closing remarks / open session" data-slug="sat-close"> <title> 4:00- 4:10 Saturday closing remarks / open session</title> <rect x="576" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(587,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2025/talks/schemacs" title="One year progress update Schemacs (formerly Gypsum)" data-slug="schemacs"> <title> 9:30- 9:55 One year progress update Schemacs (formerly Gypsum)</title> <rect x="41" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(73,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> schemacs</text></g></a> <a href="/2025/talks/juicemacs" title="Juicemacs: exploring speculative JIT compilation for ELisp in Java" data-slug="juicemacs"> <title> 10:15-10:35 Juicemacs: exploring speculative JIT compilation for ELisp in Java</title> <rect x="102" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(127,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> juicemacs</text></g></a> <a href="/2025/talks/swanky" title="Swanky Python: Interactive development for Python" data-slug="swanky"> <title> 10:45-11:10 Swanky Python: Interactive development for Python</title> <rect x="144" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(176,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> swanky</text></g></a> <a href="/2025/talks/python" title="Interactive Python programming in Emacs" data-slug="python"> <title> 11:20-11:40 Interactive Python programming in Emacs</title> <rect x="192" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(217,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <a href="/2025/talks/llm" title="Emacs, editors, and LLM driven workflows" data-slug="llm"> <title> 1:00- 1:25 Emacs, editors, and LLM driven workflows</title> <rect x="329" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(361,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> llm</text></g></a> <a href="/2025/talks/private-ai" title="Emacs and private AI: a great match" data-slug="private-ai"> <title> 1:45- 2:05 Emacs and private AI: a great match</title> <rect x="391" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(416,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> private-ai</text></g></a> <a href="/2025/talks/commonlisp" title="Common Lisp images communicating like-a-human through shared Emacs slime and eev" data-slug="commonlisp"> <title> 2:25- 2:55 Common Lisp images communicating like-a-human through shared Emacs slime and eev</title> <rect stroke-width="3" x="446" y="75" opacity="0.8" width="41" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(485,133)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> commonlisp</text></g></a> <a href="/2025/talks/graphics" title="Modern Emacs/Elisp hardware/software accelerated graphics" data-slug="graphics"> <title> 3:05- 3:30 Modern Emacs/Elisp hardware/software accelerated graphics</title> <rect x="500" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(532,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> graphics</text></g></a> <g transform="translate(0,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 5 PM</text></g></svg> -</div> - [[!toc ]] -Format: 26-min talk ; Q&A: IRC <https://chat.emacsconf.org/?join=emacsconf,emacsconf-dev> Etherpad: <https://pad.emacsconf.org/2025-commonlisp> +Format: 26-min talk ; Q&A: IRC Etherpad: <https://pad.emacsconf.org/2025-commonlisp> Etherpad: <https://pad.emacsconf.org/2025-commonlisp> -Discuss on IRC: [#emacsconf-dev](https://chat.emacsconf.org/?join=emacsconf,emacsconf-dev) -Status: Q&A finished, IRC and pad will be archived on this page +Status: TO_REVIEW_QA + + + +# Talk +<div class="vid mainVideo"><video controls preload="none" id="mainVideo-commonlisp"><source src="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 25:56 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-commonlisp">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--debugged.png">Download --debugged.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--main.opus">Download --main.opus (23MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--main.org">Download --main.org</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--main.webm">Download --main.webm (63MB)</a></li><li><a href="https://youtu.be/hy5i6Qb6fYE">View on Youtube</a></li></ul></div></div> +# Q&A -<div class="vid mainVideo"><video controls preload="none" id="mainVideo-commonlisp"><source src="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 25:56 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-commonlisp">Open Etherpad</a></li><li><a href="https://chat.emacsconf.org/?join=emacsconf,emacsconf-dev">Open public Q&A</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--debugged.png">Download --debugged.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--main.opus">Download --main.opus (23MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--main.org">Download --main.org</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--main.webm">Download --main.webm (63MB)</a></li><li><a href="https://youtu.be/hy5i6Qb6fYE">View on Youtube</a></li></ul></div></div> +<div class="vid qanda"><video controls preload="none" id="qanda-commonlisp"><source src="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--answers.m4v" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--answers.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 18:24 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-commonlisp">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--answers.json">Download --answers.json</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--answers.m4v">Download --answers.m4v (33MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--answers.tsv">Download --answers.tsv</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--answers.txt">Download --answers.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--answers.vtt">Download --answers.vtt</a> (unedited)</li></ul></div></div> # Description <!-- End of emacsconf-publish-before-page -->
\ No newline at end of file diff --git a/2025/info/commonlisp-nav.md b/2025/info/commonlisp-nav.md index a35d90af..b8775dd3 100644 --- a/2025/info/commonlisp-nav.md +++ b/2025/info/commonlisp-nav.md @@ -1,7 +1,7 @@ <div class="talk-nav"> Back to the [[talks]] -Previous by time: <a href="/2025/talks/private-ai">Emacs and private AI: a great match</a> -Next by time: <a href="/2025/talks/greader">GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence</a> -Track: <span class="sched-track Development">Development</span> - <strong><a href="https://emacsconf.org/2025/watch/dev">Watch</a></strong> +Previous by track: <a href="/2025/talks/private-ai">Emacs and private AI: a great match</a> +Next by track: <a href="/2025/talks/graphics">Modern Emacs/Elisp hardware/software accelerated graphics</a> +Track: <span class="sched-track Development">Development</span> </div> diff --git a/2025/info/completion-after.md b/2025/info/completion-after.md index 14e33ea5..e70f4409 100644 --- a/2025/info/completion-after.md +++ b/2025/info/completion-after.md @@ -1,7 +1,485 @@ <!-- Automatically generated by emacsconf-publish-after-page --> -Questions or comments? Please e-mail [paaguti@gmail.com](mailto:paaguti@gmail.com?subject=Comment%20for%20EmacsConf%202023%20completion%3A%20corfu%2Byasnippet%3A%20Easier%20than%20I%20thought) +<div class="transcript transcript-mainVideo"><a name="completion-mainVideo-transcript"></a><h1>Transcript (unedited)</h1> + +[[!template text="""Nice to have you here on this talk.""" start="00:00:00.000" video="mainVideo-completion" id="subtitle"]] +[[!template text="""This is my second talk this year.""" start="00:00:02.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""First one was on things that I've done to Org Mode.""" start="00:00:04.520" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Just as a side note, this presentation""" start="00:00:09.920" video="mainVideo-completion" id="subtitle"]] +[[!template text="""that I'm going to share with you""" start="00:00:13.800" video="mainVideo-completion" id="subtitle"]] +[[!template text="""about my work on Corfu and Jasnipit.""" start="00:00:16.280" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I've prepared that on Org Mode""" start="00:00:19.880" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and exported that with a work I've been doing""" start="00:00:21.840" video="mainVideo-completion" id="subtitle"]] +[[!template text="""to the latest exporter.""" start="00:00:25.080" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Anyhow, what is my talk going to be about?""" start="00:00:26.840" video="mainVideo-completion" id="subtitle"]] +[[!template text="""It's going to be about Corfu and Yasnippet,""" start="00:00:31.960" video="mainVideo-completion" id="subtitle"]] +[[!template text="""which I thought would be difficult to integrate,""" start="00:00:34.600" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and it was much easier than I thought.""" start="00:00:36.600" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So just a short outline, my motivation,""" start="00:00:42.800" video="mainVideo-completion" id="subtitle"]] +[[!template text="""step-by-step of the things that I've been investigating,""" start="00:00:46.960" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and some takeaways. So my motivation, yeah, snippet is old.""" start="00:00:49.960" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So I've tried another, I've tried Temple""" start="00:00:55.920" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and other template management packages,""" start="00:00:59.600" video="mainVideo-completion" id="subtitle"]] +[[!template text="""but it was really not my cup of tea. So mainly why?""" start="00:01:02.520" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Mainly because I have a nice base of VR snippets""" start="00:01:08.160" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I have generated for my needs.""" start="00:01:10.920" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So it's not that I've been importing snippets""" start="00:01:14.480" video="mainVideo-completion" id="subtitle"]] +[[!template text="""from packages which are out there.""" start="00:01:17.800" video="mainVideo-completion" id="subtitle"]] +[[!template text="""No, they are my snippets. I'm used to them.""" start="00:01:20.360" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And of course, migration counts as a cost.""" start="00:01:23.600" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I've been using Company as my completion point function GUI for years,""" start="00:01:26.560" video="mainVideo-completion" id="subtitle"]] +[[!template text="""but with the time coming in features and so on it""" start="00:01:32.640" video="mainVideo-completion" id="subtitle"]] +[[!template text="""was it's was not as easy to set up as I wanted for my needs""" start="00:01:38.920" video="mainVideo-completion" id="subtitle"]] +[[!template text="""so I had been working I've been playing with Eaglet already some time for a language server protocol""" start="00:01:44.360" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I had read about how easy it was to integrate with Corfu""" start="00:01:53.120" video="mainVideo-completion" id="subtitle"]] +[[!template text="""which was really nice and I had given it a try,""" start="00:01:57.040" video="mainVideo-completion" id="subtitle"]] +[[!template text="""but I'm using both graphical user interface mode in Emacs""" start="00:02:02.840" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and text mode,""" start="00:02:06.440" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and for text mode you need a corporate terminal,""" start="00:02:07.840" video="mainVideo-completion" id="subtitle"]] +[[!template text="""which was yet another package that I don't download.""" start="00:02:10.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Well, and I didn't really find a quick way""" start="00:02:16.400" video="mainVideo-completion" id="subtitle"]] +[[!template text="""to get rid of company to get just snippet.""" start="00:02:21.480" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So at the end, when, at the beginning,""" start="00:02:24.480" video="mainVideo-completion" id="subtitle"]] +[[!template text="""when I was using Corfu and Eglot, I also needed to load a company""" start="00:02:26.680" video="mainVideo-completion" id="subtitle"]] +[[!template text="""to have a snippet support,""" start="00:02:33.960" video="mainVideo-completion" id="subtitle"]] +[[!template text="""which was really like sort of weird""" start="00:02:35.760" video="mainVideo-completion" id="subtitle"]] +[[!template text="""because I wanted to get rid of, of your snippet.""" start="00:02:37.640" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Anyhow, while I try now, I'm following the mailing list,""" start="00:02:40.560" video="mainVideo-completion" id="subtitle"]] +[[!template text="""the development mailing list,""" start="00:02:47.200" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and I got interested when I heard something about""" start="00:02:48.560" video="mainVideo-completion" id="subtitle"]] +[[!template text="""TTI charge frames being announced for master.""" start="00:02:51.800" video="mainVideo-completion" id="subtitle"]] +[[!template text="""That would mean less packages to download""" start="00:02:57.120" video="mainVideo-completion" id="subtitle"]] +[[!template text="""because I thought I could get rid of Corfu,""" start="00:02:59.600" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and I wanted to try if I could get rid of Corfu terminal""" start="00:03:04.160" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and run Corfu without that.""" start="00:03:07.360" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So, there were some hints there in that mailing list""" start="00:03:11.200" video="mainVideo-completion" id="subtitle"]] +[[!template text="""that made it interesting for me.""" start="00:03:18.800" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And at the end, I'm also like a why not trying man,""" start="00:03:21.880" video="mainVideo-completion" id="subtitle"]] +[[!template text="""so I said let's give it a try.""" start="00:03:26.640" video="mainVideo-completion" id="subtitle"]] +[[!template text="""My requirements, I'm working always on a new Emacs,""" start="00:03:29.120" video="mainVideo-completion" id="subtitle"]] +[[!template text="""a decently new Emacs, normally from Master Vanilla.""" start="00:03:33.480" video="mainVideo-completion" id="subtitle"]] +[[!template text="""completely Vanilla and I don't have any extras like Doom or things like that.""" start="00:03:36.760" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So I'm only Vanilla. And one of the things""" start="00:03:42.560" video="mainVideo-completion" id="subtitle"]] +[[!template text="""that I don't want is that on this Vanilla recent Emacs,""" start="00:03:45.520" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I don't want a Kung Fu Terminal. I need your snippet.""" start="00:03:50.280" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I'm basically an old man.""" start="00:03:55.720" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Old dog does new tricks and snippets must,""" start="00:03:57.360" video="mainVideo-completion" id="subtitle"]] +[[!template text="""in my way of working, must be easy and quick to configure""" start="00:04:02.480" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and Tempo or others that I've seen are not.""" start="00:04:06.240" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I don't want any reminiscence of a company in my setup.""" start="00:04:10.480" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And of course, don't forget that I've embraced""" start="00:04:13.920" video="mainVideo-completion" id="subtitle"]] +[[!template text="""the language protocol implementations and basically Eglot.""" start="00:04:18.680" video="mainVideo-completion" id="subtitle"]] +[[!template text="""My main focus now is Python and LaTeX,""" start="00:04:24.120" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and I have PyLSB and TechLab.""" start="00:04:28.160" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And I don't want to have to stop using them.""" start="00:04:31.720" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So basic setup for Corfu and Eglot.""" start="00:04:37.600" video="mainVideo-completion" id="subtitle"]] +[[!template text="""You can find it everywhere you look for it.""" start="00:04:40.480" video="mainVideo-completion" id="subtitle"]] +[[!template text="""It's really easy.""" start="00:04:43.440" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And actually, I also do something somehow naughty,""" start="00:04:46.560" video="mainVideo-completion" id="subtitle"]] +[[!template text="""which is to set this variable,""" start="00:04:51.120" video="mainVideo-completion" id="subtitle"]] +[[!template text="""the Corfu auto variable to true,""" start="00:04:53.080" video="mainVideo-completion" id="subtitle"]] +[[!template text="""although I know it's not recommended, blah, blah, blah.""" start="00:04:55.520" video="mainVideo-completion" id="subtitle"]] +[[!template text="""But I use that because I'm a bit lazy in that.""" start="00:04:58.400" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So next step was looking at completion at point functions.""" start="00:05:02.960" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So the information there if you go through the scatter""" start="00:05:07.240" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and sometimes a bit cryptic.""" start="00:05:10.480" video="mainVideo-completion" id="subtitle"]] +[[!template text="""At the end I came up with something like the thing""" start="00:05:14.000" video="mainVideo-completion" id="subtitle"]] +[[!template text="""that you see there on the screen.""" start="00:05:16.600" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So it's a function for just completion point""" start="00:05:18.400" video="mainVideo-completion" id="subtitle"]] +[[!template text="""so I need my list of keywords""" start="00:05:21.880" video="mainVideo-completion" id="subtitle"]] +[[!template text="""so that I'm going to be talking later""" start="00:05:24.640" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and I have my bounds which is normally a word""" start="00:05:30.040" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and from that I get the start and the end""" start="00:05:34.400" video="mainVideo-completion" id="subtitle"]] +[[!template text="""of the of the thing that I want to""" start="00:05:37.120" video="mainVideo-completion" id="subtitle"]] +[[!template text="""that I want to be my seed for looking and bringing up Corfu""" start="00:05:38.920" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and of course I need some completion properties here""" start="00:05:47.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""This looked like this is what you need to do,""" start="00:05:53.440" video="mainVideo-completion" id="subtitle"]] +[[!template text="""but I had to dig quite deep""" start="00:05:55.720" video="mainVideo-completion" id="subtitle"]] +[[!template text="""to create a JavaScript keyword test""" start="00:05:57.520" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and to understand the completion props.""" start="00:06:01.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And as an update of what I've been doing in the last weeks,""" start="00:06:04.760" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I've created a bound of things""" start="00:06:11.760" video="mainVideo-completion" id="subtitle"]] +[[!template text="""that point for me with a different thing""" start="00:06:13.880" video="mainVideo-completion" id="subtitle"]] +[[!template text="""that doesn't skip over non-blank characters,""" start="00:06:18.680" video="mainVideo-completion" id="subtitle"]] +[[!template text="""that only skips over non-blank characters.""" start="00:06:22.040" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Why? Because Word was confusingly tech,""" start="00:06:25.040" video="mainVideo-completion" id="subtitle"]] +[[!template text="""because the backslash,""" start="00:06:29.000" video="mainVideo-completion" id="subtitle"]] +[[!template text="""like in the example for the teletype text,""" start="00:06:30.760" video="mainVideo-completion" id="subtitle"]] +[[!template text="""was not taken into account by Word.""" start="00:06:35.000" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So I had to create my own one,""" start="00:06:36.920" video="mainVideo-completion" id="subtitle"]] +[[!template text="""which was a bunch of thing at point,""" start="00:06:39.960" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and then my thing is non-blanks.""" start="00:06:42.120" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Completion at point properties, what are they?""" start="00:06:44.880" video="mainVideo-completion" id="subtitle"]] +[[!template text="""They allow Emacs to know how to handle the information""" start="00:06:53.240" video="mainVideo-completion" id="subtitle"]] +[[!template text="""for a specific completion time.""" start="00:06:56.040" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So you normally will have an annotation,""" start="00:06:57.880" video="mainVideo-completion" id="subtitle"]] +[[!template text="""which then can disappear if you use NerdIconScoreFull.""" start="00:07:02.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""which is what I'm doing currently,""" start="00:07:08.520" video="mainVideo-completion" id="subtitle"]] +[[!template text="""but I keep it commented just in case I get tired of Corfu""" start="00:07:11.840" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and I want to have my completion function.""" start="00:07:17.560" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Then the company kind is actually not something""" start="00:07:20.080" video="mainVideo-completion" id="subtitle"]] +[[!template text="""that comes from the company package, but does not require.""" start="00:07:26.760" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And that's going to allow NerdEye Conscorfu to identify""" start="00:07:31.000" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and put the right icon there in the completion list,""" start="00:07:39.440" video="mainVideo-completion" id="subtitle"]] +[[!template text="""as you will see in a couple of minutes.""" start="00:07:44.840" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So it's a snippet key.""" start="00:07:47.160" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So basically what this is telling you""" start="00:07:50.440" video="mainVideo-completion" id="subtitle"]] +[[!template text="""is that this is a snippet keyword.""" start="00:07:52.600" video="mainVideo-completion" id="subtitle"]] +[[!template text="""These two lines, either line,""" start="00:07:54.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""tell you that this is a snippet keyword.""" start="00:07:56.800" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And that it should be added to the other completions""" start="00:08:00.000" video="mainVideo-completion" id="subtitle"]] +[[!template text="""that you already have in your list.""" start="00:08:05.280" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Problems looking now next step""" start="00:08:08.080" video="mainVideo-completion" id="subtitle"]] +[[!template text="""once I had the completion props""" start="00:08:15.480" video="mainVideo-completion" id="subtitle"]] +[[!template text="""which was relatively easy was to go""" start="00:08:19.080" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and get the keyword list right.""" start="00:08:21.440" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I've been looking at pre-existing solutions""" start="00:08:24.400" video="mainVideo-completion" id="subtitle"]] +[[!template text="""like for example how the menu""" start="00:08:27.200" video="mainVideo-completion" id="subtitle"]] +[[!template text="""is built in by your snippet and it looked a bit like Mission Impossible.""" start="00:08:29.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""because the approach by all the things""" start="00:08:34.400" video="mainVideo-completion" id="subtitle"]] +[[!template text="""that I have seen and I have examined""" start="00:08:40.440" video="mainVideo-completion" id="subtitle"]] +[[!template text="""is to get the keys and the names""" start="00:08:43.200" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and then further process them.""" start="00:08:45.640" video="mainVideo-completion" id="subtitle"]] +[[!template text="""My take was, do I really need both?""" start="00:08:50.800" video="mainVideo-completion" id="subtitle"]] +[[!template text="""At the end, if I use my own snippets,""" start="00:08:55.280" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I'm going to be using something""" start="00:08:58.160" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I would call meaningful keys for them""" start="00:09:00.440" video="mainVideo-completion" id="subtitle"]] +[[!template text="""or at least meaningful for these keys are meaningful for me""" start="00:09:02.560" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and I try not to repeat them""" start="00:09:06.360" video="mainVideo-completion" id="subtitle"]] +[[!template text="""because it makes little sense to repeat a keyword.""" start="00:09:07.680" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So why not center everything around the keys only""" start="00:09:09.960" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and can that help simplify my code?""" start="00:09:13.920" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So I started to dive into your snippet""" start="00:09:18.880" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and I found a lot of useful semi-hidden functions there.""" start="00:09:23.640" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I discovered that getting the list""" start="00:09:27.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""the list of keys for a given mode was not that difficult.""" start="00:09:30.680" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And at the end what I started doing""" start="00:09:34.960" video="mainVideo-completion" id="subtitle"]] +[[!template text="""is get all the snipple tables used by a major mode""" start="00:09:40.080" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and get the lists of the keys that you have in each table.""" start="00:09:47.080" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Sometimes the list is empty""" start="00:09:52.400" video="mainVideo-completion" id="subtitle"]] +[[!template text="""so it's going to return a nil and that you have to discard.""" start="00:09:55.840" video="mainVideo-completion" id="subtitle"]] +[[!template text="""When you're using structured snippets""" start="00:10:01.960" video="mainVideo-completion" id="subtitle"]] +[[!template text="""like snippets and submenus and so on""" start="00:10:06.000" video="mainVideo-completion" id="subtitle"]] +[[!template text="""to get a structured menu,""" start="00:10:08.920" video="mainVideo-completion" id="subtitle"]] +[[!template text="""you also get some non-strings that you need to filter out""" start="00:10:12.360" video="mainVideo-completion" id="subtitle"]] +[[!template text="""in order to get a workable keyword list.""" start="00:10:15.000" video="mainVideo-completion" id="subtitle"]] +[[!template text="""At the end of the day, what I had was something like this.""" start="00:10:19.000" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I have, for a mode, I went through all modes.""" start="00:10:24.880" video="mainVideo-completion" id="subtitle"]] +[[!template text="""through all modes associated to that and then I went""" start="00:10:30.960" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I got my results from all the tables that I had""" start="00:10:37.160" video="mainVideo-completion" id="subtitle"]] +[[!template text="""for a for a given time for a given table""" start="00:10:42.520" video="mainVideo-completion" id="subtitle"]] +[[!template text="""so what you do is you get your the tables""" start="00:10:45.280" video="mainVideo-completion" id="subtitle"]] +[[!template text="""that are associated to a mode because surprise surprise""" start="00:10:48.080" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Some modes have more than one table,""" start="00:10:53.120" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and then what you do is you filter out all non strings""" start="00:10:55.959" video="mainVideo-completion" id="subtitle"]] +[[!template text="""from each of the keys list that you have for each table.""" start="00:11:00.918" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So as you see, it's a 1, 2, 3, 4, 5, 6, 7 liner,""" start="00:11:07.720" video="mainVideo-completion" id="subtitle"]] +[[!template text="""which was not too much.""" start="00:11:12.680" video="mainVideo-completion" id="subtitle"]] +[[!template text="""By the way, if someone from Yasnippet is around,""" start="00:11:14.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I sent a pull request to include this""" start="00:11:20.040" video="mainVideo-completion" id="subtitle"]] +[[!template text="""as a public function in Yasnipit""" start="00:11:26.960" video="mainVideo-completion" id="subtitle"]] +[[!template text="""because it might be nice to have it in a packet""" start="00:11:29.000" video="mainVideo-completion" id="subtitle"]] +[[!template text="""in order to do this kind of things.""" start="00:11:32.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So fine-tuning I just adding a yes completion""" start="00:11:33.840" video="mainVideo-completion" id="subtitle"]] +[[!template text="""to the completion point functions was not enough""" start="00:11:41.240" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I don't really know""" start="00:11:44.720" video="mainVideo-completion" id="subtitle"]] +[[!template text="""but exclusive node didn't seem to work how I wanted""" start="00:11:46.800" video="mainVideo-completion" id="subtitle"]] +[[!template text="""so I needed to escape sorry yeah I was saying I was getting rid of packages""" start="00:11:51.200" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and I had to add one package""" start="00:11:57.400" video="mainVideo-completion" id="subtitle"]] +[[!template text="""in order to get a function which is very very nice""" start="00:12:01.000" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and which is part of the cape function of the cape package""" start="00:12:04.480" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and that's cape cap super.""" start="00:12:08.920" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So at the end using that you define an alias""" start="00:12:12.800" video="mainVideo-completion" id="subtitle"]] +[[!template text="""which for that where you use cape cap super""" start="00:12:16.440" video="mainVideo-completion" id="subtitle"]] +[[!template text="""to have a list of what you want""" start="00:12:23.200" video="mainVideo-completion" id="subtitle"]] +[[!template text="""so in this case for example for the demo""" start="00:12:25.800" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I'm going to make I'm using yes completion""" start="00:12:29.080" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and then the elisp completion point function provided by Emacs.""" start="00:12:32.760" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I combine them using cape cap super""" start="00:12:37.720" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and with that I create a completion point""" start="00:12:44.000" video="mainVideo-completion" id="subtitle"]] +[[!template text="""a new completion point function which I call cape list mode""" start="00:12:47.680" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and then I add this alias to the completion functions list""" start="00:12:53.160" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and with that it is enough snippet expansion""" start="00:12:58.520" video="mainVideo-completion" id="subtitle"]] +[[!template text="""if you want to have your snippets expanded automatically,""" start="00:13:05.720" video="mainVideo-completion" id="subtitle"]] +[[!template text="""you have to add an exit function to the, I'm sorry,""" start="00:13:14.480" video="mainVideo-completion" id="subtitle"]] +[[!template text="""to the completion properties""" start="00:13:28.000" video="mainVideo-completion" id="subtitle"]] +[[!template text="""yet another functionality you have to add""" start="00:13:30.880" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and to avoid this automatic selection to be too eager""" start="00:13:34.120" video="mainVideo-completion" id="subtitle"]] +[[!template text="""you need to add this set corfu""" start="00:13:39.200" video="mainVideo-completion" id="subtitle"]] +[[!template text="""on exact match to nil because otherwise""" start="00:13:43.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""you will always get the snippet expanded""" start="00:13:48.600" video="mainVideo-completion" id="subtitle"]] +[[!template text="""even if you don't want it Basically why?""" start="00:13:51.840" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Basically because this would be suboptimal""" start="00:13:55.040" video="mainVideo-completion" id="subtitle"]] +[[!template text="""because the key can appear as part of a variable name.""" start="00:13:57.640" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Another nice thing, I'm also creating my own themes.""" start="00:14:05.360" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I'm trying to have very sleek themes""" start="00:14:10.600" video="mainVideo-completion" id="subtitle"]] +[[!template text="""that only cover the modes that I use""" start="00:14:13.760" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and for that I have my own theme creator fork""" start="00:14:16.840" video="mainVideo-completion" id="subtitle"]] +[[!template text="""from the original team creator.""" start="00:14:22.960" video="mainVideo-completion" id="subtitle"]] +[[!template text="""In my personal work that I'm running at home,""" start="00:14:26.960" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I only have the faces for the modes I use.""" start="00:14:31.720" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I don't want to overload the thing""" start="00:14:34.160" video="mainVideo-completion" id="subtitle"]] +[[!template text="""with too much different things.""" start="00:14:38.160" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Looking at this, I really didn't need, as you will see now,""" start="00:14:41.840" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I don't need to add anything to my themes""" start="00:14:46.000" video="mainVideo-completion" id="subtitle"]] +[[!template text="""because the default faces for Corfu""" start="00:14:50.080" video="mainVideo-completion" id="subtitle"]] +[[!template text="""adapt quite well to most of the themes.""" start="00:14:53.280" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So if I go back to my checklist decently remax yes""" start="00:14:58.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""compiled the one you'll see""" start="00:15:02.840" video="mainVideo-completion" id="subtitle"]] +[[!template text="""for the for in the demo I'm doing is a master""" start="00:15:06.560" video="mainVideo-completion" id="subtitle"]] +[[!template text="""compiled the day before yesterday""" start="00:15:09.240" video="mainVideo-completion" id="subtitle"]] +[[!template text="""so and I don't need Corfu terminal there.""" start="00:15:12.000" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I need your snippet,""" start="00:15:15.200" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and you're going to see that in a second""" start="00:15:16.560" video="mainVideo-completion" id="subtitle"]] +[[!template text="""with a couple of snippets that I can expand here.""" start="00:15:20.160" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I don't want any reminiscence of a company in my setup,""" start="00:15:24.440" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and there's none. Well, actually, company kind is there""" start="00:15:27.480" video="mainVideo-completion" id="subtitle"]] +[[!template text="""you see the company there""" start="00:15:32.120" video="mainVideo-completion" id="subtitle"]] +[[!template text="""but it isn't if I buy companies strictly speaking""" start="00:15:33.720" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and for I don't want I need Eglot integration""" start="00:15:39.560" video="mainVideo-completion" id="subtitle"]] +[[!template text="""which I will also be showing you. Takeaways from all this,""" start="00:15:44.680" video="mainVideo-completion" id="subtitle"]] +[[!template text="""if you accept the extra burden""" start="00:15:50.440" video="mainVideo-completion" id="subtitle"]] +[[!template text="""of Corfu terminal for Emacs 30 or earlier Emacs 30s,""" start="00:15:55.280" video="mainVideo-completion" id="subtitle"]] +[[!template text="""it's not too difficult to get this set up running.""" start="00:16:02.240" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Corfu was easier to integrate and configure than Company,""" start="00:16:07.560" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and it's much lighter in terms""" start="00:16:11.760" video="mainVideo-completion" id="subtitle"]] +[[!template text="""of number of lines, et cetera. I learned a lot.""" start="00:16:13.800" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Well, actually, yes, with the help of Cape,""" start="00:16:20.040" video="mainVideo-completion" id="subtitle"]] +[[!template text="""but it is much lighter and much easier""" start="00:16:25.160" video="mainVideo-completion" id="subtitle"]] +[[!template text="""to integrate and configure.""" start="00:16:27.400" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I've learned a lot about computational functions in the process,""" start="00:16:30.120" video="mainVideo-completion" id="subtitle"]] +[[!template text="""which is, something that is always nice to learn new things""" start="00:16:34.880" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and the Nerd Icons Corfu makes the""" start="00:16:40.440" video="mainVideo-completion" id="subtitle"]] +[[!template text="""at least at this point in time I might get tired of it""" start="00:16:45.040" video="mainVideo-completion" id="subtitle"]] +[[!template text="""but at this point in time it makes""" start="00:16:48.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""a makes a very nice overall look""" start="00:16:50.400" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and look and feel for for Emacs.""" start="00:16:53.680" video="mainVideo-completion" id="subtitle"]] +[[!template text="""requests to whom it may concern cape has nice features""" start="00:16:58.040" video="mainVideo-completion" id="subtitle"]] +[[!template text="""that maybe could make their way into emacs""" start="00:17:02.040" video="mainVideo-completion" id="subtitle"]] +[[!template text="""i'm thinking basically about this cape super fun""" start="00:17:06.280" video="mainVideo-completion" id="subtitle"]] +[[!template text="""uh super function super cape function functionality""" start="00:17:09.160" video="mainVideo-completion" id="subtitle"]] +[[!template text="""which is very nice and overcomes the problem of linking""" start="00:17:12.400" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and this exclusive and all this kind of things""" start="00:17:18.800" video="mainVideo-completion" id="subtitle"]] +[[!template text="""that we have currently in Corfu""" start="00:17:22.240" video="mainVideo-completion" id="subtitle"]] +[[!template text="""with the computational point functions.""" start="00:17:26.480" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Corfu is also really nice to have and it's not too big""" start="00:17:28.440" video="mainVideo-completion" id="subtitle"]] +[[!template text="""so is there any possibility""" start="00:17:32.960" video="mainVideo-completion" id="subtitle"]] +[[!template text="""that it makes its way into Emacs?""" start="00:17:35.560" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Please keep Yarn Snippet alive.""" start="00:17:40.080" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I'm not saying here that my pull request should be there,""" start="00:17:42.400" video="mainVideo-completion" id="subtitle"]] +[[!template text="""but it would be nice if someone took a look""" start="00:17:48.560" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and made it part of Yarn Snippet.""" start="00:17:51.560" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And PS, currently on master,""" start="00:17:57.400" video="mainVideo-completion" id="subtitle"]] +[[!template text="""there's a lot of semantic highlighting going on,""" start="00:18:01.800" video="mainVideo-completion" id="subtitle"]] +[[!template text="""which is very, very nice. No criticism on that.""" start="00:18:07.800" video="mainVideo-completion" id="subtitle"]] +[[!template text="""but you may need to add to your snippet hook""" start="00:18:13.720" video="mainVideo-completion" id="subtitle"]] +[[!template text="""this simple local value for ElixirFontify semantically""" start="00:18:19.640" video="mainVideo-completion" id="subtitle"]] +[[!template text="""because at least in my case I felt that""" start="00:18:25.040" video="mainVideo-completion" id="subtitle"]] +[[!template text="""the face were a bit too pushy""" start="00:18:30.720" video="mainVideo-completion" id="subtitle"]] +[[!template text="""so I had to make a snippet mode""" start="00:18:32.440" video="mainVideo-completion" id="subtitle"]] +[[!template text="""use the old Emacs Lisp fontification.""" start="00:18:37.334" video="mainVideo-completion" id="subtitle"]] +[[!template text="""That's what we want to talk about.""" start="00:18:41.280" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Any initial reactions to this? There's a question here.""" start="00:18:46.280" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Someone asked, did you try Jasnepet Cup?""" start="00:18:55.000" video="mainVideo-completion" id="subtitle"]] +[[!template text="""If so, what did you miss from this approach? I tried that.""" start="00:18:59.160" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And it's not that I missed anything.""" start="00:19:05.960" video="mainVideo-completion" id="subtitle"]] +[[!template text="""It was more or less that I wanted to do it myself.""" start="00:19:11.240" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So I wanted to see what was behind it. That's my answer.""" start="00:19:16.520" video="mainVideo-completion" id="subtitle"]] +[[!template text="""There are lots of packages there,""" start="00:19:24.160" video="mainVideo-completion" id="subtitle"]] +[[!template text="""but I try to keep learning. So, this was a nice objective""" start="00:19:26.680" video="mainVideo-completion" id="subtitle"]] +[[!template text="""to learn a bit more about Emacs. And now, just a second.""" start="00:19:31.720" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Now, a small demo. This is the interaction.""" start="00:19:40.160" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And as you see, I have the snippet there.""" start="00:19:44.880" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and I have a couple of snippets.""" start="00:19:47.200" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So, for example, if I would like to say""" start="00:19:52.880" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I want to define a function, I can go like this.""" start="00:19:55.840" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And what you see here is that""" start="00:19:58.880" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I have two snippets appearing and then some variables.""" start="00:20:00.520" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So, I could go for def one or if I want a key map, for def key map,""" start="00:20:04.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""which would be something like this.""" start="00:20:09.880" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And then when I press enter, I get directly into the map""" start="00:20:11.480" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and I could say like, Show off mob.""" start="00:20:18.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Then it sets out directly a prefix T,""" start="00:20:26.720" video="mainVideo-completion" id="subtitle"]] +[[!template text="""which is something that I asked for in Emacs master.""" start="00:20:30.080" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So with prefix T, for those who prefix it true,""" start="00:20:35.040" video="mainVideo-completion" id="subtitle"]] +[[!template text="""for those who don't know it,""" start="00:20:39.480" video="mainVideo-completion" id="subtitle"]] +[[!template text="""it makes integrating this into keymaps in use package much easier.""" start="00:20:41.400" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So the next thing would be""" start="00:20:46.800" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I would like to write a description""" start="00:20:51.120" video="mainVideo-completion" id="subtitle"]] +[[!template text="""like for example a cool show off team up""" start="00:20:56.000" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and then my keys are my functions and that would be it""" start="00:21:05.000" video="mainVideo-completion" id="subtitle"]] +[[!template text="""but you also have like but also have like this define function""" start="00:21:08.600" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and of course you can say that's nice but there's no""" start="00:21:15.840" video="mainVideo-completion" id="subtitle"]] +[[!template text="""but you're not showing the integration""" start="00:21:21.680" video="mainVideo-completion" id="subtitle"]] +[[!template text="""with Eglot and you're right.""" start="00:21:23.800" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So I'm going just to open up a small program""" start="00:21:25.440" video="mainVideo-completion" id="subtitle"]] +[[!template text="""that I'm currently developing in Python.""" start="00:21:30.280" video="mainVideo-completion" id="subtitle"]] +[[!template text="""X is a tool to do things in MP3.""" start="00:21:33.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And here I would have like all these things.""" start="00:21:38.240" video="mainVideo-completion" id="subtitle"]] +[[!template text="""As you see here in the bottom,""" start="00:21:42.280" video="mainVideo-completion" id="subtitle"]] +[[!template text="""service running, pilot is local, eglot is active.""" start="00:21:45.360" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So I have my eglot stop and then I go down.""" start="00:21:49.080" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And I want to add a new argument here.""" start="00:21:57.920" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I would go like for it. I would go like add flag.""" start="00:22:00.520" video="mainVideo-completion" id="subtitle"]] +[[!template text="""For example, I would add a flag""" start="00:22:08.800" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and I would get a new flag to add here.""" start="00:22:13.760" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Oops. Of course, this is integrated into Eagle Lord.""" start="00:22:21.760" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So I'm getting your information about what I have.""" start="00:22:33.120" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I don't have OS, so I would need to import here,""" start="00:22:42.760" video="mainVideo-completion" id="subtitle"]] +[[!template text="""but I can go up just to see""" start="00:22:52.360" video="mainVideo-completion" id="subtitle"]] +[[!template text="""if I would like to, for example,""" start="00:22:59.280" video="mainVideo-completion" id="subtitle"]] +[[!template text="""create a new a regular expression""" start="00:23:01.760" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I'm getting this information that you see right now on call""" start="00:23:11.880" video="mainVideo-completion" id="subtitle"]] +[[!template text="""for I'm getting that from Eglot""" start="00:23:15.440" video="mainVideo-completion" id="subtitle"]] +[[!template text="""so you see there's the integration""" start="00:23:17.360" video="mainVideo-completion" id="subtitle"]] +[[!template text="""with with Eglot too in Python""" start="00:23:18.920" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I have Eglot and as you've seen""" start="00:23:20.840" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I also have the and all these are snippets fine""" start="00:23:23.560" video="mainVideo-completion" id="subtitle"]] +[[!template text="""more reactions and questions""" start="00:23:30.240" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Because that would be my show off here.""" start="00:23:38.200" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Any questions? Any more questions on the pad?""" start="00:23:54.240" video="mainVideo-completion" id="subtitle"]] +[[!template text="""but anyhow i'm going to try""" start="00:23:56.760" video="mainVideo-completion" id="subtitle"]] +[[!template text="""i'm going to try your snippet too""" start="00:24:11.480" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and i'm going to be answering this question more""" start="00:24:13.240" video="mainVideo-completion" id="subtitle"]] +[[!template text="""yeah time is good okay fine""" start="00:24:16.280" video="mainVideo-completion" id="subtitle"]] +[[!template text="""so I would be done if there's no more reactions""" start="00:24:21.080" video="mainVideo-completion" id="subtitle"]] +[[!template text="""thank you so much You're welcome.""" start="00:24:30.040" video="mainVideo-completion" id="subtitle"]] +[[!template text="""If you have any other questions, folks,""" start="00:24:33.240" video="mainVideo-completion" id="subtitle"]] +[[!template text="""you can always follow up on the pad.""" start="00:24:34.920" video="mainVideo-completion" id="subtitle"]] +[[!template text="""That was a great demonstration, and I'm sure lots of people""" start="00:24:37.080" video="mainVideo-completion" id="subtitle"]] +[[!template text="""are looking forward to trying it out.""" start="00:24:39.640" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Oh, I see some questions coming in now.""" start="00:24:43.520" video="mainVideo-completion" id="subtitle"]] +[[!template text="""You may go ahead if you like.""" start="00:24:45.240" video="mainVideo-completion" id="subtitle"]] +[[!template text="""okay fine uh what uh there's someone asking""" start="00:24:46.200" video="mainVideo-completion" id="subtitle"]] +[[!template text="""what do special characters in your snippets work well too""" start="00:24:51.880" video="mainVideo-completion" id="subtitle"]] +[[!template text="""what kind of i don't use special characters in the key name""" start="00:24:57.080" video="mainVideo-completion" id="subtitle"]] +[[!template text="""so in this case everything works quite nicely""" start="00:25:02.480" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and then i'm passing i'm passing the control to your snippets""" start="00:25:05.200" video="mainVideo-completion" id="subtitle"]] +[[!template text="""so if there's any problem in your snippets""" start="00:25:11.360" video="mainVideo-completion" id="subtitle"]] +[[!template text="""with uh special characters""" start="00:25:13.680" video="mainVideo-completion" id="subtitle"]] +[[!template text="""that i don't know I don't use that as a key.""" start="00:25:15.360" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I'm just using for key names.""" start="00:25:24.400" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I normally use a, I only use letters, but that should work.""" start="00:25:30.520" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I mean, let's, uh, let's give it a trial.""" start="00:25:38.400" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Let's kill here. Yes. I don't want, I don't want to touch this.""" start="00:25:43.960" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Ugh. let's go into this one uh""" start="00:25:58.040" video="mainVideo-completion" id="subtitle"]] +[[!template text="""let's say I'm going to define this for example like this""" start="00:26:01.040" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and I'm going to create a new snippet""" start="00:26:06.959" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I'm going to create a new snippet""" start="00:26:10.920" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and use this is for example when you look at this""" start="00:26:15.360" video="mainVideo-completion" id="subtitle"]] +[[!template text="""if you if you have the the venue uh the new""" start="00:26:18.120" video="mainVideo-completion" id="subtitle"]] +[[!template text="""sorry the new way of the the new emacs uh""" start="00:26:20.600" video="mainVideo-completion" id="subtitle"]] +[[!template text="""semantical highlighting working""" start="00:26:26.160" video="mainVideo-completion" id="subtitle"]] +[[!template text="""this would be quite cramped this is why i'm using""" start="00:26:31.640" video="mainVideo-completion" id="subtitle"]] +[[!template text="""this is why i said uh the snippet the""" start="00:26:39.200" video="mainVideo-completion" id="subtitle"]] +[[!template text="""so is this more or less what you're talking about""" start="00:26:43.040" video="mainVideo-completion" id="subtitle"]] +[[!template text="""This is what you're talking about. Snippet. Save the snippet.""" start="00:26:49.040" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So I'm going to... Snippet, load and put window.""" start="00:27:01.480" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Enable interaction mode. Yes, I'm going to save.""" start="00:27:15.480" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And I'm going to save that as FD test. on the file.""" start="00:27:21.280" video="mainVideo-completion" id="subtitle"]] +[[!template text="""No, I'm going to save this. Load. Load input window.""" start="00:27:24.440" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I'm going to put this in Emacs Lisp mode. I want to save it. No.""" start="00:27:41.480" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I'm going to write that directly into Emacs Lisp mode.""" start="00:27:53.680" video="mainVideo-completion" id="subtitle"]] +[[!template text="""going to go back into scratch buffer""" start="00:28:27.360" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and here I have it and we have it here but anyhow""" start="00:28:30.640" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and I'm just going to try to see if I feel like empty of course""" start="00:28:43.080" video="mainVideo-completion" id="subtitle"]] +[[!template text="""there's only one it will not show in Corfu,""" start="00:28:52.080" video="mainVideo-completion" id="subtitle"]] +[[!template text="""but I mean, I don't have any problems""" start="00:28:58.840" video="mainVideo-completion" id="subtitle"]] +[[!template text="""with that, as you see. Was that what you were meaning?""" start="00:29:01.520" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Yeah, I guess that works. Fine.""" start="00:29:21.000" video="mainVideo-completion" id="subtitle"]] +[[!template text="""All right, shall we wrap up here""" start="00:29:24.840" video="mainVideo-completion" id="subtitle"]] +[[!template text="""so that you can have supper""" start="00:29:29.040" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and have lunch and other things? Okay, fine for me.""" start="00:29:31.280" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I was hoping to see the drop down. Just a second.""" start="00:29:40.920" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I think we can do that too. Two seconds.""" start="00:29:46.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""How can we do that with a drop down?""" start="00:29:49.960" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Yeah, if I say something like this.""" start="00:29:52.560" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And then I go and save it.""" start="00:29:57.720" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And I'm going to go and write this""" start="00:30:04.920" video="mainVideo-completion" id="subtitle"]] +[[!template text="""into, with a second, fine.""" start="00:30:08.800" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And now I need to quit here, sorry.""" start="00:30:16.720" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And I'm going to come back in a second with another remark.""" start="00:30:19.920" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Well, I'm bringing back and now let's see.""" start="00:30:26.640" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Let's see what we have in your snippets.""" start="00:30:31.560" video="mainVideo-completion" id="subtitle"]] +[[!template text="""It's not there. Why not? Just a second. Let's see if I go.""" start="00:30:34.840" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I don't know if it matters that the name was""" start="00:30:44.160" video="mainVideo-completion" id="subtitle"]] +[[!template text="""that didn't have the characters in the beginning.""" start="00:30:47.840" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Just a second. I think I know what is happening here.""" start="00:30:52.600" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Do I have here? I have them. I'm going to clean.""" start="00:31:03.160" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Oh, you're back in your home directories. Why?""" start="00:31:21.440" video="mainVideo-completion" id="subtitle"]] +[[!template text="""CD dash to get back in. Yeah. That's right.""" start="00:31:28.880" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So you see how the name also has""" start="00:31:35.880" video="mainVideo-completion" id="subtitle"]] +[[!template text="""it doesn't have the same as the keys.""" start="00:31:37.800" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I don't know if that affects what shows up.""" start="00:31:39.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Yeah, we we can try that. That's a quick one. This is my.""" start="00:31:41.040" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Fine, now that I have this,""" start="00:31:49.400" video="mainVideo-completion" id="subtitle"]] +[[!template text="""which is going to be quicker, we check again.""" start="00:31:51.280" video="mainVideo-completion" id="subtitle"]] +[[!template text="""They both seem to be the same now""" start="00:31:55.360" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and I don't know if that affects, but anyhow, let's try it.""" start="00:31:57.920" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I go and then I look at the AR snippets, if it's there.""" start="00:32:03.080" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Yes, it is. Yeah, it's there.""" start="00:32:07.680" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And then if I say there, there you are. Oh, look at that.""" start="00:32:11.880" video="mainVideo-completion" id="subtitle"]] +[[!template text="""It doesn't seem to be affecting. Fantastic.""" start="00:32:18.560" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And by the way, it is there.""" start="00:32:24.160" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Yeah, I really should spend time""" start="00:32:32.120" video="mainVideo-completion" id="subtitle"]] +[[!template text="""getting more templates set up with Snippet.""" start="00:32:34.000" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I really love the fact that""" start="00:32:36.600" video="mainVideo-completion" id="subtitle"]] +[[!template text="""you can evaluate Emacs Lisp in it too.""" start="00:32:37.640" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Yeah, I mean, just to make it bigger,""" start="00:32:40.400" video="mainVideo-completion" id="subtitle"]] +[[!template text="""try that because if I go into my, for example,""" start="00:32:43.400" video="mainVideo-completion" id="subtitle"]] +[[!template text="""into my org mode stuff""" start="00:32:51.360" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and in my org mode, I go to the article,""" start="00:32:55.680" video="mainVideo-completion" id="subtitle"]] +[[!template text="""which is one of the big ones.""" start="00:32:59.440" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I have things like, for example,""" start="00:33:03.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I defined a couple of functions here to do if it's empty,""" start="00:33:06.200" video="mainVideo-completion" id="subtitle"]] +[[!template text="""if that is empty, just add a white space.""" start="00:33:10.720" video="mainVideo-completion" id="subtitle"]] +[[!template text="""If one is empty, add a white space.""" start="00:33:16.400" video="mainVideo-completion" id="subtitle"]] +[[!template text="""add a white space here so it becomes a comment.""" start="00:33:19.600" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I have functions for to do more things on that""" start="00:33:23.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and I also have like menus to see""" start="00:33:27.280" video="mainVideo-completion" id="subtitle"]] +[[!template text="""what language I want to choose for""" start="00:33:29.800" video="mainVideo-completion" id="subtitle"]] +[[!template text="""for my spell checking and so on so""" start="00:33:33.600" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and that's all that's as you see""" start="00:33:37.080" video="mainVideo-completion" id="subtitle"]] +[[!template text="""this is a Lisp being evaluated""" start="00:33:40.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""so yes do I really encourage you""" start="00:33:41.960" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I've also heard people use it,""" start="00:33:45.120" video="mainVideo-completion" id="subtitle"]] +[[!template text="""like, especially if they're working""" start="00:33:46.520" video="mainVideo-completion" id="subtitle"]] +[[!template text="""in different programming languages,""" start="00:33:47.800" video="mainVideo-completion" id="subtitle"]] +[[!template text="""so they can just have the syntax""" start="00:33:49.920" video="mainVideo-completion" id="subtitle"]] +[[!template text="""for the different languages""" start="00:33:52.400" video="mainVideo-completion" id="subtitle"]] +[[!template text="""be condensed into a consistent abbreviation. Yeah.""" start="00:33:54.360" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And look, this is my article. I have another.""" start="00:33:58.240" video="mainVideo-completion" id="subtitle"]] +[[!template text="""This is when I'm writing articles. I have another one.""" start="00:34:01.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I have another one for writing letters""" start="00:34:07.800" video="mainVideo-completion" id="subtitle"]] +[[!template text="""in org mode and so on. So, it's like letter, block,""" start="00:34:10.280" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and you have the complete infrastructure""" start="00:34:14.400" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and you don't have to type it by hand.""" start="00:34:16.560" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So, it's really, really nice.""" start="00:34:20.160" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Hmm, I think it might be nice to have""" start="00:34:22.880" video="mainVideo-completion" id="subtitle"]] +[[!template text="""a future Emacs carnival, you know,""" start="00:34:25.960" video="mainVideo-completion" id="subtitle"]] +[[!template text="""shared blogging theme thing be around""" start="00:34:28.080" video="mainVideo-completion" id="subtitle"]] +[[!template text="""having people share their snippets.""" start="00:34:31.240" video="mainVideo-completion" id="subtitle"]] +[[!template text="""No snippets and other things like for example,""" start="00:34:33.360" video="mainVideo-completion" id="subtitle"]] +[[!template text="""this is something stupid.""" start="00:34:39.360" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I'm switching my themes. All right.""" start="00:34:41.320" video="mainVideo-completion" id="subtitle"]] +[[!template text="""And of course, there you see,""" start="00:34:44.520" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I have also, this is also with,""" start="00:34:48.640" video="mainVideo-completion" id="subtitle"]] +[[!template text="""this is my way of switching buffers,""" start="00:34:51.440" video="mainVideo-completion" id="subtitle"]] +[[!template text="""which is with the shift control and tab,""" start="00:34:54.520" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I can switch different families""" start="00:34:58.160" video="mainVideo-completion" id="subtitle"]] +[[!template text="""and then when I'm in a family,""" start="00:35:00.560" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I can go and switch with control tab between the different,""" start="00:35:02.520" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I'm using tab line by the way. I'm not using the other one.""" start="00:35:07.000" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I'm using the old plain tab line with my themes.""" start="00:35:15.600" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So that's more or less everything.""" start="00:35:20.840" video="mainVideo-completion" id="subtitle"]] +[[!template text="""Thank you for the peek into your workflow.""" start="00:35:23.520" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I will work on getting the recordings for the live talks""" start="00:35:26.520" video="mainVideo-completion" id="subtitle"]] +[[!template text="""sorted out at some point very soon.""" start="00:35:30.760" video="mainVideo-completion" id="subtitle"]] +[[!template text="""I might even be able to get them out next week.""" start="00:35:33.920" video="mainVideo-completion" id="subtitle"]] +[[!template text="""So thanks again. All right. Have a nice supper. Same to you.""" start="00:35:37.840" video="mainVideo-completion" id="subtitle"]] + +</div>Questions or comments? Please e-mail [paaguti@gmail.com](mailto:paaguti@gmail.com?subject=Comment%20for%20EmacsConf%202023%20completion%3A%20corfu%2Byasnippet%3A%20Easier%20than%20I%20thought) <!-- End of emacsconf-publish-after-page --> diff --git a/2025/info/completion-before.md b/2025/info/completion-before.md index a4733e81..8ebf1db2 100644 --- a/2025/info/completion-before.md +++ b/2025/info/completion-before.md @@ -1,19 +1,13 @@ <!-- Automatically generated by emacsconf-publish-before-page --> - -The following image shows where the talk is in the schedule for Sun 2025-12-07. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="completion"> -<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2025/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:10 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2025/talks/modern" title="Some problems of modernizing Emacs" data-slug="modern"> <title> 9:10- 9:30 Some problems of modernizing Emacs</title> <rect x="13" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(38,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> modern</text></g></a> <a href="/2025/talks/reader" title="An introduction to the Emacs Reader" data-slug="reader"> <title> 9:40-10:15 An introduction to the Emacs Reader</title> <rect x="54" y="15" opacity="0.5" width="48" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(100,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> reader</text></g></a> <a href="/2025/talks/weights" title="Weightlifting tracking with Emacs on Android" data-slug="weights"> <title> 10:35-10:45 Weightlifting tracking with Emacs on Android</title> <rect x="130" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(141,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> weights</text></g></a> <a href="/2025/talks/completion" title="corfu+yasnippet: Easier than I thought" data-slug="completion"> <title> 11:05-11:25 corfu+yasnippet: Easier than I thought</title> <rect stroke-width="3" x="171" y="15" opacity="0.8" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(196,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> completion</text></g></a> <a href="/2025/talks/zettelkasten" title="Zettelkasten for regular Emacs hackers" data-slug="zettelkasten"> <title> 1:00- 1:25 Zettelkasten for regular Emacs hackers</title> <rect x="329" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(361,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> zettelkasten</text></g></a> <a href="/2025/talks/hyperboleqa" title="Questions and answers to help you fly with Hyperbole" data-slug="hyperboleqa"> <title> 1:45- 2:15 Questions and answers to help you fly with Hyperbole</title> <rect x="391" y="15" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(430,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperboleqa</text></g></a> <a href="/2025/talks/gardening" title="Gardening in Emacs: A Windows user's tale of tending, tweaking, and triumph" data-slug="gardening"> <title> 2:15- 2:35 Gardening in Emacs: A Windows user's tale of tending, tweaking, and triumph</title> <rect x="432" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(457,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gardening</text></g></a> <a href="/2025/talks/bookclub-tapas" title="Bookclub tapas" data-slug="bookclub-tapas"> <title> 2:45- 3:20 Bookclub tapas</title> <rect x="473" y="15" opacity="0.5" width="48" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(519,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> bookclub-tapas</text></g></a> <a href="/2025/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 3:40- 3:50 Sunday closing remarks</title> <rect x="549" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(560,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <g transform="translate(0,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 5 PM</text></g></svg> -</div> - [[!toc ]] -Format: 23-min talk ; Q&A: BigBlueButton conference room <https://media.emacsconf.org/2025/current/bbb-completion.html> Etherpad: <https://pad.emacsconf.org/2025-completion> +Format: 37-min talk ; Q&A: BigBlueButton conference room Etherpad: <https://pad.emacsconf.org/2025-completion> Etherpad: <https://pad.emacsconf.org/2025-completion> -Discuss on IRC: [#emacsconf-gen](https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen) -Status: Q&A open for participation -<div>Times in different time zones:</div><div class="times" start="2025-12-07T16:05:00Z" end="2025-12-07T16:25:00Z"><div class="conf-time">Sunday, Dec 7 2025, ~11:05 AM - 11:25 AM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Sunday, Dec 7 2025, ~10:05 AM - 10:25 AM CST (US/Central)<br />Sunday, Dec 7 2025, ~9:05 AM - 9:25 AM MST (US/Mountain)<br />Sunday, Dec 7 2025, ~8:05 AM - 8:25 AM PST (US/Pacific)<br />Sunday, Dec 7 2025, ~4:05 PM - 4:25 PM UTC <br />Sunday, Dec 7 2025, ~5:05 PM - 5:25 PM CET (Europe/Paris)<br />Sunday, Dec 7 2025, ~6:05 PM - 6:25 PM EET (Europe/Athens)<br />Sunday, Dec 7 2025, ~9:35 PM - 9:55 PM IST (Asia/Kolkata)<br />Monday, Dec 8 2025, ~12:05 AM - 12:25 AM +08 (Asia/Singapore)<br />Monday, Dec 8 2025, ~1:05 AM - 1:25 AM JST (Asia/Tokyo)</div></div><div><strong><a href="/2025/watch/gen/">Find out how to watch and participate</a></strong></div> +Status: TO_REVIEW_QA + -<div class="vid mainVideo"><video controls preload="none" id="mainVideo-completion"><source src="https://media.emacsconf.org/2025/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--backup.webm" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 22:42 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-completion">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/current/bbb-completion.html">Open public Q&A</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--backup.webm">Download --backup.webm (30MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--handout.pdf">Download --handout.pdf</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--intro.webm">Download --intro.webm</a></li></ul></div></div> +<div class="vid mainVideo"><video controls preload="none" id="mainVideo-completion"><source src="https://media.emacsconf.org/2025/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--original.m4v" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 36:04 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-completion">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--backup.webm">Download --backup.webm (30MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--handout.pdf">Download --handout.pdf</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--main.m4v">Download --main.m4v (95MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--main.opus">Download --main.opus (5.2MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--main.webm">Download --main.webm (48MB)</a></li><li><a href="https://youtu.be/vf-jntWJHBA">View on Youtube</a></li></ul></div></div> # Description <!-- End of emacsconf-publish-before-page -->
\ No newline at end of file diff --git a/2025/info/completion-nav.md b/2025/info/completion-nav.md index 6e648706..2305904c 100644 --- a/2025/info/completion-nav.md +++ b/2025/info/completion-nav.md @@ -1,7 +1,7 @@ <div class="talk-nav"> Back to the [[talks]] -Previous by time: <a href="/2025/talks/weights">Weightlifting tracking with Emacs on Android</a> -Next by time: <a href="/2025/talks/zettelkasten">Zettelkasten for regular Emacs hackers</a> -Track: <span class="sched-track General">General</span> - <strong><a href="https://emacsconf.org/2025/watch/gen">Watch</a></strong> +Previous by track: <a href="/2025/talks/weights">Weightlifting tracking with Emacs on Android</a> +Next by track: <a href="/2025/talks/zettelkasten">Zettelkasten for regular Emacs hackers</a> +Track: <span class="sched-track General">General</span> </div> diff --git a/2025/info/gardening-before.md b/2025/info/gardening-before.md index d94f7b4e..3bbaf7f9 100644 --- a/2025/info/gardening-before.md +++ b/2025/info/gardening-before.md @@ -1,15 +1,9 @@ <!-- Automatically generated by emacsconf-publish-before-page --> - -The following image shows where the talk is in the schedule for Sun 2025-12-07. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="gardening"> -<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2025/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:10 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2025/talks/modern" title="Some problems of modernizing Emacs" data-slug="modern"> <title> 9:10- 9:30 Some problems of modernizing Emacs</title> <rect x="13" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(38,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> modern</text></g></a> <a href="/2025/talks/reader" title="An introduction to the Emacs Reader" data-slug="reader"> <title> 9:40-10:15 An introduction to the Emacs Reader</title> <rect x="54" y="15" opacity="0.5" width="48" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(100,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> reader</text></g></a> <a href="/2025/talks/weights" title="Weightlifting tracking with Emacs on Android" data-slug="weights"> <title> 10:35-10:45 Weightlifting tracking with Emacs on Android</title> <rect x="130" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(141,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> weights</text></g></a> <a href="/2025/talks/completion" title="corfu+yasnippet: Easier than I thought" data-slug="completion"> <title> 11:05-11:25 corfu+yasnippet: Easier than I thought</title> <rect x="171" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(196,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> completion</text></g></a> <a href="/2025/talks/zettelkasten" title="Zettelkasten for regular Emacs hackers" data-slug="zettelkasten"> <title> 1:00- 1:25 Zettelkasten for regular Emacs hackers</title> <rect x="329" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(361,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> zettelkasten</text></g></a> <a href="/2025/talks/hyperboleqa" title="Questions and answers to help you fly with Hyperbole" data-slug="hyperboleqa"> <title> 1:45- 2:15 Questions and answers to help you fly with Hyperbole</title> <rect x="391" y="15" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(430,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperboleqa</text></g></a> <a href="/2025/talks/gardening" title="Gardening in Emacs: A Windows user's tale of tending, tweaking, and triumph" data-slug="gardening"> <title> 2:15- 2:35 Gardening in Emacs: A Windows user's tale of tending, tweaking, and triumph</title> <rect stroke-width="3" x="432" y="15" opacity="0.8" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(457,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gardening</text></g></a> <a href="/2025/talks/bookclub-tapas" title="Bookclub tapas" data-slug="bookclub-tapas"> <title> 2:45- 3:20 Bookclub tapas</title> <rect x="473" y="15" opacity="0.5" width="48" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(519,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> bookclub-tapas</text></g></a> <a href="/2025/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 3:40- 3:50 Sunday closing remarks</title> <rect x="549" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(560,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <g transform="translate(0,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 5 PM</text></g></svg> -</div> - [[!toc ]] Format: 18-min talk ; Q&A: ask questions via Etherpad/IRC; we'll e-mail the speaker and post answers on this wiki page after the conference Etherpad: <https://pad.emacsconf.org/2025-gardening> Etherpad: <https://pad.emacsconf.org/2025-gardening> -Discuss on IRC: [#emacsconf-gen](https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen) -Status: Q&A open for participation -<div>Times in different time zones:</div><div class="times" start="2025-12-07T19:15:00Z" end="2025-12-07T19:35:00Z"><div class="conf-time">Sunday, Dec 7 2025, ~2:15 PM - 2:35 PM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Sunday, Dec 7 2025, ~1:15 PM - 1:35 PM CST (US/Central)<br />Sunday, Dec 7 2025, ~12:15 PM - 12:35 PM MST (US/Mountain)<br />Sunday, Dec 7 2025, ~11:15 AM - 11:35 AM PST (US/Pacific)<br />Sunday, Dec 7 2025, ~7:15 PM - 7:35 PM UTC <br />Sunday, Dec 7 2025, ~8:15 PM - 8:35 PM CET (Europe/Paris)<br />Sunday, Dec 7 2025, ~9:15 PM - 9:35 PM EET (Europe/Athens)<br />Monday, Dec 8 2025, ~12:45 AM - 1:05 AM IST (Asia/Kolkata)<br />Monday, Dec 8 2025, ~3:15 AM - 3:35 AM +08 (Asia/Singapore)<br />Monday, Dec 8 2025, ~4:15 AM - 4:35 AM JST (Asia/Tokyo)</div></div><div><strong><a href="/2025/watch/gen/">Find out how to watch and participate</a></strong></div> +Status: TO_REVIEW_QA + diff --git a/2025/info/gardening-nav.md b/2025/info/gardening-nav.md index da717ec7..fc9f5c26 100644 --- a/2025/info/gardening-nav.md +++ b/2025/info/gardening-nav.md @@ -1,7 +1,7 @@ <div class="talk-nav"> Back to the [[talks]] -Previous by time: <a href="/2025/talks/hyperboleqa">Questions and answers to help you fly with Hyperbole</a> -Next by time: <a href="/2025/talks/bookclub-tapas">Bookclub tapas</a> -Track: <span class="sched-track General">General</span> - <strong><a href="https://emacsconf.org/2025/watch/gen">Watch</a></strong> +Previous by track: <a href="/2025/talks/hyperboleqa">Questions and answers to help you fly with Hyperbole</a> +Next by track: <a href="/2025/talks/bookclub-tapas">Bookclub tapas</a> +Track: <span class="sched-track General">General</span> </div> diff --git a/2025/info/gmail-after.md b/2025/info/gmail-after.md index d0b0ca1a..cd1b0cb3 100644 --- a/2025/info/gmail-after.md +++ b/2025/info/gmail-after.md @@ -600,6 +600,158 @@ [[!template text="""Let's talk about taming email.""" start="00:23:00.520" video="mainVideo-gmail" id="subtitle"]] [[!template text="""Thank you very much.""" start="00:23:02.760" video="mainVideo-gmail" id="subtitle"]] +</div><div class="transcript transcript-qanda"><a name="gmail-qanda-transcript"></a><h1>Q&A transcript (unedited)</h1> + +[[!template text="""I first of all want to address the feedback.""" start="00:00:00.000" video="qanda-gmail" id="subtitle"]] +[[!template text="""You're absolutely right. I should have stuck to one theme.""" start="00:00:02.220" video="qanda-gmail" id="subtitle"]] +[[!template text="""Unfortunately, I was using vanilla Emacs""" start="00:00:06.100" video="qanda-gmail" id="subtitle"]] +[[!template text="""and not my own config.""" start="00:00:09.100" video="qanda-gmail" id="subtitle"]] +[[!template text="""So to show that it can work, apologies for that.""" start="00:00:10.300" video="qanda-gmail" id="subtitle"]] +[[!template text="""I will keep that in mind the next time I do such a demo.""" start="00:00:13.460" video="qanda-gmail" id="subtitle"]] +[[!template text="""The first question, I mean, the feedback was considered""" start="00:00:18.420" video="qanda-gmail" id="subtitle"]] +[[!template text="""using similar background dark only""" start="00:00:21.540" video="qanda-gmail" id="subtitle"]] +[[!template text="""or light only throughout the help,""" start="00:00:23.820" video="qanda-gmail" id="subtitle"]] +[[!template text="""throughout the help with iStream.""" start="00:00:25.420" video="qanda-gmail" id="subtitle"]] +[[!template text="""The question, the first question is,""" start="00:00:29.860" video="qanda-gmail" id="subtitle"]] +[[!template text="""should I know all my contact email address by heart""" start="00:00:31.820" video="qanda-gmail" id="subtitle"]] +[[!template text="""or is some kind of contact list?""" start="00:00:35.420" video="qanda-gmail" id="subtitle"]] +[[!template text="""Unfortunately, right now, this is just to get started.""" start="00:00:38.500" video="qanda-gmail" id="subtitle"]] +[[!template text="""So it is, you have to know it by heart,""" start="00:00:42.020" video="qanda-gmail" id="subtitle"]] +[[!template text="""but I take this as feedback.""" start="00:00:45.860" video="qanda-gmail" id="subtitle"]] +[[!template text="""I will write this down for myself as a feature request.""" start="00:00:47.620" video="qanda-gmail" id="subtitle"]] +[[!template text="""I will make sure that all contacts""" start="00:00:51.340" video="qanda-gmail" id="subtitle"]] +[[!template text="""or some kind of tab support is present for email addresses.""" start="00:00:53.780" video="qanda-gmail" id="subtitle"]] +[[!template text="""I do not use the org system for replying so much.""" start="00:00:58.420" video="qanda-gmail" id="subtitle"]] +[[!template text="""I use it for knowing the context.""" start="00:01:03.660" video="qanda-gmail" id="subtitle"]] +[[!template text="""So I don't really reply using the org mode itself to reply.""" start="00:01:06.260" video="qanda-gmail" id="subtitle"]] +[[!template text="""So I did not focus on that feature. But this is doable.""" start="00:01:12.020" video="qanda-gmail" id="subtitle"]] +[[!template text="""We can certainly add a tab support""" start="00:01:16.020" video="qanda-gmail" id="subtitle"]] +[[!template text="""for any contacts that you may have, org contacts.""" start="00:01:18.740" video="qanda-gmail" id="subtitle"]] +[[!template text="""Or I don't know if there's any other package that does that.""" start="00:01:24.620" video="qanda-gmail" id="subtitle"]] +[[!template text="""So if it is, let me know.""" start="00:01:28.060" video="qanda-gmail" id="subtitle"]] +[[!template text="""Org contacts is what comes to my mind.""" start="00:01:29.700" video="qanda-gmail" id="subtitle"]] +[[!template text="""The second question is, what would it take""" start="00:01:33.900" video="qanda-gmail" id="subtitle"]] +[[!template text="""to use the org pieces of this with?""" start="00:01:36.740" video="qanda-gmail" id="subtitle"]] +[[!template text="""offline IMAP or other non Gmail mail setups.""" start="00:01:40.140" video="qanda-gmail" id="subtitle"]] +[[!template text="""I use fast mail.""" start="00:01:45.020" video="qanda-gmail" id="subtitle"]] +[[!template text="""Currently, I use only Gmail because that's my workflow""" start="00:01:46.060" video="qanda-gmail" id="subtitle"]] +[[!template text="""and it works with a Gmail API.""" start="00:01:52.780" video="qanda-gmail" id="subtitle"]] +[[!template text="""So which means the Python script that goes along with it""" start="00:01:58.020" video="qanda-gmail" id="subtitle"]] +[[!template text="""only works with Gmail and no other system for now.""" start="00:02:00.860" video="qanda-gmail" id="subtitle"]] +[[!template text="""This is the current package.""" start="00:02:05.180" video="qanda-gmail" id="subtitle"]] +[[!template text="""However, yes, I will note this down.""" start="00:02:06.940" video="qanda-gmail" id="subtitle"]] +[[!template text="""I don't know what it will take""" start="00:02:09.460" video="qanda-gmail" id="subtitle"]] +[[!template text="""to include this offline IMAP setup""" start="00:02:12.060" video="qanda-gmail" id="subtitle"]] +[[!template text="""or any other non-Gmail setup.""" start="00:02:16.380" video="qanda-gmail" id="subtitle"]] +[[!template text="""Let me tinker with it and find out what it will involve.""" start="00:02:18.500" video="qanda-gmail" id="subtitle"]] +[[!template text="""So give me some time, maybe I will get to it.""" start="00:02:23.140" video="qanda-gmail" id="subtitle"]] +[[!template text="""Sorry, sorry. Oops. Okay. Okay. May I continue?""" start="00:02:30.020" video="qanda-gmail" id="subtitle"]] +[[!template text="""Hi, Bella. Yes, please. Sorry for the confusion.""" start="00:02:43.740" video="qanda-gmail" id="subtitle"]] +[[!template text="""Hi, Amin. All right. So the next one is,""" start="00:02:46.740" video="qanda-gmail" id="subtitle"]] +[[!template text="""do you worry about sending some info to a wrong person""" start="00:02:53.180" video="qanda-gmail" id="subtitle"]] +[[!template text="""due to some unseen technical issues,""" start="00:02:56.940" video="qanda-gmail" id="subtitle"]] +[[!template text="""for example, due to memory overflow?""" start="00:02:58.900" video="qanda-gmail" id="subtitle"]] +[[!template text="""Again, I have not been focusing""" start="00:03:03.300" video="qanda-gmail" id="subtitle"]] +[[!template text="""on replying from within Emacs.""" start="00:03:05.740" video="qanda-gmail" id="subtitle"]] +[[!template text="""so much, or using my package,""" start="00:03:07.140" video="qanda-gmail" id="subtitle"]] +[[!template text="""I usually do it through the Gmail interface.""" start="00:03:09.660" video="qanda-gmail" id="subtitle"]] +[[!template text="""I usually use this to get the context within the project,""" start="00:03:13.020" video="qanda-gmail" id="subtitle"]] +[[!template text="""download all the emails, make sure that I have acted on emails""" start="00:03:18.300" video="qanda-gmail" id="subtitle"]] +[[!template text="""which Gmail doesn't do so well.""" start="00:03:22.060" video="qanda-gmail" id="subtitle"]] +[[!template text="""I don't know what the action is.""" start="00:03:23.860" video="qanda-gmail" id="subtitle"]] +[[!template text="""I don't want to use Gmail as a to-do list.""" start="00:03:25.100" video="qanda-gmail" id="subtitle"]] +[[!template text="""Org Mode is great at this.""" start="00:03:28.500" video="qanda-gmail" id="subtitle"]] +[[!template text="""Any work I have to do, any reports I have to compile,""" start="00:03:30.147" video="qanda-gmail" id="subtitle"]] +[[!template text="""all of that Org Mode does. I don't use it for replying""" start="00:03:32.647" video="qanda-gmail" id="subtitle"]] +[[!template text="""or doing its actions around the email, which I focus on.""" start="00:03:39.100" video="qanda-gmail" id="subtitle"]] +[[!template text="""But point taken, let me see""" start="00:03:43.460" video="qanda-gmail" id="subtitle"]] +[[!template text="""if there is a like Gmail offers.""" start="00:03:45.860" video="qanda-gmail" id="subtitle"]] +[[!template text="""you know, for 10 seconds or something you can still undo""" start="00:03:47.780" video="qanda-gmail" id="subtitle"]] +[[!template text="""so that it doesn't go out of your email""" start="00:03:52.220" video="qanda-gmail" id="subtitle"]] +[[!template text="""if you made a mistake or if there's a problem with your,""" start="00:03:54.740" video="qanda-gmail" id="subtitle"]] +[[!template text="""you know, Gmail or email sending should sort of stop.""" start="00:03:59.660" video="qanda-gmail" id="subtitle"]] +[[!template text="""Let me think about that.""" start="00:04:04.620" video="qanda-gmail" id="subtitle"]] +[[!template text="""So, I've not paid attention to that,""" start="00:04:07.020" video="qanda-gmail" id="subtitle"]] +[[!template text="""but I'll take your point.""" start="00:04:09.397" video="qanda-gmail" id="subtitle"]] +[[!template text="""The next one, you should say what org-gmail is""" start="00:04:11.105" video="qanda-gmail" id="subtitle"]] +[[!template text="""and not its goals and non-goals,""" start="00:04:17.540" video="qanda-gmail" id="subtitle"]] +[[!template text="""which in this case is more helpful""" start="00:04:20.220" video="qanda-gmail" id="subtitle"]] +[[!template text="""to help people get their head around this.""" start="00:04:22.020" video="qanda-gmail" id="subtitle"]] +[[!template text="""You had some good ones in your slides,""" start="00:04:24.740" video="qanda-gmail" id="subtitle"]] +[[!template text="""but not your GitHub page. Okay, great.""" start="00:04:26.380" video="qanda-gmail" id="subtitle"]] +[[!template text="""Okay, so I will definitely take""" start="00:04:28.860" video="qanda-gmail" id="subtitle"]] +[[!template text="""the information from the slides""" start="00:04:30.580" video="qanda-gmail" id="subtitle"]] +[[!template text="""and give it to, I mean, put it back into my readme.""" start="00:04:33.780" video="qanda-gmail" id="subtitle"]] +[[!template text="""It's been a while since I updated ReadMe,""" start="00:04:38.500" video="qanda-gmail" id="subtitle"]] +[[!template text="""and you're absolutely right.""" start="00:04:40.180" video="qanda-gmail" id="subtitle"]] +[[!template text="""It probably doesn't say why you need org email.""" start="00:04:42.180" video="qanda-gmail" id="subtitle"]] +[[!template text="""So that would be definitely something that I can do.""" start="00:04:45.780" video="qanda-gmail" id="subtitle"]] +[[!template text="""Wanting to add the goal is an easier way""" start="00:04:49.060" video="qanda-gmail" id="subtitle"]] +[[!template text="""to add one-off email into org mode""" start="00:04:51.660" video="qanda-gmail" id="subtitle"]] +[[!template text="""and org agenda workflows and first.""" start="00:04:53.820" video="qanda-gmail" id="subtitle"]] +[[!template text="""Love seeing a different way""" start="00:04:56.420" video="qanda-gmail" id="subtitle"]] +[[!template text="""of looking at and working with email.""" start="00:04:57.780" video="qanda-gmail" id="subtitle"]] +[[!template text="""Thank you so much for that.""" start="00:04:59.540" video="qanda-gmail" id="subtitle"]] +[[!template text="""Yes, that's the idea here is if we can integrate email""" start="00:05:00.660" video="qanda-gmail" id="subtitle"]] +[[!template text="""and I think there is memacs, you know,""" start="00:05:05.620" video="qanda-gmail" id="subtitle"]] +[[!template text="""that's one package that I love.""" start="00:05:08.340" video="qanda-gmail" id="subtitle"]] +[[!template text="""It can integrate all of the other stuff into your org mode.""" start="00:05:11.580" video="qanda-gmail" id="subtitle"]] +[[!template text="""That worked, but I like email and dealing with email.""" start="00:05:17.100" video="qanda-gmail" id="subtitle"]] +[[!template text="""That is my single source of truth outside of org mode.""" start="00:05:21.540" video="qanda-gmail" id="subtitle"]] +[[!template text="""So that's the only one I need for now.""" start="00:05:26.100" video="qanda-gmail" id="subtitle"]] +[[!template text="""And I like seeing the action""" start="00:05:28.820" video="qanda-gmail" id="subtitle"]] +[[!template text="""and the history on my org agenda.""" start="00:05:32.660" video="qanda-gmail" id="subtitle"]] +[[!template text="""That's one of the reasons why I built this package.""" start="00:05:35.100" video="qanda-gmail" id="subtitle"]] +[[!template text="""And I hope that answers that.""" start="00:05:37.260" video="qanda-gmail" id="subtitle"]] +[[!template text="""There is one more saying, how does it handle attachments?""" start="00:05:43.700" video="qanda-gmail" id="subtitle"]] +[[!template text="""If it doesn't, do you have a plan to add this feature?""" start="00:05:49.460" video="qanda-gmail" id="subtitle"]] +[[!template text="""Attachments is a bit tricky for me right now""" start="00:05:52.820" video="qanda-gmail" id="subtitle"]] +[[!template text="""because I don't understand org-attach so well.""" start="00:05:55.860" video="qanda-gmail" id="subtitle"]] +[[!template text="""I don't use org-attach, but you're absolutely right.""" start="00:05:58.620" video="qanda-gmail" id="subtitle"]] +[[!template text="""It does make sense to have org-attach also.""" start="00:06:01.300" video="qanda-gmail" id="subtitle"]] +[[!template text="""And it's definitely in my plan to include org-attach.""" start="00:06:05.340" video="qanda-gmail" id="subtitle"]] +[[!template text="""I don't think I talked about it in my talk,""" start="00:06:08.260" video="qanda-gmail" id="subtitle"]] +[[!template text="""but I definitely have that idea.""" start="00:06:12.460" video="qanda-gmail" id="subtitle"]] +[[!template text="""First I have to wrap myself, my head""" start="00:06:14.740" video="qanda-gmail" id="subtitle"]] +[[!template text="""around the idea of org-attach and how it,""" start="00:06:17.340" video="qanda-gmail" id="subtitle"]] +[[!template text="""because I don't like, what I don't like about org-attach,""" start="00:06:21.340" video="qanda-gmail" id="subtitle"]] +[[!template text="""I'll tell you, is default is,""" start="00:06:26.060" video="qanda-gmail" id="subtitle"]] +[[!template text="""it opens a new folder called data""" start="00:06:28.900" video="qanda-gmail" id="subtitle"]] +[[!template text="""and there are, it uses a unique code""" start="00:06:31.700" video="qanda-gmail" id="subtitle"]] +[[!template text="""and there are subfolders in it, which I do not appreciate""" start="00:06:34.380" video="qanda-gmail" id="subtitle"]] +[[!template text="""because I want all those files also to be within the same context.""" start="00:06:37.860" video="qanda-gmail" id="subtitle"]] +[[!template text="""of my project or area.""" start="00:06:43.660" video="qanda-gmail" id="subtitle"]] +[[!template text="""And that's one of the reasons I, and I'm sure you can customize that.""" start="00:06:45.780" video="qanda-gmail" id="subtitle"]] +[[!template text="""There are ways to do that,""" start="00:06:50.860" video="qanda-gmail" id="subtitle"]] +[[!template text="""but I have to pay more attention to this.""" start="00:06:52.100" video="qanda-gmail" id="subtitle"]] +[[!template text="""Right now, all of the attachments are dealt with in Gmail,""" start="00:06:55.380" video="qanda-gmail" id="subtitle"]] +[[!template text="""which is not a good system to handle that""" start="00:06:58.730" video="qanda-gmail" id="subtitle"]] +[[!template text="""because it's so out of context.""" start="00:07:01.220" video="qanda-gmail" id="subtitle"]] +[[!template text="""And there are like 25 contexts in the same inbox,""" start="00:07:03.580" video="qanda-gmail" id="subtitle"]] +[[!template text="""which I do not appreciate.""" start="00:07:06.380" video="qanda-gmail" id="subtitle"]] +[[!template text="""So even the attachments are like that.""" start="00:07:08.420" video="qanda-gmail" id="subtitle"]] +[[!template text="""But Org Mode has a much better way of handling it,""" start="00:07:11.060" video="qanda-gmail" id="subtitle"]] +[[!template text="""or Emacs has a much better way of handling it.""" start="00:07:13.540" video="qanda-gmail" id="subtitle"]] +[[!template text="""I will definitely put my attention""" start="00:07:16.100" video="qanda-gmail" id="subtitle"]] +[[!template text="""to this and get this feature out.""" start="00:07:20.340" video="qanda-gmail" id="subtitle"]] +[[!template text="""This is all customer feedback for me, so to speak.""" start="00:07:22.220" video="qanda-gmail" id="subtitle"]] +[[!template text="""So I would definitely request all of you to try it out.""" start="00:07:25.300" video="qanda-gmail" id="subtitle"]] +[[!template text="""And tell me, you know, good""" start="00:07:30.180" video="qanda-gmail" id="subtitle"]] +[[!template text="""or bad things about the package.""" start="00:07:32.180" video="qanda-gmail" id="subtitle"]] +[[!template text="""And you've been very candid so far. Please be so.""" start="00:07:34.940" video="qanda-gmail" id="subtitle"]] +[[!template text="""So, you know, so be it that be candid with your feedback""" start="00:07:38.620" video="qanda-gmail" id="subtitle"]] +[[!template text="""and I will get to know how to go with this.""" start="00:07:43.540" video="qanda-gmail" id="subtitle"]] +[[!template text="""With so much, I mean, I'm not an expert in Elisp,""" start="00:07:46.700" video="qanda-gmail" id="subtitle"]] +[[!template text="""but I have a workaround, which is I have generative AI support,""" start="00:07:49.700" video="qanda-gmail" id="subtitle"]] +[[!template text="""which has done well with me.""" start="00:07:57.020" video="qanda-gmail" id="subtitle"]] +[[!template text="""I test the software better, so I can use the generative AI""" start="00:07:58.340" video="qanda-gmail" id="subtitle"]] +[[!template text="""to help me with the coding,""" start="00:08:03.660" video="qanda-gmail" id="subtitle"]] +[[!template text="""but I can test it so that it works for me.""" start="00:08:05.140" video="qanda-gmail" id="subtitle"]] +[[!template text="""And I would request your help""" start="00:08:08.540" video="qanda-gmail" id="subtitle"]] +[[!template text="""also in testing this software.""" start="00:08:10.740" video="qanda-gmail" id="subtitle"]] +[[!template text="""So for sure. Thank you so much for your question.""" start="00:08:13.260" video="qanda-gmail" id="subtitle"]] +[[!template text="""If there are any more, I can definitely answer them.""" start="00:08:16.180" video="qanda-gmail" id="subtitle"]] + </div>Questions or comments? Please e-mail [bala@balaramadurai.net](mailto:bala@balaramadurai.net?subject=Comment%20for%20EmacsConf%202023%20gmail%3A%20org-gmail%3A%20A%20deep%20integration%20of%20Gmail%20into%20your%20Org%20Mode) diff --git a/2025/info/gmail-before.md b/2025/info/gmail-before.md index 556e898b..ffb75f0c 100644 --- a/2025/info/gmail-before.md +++ b/2025/info/gmail-before.md @@ -1,18 +1,14 @@ <!-- Automatically generated by emacsconf-publish-before-page --> - -The following image shows where the talk is in the schedule for Sat 2025-12-06. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="gmail"> -<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2025/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:10 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2025/talks/org-babel" title="Making Org-Babel reactive" data-slug="org-babel"> <title> 9:10- 9:20 Making Org-Babel reactive</title> <rect x="13" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(24,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> org-babel</text></g></a> <a href="/2025/talks/reference" title="Emacs as a fully-fledged reference manager" data-slug="reference"> <title> 9:30- 9:55 Emacs as a fully-fledged reference manager</title> <rect x="41" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(73,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> reference</text></g></a> <a href="/2025/talks/gmail" title="org-gmail: A deep integration of Gmail into your Org Mode" data-slug="gmail"> <title> 10:15-10:40 org-gmail: A deep integration of Gmail into your Org Mode</title> <rect stroke-width="3" x="102" y="15" opacity="0.8" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(134,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gmail</text></g></a> <a href="/2025/talks/gnus" title="Reading and writing emails in GNU Emacs with Gnus" data-slug="gnus"> <title> 10:50-11:15 Reading and writing emails in GNU Emacs with Gnus</title> <rect x="150" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(182,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gnus</text></g></a> <a href="/2025/talks/latex" title="LaTeX export in org-mode: the overhaul" data-slug="latex"> <title> 11:25-11:45 LaTeX export in org-mode: the overhaul</title> <rect x="199" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(224,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> latex</text></g></a> <a href="/2025/talks/calc" title="Basic Calc functionality for engineering or electronics" data-slug="calc"> <title> 1:00- 1:25 Basic Calc functionality for engineering or electronics</title> <rect x="329" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(361,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> calc</text></g></a> <a href="/2025/talks/blee-lcnt" title="Blee-LCNT: An Emacs-centered content production and self-publication framework" data-slug="blee-lcnt"> <title> 1:35- 2:15 Blee-LCNT: An Emacs-centered content production and self-publication framework</title> <rect x="377" y="15" opacity="0.5" width="54" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(429,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> blee-lcnt</text></g></a> <a href="/2025/talks/greader" title="GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence" data-slug="greader"> <title> 2:35- 2:40 GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence</title> <rect x="459" y="15" opacity="0.5" width="6" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(463,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> greader</text></g></a> <a href="/2025/talks/open-mic" title="Open session" data-slug="open-mic"> <title> 2:50- 3:40 Open session</title> <rect x="480" y="15" opacity="0.5" width="68" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(546,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> open-mic</text></g></a> <a href="/2025/talks/sat-close" title="Saturday closing remarks / open session" data-slug="sat-close"> <title> 4:00- 4:10 Saturday closing remarks / open session</title> <rect x="576" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(587,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2025/talks/schemacs" title="One year progress update Schemacs (formerly Gypsum)" data-slug="schemacs"> <title> 9:30- 9:55 One year progress update Schemacs (formerly Gypsum)</title> <rect x="41" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(73,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> schemacs</text></g></a> <a href="/2025/talks/juicemacs" title="Juicemacs: exploring speculative JIT compilation for ELisp in Java" data-slug="juicemacs"> <title> 10:15-10:35 Juicemacs: exploring speculative JIT compilation for ELisp in Java</title> <rect x="102" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(127,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> juicemacs</text></g></a> <a href="/2025/talks/swanky" title="Swanky Python: Interactive development for Python" data-slug="swanky"> <title> 10:45-11:10 Swanky Python: Interactive development for Python</title> <rect x="144" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(176,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> swanky</text></g></a> <a href="/2025/talks/python" title="Interactive Python programming in Emacs" data-slug="python"> <title> 11:20-11:40 Interactive Python programming in Emacs</title> <rect x="192" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(217,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <a href="/2025/talks/llm" title="Emacs, editors, and LLM driven workflows" data-slug="llm"> <title> 1:00- 1:25 Emacs, editors, and LLM driven workflows</title> <rect x="329" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(361,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> llm</text></g></a> <a href="/2025/talks/private-ai" title="Emacs and private AI: a great match" data-slug="private-ai"> <title> 1:45- 2:05 Emacs and private AI: a great match</title> <rect x="391" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(416,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> private-ai</text></g></a> <a href="/2025/talks/commonlisp" title="Common Lisp images communicating like-a-human through shared Emacs slime and eev" data-slug="commonlisp"> <title> 2:25- 2:55 Common Lisp images communicating like-a-human through shared Emacs slime and eev</title> <rect x="446" y="75" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(485,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> commonlisp</text></g></a> <a href="/2025/talks/graphics" title="Modern Emacs/Elisp hardware/software accelerated graphics" data-slug="graphics"> <title> 3:05- 3:30 Modern Emacs/Elisp hardware/software accelerated graphics</title> <rect x="500" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(532,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> graphics</text></g></a> <g transform="translate(0,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 5 PM</text></g></svg> -</div> - [[!toc ]] -Format: 24-min talk ; Q&A: BigBlueButton conference room <https://media.emacsconf.org/2025/current/bbb-gmail.html> Etherpad: <https://pad.emacsconf.org/2025-gmail> +Format: 24-min talk ; Q&A: BigBlueButton conference room Etherpad: <https://pad.emacsconf.org/2025-gmail> Etherpad: <https://pad.emacsconf.org/2025-gmail> -Discuss on IRC: [#emacsconf-gen](https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen) -Status: Q&A finished, IRC and pad will be archived on this page +Status: TO_REVIEW_QA + +# Talk <div class="vid mainVideo"><video controls preload="none" id="mainVideo-gmail"><source src="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2025/captions/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--main--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="mainVideo-gmail" data=""" 00:00.000 Before we begin @@ -41,6 +37,10 @@ Status: Q&A finished, IRC and pad will be archived on this page 22:32.940 The big picture 22:41.120 Let's connect -"""]]<div></div>Duration: 23:04 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-gmail">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/current/bbb-gmail.html">Open public Q&A</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--main.opus">Download --main.opus (20MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--main.webm">Download --main.webm (57MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--script.txt">Download --script.txt</a></li><li><a href="https://youtu.be/8P93UBYrUB8">View on Youtube</a></li></ul></div></div> +"""]]<div></div>Duration: 23:04 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-gmail">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--main.opus">Download --main.opus (20MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--main.webm">Download --main.webm (57MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--script.txt">Download --script.txt</a></li><li><a href="https://youtu.be/8P93UBYrUB8">View on Youtube</a></li></ul></div></div> + +# Q&A + +<div class="vid qanda"><video controls preload="none" id="qanda-gmail"><source src="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--answers.m4v" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--answers.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 24:55 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-gmail">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--answers.json">Download --answers.json</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--answers.m4v">Download --answers.m4v (43MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--answers.tsv">Download --answers.tsv</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--answers.txt">Download --answers.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--answers.webm">Download --answers.webm (18MB)</a></li></ul></div></div> # Description <!-- End of emacsconf-publish-before-page -->
\ No newline at end of file diff --git a/2025/info/gmail-nav.md b/2025/info/gmail-nav.md index 7120d450..57a28521 100644 --- a/2025/info/gmail-nav.md +++ b/2025/info/gmail-nav.md @@ -1,7 +1,7 @@ <div class="talk-nav"> Back to the [[talks]] -Previous by time: <a href="/2025/talks/reference">Emacs as a fully-fledged reference manager</a> -Next by time: <a href="/2025/talks/juicemacs">Juicemacs: exploring speculative JIT compilation for ELisp in Java</a> -Track: <span class="sched-track General">General</span> - <strong><a href="https://emacsconf.org/2025/watch/gen">Watch</a></strong> +Previous by track: <a href="/2025/talks/reference">Emacs as a fully-fledged reference manager</a> +Next by track: <a href="/2025/talks/gnus">Reading and writing emails in GNU Emacs with Gnus</a> +Track: <span class="sched-track General">General</span> </div> diff --git a/2025/info/gnus-after.md b/2025/info/gnus-after.md index bb76010d..f29245e8 100644 --- a/2025/info/gnus-after.md +++ b/2025/info/gnus-after.md @@ -457,7 +457,334 @@ Captioner: sachac -Questions or comments? Please e-mail [bandali@gnu.org](mailto:bandali@gnu.org?subject=Comment%20for%20EmacsConf%202023%20gnus%3A%20Reading%20and%20writing%20emails%20in%20GNU%20Emacs%20with%20Gnus) +<div class="transcript transcript-qanda"><a name="gnus-qanda-transcript"></a><h1>Q&A transcript (unedited)</h1> + +[[!template text="""Okay, so first question.""" start="00:00:00.000" video="qanda-gnus" id="subtitle"]] +[[!template text="""I noticed that it took considerable amount of time to send email.""" start="00:00:02.118" video="qanda-gnus" id="subtitle"]] +[[!template text="""Is it possible to configure to use an external SMTP client""" start="00:00:05.038" video="qanda-gnus" id="subtitle"]] +[[!template text="""to send emails? Right, yes, it definitely is possible.""" start="00:00:09.638" video="qanda-gnus" id="subtitle"]] +[[!template text="""In fact, in the past, I've used, I believe, MSMTP,""" start="00:00:14.358" video="qanda-gnus" id="subtitle"]] +[[!template text="""which is a small SMTP implementation""" start="00:00:18.958" video="qanda-gnus" id="subtitle"]] +[[!template text="""that's independent of Emacs. So you can do that.""" start="00:00:23.318" video="qanda-gnus" id="subtitle"]] +[[!template text="""It's also possible to, pointed""" start="00:00:27.438" video="qanda-gnus" id="subtitle"]] +[[!template text="""to have it use the sendmail binary on your system.""" start="00:00:30.758" video="qanda-gnus" id="subtitle"]] +[[!template text="""If you have a local MTA mail transfer agents""" start="00:00:34.998" video="qanda-gnus" id="subtitle"]] +[[!template text="""like Exim or Postfix installed and configure.""" start="00:00:41.638" video="qanda-gnus" id="subtitle"]] +[[!template text="""I believe that should also dispatch""" start="00:00:46.118" video="qanda-gnus" id="subtitle"]] +[[!template text="""and return instantaneously""" start="00:00:50.038" video="qanda-gnus" id="subtitle"]] +[[!template text="""and then have Postfix or Exim""" start="00:00:51.998" video="qanda-gnus" id="subtitle"]] +[[!template text="""deal with sending the message on their terms""" start="00:00:55.158" video="qanda-gnus" id="subtitle"]] +[[!template text="""without blocking Emacs. I don't know, it depends.""" start="00:00:57.998" video="qanda-gnus" id="subtitle"]] +[[!template text="""Normally it's not always that slow. Sometimes it is.""" start="00:01:02.198" video="qanda-gnus" id="subtitle"]] +[[!template text="""I think it also depends on the load on your mail server.""" start="00:01:04.918" video="qanda-gnus" id="subtitle"]] +[[!template text="""Sometimes it's instantaneous, sometimes not.""" start="00:01:11.918" video="qanda-gnus" id="subtitle"]] +[[!template text="""So I hope that helps.""" start="00:01:14.918" video="qanda-gnus" id="subtitle"]] +[[!template text="""Let's see, is the Dovecot workaround""" start="00:01:17.838" video="qanda-gnus" id="subtitle"]] +[[!template text="""actually a solution?""" start="00:01:20.598" video="qanda-gnus" id="subtitle"]] +[[!template text="""I haven't tried it, but if it works smoothly,""" start="00:01:21.918" video="qanda-gnus" id="subtitle"]] +[[!template text="""I'll surely do so. It is, it really is.""" start="00:01:24.438" video="qanda-gnus" id="subtitle"]] +[[!template text="""I've actually been using that setup for many years.""" start="00:01:27.478" video="qanda-gnus" id="subtitle"]] +[[!template text="""I can't remember. Oh, I believe it's Eric Abramson""" start="00:01:31.638" video="qanda-gnus" id="subtitle"]] +[[!template text="""who first shared instructions on how to set this up.""" start="00:01:45.838" video="qanda-gnus" id="subtitle"]] +[[!template text="""Let's see if I can find it. There we go. Yeah, this is it.""" start="00:01:49.078" video="qanda-gnus" id="subtitle"]] +[[!template text="""I'll share this on IRC as well.""" start="00:02:04.038" video="qanda-gnus" id="subtitle"]] +[[!template text="""Yeah, so Dovecot is very, very efficient.""" start="00:02:06.958" video="qanda-gnus" id="subtitle"]] +[[!template text="""It's written in C. And yeah, when you point Gnu's""" start="00:02:15.518" video="qanda-gnus" id="subtitle"]] +[[!template text="""to an IMAP server like Dovecot,""" start="00:02:21.558" video="qanda-gnus" id="subtitle"]] +[[!template text="""dealing with email is pretty instantaneous.""" start="00:02:23.238" video="qanda-gnus" id="subtitle"]] +[[!template text="""This article or post by Eric is great.""" start="00:02:25.038" video="qanda-gnus" id="subtitle"]] +[[!template text="""Although I will say that""" start="00:02:29.158" video="qanda-gnus" id="subtitle"]] +[[!template text="""there was a recent major release of Dovecot.""" start="00:02:32.398" video="qanda-gnus" id="subtitle"]] +[[!template text="""I can't remember if it's 2.4 or 2.5.""" start="00:02:34.998" video="qanda-gnus" id="subtitle"]] +[[!template text="""and it's a breaking change.""" start="00:02:37.878" video="qanda-gnus" id="subtitle"]] +[[!template text="""They change a lot of the configuration syntax,""" start="00:02:39.598" video="qanda-gnus" id="subtitle"]] +[[!template text="""so there's a high likelihood""" start="00:02:42.558" video="qanda-gnus" id="subtitle"]] +[[!template text="""that this drop-in configuration won't work,""" start="00:02:44.078" video="qanda-gnus" id="subtitle"]] +[[!template text="""even though that's what I used""" start="00:02:47.478" video="qanda-gnus" id="subtitle"]] +[[!template text="""as my starting point a couple years ago.""" start="00:02:49.238" video="qanda-gnus" id="subtitle"]] +[[!template text="""I will be writing an article on my personal site""" start="00:02:51.958" video="qanda-gnus" id="subtitle"]] +[[!template text="""to go over how to configure recent versions of Dofconn""" start="00:02:56.238" video="qanda-gnus" id="subtitle"]] +[[!template text="""for such a setup, for a local setup.""" start="00:03:02.718" video="qanda-gnus" id="subtitle"]] +[[!template text="""Let's see. Do you have experience with Mu4e or not much?""" start="00:03:07.118" video="qanda-gnus" id="subtitle"]] +[[!template text="""And why would you say Gnus is worth using compared to these?""" start="00:03:15.958" video="qanda-gnus" id="subtitle"]] +[[!template text="""I do have experience with these,""" start="00:03:22.398" video="qanda-gnus" id="subtitle"]] +[[!template text="""although it goes back many years,""" start="00:03:23.838" video="qanda-gnus" id="subtitle"]] +[[!template text="""and I'm sure both of these have evolved since,""" start="00:03:25.518" video="qanda-gnus" id="subtitle"]] +[[!template text="""and they're great pieces of software in their own rights.""" start="00:03:27.758" video="qanda-gnus" id="subtitle"]] +[[!template text="""And actually I did use them in that order.""" start="00:03:31.838" video="qanda-gnus" id="subtitle"]] +[[!template text="""Like I first tried Mu4e in Emacs,""" start="00:03:33.918" video="qanda-gnus" id="subtitle"]] +[[!template text="""when I started using email in Emacs,""" start="00:03:37.398" video="qanda-gnus" id="subtitle"]] +[[!template text="""then I tried Notmuch for a while, and then I went to Gnus.""" start="00:03:40.278" video="qanda-gnus" id="subtitle"]] +[[!template text="""They're great. They have like pros and cons.""" start="00:03:44.278" video="qanda-gnus" id="subtitle"]] +[[!template text="""Mu4e, I believe, has""" start="00:03:51.158" video="qanda-gnus" id="subtitle"]] +[[!template text="""excellent maildir handling directly,""" start="00:03:52.398" video="qanda-gnus" id="subtitle"]] +[[!template text="""if I'm not mistaken, unlike Gnus,""" start="00:03:55.358" video="qanda-gnus" id="subtitle"]] +[[!template text="""so you can point it directly""" start="00:03:58.358" video="qanda-gnus" id="subtitle"]] +[[!template text="""to your maildirs locally,""" start="00:04:00.838" video="qanda-gnus" id="subtitle"]] +[[!template text="""and it should work fine,""" start="00:04:03.638" video="qanda-gnus" id="subtitle"]] +[[!template text="""if I'm remembering correctly.""" start="00:04:06.158" video="qanda-gnus" id="subtitle"]] +[[!template text="""NotMuch is also excellent.""" start="00:04:08.158" video="qanda-gnus" id="subtitle"]] +[[!template text="""The thing with Notmuch""" start="00:04:11.478" video="qanda-gnus" id="subtitle"]] +[[!template text="""is that it uses Xapien""" start="00:04:12.478" video="qanda-gnus" id="subtitle"]] +[[!template text="""for indexing and searching email.""" start="00:04:13.958" video="qanda-gnus" id="subtitle"]] +[[!template text="""It's tag-based, so you can tag messages.""" start="00:04:17.878" video="qanda-gnus" id="subtitle"]] +[[!template text="""And then, yeah, it's amazing""" start="00:04:20.398" video="qanda-gnus" id="subtitle"]] +[[!template text="""for tagging and searching capabilities,""" start="00:04:24.078" video="qanda-gnus" id="subtitle"]] +[[!template text="""very powerful search features.""" start="00:04:26.198" video="qanda-gnus" id="subtitle"]] +[[!template text="""And my reason for trying Gnus""" start="00:04:28.878" video="qanda-gnus" id="subtitle"]] +[[!template text="""and then, I don't know, eventually""" start="00:04:31.678" video="qanda-gnus" id="subtitle"]] +[[!template text="""liking it was couple of years ago,""" start="00:04:33.638" video="qanda-gnus" id="subtitle"]] +[[!template text="""I went through this kind of phase""" start="00:04:37.038" video="qanda-gnus" id="subtitle"]] +[[!template text="""of trying and trying to like use""" start="00:04:38.438" video="qanda-gnus" id="subtitle"]] +[[!template text="""and stick with packages""" start="00:04:40.598" video="qanda-gnus" id="subtitle"]] +[[!template text="""that are built into GNU Emacs""" start="00:04:43.358" video="qanda-gnus" id="subtitle"]] +[[!template text="""as much as possible.""" start="00:04:45.318" video="qanda-gnus" id="subtitle"]] +[[!template text="""No particular reason that I would like,""" start="00:04:47.158" video="qanda-gnus" id="subtitle"]] +[[!template text="""you know, recommend people do that per se,""" start="00:04:51.878" video="qanda-gnus" id="subtitle"]] +[[!template text="""but yeah, that's just what I wanted to do.""" start="00:04:54.198" video="qanda-gnus" id="subtitle"]] +[[!template text="""Cause I noticed my configurations""" start="00:04:57.038" video="qanda-gnus" id="subtitle"]] +[[!template text="""were like growing unwieldy.""" start="00:05:00.598" video="qanda-gnus" id="subtitle"]] +[[!template text="""So I, like many others declared, Emacs in its bankruptcy,""" start="00:05:02.278" video="qanda-gnus" id="subtitle"]] +[[!template text="""in its file bankruptcy, and configure things from scratch""" start="00:05:07.798" video="qanda-gnus" id="subtitle"]] +[[!template text="""and try to use whatever that Emacs had to offer""" start="00:05:11.678" video="qanda-gnus" id="subtitle"]] +[[!template text="""built in itself, and then only reach for a couple""" start="00:05:15.718" video="qanda-gnus" id="subtitle"]] +[[!template text="""of external packages here and there.""" start="00:05:18.798" video="qanda-gnus" id="subtitle"]] +[[!template text="""So that's what I went to. That's how I ended up on Gnu's.""" start="00:05:20.278" video="qanda-gnus" id="subtitle"]] +[[!template text="""And it's been very nice.""" start="00:05:24.718" video="qanda-gnus" id="subtitle"]] +[[!template text="""I've tried a few other email clients""" start="00:05:26.398" video="qanda-gnus" id="subtitle"]] +[[!template text="""since then, temporarily,""" start="00:05:29.558" video="qanda-gnus" id="subtitle"]] +[[!template text="""like I tried AERC, A-E-R-C,""" start="00:05:31.238" video="qanda-gnus" id="subtitle"]] +[[!template text="""which is not built into Emacs,""" start="00:05:33.198" video="qanda-gnus" id="subtitle"]] +[[!template text="""but I don't know,""" start="00:05:36.198" video="qanda-gnus" id="subtitle"]] +[[!template text="""I keep coming back to Gnus.""" start="00:05:36.798" video="qanda-gnus" id="subtitle"]] +[[!template text="""It's great to have it all, to be able to do all these things""" start="00:05:38.198" video="qanda-gnus" id="subtitle"]] +[[!template text="""from within GNU Emacs. Let's see, some notes and feedback.""" start="00:05:42.758" video="qanda-gnus" id="subtitle"]] +[[!template text="""Thank you for all the kind words folks, appreciate it.""" start="00:05:47.678" video="qanda-gnus" id="subtitle"]] +[[!template text="""I'm glad that you found the presentation helpful""" start="00:05:52.558" video="qanda-gnus" id="subtitle"]] +[[!template text="""or somewhat useful. Let's see, new question.""" start="00:05:56.558" video="qanda-gnus" id="subtitle"]] +[[!template text="""Oh, and I will check IRC as well.""" start="00:05:59.158" video="qanda-gnus" id="subtitle"]] +[[!template text="""Let's see, at my organization,""" start="00:06:02.358" video="qanda-gnus" id="subtitle"]] +[[!template text="""we're forced to use OAuth with Outlook,""" start="00:06:06.918" video="qanda-gnus" id="subtitle"]] +[[!template text="""and they've also blacklisted""" start="00:06:09.318" video="qanda-gnus" id="subtitle"]] +[[!template text="""all email clients except Thunderbird,""" start="00:06:11.158" video="qanda-gnus" id="subtitle"]] +[[!template text="""but they don't support it,""" start="00:06:13.518" video="qanda-gnus" id="subtitle"]] +[[!template text="""only the Webmail or the Outlook app.""" start="00:06:15.238" video="qanda-gnus" id="subtitle"]] +[[!template text="""Do you know if this is something""" start="00:06:17.038" video="qanda-gnus" id="subtitle"]] +[[!template text="""that can be circumvented in Gnus? Let's see.""" start="00:06:18.518" video="qanda-gnus" id="subtitle"]] +[[!template text="""So if I'm pretty sure, at least with the recent Emacs versions,""" start="00:06:23.998" video="qanda-gnus" id="subtitle"]] +[[!template text="""Gnus does support xOAuth as a backend.""" start="00:06:29.798" video="qanda-gnus" id="subtitle"]] +[[!template text="""So I think you should be able to do that""" start="00:06:37.678" video="qanda-gnus" id="subtitle"]] +[[!template text="""even with just the things, the machinery built into Emacs.""" start="00:06:41.558" video="qanda-gnus" id="subtitle"]] +[[!template text="""Even so, I think there are external packages and programs.""" start="00:06:45.678" video="qanda-gnus" id="subtitle"]] +[[!template text="""One of them I think comes from this Cyrus IMAP world""" start="00:06:53.918" video="qanda-gnus" id="subtitle"]] +[[!template text="""of things that implement like XOAuth.""" start="00:06:58.718" video="qanda-gnus" id="subtitle"]] +[[!template text="""So you should be able to do that.""" start="00:07:02.358" video="qanda-gnus" id="subtitle"]] +[[!template text="""You should be able to use that to get authenticated""" start="00:07:04.798" video="qanda-gnus" id="subtitle"]] +[[!template text="""to your organization's mail server.""" start="00:07:09.398" video="qanda-gnus" id="subtitle"]] +[[!template text="""But I've never tried that myself.""" start="00:07:12.238" video="qanda-gnus" id="subtitle"]] +[[!template text="""In terms of like blacklisting all email clients,""" start="00:07:15.798" video="qanda-gnus" id="subtitle"]] +[[!template text="""I don't know how they would do it outside of, you know,""" start="00:07:22.838" video="qanda-gnus" id="subtitle"]] +[[!template text="""this kind of authentication thingy.""" start="00:07:27.638" video="qanda-gnus" id="subtitle"]] +[[!template text="""If, you know, they check""" start="00:07:29.798" video="qanda-gnus" id="subtitle"]] +[[!template text="""the user agent header or something,""" start="00:07:32.318" video="qanda-gnus" id="subtitle"]] +[[!template text="""that's pretty easy to customize and set.""" start="00:07:36.398" video="qanda-gnus" id="subtitle"]] +[[!template text="""With Gnus, you can set, define a posting style""" start="00:07:42.038" video="qanda-gnus" id="subtitle"]] +[[!template text="""to set a custom user agent.""" start="00:07:50.438" video="qanda-gnus" id="subtitle"]] +[[!template text="""So, yeah, that's as far as I know.""" start="00:07:55.238" video="qanda-gnus" id="subtitle"]] +[[!template text="""Thunderbird is pretty nice too.""" start="00:07:58.158" video="qanda-gnus" id="subtitle"]] +[[!template text="""Like I reach out for it sometimes""" start="00:08:00.878" video="qanda-gnus" id="subtitle"]] +[[!template text="""when I'm in a rush or can't,""" start="00:08:05.158" video="qanda-gnus" id="subtitle"]] +[[!template text="""don't have the time to like set up Gnus with""" start="00:08:10.558" video="qanda-gnus" id="subtitle"]] +[[!template text="""like some new like IMAP server or something.""" start="00:08:15.958" video="qanda-gnus" id="subtitle"]] +[[!template text="""I reach for it sometimes, but yeah,""" start="00:08:24.118" video="qanda-gnus" id="subtitle"]] +[[!template text="""I primarily use Gnus. I see.""" start="00:08:28.758" video="qanda-gnus" id="subtitle"]] +[[!template text="""So the question says they tried it""" start="00:08:32.398" video="qanda-gnus" id="subtitle"]] +[[!template text="""with not much and it never worked.""" start="00:08:34.758" video="qanda-gnus" id="subtitle"]] +[[!template text="""Even KML on Android didn't work.""" start="00:08:38.118" video="qanda-gnus" id="subtitle"]] +[[!template text="""Right. Yeah, I'm not sure.""" start="00:08:39.878" video="qanda-gnus" id="subtitle"]] +[[!template text="""If you can like provide maybe more details""" start="00:08:45.598" video="qanda-gnus" id="subtitle"]] +[[!template text="""as to like what doesn't work""" start="00:08:47.678" video="qanda-gnus" id="subtitle"]] +[[!template text="""or if you get any particular error messages""" start="00:08:57.478" video="qanda-gnus" id="subtitle"]] +[[!template text="""or like how they're trying to like prevent you from using it,""" start="00:09:02.518" video="qanda-gnus" id="subtitle"]] +[[!template text="""then maybe folks could have some ideas""" start="00:09:05.678" video="qanda-gnus" id="subtitle"]] +[[!template text="""of maybe how to get around that.""" start="00:09:08.558" video="qanda-gnus" id="subtitle"]] +[[!template text="""Yeah. Let's see, I'm going to go""" start="00:09:11.878" video="qanda-gnus" id="subtitle"]] +[[!template text="""over and take a look at IRC. Yes, scoring is great.""" start="00:09:16.238" video="qanda-gnus" id="subtitle"]] +[[!template text="""In it for bankruptcy,""" start="00:09:29.598" video="qanda-gnus" id="subtitle"]] +[[!template text="""they have mail to use outlook from Gnus, right?""" start="00:09:33.358" video="qanda-gnus" id="subtitle"]] +[[!template text="""Yeah, there are various like solutions and workarounds.""" start="00:09:39.158" video="qanda-gnus" id="subtitle"]] +[[!template text="""Yeah, let's see. How's the schedule looking?""" start="00:09:43.638" video="qanda-gnus" id="subtitle"]] +[[!template text="""I think the next talk""" start="00:09:47.278" video="qanda-gnus" id="subtitle"]] +[[!template text="""is gonna start pretty soon, if I'm not mistaken.""" start="00:09:48.278" video="qanda-gnus" id="subtitle"]] +[[!template text="""Yeah, so I believe that's about all the time""" start="00:09:52.638" video="qanda-gnus" id="subtitle"]] +[[!template text="""that we have on the stream for the Q&A,""" start="00:10:34.558" video="qanda-gnus" id="subtitle"]] +[[!template text="""but of course I'll hang around here on big blue button""" start="00:10:35.718" video="qanda-gnus" id="subtitle"]] +[[!template text="""and IRC for a while if folks would like to ask more questions.""" start="00:10:38.758" video="qanda-gnus" id="subtitle"]] +[[!template text="""And also feel free to email me,""" start="00:10:43.078" video="qanda-gnus" id="subtitle"]] +[[!template text="""bandali@gnu.org""" start="00:10:43.758" video="qanda-gnus" id="subtitle"]] +[[!template text="""or at kelar.org with any questions.""" start="00:10:44.878" video="qanda-gnus" id="subtitle"]] +[[!template text="""Thanks again for the kind words folks, appreciate it.""" start="00:10:46.438" video="qanda-gnus" id="subtitle"]] +[[!template text="""Yeah, I myself also wish""" start="00:10:49.558" video="qanda-gnus" id="subtitle"]] +[[!template text="""that there were like some tutorials or something""" start="00:10:51.038" video="qanda-gnus" id="subtitle"]] +[[!template text="""when I was getting started with Guinness,""" start="00:10:53.638" video="qanda-gnus" id="subtitle"]] +[[!template text="""but we didn't have that. So, and I've been meaning""" start="00:10:54.998" video="qanda-gnus" id="subtitle"]] +[[!template text="""to like record a talk like this for years for EmacsConf,""" start="00:10:56.558" video="qanda-gnus" id="subtitle"]] +[[!template text="""but yeah, funnily enough, after like 10 years of,""" start="00:10:59.118" video="qanda-gnus" id="subtitle"]] +[[!template text="""at my 10th anniversary""" start="00:11:12.278" video="qanda-gnus" id="subtitle"]] +[[!template text="""of being involved with the conference,""" start="00:11:22.118" video="qanda-gnus" id="subtitle"]] +[[!template text="""I finally put together a talk of my own""" start="00:11:27.398" video="qanda-gnus" id="subtitle"]] +[[!template text="""to talk about configuring Gnus.""" start="00:11:29.358" video="qanda-gnus" id="subtitle"]] +[[!template text="""Let's see. Oh, I see, I see.""" start="00:11:32.318" video="qanda-gnus" id="subtitle"]] +[[!template text="""So the organization is doing some kind of check""" start="00:11:35.758" video="qanda-gnus" id="subtitle"]] +[[!template text="""during setting up of OAuth.""" start="00:11:41.518" video="qanda-gnus" id="subtitle"]] +[[!template text="""So I think how that works is""" start="00:11:43.438" video="qanda-gnus" id="subtitle"]] +[[!template text="""sometimes these email clients,""" start="00:11:44.638" video="qanda-gnus" id="subtitle"]] +[[!template text="""I think at least this is the case for Gmail or something,""" start="00:11:47.158" video="qanda-gnus" id="subtitle"]] +[[!template text="""where a project such as Thunderbird""" start="00:11:50.118" video="qanda-gnus" id="subtitle"]] +[[!template text="""needs to apply for some kind of token""" start="00:11:55.038" video="qanda-gnus" id="subtitle"]] +[[!template text="""to be able to authenticate""" start="00:12:00.558" video="qanda-gnus" id="subtitle"]] +[[!template text="""and connect its users to a mail server.""" start="00:12:02.518" video="qanda-gnus" id="subtitle"]] +[[!template text="""So all I will say is""" start="00:12:05.118" video="qanda-gnus" id="subtitle"]] +[[!template text="""that Thunderbird is free software""" start="00:12:10.198" video="qanda-gnus" id="subtitle"]] +[[!template text="""and the sources are available""" start="00:12:12.238" video="qanda-gnus" id="subtitle"]] +[[!template text="""and you might be able to find""" start="00:12:13.518" video="qanda-gnus" id="subtitle"]] +[[!template text="""the token that they use and yeah.""" start="00:12:15.518" video="qanda-gnus" id="subtitle"]] +[[!template text="""Right, so yeah, I'm just reading this comment here.""" start="00:12:19.638" video="qanda-gnus" id="subtitle"]] +[[!template text="""You're very welcome again.""" start="00:13:13.878" video="qanda-gnus" id="subtitle"]] +[[!template text="""I hope you find it useful in some way.""" start="00:13:16.078" video="qanda-gnus" id="subtitle"]] +[[!template text="""So they say that they like the fact""" start="00:13:18.798" video="qanda-gnus" id="subtitle"]] +[[!template text="""that I started with a clean setup and built from that.""" start="00:13:21.598" video="qanda-gnus" id="subtitle"]] +[[!template text="""Reading and writing emails in Emacs""" start="00:13:25.238" video="qanda-gnus" id="subtitle"]] +[[!template text="""is definitely not straightforward.""" start="00:13:27.118" video="qanda-gnus" id="subtitle"]] +[[!template text="""And I find it frustrating""" start="00:13:28.918" video="qanda-gnus" id="subtitle"]] +[[!template text="""that there are so many pieces to put together""" start="00:13:30.358" video="qanda-gnus" id="subtitle"]] +[[!template text="""and a bunch of documentation to read.""" start="00:13:32.318" video="qanda-gnus" id="subtitle"]] +[[!template text="""And they admit that they find Gnus overwhelming.""" start="00:13:34.398" video="qanda-gnus" id="subtitle"]] +[[!template text="""I sympathize and empathize.""" start="00:13:39.318" video="qanda-gnus" id="subtitle"]] +[[!template text="""I've been in that very same situation.""" start="00:13:42.758" video="qanda-gnus" id="subtitle"]] +[[!template text="""And yeah, it's totally okay to feel like that.""" start="00:13:45.318" video="qanda-gnus" id="subtitle"]] +[[!template text="""I mean, email itself is kind of complex,""" start="00:13:50.558" video="qanda-gnus" id="subtitle"]] +[[!template text="""even on the server side.""" start="00:13:55.438" video="qanda-gnus" id="subtitle"]] +[[!template text="""If you've ever looked or have been interested""" start="00:13:57.518" video="qanda-gnus" id="subtitle"]] +[[!template text="""in self-hosting your email,""" start="00:14:00.518" video="qanda-gnus" id="subtitle"]] +[[!template text="""you know that there are so many moving parts and pieces.""" start="00:14:02.678" video="qanda-gnus" id="subtitle"]] +[[!template text="""So yeah, I hope that this short video""" start="00:14:06.638" video="qanda-gnus" id="subtitle"]] +[[!template text="""can be a useful first step""" start="00:14:14.398" video="qanda-gnus" id="subtitle"]] +[[!template text="""of getting you set up to""" start="00:14:18.278" video="qanda-gnus" id="subtitle"]] +[[!template text="""at least be able to read your emails""" start="00:14:19.758" video="qanda-gnus" id="subtitle"]] +[[!template text="""and compose and send them within Emacs""" start="00:14:22.958" video="qanda-gnus" id="subtitle"]] +[[!template text="""so that you can see that it's possible""" start="00:14:26.558" video="qanda-gnus" id="subtitle"]] +[[!template text="""and get that positive feedback loop going""" start="00:14:30.838" video="qanda-gnus" id="subtitle"]] +[[!template text="""and get the encouragement and then go from there.""" start="00:14:34.838" video="qanda-gnus" id="subtitle"]] +[[!template text="""Yeah, Gnus is most definitely very extensible.""" start="00:14:41.158" video="qanda-gnus" id="subtitle"]] +[[!template text="""It already has a lot of backends built into GNU Emacs,""" start="00:15:06.598" video="qanda-gnus" id="subtitle"]] +[[!template text="""and there are other ones""" start="00:15:10.158" video="qanda-gnus" id="subtitle"]] +[[!template text="""that people have written externally""" start="00:15:12.438" video="qanda-gnus" id="subtitle"]] +[[!template text="""on various code hosting forges""" start="00:15:14.238" video="qanda-gnus" id="subtitle"]] +[[!template text="""that you can download and set up. Yeah, thank you all.""" start="00:15:18.558" video="qanda-gnus" id="subtitle"]] +[[!template text="""It's nice to see that the talk""" start="00:15:27.878" video="qanda-gnus" id="subtitle"]] +[[!template text="""has kind of resonated with so many folks.""" start="00:15:30.718" video="qanda-gnus" id="subtitle"]] +[[!template text="""And, yeah, it is encouragement""" start="00:15:33.918" video="qanda-gnus" id="subtitle"]] +[[!template text="""for me to finally get around to starting""" start="00:15:41.238" video="qanda-gnus" id="subtitle"]] +[[!template text="""perhaps either a tutorial series""" start="00:15:44.198" video="qanda-gnus" id="subtitle"]] +[[!template text="""or like a video series like this""" start="00:15:47.998" video="qanda-gnus" id="subtitle"]] +[[!template text="""concretely showing and walking through""" start="00:15:50.478" video="qanda-gnus" id="subtitle"]] +[[!template text="""how to like set up and configure these different aspects.""" start="00:15:54.118" video="qanda-gnus" id="subtitle"]] +[[!template text="""There were so many other things that I wanted to show,""" start="00:15:57.918" video="qanda-gnus" id="subtitle"]] +[[!template text="""but didn't have the time""" start="00:16:00.278" video="qanda-gnus" id="subtitle"]] +[[!template text="""or couldn't squeeze it into""" start="00:16:04.558" video="qanda-gnus" id="subtitle"]] +[[!template text="""the 15, 20 minute format for the conference.""" start="00:16:06.438" video="qanda-gnus" id="subtitle"]] +[[!template text="""Yeah. I'm going to hang out here for a few more minutes.""" start="00:16:09.038" video="qanda-gnus" id="subtitle"]] +[[!template text="""Another comment, they would have liked""" start="00:16:28.918" video="qanda-gnus" id="subtitle"]] +[[!template text="""to see a quick demo of Gnus""" start="00:17:36.558" video="qanda-gnus" id="subtitle"]] +[[!template text="""while it is fully configured and tweaked.""" start="00:17:38.718" video="qanda-gnus" id="subtitle"]] +[[!template text="""That's kind of a teaser.""" start="00:17:41.118" video="qanda-gnus" id="subtitle"]] +[[!template text="""I can definitely do that sometime after the conference.""" start="00:17:43.358" video="qanda-gnus" id="subtitle"]] +[[!template text="""Truth be told, I don't customize the looks of it heavily.""" start="00:17:52.358" video="qanda-gnus" id="subtitle"]] +[[!template text="""I use the default layout""" start="00:17:59.638" video="qanda-gnus" id="subtitle"]] +[[!template text="""for the summary and article buffers.""" start="00:18:01.758" video="qanda-gnus" id="subtitle"]] +[[!template text="""With Gnus, you can even reconfigure that""" start="00:18:03.958" video="qanda-gnus" id="subtitle"]] +[[!template text="""to arrange these in your preferred location or layout.""" start="00:18:12.558" video="qanda-gnus" id="subtitle"]] +[[!template text="""I don't really do any of that.""" start="00:18:15.638" video="qanda-gnus" id="subtitle"]] +[[!template text="""For the most part, my setup is pretty simple.""" start="00:18:18.718" video="qanda-gnus" id="subtitle"]] +[[!template text="""I can actually maybe show my init file here. Let's see.""" start="00:18:22.798" video="qanda-gnus" id="subtitle"]] +[[!template text="""Yeah, so this is, I guess, part of my Gnus configuration.""" start="00:18:27.758" video="qanda-gnus" id="subtitle"]] +[[!template text="""I configure a couple of mail servers,""" start="00:18:58.718" video="qanda-gnus" id="subtitle"]] +[[!template text="""set up these expiry targets""" start="00:19:01.438" video="qanda-gnus" id="subtitle"]] +[[!template text="""so that I can hit capital E on a message""" start="00:19:04.638" video="qanda-gnus" id="subtitle"]] +[[!template text="""and then have it be archived. You can have it be immediate.""" start="00:19:07.598" video="qanda-gnus" id="subtitle"]] +[[!template text="""I do that for work messages""" start="00:19:12.438" video="qanda-gnus" id="subtitle"]] +[[!template text="""or you can use the default seven day,""" start="00:19:15.478" video="qanda-gnus" id="subtitle"]] +[[!template text="""where if a message is older than seven days,""" start="00:19:17.678" video="qanda-gnus" id="subtitle"]] +[[!template text="""like once it reaches that age""" start="00:19:21.798" video="qanda-gnus" id="subtitle"]] +[[!template text="""and it's been marked as expired and it'll be moved into,""" start="00:19:23.318" video="qanda-gnus" id="subtitle"]] +[[!template text="""like for example, this yearly archive directory,""" start="00:19:26.358" video="qanda-gnus" id="subtitle"]] +[[!template text="""like archive. For example, 2025.""" start="00:19:29.598" video="qanda-gnus" id="subtitle"]] +[[!template text="""Yeah, you can do like mail splitting,""" start="00:19:31.758" video="qanda-gnus" id="subtitle"]] +[[!template text="""automatically filing email.""" start="00:19:35.318" video="qanda-gnus" id="subtitle"]] +[[!template text="""The fancy splitting is the more powerful variant.""" start="00:19:38.558" video="qanda-gnus" id="subtitle"]] +[[!template text="""You can use like all kinds of regular expressions""" start="00:19:44.038" video="qanda-gnus" id="subtitle"]] +[[!template text="""and move email around depending on""" start="00:19:46.918" video="qanda-gnus" id="subtitle"]] +[[!template text="""what field or what header""" start="00:19:48.918" video="qanda-gnus" id="subtitle"]] +[[!template text="""matches what regular expression.""" start="00:19:50.878" video="qanda-gnus" id="subtitle"]] +[[!template text="""What else? Gnus has things,""" start="00:19:52.638" video="qanda-gnus" id="subtitle"]] +[[!template text="""has a facility like Gnus parameters""" start="00:20:00.398" video="qanda-gnus" id="subtitle"]] +[[!template text="""for configuring individual groups or directories.""" start="00:20:03.478" video="qanda-gnus" id="subtitle"]] +[[!template text="""Like if you file all the mailing or the mails""" start="00:20:07.238" video="qanda-gnus" id="subtitle"]] +[[!template text="""for a particular mailing list into a certain group.""" start="00:20:11.478" video="qanda-gnus" id="subtitle"]] +[[!template text="""And for example, if they add""" start="00:20:15.798" video="qanda-gnus" id="subtitle"]] +[[!template text="""the name of the mailing list""" start="00:20:20.238" video="qanda-gnus" id="subtitle"]] +[[!template text="""to the, subject header.""" start="00:20:22.918" video="qanda-gnus" id="subtitle"]] +[[!template text="""They prefix the subject header with the name of the list.""" start="00:20:26.438" video="qanda-gnus" id="subtitle"]] +[[!template text="""You can set that here""" start="00:20:28.958" video="qanda-gnus" id="subtitle"]] +[[!template text="""and Gnus will automatically""" start="00:20:30.638" video="qanda-gnus" id="subtitle"]] +[[!template text="""hide that for you. So, let's see.""" start="00:20:32.878" video="qanda-gnus" id="subtitle"]] +[[!template text="""There's a news agent,""" start="00:20:39.118" video="qanda-gnus" id="subtitle"]] +[[!template text="""which I won't even get into because it's a rabbit hole.""" start="00:20:54.638" video="qanda-gnus" id="subtitle"]] +[[!template text="""It's pretty cool. Definitely check it out.""" start="00:20:58.918" video="qanda-gnus" id="subtitle"]] +[[!template text="""You can define what MIME parts should be buttonized""" start="00:21:01.878" video="qanda-gnus" id="subtitle"]] +[[!template text="""so that you can like easily toggle them""" start="00:21:07.518" video="qanda-gnus" id="subtitle"]] +[[!template text="""when displaying the article.""" start="00:21:09.278" video="qanda-gnus" id="subtitle"]] +[[!template text="""Yeah, you can customize the list""" start="00:21:11.078" video="qanda-gnus" id="subtitle"]] +[[!template text="""of the headers that are displayed and the order of them.""" start="00:21:14.838" video="qanda-gnus" id="subtitle"]] +[[!template text="""Like I showed in the sample init file that I provided.""" start="00:21:17.598" video="qanda-gnus" id="subtitle"]] +[[!template text="""Games can integrate with Dired.""" start="00:21:22.998" video="qanda-gnus" id="subtitle"]] +[[!template text="""You can set like custom signatures like here.""" start="00:21:25.438" video="qanda-gnus" id="subtitle"]] +[[!template text="""I might define something""" start="00:21:35.958" video="qanda-gnus" id="subtitle"]] +[[!template text="""and then I use it later in the posting,""" start="00:21:37.878" video="qanda-gnus" id="subtitle"]] +[[!template text="""in the posting, the news posting styles variable.""" start="00:21:44.798" video="qanda-gnus" id="subtitle"]] +[[!template text="""I set a signature to that. Yeah.""" start="00:21:48.518" video="qanda-gnus" id="subtitle"]] +[[!template text="""You can write custom like functions to move email around.""" start="00:21:52.118" video="qanda-gnus" id="subtitle"]] +[[!template text="""So I have this like Gnus chunk article function""" start="00:22:09.998" video="qanda-gnus" id="subtitle"]] +[[!template text="""that I bind to VS,""" start="00:22:16.078" video="qanda-gnus" id="subtitle"]] +[[!template text="""so V is the prefix came up that I defined,""" start="00:22:19.118" video="qanda-gnus" id="subtitle"]] +[[!template text="""and then S, so you can do things like that.""" start="00:22:22.318" video="qanda-gnus" id="subtitle"]] +[[!template text="""You can customize the format of the topic lines,""" start="00:22:29.758" video="qanda-gnus" id="subtitle"]] +[[!template text="""so if I actually launch Gnus with my own configuration,""" start="00:22:34.198" video="qanda-gnus" id="subtitle"]] +[[!template text="""this is how it might look like, so.""" start="00:22:39.558" video="qanda-gnus" id="subtitle"]] +[[!template text="""You can define archive decoders""" start="00:22:43.398" video="qanda-gnus" id="subtitle"]] +[[!template text="""to let you like automatically decode""" start="00:22:58.438" video="qanda-gnus" id="subtitle"]] +[[!template text="""inside the Gnus article buffer,""" start="00:23:02.318" video="qanda-gnus" id="subtitle"]] +[[!template text="""how to extract certain archive formats.""" start="00:23:04.958" video="qanda-gnus" id="subtitle"]] +[[!template text="""Like for example, I defined this one for Gzip.""" start="00:23:10.158" video="qanda-gnus" id="subtitle"]] +[[!template text="""You can set like discouraged alternatives""" start="00:23:13.038" video="qanda-gnus" id="subtitle"]] +[[!template text="""to like, for example, hide HTML email by default,""" start="00:23:18.638" video="qanda-gnus" id="subtitle"]] +[[!template text="""especially if there is a plain text version. I do that.""" start="00:23:22.078" video="qanda-gnus" id="subtitle"]] +[[!template text="""GNU says machinery around like encrypting emails.""" start="00:23:26.998" video="qanda-gnus" id="subtitle"]] +[[!template text="""It has a bunch of customizations.""" start="00:23:34.998" video="qanda-gnus" id="subtitle"]] +[[!template text="""that you can configure and have Dynos behave a certain way.""" start="00:23:36.958" video="qanda-gnus" id="subtitle"]] +[[!template text="""For example, when replying to signed or encrypted emails.""" start="00:23:44.798" video="qanda-gnus" id="subtitle"]] +[[!template text="""And yeah. Anyway. That's about it.""" start="00:23:48.638" video="qanda-gnus" id="subtitle"]] +[[!template text="""So yeah, thanks again for hanging out with me, folks.""" start="00:24:01.958" video="qanda-gnus" id="subtitle"]] +[[!template text="""I appreciate all the kind words.""" start="00:24:04.558" video="qanda-gnus" id="subtitle"]] +[[!template text="""comments and yeah, I'm also""" start="00:24:08.878" video="qanda-gnus" id="subtitle"]] +[[!template text="""looking forward to trying and putting together""" start="00:24:13.118" video="qanda-gnus" id="subtitle"]] +[[!template text="""more videos or articles about Gnus.""" start="00:24:17.038" video="qanda-gnus" id="subtitle"]] +[[!template text="""Definitely one about configuring Dovecot for local mail.""" start="00:24:21.998" video="qanda-gnus" id="subtitle"]] +[[!template text="""And yeah, take it from there. Thanks again.""" start="00:24:28.118" video="qanda-gnus" id="subtitle"]] +[[!template text="""Hope you enjoy the rest of the conference.""" start="00:24:31.158" video="qanda-gnus" id="subtitle"]] + +</div>Questions or comments? Please e-mail [bandali@gnu.org](mailto:bandali@gnu.org?subject=Comment%20for%20EmacsConf%202023%20gnus%3A%20Reading%20and%20writing%20emails%20in%20GNU%20Emacs%20with%20Gnus) <!-- End of emacsconf-publish-after-page --> diff --git a/2025/info/gnus-before.md b/2025/info/gnus-before.md index 4fd7221f..fd780533 100644 --- a/2025/info/gnus-before.md +++ b/2025/info/gnus-before.md @@ -1,18 +1,14 @@ <!-- Automatically generated by emacsconf-publish-before-page --> - -The following image shows where the talk is in the schedule for Sat 2025-12-06. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="gnus"> -<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2025/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:10 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2025/talks/org-babel" title="Making Org-Babel reactive" data-slug="org-babel"> <title> 9:10- 9:20 Making Org-Babel reactive</title> <rect x="13" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(24,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> org-babel</text></g></a> <a href="/2025/talks/reference" title="Emacs as a fully-fledged reference manager" data-slug="reference"> <title> 9:30- 9:55 Emacs as a fully-fledged reference manager</title> <rect x="41" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(73,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> reference</text></g></a> <a href="/2025/talks/gmail" title="org-gmail: A deep integration of Gmail into your Org Mode" data-slug="gmail"> <title> 10:15-10:40 org-gmail: A deep integration of Gmail into your Org Mode</title> <rect x="102" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(134,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gmail</text></g></a> <a href="/2025/talks/gnus" title="Reading and writing emails in GNU Emacs with Gnus" data-slug="gnus"> <title> 10:50-11:15 Reading and writing emails in GNU Emacs with Gnus</title> <rect stroke-width="3" x="150" y="15" opacity="0.8" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(182,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gnus</text></g></a> <a href="/2025/talks/latex" title="LaTeX export in org-mode: the overhaul" data-slug="latex"> <title> 11:25-11:45 LaTeX export in org-mode: the overhaul</title> <rect x="199" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(224,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> latex</text></g></a> <a href="/2025/talks/calc" title="Basic Calc functionality for engineering or electronics" data-slug="calc"> <title> 1:00- 1:25 Basic Calc functionality for engineering or electronics</title> <rect x="329" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(361,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> calc</text></g></a> <a href="/2025/talks/blee-lcnt" title="Blee-LCNT: An Emacs-centered content production and self-publication framework" data-slug="blee-lcnt"> <title> 1:35- 2:15 Blee-LCNT: An Emacs-centered content production and self-publication framework</title> <rect x="377" y="15" opacity="0.5" width="54" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(429,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> blee-lcnt</text></g></a> <a href="/2025/talks/greader" title="GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence" data-slug="greader"> <title> 2:35- 2:40 GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence</title> <rect x="459" y="15" opacity="0.5" width="6" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(463,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> greader</text></g></a> <a href="/2025/talks/open-mic" title="Open session" data-slug="open-mic"> <title> 2:50- 3:40 Open session</title> <rect x="480" y="15" opacity="0.5" width="68" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(546,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> open-mic</text></g></a> <a href="/2025/talks/sat-close" title="Saturday closing remarks / open session" data-slug="sat-close"> <title> 4:00- 4:10 Saturday closing remarks / open session</title> <rect x="576" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(587,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2025/talks/schemacs" title="One year progress update Schemacs (formerly Gypsum)" data-slug="schemacs"> <title> 9:30- 9:55 One year progress update Schemacs (formerly Gypsum)</title> <rect x="41" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(73,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> schemacs</text></g></a> <a href="/2025/talks/juicemacs" title="Juicemacs: exploring speculative JIT compilation for ELisp in Java" data-slug="juicemacs"> <title> 10:15-10:35 Juicemacs: exploring speculative JIT compilation for ELisp in Java</title> <rect x="102" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(127,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> juicemacs</text></g></a> <a href="/2025/talks/swanky" title="Swanky Python: Interactive development for Python" data-slug="swanky"> <title> 10:45-11:10 Swanky Python: Interactive development for Python</title> <rect x="144" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(176,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> swanky</text></g></a> <a href="/2025/talks/python" title="Interactive Python programming in Emacs" data-slug="python"> <title> 11:20-11:40 Interactive Python programming in Emacs</title> <rect x="192" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(217,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <a href="/2025/talks/llm" title="Emacs, editors, and LLM driven workflows" data-slug="llm"> <title> 1:00- 1:25 Emacs, editors, and LLM driven workflows</title> <rect x="329" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(361,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> llm</text></g></a> <a href="/2025/talks/private-ai" title="Emacs and private AI: a great match" data-slug="private-ai"> <title> 1:45- 2:05 Emacs and private AI: a great match</title> <rect x="391" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(416,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> private-ai</text></g></a> <a href="/2025/talks/commonlisp" title="Common Lisp images communicating like-a-human through shared Emacs slime and eev" data-slug="commonlisp"> <title> 2:25- 2:55 Common Lisp images communicating like-a-human through shared Emacs slime and eev</title> <rect x="446" y="75" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(485,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> commonlisp</text></g></a> <a href="/2025/talks/graphics" title="Modern Emacs/Elisp hardware/software accelerated graphics" data-slug="graphics"> <title> 3:05- 3:30 Modern Emacs/Elisp hardware/software accelerated graphics</title> <rect x="500" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(532,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> graphics</text></g></a> <g transform="translate(0,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 5 PM</text></g></svg> -</div> - [[!toc ]] -Format: 22-min talk ; Q&A: BigBlueButton conference room <https://media.emacsconf.org/2025/current/bbb-gnus.html> Etherpad: <https://pad.emacsconf.org/2025-gnus> +Format: 22-min talk ; Q&A: BigBlueButton conference room Etherpad: <https://pad.emacsconf.org/2025-gnus> Etherpad: <https://pad.emacsconf.org/2025-gnus> -Discuss on IRC: [#emacsconf-gen](https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen) -Status: Q&A finished, IRC and pad will be archived on this page +Status: TO_REVIEW_QA + +# Talk <div class="vid mainVideo"><video controls preload="none" id="mainVideo-gnus"><source src="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2025/captions/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--main--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="mainVideo-gnus" data=""" 00:02.620 Introduction @@ -32,6 +28,10 @@ Status: Q&A finished, IRC and pad will be archived on this page 19:27.960 Wrapping up 20:12.760 nnimap -"""]]<div></div>Duration: 21:37 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-gnus">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/current/bbb-gnus.html">Open public Q&A</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--main.opus">Download --main.opus (19MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--main.webm">Download --main.webm (60MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--split.txt">Download --split.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--split.vtt">Download --split.vtt</a></li><li><a href="https://youtu.be/0Pu8oqdsSig">View on Youtube</a></li></ul></div></div> +"""]]<div></div>Duration: 21:37 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-gnus">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--main.opus">Download --main.opus (19MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--main.webm">Download --main.webm (60MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--split.txt">Download --split.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--split.vtt">Download --split.vtt</a></li><li><a href="https://youtu.be/0Pu8oqdsSig">View on Youtube</a></li></ul></div></div> + +# Q&A + +<div class="vid qanda"><video controls preload="none" id="qanda-gnus"><source src="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--answers.m4v" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--answers.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 27:00 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-gnus">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--answers.json">Download --answers.json</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--answers.m4v">Download --answers.m4v (62MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--answers.tsv">Download --answers.tsv</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--answers.txt">Download --answers.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--answers.webm">Download --answers.webm (58MB)</a></li></ul></div></div> # Description <!-- End of emacsconf-publish-before-page -->
\ No newline at end of file diff --git a/2025/info/gnus-nav.md b/2025/info/gnus-nav.md index 66b60f15..bc14240a 100644 --- a/2025/info/gnus-nav.md +++ b/2025/info/gnus-nav.md @@ -1,7 +1,7 @@ <div class="talk-nav"> Back to the [[talks]] -Previous by time: <a href="/2025/talks/swanky">Swanky Python: Interactive development for Python</a> -Next by time: <a href="/2025/talks/python">Interactive Python programming in Emacs</a> -Track: <span class="sched-track General">General</span> - <strong><a href="https://emacsconf.org/2025/watch/gen">Watch</a></strong> +Previous by track: <a href="/2025/talks/gmail">org-gmail: A deep integration of Gmail into your Org Mode</a> +Next by track: <a href="/2025/talks/latex">LaTeX export in org-mode: the overhaul</a> +Track: <span class="sched-track General">General</span> </div> diff --git a/2025/info/graphics-after.md b/2025/info/graphics-after.md index e3eda455..526fa59d 100644 --- a/2025/info/graphics-after.md +++ b/2025/info/graphics-after.md @@ -3,7 +3,35 @@ <div class="transcript transcript-mainVideo"><a name="graphics-mainVideo-transcript"></a><h1>Transcript</h1> -[[!template text="""[ This video has no audio. ]""" start="00:00:00.000" video="mainVideo-graphics" id="subtitle"]] +[[!template text="""[ This video has no narration. ]""" start="00:00:00.000" video="mainVideo-graphics" id="subtitle"]] + +<div class="transcript-heading">[[!template new="1" text="""space box intro (elisp model matrix pipeline c dynamic module)""" start="00:00:05.000" video="mainVideo-graphics" id="subtitle"]]</div>[[!template text="""space box intro (elisp model matrix pipeline c dynamic module)""" start="00:00:05.000" video="mainVideo-graphics" id="subtitle"]] + +<div class="transcript-heading">[[!template new="1" text="""parallel (sdl/linux multicore pthreads)""" start="00:01:59.000" video="mainVideo-graphics" id="subtitle"]]</div>[[!template text="""parallel (sdl/linux multicore pthreads)""" start="00:01:59.000" video="mainVideo-graphics" id="subtitle"]] + +<div class="transcript-heading">[[!template new="1" text="""bad snake (oop eieio)""" start="00:02:04.000" video="mainVideo-graphics" id="subtitle"]]</div>[[!template text="""bad snake (oop eieio)""" start="00:02:04.000" video="mainVideo-graphics" id="subtitle"]] + +<div class="transcript-heading">[[!template new="1" text="""solar (ecs)""" start="00:03:30.000" video="mainVideo-graphics" id="subtitle"]]</div>[[!template text="""solar (ecs)""" start="00:03:30.000" video="mainVideo-graphics" id="subtitle"]] + +<div class="transcript-heading">[[!template new="1" text="""60 fps 1 (opengl cpu)""" start="00:04:32.000" video="mainVideo-graphics" id="subtitle"]]</div>[[!template text="""60 fps 1 (opengl cpu)""" start="00:04:32.000" video="mainVideo-graphics" id="subtitle"]] + +<div class="transcript-heading">[[!template new="1" text="""earth (grid ascii)""" start="00:05:36.000" video="mainVideo-graphics" id="subtitle"]]</div>[[!template text="""earth (grid ascii)""" start="00:05:36.000" video="mainVideo-graphics" id="subtitle"]] + +<div class="transcript-heading">[[!template new="1" text="""studio (image unicode)""" start="00:06:02.000" video="mainVideo-graphics" id="subtitle"]]</div>[[!template text="""studio (image unicode)""" start="00:06:02.000" video="mainVideo-graphics" id="subtitle"]] + +<div class="transcript-heading">[[!template new="1" text="""60 fps 2 (gpu)""" start="00:09:32.000" video="mainVideo-graphics" id="subtitle"]]</div>[[!template text="""60 fps 2 (gpu)""" start="00:09:32.000" video="mainVideo-graphics" id="subtitle"]] + +<div class="transcript-heading">[[!template new="1" text="""rgb triangle (glsl vertex/fragment shaders)""" start="00:11:57.000" video="mainVideo-graphics" id="subtitle"]]</div>[[!template text="""rgb triangle (glsl vertex/fragment shaders)""" start="00:11:57.000" video="mainVideo-graphics" id="subtitle"]] + +<div class="transcript-heading">[[!template new="1" text="""ansi cube (software functional shader)""" start="00:13:09.000" video="mainVideo-graphics" id="subtitle"]]</div>[[!template text="""ansi cube (software functional shader)""" start="00:13:09.000" video="mainVideo-graphics" id="subtitle"]] + +<div class="transcript-heading">[[!template new="1" text="""horizon (gradient)""" start="00:13:33.000" video="mainVideo-graphics" id="subtitle"]]</div>[[!template text="""horizon (gradient)""" start="00:13:33.000" video="mainVideo-graphics" id="subtitle"]] + +<div class="transcript-heading">[[!template new="1" text="""shell color table (zsh)""" start="00:15:16.000" video="mainVideo-graphics" id="subtitle"]]</div>[[!template text="""shell color table (zsh)""" start="00:15:16.000" video="mainVideo-graphics" id="subtitle"]] + +<div class="transcript-heading">[[!template new="1" text="""luki-lisp (macros)""" start="00:16:13.000" video="mainVideo-graphics" id="subtitle"]]</div>[[!template text="""luki-lisp (macros)""" start="00:16:13.000" video="mainVideo-graphics" id="subtitle"]] + +<div class="transcript-heading">[[!template new="1" text="""incal & rave dave outro (debug text triangles)""" start="00:18:25.000" video="mainVideo-graphics" id="subtitle"]]</div>[[!template text="""incal & rave dave outro (debug text triangles)""" start="00:18:25.000" video="mainVideo-graphics" id="subtitle"]] </div> diff --git a/2025/info/graphics-before.md b/2025/info/graphics-before.md index 5a9384ed..52befd06 100644 --- a/2025/info/graphics-before.md +++ b/2025/info/graphics-before.md @@ -1,19 +1,29 @@ <!-- Automatically generated by emacsconf-publish-before-page --> - -The following image shows where the talk is in the schedule for Sat 2025-12-06. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="graphics"> -<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2025/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:10 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2025/talks/org-babel" title="Making Org-Babel reactive" data-slug="org-babel"> <title> 9:10- 9:20 Making Org-Babel reactive</title> <rect x="13" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(24,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> org-babel</text></g></a> <a href="/2025/talks/reference" title="Emacs as a fully-fledged reference manager" data-slug="reference"> <title> 9:30- 9:55 Emacs as a fully-fledged reference manager</title> <rect x="41" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(73,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> reference</text></g></a> <a href="/2025/talks/gmail" title="org-gmail: A deep integration of Gmail into your Org Mode" data-slug="gmail"> <title> 10:15-10:40 org-gmail: A deep integration of Gmail into your Org Mode</title> <rect x="102" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(134,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gmail</text></g></a> <a href="/2025/talks/gnus" title="Reading and writing emails in GNU Emacs with Gnus" data-slug="gnus"> <title> 10:50-11:15 Reading and writing emails in GNU Emacs with Gnus</title> <rect x="150" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(182,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gnus</text></g></a> <a href="/2025/talks/latex" title="LaTeX export in org-mode: the overhaul" data-slug="latex"> <title> 11:25-11:45 LaTeX export in org-mode: the overhaul</title> <rect x="199" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(224,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> latex</text></g></a> <a href="/2025/talks/calc" title="Basic Calc functionality for engineering or electronics" data-slug="calc"> <title> 1:00- 1:25 Basic Calc functionality for engineering or electronics</title> <rect x="329" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(361,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> calc</text></g></a> <a href="/2025/talks/blee-lcnt" title="Blee-LCNT: An Emacs-centered content production and self-publication framework" data-slug="blee-lcnt"> <title> 1:35- 2:15 Blee-LCNT: An Emacs-centered content production and self-publication framework</title> <rect x="377" y="15" opacity="0.5" width="54" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(429,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> blee-lcnt</text></g></a> <a href="/2025/talks/greader" title="GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence" data-slug="greader"> <title> 2:35- 2:40 GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence</title> <rect x="459" y="15" opacity="0.5" width="6" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(463,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> greader</text></g></a> <a href="/2025/talks/open-mic" title="Open session" data-slug="open-mic"> <title> 2:50- 3:40 Open session</title> <rect x="480" y="15" opacity="0.5" width="68" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(546,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> open-mic</text></g></a> <a href="/2025/talks/sat-close" title="Saturday closing remarks / open session" data-slug="sat-close"> <title> 4:00- 4:10 Saturday closing remarks / open session</title> <rect x="576" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(587,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2025/talks/schemacs" title="One year progress update Schemacs (formerly Gypsum)" data-slug="schemacs"> <title> 9:30- 9:55 One year progress update Schemacs (formerly Gypsum)</title> <rect x="41" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(73,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> schemacs</text></g></a> <a href="/2025/talks/juicemacs" title="Juicemacs: exploring speculative JIT compilation for ELisp in Java" data-slug="juicemacs"> <title> 10:15-10:35 Juicemacs: exploring speculative JIT compilation for ELisp in Java</title> <rect x="102" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(127,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> juicemacs</text></g></a> <a href="/2025/talks/swanky" title="Swanky Python: Interactive development for Python" data-slug="swanky"> <title> 10:45-11:10 Swanky Python: Interactive development for Python</title> <rect x="144" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(176,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> swanky</text></g></a> <a href="/2025/talks/python" title="Interactive Python programming in Emacs" data-slug="python"> <title> 11:20-11:40 Interactive Python programming in Emacs</title> <rect x="192" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(217,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <a href="/2025/talks/llm" title="Emacs, editors, and LLM driven workflows" data-slug="llm"> <title> 1:00- 1:25 Emacs, editors, and LLM driven workflows</title> <rect x="329" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(361,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> llm</text></g></a> <a href="/2025/talks/private-ai" title="Emacs and private AI: a great match" data-slug="private-ai"> <title> 1:45- 2:05 Emacs and private AI: a great match</title> <rect x="391" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(416,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> private-ai</text></g></a> <a href="/2025/talks/commonlisp" title="Common Lisp images communicating like-a-human through shared Emacs slime and eev" data-slug="commonlisp"> <title> 2:25- 2:55 Common Lisp images communicating like-a-human through shared Emacs slime and eev</title> <rect x="446" y="75" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(485,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> commonlisp</text></g></a> <a href="/2025/talks/graphics" title="Modern Emacs/Elisp hardware/software accelerated graphics" data-slug="graphics"> <title> 3:05- 3:30 Modern Emacs/Elisp hardware/software accelerated graphics</title> <rect stroke-width="3" x="500" y="75" opacity="0.8" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(532,133)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> graphics</text></g></a> <g transform="translate(0,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 5 PM</text></g></svg> -</div> - [[!toc ]] -Format: 23-min talk ; Q&A: BigBlueButton conference room <https://media.emacsconf.org/2025/current/bbb-graphics.html> Etherpad: <https://pad.emacsconf.org/2025-graphics> +Format: 23-min talk ; Q&A: BigBlueButton conference room Etherpad: <https://pad.emacsconf.org/2025-graphics> Etherpad: <https://pad.emacsconf.org/2025-graphics> -Discuss on IRC: [#emacsconf-dev](https://chat.emacsconf.org/?join=emacsconf,emacsconf-dev) -Status: Q&A finished, IRC and pad will be archived on this page +Status: TO_REVIEW_QA + +<div class="vid mainVideo"><video controls preload="none" id="mainVideo-graphics"><source src="https://media.emacsconf.org/2025/emacsconf-2025-graphics--modern-emacselisp-hardwaresoftware-accelerated-graphics--emanuel-berg--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-graphics--modern-emacselisp-hardwaresoftware-accelerated-graphics--emanuel-berg--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2025/captions/emacsconf-2025-graphics--modern-emacselisp-hardwaresoftware-accelerated-graphics--emanuel-berg--main--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="mainVideo-graphics" data=""" +00:05.000 space box intro (elisp model matrix pipeline c dynamic module) +01:59.000 parallel (sdl/linux multicore pthreads) +02:04.000 bad snake (oop eieio) +03:30.000 solar (ecs) +04:32.000 60 fps 1 (opengl cpu) +05:36.000 earth (grid ascii) +06:02.000 studio (image unicode) +09:32.000 60 fps 2 (gpu) +11:57.000 rgb triangle (glsl vertex/fragment shaders) +13:09.000 ansi cube (software functional shader) +13:33.000 horizon (gradient) +15:16.000 shell color table (zsh) +16:13.000 luki-lisp (macros) +18:25.000 incal & rave dave outro (debug text triangles) -<div class="vid mainVideo"><video controls preload="none" id="mainVideo-graphics"><source src="https://media.emacsconf.org/2025/emacsconf-2025-graphics--modern-emacselisp-hardwaresoftware-accelerated-graphics--emanuel-berg--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-graphics--modern-emacselisp-hardwaresoftware-accelerated-graphics--emanuel-berg--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 22:15 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-graphics">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/current/bbb-graphics.html">Open public Q&A</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-graphics--modern-emacselisp-hardwaresoftware-accelerated-graphics--emanuel-berg--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-graphics--modern-emacselisp-hardwaresoftware-accelerated-graphics--emanuel-berg--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-graphics--modern-emacselisp-hardwaresoftware-accelerated-graphics--emanuel-berg--main.opus">Download --main.opus (18MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-graphics--modern-emacselisp-hardwaresoftware-accelerated-graphics--emanuel-berg--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-graphics--modern-emacselisp-hardwaresoftware-accelerated-graphics--emanuel-berg--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-graphics--modern-emacselisp-hardwaresoftware-accelerated-graphics--emanuel-berg--main.webm">Download --main.webm (56MB)</a></li><li><a href="https://youtu.be/RVoGcLNalJw">View on Youtube</a></li></ul></div></div> +"""]]<div></div>Duration: 22:15 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-graphics">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-graphics--modern-emacselisp-hardwaresoftware-accelerated-graphics--emanuel-berg--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-graphics--modern-emacselisp-hardwaresoftware-accelerated-graphics--emanuel-berg--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-graphics--modern-emacselisp-hardwaresoftware-accelerated-graphics--emanuel-berg--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-graphics--modern-emacselisp-hardwaresoftware-accelerated-graphics--emanuel-berg--main.opus">Download --main.opus (18MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-graphics--modern-emacselisp-hardwaresoftware-accelerated-graphics--emanuel-berg--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-graphics--modern-emacselisp-hardwaresoftware-accelerated-graphics--emanuel-berg--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-graphics--modern-emacselisp-hardwaresoftware-accelerated-graphics--emanuel-berg--main.webm">Download --main.webm (56MB)</a></li><li><a href="https://youtu.be/RVoGcLNalJw">View on Youtube</a></li></ul></div></div> # Description <!-- End of emacsconf-publish-before-page -->
\ No newline at end of file diff --git a/2025/info/graphics-nav.md b/2025/info/graphics-nav.md index ecf2bee5..51e5bd7b 100644 --- a/2025/info/graphics-nav.md +++ b/2025/info/graphics-nav.md @@ -1,7 +1,7 @@ <div class="talk-nav"> Back to the [[talks]] -Previous by time: <a href="/2025/talks/open-mic">Open session</a> -Next by time: <a href="/2025/talks/sat-close">Saturday closing remarks / open session</a> -Track: <span class="sched-track Development">Development</span> - <strong><a href="https://emacsconf.org/2025/watch/dev">Watch</a></strong> +Previous by track: <a href="/2025/talks/commonlisp">Common Lisp images communicating like-a-human through shared Emacs slime and eev</a> +Next by track: <a href="/2025/talks/sat-close">Saturday closing remarks / open session</a> +Track: <span class="sched-track Development">Development</span> </div> diff --git a/2025/info/greader-before.md b/2025/info/greader-before.md index 5303089a..a62a4f3c 100644 --- a/2025/info/greader-before.md +++ b/2025/info/greader-before.md @@ -1,19 +1,13 @@ <!-- Automatically generated by emacsconf-publish-before-page --> - -The following image shows where the talk is in the schedule for Sat 2025-12-06. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="greader"> -<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2025/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:10 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2025/talks/org-babel" title="Making Org-Babel reactive" data-slug="org-babel"> <title> 9:10- 9:20 Making Org-Babel reactive</title> <rect x="13" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(24,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> org-babel</text></g></a> <a href="/2025/talks/reference" title="Emacs as a fully-fledged reference manager" data-slug="reference"> <title> 9:30- 9:55 Emacs as a fully-fledged reference manager</title> <rect x="41" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(73,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> reference</text></g></a> <a href="/2025/talks/gmail" title="org-gmail: A deep integration of Gmail into your Org Mode" data-slug="gmail"> <title> 10:15-10:40 org-gmail: A deep integration of Gmail into your Org Mode</title> <rect x="102" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(134,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gmail</text></g></a> <a href="/2025/talks/gnus" title="Reading and writing emails in GNU Emacs with Gnus" data-slug="gnus"> <title> 10:50-11:15 Reading and writing emails in GNU Emacs with Gnus</title> <rect x="150" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(182,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gnus</text></g></a> <a href="/2025/talks/latex" title="LaTeX export in org-mode: the overhaul" data-slug="latex"> <title> 11:25-11:45 LaTeX export in org-mode: the overhaul</title> <rect x="199" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(224,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> latex</text></g></a> <a href="/2025/talks/calc" title="Basic Calc functionality for engineering or electronics" data-slug="calc"> <title> 1:00- 1:25 Basic Calc functionality for engineering or electronics</title> <rect x="329" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(361,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> calc</text></g></a> <a href="/2025/talks/blee-lcnt" title="Blee-LCNT: An Emacs-centered content production and self-publication framework" data-slug="blee-lcnt"> <title> 1:35- 2:15 Blee-LCNT: An Emacs-centered content production and self-publication framework</title> <rect x="377" y="15" opacity="0.5" width="54" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(429,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> blee-lcnt</text></g></a> <a href="/2025/talks/greader" title="GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence" data-slug="greader"> <title> 2:35- 2:40 GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence</title> <rect stroke-width="3" x="459" y="15" opacity="0.8" width="6" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(463,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> greader</text></g></a> <a href="/2025/talks/open-mic" title="Open session" data-slug="open-mic"> <title> 2:50- 3:40 Open session</title> <rect x="480" y="15" opacity="0.5" width="68" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(546,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> open-mic</text></g></a> <a href="/2025/talks/sat-close" title="Saturday closing remarks / open session" data-slug="sat-close"> <title> 4:00- 4:10 Saturday closing remarks / open session</title> <rect x="576" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(587,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2025/talks/schemacs" title="One year progress update Schemacs (formerly Gypsum)" data-slug="schemacs"> <title> 9:30- 9:55 One year progress update Schemacs (formerly Gypsum)</title> <rect x="41" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(73,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> schemacs</text></g></a> <a href="/2025/talks/juicemacs" title="Juicemacs: exploring speculative JIT compilation for ELisp in Java" data-slug="juicemacs"> <title> 10:15-10:35 Juicemacs: exploring speculative JIT compilation for ELisp in Java</title> <rect x="102" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(127,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> juicemacs</text></g></a> <a href="/2025/talks/swanky" title="Swanky Python: Interactive development for Python" data-slug="swanky"> <title> 10:45-11:10 Swanky Python: Interactive development for Python</title> <rect x="144" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(176,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> swanky</text></g></a> <a href="/2025/talks/python" title="Interactive Python programming in Emacs" data-slug="python"> <title> 11:20-11:40 Interactive Python programming in Emacs</title> <rect x="192" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(217,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <a href="/2025/talks/llm" title="Emacs, editors, and LLM driven workflows" data-slug="llm"> <title> 1:00- 1:25 Emacs, editors, and LLM driven workflows</title> <rect x="329" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(361,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> llm</text></g></a> <a href="/2025/talks/private-ai" title="Emacs and private AI: a great match" data-slug="private-ai"> <title> 1:45- 2:05 Emacs and private AI: a great match</title> <rect x="391" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(416,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> private-ai</text></g></a> <a href="/2025/talks/commonlisp" title="Common Lisp images communicating like-a-human through shared Emacs slime and eev" data-slug="commonlisp"> <title> 2:25- 2:55 Common Lisp images communicating like-a-human through shared Emacs slime and eev</title> <rect x="446" y="75" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(485,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> commonlisp</text></g></a> <a href="/2025/talks/graphics" title="Modern Emacs/Elisp hardware/software accelerated graphics" data-slug="graphics"> <title> 3:05- 3:30 Modern Emacs/Elisp hardware/software accelerated graphics</title> <rect x="500" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(532,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> graphics</text></g></a> <g transform="translate(0,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 5 PM</text></g></svg> -</div> - [[!toc ]] -Format: 5-min talk ; Q&A: IRC <https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen> Etherpad: <https://pad.emacsconf.org/2025-greader> +Format: 5-min talk ; Q&A: IRC Etherpad: <https://pad.emacsconf.org/2025-greader> Etherpad: <https://pad.emacsconf.org/2025-greader> -Discuss on IRC: [#emacsconf-gen](https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen) -Status: Q&A finished, IRC and pad will be archived on this page +Status: TO_REVIEW_QA -<div class="vid mainVideo"><video controls preload="none" id="mainVideo-greader"><source src="https://media.emacsconf.org/2025/emacsconf-2025-greader--gnu-emacs-greader-gnam-reader-mode-is-the-best-emacs-mode-in-existence--yuval-langer--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-greader--gnu-emacs-greader-gnam-reader-mode-is-the-best-emacs-mode-in-existence--yuval-langer--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 04:08 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-greader">Open Etherpad</a></li><li><a href="https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen">Open public Q&A</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-greader--gnu-emacs-greader-gnam-reader-mode-is-the-best-emacs-mode-in-existence--yuval-langer--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-greader--gnu-emacs-greader-gnam-reader-mode-is-the-best-emacs-mode-in-existence--yuval-langer--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-greader--gnu-emacs-greader-gnam-reader-mode-is-the-best-emacs-mode-in-existence--yuval-langer--main.opus">Download --main.opus (3.5MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-greader--gnu-emacs-greader-gnam-reader-mode-is-the-best-emacs-mode-in-existence--yuval-langer--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-greader--gnu-emacs-greader-gnam-reader-mode-is-the-best-emacs-mode-in-existence--yuval-langer--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-greader--gnu-emacs-greader-gnam-reader-mode-is-the-best-emacs-mode-in-existence--yuval-langer--main.webm">Download --main.webm (10MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-greader--gnu-emacs-greader-gnam-reader-mode-is-the-best-emacs-mode-in-existence--yuval-langer--split.txt">Download --split.txt</a></li><li><a href="https://youtu.be/q1gmFAKYWBk">View on Youtube</a></li></ul></div></div> +<div class="vid mainVideo"><video controls preload="none" id="mainVideo-greader"><source src="https://media.emacsconf.org/2025/emacsconf-2025-greader--gnu-emacs-greader-gnam-reader-mode-is-the-best-emacs-mode-in-existence--yuval-langer--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-greader--gnu-emacs-greader-gnam-reader-mode-is-the-best-emacs-mode-in-existence--yuval-langer--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 04:08 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-greader">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-greader--gnu-emacs-greader-gnam-reader-mode-is-the-best-emacs-mode-in-existence--yuval-langer--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-greader--gnu-emacs-greader-gnam-reader-mode-is-the-best-emacs-mode-in-existence--yuval-langer--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-greader--gnu-emacs-greader-gnam-reader-mode-is-the-best-emacs-mode-in-existence--yuval-langer--main.opus">Download --main.opus (3.5MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-greader--gnu-emacs-greader-gnam-reader-mode-is-the-best-emacs-mode-in-existence--yuval-langer--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-greader--gnu-emacs-greader-gnam-reader-mode-is-the-best-emacs-mode-in-existence--yuval-langer--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-greader--gnu-emacs-greader-gnam-reader-mode-is-the-best-emacs-mode-in-existence--yuval-langer--main.webm">Download --main.webm (10MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-greader--gnu-emacs-greader-gnam-reader-mode-is-the-best-emacs-mode-in-existence--yuval-langer--split.txt">Download --split.txt</a></li><li><a href="https://youtu.be/q1gmFAKYWBk">View on Youtube</a></li></ul></div></div> # Description <!-- End of emacsconf-publish-before-page -->
\ No newline at end of file diff --git a/2025/info/greader-nav.md b/2025/info/greader-nav.md index 9be8ca29..90ccb361 100644 --- a/2025/info/greader-nav.md +++ b/2025/info/greader-nav.md @@ -1,7 +1,7 @@ <div class="talk-nav"> Back to the [[talks]] -Previous by time: <a href="/2025/talks/commonlisp">Common Lisp images communicating like-a-human through shared Emacs slime and eev</a> -Next by time: <a href="/2025/talks/open-mic">Open session</a> -Track: <span class="sched-track General">General</span> - <strong><a href="https://emacsconf.org/2025/watch/gen">Watch</a></strong> +Previous by track: <a href="/2025/talks/blee-lcnt">Blee-LCNT: An Emacs-centered content production and self-publication framework</a> +Next by track: <a href="/2025/talks/open-mic">Open session</a> +Track: <span class="sched-track General">General</span> </div> diff --git a/2025/info/hyperboleqa-after.md b/2025/info/hyperboleqa-after.md index 3cadfccd..c40d2adb 100644 --- a/2025/info/hyperboleqa-after.md +++ b/2025/info/hyperboleqa-after.md @@ -1,7 +1,744 @@ <!-- Automatically generated by emacsconf-publish-after-page --> -Questions or comments? Please e-mail [rsw@gnu.org](mailto:rsw@gnu.org?subject=Comment%20for%20EmacsConf%202023%20hyperboleqa%3A%20Questions%20and%20answers%20to%20help%20you%20fly%20with%20Hyperbole) +<div class="transcript transcript-mainVideo"><a name="hyperboleqa-mainVideo-transcript"></a><h1>Transcript (unedited)</h1> + +[[!template text="""All right, you're good to go. Are people here?""" start="00:00:00.000" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Let me read the first question to you since I'm here.""" start="00:00:12.240" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""The first question here is,""" start="00:00:15.640" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""I'm excited to know opinion and current state""" start="00:00:17.640" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""of using NCP and AI for PKMs and PIEs.""" start="00:00:20.600" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Since they do carry a lot of burden out of us, it means a lot of process.""" start="00:00:23.800" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""How does our pipeline stand with the coming days?""" start="00:00:28.640" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Thanks for the question.""" start="00:00:33.440" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""AI is obviously on everybody's mind.""" start="00:00:35.120" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""We haven't done a lot of integration""" start="00:00:40.240" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""with any of the popular AI engines,""" start="00:00:43.720" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""but I think as you'll see through this Q&A session,""" start="00:00:47.200" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Hyperbole's function is really to interlink""" start="00:00:50.520" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""your information everywhere throughout Emacs.""" start="00:00:54.560" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And so, whether you're using a chatbot""" start="00:00:57.960" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""in a specific buffer,""" start="00:01:02.280" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""you can use hyperbole implicit links, implicit buttons""" start="00:01:04.920" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""to activate different actions there as well.""" start="00:01:11.360" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So sometimes it takes a bit of customization,""" start="00:01:17.040" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""a small amount of two to seven lines of code to do that.""" start="00:01:20.400" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""As we get to working with more of these engines,""" start="00:01:26.000" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""we'll build that into the core part of Hyperbole.""" start="00:01:30.840" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""But right now, that's left as an extension""" start="00:01:34.120" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""for users who are heavily using MCP""" start="00:01:40.040" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""or other protocols right now.""" start="00:01:43.360" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""We have, for example, integrated""" start="00:01:45.880" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""with LSPs, you know, for coding and have that interface through xref""" start="00:01:50.240" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and basically using the single key, the action key,""" start="00:01:57.560" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""which is made a return.""" start="00:02:01.200" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""You can jump around to any of your source definitions""" start="00:02:02.720" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""from any reference in almost any language""" start="00:02:08.920" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""that anybody uses today. So you can extrapolate from that""" start="00:02:11.000" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""how that might work with AI as well.""" start="00:02:14.600" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And I think you'll see later when we talk about HiWiki""" start="00:02:17.120" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""that we're now enabling just just wiki words""" start="00:02:23.000" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""to be buttons in hyperbole.""" start="00:02:26.720" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So those could be part of your chat with an AI""" start="00:02:30.080" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and you just click on it and you jump right to all your references""" start="00:02:34.000" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""associated with that terminology. Thanks for the question.""" start="00:02:37.520" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Should I just go through the second question?""" start="00:02:49.120" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""I thought people would be glad.""" start="00:02:51.840" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""As a normal user who codes and takes notes,""" start="00:02:54.200" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""I really want to deep dive and learn Hyperbole,""" start="00:02:56.560" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""but always end up winding back up to Embark""" start="00:02:58.760" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and Org Mode being the better system.""" start="00:03:02.080" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""For me, Hyperbole looks over engineering""" start="00:03:04.400" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""or over the peer system,""" start="00:03:06.480" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""which other individual packages do well.""" start="00:03:08.080" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And outside DMAC, there's no system supporting Hyperbole or any usability.""" start="00:03:10.120" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And I think you've cited answering""" start="00:03:15.400" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""that already, so go ahead.""" start="00:03:17.520" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Right, hyperbole is large, but there's reasons behind that.""" start="00:03:21.160" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""We're just trying to link all your information in Emacs.""" start="00:03:26.920" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So I think you can see my screen here in Emacs.""" start="00:03:30.600" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So for example, you can take any Lisp expression,""" start="00:03:38.080" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""even a variable like here we have in hyperbole""" start="00:03:45.440" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Hyperbdur variable""" start="00:03:49.240" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and I just hit the action key made a return""" start="00:03:50.960" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and in my mini buffer I see the value of that variable,""" start="00:03:53.520" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""but I could just as well take any other expression""" start="00:03:57.760" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and take the outer parens off""" start="00:04:01.600" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and change them to angle brackets""" start="00:04:03.920" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and now that's a live Hyper button""" start="00:04:05.680" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""could be in a comment in a programming buffer in this case.""" start="00:04:08.240" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""It's in K outliner buffer,""" start="00:04:12.080" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""which is a an auto-numbered outliner part of hyperbole.""" start="00:04:15.680" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So let's just try this and say made a return.""" start="00:04:19.160" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""I pressed and it ran occur and found all the occurrences of buttons.""" start="00:04:23.600" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And similarly in here, I could just jump and go""" start="00:04:28.720" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""to any of these lines directly""" start="00:04:31.920" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""by hitting made a return in that buffer as well.""" start="00:04:35.520" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So all your text, all your sort""" start="00:04:37.920" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""of what we call implicit links become live and hyperbole.""" start="00:04:39.800" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And you didn't have to learn much.""" start="00:04:44.880" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""You just learn, you know, if you know a little Lisp""" start="00:04:46.520" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""or how to type any expression,""" start="00:04:48.560" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""then you just change the outer brackets.""" start="00:04:50.280" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And all of a sudden, you have hyperbuttons.""" start="00:04:52.880" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So hyperbole, you can learn a little bit at a time.""" start="00:04:55.080" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And although it seems daunting at first""" start="00:05:01.080" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""because it has so much functionality,""" start="00:05:04.480" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""very large and rich architecture.""" start="00:05:06.880" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""But what we do is teach people one piece at a time.""" start="00:05:09.680" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So just to continue on that a little bit,""" start="00:05:13.640" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""implicit buttons are buttons""" start="00:05:17.920" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""that exist just from the text pattern in the buffer.""" start="00:05:19.640" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So you saw an example of changing Lisp into implicit buttons right there.""" start="00:05:23.360" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""I could do keystrokes.""" start="00:05:28.280" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""I can just type them out in my buffer""" start="00:05:30.960" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and surround them with braces.""" start="00:05:33.120" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So here's something, let's see,""" start="00:05:34.880" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""this is actually a command in the K Outliner""" start="00:05:37.440" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""to jump to the cell numbered four. So let's just do that.""" start="00:05:41.080" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And it took me right there, right?""" start="00:05:45.800" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So I'm just pressing made a return to activate these buttons.""" start="00:05:47.600" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Similarly, any sort of, this is a complex example,""" start="00:05:51.760" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""but any path name I can surround with double quotes,""" start="00:05:56.280" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and it's a live hyper button.""" start="00:05:59.480" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""In this case, I want to jump to a path name called readme.md,""" start="00:06:01.080" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""but it's in a directory that's specified""" start="00:06:05.480" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""by an actual list variable. And then I want to go directly""" start="00:06:08.360" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""to a headline within that file called hyperbole manual.""" start="00:06:13.520" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And within that headline, I wanna go""" start="00:06:17.480" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""to the eighth line relative to that.""" start="00:06:19.760" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So all I have to do, made a return again,""" start="00:06:22.720" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and boom, I'm in that, I'm directly linked to that.""" start="00:06:24.880" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And Hyperbole has ways that you can just split your windows like this""" start="00:06:28.960" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and create that reference in the source buffer right there.""" start="00:06:33.800" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""You just press a few keys and it'll embed that link.""" start="00:06:38.080" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""We'll see that a little later.""" start="00:06:42.000" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Another example, so all of these buttons,""" start="00:06:43.840" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""if I just show you here,""" start="00:06:47.320" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""you can press Control-H, Capital-A anytime.""" start="00:06:49.600" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and it will show you exactly""" start="00:06:52.280" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""what made a return will do in that context.""" start="00:06:54.320" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""In this case, it's an implicit button,""" start="00:06:56.560" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and it shows you even where the button starts and ends,""" start="00:06:59.480" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""what type of action it will run,""" start="00:07:03.120" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""it's a link to a file line,""" start="00:07:06.680" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and then what arguments it takes.""" start="00:07:08.040" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So Hyperbole extracts all this meta information""" start="00:07:10.000" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""just from the text in your buffer""" start="00:07:14.000" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and displays it to you conveniently""" start="00:07:16.680" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""so you can know before you ever touch a hyper button""" start="00:07:19.120" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""if it will do something that you want it to do.""" start="00:07:22.320" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Here we have a fairly advanced button""" start="00:07:24.480" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""that's very simple to do. You just specify a bug in Emacs""" start="00:07:28.560" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""that you want to reference to.""" start="00:07:31.520" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Notice no delimiters, just bug pound, whatever, made a return.""" start="00:07:34.280" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And I'm in GNU's reading the conversation for that bug.""" start="00:07:40.040" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And I can just, you know, move""" start="00:07:45.480" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""through all the conversation.""" start="00:07:48.720" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""I can quit out of there and go back to where I was.""" start="00:07:50.920" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So very, very easy to use these implicit buttons""" start="00:07:56.040" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""because they're already there""" start="00:07:59.600" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""throughout your Emacs buffers.""" start="00:08:00.880" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""I described the control HA, what that does.""" start="00:08:03.680" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And there's other types of buttons""" start="00:08:06.120" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""that we can get into as questions go on,""" start="00:08:09.360" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""but you can create your own explicit buttons""" start="00:08:11.560" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""that have a little slightly different delimiter than you see""" start="00:08:14.720" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""in the implicit buttons.""" start="00:08:18.720" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And this one I just put in here to show you that""" start="00:08:19.800" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""If you use it and you go, this is the hyperbole to do list,""" start="00:08:24.760" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""which is an org buffer.""" start="00:08:30.440" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""But I wanted to show in here that similarly,""" start="00:08:31.880" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""we have implicit buttons for to do's in the work.""" start="00:08:35.080" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And when we hit made a return,""" start="00:08:37.800" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""it just changes the state of that to do.""" start="00:08:39.680" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And I can cycle through those""" start="00:08:42.680" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""but even better with the prefix argument""" start="00:08:44.920" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""if I have multiple sequences of to do's""" start="00:08:47.400" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""because there's Bob and Matt's that maintain hyperbole""" start="00:08:50.400" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""so I can shift to Bob's to do's""" start="00:08:53.520" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""with control you made a return""" start="00:08:56.000" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and then cycle through the states for me""" start="00:08:57.760" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So very very easy to use,""" start="00:09:00.080" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""you know something that's a little bit more difficult to do""" start="00:09:05.040" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""I think in org without it and So that's an explicit button""" start="00:09:08.320" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""where I had to actually say I want to create this button,""" start="00:09:16.240" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and I had to specify what type it is.""" start="00:09:19.480" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""If I show you the information there again,""" start="00:09:21.600" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""you see it has a little different type""" start="00:09:23.760" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""called a keyboard key, which runs just the key sequence.""" start="00:09:25.880" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So you're starting to see already""" start="00:09:29.680" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""that explicit buttons have a type""" start="00:09:34.760" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""that's connected to an action""" start="00:09:36.840" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""that an implicit button can do as well.""" start="00:09:38.160" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So all of this ties back together.""" start="00:09:41.200" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And finally, there's a homepage that Hyperbole has,""" start="00:09:42.960" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""a personal homepage that you have.""" start="00:09:47.080" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""You hit Control-H-H, which is our mini-buffer menu,""" start="00:09:49.160" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and then you hit what is it, B for button file""" start="00:09:53.000" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and then P for personal file.""" start="00:09:58.320" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And that just brings you to basically a set of links""" start="00:10:01.440" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""that you can create buttons in any format you want.""" start="00:10:05.240" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""There's no structure that you see here.""" start="00:10:10.200" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""But the nice thing is that all of these buttons that have these names, as we call them,""" start="00:10:12.480" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""with the delimiters here,""" start="00:10:18.760" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""can be referenced now as what we call global buttons""" start="00:10:20.280" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""wherever you are in Emacs. So I'm in a separate buffer here""" start="00:10:23.800" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and say I want to jump to that to-do button""" start="00:10:28.240" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""that's labeled TD on line 10 down there.""" start="00:10:30.720" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""No matter what I have on screen,""" start="00:10:33.280" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""I can hit control H, H, G for global button,""" start="00:10:35.520" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""A for activate, and then it gives me a list of those.""" start="00:10:39.200" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So I know it's TD, I just put TD in.""" start="00:10:43.720" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Okay, that's a path link problem I have,""" start="00:10:47.120" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""but when I fix the link, it would go to it.""" start="00:10:52.160" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So you can create buttons""" start="00:10:56.360" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""that you can access in any mode, anywhere,""" start="00:10:58.240" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and just give them quick names, and it's very easy.""" start="00:11:01.640" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So that kind of gives you an idea""" start="00:11:05.800" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""of how you can get very productive""" start="00:11:08.560" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""with hyperbole with just a few simple techniques.""" start="00:11:11.720" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""You still there Sacha? Yep, I'm still here.""" start="00:11:15.000" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""I have too many tabs.""" start="00:11:30.440" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So the question is, I've been using activities.el""" start="00:11:37.080" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and bufferload to save dedicated workplaces,""" start="00:11:46.200" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""open buffers, and decisions in tabs and frames""" start="00:11:48.880" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""for tasks and projects across the next sessions.""" start="00:11:52.160" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Can I do something similar with Hyper-V? Yes, you can.""" start="00:11:54.600" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And activities is a nice package from alphapapa.""" start="00:12:00.120" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""We've actually been working with it lately.""" start="00:12:03.720" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So we're probably in the next month or so""" start="00:12:07.400" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""we'll have a specific integration""" start="00:12:11.160" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""to activities built into Hyperbole.""" start="00:12:13.480" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""But right now, we don't. But of course, you can call""" start="00:12:16.000" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""any of its functions or key bindings""" start="00:12:21.520" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""using the techniques that I just showed you earlier.""" start="00:12:23.280" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""But what we do have built in if you go to the menu again.""" start="00:12:26.080" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and you see control HH,""" start="00:12:33.600" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and then there's a W, Windows, WinConfig menu,""" start="00:12:35.960" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and there's two types of window configurations that you can save here.""" start="00:12:43.040" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""They are, right now, they're per Emacs session.""" start="00:12:48.400" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""They're not stored beyond that,""" start="00:12:52.600" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""but we'll probably add that in as well,""" start="00:12:55.760" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""or we'll use activities for that.""" start="00:12:58.520" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""so the two types are you can either just save a window configuration in a frame""" start="00:12:59.880" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""to actually it stores the frame configuration""" start="00:13:07.200" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""to a ring just like the kill ring""" start="00:13:10.320" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""so you have the three commands at the right""" start="00:13:13.360" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""you can save with an s you can pop one off the ring with p""" start="00:13:16.120" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""or you can just yank and keep cycling through with a y""" start="00:13:21.240" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and it will restore the frame configuration that you saved.""" start="00:13:25.960" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Similarly you can just do it by name""" start="00:13:31.120" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and you can say I want to add a name""" start="00:13:35.080" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and then you know just give it a name again win win C and store it and it stores it there""" start="00:13:36.840" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and then you can get back to it by name as well.""" start="00:13:45.800" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So fairly fairly easy to use as well""" start="00:13:48.560" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and again integrated in the same simple menu system.""" start="00:13:51.320" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So thanks for that question.""" start="00:13:55.000" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Should I just go to the next question?""" start="00:13:57.080" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""How well do hyperbole and org mode work together?""" start="00:14:07.120" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Is there any kind of integration?""" start="00:14:10.080" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Yes, in fact, that's really good.""" start="00:14:12.760" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""I'll just mention something. Let me go back to my homepage.""" start="00:14:18.080" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""I just stored that here. So we gave a talk at an earlier""" start="00:14:22.360" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Emacs conference right here on org""" start="00:14:26.680" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and hyperbole integration.""" start="00:14:31.560" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So that's a good one to go back to.""" start="00:14:33.200" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And I believe it's in this files""" start="00:14:35.920" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""included with hyperbole as well.""" start="00:14:39.480" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So you can learn various techniques""" start="00:14:41.600" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""of how the action key helps you in org.""" start="00:14:45.080" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""It does special things in tables.""" start="00:14:48.200" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And there's some nice support for, for example, working with code blocks.""" start="00:14:51.680" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Let me see where that is. Okay, so right back here.""" start="00:15:00.240" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So you can run them with the action key.""" start="00:15:02.640" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""You can refresh the output and do things like that.""" start="00:15:09.760" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So again, if I just hit Control-H-A,""" start="00:15:15.040" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""it'll tell me that it's in SmartOrg,""" start="00:15:17.560" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and it'll give me all the different contexts that that operates within.""" start="00:15:20.440" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So there's a lot that it does in here.""" start="00:15:24.360" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And you can see it would point on the dir value of a code block definition""" start="00:15:26.560" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""that will actually display a summary""" start="00:15:30.480" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and all sorts of functionality.""" start="00:15:33.560" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So the integration is quite tight.""" start="00:15:35.200" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And one of the things we do""" start="00:15:37.440" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""since made return is used in org,""" start="00:15:39.680" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""we have a customization setting, C even O.""" start="00:15:41.800" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And you have these three settings where you can say,""" start="00:15:44.720" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""I want me to return to, I want hyperbole to control that""" start="00:15:48.240" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and everything that the action key does I want to happen.""" start="00:15:53.360" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Or I only want hyperbole to control""" start="00:15:57.280" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""when I'm over a hyperbole implicit explicit button.""" start="00:16:00.480" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Or I want org to control that key and never use hyperbole.""" start="00:16:03.240" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So you just set that once,""" start="00:16:09.160" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""it's persistent across sessions and you're good to go.""" start="00:16:10.800" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And again, it's built right into the menus.""" start="00:16:13.920" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So but even following that we've the latest addition to hyperbole is Something""" start="00:16:16.400" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and this is the first time""" start="00:16:23.920" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""we're really showing it publicly is the high wiki""" start="00:16:25.800" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Which is a new subsystem as we call it""" start="00:16:29.800" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and this is I think the best wiki capability in Emacs now what it does is it automatically highlights""" start="00:16:33.560" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""let me turn it on I have to turn on high wiki mode""" start="00:16:44.720" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and you see those wiki words now got highlighted so any any wiki word""" start="00:16:48.120" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""which is the capitalized alpha word you know""" start="00:16:54.680" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""so you can have multiple capitals in there""" start="00:16:58.840" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and I'll get recognized can be used as a wiki word""" start="00:17:01.440" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""so for example when I just type hi wiki here""" start="00:17:06.040" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""it automatically recognizes it,""" start="00:17:09.520" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and you see it turned it into a hyperlink button,""" start="00:17:11.560" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""which again, Control-H-A will tell me exactly what it does there.""" start="00:17:14.240" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""But I can just hit the action key, made a return,""" start="00:17:18.160" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and it'll display my hiwiki.org file.""" start="00:17:23.120" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""All wiki pages are org files.""" start="00:17:26.880" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So we're using that for the wikis, and you have""" start="00:17:30.560" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""You can export an entire wiki""" start="00:17:35.680" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""using essentially the org export capability""" start="00:17:40.360" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""With a little extra set of features that we've added in""" start="00:17:43.160" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""but let's say even better you see""" start="00:17:48.600" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""I have this heading here so let me just change this""" start="00:17:51.200" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""you go back here and I'll say go to heading""" start="00:17:54.120" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""so you just put a pound on it""" start="00:17:59.240" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and now that whole thing is a reference to a specific org section.""" start="00:18:01.040" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Notice there's no org IDs here.""" start="00:18:05.680" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""There's nothing other than the text that you're seeing.""" start="00:18:08.440" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""There's not even a delimiter.""" start="00:18:11.640" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So we have automatic implicit hyper buttons""" start="00:18:13.440" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""being added in any buffer.""" start="00:18:17.840" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Could be a comment in a programming buffer with all you""" start="00:18:20.680" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""You don't have to add anything.""" start="00:18:23.960" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""I'll show you how to create a new page in a minute.""" start="00:18:26.600" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""But you see I can link to any org section without any IDs.""" start="00:18:32.000" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And then I can also do like org-roam does,""" start="00:18:35.960" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""but without the indexing or database that it requires.""" start="00:18:38.800" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""I can scan over all of my wiki files and headings.""" start="00:18:42.040" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""find a match really quickly.""" start="00:18:46.840" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So we can get into some of that a little later as well.""" start="00:18:48.760" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""But, you know, very convenient.""" start="00:18:53.280" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""There's nothing that you change on org to do this.""" start="00:18:55.760" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So how do I create a wiki word?""" start="00:18:58.440" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Well, let's say I wanted, you know, wiki word for me.""" start="00:19:00.880" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So that's already, that was a wiki word,""" start="00:19:07.360" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""but now this is a new one. So you see it doesn't highlight""" start="00:19:10.000" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""because I haven't created a wiki page yet.""" start="00:19:12.960" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So all I hit is the action key, and boom.""" start="00:19:16.560" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Now it created it as a new wiki word.""" start="00:19:20.320" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""It created the .org file.""" start="00:19:23.520" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""If I don't edit this file, it won't save it,""" start="00:19:24.880" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and it'll not become a word in case you made an accident.""" start="00:19:28.280" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""But let's just say I want to say it.""" start="00:19:32.360" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So, you know, heading. That's it. I'm just in org mode.""" start="00:19:34.320" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Now anytime that high wiki mode is active,""" start="00:19:39.160" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""in any buffer essentially,""" start="00:19:42.880" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""I can type that out and it'll recognize it.""" start="00:19:46.240" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Notice so that's not a wiki word.""" start="00:19:50.280" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So it's highlighting and it's unhighlighting""" start="00:19:53.040" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""right as I type.""" start="00:19:55.280" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So, again, you can embed these as org links in org.""" start="00:19:56.600" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""There's a special format like this, HiWiki word""" start="00:20:03.200" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""that you can make an org link""" start="00:20:09.440" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""if I was in org mode, just like that.""" start="00:20:11.240" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So there's all sorts of compatibility,""" start="00:20:13.480" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""but basically it's just words,""" start="00:20:16.600" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and HiWiki takes care of the rest for you.""" start="00:20:18.320" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So there's a directory where all these, it's HiWiki,""" start="00:20:21.120" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""hi wiki tilde slash""" start="00:20:26.680" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""hi wiki is the default place where all these would be found""" start="00:20:28.880" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and there's a menu now in hyperbole for hi wiki h""" start="00:20:32.720" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and you can see it has a lot of capabilities""" start="00:20:36.360" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""but i can say b go into the directory of all the files""" start="00:20:40.640" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""just pull them up and any of these you'll see""" start="00:20:44.360" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""let me give you one like this me okay so you can see the other wiki words being highlighted in here""" start="00:20:47.800" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""so it's very fast to this there's almost no delay for anything""" start="00:20:59.960" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and yet very flexible and you have this ability you know where you could type emacs section dash 1 dash 2""" start="00:21:04.040" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and If you didn't have delimiters around it,""" start="00:21:14.680" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""but you can put any delimiters""" start="00:21:16.760" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""like double quotes or parentheses,""" start="00:21:18.480" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and then it'll match without you having to change the header at all""" start="00:21:20.840" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""with the spaces included and all of those.""" start="00:21:25.160" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""know will get recognized.""" start="00:21:28.440" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""I don't know if this if the section exists right there.""" start="00:21:31.920" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So anyway a lot of capability you can see that here where I did the high""" start="00:21:35.600" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""it actually highlights as an org link""" start="00:21:41.960" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""because it is an org link""" start="00:21:45.520" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and it'll operate just like any other org link""" start="00:21:46.840" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""even though it's a high wiki word link as well.""" start="00:21:50.320" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So very powerful stuff""" start="00:21:54.280" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and totally integrated with Org Mode throughout.""" start="00:21:55.760" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Great. There's another question.""" start="00:22:00.960" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Are there any talks from this year's Emacs Conf""" start="00:22:06.440" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""that discuss things that would work well with Hyperbole?""" start="00:22:09.040" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""No. Unfortunately, I had to work yesterday, so I haven't...""" start="00:22:12.600" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""been following the conference as much as I do.""" start="00:22:19.280" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Maybe somebody else could comment on that.""" start="00:22:22.640" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""But I think, you know, again,""" start="00:22:25.560" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""it's like pick your favorite mode,""" start="00:22:29.520" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""pick your favorite type of information.""" start="00:22:31.880" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Can I hyperbole work with that?""" start="00:22:34.720" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""You know, the answer is almost always yes.""" start="00:22:36.840" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So, you know, if I show you just a little bit,""" start="00:22:40.000" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""if I show you some of these implicit button types,""" start="00:22:44.960" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""just so you know the amount of code""" start="00:22:48.680" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""involved to create a type.""" start="00:22:53.360" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So here's like a male, recognizing""" start="00:22:56.280" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""an email address as a button.""" start="00:22:59.680" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""It's a little long so that it creates a lot of things""" start="00:23:01.640" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""but you know it's less than 15 lines of code for that.""" start="00:23:05.520" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Path names are complicated so that's a longer one""" start="00:23:09.200" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""but let's look at so here's one recognizing a bibliography entry.""" start="00:23:12.200" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So it can be between two and 20 lines of code""" start="00:23:18.800" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""to create an entirely new button type.""" start="00:23:24.880" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And you create it once, and you just add it to the set of types,""" start="00:23:27.520" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""just like at the fun, except it's done with this macro""" start="00:23:32.160" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""called def, implicit button type, and defib.""" start="00:23:35.480" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And it's part of your hyperlinking system forever then.""" start="00:23:39.480" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So say you got dumped with 5,000 documents""" start="00:23:45.560" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""that were in this weird text format,""" start="00:23:49.800" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and they all had cross-references among them,""" start="00:23:51.520" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""but it was, again, using a weird format.""" start="00:23:54.120" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""You could just write your own little type for that,""" start="00:23:56.760" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and then those 5,000 documents are hyperlinked for you""" start="00:23:59.920" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""every time you're browsing them in Emacs automatically.""" start="00:24:04.320" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So we do that all the time, create small things,""" start="00:24:08.760" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""but all of these are built into Hyperbole.""" start="00:24:11.960" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Markdown links, tech info links, all of that's automatic.""" start="00:24:15.160" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""I could even be in a shell mode, and I just say ls,""" start="00:24:20.200" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and these are hyperlinks that Hyperbole understands, right?""" start="00:24:26.200" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""It just jumps right to the file.""" start="00:24:30.520" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So grep-n, You know, looking at any line numbers,""" start="00:24:31.760" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""you don't have to remember""" start="00:24:37.000" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""all these different commands anymore.""" start="00:24:39.840" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""You just hit made a return,""" start="00:24:41.960" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and Hyperbole does the right thing""" start="00:24:44.320" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""in all these different contexts,""" start="00:24:46.600" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""including following cross-references in code.""" start="00:24:48.360" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So I would say that's your answer.""" start="00:24:52.640" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Most things that people are talking about,""" start="00:24:56.080" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""we've already probably integrated with Hyperbole""" start="00:24:58.400" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""or with a little bit of custom coding.""" start="00:25:02.200" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""You can do it. I think that's the end of the etherpad questions for now,""" start="00:25:04.640" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""but I see a number of people in the room,""" start="00:25:11.200" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""so you can continue the conversation.""" start="00:25:12.920" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""We'll be on the stream for another five minutes or so,""" start="00:25:15.440" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""but yes, please go ahead. Great. Yeah.""" start="00:25:18.720" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""I mean, people, does everybody have, can talk on the conference?""" start="00:25:22.320" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""I was expecting to just talk with people here.""" start="00:25:27.640" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Let's see. Yeah. Can anybody say anything here?""" start="00:25:31.440" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Hi, Bob. I can say something. Hey, Matt. Hi. Yeah.""" start="00:25:40.800" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Maybe you want to bring up a topic.""" start="00:25:52.040" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""I think I... Yes. Sorry, Bob.""" start="00:25:55.200" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""I think I saw a question here on IOC. It was like this.""" start="00:25:56.840" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Interesting, but the many different link formats""" start="00:26:05.840" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""makes reading and analyzing my notes""" start="00:26:08.600" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""much harder and less usable outside Emacs.""" start="00:26:11.280" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""I don't know if you have some comment on that.""" start="00:26:14.960" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Well, I mean, the different formats that you're saying,""" start="00:26:18.760" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""like angle brackets or curly braces,""" start="00:26:22.320" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""are just so that you can utilize many different types.""" start="00:26:24.840" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""of buttons, but if you just want to use key sequences,""" start="00:26:31.320" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""there's only one markup format.""" start="00:26:35.600" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""With org, you've got the square brackets,""" start="00:26:37.760" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""which are consistent, but in order to have different types,""" start="00:26:41.600" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""you have to type a prefix name,""" start="00:26:44.920" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""like you see the HY for the High Wiki buttons in org mode.""" start="00:26:47.280" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So I think the trade-off is pretty much the same,""" start="00:26:53.280" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""but Hyperbole always, always works""" start="00:26:57.000" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""to minimize the amount of markup.""" start="00:27:02.240" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Markdown is pretty simple. A lot of people like that.""" start="00:27:04.560" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""But I think you'll find in hyperbole texts,""" start="00:27:07.440" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""they read just like regular language.""" start="00:27:10.760" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""I mean, the delimiters are fairly invisible.""" start="00:27:15.480" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So I'm not sure what the issue is there.""" start="00:27:19.600" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And again, you can choose your own.""" start="00:27:23.040" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""You can make your own types with your own delimiters.""" start="00:27:24.920" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""There's even a custom macro""" start="00:27:27.640" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""that instead of using that defib""" start="00:27:31.360" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""where you have to type out list code,""" start="00:27:33.400" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""you can use regular expressions.""" start="00:27:35.560" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And in one line, you can define your own type of button""" start="00:27:37.520" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""with its own delimiters.""" start="00:27:41.240" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So, you know, depending on what works well for your eyes,""" start="00:27:42.920" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""you can make Hyperbole adapt quite well to that.""" start="00:27:47.880" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And again, if you start using the HiWiki,""" start="00:27:51.360" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""there's literally zero markup on that.""" start="00:27:54.320" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So you're just reading text,""" start="00:27:57.480" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and when you want something hyperlinked,""" start="00:27:59.600" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""it's like a glossary or a dictionary entry.""" start="00:28:01.760" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""It's just there, and it's just highlighted in the text.""" start="00:28:04.600" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So I don't see much barrier to using it with many different types of documents.""" start="00:28:09.600" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Let me go back to the Emacs here.""" start="00:28:17.480" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""If there are any other questions.""" start="00:28:23.320" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Let me see. Let me go back to that. This K outline here.""" start="00:28:27.040" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So we covered HiWiki.""" start="00:28:36.640" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""We're in the, I'll just show you some things""" start="00:28:38.720" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""that we wanted to highlight""" start="00:28:43.000" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""if people didn't have specific questions.""" start="00:28:44.040" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""But feel free to jump in anytime""" start="00:28:46.280" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""if you want to ask something.""" start="00:28:48.880" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So what we're looking at here is a K Outliner document.""" start="00:28:51.400" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""There's, you know, hyperbole is pretty well documented.""" start="00:28:57.040" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""There's a large manual. There's interactive.""" start="00:29:00.400" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""demos of it and there are videos as well""" start="00:29:04.720" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""but the K Outliner is unique in Emacs""" start="00:29:09.320" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""because it it can do like full legal auto numbering you""" start="00:29:12.080" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""just say I want to create a new headline""" start="00:29:17.440" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and you can see or I could create four""" start="00:29:21.400" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""I could say I want to create three more of these""" start="00:29:23.920" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and I can do it all at once with one key""" start="00:29:26.680" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""I can then just tab to make sublevels here""" start="00:29:29.240" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and you see this is using a specific outline format that we have""" start="00:29:33.680" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""but if we do dot in the view specs here""" start="00:29:40.320" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""it changes to legal outlining so it's really that simple""" start="00:29:43.920" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and all of these numbers are automatically maintained""" start="00:29:48.240" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""as I move stuff around I can use like org mode alt arrow keys""" start="00:29:51.400" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""to like move things up and down, right?""" start="00:29:56.640" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And just move them around.""" start="00:30:00.120" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And when I run out, you know, when it can't go any higher,""" start="00:30:00.840" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""it gives me an error.""" start="00:30:04.720" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And then it's just free form typing here with auto-wrapping.""" start="00:30:06.040" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""The nice thing is that there's,""" start="00:30:11.080" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""there's actually these hidden,""" start="00:30:13.760" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""let's get, hidden what are called ID stamps.""" start="00:30:17.360" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So these are permanent hyperlink anchors""" start="00:30:22.520" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""that are assigned to each cell.""" start="00:30:24.920" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So as this cell moves in the outline,""" start="00:30:26.720" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""you notice that this 29 didn't change.""" start="00:30:29.680" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So you can move and all those other auto numbers shift""" start="00:30:32.680" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""to represent the actual outline structure.""" start="00:30:37.440" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""But this ID stamp of 29 stays the same.""" start="00:30:40.360" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So you can embed that in links and say,""" start="00:30:44.080" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""I want to link to cell 29.""" start="00:30:47.680" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""If I go, let me just go to the K Outliner example.""" start="00:30:51.720" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And I'll show you one of those, which is really cool.""" start="00:30:56.000" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Because what you can do is say, I want to link""" start="00:30:59.040" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Let me find that. It's down here somewhere.""" start="00:31:02.600" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""I think there's 3A. Where was it? Yeah, okay.""" start="00:31:07.000" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So see right here, this is an internal link""" start="00:31:12.200" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""with just the pound and then the relative ID, as we call it, 3B.""" start="00:31:16.480" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""But of course, somebody may have moved 3B in the outline.""" start="00:31:21.200" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So when Hyperbole inserts a link,""" start="00:31:25.720" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""it puts this equal with the ID stamp in it automatically.""" start="00:31:27.920" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So if what'll happen is when I reference this,""" start="00:31:32.040" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""okay, it's still the same.""" start="00:31:35.840" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""But if it had changed, it would update this link""" start="00:31:37.640" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and would change the 3B to say it was 3D now""" start="00:31:40.960" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""based on this permalink, the 08 that's hidden away in here.""" start="00:31:44.760" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So you don't have to do anything.""" start="00:31:50.520" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""It's just that you have these automatic hyperlink anchors""" start="00:31:52.440" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""that are embedded in your outlines again.""" start="00:31:56.600" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""sort of like org IDs, but you have to manually place those in org.""" start="00:31:58.960" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And it just makes linking much simpler.""" start="00:32:04.520" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And you can reference this.""" start="00:32:09.040" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""You can reference the file and the cell number.""" start="00:32:10.360" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And again, you don't put this hyperbole.""" start="00:32:13.800" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""You don't put this in.""" start="00:32:16.000" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And then you can even have these view specs, which say,""" start="00:32:17.680" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""I want to clip the display to one line,""" start="00:32:20.720" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and I want to delete. ellipses.""" start="00:32:25.920" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So here we see a view over the same outline""" start="00:32:27.400" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""that's all in one mode. So it's just incredibly capable.""" start="00:32:31.080" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So here we've said, you know,""" start="00:32:37.320" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""there's no blank lines between cells.""" start="00:32:40.080" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""now I change the view spec and put a blank line in there""" start="00:32:42.880" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and it's all changed so lots of consistency that you get""" start="00:32:46.720" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""when you when you change a node in the outline""" start="00:32:51.880" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""the whole tree shifts and all of this is maintained""" start="00:32:55.600" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""all of the structure is maintained automatically by hyperbole""" start="00:32:58.800" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and you can embed or Tables in here as well.""" start="00:33:02.840" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So if I just press made a return action key again on this or Disabled.""" start="00:33:09.480" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Okay. So now I enabled org mode here""" start="00:33:17.080" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and where you see like tab here shifts a cell when I'm inside a The table tab just operates like normal org tables.""" start="00:33:21.800" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So I can do all of the things""" start="00:33:31.720" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""that I can do in org table mode as well within this k-outline.""" start="00:33:33.520" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So it seems pretty useful to me,""" start="00:33:40.840" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""but of course, I helped write it.""" start="00:33:43.400" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""But I think you see some of the benefits""" start="00:33:48.520" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""that can accrue by using that format.""" start="00:33:51.280" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""But this is just this is just one piece of hyperbole,""" start="00:33:53.960" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""a major mode that you can choose to use or ignore entirely,""" start="00:33:57.840" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""you know, dependent on your needs.""" start="00:34:01.560" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""If you're writing requirements, documents,""" start="00:34:04.040" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""or anything that needs structure,""" start="00:34:06.400" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""I think that's where this is really ideal.""" start="00:34:08.880" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""You can write a legal document,""" start="00:34:12.080" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and you've got auto-numbering,""" start="00:34:14.280" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""which is always, if you've ever used Word""" start="00:34:16.160" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""or any of those word processors,""" start="00:34:18.680" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""it's really a pain to maintain those hierarchies in those compared to here.""" start="00:34:21.040" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Okay, so that was just showing you the KL liner.""" start="00:34:26.480" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Does anybody have any questions""" start="00:34:32.240" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""or I'll just continue down a bit?""" start="00:34:35.280" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Okay, so some other capabilities""" start="00:34:43.280" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""that we've fairly recently put in.""" start="00:34:48.000" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Well, this has been here for a long time.""" start="00:34:49.960" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""You can, I think the binding I use is Control-C-M.""" start="00:34:52.800" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""I forget what it is.""" start="00:34:58.720" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""No, sorry, that's Control-C, Control-M.""" start="00:35:00.160" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Now let's CTRL C, forward slash.""" start="00:35:07.160" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Okay, so what I wanted to show you here is that the action key""" start="00:35:14.320" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""on any double quote, single quote, usually,""" start="00:35:21.720" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""or paired delimiters will select that whole thing.""" start="00:35:26.680" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""There is this capability, and I probably just select bigger""" start="00:35:30.080" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and bigger chunks of text,""" start="00:35:33.240" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""but this is really nice that you can just go anywhere""" start="00:35:35.120" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""in pretty much any mode and hit made a return.""" start="00:35:39.320" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And so in Lisp, you can be on the trailing paren""" start="00:35:42.480" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and it will select the whole expression or the opening""" start="00:35:46.560" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and it'll select just that piece""" start="00:35:50.600" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""but even better when you're copying pasting""" start="00:35:52.880" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""I can now if there's no region selected control W made a W""" start="00:35:56.160" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""will act on the structured entity""" start="00:36:02.040" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""that you're at the beginning or ending delimiter for""" start="00:36:05.680" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""without you having to highlight the region""" start="00:36:09.360" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So if I hit made a return, it would highlight it,""" start="00:36:12.200" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""but let's just do made a W to cut that and then I'll yank it here.""" start="00:36:14.720" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And you see it grabbed the whole expression""" start="00:36:19.840" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and just let you yank it.""" start="00:36:23.600" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So it's a nice add on to the basic Emacs commands""" start="00:36:25.600" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""that just let you operate a lot more efficiently.""" start="00:36:29.680" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""You can do something similar in C mode.""" start="00:36:33.160" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""You know, on the braces, you can select the whole function""" start="00:36:35.360" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""with one key press,""" start="00:36:39.440" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""made a return, and then copy it somewhere.""" start="00:36:40.440" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And Hyperbole integrates with Ace Window if you use that.""" start="00:36:43.080" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So let me split this a few ways. And let's do it over here.""" start="00:36:50.560" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""We'll just go to scratch. Okay. And then I can go,""" start="00:36:56.800" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""it's sort of interesting,""" start="00:37:06.800" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""it works with the, with Dired as well.""" start="00:37:08.120" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So I can go here and say, I want to So if I do Meta O,""" start="00:37:11.120" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""ACE window will show me the labels to use, A, D, or S, to do something.""" start="00:37:16.520" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Like I can move to any of those windows.""" start="00:37:22.160" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""But what Hyperbole lets you do""" start="00:37:24.560" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""is say I want to throw with T,""" start="00:37:27.960" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""like this glass.org file over to the bottom window.""" start="00:37:30.760" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So I go MetaO to invoke it. I say I want a T to throw it.""" start="00:37:36.400" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""then where do I want to throw it to s the window and""" start="00:37:42.480" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Then you see it's now displaying glass org""" start="00:37:46.400" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""so I can do that with files I can do it with regions of text you can""" start="00:37:49.880" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Replace things in a buffer""" start="00:37:56.680" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""or throw the whole thing to the window""" start="00:37:58.720" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""so a couple extra commands""" start="00:38:01.200" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""that it extends ace window with you""" start="00:38:02.760" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""can even I think, well, we also have this command,""" start="00:38:06.520" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""I think it's Control-C, yeah.""" start="00:38:12.160" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So what it did there was it just selected the files""" start="00:38:16.800" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""that I had marked in Dura,""" start="00:38:21.720" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""it selected and created a window grid out of all of them.""" start="00:38:22.800" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""you know, so I hit like three keystrokes.""" start="00:38:26.840" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""That's kind of convenient if you want to see""" start="00:38:29.560" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""a lot of information all at once.""" start="00:38:35.160" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And so we covered all that. I won't go into it too much,""" start="00:38:38.160" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""but there's a whole nother window and frame control system""" start="00:38:42.240" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""under the screen menu here if you type control HHS.""" start="00:38:46.640" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""then you can select either controlling windows or frames.""" start="00:38:50.800" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Let's do windows.""" start="00:38:54.480" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And it has this menu where it's just sort of showing you.""" start="00:38:56.120" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""I can like split my windows vertically or horizontally.""" start="00:39:00.480" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""I can widen by a pixel or I can say, or character.""" start="00:39:07.840" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""I can say, use my prefix argument to change that to 10.""" start="00:39:13.760" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And then when I shrink it, shrinks it up by 10""" start="00:39:18.320" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""or it narrows it width by 10 or it widens it by 10.""" start="00:39:22.480" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So it has this concept of prefix arguments that persist""" start="00:39:27.320" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and you just type in the number""" start="00:39:33.680" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and then you can issue any number of the commands.""" start="00:39:35.720" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So you could move windows or frames""" start="00:39:38.360" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""or create them, delete them, cycle through them,""" start="00:39:41.680" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""all sorts of things, including relative to movement,""" start="00:39:44.920" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""relative to the edges of your screens.""" start="00:39:48.280" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So if you have multiple screens""" start="00:39:50.720" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and many frames that you use,""" start="00:39:52.560" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""it just makes management very convenient.""" start="00:39:54.480" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And then you just cue to quit out of there""" start="00:39:59.640" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and you're back wherever you were.""" start="00:40:02.440" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So, Finally, we have a lot of documentation.""" start="00:40:04.960" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""This is just a link to the videos,""" start="00:40:10.440" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""which is in the readme and in the manuals.""" start="00:40:12.600" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""There's two demos or tutorials. One to get you started.""" start="00:40:16.240" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Notice I'm using these implicit buttons, so keystrokes,""" start="00:40:21.400" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and I can just made a return on that.""" start="00:40:24.720" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And that takes me to, here's all the videos.""" start="00:40:26.880" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And you can get started with that""" start="00:40:30.520" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""or just interact with this demo that we have.""" start="00:40:34.240" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And there's one for the K Outliner as well.""" start="00:40:38.280" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""One of the things that If you're into videos""" start="00:40:41.520" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and you need to link to them,""" start="00:40:45.400" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""notice what you're seeing here. This is a hyperbole feature""" start="00:40:46.920" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""which is very difficult to achieve any other way that I've seen""" start="00:40:50.520" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""where you want a specific start and stop time""" start="00:40:54.920" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""in a video that you want to play.""" start="00:40:59.280" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Hyperbole has a built-in link type for that.""" start="00:41:01.040" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""as you see here. So this is the name of the link""" start="00:41:05.640" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""that you can reference it by,""" start="00:41:08.760" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and then this is the actual link expression.""" start="00:41:10.920" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So I could just go and play a video right here,""" start="00:41:14.280" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and this is from one long intro to hyperbole that we did.""" start="00:41:17.480" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So it's just linking to the specific sections.""" start="00:41:22.080" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""But that's something, again,""" start="00:41:25.760" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""this could be embedded anywhere.""" start="00:41:27.440" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""in any file and it would start to play.""" start="00:41:29.520" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Uh, I guess I could try YouTube.""" start="00:41:33.760" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Well, I don't want to. Yeah. Okay. It's on my other screen.""" start="00:41:36.560" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So, but it did, it did, uh, link to it.""" start="00:41:43.240" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So, um, yeah, just, you know, tremendous capability""" start="00:41:48.200" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""to interlink your information that way.""" start="00:41:53.320" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And, uh, You know, again, you learn it bit by bit.""" start="00:41:56.920" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""You can study one particular section right here.""" start="00:42:00.360" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Just jump directly to that if you want to know about it.""" start="00:42:04.280" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""The manual is interlinked, has an extensive glossary,""" start="00:42:09.040" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""cross-references of sections.""" start="00:42:13.320" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And if you go in there, this is the hyperlinked manual.""" start="00:42:16.120" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So this is the structure of it""" start="00:42:23.120" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""with all the subsystems documented.""" start="00:42:25.120" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""But one of the sections we've added""" start="00:42:27.800" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""is developing with hyperbole.""" start="00:42:31.520" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So if you are or you want to create your own button types,""" start="00:42:33.560" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""this explains how to do it.""" start="00:42:37.320" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Creating types, you can create your own action""" start="00:42:38.920" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and implicit button types.""" start="00:42:42.960" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And if you look in here, there are three ways""" start="00:42:45.000" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""to create implicit button types from simpler to harder.""" start="00:42:48.360" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So like, here's an example""" start="00:42:55.040" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""where the do pressing control X after this expression""" start="00:42:59.080" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""defines a new action button link type called pilot.""" start="00:43:03.680" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So let's say, I don't know if I have this set up, but we can try it.""" start="00:43:07.200" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Yeah, I don't have the variable setup,""" start="00:43:13.360" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""but basically, you know, it can get you.""" start="00:43:22.000" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""This is a one line definition of a new action type.""" start="00:43:25.760" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""that can get you to a Python file""" start="00:43:31.360" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""based on whatever your Python path is set to""" start="00:43:36.400" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""with this simple syntax right here.""" start="00:43:39.640" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And here we're going to the file.""" start="00:43:42.920" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So we have no idea where this is on the file system.""" start="00:43:45.200" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And the same way like if you use man path, Python path,""" start="00:43:48.400" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""you can embed buttons. Let's just go to scratch buffer.""" start="00:43:54.960" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""My first read-only. It doesn't want me to go.""" start="00:44:08.600" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""It must be kind of strange.""" start="00:44:17.920" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Something with this key window that I have over here.""" start="00:44:25.000" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Let me just move off there. Look at that.""" start="00:44:34.800" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Maybe it's just activating that.""" start="00:44:41.040" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Yeah, it keeps jumping back there.""" start="00:44:46.520" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""I don't know. I have to get this straight.""" start="00:44:53.320" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Yeah, it's not letting me type the buttons.""" start="00:44:55.920" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Let me see if I can turn off the key casting.""" start="00:45:02.200" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Yeah, maybe that'll help. just gonna exit out of here.""" start="00:45:15.840" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Does anybody have any questions they want to cover?""" start="00:45:23.520" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""I was just gonna show you yeah a little more on type definitions""" start="00:45:33.000" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""if there was any interest OK, there's nobody piping up.""" start="00:45:39.080" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Let me see if there's any other questions.""" start="00:45:53.120" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Hi, Bob. I haven't seen any more questions.""" start="00:45:57.000" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Yeah, so maybe it's you, me, and someone called Max is here in the channel.""" start="00:46:04.440" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""OK. Okay, so if Max doesn't have any questions""" start="00:46:10.840" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""and there aren't other people, we can just end it there.""" start="00:46:19.480" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""I don't want to have an audience of zero or talk to that.""" start="00:46:24.840" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So, but I think that was a good overview, Max, right?""" start="00:46:34.480" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""Yes, definitely covered a lot in a short time.""" start="00:46:37.920" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And hopefully, you know, just try it out.""" start="00:46:45.480" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""At the top here, it shows you how to install it.""" start="00:46:48.640" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""It's pretty simple, basic package and installation.""" start="00:46:52.400" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And we're happy to help anybody get started if they need to.""" start="00:46:56.560" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""So thanks, everyone.""" start="00:47:02.720" video="mainVideo-hyperboleqa" id="subtitle"]] +[[!template text="""And we'll answer any further questions on the Etherpad after this.""" start="00:47:05.200" video="mainVideo-hyperboleqa" id="subtitle"]] + +</div>Questions or comments? Please e-mail [rsw@gnu.org](mailto:rsw@gnu.org?subject=Comment%20for%20EmacsConf%202023%20hyperboleqa%3A%20Questions%20and%20answers%20to%20help%20you%20fly%20with%20Hyperbole) <!-- End of emacsconf-publish-after-page --> diff --git a/2025/info/hyperboleqa-before.md b/2025/info/hyperboleqa-before.md index edd1ad33..84d636d3 100644 --- a/2025/info/hyperboleqa-before.md +++ b/2025/info/hyperboleqa-before.md @@ -1,19 +1,13 @@ <!-- Automatically generated by emacsconf-publish-before-page --> - -The following image shows where the talk is in the schedule for Sun 2025-12-07. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="hyperboleqa"> -<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2025/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:10 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2025/talks/modern" title="Some problems of modernizing Emacs" data-slug="modern"> <title> 9:10- 9:30 Some problems of modernizing Emacs</title> <rect x="13" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(38,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> modern</text></g></a> <a href="/2025/talks/reader" title="An introduction to the Emacs Reader" data-slug="reader"> <title> 9:40-10:15 An introduction to the Emacs Reader</title> <rect x="54" y="15" opacity="0.5" width="48" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(100,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> reader</text></g></a> <a href="/2025/talks/weights" title="Weightlifting tracking with Emacs on Android" data-slug="weights"> <title> 10:35-10:45 Weightlifting tracking with Emacs on Android</title> <rect x="130" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(141,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> weights</text></g></a> <a href="/2025/talks/completion" title="corfu+yasnippet: Easier than I thought" data-slug="completion"> <title> 11:05-11:25 corfu+yasnippet: Easier than I thought</title> <rect x="171" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(196,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> completion</text></g></a> <a href="/2025/talks/zettelkasten" title="Zettelkasten for regular Emacs hackers" data-slug="zettelkasten"> <title> 1:00- 1:25 Zettelkasten for regular Emacs hackers</title> <rect x="329" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(361,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> zettelkasten</text></g></a> <a href="/2025/talks/hyperboleqa" title="Questions and answers to help you fly with Hyperbole" data-slug="hyperboleqa"> <title> 1:45- 2:15 Questions and answers to help you fly with Hyperbole</title> <rect stroke-width="3" x="391" y="15" opacity="0.8" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(430,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperboleqa</text></g></a> <a href="/2025/talks/gardening" title="Gardening in Emacs: A Windows user's tale of tending, tweaking, and triumph" data-slug="gardening"> <title> 2:15- 2:35 Gardening in Emacs: A Windows user's tale of tending, tweaking, and triumph</title> <rect x="432" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(457,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gardening</text></g></a> <a href="/2025/talks/bookclub-tapas" title="Bookclub tapas" data-slug="bookclub-tapas"> <title> 2:45- 3:20 Bookclub tapas</title> <rect x="473" y="15" opacity="0.5" width="48" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(519,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> bookclub-tapas</text></g></a> <a href="/2025/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 3:40- 3:50 Sunday closing remarks</title> <rect x="549" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(560,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <g transform="translate(0,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 5 PM</text></g></svg> -</div> - [[!toc ]] -Format: 30-min talk ; Q&A: BigBlueButton conference room <https://media.emacsconf.org/2025/current/bbb-hyperboleqa.html> Etherpad: <https://pad.emacsconf.org/2025-hyperboleqa> +Format: 50-min talk ; Q&A: BigBlueButton conference room Etherpad: <https://pad.emacsconf.org/2025-hyperboleqa> Etherpad: <https://pad.emacsconf.org/2025-hyperboleqa> -Discuss on IRC: [#emacsconf-gen](https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen) -Status: Q&A open for participation -<div>Times in different time zones:</div><div class="times" start="2025-12-07T18:45:00Z" end="2025-12-07T19:15:00Z"><div class="conf-time">Sunday, Dec 7 2025, ~1:45 PM - 2:15 PM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Sunday, Dec 7 2025, ~12:45 PM - 1:15 PM CST (US/Central)<br />Sunday, Dec 7 2025, ~11:45 AM - 12:15 PM MST (US/Mountain)<br />Sunday, Dec 7 2025, ~10:45 AM - 11:15 AM PST (US/Pacific)<br />Sunday, Dec 7 2025, ~6:45 PM - 7:15 PM UTC <br />Sunday, Dec 7 2025, ~7:45 PM - 8:15 PM CET (Europe/Paris)<br />Sunday, Dec 7 2025, ~8:45 PM - 9:15 PM EET (Europe/Athens)<br />Monday, Dec 8 2025, ~12:15 AM - 12:45 AM IST (Asia/Kolkata)<br />Monday, Dec 8 2025, ~2:45 AM - 3:15 AM +08 (Asia/Singapore)<br />Monday, Dec 8 2025, ~3:45 AM - 4:15 AM JST (Asia/Tokyo)</div></div><div><strong><a href="/2025/watch/gen/">Find out how to watch and participate</a></strong></div> +Status: TO_REVIEW_QA + -<div class="vid mainVideo"><div></div><div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-hyperboleqa">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/current/bbb-hyperboleqa.html">Open public Q&A</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-hyperboleqa--questions-and-answers-to-help-you-fly-with-hyperbole--bob-weiner--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-hyperboleqa--questions-and-answers-to-help-you-fly-with-hyperbole--bob-weiner--intro.webm">Download --intro.webm</a></li></ul></div></div> +<div class="vid mainVideo"><video controls preload="none" id="mainVideo-hyperboleqa"><source src="https://media.emacsconf.org/2025/emacsconf-2025-hyperboleqa--questions-and-answers-to-help-you-fly-with-hyperbole--bob-weiner--main.m4v" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-hyperboleqa--questions-and-answers-to-help-you-fly-with-hyperbole--bob-weiner--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 49:02 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-hyperboleqa">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-hyperboleqa--questions-and-answers-to-help-you-fly-with-hyperbole--bob-weiner--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-hyperboleqa--questions-and-answers-to-help-you-fly-with-hyperbole--bob-weiner--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-hyperboleqa--questions-and-answers-to-help-you-fly-with-hyperbole--bob-weiner--main.json">Download --main.json</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-hyperboleqa--questions-and-answers-to-help-you-fly-with-hyperbole--bob-weiner--main.m4v">Download --main.m4v (108MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-hyperboleqa--questions-and-answers-to-help-you-fly-with-hyperbole--bob-weiner--main.tsv">Download --main.tsv</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-hyperboleqa--questions-and-answers-to-help-you-fly-with-hyperbole--bob-weiner--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-hyperboleqa--questions-and-answers-to-help-you-fly-with-hyperbole--bob-weiner--original.m4v">Download --original.m4v (111MB)</a></li><li><a href="https://youtu.be/oGFyHe8SpE4">View on Youtube</a></li></ul></div></div> # Description <!-- End of emacsconf-publish-before-page -->
\ No newline at end of file diff --git a/2025/info/hyperboleqa-nav.md b/2025/info/hyperboleqa-nav.md index a0f7eb94..2e396846 100644 --- a/2025/info/hyperboleqa-nav.md +++ b/2025/info/hyperboleqa-nav.md @@ -1,7 +1,7 @@ <div class="talk-nav"> Back to the [[talks]] -Previous by time: <a href="/2025/talks/zettelkasten">Zettelkasten for regular Emacs hackers</a> -Next by time: <a href="/2025/talks/gardening">Gardening in Emacs: A Windows user's tale of tending, tweaking, and triumph</a> -Track: <span class="sched-track General">General</span> - <strong><a href="https://emacsconf.org/2025/watch/gen">Watch</a></strong> +Previous by track: <a href="/2025/talks/zettelkasten">Zettelkasten for regular Emacs hackers</a> +Next by track: <a href="/2025/talks/gardening">Gardening in Emacs: A Windows user's tale of tending, tweaking, and triumph</a> +Track: <span class="sched-track General">General</span> </div> diff --git a/2025/info/juicemacs-before.md b/2025/info/juicemacs-before.md index f3092d8c..fe7d0d79 100644 --- a/2025/info/juicemacs-before.md +++ b/2025/info/juicemacs-before.md @@ -1,19 +1,13 @@ <!-- Automatically generated by emacsconf-publish-before-page --> - -The following image shows where the talk is in the schedule for Sat 2025-12-06. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="juicemacs"> -<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2025/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:10 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2025/talks/org-babel" title="Making Org-Babel reactive" data-slug="org-babel"> <title> 9:10- 9:20 Making Org-Babel reactive</title> <rect x="13" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(24,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> org-babel</text></g></a> <a href="/2025/talks/reference" title="Emacs as a fully-fledged reference manager" data-slug="reference"> <title> 9:30- 9:55 Emacs as a fully-fledged reference manager</title> <rect x="41" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(73,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> reference</text></g></a> <a href="/2025/talks/gmail" title="org-gmail: A deep integration of Gmail into your Org Mode" data-slug="gmail"> <title> 10:15-10:40 org-gmail: A deep integration of Gmail into your Org Mode</title> <rect x="102" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(134,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gmail</text></g></a> <a href="/2025/talks/gnus" title="Reading and writing emails in GNU Emacs with Gnus" data-slug="gnus"> <title> 10:50-11:15 Reading and writing emails in GNU Emacs with Gnus</title> <rect x="150" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(182,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gnus</text></g></a> <a href="/2025/talks/latex" title="LaTeX export in org-mode: the overhaul" data-slug="latex"> <title> 11:25-11:45 LaTeX export in org-mode: the overhaul</title> <rect x="199" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(224,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> latex</text></g></a> <a href="/2025/talks/calc" title="Basic Calc functionality for engineering or electronics" data-slug="calc"> <title> 1:00- 1:25 Basic Calc functionality for engineering or electronics</title> <rect x="329" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(361,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> calc</text></g></a> <a href="/2025/talks/blee-lcnt" title="Blee-LCNT: An Emacs-centered content production and self-publication framework" data-slug="blee-lcnt"> <title> 1:35- 2:15 Blee-LCNT: An Emacs-centered content production and self-publication framework</title> <rect x="377" y="15" opacity="0.5" width="54" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(429,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> blee-lcnt</text></g></a> <a href="/2025/talks/greader" title="GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence" data-slug="greader"> <title> 2:35- 2:40 GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence</title> <rect x="459" y="15" opacity="0.5" width="6" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(463,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> greader</text></g></a> <a href="/2025/talks/open-mic" title="Open session" data-slug="open-mic"> <title> 2:50- 3:40 Open session</title> <rect x="480" y="15" opacity="0.5" width="68" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(546,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> open-mic</text></g></a> <a href="/2025/talks/sat-close" title="Saturday closing remarks / open session" data-slug="sat-close"> <title> 4:00- 4:10 Saturday closing remarks / open session</title> <rect x="576" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(587,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2025/talks/schemacs" title="One year progress update Schemacs (formerly Gypsum)" data-slug="schemacs"> <title> 9:30- 9:55 One year progress update Schemacs (formerly Gypsum)</title> <rect x="41" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(73,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> schemacs</text></g></a> <a href="/2025/talks/juicemacs" title="Juicemacs: exploring speculative JIT compilation for ELisp in Java" data-slug="juicemacs"> <title> 10:15-10:35 Juicemacs: exploring speculative JIT compilation for ELisp in Java</title> <rect stroke-width="3" x="102" y="75" opacity="0.8" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(127,133)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> juicemacs</text></g></a> <a href="/2025/talks/swanky" title="Swanky Python: Interactive development for Python" data-slug="swanky"> <title> 10:45-11:10 Swanky Python: Interactive development for Python</title> <rect x="144" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(176,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> swanky</text></g></a> <a href="/2025/talks/python" title="Interactive Python programming in Emacs" data-slug="python"> <title> 11:20-11:40 Interactive Python programming in Emacs</title> <rect x="192" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(217,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <a href="/2025/talks/llm" title="Emacs, editors, and LLM driven workflows" data-slug="llm"> <title> 1:00- 1:25 Emacs, editors, and LLM driven workflows</title> <rect x="329" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(361,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> llm</text></g></a> <a href="/2025/talks/private-ai" title="Emacs and private AI: a great match" data-slug="private-ai"> <title> 1:45- 2:05 Emacs and private AI: a great match</title> <rect x="391" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(416,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> private-ai</text></g></a> <a href="/2025/talks/commonlisp" title="Common Lisp images communicating like-a-human through shared Emacs slime and eev" data-slug="commonlisp"> <title> 2:25- 2:55 Common Lisp images communicating like-a-human through shared Emacs slime and eev</title> <rect x="446" y="75" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(485,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> commonlisp</text></g></a> <a href="/2025/talks/graphics" title="Modern Emacs/Elisp hardware/software accelerated graphics" data-slug="graphics"> <title> 3:05- 3:30 Modern Emacs/Elisp hardware/software accelerated graphics</title> <rect x="500" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(532,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> graphics</text></g></a> <g transform="translate(0,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 5 PM</text></g></svg> -</div> - [[!toc ]] -Format: 20-min talk ; Q&A: Etherpad <https://pad.emacsconf.org/2025-juicemacs> +Format: 20-min talk ; Q&A: Etherpad Etherpad: <https://pad.emacsconf.org/2025-juicemacs> -Discuss on IRC: [#emacsconf-dev](https://chat.emacsconf.org/?join=emacsconf,emacsconf-dev) -Status: Q&A finished, IRC and pad will be archived on this page +Status: TO_REVIEW_QA -<div class="vid mainVideo"><video controls preload="none" id="mainVideo-juicemacs"><source src="https://media.emacsconf.org/2025/emacsconf-2025-juicemacs--juicemacs-exploring-speculative-jit-compilation-for-elisp-in-java--kana--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-juicemacs--juicemacs-exploring-speculative-jit-compilation-for-elisp-in-java--kana--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 19:10 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-juicemacs">Open Etherpad</a></li><li><a href="https://pad.emacsconf.org/2025-juicemacs">Open public Q&A</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-juicemacs--juicemacs-exploring-speculative-jit-compilation-for-elisp-in-java--kana--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-juicemacs--juicemacs-exploring-speculative-jit-compilation-for-elisp-in-java--kana--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-juicemacs--juicemacs-exploring-speculative-jit-compilation-for-elisp-in-java--kana--main.opus">Download --main.opus (17MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-juicemacs--juicemacs-exploring-speculative-jit-compilation-for-elisp-in-java--kana--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-juicemacs--juicemacs-exploring-speculative-jit-compilation-for-elisp-in-java--kana--main.webm">Download --main.webm (38MB)</a></li><li><a href="https://youtu.be/Lm-a7eZO5jk">View on Youtube</a></li></ul></div></div> +<div class="vid mainVideo"><video controls preload="none" id="mainVideo-juicemacs"><source src="https://media.emacsconf.org/2025/emacsconf-2025-juicemacs--juicemacs-exploring-speculative-jit-compilation-for-elisp-in-java--kana--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-juicemacs--juicemacs-exploring-speculative-jit-compilation-for-elisp-in-java--kana--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 19:10 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-juicemacs">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-juicemacs--juicemacs-exploring-speculative-jit-compilation-for-elisp-in-java--kana--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-juicemacs--juicemacs-exploring-speculative-jit-compilation-for-elisp-in-java--kana--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-juicemacs--juicemacs-exploring-speculative-jit-compilation-for-elisp-in-java--kana--main.opus">Download --main.opus (17MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-juicemacs--juicemacs-exploring-speculative-jit-compilation-for-elisp-in-java--kana--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-juicemacs--juicemacs-exploring-speculative-jit-compilation-for-elisp-in-java--kana--main.webm">Download --main.webm (38MB)</a></li><li><a href="https://youtu.be/Lm-a7eZO5jk">View on Youtube</a></li></ul></div></div> # Description <!-- End of emacsconf-publish-before-page -->
\ No newline at end of file diff --git a/2025/info/juicemacs-nav.md b/2025/info/juicemacs-nav.md index b49eb432..d3c4fa92 100644 --- a/2025/info/juicemacs-nav.md +++ b/2025/info/juicemacs-nav.md @@ -1,7 +1,7 @@ <div class="talk-nav"> Back to the [[talks]] -Previous by time: <a href="/2025/talks/gmail">org-gmail: A deep integration of Gmail into your Org Mode</a> -Next by time: <a href="/2025/talks/swanky">Swanky Python: Interactive development for Python</a> -Track: <span class="sched-track Development">Development</span> - <strong><a href="https://emacsconf.org/2025/watch/dev">Watch</a></strong> +Previous by track: <a href="/2025/talks/schemacs">One year progress update Schemacs (formerly Gypsum)</a> +Next by track: <a href="/2025/talks/swanky">Swanky Python: Interactive development for Python</a> +Track: <span class="sched-track Development">Development</span> </div> diff --git a/2025/info/latex-after.md b/2025/info/latex-after.md index bb59217b..2950bbcb 100644 --- a/2025/info/latex-after.md +++ b/2025/info/latex-after.md @@ -1,7 +1,477 @@ <!-- Automatically generated by emacsconf-publish-after-page --> -Questions or comments? Please e-mail [paaguti@gmail.com](mailto:paaguti@gmail.com?subject=Comment%20for%20EmacsConf%202023%20latex%3A%20LaTeX%20export%20in%20org-mode%3A%20the%20overhaul) +<div class="transcript transcript-mainVideo"><a name="latex-mainVideo-transcript"></a><h1>Transcript (unedited)</h1> + +[[!template text="""Okay. Good afternoon, morning or evening,""" start="00:00:00.000" video="mainVideo-latex" id="subtitle"]] +[[!template text="""whatever it is in your airtime zone.""" start="00:00:04.457" video="mainVideo-latex" id="subtitle"]] +[[!template text="""I'm Pedro Aranda and I'm going to be talking about""" start="00:00:06.520" video="mainVideo-latex" id="subtitle"]] +[[!template text="""what I've been doing""" start="00:00:10.960" video="mainVideo-latex" id="subtitle"]] +[[!template text="""with the latest backend in Org Mode""" start="00:00:12.960" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and the different Sorry, and the way it treats fonts.""" start="00:00:17.000" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Just a couple of words before""" start="00:00:24.720" video="mainVideo-latex" id="subtitle"]] +[[!template text="""I am going to go through motivation,""" start="00:00:28.280" video="mainVideo-latex" id="subtitle"]] +[[!template text="""the evolution and get you an idea of what you can get""" start="00:00:30.360" video="mainVideo-latex" id="subtitle"]] +[[!template text="""from the feature branch that I have started""" start="00:00:35.280" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and give a couple of demos.""" start="00:00:38.080" video="mainVideo-latex" id="subtitle"]] +[[!template text="""actually my motivation is I was using ox-latex currently""" start="00:00:41.400" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and b and ox-beamer for as a foundation for my activities""" start="00:00:47.780" video="mainVideo-latex" id="subtitle"]] +[[!template text="""mainly for lecture notes and lecture slides""" start="00:00:51.440" video="mainVideo-latex" id="subtitle"]] +[[!template text="""so i came from pure latex and beamers""" start="00:00:54.400" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and for me the real cool use case""" start="00:01:01.360" video="mainVideo-latex" id="subtitle"]] +[[!template text="""or I would say this was""" start="00:01:04.520" video="mainVideo-latex" id="subtitle"]] +[[!template text="""the killer use case for me was""" start="00:01:05.960" video="mainVideo-latex" id="subtitle"]] +[[!template text="""I have a programming lecture""" start="00:01:07.960" video="mainVideo-latex" id="subtitle"]] +[[!template text="""which is sort of a Python 101""" start="00:01:09.240" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and when I'm live in the lecture""" start="00:01:12.200" video="mainVideo-latex" id="subtitle"]] +[[!template text="""I can go and if the pupils ask me I can modify code,""" start="00:01:14.200" video="mainVideo-latex" id="subtitle"]] +[[!template text="""show modified code and results on the fly""" start="00:01:18.280" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and that's something that really impresses the kids""" start="00:01:21.080" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and makes them understand what we are talking about.""" start="00:01:25.120" video="mainVideo-latex" id="subtitle"]] +[[!template text="""From my pro-subjective point of view, in some,""" start="00:01:30.160" video="mainVideo-latex" id="subtitle"]] +[[!template text="""mainly in ox-beamer, some of the things that I was missing""" start="00:01:34.400" video="mainVideo-latex" id="subtitle"]] +[[!template text="""is that emojis would really break the monotony""" start="00:01:38.160" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and I missed the support for emojis and stock Beamer themes.""" start="00:01:41.880" video="mainVideo-latex" id="subtitle"]] +[[!template text="""And some fonts I also found were suboptimal""" start="00:01:47.680" video="mainVideo-latex" id="subtitle"]] +[[!template text="""or difficult to adapt in case they need an adaptation.""" start="00:01:52.160" video="mainVideo-latex" id="subtitle"]] +[[!template text="""So, for example, people who need special fonts""" start="00:01:56.640" video="mainVideo-latex" id="subtitle"]] +[[!template text="""because of their special capabilities,""" start="00:02:01.800" video="mainVideo-latex" id="subtitle"]] +[[!template text="""it's difficult to get those fonts from the stock themes""" start="00:02:05.800" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and from the stock font implementations you have there.""" start="00:02:11.160" video="mainVideo-latex" id="subtitle"]] +[[!template text="""So, requirements on mice""" start="00:02:17.360" video="mainVideo-latex" id="subtitle"]] +[[!template text="""from the Emacs site to do this is none,""" start="00:02:19.400" video="mainVideo-latex" id="subtitle"]] +[[!template text="""because basically, okay, the only thing I want""" start="00:02:21.480" video="mainVideo-latex" id="subtitle"]] +[[!template text="""is to work on a vanilla Emacs,""" start="00:02:25.000" video="mainVideo-latex" id="subtitle"]] +[[!template text="""which is more or less recent,""" start="00:02:27.160" video="mainVideo-latex" id="subtitle"]] +[[!template text="""because yes, I'm a bit of a freak""" start="00:02:28.400" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and I compile it every two, three,""" start="00:02:30.120" video="mainVideo-latex" id="subtitle"]] +[[!template text="""I get it from master and compile it every two, three days.""" start="00:02:32.480" video="mainVideo-latex" id="subtitle"]] +[[!template text="""And Yahoo, I had to change to Neumark,""" start="00:02:36.840" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and I'm able now to get my vanilla Neumarks within four.""" start="00:02:40.600" video="mainVideo-latex" id="subtitle"]] +[[!template text="""So that was a big accomplishment in these last days.""" start="00:02:47.360" video="mainVideo-latex" id="subtitle"]] +[[!template text="""What is the evolution?""" start="00:02:53.360" video="mainVideo-latex" id="subtitle"]] +[[!template text="""I mean my personal evolution and my take of xLatex""" start="00:02:55.120" video="mainVideo-latex" id="subtitle"]] +[[!template text="""was I put everything in a in a latex file""" start="00:03:00.720" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and I input it through the latex shader and that's it.""" start="00:03:05.920" video="mainVideo-latex" id="subtitle"]] +[[!template text="""But that was not very beginner friendly""" start="00:03:09.960" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and once I had some people interested in this,""" start="00:03:12.320" video="mainVideo-latex" id="subtitle"]] +[[!template text="""oh wow I can modify the code on the fly""" start="00:03:15.720" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and see the results on the fly,""" start="00:03:19.160" video="mainVideo-latex" id="subtitle"]] +[[!template text="""it was more difficult for them to give it a go.""" start="00:03:21.120" video="mainVideo-latex" id="subtitle"]] +[[!template text="""So I just, because they,""" start="00:03:26.720" video="mainVideo-latex" id="subtitle"]] +[[!template text="""there are people who have not that big,""" start="00:03:32.360" video="mainVideo-latex" id="subtitle"]] +[[!template text="""that much experience with LaTeX""" start="00:03:36.920" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and It can even be a bridge to introduce people into latex.""" start="00:03:41.160" video="mainVideo-latex" id="subtitle"]] +[[!template text="""So, in any case, it was not very beginner-friendly""" start="00:03:44.920" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and I had complaints on that.""" start="00:03:48.960" video="mainVideo-latex" id="subtitle"]] +[[!template text="""So, what I think was, we can do better.""" start="00:03:52.800" video="mainVideo-latex" id="subtitle"]] +[[!template text="""My first attempt was something that was completely neutral""" start="00:03:57.160" video="mainVideo-latex" id="subtitle"]] +[[!template text="""to Babel or Polyglosia.""" start="00:04:00.400" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and it was made basically for font Lattesch""" start="00:04:02.880" video="mainVideo-latex" id="subtitle"]] +[[!template text="""although some of the things can for rural Lattesch""" start="00:04:06.200" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and some of the things can also be used with the latest.""" start="00:04:08.840" video="mainVideo-latex" id="subtitle"]] +[[!template text="""So overriding template fonts""" start="00:04:14.280" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and taking into account pullback fonts""" start="00:04:16.520" video="mainVideo-latex" id="subtitle"]] +[[!template text="""was something that I learned uh uh""" start="00:04:21.280" video="mainVideo-latex" id="subtitle"]] +[[!template text="""when we started this conversation""" start="00:04:23.840" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and the only problem with this""" start="00:04:27.960" video="mainVideo-latex" id="subtitle"]] +[[!template text="""is that fallback fonts only work for latex""" start="00:04:29.840" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and because uh because it doesn't support them""" start="00:04:34.800" video="mainVideo-latex" id="subtitle"]] +[[!template text="""actually for fallback points is a lua feature""" start="00:04:40.680" video="mainVideo-latex" id="subtitle"]] +[[!template text="""There was already something in the list""" start="00:04:42.440" video="mainVideo-latex" id="subtitle"]] +[[!template text="""regarding script detection which helped me a lot.""" start="00:04:45.320" video="mainVideo-latex" id="subtitle"]] +[[!template text="""So big recognition to Romano Lafias for that""" start="00:04:48.400" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and for his publishing the algorithm or the script""" start="00:04:52.400" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and the in the org mode mailing list.""" start="00:04:57.680" video="mainVideo-latex" id="subtitle"]] +[[!template text="""And then came my sort of little nightmare,""" start="00:05:04.400" video="mainVideo-latex" id="subtitle"]] +[[!template text="""which was when we started talking""" start="00:05:11.320" video="mainVideo-latex" id="subtitle"]] +[[!template text="""about internationalization or localization.""" start="00:05:13.880" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Looking back, I have a very strange feeling""" start="00:05:17.360" video="mainVideo-latex" id="subtitle"]] +[[!template text="""about a blurring target there.""" start="00:05:21.600" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Because the reality being very, very frank, did I need it?""" start="00:05:22.920" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Really no, because I just needed""" start="00:05:29.680" video="mainVideo-latex" id="subtitle"]] +[[!template text="""to add Spanish with Babel and that was it.""" start="00:05:34.920" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Well actually for me it still is""" start="00:05:40.000" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and you can put the British, German or Italian""" start="00:05:43.200" video="mainVideo-latex" id="subtitle"]] +[[!template text="""it continues to be true for me""" start="00:05:46.520" video="mainVideo-latex" id="subtitle"]] +[[!template text="""so I had personally I had little interest in doing that""" start="00:05:48.360" video="mainVideo-latex" id="subtitle"]] +[[!template text="""but I took it as a challenge""" start="00:05:51.840" video="mainVideo-latex" id="subtitle"]] +[[!template text="""which has shown to be really tough.""" start="00:05:55.320" video="mainVideo-latex" id="subtitle"]] +[[!template text="""What do you get from the feature branch? The feature branch""" start="00:06:02.480" video="mainVideo-latex" id="subtitle"]] +[[!template text="""adds font management for font spec,""" start="00:06:05.800" video="mainVideo-latex" id="subtitle"]] +[[!template text="""which is not strictly needed""" start="00:06:09.000" video="mainVideo-latex" id="subtitle"]] +[[!template text="""when you are on Latin, Cyrillic, and Greek scripts""" start="00:06:10.840" video="mainVideo-latex" id="subtitle"]] +[[!template text="""as long as the fonts in your template support them.""" start="00:06:16.080" video="mainVideo-latex" id="subtitle"]] +[[!template text="""But again, it's a nice way to get better support here.""" start="00:06:20.600" video="mainVideo-latex" id="subtitle"]] +[[!template text="""You don't need it if you're happy with the fonts you get""" start="00:06:28.800" video="mainVideo-latex" id="subtitle"]] +[[!template text="""from the templates that you use both for Beamer""" start="00:06:33.040" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and the document classes in LaTeX.""" start="00:06:38.440" video="mainVideo-latex" id="subtitle"]] +[[!template text="""If you don't want to use alternative fonts,""" start="00:06:40.360" video="mainVideo-latex" id="subtitle"]] +[[!template text="""you don't need it, but you would need it.""" start="00:06:43.640" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Of course, if you don't want things like,""" start="00:06:48.000" video="mainVideo-latex" id="subtitle"]] +[[!template text="""for example, emojis or need emojis,""" start="00:06:50.640" video="mainVideo-latex" id="subtitle"]] +[[!template text="""you really don't need forward fonts.""" start="00:06:55.720" video="mainVideo-latex" id="subtitle"]] +[[!template text="""So my idea is that the next thing that you can add""" start="00:06:59.360" video="mainVideo-latex" id="subtitle"]] +[[!template text="""is Babel and Polyglos here""" start="00:07:03.960" video="mainVideo-latex" id="subtitle"]] +[[!template text="""for enhanced localization and multilingual documents there.""" start="00:07:07.320" video="mainVideo-latex" id="subtitle"]] +[[!template text="""And at the end, my vision was that the keywords involved""" start="00:07:13.080" video="mainVideo-latex" id="subtitle"]] +[[!template text="""would be language, the main language.""" start="00:07:17.800" video="mainVideo-latex" id="subtitle"]] +[[!template text="""And then a nice idea from Ihor""" start="00:07:19.800" video="mainVideo-latex" id="subtitle"]] +[[!template text="""was to put all the secondary languages there too.""" start="00:07:23.040" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Then specify the LaTeX compiler""" start="00:07:27.200" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and then what I've added is a keyword""" start="00:07:30.560" video="mainVideo-latex" id="subtitle"]] +[[!template text="""which is LaTeX Montylang""" start="00:07:32.640" video="mainVideo-latex" id="subtitle"]] +[[!template text="""which can be fontspec or babel or polyglossia""" start="00:07:34.280" video="mainVideo-latex" id="subtitle"]] +[[!template text="""for localized documents.""" start="00:07:37.880" video="mainVideo-latex" id="subtitle"]] +[[!template text="""By default, this thing is nil and when it is nil,""" start="00:07:40.320" video="mainVideo-latex" id="subtitle"]] +[[!template text="""you get the behavior from OrgBug""" start="00:07:45.360" video="mainVideo-latex" id="subtitle"]] +[[!template text="""that you already are used to if you don't want to switch.""" start="00:07:51.720" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and I was there and I was really""" start="00:07:56.560" video="mainVideo-latex" id="subtitle"]] +[[!template text="""was chirped into the conversation""" start="00:08:00.560" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and I'm really helpful and a big thanks to him""" start="00:08:03.480" video="mainVideo-latex" id="subtitle"]] +[[!template text="""because he also had a an easy idea""" start="00:08:06.800" video="mainVideo-latex" id="subtitle"]] +[[!template text="""to support Chinese and Japanese documents""" start="00:08:09.200" video="mainVideo-latex" id="subtitle"]] +[[!template text="""so that the only thing that you need is to add the language""" start="00:08:13.080" video="mainVideo-latex" id="subtitle"]] +[[!template text="""that you're going to write your document in""" start="00:08:17.240" video="mainVideo-latex" id="subtitle"]] +[[!template text="""very very big thank you for that""" start="00:08:19.880" video="mainVideo-latex" id="subtitle"]] +[[!template text="""because that was really a challenge""" start="00:08:23.640" video="mainVideo-latex" id="subtitle"]] +[[!template text="""not being able to decipher""" start="00:08:25.400" video="mainVideo-latex" id="subtitle"]] +[[!template text="""what I was what I was coding there""" start="00:08:29.280" video="mainVideo-latex" id="subtitle"]] +[[!template text="""in terms of I have a document""" start="00:08:32.640" video="mainVideo-latex" id="subtitle"]] +[[!template text="""I copy and paste it from some place""" start="00:08:34.440" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and from there I get my answer I get my my pdf""" start="00:08:37.520" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and I compare whether it is correct or not""" start="00:08:40.040" video="mainVideo-latex" id="subtitle"]] +[[!template text="""So what is behind the scenes?""" start="00:08:47.280" video="mainVideo-latex" id="subtitle"]] +[[!template text="""I've always suggested that in order""" start="00:08:50.240" video="mainVideo-latex" id="subtitle"]] +[[!template text="""to use the feature branch efficiently""" start="00:08:52.960" video="mainVideo-latex" id="subtitle"]] +[[!template text="""you create a file with the default values""" start="00:08:55.240" video="mainVideo-latex" id="subtitle"]] +[[!template text="""you need for your variables""" start="00:08:59.920" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and that's the this famous.locals.el files.""" start="00:09:02.440" video="mainVideo-latex" id="subtitle"]] +[[!template text="""What I do is I have a generic one""" start="00:09:06.200" video="mainVideo-latex" id="subtitle"]] +[[!template text="""in my home documents directory""" start="00:09:10.240" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and this is used for all the org documents""" start="00:09:12.080" video="mainVideo-latex" id="subtitle"]] +[[!template text="""that are in subdirectories from there.""" start="00:09:16.600" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Why? Because normally you will not be""" start="00:09:20.560" video="mainVideo-latex" id="subtitle"]] +[[!template text="""changing your fonts that often.""" start="00:09:24.040" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and if you need you can always go""" start="00:09:26.600" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and have your configuration locally.""" start="00:09:29.600" video="mainVideo-latex" id="subtitle"]] +[[!template text="""So it's this point where I'm collecting""" start="00:09:33.480" video="mainVideo-latex" id="subtitle"]] +[[!template text="""my phone configuration and""" start="00:09:38.640" video="mainVideo-latex" id="subtitle"]] +[[!template text="""For me, this gives me a very, very nice quick start""" start="00:09:40.760" video="mainVideo-latex" id="subtitle"]] +[[!template text="""for new documents and presentations.""" start="00:09:47.520" video="mainVideo-latex" id="subtitle"]] +[[!template text="""And there you can even configure a lot of compiler""" start="00:09:49.640" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and font language management too,""" start="00:09:54.640" video="mainVideo-latex" id="subtitle"]] +[[!template text="""so you have everything in a file.""" start="00:09:57.920" video="mainVideo-latex" id="subtitle"]] +[[!template text="""And the other nice thing for that""" start="00:10:00.920" video="mainVideo-latex" id="subtitle"]] +[[!template text="""is that you can also include that in a subdirectory.""" start="00:10:04.760" video="mainVideo-latex" id="subtitle"]] +[[!template text="""And if this subdirectory is something that you're sharing""" start="00:10:08.480" video="mainVideo-latex" id="subtitle"]] +[[!template text="""in a project with other people,""" start="00:10:13.200" video="mainVideo-latex" id="subtitle"]] +[[!template text="""you are already configuring the, say,""" start="00:10:14.480" video="mainVideo-latex" id="subtitle"]] +[[!template text="""quote, unquote, corporate look and feel for your documents""" start="00:10:17.760" video="mainVideo-latex" id="subtitle"]] +[[!template text="""in that project for everyone""" start="00:10:23.560" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and no one else has to care about""" start="00:10:26.080" video="mainVideo-latex" id="subtitle"]] +[[!template text="""how this document has to be configured.""" start="00:10:28.920" video="mainVideo-latex" id="subtitle"]] +[[!template text="""One of the things that I really like in this approach""" start="00:10:35.120" video="mainVideo-latex" id="subtitle"]] +[[!template text="""is that it is a grow-as-you-go.""" start="00:10:38.680" video="mainVideo-latex" id="subtitle"]] +[[!template text="""So, for example, you can start with something like that,""" start="00:10:40.440" video="mainVideo-latex" id="subtitle"]] +[[!template text="""which is I have my fonts, my basic fonts for main,""" start="00:10:44.080" video="mainVideo-latex" id="subtitle"]] +[[!template text="""which is the Serif font, for sans,""" start="00:10:48.440" video="mainVideo-latex" id="subtitle"]] +[[!template text="""which is the Sans Serif font, for maths,""" start="00:10:51.480" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and for the mono, with some features like to make them scale.""" start="00:10:54.080" video="mainVideo-latex" id="subtitle"]] +[[!template text="""This is something that is uh provided by you""" start="00:10:58.640" video="mainVideo-latex" id="subtitle"]] +[[!template text="""through the font spec package""" start="00:11:02.680" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and you're happy with it and you work with it""" start="00:11:05.360" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and given a in a given moment""" start="00:11:08.960" video="mainVideo-latex" id="subtitle"]] +[[!template text="""you go and you have your own problems""" start="00:11:11.920" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and or your own challenge""" start="00:11:14.440" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and you need to have for example emojis for one of the fonts""" start="00:11:16.600" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and what you do is in this case you just add the emojis""" start="00:11:20.280" video="mainVideo-latex" id="subtitle"]] +[[!template text="""as a fallback font in in the font that where you want to replace this""" start="00:11:24.960" video="mainVideo-latex" id="subtitle"]] +[[!template text="""is this is what i'm doing right now for this presentation and you will see""" start="00:11:31.240" video="mainVideo-latex" id="subtitle"]] +[[!template text="""You can always, as I've said,""" start="00:11:36.120" video="mainVideo-latex" id="subtitle"]] +[[!template text="""you can always have your dear locals""" start="00:11:39.120" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and you can copy that into a working directory""" start="00:11:42.360" video="mainVideo-latex" id="subtitle"]] +[[!template text="""which needs special adaptations or has special needs""" start="00:11:46.320" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and from there you have that directory""" start="00:11:49.440" video="mainVideo-latex" id="subtitle"]] +[[!template text="""with your modified or customized their local study l file""" start="00:11:54.120" video="mainVideo-latex" id="subtitle"]] +[[!template text="""so font spec is normally enough""" start="00:11:59.080" video="mainVideo-latex" id="subtitle"]] +[[!template text="""but sometimes you can't control all the fonts""" start="00:12:05.440" video="mainVideo-latex" id="subtitle"]] +[[!template text="""with font spec only so and there you have a polyglot here""" start="00:12:10.000" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and babel coming to your help""" start="00:12:15.480" video="mainVideo-latex" id="subtitle"]] +[[!template text="""this may also be the case""" start="00:12:19.320" video="mainVideo-latex" id="subtitle"]] +[[!template text="""that you are working in an intended language""" start="00:12:21.360" video="mainVideo-latex" id="subtitle"]] +[[!template text="""i don't know which but an intended language and you found""" start="00:12:25.880" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and you wanted to see how that was configured""" start="00:12:28.960" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and you found the latest example""" start="00:12:31.280" video="mainVideo-latex" id="subtitle"]] +[[!template text="""that used Babel or Polyglossia.""" start="00:12:35.000" video="mainVideo-latex" id="subtitle"]] +[[!template text="""The exporter provides you three variables""" start="00:12:38.640" video="mainVideo-latex" id="subtitle"]] +[[!template text="""to configure both font spec, Polyglossia and Babel.""" start="00:12:42.560" video="mainVideo-latex" id="subtitle"]] +[[!template text="""So just as an example of how I picture this is,""" start="00:12:48.680" video="mainVideo-latex" id="subtitle"]] +[[!template text="""uh, you find it in the internet,""" start="00:12:56.800" video="mainVideo-latex" id="subtitle"]] +[[!template text="""something like that, uh, something like this,""" start="00:12:59.360" video="mainVideo-latex" id="subtitle"]] +[[!template text="""because you have your document and you need tie.""" start="00:13:01.680" video="mainVideo-latex" id="subtitle"]] +[[!template text="""So, and I found an example in the internet""" start="00:13:05.600" video="mainVideo-latex" id="subtitle"]] +[[!template text="""that tells me that I'm going to be using""" start="00:13:10.000" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Babel main is going to be English.""" start="00:13:12.680" video="mainVideo-latex" id="subtitle"]] +[[!template text="""And I'm also going to have a tie.""" start="00:13:15.080" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and then they tell me that for english""" start="00:13:17.920" video="mainVideo-latex" id="subtitle"]] +[[!template text="""i'm going to be using noto serif for the main""" start="00:13:22.880" video="mainVideo-latex" id="subtitle"]] +[[!template text="""for the main of the serif font noto sans for the sans font""" start="00:13:26.640" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and then when i'm writing things in thai""" start="00:13:31.760" video="mainVideo-latex" id="subtitle"]] +[[!template text="""i'm going to be using noto serif thai and noto sans thai""" start="00:13:35.800" video="mainVideo-latex" id="subtitle"]] +[[!template text="""That's what I see in the internet.""" start="00:13:40.120" video="mainVideo-latex" id="subtitle"]] +[[!template text="""So what you can always do, what you would do in this case,""" start="00:13:42.400" video="mainVideo-latex" id="subtitle"]] +[[!template text="""is I'm going to get and map the font configurations""" start="00:13:47.160" video="mainVideo-latex" id="subtitle"]] +[[!template text="""from the latest into this variable.""" start="00:13:54.280" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Things that you have to take into account here""" start="00:13:59.240" video="mainVideo-latex" id="subtitle"]] +[[!template text="""is, for example, the language.""" start="00:14:03.480" video="mainVideo-latex" id="subtitle"]] +[[!template text="""The language here is Thai. You have the language""" start="00:14:05.920" video="mainVideo-latex" id="subtitle"]] +[[!template text="""that you're intending this font for is Thai.""" start="00:14:11.920" video="mainVideo-latex" id="subtitle"]] +[[!template text="""So this appears here. In case you don't have any language,""" start="00:14:16.760" video="mainVideo-latex" id="subtitle"]] +[[!template text="""like in the first two lines,""" start="00:14:21.280" video="mainVideo-latex" id="subtitle"]] +[[!template text="""you just say that the language is nil,""" start="00:14:24.800" video="mainVideo-latex" id="subtitle"]] +[[!template text="""which is the language for the default language.""" start="00:14:27.240" video="mainVideo-latex" id="subtitle"]] +[[!template text="""The other thing is in my example,""" start="00:14:31.440" video="mainVideo-latex" id="subtitle"]] +[[!template text="""in this example that I found in the internet,""" start="00:14:34.800" video="mainVideo-latex" id="subtitle"]] +[[!template text="""I have my properties for the fonts in this part in Latex""" start="00:14:40.040" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and I put them as properties here.""" start="00:14:46.320" video="mainVideo-latex" id="subtitle"]] +[[!template text="""That's the whole idea behind the feature branch.""" start="00:14:52.240" video="mainVideo-latex" id="subtitle"]] +[[!template text="""The Babel provide part is also integrated""" start="00:14:55.080" video="mainVideo-latex" id="subtitle"]] +[[!template text="""from the Org header, mainly from the language line.""" start="00:15:03.120" video="mainVideo-latex" id="subtitle"]] +[[!template text="""We have a variable in case you need to tweak it,""" start="00:15:10.120" video="mainVideo-latex" id="subtitle"]] +[[!template text="""but normally the defaults provided by Org are good enough.""" start="00:15:14.640" video="mainVideo-latex" id="subtitle"]] +[[!template text="""So what is the rationale behind my take at Latex Fonts Management?""" start="00:15:21.080" video="mainVideo-latex" id="subtitle"]] +[[!template text="""And that's something that might be something very personal.""" start="00:15:27.680" video="mainVideo-latex" id="subtitle"]] +[[!template text="""When am I using FontSpec?""" start="00:15:31.360" video="mainVideo-latex" id="subtitle"]] +[[!template text="""I'm using FontSpec when I'm with Lua or Zlatex""" start="00:15:33.760" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and I want fonts that are different""" start="00:15:37.240" video="mainVideo-latex" id="subtitle"]] +[[!template text="""from those specified in the Latex class.""" start="00:15:40.280" video="mainVideo-latex" id="subtitle"]] +[[!template text="""That's point number one. I will also go for font spec""" start="00:15:42.440" video="mainVideo-latex" id="subtitle"]] +[[!template text="""when I need to support scripts,""" start="00:15:49.280" video="mainVideo-latex" id="subtitle"]] +[[!template text="""but I'm missing in the fonts I use,""" start="00:15:52.600" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and I can use fallback fonts for that. I have two.""" start="00:15:54.560" video="mainVideo-latex" id="subtitle"]] +[[!template text="""The only limitation I have here is the following.""" start="00:15:59.480" video="mainVideo-latex" id="subtitle"]] +[[!template text="""All languages must be left to right.""" start="00:16:05.240" video="mainVideo-latex" id="subtitle"]] +[[!template text="""And if you don't say anything at all,""" start="00:16:09.040" video="mainVideo-latex" id="subtitle"]] +[[!template text="""the LATIC backend assumes that you want the dates,""" start="00:16:12.800" video="mainVideo-latex" id="subtitle"]] +[[!template text="""standard names for the abstract and so on""" start="00:16:16.520" video="mainVideo-latex" id="subtitle"]] +[[!template text="""in American English. if you're using them.""" start="00:16:19.160" video="mainVideo-latex" id="subtitle"]] +[[!template text="""In many cases, you're not using any sort of""" start="00:16:21.040" video="mainVideo-latex" id="subtitle"]] +[[!template text="""abstract table of contents and so on""" start="00:16:25.440" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and you don't need that.""" start="00:16:32.320" video="mainVideo-latex" id="subtitle"]] +[[!template text="""The important thing is maybe date management.""" start="00:16:37.240" video="mainVideo-latex" id="subtitle"]] +[[!template text="""If you need dates, headings""" start="00:16:44.600" video="mainVideo-latex" id="subtitle"]] +[[!template text="""or anything in any other language or locale,""" start="00:16:50.400" video="mainVideo-latex" id="subtitle"]] +[[!template text="""then yes, then you need to use Babel or Polyglosia.""" start="00:16:56.920" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Choice, Depends. Can use poly loss here,""" start="00:17:06.600" video="mainVideo-latex" id="subtitle"]] +[[!template text="""or you can use Babel, whatever you want.""" start="00:17:12.080" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Also, in some cases, it will depend""" start="00:17:15.640" video="mainVideo-latex" id="subtitle"]] +[[!template text="""if you've been researching a bit""" start="00:17:20.080" video="mainVideo-latex" id="subtitle"]] +[[!template text="""of how this is done with pure latest,""" start="00:17:21.840" video="mainVideo-latex" id="subtitle"]] +[[!template text="""it will be also depending on, uh,""" start="00:17:24.120" video="mainVideo-latex" id="subtitle"]] +[[!template text="""on the examples that you get.""" start="00:17:26.000" video="mainVideo-latex" id="subtitle"]] +[[!template text="""So, what can you, when you are using""" start="00:17:28.920" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Babel or Polygross here, what do you have?""" start="00:17:35.720" video="mainVideo-latex" id="subtitle"]] +[[!template text="""You have your dates, your headings, and so on.""" start="00:17:41.640" video="mainVideo-latex" id="subtitle"]] +[[!template text="""You might need to control the text""" start="00:17:46.240" video="mainVideo-latex" id="subtitle"]] +[[!template text="""in the sense that what passage""" start="00:17:48.280" video="mainVideo-latex" id="subtitle"]] +[[!template text="""is written in what language.""" start="00:17:51.240" video="mainVideo-latex" id="subtitle"]] +[[!template text="""For example, for things like hyphenation""" start="00:17:53.480" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and some ways of writing the hyphens in a""" start="00:17:58.120" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and direct speech and things like that.""" start="00:18:01.920" video="mainVideo-latex" id="subtitle"]] +[[!template text="""And the other place where you need""" start="00:18:12.040" video="mainVideo-latex" id="subtitle"]] +[[!template text="""other Babel or polyglots here,""" start="00:18:17.360" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and you will see that because all examples""" start="00:18:19.200" video="mainVideo-latex" id="subtitle"]] +[[!template text="""that you can get for later in this case""" start="00:18:24.560" video="mainVideo-latex" id="subtitle"]] +[[!template text="""is when you have a language""" start="00:18:26.840" video="mainVideo-latex" id="subtitle"]] +[[!template text="""that uses right to left alignment""" start="00:18:30.680" video="mainVideo-latex" id="subtitle"]] +[[!template text="""like Arabic, Hebrew and others.""" start="00:18:38.200" video="mainVideo-latex" id="subtitle"]] +[[!template text="""So One note of, I would say, care is you always use the,""" start="00:18:40.440" video="mainVideo-latex" id="subtitle"]] +[[!template text="""if you use Unicode fonts""" start="00:18:45.360" video="mainVideo-latex" id="subtitle"]] +[[!template text="""that includes the scripts as you need,""" start="00:18:46.480" video="mainVideo-latex" id="subtitle"]] +[[!template text="""you will have done, that will be a great leap for you""" start="00:18:49.360" video="mainVideo-latex" id="subtitle"]] +[[!template text="""because that simplifies the configuration a lot.""" start="00:18:51.760" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Now a couple of demos.""" start="00:18:53.760" video="mainVideo-latex" id="subtitle"]] +[[!template text="""I don't know if you've noticed""" start="00:18:55.360" video="mainVideo-latex" id="subtitle"]] +[[!template text="""first demo is that I'm using.""" start="00:19:01.080" video="mainVideo-latex" id="subtitle"]] +[[!template text="""fonts but are not the official fonts""" start="00:19:03.360" video="mainVideo-latex" id="subtitle"]] +[[!template text="""in this Beamer template""" start="00:19:05.120" video="mainVideo-latex" id="subtitle"]] +[[!template text="""which is by the way Boadilla.""" start="00:19:06.400" video="mainVideo-latex" id="subtitle"]] +[[!template text="""This would be the first thing""" start="00:19:07.960" video="mainVideo-latex" id="subtitle"]] +[[!template text="""so I've been using other fonts""" start="00:19:10.520" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and they are at least from what I get in class""" start="00:19:14.080" video="mainVideo-latex" id="subtitle"]] +[[!template text="""they are more readable than the official""" start="00:19:17.640" video="mainVideo-latex" id="subtitle"]] +[[!template text="""than the default fonts in Poliglossi""" start="00:19:20.440" video="mainVideo-latex" id="subtitle"]] +[[!template text="""that you get in Babel for the Boadilla theme.""" start="00:19:22.440" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Another thing is what I've told you,""" start="00:19:24.440" video="mainVideo-latex" id="subtitle"]] +[[!template text="""I have my own things like emojis.""" start="00:19:25.960" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Now, if you allow me for a second,""" start="00:19:27.560" video="mainVideo-latex" id="subtitle"]] +[[!template text="""I'm going to switch to the Emacs""" start="00:19:29.800" video="mainVideo-latex" id="subtitle"]] +[[!template text="""which is running behind the scenes to show you what.""" start="00:19:38.400" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Okay, fine. So, this is the presentation.""" start="00:19:40.280" video="mainVideo-latex" id="subtitle"]] +[[!template text="""that I have here, and as you see,""" start="00:19:45.720" video="mainVideo-latex" id="subtitle"]] +[[!template text="""I'm using Lua Latex and just one spec.""" start="00:19:47.880" video="mainVideo-latex" id="subtitle"]] +[[!template text="""given I don't know why I would I would need this""" start="00:19:50.960" video="mainVideo-latex" id="subtitle"]] +[[!template text="""this is an English presentation""" start="00:19:59.480" video="mainVideo-latex" id="subtitle"]] +[[!template text="""but just to show you what you can do""" start="00:20:01.080" video="mainVideo-latex" id="subtitle"]] +[[!template text="""if I go back here and I go to the beginning of the presentation""" start="00:20:03.040" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and now what I don't think you're showing anything oh thank you""" start="00:20:09.360" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Okay, this is the presentation, right?""" start="00:20:13.160" video="mainVideo-latex" id="subtitle"]] +[[!template text="""So what I'm going to do is I'm going to go back""" start="00:20:21.400" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and I'm going to show the full screen.""" start="00:20:33.560" video="mainVideo-latex" id="subtitle"]] +[[!template text="""And in this full screen,""" start="00:20:35.840" video="mainVideo-latex" id="subtitle"]] +[[!template text="""you see the presentation on one side""" start="00:20:37.200" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and you see Emacs on the other side. Oh, still nothing.""" start="00:20:41.920" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Yeah, we're not seeing your screen at the moment, sorry.""" start="00:20:46.080" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Oh, thank you. Thank you for that.""" start="00:20:50.280" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Now it's starting to come. Okay. Yay! Fine.""" start="00:20:54.080" video="mainVideo-latex" id="subtitle"]] +[[!template text="""So this presentation, I've done it with Lua Latex,""" start="00:20:59.960" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and what I add here is font spec and English language.""" start="00:21:03.480" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Just to show you, but with the same configuration,""" start="00:21:05.840" video="mainVideo-latex" id="subtitle"]] +[[!template text="""with the same font spec configuration,""" start="00:21:10.280" video="mainVideo-latex" id="subtitle"]] +[[!template text="""but adding Polyglossia.""" start="00:21:14.280" video="mainVideo-latex" id="subtitle"]] +[[!template text="""I just have enough with adding polygons here""" start="00:21:15.440" video="mainVideo-latex" id="subtitle"]] +[[!template text="""with the Spanish language to get my dates correctly""" start="00:21:23.160" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and this is something I'm going to see the date in English""" start="00:21:28.800" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and if I now go and recompile it in a couple of seconds""" start="00:21:32.560" video="mainVideo-latex" id="subtitle"]] +[[!template text="""you will see that the data is in Spanish.""" start="00:21:46.720" video="mainVideo-latex" id="subtitle"]] +[[!template text="""We are using the same Which I can show by the way.""" start="00:21:49.000" video="mainVideo-latex" id="subtitle"]] +[[!template text="""I see just by adding polyglyphs here.""" start="00:21:53.880" video="mainVideo-latex" id="subtitle"]] +[[!template text="""I can get my dates in Spanish.""" start="00:21:58.080" video="mainVideo-latex" id="subtitle"]] +[[!template text="""What I have included the the locals in the.""" start="00:21:59.440" video="mainVideo-latex" id="subtitle"]] +[[!template text="""In this in this lines, but just to discuss it a bit more.""" start="00:22:09.560" video="mainVideo-latex" id="subtitle"]] +[[!template text="""I have it for all the presentations.""" start="00:22:15.000" video="mainVideo-latex" id="subtitle"]] +[[!template text="""I think it was here. No. For the demo.""" start="00:22:19.440" video="mainVideo-latex" id="subtitle"]] +[[!template text="""For the presentations I use for MX conferences.""" start="00:22:24.320" video="mainVideo-latex" id="subtitle"]] +[[!template text="""I have it and it's something like this.""" start="00:22:27.720" video="mainVideo-latex" id="subtitle"]] +[[!template text="""actually you don't need a fallback""" start="00:22:31.120" video="mainVideo-latex" id="subtitle"]] +[[!template text="""for for the main font here""" start="00:22:37.360" video="mainVideo-latex" id="subtitle"]] +[[!template text="""because the presentations are done with the sans font""" start="00:22:39.440" video="mainVideo-latex" id="subtitle"]] +[[!template text="""so the only thing that I would really need""" start="00:22:44.240" video="mainVideo-latex" id="subtitle"]] +[[!template text="""would be something like this""" start="00:22:46.560" video="mainVideo-latex" id="subtitle"]] +[[!template text="""this can be commented and the same happens here""" start="00:22:48.200" video="mainVideo-latex" id="subtitle"]] +[[!template text="""with the model this can be also commented""" start="00:22:53.360" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and the only thing where I would really need""" start="00:22:56.160" video="mainVideo-latex" id="subtitle"]] +[[!template text="""a full back font is here""" start="00:23:00.400" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and what this is telling me is that""" start="00:23:02.120" video="mainVideo-latex" id="subtitle"]] +[[!template text="""you have a full back for the emoji""" start="00:23:04.320" video="mainVideo-latex" id="subtitle"]] +[[!template text="""for the emoji script""" start="00:23:07.080" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and you need to use the apple color emoji font with A modifier""" start="00:23:09.800" video="mainVideo-latex" id="subtitle"]] +[[!template text="""which in this case is that you need""" start="00:23:15.400" video="mainVideo-latex" id="subtitle"]] +[[!template text="""to have the half-word renderer.""" start="00:23:18.760" video="mainVideo-latex" id="subtitle"]] +[[!template text="""That's the only thing that you really need.""" start="00:23:21.360" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Where do I get all these things from?""" start="00:23:24.600" video="mainVideo-latex" id="subtitle"]] +[[!template text="""All these things I get from the different parts""" start="00:23:26.680" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and from different scripts in the Internet.""" start="00:23:29.040" video="mainVideo-latex" id="subtitle"]] +[[!template text="""I also have a couple of other things to show.""" start="00:23:32.080" video="mainVideo-latex" id="subtitle"]] +[[!template text="""For example, first of all, I do not need this.""" start="00:23:38.040" video="mainVideo-latex" id="subtitle"]] +[[!template text="""This is a letter that I've been writing this morning""" start="00:23:42.920" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and I'm not using the full feature branches at all""" start="00:23:44.750" video="mainVideo-latex" id="subtitle"]] +[[!template text="""because I just needed a sans font""" start="00:23:55.641" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and it's going to be a letter that I'm writing in.""" start="00:23:58.120" video="mainVideo-latex" id="subtitle"]] +[[!template text="""with the sans font and the only thing I need""" start="00:24:02.120" video="mainVideo-latex" id="subtitle"]] +[[!template text="""was Spanish for the date anyhow""" start="00:24:06.120" video="mainVideo-latex" id="subtitle"]] +[[!template text="""how did what was my first thing that I did""" start="00:24:09.120" video="mainVideo-latex" id="subtitle"]] +[[!template text="""with the back end back in I think it was April""" start="00:24:14.720" video="mainVideo-latex" id="subtitle"]] +[[!template text="""we had a this comes from the mailing list""" start="00:24:19.640" video="mainVideo-latex" id="subtitle"]] +[[!template text="""we had someone who had this who had this problem right""" start="00:24:23.080" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and he wanted to add emojis""" start="00:24:26.760" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and he had problems with the verbatim font""" start="00:24:29.560" video="mainVideo-latex" id="subtitle"]] +[[!template text="""And that's how everything got started.""" start="00:24:33.040" video="mainVideo-latex" id="subtitle"]] +[[!template text="""If you now go and I get my period""" start="00:24:35.280" video="mainVideo-latex" id="subtitle"]] +[[!template text="""of latex for that running.""" start="00:24:42.600" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Well, I actually, all my latex is supported for that.""" start="00:24:44.600" video="mainVideo-latex" id="subtitle"]] +[[!template text="""And this was what I showed in one of the Emacs, Org Mode meetups.""" start="00:24:50.560" video="mainVideo-latex" id="subtitle"]] +[[!template text="""And there you see that We have the emojis.""" start="00:24:58.120" video="mainVideo-latex" id="subtitle"]] +[[!template text="""We had the fonts for the different things. We had maps.""" start="00:25:00.080" video="mainVideo-latex" id="subtitle"]] +[[!template text="""And you could even go and add scripts""" start="00:25:06.880" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and little passages and different scripts.""" start="00:25:13.800" video="mainVideo-latex" id="subtitle"]] +[[!template text="""And this was done with the same principles that I want.""" start="00:25:16.320" video="mainVideo-latex" id="subtitle"]] +[[!template text="""I have my main font. I have the emojis.""" start="00:25:22.360" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and I want, I have my son's phone and I have the emojis,""" start="00:25:25.440" video="mainVideo-latex" id="subtitle"]] +[[!template text="""the Han for Japanese and the Kana for Japanese,""" start="00:25:30.560" video="mainVideo-latex" id="subtitle"]] +[[!template text="""so that these characters here,""" start="00:25:32.960" video="mainVideo-latex" id="subtitle"]] +[[!template text="""both in the sons and in the serif passages""" start="00:25:36.800" video="mainVideo-latex" id="subtitle"]] +[[!template text="""are included correctly in the PDF.""" start="00:25:40.680" video="mainVideo-latex" id="subtitle"]] +[[!template text="""And a third thing of what you can do""" start="00:25:44.400" video="mainVideo-latex" id="subtitle"]] +[[!template text="""I've also shown this so this is more""" start="00:25:50.000" video="mainVideo-latex" id="subtitle"]] +[[!template text="""for people who have not seen it""" start="00:25:53.440" video="mainVideo-latex" id="subtitle"]] +[[!template text="""this is a side-by-side package a passage of""" start="00:25:55.800" video="mainVideo-latex" id="subtitle"]] +[[!template text="""well actually the beginning of the analysis by Xenophon""" start="00:26:01.400" video="mainVideo-latex" id="subtitle"]] +[[!template text="""both in in Greek and in German with some comments""" start="00:26:04.920" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and if I go this is this is done with Polyglossia""" start="00:26:12.920" video="mainVideo-latex" id="subtitle"]] +[[!template text="""so if I go once again and produce""" start="00:26:18.680" video="mainVideo-latex" id="subtitle"]] +[[!template text="""the PDF for this just a second""" start="00:26:25.280" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Come on. There you are. You get this.""" start="00:26:32.040" video="mainVideo-latex" id="subtitle"]] +[[!template text="""And there you see different fonts.""" start="00:26:41.120" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Which fonts am I using for this?""" start="00:26:46.400" video="mainVideo-latex" id="subtitle"]] +[[!template text="""I'm using for the main font for me is Swissere.""" start="00:26:48.240" video="mainVideo-latex" id="subtitle"]] +[[!template text="""This listing is produced with Deja Vu Sansponor.""" start="00:26:51.280" video="mainVideo-latex" id="subtitle"]] +[[!template text="""And using Polyglos here, I'm able to go and define""" start="00:27:01.480" video="mainVideo-latex" id="subtitle"]] +[[!template text="""the Greek polytone for the variant,""" start="00:27:13.360" video="mainVideo-latex" id="subtitle"]] +[[!template text="""for the Serif variant with the Noto Serif font,""" start="00:27:15.800" video="mainVideo-latex" id="subtitle"]] +[[!template text="""just to differentiate it from the German text.""" start="00:27:18.800" video="mainVideo-latex" id="subtitle"]] +[[!template text="""And nice thing is that both in the German text""" start="00:27:26.200" video="mainVideo-latex" id="subtitle"]] +[[!template text="""You see for example here and with the Greek text""" start="00:27:30.280" video="mainVideo-latex" id="subtitle"]] +[[!template text="""everything is scaled to match""" start="00:27:37.360" video="mainVideo-latex" id="subtitle"]] +[[!template text="""the lower case of the main font which is free serif.""" start="00:27:40.880" video="mainVideo-latex" id="subtitle"]] +[[!template text="""So that everything looks""" start="00:27:44.120" video="mainVideo-latex" id="subtitle"]] +[[!template text="""extremely uniform and nice to read.""" start="00:27:45.880" video="mainVideo-latex" id="subtitle"]] +[[!template text="""So that's what you want to do.""" start="00:27:49.360" video="mainVideo-latex" id="subtitle"]] +[[!template text="""That's what you can do with this.""" start="00:27:53.760" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Just a couple of final words on this.""" start="00:27:56.520" video="mainVideo-latex" id="subtitle"]] +[[!template text="""I want to thank once again Juan Manuel Garcia and Jim Crump""" start="00:28:00.760" video="mainVideo-latex" id="subtitle"]] +[[!template text="""for what they have shared.""" start="00:28:17.520" video="mainVideo-latex" id="subtitle"]] +[[!template text="""And I also want to thank everybody""" start="00:28:19.920" video="mainVideo-latex" id="subtitle"]] +[[!template text="""for productive contributions to the discussion.""" start="00:28:24.080" video="mainVideo-latex" id="subtitle"]] +[[!template text="""I'm saying this because I think I need a longer rest""" start="00:28:26.480" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and I'm going to be leaving""" start="00:28:32.160" video="mainVideo-latex" id="subtitle"]] +[[!template text="""the feature fund untouched for a couple of months""" start="00:28:34.840" video="mainVideo-latex" id="subtitle"]] +[[!template text="""so that people can take the feature branch""" start="00:28:38.560" video="mainVideo-latex" id="subtitle"]] +[[!template text="""untouched for a couple of months.""" start="00:28:41.720" video="mainVideo-latex" id="subtitle"]] +[[!template text="""to see if people want to use it and how they want to use it""" start="00:28:43.520" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and then maybe in the future we can discuss""" start="00:28:47.600" video="mainVideo-latex" id="subtitle"]] +[[!template text="""if we want to integrate it or not""" start="00:28:49.920" video="mainVideo-latex" id="subtitle"]] +[[!template text="""or if people need it and all that. Now questions, comments?""" start="00:28:52.560" video="mainVideo-latex" id="subtitle"]] +[[!template text="""I think there was one question on. Beautiful for.""" start="00:28:58.840" video="mainVideo-latex" id="subtitle"]] +[[!template text="""I think that goes beyond fonts right.""" start="00:29:41.280" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Someone is asking what about how is about video""" start="00:29:47.120" video="mainVideo-latex" id="subtitle"]] +[[!template text="""mainly MP4 support on ox-latex.""" start="00:29:52.840" video="mainVideo-latex" id="subtitle"]] +[[!template text="""I started the presentations with many videos.""" start="00:29:56.320" video="mainVideo-latex" id="subtitle"]] +[[!template text="""This is something that really pushed me back using ox-latex.""" start="00:29:58.800" video="mainVideo-latex" id="subtitle"]] +[[!template text="""What I would say to this is I mean this goes beyond""" start="00:30:07.840" video="mainVideo-latex" id="subtitle"]] +[[!template text="""what we're discussing here with fonts.""" start="00:30:18.800" video="mainVideo-latex" id="subtitle"]] +[[!template text="""I would advise you to go and get the same""" start="00:30:24.320" video="mainVideo-latex" id="subtitle"]] +[[!template text="""or have the same thing that I did""" start="00:30:29.320" video="mainVideo-latex" id="subtitle"]] +[[!template text="""which was first of all try to write it in latex""" start="00:30:35.240" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and then Once you have the minimal working examples,""" start="00:30:39.120" video="mainVideo-latex" id="subtitle"]] +[[!template text="""you can get the latest parts""" start="00:30:49.600" video="mainVideo-latex" id="subtitle"]] +[[!template text="""integrated into your own presentation.""" start="00:30:53.160" video="mainVideo-latex" id="subtitle"]] +[[!template text="""That's what I've been doing.""" start="00:30:58.160" video="mainVideo-latex" id="subtitle"]] +[[!template text="""By the way, I still do it, for example, not in this,""" start="00:31:01.320" video="mainVideo-latex" id="subtitle"]] +[[!template text="""but for my lectures,""" start="00:31:04.520" video="mainVideo-latex" id="subtitle"]] +[[!template text="""I have a lot of I'm using a lot of ticks""" start="00:31:06.080" video="mainVideo-latex" id="subtitle"]] +[[!template text="""to do graphs and animated graphs.""" start="00:31:09.120" video="mainVideo-latex" id="subtitle"]] +[[!template text="""And that's begin export later and export later.""" start="00:31:12.480" video="mainVideo-latex" id="subtitle"]] +[[!template text="""That's what I'm doing.""" start="00:31:18.320" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Videos are generally a bit tricky because you cannot""" start="00:31:20.160" video="mainVideo-latex" id="subtitle"]] +[[!template text="""So I think there is something called PDF-PC that can,""" start="00:31:29.000" video="mainVideo-latex" id="subtitle"]] +[[!template text="""this provides a lot of cloud package""" start="00:31:35.120" video="mainVideo-latex" id="subtitle"]] +[[!template text="""where you can include videos""" start="00:31:37.400" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and then they can be played through that specific program.""" start="00:31:39.080" video="mainVideo-latex" id="subtitle"]] +[[!template text="""And JavaScript embedding,""" start="00:31:44.400" video="mainVideo-latex" id="subtitle"]] +[[!template text="""that can only be done through Acrobat Reader,""" start="00:31:46.240" video="mainVideo-latex" id="subtitle"]] +[[!template text="""which is like also finicky. Sure, yes.""" start="00:31:50.000" video="mainVideo-latex" id="subtitle"]] +[[!template text="""As you said there are many things that need to be changed.""" start="00:31:54.520" video="mainVideo-latex" id="subtitle"]] +[[!template text="""But I mean it's always a thing of taking it""" start="00:32:04.000" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and trying to see what you can do""" start="00:32:07.200" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and what the specifics are.""" start="00:32:11.360" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Maybe this can be done with Acrobat""" start="00:32:13.320" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and with a couple of extra packages and who knows.""" start="00:32:17.080" video="mainVideo-latex" id="subtitle"]] +[[!template text="""And you can always keep it as as late""" start="00:32:23.960" video="mainVideo-latex" id="subtitle"]] +[[!template text="""as fragments inside Org, I think. Any other questions?""" start="00:32:26.360" video="mainVideo-latex" id="subtitle"]] + +</div>Questions or comments? Please e-mail [paaguti@gmail.com](mailto:paaguti@gmail.com?subject=Comment%20for%20EmacsConf%202023%20latex%3A%20LaTeX%20export%20in%20org-mode%3A%20the%20overhaul) <!-- End of emacsconf-publish-after-page --> diff --git a/2025/info/latex-before.md b/2025/info/latex-before.md index 92d8b976..e54abc41 100644 --- a/2025/info/latex-before.md +++ b/2025/info/latex-before.md @@ -1,19 +1,13 @@ <!-- Automatically generated by emacsconf-publish-before-page --> - -The following image shows where the talk is in the schedule for Sat 2025-12-06. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="latex"> -<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2025/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:10 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2025/talks/org-babel" title="Making Org-Babel reactive" data-slug="org-babel"> <title> 9:10- 9:20 Making Org-Babel reactive</title> <rect x="13" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(24,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> org-babel</text></g></a> <a href="/2025/talks/reference" title="Emacs as a fully-fledged reference manager" data-slug="reference"> <title> 9:30- 9:55 Emacs as a fully-fledged reference manager</title> <rect x="41" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(73,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> reference</text></g></a> <a href="/2025/talks/gmail" title="org-gmail: A deep integration of Gmail into your Org Mode" data-slug="gmail"> <title> 10:15-10:40 org-gmail: A deep integration of Gmail into your Org Mode</title> <rect x="102" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(134,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gmail</text></g></a> <a href="/2025/talks/gnus" title="Reading and writing emails in GNU Emacs with Gnus" data-slug="gnus"> <title> 10:50-11:15 Reading and writing emails in GNU Emacs with Gnus</title> <rect x="150" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(182,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gnus</text></g></a> <a href="/2025/talks/latex" title="LaTeX export in org-mode: the overhaul" data-slug="latex"> <title> 11:25-11:45 LaTeX export in org-mode: the overhaul</title> <rect stroke-width="3" x="199" y="15" opacity="0.8" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(224,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> latex</text></g></a> <a href="/2025/talks/calc" title="Basic Calc functionality for engineering or electronics" data-slug="calc"> <title> 1:00- 1:25 Basic Calc functionality for engineering or electronics</title> <rect x="329" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(361,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> calc</text></g></a> <a href="/2025/talks/blee-lcnt" title="Blee-LCNT: An Emacs-centered content production and self-publication framework" data-slug="blee-lcnt"> <title> 1:35- 2:15 Blee-LCNT: An Emacs-centered content production and self-publication framework</title> <rect x="377" y="15" opacity="0.5" width="54" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(429,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> blee-lcnt</text></g></a> <a href="/2025/talks/greader" title="GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence" data-slug="greader"> <title> 2:35- 2:40 GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence</title> <rect x="459" y="15" opacity="0.5" width="6" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(463,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> greader</text></g></a> <a href="/2025/talks/open-mic" title="Open session" data-slug="open-mic"> <title> 2:50- 3:40 Open session</title> <rect x="480" y="15" opacity="0.5" width="68" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(546,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> open-mic</text></g></a> <a href="/2025/talks/sat-close" title="Saturday closing remarks / open session" data-slug="sat-close"> <title> 4:00- 4:10 Saturday closing remarks / open session</title> <rect x="576" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(587,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2025/talks/schemacs" title="One year progress update Schemacs (formerly Gypsum)" data-slug="schemacs"> <title> 9:30- 9:55 One year progress update Schemacs (formerly Gypsum)</title> <rect x="41" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(73,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> schemacs</text></g></a> <a href="/2025/talks/juicemacs" title="Juicemacs: exploring speculative JIT compilation for ELisp in Java" data-slug="juicemacs"> <title> 10:15-10:35 Juicemacs: exploring speculative JIT compilation for ELisp in Java</title> <rect x="102" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(127,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> juicemacs</text></g></a> <a href="/2025/talks/swanky" title="Swanky Python: Interactive development for Python" data-slug="swanky"> <title> 10:45-11:10 Swanky Python: Interactive development for Python</title> <rect x="144" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(176,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> swanky</text></g></a> <a href="/2025/talks/python" title="Interactive Python programming in Emacs" data-slug="python"> <title> 11:20-11:40 Interactive Python programming in Emacs</title> <rect x="192" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(217,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <a href="/2025/talks/llm" title="Emacs, editors, and LLM driven workflows" data-slug="llm"> <title> 1:00- 1:25 Emacs, editors, and LLM driven workflows</title> <rect x="329" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(361,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> llm</text></g></a> <a href="/2025/talks/private-ai" title="Emacs and private AI: a great match" data-slug="private-ai"> <title> 1:45- 2:05 Emacs and private AI: a great match</title> <rect x="391" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(416,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> private-ai</text></g></a> <a href="/2025/talks/commonlisp" title="Common Lisp images communicating like-a-human through shared Emacs slime and eev" data-slug="commonlisp"> <title> 2:25- 2:55 Common Lisp images communicating like-a-human through shared Emacs slime and eev</title> <rect x="446" y="75" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(485,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> commonlisp</text></g></a> <a href="/2025/talks/graphics" title="Modern Emacs/Elisp hardware/software accelerated graphics" data-slug="graphics"> <title> 3:05- 3:30 Modern Emacs/Elisp hardware/software accelerated graphics</title> <rect x="500" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(532,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> graphics</text></g></a> <g transform="translate(0,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 5 PM</text></g></svg> -</div> - [[!toc ]] -Format: 20-min talk ; Q&A: BigBlueButton conference room <https://media.emacsconf.org/2025/current/bbb-latex.html> Etherpad: <https://pad.emacsconf.org/2025-latex> +Format: 34-min talk ; Q&A: BigBlueButton conference room Etherpad: <https://pad.emacsconf.org/2025-latex> Etherpad: <https://pad.emacsconf.org/2025-latex> -Discuss on IRC: [#emacsconf-gen](https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen) -Status: Q&A finished, IRC and pad will be archived on this page +Status: TO_REVIEW_QA -<div class="vid mainVideo"><div></div><div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-latex">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/current/bbb-latex.html">Open public Q&A</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-latex--latex-export-in-orgmode-the-overhaul--pedro-a-aranda-gutirrez--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-latex--latex-export-in-orgmode-the-overhaul--pedro-a-aranda-gutirrez--intro.webm">Download --intro.webm</a></li></ul></div></div> +<div class="vid mainVideo"><video controls preload="none" id="mainVideo-latex"><source src="https://media.emacsconf.org/2025/emacsconf-2025-latex--latex-export-in-orgmode-the-overhaul--pedro-a-aranda-gutirrez--original.m4v" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-latex--latex-export-in-orgmode-the-overhaul--pedro-a-aranda-gutirrez--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 33:53 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-latex">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-latex--latex-export-in-orgmode-the-overhaul--pedro-a-aranda-gutirrez--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-latex--latex-export-in-orgmode-the-overhaul--pedro-a-aranda-gutirrez--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-latex--latex-export-in-orgmode-the-overhaul--pedro-a-aranda-gutirrez--main.opus">Download --main.opus (17MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-latex--latex-export-in-orgmode-the-overhaul--pedro-a-aranda-gutirrez--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-latex--latex-export-in-orgmode-the-overhaul--pedro-a-aranda-gutirrez--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-latex--latex-export-in-orgmode-the-overhaul--pedro-a-aranda-gutirrez--main.webm">Download --main.webm (65MB)</a></li><li><a href="https://youtu.be/4nkFEd73UOE">View on Youtube</a></li></ul></div></div> # Description <!-- End of emacsconf-publish-before-page -->
\ No newline at end of file diff --git a/2025/info/latex-nav.md b/2025/info/latex-nav.md index cec53563..6bd2357a 100644 --- a/2025/info/latex-nav.md +++ b/2025/info/latex-nav.md @@ -1,7 +1,7 @@ <div class="talk-nav"> Back to the [[talks]] -Previous by time: <a href="/2025/talks/python">Interactive Python programming in Emacs</a> -Next by time: <a href="/2025/talks/calc">Basic Calc functionality for engineering or electronics</a> -Track: <span class="sched-track General">General</span> - <strong><a href="https://emacsconf.org/2025/watch/gen">Watch</a></strong> +Previous by track: <a href="/2025/talks/gnus">Reading and writing emails in GNU Emacs with Gnus</a> +Next by track: <a href="/2025/talks/calc">Basic Calc functionality for engineering or electronics</a> +Track: <span class="sched-track General">General</span> </div> diff --git a/2025/info/llm-after.md b/2025/info/llm-after.md index 91904dd7..4305f6de 100644 --- a/2025/info/llm-after.md +++ b/2025/info/llm-after.md @@ -367,7 +367,540 @@ Captioner: amitav -Questions or comments? Please e-mail [ahyatt@gmail.com](mailto:ahyatt@gmail.com?subject=Comment%20for%20EmacsConf%202023%20llm%3A%20Emacs%2C%20editors%2C%20and%20LLM%20driven%20workflows) +<div class="transcript transcript-qanda"><a name="llm-qanda-transcript"></a><h1>Q&A transcript (unedited)</h1> + +[[!template text="""So let's, I'm just going to answer""" start="00:00:00.000" video="qanda-llm" id="subtitle"]] +[[!template text="""the questions as I see them on the pad.""" start="00:00:01.760" video="qanda-llm" id="subtitle"]] +[[!template text="""So yeah, this first question is really good.""" start="00:00:04.400" video="qanda-llm" id="subtitle"]] +[[!template text="""And I think it's actually this great thing""" start="00:00:07.080" video="qanda-llm" id="subtitle"]] +[[!template text="""that I did not mention is that like,""" start="00:00:09.920" video="qanda-llm" id="subtitle"]] +[[!template text="""if you have unsaved buffers,""" start="00:00:12.720" video="qanda-llm" id="subtitle"]] +[[!template text="""which is, you know, when you're actually doing editing,""" start="00:00:14.120" video="qanda-llm" id="subtitle"]] +[[!template text="""most buffers are unsaved.""" start="00:00:17.680" video="qanda-llm" id="subtitle"]] +[[!template text="""really you need something tightly integrated with Emacs""" start="00:00:22.000" video="qanda-llm" id="subtitle"]] +[[!template text="""to deal with that.""" start="00:00:25.960" video="qanda-llm" id="subtitle"]] +[[!template text="""So things like, you know,""" start="00:00:27.480" video="qanda-llm" id="subtitle"]] +[[!template text="""I demonstrated Copilot,""" start="00:00:29.040" video="qanda-llm" id="subtitle"]] +[[!template text="""I demonstrated Gptel,""" start="00:00:30.240" video="qanda-llm" id="subtitle"]] +[[!template text="""things like those things, things like Ellama,""" start="00:00:32.520" video="qanda-llm" id="subtitle"]] +[[!template text="""these things will all work with unsaved buffers""" start="00:00:35.440" video="qanda-llm" id="subtitle"]] +[[!template text="""because they work via, you know, the input is the buffer.""" start="00:00:38.720" video="qanda-llm" id="subtitle"]] +[[!template text="""as opposed to a file.""" start="00:00:43.960" video="qanda-llm" id="subtitle"]] +[[!template text="""Things like Claude Code, Gemini Code, et cetera,""" start="00:00:45.200" video="qanda-llm" id="subtitle"]] +[[!template text="""those are working with files.""" start="00:00:48.520" video="qanda-llm" id="subtitle"]] +[[!template text="""They have no idea what is going on with your buffers.""" start="00:00:49.520" video="qanda-llm" id="subtitle"]] +[[!template text="""And it could be that you can solve this problem""" start="00:00:51.640" video="qanda-llm" id="subtitle"]] +[[!template text="""by using this thing called MCP,""" start="00:00:55.120" video="qanda-llm" id="subtitle"]] +[[!template text="""which kind of gives the coding agent""" start="00:00:56.800" video="qanda-llm" id="subtitle"]] +[[!template text="""a way to see anything in particular.""" start="00:01:02.840" video="qanda-llm" id="subtitle"]] +[[!template text="""In this case, it would be Emacs""" start="00:01:05.120" video="qanda-llm" id="subtitle"]] +[[!template text="""and the state of your buffers.""" start="00:01:06.800" video="qanda-llm" id="subtitle"]] +[[!template text="""But I think that's not a particularly great solution""" start="00:01:07.800" video="qanda-llm" id="subtitle"]] +[[!template text="""if that's how you want to work.""" start="00:01:11.320" video="qanda-llm" id="subtitle"]] +[[!template text="""But I think that's kind of like""" start="00:01:13.840" video="qanda-llm" id="subtitle"]] +[[!template text="""if you're in the Claude Code""" start="00:01:15.720" video="qanda-llm" id="subtitle"]] +[[!template text="""that kind of world where you know things are happening,""" start="00:01:17.360" video="qanda-llm" id="subtitle"]] +[[!template text="""basically through a terminal.""" start="00:01:19.760" video="qanda-llm" id="subtitle"]] +[[!template text="""It's okay, like you typically""" start="00:01:24.680" video="qanda-llm" id="subtitle"]] +[[!template text="""would not be doing a mix of things.""" start="00:01:26.400" video="qanda-llm" id="subtitle"]] +[[!template text="""You would just be doing things either""" start="00:01:28.640" video="qanda-llm" id="subtitle"]] +[[!template text="""in one place or the other place.""" start="00:01:30.120" video="qanda-llm" id="subtitle"]] +[[!template text="""You know, it could be that you switch off""" start="00:01:32.400" video="qanda-llm" id="subtitle"]] +[[!template text="""from one place to another,""" start="00:01:33.600" video="qanda-llm" id="subtitle"]] +[[!template text="""but you wouldn't be doing both at the same time.""" start="00:01:34.360" video="qanda-llm" id="subtitle"]] +[[!template text="""And it's kind of a, you tend to just fall into one,""" start="00:01:36.400" video="qanda-llm" id="subtitle"]] +[[!template text="""you know,""" start="00:01:40.280" video="qanda-llm" id="subtitle"]] +[[!template text="""editing outside the editor or editing inside the editor.""" start="00:01:41.680" video="qanda-llm" id="subtitle"]] +[[!template text="""And I find myself switching between the two""" start="00:01:44.760" video="qanda-llm" id="subtitle"]] +[[!template text="""when I use those kinds of tools.""" start="00:01:47.040" video="qanda-llm" id="subtitle"]] +[[!template text="""So David, let me interrupt you for just one moment.""" start="00:01:48.960" video="qanda-llm" id="subtitle"]] +[[!template text="""I want to just take care to read out""" start="00:01:51.440" video="qanda-llm" id="subtitle"]] +[[!template text="""the question that we're answering.""" start="00:01:53.520" video="qanda-llm" id="subtitle"]] +[[!template text="""The question was, my biggest question with AI code editors""" start="00:01:55.080" video="qanda-llm" id="subtitle"]] +[[!template text="""trying to integrate with Emacs is,""" start="00:01:59.000" video="qanda-llm" id="subtitle"]] +[[!template text="""are the AI code editors able to read unsaved buffers""" start="00:02:01.000" video="qanda-llm" id="subtitle"]] +[[!template text="""and not just saved files?""" start="00:02:04.600" video="qanda-llm" id="subtitle"]] +[[!template text="""Sorry. Yes. Yeah. Thank you for reminding me to.""" start="00:02:06.320" video="qanda-llm" id="subtitle"]] +[[!template text="""I will read the questions from now on.""" start="00:02:11.720" video="qanda-llm" id="subtitle"]] +[[!template text="""But yes, that's what I think about.""" start="00:02:13.520" video="qanda-llm" id="subtitle"]] +[[!template text="""that interesting questions about unsaved buffers.""" start="00:02:16.600" video="qanda-llm" id="subtitle"]] +[[!template text="""The next question is,""" start="00:02:20.320" video="qanda-llm" id="subtitle"]] +[[!template text="""I don't agree with the comment you made""" start="00:02:22.240" video="qanda-llm" id="subtitle"]] +[[!template text="""about VS code usage dying out""" start="00:02:23.800" video="qanda-llm" id="subtitle"]] +[[!template text="""because I see companies and products""" start="00:02:25.200" video="qanda-llm" id="subtitle"]] +[[!template text="""pushing for tightly integrated agent""" start="00:02:26.720" video="qanda-llm" id="subtitle"]] +[[!template text="""and products like Windsurf.""" start="00:02:28.880" video="qanda-llm" id="subtitle"]] +[[!template text="""So thoughts on that?""" start="00:02:31.320" video="qanda-llm" id="subtitle"]] +[[!template text="""Yeah, I mean, it's really hard""" start="00:02:33.240" video="qanda-llm" id="subtitle"]] +[[!template text="""to be certain of anything,""" start="00:02:35.880" video="qanda-llm" id="subtitle"]] +[[!template text="""like things are changing very fast""" start="00:02:37.000" video="qanda-llm" id="subtitle"]] +[[!template text="""and it's very hard to predict the future.""" start="00:02:38.440" video="qanda-llm" id="subtitle"]] +[[!template text="""But the trend I see is that um,""" start="00:02:40.640" video="qanda-llm" id="subtitle"]] +[[!template text="""the sort of outside editing experience""" start="00:02:47.840" video="qanda-llm" id="subtitle"]] +[[!template text="""where you just kind of instruct a model,""" start="00:02:50.920" video="qanda-llm" id="subtitle"]] +[[!template text="""what to do is getting better.""" start="00:02:53.520" video="qanda-llm" id="subtitle"]] +[[!template text="""And as long as that keeps getting better,""" start="00:02:56.760" video="qanda-llm" id="subtitle"]] +[[!template text="""I think that's going to lessen the demand""" start="00:02:58.680" video="qanda-llm" id="subtitle"]] +[[!template text="""for these tightly integrated editing experiences.""" start="00:03:00.840" video="qanda-llm" id="subtitle"]] +[[!template text="""So it could be that, um, a lot of people,""" start="00:03:04.880" video="qanda-llm" id="subtitle"]] +[[!template text="""especially in, you know, corporate environments""" start="00:03:10.840" video="qanda-llm" id="subtitle"]] +[[!template text="""just start using,""" start="00:03:12.840" video="qanda-llm" id="subtitle"]] +[[!template text="""they're going to use whatever is""" start="00:03:14.280" video="qanda-llm" id="subtitle"]] +[[!template text="""going to make the most productive.""" start="00:03:15.600" video="qanda-llm" id="subtitle"]] +[[!template text="""And I think right now, it's not clear that that will be,""" start="00:03:17.960" video="qanda-llm" id="subtitle"]] +[[!template text="""you know, the very agent-based, you know,""" start="00:03:22.400" video="qanda-llm" id="subtitle"]] +[[!template text="""command line-centric way of doing things.""" start="00:03:25.080" video="qanda-llm" id="subtitle"]] +[[!template text="""But it certainly, the trend is, if that continues,""" start="00:03:27.360" video="qanda-llm" id="subtitle"]] +[[!template text="""I think it probably will be like that.""" start="00:03:31.240" video="qanda-llm" id="subtitle"]] +[[!template text="""So I think we'll have to see.""" start="00:03:33.320" video="qanda-llm" id="subtitle"]] +[[!template text="""I don't think your opinion is unreasonable.""" start="00:03:35.480" video="qanda-llm" id="subtitle"]] +[[!template text="""I guess I'm kind of cautiously saying""" start="00:03:37.680" video="qanda-llm" id="subtitle"]] +[[!template text="""I think it's gonna be the opposite, but I guess we'll see.""" start="00:03:40.320" video="qanda-llm" id="subtitle"]] +[[!template text="""Like, let's reconvene in a year and see what happens.""" start="00:03:43.200" video="qanda-llm" id="subtitle"]] +[[!template text="""Uh, the 3rd question answer,""" start="00:03:47.760" video="qanda-llm" id="subtitle"]] +[[!template text="""do you have any thoughts about the environmental costs""" start="00:03:49.160" video="qanda-llm" id="subtitle"]] +[[!template text="""of using either the training""" start="00:03:55.320" video="qanda-llm" id="subtitle"]] +[[!template text="""of the models are we can download or use locally""" start="00:03:57.080" video="qanda-llm" id="subtitle"]] +[[!template text="""or the larger commercial models used from the cloud.""" start="00:03:59.800" video="qanda-llm" id="subtitle"]] +[[!template text="""Um, I think. The, you know, I'm on social media,""" start="00:04:02.360" video="qanda-llm" id="subtitle"]] +[[!template text="""probably a little bit more than I should be.""" start="00:04:09.840" video="qanda-llm" id="subtitle"]] +[[!template text="""And I do see a lot of discussion there""" start="00:04:13.040" video="qanda-llm" id="subtitle"]] +[[!template text="""and a lot of concern about the environmental costs of using LLMs.""" start="00:04:15.720" video="qanda-llm" id="subtitle"]] +[[!template text="""I've looked into this as I'm also concerned""" start="00:04:18.640" video="qanda-llm" id="subtitle"]] +[[!template text="""about keeping my environmental footprint personally down.""" start="00:04:22.800" video="qanda-llm" id="subtitle"]] +[[!template text="""And I do this in many ways,""" start="00:04:27.200" video="qanda-llm" id="subtitle"]] +[[!template text="""but I certainly don't want to kind of like blow that all the water""" start="00:04:29.200" video="qanda-llm" id="subtitle"]] +[[!template text="""because I'm using LLMs so much.""" start="00:04:31.320" video="qanda-llm" id="subtitle"]] +[[!template text="""I think that the concerns are mostly overblown.""" start="00:04:35.040" video="qanda-llm" id="subtitle"]] +[[!template text="""There's a concern that, well, it uses a lot of energy.""" start="00:04:38.360" video="qanda-llm" id="subtitle"]] +[[!template text="""In aggregate, the total amount of energy""" start="00:04:41.840" video="qanda-llm" id="subtitle"]] +[[!template text="""used by the data centers in the US is a few percent.""" start="00:04:46.600" video="qanda-llm" id="subtitle"]] +[[!template text="""And this is a fraction. I think this is like LM's account""" start="00:04:50.560" video="qanda-llm" id="subtitle"]] +[[!template text="""for something like 20% now""" start="00:04:53.840" video="qanda-llm" id="subtitle"]] +[[!template text="""of all data center usage, which is a lot.""" start="00:04:56.720" video="qanda-llm" id="subtitle"]] +[[!template text="""But Those data centers are doing lots of things.""" start="00:05:02.480" video="qanda-llm" id="subtitle"]] +[[!template text="""They all need to be water cooled.""" start="00:05:03.960" video="qanda-llm" id="subtitle"]] +[[!template text="""Um, if you like per LLM prompt,""" start="00:05:05.240" video="qanda-llm" id="subtitle"]] +[[!template text="""the costs are relatively small""" start="00:05:08.680" video="qanda-llm" id="subtitle"]] +[[!template text="""and by relatively small, I mean,""" start="00:05:11.400" video="qanda-llm" id="subtitle"]] +[[!template text="""you know, people have said online,""" start="00:05:13.240" video="qanda-llm" id="subtitle"]] +[[!template text="""well, it's like a few bottles of water per prompt.""" start="00:05:15.000" video="qanda-llm" id="subtitle"]] +[[!template text="""That, that is not true. It is much, much less than that.""" start="00:05:17.880" video="qanda-llm" id="subtitle"]] +[[!template text="""It's a fraction of that.""" start="00:05:20.120" video="qanda-llm" id="subtitle"]] +[[!template text="""So, uh, I don't think the answer is nothing,""" start="00:05:21.360" video="qanda-llm" id="subtitle"]] +[[!template text="""but I would say it's, I would say you probably,""" start="00:05:25.120" video="qanda-llm" id="subtitle"]] +[[!template text="""if you want the most bang for your environmental buck,""" start="00:05:28.760" video="qanda-llm" id="subtitle"]] +[[!template text="""probably the best thing for you to do""" start="00:05:30.800" video="qanda-llm" id="subtitle"]] +[[!template text="""is take less flights and things like that.""" start="00:05:32.880" video="qanda-llm" id="subtitle"]] +[[!template text="""Like, yes, you can cut down on this,""" start="00:05:35.800" video="qanda-llm" id="subtitle"]] +[[!template text="""but I think it's pretty marginal at the moment.""" start="00:05:37.320" video="qanda-llm" id="subtitle"]] +[[!template text="""We do probably need to think about the total costs""" start="00:05:40.560" video="qanda-llm" id="subtitle"]] +[[!template text="""like of humanity using all of this.""" start="00:05:43.080" video="qanda-llm" id="subtitle"]] +[[!template text="""Like a lot of stuff you'll see""" start="00:05:44.600" video="qanda-llm" id="subtitle"]] +[[!template text="""corporations are using a lot of these things.""" start="00:05:46.520" video="qanda-llm" id="subtitle"]] +[[!template text="""And so like, just like if you look""" start="00:05:48.760" video="qanda-llm" id="subtitle"]] +[[!template text="""at water usage or energy uses in total,""" start="00:05:52.080" video="qanda-llm" id="subtitle"]] +[[!template text="""it's like really corporations that are using this.""" start="00:05:54.360" video="qanda-llm" id="subtitle"]] +[[!template text="""So there might, there's a lot of leverage there""" start="00:05:56.640" video="qanda-llm" id="subtitle"]] +[[!template text="""to make things more efficient as opposed to personal use.""" start="00:05:58.520" video="qanda-llm" id="subtitle"]] +[[!template text="""So I think it's wise to be cautious,""" start="00:06:01.400" video="qanda-llm" id="subtitle"]] +[[!template text="""but I think it's okay, I think, at least for personal use.""" start="00:06:06.120" video="qanda-llm" id="subtitle"]] +[[!template text="""The next question is another,""" start="00:06:09.080" video="qanda-llm" id="subtitle"]] +[[!template text="""yeah, this is also disagreeing with me about VS Code,""" start="00:06:13.160" video="qanda-llm" id="subtitle"]] +[[!template text="""but it says, I must say I liked your conclusion,""" start="00:06:20.960" video="qanda-llm" id="subtitle"]] +[[!template text="""but I differ insofar as you said that VS Code differs from Emacs""" start="00:06:23.840" video="qanda-llm" id="subtitle"]] +[[!template text="""because the former is not as easy to adapt as the latter.""" start="00:06:26.720" video="qanda-llm" id="subtitle"]] +[[!template text="""But why should Microsoft not adapt VS Code""" start="00:06:30.480" video="qanda-llm" id="subtitle"]] +[[!template text="""as we adapt Emacs for the new era of coding?""" start="00:06:33.560" video="qanda-llm" id="subtitle"]] +[[!template text="""And why would VS Code be harder hit?""" start="00:06:35.760" video="qanda-llm" id="subtitle"]] +[[!template text="""Could you please elaborate on this point? Yeah, thanks.""" start="00:06:38.160" video="qanda-llm" id="subtitle"]] +[[!template text="""This is a good question.""" start="00:06:43.600" video="qanda-llm" id="subtitle"]] +[[!template text="""I think maybe I wasn't as sharp on my point as I could be.""" start="00:06:46.280" video="qanda-llm" id="subtitle"]] +[[!template text="""Because I think the core""" start="00:06:50.400" video="qanda-llm" id="subtitle"]] +[[!template text="""of what I'm saying is like, there is a going to be a trend.""" start="00:06:51.240" video="qanda-llm" id="subtitle"]] +[[!template text="""I believe there will be a trend away from editing.""" start="00:06:56.480" video="qanda-llm" id="subtitle"]] +[[!template text="""And if we are going to be editing less,""" start="00:06:58.680" video="qanda-llm" id="subtitle"]] +[[!template text="""I think VS Code, like people will be in editors less.""" start="00:07:01.040" video="qanda-llm" id="subtitle"]] +[[!template text="""And that means people will be in VS Code less,""" start="00:07:04.560" video="qanda-llm" id="subtitle"]] +[[!template text="""people will probably be in Emacs less.""" start="00:07:06.920" video="qanda-llm" id="subtitle"]] +[[!template text="""And yes, I think you can, VS Code""" start="00:07:09.760" video="qanda-llm" id="subtitle"]] +[[!template text="""is to some degree extensible.""" start="00:07:13.720" video="qanda-llm" id="subtitle"]] +[[!template text="""but I think there's less of a community, or that is,""" start="00:07:15.400" video="qanda-llm" id="subtitle"]] +[[!template text="""I think the people using Emacs""" start="00:07:21.560" video="qanda-llm" id="subtitle"]] +[[!template text="""have used Emacs for a long time.""" start="00:07:23.400" video="qanda-llm" id="subtitle"]] +[[!template text="""They're going to continue to use Emacs.""" start="00:07:25.320" video="qanda-llm" id="subtitle"]] +[[!template text="""I speak for myself, but I know""" start="00:07:27.120" video="qanda-llm" id="subtitle"]] +[[!template text="""a lot of people here are kind of like this,""" start="00:07:28.280" video="qanda-llm" id="subtitle"]] +[[!template text="""and they're going to just, like,""" start="00:07:30.120" video="qanda-llm" id="subtitle"]] +[[!template text="""we have a lot of momentum to keep doing things in Emacs,""" start="00:07:33.280" video="qanda-llm" id="subtitle"]] +[[!template text="""and especially because we have a lot of things""" start="00:07:37.760" video="qanda-llm" id="subtitle"]] +[[!template text="""that we already do in Emacs.""" start="00:07:41.080" video="qanda-llm" id="subtitle"]] +[[!template text="""We do to-do lists and, you know, with org mode""" start="00:07:42.800" video="qanda-llm" id="subtitle"]] +[[!template text="""and some people read email""" start="00:07:45.080" video="qanda-llm" id="subtitle"]] +[[!template text="""and some people are using""" start="00:07:47.480" video="qanda-llm" id="subtitle"]] +[[!template text="""shells in Emacs and all these things,""" start="00:07:49.040" video="qanda-llm" id="subtitle"]] +[[!template text="""I think will make Emacs""" start="00:07:50.960" video="qanda-llm" id="subtitle"]] +[[!template text="""kind of a better environment""" start="00:07:53.960" video="qanda-llm" id="subtitle"]] +[[!template text="""if you want to do various editing like things in Emacs.""" start="00:07:55.560" video="qanda-llm" id="subtitle"]] +[[!template text="""In, you know, in an editing environment,""" start="00:07:59.600" video="qanda-llm" id="subtitle"]] +[[!template text="""because I think just emails can edit""" start="00:08:05.360" video="qanda-llm" id="subtitle"]] +[[!template text="""more types of things I think will naturally""" start="00:08:07.120" video="qanda-llm" id="subtitle"]] +[[!template text="""be a bit more useful than VS code,""" start="00:08:09.240" video="qanda-llm" id="subtitle"]] +[[!template text="""which people are really just using to edit code""" start="00:08:10.960" video="qanda-llm" id="subtitle"]] +[[!template text="""and if people find it less useful to edit code.""" start="00:08:14.080" video="qanda-llm" id="subtitle"]] +[[!template text="""I think it's VS code will be harder hit than emails""" start="00:08:16.800" video="qanda-llm" id="subtitle"]] +[[!template text="""because that's its whole like that's in the name""" start="00:08:20.920" video="qanda-llm" id="subtitle"]] +[[!template text="""like the whole reason for it""" start="00:08:24.240" video="qanda-llm" id="subtitle"]] +[[!template text="""to be doing things as to edit code.""" start="00:08:25.560" video="qanda-llm" id="subtitle"]] +[[!template text="""So I think that it's it's vulnerable""" start="00:08:27.360" video="qanda-llm" id="subtitle"]] +[[!template text="""in a way that Emacs isn't""" start="00:08:30.840" video="qanda-llm" id="subtitle"]] +[[!template text="""just because emacs is so very...""" start="00:08:31.960" video="qanda-llm" id="subtitle"]] +[[!template text="""you know, it's, it could do so many things""" start="00:08:34.520" video="qanda-llm" id="subtitle"]] +[[!template text="""and and people use it for so many different kinds of things""" start="00:08:40.120" video="qanda-llm" id="subtitle"]] +[[!template text="""that it's I think it's going to be""" start="00:08:42.720" video="qanda-llm" id="subtitle"]] +[[!template text="""a little bit more resilient.""" start="00:08:46.080" video="qanda-llm" id="subtitle"]] +[[!template text="""But as I said with the present.""" start="00:08:47.000" video="qanda-llm" id="subtitle"]] +[[!template text="""For those of us that are using Emacs,""" start="00:08:48.880" video="qanda-llm" id="subtitle"]] +[[!template text="""it's everywhere for us.""" start="00:08:52.640" video="qanda-llm" id="subtitle"]] +[[!template text="""Not necessarily everyone is an I live in Emacs person,""" start="00:08:55.160" video="qanda-llm" id="subtitle"]] +[[!template text="""but whatever you're using Emacs for,""" start="00:08:58.360" video="qanda-llm" id="subtitle"]] +[[!template text="""it is the thing you reach for to do that thing.""" start="00:09:00.280" video="qanda-llm" id="subtitle"]] +[[!template text="""Is that touching on the point?""" start="00:09:03.000" video="qanda-llm" id="subtitle"]] +[[!template text="""Yeah, that's a great way to say it.""" start="00:09:06.640" video="qanda-llm" id="subtitle"]] +[[!template text="""Thank you. Thank you, Colin. Yeah.""" start="00:09:09.080" video="qanda-llm" id="subtitle"]] +[[!template text="""Thank you. Thank you for that question.""" start="00:09:12.440" video="qanda-llm" id="subtitle"]] +[[!template text="""Do you think we're falling behind in productivity as Emacs users""" start="00:09:14.040" video="qanda-llm" id="subtitle"]] +[[!template text="""compared to all these VS code forks""" start="00:09:18.760" video="qanda-llm" id="subtitle"]] +[[!template text="""that have a thousand button and text boxes everywhere,""" start="00:09:19.960" video="qanda-llm" id="subtitle"]] +[[!template text="""which are basically much richer UIs,""" start="00:09:21.800" video="qanda-llm" id="subtitle"]] +[[!template text="""which are basically web pages?""" start="00:09:24.320" video="qanda-llm" id="subtitle"]] +[[!template text="""I do think Emacs is falling behind in some ways.""" start="00:09:25.720" video="qanda-llm" id="subtitle"]] +[[!template text="""I mean, it's definitely showing its age a little bit,""" start="00:09:28.800" video="qanda-llm" id="subtitle"]] +[[!template text="""especially you mentioned richer UIs""" start="00:09:32.520" video="qanda-llm" id="subtitle"]] +[[!template text="""that are basically web pages.""" start="00:09:35.080" video="qanda-llm" id="subtitle"]] +[[!template text="""I mean, this I think is one of the big problems Emacs has""" start="00:09:36.520" video="qanda-llm" id="subtitle"]] +[[!template text="""is that it uses a very, you know, a much more ancient way""" start="00:09:41.160" video="qanda-llm" id="subtitle"]] +[[!template text="""of kind of doing UIs that is not particularly flexible""" start="00:09:46.480" video="qanda-llm" id="subtitle"]] +[[!template text="""and not particularly comfortable for any modern UI coder.""" start="00:09:49.800" video="qanda-llm" id="subtitle"]] +[[!template text="""And I think if you look at the Emacs stuff out there,""" start="00:09:55.960" video="qanda-llm" id="subtitle"]] +[[!template text="""like, yes, you can do a few things with UIs.""" start="00:09:58.640" video="qanda-llm" id="subtitle"]] +[[!template text="""You can have some amount of UI richness,""" start="00:10:01.960" video="qanda-llm" id="subtitle"]] +[[!template text="""but it's pretty limited.""" start="00:10:04.760" video="qanda-llm" id="subtitle"]] +[[!template text="""And I kind of, if there's one thing""" start="00:10:06.280" video="qanda-llm" id="subtitle"]] +[[!template text="""I could wish for in Emacs,""" start="00:10:07.840" video="qanda-llm" id="subtitle"]] +[[!template text="""it's sort of like, I kind of wish Emacs could be on a,""" start="00:10:09.080" video="qanda-llm" id="subtitle"]] +[[!template text="""could be built on top of basically like Atom or something like that,""" start="00:10:12.520" video="qanda-llm" id="subtitle"]] +[[!template text="""where it's like a web framework""" start="00:10:18.200" video="qanda-llm" id="subtitle"]] +[[!template text="""that allows us to write actual rich pages,""" start="00:10:20.400" video="qanda-llm" id="subtitle"]] +[[!template text="""rich UIs in a modern style using things like CSS""" start="00:10:24.640" video="qanda-llm" id="subtitle"]] +[[!template text="""instead of the kinds of things Emacs lets you do.""" start="00:10:29.640" video="qanda-llm" id="subtitle"]] +[[!template text="""But that said, that is an advantage""" start="00:10:33.600" video="qanda-llm" id="subtitle"]] +[[!template text="""of VS Code and other editors like that.""" start="00:10:37.200" video="qanda-llm" id="subtitle"]] +[[!template text="""I think that Emacs does a good job""" start="00:10:38.960" video="qanda-llm" id="subtitle"]] +[[!template text="""of eventually catching up""" start="00:10:45.080" video="qanda-llm" id="subtitle"]] +[[!template text="""to all sorts of things people are doing in other editors.""" start="00:10:46.720" video="qanda-llm" id="subtitle"]] +[[!template text="""It's often that other editors get there first,""" start="00:10:49.760" video="qanda-llm" id="subtitle"]] +[[!template text="""but there's a lot of momentum""" start="00:10:52.600" video="qanda-llm" id="subtitle"]] +[[!template text="""to kind of keep Emacs fresh, keep it modern.""" start="00:10:55.480" video="qanda-llm" id="subtitle"]] +[[!template text="""And it's pretty easy to- I love that.""" start="00:10:57.840" video="qanda-llm" id="subtitle"]] +[[!template text="""I forgot about the lag. We do have a little bit of lag,""" start="00:11:00.120" video="qanda-llm" id="subtitle"]] +[[!template text="""but I just, I find that very captivating.""" start="00:11:05.680" video="qanda-llm" id="subtitle"]] +[[!template text="""We have with technologies""" start="00:11:08.000" video="qanda-llm" id="subtitle"]] +[[!template text="""like Apache Cassandra in the database world,""" start="00:11:10.360" video="qanda-llm" id="subtitle"]] +[[!template text="""we have this idea of eventual concurrency.""" start="00:11:12.400" video="qanda-llm" id="subtitle"]] +[[!template text="""And you make me think with Emacs,""" start="00:11:14.880" video="qanda-llm" id="subtitle"]] +[[!template text="""we have this idea of eventual feature parity, right?""" start="00:11:17.560" video="qanda-llm" id="subtitle"]] +[[!template text="""If a feature stays desirable long enough,""" start="00:11:21.280" video="qanda-llm" id="subtitle"]] +[[!template text="""Emacs will eventually grow it.""" start="00:11:23.920" video="qanda-llm" id="subtitle"]] +[[!template text="""I think that's a very contagious idea. Yeah, yeah, thanks.""" start="00:11:25.880" video="qanda-llm" id="subtitle"]] +[[!template text="""I hope that idea makes sense. And I hope it's correct,""" start="00:11:32.160" video="qanda-llm" id="subtitle"]] +[[!template text="""because I think that I do want Emacs to continue to succeed.""" start="00:11:35.840" video="qanda-llm" id="subtitle"]] +[[!template text="""And I personally, using Emacs,""" start="00:11:39.920" video="qanda-llm" id="subtitle"]] +[[!template text="""do not feel myself falling behind in productivity.""" start="00:11:43.440" video="qanda-llm" id="subtitle"]] +[[!template text="""That said, there's a lot of ways that Emacs can improve""" start="00:11:46.480" video="qanda-llm" id="subtitle"]] +[[!template text="""and should improve on this front.""" start="00:11:51.760" video="qanda-llm" id="subtitle"]] +[[!template text="""And a lot of these ways are pretty fundamental.""" start="00:11:53.520" video="qanda-llm" id="subtitle"]] +[[!template text="""So I kind of hope people pay a lot of attention""" start="00:11:56.600" video="qanda-llm" id="subtitle"]] +[[!template text="""to some of these more fundamental lower-level Emacs things""" start="00:11:59.720" video="qanda-llm" id="subtitle"]] +[[!template text="""that really allows the packages""" start="00:12:02.440" video="qanda-llm" id="subtitle"]] +[[!template text="""to do more richer and better things.""" start="00:12:04.880" video="qanda-llm" id="subtitle"]] +[[!template text="""Sorry, you have a ton of questions.""" start="00:12:07.600" video="qanda-llm" id="subtitle"]] +[[!template text="""I shouldn't be doing so much active listening.""" start="00:12:10.360" video="qanda-llm" id="subtitle"]] +[[!template text="""No, no, I appreciate your input.""" start="00:12:12.280" video="qanda-llm" id="subtitle"]] +[[!template text="""OK, next is I've been using Claude Code extensively.""" start="00:12:17.480" video="qanda-llm" id="subtitle"]] +[[!template text="""I recently switched to Agent Shell with Claude Code.""" start="00:12:23.080" video="qanda-llm" id="subtitle"]] +[[!template text="""Have you tried it? And what are your thoughts?""" start="00:12:25.520" video="qanda-llm" id="subtitle"]] +[[!template text="""I actually have tried Agent Shell.""" start="00:12:28.040" video="qanda-llm" id="subtitle"]] +[[!template text="""And currently, I recorded this video like three months ago.""" start="00:12:30.280" video="qanda-llm" id="subtitle"]] +[[!template text="""So Agent Shell did not exist then.""" start="00:12:34.720" video="qanda-llm" id="subtitle"]] +[[!template text="""If Agent Shell did exist,""" start="00:12:38.120" video="qanda-llm" id="subtitle"]] +[[!template text="""I probably would have demoed it as well.""" start="00:12:39.720" video="qanda-llm" id="subtitle"]] +[[!template text="""Agent Hell is great in the sense of it's""" start="00:12:41.240" video="qanda-llm" id="subtitle"]] +[[!template text="""It does use comment, which is the way that I think all Emacs users""" start="00:12:45.360" video="qanda-llm" id="subtitle"]] +[[!template text="""would prefer to interact with something like Claude Code,""" start="00:12:53.720" video="qanda-llm" id="subtitle"]] +[[!template text="""or any of those types of tools, which is like, I don't.""" start="00:12:57.040" video="qanda-llm" id="subtitle"]] +[[!template text="""Um, the other,""" start="00:13:00.200" video="qanda-llm" id="subtitle"]] +[[!template text="""but it's a trade-off it uses like on the back""" start="00:13:02.720" video="qanda-llm" id="subtitle"]] +[[!template text="""and it's, it has a common buffer.""" start="00:13:05.160" video="qanda-llm" id="subtitle"]] +[[!template text="""And then on the back end, it's using a protocol""" start="00:13:06.960" video="qanda-llm" id="subtitle"]] +[[!template text="""to talk to agent, uh, to Claude Code and other things.""" start="00:13:08.760" video="qanda-llm" id="subtitle"]] +[[!template text="""The problem is this has a lot of problems.""" start="00:13:11.760" video="qanda-llm" id="subtitle"]] +[[!template text="""For example, like you don't have""" start="00:13:15.400" video="qanda-llm" id="subtitle"]] +[[!template text="""completion of slash commands.""" start="00:13:16.800" video="qanda-llm" id="subtitle"]] +[[!template text="""You don't have, um, if you ask to see the, in Claude Code,""" start="00:13:18.320" video="qanda-llm" id="subtitle"]] +[[!template text="""you can get a visual representation of. the context window.""" start="00:13:22.120" video="qanda-llm" id="subtitle"]] +[[!template text="""But you can't do this. I mean, last time I tried,""" start="00:13:24.320" video="qanda-llm" id="subtitle"]] +[[!template text="""I couldn't do this in agent shell.""" start="00:13:30.240" video="qanda-llm" id="subtitle"]] +[[!template text="""It's progressing rapidly.""" start="00:13:31.720" video="qanda-llm" id="subtitle"]] +[[!template text="""But it's not as rich in functionality""" start="00:13:33.400" video="qanda-llm" id="subtitle"]] +[[!template text="""as using quad code directly.""" start="00:13:37.480" video="qanda-llm" id="subtitle"]] +[[!template text="""On the other hand, because it's letting Emacs be Emacs""" start="00:13:40.120" video="qanda-llm" id="subtitle"]] +[[!template text="""and using comment, it's a much better experience""" start="00:13:44.840" video="qanda-llm" id="subtitle"]] +[[!template text="""to actually give instructions.""" start="00:13:49.240" video="qanda-llm" id="subtitle"]] +[[!template text="""I think the maximum power, though, is, to me,""" start="00:13:50.920" video="qanda-llm" id="subtitle"]] +[[!template text="""the best way is still like, you know,""" start="00:13:56.520" video="qanda-llm" id="subtitle"]] +[[!template text="""do your editing in org mode,""" start="00:13:58.480" video="qanda-llm" id="subtitle"]] +[[!template text="""and then just tell, you could have,""" start="00:13:59.400" video="qanda-llm" id="subtitle"]] +[[!template text="""you know, the richer experience of using""" start="00:14:02.360" video="qanda-llm" id="subtitle"]] +[[!template text="""of using Claude Code in, in it's more like shell like form""" start="00:14:06.960" video="qanda-llm" id="subtitle"]] +[[!template text="""where everything is, it's much, you know,""" start="00:14:13.640" video="qanda-llm" id="subtitle"]] +[[!template text="""designed to be used in the terminal,""" start="00:14:15.560" video="qanda-llm" id="subtitle"]] +[[!template text="""but you don't have to type in that much""" start="00:14:17.080" video="qanda-llm" id="subtitle"]] +[[!template text="""because you're really doing your typing""" start="00:14:18.760" video="qanda-llm" id="subtitle"]] +[[!template text="""in order to me, I think there's""" start="00:14:20.040" video="qanda-llm" id="subtitle"]] +[[!template text="""kind of the sweet spot that I like.""" start="00:14:21.440" video="qanda-llm" id="subtitle"]] +[[!template text="""Um, but HHL is a great step forward""" start="00:14:23.520" video="qanda-llm" id="subtitle"]] +[[!template text="""and I think it's, uh, it's quite good to use.""" start="00:14:26.640" video="qanda-llm" id="subtitle"]] +[[!template text="""And I, I personally use it a lot.""" start="00:14:29.880" video="qanda-llm" id="subtitle"]] +[[!template text="""Um, OK, so in terms of, next question,""" start="00:14:32.120" video="qanda-llm" id="subtitle"]] +[[!template text="""in terms of agent selection,""" start="00:14:40.480" video="qanda-llm" id="subtitle"]] +[[!template text="""what has been your experience with different agents?""" start="00:14:41.840" video="qanda-llm" id="subtitle"]] +[[!template text="""And have you had any success with hosting your own models""" start="00:14:44.640" video="qanda-llm" id="subtitle"]] +[[!template text="""and using open weights?""" start="00:14:48.080" video="qanda-llm" id="subtitle"]] +[[!template text="""I think there's, you know, many people""" start="00:14:49.440" video="qanda-llm" id="subtitle"]] +[[!template text="""have many different opinions on this.""" start="00:14:54.160" video="qanda-llm" id="subtitle"]] +[[!template text="""I think Claude Code is, most people I know""" start="00:14:56.520" video="qanda-llm" id="subtitle"]] +[[!template text="""would say Claude Code is probably,""" start="00:15:00.840" video="qanda-llm" id="subtitle"]] +[[!template text="""sorry, Cloud is probably the best for coding right now.""" start="00:15:03.480" video="qanda-llm" id="subtitle"]] +[[!template text="""Gemini can be very hit and miss even with 3.0,""" start="00:15:07.480" video="qanda-llm" id="subtitle"]] +[[!template text="""but Claude is quite good.""" start="00:15:09.920" video="qanda-llm" id="subtitle"]] +[[!template text="""4.5 Opus is actually relatively cheap""" start="00:15:12.520" video="qanda-llm" id="subtitle"]] +[[!template text="""compared to the previous version of 4.1 Opus.""" start="00:15:16.120" video="qanda-llm" id="subtitle"]] +[[!template text="""There's other models out there,""" start="00:15:21.120" video="qanda-llm" id="subtitle"]] +[[!template text="""but I think most people just stick with Claude""" start="00:15:24.240" video="qanda-llm" id="subtitle"]] +[[!template text="""because it's very reliable, it's very good,""" start="00:15:29.160" video="qanda-llm" id="subtitle"]] +[[!template text="""and nothing is obviously better than that.""" start="00:15:34.000" video="qanda-llm" id="subtitle"]] +[[!template text="""And as far as DeepSeek is pretty good as well,""" start="00:15:36.480" video="qanda-llm" id="subtitle"]] +[[!template text="""and then much cheaper.""" start="00:15:41.040" video="qanda-llm" id="subtitle"]] +[[!template text="""I've had some good luck using that locally,""" start="00:15:42.080" video="qanda-llm" id="subtitle"]] +[[!template text="""but actually the problem is for my day-to-day machine,""" start="00:15:46.840" video="qanda-llm" id="subtitle"]] +[[!template text="""like my personal machine,""" start="00:15:50.160" video="qanda-llm" id="subtitle"]] +[[!template text="""it's not powerful enough to run anything locally.""" start="00:15:53.080" video="qanda-llm" id="subtitle"]] +[[!template text="""And my work machine, it is powerful enough,""" start="00:15:55.680" video="qanda-llm" id="subtitle"]] +[[!template text="""but I can spend my company's money at will""" start="00:15:58.480" video="qanda-llm" id="subtitle"]] +[[!template text="""on more powerful models.""" start="00:16:02.080" video="qanda-llm" id="subtitle"]] +[[!template text="""So there's really not a lot of incentive""" start="00:16:03.760" video="qanda-llm" id="subtitle"]] +[[!template text="""for me to run locally.""" start="00:16:05.520" video="qanda-llm" id="subtitle"]] +[[!template text="""I think, as far as I know, I haven't heard""" start="00:16:06.440" video="qanda-llm" id="subtitle"]] +[[!template text="""of local models being incredible,""" start="00:16:12.200" video="qanda-llm" id="subtitle"]] +[[!template text="""but I think you can get reasonable quality with them.""" start="00:16:14.360" video="qanda-llm" id="subtitle"]] +[[!template text="""That is, especially if you're doing""" start="00:16:16.880" video="qanda-llm" id="subtitle"]] +[[!template text="""relatively simple things,""" start="00:16:19.160" video="qanda-llm" id="subtitle"]] +[[!template text="""I think it's pretty reasonable to be using those.""" start="00:16:20.280" video="qanda-llm" id="subtitle"]] +[[!template text="""Also, they tend to be slower""" start="00:16:25.680" video="qanda-llm" id="subtitle"]] +[[!template text="""than the models that are elsewhere""" start="00:16:29.960" video="qanda-llm" id="subtitle"]] +[[!template text="""just because they just have more horsepower,""" start="00:16:33.280" video="qanda-llm" id="subtitle"]] +[[!template text="""they can churn through those tokens a little quicker.""" start="00:16:36.320" video="qanda-llm" id="subtitle"]] +[[!template text="""So, I'll just break in here to say,""" start="00:16:38.680" video="qanda-llm" id="subtitle"]] +[[!template text="""we've got about 7 minutes left""" start="00:16:44.720" video="qanda-llm" id="subtitle"]] +[[!template text="""before we're cutting over this great discussion so far.""" start="00:16:46.240" video="qanda-llm" id="subtitle"]] +[[!template text="""I'm very happy to keep going.""" start="00:16:49.240" video="qanda-llm" id="subtitle"]] +[[!template text="""There's no time limit, but at a certain point,""" start="00:16:50.840" video="qanda-llm" id="subtitle"]] +[[!template text="""I may have to leave""" start="00:16:55.400" video="qanda-llm" id="subtitle"]] +[[!template text="""to jump in and prep with the next speaker,""" start="00:16:56.480" video="qanda-llm" id="subtitle"]] +[[!template text="""but you'll be able to keep going""" start="00:16:58.680" video="qanda-llm" id="subtitle"]] +[[!template text="""as long as you have the steam for it.""" start="00:17:00.360" video="qanda-llm" id="subtitle"]] +[[!template text="""Yeah, I think we have 3 questions. Yeah, thanks.""" start="00:17:02.600" video="qanda-llm" id="subtitle"]] +[[!template text="""I think we have 3 questions.""" start="00:17:06.160" video="qanda-llm" id="subtitle"]] +[[!template text="""Let's see if we can get through them""" start="00:17:08.240" video="qanda-llm" id="subtitle"]] +[[!template text="""all in that time period. OK, this one is interesting talk.""" start="00:17:09.720" video="qanda-llm" id="subtitle"]] +[[!template text="""I'll start by asking it for everything, but is it editing?""" start="00:17:17.360" video="qanda-llm" id="subtitle"]] +[[!template text="""I think there's more of a comment than a question.""" start="00:17:20.440" video="qanda-llm" id="subtitle"]] +[[!template text="""So yes, let us all ask, but is it editing?""" start="00:17:23.240" video="qanda-llm" id="subtitle"]] +[[!template text="""All right. I can move on to the comment area.""" start="00:17:29.720" video="qanda-llm" id="subtitle"]] +[[!template text="""I'm reading angst in your thinking about AI editing.""" start="00:17:33.440" video="qanda-llm" id="subtitle"]] +[[!template text="""I think that's true.""" start="00:17:40.320" video="qanda-llm" id="subtitle"]] +[[!template text="""It says, and the question continues with,""" start="00:17:41.840" video="qanda-llm" id="subtitle"]] +[[!template text="""what are you excited about?""" start="00:17:44.120" video="qanda-llm" id="subtitle"]] +[[!template text="""Wow, that's an interesting question.""" start="00:17:45.160" video="qanda-llm" id="subtitle"]] +[[!template text="""I mean, I think there are possibilities.""" start="00:17:48.720" video="qanda-llm" id="subtitle"]] +[[!template text="""Like, yes, people are going in sort of a relatively obvious direction""" start="00:17:53.800" video="qanda-llm" id="subtitle"]] +[[!template text="""with LLMs right now.""" start="00:17:58.720" video="qanda-llm" id="subtitle"]] +[[!template text="""And I think there's lots of opportunities,""" start="00:18:01.440" video="qanda-llm" id="subtitle"]] +[[!template text="""clever opportunities to do things""" start="00:18:04.600" video="qanda-llm" id="subtitle"]] +[[!template text="""we couldn't have thought of Things that are useful,""" start="00:18:07.840" video="qanda-llm" id="subtitle"]] +[[!template text="""but in ways that are not super obvious to us,""" start="00:18:11.080" video="qanda-llm" id="subtitle"]] +[[!template text="""and I think I'm still excited""" start="00:18:14.920" video="qanda-llm" id="subtitle"]] +[[!template text="""about the possibilities of using them in ways that are super helpful""" start="00:18:18.520" video="qanda-llm" id="subtitle"]] +[[!template text="""and different than. normal. I'll give you an example.""" start="00:18:23.840" video="qanda-llm" id="subtitle"]] +[[!template text="""This is something that I intend to, I think,""" start="00:18:29.320" video="qanda-llm" id="subtitle"]] +[[!template text="""post on Reddit in a few days,""" start="00:18:33.200" video="qanda-llm" id="subtitle"]] +[[!template text="""but I have a extension to eshell""" start="00:18:36.480" video="qanda-llm" id="subtitle"]] +[[!template text="""where you can prefix a command with at,""" start="00:18:39.400" video="qanda-llm" id="subtitle"]] +[[!template text="""and then just tell it what you want to do,""" start="00:18:43.440" video="qanda-llm" id="subtitle"]] +[[!template text="""and it will substitute the command""" start="00:18:45.200" video="qanda-llm" id="subtitle"]] +[[!template text="""that you are thinking of. Because often, I do not remember.""" start="00:18:46.920" video="qanda-llm" id="subtitle"]] +[[!template text="""I never remember, like, how do you find a file in a directory tree,""" start="00:18:51.920" video="qanda-llm" id="subtitle"]] +[[!template text="""you know, recursing? Who can remember how to do that?""" start="00:18:56.920" video="qanda-llm" id="subtitle"]] +[[!template text="""It's like a find, and there's like a dash print there somewhere.""" start="00:19:00.160" video="qanda-llm" id="subtitle"]] +[[!template text="""Yes. There are some smart people who remember this""" start="00:19:04.800" video="qanda-llm" id="subtitle"]] +[[!template text="""but I am not one of them.""" start="00:19:10.160" video="qanda-llm" id="subtitle"]] +[[!template text="""And so I think like something like this is like you just type out,""" start="00:19:11.200" video="qanda-llm" id="subtitle"]] +[[!template text="""find me this file, and it will substitute""" start="00:19:13.640" video="qanda-llm" id="subtitle"]] +[[!template text="""the correct command.""" start="00:19:17.280" video="qanda-llm" id="subtitle"]] +[[!template text="""I think this is, there's a lot of little,""" start="00:19:18.880" video="qanda-llm" id="subtitle"]] +[[!template text="""little tweaks you could do like, you know, if you want the AI,""" start="00:19:21.000" video="qanda-llm" id="subtitle"]] +[[!template text="""it could be there for you. And it will help you.""" start="00:19:24.320" video="qanda-llm" id="subtitle"]] +[[!template text="""And if you don't want it,""" start="00:19:26.680" video="qanda-llm" id="subtitle"]] +[[!template text="""it's not going to get in your way.""" start="00:19:27.560" video="qanda-llm" id="subtitle"]] +[[!template text="""And I think this is where eMath can really shine.""" start="00:19:28.920" video="qanda-llm" id="subtitle"]] +[[!template text="""It can really take advantage of LLMs,""" start="00:19:30.640" video="qanda-llm" id="subtitle"]] +[[!template text="""but still remain true to its kind of editing experience,""" start="00:19:33.080" video="qanda-llm" id="subtitle"]] +[[!template text="""because it's not forcing you to use LLMs all the time.""" start="00:19:35.800" video="qanda-llm" id="subtitle"]] +[[!template text="""So thank you for that great question.""" start="00:19:39.320" video="qanda-llm" id="subtitle"]] +[[!template text="""And then the final question. Yep.""" start="00:19:43.920" video="qanda-llm" id="subtitle"]] +[[!template text="""This final question is, why does it matter to have a richer UI?""" start="00:19:47.920" video="qanda-llm" id="subtitle"]] +[[!template text="""All this left is basically running and getting the results.""" start="00:19:50.840" video="qanda-llm" id="subtitle"]] +[[!template text="""I think maybe this is a response to me complaining""" start="00:19:53.440" video="qanda-llm" id="subtitle"]] +[[!template text="""about Emacs not having a richer UI before,""" start="00:19:56.120" video="qanda-llm" id="subtitle"]] +[[!template text="""but I think it does matter a lot for all sorts of things.""" start="00:19:58.480" video="qanda-llm" id="subtitle"]] +[[!template text="""It's hard to kind of explain succinctly""" start="00:20:03.160" video="qanda-llm" id="subtitle"]] +[[!template text="""because I'm talking about UI""" start="00:20:07.160" video="qanda-llm" id="subtitle"]] +[[!template text="""and I'd have to show you things.""" start="00:20:08.520" video="qanda-llm" id="subtitle"]] +[[!template text="""But it should be just something like oh I have an error""" start="00:20:09.760" video="qanda-llm" id="subtitle"]] +[[!template text="""and I'm using flymake and I'm,""" start="00:20:14.600" video="qanda-llm" id="subtitle"]] +[[!template text="""I'm using the you know I have options""" start="00:20:15.800" video="qanda-llm" id="subtitle"]] +[[!template text="""where it'll show me the error in line""" start="00:20:17.760" video="qanda-llm" id="subtitle"]] +[[!template text="""by like underlining things and having a little message,""" start="00:20:19.840" video="qanda-llm" id="subtitle"]] +[[!template text="""but like, you know what that message""" start="00:20:22.640" video="qanda-llm" id="subtitle"]] +[[!template text="""doesn't appear quite right, a lot of the times,""" start="00:20:24.080" video="qanda-llm" id="subtitle"]] +[[!template text="""or here's another one like. I program in Python a lot.""" start="00:20:26.400" video="qanda-llm" id="subtitle"]] +[[!template text="""And Python, it's super hard to program in""" start="00:20:30.160" video="qanda-llm" id="subtitle"]] +[[!template text="""unless you have these little vertical lines""" start="00:20:33.480" video="qanda-llm" id="subtitle"]] +[[!template text="""that shows you what the indents are. At least I find it.""" start="00:20:35.280" video="qanda-llm" id="subtitle"]] +[[!template text="""There are two packages that do that.""" start="00:20:37.600" video="qanda-llm" id="subtitle"]] +[[!template text="""None of them do it particularly well,""" start="00:20:40.480" video="qanda-llm" id="subtitle"]] +[[!template text="""just because Emacs at its base""" start="00:20:43.040" video="qanda-llm" id="subtitle"]] +[[!template text="""does not allow you to do this.""" start="00:20:44.600" video="qanda-llm" id="subtitle"]] +[[!template text="""And so you kind of have to hack it in.""" start="00:20:45.920" video="qanda-llm" id="subtitle"]] +[[!template text="""And there's lots of ways to mess it up.""" start="00:20:47.760" video="qanda-llm" id="subtitle"]] +[[!template text="""And when editing, you'll find yourself messing this thing up.""" start="00:20:49.480" video="qanda-llm" id="subtitle"]] +[[!template text="""regularly. So it doesn't look quite clean.""" start="00:20:52.800" video="qanda-llm" id="subtitle"]] +[[!template text="""And like, there's little artifacts,""" start="00:20:57.160" video="qanda-llm" id="subtitle"]] +[[!template text="""or, you know, there's little ways that it,""" start="00:20:59.080" video="qanda-llm" id="subtitle"]] +[[!template text="""it kind of gets things wrong,""" start="00:21:01.040" video="qanda-llm" id="subtitle"]] +[[!template text="""or you can, you can get things wrong with it.""" start="00:21:02.360" video="qanda-llm" id="subtitle"]] +[[!template text="""So I think that, like,""" start="00:21:06.280" video="qanda-llm" id="subtitle"]] +[[!template text="""there's a lot of issues with that sort of thing.""" start="00:21:10.040" video="qanda-llm" id="subtitle"]] +[[!template text="""And, and also, like, you know,""" start="00:21:11.880" video="qanda-llm" id="subtitle"]] +[[!template text="""what if you want to do something like play a video inline,""" start="00:21:15.760" video="qanda-llm" id="subtitle"]] +[[!template text="""like, I don't know, you might should be able to do that,""" start="00:21:17.720" video="qanda-llm" id="subtitle"]] +[[!template text="""you might should be able to do anything.""" start="00:21:19.560" video="qanda-llm" id="subtitle"]] +[[!template text="""But right now it just can't and I think""" start="00:21:20.840" video="qanda-llm" id="subtitle"]] +[[!template text="""a lot of the reason as well""" start="00:21:23.800" video="qanda-llm" id="subtitle"]] +[[!template text="""we you know we wanted to be compatible""" start="00:21:25.000" video="qanda-llm" id="subtitle"]] +[[!template text="""with you know TRS 80 machines or something like that""" start="00:21:26.520" video="qanda-llm" id="subtitle"]] +[[!template text="""and it's this is important this really is important,""" start="00:21:29.920" video="qanda-llm" id="subtitle"]] +[[!template text="""but I hope there's some way""" start="00:21:33.160" video="qanda-llm" id="subtitle"]] +[[!template text="""that we can kind of eventually figure out""" start="00:21:34.720" video="qanda-llm" id="subtitle"]] +[[!template text="""how to get the best of you know both compatibility and.""" start="00:21:36.080" video="qanda-llm" id="subtitle"]] +[[!template text="""more modern UIs. So, you know, we can have more modern UIs""" start="00:21:39.280" video="qanda-llm" id="subtitle"]] +[[!template text="""for people that have modern machines and other people""" start="00:21:44.880" video="qanda-llm" id="subtitle"]] +[[!template text="""either do without that functionality""" start="00:21:49.840" video="qanda-llm" id="subtitle"]] +[[!template text="""or sort of fall back to some reasonable default.""" start="00:21:51.960" video="qanda-llm" id="subtitle"]] +[[!template text="""So we have about 30 seconds or a minute.""" start="00:21:54.320" video="qanda-llm" id="subtitle"]] +[[!template text="""I know there's one more question.""" start="00:21:59.080" video="qanda-llm" id="subtitle"]] +[[!template text="""I'd love for you to get to it.""" start="00:22:00.680" video="qanda-llm" id="subtitle"]] +[[!template text="""I just want to make sure that""" start="00:22:01.560" video="qanda-llm" id="subtitle"]] +[[!template text="""while we're still live on stream,""" start="00:22:02.840" video="qanda-llm" id="subtitle"]] +[[!template text="""you get a chance to share""" start="00:22:04.240" video="qanda-llm" id="subtitle"]] +[[!template text="""any closing remarks you might have.""" start="00:22:05.520" video="qanda-llm" id="subtitle"]] +[[!template text="""Thank you for that. Um, yes.""" start="00:22:06.800" video="qanda-llm" id="subtitle"]] +[[!template text="""So first of all, I want to thank everyone involved for listening.""" start="00:22:10.880" video="qanda-llm" id="subtitle"]] +[[!template text="""And I want to thank the core when I think thanks for moderating this.""" start="00:22:14.520" video="qanda-llm" id="subtitle"]] +[[!template text="""And Sacha, thank you for putting that together.""" start="00:22:18.920" video="qanda-llm" id="subtitle"]] +[[!template text="""And I know there's more people""" start="00:22:21.280" video="qanda-llm" id="subtitle"]] +[[!template text="""that are working behind the scenes.""" start="00:22:21.920" video="qanda-llm" id="subtitle"]] +[[!template text="""So thank you all for putting this together.""" start="00:22:23.320" video="qanda-llm" id="subtitle"]] +[[!template text="""I'm so happy that we all are here. We care about Emacs.""" start="00:22:25.080" video="qanda-llm" id="subtitle"]] +[[!template text="""We're pushing Emacs forward.""" start="00:22:29.200" video="qanda-llm" id="subtitle"]] +[[!template text="""We are I think Emacs remains""" start="00:22:31.200" video="qanda-llm" id="subtitle"]] +[[!template text="""this really remarkable achievement.""" start="00:22:35.960" video="qanda-llm" id="subtitle"]] +[[!template text="""Like it's amazing that it exists. It continues to exist.""" start="00:22:37.280" video="qanda-llm" id="subtitle"]] +[[!template text="""It hasn't got, it's hard.""" start="00:22:41.800" video="qanda-llm" id="subtitle"]] +[[!template text="""It's like, really, there's a lot of work to go into it.""" start="00:22:43.000" video="qanda-llm" id="subtitle"]] +[[!template text="""So I think let's all just appreciate everyone who,""" start="00:22:45.160" video="qanda-llm" id="subtitle"]] +[[!template text="""who like contributes and makes all of this possible.""" start="00:22:47.560" video="qanda-llm" id="subtitle"]] +[[!template text="""Cause it's, if you ever read""" start="00:22:50.680" video="qanda-llm" id="subtitle"]] +[[!template text="""the Emacs Develop mailing list,""" start="00:22:52.160" video="qanda-llm" id="subtitle"]] +[[!template text="""it's a lot of work, a lot of deep thinking,""" start="00:22:53.280" video="qanda-llm" id="subtitle"]] +[[!template text="""a lot of careful thinking.""" start="00:22:55.480" video="qanda-llm" id="subtitle"]] +[[!template text="""And I think this is really important.""" start="00:22:56.680" video="qanda-llm" id="subtitle"]] +[[!template text="""So thank you, especially to the maintainers of Emacs""" start="00:22:58.600" video="qanda-llm" id="subtitle"]] +[[!template text="""and everyone who's contributing to the core experience,""" start="00:23:02.040" video="qanda-llm" id="subtitle"]] +[[!template text="""all the libraries, all the LLM stuff we mentioned before.""" start="00:23:04.200" video="qanda-llm" id="subtitle"]] +[[!template text="""You're all doing such a fantastic job.""" start="00:23:07.760" video="qanda-llm" id="subtitle"]] +[[!template text="""It's exciting to be here. Thank you for your talk, Andrew.""" start="00:23:09.840" video="qanda-llm" id="subtitle"]] +[[!template text="""It's been just fascinating.""" start="00:23:13.800" video="qanda-llm" id="subtitle"]] +[[!template text="""If you don't mind, I'd love to jump""" start="00:23:16.160" video="qanda-llm" id="subtitle"]] +[[!template text="""right over to the last question. OK, let's do that.""" start="00:23:19.760" video="qanda-llm" id="subtitle"]] +[[!template text="""It says, I have 45 plus years editing programming.""" start="00:23:23.880" video="qanda-llm" id="subtitle"]] +[[!template text="""I'm not sure I can think about things""" start="00:23:27.600" video="qanda-llm" id="subtitle"]] +[[!template text="""without thinking of buffers, editors, et cetera.""" start="00:23:29.240" video="qanda-llm" id="subtitle"]] +[[!template text="""Is this the handicap?""" start="00:23:31.040" video="qanda-llm" id="subtitle"]] +[[!template text="""Should we have people with no experience""" start="00:23:31.960" video="qanda-llm" id="subtitle"]] +[[!template text="""with code learning to prompt?""" start="00:23:34.240" video="qanda-llm" id="subtitle"]] +[[!template text="""Well, this is something I do have a strong opinion about.""" start="00:23:35.320" video="qanda-llm" id="subtitle"]] +[[!template text="""I feel like I do not want to see people that have no experience""" start="00:23:38.800" video="qanda-llm" id="subtitle"]] +[[!template text="""with code learning to prompt. I think it's very limited""" start="00:23:42.160" video="qanda-llm" id="subtitle"]] +[[!template text="""what you could do right now with that.""" start="00:23:44.120" video="qanda-llm" id="subtitle"]] +[[!template text="""Like you could do, if you could sort of one-shot it,""" start="00:23:46.040" video="qanda-llm" id="subtitle"]] +[[!template text="""that is like, I have something that's relatively easy,""" start="00:23:48.440" video="qanda-llm" id="subtitle"]] +[[!template text="""And it could do it, and I'm going to tell it to do it,""" start="00:23:52.000" video="qanda-llm" id="subtitle"]] +[[!template text="""and then I'm going to give feedback.""" start="00:23:54.880" video="qanda-llm" id="subtitle"]] +[[!template text="""OK, as long as this is for relatively short-lived things,""" start="00:23:56.040" video="qanda-llm" id="subtitle"]] +[[!template text="""I think that works well. But for people who really care""" start="00:24:00.040" video="qanda-llm" id="subtitle"]] +[[!template text="""about the longevity of their code,""" start="00:24:02.600" video="qanda-llm" id="subtitle"]] +[[!template text="""really care about software engineering,""" start="00:24:04.280" video="qanda-llm" id="subtitle"]] +[[!template text="""which is software engineering is very different than just writing code.""" start="00:24:06.600" video="qanda-llm" id="subtitle"]] +[[!template text="""Software engineering is about maintainability.""" start="00:24:09.880" video="qanda-llm" id="subtitle"]] +[[!template text="""Software engineering is making sure everything is scalable""" start="00:24:11.880" video="qanda-llm" id="subtitle"]] +[[!template text="""and all sorts of things that it's unlikely,""" start="00:24:15.120" video="qanda-llm" id="subtitle"]] +[[!template text="""I think, that an LM is going to get right.""" start="00:24:19.600" video="qanda-llm" id="subtitle"]] +[[!template text="""And I've seen a lot of bad cases""" start="00:24:21.760" video="qanda-llm" id="subtitle"]] +[[!template text="""where people who don't understand code""" start="00:24:25.280" video="qanda-llm" id="subtitle"]] +[[!template text="""are doing things and it's not working well""" start="00:24:27.200" video="qanda-llm" id="subtitle"]] +[[!template text="""because they don't understand""" start="00:24:31.160" video="qanda-llm" id="subtitle"]] +[[!template text="""some of the some of the complexities""" start="00:24:33.240" video="qanda-llm" id="subtitle"]] +[[!template text="""or some of the concerns that that you might have""" start="00:24:35.280" video="qanda-llm" id="subtitle"]] +[[!template text="""in maintaining a piece of code.""" start="00:24:36.960" video="qanda-llm" id="subtitle"]] +[[!template text="""So I think those people who have lots of experience""" start="00:24:43.280" video="qanda-llm" id="subtitle"]] +[[!template text="""are the best people to use this.""" start="00:24:45.760" video="qanda-llm" id="subtitle"]] +[[!template text="""And I think that's what we're seeing""" start="00:24:46.960" video="qanda-llm" id="subtitle"]] +[[!template text="""in the industry as well,""" start="00:24:48.120" video="qanda-llm" id="subtitle"]] +[[!template text="""where more senior people are doing quite well""" start="00:24:49.080" video="qanda-llm" id="subtitle"]] +[[!template text="""because they're able to use LLMs""" start="00:24:51.640" video="qanda-llm" id="subtitle"]] +[[!template text="""more effectively than junior people.""" start="00:24:54.600" video="qanda-llm" id="subtitle"]] +[[!template text="""That may all even out because LLMs get even better,""" start="00:24:56.560" video="qanda-llm" id="subtitle"]] +[[!template text="""but for now hasn't happened.""" start="00:25:01.000" video="qanda-llm" id="subtitle"]] +[[!template text="""So I think, you know, I also have a ton of experience,""" start="00:25:03.080" video="qanda-llm" id="subtitle"]] +[[!template text="""not 45 years, but a lot. And, and I think that it's those,""" start="00:25:06.320" video="qanda-llm" id="subtitle"]] +[[!template text="""those years of experience will only help you.""" start="00:25:13.080" video="qanda-llm" id="subtitle"]] +[[!template text="""And I think it's, it's, it's a great,""" start="00:25:14.840" video="qanda-llm" id="subtitle"]] +[[!template text="""it's great to kind of dip your toes in the water""" start="00:25:16.920" video="qanda-llm" id="subtitle"]] +[[!template text="""and see what you can do.""" start="00:25:19.640" video="qanda-llm" id="subtitle"]] + +</div>Questions or comments? Please e-mail [ahyatt@gmail.com](mailto:ahyatt@gmail.com?subject=Comment%20for%20EmacsConf%202023%20llm%3A%20Emacs%2C%20editors%2C%20and%20LLM%20driven%20workflows) <!-- End of emacsconf-publish-after-page --> diff --git a/2025/info/llm-before.md b/2025/info/llm-before.md index 45c12a80..23cd880a 100644 --- a/2025/info/llm-before.md +++ b/2025/info/llm-before.md @@ -1,19 +1,19 @@ <!-- Automatically generated by emacsconf-publish-before-page --> - -The following image shows where the talk is in the schedule for Sat 2025-12-06. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="llm"> -<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2025/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:10 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2025/talks/org-babel" title="Making Org-Babel reactive" data-slug="org-babel"> <title> 9:10- 9:20 Making Org-Babel reactive</title> <rect x="13" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(24,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> org-babel</text></g></a> <a href="/2025/talks/reference" title="Emacs as a fully-fledged reference manager" data-slug="reference"> <title> 9:30- 9:55 Emacs as a fully-fledged reference manager</title> <rect x="41" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(73,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> reference</text></g></a> <a href="/2025/talks/gmail" title="org-gmail: A deep integration of Gmail into your Org Mode" data-slug="gmail"> <title> 10:15-10:40 org-gmail: A deep integration of Gmail into your Org Mode</title> <rect x="102" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(134,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gmail</text></g></a> <a href="/2025/talks/gnus" title="Reading and writing emails in GNU Emacs with Gnus" data-slug="gnus"> <title> 10:50-11:15 Reading and writing emails in GNU Emacs with Gnus</title> <rect x="150" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(182,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gnus</text></g></a> <a href="/2025/talks/latex" title="LaTeX export in org-mode: the overhaul" data-slug="latex"> <title> 11:25-11:45 LaTeX export in org-mode: the overhaul</title> <rect x="199" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(224,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> latex</text></g></a> <a href="/2025/talks/calc" title="Basic Calc functionality for engineering or electronics" data-slug="calc"> <title> 1:00- 1:25 Basic Calc functionality for engineering or electronics</title> <rect x="329" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(361,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> calc</text></g></a> <a href="/2025/talks/blee-lcnt" title="Blee-LCNT: An Emacs-centered content production and self-publication framework" data-slug="blee-lcnt"> <title> 1:35- 2:15 Blee-LCNT: An Emacs-centered content production and self-publication framework</title> <rect x="377" y="15" opacity="0.5" width="54" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(429,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> blee-lcnt</text></g></a> <a href="/2025/talks/greader" title="GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence" data-slug="greader"> <title> 2:35- 2:40 GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence</title> <rect x="459" y="15" opacity="0.5" width="6" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(463,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> greader</text></g></a> <a href="/2025/talks/open-mic" title="Open session" data-slug="open-mic"> <title> 2:50- 3:40 Open session</title> <rect x="480" y="15" opacity="0.5" width="68" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(546,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> open-mic</text></g></a> <a href="/2025/talks/sat-close" title="Saturday closing remarks / open session" data-slug="sat-close"> <title> 4:00- 4:10 Saturday closing remarks / open session</title> <rect x="576" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(587,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2025/talks/schemacs" title="One year progress update Schemacs (formerly Gypsum)" data-slug="schemacs"> <title> 9:30- 9:55 One year progress update Schemacs (formerly Gypsum)</title> <rect x="41" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(73,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> schemacs</text></g></a> <a href="/2025/talks/juicemacs" title="Juicemacs: exploring speculative JIT compilation for ELisp in Java" data-slug="juicemacs"> <title> 10:15-10:35 Juicemacs: exploring speculative JIT compilation for ELisp in Java</title> <rect x="102" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(127,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> juicemacs</text></g></a> <a href="/2025/talks/swanky" title="Swanky Python: Interactive development for Python" data-slug="swanky"> <title> 10:45-11:10 Swanky Python: Interactive development for Python</title> <rect x="144" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(176,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> swanky</text></g></a> <a href="/2025/talks/python" title="Interactive Python programming in Emacs" data-slug="python"> <title> 11:20-11:40 Interactive Python programming in Emacs</title> <rect x="192" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(217,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <a href="/2025/talks/llm" title="Emacs, editors, and LLM driven workflows" data-slug="llm"> <title> 1:00- 1:25 Emacs, editors, and LLM driven workflows</title> <rect stroke-width="3" x="329" y="75" opacity="0.8" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(361,133)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> llm</text></g></a> <a href="/2025/talks/private-ai" title="Emacs and private AI: a great match" data-slug="private-ai"> <title> 1:45- 2:05 Emacs and private AI: a great match</title> <rect x="391" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(416,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> private-ai</text></g></a> <a href="/2025/talks/commonlisp" title="Common Lisp images communicating like-a-human through shared Emacs slime and eev" data-slug="commonlisp"> <title> 2:25- 2:55 Common Lisp images communicating like-a-human through shared Emacs slime and eev</title> <rect x="446" y="75" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(485,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> commonlisp</text></g></a> <a href="/2025/talks/graphics" title="Modern Emacs/Elisp hardware/software accelerated graphics" data-slug="graphics"> <title> 3:05- 3:30 Modern Emacs/Elisp hardware/software accelerated graphics</title> <rect x="500" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(532,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> graphics</text></g></a> <g transform="translate(0,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 5 PM</text></g></svg> -</div> - [[!toc ]] -Format: 21-min talk ; Q&A: BigBlueButton conference room <https://media.emacsconf.org/2025/current/bbb-llm.html> Etherpad: <https://pad.emacsconf.org/2025-llm> +Format: 21-min talk ; Q&A: BigBlueButton conference room Etherpad: <https://pad.emacsconf.org/2025-llm> Etherpad: <https://pad.emacsconf.org/2025-llm> -Discuss on IRC: [#emacsconf-dev](https://chat.emacsconf.org/?join=emacsconf,emacsconf-dev) -Status: Q&A finished, IRC and pad will be archived on this page +Status: TO_REVIEW_QA + + + +# Talk +<div class="vid mainVideo"><video controls preload="none" id="mainVideo-llm"><source src="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 20:04 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-llm">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--main.opus">Download --main.opus (17MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--main.webm">Download --main.webm (45MB)</a></li><li><a href="https://youtu.be/U3kbEabBJ_s">View on Youtube</a></li></ul></div></div> +# Q&A -<div class="vid mainVideo"><video controls preload="none" id="mainVideo-llm"><source src="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 20:04 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-llm">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/current/bbb-llm.html">Open public Q&A</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--main.opus">Download --main.opus (17MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--main.webm">Download --main.webm (45MB)</a></li><li><a href="https://youtu.be/U3kbEabBJ_s">View on Youtube</a></li></ul></div></div> +<div class="vid qanda"><video controls preload="none" id="qanda-llm"><source src="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--answers.m4v" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--answers.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 27:34 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-llm">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--answers.json">Download --answers.json</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--answers.m4v">Download --answers.m4v (94MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--answers.tsv">Download --answers.tsv</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--answers.txt">Download --answers.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--answers.webm">Download --answers.webm (91MB)</a></li></ul></div></div> # Description <!-- End of emacsconf-publish-before-page -->
\ No newline at end of file diff --git a/2025/info/llm-nav.md b/2025/info/llm-nav.md index fcfbb800..ef42733a 100644 --- a/2025/info/llm-nav.md +++ b/2025/info/llm-nav.md @@ -1,7 +1,7 @@ <div class="talk-nav"> Back to the [[talks]] -Previous by time: <a href="/2025/talks/calc">Basic Calc functionality for engineering or electronics</a> -Next by time: <a href="/2025/talks/blee-lcnt">Blee-LCNT: An Emacs-centered content production and self-publication framework</a> -Track: <span class="sched-track Development">Development</span> - <strong><a href="https://emacsconf.org/2025/watch/dev">Watch</a></strong> +Previous by track: <a href="/2025/talks/python">Interactive Python programming in Emacs</a> +Next by track: <a href="/2025/talks/private-ai">Emacs and private AI: a great match</a> +Track: <span class="sched-track Development">Development</span> </div> diff --git a/2025/info/modern-before.md b/2025/info/modern-before.md index 86b09fda..f3830a2a 100644 --- a/2025/info/modern-before.md +++ b/2025/info/modern-before.md @@ -1,19 +1,13 @@ <!-- Automatically generated by emacsconf-publish-before-page --> - -The following image shows where the talk is in the schedule for Sun 2025-12-07. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="modern"> -<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2025/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:10 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2025/talks/modern" title="Some problems of modernizing Emacs" data-slug="modern"> <title> 9:10- 9:30 Some problems of modernizing Emacs</title> <rect stroke-width="3" x="13" y="15" opacity="0.8" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(38,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> modern</text></g></a> <a href="/2025/talks/reader" title="An introduction to the Emacs Reader" data-slug="reader"> <title> 9:40-10:15 An introduction to the Emacs Reader</title> <rect x="54" y="15" opacity="0.5" width="48" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(100,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> reader</text></g></a> <a href="/2025/talks/weights" title="Weightlifting tracking with Emacs on Android" data-slug="weights"> <title> 10:35-10:45 Weightlifting tracking with Emacs on Android</title> <rect x="130" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(141,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> weights</text></g></a> <a href="/2025/talks/completion" title="corfu+yasnippet: Easier than I thought" data-slug="completion"> <title> 11:05-11:25 corfu+yasnippet: Easier than I thought</title> <rect x="171" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(196,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> completion</text></g></a> <a href="/2025/talks/zettelkasten" title="Zettelkasten for regular Emacs hackers" data-slug="zettelkasten"> <title> 1:00- 1:25 Zettelkasten for regular Emacs hackers</title> <rect x="329" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(361,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> zettelkasten</text></g></a> <a href="/2025/talks/hyperboleqa" title="Questions and answers to help you fly with Hyperbole" data-slug="hyperboleqa"> <title> 1:45- 2:15 Questions and answers to help you fly with Hyperbole</title> <rect x="391" y="15" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(430,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperboleqa</text></g></a> <a href="/2025/talks/gardening" title="Gardening in Emacs: A Windows user's tale of tending, tweaking, and triumph" data-slug="gardening"> <title> 2:15- 2:35 Gardening in Emacs: A Windows user's tale of tending, tweaking, and triumph</title> <rect x="432" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(457,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gardening</text></g></a> <a href="/2025/talks/bookclub-tapas" title="Bookclub tapas" data-slug="bookclub-tapas"> <title> 2:45- 3:20 Bookclub tapas</title> <rect x="473" y="15" opacity="0.5" width="48" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(519,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> bookclub-tapas</text></g></a> <a href="/2025/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 3:40- 3:50 Sunday closing remarks</title> <rect x="549" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(560,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <g transform="translate(0,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 5 PM</text></g></svg> -</div> - [[!toc ]] -Format: 20-min talk ; Q&A: IRC <https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen> Etherpad: <https://pad.emacsconf.org/2025-modern> +Format: 26-min talk ; Q&A: IRC Etherpad: <https://pad.emacsconf.org/2025-modern> Etherpad: <https://pad.emacsconf.org/2025-modern> -Discuss on IRC: [#emacsconf-gen](https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen) -Status: Q&A open for participation -<div>Times in different time zones:</div><div class="times" start="2025-12-07T14:10:00Z" end="2025-12-07T14:30:00Z"><div class="conf-time">Sunday, Dec 7 2025, ~9:10 AM - 9:30 AM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Sunday, Dec 7 2025, ~8:10 AM - 8:30 AM CST (US/Central)<br />Sunday, Dec 7 2025, ~7:10 AM - 7:30 AM MST (US/Mountain)<br />Sunday, Dec 7 2025, ~6:10 AM - 6:30 AM PST (US/Pacific)<br />Sunday, Dec 7 2025, ~2:10 PM - 2:30 PM UTC <br />Sunday, Dec 7 2025, ~3:10 PM - 3:30 PM CET (Europe/Paris)<br />Sunday, Dec 7 2025, ~4:10 PM - 4:30 PM EET (Europe/Athens)<br />Sunday, Dec 7 2025, ~7:40 PM - 8:00 PM IST (Asia/Kolkata)<br />Sunday, Dec 7 2025, ~10:10 PM - 10:30 PM +08 (Asia/Singapore)<br />Sunday, Dec 7 2025, ~11:10 PM - 11:30 PM JST (Asia/Tokyo)</div></div><div><strong><a href="/2025/watch/gen/">Find out how to watch and participate</a></strong></div> +Status: TO_REVIEW_QA + -<div class="vid mainVideo"><div></div><div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-modern">Open Etherpad</a></li><li><a href="https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen">Open public Q&A</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-modern--some-problems-of-modernizing-emacs--eduardo-ochs--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-modern--some-problems-of-modernizing-emacs--eduardo-ochs--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-modern--some-problems-of-modernizing-emacs--eduardo-ochs--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-modern--some-problems-of-modernizing-emacs--eduardo-ochs--original.mp4">Download --original.mp4 (35MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-modern--some-problems-of-modernizing-emacs--eduardo-ochs--original.vtt">Download --original.vtt</a></li></ul></div></div> +<div class="vid mainVideo"><video controls preload="none" id="mainVideo-modern"><source src="https://media.emacsconf.org/2025/emacsconf-2025-modern--some-problems-of-modernizing-emacs--eduardo-ochs--original.mp4" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-modern--some-problems-of-modernizing-emacs--eduardo-ochs--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 25:22 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-modern">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-modern--some-problems-of-modernizing-emacs--eduardo-ochs--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-modern--some-problems-of-modernizing-emacs--eduardo-ochs--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-modern--some-problems-of-modernizing-emacs--eduardo-ochs--main.opus">Download --main.opus (13MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-modern--some-problems-of-modernizing-emacs--eduardo-ochs--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-modern--some-problems-of-modernizing-emacs--eduardo-ochs--main.webm">Download --main.webm (57MB)</a></li><li><a href="https://youtu.be/EbxupbXfESg">View on Youtube</a></li></ul></div></div> # Description <!-- End of emacsconf-publish-before-page -->
\ No newline at end of file diff --git a/2025/info/modern-nav.md b/2025/info/modern-nav.md index 48855c90..ac44fb51 100644 --- a/2025/info/modern-nav.md +++ b/2025/info/modern-nav.md @@ -1,7 +1,7 @@ <div class="talk-nav"> Back to the [[talks]] -Previous by time: <a href="/2025/talks/sun-open">Sunday opening remarks</a> -Next by time: <a href="/2025/talks/reader">An introduction to the Emacs Reader</a> -Track: <span class="sched-track General">General</span> - <strong><a href="https://emacsconf.org/2025/watch/gen">Watch</a></strong> +Previous by track: <a href="/2025/talks/sun-open">Sunday opening remarks</a> +Next by track: <a href="/2025/talks/reader">An introduction to the Emacs Reader</a> +Track: <span class="sched-track General">General</span> </div> diff --git a/2025/info/open-mic-after.md b/2025/info/open-mic-after.md index 7caff151..daa4511c 100644 --- a/2025/info/open-mic-after.md +++ b/2025/info/open-mic-after.md @@ -1,7 +1,1029 @@ <!-- Automatically generated by emacsconf-publish-after-page --> -Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202023%20open-mic%3A%20Open%20session) +<div class="transcript transcript-mainVideo"><a name="open-mic-mainVideo-transcript"></a><h1>Transcript (unedited)</h1> + +[[!template text="""All right, so yes, we have a little bit of time""" start="00:00:00.000" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""while we are waiting for the dev track to finish,""" start="00:00:03.600" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and we could just declare this as a break,""" start="00:00:05.720" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""or if anyone's got any interesting last-minute stuff,""" start="00:00:08.320" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""you can come and share it here,""" start="00:00:12.040" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""where Karthik is also hanging out.""" start="00:00:17.240" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I think every time I read one of your long blog posts,""" start="00:00:20.880" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Karthik, I'm like, mm, life goals.""" start="00:00:23.280" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Someday I want to write something with nice diagrams""" start="00:00:25.560" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and, you know, deep Emacs interestingness.""" start="00:00:28.400" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I have not yet gotten the hang of even using avy""" start="00:00:31.280" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""to nearly the extent that you do.""" start="00:00:34.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""But yes, I have, I have always looked""" start="00:00:38.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""at your diagrams very longingly""" start="00:00:40.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and wondered how you make them.""" start="00:00:42.320" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""With a lot of sweat and cursing, unfortunately.""" start="00:00:44.680" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""It's all very nice. Yeah.""" start="00:00:51.240" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And I, I, I've seen your interactive SVGs,""" start="00:00:54.200" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""which is just wizardry. I have no idea how you do that.""" start="00:00:58.320" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""You can hover over different elements in the SVG""" start="00:01:02.320" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and do interesting things.""" start="00:01:06.960" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Yeah, so it turns out if you just think of them as XML,""" start="00:01:08.760" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""which Emacs will let you""" start="00:01:11.800" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""because you can just control C, control C,""" start="00:01:13.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and it'll switch back to text mode, right?""" start="00:01:15.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Then you can be like, oh, yeah, I can work with this""" start="00:01:16.760" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""using the DOM Emacs list library.""" start="00:01:20.000" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And then you can add title elements to it to get the hovers,""" start="00:01:23.560" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""or you can add hyperlinks.""" start="00:01:28.480" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So in fact, the emacs-conf schedule""" start="00:01:31.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""is very naturally generated from emacs-lisp itself,""" start="00:01:35.040" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""because there was no way I was going to handle""" start="00:01:41.200" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""two track schedules by hand.""" start="00:01:43.400" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And that's just SVG so that you can then have the hovers.""" start="00:01:45.720" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""The important thing is that when you're exporting it to HTML,""" start="00:01:49.800" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""it has to be an inline SVG to get the fancy behaviors.""" start="00:01:53.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""If you're linking it in as an image, then it doesn't work.""" start="00:01:57.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""It has to be inline. So for example, for my org mode,""" start="00:02:02.800" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I have my exports for images checked first if it's an SVG.""" start="00:02:09.280" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And unless I have an attribute""" start="00:02:14.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""on it that says, no, just link to it because it's large and not interactive,""" start="00:02:15.960" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""it actually inlines all of that markup""" start="00:02:20.360" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""into the exported HTML, if that makes sense.""" start="00:02:22.760" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""That does, that does make sense.""" start="00:02:26.880" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""It's a little less mysterious now.""" start="00:02:34.280" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""On the plus side, once it is in there as inline HTML,""" start="00:02:36.560" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""well, inline, you know, it's an inline markup,""" start="00:02:40.320" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""you can actually play around with it""" start="00:02:42.520" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""using JavaScript or CSS. That's really neat.""" start="00:02:44.360" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I had a question about some other SVG wizardry I've seen you do.""" start="00:03:01.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""You have these SVGs that grow, right?""" start="00:03:07.680" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Like they accumulate elements, almost like a slideshow.""" start="00:03:09.760" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Am I remembering that correctly? Yeah, yeah, yeah.""" start="00:03:15.960" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I started using that for one""" start="00:03:20.200" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""of the EmacsConf presentations.""" start="00:03:22.400" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Well, the one EmacsConf presentation""" start="00:03:24.520" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I've done in recent history,""" start="00:03:26.560" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""because it's nice to be able to add things gradually, right?""" start="00:03:27.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Especially as you're giving a presentation.""" start="00:03:31.640" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And that's also done with Emacs Lisp.""" start="00:03:35.800" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""What I do is, first I make the image, and then in Inkscape,""" start="00:03:38.720" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I can group together the elements""" start="00:03:43.600" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""that I want to appear at the same time.""" start="00:03:46.520" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And then I can use Emacs to, I think I just changed the,""" start="00:03:49.640" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I just add some CSS to them to make them dimmer.""" start="00:03:54.640" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and you just iterate through the different groups in that level,""" start="00:04:01.040" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and you write out the intermediate SVG files,""" start="00:04:04.760" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and then you can use Inkscape""" start="00:04:09.840" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""to convert them into PNGs if you want,""" start="00:04:12.280" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""like images of each step""" start="00:04:14.840" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""that are in PNG format instead of SVG.""" start="00:04:16.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""But the basic idea is you group""" start="00:04:18.720" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""the elements together that you want in one step,""" start="00:04:20.360" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and then you can manipulate it""" start="00:04:24.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""using the Emacs DOM.EL library,""" start="00:04:25.880" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""because it's just an XML document.""" start="00:04:30.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So you can say, all right, hide everything or have everything visible""" start="00:04:32.880" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and then remove the last one or something like that, you know, iterated.""" start="00:04:38.720" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Show them one at a time and then write your resulting document object model""" start="00:04:43.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""to a new file each step. Do you have, that makes sense.""" start="00:04:50.680" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So do you just write the e-list,""" start="00:05:05.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""like is this on a case-by-case basis?""" start="00:05:09.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Like every time you need to do this,""" start="00:05:12.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""do you write fresh e-list to step through the SVG this way?""" start="00:05:13.520" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Or do you have some kind of package""" start="00:05:18.520" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""or library to do this more?""" start="00:05:22.480" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Let me go see if this is the one.""" start="00:05:27.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""It's probably just buried in my config.""" start="00:05:33.000" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""If I do it again, I'm sure I will find another thing""" start="00:05:39.840" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""that I've completely forgotten about""" start="00:05:46.720" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and therefore have to recode or fix or whatever.""" start="00:05:51.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""But let me go see. Can you see my screen? Yep. OK.""" start="00:05:56.400" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So, oh, yeah, yeah, this one. Nice, I remember that one.""" start="00:06:03.200" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""OK, so we get this SVG, and then this animateSVGPaths""" start="00:06:07.560" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""is just a function I have. It takes the file name.""" start="00:06:13.720" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""It makes an output there. It adds one path back at a time.""" start="00:06:16.960" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And it just creates a lot of these numbered frames.""" start="00:06:22.040" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So as you can see here,""" start="00:06:25.840" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I'm just saying, OK, take the whole thing.""" start="00:06:27.640" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And then I think, yeah, maybe I said it like,""" start="00:06:30.040" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""you know, take the whole thing,""" start="00:06:34.480" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""make everything transparent,""" start="00:06:37.000" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and then one at a time, make them opaque""" start="00:06:40.200" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and save that, save that to the frame, to the image.""" start="00:06:45.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So this theoretically is a somewhat reusable function""" start="00:06:50.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""that takes the SVG and just fills the directory with it.""" start="00:06:54.320" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""What's the order in which it reveals things?""" start="00:07:01.040" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Top to bottom or bottom to top, it's whatever the SVG has.""" start="00:07:03.400" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And so if you're grouping things together,""" start="00:07:12.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""you can rearrange things in Inkscape.""" start="00:07:15.960" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""If you've given them IDs,""" start="00:07:17.600" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""which I have another function for in Emacs list""" start="00:07:22.040" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""that just highlights something""" start="00:07:25.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and lets me put an ID for it,""" start="00:07:26.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""then you can rearrange them yourself""" start="00:07:28.440" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""by looking at the markup, I guess.""" start="00:07:30.880" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Or I think I actually have some code also""" start="00:07:32.320" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""that will rearrange the path""" start="00:07:35.320" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""based on a list of IDs that I give it.""" start="00:07:37.040" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and sequence so this one is animating""" start="00:07:39.280" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""one element at a time here""" start="00:07:42.760" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""um it's kind of like interesting effect""" start="00:07:44.320" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""but for larger things like for this one""" start="00:07:47.320" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""i can split this up into groups""" start="00:07:49.040" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""because i don't want to necessarily animate them letter by letter and that one""" start="00:07:52.040" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Oh yes, this is the function that I have""" start="00:07:59.600" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""for identifying the paths""" start="00:08:03.320" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and it highlights it and then it asks me for a name.""" start="00:08:05.320" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And this is the one that reorders it.""" start="00:08:08.960" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So I can say, this is the sequence""" start="00:08:11.360" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""that I want it animated in. And it will, yeah, good.""" start="00:08:14.560" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So you don't actually need Inkscape at all, right?""" start="00:08:19.280" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Because you have an elisp function""" start="00:08:23.400" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""that will let you assign the order interactively.""" start="00:08:25.000" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Yeah, so if you're doing just all the elements one after the other,""" start="00:08:28.400" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Inkscape is helpful for combining the different shapes,""" start="00:08:34.600" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""well, breaking it apart,""" start="00:08:39.280" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""because when I get the PDF and I convert it,""" start="00:08:41.400" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""it's like one big element that has a very complex path.""" start="00:08:44.720" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And if I want to animate it element by element,""" start="00:08:48.560" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I have to break it apart""" start="00:08:52.480" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and then recombine it so that, you know, so that this O looks like it's hollow""" start="00:08:53.960" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""instead of like a circle.""" start="00:08:59.760" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So there's a little bit of Inkscape""" start="00:09:01.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""cleaning up before then,""" start="00:09:02.960" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""but I really dislike the mouse heavy stuff of Inkscape""" start="00:09:04.880" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""for assigning IDs and things like that.""" start="00:09:08.440" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I haven't quite gotten the hang of it.""" start="00:09:12.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So this is what it looks like""" start="00:09:14.000" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""before you group the elements together""" start="00:09:16.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and you combine paths,""" start="00:09:17.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""which is what you have to do Inkscape for,""" start="00:09:20.040" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""because I can't make sense of the numbers in Emacs someday.""" start="00:09:22.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So just combine, combine, combine. But once it's there,""" start="00:09:24.880" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I don't like having to set the ID in this""" start="00:09:30.320" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""object properties on the right side,""" start="00:09:32.720" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""because there's a lot of clicking.""" start="00:09:34.880" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""press escape and tab and tab, it's not reliable.""" start="00:09:36.960" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So that's why I have this function""" start="00:09:40.560" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and it lets me identify the paths and animate them""" start="00:09:42.600" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""from within Emacs, because Emacs is a text editor.""" start="00:09:46.560" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Yeah, in name only, but anyway.""" start="00:09:51.000" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So the groups, if you've already assigned groups in Inkscape,""" start="00:09:55.280" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Then when you run it through this function in Emacs,""" start="00:10:02.680" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""you can assign an ordering to the groups,""" start="00:10:06.520" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""the order in which it will be revealed.""" start="00:10:09.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Yeah. What I did was I gave it all IDs.""" start="00:10:10.600" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So I gave each group an ID.""" start="00:10:15.040" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And then when I have the ID, I can say, you know, maybe when I group it,""" start="00:10:17.600" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I'm doing it in a bit of a haphazard way,""" start="00:10:26.000" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""not grouping the first thing first,""" start="00:10:28.320" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and then the second thing, and the third thing.""" start="00:10:30.280" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So it's a bit of a mess.""" start="00:10:32.280" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And this one just resorts it by, I think,""" start="00:10:34.400" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""just looking everything up, storing it,""" start="00:10:38.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and then putting it back in order.""" start="00:10:41.480" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I probably have the code for this somewhere,""" start="00:10:45.040" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and if it's not, it's in the source code.""" start="00:10:49.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""There should be a source.""" start="00:10:52.040" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Yes, so this is an org source for this post,""" start="00:10:53.040" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and if it's not in there, then it should be in my config,""" start="00:10:57.600" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""the definition of this function.""" start="00:11:01.280" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""We are to pass. Here we are. Yeah, there you go.""" start="00:11:03.680" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So there, it just, it takes it, it looks for it,""" start="00:11:11.440" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and it adds it to the first layer.""" start="00:11:17.640" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Okay, you've just explained the magic,""" start="00:11:19.720" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""which makes it less magical,""" start="00:11:29.400" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""but also something I could try. Yeah, this is interesting.""" start="00:11:31.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Yeah, S2G is surprisingly powerful. Yeah, I know.""" start="00:11:36.280" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I know it can do a lot more""" start="00:11:41.760" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""than what we typically use it for.""" start="00:11:43.680" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So you also had this feature where, I think you used CSS,""" start="00:11:46.560" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""where if you mouse over something in the SVG,""" start="00:11:53.040" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""something is highlighted in your webpage.""" start="00:11:56.600" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Oh yeah, yeah, yeah. Like in the organizer's notebook.""" start="00:11:58.840" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So I have a draft schedule here.""" start="00:12:04.800" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Yeah, we've been doing all this stuff live, that schedule,""" start="00:12:07.960" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""where if you have, let's pick someone's talk.""" start="00:12:10.680" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Oh, yeah, highlight.""" start="00:12:16.240" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I think, oh, maybe it's the other way around.""" start="00:12:22.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I need to put this stuff here first. Oh yeah, okay.""" start="00:12:26.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So you'll notice here how if I add some JavaScript,""" start="00:12:30.840" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""it takes a look at what's in the URL.""" start="00:12:33.960" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And if so, then it can highlight a specific thing""" start="00:12:36.000" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""using just, maybe CSS might be it.""" start="00:12:38.440" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Actually, I think it's JavaScript setting the CSS style on it.""" start="00:12:41.680" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""But yeah, you can play around with CSS.""" start="00:12:47.880" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""See, this one has a slightly darker,""" start="00:12:51.280" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""slightly thicker background. So SVGs are great for that.""" start="00:12:53.640" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And if you inspect it,""" start="00:12:59.520" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""which I don't think I have shared here,""" start="00:13:01.480" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""but if you inspect it, I will share my inspect.""" start="00:13:03.200" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I have too many windows open,""" start="00:13:07.560" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""so I don't want to share my whole thing.""" start="00:13:10.720" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""But one of these, oh, I don't even know which, how do I find, okay,""" start="00:13:12.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""it's the developer tools window.""" start="00:13:19.075" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Do I even have developer tools? Oh, I can't see it. OK.""" start="00:13:20.367" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""If you inspect the page on the developer thingy,""" start="00:13:25.325" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""then it will show the SVG element. Yeah.""" start="00:13:29.492" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And unfortunately, I can't share it easily right now.""" start="00:13:38.117" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Maybe just say inspect. Oh, this is actually, I think,""" start="00:13:41.241" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""how also the individual talks have current ones, right?""" start="00:13:46.617" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So I just have this image over here,""" start="00:13:55.117" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and then you just have that one,""" start="00:14:00.440" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""that specific talk styled differently.""" start="00:14:01.720" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""How did you generate this SVG,""" start="00:14:06.000" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""the one showing the schedule?""" start="00:14:13.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Oh, okay, okay. Emacs. Book, book, book, book.""" start="00:14:14.640" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Emacs publish, I think. Let me share it. Emacs conf pub.""" start="00:14:24.440" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""One of these windows. Okay, let's see.""" start="00:14:29.600" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Slow down, look at all the windows.""" start="00:14:36.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Okay, I'm just gonna share the whole screen.""" start="00:14:39.200" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Screen two, no, screen one. All right, and okay.""" start="00:14:40.640" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I think this is the one. Is it sharing my screen?""" start="00:14:50.520" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""It is not sharing my screen. I'm going to try this again.""" start="00:15:05.760" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Okay. All right. So, the schedule. The schedule.""" start="00:15:08.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""This is the actual function""" start="00:15:23.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""that creates the SVG rectangles for the talks.""" start="00:15:24.560" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Oops. My screen share ended. Let me do that again.""" start="00:15:28.320" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""All right, and as you can see,""" start="00:15:35.280" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""it's just a little bit of math for the X, the Y,""" start="00:15:41.240" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""we color it differently""" start="00:15:45.040" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""depending on whether I'm making the schedule for the public view.""" start="00:15:48.200" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So we just, you know, do we do developer, development talk""" start="00:15:52.840" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""or general talk as colors,""" start="00:15:58.440" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""or if I want to color it for the backstage view,""" start="00:15:59.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I can keep track of the talk's status.""" start="00:16:02.640" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Anyway, so SDG track takes the track""" start="00:16:04.720" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and all the talk information,""" start="00:16:07.800" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and it makes all the little rectangles.""" start="00:16:09.240" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And this is the thing that adds a little hover""" start="00:16:11.560" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""for the times and titles as well.""" start="00:16:15.600" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So, Emacs's API for dealing with this is actually pretty good.""" start="00:16:17.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Oh, and of course, I have a hook here that modifies it.""" start="00:16:22.640" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""You can just run through a different function,""" start="00:16:27.560" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""different functions to tweak it.""" start="00:16:30.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So I could say, okay, color it in case my time constraints are,""" start="00:16:32.520" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""you know, not being met.""" start="00:16:36.400" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And then I can paint about this somewhere.""" start="00:16:37.840" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And the nice thing about this""" start="00:16:40.960" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""is it's actually, it's, you can, hang on a second, let me do this carefully.""" start="00:16:51.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""All right, here you go.""" start="00:17:06.720" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""It's super nice to be able to refer to it within Emacs itself""" start="00:17:08.000" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""because Emacs has SVG support.""" start="00:17:13.480" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So this is, for example, the organizer view""" start="00:17:15.840" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""inside an org mode file. And it just has all those SVGs.""" start="00:17:19.680" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""It don't have the hover things,""" start="00:17:24.040" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""because it's just an image in it.""" start="00:17:25.600" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""But yeah, SVGs, Emacs, awesome. Oh, that's very cool.""" start="00:17:27.400" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""You're actually drawing the rectangles from scratch.""" start="00:17:37.760" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""It took a little bit of figuring out,""" start="00:17:40.720" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""especially since I realized""" start="00:17:45.000" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I wanted horizontal on the wiki pages""" start="00:17:46.960" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""so that it fits on people's screens,""" start="00:17:49.680" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""but I wanted vertical in my organized review""" start="00:17:51.360" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""so that I don't have to keep tilting my head sideways.""" start="00:17:56.040" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and this is the code for that.""" start="00:18:09.200" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""See, I'm just directly adding G nodes for groups""" start="00:18:12.360" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""or A nodes for the hyperlinks and rep as well.""" start="00:18:19.440" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I think the SVG library also has functions""" start="00:18:23.200" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""for adding rectangles and things like that,""" start="00:18:27.320" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""but sometimes I vaguely remember""" start="00:18:31.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""sometimes you can't return the node that I'm expecting.""" start="00:18:32.360" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So, it's okay to just use the DOM functions directly.""" start="00:18:35.000" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And then the whole thing gets SVG printed afterwards.""" start="00:18:40.560" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So I can just say SVG printed, and then it's good to go.""" start="00:18:46.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Let me see. Actually, do I have SVG?""" start="00:18:54.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Let's schedule for track SVG.""" start="00:18:57.720" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""It's a shame that you can't visually interact""" start="00:19:05.680" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""with parts of an SVG in Emacs the way you can in Emacs.""" start="00:19:08.800" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Oh, some people have some interesting experiments with that.""" start="00:19:11.560" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I haven't dug into it much,""" start="00:19:16.800" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""but people have figured out how to use the mouse events""" start="00:19:18.840" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and then figure out what the, like there's LEC draw, right?""" start="00:19:21.640" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So lecdraw is a package that lets you draw SVGs""" start="00:19:26.200" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and you can drag things and whatever. So that's very cool.""" start="00:19:30.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And there's also an org related package""" start="00:19:33.040" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""that lets you visualize your schedule as boxes.""" start="00:19:37.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I'd like, yeah, that's a thing also.""" start="00:19:43.440" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So people have experimented""" start="00:19:45.640" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""with mouse interaction and it's cool,""" start="00:19:46.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""but I haven't had the brain space to do that yet,""" start="00:19:49.440" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""but it would be nice. Yeah, you're right.""" start="00:19:51.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I remember using easy draw""" start="00:19:55.480" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and being surprised at what it can do.""" start="00:19:58.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""The only thing I think I discovered""" start="00:20:02.000" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""is that it ends up creating lots of new SVGs,""" start="00:20:05.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""kind of the way that you do""" start="00:20:10.280" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""when you show elements one by one,""" start="00:20:13.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""you are essentially creating one SVG for each state,""" start="00:20:14.960" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""one full SVG for each intermediate state of the presentation, let's say.""" start="00:20:19.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""That's kind of what ELEasyDraw does.""" start="00:20:24.440" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And I thought that's not good for performance.""" start="00:20:26.480" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And it is kind of on the slow side,""" start="00:20:30.840" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""if you compare it to like Inkscape or anything else.""" start="00:20:33.040" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""But yeah, what it can do is pretty amazing.""" start="00:20:37.360" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""you can dynamically modify an SVG object,""" start="00:20:40.960" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and it will automatically get updated in Emacs,""" start="00:20:44.560" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""which is a technique that I use a lot in FFNS in subbed.""" start="00:20:48.400" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So for example, if I have waveform show all in this,""" start="00:20:52.520" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""it will, like, it's very easy to just move one element, for example,""" start="00:20:57.560" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""or make an element larger or smaller.""" start="00:21:03.240" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And that's the... It might be pretty efficient, I don't know,""" start="00:21:08.520" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""but I'm certainly not like writing it to disk each time and reloading it.""" start="00:21:13.280" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Eric and I demoed in 2020 EmacsConf for Dungeon Mode Works,""" start="00:21:20.200" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""where we demonstrated, you know, showing parts of the map""" start="00:21:25.520" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and then, you know, different characters""" start="00:21:29.400" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""have different abilities that show,""" start="00:21:31.650" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""that allow you to see different dungeon features.""" start="00:21:33.840" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And then if your last character,""" start="00:21:36.600" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""you know, of that class or race dies,""" start="00:21:38.800" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""then you suddenly can't see""" start="00:21:42.720" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""secret doors or whatever anymore.""" start="00:21:44.480" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And so just make that disappear""" start="00:21:46.760" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""between one turn and the next""" start="00:21:48.720" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""is just working with just simply update the SVG""" start="00:21:50.560" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and there goes the screen. No, no, no bus, no bus.""" start="00:21:54.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""It's pretty awesome. So this is an example""" start="00:21:57.680" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""of how I'm using it to kind of show where we are in the, in the track.""" start="00:22:01.560" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And then here's mouse, mouse interaction, right?""" start="00:22:07.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I can change my timestamp right from there. Which is fine.""" start="00:22:09.640" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So, I'm curious how this works exactly.""" start="00:22:21.360" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""To effect any kind of change in the SVG,""" start="00:22:28.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""you have to use the DOM library, right? Yes.""" start="00:22:31.800" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Okay, so, but that means that it's going to be,""" start="00:22:36.240" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""anytime you make a change, it's going to read in the XML,""" start="00:22:39.320" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""convert it to an Elisp DOM, right?""" start="00:22:43.640" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And then you modify that tree.""" start="00:22:48.000" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Yeah, you keep the DOM, like, well, in this case, for example,""" start="00:22:50.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I'm actually constructing it using Emacs list objects directly.""" start="00:22:55.840" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""If you were working with an external SVG,""" start="00:23:00.880" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""you would parse it first, yes,""" start="00:23:02.960" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""using XML parse file or something like that.""" start="00:23:05.200" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and then you would have it in memory.""" start="00:23:07.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""When you insert the image,""" start="00:23:12.000" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""you insert the list document object model that you have,""" start="00:23:14.560" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and then any changes you make to that document object model""" start="00:23:18.520" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""automatically get updated in the image somehow.""" start="00:23:21.200" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Oh, that's fantastic. Yeah. Yeah. I'll show you the code. Yeah.""" start="00:23:25.520" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So I was under the impression""" start="00:23:33.560" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""that there's a round trip to XML involved""" start="00:23:38.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""to do anything like to go from displayed""" start="00:23:40.097" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""to in-memory to in-memory modified back""" start="00:23:42.299" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""to display all around trip.""" start="00:23:46.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Yeah. So let me see where's my thing that changes it.""" start="00:23:47.840" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So when it's the time.""" start="00:23:52.960" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""It's probably some kind of hook that I'm listening to here.""" start="00:23:59.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Playback position hook. Oh, it's this update current bar.""" start="00:24:07.000" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""All right, so what update current bar does""" start="00:24:12.880" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""is it moves the bar to the right place.""" start="00:24:16.000" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And you see here how this SVG,""" start="00:24:19.320" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I'm actually just reading it off the text property""" start="00:24:21.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""so that I know which one is the current one in the overlay.""" start="00:24:24.720" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I remove the old one, just the element.""" start="00:24:28.280" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I don't have to mess around with the image.""" start="00:24:31.400" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I removed the old one for some reason,""" start="00:24:34.280" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""just to make sure, I guess.""" start="00:24:35.600" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""You can actually just update the attribute on it.""" start="00:24:36.840" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Oh, I think this is just so that I don't have to worry""" start="00:24:38.880" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""about whether there is one or there isn't.""" start="00:24:42.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And then I add a bar at the right position""" start="00:24:45.520" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and then it makes that little animated sweeping thingy.""" start="00:24:47.960" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So you see how I'm not recreating the SVG at this point.""" start="00:24:52.520" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I'm just getting it from the overlay.""" start="00:24:55.960" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Yeah, that's very interesting. I wonder what it's doing.""" start="00:25:02.560" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""what it's actually doing under the hood when you run SVG removal.""" start="00:25:07.480" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Yeah, I don't know, too. I think it's RSVG is tied""" start="00:25:09.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""into the display engine, so to speak. Yeah, that it is.""" start="00:25:19.440" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""But RSVG, the library,""" start="00:25:32.040" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""can only deal with actual SVGs, right, like XML SVGs,""" start="00:25:33.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""but we're dealing with the ELISP DOM of an SVG.""" start="00:25:39.200" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So the display engine can re-enter the LISP.""" start="00:25:43.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I do know that the display engine""" start="00:25:47.560" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""can re-enter the LISP engine,""" start="00:25:49.520" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""so I think that may be the answer.""" start="00:25:51.840" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Yeah, you can just SVG insert image the object itself.""" start="00:25:53.600" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So here, for example, SVG create just creates,""" start="00:25:58.760" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""it actually just creates a DOM model.""" start="00:26:01.880" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So this is Lisp, and it's not,""" start="00:26:04.240" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""it doesn't get printed to string representation or anything.""" start="00:26:06.600" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And then you can SVG insert image,""" start="00:26:09.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""or you can set the display and, you know,""" start="00:26:13.240" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and use pass it like as an SVG image.""" start="00:26:15.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""SVG image gives you an image object""" start="00:26:20.720" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""if you want to do the like the regular""" start="00:26:22.600" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""sort of display thingy. Actually, that one says it turns it""" start="00:26:24.680" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""into a string representation.""" start="00:26:31.200" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Or at least maybe that's just how it gets retrained.""" start="00:26:34.400" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Anyhow, some kind of magic happens,""" start="00:26:36.720" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""but I don't have to worry about it.""" start="00:26:38.560" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""It just stays on my side. Yeah, but I was thinking about it""" start="00:26:39.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""because I expect that if it's converting to XML all the time, every time you make a change,""" start="00:26:44.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""then that's going to be the bottleneck""" start="00:26:49.600" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""for any kind of heavy interactive SVG editing or modification in Emacs.""" start="00:26:52.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""The kind that ELEasyDraw does.""" start="00:26:58.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""But maybe if we make it compelling enough,""" start="00:27:01.200" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""then the folks upstream can say, all right,""" start="00:27:03.840" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""like the way that JSON got a lot faster.""" start="00:27:07.280" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Who knows? Maybe we can get that to be faster too. Yeah.""" start="00:27:10.240" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I see a lot of potential for better UIs in Emacs""" start="00:27:13.360" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""with using SVGs. Yeah.""" start="00:27:19.200" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Nicolas Rougier has all those experiments, right?""" start="00:27:22.720" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Yeah, but all of those, I think, are bound by the limitations""" start="00:27:26.320" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""of how deeply SVGs are embedded in the display engine,""" start="00:27:30.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""because that's kind of what we're discussing.""" start="00:27:33.600" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""We want to avoid going to XML,""" start="00:27:36.360" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I mean, going from XML to Elisp DOM""" start="00:27:38.480" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""to modified Elisp DOM back to XML.""" start="00:27:41.480" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""We want to avoid that round trip. Yeah, for sure.""" start="00:27:44.840" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Or make that as fast as possible, yeah.""" start="00:27:50.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Does anyone else have anything they want to share?""" start="00:28:04.800" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I've always got stuff I can share,""" start="00:28:11.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""but I pretty happily defer. I've already seen what I made.""" start="00:28:13.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Karthik? Oh, I'm a fly on a wall here. I'm not.""" start="00:28:17.640" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Okay. I didn't come in with the intent to share anything.""" start="00:28:28.760" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Yeah. How about you, Sacha?""" start="00:28:32.200" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Do you have other stuff you haven't shown off recently?""" start="00:28:34.240" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Aside from all the panicking""" start="00:28:38.000" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""about getting EmacsConf together this year?""" start="00:28:39.840" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I just wanted to bring it up.""" start="00:28:42.600" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Yeah, let's see, what do I have in my recent, like, fiddled with?""" start="00:28:45.400" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So I have a project called...""" start="00:28:50.360" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I have a project called Ufta, which is a little bit fun.""" start="00:28:54.000" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Let me pull it up here before I share.""" start="00:28:56.880" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""You can see my messy, messy desktop. Okay, there it is.""" start="00:29:00.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And that's supposed to want a shell. Probably that one.""" start="00:29:08.960" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And we'll just bootroot. keeping in mind that graphics""" start="00:29:21.520" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""is going to end in about five minutes. Ooh, perfect.""" start="00:29:29.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""That'll keep me from from being my normal long-winded self.""" start="00:29:33.400" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Have you already made contact with Emmanuel? I was not.""" start="00:29:38.960" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Okay, I'm going to quickly do a check in.""" start="00:29:47.240" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Okay, sounds good. Did you hear back from him?""" start="00:29:50.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Assume that's a yes.""" start="00:30:00.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""All right, I'll go ahead and share screen here""" start="00:30:01.040" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and just take a look, a very brief look at this.""" start="00:30:04.400" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Assuming I can present. I had a question for Sacha.""" start="00:30:08.880" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I had a question for Sacha and you, Corbin.""" start="00:30:16.720" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Hello. Yeah, you're good. Go for it. Yeah, yeah.""" start="00:30:22.400" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So in past years, in the EmacsConf,""" start="00:30:28.760" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""there was a talk by someone,""" start="00:30:33.320" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""usually John Wheatley, or I think Philip last year,""" start="00:30:36.800" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""about new developments in Emacs.""" start="00:30:41.000" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Yes, and that is kind of at the whim""" start="00:30:44.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""of the Emacs developers,""" start="00:30:48.680" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""whether that is included in the in the conference.""" start="00:30:50.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""It's kind of up to the, you know, how busy folks are""" start="00:30:56.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and whether somebody can follow up the time to prepare it.""" start="00:30:59.680" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I see. Yeah, I noticed that there wasn't one for this year.""" start="00:31:02.880" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And I know of at least one improvement""" start="00:31:07.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""or one change to Emacs.""" start="00:31:10.000" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""It's small, but I'm guessing it's very crucial""" start="00:31:12.360" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""for a certain class of Emacs users.""" start="00:31:17.560" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And I can talk about that, just that one thing.""" start="00:31:20.360" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""But you can, you can, you can go right.""" start="00:31:24.240" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So I can't share anything and we've got about one minute.""" start="00:31:29.720" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So have that. Okay. Um, so the change is that, uh,""" start="00:31:32.600" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""in the development version of Emacs,""" start="00:31:39.720" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""sorry, child frames are now supported""" start="00:31:41.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""in terminal in the terminal.""" start="00:31:46.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And I suspect that not many people know about it yet,""" start="00:31:53.680" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""but basically this means something like Corfu is going to work fine""" start="00:31:56.520" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""when you're running Emacs in a terminal,""" start="00:32:03.840" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""as well as pause frames or anything that shows like a little pop-up window""" start="00:32:05.480" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""that previously did not work in Terminal Emacs.""" start="00:32:14.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""That's it. That's the update. Cool.""" start="00:32:19.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Okay, there I have a share screen button.""" start="00:32:27.520" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""We'll see if I think we're just about to cut away,""" start="00:32:29.360" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""but I'll go ahead and see if I can get this going.""" start="00:32:32.000" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I'll just share my whole screen""" start="00:32:34.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and this will be a little ugly as it comes in.""" start="00:32:36.680" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So this is a project that I think is a little bit fun.""" start="00:32:39.600" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""It's called Oopda. And basically what this does,""" start="00:32:44.360" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""you can see it on my source site,""" start="00:32:47.520" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""that's sr.ht tilde mplscorewin slash Oopda.""" start="00:32:49.760" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""O-F-D-A, and this is a very simple approach""" start="00:32:55.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""to using an org file as a replacement for SQLite.""" start="00:32:59.600" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""It's very simple, but it does support like a dot style path and notation.""" start="00:33:04.640" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So you can get at deeply nested data""" start="00:33:12.240" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and just gives a little,""" start="00:33:16.320" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""there's a shell script wrapper that comes with it.""" start="00:33:19.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""All right.""" start="00:33:24.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Theoretically, this is the Q&A for the graphics talk.""" start="00:33:26.320" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Oops, I have to unmute over here. Sorry.""" start="00:33:32.760" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""All right, I had a little audio bleed through,""" start="00:33:38.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""my apologies, can you still hear me?""" start="00:33:53.000" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""All right, I'm gonna guess,""" start="00:34:02.400" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""because I still see us live on the screen""" start="00:34:03.720" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""that we're still live. All right, so I'll just press on.""" start="00:34:05.760" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So what we're looking at here is a project called Upta.""" start="00:34:12.840" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Here's the Emacs Lisp source port.""" start="00:34:18.600" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""You can see it's not real impressive""" start="00:34:21.240" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""even with all of its boilerplate.""" start="00:34:23.200" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""It's under 200 lines of code.""" start="00:34:24.760" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And this is kind of a proof of concept,""" start="00:34:27.400" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""giving us the ability to use a org.org file""" start="00:34:30.600" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""as a flat file database. The intention here is to get""" start="00:34:35.000" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""a kind of transition from SQLite,""" start="00:34:38.280" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""which is using a flat text file as a database,""" start="00:34:40.440" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""to being able to have more of a literate database""" start="00:34:44.240" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""where we can intermix documentation about the data""" start="00:34:48.880" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""with the data itself,""" start="00:34:52.760" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and then by giving a path on the command line.""" start="00:34:54.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I'll go back to the README, just take a look at that.""" start="00:34:57.600" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And you can see there's a couple of kind of examples here""" start="00:35:02.200" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""where we're, here we would be querying a path.""" start="00:35:05.240" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""We can also provide a value""" start="00:35:11.320" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and that'll set data into the file.""" start="00:35:15.480" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""It also has an optional first parameter""" start="00:35:20.040" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""to specify the specific org file by default.""" start="00:35:23.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""It looks for a file called data.org.""" start="00:35:26.320" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And of course that can be used inside Emacs as well,""" start="00:35:29.400" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""although the value of that may be a little bit limited""" start="00:35:34.280" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""compared to more sophisticated""" start="00:35:37.800" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""technologies like org-element.""" start="00:35:39.800" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""This is not an implementation""" start="00:35:41.800" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""that mirrors all of org-element""" start="00:35:43.840" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""or any of the more complex functionality of org.""" start="00:35:47.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""It's really as simple as possible proof of concept""" start="00:35:50.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""to just to be able to kind of work""" start="00:35:52.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""with the data inside an org file""" start="00:35:57.680" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and get it back out on the command line.""" start="00:35:59.560" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So we'll see if we can make it work here.""" start="00:36:01.680" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Corwin, could you increase the font size?""" start="00:36:07.840" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I surely will. All right. How's that?""" start="00:36:13.480" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""That's my picture. Yeah. Okay. Cool.""" start="00:36:27.200" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So, let's see if we do have a, well, we can probably make it.""" start="00:36:31.000" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Let's do this.""" start="00:36:39.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""All right, and then in theory, this just works.""" start="00:37:00.840" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So we'll cut.""" start="00:37:05.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So we'll just create a data file called data.org.""" start="00:37:42.200" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Make sure that works. Looks reasonable.""" start="00:37:45.880" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Let's try adding some data to it. Hmm, not so happy.""" start="00:37:50.240" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Okay, let's try it the hard way.""" start="00:38:13.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I'll come back over here to my usage""" start="00:38:17.560" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and we'll just try running it.""" start="00:38:21.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Is Emacs, is finding Emacs really the issue?""" start="00:38:23.200" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""It seems to me it's not, it's not liking my path.""" start="00:38:37.320" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""It's not finding out that I do EO and PWD.""" start="00:38:41.200" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""It wants it to be on the log. I see.""" start="00:38:44.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So I may have to even mess with that further,""" start="00:38:49.520" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""but we'll just try it.""" start="00:38:54.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So this should retrieve the value if it works.""" start="00:38:55.360" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Oh, and let's take a take a simple""" start="00:39:04.840" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Yeah, add-to-list takes a symbol.""" start="00:39:17.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""We're going to have issues with bash quoting,""" start="00:39:47.320" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""so you should escape the quoting side.""" start="00:39:52.640" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Gotcha. You're kidding.""" start="00:39:58.560" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I'm not letting go. Whoa. That might work.""" start="00:40:27.720" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I got my parents right. Never demo live. How exciting. OK.""" start="00:40:36.600" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Without batch, though, we may not get our output. OK.""" start="00:41:02.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Well, that's as far as I'm going to take it.""" start="00:41:13.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I should have prepped a demo environment.""" start="00:41:20.400" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I wasn't really prepared to demo. No worries.""" start="00:41:21.960" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Couple of questions about this feature.""" start="00:41:26.880" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""The first question is, do you use it? I do use it, yeah.""" start="00:41:30.720" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I should have gotten onto the environment""" start="00:41:37.800" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""where I'm using it. It's a little messy.""" start="00:41:41.280" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""It gets into another project""" start="00:41:45.600" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""that's way too complicated to get into.""" start="00:41:47.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Yeah, but what kinds of things do you use it for?""" start="00:41:48.840" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""It's sort of hard to answer""" start="00:41:53.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""that without getting into my other project,""" start="00:41:57.000" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""but essentially I've got a web development tool chain""" start="00:41:59.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""that is kind of a web-based REPL""" start="00:42:02.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""that is kind of a literate compute environment, if you will,""" start="00:42:05.760" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""allowing me to use a bunch of virtual machines""" start="00:42:10.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""as one big computer. That project is called Ghost Wheel.""" start="00:42:13.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And so in order to show off the homepage,""" start="00:42:19.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So on this page, you can see the list of machines,""" start="00:42:23.720" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and then you'll also see there's these state indicators.""" start="00:42:30.360" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And right now, as a matter of fact,""" start="00:42:34.760" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""what I've been hacking on""" start="00:42:38.440" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""is trying to get support for org tables.""" start="00:42:41.240" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Right now, I support only changing all of the data""" start="00:42:44.880" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""within some heading, subheading, or whatever.""" start="00:42:48.760" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""What I'd like to be able to do is specify,""" start="00:42:51.960" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""using org table fm syntax, the particular row column.""" start="00:42:55.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So find a particular named table,""" start="00:43:01.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""find a particular row, you know,""" start="00:43:03.840" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""column one, you know, row two, column one,""" start="00:43:06.560" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and then set the value from the command.""" start="00:43:08.640" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Currently, I just use it for very simple stuff.""" start="00:43:11.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I don't really want to show that off.""" start="00:43:18.360" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I've got another page that lists all of the DNS names""" start="00:43:20.520" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""that are associated that are hosted on Ghostwheel.""" start="00:43:23.600" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And so I use that to add items to the list.""" start="00:43:26.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Does it make sense? Yeah, it sounds useful.""" start="00:43:29.320" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So one thing that I would like,""" start="00:43:40.440" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I guess it's easy enough to write,""" start="00:43:47.280" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""but is a tool exactly like this""" start="00:43:51.480" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""where I can query my org files from the command line?""" start="00:43:58.800" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Yeah, that's exactly what it says.""" start="00:44:03.840" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Yeah, but it's going to be more""" start="00:44:06.880" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""like a database query where, you know, I say select, select all headings where, you know,""" start="00:44:14.600" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""that contain this string or that have this tag, right?""" start="00:44:23.320" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""The kinds of things that you can do with org-ql from outside, from inside Emacs, right?""" start="00:44:27.280" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""To be able to do those from the command line with,""" start="00:44:38.520" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I'm going to invoke SQL here, like SQL SELECT statements,""" start="00:44:41.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""but it doesn't have to be that syntax, right?""" start="00:44:48.280" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Just that capability.""" start="00:44:50.520" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Yeah, I can see that being useful as a command line tool.""" start="00:44:52.520" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And I don't even care about write,""" start="00:44:57.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""like the ability to write or manipulate the file.""" start="00:44:59.400" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Just query. the command line that sounds yeah yeah exactly""" start="00:45:02.400" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""to be able to dig a piece of data out of an org file as well""" start="00:45:11.800" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""for my purpose it's very useful to be able to replace it""" start="00:45:15.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""because then i can deal with submit the form you know""" start="00:45:18.360" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and that might be like a sign up form""" start="00:45:21.000" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and then i just add the user add up an entry into the org file""" start="00:45:24.000" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""for that user right what it doesn't do is a relational data""" start="00:45:29.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So everything, it's essentially a document data store.""" start="00:45:35.240" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Like a Mongo kind of. True. So over on IRC, ScrewLisp asks,""" start="00:45:40.560" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""what does it mean to query an ARC file?""" start="00:45:53.960" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Is the data in a table? Is it in an ELISP nested list view""" start="00:45:57.280" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""of a table that has a name in ARC?""" start="00:46:01.680" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And my answer to that is that if you ever used RQL,""" start="00:46:06.560" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""written by Alpha Papa,""" start="00:46:10.640" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""then that's the kind of thing I'm talking about.""" start="00:46:14.200" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So, you query based on one of a set of attributes.""" start="00:46:18.040" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And these attributes are anything that's recognized by ARC.""" start="00:46:23.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""For example, the to-do status, the dates,""" start="00:46:30.600" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""the outline path, the headings, a full text search.""" start="00:46:35.240" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""There are several more.""" start="00:46:40.400" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""The presence or absence of certain properties.""" start="00:46:43.480" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""using any combination of those if you want to dig down""" start="00:46:46.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and find some data in an art file.""" start="00:46:50.880" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""That's the kind of query I'm talking about.""" start="00:46:52.760" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""It is somewhat equivalent""" start="00:46:56.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""to being able to write SQL queries""" start="00:46:58.240" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""where you match on things just for your art files.""" start="00:47:02.360" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Okay. I think we might have figured out our problem.""" start="00:47:09.720" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""It was DOS encoding. See if that works.""" start="00:47:21.200" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I switched the development track over""" start="00:47:38.840" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""to just watching the gen track since I couldn't find it.""" start="00:47:47.880" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Also, Eludo wants to mention""" start="00:47:53.560" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""the Emacs Carnival theme for December.""" start="00:47:57.360" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Yes, the people of Emacs,""" start="00:48:00.800" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""of which you are all very awesome.""" start="00:48:02.360" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Thank you so much for your patience.""" start="00:48:04.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Today has been very interesting.""" start="00:48:05.520" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""But yes, at some point we can show that too.""" start="00:48:08.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And we can basically wrap up anytime we like""" start="00:48:13.360" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""or hang out for as much time as we like also.""" start="00:48:17.200" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""okay so this is okay at least i got""" start="00:48:19.280" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""as far as a working demo here""" start="00:48:23.280" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""so now you can kind of see what's going on um""" start="00:48:24.520" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and i'll just wrap that into uh""" start="00:48:26.440" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""into a little prettier output""" start="00:48:31.600" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And you can see that it modified the value.""" start="00:48:40.960" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So it's pretty darn simple.""" start="00:48:53.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Again, all it's doing is completely replacing all of this content""" start="00:48:59.480" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""with whatever new value is given as its final argument""" start="00:49:06.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""after naming the data path.""" start="00:49:11.680" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So the one refinement we can do just to get a little more complex example going.""" start="00:49:14.880" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""We'll deepen our structure a little bit. And try that.""" start="00:49:23.440" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So here now we'll say test two.""" start="00:49:32.760" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And we can take a look at the data file""" start="00:49:38.800" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and see that it has adjusted that""" start="00:49:47.640" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""because test2 was completely unique, that worked fine.""" start="00:49:51.600" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""If that were not the case,""" start="00:49:55.960" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""we would have had to specify the path""" start="00:50:00.520" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""using dot notation like this. And that's pretty much it.""" start="00:50:02.600" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""It took me much longer to figure out""" start="00:50:17.680" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""why it wasn't just working than it did to demo it.""" start="00:50:20.760" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And again, what I really like about this program,""" start="00:50:23.760" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""besides the fact that I find it quite useful""" start="00:50:29.240" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""to just be able to stuff values into an org file""" start="00:50:31.640" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""from the command line using shell script,""" start="00:50:34.640" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""is what I really like about this""" start="00:50:36.440" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""is that it's a whopping 190 lines of code,""" start="00:50:41.280" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""including all the boilerplate.""" start="00:50:46.000" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And I will share the project into the chat.""" start="00:50:47.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So, Corwin, you're not using org-element for this, are you?""" start="00:50:55.760" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""No. Yeah, that's a great question.""" start="00:51:02.200" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Let's just dig a little into the code here.""" start="00:51:06.800" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Or maybe it would be more fun to actually""" start="00:51:10.840" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So the only real requires here, I do use cl-lib mostly.""" start="00:51:21.040" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I'm directly using the macros from org.""" start="00:51:26.720" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Particularly, I'm extremely fond of this function.""" start="00:51:33.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I'd love to see this just promoted to promoted""" start="00:51:36.880" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""somewhere deeper into Emacs proper,""" start="00:51:41.280" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""so that I don't have to load all of the org macros""" start="00:51:43.560" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""to get to this particularly useful one,""" start="00:51:47.640" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""which just tells me whether ignoring whitespace""" start="00:51:50.240" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""a string has any characters, has greater than zero length.""" start="00:51:54.680" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Isn't that just string blank B?""" start="00:51:59.640" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So this is a little different.""" start="00:52:04.440" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""This deals with... I may struggle to remember the details,""" start="00:52:09.000" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and it's possible that the non-org specific version""" start="00:52:14.800" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""has even been improved or I didn't use it correctly,""" start="00:52:21.000" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""but I believe my experience was it didn't handle new lines, for example, quite the same way.""" start="00:52:23.520" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So getting into what this actually does,""" start="00:52:29.480" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""most of the program is finding the relevant part of the file.""" start="00:52:38.520" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""You'll see that we start out by doing a depth-based search,""" start="00:52:43.880" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""capture the value that we're looking for.""" start="00:52:49.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And then finally, we widen the buffer""" start="00:52:51.960" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and keep handling the case where we might be being called""" start="00:52:58.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""from within Emacs in a narrowed buffer.""" start="00:53:01.800" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""This is another what should be documented at the top.""" start="00:53:05.840" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So that is obviously going to load org.""" start="00:53:11.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Just double-check that. Yeah, it is going to load org.""" start="00:53:13.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And we can see that because it didn't find the function.""" start="00:53:21.400" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""until I loaded Org and then it did when I did C-h f""" start="00:53:30.040" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""to get definition of a function.""" start="00:53:40.400" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So, widen the buffer and then I just start looking for the search.""" start="00:53:45.000" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""You can see I'm doing simple regular expression based searches here.""" start="00:53:51.720" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Looking for lines, ultimately, that start with a star.""" start="00:53:55.400" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""That was a little simpler format""" start="00:54:01.720" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""that didn't quite work out.""" start="00:54:05.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So I'm searching for, here this is a little tricky,""" start="00:54:07.760" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""but I'm searching for a number of stars""" start="00:54:25.720" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""equal to the depth that I want.""" start="00:54:28.840" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""The depth that I want being calculated""" start="00:54:30.840" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""based on the number of dots that were in the query string.""" start="00:54:33.440" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""from there, you know, kind of skipping some stuff, right?""" start="00:54:38.040" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Once we find our starting position,""" start="00:54:47.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""then we're going to have to find the end of that,""" start="00:54:49.600" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""the section that we're going to read or replace.""" start="00:54:53.240" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Text a tiny bit smaller. So I checked org-string nwp,""" start="00:54:57.680" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and it's the same as string blank p.""" start="00:55:12.960" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""exactly the same code or the same result?""" start="00:55:20.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""No, it's the same result. Well, it's the same check,""" start="00:55:26.320" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""but string blank p will return a match object,""" start="00:55:30.400" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""like a string match object,""" start="00:55:34.520" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""whereas the org version will return the string itself""" start="00:55:36.000" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""if it finds a match, as in if it's blank.""" start="00:55:39.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I don't remember that.""" start="00:55:46.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""As a Boolean check, they are the same.""" start="00:55:48.320" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""If you use it as, you know, is it blank or not.""" start="00:55:51.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So, um, yeah, I've talked for way longer.""" start="00:55:54.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I thought I literally thought""" start="00:56:02.680" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""this would be a five minute thing.""" start="00:56:04.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I'm not sure if there are any questions on it,""" start="00:56:05.320" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""but just to simply answer your question.""" start="00:56:08.400" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""No, it doesn't use org element.""" start="00:56:10.240" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""This is pure regex based work.""" start="00:56:11.720" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So, the advantage of not using... Right.""" start="00:56:23.760" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So, the advantage of not using arg element""" start="00:56:26.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""is that you don't have to load arg or arg element, right?""" start="00:56:32.680" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And so, it's going to be faster.""" start="00:56:37.440" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And it's going to be faster both because you don't have to load arg element""" start="00:56:39.040" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and because you don't have to run arg element, like the arg parser.""" start="00:56:45.360" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""But on the other hand,""" start="00:56:51.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""you end up loading all of org anyway.""" start="00:56:52.880" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So at that point, it might just be better""" start="00:56:58.440" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""to use org element because it's more robust.""" start="00:57:02.680" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""For example, if you have a bunch of leading stars""" start="00:57:05.040" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""inside a source block or something,""" start="00:57:07.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""you don't want to misclassify that.""" start="00:57:09.960" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Matter of fact, I believe I had to do some flossing with it""" start="00:57:11.600" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""to deal with not just that,""" start="00:57:16.640" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""but drawers and things like that.""" start="00:57:18.880" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""right yeah so at the end of the day""" start="00:57:21.440" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""that was just an extra 10 or 20 characters""" start="00:57:25.880" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""in the regular expression so i just shrugged and wrote them""" start="00:57:28.040" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""you can see there are a number of i""" start="00:57:31.040" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""i happen to like writing regular expressions""" start="00:57:36.800" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and find them relatively readable so""" start="00:57:40.280" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So it didn't bother me doing that.""" start="00:57:42.480" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I've also done a bunch of work with org-element""" start="00:57:46.720" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""with the dungeon project,""" start="00:57:49.240" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""which of course uses that extensively""" start="00:57:51.440" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""to pull data out of tables and so on.""" start="00:57:53.760" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And indeed, I think that may ultimately be my solution.""" start="00:57:57.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I've been kind of distracted on a side quest""" start="00:58:01.320" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""to improve the org-table-fm parser.""" start="00:58:06.200" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""There's a post on my blog about the work that I've done there,""" start="00:58:09.960" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and recently started talking to Ihor,""" start="00:58:14.280" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""the new org maintainer,""" start="00:58:19.360" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""who took over in the last year or so from Bastien.""" start="00:58:20.840" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Just about what it would take to pick that up,""" start="00:58:27.580" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""or at least get it to a point""" start="00:58:32.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""where somebody else could work on it.""" start="00:58:34.280" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""It's pretty dense right now.""" start="00:58:35.680" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So this thing is a bit of a monster,""" start="00:58:39.600" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""but at the end of the day,""" start="00:58:59.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""our goal is to extend the syntax,""" start="00:59:01.800" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""is to be able to use this Org Table FM syntax""" start="00:59:06.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""in other contexts.""" start="00:59:12.520" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So if you haven't looked at board table FM,""" start="00:59:14.440" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""these I bar or these I markers""" start="00:59:18.520" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""are telling us to look for the table separator.""" start="00:59:21.400" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So positioning based on the location of a table separator.""" start="00:59:26.040" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I find that a little bit brittle""" start="00:59:29.760" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""just because it's really easy to go in and decide,""" start="00:59:34.440" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""oh, it'll look better with an additional line separator in there.""" start="00:59:38.680" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And then all of these formulas break everywhere.""" start="00:59:42.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So it would be a little more fun""" start="00:59:48.040" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""to have at least variables in there.""" start="00:59:49.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And that's kind of part of the scope.""" start="00:59:53.400" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""If we look, and here you get kind of a hint""" start="00:59:56.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""of the new syntax I'd like to support,""" start="01:00:04.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""things like $star, $underscore.""" start="01:00:06.640" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Keyword it's it's probably a half-hour talk""" start="01:00:12.560" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""just to get into what every single one of these would do""" start="01:00:17.560" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""But this post does does give some some context of that""" start="01:00:20.880" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And more importantly there is a as a complete test program that""" start="01:00:26.320" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Worked the last time I was playing with it""" start="01:00:35.680" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And this gives you complete examples""" start="01:00:39.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""of all the syntax that the work in progress does currently support.""" start="01:00:43.960" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""You'll see some of these items are commented out.""" start="01:00:48.480" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Those aren't supported yet""" start="01:00:52.800" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and before I would implement them now,""" start="01:00:54.360" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""especially now that we're talking in terms of trying to take org itself this direction, you know,""" start="01:00:56.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""of kind of beefing up the the TableFM format parsing""" start="01:01:04.360" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""so that it could be used in other contexts besides""" start="01:01:13.540" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""specifically within a formula.""" start="01:01:17.000" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I wouldn't want to add features""" start="01:01:19.640" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""to it without discussing those.""" start="01:01:26.840" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So this is just a simple, basically a literate test file""" start="01:01:33.400" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""if you want to call it that.""" start="01:01:37.640" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""The perhaps key improvement here""" start="01:01:40.440" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""is naming all of the different capture groups.""" start="01:01:43.240" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""which just, if you're working""" start="01:01:49.800" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""with really huge regular expressions, which this is,""" start="01:01:52.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""let me just make sure the whole pagex is right in here""" start="01:01:55.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""so we can see it, yeah.""" start="01:01:58.840" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So here's the actual rewrite, scale it a little bit,""" start="01:02:00.600" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""so you can see it's kind of a monster.""" start="01:02:05.960" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And that's all using Rx.""" start="01:02:14.480" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So hopefully that looks pretty familiar.""" start="01:02:27.640" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Dollars for specifying a column, at sign to specify a row.""" start="01:02:29.520" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And we also have the keys.""" start="01:02:35.040" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Anybody else want to show and tell?""" start="01:02:43.960" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""We're going to cut over to the automated introduction""" start="01:02:58.560" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""for the Saturday closing remarks in like four minutes.""" start="01:03:01.400" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Oh, but quick, quick, quick mention of the Emacs Carnival.""" start="01:03:07.800" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So the Emacs Carnival is a shared blogging theme.""" start="01:03:15.600" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""where lots of people write about a specific theme,""" start="01:03:20.560" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and then if you write about it,""" start="01:03:25.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""you can send your link to whoever's hosting the carnival.""" start="01:03:26.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And it's a great way to discover other people's cool stuff.""" start="01:03:28.240" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So if I take presenter, hang on a second, take presenter.""" start="01:03:31.680" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Oh, actually, haha, I know,""" start="01:03:35.680" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I'm going to make Elladom present it.""" start="01:03:39.520" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Haha, you are now in charge. Okay, take it away.""" start="01:03:41.960" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So I've been using Emacs for like 46 years now,""" start="01:03:47.200" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""back to TECO Emacs. And as I just said in the chat,""" start="01:03:49.960" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I've found that the people who use Emacs""" start="01:03:53.360" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""tend to be interesting people in many different ways.""" start="01:03:56.320" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And so this month, I'm just saying, let's give a shout out""" start="01:03:59.440" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""to some of the interesting people we've met along the way.""" start="01:04:03.200" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And including some of the people""" start="01:04:06.400" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""that are putting on this conference""" start="01:04:09.240" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""are some of the most interesting""" start="01:04:10.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and helpful people I've ever met.""" start="01:04:11.960" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So thank you. You're very kind. Thank you.""" start="01:04:13.440" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I'll say more than that. Maybe I will.""" start="01:04:27.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I completely agree with you and I couldn't agree more.""" start="01:04:30.680" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I think that's how Sacha and Amin and Leo""" start="01:04:34.280" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""really dragged me into this,""" start="01:04:38.840" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""you know, into being a volunteer.""" start="01:04:40.560" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And I really, I'm sure we'll talk""" start="01:04:42.320" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""about this in the closing remarks,""" start="01:04:44.600" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""but I can't recommend volunteering for this project enough.""" start="01:04:46.040" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""It's just so fun to talk backstage""" start="01:04:50.200" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""with the presenters I don't know.""" start="01:04:54.320" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""It's an extremely engaging community.""" start="01:05:00.680" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""It's really thoughtful.""" start="01:05:11.440" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I like the way y'all are so patient and awesome""" start="01:05:12.760" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and I can be just quietly having my little freak out here""" start="01:05:15.040" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and everyone's fine""" start="01:05:19.440" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and will even help debug things live as needed.""" start="01:05:20.680" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So this is all good.""" start="01:05:23.880" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Anyway, so if people want to participate,""" start="01:05:45.500" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""you basically write a blog post.""" start="01:05:48.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""If you don't have a blog yet,""" start="01:05:49.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""there are any number of packages in Emacs,""" start="01:05:53.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""as well as web-based services,""" start="01:05:56.960" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""but really, you can get something going with Emacs.""" start="01:05:58.480" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""or exporting to HTML and maybe even figure out RSS,""" start="01:06:02.040" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""or you can use a static site generator like Hugo,""" start="01:06:05.840" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""or you can find, if you can set up WordPress,""" start="01:06:08.280" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""that's another way to do it.""" start="01:06:11.000" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Or you can email me your thing and I'll post it on my blog""" start="01:06:12.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and let me know how you want to be credited for it.""" start="01:06:15.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Anyway, so you can share your story""" start="01:06:20.240" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""or share your story about somebody else's story""" start="01:06:23.560" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and celebrate Emacs community.""" start="01:06:26.880" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And we can send it to George also.""" start="01:06:35.320" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""We'll then make links in that blog post.""" start="01:06:39.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And on the subject of community,""" start="01:06:48.400" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I also heartily recommend the IRC community on Emacs.""" start="01:06:50.200" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Pound Emacs is another one of those things""" start="01:06:53.440" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""that I just personally can't get enough of,""" start="01:06:55.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and I hear a lot of stories about just how it's helped people.""" start="01:06:58.280" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""All right, we are now having the automated introduction""" start="01:07:05.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and then it's going to rejoin over here very soon.""" start="01:07:09.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Hang on a second. Wow, that's going.""" start="01:07:12.760" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Saturday close and let's arrange our screen nicely.""" start="01:07:22.440" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""All right, we made it to the end of the first day! Woohoo!""" start="01:07:34.400" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Thank you for joining us""" start="01:07:38.280" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""for the first day of EmacsConf 2025.""" start="01:07:40.400" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Feel free to spread the word""" start="01:07:42.960" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""because there is still another day of fun talks tomorrow.""" start="01:07:44.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So hashtag EmacsConf and hashtag Emacs.""" start="01:07:48.480" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""If you do hashtag Emacs on Macedon""" start="01:07:51.400" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""or Blue Sky or other places, we'll probably find it.""" start="01:07:54.240" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Or if I don't, you can just let me know also.""" start="01:07:58.240" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""The prerecorded talks should be up""" start="01:08:01.760" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""on the talk pages already.""" start="01:08:04.040" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""The live talks, we'll probably actually get them up""" start="01:08:05.640" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""within the next week or two.""" start="01:08:09.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I think they've already started processing,""" start="01:08:11.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""so I just had to sit down and then work with""" start="01:08:13.360" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""our wonderful army of volunteer captioners""" start="01:08:15.480" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""to get them all nicely captioned.""" start="01:08:18.400" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""But anyway, so the prerecorded talks""" start="01:08:20.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""are also up on YouTube,""" start="01:08:22.440" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and I will eventually also upload them""" start="01:08:23.760" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""to TubeNix, which is a PeerTube instance.""" start="01:08:25.720" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""We will work on extracting live talks.""" start="01:08:29.240" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""If you'd like updates,""" start="01:08:31.240" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""please subscribe to the EmacsConf Discuss mailing list.""" start="01:08:32.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""If you've got ideas for making things better,""" start="01:08:35.320" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""we have so many ideas. I always end up with a very long""" start="01:08:37.280" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""to-do list after these things. Please add them to the pad.""" start="01:08:39.480" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I'd love to hear from you on how we can make it even smoother next year.""" start="01:08:43.360" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""There are about 100 people watching in gen""" start="01:08:46.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and 100 people watching in devs, which is really awesome.""" start="01:08:49.360" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""It's amazing to think that we can have""" start="01:08:52.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""an Emacs party for a lot of people.""" start="01:08:54.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And we can only do this because of all the wonderful speakers,""" start="01:08:56.960" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""volunteers, participants,""" start="01:09:00.400" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and very patient people in our lives""" start="01:09:02.280" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""who make it possible through all the time and support.""" start="01:09:04.360" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So this year, Corwin did most of the hosting.""" start="01:09:07.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I mean, also dropped by earlier, so that's great.""" start="01:09:10.040" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I hope Leo is okay. You know, we managed.""" start="01:09:13.440" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And I'm Sasha, by the way. I was running around backstage""" start="01:09:17.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and occasionally dropping in to go on the stream.""" start="01:09:22.440" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""There are lots of other volunteers who are not on air.""" start="01:09:26.560" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So, for example, during the proposal review process,""" start="01:09:29.360" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""we got a lot of wonderful comments""" start="01:09:32.720" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""from J.C. Hellery, Chico, and James Andrews-Howell.""" start="01:09:34.320" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""captions from Amitav and Rodion and other people""" start="01:09:37.760" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""have actually started also helping""" start="01:09:41.040" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""with the captions as well.""" start="01:09:42.880" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So jay_bird just sent in some stuff today too.""" start="01:09:45.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""We are slowly working on getting a mirror in the EU set up""" start="01:09:49.400" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""so it'll be a little faster for people.""" start="01:09:52.960" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So thanks to Yang3 for lending us a server.""" start="01:09:55.640" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Babin and Michael and Ian and Jamie""" start="01:09:58.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and Eeyore and Floyd Coulter have also helped out as well.""" start="01:10:00.880" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Thanks to the Free Software Foundation""" start="01:10:06.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""for the mailing list, the media server, and of course, GNU Emacs itself,""" start="01:10:08.960" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""for which an astonishing amount""" start="01:10:12.680" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""of the scripting is done in Emacs. It's great.""" start="01:10:15.440" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Thanks to Ry P for the server that we're using for OBS""" start="01:10:19.320" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""so that we can just VNC into it and I can manage two tracks""" start="01:10:23.280" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""without making my computer melt. It's great.""" start="01:10:27.640" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And of course, to all the users""" start="01:10:30.800" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and contributors and project teams""" start="01:10:32.880" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""that work on all the free software""" start="01:10:34.000" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""that this stuff is built on.""" start="01:10:36.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Emacs, Org Mode, ERC, Tramp, Magit, BigBlueButton,""" start="01:10:37.280" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Etherpad, IkiWiki, IceCast, OBS, The Lounge,""" start="01:10:43.640" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""LiberaChat, FFmpeg, OpenAI Whisper, WhisperX,""" start="01:10:48.240" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""the Aeneas forced alignment tool,""" start="01:10:52.960" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""PsyTransfer, SubEd, SubSeg, Mozilla Firefox, MPV, and Tampermonkey,""" start="01:10:55.040" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and other things I probably forgot to mention.""" start="01:11:00.280" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Thanks to Shoshin for the music,""" start="01:11:02.200" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and thanks to people also who've donated""" start="01:11:04.600" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""through the Working Together program,""" start="01:11:06.800" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""like Scott and Jonathan and other anonymous donors.""" start="01:11:08.680" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So that's a quick thanks. There's more tomorrow,""" start="01:11:12.560" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""but Corwin, do you have any parting words?""" start="01:11:15.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""You know, my parting words, Sacha are a thanks to you""" start="01:11:18.360" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and not just a thanks""" start="01:11:23.560" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""for the hundreds of hours that you put""" start="01:11:25.760" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""into preparing this conference,""" start="01:11:27.280" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""you know, over the years and probably just this year,""" start="01:11:29.400" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""but also for all that you do for the community you are.""" start="01:11:32.160" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""You are a real unsung hero,""" start="01:11:36.000" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""even though I do hear your praises sung.""" start="01:11:38.760" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""They really can't be sung enough.""" start="01:11:42.320" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""In fact, I just this last week""" start="01:11:43.760" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""recommended to two different people your blog""" start="01:11:45.880" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""as a place to get a first introduction to Emacs.""" start="01:11:48.040" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Your Emacs news is an incredible contribution,""" start="01:11:51.600" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and just I want you to hear us thanking you.""" start="01:11:54.800" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Thank you, Sacha. Emacs is a lot of fun,""" start="01:11:57.960" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and Emacs people are a lot of fun,""" start="01:12:04.880" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""so it's all very wonderful. Yeah, we can wrap up here.""" start="01:12:07.520" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""People can keep hanging out if they want.""" start="01:12:10.880" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""I have a kiddo who is probably going to be back home soon""" start="01:12:15.080" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and will pounce on me for more hugs,""" start="01:12:21.120" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""so I will see y'all tomorrow.""" start="01:12:23.560" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""uh, for more probably the same kind of stuff.""" start="01:12:25.600" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Shut it down, save our energy for tomorrow.""" start="01:12:29.920" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Uh, we do like to run into like hours long closing tomorrow.""" start="01:12:32.680" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""So we'll work on resisting that.""" start="01:12:36.320" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Um, I suggest we, we look, we go get some rest""" start="01:12:38.320" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""and come, come back at it fresh tomorrow.""" start="01:12:41.560" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Anybody else, any concerns with that or shall we go for it?""" start="01:12:43.840" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""Sounds good to me.""" start="01:12:47.800" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""If you've got ideas, pop them into the etherpad.""" start="01:12:50.480" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""And thank you so much for sharing this time with us.""" start="01:12:53.600" video="mainVideo-open-mic" id="subtitle"]] +[[!template text="""See you tomorrow.""" start="01:12:56.640" video="mainVideo-open-mic" id="subtitle"]] + +</div>Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202023%20open-mic%3A%20Open%20session) <!-- End of emacsconf-publish-after-page --> diff --git a/2025/info/open-mic-before.md b/2025/info/open-mic-before.md index ab9982a3..b15685d5 100644 --- a/2025/info/open-mic-before.md +++ b/2025/info/open-mic-before.md @@ -1,19 +1,13 @@ <!-- Automatically generated by emacsconf-publish-before-page --> - -The following image shows where the talk is in the schedule for Sat 2025-12-06. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="open-mic"> -<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2025/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:10 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2025/talks/org-babel" title="Making Org-Babel reactive" data-slug="org-babel"> <title> 9:10- 9:20 Making Org-Babel reactive</title> <rect x="13" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(24,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> org-babel</text></g></a> <a href="/2025/talks/reference" title="Emacs as a fully-fledged reference manager" data-slug="reference"> <title> 9:30- 9:55 Emacs as a fully-fledged reference manager</title> <rect x="41" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(73,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> reference</text></g></a> <a href="/2025/talks/gmail" title="org-gmail: A deep integration of Gmail into your Org Mode" data-slug="gmail"> <title> 10:15-10:40 org-gmail: A deep integration of Gmail into your Org Mode</title> <rect x="102" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(134,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gmail</text></g></a> <a href="/2025/talks/gnus" title="Reading and writing emails in GNU Emacs with Gnus" data-slug="gnus"> <title> 10:50-11:15 Reading and writing emails in GNU Emacs with Gnus</title> <rect x="150" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(182,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gnus</text></g></a> <a href="/2025/talks/latex" title="LaTeX export in org-mode: the overhaul" data-slug="latex"> <title> 11:25-11:45 LaTeX export in org-mode: the overhaul</title> <rect x="199" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(224,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> latex</text></g></a> <a href="/2025/talks/calc" title="Basic Calc functionality for engineering or electronics" data-slug="calc"> <title> 1:00- 1:25 Basic Calc functionality for engineering or electronics</title> <rect x="329" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(361,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> calc</text></g></a> <a href="/2025/talks/blee-lcnt" title="Blee-LCNT: An Emacs-centered content production and self-publication framework" data-slug="blee-lcnt"> <title> 1:35- 2:15 Blee-LCNT: An Emacs-centered content production and self-publication framework</title> <rect x="377" y="15" opacity="0.5" width="54" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(429,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> blee-lcnt</text></g></a> <a href="/2025/talks/greader" title="GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence" data-slug="greader"> <title> 2:35- 2:40 GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence</title> <rect x="459" y="15" opacity="0.5" width="6" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(463,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> greader</text></g></a> <a href="/2025/talks/open-mic" title="Open session" data-slug="open-mic"> <title> 2:50- 3:40 Open session</title> <rect stroke-width="3" x="480" y="15" opacity="0.8" width="68" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(546,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> open-mic</text></g></a> <a href="/2025/talks/sat-close" title="Saturday closing remarks / open session" data-slug="sat-close"> <title> 4:00- 4:10 Saturday closing remarks / open session</title> <rect x="576" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(587,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2025/talks/schemacs" title="One year progress update Schemacs (formerly Gypsum)" data-slug="schemacs"> <title> 9:30- 9:55 One year progress update Schemacs (formerly Gypsum)</title> <rect x="41" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(73,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> schemacs</text></g></a> <a href="/2025/talks/juicemacs" title="Juicemacs: exploring speculative JIT compilation for ELisp in Java" data-slug="juicemacs"> <title> 10:15-10:35 Juicemacs: exploring speculative JIT compilation for ELisp in Java</title> <rect x="102" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(127,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> juicemacs</text></g></a> <a href="/2025/talks/swanky" title="Swanky Python: Interactive development for Python" data-slug="swanky"> <title> 10:45-11:10 Swanky Python: Interactive development for Python</title> <rect x="144" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(176,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> swanky</text></g></a> <a href="/2025/talks/python" title="Interactive Python programming in Emacs" data-slug="python"> <title> 11:20-11:40 Interactive Python programming in Emacs</title> <rect x="192" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(217,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <a href="/2025/talks/llm" title="Emacs, editors, and LLM driven workflows" data-slug="llm"> <title> 1:00- 1:25 Emacs, editors, and LLM driven workflows</title> <rect x="329" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(361,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> llm</text></g></a> <a href="/2025/talks/private-ai" title="Emacs and private AI: a great match" data-slug="private-ai"> <title> 1:45- 2:05 Emacs and private AI: a great match</title> <rect x="391" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(416,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> private-ai</text></g></a> <a href="/2025/talks/commonlisp" title="Common Lisp images communicating like-a-human through shared Emacs slime and eev" data-slug="commonlisp"> <title> 2:25- 2:55 Common Lisp images communicating like-a-human through shared Emacs slime and eev</title> <rect x="446" y="75" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(485,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> commonlisp</text></g></a> <a href="/2025/talks/graphics" title="Modern Emacs/Elisp hardware/software accelerated graphics" data-slug="graphics"> <title> 3:05- 3:30 Modern Emacs/Elisp hardware/software accelerated graphics</title> <rect x="500" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(532,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> graphics</text></g></a> <g transform="translate(0,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 5 PM</text></g></svg> -</div> - [[!toc ]] -Format: 50-min talk ; Q&A: BigBlueButton conference room <https://media.emacsconf.org/2025/current/bbb-open-mic.html> Etherpad: <https://pad.emacsconf.org/2025-open-mic> +Format: 77-min talk ; Q&A: BigBlueButton conference room Etherpad: <https://pad.emacsconf.org/2025-open-mic> Etherpad: <https://pad.emacsconf.org/2025-open-mic> -Discuss on IRC: [#emacsconf-gen](https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen) -Status: Q&A finished, IRC and pad will be archived on this page +Status: TO_REVIEW_QA -<div class="vid mainVideo"><div></div><div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-open-mic">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/current/bbb-open-mic.html">Open public Q&A</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-open-mic--open-session--participants--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-open-mic--open-session--participants--intro.webm">Download --intro.webm</a></li></ul></div></div> +<div class="vid mainVideo"><video controls preload="none" id="mainVideo-open-mic"><source src="https://media.emacsconf.org/2025/emacsconf-2025-open-mic--open-session--participants--original.m4v" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-open-mic--open-session--participants--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 1:16:28 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-open-mic">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-open-mic--open-session--participants--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-open-mic--open-session--participants--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-open-mic--open-session--participants--main.m4v">Download --main.m4v (195MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-open-mic--open-session--participants--main.opus">Download --main.opus (23MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-open-mic--open-session--participants--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-open-mic--open-session--participants--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-open-mic--open-session--participants--main.webm">Download --main.webm (140MB)</a></li><li><a href="https://youtu.be/lnieSGyFRek">View on Youtube</a></li></ul></div></div> # Description <!-- End of emacsconf-publish-before-page -->
\ No newline at end of file diff --git a/2025/info/open-mic-nav.md b/2025/info/open-mic-nav.md index 1fea380b..d0fb4b77 100644 --- a/2025/info/open-mic-nav.md +++ b/2025/info/open-mic-nav.md @@ -1,7 +1,7 @@ <div class="talk-nav"> Back to the [[talks]] -Previous by time: <a href="/2025/talks/greader">GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence</a> -Next by time: <a href="/2025/talks/graphics">Modern Emacs/Elisp hardware/software accelerated graphics</a> -Track: <span class="sched-track General">General</span> - <strong><a href="https://emacsconf.org/2025/watch/gen">Watch</a></strong> +Previous by track: <a href="/2025/talks/greader">GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence</a> +Next by track: <a href="/2025/talks/sun-open">Sunday opening remarks</a> +Track: <span class="sched-track General">General</span> </div> diff --git a/2025/info/org-babel-before.md b/2025/info/org-babel-before.md index abe568f9..5f41d74a 100644 --- a/2025/info/org-babel-before.md +++ b/2025/info/org-babel-before.md @@ -1,14 +1,8 @@ <!-- Automatically generated by emacsconf-publish-before-page --> - -The following image shows where the talk is in the schedule for Sat 2025-12-06. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="org-babel"> -<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2025/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:10 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2025/talks/org-babel" title="Making Org-Babel reactive" data-slug="org-babel"> <title> 9:10- 9:20 Making Org-Babel reactive</title> <rect stroke-width="3" x="13" y="15" opacity="0.8" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(24,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> org-babel</text></g></a> <a href="/2025/talks/reference" title="Emacs as a fully-fledged reference manager" data-slug="reference"> <title> 9:30- 9:55 Emacs as a fully-fledged reference manager</title> <rect x="41" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(73,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> reference</text></g></a> <a href="/2025/talks/gmail" title="org-gmail: A deep integration of Gmail into your Org Mode" data-slug="gmail"> <title> 10:15-10:40 org-gmail: A deep integration of Gmail into your Org Mode</title> <rect x="102" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(134,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gmail</text></g></a> <a href="/2025/talks/gnus" title="Reading and writing emails in GNU Emacs with Gnus" data-slug="gnus"> <title> 10:50-11:15 Reading and writing emails in GNU Emacs with Gnus</title> <rect x="150" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(182,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gnus</text></g></a> <a href="/2025/talks/latex" title="LaTeX export in org-mode: the overhaul" data-slug="latex"> <title> 11:25-11:45 LaTeX export in org-mode: the overhaul</title> <rect x="199" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(224,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> latex</text></g></a> <a href="/2025/talks/calc" title="Basic Calc functionality for engineering or electronics" data-slug="calc"> <title> 1:00- 1:25 Basic Calc functionality for engineering or electronics</title> <rect x="329" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(361,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> calc</text></g></a> <a href="/2025/talks/blee-lcnt" title="Blee-LCNT: An Emacs-centered content production and self-publication framework" data-slug="blee-lcnt"> <title> 1:35- 2:15 Blee-LCNT: An Emacs-centered content production and self-publication framework</title> <rect x="377" y="15" opacity="0.5" width="54" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(429,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> blee-lcnt</text></g></a> <a href="/2025/talks/greader" title="GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence" data-slug="greader"> <title> 2:35- 2:40 GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence</title> <rect x="459" y="15" opacity="0.5" width="6" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(463,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> greader</text></g></a> <a href="/2025/talks/open-mic" title="Open session" data-slug="open-mic"> <title> 2:50- 3:40 Open session</title> <rect x="480" y="15" opacity="0.5" width="68" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(546,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> open-mic</text></g></a> <a href="/2025/talks/sat-close" title="Saturday closing remarks / open session" data-slug="sat-close"> <title> 4:00- 4:10 Saturday closing remarks / open session</title> <rect x="576" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(587,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2025/talks/schemacs" title="One year progress update Schemacs (formerly Gypsum)" data-slug="schemacs"> <title> 9:30- 9:55 One year progress update Schemacs (formerly Gypsum)</title> <rect x="41" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(73,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> schemacs</text></g></a> <a href="/2025/talks/juicemacs" title="Juicemacs: exploring speculative JIT compilation for ELisp in Java" data-slug="juicemacs"> <title> 10:15-10:35 Juicemacs: exploring speculative JIT compilation for ELisp in Java</title> <rect x="102" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(127,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> juicemacs</text></g></a> <a href="/2025/talks/swanky" title="Swanky Python: Interactive development for Python" data-slug="swanky"> <title> 10:45-11:10 Swanky Python: Interactive development for Python</title> <rect x="144" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(176,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> swanky</text></g></a> <a href="/2025/talks/python" title="Interactive Python programming in Emacs" data-slug="python"> <title> 11:20-11:40 Interactive Python programming in Emacs</title> <rect x="192" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(217,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <a href="/2025/talks/llm" title="Emacs, editors, and LLM driven workflows" data-slug="llm"> <title> 1:00- 1:25 Emacs, editors, and LLM driven workflows</title> <rect x="329" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(361,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> llm</text></g></a> <a href="/2025/talks/private-ai" title="Emacs and private AI: a great match" data-slug="private-ai"> <title> 1:45- 2:05 Emacs and private AI: a great match</title> <rect x="391" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(416,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> private-ai</text></g></a> <a href="/2025/talks/commonlisp" title="Common Lisp images communicating like-a-human through shared Emacs slime and eev" data-slug="commonlisp"> <title> 2:25- 2:55 Common Lisp images communicating like-a-human through shared Emacs slime and eev</title> <rect x="446" y="75" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(485,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> commonlisp</text></g></a> <a href="/2025/talks/graphics" title="Modern Emacs/Elisp hardware/software accelerated graphics" data-slug="graphics"> <title> 3:05- 3:30 Modern Emacs/Elisp hardware/software accelerated graphics</title> <rect x="500" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(532,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> graphics</text></g></a> <g transform="translate(0,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 5 PM</text></g></svg> -</div> - [[!toc ]] -Format: 9-min talk ; Q&A: Etherpad <https://pad.emacsconf.org/2025-org-babel> +Format: 9-min talk ; Q&A: Etherpad Etherpad: <https://pad.emacsconf.org/2025-org-babel> -Discuss on IRC: [#emacsconf-gen](https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen) -Status: Q&A finished, IRC and pad will be archived on this page +Status: TO_REVIEW_QA @@ -24,6 +18,6 @@ Status: Q&A finished, IRC and pad will be archived on this page 06:04.534 Making this even better 07:29.966 Wrapping up -"""]]<div></div>Duration: 08:08 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-org-babel">Open Etherpad</a></li><li><a href="https://pad.emacsconf.org/2025-org-babel">Open public Q&A</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-org-babel--making-orgbabel-reactive--abhinav-tushar--edited.vtt">Download --edited.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-org-babel--making-orgbabel-reactive--abhinav-tushar--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-org-babel--making-orgbabel-reactive--abhinav-tushar--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-org-babel--making-orgbabel-reactive--abhinav-tushar--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-org-babel--making-orgbabel-reactive--abhinav-tushar--main.opus">Download --main.opus (7.1MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-org-babel--making-orgbabel-reactive--abhinav-tushar--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-org-babel--making-orgbabel-reactive--abhinav-tushar--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-org-babel--making-orgbabel-reactive--abhinav-tushar--main.webm">Download --main.webm (17MB)</a></li><li><a href="https://youtu.be/1dWWi3xfmug">View on Youtube</a></li></ul></div></div> +"""]]<div></div>Duration: 08:08 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-org-babel">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-org-babel--making-orgbabel-reactive--abhinav-tushar--edited.vtt">Download --edited.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-org-babel--making-orgbabel-reactive--abhinav-tushar--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-org-babel--making-orgbabel-reactive--abhinav-tushar--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-org-babel--making-orgbabel-reactive--abhinav-tushar--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-org-babel--making-orgbabel-reactive--abhinav-tushar--main.opus">Download --main.opus (7.1MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-org-babel--making-orgbabel-reactive--abhinav-tushar--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-org-babel--making-orgbabel-reactive--abhinav-tushar--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-org-babel--making-orgbabel-reactive--abhinav-tushar--main.webm">Download --main.webm (17MB)</a></li><li><a href="https://youtu.be/1dWWi3xfmug">View on Youtube</a></li></ul></div></div> # Description <!-- End of emacsconf-publish-before-page -->
\ No newline at end of file diff --git a/2025/info/org-babel-nav.md b/2025/info/org-babel-nav.md index 024f36ce..a0c351dd 100644 --- a/2025/info/org-babel-nav.md +++ b/2025/info/org-babel-nav.md @@ -1,7 +1,7 @@ <div class="talk-nav"> Back to the [[talks]] -Previous by time: <a href="/2025/talks/sat-open">Saturday opening remarks</a> -Next by time: <a href="/2025/talks/schemacs">One year progress update Schemacs (formerly Gypsum)</a> -Track: <span class="sched-track General">General</span> - <strong><a href="https://emacsconf.org/2025/watch/gen">Watch</a></strong> +Previous by track: <a href="/2025/talks/sat-open">Saturday opening remarks</a> +Next by track: <a href="/2025/talks/reference">Emacs as a fully-fledged reference manager</a> +Track: <span class="sched-track General">General</span> </div> diff --git a/2025/info/private-ai-after.md b/2025/info/private-ai-after.md index 33a2289a..760e20c9 100644 --- a/2025/info/private-ai-after.md +++ b/2025/info/private-ai-after.md @@ -1,7 +1,877 @@ <!-- Automatically generated by emacsconf-publish-after-page --> -Questions or comments? Please e-mail [ajgrothe@yahoo.com](mailto:ajgrothe@yahoo.com?subject=Comment%20for%20EmacsConf%202023%20private-ai%3A%20Emacs%20and%20private%20AI%3A%20a%20great%20match) +<div class="transcript transcript-mainVideo"><a name="private-ai-mainVideo-transcript"></a><h1>Transcript (unedited)</h1> + +[[!template text="""Hey, everybody. Welcome from frigid Omaha, Nebraska.""" start="00:00:00.000" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I'm just going to kick off my talk here,""" start="00:00:04.860" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and we'll see how it all goes. Thanks for attending.""" start="00:00:06.620" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""So the slides will be available on my site, growthy.us,""" start="00:00:23.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""in the presentation section tonight or tomorrow.""" start="00:00:26.940" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""This is a quick intro to one way to do private AI in Emacs.""" start="00:00:29.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""There are a lot of other ways to do it.""" start="00:00:33.100" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""This one is really just more or less the easiest way to do it.""" start="00:00:35.300" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""It's a minimal viable product""" start="00:00:38.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""to get you an idea of how to get started with it""" start="00:00:40.380" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and how to give it a spin.""" start="00:00:42.380" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Really hope some of you give it a shot""" start="00:00:43.860" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and learn something along the way.""" start="00:00:45.820" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""So the overview of the talk.""" start="00:00:48.180" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""broke down these basic bullet points of why private AI,""" start="00:00:50.380" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""what do I need to do private AI, Emacs and private AI,""" start="00:00:54.940" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""pieces for an AI Emacs solution,""" start="00:00:58.940" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""a demo of a minimal viable product, and the summary.""" start="00:01:02.740" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Why private AI? This is pretty simple.""" start="00:01:08.060" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Just read the terms and conditions""" start="00:01:10.780" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""for any AI system you're currently using.""" start="00:01:12.100" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""If you're using the free tiers, your queries,""" start="00:01:14.820" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""code uploaded information""" start="00:01:17.020" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""is being used to train the models.""" start="00:01:18.620" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""In some cases, you are giving the company""" start="00:01:20.700" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""a perpetual license to your data.""" start="00:01:22.940" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""You have no control over this,""" start="00:01:25.420" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""except for not using the engine.""" start="00:01:27.060" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""And keep in mind, the terms""" start="00:01:29.220" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""are changing all the time on that,""" start="00:01:30.700" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and they're not normally changing for our benefit.""" start="00:01:32.180" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""So that's not necessarily a good thing.""" start="00:01:34.140" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""If you're using the paid tiers,""" start="00:01:38.260" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""you may be able to opt out of the data collection.""" start="00:01:40.340" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""But keep in mind, this can change,""" start="00:01:43.460" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""or they may start charging for that option.""" start="00:01:45.540" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Every AI company wants more and more data.""" start="00:01:48.620" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""They need more and more data to train their models.""" start="00:01:51.420" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""It is just the way it is.""" start="00:01:53.780" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""They need more and more information""" start="00:01:56.020" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""to get it more and more accurate to keep it up to date.""" start="00:01:57.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""There's been a story about Stack Overflow.""" start="00:02:00.460" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""It has like half the number of queries they had a year ago""" start="00:02:03.220" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""because people are using AI.""" start="00:02:05.820" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""The problem with that is now""" start="00:02:07.380" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""there's less data going to Stack Overflow""" start="00:02:08.580" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""for the AI to get. vicious cycle,""" start="00:02:10.380" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""especially when you start looking at""" start="00:02:12.980" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""newer language like Ruby and stuff like that.""" start="00:02:14.620" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""So it comes down to being an interesting time.""" start="00:02:16.580" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Another reason why to go private AI is your costs are going to vary.""" start="00:02:21.420" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Right now, these services are being heavily subsidized.""" start="00:02:24.740" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""If you're paying Claude $20 a month,""" start="00:02:27.020" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""it is not costing Claude, those guys $20 a month""" start="00:02:29.420" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""to host all the infrastructure""" start="00:02:32.580" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""to build all these data centers.""" start="00:02:34.100" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""They are severely subsidizing that""" start="00:02:35.620" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""at a very much a loss right now.""" start="00:02:38.780" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""When they start charging the real costs plus a profit,""" start="00:02:41.260" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""it's going to change.""" start="00:02:43.660" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Right now, I use a bunch of different services.""" start="00:02:45.500" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I've played with Grok and a bunch of other ones.""" start="00:02:48.020" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""But Grok right now is like $30 a month""" start="00:02:50.020" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""for a regular Super Grok.""" start="00:02:52.460" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""When they start charging the real cost of that,""" start="00:02:54.140" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""it's going to go from $30 to something a great deal more,""" start="00:02:56.420" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""perhaps, I think, $100 or $200""" start="00:02:59.820" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""or whatever really turns out to be the cost""" start="00:03:02.380" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""when you figure everything into it.""" start="00:03:04.460" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""When you start adding that cost into that,""" start="00:03:06.060" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""a lot of people are using public AI right now""" start="00:03:07.540" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""are going to have no option but to move to private AI""" start="00:03:10.180" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""or give up on AI overall.""" start="00:03:11.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""What do you need to be able to do private AI?""" start="00:03:16.020" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""If you're going to run your own AI,""" start="00:03:18.660" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""you're going to need a system with either some cores,""" start="00:03:21.180" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""a graphics processor unit,""" start="00:03:23.580" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""or a neural processing unit, a GPU or an NPU.""" start="00:03:25.700" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I currently have four systems""" start="00:03:28.340" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I'm experimenting with and playing around with on a daily basis.""" start="00:03:29.820" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I have a System76 Pangolin AMD Ryzen 7 78040U""" start="00:03:32.980" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""with a Radeon 7080M integrated graphics card.""" start="00:03:37.980" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""It's got 32 gigs of RAM.""" start="00:03:41.100" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""It's a beautiful piece of hardware. I really do like it.""" start="00:03:42.540" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I have my main workstation,""" start="00:03:45.260" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""it's an HP Z620 with dual Intel Xeons""" start="00:03:46.500" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""with four NVIDIA K2200 graphics cards in it.""" start="00:03:50.580" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Why the four NVIDIA K2200 graphics card on it?""" start="00:03:53.180" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Because I could buy four of them on eBay for $100""" start="00:03:56.700" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and it was still supported by the NVIDIA drivers for Debian.""" start="00:03:59.740" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""So that's why that is. A MacBook Air with an M1 processor,""" start="00:04:02.380" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""a very nice piece of kit I picked up a couple years ago,""" start="00:04:08.180" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""very cheap, but it runs AI surprisingly well,""" start="00:04:10.940" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and an Acer Aspire 1 with an AMD Ryzen 5700H in it.""" start="00:04:14.140" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""This was my old laptop. It was a sturdy beast.""" start="00:04:18.100" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""It was able to do enough AI to do demos and stuff,""" start="00:04:22.100" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and I liked it quite a bit for that.""" start="00:04:24.380" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I'm using the Pangolin for this demonstration""" start="00:04:25.860" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""because it's just better.""" start="00:04:28.340" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Apple's M4 chip has 38 teraflops of MPU performance.""" start="00:04:30.980" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""The Microsoft co-pilots are now requiring""" start="00:04:37.220" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""45 teraflops of MPU""" start="00:04:40.100" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""to be able to have the co-pilot badge on it.""" start="00:04:41.460" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""And Raspberry Pi's new AI top is about 18 teraflops""" start="00:04:43.940" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and is $70 on top of the cost of Raspberry Pi 5.""" start="00:04:48.300" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Keep in mind Raspberry recently""" start="00:04:51.220" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""raised the cost of their Pi 5s because of RAM pricing,""" start="00:04:56.060" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""which is going to be affecting""" start="00:04:59.500" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""a lot of these types of solutions in the near future.""" start="00:05:00.380" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""But there's going to be a lot of""" start="00:05:02.460" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""local power available in the future.""" start="00:05:05.300" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""That's what it really comes down to.""" start="00:05:06.700" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""A lot of people are going to have PCs on their desks.""" start="00:05:08.220" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""They're going to run a decent private AI""" start="00:05:11.180" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""without much issue. So for Emacs and private AI,""" start="00:05:13.460" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""there's a couple popular solutions.""" start="00:05:18.060" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Gptel, which is the one we're going to talk about.""" start="00:05:20.140" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""It's a simple interface. It's a minimal interface.""" start="00:05:22.100" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""It integrates easily into your workflow.""" start="00:05:24.740" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""It's just, quite honestly, chef's kiss,""" start="00:05:26.580" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""just a beautifully well-done piece of software.""" start="00:05:29.020" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""OllamaBuddy has more features,""" start="00:05:31.060" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""a menu interface, has quick access""" start="00:05:33.860" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""for things like code refactoring,""" start="00:05:36.260" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""text-free formatting, et cetera.""" start="00:05:37.500" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""This is the one that you spend a little more time with,""" start="00:05:38.980" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""but you also get a little bit more back from it.""" start="00:05:41.980" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Elama is another one, has some really good features to it,""" start="00:05:43.940" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""more different capabilities,""" start="00:05:49.420" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""but it's a different set of rules and capabilities to it.""" start="00:05:51.060" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Itermac, which is programming with your AI and Emacs.""" start="00:05:54.980" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""The closest thing I can come up""" start="00:05:59.180" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""to comparing this to is Cursor, except it's an Emacs.""" start="00:06:01.220" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""It's really quite well done.""" start="00:06:04.140" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""These are all really quite well done.""" start="00:06:05.660" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""There's a bunch of other projects out there.""" start="00:06:07.300" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""If you go out to GitHub, type Emacs AI,""" start="00:06:08.500" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""you'll find a lot of different options.""" start="00:06:10.820" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""So what is a minimal viable product that can be done?""" start="00:06:13.220" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""A minimal viable product to show what an AI Emacs solution is""" start="00:06:18.460" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""can be done with only needing two pieces of software.""" start="00:06:23.380" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Llamafile, this is an amazing piece of software.""" start="00:06:27.180" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""This is a whole LLM contained in one file.""" start="00:06:31.180" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""And the same file runs on Mac OS X,""" start="00:06:32.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Linux, Windows, and the BSDs.""" start="00:06:36.060" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""It's a wonderful piece of kit""" start="00:06:39.380" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""based on these people who created""" start="00:06:42.180" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""this thing called Cosmopolitan""" start="00:06:44.180" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""that lets you create and execute""" start="00:06:45.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""while it runs on a bunch of different systems.""" start="00:06:46.780" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""And Gptel, which is an easy plug-in for Emacs,""" start="00:06:48.700" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""which we talked about in the last slide a bit.""" start="00:06:51.300" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""So setting up the LLM, you have to just go out""" start="00:06:54.980" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and just hit the a page for it""" start="00:07:00.180" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and go out and do a wget of it.""" start="00:07:01.700" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""That's all it takes there.""" start="00:07:05.100" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Chmodding it so you can actually execute the executable.""" start="00:07:07.100" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""And then just go ahead and actually running it.""" start="00:07:10.260" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""And let's go ahead and do that.""" start="00:07:12.940" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I've already downloaded it because I don't want to wait.""" start="00:07:16.940" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""And let's just take a look at it.""" start="00:07:18.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I've actually downloaded several of them,""" start="00:07:21.260" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""but let's go ahead and just run lava 3.2b""" start="00:07:22.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""with the 3 billion instructions. And that's it firing up.""" start="00:07:25.700" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""And it is nice enough to actually be listening in port 8080,""" start="00:07:31.180" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""which we'll need in a minute.""" start="00:07:33.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""So once you do that, you have to install gptel and emacs.""" start="00:07:35.340" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""That's as simple as firing up emacs,""" start="00:07:43.140" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""doing the meta x install package,""" start="00:07:45.660" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and then just typing gptel""" start="00:07:48.340" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""if you have your repository set up right,""" start="00:07:49.780" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""which hopefully you do.""" start="00:07:51.500" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""And then you just go ahead and have it.""" start="00:07:52.300" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""You also have to set up a config file.""" start="00:07:54.500" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Here's my example config file as it currently set up,""" start="00:07:58.140" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""requiring ensuring Gptel is loaded,""" start="00:08:01.740" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""defining the Llamafile backend.""" start="00:08:04.020" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""You can put multiple backends into it,""" start="00:08:05.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""but I just have the one defined on this example.""" start="00:08:07.780" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""But it's pretty straightforward.""" start="00:08:09.860" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Llama local file, name for it, stream, protocol HTTP.""" start="00:08:12.060" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""If you have HTTPS set up, that's obviously preferable,""" start="00:08:16.740" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""but a lot of people don't for their home labs.""" start="00:08:20.860" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Host is just 127.0.0.1 port 8080.""" start="00:08:22.780" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Keep in mind, some of the AIs run on a different port,""" start="00:08:26.380" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""so you may be 8081""" start="00:08:30.100" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""if you're running OpenWebView at the same time. The key,""" start="00:08:31.500" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""we don't need an API key because it's a local server.""" start="00:08:34.620" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""And the models just, uh, we can put multiple models""" start="00:08:37.020" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""on there if we want to.""" start="00:08:40.260" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""So if we create one with additional stuff""" start="00:08:41.340" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""or like rag and stuff like that,""" start="00:08:43.700" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""we can actually name those models by their domain,""" start="00:08:45.380" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""which is really kind of cool.""" start="00:08:47.460" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""But, uh, that's all that takes.""" start="00:08:48.700" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""So let's go ahead and go to a quick test of it.""" start="00:08:52.100" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Oops. Alt-X, gptel. And we're going to just choose""" start="00:09:03.780" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""the default buffer to make things easier.""" start="00:09:11.020" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Going to resize it up a bit.""" start="00:09:12.500" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""And usually the go-to question I go to is, who was David Bowie?""" start="00:09:15.340" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""This one is actually a question""" start="00:09:19.860" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""that's turned out to be really good""" start="00:09:24.500" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""for figuring out whether or not AI is complete.""" start="00:09:26.220" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""This is one that some engines do well on, other ones don't.""" start="00:09:28.020" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""And we can just do, we can either do""" start="00:09:31.140" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""the alt X and send the gptel-send,""" start="00:09:33.740" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""or we can just do control C and hit enter.""" start="00:09:36.060" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""We'll just do control C and enter.""" start="00:09:37.980" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""And now it's going ahead and hitting our local AI system""" start="00:09:39.140" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""running on port 8080. And that looks pretty good,""" start="00:09:43.660" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""but let's go ahead and say, hey, it's set to terse mode right now.""" start="00:09:46.660" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Please expand upon this. And there we go.""" start="00:09:50.740" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""We're getting a full description""" start="00:10:03.860" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""of the majority of, uh, about David Bowie's life""" start="00:10:05.380" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and other information about him.""" start="00:10:08.740" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""So very, very happy with that.""" start="00:10:10.140" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""One thing to keep in mind is you look at things""" start="00:10:21.700" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""when you're looking for hallucinations,""" start="00:10:23.540" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""how accurate AI is, how it's compressed""" start="00:10:24.700" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""is it will tend to screw up on things like""" start="00:10:26.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""how many children he had and stuff like that.""" start="00:10:29.260" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Let me see if it gets to that real quick.""" start="00:10:30.860" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Is it not actually on this one?""" start="00:10:32.460" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Alright, so that's the first question I always ask one.""" start="00:10:39.740" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""The next one is what are sea monkeys?""" start="00:10:42.180" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""It gives you an idea of the breadth of the system.""" start="00:10:44.660" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""It's querying right now. Pulls it back correctly. Yes.""" start="00:10:48.980" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""And it's smart enough to actually detect David Bowie""" start="00:11:10.620" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""even referenced see monkeys in the song sea of love,""" start="00:11:12.340" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""which came at hit single.""" start="00:11:15.020" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""So it's actually keeping the context alive""" start="00:11:16.180" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and that which is very cool feature.""" start="00:11:18.860" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I did not see that coming.""" start="00:11:20.420" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Here's one that some people say is a really good one""" start="00:11:21.460" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""to ask ours in strawberry.""" start="00:11:24.140" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""All right, now she's going off the reservation.""" start="00:11:25.740" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""She's going in a different direction.""" start="00:11:46.180" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Let me go ahead and reopen that again,""" start="00:11:48.140" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""because it's went down a bad hole there for a second.""" start="00:11:49.980" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Let me ask it to do write hello world in Emacs list.""" start="00:11:52.980" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Yep, that works. So the point being here,""" start="00:11:58.420" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""that was like two minutes of setup.""" start="00:12:10.420" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""And now we have a small AI embedded inside the system.""" start="00:12:14.940" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""So that gives you an idea just how easy it can be.""" start="00:12:18.020" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""And it's just running locally on the system.""" start="00:12:20.540" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""We also have the default system here as well.""" start="00:12:22.300" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""So not that bad.""" start="00:12:25.260" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""That's a basic solution, that's a basic setup""" start="00:12:32.580" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""that will get you to the point where you can go like,""" start="00:12:35.380" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""it's a party trick, but it's a very cool party trick.""" start="00:12:37.060" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""The way that Gptel works is it puts it into buffers,""" start="00:12:39.860" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""it doesn't interfere with your flow that much,""" start="00:12:42.860" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""it's just an additional window you can pop open""" start="00:12:45.100" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""to ask questions and get information for,""" start="00:12:47.180" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""dump code into it and have it refactored.""" start="00:12:49.020" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Gptel has a lot of additional options""" start="00:12:51.460" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""for things that are really cool for that.""" start="00:12:53.340" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""But if you want a better solution,""" start="00:12:55.700" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I recommend Ollama or LM Studio.""" start="00:12:57.100" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""They're both more capable than llama file.""" start="00:12:59.940" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""They can accept a lot of different models.""" start="00:13:01.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""You can do things like RAG.""" start="00:13:03.860" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""You can do loading of things onto the GPU more explicitly.""" start="00:13:05.740" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""It can speed stuff up.""" start="00:13:09.220" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""One of the things about the retrieval augmentation is""" start="00:13:10.380" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""it will let you put your data into the system""" start="00:13:13.060" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""so you can start uploading your code, your information,""" start="00:13:15.540" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and actually being able to do analysis of it.""" start="00:13:17.780" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""OpenWebUI provides more capabilities.""" start="00:13:20.140" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""It provides an interface that's similar""" start="00:13:23.540" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""to what you're used to seeing""" start="00:13:24.860" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""for chat, GPT, and the other systems.""" start="00:13:25.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""It's really quite well done.""" start="00:13:28.180" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""And once again, gptel, I have to mention that""" start="00:13:29.420" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""because that's the one I really kind of like.""" start="00:13:32.540" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""And OlamaBuddy is also another really nice one.""" start="00:13:34.780" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""So what about the licensing of these models?""" start="00:13:36.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Since I'm going out pulling down""" start="00:13:41.020" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""a model and doing this stuff.""" start="00:13:42.300" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Let's take a look at a couple of highlights""" start="00:13:43.580" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""from the MetaLlama 3 community license scale.""" start="00:13:46.580" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""If your service exceeds 700 million monthly users,""" start="00:13:49.380" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""you need additional licensing.""" start="00:13:52.580" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Probably not going to be a problem for most of us.""" start="00:13:54.100" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""There's a competition restriction.""" start="00:13:56.100" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""You can't use this model to enhance competing models.""" start="00:13:58.380" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""And there's some limitations on using the Meta trademarks.""" start="00:14:00.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Not that big a deal.""" start="00:14:04.220" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""And the other ones are it's a permissive one""" start="00:14:05.940" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""designed to encourage innovation,""" start="00:14:09.140" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""open development, commercial use is allowed,""" start="00:14:10.940" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""but there are some restrictions on it.""" start="00:14:13.780" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Yeah, you can modify the model,""" start="00:14:15.220" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""but you have to rely on the license terms.""" start="00:14:17.260" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""And you can distribute the model with derivatives.""" start="00:14:20.420" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""And there are some very cool ones out there.""" start="00:14:22.340" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""There's people who've done things""" start="00:14:24.060" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""to try and make the llama bee less, what's the phrase,""" start="00:14:25.260" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""ethical if you're doing penetration testing research""" start="00:14:29.580" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and stuff like that.""" start="00:14:31.940" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""It has some very nice value there.""" start="00:14:32.620" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Keep in mind licenses also vary""" start="00:14:34.460" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""depending on the model you're using.""" start="00:14:37.740" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Mistral AI has the non-production license.""" start="00:14:39.620" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""It's designed to keep it to research and development.""" start="00:14:42.420" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""You can't use it commercially.""" start="00:14:45.220" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""So it's designed to clearly delineate""" start="00:14:46.740" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""between research and development""" start="00:14:50.420" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and somebody trying to actually build""" start="00:14:52.940" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""something on top of it.""" start="00:14:54.260" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""And another question I get asked is,""" start="00:14:55.380" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""are there open source data model options?""" start="00:14:57.980" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Yeah, but most of them are small or specialized currently.""" start="00:14:59.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""MoMo is a whole family of them,""" start="00:15:02.820" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""but there tend to be more specialized,""" start="00:15:05.500" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""but it's very cool to see where it's going.""" start="00:15:07.340" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""And it's another thing that's just going forward.""" start="00:15:09.020" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""It's under the MIT license.""" start="00:15:11.340" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Some things to know to help you""" start="00:15:13.380" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""have a better experience with this.""" start="00:15:15.820" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Get a Llama and OpenWebUI working by themselves,""" start="00:15:17.500" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""then set up your config file.""" start="00:15:21.060" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I was fighting both at the same time,""" start="00:15:22.660" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and it turned out I had a problem with my LLAMA.""" start="00:15:24.820" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I had a conflict, so that was what my problem is.""" start="00:15:26.700" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Llamafile, gptel is a great way to start experimenting""" start="00:15:28.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""just to get you an idea of how it works""" start="00:15:32.820" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and figure out how the interfaces work. Tremendous.""" start="00:15:34.300" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""RAG loading documents into it is really easy with open web UI.""" start="00:15:36.940" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""You can create models, you can put things like""" start="00:15:40.740" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""help desk developers and stuff like that, breaking it out.""" start="00:15:43.020" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""The Hacker News has a how to build a $300 AI computer.""" start="00:15:46.420" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""This is for March 2024,""" start="00:15:51.020" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""but it still has a lot of great information""" start="00:15:52.860" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""on how to benchmark the environments,""" start="00:15:55.100" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""what some values are like the Ryzen 5700U""" start="00:15:56.820" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""inside my Acer Aspire,""" start="00:16:01.340" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""that's where I got the idea doing that.""" start="00:16:02.580" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Make sure you do the RockM stuff correctly""" start="00:16:04.420" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""to get the GUI extensions. But it's just really good stuff.""" start="00:16:06.740" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""You don't need a great GPU or CPU to get started.""" start="00:16:09.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Smaller models like Tiny Llama""" start="00:16:13.060" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""can run on very small systems.""" start="00:16:14.820" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""It gets you the ability to start playing with it""" start="00:16:16.180" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and start experimenting and figure out if that's for you""" start="00:16:18.500" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and to move forward with it.""" start="00:16:21.620" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""The AMD Ryzen AI Max 395 plus is a mini PC""" start="00:16:23.380" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""makes it really nice dedicated host.""" start="00:16:29.220" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""You used to be able to buy these for about $1200 now""" start="00:16:31.180" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""with the RAM price increase,""" start="00:16:34.620" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""you want to get 120 gig when you're pushing two brands so.""" start="00:16:35.580" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""It gets a little tighter.""" start="00:16:38.780" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Macs work remarkably well with AI.""" start="00:16:40.740" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""My MacBook Air was one of my go-tos for a while,""" start="00:16:44.100" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""but once I started doing anything AI,""" start="00:16:47.660" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I had a five-minute window""" start="00:16:49.780" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""before the thermal throttling became an issue.""" start="00:16:50.780" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Keep in mind that's a MacBook Air,""" start="00:16:52.620" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""so it doesn't have the greatest ventilation.""" start="00:16:54.620" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""If you get the MacBook Pros and stuff,""" start="00:16:56.660" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""they tend to have more ventilation,""" start="00:16:58.340" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""but still you're going to be pushing against that.""" start="00:17:00.140" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""So Mac Minis and the Mac Ultras and stuff like that""" start="00:17:02.500" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""tend to work really well for that.""" start="00:17:04.940" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Alex Ziskin on YouTube has a channel.""" start="00:17:06.100" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""He does a lot of AI performance benchmarking,""" start="00:17:09.780" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""like I load a 70 billion parameter model""" start="00:17:11.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""on this mini PC and stuff like that.""" start="00:17:14.820" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""It's a lot of fun and interesting stuff there.""" start="00:17:16.700" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""And it's influencing my decision""" start="00:17:19.020" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""to buy my next AI style PC.""" start="00:17:21.220" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Small domain specific LLMs are happening.""" start="00:17:22.980" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""An LLM that has all your code and information,""" start="00:17:27.620" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""it sounds like a really cool idea.""" start="00:17:29.940" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""It gives you capabilities to start training stuff""" start="00:17:31.660" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""that you couldn't do with like the big ones.""" start="00:17:34.300" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Even with in terms of fine tuning and stuff,""" start="00:17:35.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""it's remarkable to see where that space is coming along""" start="00:17:38.060" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""in the next year or so.""" start="00:17:40.540" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Hugging Face Co has pointers to tons of AI models.""" start="00:17:41.740" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""You'll find the one that works for you, hopefully there.""" start="00:17:46.220" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""If you're doing cybersecurity,""" start="00:17:49.260" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""there's a whole bunch out there for that,""" start="00:17:50.540" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""that have certain training on it, information.""" start="00:17:52.060" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""It's really good.""" start="00:17:54.620" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""One last thing to keep in mind is hallucinations are real.""" start="00:17:56.140" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""You will get BS back from the AI occasionally,""" start="00:18:00.100" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""so do validate everything you get from it.""" start="00:18:02.780" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Don't be using it for court cases like some people have""" start="00:18:05.180" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and run into those problems. So, That is my talk.""" start="00:18:08.460" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""What I would like you to get out of that is,""" start="00:18:14.540" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""if you haven't tried it, give GPTEL and LlamaFile a shot.""" start="00:18:17.220" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Fire up a little small AI instance,""" start="00:18:21.860" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""play around with a little bit inside your Emacs,""" start="00:18:23.980" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and see if it makes your life better. Hopefully it will.""" start="00:18:27.340" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""And I really hope you guys""" start="00:18:30.140" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""learned something from this talk. And thanks for listening.""" start="00:18:32.140" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""And the links are at the end of the talk, if you have any questions.""" start="00:18:34.660" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Let me see if we got anything you want, Pat. You do.""" start="00:18:38.980" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""You've got a few questions.""" start="00:18:42.740" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Hey, this is Corwin. Thank you so much. Thank you, Aaron.""" start="00:18:43.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""What an awesome talk this was, actually.""" start="00:18:48.060" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""If you don't have a camera,""" start="00:18:50.340" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I can get away with not having one too.""" start="00:18:52.180" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I've got, I'll turn the camera on.""" start="00:18:54.340" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Okay. All right. I'll turn mine back on. Here I come.""" start="00:18:56.300" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Yeah, so there are a few questions,""" start="00:19:01.500" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""but first let me say thank you""" start="00:19:03.140" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""for a really captivating talk.""" start="00:19:04.580" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I think a lot of people will be empowered from this""" start="00:19:06.340" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""to try to do more with less, especially locally.""" start="00:19:10.940" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""concerned about the data center footprint,""" start="00:19:15.260" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""environmentally concerned""" start="00:19:20.180" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""about the footprint of LLM inside data centers.""" start="00:19:23.660" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""So just thinking about how we can""" start="00:19:26.980" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""put infrastructure we have at home to use""" start="00:19:28.220" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and get more done with less.""" start="00:19:32.420" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Yeah, the data center impact's interesting""" start="00:19:34.020" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""because there was a study a while ago.""" start="00:19:37.500" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Someone said every time you do a Gemini query,""" start="00:19:39.980" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""it's like boiling a cup of water.""" start="00:19:42.100" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Yeah, I've heard that one too. So do you want to, you know,""" start="00:19:45.020" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I don't know how much direction you want.""" start="00:19:48.620" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I'd be very happy to read out the questions for you.""" start="00:19:51.700" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Yeah, that would be great.""" start="00:19:53.860" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I'm having trouble getting to that tab.""" start="00:19:55.220" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Okay, I'm there, so I'll put it into our chat too,""" start="00:19:57.620" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""so you can follow along if you'd like.""" start="00:20:02.780" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""The first question was, why is the David Bowie question""" start="00:20:07.420" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""a good one to start with?""" start="00:20:11.220" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Does it have interesting failure conditions""" start="00:20:12.220" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""or what made you choose that?""" start="00:20:14.420" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""First off, huge fan of David Bowie.""" start="00:20:17.300" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""But I came down to it really taught me a few things""" start="00:20:21.980" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""about how old the models work""" start="00:20:24.500" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""in terms of things like how many kids he had,""" start="00:20:26.300" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""because deep seek, which is a very popular Chinese model""" start="00:20:28.820" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""that a lot of people are using now,""" start="00:20:31.780" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""misidentifies him having three daughters,""" start="00:20:33.180" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and he has like one son and one, one, I think,""" start="00:20:35.620" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""two sons and a daughter or something like that.""" start="00:20:38.460" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""so there's differences on that and it just goes over""" start="00:20:40.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""there's a whole lot of stuff""" start="00:20:43.660" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""because his story spans like 60 years""" start="00:20:45.300" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""so it gives a good good feedback""" start="00:20:47.780" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""that's the real main reason I asked that question""" start="00:20:49.660" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""because I just needed one that sea monkeys I just picked""" start="00:20:51.540" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""because it was obscure and just always have right""" start="00:20:53.700" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I used to have it right hello world and forth""" start="00:20:56.580" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""because I thought was an interesting one as well so""" start="00:20:58.940" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""It's just picking random ones like that.""" start="00:21:01.020" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""One question asked, sorry, a lot of models is,""" start="00:21:03.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""what is the closest star to the Earth?""" start="00:21:06.500" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Because most of them will say Alpha Centauri""" start="00:21:09.420" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""or Proxima Centauri and not the sun.""" start="00:21:12.020" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""And I have a whole nother talk""" start="00:21:13.740" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""where I just argue with the LLM""" start="00:21:15.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""trying to say, hey, the sun is a star.""" start="00:21:17.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""And he just wouldn't accept it, so. What?""" start="00:21:20.020" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Oh, I can hear that.""" start="00:21:26.580" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""So what specific tasks do you like to use your local AI?""" start="00:21:28.420" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I like to load a lot of my code into""" start="00:21:34.380" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and actually have it do analysis of it.""" start="00:21:37.460" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I was actually going through some code""" start="00:21:39.740" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I have for some pen testing, and I was having it modified""" start="00:21:42.340" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""to update it for the newer version,""" start="00:21:45.620" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""because I hate to say this,""" start="00:21:47.260" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""but it was written for Python 2,""" start="00:21:48.460" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and I needed to update it for Python 3.""" start="00:21:49.860" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""And the 2 to 3 tool did not do all of it,""" start="00:21:51.460" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""but the actual tool was able to do the refactoring.""" start="00:21:53.860" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""It's part of my laziness.""" start="00:21:56.660" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""But I use that for anything I don't want to hit the web.""" start="00:21:58.500" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""And that's a lot of stuff when you start thinking about""" start="00:22:01.460" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""if you're doing cyber security researching.""" start="00:22:03.260" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and you have your white papers""" start="00:22:04.980" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and stuff like that and stuff in there.""" start="00:22:06.820" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I've got a lot of that loaded into RAG""" start="00:22:10.780" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""in one model on my OpenWebUI system.""" start="00:22:13.980" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Neat. Have you used have you used""" start="00:22:15.660" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""any small domain specific LLMs? What kind of tasks?""" start="00:22:21.060" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""If so, what kind of tasks that they specialize in?""" start="00:22:25.740" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""And you know, how?""" start="00:22:30.420" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Not to be honest, but there are some out there like once again,""" start="00:22:32.140" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""for cybersecurity and stuff like that,""" start="00:22:34.980" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""that I really need to dig into that's on my to do list.""" start="00:22:36.780" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I've got a couple weeks off at the end of the year.""" start="00:22:39.740" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""And that's a big part of my plan for that.""" start="00:22:41.700" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Are the various models updated pretty regularly?""" start="00:22:43.780" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Can you add your own data to the pre-built models?""" start="00:22:49.380" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Yes. The models are updated pretty reasonably.""" start="00:22:52.060" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""You can add data to a model in a couple of different ways.""" start="00:22:56.700" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""You can do something called fine-tuning,""" start="00:22:59.700" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""which requires a really nice GPU and a lot of CPU time.""" start="00:23:01.100" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Probably not going to do that.""" start="00:23:03.820" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""You can do retrieval augmentation generation,""" start="00:23:05.500" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""which is you load your data on top of the system""" start="00:23:07.420" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and puts inside a database""" start="00:23:09.500" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and you can actually scan that and stuff.""" start="00:23:11.300" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I have another talk where I go through""" start="00:23:12.860" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and I start asking questions about,""" start="00:23:14.620" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I load the talk into the engine""" start="00:23:16.220" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and I ask questions against that.""" start="00:23:18.580" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I would have one more time would have done that""" start="00:23:20.100" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""but it comes down to how many That's that's rag rag""" start="00:23:22.180" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""is pretty easy to do through open web UI or LM studio""" start="00:23:26.500" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""It's a great way you just like point a folder""" start="00:23:29.420" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""point it to a folder and it just sucks all that state into""" start="00:23:31.420" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and it'll hit that data first""" start="00:23:34.100" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""you have like helpdesk and stuff and""" start="00:23:35.500" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""The other options there's vector databases,""" start="00:23:36.860" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""which is like if you use PostgreSQL.""" start="00:23:39.620" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""It has a PG vector I can do a lot of that stuff.""" start="00:23:41.820" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I've not dug into that yet,""" start="00:23:43.700" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""but that is also on that to-do list""" start="00:23:44.740" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I've got a lot of stuff planned for Cool.""" start="00:23:46.100" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""So what are your experience with rags?""" start="00:23:48.460" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I don't even know what that means.""" start="00:23:51.820" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Do you know what that means?""" start="00:23:54.340" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Do you remember this question again?""" start="00:23:57.420" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""What is your experience with RAGs? RAGs is great.""" start="00:23:59.620" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""That's Retrieval Augmentation Generation.""" start="00:24:03.980" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""That loads your data first, and it hits yours,""" start="00:24:07.460" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and it'll actually cite it and stuff.""" start="00:24:09.740" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""There's a guy who wrote a RAG in 100 lines of Python,""" start="00:24:11.500" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and it's an impressive piece of software.""" start="00:24:14.660" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I think if you hit one of my site,""" start="00:24:16.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I've got a private AI talk where I actually refer to that.""" start="00:24:18.780" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""But retrieval augmentation, it's easy, it's fast,""" start="00:24:22.100" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""it puts your data into the system,""" start="00:24:25.220" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Yeah, start with that and go then iterate on top of that.""" start="00:24:26.700" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""That's one of the great things about AI,""" start="00:24:31.340" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""especially private AI,""" start="00:24:32.660" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""is you can do whatever you want to with it""" start="00:24:33.620" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and build up with it as you get more experience.""" start="00:24:37.740" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Any thoughts on running things""" start="00:24:43.180" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""on AWS, DigitalOcean, and so on?""" start="00:24:44.220" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""AWS is not bad.""" start="00:24:49.180" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""The DigitalOcean, they have some of their GPUs.""" start="00:24:50.620" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I still don't like having the data""" start="00:24:52.660" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""leave my house, to be honest, or at work,""" start="00:24:54.380" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""because I tend to do some stuff""" start="00:24:57.420" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""that I don't want it even hitting that situation.""" start="00:24:59.020" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""But they have pretty good stuff.""" start="00:25:01.260" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Another one to consider is Oracle Cloud.""" start="00:25:03.700" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Oracle has their AI infrastructure that's really well done.""" start="00:25:05.580" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""But I mean, once again, then you start looking at potential""" start="00:25:09.060" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""is saying your data is private,""" start="00:25:12.380" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I don't necessarily trust it.""" start="00:25:13.780" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""But they do have good stuff, both DigitalOcean, AWS,""" start="00:25:14.820" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Oracle Cloud has the free service, which isn't too bad,""" start="00:25:17.860" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""usually a certain number of stuff.""" start="00:25:20.340" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""And Google's also has it,""" start="00:25:21.340" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""but I still tend to keep more stuff on local PCs,""" start="00:25:23.180" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""because I just paranoid that way. Gotcha.""" start="00:25:26.740" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""What has your experience been using AI?""" start="00:25:33.300" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Do you want to get into that, using AI for cybersecurity?""" start="00:25:35.580" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""You might have already touched on this.""" start="00:25:40.140" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Yeah, really, for cybersecurity,""" start="00:25:42.020" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""what I've had to do is I've dumped logs""" start="00:25:44.380" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""to have a due correlation.""" start="00:25:46.260" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Keep in mind, the size of that LLAMA file we were using""" start="00:25:47.300" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""for figuring out David Bowie, writing the hello world,""" start="00:25:49.860" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""all that stuff, is like six gig.""" start="00:25:52.060" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""How does it get the entire world in six gig?""" start="00:25:54.180" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I still haven't figured that out in terms of quantization.""" start="00:25:56.860" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""So I'm really interested in seeing the ability""" start="00:25:59.740" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""to take all this stuff out of all my logs,""" start="00:26:02.500" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""dump it all in there,""" start="00:26:05.140" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and actually be able to do intelligent queries against that.""" start="00:26:06.340" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Microsoft has a project called Security Copilot,""" start="00:26:08.460" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""which is trying to do that in the Cloud.""" start="00:26:10.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""But I want to work on something to do that more locally""" start="00:26:12.820" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and be able to actually drive this stuff over that.""" start="00:26:15.300" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""That's one also on the long-term goals.""" start="00:26:19.020" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""So we got any other questions or?""" start="00:26:21.980" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Those are the questions that I see.""" start="00:26:26.060" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I want to just read out a couple of comments""" start="00:26:29.100" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""that I saw in IRC though.""" start="00:26:31.180" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Jay Rutabaga says, it went very well""" start="00:26:33.420" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""from an audience perspective.""" start="00:26:36.700" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""And G Gundam says, respect your commitment to privacy.""" start="00:26:39.260" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""And then somebody is telling us""" start="00:26:43.620" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""we might have skipped a question.""" start="00:26:45.620" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""So I'm just going to run back to my list.""" start="00:26:46.780" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Updated regularly experience.""" start="00:26:50.020" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I just didn't type in the answer here's""" start="00:26:52.820" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and there's a couple more questions coming in so""" start="00:26:57.660" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Is there a disparity where you go to paid models""" start="00:26:59.660" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""because they are better and what problems?""" start="00:27:04.700" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""You know what would drive you to? That's a good question.""" start="00:27:08.620" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Paid models, I don't mind them. I think they're good,""" start="00:27:14.020" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""but I don't think they're actually economically sustainable""" start="00:27:17.820" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""under their current system.""" start="00:27:21.300" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Because right now, if you're paying""" start="00:27:22.660" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""20 bucks a month for Copilot and that goes up to 200 bucks,""" start="00:27:24.300" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I'm not going to be as likely to use it.""" start="00:27:26.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""You know what I mean?""" start="00:27:28.500" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""But it does do some things in a way that I did not expect.""" start="00:27:29.580" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""For example, Grok was refactoring""" start="00:27:33.060" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""some of my code in the comments and dropped an F-bomb.""" start="00:27:35.460" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""which I did not see coming,""" start="00:27:38.020" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""but the other code before""" start="00:27:39.980" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""that I had gotten off GitHub""" start="00:27:41.620" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""had F bombs in it.""" start="00:27:43.220" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""So it was just emulating the style,""" start="00:27:44.060" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""but would that be something""" start="00:27:45.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I'd want to turn in a pull request? I don't know.""" start="00:27:47.780" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""But, uh, there's, there's a lot of money""" start="00:27:49.980" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""going into these AIs and stuff,""" start="00:27:52.140" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""but in terms of the ability to get a decent one,""" start="00:27:53.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""like the llama, llama three, two,""" start="00:27:56.220" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and load your data into it, you can be pretty competitive.""" start="00:27:57.980" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""You're not going to get all the benefits,""" start="00:28:01.700" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""but you have more control over it.""" start="00:28:04.780" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""So it's, it's a, this and that it's a,""" start="00:28:07.300" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""it's a balancing act.""" start="00:28:11.820" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Okay, and I think I see a couple more questions coming in.""" start="00:28:13.140" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""What is the largest parameter size for local models""" start="00:28:15.540" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""that you've been able to successfully run locally""" start="00:28:19.620" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and do run into issues with limited context window size?""" start="00:28:22.460" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""The top eight models will tend to have a larger ceiling.""" start="00:28:26.060" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Yes, yes, yes, yes, yes.""" start="00:28:29.660" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""By default, the context size is I think 1024.""" start="00:28:32.860" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""But I've upped it to 8192 on the on this box, the Pangolin""" start="00:28:37.020" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""because it seems to be some reason""" start="00:28:44.620" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""it's just a very working quite well.""" start="00:28:46.940" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""But the largest ones I've loaded have been in""" start="00:28:49.460" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""the have not been that huge.""" start="00:28:52.220" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I've loaded this the last biggest one I've done.""" start="00:28:54.060" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""That's the reason why I'm planning""" start="00:28:55.700" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""on breaking down and buying a Ryzen.""" start="00:28:57.460" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Actually, I'm going to buy""" start="00:29:01.340" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""an Intel i285H with 96 gig of RAM.""" start="00:29:03.620" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Then I should be able to load""" start="00:29:06.980" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""a 70 billion parameter model in that. How fast will it run?""" start="00:29:08.380" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""It's going to run slow as dog,""" start="00:29:12.060" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""but it's going to be cool to be able to do it.""" start="00:29:13.820" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""It's an AI bragging rights thing,""" start="00:29:15.820" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""but I mostly stick with the smaller size models""" start="00:29:17.380" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and the ones that are more quantitized""" start="00:29:20.020" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""because it just tends to work better for me.""" start="00:29:22.820" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""We've still got over 10 minutes before we're cutting away,""" start="00:29:26.620" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""but I'm just anticipating""" start="00:29:29.180" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""that we're going to be going strong at the 10 minute mark.""" start="00:29:30.180" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""So I'm just, just letting, you know,""" start="00:29:32.860" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""we can go as long as we like here at a certain point.""" start="00:29:34.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I may have to jump away and check in with the next speaker,""" start="00:29:37.380" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""but we'll post the entirety of this,""" start="00:29:41.060" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""even if we aren't able to stay with it all.""" start="00:29:44.420" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Okay. And we've got 10 minutes""" start="00:29:47.980" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""where we're still going to stay live.""" start="00:29:49.740" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""So next question coming in, I see, are there free as in freedom,""" start="00:29:52.380" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""free as in FSF issues with the data?""" start="00:30:00.140" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Yes, where's the data coming from is a huge question with AI.""" start="00:30:05.740" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""It's astonishing you can ask questions""" start="00:30:11.700" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""to models that you don't know where it's coming from.""" start="00:30:13.740" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""That is gonna be one of the big issues long-term.""" start="00:30:16.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""There are people who are working""" start="00:30:19.980" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""on trying to figure out that stuff,""" start="00:30:21.500" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""but it's, I mean, if you look at, God,""" start="00:30:22.980" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I can't remember who it was.""" start="00:30:25.260" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Somebody was actually out torrenting books""" start="00:30:27.060" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""just to be able to build into their AI system.""" start="00:30:28.660" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I think it might've been Meta.""" start="00:30:30.940" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""So there's a lot of that going on.""" start="00:30:32.340" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""The open source of the stuff is going to be tough.""" start="00:30:34.820" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""There's going to be there's some models""" start="00:30:38.140" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""like the mobile guys have got their own license,""" start="00:30:39.460" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""but where they're getting their data from,""" start="00:30:41.420" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I'm not sure on so that that's a huge question.""" start="00:30:42.740" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""That's a that's a talk in itself.""" start="00:30:45.500" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""But yeah, but you if you train on your RAG and your data,""" start="00:30:47.980" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""you know what it's come, you know,""" start="00:30:51.980" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""you have a license that""" start="00:30:53.500" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""but the other stuff is just""" start="00:30:54.380" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""more lines of supplement""" start="00:30:55.140" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""if you're using a smaller model,""" start="00:30:56.740" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""but the comment online, I see a couple of them.""" start="00:31:01.380" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I'll read them out in order here. Really interesting stuff.""" start="00:31:05.420" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Thank you for your talk. Given that large AI companies""" start="00:31:08.340" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""are openly stealing intellectual property and copyright""" start="00:31:11.660" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and therefore eroding the authority of such laws""" start="00:31:14.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and maybe obscuring the truth itself,""" start="00:31:18.940" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""can you see a future where IP and copyright flaw become untenable?""" start="00:31:21.580" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I think that's a great question.""" start="00:31:26.580" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I'm not a lawyer, but it is really getting complicated.""" start="00:31:29.620" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""It is getting to the point, I asked a question from,""" start="00:31:34.980" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I played with Sora a little bit, and it generated someone,""" start="00:31:37.860" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""you can go like, oh, that's Jon Hamm,""" start="00:31:41.180" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""that's Christopher Walken,""" start="00:31:42.820" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""you start figuring out who the people""" start="00:31:44.100" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""they're modeling stuff after.""" start="00:31:45.380" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""There is an apocalypse, something""" start="00:31:47.020" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""going to happen right now.""" start="00:31:48.980" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""There is, but this is once again,""" start="00:31:52.460" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""my personal opinion, and I'm not a lawyer,""" start="00:31:53.580" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and I do not have money.""" start="00:31:56.060" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""So don't sue me, is there's going to be""" start="00:31:57.460" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""the current administration tends is very AI pro AI.""" start="00:31:58.860" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""And there's very a great deal of lobbying by those groups.""" start="00:32:02.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""And it's on both sides.""" start="00:32:05.500" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""And it's going to be, it's gonna be interesting to see""" start="00:32:07.140" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""what happens to copyright the next 510 years.""" start="00:32:09.700" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I just don't know how it keeps up""" start="00:32:11.700" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""without there being some adjustments and stuff.""" start="00:32:13.340" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Okay, and then another comment I saw,""" start="00:32:16.060" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""file size is not going to be a bottleneck.""" start="00:32:20.420" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""RAM is. You'll need 16 gigabytes of RAM""" start="00:32:23.220" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""to run the smallest local models""" start="00:32:25.820" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and 512 gigabytes of RAM to run the larger ones.""" start="00:32:28.260" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""You'll need a GPU with that much memory""" start="00:32:31.980" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""if you want it to run quickly. Yeah. Oh no.""" start="00:32:35.060" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""It also depends upon how your memory is laid out.""" start="00:32:39.100" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Like example being the Ultra i285H""" start="00:32:41.260" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I plan to buy, that has 96 gig of memory.""" start="00:32:45.700" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""It's unified between the GPU and the CPU share it,""" start="00:32:47.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""but they go over the same bus.""" start="00:32:50.500" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""So the overall bandwidth of it tends to be a bit less,""" start="00:32:52.740" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""but you're able to load more of it into memory.""" start="00:32:55.780" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""So it's able to do some additional stuff with it""" start="00:32:57.580" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""as opposed to come off disk.""" start="00:32:59.420" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""It's all balancing act. If you hit Zyskin's website,""" start="00:33:00.820" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""that guy's done some great work on it.""" start="00:33:03.700" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I'm trying to figure out how big a model you can do,""" start="00:33:05.820" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""what you can do with it.""" start="00:33:07.500" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""And some of the stuff seems to be not obvious,""" start="00:33:08.620" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""because like example, being that MacBook Air,""" start="00:33:12.700" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""for the five minutes I can run the model,""" start="00:33:15.300" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""it runs it faster than a lot of other things""" start="00:33:17.620" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""that should be able to run it faster,""" start="00:33:19.380" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""just because of the way the ARM cores and the unified memory work on it.""" start="00:33:21.340" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""So it's a learning process.""" start="00:33:24.620" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""But if you want to, Network Chuck had a great video""" start="00:33:26.020" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""talking about building his own system""" start="00:33:29.580" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""with a couple really powerful NVIDIA cards""" start="00:33:30.940" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and stuff like that in it.""" start="00:33:34.380" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""And just actually setting up on his system as a node""" start="00:33:35.380" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and using a web UI on it. So there's a lot of stuff there,""" start="00:33:38.860" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""but it is a process of learning how big your data is,""" start="00:33:41.460" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""which models you want to use,""" start="00:33:43.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""how much information you need,""" start="00:33:44.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""but it's part of the learning.""" start="00:33:46.220" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""And you can run models, even as a Raspberry PI fives,""" start="00:33:48.020" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""if you want to, they'll run slow.""" start="00:33:52.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Don't get me wrong, but they're possible.""" start="00:33:54.500" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Okay, and I think there's other questions coming in too,""" start="00:33:56.460" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""so I'll just bam for another second.""" start="00:34:02.180" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""We've got about five minutes before we'll,""" start="00:34:04.020" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""before we'll be cutting over,""" start="00:34:06.300" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""but I just want to say in case we get close for time here,""" start="00:34:09.740" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""how much I appreciate your talk.""" start="00:34:13.180" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""This is another one that I'm going to""" start="00:34:14.860" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""have to study after the conference.""" start="00:34:15.980" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""We greatly appreciate, all of us appreciate""" start="00:34:18.340" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""you guys putting on the conference.""" start="00:34:21.100" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""It's a great conference. It's well done.""" start="00:34:22.460" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""It's an honor to be on the stage""" start="00:34:26.300" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""with the brains of the project, which is you.""" start="00:34:28.020" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""So what else we got? Question wise.""" start="00:34:30.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Okay, so just scanning here.""" start="00:34:34.700" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Have you used local models capable of tool calling?""" start="00:34:39.500" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I'm, I'm scared of agentic.""" start="00:34:50.700" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I, I am, I'm going to be a slow adopter of that.""" start="00:34:54.780" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I want to do it, but I just don't have the, uh,""" start="00:34:58.740" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""four decimal fortitude right now to do it.""" start="00:35:02.460" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I, I, I've had to give me the commands,""" start="00:35:04.340" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""but I still run the commands by hand.""" start="00:35:07.180" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I'm looking into it and it's on once again,""" start="00:35:08.740" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""it's on that list, but I just, that's a big step for me.""" start="00:35:10.540" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""So. Awesome. All right.""" start="00:35:14.140" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Well, maybe it's, let me just scroll through""" start="00:35:23.140" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""because we might have missed one question. Oh, I see.""" start="00:35:27.180" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Here was the piggyback question.""" start="00:35:31.540" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Now I see the question that I missed.""" start="00:35:36.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""So this was piggybacking on the question""" start="00:35:38.420" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""about model updates and adding data.""" start="00:35:41.140" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""And will models reach out to the web""" start="00:35:44.860" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""if they need more info?""" start="00:35:46.580" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Or have you worked with any models that work that way?""" start="00:35:47.820" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""No, I've not seen any models to do that""" start="00:35:51.780" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""There's there was like a group""" start="00:35:55.260" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""working on something like a package updater""" start="00:35:57.740" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""that would do different diffs on it,""" start="00:35:59.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""but it's so Models change so much""" start="00:36:02.500" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""even who make minor changes and fine-tuning.""" start="00:36:03.940" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""It's hard just to update them in place""" start="00:36:05.740" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""So I haven't seen one, but that doesn't mean""" start="00:36:07.660" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""they're not out there. I'm curious topic though Awesome""" start="00:36:10.100" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Well, it's probably pretty good timing.""" start="00:36:16.260" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Let me just scroll and make sure.""" start="00:36:19.540" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""And of course, before I can say that,""" start="00:36:21.300" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""there's one more question. So let's go ahead and have that.""" start="00:36:23.500" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I want to make sure while we're still live, though,""" start="00:36:25.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I give you a chance to offer any closing thoughts.""" start="00:36:28.300" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""So what scares you most about the agentic tools?""" start="00:36:31.300" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""How would you think about putting a sandbox around that""" start="00:36:35.780" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""if you did adopt an agentic workflow?""" start="00:36:38.420" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""That is a great question.""" start="00:36:42.140" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""In terms of that, I would just control""" start="00:36:42.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""what it's able to talk to, what machines,""" start="00:36:45.940" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I would actually have it be air gap.""" start="00:36:48.100" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I work for a defense contractor,""" start="00:36:50.060" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and we spend a lot of time dealing with air gap systems,""" start="00:36:52.100" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""because that's just kind of the way it works out for us.""" start="00:36:53.820" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""So agentic, it's just going to take a while to get trust.""" start="00:36:55.980" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I want to want to see more stuff happening.""" start="00:36:58.500" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Humans screw up stuff enough.""" start="00:37:01.060" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""The last thing we need is to multiply that by 1000.""" start="00:37:02.820" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""So in terms of that, I would be restricting what it can do.""" start="00:37:04.820" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""If you look at the capabilities,""" start="00:37:09.420" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""if I created a user and gave it permissions,""" start="00:37:10.860" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I would have a lockdown through sudo,""" start="00:37:13.580" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""what it's able to do, what the account's able to do.""" start="00:37:15.300" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I would do those kind of things,""" start="00:37:17.380" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""but it's going to be, it's happening.""" start="00:37:18.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""It's just, I'm going to be one of the laggards on that one.""" start="00:37:20.860" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""So airgab, jail, extremely locked down environments,""" start="00:37:25.820" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""like we're talking about separate physicals, not Docker.""" start="00:37:29.260" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Yeah, hopefully. Right, fair.""" start="00:37:34.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""So tool calling can be read-only,""" start="00:37:37.500" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""such as giving models the ability to search the web""" start="00:37:39.900" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""before answering your question,""" start="00:37:42.540" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""you know, write access, execute access.""" start="00:37:43.980" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I'm interested to know if local models""" start="00:37:46.220" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""are any good at that.""" start="00:37:49.220" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Yes, local models can do a lot of that stuff.""" start="00:37:51.420" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""It's their capabilities.""" start="00:37:55.580" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""If you load LM studio, you can do a lot of wonderful stuff""" start="00:37:56.820" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""with that or with open web UI with a llama.""" start="00:37:59.020" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""It's a lot of capabilities. It's amazing.""" start="00:38:02.420" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Open web UI is actually what a lot of companies are using now""" start="00:38:05.740" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""to put their data behind that.""" start="00:38:08.140" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""They're curated data and stuff like that. So works well.""" start="00:38:10.260" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I can confirm that from my own professional experience.""" start="00:38:12.140" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Excellent. Okay, well, our timing should be just perfect""" start="00:38:15.820" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""if you want to give us like a 30-second, 45-second wrap-up.""" start="00:38:19.660" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Aaron, let me squeeze in mine.""" start="00:38:22.660" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Thank you again so much for preparing this talk""" start="00:38:24.420" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and for entertaining all of our questions.""" start="00:38:26.780" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Yeah, let me just thank you guys for the conference again.""" start="00:38:30.500" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""This is a great one. I've enjoyed a lot of it.""" start="00:38:33.300" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""I've only had a couple of talks so far,""" start="00:38:35.180" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""but I'm looking forward to hitting the ones after this and tomorrow.""" start="00:38:37.340" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""But the AI stuff is coming. Get on board.""" start="00:38:41.660" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Definitely recommend it. If you want to just try it out""" start="00:38:44.740" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and get a little taste of it,""" start="00:38:46.940" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""what my minimal viable product""" start="00:38:48.420" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""with just LlamaFile and GPTEL""" start="00:38:49.780" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""will get you to the point where you start figuring out.""" start="00:38:51.620" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Gptel is an amazing thing. It just gets out of your way,""" start="00:38:53.140" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""but it works solo with Emacs. Design because it takes""" start="00:38:55.580" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""doesn't take your hands off the keyboard.""" start="00:39:00.460" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""It's just another buffer""" start="00:39:01.700" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and you just put information in there.""" start="00:39:02.500" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""It's quite quite a wonderful It's a wonderful time.""" start="00:39:04.060" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Let's put that way That's all I got Thank you""" start="00:39:06.980" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""so much for once again, and we're we're just cut away.""" start="00:39:10.820" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""So I'll stop the recording""" start="00:39:14.340" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and you're on your own recognizance""" start="00:39:15.780" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Well, I'm gonna punch out""" start="00:39:18.260" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""if anybody has any questions or anything""" start="00:39:19.700" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""my email address is ajgrothe@yahoo.com or at gmail and""" start="00:39:21.060" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Thank you all for attending""" start="00:39:24.700" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""and thanks again for the conference""" start="00:39:26.780" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Okay, I'm gonna go ahead and end the room there, thank you.""" start="00:39:29.940" video="mainVideo-private-ai" id="subtitle"]] +[[!template text="""Excellent, thanks, bye.""" start="00:39:32.580" video="mainVideo-private-ai" id="subtitle"]] + +</div>Questions or comments? Please e-mail [ajgrothe@yahoo.com](mailto:ajgrothe@yahoo.com?subject=Comment%20for%20EmacsConf%202023%20private-ai%3A%20Emacs%20and%20private%20AI%3A%20a%20great%20match) <!-- End of emacsconf-publish-after-page --> diff --git a/2025/info/private-ai-before.md b/2025/info/private-ai-before.md index acdc3861..48fdf92a 100644 --- a/2025/info/private-ai-before.md +++ b/2025/info/private-ai-before.md @@ -1,19 +1,13 @@ <!-- Automatically generated by emacsconf-publish-before-page --> - -The following image shows where the talk is in the schedule for Sat 2025-12-06. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="private-ai"> -<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2025/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:10 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2025/talks/org-babel" title="Making Org-Babel reactive" data-slug="org-babel"> <title> 9:10- 9:20 Making Org-Babel reactive</title> <rect x="13" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(24,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> org-babel</text></g></a> <a href="/2025/talks/reference" title="Emacs as a fully-fledged reference manager" data-slug="reference"> <title> 9:30- 9:55 Emacs as a fully-fledged reference manager</title> <rect x="41" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(73,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> reference</text></g></a> <a href="/2025/talks/gmail" title="org-gmail: A deep integration of Gmail into your Org Mode" data-slug="gmail"> <title> 10:15-10:40 org-gmail: A deep integration of Gmail into your Org Mode</title> <rect x="102" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(134,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gmail</text></g></a> <a href="/2025/talks/gnus" title="Reading and writing emails in GNU Emacs with Gnus" data-slug="gnus"> <title> 10:50-11:15 Reading and writing emails in GNU Emacs with Gnus</title> <rect x="150" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(182,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gnus</text></g></a> <a href="/2025/talks/latex" title="LaTeX export in org-mode: the overhaul" data-slug="latex"> <title> 11:25-11:45 LaTeX export in org-mode: the overhaul</title> <rect x="199" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(224,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> latex</text></g></a> <a href="/2025/talks/calc" title="Basic Calc functionality for engineering or electronics" data-slug="calc"> <title> 1:00- 1:25 Basic Calc functionality for engineering or electronics</title> <rect x="329" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(361,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> calc</text></g></a> <a href="/2025/talks/blee-lcnt" title="Blee-LCNT: An Emacs-centered content production and self-publication framework" data-slug="blee-lcnt"> <title> 1:35- 2:15 Blee-LCNT: An Emacs-centered content production and self-publication framework</title> <rect x="377" y="15" opacity="0.5" width="54" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(429,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> blee-lcnt</text></g></a> <a href="/2025/talks/greader" title="GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence" data-slug="greader"> <title> 2:35- 2:40 GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence</title> <rect x="459" y="15" opacity="0.5" width="6" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(463,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> greader</text></g></a> <a href="/2025/talks/open-mic" title="Open session" data-slug="open-mic"> <title> 2:50- 3:40 Open session</title> <rect x="480" y="15" opacity="0.5" width="68" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(546,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> open-mic</text></g></a> <a href="/2025/talks/sat-close" title="Saturday closing remarks / open session" data-slug="sat-close"> <title> 4:00- 4:10 Saturday closing remarks / open session</title> <rect x="576" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(587,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2025/talks/schemacs" title="One year progress update Schemacs (formerly Gypsum)" data-slug="schemacs"> <title> 9:30- 9:55 One year progress update Schemacs (formerly Gypsum)</title> <rect x="41" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(73,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> schemacs</text></g></a> <a href="/2025/talks/juicemacs" title="Juicemacs: exploring speculative JIT compilation for ELisp in Java" data-slug="juicemacs"> <title> 10:15-10:35 Juicemacs: exploring speculative JIT compilation for ELisp in Java</title> <rect x="102" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(127,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> juicemacs</text></g></a> <a href="/2025/talks/swanky" title="Swanky Python: Interactive development for Python" data-slug="swanky"> <title> 10:45-11:10 Swanky Python: Interactive development for Python</title> <rect x="144" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(176,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> swanky</text></g></a> <a href="/2025/talks/python" title="Interactive Python programming in Emacs" data-slug="python"> <title> 11:20-11:40 Interactive Python programming in Emacs</title> <rect x="192" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(217,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <a href="/2025/talks/llm" title="Emacs, editors, and LLM driven workflows" data-slug="llm"> <title> 1:00- 1:25 Emacs, editors, and LLM driven workflows</title> <rect x="329" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(361,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> llm</text></g></a> <a href="/2025/talks/private-ai" title="Emacs and private AI: a great match" data-slug="private-ai"> <title> 1:45- 2:05 Emacs and private AI: a great match</title> <rect stroke-width="3" x="391" y="75" opacity="0.8" width="27" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(416,133)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> private-ai</text></g></a> <a href="/2025/talks/commonlisp" title="Common Lisp images communicating like-a-human through shared Emacs slime and eev" data-slug="commonlisp"> <title> 2:25- 2:55 Common Lisp images communicating like-a-human through shared Emacs slime and eev</title> <rect x="446" y="75" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(485,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> commonlisp</text></g></a> <a href="/2025/talks/graphics" title="Modern Emacs/Elisp hardware/software accelerated graphics" data-slug="graphics"> <title> 3:05- 3:30 Modern Emacs/Elisp hardware/software accelerated graphics</title> <rect x="500" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(532,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> graphics</text></g></a> <g transform="translate(0,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 5 PM</text></g></svg> -</div> - [[!toc ]] -Format: 20-min talk ; Q&A: BigBlueButton conference room <https://media.emacsconf.org/2025/current/bbb-private-ai.html> Etherpad: <https://pad.emacsconf.org/2025-private-ai> +Format: 42-min talk ; Q&A: BigBlueButton conference room Etherpad: <https://pad.emacsconf.org/2025-private-ai> Etherpad: <https://pad.emacsconf.org/2025-private-ai> -Discuss on IRC: [#emacsconf-dev](https://chat.emacsconf.org/?join=emacsconf,emacsconf-dev) -Status: Q&A finished, IRC and pad will be archived on this page +Status: TO_INDEX_QA -<div class="vid mainVideo"><div></div><div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-private-ai">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/current/bbb-private-ai.html">Open public Q&A</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-private-ai--emacs-and-private-ai-a-great-match--aaron-grothe--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-private-ai--emacs-and-private-ai-a-great-match--aaron-grothe--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-private-ai--emacs-and-private-ai-a-great-match--aaron-grothe--slides.pdf">Download --slides.pdf</a></li></ul></div></div> +<div class="vid mainVideo"><video controls preload="none" id="mainVideo-private-ai"><source src="https://media.emacsconf.org/2025/emacsconf-2025-private-ai--emacs-and-private-ai-a-great-match--aaron-grothe--original.m4v" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-private-ai--emacs-and-private-ai-a-great-match--aaron-grothe--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 41:52 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-private-ai">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-private-ai--emacs-and-private-ai-a-great-match--aaron-grothe--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-private-ai--emacs-and-private-ai-a-great-match--aaron-grothe--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-private-ai--emacs-and-private-ai-a-great-match--aaron-grothe--main.opus">Download --main.opus (3MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-private-ai--emacs-and-private-ai-a-great-match--aaron-grothe--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-private-ai--emacs-and-private-ai-a-great-match--aaron-grothe--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-private-ai--emacs-and-private-ai-a-great-match--aaron-grothe--main.webm">Download --main.webm (44MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-private-ai--emacs-and-private-ai-a-great-match--aaron-grothe--slides.pdf">Download --slides.pdf</a></li><li><a href="https://www.youtube.com/watch?v=zN3_vNaLheU">View on Youtube</a></li></ul></div></div> # Description <!-- End of emacsconf-publish-before-page -->
\ No newline at end of file diff --git a/2025/info/private-ai-nav.md b/2025/info/private-ai-nav.md index 7add07e0..f1da6dba 100644 --- a/2025/info/private-ai-nav.md +++ b/2025/info/private-ai-nav.md @@ -1,7 +1,7 @@ <div class="talk-nav"> Back to the [[talks]] -Previous by time: <a href="/2025/talks/blee-lcnt">Blee-LCNT: An Emacs-centered content production and self-publication framework</a> -Next by time: <a href="/2025/talks/commonlisp">Common Lisp images communicating like-a-human through shared Emacs slime and eev</a> -Track: <span class="sched-track Development">Development</span> - <strong><a href="https://emacsconf.org/2025/watch/dev">Watch</a></strong> +Previous by track: <a href="/2025/talks/llm">Emacs, editors, and LLM driven workflows</a> +Next by track: <a href="/2025/talks/commonlisp">Common Lisp images communicating like-a-human through shared Emacs slime and eev</a> +Track: <span class="sched-track Development">Development</span> </div> diff --git a/2025/info/python-after.md b/2025/info/python-after.md index 4233580a..508a4acc 100644 --- a/2025/info/python-after.md +++ b/2025/info/python-after.md @@ -253,7 +253,296 @@ Captioner: sachac -Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202023%20python%3A%20Interactive%20Python%20programming%20in%20Emacs) +<div class="transcript transcript-qanda"><a name="python-qanda-transcript"></a><h1>Q&A transcript (unedited)</h1> + +[[!template text="""So as we wait for people to drop""" start="00:00:00.000" video="qanda-python" id="subtitle"]] +[[!template text="""in their questions and so on,""" start="00:00:02.840" video="qanda-python" id="subtitle"]] +[[!template text="""I'll just kind of add a couple of thoughts.""" start="00:00:04.280" video="qanda-python" id="subtitle"]] +[[!template text="""I'm not personally much of a Python developer,""" start="00:00:08.720" video="qanda-python" id="subtitle"]] +[[!template text="""so I'm just curious as to your thoughts on using Emacs""" start="00:00:12.040" video="qanda-python" id="subtitle"]] +[[!template text="""and kind of the development methodology you showed""" start="00:00:17.760" video="qanda-python" id="subtitle"]] +[[!template text="""as a way to learn Python.""" start="00:00:24.320" video="qanda-python" id="subtitle"]] +[[!template text="""Yeah, I think Emacs is perfect for it.""" start="00:00:26.520" video="qanda-python" id="subtitle"]] +[[!template text="""If you're already an Emacs user""" start="00:00:29.240" video="qanda-python" id="subtitle"]] +[[!template text="""and you have the keyboard commands""" start="00:00:31.760" video="qanda-python" id="subtitle"]] +[[!template text="""and everything uploaded in your brain,""" start="00:00:35.600" video="qanda-python" id="subtitle"]] +[[!template text="""then learning Python shouldn't be too difficult,""" start="00:00:38.720" video="qanda-python" id="subtitle"]] +[[!template text="""because there's a lot of good packages.""" start="00:00:42.600" video="qanda-python" id="subtitle"]] +[[!template text="""For Python, I'm using a thing called elpy,""" start="00:00:44.840" video="qanda-python" id="subtitle"]] +[[!template text="""which is really good. for Python development.""" start="00:00:51.320" video="qanda-python" id="subtitle"]] +[[!template text="""So you have this connection to a running backend,""" start="00:00:55.680" video="qanda-python" id="subtitle"]] +[[!template text="""the Jedi Python backend that will give you autocomplete""" start="00:01:00.040" video="qanda-python" id="subtitle"]] +[[!template text="""and some refactoring and things like that.""" start="00:01:06.040" video="qanda-python" id="subtitle"]] +[[!template text="""So I think Emacs is really good for Python development.""" start="00:01:09.040" video="qanda-python" id="subtitle"]] +[[!template text="""So what are some other...""" start="00:01:14.440" video="qanda-python" id="subtitle"]] +[[!template text="""How long have you been using Emacs?""" start="00:01:16.680" video="qanda-python" id="subtitle"]] +[[!template text="""Kind of a general question.""" start="00:01:18.320" video="qanda-python" id="subtitle"]] +[[!template text="""Sorry if you covered this and I missed it.""" start="00:01:19.600" video="qanda-python" id="subtitle"]] +[[!template text="""It's not that long actually.""" start="00:01:23.600" video="qanda-python" id="subtitle"]] +[[!template text="""I think it was in 2019 or 2020.""" start="00:01:26.600" video="qanda-python" id="subtitle"]] +[[!template text="""It's when I started to, I was really fortunate enough""" start="00:01:31.600" video="qanda-python" id="subtitle"]] +[[!template text="""to join a team that had chosen to""" start="00:01:34.800" video="qanda-python" id="subtitle"]] +[[!template text="""develop an app in Lisp, in Clojure.""" start="00:01:38.040" video="qanda-python" id="subtitle"]] +[[!template text="""yeah and i didn't know anything about it""" start="00:01:42.920" video="qanda-python" id="subtitle"]] +[[!template text="""i didn't know lisp at all so it was like brand new""" start="00:01:45.040" video="qanda-python" id="subtitle"]] +[[!template text="""so i really had struggling to to learn it""" start="00:01:47.360" video="qanda-python" id="subtitle"]] +[[!template text="""but at the same time i was looking for okay""" start="00:01:50.640" video="qanda-python" id="subtitle"]] +[[!template text="""which editor should i pick to to do this""" start="00:01:53.560" video="qanda-python" id="subtitle"]] +[[!template text="""and i was before that and like an ide person""" start="00:01:55.280" video="qanda-python" id="subtitle"]] +[[!template text="""so i do use this big ideas""" start="00:02:00.240" video="qanda-python" id="subtitle"]] +[[!template text="""and this time i figured maybe i should try something different.""" start="00:02:02.920" video="qanda-python" id="subtitle"]] +[[!template text="""And I read this book about Clojure development""" start="00:02:07.840" video="qanda-python" id="subtitle"]] +[[!template text="""and the author was really into Emacs""" start="00:02:10.240" video="qanda-python" id="subtitle"]] +[[!template text="""and he was like, Clojure is really good for,""" start="00:02:13.240" video="qanda-python" id="subtitle"]] +[[!template text="""Emacs is really good for Clojure development.""" start="00:02:17.160" video="qanda-python" id="subtitle"]] +[[!template text="""So that's how I started.""" start="00:02:19.160" video="qanda-python" id="subtitle"]] +[[!template text="""So I like to learn, rewired my brain""" start="00:02:20.760" video="qanda-python" id="subtitle"]] +[[!template text="""to learn all how Emacs works""" start="00:02:24.480" video="qanda-python" id="subtitle"]] +[[!template text="""as opposed to like the mainstream editors out there.""" start="00:02:27.640" video="qanda-python" id="subtitle"]] +[[!template text="""So that's how it started. So like five years ago, maybe.""" start="00:02:30.960" video="qanda-python" id="subtitle"]] +[[!template text="""Cool. Um, so did you, what were some other,""" start="00:02:33.520" video="qanda-python" id="subtitle"]] +[[!template text="""what, what, what editor were you primarily using before you?""" start="00:02:39.520" video="qanda-python" id="subtitle"]] +[[!template text="""Um, um, back, back then it was like,""" start="00:02:44.000" video="qanda-python" id="subtitle"]] +[[!template text="""I think it was like Sublime Text.""" start="00:02:49.400" video="qanda-python" id="subtitle"]] +[[!template text="""And also some IntelliJ, sorry, JetBrains, their tools.""" start="00:02:52.720" video="qanda-python" id="subtitle"]] +[[!template text="""And before that, I was in the Microsoft world,""" start="00:02:57.720" video="qanda-python" id="subtitle"]] +[[!template text="""so it's like Microsoft toolings basically.""" start="00:03:04.600" video="qanda-python" id="subtitle"]] +[[!template text="""So I moved towards open source tooling""" start="00:03:08.200" video="qanda-python" id="subtitle"]] +[[!template text="""and also open source development. Very cool.""" start="00:03:10.880" video="qanda-python" id="subtitle"]] +[[!template text="""So I see we've got a couple people""" start="00:03:16.680" video="qanda-python" id="subtitle"]] +[[!template text="""that have joined on the BBB here with us""" start="00:03:19.120" video="qanda-python" id="subtitle"]] +[[!template text="""for the live question.""" start="00:03:23.480" video="qanda-python" id="subtitle"]] +[[!template text="""You're welcome to just throw your question in this chat,""" start="00:03:24.960" video="qanda-python" id="subtitle"]] +[[!template text="""or if you've got a microphone connected,""" start="00:03:29.200" video="qanda-python" id="subtitle"]] +[[!template text="""you're welcome to come off mute""" start="00:03:32.040" video="qanda-python" id="subtitle"]] +[[!template text="""and throw a question in that way as well.""" start="00:03:34.600" video="qanda-python" id="subtitle"]] +[[!template text="""You can join on liberachat IRC.""" start="00:03:36.760" video="qanda-python" id="subtitle"]] +[[!template text="""You can join pound emacs comp hyphen dev,""" start="00:03:40.360" video="qanda-python" id="subtitle"]] +[[!template text="""and we would happily take your questions there.""" start="00:03:44.120" video="qanda-python" id="subtitle"]] +[[!template text="""Meanwhile, I've got a question""" start="00:03:47.280" video="qanda-python" id="subtitle"]] +[[!template text="""coming in on the pad right now, so take that next.""" start="00:03:49.480" video="qanda-python" id="subtitle"]] +[[!template text="""I'll just read it out.""" start="00:03:52.720" video="qanda-python" id="subtitle"]] +[[!template text="""I don't quite see how your setup works with IPython.""" start="00:03:55.240" video="qanda-python" id="subtitle"]] +[[!template text="""Sorry if you already answered this.""" start="00:03:58.240" video="qanda-python" id="subtitle"]] +[[!template text="""Do you have your Emacs connect to the IPython kernel""" start="00:04:00.280" video="qanda-python" id="subtitle"]] +[[!template text="""over XMPP socket that IPython sets up? Oh, good question.""" start="00:04:03.520" video="qanda-python" id="subtitle"]] +[[!template text="""So what I've done is I have two different connections.""" start="00:04:11.920" video="qanda-python" id="subtitle"]] +[[!template text="""Like if I'm going to do this regular day-to-day Python work""" start="00:04:18.040" video="qanda-python" id="subtitle"]] +[[!template text="""when I want to evaluate code""" start="00:04:21.360" video="qanda-python" id="subtitle"]] +[[!template text="""without thinking about the external connection,""" start="00:04:24.400" video="qanda-python" id="subtitle"]] +[[!template text="""then I just use IPython""" start="00:04:29.960" video="qanda-python" id="subtitle"]] +[[!template text="""and I have my I'm using the LP Python package""" start="00:04:31.560" video="qanda-python" id="subtitle"]] +[[!template text="""so that you can set up which of the REPLs""" start="00:04:36.800" video="qanda-python" id="subtitle"]] +[[!template text="""you want to start when you evaluate code.""" start="00:04:39.840" video="qanda-python" id="subtitle"]] +[[!template text="""So that's IPython. But in the second part of the talk""" start="00:04:42.800" video="qanda-python" id="subtitle"]] +[[!template text="""where I connect to an externally running app,""" start="00:04:46.760" video="qanda-python" id="subtitle"]] +[[!template text="""then I have set up the same configuration""" start="00:04:50.920" video="qanda-python" id="subtitle"]] +[[!template text="""but to start Jupyter, the Jupyter console instead.""" start="00:04:55.840" video="qanda-python" id="subtitle"]] +[[!template text="""And when I start it up, it's going to, it's like a dialogue""" start="00:05:00.960" video="qanda-python" id="subtitle"]] +[[!template text="""that will ask for the ID of a running kernel.""" start="00:05:04.960" video="qanda-python" id="subtitle"]] +[[!template text="""Because if you start a kernel,""" start="00:05:09.600" video="qanda-python" id="subtitle"]] +[[!template text="""if you start something in a kernel,""" start="00:05:10.840" video="qanda-python" id="subtitle"]] +[[!template text="""you will get this unique ID so you can connect to it.""" start="00:05:12.920" video="qanda-python" id="subtitle"]] +[[!template text="""So that's kind of the difference.""" start="00:05:17.080" video="qanda-python" id="subtitle"]] +[[!template text="""So I have two different ways""" start="00:05:19.680" video="qanda-python" id="subtitle"]] +[[!template text="""of starting up the Python kernel. REPLs, either PyPython,""" start="00:05:21.640" video="qanda-python" id="subtitle"]] +[[!template text="""which I do for most of my daily work,""" start="00:05:26.600" video="qanda-python" id="subtitle"]] +[[!template text="""or if I want this connection to a running app,""" start="00:05:29.560" video="qanda-python" id="subtitle"]] +[[!template text="""I'm using the Jupyter console, basically.""" start="00:05:32.240" video="qanda-python" id="subtitle"]] +[[!template text="""Have you explored Org Babel at all?""" start="00:05:38.480" video="qanda-python" id="subtitle"]] +[[!template text="""Can you talk about your approach""" start="00:05:45.200" video="qanda-python" id="subtitle"]] +[[!template text="""compared to the Babel workflow? Oh, interesting.""" start="00:05:48.200" video="qanda-python" id="subtitle"]] +[[!template text="""No, I haven't actually, I haven't done that,""" start="00:05:52.280" video="qanda-python" id="subtitle"]] +[[!template text="""but I think it's similar to Jupyter notebooks,""" start="00:05:54.880" video="qanda-python" id="subtitle"]] +[[!template text="""so you can do some interactive, you can run Python there,""" start="00:05:59.120" video="qanda-python" id="subtitle"]] +[[!template text="""but I haven't,""" start="00:06:02.360" video="qanda-python" id="subtitle"]] +[[!template text="""I have too little knowledge about it to elaborate on that.""" start="00:06:03.280" video="qanda-python" id="subtitle"]] +[[!template text="""Sorry. Very good. All right.""" start="00:06:08.120" video="qanda-python" id="subtitle"]] +[[!template text="""I'm just going to peek over to the other chats""" start="00:06:24.160" video="qanda-python" id="subtitle"]] +[[!template text="""and make sure I'm not missing questions.""" start="00:06:27.000" video="qanda-python" id="subtitle"]] +[[!template text="""Sorry, I got a lot of screens. A little dance here.""" start="00:06:28.840" video="qanda-python" id="subtitle"]] +[[!template text="""All right, and I do see a few people in the chat.""" start="00:06:35.520" video="qanda-python" id="subtitle"]] +[[!template text="""I'll just say again, if you've joined us on the BBB,""" start="00:06:41.240" video="qanda-python" id="subtitle"]] +[[!template text="""you're more than welcome to jump in with your questions""" start="00:06:44.560" video="qanda-python" id="subtitle"]] +[[!template text="""or put questions into the chat here.""" start="00:06:47.000" video="qanda-python" id="subtitle"]] +[[!template text="""I'm not a big Python person,""" start="00:06:50.120" video="qanda-python" id="subtitle"]] +[[!template text="""so I can't get into the really interesting questions""" start="00:06:52.880" video="qanda-python" id="subtitle"]] +[[!template text="""that are probably more relevant,""" start="00:06:57.600" video="qanda-python" id="subtitle"]] +[[!template text="""just because a lot of it's kind of over my head.""" start="00:07:01.640" video="qanda-python" id="subtitle"]] +[[!template text="""Have you seen the miramo.io notebooks?""" start="00:07:05.800" video="qanda-python" id="subtitle"]] +[[!template text="""These use standard Python?""" start="00:07:12.880" video="qanda-python" id="subtitle"]] +[[!template text="""Oh, yes, I've seen, I haven't tried it myself,""" start="00:07:15.280" video="qanda-python" id="subtitle"]] +[[!template text="""but I've seen it.""" start="00:07:18.120" video="qanda-python" id="subtitle"]] +[[!template text="""It's very, I think it's a very interesting approach""" start="00:07:19.360" video="qanda-python" id="subtitle"]] +[[!template text="""that probably will solve a lot of these things""" start="00:07:22.640" video="qanda-python" id="subtitle"]] +[[!template text="""with interactive development in general,""" start="00:07:26.280" video="qanda-python" id="subtitle"]] +[[!template text="""but because I think it's basically Python files""" start="00:07:28.840" video="qanda-python" id="subtitle"]] +[[!template text="""and not the, not this other file format that you have""" start="00:07:31.840" video="qanda-python" id="subtitle"]] +[[!template text="""for the regular notebook setup.""" start="00:07:36.440" video="qanda-python" id="subtitle"]] +[[!template text="""So I have that in my list of things to try out in future,""" start="00:07:40.800" video="qanda-python" id="subtitle"]] +[[!template text="""but it looks really, really cool. Awesome.""" start="00:07:45.560" video="qanda-python" id="subtitle"]] +[[!template text="""Yeah, I'm hesitant to just ask you really boilerplate questions.""" start="00:08:00.720" video="qanda-python" id="subtitle"]] +[[!template text="""You get an expert, a souffle chef,""" start="00:08:06.720" video="qanda-python" id="subtitle"]] +[[!template text="""and you ask about making pasta or some other sort of thing.""" start="00:08:11.240" video="qanda-python" id="subtitle"]] +[[!template text="""No, go ahead. Go ahead. I'm glad to ask any questions.""" start="00:08:16.600" video="qanda-python" id="subtitle"]] +[[!template text="""So just generally about Emacs as a coding developer,""" start="00:08:20.560" video="qanda-python" id="subtitle"]] +[[!template text="""what are the features""" start="00:08:25.680" video="qanda-python" id="subtitle"]] +[[!template text="""that you tend to lean on more heavily?""" start="00:08:27.000" video="qanda-python" id="subtitle"]] +[[!template text="""you know completion or you know what what have you""" start="00:08:28.480" video="qanda-python" id="subtitle"]] +[[!template text="""maybe I could put it better""" start="00:08:34.320" video="qanda-python" id="subtitle"]] +[[!template text="""as what have you spent more time configuring for Emacs""" start="00:08:36.200" video="qanda-python" id="subtitle"]] +[[!template text="""to facilitate development?""" start="00:08:40.080" video="qanda-python" id="subtitle"]] +[[!template text="""Yes initially it was basically taking away""" start="00:08:45.440" video="qanda-python" id="subtitle"]] +[[!template text="""some of the UI features""" start="00:08:49.640" video="qanda-python" id="subtitle"]] +[[!template text="""basically disabling it and and but fairly quickly""" start="00:08:51.320" video="qanda-python" id="subtitle"]] +[[!template text="""for for both closure development""" start="00:08:56.600" video="qanda-python" id="subtitle"]] +[[!template text="""where i was using cider which is like a really good uh good tool um""" start="00:08:58.920" video="qanda-python" id="subtitle"]] +[[!template text="""and for python when i quickly found lp elp""" start="00:09:04.600" video="qanda-python" id="subtitle"]] +[[!template text="""i'm not sure how to pronounce it""" start="00:09:08.160" video="qanda-python" id="subtitle"]] +[[!template text="""but you you get so much uh good things from these tools""" start="00:09:10.600" video="qanda-python" id="subtitle"]] +[[!template text="""so what i've done additionally is like theme""" start="00:09:16.040" video="qanda-python" id="subtitle"]] +[[!template text="""and maybe having this environment""" start="00:09:21.720" video="qanda-python" id="subtitle"]] +[[!template text="""that is without disturbance.""" start="00:09:27.160" video="qanda-python" id="subtitle"]] +[[!template text="""So I really like the code to have my full attention.""" start="00:09:31.480" video="qanda-python" id="subtitle"]] +[[!template text="""So I rarely have, maybe I have like a preview sometimes,""" start="00:09:34.840" video="qanda-python" id="subtitle"]] +[[!template text="""but mostly it's the window or the buffer where I have my code""" start="00:09:41.240" video="qanda-python" id="subtitle"]] +[[!template text="""and I've minimized the running REPL buffer.""" start="00:09:45.360" video="qanda-python" id="subtitle"]] +[[!template text="""So sometimes it's, I'm hiding it, but it's still active.""" start="00:09:49.880" video="qanda-python" id="subtitle"]] +[[!template text="""So basically that's how I configured,""" start="00:09:53.440" video="qanda-python" id="subtitle"]] +[[!template text="""spent my configuration doing that.""" start="00:09:57.680" video="qanda-python" id="subtitle"]] +[[!template text="""And also lately, trying out some LLM tools.""" start="00:10:00.280" video="qanda-python" id="subtitle"]] +[[!template text="""So I think I have two packages""" start="00:10:04.800" video="qanda-python" id="subtitle"]] +[[!template text="""that I'm using actively today.""" start="00:10:09.280" video="qanda-python" id="subtitle"]] +[[!template text="""And my favorite is a tool called ECA,""" start="00:10:12.240" video="qanda-python" id="subtitle"]] +[[!template text="""which is a LLM chat assistant, which is really good.""" start="00:10:15.800" video="qanda-python" id="subtitle"]] +[[!template text="""The developer is also an Emacs enthusiast.""" start="00:10:20.200" video="qanda-python" id="subtitle"]] +[[!template text="""So are you the type of person that tends to work with""" start="00:10:24.400" video="qanda-python" id="subtitle"]] +[[!template text="""like a master builder, build your own Emacs?""" start="00:10:33.640" video="qanda-python" id="subtitle"]] +[[!template text="""Are you using the system packages?""" start="00:10:37.040" video="qanda-python" id="subtitle"]] +[[!template text="""What's your approach to just get Emacs""" start="00:10:40.800" video="qanda-python" id="subtitle"]] +[[!template text="""up and off the ground for yourself?""" start="00:10:43.616" video="qanda-python" id="subtitle"]] +[[!template text="""I'm not there yet with doing my own builds.""" start="00:10:45.369" video="qanda-python" id="subtitle"]] +[[!template text="""Currently, I'm on macOS,""" start="00:10:52.520" video="qanda-python" id="subtitle"]] +[[!template text="""so I'm installing Emacs through broom basically, homebrew.""" start="00:10:55.600" video="qanda-python" id="subtitle"]] +[[!template text="""I've yet so much Emacs things to learn""" start="00:11:00.040" video="qanda-python" id="subtitle"]] +[[!template text="""because I'm not even using org yet.""" start="00:11:04.920" video="qanda-python" id="subtitle"]] +[[!template text="""I'm exploring the this editor.""" start="00:11:07.740" video="qanda-python" id="subtitle"]] +[[!template text="""So I feel like I'm very much a beginner.""" start="00:11:11.560" video="qanda-python" id="subtitle"]] +[[!template text="""I'm not using Emacs to its full potential yet.""" start="00:11:14.800" video="qanda-python" id="subtitle"]] +[[!template text="""So I'm counting on that I will be more and more using Emacs""" start="00:11:17.920" video="qanda-python" id="subtitle"]] +[[!template text="""for more and more different tasks basically.""" start="00:11:23.280" video="qanda-python" id="subtitle"]] +[[!template text="""And I'm just seeing a comment.""" start="00:11:29.120" video="qanda-python" id="subtitle"]] +[[!template text="""Ed Stallthroat says, thank you""" start="00:11:32.560" video="qanda-python" id="subtitle"]] +[[!template text="""for publishing your configuration and offers a link.""" start="00:11:35.800" video="qanda-python" id="subtitle"]] +[[!template text="""Oh, great. Great.""" start="00:11:40.840" video="qanda-python" id="subtitle"]] +[[!template text="""Yes, those things that I showed in my talk,""" start="00:11:41.880" video="qanda-python" id="subtitle"]] +[[!template text="""I haven't made any, I haven't packaged it yet,""" start="00:11:46.360" video="qanda-python" id="subtitle"]] +[[!template text="""but everything is on my GitHub,""" start="00:11:49.320" video="qanda-python" id="subtitle"]] +[[!template text="""and I've tried to separate each feature""" start="00:11:51.200" video="qanda-python" id="subtitle"]] +[[!template text="""in separate LSP files.""" start="00:11:57.080" video="qanda-python" id="subtitle"]] +[[!template text="""So it should be, I hope that it's fairly straightforward""" start="00:11:59.640" video="qanda-python" id="subtitle"]] +[[!template text="""to understand how it's set up. Very good.""" start="00:12:04.320" video="qanda-python" id="subtitle"]] +[[!template text="""Let me just scroll down,""" start="00:12:08.960" video="qanda-python" id="subtitle"]] +[[!template text="""make sure I'm not missing questions here.""" start="00:12:11.120" video="qanda-python" id="subtitle"]] +[[!template text="""Okay, I think those are the questions that we have.""" start="00:12:13.000" video="qanda-python" id="subtitle"]] +[[!template text="""We can take a couple more minutes if you're open to that,""" start="00:12:16.960" video="qanda-python" id="subtitle"]] +[[!template text="""just for people to consider.""" start="00:12:20.880" video="qanda-python" id="subtitle"]] +[[!template text="""I know we're coming up on the lunch hour,""" start="00:12:24.040" video="qanda-python" id="subtitle"]] +[[!template text="""so it may be that people are jogging off to get some food.""" start="00:12:26.120" video="qanda-python" id="subtitle"]] +[[!template text="""Yeah, in Sweden, it's dinner time.""" start="00:12:31.680" video="qanda-python" id="subtitle"]] +[[!template text="""It's like 6 p.m. soon. That fits.""" start="00:12:36.600" video="qanda-python" id="subtitle"]] +[[!template text="""So are you involved with local Emacs meetups?""" start="00:12:40.080" video="qanda-python" id="subtitle"]] +[[!template text="""I know that your part of the world""" start="00:12:46.440" video="qanda-python" id="subtitle"]] +[[!template text="""has a really brisk community,""" start="00:12:49.080" video="qanda-python" id="subtitle"]] +[[!template text="""you know, a lot of, just a lot going on.""" start="00:12:51.800" video="qanda-python" id="subtitle"]] +[[!template text="""I'm always seeing in Sacha's Emacs News,""" start="00:12:55.280" video="qanda-python" id="subtitle"]] +[[!template text="""all of the different meetups and so on.""" start="00:12:58.800" video="qanda-python" id="subtitle"]] +[[!template text="""I'm curious if you're plugged""" start="00:13:02.320" video="qanda-python" id="subtitle"]] +[[!template text="""into a local community there at all, No, I haven't.""" start="00:13:03.520" video="qanda-python" id="subtitle"]] +[[!template text="""Not in any community. I haven't done that yet,""" start="00:13:08.720" video="qanda-python" id="subtitle"]] +[[!template text="""but we are like friends that I've gotten to know""" start="00:13:10.760" video="qanda-python" id="subtitle"]] +[[!template text="""through work and through like open source work that also use Emacs.""" start="00:13:15.680" video="qanda-python" id="subtitle"]] +[[!template text="""We talk and share our conflicts""" start="00:13:23.440" video="qanda-python" id="subtitle"]] +[[!template text="""basically on a regular basis,""" start="00:13:28.960" video="qanda-python" id="subtitle"]] +[[!template text="""because we are, at least in the Python community,""" start="00:13:30.800" video="qanda-python" id="subtitle"]] +[[!template text="""we're like a minority,""" start="00:13:36.000" video="qanda-python" id="subtitle"]] +[[!template text="""like other editors are like the standards.""" start="00:13:37.400" video="qanda-python" id="subtitle"]] +[[!template text="""And at work, I'm sharing what I'm doing,""" start="00:13:39.800" video="qanda-python" id="subtitle"]] +[[!template text="""just like my talk here to my fellow co-workers""" start="00:13:45.880" video="qanda-python" id="subtitle"]] +[[!template text="""that are not on Emacs, but I hope to get their interest up.""" start="00:13:48.680" video="qanda-python" id="subtitle"]] +[[!template text="""So many of us Emacs users are Emacs evangelists.""" start="00:13:54.000" video="qanda-python" id="subtitle"]] +[[!template text="""Yeah. It's the Venn diagram of Emacs user""" start="00:13:59.000" video="qanda-python" id="subtitle"]] +[[!template text="""and Emacs evangelist is a circle, I think.""" start="00:14:06.202" video="qanda-python" id="subtitle"]] +[[!template text="""Yeah, I think so too.""" start="00:14:08.869" video="qanda-python" id="subtitle"]] +[[!template text="""Well, David, I super appreciate your talk""" start="00:14:11.036" video="qanda-python" id="subtitle"]] +[[!template text="""and thank you so much also for...""" start="00:14:16.560" video="qanda-python" id="subtitle"]] +[[!template text="""I'm sorry, I saw another question here. Let me cover that.""" start="00:14:18.760" video="qanda-python" id="subtitle"]] +[[!template text="""Can you repeat the name of the LLM""" start="00:14:24.640" video="qanda-python" id="subtitle"]] +[[!template text="""that you specifically mentioned there?""" start="00:14:27.960" video="qanda-python" id="subtitle"]] +[[!template text="""Oh, it's a tool called ECA, E-C-A.""" start="00:14:30.320" video="qanda-python" id="subtitle"]] +[[!template text="""It's basically a server and clients,""" start="00:14:36.785" video="qanda-python" id="subtitle"]] +[[!template text="""and it's not only Emacs. It has support for other editors,""" start="00:14:44.077" video="qanda-python" id="subtitle"]] +[[!template text="""but I think the primary support is for,""" start="00:14:49.161" video="qanda-python" id="subtitle"]] +[[!template text="""at least the developer who does it is an Emacs user,""" start="00:14:53.120" video="qanda-python" id="subtitle"]] +[[!template text="""and so it's like Emacs first, basically.""" start="00:14:57.600" video="qanda-python" id="subtitle"]] +[[!template text="""And his name is Eric Dallo.""" start="00:15:01.040" video="qanda-python" id="subtitle"]] +[[!template text="""He's a great developer in the Clojure community.""" start="00:15:04.960" video="qanda-python" id="subtitle"]] +[[!template text="""He has done some LSP work in the Clojure world, too.""" start="00:15:09.680" video="qanda-python" id="subtitle"]] +[[!template text="""What was the last name? What was Eric's last name?""" start="00:15:13.160" video="qanda-python" id="subtitle"]] +[[!template text="""Eric Dallo, D-A-L-L-O. Yeah.""" start="00:15:17.160" video="qanda-python" id="subtitle"]] +[[!template text="""So I think that's a great tool, but I also use another tool""" start="00:15:23.920" video="qanda-python" id="subtitle"]] +[[!template text="""that for some reason I forgot to have this interactive way of,""" start="00:15:31.880" video="qanda-python" id="subtitle"]] +[[!template text="""because I think they are developing that feature too,""" start="00:15:38.920" video="qanda-python" id="subtitle"]] +[[!template text="""but I have another LLM that has support""" start="00:15:43.600" video="qanda-python" id="subtitle"]] +[[!template text="""for requests and callbacks basically.""" start="00:15:46.440" video="qanda-python" id="subtitle"]] +[[!template text="""So you can do something programmatically.""" start="00:15:50.600" video="qanda-python" id="subtitle"]] +[[!template text="""So that's how I've solved my LLM thing""" start="00:15:53.800" video="qanda-python" id="subtitle"]] +[[!template text="""where I select some Python variables""" start="00:15:55.920" video="qanda-python" id="subtitle"]] +[[!template text="""and tell the LLM to populate it with some fake data""" start="00:16:00.760" video="qanda-python" id="subtitle"]] +[[!template text="""so I can send that to the REPL.""" start="00:16:05.600" video="qanda-python" id="subtitle"]] +[[!template text="""But for some reason, I forgot the name of it.""" start="00:16:08.880" video="qanda-python" id="subtitle"]] +[[!template text="""I can look it up. Just give me one minute, sorry.""" start="00:16:11.480" video="qanda-python" id="subtitle"]] +[[!template text="""oh yeah gptel gptel that's that's the name of the other tool""" start="00:16:25.160" video="qanda-python" id="subtitle"]] +[[!template text="""which is uh also a good tool yeah""" start="00:16:35.560" video="qanda-python" id="subtitle"]] +[[!template text="""but ECA is more like a more chat companion""" start="00:16:37.880" video="qanda-python" id="subtitle"]] +[[!template text="""and this you can also you can tell it to write code and things like that""" start="00:16:41.280" video="qanda-python" id="subtitle"]] +[[!template text="""but i mostly use it for reviews and research""" start="00:16:46.680" video="qanda-python" id="subtitle"]] +[[!template text="""and like asking questions""" start="00:16:51.680" video="qanda-python" id="subtitle"]] +[[!template text="""because i want to my I don't have a problem with typing code.""" start="00:16:54.600" video="qanda-python" id="subtitle"]] +[[!template text="""I don't think that slows me down,""" start="00:17:00.280" video="qanda-python" id="subtitle"]] +[[!template text="""but maybe getting some quick feedback""" start="00:17:01.920" video="qanda-python" id="subtitle"]] +[[!template text="""on the actual work that I'm doing,""" start="00:17:05.640" video="qanda-python" id="subtitle"]] +[[!template text="""that's what I'm using LLM for,""" start="00:17:07.480" video="qanda-python" id="subtitle"]] +[[!template text="""on LLM for two, mostly today. That really hits for me.""" start="00:17:09.000" video="qanda-python" id="subtitle"]] +[[!template text="""I don't mind typing either.""" start="00:17:13.520" video="qanda-python" id="subtitle"]] +[[!template text="""I think somehow having things be so simple""" start="00:17:15.200" video="qanda-python" id="subtitle"]] +[[!template text="""and in many cases just automated,""" start="00:17:18.480" video="qanda-python" id="subtitle"]] +[[!template text="""Emacs just does the right thing.""" start="00:17:20.880" video="qanda-python" id="subtitle"]] +[[!template text="""It makes me hungry to type. I want to type more.""" start="00:17:22.720" video="qanda-python" id="subtitle"]] +[[!template text="""It feels like every keystroke does a little more.""" start="00:17:26.520" video="qanda-python" id="subtitle"]] +[[!template text="""Speaking of evangelism, thank you. Thank you""" start="00:17:28.560" video="qanda-python" id="subtitle"]] +[[!template text="""pop up for the for the question.""" start="00:17:33.520" video="qanda-python" id="subtitle"]] +[[!template text="""I'm just going to peek one more time through""" start="00:17:35.600" video="qanda-python" id="subtitle"]] +[[!template text="""and I don't see a backlog.""" start="00:17:39.440" video="qanda-python" id="subtitle"]] +[[!template text="""There are a couple more comments here""" start="00:17:41.160" video="qanda-python" id="subtitle"]] +[[!template text="""linking linking to the ECA Emacs and gptel.""" start="00:17:44.520" video="qanda-python" id="subtitle"]] +[[!template text="""Comment also saying very cool setup.""" start="00:17:49.320" video="qanda-python" id="subtitle"]] +[[!template text="""So I suppose I'll I'll hand it over to you""" start="00:17:52.240" video="qanda-python" id="subtitle"]] +[[!template text="""if you have kind of final thoughts or.""" start="00:17:56.960" video="qanda-python" id="subtitle"]] +[[!template text="""additional wisdoms you want to share""" start="00:17:59.320" video="qanda-python" id="subtitle"]] +[[!template text="""I really appreciate your taking the time to prepare this presentation""" start="00:18:02.080" video="qanda-python" id="subtitle"]] +[[!template text="""especially to do the live Q&A with us. Thank you""" start="00:18:05.400" video="qanda-python" id="subtitle"]] +[[!template text="""and I haven't anything more than that I will""" start="00:18:11.080" video="qanda-python" id="subtitle"]] +[[!template text="""of course I will continue like have evolving my setup""" start="00:18:13.920" video="qanda-python" id="subtitle"]] +[[!template text="""because there's like new tools""" start="00:18:19.480" video="qanda-python" id="subtitle"]] +[[!template text="""and maybe new ideas also coming up""" start="00:18:21.360" video="qanda-python" id="subtitle"]] +[[!template text="""and my What I'm aiming for in Python development""" start="00:18:24.760" video="qanda-python" id="subtitle"]] +[[!template text="""is the great developer experience""" start="00:18:28.720" video="qanda-python" id="subtitle"]] +[[!template text="""of what's called Lisp programming, basically.""" start="00:18:30.480" video="qanda-python" id="subtitle"]] +[[!template text="""So that's what I'm aiming at for Python 2.""" start="00:18:34.520" video="qanda-python" id="subtitle"]] +[[!template text="""Thank you. Thank you so much.""" start="00:18:41.700" video="qanda-python" id="subtitle"]] + +</div>Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202023%20python%3A%20Interactive%20Python%20programming%20in%20Emacs) <!-- End of emacsconf-publish-after-page --> diff --git a/2025/info/python-before.md b/2025/info/python-before.md index bf3dfc48..46318789 100644 --- a/2025/info/python-before.md +++ b/2025/info/python-before.md @@ -1,19 +1,19 @@ <!-- Automatically generated by emacsconf-publish-before-page --> - -The following image shows where the talk is in the schedule for Sat 2025-12-06. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="python"> -<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2025/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:10 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2025/talks/org-babel" title="Making Org-Babel reactive" data-slug="org-babel"> <title> 9:10- 9:20 Making Org-Babel reactive</title> <rect x="13" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(24,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> org-babel</text></g></a> <a href="/2025/talks/reference" title="Emacs as a fully-fledged reference manager" data-slug="reference"> <title> 9:30- 9:55 Emacs as a fully-fledged reference manager</title> <rect x="41" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(73,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> reference</text></g></a> <a href="/2025/talks/gmail" title="org-gmail: A deep integration of Gmail into your Org Mode" data-slug="gmail"> <title> 10:15-10:40 org-gmail: A deep integration of Gmail into your Org Mode</title> <rect x="102" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(134,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gmail</text></g></a> <a href="/2025/talks/gnus" title="Reading and writing emails in GNU Emacs with Gnus" data-slug="gnus"> <title> 10:50-11:15 Reading and writing emails in GNU Emacs with Gnus</title> <rect x="150" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(182,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gnus</text></g></a> <a href="/2025/talks/latex" title="LaTeX export in org-mode: the overhaul" data-slug="latex"> <title> 11:25-11:45 LaTeX export in org-mode: the overhaul</title> <rect x="199" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(224,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> latex</text></g></a> <a href="/2025/talks/calc" title="Basic Calc functionality for engineering or electronics" data-slug="calc"> <title> 1:00- 1:25 Basic Calc functionality for engineering or electronics</title> <rect x="329" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(361,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> calc</text></g></a> <a href="/2025/talks/blee-lcnt" title="Blee-LCNT: An Emacs-centered content production and self-publication framework" data-slug="blee-lcnt"> <title> 1:35- 2:15 Blee-LCNT: An Emacs-centered content production and self-publication framework</title> <rect x="377" y="15" opacity="0.5" width="54" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(429,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> blee-lcnt</text></g></a> <a href="/2025/talks/greader" title="GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence" data-slug="greader"> <title> 2:35- 2:40 GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence</title> <rect x="459" y="15" opacity="0.5" width="6" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(463,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> greader</text></g></a> <a href="/2025/talks/open-mic" title="Open session" data-slug="open-mic"> <title> 2:50- 3:40 Open session</title> <rect x="480" y="15" opacity="0.5" width="68" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(546,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> open-mic</text></g></a> <a href="/2025/talks/sat-close" title="Saturday closing remarks / open session" data-slug="sat-close"> <title> 4:00- 4:10 Saturday closing remarks / open session</title> <rect x="576" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(587,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2025/talks/schemacs" title="One year progress update Schemacs (formerly Gypsum)" data-slug="schemacs"> <title> 9:30- 9:55 One year progress update Schemacs (formerly Gypsum)</title> <rect x="41" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(73,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> schemacs</text></g></a> <a href="/2025/talks/juicemacs" title="Juicemacs: exploring speculative JIT compilation for ELisp in Java" data-slug="juicemacs"> <title> 10:15-10:35 Juicemacs: exploring speculative JIT compilation for ELisp in Java</title> <rect x="102" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(127,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> juicemacs</text></g></a> <a href="/2025/talks/swanky" title="Swanky Python: Interactive development for Python" data-slug="swanky"> <title> 10:45-11:10 Swanky Python: Interactive development for Python</title> <rect x="144" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(176,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> swanky</text></g></a> <a href="/2025/talks/python" title="Interactive Python programming in Emacs" data-slug="python"> <title> 11:20-11:40 Interactive Python programming in Emacs</title> <rect stroke-width="3" x="192" y="75" opacity="0.8" width="27" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(217,133)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <a href="/2025/talks/llm" title="Emacs, editors, and LLM driven workflows" data-slug="llm"> <title> 1:00- 1:25 Emacs, editors, and LLM driven workflows</title> <rect x="329" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(361,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> llm</text></g></a> <a href="/2025/talks/private-ai" title="Emacs and private AI: a great match" data-slug="private-ai"> <title> 1:45- 2:05 Emacs and private AI: a great match</title> <rect x="391" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(416,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> private-ai</text></g></a> <a href="/2025/talks/commonlisp" title="Common Lisp images communicating like-a-human through shared Emacs slime and eev" data-slug="commonlisp"> <title> 2:25- 2:55 Common Lisp images communicating like-a-human through shared Emacs slime and eev</title> <rect x="446" y="75" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(485,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> commonlisp</text></g></a> <a href="/2025/talks/graphics" title="Modern Emacs/Elisp hardware/software accelerated graphics" data-slug="graphics"> <title> 3:05- 3:30 Modern Emacs/Elisp hardware/software accelerated graphics</title> <rect x="500" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(532,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> graphics</text></g></a> <g transform="translate(0,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 5 PM</text></g></svg> -</div> - [[!toc ]] -Format: 20-min talk ; Q&A: BigBlueButton conference room <https://media.emacsconf.org/2025/current/bbb-python.html> Etherpad: <https://pad.emacsconf.org/2025-python> +Format: 20-min talk ; Q&A: BigBlueButton conference room Etherpad: <https://pad.emacsconf.org/2025-python> Etherpad: <https://pad.emacsconf.org/2025-python> -Discuss on IRC: [#emacsconf-dev](https://chat.emacsconf.org/?join=emacsconf,emacsconf-dev) -Status: Q&A finished, IRC and pad will be archived on this page +Status: TO_REVIEW_QA + + + +# Talk +<div class="vid mainVideo"><video controls preload="none" id="mainVideo-python"><source src="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 19:52 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-python">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--main.opus">Download --main.opus (11MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--main.webm">Download --main.webm (37MB)</a></li><li><a href="https://youtu.be/uACM4a5MPQM">View on Youtube</a></li></ul></div></div> +# Q&A -<div class="vid mainVideo"><video controls preload="none" id="mainVideo-python"><source src="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 19:52 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-python">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/current/bbb-python.html">Open public Q&A</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--main.opus">Download --main.opus (11MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--main.webm">Download --main.webm (37MB)</a></li><li><a href="https://youtu.be/uACM4a5MPQM">View on Youtube</a></li></ul></div></div> +<div class="vid qanda"><video controls preload="none" id="qanda-python"><source src="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--answers.m4v" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--answers.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 20:10 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-python">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--answers.json">Download --answers.json</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--answers.m4v">Download --answers.m4v (75MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--answers.tsv">Download --answers.tsv</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--answers.txt">Download --answers.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--answers.webm">Download --answers.webm (71MB)</a></li></ul></div></div> # Description <!-- End of emacsconf-publish-before-page -->
\ No newline at end of file diff --git a/2025/info/python-nav.md b/2025/info/python-nav.md index 78e9400e..d1d02d06 100644 --- a/2025/info/python-nav.md +++ b/2025/info/python-nav.md @@ -1,7 +1,7 @@ <div class="talk-nav"> Back to the [[talks]] -Previous by time: <a href="/2025/talks/gnus">Reading and writing emails in GNU Emacs with Gnus</a> -Next by time: <a href="/2025/talks/latex">LaTeX export in org-mode: the overhaul</a> -Track: <span class="sched-track Development">Development</span> - <strong><a href="https://emacsconf.org/2025/watch/dev">Watch</a></strong> +Previous by track: <a href="/2025/talks/swanky">Swanky Python: Interactive development for Python</a> +Next by track: <a href="/2025/talks/llm">Emacs, editors, and LLM driven workflows</a> +Track: <span class="sched-track Development">Development</span> </div> diff --git a/2025/info/reader-after.md b/2025/info/reader-after.md index de969ba2..d6e736d0 100644 --- a/2025/info/reader-after.md +++ b/2025/info/reader-after.md @@ -823,7 +823,370 @@ Captioner: jay_bird -Questions or comments? Please e-mail [divya@subvertising.org](mailto:divya@subvertising.org?subject=Comment%20for%20EmacsConf%202023%20reader%3A%20An%20introduction%20to%20the%20Emacs%20Reader) +<div class="transcript transcript-qanda"><a name="reader-qanda-transcript"></a><h1>Q&A transcript (unedited)</h1> + +[[!template text="""The first question,""" start="00:00:00.000" video="qanda-reader" id="subtitle"]] +[[!template text="""and I'm reading from the etherpad here,""" start="00:00:01.480" video="qanda-reader" id="subtitle"]] +[[!template text="""is there a scope for integrating""" start="00:00:03.600" video="qanda-reader" id="subtitle"]] +[[!template text="""the C library to Emacs itself""" start="00:00:05.520" video="qanda-reader" id="subtitle"]] +[[!template text="""with MuPDF becoming an optional dependency?""" start="00:00:07.840" video="qanda-reader" id="subtitle"]] +[[!template text="""Right, so integrating the C library into Emacs itself""" start="00:00:13.160" video="qanda-reader" id="subtitle"]] +[[!template text="""is like having MuPDF inside Emacs source tree.""" start="00:00:18.720" video="qanda-reader" id="subtitle"]] +[[!template text="""I don't think Emacs devs would be inclined to do that,""" start="00:00:24.360" video="qanda-reader" id="subtitle"]] +[[!template text="""and I don't think we really need it.""" start="00:00:28.000" video="qanda-reader" id="subtitle"]] +[[!template text="""Um, I think as it is, uh, Emacs""" start="00:00:30.080" video="qanda-reader" id="subtitle"]] +[[!template text="""with doc view needs new tool, which is something you need""" start="00:00:33.040" video="qanda-reader" id="subtitle"]] +[[!template text="""to install from new PDF anyways.""" start="00:00:36.440" video="qanda-reader" id="subtitle"]] +[[!template text="""So, um, I think it is almost expected""" start="00:00:38.920" video="qanda-reader" id="subtitle"]] +[[!template text="""that you install new PDF from system package manager.""" start="00:00:42.600" video="qanda-reader" id="subtitle"]] +[[!template text="""Um, and I think that as it is, is better""" start="00:00:46.280" video="qanda-reader" id="subtitle"]] +[[!template text="""because we don't really need to have""" start="00:00:49.120" video="qanda-reader" id="subtitle"]] +[[!template text="""a whole PDF engine inside Emacs.""" start="00:00:51.000" video="qanda-reader" id="subtitle"]] +[[!template text="""Um, Next question also from the pad,""" start="00:00:53.440" video="qanda-reader" id="subtitle"]] +[[!template text="""the dynamic module some great,""" start="00:00:59.880" video="qanda-reader" id="subtitle"]] +[[!template text="""and it's amazing that they've been there since 2017.""" start="00:01:01.760" video="qanda-reader" id="subtitle"]] +[[!template text="""Why do you think they've been slowly""" start="00:01:06.640" video="qanda-reader" id="subtitle"]] +[[!template text="""so slow to get adopted?""" start="00:01:09.840" video="qanda-reader" id="subtitle"]] +[[!template text="""Is there a prior art with them? Right?""" start="00:01:11.560" video="qanda-reader" id="subtitle"]] +[[!template text="""That's a good question.""" start="00:01:14.280" video="qanda-reader" id="subtitle"]] +[[!template text="""Actually, I think 1 of the reasons is that.""" start="00:01:16.360" video="qanda-reader" id="subtitle"]] +[[!template text="""Most of the time, I think people love Emacs""" start="00:01:22.120" video="qanda-reader" id="subtitle"]] +[[!template text="""because they can do so much with Elisp.""" start="00:01:24.920" video="qanda-reader" id="subtitle"]] +[[!template text="""I think certainly there is a bias""" start="00:01:27.520" video="qanda-reader" id="subtitle"]] +[[!template text="""towards trying to do things with Elisp.""" start="00:01:28.920" video="qanda-reader" id="subtitle"]] +[[!template text="""I think there's only a sort of specific class of problems""" start="00:01:31.320" video="qanda-reader" id="subtitle"]] +[[!template text="""that you can solve with dynamic modules,""" start="00:01:35.040" video="qanda-reader" id="subtitle"]] +[[!template text="""such as this, where you want to use a native library""" start="00:01:36.880" video="qanda-reader" id="subtitle"]] +[[!template text="""to do something in a faster, better way.""" start="00:01:40.880" video="qanda-reader" id="subtitle"]] +[[!template text="""I use that quite a lot.""" start="00:01:44.240" video="qanda-reader" id="subtitle"]] +[[!template text="""There's of course libvterm, which uses a dynamic module""" start="00:01:48.960" video="qanda-reader" id="subtitle"]] +[[!template text="""and it does it really well.""" start="00:01:53.320" video="qanda-reader" id="subtitle"]] +[[!template text="""And I think there's another one, a plotting library""" start="00:01:55.120" video="qanda-reader" id="subtitle"]] +[[!template text="""or package in Emacs that was using something from Python.""" start="00:02:00.440" video="qanda-reader" id="subtitle"]] +[[!template text="""So, dynamic modules are good,""" start="00:02:05.880" video="qanda-reader" id="subtitle"]] +[[!template text="""but I think they don't really come""" start="00:02:07.880" video="qanda-reader" id="subtitle"]] +[[!template text="""to the surface level packages, your day-to-day packages,""" start="00:02:10.040" video="qanda-reader" id="subtitle"]] +[[!template text="""because most of the day-to-day packages that we use in Emacs""" start="00:02:13.975" video="qanda-reader" id="subtitle"]] +[[!template text="""can be done with Elisp. So, unless you really need""" start="00:02:17.360" video="qanda-reader" id="subtitle"]] +[[!template text="""something system-level efficient,""" start="00:02:20.880" video="qanda-reader" id="subtitle"]] +[[!template text="""Most of the time, you don't want to write C or C++ or something.""" start="00:02:23.200" video="qanda-reader" id="subtitle"]] +[[!template text="""But there is actually a really nice Rust crate for native modules,""" start="00:02:29.520" video="qanda-reader" id="subtitle"]] +[[!template text="""and there's a really nice Haskell package.""" start="00:02:34.920" video="qanda-reader" id="subtitle"]] +[[!template text="""So there's actually really good support""" start="00:02:37.240" video="qanda-reader" id="subtitle"]] +[[!template text="""for multiple languages.""" start="00:02:39.880" video="qanda-reader" id="subtitle"]] +[[!template text="""So it's there, it's just not used as much. Yeah.""" start="00:02:41.280" video="qanda-reader" id="subtitle"]] +[[!template text="""So what you're saying is""" start="00:02:45.800" video="qanda-reader" id="subtitle"]] +[[!template text="""if Elisp weren't so simple to learn and easy to use""" start="00:02:47.040" video="qanda-reader" id="subtitle"]] +[[!template text="""and so fully featured,""" start="00:02:51.280" video="qanda-reader" id="subtitle"]] +[[!template text="""we'd get a lot more mileage""" start="00:02:52.880" video="qanda-reader" id="subtitle"]] +[[!template text="""out of this super cool dynamic module feature.""" start="00:02:54.960" video="qanda-reader" id="subtitle"]] +[[!template text="""Yeah. Cool I'll take I'll bring in the next question.""" start="00:02:57.800" video="qanda-reader" id="subtitle"]] +[[!template text="""How how? How difficult is our PDF tools to install?""" start="00:03:02.160" video="qanda-reader" id="subtitle"]] +[[!template text="""The questioner is installing it""" start="00:03:07.400" video="qanda-reader" id="subtitle"]] +[[!template text="""using the built-in package manager""" start="00:03:10.440" video="qanda-reader" id="subtitle"]] +[[!template text="""looking at the Emacs reader installation instructions""" start="00:03:12.520" video="qanda-reader" id="subtitle"]] +[[!template text="""It doesn't necessarily cover""" start="00:03:16.680" video="qanda-reader" id="subtitle"]] +[[!template text="""how how to install that easily""" start="00:03:18.480" video="qanda-reader" id="subtitle"]] +[[!template text="""person is not using use package or straight and Okay.""" start="00:03:20.400" video="qanda-reader" id="subtitle"]] +[[!template text="""Oh, and they say that you didn't""" start="00:03:25.680" video="qanda-reader" id="subtitle"]] +[[!template text="""catch much of this in the presentation.""" start="00:03:27.960" video="qanda-reader" id="subtitle"]] +[[!template text="""Okay, so you want me to skip that or should I answer?""" start="00:03:32.440" video="qanda-reader" id="subtitle"]] +[[!template text="""It's your choice. If you would like to say more.""" start="00:03:35.080" video="qanda-reader" id="subtitle"]] +[[!template text="""Yeah, I think just as a thing,""" start="00:03:38.160" video="qanda-reader" id="subtitle"]] +[[!template text="""the reason I said PDF tools is difficult""" start="00:03:40.520" video="qanda-reader" id="subtitle"]] +[[!template text="""is PDF tools has a huge list of dependencies.""" start="00:03:43.320" video="qanda-reader" id="subtitle"]] +[[!template text="""The only thing Emacs Vita depends""" start="00:03:45.840" video="qanda-reader" id="subtitle"]] +[[!template text="""on is new PDF, nothing else. There's a single dependency.""" start="00:03:47.640" video="qanda-reader" id="subtitle"]] +[[!template text="""PDF tools depends on a lot of things""" start="00:03:50.600" video="qanda-reader" id="subtitle"]] +[[!template text="""and they have their own server,""" start="00:03:54.480" video="qanda-reader" id="subtitle"]] +[[!template text="""which is packaged as a system package,""" start="00:03:57.760" video="qanda-reader" id="subtitle"]] +[[!template text="""which you don't really find everywhere.""" start="00:04:00.040" video="qanda-reader" id="subtitle"]] +[[!template text="""And there's like systems, the new Linux systems""" start="00:04:02.360" video="qanda-reader" id="subtitle"]] +[[!template text="""where the package is very difficult to build""" start="00:04:05.040" video="qanda-reader" id="subtitle"]] +[[!template text="""because of so many dependencies.""" start="00:04:07.360" video="qanda-reader" id="subtitle"]] +[[!template text="""So my goal was to sort of reduce""" start="00:04:10.080" video="qanda-reader" id="subtitle"]] +[[!template text="""the number of dependencies.""" start="00:04:13.160" video="qanda-reader" id="subtitle"]] +[[!template text="""And then right now it's very, it's sort of a key""" start="00:04:14.840" video="qanda-reader" id="subtitle"]] +[[!template text="""to install Emacs Reader.""" start="00:04:19.560" video="qanda-reader" id="subtitle"]] +[[!template text="""Once we go to GNU Elpa, it's just""" start="00:04:21.120" video="qanda-reader" id="subtitle"]] +[[!template text="""going to be Emacs package install, just that.""" start="00:04:23.320" video="qanda-reader" id="subtitle"]] +[[!template text="""Right now you have to do package VC""" start="00:04:26.000" video="qanda-reader" id="subtitle"]] +[[!template text="""a bit. Boy, we get spoiled as""" start="00:04:27.920" video="qanda-reader" id="subtitle"]] +[[!template text="""Emacs users. Everything just gets so easy""" start="00:04:32.360" video="qanda-reader" id="subtitle"]] +[[!template text="""for us. It's like an IDE for our""" start="00:04:35.360" video="qanda-reader" id="subtitle"]] +[[!template text="""whole machine. What tools did you use to measure the""" start="00:04:37.960" video="qanda-reader" id="subtitle"]] +[[!template text="""memory usage between the three packages?""" start="00:04:44.840" video="qanda-reader" id="subtitle"]] +[[!template text="""Yeah, that's a good question.""" start="00:04:48.880" video="qanda-reader" id="subtitle"]] +[[!template text="""So during my development, I used mostly for debugging""" start="00:04:50.120" video="qanda-reader" id="subtitle"]] +[[!template text="""purposes Valgrind. So Valgrind is a a set of suite""" start="00:04:54.800" video="qanda-reader" id="subtitle"]] +[[!template text="""of debugging tools.""" start="00:05:00.120" video="qanda-reader" id="subtitle"]] +[[!template text="""And one of the tools that it has is Massive.""" start="00:05:01.560" video="qanda-reader" id="subtitle"]] +[[!template text="""It's a heap analyzer, heap profiler.""" start="00:05:03.800" video="qanda-reader" id="subtitle"]] +[[!template text="""So Valgrind plus Massive,""" start="00:05:08.920" video="qanda-reader" id="subtitle"]] +[[!template text="""and then there's a KDE package""" start="00:05:10.840" video="qanda-reader" id="subtitle"]] +[[!template text="""called Massive Visualizer.""" start="00:05:14.120" video="qanda-reader" id="subtitle"]] +[[!template text="""So I first get the Massive output using Valgrind,""" start="00:05:15.760" video="qanda-reader" id="subtitle"]] +[[!template text="""and then put that output into Massive Visualizer.""" start="00:05:19.840" video="qanda-reader" id="subtitle"]] +[[!template text="""That gives me the grasp.""" start="00:05:23.160" video="qanda-reader" id="subtitle"]] +[[!template text="""Are there Emacs integrations for those components at all?""" start="00:05:24.520" video="qanda-reader" id="subtitle"]] +[[!template text="""Does Valgrind have them?""" start="00:05:28.600" video="qanda-reader" id="subtitle"]] +[[!template text="""I don't think so. I don't think so.""" start="00:05:30.280" video="qanda-reader" id="subtitle"]] +[[!template text="""There's, yeah, there's I think a few packages""" start="00:05:32.400" video="qanda-reader" id="subtitle"]] +[[!template text="""which do something with Massive,""" start="00:05:37.320" video="qanda-reader" id="subtitle"]] +[[!template text="""but I don't think like they're maintained.""" start="00:05:38.880" video="qanda-reader" id="subtitle"]] +[[!template text="""Yeah. Gotcha. Cool. Awesome opportunity""" start="00:05:42.160" video="qanda-reader" id="subtitle"]] +[[!template text="""there for someone spunky.""" start="00:05:47.760" video="qanda-reader" id="subtitle"]] +[[!template text="""How is conversion between Elisp and foreign language types?""" start="00:05:49.400" video="qanda-reader" id="subtitle"]] +[[!template text="""For example, when interfacing with the C++ library""" start="00:05:55.400" video="qanda-reader" id="subtitle"]] +[[!template text="""that makes heavy use of the C++ object system and templates.""" start="00:05:59.040" video="qanda-reader" id="subtitle"]] +[[!template text="""Yeah, that's a good question.""" start="00:06:03.440" video="qanda-reader" id="subtitle"]] +[[!template text="""So the go-to answer is the blog post that I wrote,""" start="00:06:05.880" video="qanda-reader" id="subtitle"]] +[[!template text="""which is an extensive explanation""" start="00:06:10.520" video="qanda-reader" id="subtitle"]] +[[!template text="""on how the internals of dynamic modules work.""" start="00:06:12.200" video="qanda-reader" id="subtitle"]] +[[!template text="""The short answer is that basically what happens""" start="00:06:14.680" video="qanda-reader" id="subtitle"]] +[[!template text="""is anything that is compatible with C-ABI""" start="00:06:21.120" video="qanda-reader" id="subtitle"]] +[[!template text="""When you compile that language code,""" start="00:06:24.640" video="qanda-reader" id="subtitle"]] +[[!template text="""so when I compile C++ code, I would have a particular API.""" start="00:06:27.760" video="qanda-reader" id="subtitle"]] +[[!template text="""So we have a dynamic module API,""" start="00:06:33.560" video="qanda-reader" id="subtitle"]] +[[!template text="""which is the emacs-module.h, the file that I showed.""" start="00:06:35.800" video="qanda-reader" id="subtitle"]] +[[!template text="""You have to put that into your C++ package program""" start="00:06:39.120" video="qanda-reader" id="subtitle"]] +[[!template text="""and then link it to...""" start="00:06:45.800" video="qanda-reader" id="subtitle"]] +[[!template text="""So emacs-module.h is basically going to...""" start="00:06:48.680" video="qanda-reader" id="subtitle"]] +[[!template text="""like use things in your Emacs installation""" start="00:06:51.120" video="qanda-reader" id="subtitle"]] +[[!template text="""to interact with this C++ language. So it's basically FFI.""" start="00:06:56.800" video="qanda-reader" id="subtitle"]] +[[!template text="""And what this gives you is that you can have things in C++.""" start="00:07:04.360" video="qanda-reader" id="subtitle"]] +[[!template text="""So let's say you want to do multi-threading""" start="00:07:10.960" video="qanda-reader" id="subtitle"]] +[[!template text="""the way I did system level multi-threading.""" start="00:07:13.120" video="qanda-reader" id="subtitle"]] +[[!template text="""You can have C++ be responsible for the multi-threading.""" start="00:07:15.280" video="qanda-reader" id="subtitle"]] +[[!template text="""but you want the output""" start="00:07:20.520" video="qanda-reader" id="subtitle"]] +[[!template text="""of the multithreading to go into Emacs.""" start="00:07:23.000" video="qanda-reader" id="subtitle"]] +[[!template text="""So then you write like a piece of C++ function,""" start="00:07:24.880" video="qanda-reader" id="subtitle"]] +[[!template text="""which is going to be a dynamic module function.""" start="00:07:29.040" video="qanda-reader" id="subtitle"]] +[[!template text="""A dynamic module function""" start="00:07:31.880" video="qanda-reader" id="subtitle"]] +[[!template text="""is written in the language that you target,""" start="00:07:32.920" video="qanda-reader" id="subtitle"]] +[[!template text="""that is C++ or C or Rust.""" start="00:07:34.960" video="qanda-reader" id="subtitle"]] +[[!template text="""And then that is going to be compiled""" start="00:07:37.360" video="qanda-reader" id="subtitle"]] +[[!template text="""into a share library like SO.""" start="00:07:40.760" video="qanda-reader" id="subtitle"]] +[[!template text="""shared object, and then that shared object""" start="00:07:43.280" video="qanda-reader" id="subtitle"]] +[[!template text="""is going to be loaded into Emacs system using require.""" start="00:07:46.440" video="qanda-reader" id="subtitle"]] +[[!template text="""So when I do require render core""" start="00:07:50.640" video="qanda-reader" id="subtitle"]] +[[!template text="""in one of the slides that I showed,""" start="00:07:53.120" video="qanda-reader" id="subtitle"]] +[[!template text="""I'm basically loading that shared object,""" start="00:07:54.800" video="qanda-reader" id="subtitle"]] +[[!template text="""and that shared object already has""" start="00:07:58.440" video="qanda-reader" id="subtitle"]] +[[!template text="""the compiled dynamic module functions and so on.""" start="00:08:00.517" video="qanda-reader" id="subtitle"]] +[[!template text="""But my blog will explain that better.""" start="00:08:03.892" video="qanda-reader" id="subtitle"]] +[[!template text="""Gotcha. I thought that was pretty clear.""" start="00:08:06.309" video="qanda-reader" id="subtitle"]] +[[!template text="""I'm looking forward to seeing that blog post""" start="00:08:10.017" video="qanda-reader" id="subtitle"]] +[[!template text="""and understanding what I glossed over""" start="00:08:12.017" video="qanda-reader" id="subtitle"]] +[[!template text="""trying to understand from that explanation.""" start="00:08:13.642" video="qanda-reader" id="subtitle"]] +[[!template text="""That was great.""" start="00:08:15.861" video="qanda-reader" id="subtitle"]] +[[!template text="""Can one look at PDF metadata with Emacs Reader?""" start="00:08:18.421" video="qanda-reader" id="subtitle"]] +[[!template text="""Can you do annotations? Does it understand forms?""" start="00:08:22.880" video="qanda-reader" id="subtitle"]] +[[!template text="""Can it handle encrypted PDFs?""" start="00:08:26.200" video="qanda-reader" id="subtitle"]] +[[!template text="""In other words, I think reading between the lines,""" start="00:08:29.960" video="qanda-reader" id="subtitle"]] +[[!template text="""wow, this is awesome.""" start="00:08:33.160" video="qanda-reader" id="subtitle"]] +[[!template text="""Is there anything I can't do? You're right.""" start="00:08:34.280" video="qanda-reader" id="subtitle"]] +[[!template text="""So Emacs Reader will be able to do all of those things.""" start="00:08:39.200" video="qanda-reader" id="subtitle"]] +[[!template text="""It can do annotations. It will be able to do forms.""" start="00:08:44.120" video="qanda-reader" id="subtitle"]] +[[!template text="""And we have an issue open for interpret PDFs.""" start="00:08:48.360" video="qanda-reader" id="subtitle"]] +[[!template text="""The thing is, right now we are struggling with""" start="00:08:52.280" video="qanda-reader" id="subtitle"]] +[[!template text="""making Emacs Reader be very efficient""" start="00:08:54.840" video="qanda-reader" id="subtitle"]] +[[!template text="""in terms of highlighting and text selection""" start="00:08:58.760" video="qanda-reader" id="subtitle"]] +[[!template text="""because of the challenges that I mentioned in the slides,""" start="00:09:02.680" video="qanda-reader" id="subtitle"]] +[[!template text="""so it will be able to do all that.""" start="00:09:05.520" video="qanda-reader" id="subtitle"]] +[[!template text="""Once we tackle the basic features""" start="00:09:07.960" video="qanda-reader" id="subtitle"]] +[[!template text="""down in an efficient manner. Gotcha. Um.""" start="00:09:10.960" video="qanda-reader" id="subtitle"]] +[[!template text="""Comment or questioner says,""" start="00:09:18.600" video="qanda-reader" id="subtitle"]] +[[!template text="""I installed Emacs Reader already as promised. Great job.""" start="00:09:24.120" video="qanda-reader" id="subtitle"]] +[[!template text="""How can I associate ODT files to open with Emacs Reader?""" start="00:09:28.800" video="qanda-reader" id="subtitle"]] +[[!template text="""You don't really need to do anything.""" start="00:09:34.880" video="qanda-reader" id="subtitle"]] +[[!template text="""You should be just able to do find file,""" start="00:09:38.480" video="qanda-reader" id="subtitle"]] +[[!template text="""Control X, Control F, and open.""" start="00:09:40.600" video="qanda-reader" id="subtitle"]] +[[!template text="""And it should open with Emacs Reader""" start="00:09:42.960" video="qanda-reader" id="subtitle"]] +[[!template text="""because we have an auto mode list,""" start="00:09:45.320" video="qanda-reader" id="subtitle"]] +[[!template text="""a list that takes an ODT file""" start="00:09:47.760" video="qanda-reader" id="subtitle"]] +[[!template text="""and opens it with reader mode.""" start="00:09:51.680" video="qanda-reader" id="subtitle"]] +[[!template text="""So you should just be able to do find file.""" start="00:09:53.200" video="qanda-reader" id="subtitle"]] +[[!template text="""If you're not able to do that,""" start="00:09:55.640" video="qanda-reader" id="subtitle"]] +[[!template text="""you should open Embug report.""" start="00:09:56.880" video="qanda-reader" id="subtitle"]] +[[!template text="""And I'll just mention""" start="00:09:58.200" video="qanda-reader" id="subtitle"]] +[[!template text="""we've got about 10 minutes left of our live Q&A,""" start="00:10:00.760" video="qanda-reader" id="subtitle"]] +[[!template text="""but if you're watching the stream,""" start="00:10:03.240" video="qanda-reader" id="subtitle"]] +[[!template text="""it's possible that we'll just keep going.""" start="00:10:06.080" video="qanda-reader" id="subtitle"]] +[[!template text="""The questions just keep coming, which I just love that.""" start="00:10:08.440" video="qanda-reader" id="subtitle"]] +[[!template text="""So feel free to join the BBB link""" start="00:10:10.800" video="qanda-reader" id="subtitle"]] +[[!template text="""that should have shown in the IRC chat.""" start="00:10:14.520" video="qanda-reader" id="subtitle"]] +[[!template text="""Jump in and we can take questions""" start="00:10:17.440" video="qanda-reader" id="subtitle"]] +[[!template text="""as long as Divya has steam for that.""" start="00:10:21.560" video="qanda-reader" id="subtitle"]] +[[!template text="""If a PDF file is open in Emacs Reader""" start="00:10:26.000" video="qanda-reader" id="subtitle"]] +[[!template text="""and I reintegrate the PDF with some changes,""" start="00:10:30.440" video="qanda-reader" id="subtitle"]] +[[!template text="""does the Emacs Reader refresh the PDF on its own""" start="00:10:33.200" video="qanda-reader" id="subtitle"]] +[[!template text="""or do I reload it?""" start="00:10:36.520" video="qanda-reader" id="subtitle"]] +[[!template text="""Right, that's also a really good question.""" start="00:10:38.920" video="qanda-reader" id="subtitle"]] +[[!template text="""So one answer is that it depends on""" start="00:10:41.320" video="qanda-reader" id="subtitle"]] +[[!template text="""how you change the PDF.""" start="00:10:44.600" video="qanda-reader" id="subtitle"]] +[[!template text="""So for example, if I just replaced the PDF""" start="00:10:46.080" video="qanda-reader" id="subtitle"]] +[[!template text="""with something else of the same name,""" start="00:10:50.840" video="qanda-reader" id="subtitle"]] +[[!template text="""Emacs will update it immediately.""" start="00:10:52.640" video="qanda-reader" id="subtitle"]] +[[!template text="""If you have auto revert mode on,""" start="00:10:55.800" video="qanda-reader" id="subtitle"]] +[[!template text="""it'll just revert the buffer""" start="00:10:57.920" video="qanda-reader" id="subtitle"]] +[[!template text="""and it'll reload the PDF really nicely.""" start="00:10:59.120" video="qanda-reader" id="subtitle"]] +[[!template text="""But if you're doing it something like LaTeX,""" start="00:11:01.880" video="qanda-reader" id="subtitle"]] +[[!template text="""where you're writing something in LaTeX""" start="00:11:05.440" video="qanda-reader" id="subtitle"]] +[[!template text="""and LaTeX is continuously producing the PDF,""" start="00:11:07.400" video="qanda-reader" id="subtitle"]] +[[!template text="""that needs SyncTeX integration.""" start="00:11:10.520" video="qanda-reader" id="subtitle"]] +[[!template text="""Because LaTeX, while it's producing the PDF,""" start="00:11:13.280" video="qanda-reader" id="subtitle"]] +[[!template text="""it does a lot of funky things.""" start="00:11:16.160" video="qanda-reader" id="subtitle"]] +[[!template text="""It does not provide a sort of renderable PDF all the time.""" start="00:11:19.160" video="qanda-reader" id="subtitle"]] +[[!template text="""So Emacs will sort of crash trying to""" start="00:11:24.520" video="qanda-reader" id="subtitle"]] +[[!template text="""basically render a PDF that is not ready yet.""" start="00:11:28.680" video="qanda-reader" id="subtitle"]] +[[!template text="""So we need SyncTex to sync""" start="00:11:31.680" video="qanda-reader" id="subtitle"]] +[[!template text="""with LaTeX to do that really nice.""" start="00:11:34.800" video="qanda-reader" id="subtitle"]] +[[!template text="""Okay, so we have to do some care""" start="00:11:37.280" video="qanda-reader" id="subtitle"]] +[[!template text="""and feeding of the exact timing""" start="00:11:39.560" video="qanda-reader" id="subtitle"]] +[[!template text="""if we have more of a continuous behind the curtains, so to speak.""" start="00:11:41.320" video="qanda-reader" id="subtitle"]] +[[!template text="""That makes a lot of sense to me. What are the challenges""" start="00:11:46.880" video="qanda-reader" id="subtitle"]] +[[!template text="""with integrating synctex and AucTex?""" start="00:11:50.960" video="qanda-reader" id="subtitle"]] +[[!template text="""This would be great to see as PDF handles as well,""" start="00:11:55.720" video="qanda-reader" id="subtitle"]] +[[!template text="""or PDF tools handles as well. Yeah, yeah.""" start="00:11:58.920" video="qanda-reader" id="subtitle"]] +[[!template text="""So, we have Synctex and Auctex planned.""" start="00:12:02.320" video="qanda-reader" id="subtitle"]] +[[!template text="""I don't really see any major obstacles""" start="00:12:04.400" video="qanda-reader" id="subtitle"]] +[[!template text="""for doing that, to be very honest.""" start="00:12:06.840" video="qanda-reader" id="subtitle"]] +[[!template text="""I think we can do it in a much simpler way""" start="00:12:08.680" video="qanda-reader" id="subtitle"]] +[[!template text="""than PDF Tools does.""" start="00:12:11.520" video="qanda-reader" id="subtitle"]] +[[!template text="""The only reason we haven't done it yet is because, again,""" start="00:12:12.480" video="qanda-reader" id="subtitle"]] +[[!template text="""we have more important highlighting""" start="00:12:17.480" video="qanda-reader" id="subtitle"]] +[[!template text="""and text selection and those features planned,""" start="00:12:20.480" video="qanda-reader" id="subtitle"]] +[[!template text="""but it's anticipated. Yeah. All right. This next question""" start="00:12:24.400" video="qanda-reader" id="subtitle"]] +[[!template text="""I love your presentation. Will you be giving another talk""" start="00:12:32.920" video="qanda-reader" id="subtitle"]] +[[!template text="""on the architecture you went over a deep dive on?""" start="00:12:36.440" video="qanda-reader" id="subtitle"]] +[[!template text="""That would be awesome. I'm not sure if an EmacsConf talk""" start="00:12:39.400" video="qanda-reader" id="subtitle"]] +[[!template text="""will be appropriate for this, but I do stream bi-weekly.""" start="00:12:44.920" video="qanda-reader" id="subtitle"]] +[[!template text="""So you're always welcome to come on my stream and ask,""" start="00:12:48.480" video="qanda-reader" id="subtitle"]] +[[!template text="""and I would be very happy to go deep into this.""" start="00:12:52.600" video="qanda-reader" id="subtitle"]] +[[!template text="""I'm looking forward to catching that myself.""" start="00:12:55.360" video="qanda-reader" id="subtitle"]] +[[!template text="""Thank you for the shout. Is there search functionality,""" start="00:12:58.120" video="qanda-reader" id="subtitle"]] +[[!template text="""something like isearch and occur?""" start="00:13:02.640" video="qanda-reader" id="subtitle"]] +[[!template text="""Yeah, we don't really have it,""" start="00:13:05.320" video="qanda-reader" id="subtitle"]] +[[!template text="""but this is the most immediate feature""" start="00:13:07.600" video="qanda-reader" id="subtitle"]] +[[!template text="""after we have text selection.""" start="00:13:09.600" video="qanda-reader" id="subtitle"]] +[[!template text="""So once we have text selection,""" start="00:13:10.960" video="qanda-reader" id="subtitle"]] +[[!template text="""once we're able to select the text,""" start="00:13:12.400" video="qanda-reader" id="subtitle"]] +[[!template text="""then we can have iSearch so that it can highlight the text.""" start="00:13:14.360" video="qanda-reader" id="subtitle"]] +[[!template text="""Yeah. Um, all right. And then, um, there's, I'm just gonna,""" start="00:13:17.680" video="qanda-reader" id="subtitle"]] +[[!template text="""I'll read out this question""" start="00:13:26.680" video="qanda-reader" id="subtitle"]] +[[!template text="""and then I have to do a little bookkeeping on the pad.""" start="00:13:28.800" video="qanda-reader" id="subtitle"]] +[[!template text="""Um, does the dynamic module, uh, prevent customization""" start="00:13:30.640" video="qanda-reader" id="subtitle"]] +[[!template text="""that Emacs usually provides advice, hooks, et cetera,""" start="00:13:35.640" video="qanda-reader" id="subtitle"]] +[[!template text="""or does everything just kind of""" start="00:13:40.000" video="qanda-reader" id="subtitle"]] +[[!template text="""No, if you have a dynamic module,""" start="00:13:44.360" video="qanda-reader" id="subtitle"]] +[[!template text="""it doesn't limit you into doing anything.""" start="00:13:46.560" video="qanda-reader" id="subtitle"]] +[[!template text="""You can do everything on the Elisp side that you want,""" start="00:13:49.280" video="qanda-reader" id="subtitle"]] +[[!template text="""and you only take care of certain things""" start="00:13:52.840" video="qanda-reader" id="subtitle"]] +[[!template text="""on the dynamic module side.""" start="00:13:55.720" video="qanda-reader" id="subtitle"]] +[[!template text="""If you're asking whether""" start="00:13:56.880" video="qanda-reader" id="subtitle"]] +[[!template text="""you can do advices, hooks, and all of that""" start="00:13:58.000" video="qanda-reader" id="subtitle"]] +[[!template text="""on the dynamic module itself,""" start="00:14:01.880" video="qanda-reader" id="subtitle"]] +[[!template text="""from the dynamic module itself,""" start="00:14:03.880" video="qanda-reader" id="subtitle"]] +[[!template text="""that's a bit tricky because something like""" start="00:14:05.680" video="qanda-reader" id="subtitle"]] +[[!template text="""Calling a macro or doing macros and dynamic modules""" start="00:14:09.720" video="qanda-reader" id="subtitle"]] +[[!template text="""is not really that nice You have to pretty much manually""" start="00:14:14.000" video="qanda-reader" id="subtitle"]] +[[!template text="""expand the macro yourself in the dynamic module""" start="00:14:18.120" video="qanda-reader" id="subtitle"]] +[[!template text="""so if you want to do it from the dynamic module,""" start="00:14:21.360" video="qanda-reader" id="subtitle"]] +[[!template text="""there's not much support right now,""" start="00:14:23.840" video="qanda-reader" id="subtitle"]] +[[!template text="""but you can do everything on the elisp side""" start="00:14:25.960" video="qanda-reader" id="subtitle"]] +[[!template text="""without touching the dynamic module. Got it""" start="00:14:29.480" video="qanda-reader" id="subtitle"]] +[[!template text="""So those are the questions that I see.""" start="00:14:33.400" video="qanda-reader" id="subtitle"]] +[[!template text="""I'm just going to take a quick peek,""" start="00:14:38.280" video="qanda-reader" id="subtitle"]] +[[!template text="""but let me invite you if you want to.""" start="00:14:40.000" video="qanda-reader" id="subtitle"]] +[[!template text="""We've got just about 5 minutes left""" start="00:14:42.640" video="qanda-reader" id="subtitle"]] +[[!template text="""and I will get carried away sometimes""" start="00:14:46.000" video="qanda-reader" id="subtitle"]] +[[!template text="""and fail to make this invitation before we cut away live,""" start="00:14:48.240" video="qanda-reader" id="subtitle"]] +[[!template text="""especially if we do keep going a bit.""" start="00:14:51.280" video="qanda-reader" id="subtitle"]] +[[!template text="""that you have live onto the stream.""" start="00:14:54.480" video="qanda-reader" id="subtitle"]] +[[!template text="""Of course, you don't have to do that.""" start="00:14:57.800" video="qanda-reader" id="subtitle"]] +[[!template text="""You said a lot in your presentation.""" start="00:15:02.600" video="qanda-reader" id="subtitle"]] +[[!template text="""No, I think mostly that's fine.""" start="00:15:05.800" video="qanda-reader" id="subtitle"]] +[[!template text="""I'm just really happy""" start="00:15:12.200" video="qanda-reader" id="subtitle"]] +[[!template text="""that people are interested in the package,""" start="00:15:13.680" video="qanda-reader" id="subtitle"]] +[[!template text="""and I would be glad to have contributors""" start="00:15:17.080" video="qanda-reader" id="subtitle"]] +[[!template text="""and viewers or anything. That would be nice. Awesome.""" start="00:15:19.880" video="qanda-reader" id="subtitle"]] +[[!template text="""So here comes one more question,""" start="00:15:25.200" video="qanda-reader" id="subtitle"]] +[[!template text="""or actually a couple more questions coming in.""" start="00:15:28.880" video="qanda-reader" id="subtitle"]] +[[!template text="""Following up on dynamic modules,""" start="00:15:31.960" video="qanda-reader" id="subtitle"]] +[[!template text="""do you usually create an Elisp shim""" start="00:15:34.240" video="qanda-reader" id="subtitle"]] +[[!template text="""from foreign function interface""" start="00:15:38.480" video="qanda-reader" id="subtitle"]] +[[!template text="""and then use them with Elisp?""" start="00:15:40.400" video="qanda-reader" id="subtitle"]] +[[!template text="""Yeah, so basically how you do is you write,""" start="00:15:41.560" video="qanda-reader" id="subtitle"]] +[[!template text="""let's say I have a C function""" start="00:15:46.160" video="qanda-reader" id="subtitle"]] +[[!template text="""that I've written in the dynamic module.""" start="00:15:49.640" video="qanda-reader" id="subtitle"]] +[[!template text="""It's a dynamic module function.""" start="00:15:51.400" video="qanda-reader" id="subtitle"]] +[[!template text="""And then when I'm trying to call""" start="00:15:52.880" video="qanda-reader" id="subtitle"]] +[[!template text="""the dynamic module function,""" start="00:15:54.640" video="qanda-reader" id="subtitle"]] +[[!template text="""most of the time, I don't call it like that.""" start="00:15:56.040" video="qanda-reader" id="subtitle"]] +[[!template text="""I wrap it inside a proper Elisp function""" start="00:15:59.000" video="qanda-reader" id="subtitle"]] +[[!template text="""and then call that Elisp function.""" start="00:16:01.680" video="qanda-reader" id="subtitle"]] +[[!template text="""So that's how I think it's better to do that because""" start="00:16:03.560" video="qanda-reader" id="subtitle"]] +[[!template text="""You can take care of certain cases""" start="00:16:08.280" video="qanda-reader" id="subtitle"]] +[[!template text="""on when you want the dynamic module function to be called.""" start="00:16:12.560" video="qanda-reader" id="subtitle"]] +[[!template text="""Maybe sometimes you don't want""" start="00:16:15.200" video="qanda-reader" id="subtitle"]] +[[!template text="""the dynamic module function""" start="00:16:17.200" video="qanda-reader" id="subtitle"]] +[[!template text="""to be called immediately.""" start="00:16:18.840" video="qanda-reader" id="subtitle"]] +[[!template text="""So it's better to wrap it.""" start="00:16:19.880" video="qanda-reader" id="subtitle"]] +[[!template text="""Yeah. Okay. So timing issues. Yeah.""" start="00:16:22.160" video="qanda-reader" id="subtitle"]] +[[!template text="""For the purposes of managing timing issues,""" start="00:16:26.600" video="qanda-reader" id="subtitle"]] +[[!template text="""that elisp shim is preferred.""" start="00:16:31.680" video="qanda-reader" id="subtitle"]] +[[!template text="""Yeah. Makes sense. Um.""" start="00:16:34.320" video="qanda-reader" id="subtitle"]] +[[!template text="""Uh, so question question here""" start="00:16:38.960" video="qanda-reader" id="subtitle"]] +[[!template text="""is searching for the person is searching for a roadmap.""" start="00:16:44.640" video="qanda-reader" id="subtitle"]] +[[!template text="""Is that already available as a feature?""" start="00:16:47.440" video="qanda-reader" id="subtitle"]] +[[!template text="""Searching is on the roadmap.""" start="00:16:49.280" video="qanda-reader" id="subtitle"]] +[[!template text="""It is not available yet as a feature, but it's on priority.""" start="00:16:52.240" video="qanda-reader" id="subtitle"]] +[[!template text="""I think you may have may have touched on that.""" start="00:16:56.560" video="qanda-reader" id="subtitle"]] +[[!template text="""Sorry. All right. Those are the questions that I see.""" start="00:16:59.840" video="qanda-reader" id="subtitle"]] +[[!template text="""We've got just a couple of minutes.""" start="00:17:06.560" video="qanda-reader" id="subtitle"]] +[[!template text="""I'm not sure if you have more you wanted to say,""" start="00:17:08.280" video="qanda-reader" id="subtitle"]] +[[!template text="""but I have to say how much I appreciate your talk,""" start="00:17:10.400" video="qanda-reader" id="subtitle"]] +[[!template text="""especially you jumping in live with us""" start="00:17:13.720" video="qanda-reader" id="subtitle"]] +[[!template text="""and just taking everything on the fly.""" start="00:17:16.120" video="qanda-reader" id="subtitle"]] +[[!template text="""I think this is a big part of what adds the energy,""" start="00:17:19.080" video="qanda-reader" id="subtitle"]] +[[!template text="""you in particular, just really dynamic speaker.""" start="00:17:24.560" video="qanda-reader" id="subtitle"]] +[[!template text="""Thank you. Thank you. Thank you. I enjoyed it as well.""" start="00:17:28.040" video="qanda-reader" id="subtitle"]] +[[!template text="""A person is, and I think this may have been touched on already,""" start="00:17:31.480" video="qanda-reader" id="subtitle"]] +[[!template text="""but let's maybe get into it more specifically.""" start="00:17:37.160" video="qanda-reader" id="subtitle"]] +[[!template text="""We've said that search is kind of""" start="00:17:39.440" video="qanda-reader" id="subtitle"]] +[[!template text="""a next up type of feature as things,""" start="00:17:42.160" video="qanda-reader" id="subtitle"]] +[[!template text="""as the current iteration stabilizes.""" start="00:17:44.720" video="qanda-reader" id="subtitle"]] +[[!template text="""Question was, you know, occur like, how would you?""" start="00:17:48.160" video="qanda-reader" id="subtitle"]] +[[!template text="""Totally. There will be occur searches.""" start="00:17:52.240" video="qanda-reader" id="subtitle"]] +[[!template text="""There will be isearch enabled, isearch.""" start="00:17:56.160" video="qanda-reader" id="subtitle"]] +[[!template text="""used to with PDF tools,""" start="00:17:59.640" video="qanda-reader" id="subtitle"]] +[[!template text="""we would be like parity with the features,""" start="00:18:02.880" video="qanda-reader" id="subtitle"]] +[[!template text="""all the features that you're used to with PDF tools.""" start="00:18:06.440" video="qanda-reader" id="subtitle"]] +[[!template text="""Um, so, uh, certainly occur anything""" start="00:18:08.720" video="qanda-reader" id="subtitle"]] +[[!template text="""that is important in Emacs with text""" start="00:18:12.600" video="qanda-reader" id="subtitle"]] +[[!template text="""and that can be done with PDFs.""" start="00:18:15.680" video="qanda-reader" id="subtitle"]] +[[!template text="""We really want to do that because, um,""" start="00:18:17.360" video="qanda-reader" id="subtitle"]] +[[!template text="""I want the package to be as knitted""" start="00:18:19.840" video="qanda-reader" id="subtitle"]] +[[!template text="""into Emacs ecosystem as possible.""" start="00:18:22.680" video="qanda-reader" id="subtitle"]] +[[!template text="""Okay. We'll see if we can get in this last question here.""" start="00:18:24.960" video="qanda-reader" id="subtitle"]] +[[!template text="""Do you have a timing expectation for ELPA?""" start="00:18:28.160" video="qanda-reader" id="subtitle"]] +[[!template text="""Uh, yeah, next major release essentially.""" start="00:18:30.320" video="qanda-reader" id="subtitle"]] +[[!template text="""So next major release is most likely""" start="00:18:33.200" video="qanda-reader" id="subtitle"]] +[[!template text="""going to be within a month or two.""" start="00:18:35.280" video="qanda-reader" id="subtitle"]] +[[!template text="""So once we have the next major release, we're going to be.""" start="00:18:37.320" video="qanda-reader" id="subtitle"]] +[[!template text="""Uh, timing couldn't be more perfect.""" start="00:18:39.640" video="qanda-reader" id="subtitle"]] +[[!template text="""Maybe this is a good, good point to break.""" start="00:18:43.480" video="qanda-reader" id="subtitle"]] +[[!template text="""We'll be cutting away to the next talk""" start="00:18:45.520" video="qanda-reader" id="subtitle"]] +[[!template text="""in just a couple of minutes.""" start="00:18:47.760" video="qanda-reader" id="subtitle"]] +[[!template text="""So let me say one more time how much""" start="00:18:48.880" video="qanda-reader" id="subtitle"]] +[[!template text="""on behalf of all the attendees""" start="00:18:51.480" video="qanda-reader" id="subtitle"]] +[[!template text="""and all the volunteers and all everybody,""" start="00:18:52.960" video="qanda-reader" id="subtitle"]] +[[!template text="""um, how much we appreciate your talks""" start="00:18:54.960" video="qanda-reader" id="subtitle"]] +[[!template text="""and, uh, your awesome contribution to the Emacs world.""" start="00:18:57.080" video="qanda-reader" id="subtitle"]] +[[!template text="""Thanks, Corwin.""" start="00:19:01.300" video="qanda-reader" id="subtitle"]] + +</div>Questions or comments? Please e-mail [divya@subvertising.org](mailto:divya@subvertising.org?subject=Comment%20for%20EmacsConf%202023%20reader%3A%20An%20introduction%20to%20the%20Emacs%20Reader) <!-- End of emacsconf-publish-after-page --> diff --git a/2025/info/reader-before.md b/2025/info/reader-before.md index 5721f1b0..b4c92c74 100644 --- a/2025/info/reader-before.md +++ b/2025/info/reader-before.md @@ -1,21 +1,17 @@ <!-- Automatically generated by emacsconf-publish-before-page --> - -The following image shows where the talk is in the schedule for Sun 2025-12-07. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="reader"> -<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2025/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:10 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2025/talks/modern" title="Some problems of modernizing Emacs" data-slug="modern"> <title> 9:10- 9:30 Some problems of modernizing Emacs</title> <rect x="13" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(38,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> modern</text></g></a> <a href="/2025/talks/reader" title="An introduction to the Emacs Reader" data-slug="reader"> <title> 9:40-10:15 An introduction to the Emacs Reader</title> <rect stroke-width="3" x="54" y="15" opacity="0.8" width="48" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(100,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> reader</text></g></a> <a href="/2025/talks/weights" title="Weightlifting tracking with Emacs on Android" data-slug="weights"> <title> 10:35-10:45 Weightlifting tracking with Emacs on Android</title> <rect x="130" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(141,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> weights</text></g></a> <a href="/2025/talks/completion" title="corfu+yasnippet: Easier than I thought" data-slug="completion"> <title> 11:05-11:25 corfu+yasnippet: Easier than I thought</title> <rect x="171" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(196,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> completion</text></g></a> <a href="/2025/talks/zettelkasten" title="Zettelkasten for regular Emacs hackers" data-slug="zettelkasten"> <title> 1:00- 1:25 Zettelkasten for regular Emacs hackers</title> <rect x="329" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(361,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> zettelkasten</text></g></a> <a href="/2025/talks/hyperboleqa" title="Questions and answers to help you fly with Hyperbole" data-slug="hyperboleqa"> <title> 1:45- 2:15 Questions and answers to help you fly with Hyperbole</title> <rect x="391" y="15" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(430,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperboleqa</text></g></a> <a href="/2025/talks/gardening" title="Gardening in Emacs: A Windows user's tale of tending, tweaking, and triumph" data-slug="gardening"> <title> 2:15- 2:35 Gardening in Emacs: A Windows user's tale of tending, tweaking, and triumph</title> <rect x="432" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(457,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gardening</text></g></a> <a href="/2025/talks/bookclub-tapas" title="Bookclub tapas" data-slug="bookclub-tapas"> <title> 2:45- 3:20 Bookclub tapas</title> <rect x="473" y="15" opacity="0.5" width="48" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(519,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> bookclub-tapas</text></g></a> <a href="/2025/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 3:40- 3:50 Sunday closing remarks</title> <rect x="549" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(560,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <g transform="translate(0,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 5 PM</text></g></svg> -</div> - [[!toc ]] -Format: 35-min talk ; Q&A: BigBlueButton conference room <https://media.emacsconf.org/2025/current/bbb-reader.html> Etherpad: <https://pad.emacsconf.org/2025-reader> +Format: 35-min talk ; Q&A: BigBlueButton conference room Etherpad: <https://pad.emacsconf.org/2025-reader> Etherpad: <https://pad.emacsconf.org/2025-reader> -Discuss on IRC: [#emacsconf-gen](https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen) -Status: Q&A open for participation -<div>Times in different time zones:</div><div class="times" start="2025-12-07T14:40:00Z" end="2025-12-07T15:15:00Z"><div class="conf-time">Sunday, Dec 7 2025, ~9:40 AM - 10:15 AM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Sunday, Dec 7 2025, ~8:40 AM - 9:15 AM CST (US/Central)<br />Sunday, Dec 7 2025, ~7:40 AM - 8:15 AM MST (US/Mountain)<br />Sunday, Dec 7 2025, ~6:40 AM - 7:15 AM PST (US/Pacific)<br />Sunday, Dec 7 2025, ~2:40 PM - 3:15 PM UTC <br />Sunday, Dec 7 2025, ~3:40 PM - 4:15 PM CET (Europe/Paris)<br />Sunday, Dec 7 2025, ~4:40 PM - 5:15 PM EET (Europe/Athens)<br />Sunday, Dec 7 2025, ~8:10 PM - 8:45 PM IST (Asia/Kolkata)<br />Sunday, Dec 7 2025, ~10:40 PM - 11:15 PM +08 (Asia/Singapore)<br />Sunday, Dec 7 2025, ~11:40 PM - 12:15 AM JST (Asia/Tokyo)</div></div><div><strong><a href="/2025/watch/gen/">Find out how to watch and participate</a></strong></div> +Status: TO_REVIEW_QA + +# Talk + <div class="vid mainVideo"><video controls preload="none" id="mainVideo-reader"><source src="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2025/captions/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--main--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="mainVideo-reader" data=""" -00:00:00.720 An introduction to the Emacs reader +00:00.720 An introduction to the Emacs reader 00:44.760 Yet another document viewer in Emacs? 02:05.760 Architecture of Emacs Reader 06:00.280 A word on dynamic modules @@ -31,6 +27,10 @@ Status: Q&A open for participation 32:32.300 Contributing to the development 33:35.520 Acknowledgements -"""]]<div></div>Duration: 34:37 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-reader">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/current/bbb-reader.html">Open public Q&A</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--main.opus">Download --main.opus (30MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--main.webm">Download --main.webm (101MB)</a></li></ul></div></div> +"""]]<div></div>Duration: 34:37 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-reader">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--main.opus">Download --main.opus (30MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--main.webm">Download --main.webm (101MB)</a></li><li><a href="https://youtu.be/KQBXTSg_Occ">View on Youtube</a></li></ul></div></div> + +# Q&A + +<div class="vid qanda"><video controls preload="none" id="qanda-reader"><source src="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--answers.m4v" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--answers.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 20:12 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-reader">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--answers.json">Download --answers.json</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--answers.m4v">Download --answers.m4v (82MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--answers.tsv">Download --answers.tsv</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--answers.txt">Download --answers.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--answers.webm">Download --answers.webm (77MB)</a></li></ul></div></div> # Description <!-- End of emacsconf-publish-before-page -->
\ No newline at end of file diff --git a/2025/info/reader-nav.md b/2025/info/reader-nav.md index 3811de7f..c0b83e2a 100644 --- a/2025/info/reader-nav.md +++ b/2025/info/reader-nav.md @@ -1,7 +1,7 @@ <div class="talk-nav"> Back to the [[talks]] -Previous by time: <a href="/2025/talks/modern">Some problems of modernizing Emacs</a> -Next by time: <a href="/2025/talks/weights">Weightlifting tracking with Emacs on Android</a> -Track: <span class="sched-track General">General</span> - <strong><a href="https://emacsconf.org/2025/watch/gen">Watch</a></strong> +Previous by track: <a href="/2025/talks/modern">Some problems of modernizing Emacs</a> +Next by track: <a href="/2025/talks/weights">Weightlifting tracking with Emacs on Android</a> +Track: <span class="sched-track General">General</span> </div> diff --git a/2025/info/reference-before.md b/2025/info/reference-before.md index 713e80d7..66a6bb92 100644 --- a/2025/info/reference-before.md +++ b/2025/info/reference-before.md @@ -1,21 +1,15 @@ <!-- Automatically generated by emacsconf-publish-before-page --> - -The following image shows where the talk is in the schedule for Sat 2025-12-06. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="reference"> -<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2025/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:10 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2025/talks/org-babel" title="Making Org-Babel reactive" data-slug="org-babel"> <title> 9:10- 9:20 Making Org-Babel reactive</title> <rect x="13" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(24,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> org-babel</text></g></a> <a href="/2025/talks/reference" title="Emacs as a fully-fledged reference manager" data-slug="reference"> <title> 9:30- 9:55 Emacs as a fully-fledged reference manager</title> <rect stroke-width="3" x="41" y="15" opacity="0.8" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(73,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> reference</text></g></a> <a href="/2025/talks/gmail" title="org-gmail: A deep integration of Gmail into your Org Mode" data-slug="gmail"> <title> 10:15-10:40 org-gmail: A deep integration of Gmail into your Org Mode</title> <rect x="102" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(134,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gmail</text></g></a> <a href="/2025/talks/gnus" title="Reading and writing emails in GNU Emacs with Gnus" data-slug="gnus"> <title> 10:50-11:15 Reading and writing emails in GNU Emacs with Gnus</title> <rect x="150" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(182,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gnus</text></g></a> <a href="/2025/talks/latex" title="LaTeX export in org-mode: the overhaul" data-slug="latex"> <title> 11:25-11:45 LaTeX export in org-mode: the overhaul</title> <rect x="199" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(224,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> latex</text></g></a> <a href="/2025/talks/calc" title="Basic Calc functionality for engineering or electronics" data-slug="calc"> <title> 1:00- 1:25 Basic Calc functionality for engineering or electronics</title> <rect x="329" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(361,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> calc</text></g></a> <a href="/2025/talks/blee-lcnt" title="Blee-LCNT: An Emacs-centered content production and self-publication framework" data-slug="blee-lcnt"> <title> 1:35- 2:15 Blee-LCNT: An Emacs-centered content production and self-publication framework</title> <rect x="377" y="15" opacity="0.5" width="54" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(429,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> blee-lcnt</text></g></a> <a href="/2025/talks/greader" title="GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence" data-slug="greader"> <title> 2:35- 2:40 GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence</title> <rect x="459" y="15" opacity="0.5" width="6" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(463,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> greader</text></g></a> <a href="/2025/talks/open-mic" title="Open session" data-slug="open-mic"> <title> 2:50- 3:40 Open session</title> <rect x="480" y="15" opacity="0.5" width="68" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(546,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> open-mic</text></g></a> <a href="/2025/talks/sat-close" title="Saturday closing remarks / open session" data-slug="sat-close"> <title> 4:00- 4:10 Saturday closing remarks / open session</title> <rect x="576" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(587,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2025/talks/schemacs" title="One year progress update Schemacs (formerly Gypsum)" data-slug="schemacs"> <title> 9:30- 9:55 One year progress update Schemacs (formerly Gypsum)</title> <rect x="41" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(73,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> schemacs</text></g></a> <a href="/2025/talks/juicemacs" title="Juicemacs: exploring speculative JIT compilation for ELisp in Java" data-slug="juicemacs"> <title> 10:15-10:35 Juicemacs: exploring speculative JIT compilation for ELisp in Java</title> <rect x="102" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(127,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> juicemacs</text></g></a> <a href="/2025/talks/swanky" title="Swanky Python: Interactive development for Python" data-slug="swanky"> <title> 10:45-11:10 Swanky Python: Interactive development for Python</title> <rect x="144" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(176,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> swanky</text></g></a> <a href="/2025/talks/python" title="Interactive Python programming in Emacs" data-slug="python"> <title> 11:20-11:40 Interactive Python programming in Emacs</title> <rect x="192" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(217,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <a href="/2025/talks/llm" title="Emacs, editors, and LLM driven workflows" data-slug="llm"> <title> 1:00- 1:25 Emacs, editors, and LLM driven workflows</title> <rect x="329" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(361,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> llm</text></g></a> <a href="/2025/talks/private-ai" title="Emacs and private AI: a great match" data-slug="private-ai"> <title> 1:45- 2:05 Emacs and private AI: a great match</title> <rect x="391" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(416,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> private-ai</text></g></a> <a href="/2025/talks/commonlisp" title="Common Lisp images communicating like-a-human through shared Emacs slime and eev" data-slug="commonlisp"> <title> 2:25- 2:55 Common Lisp images communicating like-a-human through shared Emacs slime and eev</title> <rect x="446" y="75" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(485,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> commonlisp</text></g></a> <a href="/2025/talks/graphics" title="Modern Emacs/Elisp hardware/software accelerated graphics" data-slug="graphics"> <title> 3:05- 3:30 Modern Emacs/Elisp hardware/software accelerated graphics</title> <rect x="500" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(532,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> graphics</text></g></a> <g transform="translate(0,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 5 PM</text></g></svg> -</div> - [[!toc ]] -Format: 21-min talk ; Q&A: BigBlueButton conference room <https://media.emacsconf.org/2025/current/bbb-reference.html> Etherpad: <https://pad.emacsconf.org/2025-reference> +Format: 21-min talk ; Q&A: BigBlueButton conference room Etherpad: <https://pad.emacsconf.org/2025-reference> Etherpad: <https://pad.emacsconf.org/2025-reference> -Discuss on IRC: [#emacsconf-gen](https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen) -Status: Q&A finished, IRC and pad will be archived on this page +Status: TO_REVIEW_QA <div class="vid mainVideo"><video controls preload="none" id="mainVideo-reference"><source src="https://media.emacsconf.org/2025/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2025/captions/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--main--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="mainVideo-reference" data=""" -00:00:00.820 Introduction +00:00.820 Introduction 01:43.600 Capture 04:00.920 Organizing 05:03.479 Ebib @@ -26,6 +20,6 @@ Status: Q&A finished, IRC and pad will be archived on this page 18:05.640 Annotations 19:21.820 Wrapping up -"""]]<div></div>Duration: 20:14 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-reference">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/current/bbb-reference.html">Open public Q&A</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--main.opus">Download --main.opus (18MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--main.webm">Download --main.webm (103MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--script.org">Download --script.org</a></li><li><a href="https://youtu.be/XjhnY4WuQRQ">View on Youtube</a></li></ul></div></div> +"""]]<div></div>Duration: 20:14 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-reference">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--main.opus">Download --main.opus (18MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--main.webm">Download --main.webm (103MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--script.org">Download --script.org</a></li><li><a href="https://youtu.be/XjhnY4WuQRQ">View on Youtube</a></li></ul></div></div> # Description <!-- End of emacsconf-publish-before-page -->
\ No newline at end of file diff --git a/2025/info/reference-nav.md b/2025/info/reference-nav.md index 699b7825..12badcf3 100644 --- a/2025/info/reference-nav.md +++ b/2025/info/reference-nav.md @@ -1,7 +1,7 @@ <div class="talk-nav"> Back to the [[talks]] -Previous by time: <a href="/2025/talks/schemacs">One year progress update Schemacs (formerly Gypsum)</a> -Next by time: <a href="/2025/talks/gmail">org-gmail: A deep integration of Gmail into your Org Mode</a> -Track: <span class="sched-track General">General</span> - <strong><a href="https://emacsconf.org/2025/watch/gen">Watch</a></strong> +Previous by track: <a href="/2025/talks/org-babel">Making Org-Babel reactive</a> +Next by track: <a href="/2025/talks/gmail">org-gmail: A deep integration of Gmail into your Org Mode</a> +Track: <span class="sched-track General">General</span> </div> diff --git a/2025/info/sat-close-before.md b/2025/info/sat-close-before.md index 7633a02e..a43ba272 100644 --- a/2025/info/sat-close-before.md +++ b/2025/info/sat-close-before.md @@ -1,19 +1,13 @@ <!-- Automatically generated by emacsconf-publish-before-page --> - -The following image shows where the talk is in the schedule for Sat 2025-12-06. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="sat-close"> -<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2025/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:10 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2025/talks/org-babel" title="Making Org-Babel reactive" data-slug="org-babel"> <title> 9:10- 9:20 Making Org-Babel reactive</title> <rect x="13" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(24,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> org-babel</text></g></a> <a href="/2025/talks/reference" title="Emacs as a fully-fledged reference manager" data-slug="reference"> <title> 9:30- 9:55 Emacs as a fully-fledged reference manager</title> <rect x="41" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(73,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> reference</text></g></a> <a href="/2025/talks/gmail" title="org-gmail: A deep integration of Gmail into your Org Mode" data-slug="gmail"> <title> 10:15-10:40 org-gmail: A deep integration of Gmail into your Org Mode</title> <rect x="102" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(134,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gmail</text></g></a> <a href="/2025/talks/gnus" title="Reading and writing emails in GNU Emacs with Gnus" data-slug="gnus"> <title> 10:50-11:15 Reading and writing emails in GNU Emacs with Gnus</title> <rect x="150" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(182,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gnus</text></g></a> <a href="/2025/talks/latex" title="LaTeX export in org-mode: the overhaul" data-slug="latex"> <title> 11:25-11:45 LaTeX export in org-mode: the overhaul</title> <rect x="199" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(224,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> latex</text></g></a> <a href="/2025/talks/calc" title="Basic Calc functionality for engineering or electronics" data-slug="calc"> <title> 1:00- 1:25 Basic Calc functionality for engineering or electronics</title> <rect x="329" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(361,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> calc</text></g></a> <a href="/2025/talks/blee-lcnt" title="Blee-LCNT: An Emacs-centered content production and self-publication framework" data-slug="blee-lcnt"> <title> 1:35- 2:15 Blee-LCNT: An Emacs-centered content production and self-publication framework</title> <rect x="377" y="15" opacity="0.5" width="54" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(429,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> blee-lcnt</text></g></a> <a href="/2025/talks/greader" title="GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence" data-slug="greader"> <title> 2:35- 2:40 GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence</title> <rect x="459" y="15" opacity="0.5" width="6" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(463,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> greader</text></g></a> <a href="/2025/talks/open-mic" title="Open session" data-slug="open-mic"> <title> 2:50- 3:40 Open session</title> <rect x="480" y="15" opacity="0.5" width="68" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(546,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> open-mic</text></g></a> <a href="/2025/talks/sat-close" title="Saturday closing remarks / open session" data-slug="sat-close"> <title> 4:00- 4:10 Saturday closing remarks / open session</title> <rect stroke-width="3" x="576" y="15" opacity="0.8" width="13" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(587,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2025/talks/schemacs" title="One year progress update Schemacs (formerly Gypsum)" data-slug="schemacs"> <title> 9:30- 9:55 One year progress update Schemacs (formerly Gypsum)</title> <rect x="41" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(73,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> schemacs</text></g></a> <a href="/2025/talks/juicemacs" title="Juicemacs: exploring speculative JIT compilation for ELisp in Java" data-slug="juicemacs"> <title> 10:15-10:35 Juicemacs: exploring speculative JIT compilation for ELisp in Java</title> <rect x="102" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(127,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> juicemacs</text></g></a> <a href="/2025/talks/swanky" title="Swanky Python: Interactive development for Python" data-slug="swanky"> <title> 10:45-11:10 Swanky Python: Interactive development for Python</title> <rect x="144" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(176,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> swanky</text></g></a> <a href="/2025/talks/python" title="Interactive Python programming in Emacs" data-slug="python"> <title> 11:20-11:40 Interactive Python programming in Emacs</title> <rect x="192" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(217,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <a href="/2025/talks/llm" title="Emacs, editors, and LLM driven workflows" data-slug="llm"> <title> 1:00- 1:25 Emacs, editors, and LLM driven workflows</title> <rect x="329" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(361,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> llm</text></g></a> <a href="/2025/talks/private-ai" title="Emacs and private AI: a great match" data-slug="private-ai"> <title> 1:45- 2:05 Emacs and private AI: a great match</title> <rect x="391" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(416,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> private-ai</text></g></a> <a href="/2025/talks/commonlisp" title="Common Lisp images communicating like-a-human through shared Emacs slime and eev" data-slug="commonlisp"> <title> 2:25- 2:55 Common Lisp images communicating like-a-human through shared Emacs slime and eev</title> <rect x="446" y="75" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(485,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> commonlisp</text></g></a> <a href="/2025/talks/graphics" title="Modern Emacs/Elisp hardware/software accelerated graphics" data-slug="graphics"> <title> 3:05- 3:30 Modern Emacs/Elisp hardware/software accelerated graphics</title> <rect x="500" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(532,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> graphics</text></g></a> <g transform="translate(0,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 5 PM</text></g></svg> -</div> - [[!toc ]] -Format: 10-min talk ; Q&A: BigBlueButton conference room <https://media.emacsconf.org/2025/current/bbb-sat-close.html> Etherpad: <https://pad.emacsconf.org/2025-sat-close> +Format: 10-min talk ; Q&A: BigBlueButton conference room Etherpad: <https://pad.emacsconf.org/2025-sat-close> Etherpad: <https://pad.emacsconf.org/2025-sat-close> -Discuss on IRC: [#emacsconf-gen](https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen) Status: Q&A finished, IRC and pad will be archived on this page -<div class="vid mainVideo"><div></div><div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-sat-close">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/current/bbb-sat-close.html">Open public Q&A</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sat-close--saturday-closing-remarks--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sat-close--saturday-closing-remarks--intro.webm">Download --intro.webm</a></li></ul></div></div> +<div class="vid mainVideo"><div></div><div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-sat-close">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sat-close--saturday-closing-remarks--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sat-close--saturday-closing-remarks--intro.webm">Download --intro.webm</a></li></ul></div></div> # Description <!-- End of emacsconf-publish-before-page -->
\ No newline at end of file diff --git a/2025/info/sat-close-nav.md b/2025/info/sat-close-nav.md index fe14f1b1..5c247a9a 100644 --- a/2025/info/sat-close-nav.md +++ b/2025/info/sat-close-nav.md @@ -1,7 +1,7 @@ <div class="talk-nav"> Back to the [[talks]] -Previous by time: <a href="/2025/talks/graphics">Modern Emacs/Elisp hardware/software accelerated graphics</a> -Next by time: <a href="/2025/talks/sun-open">Sunday opening remarks</a> -Track: <span class="sched-track General">General</span> - <strong><a href="https://emacsconf.org/2025/watch/gen">Watch</a></strong> +Previous by track: <a href="/2025/talks/graphics">Modern Emacs/Elisp hardware/software accelerated graphics</a> +Next by track: <a href="/2025/talks/sun-close">Sunday closing remarks</a> +Track: <span class="sched-track General">General</span> </div> diff --git a/2025/info/sat-open-before.md b/2025/info/sat-open-before.md index 178d7516..5842eeb0 100644 --- a/2025/info/sat-open-before.md +++ b/2025/info/sat-open-before.md @@ -1,13 +1,7 @@ <!-- Automatically generated by emacsconf-publish-before-page --> - -The following image shows where the talk is in the schedule for Sat 2025-12-06. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="sat-open"> -<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2025/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:10 Saturday opening remarks</title> <rect stroke-width="3" x="0" y="15" opacity="0.8" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2025/talks/org-babel" title="Making Org-Babel reactive" data-slug="org-babel"> <title> 9:10- 9:20 Making Org-Babel reactive</title> <rect x="13" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(24,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> org-babel</text></g></a> <a href="/2025/talks/reference" title="Emacs as a fully-fledged reference manager" data-slug="reference"> <title> 9:30- 9:55 Emacs as a fully-fledged reference manager</title> <rect x="41" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(73,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> reference</text></g></a> <a href="/2025/talks/gmail" title="org-gmail: A deep integration of Gmail into your Org Mode" data-slug="gmail"> <title> 10:15-10:40 org-gmail: A deep integration of Gmail into your Org Mode</title> <rect x="102" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(134,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gmail</text></g></a> <a href="/2025/talks/gnus" title="Reading and writing emails in GNU Emacs with Gnus" data-slug="gnus"> <title> 10:50-11:15 Reading and writing emails in GNU Emacs with Gnus</title> <rect x="150" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(182,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gnus</text></g></a> <a href="/2025/talks/latex" title="LaTeX export in org-mode: the overhaul" data-slug="latex"> <title> 11:25-11:45 LaTeX export in org-mode: the overhaul</title> <rect x="199" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(224,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> latex</text></g></a> <a href="/2025/talks/calc" title="Basic Calc functionality for engineering or electronics" data-slug="calc"> <title> 1:00- 1:25 Basic Calc functionality for engineering or electronics</title> <rect x="329" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(361,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> calc</text></g></a> <a href="/2025/talks/blee-lcnt" title="Blee-LCNT: An Emacs-centered content production and self-publication framework" data-slug="blee-lcnt"> <title> 1:35- 2:15 Blee-LCNT: An Emacs-centered content production and self-publication framework</title> <rect x="377" y="15" opacity="0.5" width="54" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(429,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> blee-lcnt</text></g></a> <a href="/2025/talks/greader" title="GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence" data-slug="greader"> <title> 2:35- 2:40 GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence</title> <rect x="459" y="15" opacity="0.5" width="6" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(463,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> greader</text></g></a> <a href="/2025/talks/open-mic" title="Open session" data-slug="open-mic"> <title> 2:50- 3:40 Open session</title> <rect x="480" y="15" opacity="0.5" width="68" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(546,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> open-mic</text></g></a> <a href="/2025/talks/sat-close" title="Saturday closing remarks / open session" data-slug="sat-close"> <title> 4:00- 4:10 Saturday closing remarks / open session</title> <rect x="576" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(587,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2025/talks/schemacs" title="One year progress update Schemacs (formerly Gypsum)" data-slug="schemacs"> <title> 9:30- 9:55 One year progress update Schemacs (formerly Gypsum)</title> <rect x="41" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(73,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> schemacs</text></g></a> <a href="/2025/talks/juicemacs" title="Juicemacs: exploring speculative JIT compilation for ELisp in Java" data-slug="juicemacs"> <title> 10:15-10:35 Juicemacs: exploring speculative JIT compilation for ELisp in Java</title> <rect x="102" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(127,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> juicemacs</text></g></a> <a href="/2025/talks/swanky" title="Swanky Python: Interactive development for Python" data-slug="swanky"> <title> 10:45-11:10 Swanky Python: Interactive development for Python</title> <rect x="144" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(176,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> swanky</text></g></a> <a href="/2025/talks/python" title="Interactive Python programming in Emacs" data-slug="python"> <title> 11:20-11:40 Interactive Python programming in Emacs</title> <rect x="192" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(217,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <a href="/2025/talks/llm" title="Emacs, editors, and LLM driven workflows" data-slug="llm"> <title> 1:00- 1:25 Emacs, editors, and LLM driven workflows</title> <rect x="329" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(361,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> llm</text></g></a> <a href="/2025/talks/private-ai" title="Emacs and private AI: a great match" data-slug="private-ai"> <title> 1:45- 2:05 Emacs and private AI: a great match</title> <rect x="391" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(416,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> private-ai</text></g></a> <a href="/2025/talks/commonlisp" title="Common Lisp images communicating like-a-human through shared Emacs slime and eev" data-slug="commonlisp"> <title> 2:25- 2:55 Common Lisp images communicating like-a-human through shared Emacs slime and eev</title> <rect x="446" y="75" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(485,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> commonlisp</text></g></a> <a href="/2025/talks/graphics" title="Modern Emacs/Elisp hardware/software accelerated graphics" data-slug="graphics"> <title> 3:05- 3:30 Modern Emacs/Elisp hardware/software accelerated graphics</title> <rect x="500" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(532,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> graphics</text></g></a> <g transform="translate(0,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 5 PM</text></g></svg> -</div> - [[!toc ]] -Format: 5-min talk ; Q&A: Etherpad <https://pad.emacsconf.org/2025-sat-open> +Format: 5-min talk ; Q&A: Etherpad Etherpad: <https://pad.emacsconf.org/2025-sat-open> -Discuss on IRC: [#emacsconf-gen](https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen) Status: Q&A finished, IRC and pad will be archived on this page @@ -29,6 +23,6 @@ Status: Q&A finished, IRC and pad will be archived on this page 04:16.020 Videos 04:26.776 Let's get started! -"""]]<div></div>Duration: 04:51 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-sat-open">Open Etherpad</a></li><li><a href="https://pad.emacsconf.org/2025-sat-open">Open public Q&A</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sat-open--saturday-opening-remarks--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sat-open--saturday-opening-remarks--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sat-open--saturday-opening-remarks--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sat-open--saturday-opening-remarks--main.opus">Download --main.opus (2.5MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sat-open--saturday-opening-remarks--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sat-open--saturday-opening-remarks--main.webm">Download --main.webm (15MB)</a></li></ul></div></div> +"""]]<div></div>Duration: 04:51 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-sat-open">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sat-open--saturday-opening-remarks--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sat-open--saturday-opening-remarks--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sat-open--saturday-opening-remarks--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sat-open--saturday-opening-remarks--main.opus">Download --main.opus (2.5MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sat-open--saturday-opening-remarks--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sat-open--saturday-opening-remarks--main.webm">Download --main.webm (15MB)</a></li><li><a href="https://youtu.be/0B9lsD8Z_6M">View on Youtube</a></li></ul></div></div> # Description <!-- End of emacsconf-publish-before-page -->
\ No newline at end of file diff --git a/2025/info/sat-open-nav.md b/2025/info/sat-open-nav.md index 00816f18..e7317183 100644 --- a/2025/info/sat-open-nav.md +++ b/2025/info/sat-open-nav.md @@ -1,6 +1,6 @@ <div class="talk-nav"> Back to the [[talks]] -Next by time: <a href="/2025/talks/org-babel">Making Org-Babel reactive</a> -Track: <span class="sched-track General">General</span> - <strong><a href="https://emacsconf.org/2025/watch/gen">Watch</a></strong> +Next by track: <a href="/2025/talks/org-babel">Making Org-Babel reactive</a> +Track: <span class="sched-track General">General</span> </div> diff --git a/2025/info/schemacs-after.md b/2025/info/schemacs-after.md index 595a5d18..65fe55f1 100644 --- a/2025/info/schemacs-after.md +++ b/2025/info/schemacs-after.md @@ -405,7 +405,520 @@ Captioner: sachac -Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202023%20schemacs%3A%20One%20year%20progress%20update%20Schemacs%20%28formerly%20Gypsum%29) +<div class="transcript transcript-qanda"><a name="schemacs-qanda-transcript"></a><h1>Q&A transcript (unedited)</h1> + +[[!template text="""[oops, forgot to start] object protocol has a scheme implementation.""" start="00:00:00.000" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Does this mean schemacs will be""" start="00:00:03.840" video="qanda-schemacs" id="subtitle"]] +[[!template text="""meta object changeable in practice?""" start="00:00:07.160" video="qanda-schemacs" id="subtitle"]] +[[!template text="""So I don't actually need the meta object protocol so far.""" start="00:00:11.080" video="qanda-schemacs" id="subtitle"]] +[[!template text="""In the reference implementation for Guile,""" start="00:00:16.600" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Guile has its own object-oriented system called Goops.""" start="00:00:19.280" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I'm sorry, I'm hearing a delay.""" start="00:00:27.560" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Anyway, I'm going to turn off my stream quick. There we go.""" start="00:00:29.240" video="qanda-schemacs" id="subtitle"]] +[[!template text="""So, um. Yes, uh, I, I don't I wasn't aware of the, um.""" start="00:00:32.520" video="qanda-schemacs" id="subtitle"]] +[[!template text="""the meta-object protocol that you have mentioned here,""" start="00:00:39.440" video="qanda-schemacs" id="subtitle"]] +[[!template text="""but I will look into it.""" start="00:00:43.920" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I know that there isn't really a standard""" start="00:00:45.960" video="qanda-schemacs" id="subtitle"]] +[[!template text="""meta-object protocol for Scheme.""" start="00:00:48.720" video="qanda-schemacs" id="subtitle"]] +[[!template text="""That was an issue for me""" start="00:00:52.120" video="qanda-schemacs" id="subtitle"]] +[[!template text="""because I'm trying to make this cross-platform,""" start="00:00:53.520" video="qanda-schemacs" id="subtitle"]] +[[!template text="""and so I've done all of my work so far""" start="00:00:56.920" video="qanda-schemacs" id="subtitle"]] +[[!template text="""without a meta-object protocol""" start="00:00:59.640" video="qanda-schemacs" id="subtitle"]] +[[!template text="""because that's the easiest way to make it work""" start="00:01:00.960" video="qanda-schemacs" id="subtitle"]] +[[!template text="""on multiple Scheme implementations.""" start="00:01:02.440" video="qanda-schemacs" id="subtitle"]] +[[!template text="""But if there is a nice portable one""" start="00:01:04.880" video="qanda-schemacs" id="subtitle"]] +[[!template text="""that works on many implementations, I would use that, yes.""" start="00:01:07.360" video="qanda-schemacs" id="subtitle"]] +[[!template text="""It's just that so far it hasn't been necessary.""" start="00:01:12.560" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I've been doing mostly functional reactive programming""" start="00:01:15.000" video="qanda-schemacs" id="subtitle"]] +[[!template text="""and React.js-like framework.""" start="00:01:19.280" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I've created that for the GUI front end.""" start="00:01:21.080" video="qanda-schemacs" id="subtitle"]] +[[!template text="""And that's all the more I've needed so far.""" start="00:01:23.240" video="qanda-schemacs" id="subtitle"]] +[[!template text="""So, yeah. Oh, yeah, please, next question. Sure.""" start="00:01:26.200" video="qanda-schemacs" id="subtitle"]] +[[!template text="""So how will the GUI display code be R7RS compliant?""" start="00:01:33.400" video="qanda-schemacs" id="subtitle"]] +[[!template text="""As far as I know, there's no DL open in R7RS. That's right.""" start="00:01:39.600" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Yeah, R7RS small is extremely small""" start="00:01:45.080" video="qanda-schemacs" id="subtitle"]] +[[!template text="""and does not have any features at all.""" start="00:01:48.880" video="qanda-schemacs" id="subtitle"]] +[[!template text="""But it does provide a conv expand macro.""" start="00:01:50.440" video="qanda-schemacs" id="subtitle"]] +[[!template text="""And this allows you to load in different code""" start="00:01:54.800" video="qanda-schemacs" id="subtitle"]] +[[!template text="""depending on which scheme implementation you're using.""" start="00:01:57.640" video="qanda-schemacs" id="subtitle"]] +[[!template text="""So basically, I'll have to write a different back end""" start="00:02:00.880" video="qanda-schemacs" id="subtitle"]] +[[!template text="""for each scheme implementation.""" start="00:02:03.360" video="qanda-schemacs" id="subtitle"]] +[[!template text="""And I think that's really""" start="00:02:05.280" video="qanda-schemacs" id="subtitle"]] +[[!template text="""the only way is possible at all,""" start="00:02:06.640" video="qanda-schemacs" id="subtitle"]] +[[!template text="""because there's no standardization.""" start="00:02:10.920" video="qanda-schemacs" id="subtitle"]] +[[!template text="""So essentially, the libraries""" start="00:02:12.720" video="qanda-schemacs" id="subtitle"]] +[[!template text="""that I've written for schemacs""" start="00:02:14.440" video="qanda-schemacs" id="subtitle"]] +[[!template text="""will become kind of a platform-independent way""" start="00:02:15.720" video="qanda-schemacs" id="subtitle"]] +[[!template text="""of writing GUIs for Scheme.""" start="00:02:22.440" video="qanda-schemacs" id="subtitle"]] +[[!template text="""It's just a matter of,""" start="00:02:25.840" video="qanda-schemacs" id="subtitle"]] +[[!template text="""will your Scheme implementation""" start="00:02:27.120" video="qanda-schemacs" id="subtitle"]] +[[!template text="""support the Schemacs GUI protocol?""" start="00:02:28.680" video="qanda-schemacs" id="subtitle"]] +[[!template text="""So I've kind of written my own protocol,""" start="00:02:32.280" video="qanda-schemacs" id="subtitle"]] +[[!template text="""and it's entirely R7 RSML compliant.""" start="00:02:34.200" video="qanda-schemacs" id="subtitle"]] +[[!template text="""It's all done with record,""" start="00:02:36.680" video="qanda-schemacs" id="subtitle"]] +[[!template text="""what are they called, record types.""" start="00:02:38.240" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Do you think some of the Schemacs""" start="00:02:43.040" video="qanda-schemacs" id="subtitle"]] +[[!template text="""could be extracted into SFRIs since you've made it portable""" start="00:02:46.520" video="qanda-schemacs" id="subtitle"]] +[[!template text="""between scheme implementations?""" start="00:02:50.680" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Yes, I would definitely like to do that.""" start="00:02:52.880" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Probably first thing I'll do is start splitting up""" start="00:02:55.280" video="qanda-schemacs" id="subtitle"]] +[[!template text="""and publishing independent libraries""" start="00:02:59.240" video="qanda-schemacs" id="subtitle"]] +[[!template text="""on the Aku package manager.""" start="00:03:01.680" video="qanda-schemacs" id="subtitle"]] +[[!template text="""This is a kind of a package manager ecosystem for Scheme,""" start="00:03:04.320" video="qanda-schemacs" id="subtitle"]] +[[!template text="""and in particular R7RS Scheme.""" start="00:03:07.640" video="qanda-schemacs" id="subtitle"]] +[[!template text="""And it's also mirrored on the other package manager,""" start="00:03:11.680" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Snowfort, just by the way.""" start="00:03:15.240" video="qanda-schemacs" id="subtitle"]] +[[!template text="""But yeah, and then I might be also,""" start="00:03:18.280" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I've considered creating a SRFI for the lens library,""" start="00:03:21.360" video="qanda-schemacs" id="subtitle"]] +[[!template text="""which is based on the Haskell lens library.""" start="00:03:25.080" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I don't think that exists yet in Scheme,""" start="00:03:27.400" video="qanda-schemacs" id="subtitle"]] +[[!template text="""so I thought that might make a good SRFI.""" start="00:03:29.840" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Is there a recommended Scheme implementation?""" start="00:03:34.320" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Guile is the reference implementation.""" start="00:03:36.720" video="qanda-schemacs" id="subtitle"]] +[[!template text="""It's the only one that works with GUI,""" start="00:03:44.560" video="qanda-schemacs" id="subtitle"]] +[[!template text="""but as I demonstrated in my presentation,""" start="00:03:47.280" video="qanda-schemacs" id="subtitle"]] +[[!template text="""the Emacs Lisp interpreter""" start="00:03:51.360" video="qanda-schemacs" id="subtitle"]] +[[!template text="""works on multiple schemes so far,""" start="00:03:52.600" video="qanda-schemacs" id="subtitle"]] +[[!template text="""and I've had trouble with some of the scheme compilers.""" start="00:03:55.080" video="qanda-schemacs" id="subtitle"]] +[[!template text="""But yeah, I would recommend Guile.""" start="00:04:00.040" video="qanda-schemacs" id="subtitle"]] +[[!template text="""But how would schemacs deal with""" start="00:04:04.840" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Emacs's re-display architecture""" start="00:04:07.720" video="qanda-schemacs" id="subtitle"]] +[[!template text="""will be having its own display architecture?""" start="00:04:10.040" video="qanda-schemacs" id="subtitle"]] +[[!template text="""And if so, how will you handle""" start="00:04:13.160" video="qanda-schemacs" id="subtitle"]] +[[!template text="""things like overlays and images?""" start="00:04:15.360" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Yeah, definitely. That's to be determined.""" start="00:04:18.480" video="qanda-schemacs" id="subtitle"]] +[[!template text="""So basically, the scheme way of doing things""" start="00:04:25.240" video="qanda-schemacs" id="subtitle"]] +[[!template text="""So, I've created this React-like programming framework.""" start="00:04:31.280" video="qanda-schemacs" id="subtitle"]] +[[!template text="""It's like ReactJS or Vue.js.""" start="00:04:36.640" video="qanda-schemacs" id="subtitle"]] +[[!template text="""That is just the API of how you write GUI code in Scheme.""" start="00:04:41.000" video="qanda-schemacs" id="subtitle"]] +[[!template text="""And each Scheme implementation""" start="00:04:45.120" video="qanda-schemacs" id="subtitle"]] +[[!template text="""will have its own GUI backend,""" start="00:04:49.720" video="qanda-schemacs" id="subtitle"]] +[[!template text="""which implements that Protocol.""" start="00:04:52.280" video="qanda-schemacs" id="subtitle"]] +[[!template text="""And so when it comes time to link""" start="00:04:55.600" video="qanda-schemacs" id="subtitle"]] +[[!template text="""the Emacs Lisp built-in functions""" start="00:04:59.200" video="qanda-schemacs" id="subtitle"]] +[[!template text="""that do these things like overlays and so on,""" start="00:05:03.080" video="qanda-schemacs" id="subtitle"]] +[[!template text="""we're going to have to come up with some way""" start="00:05:08.280" video="qanda-schemacs" id="subtitle"]] +[[!template text="""of modeling that""" start="00:05:11.080" video="qanda-schemacs" id="subtitle"]] +[[!template text="""using the scheme framework that I've designed.""" start="00:05:12.080" video="qanda-schemacs" id="subtitle"]] +[[!template text="""And I may have to make alterations""" start="00:05:15.800" video="qanda-schemacs" id="subtitle"]] +[[!template text="""specifically to support Emacs Lisp.""" start="00:05:17.600" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I don't know yet. I haven't got that far.""" start="00:05:22.040" video="qanda-schemacs" id="subtitle"]] +[[!template text="""You were saying that you would like""" start="00:05:28.560" video="qanda-schemacs" id="subtitle"]] +[[!template text="""to get the most out of the 1300""" start="00:05:30.080" video="qanda-schemacs" id="subtitle"]] +[[!template text="""and something Emacs packages that exist.""" start="00:05:33.480" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Are there technical blockers to doing them all""" start="00:05:36.520" video="qanda-schemacs" id="subtitle"]] +[[!template text="""or just a problem of getting enough people to jump into it?""" start="00:05:38.760" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Yeah, it's just a matter of implementing enough""" start="00:05:44.040" video="qanda-schemacs" id="subtitle"]] +[[!template text="""of the Emacs built-in functions.""" start="00:05:48.640" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Right now, there's kind of a big bug.""" start="00:05:50.840" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I mentioned this also in the presentation.""" start="00:05:57.080" video="qanda-schemacs" id="subtitle"]] +[[!template text="""The stacks trace that you saw during my presentation,""" start="00:05:59.360" video="qanda-schemacs" id="subtitle"]] +[[!template text="""that is the biggest bug right now""" start="00:06:02.600" video="qanda-schemacs" id="subtitle"]] +[[!template text="""that's preventing me from running most other code.""" start="00:06:05.800" video="qanda-schemacs" id="subtitle"]] +[[!template text="""And I don't think other people""" start="00:06:08.160" video="qanda-schemacs" id="subtitle"]] +[[!template text="""will be able to contribute to the code base""" start="00:06:10.360" video="qanda-schemacs" id="subtitle"]] +[[!template text="""until I get that bug fixed,""" start="00:06:13.040" video="qanda-schemacs" id="subtitle"]] +[[!template text="""because it doesn't capture closures correctly.""" start="00:06:14.560" video="qanda-schemacs" id="subtitle"]] +[[!template text="""it doesn't behave like Emacs Lisp does,""" start="00:06:18.680" video="qanda-schemacs" id="subtitle"]] +[[!template text="""and that's the big problem.""" start="00:06:22.520" video="qanda-schemacs" id="subtitle"]] +[[!template text="""So once I get that worked out,""" start="00:06:26.960" video="qanda-schemacs" id="subtitle"]] +[[!template text="""then it's just a matter of implementing enough""" start="00:06:31.760" video="qanda-schemacs" id="subtitle"]] +[[!template text="""of the EmacsLisp built-in functions,""" start="00:06:35.600" video="qanda-schemacs" id="subtitle"]] +[[!template text="""these are the functions that are mostly implemented in C,""" start="00:06:37.880" video="qanda-schemacs" id="subtitle"]] +[[!template text="""implementing those in Scheme.""" start="00:06:40.680" video="qanda-schemacs" id="subtitle"]] +[[!template text="""And that, yeah, that's the thing""" start="00:06:42.880" video="qanda-schemacs" id="subtitle"]] +[[!template text="""that I'm going to need a lot of help with""" start="00:06:45.960" video="qanda-schemacs" id="subtitle"]] +[[!template text="""because there's quite a few of those APIs.""" start="00:06:47.840" video="qanda-schemacs" id="subtitle"]] +[[!template text="""But I imagine, I have no idea, no way of knowing,""" start="00:06:49.720" video="qanda-schemacs" id="subtitle"]] +[[!template text="""but I imagine we don't need 100% of them""" start="00:06:53.520" video="qanda-schemacs" id="subtitle"]] +[[!template text="""in order to run most of Elpa.""" start="00:06:56.460" video="qanda-schemacs" id="subtitle"]] +[[!template text="""We probably can get some of the important large Elpa packages""" start="00:06:58.168" video="qanda-schemacs" id="subtitle"]] +[[!template text="""like Magit and Org mode with just enough of the Emacs Lisp""" start="00:07:05.085" video="qanda-schemacs" id="subtitle"]] +[[!template text="""built-in functions to handle that.""" start="00:07:12.720" video="qanda-schemacs" id="subtitle"]] +[[!template text="""But we won't really know until we've tried.""" start="00:07:14.960" video="qanda-schemacs" id="subtitle"]] +[[!template text="""So yeah, I'll try to get this bug fixed right away.""" start="00:07:19.280" video="qanda-schemacs" id="subtitle"]] +[[!template text="""That way we can all start working on it together, hopefully.""" start="00:07:22.520" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Highly relatable answer there.""" start="00:07:24.980" video="qanda-schemacs" id="subtitle"]] +[[!template text="""We'll burn that bridge when we're on it or something.""" start="00:07:27.127" video="qanda-schemacs" id="subtitle"]] +[[!template text="""What are your thoughts on chicken scheme?""" start="00:07:31.960" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Will that be a good fit? Do you think?""" start="00:07:34.560" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I think it will be, um, I, I did show""" start="00:07:37.200" video="qanda-schemacs" id="subtitle"]] +[[!template text="""trying to run chicken scheme in my, um, presentation""" start="00:07:41.040" video="qanda-schemacs" id="subtitle"]] +[[!template text="""and, uh, I ran up against some kind of issue,""" start="00:07:44.960" video="qanda-schemacs" id="subtitle"]] +[[!template text="""which I really don't know how to debug.""" start="00:07:48.840" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Um, it's probably something to do with the, uh, pattern matcher.""" start="00:07:51.080" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Um, I'm using the pattern matcher,""" start="00:07:55.880" video="qanda-schemacs" id="subtitle"]] +[[!template text="""uh, written by Alex shin,""" start="00:07:58.920" video="qanda-schemacs" id="subtitle"]] +[[!template text="""which seems to be the most portable.""" start="00:08:00.600" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Pattern matcher, uh, for our seven RS scheme.""" start="00:08:02.600" video="qanda-schemacs" id="subtitle"]] +[[!template text="""But not all scheme compilers implement, what is it called?""" start="00:08:05.920" video="qanda-schemacs" id="subtitle"]] +[[!template text="""The macro, I can't remember what it's called.""" start="00:08:13.520" video="qanda-schemacs" id="subtitle"]] +[[!template text="""There's the macro expansion system for R7 RS small.""" start="00:08:19.560" video="qanda-schemacs" id="subtitle"]] +[[!template text="""All of these scheme implementations""" start="00:08:24.200" video="qanda-schemacs" id="subtitle"]] +[[!template text="""seem to have a slightly different take on how they work.""" start="00:08:27.200" video="qanda-schemacs" id="subtitle"]] +[[!template text="""And so that macro expander has been, for pattern matching,""" start="00:08:29.320" video="qanda-schemacs" id="subtitle"]] +[[!template text="""has been the biggest difficulty""" start="00:08:33.920" video="qanda-schemacs" id="subtitle"]] +[[!template text="""in making this code portable.""" start="00:08:35.720" video="qanda-schemacs" id="subtitle"]] +[[!template text="""And so I'm thinking of ways of maybe trying to ditch pattern matching,""" start="00:08:37.360" video="qanda-schemacs" id="subtitle"]] +[[!template text="""but that's such a useful feature and it's hard.""" start="00:08:42.240" video="qanda-schemacs" id="subtitle"]] +[[!template text="""So I don't know, we'll see if I can,""" start="00:08:45.000" video="qanda-schemacs" id="subtitle"]] +[[!template text="""if somebody can help me get it to work on chicken team,""" start="00:08:49.880" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I'd really appreciate it.""" start="00:08:52.440" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Can this implementation be used by Guile's Emacs Lisp mode?""" start="00:08:56.600" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Guile's Emacs list mode. Okay. Yeah, good question.""" start="00:09:01.800" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I did mention this last year in my presentation.""" start="00:09:08.200" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Emacs list in Guile is totally different""" start="00:09:10.920" video="qanda-schemacs" id="subtitle"]] +[[!template text="""from what I've done.""" start="00:09:13.720" video="qanda-schemacs" id="subtitle"]] +[[!template text="""That implementation was written about 10 or 15 years ago.""" start="00:09:16.200" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I can't remember exactly when. It is quite incomplete.""" start="00:09:21.293" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I don't think it even runs most of the macro expanding code.""" start="00:09:26.502" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Some of the code that is written""" start="00:09:36.543" video="qanda-schemacs" id="subtitle"]] +[[!template text="""for GNU Emacs in Emacs Lisp,""" start="00:09:39.680" video="qanda-schemacs" id="subtitle"]] +[[!template text="""where GNU Emacs is initializing itself,""" start="00:09:42.480" video="qanda-schemacs" id="subtitle"]] +[[!template text="""it can't even get the first file in that code.""" start="00:09:45.680" video="qanda-schemacs" id="subtitle"]] +[[!template text="""It hasn't been touched in 10 or 15 years.""" start="00:09:51.320" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Initially, when I first started this project,""" start="00:09:53.480" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I was using the parser""" start="00:09:57.240" video="qanda-schemacs" id="subtitle"]] +[[!template text="""for Guile's Emacs Lisp implementation,""" start="00:09:59.160" video="qanda-schemacs" id="subtitle"]] +[[!template text="""but it didn't give me things like source locations,""" start="00:10:02.320" video="qanda-schemacs" id="subtitle"]] +[[!template text="""so I had to rewrite that. And also, it wasn't portable.""" start="00:10:05.320" video="qanda-schemacs" id="subtitle"]] +[[!template text="""So yeah, because I want it to be portable,""" start="00:10:10.640" video="qanda-schemacs" id="subtitle"]] +[[!template text="""it's necessarily going to be not reliant""" start="00:10:14.280" video="qanda-schemacs" id="subtitle"]] +[[!template text="""on anything that's inside of the Guile library,""" start="00:10:16.920" video="qanda-schemacs" id="subtitle"]] +[[!template text="""including the Emacs LISP interpreter that's there.""" start="00:10:19.120" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Maybe I could replace the Emacs LISP interpreter in Guile""" start="00:10:21.480" video="qanda-schemacs" id="subtitle"]] +[[!template text="""if Andy Wingo would be interested. All right.""" start="00:10:24.960" video="qanda-schemacs" id="subtitle"]] +[[!template text="""And I see we've got a few people""" start="00:10:29.600" video="qanda-schemacs" id="subtitle"]] +[[!template text="""that did jump into the BBB.""" start="00:10:31.600" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I'm just going to quickly, oops.""" start="00:10:34.040" video="qanda-schemacs" id="subtitle"]] +[[!template text="""quickly try to make my text a little bigger""" start="00:10:37.160" video="qanda-schemacs" id="subtitle"]] +[[!template text="""so I can read a question that came here.""" start="00:10:40.680" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I wonder if we can do some sort of pragmatic analysis""" start="00:10:42.800" video="qanda-schemacs" id="subtitle"]] +[[!template text="""on popular Emacs packages""" start="00:10:48.480" video="qanda-schemacs" id="subtitle"]] +[[!template text="""to see what list of functions they tend to depend on""" start="00:10:49.960" video="qanda-schemacs" id="subtitle"]] +[[!template text="""while a function calls down to the lower level.""" start="00:10:52.400" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Yeah, that would be good.""" start="00:10:54.800" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Somebody please do that for me. Awesome.""" start="00:10:57.210" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Somebody's raising their hand. Divya.""" start="00:11:02.252" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Let's see. Yeah, can you hear me?""" start="00:11:05.440" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Yes, I can. Yeah, go ahead. Hello, thank you.""" start="00:11:08.800" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Yeah, this is really awesome.""" start="00:11:12.360" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I use Guile, and I love Guile,""" start="00:11:14.080" video="qanda-schemacs" id="subtitle"]] +[[!template text="""and I also love functional programming,""" start="00:11:16.960" video="qanda-schemacs" id="subtitle"]] +[[!template text="""so this is really nice that you took""" start="00:11:18.920" video="qanda-schemacs" id="subtitle"]] +[[!template text="""the declarative approach.""" start="00:11:21.600" video="qanda-schemacs" id="subtitle"]] +[[!template text="""One thing that I'm interested in is,""" start="00:11:22.720" video="qanda-schemacs" id="subtitle"]] +[[!template text="""are you also considering Racket in the scheme group?""" start="00:11:26.320" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Because I know a lot of people do not consider Racket""" start="00:11:29.840" video="qanda-schemacs" id="subtitle"]] +[[!template text="""as a sort of scheme thing, because it grew out of it.""" start="00:11:32.960" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Do you think you'll take something from Racket?""" start="00:11:36.640" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Because I think Racket has""" start="00:11:39.520" video="qanda-schemacs" id="subtitle"]] +[[!template text="""a lot of good ideas that can be used.""" start="00:11:42.120" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Yeah, I briefly looked at Racket's GUI library,""" start="00:11:44.520" video="qanda-schemacs" id="subtitle"]] +[[!template text="""but it's very, very heavily dependent""" start="00:11:48.440" video="qanda-schemacs" id="subtitle"]] +[[!template text="""on Racket's macro expander,""" start="00:11:51.880" video="qanda-schemacs" id="subtitle"]] +[[!template text="""which is, well, yeah, the macro expander""" start="00:11:53.840" video="qanda-schemacs" id="subtitle"]] +[[!template text="""is extremely complex for Racket,""" start="00:11:57.680" video="qanda-schemacs" id="subtitle"]] +[[!template text="""and I don't think it's possible to port it to any other scheme,""" start="00:11:59.680" video="qanda-schemacs" id="subtitle"]] +[[!template text="""as far as I know. But Racket is based on SheaScheme.""" start="00:12:02.160" video="qanda-schemacs" id="subtitle"]] +[[!template text="""And I am making an effort to port my code to Shea's scheme.""" start="00:12:07.680" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I mentioned this earlier,""" start="00:12:14.480" video="qanda-schemacs" id="subtitle"]] +[[!template text="""but there's the Gwen Weinholdt Aku system,""" start="00:12:18.640" video="qanda-schemacs" id="subtitle"]] +[[!template text="""which allows you to translate R7RS to R6RS.""" start="00:12:22.160" video="qanda-schemacs" id="subtitle"]] +[[!template text="""And since Shea is an R6RS compiler,""" start="00:12:25.440" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I did at one point get the Emacs Lisp interpreter""" start="00:12:28.520" video="qanda-schemacs" id="subtitle"]] +[[!template text="""to compile for Shea,""" start="00:12:33.920" video="qanda-schemacs" id="subtitle"]] +[[!template text="""although I think There's been a change""" start="00:12:34.920" video="qanda-schemacs" id="subtitle"]] +[[!template text="""either to Aku or somewhere in my own code base.""" start="00:12:38.240" video="qanda-schemacs" id="subtitle"]] +[[!template text="""It doesn't build anymore, and I'm not sure why.""" start="00:12:40.480" video="qanda-schemacs" id="subtitle"]] +[[!template text="""But I would also very much like to run this on Che.""" start="00:12:42.880" video="qanda-schemacs" id="subtitle"]] +[[!template text="""And I guess in that sense, we'll be able to work on Racket as well.""" start="00:12:47.040" video="qanda-schemacs" id="subtitle"]] +[[!template text="""There's also one other option.""" start="00:12:54.680" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Alexis King has written an R7RS language package for Racket.""" start="00:12:56.200" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I have not yet tried.""" start="00:13:03.520" video="qanda-schemacs" id="subtitle"]] +[[!template text="""running my package on R7RS for Racket.""" start="00:13:05.040" video="qanda-schemacs" id="subtitle"]] +[[!template text="""But that would be something interesting.""" start="00:13:08.480" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Yes, I would like to try that.""" start="00:13:11.600" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Yeah, it'll be interesting.""" start="00:13:12.920" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I do have some experience with chairs.""" start="00:13:13.920" video="qanda-schemacs" id="subtitle"]] +[[!template text="""So, uh, if I can find some time,""" start="00:13:15.840" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I'll, I'll, I'll certainly like to, I would appreciate.""" start="00:13:17.480" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Yes. Yeah. Go ahead. Yeah.""" start="00:13:21.240" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Another question I have is, like,""" start="00:13:24.040" video="qanda-schemacs" id="subtitle"]] +[[!template text="""what exactly is sort of, like, the, the approach is that""" start="00:13:26.080" video="qanda-schemacs" id="subtitle"]] +[[!template text="""you'll 1st want to do the interpreter""" start="00:13:29.200" video="qanda-schemacs" id="subtitle"]] +[[!template text="""and then have enough list functions.""" start="00:13:31.480" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Uh, getting the max list functions""" start="00:13:33.800" video="qanda-schemacs" id="subtitle"]] +[[!template text="""interpreted or interpretable.""" start="00:13:36.480" video="qanda-schemacs" id="subtitle"]] +[[!template text="""And then go for GUI or do you want""" start="00:13:38.120" video="qanda-schemacs" id="subtitle"]] +[[!template text="""to sort of like go hand in hand""" start="00:13:41.000" video="qanda-schemacs" id="subtitle"]] +[[!template text="""is like we have the interpreter working on""" start="00:13:42.760" video="qanda-schemacs" id="subtitle"]] +[[!template text="""and we have also the GUI""" start="00:13:45.680" video="qanda-schemacs" id="subtitle"]] +[[!template text="""and we sort of use one for the other.""" start="00:13:46.960" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Yeah, I consider the two tasks to be parallel.""" start="00:13:53.200" video="qanda-schemacs" id="subtitle"]] +[[!template text="""So I'm actually doing the GUI separately.""" start="00:13:56.480" video="qanda-schemacs" id="subtitle"]] +[[!template text="""The reason why is because the GUI for Schemacs""" start="00:13:59.640" video="qanda-schemacs" id="subtitle"]] +[[!template text="""is really just a clone of the look and feel of Emacs.""" start="00:14:05.520" video="qanda-schemacs" id="subtitle"]] +[[!template text="""It's not like an actual clone of the low-level C code""" start="00:14:10.280" video="qanda-schemacs" id="subtitle"]] +[[!template text="""that puts everything on screen.""" start="00:14:14.680" video="qanda-schemacs" id="subtitle"]] +[[!template text="""And I'm actually not really that interested""" start="00:14:16.040" video="qanda-schemacs" id="subtitle"]] +[[!template text="""in the low-level details""" start="00:14:18.680" video="qanda-schemacs" id="subtitle"]] +[[!template text="""of how Emacs draws things on screen either.""" start="00:14:21.440" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I think it has a lot of historical baggage,""" start="00:14:23.480" video="qanda-schemacs" id="subtitle"]] +[[!template text="""and I'm actually trying to move away from that.""" start="00:14:26.840" video="qanda-schemacs" id="subtitle"]] +[[!template text="""So that was part of the reason why I started""" start="00:14:28.840" video="qanda-schemacs" id="subtitle"]] +[[!template text="""with this React.js or Vue.js-like Reactive GUI framework.""" start="00:14:31.760" video="qanda-schemacs" id="subtitle"]] +[[!template text="""So that GUI part is completely separate.""" start="00:14:36.400" video="qanda-schemacs" id="subtitle"]] +[[!template text="""And I want to worry about the details""" start="00:14:39.520" video="qanda-schemacs" id="subtitle"]] +[[!template text="""of how we make the GUI look and feel""" start="00:14:42.240" video="qanda-schemacs" id="subtitle"]] +[[!template text="""similar in Schemacs, similar to GNU Emacs.""" start="00:14:46.720" video="qanda-schemacs" id="subtitle"]] +[[!template text="""In Schemacs, using the Emacs programming language,""" start="00:14:50.320" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I think that's something that we should worried about""" start="00:14:54.800" video="qanda-schemacs" id="subtitle"]] +[[!template text="""after we have enough of the Emacs list implemented.""" start="00:14:59.320" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Yeah, that makes sense.""" start="00:15:03.400" video="qanda-schemacs" id="subtitle"]] +[[!template text="""There are sort of, I'm a bit worried.""" start="00:15:04.920" video="qanda-schemacs" id="subtitle"]] +[[!template text="""So, I don't know if, so one of my presentations""" start="00:15:06.680" video="qanda-schemacs" id="subtitle"]] +[[!template text="""is going to be tomorrow.""" start="00:15:10.600" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I'm working on something called Emacs Viewer.""" start="00:15:11.480" video="qanda-schemacs" id="subtitle"]] +[[!template text="""It's a document viewer in Emacs.""" start="00:15:13.120" video="qanda-schemacs" id="subtitle"]] +[[!template text="""And essentially one of the issues that I'm up against""" start="00:15:15.320" video="qanda-schemacs" id="subtitle"]] +[[!template text="""is that Emacs's display system""" start="00:15:17.680" video="qanda-schemacs" id="subtitle"]] +[[!template text="""is sort of very let's say, not flexible.""" start="00:15:20.360" video="qanda-schemacs" id="subtitle"]] +[[!template text="""When trying to analyze where this inflexibility comes from,""" start="00:15:25.440" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I don't think it's just the display architecture.""" start="00:15:31.840" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I think parts of eLISP itself""" start="00:15:35.760" video="qanda-schemacs" id="subtitle"]] +[[!template text="""are connected to the display architecture.""" start="00:15:38.320" video="qanda-schemacs" id="subtitle"]] +[[!template text="""The notion of a cell in a buffer,""" start="00:15:43.600" video="qanda-schemacs" id="subtitle"]] +[[!template text="""itself is connected tightly to""" start="00:15:48.400" video="qanda-schemacs" id="subtitle"]] +[[!template text="""how the re-display architecture works.""" start="00:15:52.200" video="qanda-schemacs" id="subtitle"]] +[[!template text="""So I think you'll have to sort of figure out""" start="00:15:54.520" video="qanda-schemacs" id="subtitle"]] +[[!template text="""what exactly you can salvage from ELISP""" start="00:15:57.200" video="qanda-schemacs" id="subtitle"]] +[[!template text="""without taking the display architecture baggage.""" start="00:16:00.680" video="qanda-schemacs" id="subtitle"]] +[[!template text="""That's right. I do anticipate""" start="00:16:05.200" video="qanda-schemacs" id="subtitle"]] +[[!template text="""that's going to be fairly challenging.""" start="00:16:08.002" video="qanda-schemacs" id="subtitle"]] +[[!template text="""It's all Turing-complete,""" start="00:16:09.877" video="qanda-schemacs" id="subtitle"]] +[[!template text="""so I imagine we're probably going to end up""" start="00:16:14.585" video="qanda-schemacs" id="subtitle"]] +[[!template text="""creating something like an emulator""" start="00:16:17.880" video="qanda-schemacs" id="subtitle"]] +[[!template text="""for the Emacs Lisp display architecture in Scheme""" start="00:16:21.040" video="qanda-schemacs" id="subtitle"]] +[[!template text="""that will somehow translate down""" start="00:16:24.320" video="qanda-schemacs" id="subtitle"]] +[[!template text="""to the React-like protocol that I've written.""" start="00:16:27.560" video="qanda-schemacs" id="subtitle"]] +[[!template text="""But yeah, I don't I haven't that's nice.""" start="00:16:30.040" video="qanda-schemacs" id="subtitle"]] +[[!template text="""No, this is this is very exciting. Yeah. Oh Yes, it is.""" start="00:16:32.720" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Yeah, I'm glad so like a lot of people have told me""" start="00:16:36.320" video="qanda-schemacs" id="subtitle"]] +[[!template text="""that they really Are excited to see this project""" start="00:16:39.560" video="qanda-schemacs" id="subtitle"]] +[[!template text="""and this really helps me""" start="00:16:41.680" video="qanda-schemacs" id="subtitle"]] +[[!template text="""You know keep focused on this project""" start="00:16:42.720" video="qanda-schemacs" id="subtitle"]] +[[!template text="""because a lot of people are very interested.""" start="00:16:46.400" video="qanda-schemacs" id="subtitle"]] +[[!template text="""So It's so I'd like to move on""" start="00:16:48.320" video="qanda-schemacs" id="subtitle"]] +[[!template text="""to a couple of questions from the past.""" start="00:16:50.360" video="qanda-schemacs" id="subtitle"]] +[[!template text="""We're starting to build up a good backlog.""" start="00:16:52.160" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Thank you for that. Yeah Next question from the pad I have.""" start="00:16:54.480" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Can you tell us more about the show stopping bug?""" start="00:16:59.720" video="qanda-schemacs" id="subtitle"]] +[[!template text="""How to squash it? How can people help?""" start="00:17:02.240" video="qanda-schemacs" id="subtitle"]] +[[!template text="""OK, well, that one, unfortunately, I think,""" start="00:17:04.160" video="qanda-schemacs" id="subtitle"]] +[[!template text="""unless you're really a scheme genius""" start="00:17:08.800" video="qanda-schemacs" id="subtitle"]] +[[!template text="""and you can really read my code""" start="00:17:11.680" video="qanda-schemacs" id="subtitle"]] +[[!template text="""and immediately understand how it all works,""" start="00:17:13.800" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I don't think you'd be able to help.""" start="00:17:15.480" video="qanda-schemacs" id="subtitle"]] +[[!template text="""It shouldn't be too difficult for me to fix.""" start="00:17:18.320" video="qanda-schemacs" id="subtitle"]] +[[!template text="""So it has to do with how closures work.""" start="00:17:22.600" video="qanda-schemacs" id="subtitle"]] +[[!template text="""And a closure is basically an object""" start="00:17:26.640" video="qanda-schemacs" id="subtitle"]] +[[!template text="""that can be created with stuff that's on the stack.""" start="00:17:30.720" video="qanda-schemacs" id="subtitle"]] +[[!template text="""And this is a feature, I think,""" start="00:17:33.160" video="qanda-schemacs" id="subtitle"]] +[[!template text="""that was introduced with Emacs 27.""" start="00:17:37.080" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I can't remember exactly,""" start="00:17:39.680" video="qanda-schemacs" id="subtitle"]] +[[!template text="""but it's actually a relatively recent feature.""" start="00:17:40.880" video="qanda-schemacs" id="subtitle"]] +[[!template text="""It was ever since they introduced""" start="00:17:43.440" video="qanda-schemacs" id="subtitle"]] +[[!template text="""lexically scoped variable bindings in Emacs Lisp.""" start="00:17:45.880" video="qanda-schemacs" id="subtitle"]] +[[!template text="""And so yeah, the problem is that""" start="00:17:51.000" video="qanda-schemacs" id="subtitle"]] +[[!template text="""when you create like a let structure""" start="00:17:54.520" video="qanda-schemacs" id="subtitle"]] +[[!template text="""and you could declare a variable in the let.""" start="00:17:59.840" video="qanda-schemacs" id="subtitle"]] +[[!template text="""And then you create inside of that a second let structure,""" start="00:18:01.800" video="qanda-schemacs" id="subtitle"]] +[[!template text="""and you have a lambda inside of that.""" start="00:18:05.400" video="qanda-schemacs" id="subtitle"]] +[[!template text="""And the lambda references or uses a variable""" start="00:18:07.240" video="qanda-schemacs" id="subtitle"]] +[[!template text="""that was declared in the outer let binding.""" start="00:18:11.320" video="qanda-schemacs" id="subtitle"]] +[[!template text="""That outer let binding is somewhere on the stack.""" start="00:18:14.400" video="qanda-schemacs" id="subtitle"]] +[[!template text="""And the lambda you can actually return it as a value.""" start="00:18:18.280" video="qanda-schemacs" id="subtitle"]] +[[!template text="""So when you do return that lambda,""" start="00:18:23.000" video="qanda-schemacs" id="subtitle"]] +[[!template text="""it has to have a note somewhere inside""" start="00:18:25.320" video="qanda-schemacs" id="subtitle"]] +[[!template text="""that says, by the way, I'm using that variable.""" start="00:18:27.680" video="qanda-schemacs" id="subtitle"]] +[[!template text="""So you need to capture it and restore it to the stack""" start="00:18:31.280" video="qanda-schemacs" id="subtitle"]] +[[!template text="""whenever this lambda is applied, whenever you execute it.""" start="00:18:34.360" video="qanda-schemacs" id="subtitle"]] +[[!template text="""And that is where the error is.""" start="00:18:38.200" video="qanda-schemacs" id="subtitle"]] +[[!template text="""It's not capturing the stack variable properly.""" start="00:18:40.960" video="qanda-schemacs" id="subtitle"]] +[[!template text="""And I think what I'm going to do,""" start="00:18:44.400" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I haven't looked into it in detail yet""" start="00:18:46.880" video="qanda-schemacs" id="subtitle"]] +[[!template text="""because I've gone back to GUI stuff recently,""" start="00:18:49.760" video="qanda-schemacs" id="subtitle"]] +[[!template text="""but what I'm going to do, I think,""" start="00:18:53.280" video="qanda-schemacs" id="subtitle"]] +[[!template text="""is just do a static analysis""" start="00:18:55.480" video="qanda-schemacs" id="subtitle"]] +[[!template text="""of the code inside of the Lambda""" start="00:18:57.800" video="qanda-schemacs" id="subtitle"]] +[[!template text="""and see which symbols are being used,""" start="00:18:59.080" video="qanda-schemacs" id="subtitle"]] +[[!template text="""and then just capture all of those""" start="00:19:02.920" video="qanda-schemacs" id="subtitle"]] +[[!template text="""and place those into the record type""" start="00:19:05.080" video="qanda-schemacs" id="subtitle"]] +[[!template text="""that stores the lambda.""" start="00:19:07.560" video="qanda-schemacs" id="subtitle"]] +[[!template text="""That's how I'm going to fix that, I think.""" start="00:19:09.520" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I hope anyway that's going to work.""" start="00:19:12.680" video="qanda-schemacs" id="subtitle"]] +[[!template text="""You never know with bugs.""" start="00:19:16.000" video="qanda-schemacs" id="subtitle"]] +[[!template text="""They're always a little bit tricky. Okay, next question.""" start="00:19:17.240" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Are there performance concerns""" start="00:19:21.760" video="qanda-schemacs" id="subtitle"]] +[[!template text="""with implementing certain C primitives in PeerScheme?""" start="00:19:23.120" video="qanda-schemacs" id="subtitle"]] +[[!template text="""So who is it? The famous computer scientist that said""" start="00:19:28.480" video="qanda-schemacs" id="subtitle"]] +[[!template text="""premature optimization is the root of all evil.""" start="00:19:32.880" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I think it was the guy who invented the A star algorithm.""" start="00:19:35.880" video="qanda-schemacs" id="subtitle"]] +[[!template text="""His name escapes me at the minute.""" start="00:19:39.800" video="qanda-schemacs" id="subtitle"]] +[[!template text="""But yeah, I'm not concerned about performance yet,""" start="00:19:42.720" video="qanda-schemacs" id="subtitle"]] +[[!template text="""although most of the scheme compilers that I have seen,""" start="00:19:49.360" video="qanda-schemacs" id="subtitle"]] +[[!template text="""especially Shea and Gambit""" start="00:19:52.120" video="qanda-schemacs" id="subtitle"]] +[[!template text="""have extremely good performance characteristics.""" start="00:19:57.000" video="qanda-schemacs" id="subtitle"]] +[[!template text="""And so I think there won't be""" start="00:20:02.040" video="qanda-schemacs" id="subtitle"]] +[[!template text="""too much difficulty with performance,""" start="00:20:03.680" video="qanda-schemacs" id="subtitle"]] +[[!template text="""even implementing some of the C stuff.""" start="00:20:05.880" video="qanda-schemacs" id="subtitle"]] +[[!template text="""And besides, a lot of the GUI stuff""" start="00:20:08.760" video="qanda-schemacs" id="subtitle"]] +[[!template text="""is already written in C anyway.""" start="00:20:10.760" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I mean, it would be cool""" start="00:20:12.720" video="qanda-schemacs" id="subtitle"]] +[[!template text="""if we had a scheme GUI library""" start="00:20:14.400" video="qanda-schemacs" id="subtitle"]] +[[!template text="""that painted to a canvas,""" start="00:20:16.880" video="qanda-schemacs" id="subtitle"]] +[[!template text="""maybe for a Wayland implementation or something.""" start="00:20:18.600" video="qanda-schemacs" id="subtitle"]] +[[!template text="""But I don't know. It's not a concern for me, performance.""" start="00:20:21.640" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Okay, there are a few more questions. I do want to mention""" start="00:20:29.080" video="qanda-schemacs" id="subtitle"]] +[[!template text="""that the stream has cut away at this point,""" start="00:20:32.080" video="qanda-schemacs" id="subtitle"]] +[[!template text="""but we're still recording live.""" start="00:20:33.840" video="qanda-schemacs" id="subtitle"]] +[[!template text="""All of this will be put up on the website""" start="00:20:36.280" video="qanda-schemacs" id="subtitle"]] +[[!template text="""and so on like that.""" start="00:20:38.800" video="qanda-schemacs" id="subtitle"]] +[[!template text="""So, I appreciate all the enthusiastic questions""" start="00:20:40.400" video="qanda-schemacs" id="subtitle"]] +[[!template text="""and you're kind of tanking through them all.""" start="00:20:44.200" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Me too. I love how many questions I'm getting.""" start="00:20:47.800" video="qanda-schemacs" id="subtitle"]] +[[!template text="""This is very encouraging""" start="00:20:52.800" video="qanda-schemacs" id="subtitle"]] +[[!template text="""and it really makes me want to keep on working on it.""" start="00:20:54.040" video="qanda-schemacs" id="subtitle"]] +[[!template text="""So it's great.""" start="00:20:56.000" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I'm so glad to hear that because that's exactly the message""" start="00:20:56.880" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I think you should be receiving.""" start="00:21:00.200" video="qanda-schemacs" id="subtitle"]] +[[!template text="""This is a fantastic project. Thank you so much.""" start="00:21:01.440" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I'll just say so myself. If the project is successful,""" start="00:21:04.160" video="qanda-schemacs" id="subtitle"]] +[[!template text="""are you worried about a possible split in the community""" start="00:21:08.440" video="qanda-schemacs" id="subtitle"]] +[[!template text="""between Schemacs and GNU Emacs?""" start="00:21:11.480" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Oh, I have thought about that.""" start="00:21:15.600" video="qanda-schemacs" id="subtitle"]] +[[!template text="""And I really don't know what's going to happen.""" start="00:21:18.960" video="qanda-schemacs" id="subtitle"]] +[[!template text="""There seems to be already a huge demand""" start="00:21:24.040" video="qanda-schemacs" id="subtitle"]] +[[!template text="""for a scheme-based, a modern scheme-based editor.""" start="00:21:26.240" video="qanda-schemacs" id="subtitle"]] +[[!template text="""You know, the Edwin scheme for MIT scheme""" start="00:21:30.440" video="qanda-schemacs" id="subtitle"]] +[[!template text="""hasn't been touched since like 1987 or something,""" start="00:21:33.400" video="qanda-schemacs" id="subtitle"]] +[[!template text="""maybe 1993 or, but anyway.""" start="00:21:37.280" video="qanda-schemacs" id="subtitle"]] +[[!template text="""There seems to be huge demand.""" start="00:21:41.440" video="qanda-schemacs" id="subtitle"]] +[[!template text="""And so I guess a lot of people""" start="00:21:43.160" video="qanda-schemacs" id="subtitle"]] +[[!template text="""who are currently using GNU Emacs""" start="00:21:45.120" video="qanda-schemacs" id="subtitle"]] +[[!template text="""will probably just switch over""" start="00:21:47.680" video="qanda-schemacs" id="subtitle"]] +[[!template text="""because they've been wanting""" start="00:21:49.080" video="qanda-schemacs" id="subtitle"]] +[[!template text="""something like this for a very long time.""" start="00:21:50.480" video="qanda-schemacs" id="subtitle"]] +[[!template text="""And then, I mean, is that going to cause fragmentation?""" start="00:21:53.160" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Is it really a big deal, though?""" start="00:21:56.560" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I mean, it's all GPL-licensed code.""" start="00:21:58.680" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I mean, I think a rising tide raises all the ships at the same time.""" start="00:22:02.480" video="qanda-schemacs" id="subtitle"]] +[[!template text="""So, yeah, also, the last thing I want to say about that""" start="00:22:08.760" video="qanda-schemacs" id="subtitle"]] +[[!template text="""is I would like to contribute some of what I do in Schemacs""" start="00:22:13.280" video="qanda-schemacs" id="subtitle"]] +[[!template text="""back into GNU Emacs, if I can. So, for example, I'm going""" start="00:22:19.000" video="qanda-schemacs" id="subtitle"]] +[[!template text="""to be working on like a canvas library""" start="00:22:24.400" video="qanda-schemacs" id="subtitle"]] +[[!template text="""where you can have interactive canvases""" start="00:22:25.960" video="qanda-schemacs" id="subtitle"]] +[[!template text="""and you know you can actually like draw pictures""" start="00:22:27.880" video="qanda-schemacs" id="subtitle"]] +[[!template text="""and put things with the mouse and drag things around.""" start="00:22:30.880" video="qanda-schemacs" id="subtitle"]] +[[!template text="""And I was thinking you know""" start="00:22:33.560" video="qanda-schemacs" id="subtitle"]] +[[!template text="""if if I can figure out how that works""" start="00:22:36.080" video="qanda-schemacs" id="subtitle"]] +[[!template text="""maybe I can write something like that for Emacs""" start="00:22:37.668" video="qanda-schemacs" id="subtitle"]] +[[!template text="""or GNU Emacs using the Cairo library, you know,""" start="00:22:41.918" video="qanda-schemacs" id="subtitle"]] +[[!template text="""SVG rendering library that they have.""" start="00:22:47.760" video="qanda-schemacs" id="subtitle"]] +[[!template text="""So, you know, if I have time,""" start="00:22:49.320" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I would like to continue contributing to GNU Emacs as well.""" start="00:22:51.320" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I'm sorry, what was the name of the library you mentioned?""" start="00:22:55.800" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Oh, Cairo, like Cairo.""" start="00:22:57.840" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Oh, Cairo, yeah. Absolutely. I spelled that poorly.""" start="00:23:01.040" video="qanda-schemacs" id="subtitle"]] +[[!template text="""The dream of never needing to change to the web browser.""" start="00:23:07.600" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Would schemacs bring us closer to that? I hope so.""" start="00:23:12.520" video="qanda-schemacs" id="subtitle"]] +[[!template text="""That's also a dream of mine.""" start="00:23:18.377" video="qanda-schemacs" id="subtitle"]] +[[!template text="""The part of the reason why I wanted to work, you know,""" start="00:23:21.710" video="qanda-schemacs" id="subtitle"]] +[[!template text="""make sure I had a really good workable GUI framework""" start="00:23:26.480" video="qanda-schemacs" id="subtitle"]] +[[!template text="""is so that I could, you know,""" start="00:23:31.000" video="qanda-schemacs" id="subtitle"]] +[[!template text="""we could write apps like, you know,""" start="00:23:32.627" video="qanda-schemacs" id="subtitle"]] +[[!template text="""they have a mastodon client written in Emacs Lisp.""" start="00:23:34.880" video="qanda-schemacs" id="subtitle"]] +[[!template text="""that would be so nice to have this, you know,""" start="00:23:38.760" video="qanda-schemacs" id="subtitle"]] +[[!template text="""a really nice Mastodon client""" start="00:23:42.200" video="qanda-schemacs" id="subtitle"]] +[[!template text="""that was right inside of, you know, our scheme environment""" start="00:23:43.440" video="qanda-schemacs" id="subtitle"]] +[[!template text="""where we were doing our text editing and other stuff.""" start="00:23:47.480" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I've always wanted something like that,""" start="00:23:50.040" video="qanda-schemacs" id="subtitle"]] +[[!template text="""or it would be cool to have""" start="00:23:52.080" video="qanda-schemacs" id="subtitle"]] +[[!template text="""just a slightly nicer GUI for Magit.""" start="00:23:53.800" video="qanda-schemacs" id="subtitle"]] +[[!template text="""So, yeah, I mean, like, yeah, being able to avoid the web entirely""" start="00:23:56.320" video="qanda-schemacs" id="subtitle"]] +[[!template text="""and just be able to like, you know, do social networking""" start="00:24:04.200" video="qanda-schemacs" id="subtitle"]] +[[!template text="""and do your GitHub stuff,""" start="00:24:08.200" video="qanda-schemacs" id="subtitle"]] +[[!template text="""everything from within Emacs or Schemacs in this case,""" start="00:24:11.440" video="qanda-schemacs" id="subtitle"]] +[[!template text="""that's a dream of mine as well.""" start="00:24:14.760" video="qanda-schemacs" id="subtitle"]] +[[!template text="""And so I hope that that's where we end up in a couple of years.""" start="00:24:16.920" video="qanda-schemacs" id="subtitle"]] +[[!template text="""The sooner the better. Anything, just double checking.""" start="00:24:20.080" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Anything specific other than minimalism""" start="00:24:30.000" video="qanda-schemacs" id="subtitle"]] +[[!template text="""that made you choose Scheme over Commonwealth?""" start="00:24:33.320" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Oh, yeah, it's kind of a philosophical question.""" start="00:24:35.800" video="qanda-schemacs" id="subtitle"]] +[[!template text="""So a couple of things. First of all, it was a conversation""" start="00:24:40.200" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I had with William Byrd,""" start="00:24:45.560" video="qanda-schemacs" id="subtitle"]] +[[!template text="""and he's a guy who makes the Mini Conran framework for Scheme.""" start="00:24:47.400" video="qanda-schemacs" id="subtitle"]] +[[!template text="""It was his PhD thesis.""" start="00:24:50.520" video="qanda-schemacs" id="subtitle"]] +[[!template text="""He worked with, I'm sorry, I just can't remember his name.""" start="00:24:52.880" video="qanda-schemacs" id="subtitle"]] +[[!template text="""He worked at the University of Indiana.""" start="00:24:57.120" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Another famous Scheme or Lisp person was there.""" start="00:24:59.680" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Friedman, Dan Friedman was his advisor.""" start="00:25:03.840" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Yeah, big name in Lisp.""" start="00:25:06.280" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Anyway, so I was talking with William Byrd,""" start="00:25:09.160" video="qanda-schemacs" id="subtitle"]] +[[!template text="""and I'm a huge Haskell fan,""" start="00:25:12.840" video="qanda-schemacs" id="subtitle"]] +[[!template text="""and he told me why he didn't like Haskell at all,""" start="00:25:14.640" video="qanda-schemacs" id="subtitle"]] +[[!template text="""and kind of convinced me to try Scheme out.""" start="00:25:16.920" video="qanda-schemacs" id="subtitle"]] +[[!template text="""And what I really like about Scheme is,""" start="00:25:19.640" video="qanda-schemacs" id="subtitle"]] +[[!template text="""yeah, like you said, the minimalism,""" start="00:25:22.760" video="qanda-schemacs" id="subtitle"]] +[[!template text="""but it's more that it is very close""" start="00:25:25.400" video="qanda-schemacs" id="subtitle"]] +[[!template text="""to the mathematical framework of lambda calculus.""" start="00:25:29.840" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Haskell is probably the most pure""" start="00:25:34.880" video="qanda-schemacs" id="subtitle"]] +[[!template text="""lambda calculus that I've ever used,""" start="00:25:38.520" video="qanda-schemacs" id="subtitle"]] +[[!template text="""but Scheme is like the simply typed lambda calculus,""" start="00:25:39.920" video="qanda-schemacs" id="subtitle"]] +[[!template text="""and That just appeals to me.""" start="00:25:45.520" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I think, you know, if you have this tiny, tiny core language""" start="00:25:47.800" video="qanda-schemacs" id="subtitle"]] +[[!template text="""from which all of the computing can be defined,""" start="00:25:50.840" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I think it's kind of a shame""" start="00:25:55.600" video="qanda-schemacs" id="subtitle"]] +[[!template text="""that so far we just haven't explored that space yet.""" start="00:25:57.120" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I mean, there's compared to JavaScript or Python,""" start="00:26:00.080" video="qanda-schemacs" id="subtitle"]] +[[!template text="""there's very little scheme code out there""" start="00:26:03.640" video="qanda-schemacs" id="subtitle"]] +[[!template text="""and it could be doing so much. And I would just like to try""" start="00:26:05.880" video="qanda-schemacs" id="subtitle"]] +[[!template text="""and expand the scheme ecosystem""" start="00:26:08.240" video="qanda-schemacs" id="subtitle"]] +[[!template text="""and see just what this tiny little language can do.""" start="00:26:10.160" video="qanda-schemacs" id="subtitle"]] +[[!template text="""And I think we haven't even seen""" start="00:26:13.000" video="qanda-schemacs" id="subtitle"]] +[[!template text="""a fraction of what it can do.""" start="00:26:14.480" video="qanda-schemacs" id="subtitle"]] +[[!template text="""That's why I've chosen scheme.""" start="00:26:16.840" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Divya, I see you've got a bunch more comments.""" start="00:26:22.400" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I think we're just about close to our time here,""" start="00:26:24.720" video="qanda-schemacs" id="subtitle"]] +[[!template text="""but if you wanted to jump back in,""" start="00:26:26.680" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I'm sorry, I had to cut you off a little before.""" start="00:26:28.280" video="qanda-schemacs" id="subtitle"]] +[[!template text="""No, it's fine. No, it's fine.""" start="00:26:30.520" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I think I agree with most of what he said.""" start="00:26:33.960" video="qanda-schemacs" id="subtitle"]] +[[!template text="""So, yeah, thank you so much.""" start="00:26:36.600" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Um, closing thoughts, Ramin.""" start="00:26:40.680" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Yeah, I guess everybody, please, if you're interested,""" start="00:26:45.160" video="qanda-schemacs" id="subtitle"]] +[[!template text="""keep watching my Mastodon and keep watching my Codeberg.""" start="00:26:51.640" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I'm going to try and squash this bug as quickly as I can.""" start="00:26:56.720" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I hope early next year,""" start="00:27:01.560" video="qanda-schemacs" id="subtitle"]] +[[!template text="""hopefully not much later than February,""" start="00:27:03.280" video="qanda-schemacs" id="subtitle"]] +[[!template text="""I'll actually be able to start taking in contributions""" start="00:27:07.520" video="qanda-schemacs" id="subtitle"]] +[[!template text="""for some of the Emacs Lisp built-ins in the code base.""" start="00:27:12.040" video="qanda-schemacs" id="subtitle"]] +[[!template text="""So, please keep watching. The pace of my development""" start="00:27:16.720" video="qanda-schemacs" id="subtitle"]] +[[!template text="""has increased pretty rapidly recently,""" start="00:27:21.960" video="qanda-schemacs" id="subtitle"]] +[[!template text="""and I think we're pretty close""" start="00:27:24.280" video="qanda-schemacs" id="subtitle"]] +[[!template text="""to getting something that we can all use together.""" start="00:27:25.840" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Thank you once again for your amazing talk,""" start="00:27:29.120" video="qanda-schemacs" id="subtitle"]] +[[!template text="""for your exceptional work,""" start="00:27:31.720" video="qanda-schemacs" id="subtitle"]] +[[!template text="""and for jumping in, doing the live Q&A,""" start="00:27:34.040" video="qanda-schemacs" id="subtitle"]] +[[!template text="""rolling with us here as we have yet another""" start="00:27:36.600" video="qanda-schemacs" id="subtitle"]] +[[!template text="""We'll See How It Goes conference.""" start="00:27:40.040" video="qanda-schemacs" id="subtitle"]] +[[!template text="""It's been just amazing so far,""" start="00:27:42.080" video="qanda-schemacs" id="subtitle"]] +[[!template text="""and this talk is no small part of that. Thank you.""" start="00:27:44.280" video="qanda-schemacs" id="subtitle"]] +[[!template text="""Oh, thank you so much. Yeah. OK, cool.""" start="00:27:46.840" video="qanda-schemacs" id="subtitle"]] +[[!template text="""And thanks for all the questions, everyone.""" start="00:27:50.280" video="qanda-schemacs" id="subtitle"]] + +</div>Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202023%20schemacs%3A%20One%20year%20progress%20update%20Schemacs%20%28formerly%20Gypsum%29) <!-- End of emacsconf-publish-after-page --> diff --git a/2025/info/schemacs-before.md b/2025/info/schemacs-before.md index acdbb81c..8c91e627 100644 --- a/2025/info/schemacs-before.md +++ b/2025/info/schemacs-before.md @@ -1,18 +1,14 @@ <!-- Automatically generated by emacsconf-publish-before-page --> - -The following image shows where the talk is in the schedule for Sat 2025-12-06. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="schemacs"> -<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2025/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:10 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2025/talks/org-babel" title="Making Org-Babel reactive" data-slug="org-babel"> <title> 9:10- 9:20 Making Org-Babel reactive</title> <rect x="13" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(24,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> org-babel</text></g></a> <a href="/2025/talks/reference" title="Emacs as a fully-fledged reference manager" data-slug="reference"> <title> 9:30- 9:55 Emacs as a fully-fledged reference manager</title> <rect x="41" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(73,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> reference</text></g></a> <a href="/2025/talks/gmail" title="org-gmail: A deep integration of Gmail into your Org Mode" data-slug="gmail"> <title> 10:15-10:40 org-gmail: A deep integration of Gmail into your Org Mode</title> <rect x="102" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(134,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gmail</text></g></a> <a href="/2025/talks/gnus" title="Reading and writing emails in GNU Emacs with Gnus" data-slug="gnus"> <title> 10:50-11:15 Reading and writing emails in GNU Emacs with Gnus</title> <rect x="150" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(182,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gnus</text></g></a> <a href="/2025/talks/latex" title="LaTeX export in org-mode: the overhaul" data-slug="latex"> <title> 11:25-11:45 LaTeX export in org-mode: the overhaul</title> <rect x="199" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(224,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> latex</text></g></a> <a href="/2025/talks/calc" title="Basic Calc functionality for engineering or electronics" data-slug="calc"> <title> 1:00- 1:25 Basic Calc functionality for engineering or electronics</title> <rect x="329" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(361,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> calc</text></g></a> <a href="/2025/talks/blee-lcnt" title="Blee-LCNT: An Emacs-centered content production and self-publication framework" data-slug="blee-lcnt"> <title> 1:35- 2:15 Blee-LCNT: An Emacs-centered content production and self-publication framework</title> <rect x="377" y="15" opacity="0.5" width="54" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(429,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> blee-lcnt</text></g></a> <a href="/2025/talks/greader" title="GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence" data-slug="greader"> <title> 2:35- 2:40 GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence</title> <rect x="459" y="15" opacity="0.5" width="6" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(463,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> greader</text></g></a> <a href="/2025/talks/open-mic" title="Open session" data-slug="open-mic"> <title> 2:50- 3:40 Open session</title> <rect x="480" y="15" opacity="0.5" width="68" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(546,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> open-mic</text></g></a> <a href="/2025/talks/sat-close" title="Saturday closing remarks / open session" data-slug="sat-close"> <title> 4:00- 4:10 Saturday closing remarks / open session</title> <rect x="576" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(587,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2025/talks/schemacs" title="One year progress update Schemacs (formerly Gypsum)" data-slug="schemacs"> <title> 9:30- 9:55 One year progress update Schemacs (formerly Gypsum)</title> <rect stroke-width="3" x="41" y="75" opacity="0.8" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(73,133)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> schemacs</text></g></a> <a href="/2025/talks/juicemacs" title="Juicemacs: exploring speculative JIT compilation for ELisp in Java" data-slug="juicemacs"> <title> 10:15-10:35 Juicemacs: exploring speculative JIT compilation for ELisp in Java</title> <rect x="102" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(127,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> juicemacs</text></g></a> <a href="/2025/talks/swanky" title="Swanky Python: Interactive development for Python" data-slug="swanky"> <title> 10:45-11:10 Swanky Python: Interactive development for Python</title> <rect x="144" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(176,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> swanky</text></g></a> <a href="/2025/talks/python" title="Interactive Python programming in Emacs" data-slug="python"> <title> 11:20-11:40 Interactive Python programming in Emacs</title> <rect x="192" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(217,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <a href="/2025/talks/llm" title="Emacs, editors, and LLM driven workflows" data-slug="llm"> <title> 1:00- 1:25 Emacs, editors, and LLM driven workflows</title> <rect x="329" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(361,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> llm</text></g></a> <a href="/2025/talks/private-ai" title="Emacs and private AI: a great match" data-slug="private-ai"> <title> 1:45- 2:05 Emacs and private AI: a great match</title> <rect x="391" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(416,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> private-ai</text></g></a> <a href="/2025/talks/commonlisp" title="Common Lisp images communicating like-a-human through shared Emacs slime and eev" data-slug="commonlisp"> <title> 2:25- 2:55 Common Lisp images communicating like-a-human through shared Emacs slime and eev</title> <rect x="446" y="75" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(485,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> commonlisp</text></g></a> <a href="/2025/talks/graphics" title="Modern Emacs/Elisp hardware/software accelerated graphics" data-slug="graphics"> <title> 3:05- 3:30 Modern Emacs/Elisp hardware/software accelerated graphics</title> <rect x="500" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(532,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> graphics</text></g></a> <g transform="translate(0,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 5 PM</text></g></svg> -</div> - [[!toc ]] -Format: 24-min talk ; Q&A: BigBlueButton conference room <https://media.emacsconf.org/2025/current/bbb-schemacs.html> Etherpad: <https://pad.emacsconf.org/2025-schemacs> +Format: 24-min talk ; Q&A: BigBlueButton conference room Etherpad: <https://pad.emacsconf.org/2025-schemacs> Etherpad: <https://pad.emacsconf.org/2025-schemacs> -Discuss on IRC: [#emacsconf-dev](https://chat.emacsconf.org/?join=emacsconf,emacsconf-dev) -Status: Q&A finished, IRC and pad will be archived on this page +Status: TO_REVIEW_QA + +# Talk <div class="vid mainVideo"><video controls preload="none" id="mainVideo-schemacs"><source src="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2025/captions/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--main--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="mainVideo-schemacs" data=""" 02:07.200 The scope of the project @@ -25,6 +21,10 @@ Status: Q&A finished, IRC and pad will be archived on this page 17:06.200 GUI framework 21:51.520 Wrapping up -"""]]<div></div>Duration: 23:14 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-schemacs">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/current/bbb-schemacs.html">Open public Q&A</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--main.opus">Download --main.opus (10MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--main.webm">Download --main.webm (63MB)</a></li><li><a href="https://youtu.be/KmMeLfYn1xY">View on Youtube</a></li></ul></div></div> +"""]]<div></div>Duration: 23:14 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-schemacs">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--main.opus">Download --main.opus (10MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--main.webm">Download --main.webm (63MB)</a></li><li><a href="https://youtu.be/KmMeLfYn1xY">View on Youtube</a></li></ul></div></div> + +# Q&A + +<div class="vid qanda"><video controls preload="none" id="qanda-schemacs"><source src="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--answers.m4v" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--answers.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 31:11 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-schemacs">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--answers.json">Download --answers.json</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--answers.m4v">Download --answers.m4v (101MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--answers.tsv">Download --answers.tsv</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--answers.txt">Download --answers.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--answers.webm">Download --answers.webm (102MB)</a></li></ul></div></div> # Description <!-- End of emacsconf-publish-before-page -->
\ No newline at end of file diff --git a/2025/info/schemacs-nav.md b/2025/info/schemacs-nav.md index 9c4b7a69..e867d2ef 100644 --- a/2025/info/schemacs-nav.md +++ b/2025/info/schemacs-nav.md @@ -1,7 +1,7 @@ <div class="talk-nav"> Back to the [[talks]] -Previous by time: <a href="/2025/talks/org-babel">Making Org-Babel reactive</a> -Next by time: <a href="/2025/talks/reference">Emacs as a fully-fledged reference manager</a> -Track: <span class="sched-track Development">Development</span> - <strong><a href="https://emacsconf.org/2025/watch/dev">Watch</a></strong> +Previous by track: <a href="/2025/talks/bookclub-tapas">Bookclub tapas</a> +Next by track: <a href="/2025/talks/juicemacs">Juicemacs: exploring speculative JIT compilation for ELisp in Java</a> +Track: <span class="sched-track Development">Development</span> </div> diff --git a/2025/info/sun-close-after.md b/2025/info/sun-close-after.md index aebbe6f8..e84ce984 100644 --- a/2025/info/sun-close-after.md +++ b/2025/info/sun-close-after.md @@ -1,7 +1,235 @@ <!-- Automatically generated by emacsconf-publish-after-page --> -Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202023%20sun-close%3A%20Sunday%20closing%20remarks) +<div class="transcript transcript-mainVideo"><a name="sun-close-mainVideo-transcript"></a><h1>Transcript (unedited)</h1> + +[[!template text="""screen. That screen. Yes. All right. Thank you so much.""" start="00:00:00.000" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""We have made it thus far. It is the end of EmacsConf 2025.""" start="00:00:17.280" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""Oh, I better remember to open this""" start="00:00:22.440" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""in case anyone wants to join me in this room.""" start="00:00:24.360" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""Hang on a sec. And normally all this stuff""" start="00:00:49.460" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""gets done automatically by my scripts,""" start="00:00:51.140" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""so I'm doing it manually. Ah, there you go.""" start="00:00:52.960" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""Okay, now people can join. Hooray, we made it!""" start="00:00:55.251" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""Today was great, and yesterday was great too,""" start="00:00:58.126" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""with so many fascinating talks and conversations.""" start="00:01:01.440" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""I'm really, really glad that it all worked out,""" start="00:01:06.520" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""despite some running around""" start="00:01:09.600" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""and figuring things out on the fly,""" start="00:01:12.160" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""we all managed to get there.""" start="00:01:14.680" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""I actually have some of the live""" start="00:01:18.560" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""talks recordings up already""" start="00:01:20.640" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""on media.emacsconf.org and YouTube, assuming things work.""" start="00:01:22.960" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""I'm just going to republish it from Emacs naturally.""" start="00:01:28.400" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""As you can see, I was e-debugging things""" start="00:01:33.320" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""to the very last minute.""" start="00:01:36.360" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""Yeah, feel free to spread the word.""" start="00:01:37.480" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""I check the Emacs hashtag every week""" start="00:01:39.800" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""as part of the Emacs news process anyway.""" start="00:01:42.520" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""So if you have any favorite talks,""" start="00:01:45.840" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""that's a great way to share the ideas with more people,""" start="00:01:47.840" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""and then even more conversations can happen.""" start="00:01:52.040" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""The prerecorded talks, as I mentioned,""" start="00:01:54.560" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""are already up on the wiki""" start="00:01:58.080" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""and at the media emacsconf.org slash 2027 website.""" start="00:02:00.240" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""Sorry, 2025. We're not in the time machine. 2025 site.""" start="00:02:05.200" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""And they should already be on YouTube as well.""" start="00:02:10.960" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""I will upload the late submissions""" start="00:02:13.800" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""and the live talks and the Q&A sessions""" start="00:02:16.400" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""over the next week or two.""" start="00:02:19.000" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""I usually get that done very quickly.""" start="00:02:20.440" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""I didn't even finish this sentence.""" start="00:02:23.200" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""I'll post an update to the Emacs Conf Discuss mailing list,""" start="00:02:27.520" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""so feel free to subscribe to that if you'd like an update.""" start="00:02:31.080" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""If you've got ideas for making things better,""" start="00:02:34.480" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""then feel free to drop them into the Etherpad""" start="00:02:37.560" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""so that we can make next year's conference even smoother.""" start="00:02:40.960" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""I had a lot of people watching, so thank you for that.""" start="00:02:45.760" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""And of course, thanks to all the speakers""" start="00:02:51.120" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""who put hours and hours into their presentations,""" start="00:02:53.720" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""the volunteers who helped both before and during the conference""" start="00:02:56.360" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""and who will help in the days ahead""" start="00:03:01.080" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""as we get everything extracted and packaged and transcribed even,""" start="00:03:03.440" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""and a nice chapter indices on the Q&A""" start="00:03:08.920" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""so you can jump to when a specific question was answered,""" start="00:03:11.240" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""all that good stuff.""" start="00:03:14.400" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""and to all those other people in their lives""" start="00:03:16.520" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""whose patience and support make all of this possible.""" start="00:03:19.800" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""So thank you so much for that.""" start="00:03:23.480" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""This year's host, you saw Corwin and you saw,""" start="00:03:26.920" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""I mean, what's, why am I,""" start="00:03:30.200" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""wait, I'm like buzzing all over the place""" start="00:03:32.320" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""as people are mentioning my nick on IRC.""" start="00:03:34.440" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""All right, now that I'm in do not disturb mode.""" start="00:03:37.040" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""So thank you to the hosts""" start="00:03:40.320" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""and thank you to other volunteers,""" start="00:03:42.200" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""JC and Trico and James and Amitav and Rodion and Jaybird and Indra.""" start="00:03:43.840" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""and Yang3, and Bhavin, and Michael, and Ian,""" start="00:03:49.920" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""and Jamie, and Ihor, and FlowyCoder,""" start="00:03:55.120" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""and probably other people""" start="00:03:57.880" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""that I have forgotten to copy out of my conference.org file""" start="00:03:58.840" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""and into this, but thank you anyway.""" start="00:04:02.600" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""Thank you to the Free Software Foundation.""" start="00:04:05.160" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""They host the mailing list, they host the media server,""" start="00:04:08.040" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""and of course, they've got like Emacs, so that's awesome.""" start="00:04:12.160" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""To make things easier, our streams are actually not on my computer.""" start="00:04:16.360" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""We use OBS and a server,""" start="00:04:23.480" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""a fairly beefy one that Ry P shares with us.""" start="00:04:26.280" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""So then I can VNC into it and control OBS""" start="00:04:30.280" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""and stream to IceCast and all that other goodness.""" start="00:04:33.280" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""And I don't have to worry about my computer stressing out.""" start="00:04:36.240" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""It's all good. And so we use a whole lot of free""" start="00:04:39.720" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""and open source software in the stack.""" start="00:04:43.440" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""So we are very, very grateful""" start="00:04:45.520" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""for all the users and contributors""" start="00:04:47.120" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""who make all of that possible.""" start="00:04:49.160" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""Things like Emacs and Org Mode and ERC and Tramp and Magit""" start="00:04:50.760" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""and BigBlueButton and Etherpad and IckyWicky and IceCast""" start="00:04:55.920" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""and OBS and TheLaunch and LiberaChat and FFmpeg""" start="00:04:59.160" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""and OpenAI Whisper, WhisperX, different interface.""" start="00:05:02.320" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""The Aeneas forced alignment tool, site transfer for uploads,""" start="00:05:05.720" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""subed for editing the subtitles,""" start="00:05:09.640" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""sub-seg for cutting the subtitles into nice chunks""" start="00:05:11.680" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""so that you're not like trying to read a whole lot in one line,""" start="00:05:14.440" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""Mozilla Firefox, MPV and TamperMonkey""" start="00:05:17.400" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""so that everything gets automatically logged in""" start="00:05:22.760" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""when the stream switches to like a big blue button room, it's handy.""" start="00:05:25.920" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""and of course, many other tools and services""" start="00:05:30.480" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""that we use to prepare and host this year's conference.""" start="00:05:33.000" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""Thanks to Shoshin for the music.""" start="00:05:35.200" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""He's an Emacs geek as well.""" start="00:05:37.200" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""If you also have music that you'd like to share with us""" start="00:05:39.480" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""under the Creative Commons Attribution License,""" start="00:05:42.160" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""please feel free to let me know""" start="00:05:45.000" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""or I should put in my email address here.""" start="00:05:47.240" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""Yeah, sacha@sachachua.com.""" start="00:05:50.680" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""So let us know in case you have music""" start="00:05:57.080" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""or other things you want to share.""" start="00:05:59.560" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""Thanks to the people who donated""" start="00:06:01.600" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""via the FSF working together program.""" start="00:06:03.600" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""It costs like I think less than a hundred dollars""" start="00:06:06.440" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""to run this whole thing""" start="00:06:09.920" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""that the biggest thing really is people's time.""" start="00:06:11.320" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""And thank you so much for sharing that with us.""" start="00:06:14.880" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""So yes, but thank you specifically to Scott and Jonathan""" start="00:06:17.120" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""and the other anonymous donors""" start="00:06:20.720" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""through the Working Together program.""" start="00:06:23.040" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""And that's where we are so far. Feel free to join me.""" start="00:06:26.480" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""I can be here until the kiddo says""" start="00:06:30.200" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""I have not given her enough hugs for today.""" start="00:06:32.320" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""But if you want to like do a quick recap of your favorite talks""" start="00:06:34.720" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""or how you're excited to take things going forward""" start="00:06:40.440" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""and all that stuff.""" start="00:06:43.720" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""You can join me in this as Sunday closing.""" start="00:06:45.160" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""If you look at the talk page,""" start="00:06:47.720" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""there's going to be theoretically""" start="00:06:49.520" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""a big blue button link there that you can join.""" start="00:06:52.000" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""But thank you for this. And now it's like awkward silence.""" start="00:06:55.000" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""I'm wondering what you learned most""" start="00:07:04.840" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""from this conference this year.""" start="00:07:07.720" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""Because I'm running around so much,""" start="00:07:09.520" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""I don't get a lot of the live stuff.""" start="00:07:11.680" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""Like, for example, when I was listening to your Q&A,""" start="00:07:23.840" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""I had it in one ear and I had Christian's dental casting Q&A in the other ear,""" start="00:07:30.040" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""so that just in case he had questions also.""" start="00:07:34.520" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""which kind of just meant I was listening for silences""" start="00:07:36.880" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""and that meant I had to read the next question out loud.""" start="00:07:39.560" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""But I love going through the videos and captioning them.""" start="00:07:43.200" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""And I'm really excited about the kinds of conversations""" start="00:07:46.880" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""that people have been having on the etherpacks and IRC.""" start="00:07:50.600" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""So I think the biggest thing that I'm learning""" start="00:07:53.720" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""is that people are having a lot of fun with Emacs.""" start="00:07:57.040" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""Which is no surprise, of course.""" start="00:08:01.000" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""But it's always so exciting to see people bump into other people""" start="00:08:05.200" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""whose minds work the same way.""" start="00:08:09.080" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""And then who knows where that will go over the next year, over the next years.""" start="00:08:11.160" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""That's sort of an interesting topic,""" start="00:08:17.640" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""is like how to keep the conversations""" start="00:08:22.040" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""going between the conferences, you know?""" start="00:08:24.280" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""is where do people hang out and discuss these things?""" start="00:08:27.440" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""Reddit's one place. IRC. I figure it's... Sorry, go ahead. I'm done.""" start="00:08:33.040" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""I think it's rather...""" start="00:08:49.360" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""I like to think of it as the start of the conversation.""" start="00:08:54.880" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""And so we have around 100 people,""" start="00:08:59.680" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""more than 100, around 200 people yesterday,""" start="00:09:08.160" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""around 100 today joining us.""" start="00:09:12.640" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""And those are a lot of conversations,""" start="00:09:15.000" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""but then they're the conversations that happen""" start="00:09:17.000" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""when people look up the videos and the captions""" start="00:09:18.640" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""and the resources that people have shared.""" start="00:09:22.400" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""And so I think it gives us a lot of material,""" start="00:09:25.400" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""a lot of exciting points""" start="00:09:30.080" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""for plenty of other conversations this year.""" start="00:09:31.680" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""Yeah, it's a great community. Oh, yes, I should mention,""" start="00:09:34.360" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""the conversation doesn't stop here""" start="00:09:41.120" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""because there are mailing lists.""" start="00:09:42.800" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""Thank you, Rudy, for the reminder.""" start="00:09:44.400" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""If you're looking for more of this kind of sense of community,""" start="00:09:46.000" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""there's like, well, Emacs Develop course has a lot of technical discussions going on,""" start="00:09:50.760" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""but the Org Mode mailing list is very nice.""" start="00:09:56.880" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""There are also lots of meetups.""" start="00:10:00.560" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""There's definitely a meetup every month.""" start="00:10:02.720" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""Org Meetup, in fact, is happening in a couple of days.""" start="00:10:05.200" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""If you look on the Emacs wiki for user groups,""" start="00:10:10.640" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""or you check my Emacs news,""" start="00:10:13.160" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""or you check, if you look for like Emacs calendar,""" start="00:10:14.720" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""which I think I put on like emacslife.com slash calendar,""" start="00:10:16.960" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""then you'll find upcoming meetups.""" start="00:10:20.680" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""so that you can keep reconnecting with people.""" start="00:10:22.640" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""And if you come up with something cool,""" start="00:10:27.000" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""you don't have to wait until the next Emacs Con""" start="00:10:29.600" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""to show it to everybody.""" start="00:10:33.760" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""You can also go to these meetups and start sharing it""" start="00:10:35.280" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""and get feedback and make it even better and so on.""" start="00:10:43.080" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""Great, thank you. Rudy says, the Emacs bugs mailing list""" start="00:10:53.320" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""is surprisingly interesting as well.""" start="00:10:56.400" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""Lots of discussion on there, various details""" start="00:10:58.600" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""and upcoming little features every single day.""" start="00:11:01.440" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""Oh yes, Maddie would like another shout out for Emacs Carnival""" start="00:11:04.160" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""which is a monthly blogging people share topics""" start="00:11:38.000" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""so that people can all write about the same thing""" start="00:11:41.320" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""and then discover other people's perspectives on it.""" start="00:11:47.000" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""There have been quite a few now.""" start="00:11:52.440" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""So if you want, you can go through the Emacs Carnival page""" start="00:11:54.840" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""in the Emacs wiki and start exploring the past issues.""" start="00:11:57.760" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""The host will have a list of links""" start="00:12:01.240" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""to the people who've submitted. So it's a great way to see""" start="00:12:04.040" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""what other people in the community""" start="00:12:07.080" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""have been thinking about something.""" start="00:12:09.920" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""Also, people are very curious about the fonts and templates""" start="00:12:11.360" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""that people use for their presentations.""" start="00:12:18.280" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""It's always, that's one of the things""" start="00:12:20.600" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""I love about presentations.""" start="00:12:22.600" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""You kind of get this, you pick up so much more""" start="00:12:23.960" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""when you're looking over someone's shoulder,""" start="00:12:26.360" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""the things that they would forget to even mention""" start="00:12:28.600" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""because it's not the point of their talk""" start="00:12:32.080" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""or they take it for granted.""" start="00:12:34.200" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""So, yes. if the presenters can share their fonts""" start="00:12:36.840" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""and setups and themes and stuff like that.""" start="00:12:40.520" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""Or if you as a viewer have been watching something""" start="00:12:44.480" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""and you see someone do this really cool keyword shortcut""" start="00:12:47.280" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""and you have no idea how they did that,""" start="00:12:50.640" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""because of course, you know, it just flies by too quickly""" start="00:12:53.280" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""and it's part of their muscle memory,""" start="00:12:56.120" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""so they don't even explain it anymore.""" start="00:12:57.640" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""Go ahead and ask the speakers, hey,""" start="00:12:59.240" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""that command that you did, that just did the magic, how?""" start="00:13:01.800" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""So yes, please feel free to go back over the videos,""" start="00:13:05.800" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""look at them slowly,""" start="00:13:11.760" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""look for interesting things you want to learn more about.""" start="00:13:12.680" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""All right, it sounds like we are""" start="00:13:45.080" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""pretty much ready to wrap up.""" start="00:13:49.160" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""So thank you, everyone, for coming.""" start="00:13:53.240" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""See you next year and also in the months in between""" start="00:13:59.000" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""because there are meetups,""" start="00:14:01.520" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""which you're going to go check out and have fun at.""" start="00:14:02.480" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""Thank you for this.""" start="00:14:04.040" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""Yes, thank you for this nice Emacs weekend.""" start="00:14:05.880" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""Thanks for putting it all together, Sacha and everyone.""" start="00:14:07.920" video="mainVideo-sun-close" id="subtitle"]] +[[!template text="""That's great. Bye!""" start="00:14:14.320" video="mainVideo-sun-close" id="subtitle"]] + +</div>Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202023%20sun-close%3A%20Sunday%20closing%20remarks) <!-- End of emacsconf-publish-after-page --> diff --git a/2025/info/sun-close-before.md b/2025/info/sun-close-before.md index 8b7bc9c2..a5507453 100644 --- a/2025/info/sun-close-before.md +++ b/2025/info/sun-close-before.md @@ -1,19 +1,13 @@ <!-- Automatically generated by emacsconf-publish-before-page --> - -The following image shows where the talk is in the schedule for Sun 2025-12-07. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="sun-close"> -<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2025/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:10 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2025/talks/modern" title="Some problems of modernizing Emacs" data-slug="modern"> <title> 9:10- 9:30 Some problems of modernizing Emacs</title> <rect x="13" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(38,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> modern</text></g></a> <a href="/2025/talks/reader" title="An introduction to the Emacs Reader" data-slug="reader"> <title> 9:40-10:15 An introduction to the Emacs Reader</title> <rect x="54" y="15" opacity="0.5" width="48" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(100,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> reader</text></g></a> <a href="/2025/talks/weights" title="Weightlifting tracking with Emacs on Android" data-slug="weights"> <title> 10:35-10:45 Weightlifting tracking with Emacs on Android</title> <rect x="130" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(141,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> weights</text></g></a> <a href="/2025/talks/completion" title="corfu+yasnippet: Easier than I thought" data-slug="completion"> <title> 11:05-11:25 corfu+yasnippet: Easier than I thought</title> <rect x="171" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(196,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> completion</text></g></a> <a href="/2025/talks/zettelkasten" title="Zettelkasten for regular Emacs hackers" data-slug="zettelkasten"> <title> 1:00- 1:25 Zettelkasten for regular Emacs hackers</title> <rect x="329" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(361,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> zettelkasten</text></g></a> <a href="/2025/talks/hyperboleqa" title="Questions and answers to help you fly with Hyperbole" data-slug="hyperboleqa"> <title> 1:45- 2:15 Questions and answers to help you fly with Hyperbole</title> <rect x="391" y="15" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(430,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperboleqa</text></g></a> <a href="/2025/talks/gardening" title="Gardening in Emacs: A Windows user's tale of tending, tweaking, and triumph" data-slug="gardening"> <title> 2:15- 2:35 Gardening in Emacs: A Windows user's tale of tending, tweaking, and triumph</title> <rect x="432" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(457,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gardening</text></g></a> <a href="/2025/talks/bookclub-tapas" title="Bookclub tapas" data-slug="bookclub-tapas"> <title> 2:45- 3:20 Bookclub tapas</title> <rect x="473" y="15" opacity="0.5" width="48" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(519,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> bookclub-tapas</text></g></a> <a href="/2025/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 3:40- 3:50 Sunday closing remarks</title> <rect stroke-width="3" x="549" y="15" opacity="0.8" width="13" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(560,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <g transform="translate(0,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 5 PM</text></g></svg> -</div> - [[!toc ]] -Format: 10-min talk ; Q&A: BigBlueButton conference room <https://media.emacsconf.org/2025/current/bbb-sun-close.html> Etherpad: <https://pad.emacsconf.org/2025-sun-close> +Format: 16-min talk ; Q&A: BigBlueButton conference room Etherpad: <https://pad.emacsconf.org/2025-sun-close> Etherpad: <https://pad.emacsconf.org/2025-sun-close> -Discuss on IRC: [#emacsconf-gen](https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen) -Status: Q&A open for participation -<div>Times in different time zones:</div><div class="times" start="2025-12-07T20:40:00Z" end="2025-12-07T20:50:00Z"><div class="conf-time">Sunday, Dec 7 2025, ~3:40 PM - 3:50 PM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Sunday, Dec 7 2025, ~2:40 PM - 2:50 PM CST (US/Central)<br />Sunday, Dec 7 2025, ~1:40 PM - 1:50 PM MST (US/Mountain)<br />Sunday, Dec 7 2025, ~12:40 PM - 12:50 PM PST (US/Pacific)<br />Sunday, Dec 7 2025, ~8:40 PM - 8:50 PM UTC <br />Sunday, Dec 7 2025, ~9:40 PM - 9:50 PM CET (Europe/Paris)<br />Sunday, Dec 7 2025, ~10:40 PM - 10:50 PM EET (Europe/Athens)<br />Monday, Dec 8 2025, ~2:10 AM - 2:20 AM IST (Asia/Kolkata)<br />Monday, Dec 8 2025, ~4:40 AM - 4:50 AM +08 (Asia/Singapore)<br />Monday, Dec 8 2025, ~5:40 AM - 5:50 AM JST (Asia/Tokyo)</div></div><div><strong><a href="/2025/watch/gen/">Find out how to watch and participate</a></strong></div> +Status: TO_REVIEW_QA + -<div class="vid mainVideo"><div></div><div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-sun-close">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/current/bbb-sun-close.html">Open public Q&A</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-close--sunday-closing-remarks--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-close--sunday-closing-remarks--intro.webm">Download --intro.webm</a></li></ul></div></div> +<div class="vid mainVideo"><video controls preload="none" id="mainVideo-sun-close"><source src="https://media.emacsconf.org/2025/emacsconf-2025-sun-close--sunday-closing-remarks--original.m4v" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-sun-close--sunday-closing-remarks--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 15:33 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-sun-close">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-close--sunday-closing-remarks--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-close--sunday-closing-remarks--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-close--sunday-closing-remarks--main.m4v">Download --main.m4v (53MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-close--sunday-closing-remarks--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-close--sunday-closing-remarks--original.json">Download --original.json</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-close--sunday-closing-remarks--original.m4v">Download --original.m4v (49MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-close--sunday-closing-remarks--original.tsv">Download --original.tsv</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-close--sunday-closing-remarks--original.txt">Download --original.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-close--sunday-closing-remarks--original.vtt">Download --original.vtt</a></li><li><a href="https://youtu.be/NsQLN-A5gTo">View on Youtube</a></li></ul></div></div> # Description <!-- End of emacsconf-publish-before-page -->
\ No newline at end of file diff --git a/2025/info/sun-close-nav.md b/2025/info/sun-close-nav.md index 6c9590ba..718dbf69 100644 --- a/2025/info/sun-close-nav.md +++ b/2025/info/sun-close-nav.md @@ -1,6 +1,6 @@ <div class="talk-nav"> Back to the [[talks]] -Previous by time: <a href="/2025/talks/bookclub-tapas">Bookclub tapas</a> -Track: <span class="sched-track General">General</span> - <strong><a href="https://emacsconf.org/2025/watch/gen">Watch</a></strong> +Previous by track: <a href="/2025/talks/sat-close">Saturday closing remarks / open session</a> +Track: <span class="sched-track General">General</span> </div> diff --git a/2025/info/sun-open-before.md b/2025/info/sun-open-before.md index 288e7cf8..ad99d4e0 100644 --- a/2025/info/sun-open-before.md +++ b/2025/info/sun-open-before.md @@ -1,15 +1,9 @@ <!-- Automatically generated by emacsconf-publish-before-page --> - -The following image shows where the talk is in the schedule for Sun 2025-12-07. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="sun-open"> -<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2025/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:10 Sunday opening remarks</title> <rect stroke-width="3" x="0" y="15" opacity="0.8" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2025/talks/modern" title="Some problems of modernizing Emacs" data-slug="modern"> <title> 9:10- 9:30 Some problems of modernizing Emacs</title> <rect x="13" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(38,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> modern</text></g></a> <a href="/2025/talks/reader" title="An introduction to the Emacs Reader" data-slug="reader"> <title> 9:40-10:15 An introduction to the Emacs Reader</title> <rect x="54" y="15" opacity="0.5" width="48" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(100,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> reader</text></g></a> <a href="/2025/talks/weights" title="Weightlifting tracking with Emacs on Android" data-slug="weights"> <title> 10:35-10:45 Weightlifting tracking with Emacs on Android</title> <rect x="130" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(141,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> weights</text></g></a> <a href="/2025/talks/completion" title="corfu+yasnippet: Easier than I thought" data-slug="completion"> <title> 11:05-11:25 corfu+yasnippet: Easier than I thought</title> <rect x="171" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(196,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> completion</text></g></a> <a href="/2025/talks/zettelkasten" title="Zettelkasten for regular Emacs hackers" data-slug="zettelkasten"> <title> 1:00- 1:25 Zettelkasten for regular Emacs hackers</title> <rect x="329" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(361,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> zettelkasten</text></g></a> <a href="/2025/talks/hyperboleqa" title="Questions and answers to help you fly with Hyperbole" data-slug="hyperboleqa"> <title> 1:45- 2:15 Questions and answers to help you fly with Hyperbole</title> <rect x="391" y="15" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(430,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperboleqa</text></g></a> <a href="/2025/talks/gardening" title="Gardening in Emacs: A Windows user's tale of tending, tweaking, and triumph" data-slug="gardening"> <title> 2:15- 2:35 Gardening in Emacs: A Windows user's tale of tending, tweaking, and triumph</title> <rect x="432" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(457,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gardening</text></g></a> <a href="/2025/talks/bookclub-tapas" title="Bookclub tapas" data-slug="bookclub-tapas"> <title> 2:45- 3:20 Bookclub tapas</title> <rect x="473" y="15" opacity="0.5" width="48" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(519,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> bookclub-tapas</text></g></a> <a href="/2025/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 3:40- 3:50 Sunday closing remarks</title> <rect x="549" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(560,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <g transform="translate(0,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 5 PM</text></g></svg> -</div> - [[!toc ]] -Format: 5-min talk ; Q&A: Etherpad <https://pad.emacsconf.org/2025-sun-open> +Format: 5-min talk ; Q&A: Etherpad Etherpad: <https://pad.emacsconf.org/2025-sun-open> -Discuss on IRC: [#emacsconf-gen](https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen) -Status: Q&A open for participation -<div>Times in different time zones:</div><div class="times" start="2025-12-07T14:00:00Z" end="2025-12-07T14:10:00Z"><div class="conf-time">Sunday, Dec 7 2025, ~9:00 AM - 9:10 AM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Sunday, Dec 7 2025, ~8:00 AM - 8:10 AM CST (US/Central)<br />Sunday, Dec 7 2025, ~7:00 AM - 7:10 AM MST (US/Mountain)<br />Sunday, Dec 7 2025, ~6:00 AM - 6:10 AM PST (US/Pacific)<br />Sunday, Dec 7 2025, ~2:00 PM - 2:10 PM UTC <br />Sunday, Dec 7 2025, ~3:00 PM - 3:10 PM CET (Europe/Paris)<br />Sunday, Dec 7 2025, ~4:00 PM - 4:10 PM EET (Europe/Athens)<br />Sunday, Dec 7 2025, ~7:30 PM - 7:40 PM IST (Asia/Kolkata)<br />Sunday, Dec 7 2025, ~10:00 PM - 10:10 PM +08 (Asia/Singapore)<br />Sunday, Dec 7 2025, ~11:00 PM - 11:10 PM JST (Asia/Tokyo)</div></div><div><strong><a href="/2025/watch/gen/">Find out how to watch and participate</a></strong></div> +Status: Q&A finished, IRC and pad will be archived on this page + @@ -29,6 +23,6 @@ Status: Q&A open for participation 04:16.020 Videos 04:26.776 Let's get started! -"""]]<div></div>Duration: 04:51 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-sun-open">Open Etherpad</a></li><li><a href="https://pad.emacsconf.org/2025-sun-open">Open public Q&A</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-open--sunday-opening-remarks--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-open--sunday-opening-remarks--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-open--sunday-opening-remarks--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-open--sunday-opening-remarks--main.opus">Download --main.opus (2.5MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-open--sunday-opening-remarks--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-open--sunday-opening-remarks--main.webm">Download --main.webm (15MB)</a></li></ul></div></div> +"""]]<div></div>Duration: 04:51 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-sun-open">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-open--sunday-opening-remarks--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-open--sunday-opening-remarks--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-open--sunday-opening-remarks--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-open--sunday-opening-remarks--main.opus">Download --main.opus (2.5MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-open--sunday-opening-remarks--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-open--sunday-opening-remarks--main.webm">Download --main.webm (15MB)</a></li><li><a href="https://youtu.be/0B9lsD8Z_6M">View on Youtube</a></li></ul></div></div> # Description <!-- End of emacsconf-publish-before-page -->
\ No newline at end of file diff --git a/2025/info/sun-open-nav.md b/2025/info/sun-open-nav.md index 32ce1916..2f6390d4 100644 --- a/2025/info/sun-open-nav.md +++ b/2025/info/sun-open-nav.md @@ -1,7 +1,7 @@ <div class="talk-nav"> Back to the [[talks]] -Previous by time: <a href="/2025/talks/sat-close">Saturday closing remarks / open session</a> -Next by time: <a href="/2025/talks/modern">Some problems of modernizing Emacs</a> -Track: <span class="sched-track General">General</span> - <strong><a href="https://emacsconf.org/2025/watch/gen">Watch</a></strong> +Previous by track: <a href="/2025/talks/open-mic">Open session</a> +Next by track: <a href="/2025/talks/modern">Some problems of modernizing Emacs</a> +Track: <span class="sched-track General">General</span> </div> diff --git a/2025/info/swanky-before.md b/2025/info/swanky-before.md index a374e6d9..c10e2605 100644 --- a/2025/info/swanky-before.md +++ b/2025/info/swanky-before.md @@ -1,14 +1,8 @@ <!-- Automatically generated by emacsconf-publish-before-page --> - -The following image shows where the talk is in the schedule for Sat 2025-12-06. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="swanky"> -<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2025/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:10 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2025/talks/org-babel" title="Making Org-Babel reactive" data-slug="org-babel"> <title> 9:10- 9:20 Making Org-Babel reactive</title> <rect x="13" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(24,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> org-babel</text></g></a> <a href="/2025/talks/reference" title="Emacs as a fully-fledged reference manager" data-slug="reference"> <title> 9:30- 9:55 Emacs as a fully-fledged reference manager</title> <rect x="41" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(73,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> reference</text></g></a> <a href="/2025/talks/gmail" title="org-gmail: A deep integration of Gmail into your Org Mode" data-slug="gmail"> <title> 10:15-10:40 org-gmail: A deep integration of Gmail into your Org Mode</title> <rect x="102" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(134,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gmail</text></g></a> <a href="/2025/talks/gnus" title="Reading and writing emails in GNU Emacs with Gnus" data-slug="gnus"> <title> 10:50-11:15 Reading and writing emails in GNU Emacs with Gnus</title> <rect x="150" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(182,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gnus</text></g></a> <a href="/2025/talks/latex" title="LaTeX export in org-mode: the overhaul" data-slug="latex"> <title> 11:25-11:45 LaTeX export in org-mode: the overhaul</title> <rect x="199" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(224,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> latex</text></g></a> <a href="/2025/talks/calc" title="Basic Calc functionality for engineering or electronics" data-slug="calc"> <title> 1:00- 1:25 Basic Calc functionality for engineering or electronics</title> <rect x="329" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(361,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> calc</text></g></a> <a href="/2025/talks/blee-lcnt" title="Blee-LCNT: An Emacs-centered content production and self-publication framework" data-slug="blee-lcnt"> <title> 1:35- 2:15 Blee-LCNT: An Emacs-centered content production and self-publication framework</title> <rect x="377" y="15" opacity="0.5" width="54" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(429,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> blee-lcnt</text></g></a> <a href="/2025/talks/greader" title="GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence" data-slug="greader"> <title> 2:35- 2:40 GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence</title> <rect x="459" y="15" opacity="0.5" width="6" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(463,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> greader</text></g></a> <a href="/2025/talks/open-mic" title="Open session" data-slug="open-mic"> <title> 2:50- 3:40 Open session</title> <rect x="480" y="15" opacity="0.5" width="68" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(546,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> open-mic</text></g></a> <a href="/2025/talks/sat-close" title="Saturday closing remarks / open session" data-slug="sat-close"> <title> 4:00- 4:10 Saturday closing remarks / open session</title> <rect x="576" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(587,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2025/talks/schemacs" title="One year progress update Schemacs (formerly Gypsum)" data-slug="schemacs"> <title> 9:30- 9:55 One year progress update Schemacs (formerly Gypsum)</title> <rect x="41" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(73,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> schemacs</text></g></a> <a href="/2025/talks/juicemacs" title="Juicemacs: exploring speculative JIT compilation for ELisp in Java" data-slug="juicemacs"> <title> 10:15-10:35 Juicemacs: exploring speculative JIT compilation for ELisp in Java</title> <rect x="102" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(127,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> juicemacs</text></g></a> <a href="/2025/talks/swanky" title="Swanky Python: Interactive development for Python" data-slug="swanky"> <title> 10:45-11:10 Swanky Python: Interactive development for Python</title> <rect stroke-width="3" x="144" y="75" opacity="0.8" width="34" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(176,133)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> swanky</text></g></a> <a href="/2025/talks/python" title="Interactive Python programming in Emacs" data-slug="python"> <title> 11:20-11:40 Interactive Python programming in Emacs</title> <rect x="192" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(217,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <a href="/2025/talks/llm" title="Emacs, editors, and LLM driven workflows" data-slug="llm"> <title> 1:00- 1:25 Emacs, editors, and LLM driven workflows</title> <rect x="329" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(361,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> llm</text></g></a> <a href="/2025/talks/private-ai" title="Emacs and private AI: a great match" data-slug="private-ai"> <title> 1:45- 2:05 Emacs and private AI: a great match</title> <rect x="391" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(416,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> private-ai</text></g></a> <a href="/2025/talks/commonlisp" title="Common Lisp images communicating like-a-human through shared Emacs slime and eev" data-slug="commonlisp"> <title> 2:25- 2:55 Common Lisp images communicating like-a-human through shared Emacs slime and eev</title> <rect x="446" y="75" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(485,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> commonlisp</text></g></a> <a href="/2025/talks/graphics" title="Modern Emacs/Elisp hardware/software accelerated graphics" data-slug="graphics"> <title> 3:05- 3:30 Modern Emacs/Elisp hardware/software accelerated graphics</title> <rect x="500" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(532,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> graphics</text></g></a> <g transform="translate(0,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 5 PM</text></g></svg> -</div> - [[!toc ]] Format: 22-min talk ; Q&A: ask questions via Etherpad/IRC; we'll e-mail the speaker and post answers on this wiki page after the conference Etherpad: <https://pad.emacsconf.org/2025-swanky> Etherpad: <https://pad.emacsconf.org/2025-swanky> -Discuss on IRC: [#emacsconf-dev](https://chat.emacsconf.org/?join=emacsconf,emacsconf-dev) -Status: Q&A finished, IRC and pad will be archived on this page +Status: TO_REVIEW_QA diff --git a/2025/info/swanky-nav.md b/2025/info/swanky-nav.md index 710a4414..4d44523b 100644 --- a/2025/info/swanky-nav.md +++ b/2025/info/swanky-nav.md @@ -1,7 +1,7 @@ <div class="talk-nav"> Back to the [[talks]] -Previous by time: <a href="/2025/talks/juicemacs">Juicemacs: exploring speculative JIT compilation for ELisp in Java</a> -Next by time: <a href="/2025/talks/gnus">Reading and writing emails in GNU Emacs with Gnus</a> -Track: <span class="sched-track Development">Development</span> - <strong><a href="https://emacsconf.org/2025/watch/dev">Watch</a></strong> +Previous by track: <a href="/2025/talks/juicemacs">Juicemacs: exploring speculative JIT compilation for ELisp in Java</a> +Next by track: <a href="/2025/talks/python">Interactive Python programming in Emacs</a> +Track: <span class="sched-track Development">Development</span> </div> diff --git a/2025/info/weights-after.md b/2025/info/weights-after.md index d2f9ed7d..d8714c35 100644 --- a/2025/info/weights-after.md +++ b/2025/info/weights-after.md @@ -1,7 +1,567 @@ <!-- Automatically generated by emacsconf-publish-after-page --> -Questions or comments? Please e-mail [zacromero@posteo.com](mailto:zacromero@posteo.com?subject=Comment%20for%20EmacsConf%202023%20weights%3A%20Weightlifting%20tracking%20with%20Emacs%20on%20Android) +<div class="transcript transcript-mainVideo"><a name="weights-mainVideo-transcript"></a><h1>Transcript (unedited)</h1> + +[[!template text="""And you're ready to go. All right, perfect.""" start="00:00:00.000" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Hello, my name is Zachary Romero""" start="00:00:05.820" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and today I'll be giving a talk""" start="00:00:07.876" video="mainVideo-weights" id="subtitle"]] +[[!template text="""on how I'm using Emacs for Android""" start="00:00:08.880" video="mainVideo-weights" id="subtitle"]] +[[!template text="""to replace my fitness app I normally use.""" start="00:00:12.720" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So it goes without saying""" start="00:00:15.400" video="mainVideo-weights" id="subtitle"]] +[[!template text="""that a lot of the mobile ecosystem these days""" start="00:00:17.240" video="mainVideo-weights" id="subtitle"]] +[[!template text="""are pretty hostile to the interest of its users.""" start="00:00:21.560" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So there's privacy policies""" start="00:00:25.440" video="mainVideo-weights" id="subtitle"]] +[[!template text="""that are constantly collecting your data and selling it.""" start="00:00:27.000" video="mainVideo-weights" id="subtitle"]] +[[!template text="""without your consent, bombardment of ads.""" start="00:00:32.960" video="mainVideo-weights" id="subtitle"]] +[[!template text="""And then there's a lot of features that are locked.""" start="00:00:36.400" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Sometimes features that the app gives you,""" start="00:00:38.000" video="mainVideo-weights" id="subtitle"]] +[[!template text="""they're put behind paywalls.""" start="00:00:40.480" video="mainVideo-weights" id="subtitle"]] +[[!template text="""And so a lot of the ecosystem""" start="00:00:42.960" video="mainVideo-weights" id="subtitle"]] +[[!template text="""isn't in the best interest of users.""" start="00:00:45.160" video="mainVideo-weights" id="subtitle"]] +[[!template text="""And obviously there are apps like on F-Droid""" start="00:00:49.120" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and the Android ecosystem that do try to address this,""" start="00:00:51.960" video="mainVideo-weights" id="subtitle"]] +[[!template text="""but the solutions overall are lagging""" start="00:00:56.800" video="mainVideo-weights" id="subtitle"]] +[[!template text="""behind maybe desktop computers.""" start="00:00:59.160" video="mainVideo-weights" id="subtitle"]] +[[!template text="""One option that has come in the past few years""" start="00:01:05.440" video="mainVideo-weights" id="subtitle"]] +[[!template text="""is Emacs on Android. It's just a normal Emacs build,""" start="00:01:14.480" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and so it can do everything, in theory, that Emacs can do.""" start="00:01:17.240" video="mainVideo-weights" id="subtitle"]] +[[!template text="""And so I got to thinking how could I, how I could use Emacs""" start="00:01:21.160" video="mainVideo-weights" id="subtitle"]] +[[!template text="""to replace some of the proprietary apps""" start="00:01:24.400" video="mainVideo-weights" id="subtitle"]] +[[!template text="""that I use on a daily basis.""" start="00:01:27.040" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So I just went thinking about the apps,""" start="00:01:28.480" video="mainVideo-weights" id="subtitle"]] +[[!template text="""the apps that Emacs can replace.""" start="00:01:31.280" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Some of them seem quite easy.""" start="00:01:33.040" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Some of them... maybe might take a little effort but seem doable""" start="00:01:35.120" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and then obviously there's a whole class of apps""" start="00:01:39.880" video="mainVideo-weights" id="subtitle"]] +[[!template text="""that would be pretty impossible to emulate on Emacs.""" start="00:01:41.960" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So I mean besides like to-do lists, note taking, org mode,""" start="00:01:47.200" video="mainVideo-weights" id="subtitle"]] +[[!template text="""one thing that came to mind was my fitness tracking app.""" start="00:01:52.680" video="mainVideo-weights" id="subtitle"]] +[[!template text="""This is an app I use pretty often""" start="00:01:55.760" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and in theory Emacs should be quite usable for this case.""" start="00:01:59.240" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So weightlifting tracking is,""" start="00:02:06.720" video="mainVideo-weights" id="subtitle"]] +[[!template text="""so it's normally used to record""" start="00:02:09.760" video="mainVideo-weights" id="subtitle"]] +[[!template text="""what exercises you do at what intensity""" start="00:02:13.600" video="mainVideo-weights" id="subtitle"]] +[[!template text="""in order to progress week by week.""" start="00:02:17.520" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So you might plan on like slowly increasing""" start="00:02:20.720" video="mainVideo-weights" id="subtitle"]] +[[!template text="""the amount of effort you put into""" start="00:02:25.720" video="mainVideo-weights" id="subtitle"]] +[[!template text="""your various workouts from week to week,""" start="00:02:27.400" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and then maybe you'll have put some rest weeks in there.""" start="00:02:30.160" video="mainVideo-weights" id="subtitle"]] +[[!template text="""And so you want a detailed plan""" start="00:02:34.080" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and recording of what you do throughout the week.""" start="00:02:37.440" video="mainVideo-weights" id="subtitle"]] +[[!template text="""And so I guess way back, normally""" start="00:02:40.440" video="mainVideo-weights" id="subtitle"]] +[[!template text="""this would have been done on pen and paper.""" start="00:02:43.920" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So you would take your notebook""" start="00:02:45.920" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and just write down on paper what you did.""" start="00:02:48.080" video="mainVideo-weights" id="subtitle"]] +[[!template text="""And this obviously works, and a lot of people do do this.""" start="00:02:51.000" video="mainVideo-weights" id="subtitle"]] +[[!template text="""But these days, there are quite a few apps""" start="00:02:56.560" video="mainVideo-weights" id="subtitle"]] +[[!template text="""that make this process quite seamless and effortless.""" start="00:02:59.800" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So just as an example, really fast.""" start="00:03:02.640" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So this is one of the popular apps out these days""" start="00:03:06.280" video="mainVideo-weights" id="subtitle"]] +[[!template text="""that has such a feature.""" start="00:03:09.040" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So you can save all your workout routines""" start="00:03:10.400" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and this nice interface.""" start="00:03:13.480" video="mainVideo-weights" id="subtitle"]] +[[!template text="""And so you click a button and then it starts,""" start="00:03:14.320" video="mainVideo-weights" id="subtitle"]] +[[!template text="""you have the workout interface and then""" start="00:03:18.720" video="mainVideo-weights" id="subtitle"]] +[[!template text="""You can kind of, you go through your workout""" start="00:03:20.920" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and then you can input,""" start="00:03:23.440" video="mainVideo-weights" id="subtitle"]] +[[!template text="""you can input like what things you do.""" start="00:03:25.080" video="mainVideo-weights" id="subtitle"]] +[[!template text="""And then it has this like fancy timer at the bottom.""" start="00:03:27.400" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So like, this is kind of like the,""" start="00:03:29.120" video="mainVideo-weights" id="subtitle"]] +[[!template text="""kind of like what a lot of people use these days,""" start="00:03:30.960" video="mainVideo-weights" id="subtitle"]] +[[!template text="""just for, just for, to make it as frictionless as possible.""" start="00:03:35.840" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So obviously you can do like this bare bone text editing in Emacs.""" start="00:03:39.320" video="mainVideo-weights" id="subtitle"]] +[[!template text="""You just have to open up an org mode file and just right away.""" start="00:03:44.360" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So, but there are a number of problems with this.""" start="00:03:46.960" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So like, especially on mobile,""" start="00:03:48.880" video="mainVideo-weights" id="subtitle"]] +[[!template text="""character by character editing,""" start="00:03:50.560" video="mainVideo-weights" id="subtitle"]] +[[!template text="""just like writing all these, this text out manually,""" start="00:03:52.720" video="mainVideo-weights" id="subtitle"]] +[[!template text="""maybe some formatting, it can be pretty tedious""" start="00:03:55.880" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and not, maybe not something you want to, you want to have to do,""" start="00:03:58.760" video="mainVideo-weights" id="subtitle"]] +[[!template text="""especially if you're like exhausted or tired.""" start="00:04:01.840" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So, I mean, there's also like the problem""" start="00:04:04.560" video="mainVideo-weights" id="subtitle"]] +[[!template text="""of like remembering which, where in your workout you are,""" start="00:04:06.480" video="mainVideo-weights" id="subtitle"]] +[[!template text="""like how many of these, these, like which,""" start="00:04:09.440" video="mainVideo-weights" id="subtitle"]] +[[!template text="""which, like where are you, where you are,""" start="00:04:11.840" video="mainVideo-weights" id="subtitle"]] +[[!template text="""like, um like which set number set number are you on""" start="00:04:13.480" video="mainVideo-weights" id="subtitle"]] +[[!template text="""are you on the first second""" start="00:04:17.160" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and then also like maybe you failed""" start="00:04:17.680" video="mainVideo-weights" id="subtitle"]] +[[!template text="""maybe you weren't able to like perform this""" start="00:04:19.920" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and maybe you have to make a note that so like""" start="00:04:22.240" video="mainVideo-weights" id="subtitle"]] +[[!template text="""so that's even more text editing you would have to do""" start="00:04:24.280" video="mainVideo-weights" id="subtitle"]] +[[!template text="""um also some things like unit conversions""" start="00:04:28.280" video="mainVideo-weights" id="subtitle"]] +[[!template text="""like you could use calc""" start="00:04:30.960" video="mainVideo-weights" id="subtitle"]] +[[!template text="""but then you know you'd have to like open up the calc,""" start="00:04:31.800" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and then number, unit conversion, switch buffers.""" start="00:04:35.880" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So it's doable, but it takes a little effort.""" start="00:04:39.800" video="mainVideo-weights" id="subtitle"]] +[[!template text="""And then also the rest timer.""" start="00:04:42.000" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So if you want to make sure you're resting""" start="00:04:43.440" video="mainVideo-weights" id="subtitle"]] +[[!template text="""in between these exercises you do,""" start="00:04:45.400" video="mainVideo-weights" id="subtitle"]] +[[!template text="""you'd have to maybe open up another app,""" start="00:04:47.000" video="mainVideo-weights" id="subtitle"]] +[[!template text="""or maybe you'd have to bring your watch.""" start="00:04:51.080" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So that's another thing that""" start="00:04:52.440" video="mainVideo-weights" id="subtitle"]] +[[!template text="""these apps normally would do for you.""" start="00:04:53.720" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So writing some Elisp, I created a package""" start="00:04:58.400" video="mainVideo-weights" id="subtitle"]] +[[!template text="""to try to emulate that experience""" start="00:05:02.560" video="mainVideo-weights" id="subtitle"]] +[[!template text="""I showed you on that other app.""" start="00:05:04.480" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So let me just demo this real fast.""" start="00:05:06.080" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So here, the package is called org-fit.""" start="00:05:08.160" video="mainVideo-weights" id="subtitle"]] +[[!template text="""And so here, I'm going to start a new workout.""" start="00:05:13.680" video="mainVideo-weights" id="subtitle"]] +[[!template text="""And then here, I'm prompted by a list of routines""" start="00:05:17.360" video="mainVideo-weights" id="subtitle"]] +[[!template text="""that I have pre-written in org mode.""" start="00:05:19.560" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So the header name is the routine name.""" start="00:05:22.160" video="mainVideo-weights" id="subtitle"]] +[[!template text="""And so I can, out of all these routines I've written,""" start="00:05:25.760" video="mainVideo-weights" id="subtitle"]] +[[!template text="""I can select one and then also I can have it populate.""" start="00:05:29.280" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So here it's populating preset weights I had for it.""" start="00:05:35.960" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So yeah, so basically this is my current attempt""" start="00:05:41.520" video="mainVideo-weights" id="subtitle"]] +[[!template text="""to emulate that experience.""" start="00:05:45.840" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So here we can, so here like the arrows and the tabs,""" start="00:05:47.600" video="mainVideo-weights" id="subtitle"]] +[[!template text="""they only go through like the, editable fields I can so""" start="00:05:51.040" video="mainVideo-weights" id="subtitle"]] +[[!template text="""on the notes section you see you see here in the table""" start="00:05:55.240" video="mainVideo-weights" id="subtitle"]] +[[!template text="""this is like the my plan for the day""" start="00:05:58.120" video="mainVideo-weights" id="subtitle"]] +[[!template text="""so I can press space to easily""" start="00:06:00.440" video="mainVideo-weights" id="subtitle"]] +[[!template text="""just fill out the data tab""" start="00:06:02.160" video="mainVideo-weights" id="subtitle"]] +[[!template text="""go the next the next the next set""" start="00:06:03.840" video="mainVideo-weights" id="subtitle"]] +[[!template text="""I can press quote to copy from above""" start="00:06:06.880" video="mainVideo-weights" id="subtitle"]] +[[!template text="""There's also some interesting things with Android,""" start="00:06:10.240" video="mainVideo-weights" id="subtitle"]] +[[!template text="""like you can bind the volume down key.""" start="00:06:13.360" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So here I have the volume down key""" start="00:06:15.720" video="mainVideo-weights" id="subtitle"]] +[[!template text="""just like inputting the data automatically""" start="00:06:17.320" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and going to the next field.""" start="00:06:21.440" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So you see there it's quite seamless input of information.""" start="00:06:22.400" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Notice also when all the sets""" start="00:06:26.640" video="mainVideo-weights" id="subtitle"]] +[[!template text="""of a single exercise are done,""" start="00:06:30.120" video="mainVideo-weights" id="subtitle"]] +[[!template text="""it marks that heading as done.""" start="00:06:31.840" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Also, if you notice at the top, on the left,""" start="00:06:34.760" video="mainVideo-weights" id="subtitle"]] +[[!template text="""you have the session time for the workout.""" start="00:06:37.960" video="mainVideo-weights" id="subtitle"]] +[[!template text="""And then on here, we have the rest timer.""" start="00:06:42.240" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So the rest timer is actually just defined as an org mode property.""" start="00:06:44.200" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So here it's saying that, okay,""" start="00:06:48.520" video="mainVideo-weights" id="subtitle"]] +[[!template text="""you should start the auto rest timer""" start="00:06:50.840" video="mainVideo-weights" id="subtitle"]] +[[!template text="""for three minutes every time you do a set.""" start="00:06:52.760" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So here, let's fill it in, go to the next one.""" start="00:06:54.480" video="mainVideo-weights" id="subtitle"]] +[[!template text="""And now the rest timer is set for three minutes.""" start="00:06:58.280" video="mainVideo-weights" id="subtitle"]] +[[!template text="""And so here I have, I can just rest""" start="00:07:00.640" video="mainVideo-weights" id="subtitle"]] +[[!template text="""I just have the information right here.""" start="00:07:03.080" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Also, you'll notice here we have""" start="00:07:05.880" video="mainVideo-weights" id="subtitle"]] +[[!template text="""some calculations at the bottom.""" start="00:07:08.120" video="mainVideo-weights" id="subtitle"]] +[[!template text="""This is something also that those apps provide,""" start="00:07:09.440" video="mainVideo-weights" id="subtitle"]] +[[!template text="""like in order to make sure you're tracking""" start="00:07:12.160" video="mainVideo-weights" id="subtitle"]] +[[!template text="""on certain levels of intensity.""" start="00:07:14.320" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Let's see, what else do we have?""" start="00:07:16.720" video="mainVideo-weights" id="subtitle"]] +[[!template text="""We can add warmups, automatic warmup set inserting, unit conversions,""" start="00:07:22.600" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and then Something else to know""" start="00:07:30.880" video="mainVideo-weights" id="subtitle"]] +[[!template text="""is that all of these actions I'm doing,""" start="00:07:33.440" video="mainVideo-weights" id="subtitle"]] +[[!template text="""they're all bound to a single key""" start="00:07:35.440" video="mainVideo-weights" id="subtitle"]] +[[!template text="""to make things as effortless as possible.""" start="00:07:37.080" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So yeah, that's the app in a nutshell.""" start="00:07:40.160" video="mainVideo-weights" id="subtitle"]] +[[!template text="""And then, so how is this done?""" start="00:07:43.680" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So the philosophy behind this is to use org mode as a base.""" start="00:07:47.080" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So all the functionality, the timer for the session,""" start="00:07:51.240" video="mainVideo-weights" id="subtitle"]] +[[!template text="""that's just clock in or clock in.""" start="00:07:55.640" video="mainVideo-weights" id="subtitle"]] +[[!template text="""The various, all the data you fill in,""" start="00:08:00.320" video="mainVideo-weights" id="subtitle"]] +[[!template text="""the exercises, routines, those are just org headings,""" start="00:08:05.160" video="mainVideo-weights" id="subtitle"]] +[[!template text="""like with nested entries.""" start="00:08:09.520" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So yeah, and then all the movement,""" start="00:08:12.160" video="mainVideo-weights" id="subtitle"]] +[[!template text="""like a lot of the editing stuff""" start="00:08:14.960" video="mainVideo-weights" id="subtitle"]] +[[!template text="""is just going off of the org mode API.""" start="00:08:16.760" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So like here, my upper field, is actually just using the,""" start="00:08:18.560" video="mainVideo-weights" id="subtitle"]] +[[!template text="""so it's using like the org table go to line function.""" start="00:08:22.920" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Adding a no is org table put.""" start="00:08:26.240" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So like all of my functions I'm using,""" start="00:08:29.000" video="mainVideo-weights" id="subtitle"]] +[[!template text="""they're just building off of the org mode API.""" start="00:08:31.320" video="mainVideo-weights" id="subtitle"]] +[[!template text="""And I found that this pattern worked work pretty well.""" start="00:08:33.240" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So you get the benefits of org mode""" start="00:08:38.200" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and then the ease of using it on mobile.""" start="00:08:41.960" video="mainVideo-weights" id="subtitle"]] +[[!template text="""And so I guess in the last few minutes of this talk,""" start="00:08:48.840" video="mainVideo-weights" id="subtitle"]] +[[!template text="""I'll just go over some quick things""" start="00:08:51.920" video="mainVideo-weights" id="subtitle"]] +[[!template text="""about working with Android that might come up.""" start="00:08:53.480" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So the first thing is notifications.""" start="00:08:56.320" video="mainVideo-weights" id="subtitle"]] +[[!template text="""This is actually an interesting feature.""" start="00:08:58.880" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So In the Android build for Emacs,""" start="00:09:01.040" video="mainVideo-weights" id="subtitle"]] +[[!template text="""you have the function android notifications notify.""" start="00:09:03.680" video="mainVideo-weights" id="subtitle"]] +[[!template text="""And so here, this is how you can send a notification.""" start="00:09:05.800" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So my rest timer, for example, utilizes this function""" start="00:09:09.040" video="mainVideo-weights" id="subtitle"]] +[[!template text="""to let you know when your rest is over.""" start="00:09:12.000" video="mainVideo-weights" id="subtitle"]] +[[!template text="""And the cool thing about this is that the build for Emacs""" start="00:09:14.400" video="mainVideo-weights" id="subtitle"]] +[[!template text="""lets you, so here in the app settings, under notifications,""" start="00:09:22.440" video="mainVideo-weights" id="subtitle"]] +[[!template text="""so here you can actually pick a notification group,""" start="00:09:29.040" video="mainVideo-weights" id="subtitle"]] +[[!template text="""which is here set, which is, yeah, so it's set right here""" start="00:09:33.040" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and you can just customize it.""" start="00:09:36.640" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So like what sound do you want it to make?""" start="00:09:38.000" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Do you want it to vibrate?""" start="00:09:39.600" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Do you want to show on the screen?""" start="00:09:40.440" video="mainVideo-weights" id="subtitle"]] +[[!template text="""And so this way, like you can easily,""" start="00:09:41.680" video="mainVideo-weights" id="subtitle"]] +[[!template text="""so if you are resting, you will get a notification.""" start="00:09:43.520" video="mainVideo-weights" id="subtitle"]] +[[!template text="""It will vibrate.""" start="00:09:46.840" video="mainVideo-weights" id="subtitle"]] +[[!template text="""it might make a really loud noise if you want it to.""" start="00:09:47.880" video="mainVideo-weights" id="subtitle"]] +[[!template text="""And so this is all customizable.""" start="00:09:50.080" video="mainVideo-weights" id="subtitle"]] +[[!template text="""And the cool thing is that if you have other packages""" start="00:09:51.920" video="mainVideo-weights" id="subtitle"]] +[[!template text="""that utilize these notifications,""" start="00:09:54.480" video="mainVideo-weights" id="subtitle"]] +[[!template text="""all of the notification groups,""" start="00:09:55.640" video="mainVideo-weights" id="subtitle"]] +[[!template text="""they're all customizable separately. So, and there we go.""" start="00:09:57.480" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So that notification you see on the top""" start="00:10:01.080" video="mainVideo-weights" id="subtitle"]] +[[!template text="""is actually from the Emacs app.""" start="00:10:02.360" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So you notice here, we're not even running Emacs""" start="00:10:05.000" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and yet we got that rest timer is over.""" start="00:10:07.400" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So that's one thing. Next, keyboard.""" start="00:10:09.760" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So just when working with Emacs,""" start="00:10:13.560" video="mainVideo-weights" id="subtitle"]] +[[!template text="""I found using the unexpected keyboard, in particular,""" start="00:10:15.040" video="mainVideo-weights" id="subtitle"]] +[[!template text="""to be really helpful with all the keybinding.""" start="00:10:19.080" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So if you just want to try out Emacs""" start="00:10:22.520" video="mainVideo-weights" id="subtitle"]] +[[!template text="""from F-Droid or something,""" start="00:10:25.880" video="mainVideo-weights" id="subtitle"]] +[[!template text="""I would recommend using a keyboard like this""" start="00:10:27.720" video="mainVideo-weights" id="subtitle"]] +[[!template text="""to let you use the meta keys and the control keys.""" start="00:10:30.240" video="mainVideo-weights" id="subtitle"]] +[[!template text="""And then yeah, using this keyboard,""" start="00:10:34.000" video="mainVideo-weights" id="subtitle"]] +[[!template text="""I haven't really noticed any problems""" start="00:10:37.040" video="mainVideo-weights" id="subtitle"]] +[[!template text="""with Emacs key bindings.""" start="00:10:39.160" video="mainVideo-weights" id="subtitle"]] +[[!template text="""And then lastly, just like my setup.""" start="00:10:41.680" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So SyncThinkFork is another app I rely on heavily.""" start="00:10:45.160" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So as I mentioned, all the, this is org-fit files,""" start="00:10:49.680" video="mainVideo-weights" id="subtitle"]] +[[!template text="""they're all org-mode files.""" start="00:10:54.400" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So I use SyncThinkFork to synchronize them""" start="00:10:55.720" video="mainVideo-weights" id="subtitle"]] +[[!template text="""between my laptop and my Android.""" start="00:10:57.440" video="mainVideo-weights" id="subtitle"]] +[[!template text="""And then also like to get this package,""" start="00:10:59.880" video="mainVideo-weights" id="subtitle"]] +[[!template text="""just syncing a list folder might be helpful""" start="00:11:04.480" video="mainVideo-weights" id="subtitle"]] +[[!template text="""if you want to easily edit your init file""" start="00:11:06.560" video="mainVideo-weights" id="subtitle"]] +[[!template text="""on Android on your machine.""" start="00:11:10.000" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So yeah, SyncThinkPort is another helpful thing""" start="00:11:12.320" video="mainVideo-weights" id="subtitle"]] +[[!template text="""that you might wanna look into""" start="00:11:15.640" video="mainVideo-weights" id="subtitle"]] +[[!template text="""if you're exploring Android, the Emacs build of Android.""" start="00:11:17.960" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So yeah, Emacs on Android does actually have the potential""" start="00:11:22.920" video="mainVideo-weights" id="subtitle"]] +[[!template text="""to replace a decent number of common use cases.""" start="00:11:26.240" video="mainVideo-weights" id="subtitle"]] +[[!template text="""And org mode can be a solid foundation""" start="00:11:30.960" video="mainVideo-weights" id="subtitle"]] +[[!template text="""for any of these applications that you're thinking of.""" start="00:11:35.760" video="mainVideo-weights" id="subtitle"]] +[[!template text="""And yeah, I highly recommend giving giving Emacs on Android a shot.""" start="00:11:39.960" video="mainVideo-weights" id="subtitle"]] +[[!template text="""And that concludes this presentation.""" start="00:11:45.640" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Thank you so much, Zachary. That was an awesome talk,""" start="00:11:49.720" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and I appreciate your preparing it for us.""" start="00:11:56.440" video="mainVideo-weights" id="subtitle"]] +[[!template text="""A couple questions on the pad, if anybody wants to jump in""" start="00:11:59.600" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and throw in your questions or comments.""" start="00:12:03.400" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Of course, happy to read them out on screen here.""" start="00:12:05.120" video="mainVideo-weights" id="subtitle"]] +[[!template text="""I think when we were talking backstage before,""" start="00:12:08.600" video="mainVideo-weights" id="subtitle"]] +[[!template text="""you had asked me to kind of read them out,""" start="00:12:12.040" video="mainVideo-weights" id="subtitle"]] +[[!template text="""but feel free to jump in and kind of""" start="00:12:14.240" video="mainVideo-weights" id="subtitle"]] +[[!template text="""take over at any point.""" start="00:12:17.200" video="mainVideo-weights" id="subtitle"]] +[[!template text="""This is the You Show. I'm kind of...""" start="00:12:19.000" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So the first question we had was a comment.""" start="00:12:25.280" video="mainVideo-weights" id="subtitle"]] +[[!template text="""This is very cool.""" start="00:12:30.200" video="mainVideo-weights" id="subtitle"]] +[[!template text="""It would be nice to build up some""" start="00:12:31.440" video="mainVideo-weights" id="subtitle"]] +[[!template text="""org rep max calculation formula into calc.""" start="00:12:33.520" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Is that something that you've thought about?""" start="00:12:38.440" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Um, well, I mean, um, one rep max. Yeah.""" start="00:12:42.120" video="mainVideo-weights" id="subtitle"]] +[[!template text="""I mean, not in honesty,""" start="00:12:47.160" video="mainVideo-weights" id="subtitle"]] +[[!template text="""I'm not sure about the, like the, like, uh,""" start="00:12:48.800" video="mainVideo-weights" id="subtitle"]] +[[!template text="""extending calc itself.""" start="00:12:52.360" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Like if there's, you know, if like,""" start="00:12:53.840" video="mainVideo-weights" id="subtitle"]] +[[!template text="""what are the ways of extending calc itself,""" start="00:12:56.800" video="mainVideo-weights" id="subtitle"]] +[[!template text="""but this, this package, um, or fit,""" start="00:12:59.200" video="mainVideo-weights" id="subtitle"]] +[[!template text="""I mean, it does have the one rep max.""" start="00:13:02.000" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Like I kind of had to dig into that, like, um, uh,""" start="00:13:04.160" video="mainVideo-weights" id="subtitle"]] +[[!template text="""I can find the code, but yeah, I mean, it does,""" start="00:13:11.200" video="mainVideo-weights" id="subtitle"]] +[[!template text="""I mean, you know, so this is specifically this package,""" start="00:13:20.080" video="mainVideo-weights" id="subtitle"]] +[[!template text="""but yeah, you can use the various one rep max formulas for this.""" start="00:13:25.080" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Extend this clock report. Yes, yeah, exactly.""" start="00:13:33.040" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Graphical reports. These are all something that,""" start="00:13:37.160" video="mainVideo-weights" id="subtitle"]] +[[!template text="""It currently doesn't have, and these nice apps do have.""" start="00:13:39.200" video="mainVideo-weights" id="subtitle"]] +[[!template text="""They have charts of all kinds.""" start="00:13:43.440" video="mainVideo-weights" id="subtitle"]] +[[!template text="""You can see your progress from week to week""" start="00:13:45.400" video="mainVideo-weights" id="subtitle"]] +[[!template text="""on various exercise.""" start="00:13:48.800" video="mainVideo-weights" id="subtitle"]] +[[!template text="""They have like charts galore, all these like fancy apps.""" start="00:13:49.960" video="mainVideo-weights" id="subtitle"]] +[[!template text="""And in theory, it wouldn't be hard at all to like,""" start="00:13:54.360" video="mainVideo-weights" id="subtitle"]] +[[!template text="""cause like, you know, there's a GNU plot.""" start="00:14:00.320" video="mainVideo-weights" id="subtitle"]] +[[!template text="""There's those, and then they have like""" start="00:14:03.720" video="mainVideo-weights" id="subtitle"]] +[[!template text="""very good packages on any of them.""" start="00:14:07.120" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So, I mean, I assume integration would be pretty seamless.""" start="00:14:10.480" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So yes, that is definitely on the list""" start="00:14:13.920" video="mainVideo-weights" id="subtitle"]] +[[!template text="""of things I want to do.""" start="00:14:16.200" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Have you ever wanted to modify""" start="00:14:17.760" video="mainVideo-weights" id="subtitle"]] +[[!template text="""the functionality of your mobile device""" start="00:14:21.600" video="mainVideo-weights" id="subtitle"]] +[[!template text="""while working out any good""" start="00:14:23.680" video="mainVideo-weights" id="subtitle"]] +[[!template text="""or challenging experiences or tips with that?""" start="00:14:26.120" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Yeah, that's actually funny.""" start="00:14:28.440" video="mainVideo-weights" id="subtitle"]] +[[!template text="""There was a time where, yeah, I mean, like debugging,""" start="00:14:30.760" video="mainVideo-weights" id="subtitle"]] +[[!template text="""there was like some bug I was having with my code.""" start="00:14:37.440" video="mainVideo-weights" id="subtitle"]] +[[!template text="""And so I have, in the middle of a workout,""" start="00:14:41.000" video="mainVideo-weights" id="subtitle"]] +[[!template text="""yeah, start, like, open up the debugger and kind of,""" start="00:14:44.800" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and the cool thing is that, I mean,""" start="00:14:48.440" video="mainVideo-weights" id="subtitle"]] +[[!template text="""the biggest thing, like, the biggest thing by far""" start="00:14:50.960" video="mainVideo-weights" id="subtitle"]] +[[!template text="""is unexpected keyboard.""" start="00:14:53.080" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Like, I can't state how,""" start="00:14:54.600" video="mainVideo-weights" id="subtitle"]] +[[!template text="""I don't know how much unexpected keyboard is,""" start="00:14:56.360" video="mainVideo-weights" id="subtitle"]] +[[!template text="""because, like, with unexpected, with the unexpected,""" start="00:14:58.440" video="mainVideo-weights" id="subtitle"]] +[[!template text="""with that keyboard, you can literally just, like,""" start="00:15:01.280" video="mainVideo-weights" id="subtitle"]] +[[!template text="""it's, it's not hard at all to, like,""" start="00:15:03.600" video="mainVideo-weights" id="subtitle"]] +[[!template text="""you can do meta x or uh control meta x""" start="00:15:06.160" video="mainVideo-weights" id="subtitle"]] +[[!template text="""or you know control u control meta x""" start="00:15:11.160" video="mainVideo-weights" id="subtitle"]] +[[!template text="""to like you know debug like you can do all the key bindings""" start="00:15:13.640" video="mainVideo-weights" id="subtitle"]] +[[!template text="""with unexpected keyboard there's so there's no problem""" start="00:15:15.960" video="mainVideo-weights" id="subtitle"]] +[[!template text="""whatsoever whatsoever""" start="00:15:18.520" video="mainVideo-weights" id="subtitle"]] +[[!template text="""with that part the only part is muscle memory like like""" start="00:15:20.280" video="mainVideo-weights" id="subtitle"]] +[[!template text="""it's because you get the muscle memory""" start="00:15:23.600" video="mainVideo-weights" id="subtitle"]] +[[!template text="""of like the emacs key binding""" start="00:15:25.600" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and so you have to kind of like yeah""" start="00:15:26.840" video="mainVideo-weights" id="subtitle"]] +[[!template text="""i mean that translation is actually kind of""" start="00:15:28.280" video="mainVideo-weights" id="subtitle"]] +[[!template text="""you have to think about it like, like, okay,""" start="00:15:31.640" video="mainVideo-weights" id="subtitle"]] +[[!template text="""what was that key binding again?""" start="00:15:35.040" video="mainVideo-weights" id="subtitle"]] +[[!template text="""And you have to kind of like do it with your fingers.""" start="00:15:36.560" video="mainVideo-weights" id="subtitle"]] +[[!template text="""And it was like doing it on the, on Android is,""" start="00:15:39.560" video="mainVideo-weights" id="subtitle"]] +[[!template text="""I mean, it takes a little longer""" start="00:15:41.360" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and it's just a different, yeah,""" start="00:15:44.200" video="mainVideo-weights" id="subtitle"]] +[[!template text="""different set of different muscle memory.""" start="00:15:45.440" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Gotcha. Sorry, if you've covered this,""" start="00:15:47.080" video="mainVideo-weights" id="subtitle"]] +[[!template text="""does the rest timer end with an audible notification?""" start="00:15:51.560" video="mainVideo-weights" id="subtitle"]] +[[!template text="""That's the cool thing.""" start="00:15:55.440" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So with the Emacs, with the Android notification settings,""" start="00:15:58.200" video="mainVideo-weights" id="subtitle"]] +[[!template text="""you can, I can show that again in more detail.""" start="00:16:02.520" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So bonus settings, apps, pick the app, notifications.""" start="00:16:06.160" video="mainVideo-weights" id="subtitle"]] +[[!template text="""And then here we get that Org Fit Restover.""" start="00:16:17.080" video="mainVideo-weights" id="subtitle"]] +[[!template text="""And so here you can set, for example,""" start="00:16:21.160" video="mainVideo-weights" id="subtitle"]] +[[!template text="""whether it's a silent notification.""" start="00:16:22.920" video="mainVideo-weights" id="subtitle"]] +[[!template text="""And so this won't, this won't make it make noise you can do""" start="00:16:24.880" video="mainVideo-weights" id="subtitle"]] +[[!template text="""or like make it have a noise""" start="00:16:27.960" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and so you can have it make sure""" start="00:16:29.560" video="mainVideo-weights" id="subtitle"]] +[[!template text="""it's pop on this way the screen""" start="00:16:31.680" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and then yeah you can just pick you can just pick whatever ringtone you want""" start="00:16:33.120" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and you can make it look like yeah""" start="00:16:37.040" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and then obviously you have like the whole uh volume setting""" start="00:16:38.680" video="mainVideo-weights" id="subtitle"]] +[[!template text="""so you can like when you're when you're uh when you're working""" start="00:16:42.560" video="mainVideo-weights" id="subtitle"]] +[[!template text="""you know you can just set the volume pretty high""" start="00:16:44.560" video="mainVideo-weights" id="subtitle"]] +[[!template text="""so if you set if you do happen""" start="00:16:50.520" video="mainVideo-weights" id="subtitle"]] +[[!template text="""to set your phone kind of away You set the volume high,""" start="00:16:51.680" video="mainVideo-weights" id="subtitle"]] +[[!template text="""maybe make a really annoying sound,""" start="00:16:55.720" video="mainVideo-weights" id="subtitle"]] +[[!template text="""a loud sound you won't miss. And then, yeah, you'll be set.""" start="00:16:57.240" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So that works.""" start="00:17:00.760" video="mainVideo-weights" id="subtitle"]] +[[!template text="""That was actually one of the biggest surprises.""" start="00:17:02.160" video="mainVideo-weights" id="subtitle"]] +[[!template text="""I wasn't expecting that to work so nice.""" start="00:17:04.640" video="mainVideo-weights" id="subtitle"]] +[[!template text="""One of the next question relates to the unexpected keyboard.""" start="00:17:08.600" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Question is, have you tried other keyboards,""" start="00:17:17.280" video="mainVideo-weights" id="subtitle"]] +[[!template text="""such as Hacker's Keyboard?""" start="00:17:19.400" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Not recently. I haven't, so I couldn't compare them.""" start="00:17:20.400" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Fair enough. Another keyboard question.""" start="00:17:27.120" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Have you tried Flickboard on F-Droid?""" start="00:17:31.360" video="mainVideo-weights" id="subtitle"]] +[[!template text="""The commenter says, this is the craziest keyboard.""" start="00:17:34.400" video="mainVideo-weights" id="subtitle"]] +[[!template text="""You use one thumb. Oh, that is interesting. Let me see.""" start="00:17:37.960" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Flickboard. Flickboard. Yeah, I'll have to try that.""" start="00:17:44.560" video="mainVideo-weights" id="subtitle"]] +[[!template text="""I'm curious to get the key bindings done.""" start="00:17:48.880" video="mainVideo-weights" id="subtitle"]] +[[!template text="""I wonder if the key bindings and all that work.""" start="00:17:53.120" video="mainVideo-weights" id="subtitle"]] +[[!template text="""I hope that's interesting. I'll definitely look into that.""" start="00:17:57.360" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So I'll hold on just a moment""" start="00:18:01.280" video="mainVideo-weights" id="subtitle"]] +[[!template text="""as people are typing in more questions.""" start="00:18:02.360" video="mainVideo-weights" id="subtitle"]] +[[!template text="""A good moment to just thank you for the talk.""" start="00:18:04.240" video="mainVideo-weights" id="subtitle"]] +[[!template text="""It's personally, it's one of my favorite things""" start="00:18:06.760" video="mainVideo-weights" id="subtitle"]] +[[!template text="""to see at EmacsConf is, you know, a glimpse into a world""" start="00:18:09.720" video="mainVideo-weights" id="subtitle"]] +[[!template text="""that kind of isn't mine, right?""" start="00:18:14.560" video="mainVideo-weights" id="subtitle"]] +[[!template text="""but it shows how, you know, Emacs is sort of""" start="00:18:17.680" video="mainVideo-weights" id="subtitle"]] +[[!template text="""the bazaar in the cathedral""" start="00:18:22.800" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and bazaar sense of we're all just here""" start="00:18:26.000" video="mainVideo-weights" id="subtitle"]] +[[!template text="""sort of hauling our bags of toys""" start="00:18:28.440" video="mainVideo-weights" id="subtitle"]] +[[!template text="""into the center square and, you know, making a,""" start="00:18:31.840" video="mainVideo-weights" id="subtitle"]] +[[!template text="""you know, I don't know if it's a house of cards""" start="00:18:35.680" video="mainVideo-weights" id="subtitle"]] +[[!template text="""or what exactly it is,""" start="00:18:38.440" video="mainVideo-weights" id="subtitle"]] +[[!template text="""but it, you know, it's managing to keep me afloat personally.""" start="00:18:40.320" video="mainVideo-weights" id="subtitle"]] +[[!template text="""And I just appreciate your, you know,""" start="00:18:43.560" video="mainVideo-weights" id="subtitle"]] +[[!template text="""kind of expanding my world.""" start="00:18:47.240" video="mainVideo-weights" id="subtitle"]] +[[!template text="""It's pretty cool. Yeah, definitely. Yeah, I mean, I agree.""" start="00:18:48.520" video="mainVideo-weights" id="subtitle"]] +[[!template text="""There's a lot of different, yeah. So, next commenter.""" start="00:18:53.760" video="mainVideo-weights" id="subtitle"]] +[[!template text="""I'm curious, oh, sorry, I skipped one here.""" start="00:19:01.080" video="mainVideo-weights" id="subtitle"]] +[[!template text="""This user interface is simplified,""" start="00:19:05.360" video="mainVideo-weights" id="subtitle"]] +[[!template text="""but still keyboard based.""" start="00:19:07.400" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Have you thought about ways to make it more touch-based?""" start="00:19:09.640" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Good question. Yeah, yeah, yeah.""" start="00:19:11.960" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So the only thing currently, I think,""" start="00:19:16.040" video="mainVideo-weights" id="subtitle"]] +[[!template text="""of specific touch-based functionality I have,""" start="00:19:19.600" video="mainVideo-weights" id="subtitle"]] +[[!template text="""which, so this is like, so let's see,""" start="00:19:22.120" video="mainVideo-weights" id="subtitle"]] +[[!template text="""it's Control X, Control Plus,""" start="00:19:25.400" video="mainVideo-weights" id="subtitle"]] +[[!template text="""I think that's the, okay, that wrong,""" start="00:19:37.680" video="mainVideo-weights" id="subtitle"]] +[[!template text="""that key binding wrong, what was it? Okay, whatever.""" start="00:19:40.160" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Yeah, so in terms of touch command,""" start="00:19:42.960" video="mainVideo-weights" id="subtitle"]] +[[!template text="""so pressing on a headline will actually unfold it""" start="00:19:45.560" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and move your cursor to the next field that you,""" start="00:19:47.840" video="mainVideo-weights" id="subtitle"]] +[[!template text="""yeah, so like, yeah, at the beginning of the table.""" start="00:19:50.800" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So like, there's that, yeah, and so.""" start="00:19:54.640" video="mainVideo-weights" id="subtitle"]] +[[!template text="""It sounds like that is something you're thinking about.""" start="00:19:56.960" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Yeah, exactly.""" start="00:20:02.400" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Like, you know, maybe like a little thing at the bottom,""" start="00:20:03.640" video="mainVideo-weights" id="subtitle"]] +[[!template text="""like, so this thing has the, this app has this,""" start="00:20:06.000" video="mainVideo-weights" id="subtitle"]] +[[!template text="""if you notice, like, if you do something,""" start="00:20:09.560" video="mainVideo-weights" id="subtitle"]] +[[!template text="""it has this rest timer at the bottom.""" start="00:20:10.840" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So I mean, it wouldn't be,""" start="00:20:12.480" video="mainVideo-weights" id="subtitle"]] +[[!template text="""it wouldn't be pretty, it wouldn't be,""" start="00:20:14.640" video="mainVideo-weights" id="subtitle"]] +[[!template text="""it seems quite doable to just have like,""" start="00:20:16.600" video="mainVideo-weights" id="subtitle"]] +[[!template text="""maybe something at the bottom,""" start="00:20:18.800" video="mainVideo-weights" id="subtitle"]] +[[!template text="""like for a timer,""" start="00:20:19.840" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and then you can just like plus 15 seconds or cancel it""" start="00:20:21.320" video="mainVideo-weights" id="subtitle"]] +[[!template text="""or, you know, just,""" start="00:20:24.160" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and then those could all be just like touch based.""" start="00:20:25.240" video="mainVideo-weights" id="subtitle"]] +[[!template text="""And so, yeah. And then obviously just like,""" start="00:20:27.280" video="mainVideo-weights" id="subtitle"]] +[[!template text="""just like classic Emacs, the Emacs,""" start="00:20:30.560" video="mainVideo-weights" id="subtitle"]] +[[!template text="""like clicking actions, they just, yeah,""" start="00:20:36.120" video="mainVideo-weights" id="subtitle"]] +[[!template text="""they work just fine.""" start="00:20:43.360" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Like, so there's no like weird Android touch thing""" start="00:20:44.160" video="mainVideo-weights" id="subtitle"]] +[[!template text="""you have to worry about.""" start="00:20:47.440" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So let me ask a question of my own here.""" start="00:20:48.360" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Just thinking about that myself, how would you, you know,""" start="00:20:52.560" video="mainVideo-weights" id="subtitle"]] +[[!template text="""ideally approach that as that you'd most prefer""" start="00:20:57.200" video="mainVideo-weights" id="subtitle"]] +[[!template text="""to sort of dive into yourself?""" start="00:21:00.120" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Or would you think about factoring that out into""" start="00:21:02.880" video="mainVideo-weights" id="subtitle"]] +[[!template text="""like some kind of org touch higher level API or?""" start="00:21:07.920" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Oh, I mean, personally, personally, I mean, I mean,""" start="00:21:12.160" video="mainVideo-weights" id="subtitle"]] +[[!template text="""I think just like the clicking""" start="00:21:19.680" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and just like adding a lambda to it. That works.""" start="00:21:21.280" video="mainVideo-weights" id="subtitle"]] +[[!template text="""I mean, that feels like it works just fine.""" start="00:21:28.280" video="mainVideo-weights" id="subtitle"]] +[[!template text="""And you can add the code, like the command right there.""" start="00:21:35.760" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So it's all like, yeah, it's all, I mean,""" start="00:21:41.640" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and that's kind of a nice thing is like having everything like close,""" start="00:21:45.440" video="mainVideo-weights" id="subtitle"]] +[[!template text="""just like not having those, a lot of layers of abstraction.""" start="00:21:49.160" video="mainVideo-weights" id="subtitle"]] +[[!template text="""It's just like, you have a Lambda to the click and then just do.""" start="00:21:54.160" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Yeah, just do. That was my experience too.""" start="00:22:03.280" video="mainVideo-weights" id="subtitle"]] +[[!template text="""This is a few years several years ago at ENAC's conference,""" start="00:22:06.440" video="mainVideo-weights" id="subtitle"]] +[[!template text="""we were shocked to learn just how usable,""" start="00:22:09.600" video="mainVideo-weights" id="subtitle"]] +[[!template text="""this is echoing a comment I see from Elip Energo on IRC,""" start="00:22:13.080" video="mainVideo-weights" id="subtitle"]] +[[!template text="""who says, touch seems so wildly usable nowadays,""" start="00:22:18.560" video="mainVideo-weights" id="subtitle"]] +[[!template text="""that's so awesome.""" start="00:22:21.480" video="mainVideo-weights" id="subtitle"]] +[[!template text="""And that was really my experience too with Dungeon.""" start="00:22:22.400" video="mainVideo-weights" id="subtitle"]] +[[!template text="""We were just working on it, we got the fog of war going,""" start="00:22:25.160" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and then just took it onto a touchscreen laptop at the time,""" start="00:22:28.720" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and we're just shocked to learn,""" start="00:22:32.440" video="mainVideo-weights" id="subtitle"]] +[[!template text="""you know, everything just worked. Yeah.""" start="00:22:33.960" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Maybe like the hardest thing""" start="00:22:37.480" video="mainVideo-weights" id="subtitle"]] +[[!template text="""is actually just the default font size.""" start="00:22:38.640" video="mainVideo-weights" id="subtitle"]] +[[!template text="""You know, you have to like, you can't,""" start="00:22:40.560" video="mainVideo-weights" id="subtitle"]] +[[!template text="""you can't have your font too small or you'll,""" start="00:22:42.560" video="mainVideo-weights" id="subtitle"]] +[[!template text="""you'll like, you'll touch, you'll,""" start="00:22:44.280" video="mainVideo-weights" id="subtitle"]] +[[!template text="""you'll miss touch things a lot. Yeah.""" start="00:22:46.320" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Well, there's no font size""" start="00:22:48.280" video="mainVideo-weights" id="subtitle"]] +[[!template text="""large enough to make me, you know,""" start="00:22:50.160" video="mainVideo-weights" id="subtitle"]] +[[!template text="""to make me comfortable on a smart device, unfortunately.""" start="00:22:53.000" video="mainVideo-weights" id="subtitle"]] +[[!template text="""But, but that, I think it may be a me problem.""" start="00:22:58.160" video="mainVideo-weights" id="subtitle"]] +[[!template text="""I think this question we might've missed. So the file sync.""" start="00:23:00.600" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Yeah, so the file sync in terms of what's worked for me,""" start="00:23:04.440" video="mainVideo-weights" id="subtitle"]] +[[!template text="""I did have to play around with this a lot.""" start="00:23:12.680" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Let me go ahead and read it out.""" start="00:23:14.040" video="mainVideo-weights" id="subtitle"]] +[[!template text="""You mentioned file sync, what have you found works well for you?""" start="00:23:16.000" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Sorry. Yeah, yeah, yeah.""" start="00:23:18.520" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So in terms of what, yeah, I did have to play around with this a lot,""" start="00:23:21.320" video="mainVideo-weights" id="subtitle"]] +[[!template text="""but sync thing fork is what I eventually settled on.""" start="00:23:25.320" video="mainVideo-weights" id="subtitle"]] +[[!template text="""I mean, this is another thing that, I mean, I don't,""" start="00:23:28.640" video="mainVideo-weights" id="subtitle"]] +[[!template text="""it wouldn't nearly be as usable,""" start="00:23:34.960" video="mainVideo-weights" id="subtitle"]] +[[!template text="""like Emacs wouldn't be nearly usable without it.""" start="00:23:36.320" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So syncing fork essentially, okay.""" start="00:23:39.680" video="mainVideo-weights" id="subtitle"]] +[[!template text="""And then I also have like a droplet on DigitalOcean,""" start="00:23:41.320" video="mainVideo-weights" id="subtitle"]] +[[!template text="""just like, so that's kind of like the whole,""" start="00:23:44.560" video="mainVideo-weights" id="subtitle"]] +[[!template text="""that's kind of like what bridges it together.""" start="00:23:47.400" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So like, so my Emacs can sync to that,""" start="00:23:49.880" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and then my machine also syncs to that.""" start="00:23:52.520" video="mainVideo-weights" id="subtitle"]] +[[!template text="""And so like, I don't have to have them""" start="00:23:56.560" video="mainVideo-weights" id="subtitle"]] +[[!template text="""both on the same time. It's just there, that copy.""" start="00:24:00.720" video="mainVideo-weights" id="subtitle"]] +[[!template text="""And so that works pretty well.""" start="00:24:06.360" video="mainVideo-weights" id="subtitle"]] +[[!template text="""I also found that editing code in general,""" start="00:24:09.600" video="mainVideo-weights" id="subtitle"]] +[[!template text="""I think this also goes""" start="00:24:13.560" video="mainVideo-weights" id="subtitle"]] +[[!template text="""with the development experience question.""" start="00:24:15.360" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So I'm curious about the development experience.""" start="00:24:19.920" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Do you do everything on the phone? And that's the thing.""" start="00:24:22.640" video="mainVideo-weights" id="subtitle"]] +[[!template text="""None of my development in general is done on the phone.""" start="00:24:24.640" video="mainVideo-weights" id="subtitle"]] +[[!template text="""just because, for one, my muscle memory isn't there,""" start="00:24:27.120" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and two, just in general, typing on a virtual keyboard on the phone,""" start="00:24:32.440" video="mainVideo-weights" id="subtitle"]] +[[!template text="""it's just really slow.""" start="00:24:38.400" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So yeah, all the development is done on my machine,""" start="00:24:40.120" video="mainVideo-weights" id="subtitle"]] +[[!template text="""but then there's the problem of you have to have an init.l in your Android,""" start="00:24:47.160" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and so you're going to have to write, you know,""" start="00:24:52.120" video="mainVideo-weights" id="subtitle"]] +[[!template text="""I found like you'd have to like,""" start="00:24:55.160" video="mainVideo-weights" id="subtitle"]] +[[!template text="""when you first get Emacs set up,""" start="00:24:56.920" video="mainVideo-weights" id="subtitle"]] +[[!template text="""you might have to like write some, I don't know,""" start="00:24:58.280" video="mainVideo-weights" id="subtitle"]] +[[!template text="""like you'll kind of have to like get into your init file""" start="00:25:01.240" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and then just like,""" start="00:25:03.960" video="mainVideo-weights" id="subtitle"]] +[[!template text="""maybe just like start to put things together.""" start="00:25:04.480" video="mainVideo-weights" id="subtitle"]] +[[!template text="""But the cool thing is with SyncThinkFork,""" start="00:25:07.000" video="mainVideo-weights" id="subtitle"]] +[[!template text="""I'm syncing my, I'm setting it to load off of a sync directory.""" start="00:25:09.760" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Like this, this init file,""" start="00:25:15.520" video="mainVideo-weights" id="subtitle"]] +[[!template text="""my Android file is synced with my machine.""" start="00:25:18.560" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So if I wanted to, I could just edit it on my machine""" start="00:25:21.160" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and just have that synced automatically.""" start="00:25:24.320" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So that makes like the whole, like in it,""" start="00:25:25.880" video="mainVideo-weights" id="subtitle"]] +[[!template text="""cause like it's, it's such a, like, that is one of the,""" start="00:25:28.840" video="mainVideo-weights" id="subtitle"]] +[[!template text="""it's just like getting,""" start="00:25:31.880" video="mainVideo-weights" id="subtitle"]] +[[!template text="""sit writing your init L and M in Emacs on Android""" start="00:25:33.080" video="mainVideo-weights" id="subtitle"]] +[[!template text="""is just kind of a.""" start="00:25:36.880" video="mainVideo-weights" id="subtitle"]] +[[!template text="""We do have one more question.""" start="00:25:37.840" video="mainVideo-weights" id="subtitle"]] +[[!template text="""I can't help but throw in a comment there.""" start="00:25:39.360" video="mainVideo-weights" id="subtitle"]] +[[!template text="""I think that's like.""" start="00:25:41.480" video="mainVideo-weights" id="subtitle"]] +[[!template text="""That's an extremely good tip, right?""" start="00:25:43.760" video="mainVideo-weights" id="subtitle"]] +[[!template text="""That if we're, as we're exploring Android,""" start="00:25:47.520" video="mainVideo-weights" id="subtitle"]] +[[!template text="""we want to think about that as""" start="00:25:49.960" video="mainVideo-weights" id="subtitle"]] +[[!template text="""adding support for another port of Emacs.""" start="00:25:52.840" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So the whole dance of, oh, I took, you know,""" start="00:25:55.760" video="mainVideo-weights" id="subtitle"]] +[[!template text="""I took, you know, I took my init""" start="00:25:58.960" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and I wanted to use it on BSD""" start="00:26:01.240" video="mainVideo-weights" id="subtitle"]] +[[!template text="""after mostly using GNU Linux.""" start="00:26:04.480" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Now we're going in and we're looking at our Emacs.""" start="00:26:06.440" video="mainVideo-weights" id="subtitle"]] +[[!template text="""all of our Emacs and it stuff""" start="00:26:09.120" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and thinking about compatibility,""" start="00:26:11.280" video="mainVideo-weights" id="subtitle"]] +[[!template text="""turning features on and off""" start="00:26:13.840" video="mainVideo-weights" id="subtitle"]] +[[!template text="""based on the OS that we're running underneath and so on.""" start="00:26:15.200" video="mainVideo-weights" id="subtitle"]] +[[!template text="""I think that's pretty heads up advice.""" start="00:26:19.960" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Let me read out this other question.""" start="00:26:22.120" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Have you thought about integrating cardio tracking""" start="00:26:24.760" video="mainVideo-weights" id="subtitle"]] +[[!template text="""like time runs, bike rides, and so on?""" start="00:26:28.200" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Yes, I definitely thought about that.""" start="00:26:30.560" video="mainVideo-weights" id="subtitle"]] +[[!template text="""And that might be another thing""" start="00:26:34.320" video="mainVideo-weights" id="subtitle"]] +[[!template text="""where a touch interface might be helpful.""" start="00:26:36.600" video="mainVideo-weights" id="subtitle"]] +[[!template text="""I don't know if I can easily pull it up,""" start="00:26:38.480" video="mainVideo-weights" id="subtitle"]] +[[!template text="""but the app itself, oh yeah, here it is.""" start="00:26:41.560" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So you can see kind of how they have,""" start="00:26:47.200" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and you can kind of see how this fits.""" start="00:26:50.200" video="mainVideo-weights" id="subtitle"]] +[[!template text="""This is like an org, you can see""" start="00:26:53.280" video="mainVideo-weights" id="subtitle"]] +[[!template text="""that these are just tables, right?""" start="00:26:55.120" video="mainVideo-weights" id="subtitle"]] +[[!template text="""This is just like this whole interface in general,""" start="00:26:57.400" video="mainVideo-weights" id="subtitle"]] +[[!template text="""just like kind of screams like an org mode,""" start="00:26:59.240" video="mainVideo-weights" id="subtitle"]] +[[!template text="""file with you have you have your different headings""" start="00:27:02.280" video="mainVideo-weights" id="subtitle"]] +[[!template text="""like here's a warm-up heading""" start="00:27:05.120" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and then you have the tables""" start="00:27:06.560" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and you know you could just like envision""" start="00:27:07.840" video="mainVideo-weights" id="subtitle"]] +[[!template text="""how you could have a org table""" start="00:27:09.880" video="mainVideo-weights" id="subtitle"]] +[[!template text="""with one of the columns called time""" start="00:27:12.840" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and then you could just imagine like there'd be a button there""" start="00:27:15.040" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and you can just just have it click,""" start="00:27:18.440" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and then you'd have a timer in the background""" start="00:27:21.160" video="mainVideo-weights" id="subtitle"]] +[[!template text="""that would update this timer.""" start="00:27:24.280" video="mainVideo-weights" id="subtitle"]] +[[!template text="""It's so, I mean, conceptually, there's nothing really,""" start="00:27:25.800" video="mainVideo-weights" id="subtitle"]] +[[!template text="""it conceptually maps really well to this.""" start="00:27:32.600" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So yeah, I mean, that's definitely something.""" start="00:27:35.800" video="mainVideo-weights" id="subtitle"]] +[[!template text="""That's awesome. Great answer.""" start="00:27:41.560" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So I think we're just at about 90 seconds left.""" start="00:27:44.440" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Perfect amount of time, I think, to just wrap up.""" start="00:27:47.760" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Closing thoughts. I'll share mine first.""" start="00:27:50.120" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Really appreciate you, Zach.""" start="00:27:52.200" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Thank you for putting this talk together.""" start="00:27:53.760" video="mainVideo-weights" id="subtitle"]] +[[!template text="""I think this is the type of talk""" start="00:27:56.640" video="mainVideo-weights" id="subtitle"]] +[[!template text="""that's really going to tie the room together""" start="00:27:59.360" video="mainVideo-weights" id="subtitle"]] +[[!template text="""for people that may be, you know, not sure how they can take""" start="00:28:01.240" video="mainVideo-weights" id="subtitle"]] +[[!template text="""although they've been interested in that,""" start="00:28:07.560" video="mainVideo-weights" id="subtitle"]] +[[!template text="""this can be a really good way to kind of open up the world.""" start="00:28:12.720" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Thank you. Thank you for putting it together.""" start="00:28:16.400" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Yeah, yeah, yeah, yeah, I would just say""" start="00:28:20.320" video="mainVideo-weights" id="subtitle"]] +[[!template text="""like definitely just try things out.""" start="00:28:22.440" video="mainVideo-weights" id="subtitle"]] +[[!template text="""Like if you think, you know,""" start="00:28:24.160" video="mainVideo-weights" id="subtitle"]] +[[!template text="""they're just like random ideas,""" start="00:28:25.360" video="mainVideo-weights" id="subtitle"]] +[[!template text="""like a book tracking app or like a recipe app,""" start="00:28:26.440" video="mainVideo-weights" id="subtitle"]] +[[!template text="""like, you know, there's a lot of things""" start="00:28:30.320" video="mainVideo-weights" id="subtitle"]] +[[!template text="""that you do on your mobile device""" start="00:28:33.480" video="mainVideo-weights" id="subtitle"]] +[[!template text="""that aren't like banking apps that you could easily,""" start="00:28:35.600" video="mainVideo-weights" id="subtitle"]] +[[!template text="""that seem like they could be done in Emacs.""" start="00:28:37.720" video="mainVideo-weights" id="subtitle"]] +[[!template text="""So yeah, just try different things out""" start="00:28:39.760" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and I would love to hear what other people do. Bravo.""" start="00:28:42.480" video="mainVideo-weights" id="subtitle"]] +[[!template text="""I appreciate it once again, you're coming together""" start="00:28:47.240" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and especially you're doing it live.""" start="00:28:52.520" video="mainVideo-weights" id="subtitle"]] +[[!template text="""I know that as a conference, we have a lot of preference""" start="00:28:56.640" video="mainVideo-weights" id="subtitle"]] +[[!template text="""for those recorded talks""" start="00:29:00.080" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and getting the captioning together,""" start="00:29:01.480" video="mainVideo-weights" id="subtitle"]] +[[!template text="""but I just have a special place in my heart""" start="00:29:02.760" video="mainVideo-weights" id="subtitle"]] +[[!template text="""for the energy that comes with a live talk""" start="00:29:05.320" video="mainVideo-weights" id="subtitle"]] +[[!template text="""and I appreciate you doing it. Thanks for putting this on.""" start="00:29:07.680" video="mainVideo-weights" id="subtitle"]] + +</div>Questions or comments? Please e-mail [zacromero@posteo.com](mailto:zacromero@posteo.com?subject=Comment%20for%20EmacsConf%202023%20weights%3A%20Weightlifting%20tracking%20with%20Emacs%20on%20Android) <!-- End of emacsconf-publish-after-page --> diff --git a/2025/info/weights-before.md b/2025/info/weights-before.md index 134f24c3..6556f147 100644 --- a/2025/info/weights-before.md +++ b/2025/info/weights-before.md @@ -1,19 +1,13 @@ <!-- Automatically generated by emacsconf-publish-before-page --> - -The following image shows where the talk is in the schedule for Sun 2025-12-07. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="weights"> -<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2025/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:10 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2025/talks/modern" title="Some problems of modernizing Emacs" data-slug="modern"> <title> 9:10- 9:30 Some problems of modernizing Emacs</title> <rect x="13" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(38,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> modern</text></g></a> <a href="/2025/talks/reader" title="An introduction to the Emacs Reader" data-slug="reader"> <title> 9:40-10:15 An introduction to the Emacs Reader</title> <rect x="54" y="15" opacity="0.5" width="48" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(100,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> reader</text></g></a> <a href="/2025/talks/weights" title="Weightlifting tracking with Emacs on Android" data-slug="weights"> <title> 10:35-10:45 Weightlifting tracking with Emacs on Android</title> <rect stroke-width="3" x="130" y="15" opacity="0.8" width="13" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(141,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> weights</text></g></a> <a href="/2025/talks/completion" title="corfu+yasnippet: Easier than I thought" data-slug="completion"> <title> 11:05-11:25 corfu+yasnippet: Easier than I thought</title> <rect x="171" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(196,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> completion</text></g></a> <a href="/2025/talks/zettelkasten" title="Zettelkasten for regular Emacs hackers" data-slug="zettelkasten"> <title> 1:00- 1:25 Zettelkasten for regular Emacs hackers</title> <rect x="329" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(361,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> zettelkasten</text></g></a> <a href="/2025/talks/hyperboleqa" title="Questions and answers to help you fly with Hyperbole" data-slug="hyperboleqa"> <title> 1:45- 2:15 Questions and answers to help you fly with Hyperbole</title> <rect x="391" y="15" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(430,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperboleqa</text></g></a> <a href="/2025/talks/gardening" title="Gardening in Emacs: A Windows user's tale of tending, tweaking, and triumph" data-slug="gardening"> <title> 2:15- 2:35 Gardening in Emacs: A Windows user's tale of tending, tweaking, and triumph</title> <rect x="432" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(457,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gardening</text></g></a> <a href="/2025/talks/bookclub-tapas" title="Bookclub tapas" data-slug="bookclub-tapas"> <title> 2:45- 3:20 Bookclub tapas</title> <rect x="473" y="15" opacity="0.5" width="48" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(519,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> bookclub-tapas</text></g></a> <a href="/2025/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 3:40- 3:50 Sunday closing remarks</title> <rect x="549" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(560,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <g transform="translate(0,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 5 PM</text></g></svg> -</div> - [[!toc ]] -Format: 10-min talk ; Q&A: BigBlueButton conference room <https://media.emacsconf.org/2025/current/bbb-weights.html> Etherpad: <https://pad.emacsconf.org/2025-weights> +Format: 31-min talk ; Q&A: BigBlueButton conference room Etherpad: <https://pad.emacsconf.org/2025-weights> Etherpad: <https://pad.emacsconf.org/2025-weights> -Discuss on IRC: [#emacsconf-gen](https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen) -Status: Q&A open for participation -<div>Times in different time zones:</div><div class="times" start="2025-12-07T15:35:00Z" end="2025-12-07T15:45:00Z"><div class="conf-time">Sunday, Dec 7 2025, ~10:35 AM - 10:45 AM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Sunday, Dec 7 2025, ~9:35 AM - 9:45 AM CST (US/Central)<br />Sunday, Dec 7 2025, ~8:35 AM - 8:45 AM MST (US/Mountain)<br />Sunday, Dec 7 2025, ~7:35 AM - 7:45 AM PST (US/Pacific)<br />Sunday, Dec 7 2025, ~3:35 PM - 3:45 PM UTC <br />Sunday, Dec 7 2025, ~4:35 PM - 4:45 PM CET (Europe/Paris)<br />Sunday, Dec 7 2025, ~5:35 PM - 5:45 PM EET (Europe/Athens)<br />Sunday, Dec 7 2025, ~9:05 PM - 9:15 PM IST (Asia/Kolkata)<br />Sunday, Dec 7 2025, ~11:35 PM - 11:45 PM +08 (Asia/Singapore)<br />Monday, Dec 8 2025, ~12:35 AM - 12:45 AM JST (Asia/Tokyo)</div></div><div><strong><a href="/2025/watch/gen/">Find out how to watch and participate</a></strong></div> +Status: TO_REVIEW_QA + -<div class="vid mainVideo"><div></div><div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-weights">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/current/bbb-weights.html">Open public Q&A</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-weights--weightlifting-tracking-with-emacs-on-android--zachary-romero--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-weights--weightlifting-tracking-with-emacs-on-android--zachary-romero--intro.webm">Download --intro.webm</a></li></ul></div></div> +<div class="vid mainVideo"><video controls preload="none" id="mainVideo-weights"><source src="https://media.emacsconf.org/2025/emacsconf-2025-weights--weightlifting-tracking-with-emacs-on-android--zachary-romero--original.m4v" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-weights--weightlifting-tracking-with-emacs-on-android--zachary-romero--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 30:05 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-weights">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-weights--weightlifting-tracking-with-emacs-on-android--zachary-romero--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-weights--weightlifting-tracking-with-emacs-on-android--zachary-romero--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-weights--weightlifting-tracking-with-emacs-on-android--zachary-romero--main.opus">Download --main.opus</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-weights--weightlifting-tracking-with-emacs-on-android--zachary-romero--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-weights--weightlifting-tracking-with-emacs-on-android--zachary-romero--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-weights--weightlifting-tracking-with-emacs-on-android--zachary-romero--main.webm">Download --main.webm (106MB)</a></li><li><a href="https://youtu.be/0fwZtg-7wKE">View on Youtube</a></li></ul></div></div> # Description <!-- End of emacsconf-publish-before-page -->
\ No newline at end of file diff --git a/2025/info/weights-nav.md b/2025/info/weights-nav.md index 3984baec..21a106a1 100644 --- a/2025/info/weights-nav.md +++ b/2025/info/weights-nav.md @@ -1,7 +1,7 @@ <div class="talk-nav"> Back to the [[talks]] -Previous by time: <a href="/2025/talks/reader">An introduction to the Emacs Reader</a> -Next by time: <a href="/2025/talks/completion">corfu+yasnippet: Easier than I thought</a> -Track: <span class="sched-track General">General</span> - <strong><a href="https://emacsconf.org/2025/watch/gen">Watch</a></strong> +Previous by track: <a href="/2025/talks/reader">An introduction to the Emacs Reader</a> +Next by track: <a href="/2025/talks/completion">corfu+yasnippet: Easier than I thought</a> +Track: <span class="sched-track General">General</span> </div> diff --git a/2025/info/zettelkasten-after.md b/2025/info/zettelkasten-after.md index d7556a30..e7dec77c 100644 --- a/2025/info/zettelkasten-after.md +++ b/2025/info/zettelkasten-after.md @@ -510,7 +510,1336 @@ Captioner: sachac -Questions or comments? Please e-mail [hi@christiantietze.de](mailto:hi@christiantietze.de?subject=Comment%20for%20EmacsConf%202023%20zettelkasten%3A%20Zettelkasten%20for%20regular%20Emacs%20hackers) +<div class="transcript transcript-qanda"><a name="zettelkasten-qanda-transcript"></a><h1>Q&A transcript (unedited)</h1> + +[[!template text="""Yes. All right. Take it away. Thank you, Christian. Thank you, too.""" start="00:00:00.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""If you could have the pad open at the same time,""" start="00:00:07.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""you can read the questions.""" start="00:00:09.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Or I can start reading some to you while I'm here.""" start="00:00:11.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Oh, no. I can read them.""" start="00:00:13.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I was wondering whether I should maybe copy them into a new buffer.""" start="00:00:14.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""So they are also on screen. Increase the font size a bit.""" start="00:00:21.600" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""So I'm trying to do this on the fly.""" start="00:00:30.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Maybe a bad idea. Let's see.""" start="00:00:39.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Of course, you're going to capture it""" start="00:00:41.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""into your Zettelkasten then. Is that what's happening?""" start="00:00:42.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Well, I can start you off.""" start="00:00:45.880" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""The first question is, I wonder what they use for the fancy animations.""" start="00:00:49.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I was thinking about this because that's the first question""" start="00:00:56.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and I was thinking about this""" start="00:00:59.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""while I copied this stuff over.""" start="00:01:00.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""What part is the fancy part?""" start="00:01:02.600" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I can recommend books, like if anyone wants to have book recommendations""" start="00:01:09.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""for how to make presentations with PowerPoint-like software""" start="00:01:13.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""in a very simple way, we taught this at university.""" start="00:01:18.040" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""was it now, some 15 years ago,""" start="00:01:23.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""to students to make animation abuse""" start="00:01:25.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""where everything was flashy and typed in or something.""" start="00:01:28.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Don't do this, but instead do a couple of very simple tasteful things""" start="00:01:32.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""like fading through colors like filmmakers do, right?""" start="00:01:36.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Fading through black to make a scene cut""" start="00:01:41.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""or just fade between things, the fanciness.""" start="00:01:44.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Presentation software stack, the fanciness.""" start="00:01:47.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I didn't dial fanciness up,""" start="00:01:53.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I just resorted to a very simple fade animations,""" start="00:01:55.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""like fading stuff in and wipe, I think, for text effects.""" start="00:02:00.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""That was it, more or less.""" start="00:02:04.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And for the lines, maybe the lines are fancy.""" start="00:02:06.880" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I was using Apple Keynote because I'm fastest with that,""" start="00:02:09.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but I also usually, we taught this workshop with PowerPoint""" start="00:02:14.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and I think the LibreOffice stack got much better with that""" start="00:02:19.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""as well in the recent years,""" start="00:02:23.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but I haven't tried that in a long time""" start="00:02:24.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""to like fiddle around and find all the knobs to dial.""" start="00:02:26.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Because the Apple presentation thingy has this nice feature""" start="00:02:31.600" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""where you draw an arrow with a tip,""" start="00:02:34.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and then you have a special animation for line drawing,""" start="00:02:37.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""which is only available for line art.""" start="00:02:41.040" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And then it draws the arrow that moves around like that.""" start="00:02:42.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""So yeah, presentation stack, Apple Keynote,""" start="00:02:45.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""probably not of interest for anyone here.""" start="00:02:48.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I usually don't use plain text presentation stuff, right?""" start="00:02:52.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""So I tried this, I tried this with markdown presentations,""" start="00:02:56.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""slidey things, org presentation.""" start="00:03:03.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""It's always not enough control for the fiddly things""" start="00:03:08.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""that I'm interested in to make the experience great.""" start="00:03:12.880" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""So I wonder what are the fancy animations.""" start="00:03:17.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And the stack, the stack is Apple Keynote, sorry.""" start="00:03:20.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Okay, that's enough. Thank you for capturing.""" start="00:03:25.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Are you not a fan? Okay. You saw this in the recording.""" start="00:03:30.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Why on earth is autofill mode not enabled? I don't know.""" start="00:03:37.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I thought it is the default, but apparently it isn't.""" start="00:03:43.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I could also use visual line mode.""" start="00:03:48.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""It's built in as well, right? Visual line mode.""" start="00:03:52.040" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""It's so weird to be in this vanilla setup""" start="00:03:55.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and not have all my key bindings""" start="00:03:58.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and my normal stuff ready, so.""" start="00:04:00.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I am not a fan of using asterisk headings in org mode.""" start="00:04:04.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""It's interesting to see how people have different styles of writing org content.""" start="00:04:08.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Am I not? What exactly? What did I do?""" start="00:04:12.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And nodes, just open one of these.""" start="00:04:22.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Okay. I could see how you could, in examples like this,""" start="00:04:25.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""use org-mode to read-only.""" start="00:04:33.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Why? How you could use org-mode to use headings for this,""" start="00:04:36.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""because it's an outliner first and foremost,""" start="00:04:44.600" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""so outlining is very natural.""" start="00:04:48.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""But when I do in my personal setup,""" start="00:04:50.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I also have this what's called start indentation thingy.""" start="00:04:53.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""enabled, so that means that everything""" start="00:04:58.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""would be indented one level from the start.""" start="00:05:01.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""So I would probably fiddle around""" start="00:05:04.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""with that to not get like crazy.""" start="00:05:05.600" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""But also, I don't see, I don't see,""" start="00:05:07.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""like really see when I look at this,""" start="00:05:12.040" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I didn't see a potential to create subheadings,""" start="00:05:13.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I mean, or even headings.""" start="00:05:17.880" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""The only heading here is the title,""" start="00:05:19.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""like in my perception of this node,""" start="00:05:21.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and it's one, It's two lists.""" start="00:05:24.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""You could group these in headings.""" start="00:05:27.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I didn't. That's right. Where's another one?""" start="00:05:28.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I opened the autosave file because I'm stupid.""" start="00:05:40.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""OK. So this one could also be probably subdivided.""" start="00:05:42.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""But I'm also not sure.""" start="00:05:46.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I'm also not sure if I would gain anything structurally""" start="00:05:48.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""if I do it like this because then I'm in a structural level""" start="00:05:52.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and the stuff that just flows naturally""" start="00:05:55.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""as a sequence of text paragraphs,""" start="00:05:58.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""this here, it's not disconnected.""" start="00:06:01.040" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""It wasn't meant to be under organism""" start="00:06:07.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and I need to create a new same level thing""" start="00:06:10.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""to say, hey, these are, I don't know, details or whatever.""" start="00:06:16.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""So that's maybe the real reason.""" start="00:06:23.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I'm fine with writing snippets that are self-contained""" start="00:06:26.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and essentially one or two or three or five or whatever,""" start="00:06:28.880" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""how many paragraphs,""" start="00:06:31.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but it's not like, it's always an outline form.""" start="00:06:32.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""So I don't resort to this.""" start="00:06:36.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""My onSettle custom is usually written in Markdown.""" start="00:06:38.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""So I use subheadings for actual headings""" start="00:06:41.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""to subdivide like I would subdivide an essay""" start="00:06:44.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""or an article, blog post.""" start="00:06:47.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""But that's the mode of writing that I'm in here.""" start="00:06:49.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""It's like blog post writing.""" start="00:06:52.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I wouldn't start with four headings for this.""" start="00:06:54.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""So I'm not doing that. That's a thing.""" start="00:06:56.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Okay, I guess I'm going to read the questions,""" start="00:06:58.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but I'm going to stop copying them in because I lose time.""" start="00:07:04.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I want to reply to you, folks.""" start="00:07:07.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Didn't see a need for a rack constructor.""" start="00:07:09.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Thank you for capturing this. Next question.""" start="00:07:11.480" video="qanda-zettelkasten" id="subtitle"]] + +<div class="transcript-heading">[[!template new="1" text="""Can you use org files and all its features inside Denote?""" start="00:07:13.720" video="qanda-zettelkasten" id="subtitle"]]</div>[[!template text="""Can you use org files and all its features inside Denote?""" start="00:07:13.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Yes. Like this is, this is an org file""" start="00:07:17.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and Denote uses org headings instead of,""" start="00:07:22.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""with Markdown, you get YAML front meta.""" start="00:07:25.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And with org, you get these attributes,""" start="00:07:28.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""value attribute thingies""" start="00:07:32.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""that are then the metadata for the node.""" start="00:07:36.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""So yeah, the answer is yes. You get everything and on top,""" start="00:07:40.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""a small layer of a link, link management.""" start="00:07:45.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""That's all there is.""" start="00:07:48.160" video="qanda-zettelkasten" id="subtitle"]] + +<div class="transcript-heading">[[!template new="1" text="""Where or how do you like to capture fleeting notes?""" start="00:07:49.000" video="qanda-zettelkasten" id="subtitle"]]</div>[[!template text="""Next question is, where or how do you like to capture fleeting notes?""" start="00:07:49.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Oh, fleeting notes. If you say fleeting notes,""" start="00:07:55.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""you also need to say non-fleeting notes""" start="00:07:58.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and figure out what these are.""" start="00:08:01.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And when you say non-fleeting notes,""" start="00:08:02.400" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and fleeting notes exist, because it's a distinction,""" start="00:08:05.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and there's something on both sides of this distinction.""" start="00:08:07.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""If you say there's a distinction, there are two sides,""" start="00:08:10.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""maybe you want to subdivide the non-fleeting notes further,""" start="00:08:12.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""because, well, it's a non-fleeting note""" start="00:08:14.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""isn't very descriptive. So what else do you say there?""" start="00:08:16.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And people have said a couple of things""" start="00:08:21.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""to define non-fleeting nodes, for example, permanent nodes.""" start="00:08:24.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I guess that's a Sonke Ahrens,""" start="00:08:28.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""permanent nodes is the most popular.""" start="00:08:33.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Let's stay with that, stick with that.""" start="00:08:35.040" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""So if you have permanent nodes and fleeting nodes,""" start="00:08:36.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""now we have two types of nodes. The thing is, in books,""" start="00:08:38.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""the only, when we would talk about note-taking""" start="00:08:41.600" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and you would ask me, hey Christian,""" start="00:08:46.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""how do you take fleeting notes?""" start="00:08:47.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I imagine the discussion would be in German""" start="00:08:49.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""because that's how people usually talk to me.""" start="00:08:53.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I would pull out a book,""" start="00:08:55.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""this is Object-Oriented Software Engineering,""" start="00:08:56.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""interesting book by Iva Jacobson or Iva, Iva,""" start="00:08:59.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I'm not sure because, you know,""" start="00:09:03.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""it's an English or American person.""" start="00:09:06.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And inside I have these fleeting notes like these""" start="00:09:08.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""are actual paper notes square what are these three by something inch""" start="00:09:14.420" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""American standard size I guess""" start="00:09:18.880" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and A6 minus the tariff part""" start="00:09:21.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""from from another notepad these are notes i took engagement notes""" start="00:09:24.040" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""if you will like engagement notes""" start="00:09:29.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""because the margins of the book don't suffice to take""" start="00:09:32.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and this is related to i need more space so this is more space""" start="00:09:35.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""these are fleeting""" start="00:09:38.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and as you see I have them in my pile of books""" start="00:09:41.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""right next to me in the shelf""" start="00:09:45.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and folded them in this piece of paper,""" start="00:09:46.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""labeled it with the author because I lost them.""" start="00:09:52.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""couple of times they just fell out""" start="00:09:54.880" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""when I reached for the book""" start="00:09:57.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and this is an envelope I shove it into the book""" start="00:09:58.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and then forget about processing the book again""" start="00:10:01.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""for five or ten years. So what do I do with fleeting notes?""" start="00:10:04.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I do fleeting notes on paper or if I'm using an e-reader""" start="00:10:08.600" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""maybe with an e-reader software annotation tool""" start="00:10:12.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but fleeting in the most like simple non contrived sense,""" start="00:10:14.880" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""fleeting notes are meant as engagement notes""" start="00:10:21.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and then you do something with them""" start="00:10:23.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""or like I just showed you,""" start="00:10:26.040" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""you don't because life's short, right?""" start="00:10:27.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Time runs out, then you need to forget,""" start="00:10:29.880" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""then you need to remember""" start="00:10:31.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""how to restructure everything in your head""" start="00:10:33.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""to make sense of the notes again""" start="00:10:36.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""because they were fleeting,""" start="00:10:37.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""they were just little scribbles and it's""" start="00:10:38.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""It's basically ballast or waste.""" start="00:10:41.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I'm just carrying this with me for years""" start="00:10:44.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and maybe never get around to using these.""" start="00:10:46.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""But also, I put stuff on there, maybe I do.""" start="00:10:50.880" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""It doesn't hurt to keep them in there.""" start="00:10:53.400" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""It's just an odd collector's habit I can't get rid of.""" start="00:10:55.400" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""fleeting notes, I just capture them wherever""" start="00:10:58.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and then either I process them or try to throw them away""" start="00:11:03.400" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""or forget about them""" start="00:11:05.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""because they're in some inbox file on a smartphone""" start="00:11:07.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and then, you know, they might as well not exist,""" start="00:11:10.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""they're just there to engage me during the reading""" start="00:11:13.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and if I don't process them in time,""" start="00:11:15.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""meh like, chance is up, it sucks""" start="00:11:17.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Next question, like fleeting notes, permanent notes.""" start="00:11:22.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I'm not going to talk about these""" start="00:11:26.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""unless someone asks a question.""" start="00:11:27.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Zettelkasten feels like a very cagey approach""" start="00:11:29.040" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""to note-taking and knowledge management.""" start="00:11:32.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Doesn't it restrict one to think in certain ways""" start="00:11:34.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""rather than what feels natural to someone?""" start="00:11:36.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Well, yes, but so does wearing underwear, right?""" start="00:11:38.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""A bit of personal revelation.""" start="00:11:45.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""When I'm working from home, I'm wearing pants.""" start="00:11:50.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""You don't see them, but I don't need to.""" start="00:11:54.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""But I'm also kind of self-restricting myself in a way""" start="00:11:57.040" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""because there's a window,""" start="00:12:00.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""it's dark outside, and I'm well lit.""" start="00:12:01.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And if I just stand up and have no pants on,""" start="00:12:03.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I don't care that much what the neighbors like 10, 20 meters across think.""" start="00:12:05.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""your mileage may vary then, right?""" start="00:12:12.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""So there are restrictions that make sense""" start="00:12:15.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""to get to some point in your day-to-day life.""" start="00:12:18.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And in the case of Zettelkasten,""" start="00:12:24.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I try to tell people the shortest story possible""" start="00:12:26.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""to convey a story there, but also not to cage them in""" start="00:12:31.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""with 20 definitions of different notes.""" start="00:12:36.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Because all that matters is try to move your thinking""" start="00:12:38.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""into an environment where you can write,""" start="00:12:42.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""where you feel comfortable writing,""" start="00:12:44.040" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and where you can keep this stuff.""" start="00:12:45.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Because I do feel comfortable with a pencil and paper.""" start="00:12:47.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""But what I just showed you, this might as well never have happened.""" start="00:12:50.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Something has changed in my brain.""" start="00:12:54.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""most likely, when I engaged with a book like this.""" start="00:12:56.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""As far as publications and writing is concerned,""" start="00:13:01.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""this might as well not exist in my life,""" start="00:13:04.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""because I didn't do something with it.""" start="00:13:06.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I mean, I was reading the book probably on a commute back then, on the train.""" start="00:13:10.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I didn't take notes on the computer right away.""" start="00:13:15.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""So if you feel caged in,""" start="00:13:18.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""that may be a sign that you went too far on the,""" start="00:13:20.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I need to do this, I need to do that stage,""" start="00:13:24.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and lose some of the playfulness.""" start="00:13:26.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""There needs to be playfulness""" start="00:13:28.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""inside of the whole procedure, otherwise it...""" start="00:13:29.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""If you don't enjoy doing it, you won't be doing it.""" start="00:13:32.600" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And if you don't do it, then you don't get a benefit.""" start="00:13:37.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And it's just another chore in your life.""" start="00:13:39.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Then rather not do it.""" start="00:13:41.040" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""So try to avoid the feeling of caginess""" start="00:13:42.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and do whatever you want with it""" start="00:13:46.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""as long as you try to give your best.""" start="00:13:49.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""That's the cage that you will benefit from""" start="00:13:52.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""like really trying maybe not trying hard""" start="00:13:55.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but trying in earnest to produce""" start="00:13:58.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""something that you can read in a year in a week whatever""" start="00:14:02.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and then make sense of it like that's that's that's the minimum bar and the rest""" start="00:14:05.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""If you find yourself writing for hours on end,""" start="00:14:10.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""during the nights, during the weekends,""" start="00:14:13.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""whatever, and can't stop,""" start="00:14:15.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""then you can tackle more of the prescriptions, let's say.""" start="00:14:17.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""But everything I showed to you""" start="00:14:21.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""was there are three essential things,""" start="00:14:22.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and the rest is just add-ons.""" start="00:14:24.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Add-ons to inspire you to think in certain ways,""" start="00:14:26.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but you don't have to do them. You can scratch all of this.""" start="00:14:28.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""You just need to write to think,""" start="00:14:31.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and then you need to connect""" start="00:14:33.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""to make the thinking happen in an organic way.""" start="00:14:35.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Otherwise, you get a storage that's very hard to navigate""" start="00:14:37.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and doesn't grow well. Thanks. Yeah, you're welcome.""" start="00:14:40.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I'm not writing another show. Yeah. Oh, combine the forums.""" start="00:14:46.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Like it's a Zettelkasten anonymous group there.""" start="00:14:51.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Like everyone's struggling.""" start="00:14:54.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Everyone's struggling and it's okay to like,""" start="00:14:56.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I'm feeling like stuck at this and that.""" start="00:14:58.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And then other people will be able to relate.""" start="00:15:01.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I can promise. How does it denote, question mark maybe,""" start="00:15:03.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""compared to org-roam?""" start="00:15:10.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Roam research was setting a new trend of connectiveness""" start="00:15:11.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""because you could create recursive structures with links""" start="00:15:18.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and everything is linkable.""" start="00:15:21.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And it's like you put every sentence in its own org heading""" start="00:15:22.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and then link to all the headings possibly""" start="00:15:25.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and then transpile them so you can expand in place""" start="00:15:27.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""where you would link to.""" start="00:15:31.040" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I think this was the approach at least.""" start="00:15:32.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""So this was a very interesting transclusion, not transpile.""" start="00:15:34.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Transclude the contents, like move them in right then and there""" start="00:15:38.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and not navigate to another page. It was interesting.""" start="00:15:41.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""It never made sense for me""" start="00:15:45.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""when people told their stories of how they used it.""" start="00:15:47.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I guess you can use this tool for a lot of purposes,""" start="00:15:50.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but the prevailing story of the Rome style note-taking tools""" start="00:15:53.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""was like, just dump everything in it.""" start="00:15:59.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And garbage in, garbage out still holds.""" start="00:16:01.880" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I do keep my personal journal away""" start="00:16:04.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""from my Zettelkasten nowadays""" start="00:16:07.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""because I want to not restrict myself""" start="00:16:10.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""when I feel the urge to journal,""" start="00:16:12.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""when I want to capture something that, for example, my 15-month-old baby daughter does.""" start="00:16:14.400" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Like, first time she pulled a chair""" start="00:16:18.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""out of another room to the next room""" start="00:16:21.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""just to create a ladder to then climb onto another thing.""" start="00:16:22.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""It just was, okay, this is now the time""" start="00:16:25.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""to take note of this. in her life, like you were this""" start="00:16:27.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and that many months old when you did this.""" start="00:16:30.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""So we have some reference parts. And I could put this kind""" start="00:16:33.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""of factual information, et cetera, custom,""" start="00:16:35.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but also, like, what if I have a toothache or whatever,""" start="00:16:37.400" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and just want to gather data for whatever reason?""" start="00:16:42.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I don't know. Like this kind of personal stuff.""" start="00:16:47.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""That's too much of the non-useful stuff""" start="00:16:52.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""in a tool that I want to use to think.""" start="00:16:55.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I do see the appeal there.""" start="00:16:58.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""But anyway, the org-roam, like that's a roam part.""" start="00:17:00.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""You can watch a lot of videos""" start="00:17:04.040" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""on that to get a feel for this.""" start="00:17:05.880" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Org-roam adopted this to make the connection easier""" start="00:17:07.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and replicate features. As I said, porting tools""" start="00:17:10.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""that exist into Emacs, very nice pastime.""" start="00:17:13.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""A lot of people do this for a lot of things,""" start="00:17:16.400" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but it's not a thinking environment.""" start="00:17:18.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""It's just another tool to take notes in""" start="00:17:20.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""that behave weirdly with links or interestingly with links.""" start="00:17:22.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And Denote does do even less.""" start="00:17:25.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""It only offers you a couple of shortcuts""" start="00:17:29.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""to help you find files quickly.""" start="00:17:31.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""It does, like you see in the bottom here in the mode line,""" start="00:17:33.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""it does just show square brackets D""" start="00:17:37.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""instead of the whole ID, which would be rather long.""" start="00:17:40.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""So you have a buffer list that is bearable and works.""" start="00:17:44.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""You can read this and find the title quickly.""" start="00:17:48.400" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Things like that, Denote does things like that.""" start="00:17:51.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Oh, I closed the wrong.""" start="00:17:56.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Denote does things like that very well,""" start="00:17:58.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but it gets out of your way otherwise.""" start="00:18:00.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Just a couple of conventions""" start="00:18:02.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""to get stuff into your file system.""" start="00:18:04.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I'm not sure if Org-Roam now,""" start="00:18:06.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""what's the current state there?""" start="00:18:08.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Do they do ID generation out of the box?""" start="00:18:11.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Is there a standard popular convention or whatever?""" start="00:18:13.400" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""not sure, didn't follow,""" start="00:18:18.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but I'm very happy that org-roam still exists""" start="00:18:19.880" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""because I think porting tools into emacs is very cool,""" start="00:18:21.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I guess next question,""" start="00:18:25.040" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I noticed that the wikipedia link you wrote""" start="00:18:27.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""was typed wrongly, oh no garbage in, garbage out,""" start="00:18:31.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I think garbage in, garbage out, garbage well spotted""" start="00:18:40.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""how do you do that oh I typed it""" start="00:18:45.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I typed it from yeah right i didn't""" start="00:18:47.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""i didn't paste this right yeah yeah""" start="00:18:50.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""this janitorial tasks that's the umbrella term""" start="00:18:53.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""how do you deal with this""" start="00:18:55.880" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""like if you put stuff like this into into your notes""" start="00:18:56.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""you hopefully get a 404 code from wikipedia""" start="00:18:59.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""because the page doesn't exist""" start="00:19:05.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""let's not check um you get a 404 and then you could write a tool""" start="00:19:07.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""that checks all the links periodically""" start="00:19:12.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and tells you about broken links like a broken link checker""" start="00:19:13.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""that then looks up maybe automatically""" start="00:19:17.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""the last good version on archive.org""" start="00:19:19.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and then the Wayback Machine""" start="00:19:21.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and then corrects the link with the archived version""" start="00:19:23.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""because the live one is gone like this happens all the time on the internet""" start="00:19:26.880" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and even if you don't mistype""" start="00:19:30.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""you could you know things go out of out of order so""" start="00:19:31.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""What do you do with that? You need to automate this.""" start="00:19:35.880" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I'm not clicking every link manually.""" start="00:19:42.600" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I have like, what's it now, 11,000 notes or something.""" start="00:19:45.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""This is not a thing that humans are good at.""" start="00:19:49.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I'm not good at this.""" start="00:19:52.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I will never finish anything else if I do this manually.""" start="00:19:52.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""So write a tool, write a script,""" start="00:19:55.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""get a script from the interwebs.""" start="00:19:57.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""There are tools like this plenty that can do it.""" start="00:19:58.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And then you just need to do the wiring.""" start="00:20:01.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and that should help.""" start="00:20:06.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""You could automate this in Emacs, of course, right?""" start="00:20:07.600" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""For every file in my node directory,""" start="00:20:09.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""look if there's a link inside""" start="00:20:12.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and then check the URL or whatever.""" start="00:20:14.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Also works for inter-node connections.""" start="00:20:16.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""This could also break if you rename files or remove files""" start="00:20:18.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and don't use a denote function,""" start="00:20:21.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""which I believe takes care of backlinks and forward links""" start="00:20:23.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and keeps them organized.""" start="00:20:26.880" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""If you do this manually on another device,""" start="00:20:28.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""out of denote, out of Emacs, in Vim, I don't know, then yeah, mistakes happen""" start="00:20:31.400" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and you need to deal with mistakes""" start="00:20:38.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and heal and create scar tissue there in some way""" start="00:20:39.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""so write janitorial tools to do that it's also,""" start="00:20:44.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""i'm mentioning the term janitorial tools""" start="00:20:48.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""a couple of times now""" start="00:20:50.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""because that's the term that we in the forums at least""" start="00:20:51.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""usually talk about things like find orphaned notes,""" start="00:20:55.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""notes that no one links to find broken links,""" start="00:20:58.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""clean up references reformat nodes, stuff like this.""" start="00:21:02.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Find large nodes and then suggest them""" start="00:21:07.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""to the user to break them up.""" start="00:21:10.040" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Like these are tasks that you can do mechanically,""" start="00:21:11.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but also it's better if you use a tool to get started,""" start="00:21:14.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""otherwise you waste a lot of time.""" start="00:21:21.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Next question, when I complete, next long question.""" start="00:21:27.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I'm going to copy this over because maybe""" start="00:21:35.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""When I completely reworked my configs from two years ago,""" start="00:21:39.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I also tried some of these packages for making nodes,""" start="00:21:42.400" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but none of them actually fit my purpose,""" start="00:21:44.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""because I do not like the idea of splitting up my ideas.""" start="00:21:47.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I'm writing prose.""" start="00:21:51.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I collect material, reading lists, and so on""" start="00:21:53.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""in just one big file. Everything fits in.""" start="00:21:55.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""In this notebook file, I do archiving from time to time.""" start="00:21:57.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I search these files in Finder""" start="00:22:00.880" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""to find old notes I would like to go back to.""" start="00:22:02.400" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""So if I write a paper,""" start="00:22:04.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""it's basically an extract from my old notes""" start="00:22:06.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""that only have one structure.""" start="00:22:09.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""when I took them time structures my thought and my notes""" start="00:22:13.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but they would get lost if I split them up in a network""" start="00:22:17.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""like structure like a wiki etc custom my two cents""" start="00:22:20.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""by the way I work on legal sociological topics""" start="00:22:22.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""i'm a lawyer by training you know Luhmann was a german german style""" start="00:22:32.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""weird sociologist""" start="00:22:37.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and sociology studies are like the first four semesters at university,""" start="00:22:41.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""where a lot of, I don't know any of the terms in English,""" start="00:22:44.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""a lot of these things were theories""" start="00:22:48.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""in the loosest and broadest sense.""" start="00:22:51.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Some were just models of how things might behave,""" start="00:22:53.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but nobody knew because they were not empirically backed.""" start="00:22:55.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Some were empirically backed,""" start="00:22:58.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and then also there was some sense making.""" start="00:23:00.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And then also in sociology,""" start="00:23:01.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""you have some structure analysis of,""" start="00:23:03.600" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""like demographics and things like that.""" start="00:23:09.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""So very, very hard fact and statistics heavy things.""" start="00:23:11.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""So broad topic. And there's a lot of interconnections.""" start="00:23:15.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I can see the approach here.""" start="00:23:20.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I'm not going to defend Zettelkasten""" start="00:23:22.600" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""so that you in the end become a Zettelkasten aficionado""" start="00:23:25.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""or whatever I mean, if it works, fine, more power to you like""" start="00:23:30.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""reminds me of Twyla Tharp's like the shoebox approach""" start="00:23:33.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""or whatever it was called""" start="00:23:37.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""where she just dumped everything inside""" start="00:23:39.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""for her next project like an idea box,""" start="00:23:41.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""like real physical things like oh, I want to, I don't know,""" start="00:23:44.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""like this weird 8-bit do controller inside""" start="00:23:47.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and then eventually she would spread out everything she collected,""" start="00:23:50.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""newspaper clippings and I don't know, maybe toenails or some weird stuff,""" start="00:23:54.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I don't know what she actually put there""" start="00:23:59.600" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and then make sense of this""" start="00:24:01.880" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and think of something of putting these sorted pieces into context""" start="00:24:03.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and if you just dump stuff into a notebook file""" start="00:24:08.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and then rework the stuff, yeah, fine""" start="00:24:12.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""One answer is Zettelkasten is great for mathematics.""" start="00:24:20.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Or maybe you can have... Oh, next question.""" start="00:24:22.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Sorry, I jumped. So my answer is, this was not a question,""" start="00:24:25.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and I'm happy for you. So that's still an answer.""" start="00:24:31.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Next question. How Zettelkasten is useful""" start="00:24:34.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""for highly mathematical STEM academic fields""" start="00:24:38.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""like computer science or engineering fields,""" start="00:24:42.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""like when studying a STEM field?""" start="00:24:44.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I need to unpack the acronym again maybe for the audience.""" start="00:24:48.880" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""M is mathematics. Engineering is E.""" start="00:24:53.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Science and tech, tech, techno,""" start="00:24:58.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I don't know, maybe technical. I could look this up, right?""" start="00:25:02.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""STEM, what was STEM again? I'm doing a bad job.""" start="00:25:05.600" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Science, technology, engineering, mathematics.""" start="00:25:09.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Okay, so probably technology is the computer stuff.""" start="00:25:12.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Yeah, STEM.""" start="00:25:16.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Dear audience, that's science, technology,""" start="00:25:17.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""engineering, mathematics, academic fields.""" start="00:25:19.400" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""What should we make notes of?""" start="00:25:23.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""The important bits are interconnected in a hierarchy,""" start="00:25:24.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""usually chapters of a book.""" start="00:25:27.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Yes, someone did the job of making the order""" start="00:25:28.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""out of the chaotic findings""" start="00:25:31.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""that people did over hundreds of years for you.""" start="00:25:33.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""That's an order. But there are also many textbooks.""" start="00:25:35.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""So opinions may vary. The presentation may vary.""" start="00:25:39.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Some textbooks may click with you,""" start="00:25:42.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""while others stay opaque, and you can't get into the meat.""" start="00:25:48.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Sorry, I'm just typing the answer right now.""" start="00:25:59.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Copying information to another box is not, yeah.""" start="00:26:04.600" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Yeah, let's see what the first answer is.""" start="00:26:13.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Someone posted that Zettelkasten is great for mathematics,""" start="00:26:17.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""incredible for computer science.""" start="00:26:21.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""With OrgBabel you can have living source code, yes,""" start="00:26:22.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""that you can execute from the node,""" start="00:26:25.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""also true for a formula,""" start="00:26:26.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and LaTeX in interspersing of images and SVGs.""" start="00:26:28.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""You can even use Agda if you want to.""" start="00:26:35.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Ah, I think I know who typed the answer.""" start="00:26:37.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Hello, Oliver. If you want to have living proofs in your nodes,""" start="00:26:39.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""even inline LaTeX is in here. That's, yeah, yeah, yeah.""" start="00:26:43.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""quote the sentence as is and add, yeah, add something,""" start="00:26:47.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""maybe your own summary.""" start="00:26:58.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I would suggest add your own summary""" start="00:27:01.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""because we're looking at the etherpad, right?""" start="00:27:02.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Maybe I just copy this over so you can all the either""" start="00:27:11.300" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""pets indentation is missing with what Org is doing.""" start="00:27:14.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And the answer was probably submitted by Oliver""" start="00:27:30.880" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""just in case someone wants to see""" start="00:27:37.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""who that could have been with the Acta reference""" start="00:27:40.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""because nobody uses Acta,""" start="00:27:47.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""nobody in the world maybe so Acta is just a yeah""" start="00:27:49.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""let's say it's good for proofing the code that you type""" start="00:27:56.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""as you type it in the compilation set very weird""" start="00:28:01.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""if you've never heard of this so check that out""" start="00:28:04.400" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""so question was how Zettelkasten is useful for these kinds of things""" start="00:28:07.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""yeah it sounds like in these kinds of fields""" start="00:28:13.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""that you only deal with facts""" start="00:28:16.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""that's also kind of sort of true for psychology where you have a lot of""" start="00:28:18.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and also law where you at least in at least in German""" start="00:28:24.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and our style of law where you have a lot of where you have thick books of law""" start="00:28:29.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and very very little records,""" start="00:28:33.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""that's not the right phrasing,""" start="00:28:38.600" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""where you don't rely on the ruling as much as you do in, for example, the USA,""" start="00:28:41.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""where you need to be aware of every court ruling to then put stuff into context""" start="00:28:48.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and all of this is like the current how you do law.""" start="00:28:53.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I don't know.""" start="00:28:59.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I'm not a lawyer and also not good at this in English.""" start="00:29:01.040" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""So, sorry.""" start="00:29:04.040" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""If I don't find the cool words and technical terms,""" start="00:29:04.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""you probably all know.""" start="00:29:08.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""What do you do with these kinds of things?""" start="00:29:11.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""You need to collect a lot of stuff.""" start="00:29:12.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Like the previous questionnaire mentioned,""" start="00:29:14.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""hey, I'm just copying stuff over""" start="00:29:17.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and then I have a good time and can write about this""" start="00:29:19.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and create prose in the end.""" start="00:29:22.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Like with mathematics, you can't.""" start="00:29:24.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""You can't do a lot when you're still working on the foundations.""" start="00:29:26.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Like, what do you want to do there?""" start="00:29:36.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""You don't innovate there. You just need to learn the stuff.""" start="00:29:38.600" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Typing things out and creating your own organization""" start="00:29:41.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""of how things are connected there,""" start="00:29:45.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""that's where the depth of processing increases,""" start="00:29:49.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""like the actual depth of processing""" start="00:29:52.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""so that it takes more effort""" start="00:29:53.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and affects more parts of your brain, basically,""" start="00:29:57.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""which then helps with remembering stuff.""" start="00:30:01.400" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I'm trying not to go into a 10 minute tangent here, but""" start="00:30:03.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""If you've ever tried to memorize stuff with flashcards""" start="00:30:12.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and you put a, I don't know, coffee stain""" start="00:30:18.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""or a weird scribble or spilled something on one of these cards,""" start="00:30:20.880" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""actual physical cards there,""" start="00:30:24.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""this card now has another piece of information""" start="00:30:26.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""that is actually important""" start="00:30:29.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""because it makes the card stand out""" start="00:30:32.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""more and more worthy of being remembered""" start="00:30:36.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""because now one of these cards""" start="00:30:41.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""has this coffee circle thingy""" start="00:30:42.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and all the others don't so this one stands out""" start="00:30:44.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and this may actually improve""" start="00:30:46.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""how you learn this particular fact""" start="00:30:49.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""that you want to remember or memorize""" start="00:30:51.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Similar, like what kind of principle""" start="00:30:57.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""do people postulate is at play here?""" start="00:31:00.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Again, last time I went into""" start="00:31:04.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""this kind of stuff was at university,""" start="00:31:06.400" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""so I'm not sure if there's something new""" start="00:31:08.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""in the field of flashcard learning.""" start="00:31:11.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I'm not aware of anything, let's say.""" start="00:31:15.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And the idea back then that we spread""" start="00:31:18.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and that was taught to us was like this.""" start="00:31:23.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""That more information and more context and more stimuli""" start="00:31:27.540" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and making things more interesting,""" start="00:31:32.600" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""that's what makes it memorable.""" start="00:31:34.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""if you go for a walk and then associate things with places.""" start="00:31:39.341" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Going for a walk is a different activity""" start="00:31:43.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""than imagining going for a walk.""" start="00:31:47.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""It's also different from not doing anything""" start="00:31:48.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and just sitting in your chair""" start="00:31:52.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and relaxing because you're not engaged.""" start="00:31:54.400" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""You're losing, like you're using""" start="00:31:56.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""a bit of your brain matter to do the work""" start="00:31:58.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""while the rest of your body is stagnant.""" start="00:32:01.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""You don't smell anything different.""" start="00:32:04.400" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""You don't hear, see, feel on your skin,""" start="00:32:07.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""everything's constant,""" start="00:32:09.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""like you're in a, what are these called?""" start="00:32:11.400" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""These chambers where you're locked""" start="00:32:15.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""into very salty water, I think.""" start="00:32:18.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Floating chambers, so sensual deprivation chambers.""" start="00:32:21.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""You're depriving yourself of a lot of sensual input""" start="00:32:24.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""if you just try to really focus""" start="00:32:29.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""into everything with your head.""" start="00:32:31.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""If you engage more of your body,""" start="00:32:33.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""if you engage more of your senses,""" start="00:32:35.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""then you have an easier time there.""" start="00:32:36.008" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""What does it have to do with this answer?""" start="00:32:37.675" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""My answer would be the value is in rephrasing,""" start="00:32:40.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""in making your own connections eventually.""" start="00:32:46.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I don't know, the foundational laws of geometry,""" start="00:32:51.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""there's no room for innovation,""" start="00:32:56.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but there's maybe a room for association.""" start="00:32:58.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Like, hey, I remember this, like, if you can't figure out""" start="00:33:00.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""what the name of a certain axiom, lemma, whatever it is, and it has a name,""" start="00:33:03.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""adding your own story to the note doesn't hurt.""" start="00:33:09.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""If you say, hey, this is what my grandfather""" start="00:33:12.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""taught me with wire and sticks when we tried to measure""" start="00:33:14.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""whatever in the sand on a vacation one day.""" start="00:33:18.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And these kinds of things make it more memorable.""" start="00:33:22.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And that's at least something that you could need to then,""" start="00:33:26.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""which is the ultimate purpose of STEM at university,""" start="00:33:31.040" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""then you can pass the tests. Like that's it.""" start="00:33:34.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""You either, and eventually you embody the knowledge, right?""" start="00:33:39.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""If you do this stuff over and over again,""" start="00:33:43.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""then you don't need to look up""" start="00:33:44.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""how to do a certain kind of proof.""" start="00:33:45.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And you just do the proof when you need to do the proof.""" start="00:33:47.600" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""But maybe you forget all the kinds of weird proofs""" start="00:33:50.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""that you encountered in your life""" start="00:33:53.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""because you only remember the 10 most weird ones,""" start="00:33:55.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but you had 15 in your life.""" start="00:33:57.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And what's about the, what do you do""" start="00:33:58.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""with the five missing ones? They just fade away.""" start="00:34:00.400" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""But if you capture them in some way or another,""" start="00:34:02.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""as superficial as it may be,""" start="00:34:05.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and you still have access to this later""" start="00:34:08.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""when you need to check your personal inventory""" start="00:34:10.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""of mathematical proofs so my answer would be""" start="00:34:21.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""let's type in my answer""" start="00:34:30.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""on either pad would be I'm not able to type.""" start="00:34:33.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Sorry. My answer would be this.""" start="00:34:46.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Foundational knowledge is important for tests mostly""" start="00:34:52.600" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and eventually becomes your inventory of skills.""" start="00:35:05.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Synth programming, like I don't need to look up for loops,""" start="00:35:23.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I just do for loops and that's it, right?""" start="00:35:25.880" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""But still, I do have notes about for loops, I think,""" start="00:35:29.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""in different languages, like Python,""" start="00:35:33.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""the, what is it called, list comprehension.""" start="00:35:34.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I'm not using Python, but it's so quirky.""" start="00:35:37.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""It's quirky and I captured this on a note""" start="00:35:39.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""because I needed to get myself used to the pieces""" start="00:35:42.880" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and I needed to look at the syntax anyway,""" start="00:35:45.880" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and then this is that part and this goes there.""" start="00:35:48.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And I did this work, like this separation stuff on a note""" start="00:35:50.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""to then do the work with more engagement,""" start="00:35:55.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""like engage more so I can remember more later.""" start="00:36:01.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I don't remember all the details,""" start="00:36:04.600" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but I do remember there were different parts,""" start="00:36:06.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and then I can look up the note.""" start="00:36:08.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And it helps me refresh my memory rather quickly,""" start="00:36:09.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""because it's written by me for me""" start="00:36:12.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""in a way that I'm writing these notes""" start="00:36:15.400" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""for 15 years or something.""" start="00:36:17.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""16, at least, 16 years or something.""" start="00:36:18.600" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""So it's much better than looking, especially now,""" start="00:36:27.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""it's much better than going to the web""" start="00:36:30.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and doing a web search for the same topic,""" start="00:36:31.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""because I will probably not get the useful resource""" start="00:36:33.400" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""that I relied on some eight years ago anyway,""" start="00:36:37.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but some garbage instead,""" start="00:36:40.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""maybe AI generated stuff, I don't know.""" start="00:36:41.600" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""So I have my personal copy of this""" start="00:36:44.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and it's not just copying the thing into a box,""" start="00:36:48.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""like from one box into another,""" start="00:36:50.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""from the public internet box into my own buffer,""" start="00:36:51.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""that's a custom that's closer to me,""" start="00:36:53.880" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""like a fridge is closer to my kitchen""" start="00:36:56.400" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and where I want to eat when I'm hungry""" start="00:36:58.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""than going to the supermarket""" start="00:37:01.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""or out into the wild and hunt animals,""" start="00:37:02.400" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""like this is all about proximity""" start="00:37:04.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and also brought about ownership, like I own these notes""" start="00:37:06.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and I still take responsibility""" start="00:37:10.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""for what I put on them to some degree""" start="00:37:13.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""like sometimes they're really bad""" start="00:37:14.600" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and I want to distance myself,""" start="00:37:15.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but still yeah, so that's it, I'm just I'm leaving,""" start="00:37:17.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I'm not typing this out, I'm leaving copy box fridge,""" start="00:37:23.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""there was a term for this, wait a second,""" start="00:37:29.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""setup custom fridge can be fridge-like buffer of knowledge""" start="00:37:32.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I'm just, let me just try to copy this note verbatim into the etherpad""" start="00:37:38.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and then see whether you folks can do something with it.""" start="00:37:48.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""The formatting. See appendix A. I am doing this here.""" start="00:37:51.880" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Appendix A. I'm not going to read this,""" start="00:38:00.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but then you have a FridgeLab buffer of knowledge.""" start="00:38:10.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Local link in the supply chain. That was the term.""" start="00:38:13.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Didn't remember that one.""" start="00:38:16.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""It's at least a local link in supply chain.""" start="00:38:18.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Also, engagement doing the work of not copying,""" start="00:38:28.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but rephrasing, organizing,""" start="00:38:36.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but sometimes also just typing the stuff in""" start="00:38:38.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""that's how people romanticize learning a basic""" start="00:38:46.400" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""like there were magazines with a lot of code listings""" start="00:38:51.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and they just typed the code it was quite some effort""" start="00:38:55.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""you eventually got better at this""" start="00:38:58.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but you did do mistakes and then you needed to correct""" start="00:39:00.880" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and look through the source code carefully to spot the typo""" start="00:39:03.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""That's apparently virtue, at least people claim it's a virtue.""" start="00:39:06.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I don't deny it's a virtue because I went through the same kind of crap""" start="00:39:11.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and I believe it strengthened my character, for sure, but still.""" start="00:39:15.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Maybe it's not that useful, but maybe it is. I don't know.""" start="00:39:20.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""There's studies I remember,""" start="00:39:26.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but I don't remember any interesting results.""" start="00:39:27.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""It's not like it's a 10x improvement""" start="00:39:30.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""of recall if you type this, but it may be significant.""" start="00:39:32.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Just check it out for yourself. I'm not sure.""" start="00:39:36.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Next question, sorry.""" start="00:39:39.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""In your experience, would you say that you reuse most of your nodes?""" start="00:39:40.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Watching your demo, I thought that more nodes you create,""" start="00:39:45.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""the less you might reuse them. Yes, that's true.""" start="00:39:47.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I have 11,000 nodes or something,""" start="00:39:51.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and I don't use 11,000 nodes every day.""" start="00:39:54.880" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I can only use a fraction of them.""" start="00:39:57.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""But let's say you have the Feynman Darling nodes,""" start="00:39:59.880" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""then you would probably use these.""" start="00:40:06.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Imagine you have the same 12 Darlings for a year.""" start="00:40:08.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Then you use these 12 thingies for one year more often.""" start="00:40:11.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""than most of your other nodes,""" start="00:40:15.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""because these become your entry points""" start="00:40:17.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""into what's in my Zettelkasten today.""" start="00:40:20.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""These become your entry points""" start="00:40:22.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""of what do I want to work on today?""" start="00:40:23.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""These become your, where can I put""" start="00:40:25.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""the weird stuff that I just found?""" start="00:40:27.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Does it stick to any of these surfaces?""" start="00:40:29.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Entry point into the process.""" start="00:40:31.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""But let's say, five years later,""" start="00:40:33.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""maybe these 12 Feynman darlings were your darlings""" start="00:40:41.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""during university studies for STEM field,""" start="00:40:45.400" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""where you had a hard time figuring out""" start="00:40:47.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""how the technical system works for your benefit.""" start="00:40:49.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And then five years later, you're in a job and you don't need all of them""" start="00:40:52.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""because your subject matters from university, they're gone.""" start="00:40:56.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""you're not at a day job and you have different darlings""" start="00:41:00.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""whatever your day job is""" start="00:41:03.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""maybe you're a mathematician at an insurance company""" start="00:41:04.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""so you will probably have insurance related domain darlings pouring in""" start="00:41:09.400" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and some academic darlings falling off the bandwagon""" start="00:41:14.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""because no time for these maybe other hobbies come in""" start="00:41:18.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""like i didn't have anything related to child Rearing,""" start="00:41:21.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""bearing is when you produce them""" start="00:41:25.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and put them into the wild, right?""" start="00:41:29.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Rearing is when you let them grow up, I don't know""" start="00:41:30.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Like when you have children and make them not die""" start="00:41:34.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and get larger and do stuff, right?""" start="00:41:36.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I did have a couple of things in advance, but""" start="00:41:42.040" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""That was not a daily concern. Now it is.""" start="00:41:44.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Now I'm a father and that's a new concern in my life.""" start="00:41:47.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Getting things done also tackled this, right?""" start="00:41:51.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""If you remember getting things done, everyone,""" start="00:41:54.600" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""you had areas of responsibility.""" start="00:41:56.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""It's a new area of responsibility and you could represent,""" start="00:41:58.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""sorry, you could represent these in your Zettelkasten,""" start="00:42:01.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""if you find that you can spell out your areas of responsibility""" start="00:42:06.600" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""well, then you can see, well, I've learned something new,""" start="00:42:10.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""can I become a better person""" start="00:42:12.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""in one of my core areas of responsibility?""" start="00:42:14.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Yes or no? Why not?""" start="00:42:16.880" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Then you will use these more than the other notes.""" start="00:42:18.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Like the weird thing you found last month.""" start="00:42:21.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Last month, you will probably not reference that weird thing every day.""" start="00:42:25.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Natural process. But it's there.""" start="00:42:29.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And eventually you get back to something,""" start="00:42:32.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and then you serve access to this like that's the that""" start="00:42:34.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and whatever this changes like going through these processes""" start="00:42:39.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""change you if I if I spend a month getting nerd sniped on""" start="00:42:43.600" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I don't know chocolate manufacturing or something""" start="00:42:51.400" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""then I don't need this ever these things ever again most likely""" start="00:42:56.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but going through the procedure of""" start="00:43:00.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""becoming the master chocolate manufacturer of my town,""" start="00:43:03.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""at least in theory, will do something with me""" start="00:43:06.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""when I encounter the next topic.""" start="00:43:10.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I will think of chocolate manufacturing.""" start="00:43:12.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I wouldn't have thought of chocolate manufacturing before.""" start="00:43:14.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""In fact, I didn't think about chocolate""" start="00:43:17.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""manufacturing yesterday. I just made this up on the spot.""" start="00:43:18.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""What does this say about me today?""" start="00:43:21.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Maybe because we were out of chocolate,""" start="00:43:23.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""maybe because I don't know,""" start="00:43:26.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""maybe there's nothing that looks like chocolate here""" start="00:43:30.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I don't know so it just came up and now it's there""" start="00:43:33.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and things have changed for the better,""" start="00:43:36.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""for the worse, I don't know but they've changed""" start="00:43:39.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and that's the real takeaway there""" start="00:43:41.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""where do you put the effort?""" start="00:43:43.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""where do you want to put the effort? and will it pay off?""" start="00:43:44.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""maybe if not, then maybe spend the time on something else""" start="00:43:48.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""like don't try to exactly customize something you hate""" start="00:43:54.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""just to I don't know,""" start="00:43:57.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""do your due diligence if you don't want to""" start="00:43:59.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""because then you'll hate the process""" start="00:44:04.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""that's worse than not using nodes a lot next questions,""" start="00:44:06.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""how are nodes structured and accessed""" start="00:44:15.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""when the nodes grow from 10k to 100k nodes?""" start="00:44:17.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""yes, that's a field of exploration,""" start="00:44:20.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I mean that the lower realm there I don't know anybody""" start="00:44:22.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""who's using a hyperlinked 100k node archive.""" start="00:44:25.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I do know people who have a lot of text files""" start="00:44:32.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""like the Evernote style""" start="00:44:37.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""they capture everything and put the verbatim copy into their stuff""" start="00:44:38.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and then they have a lot more items of course""" start="00:44:42.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but these don't really count,""" start="00:44:47.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""these are like web clippings of websites themselves""" start="00:44:51.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I've read how many hundreds of websites today""" start="00:44:54.600" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I could have captured everything automatically,""" start="00:44:58.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but they wouldn't, like the files there, the clippings,""" start="00:45:02.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""they wouldn't have contributed""" start="00:45:07.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""anything meaningfully to my knowledge base,""" start="00:45:10.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""because I'm not thinking about the stuff,""" start="00:45:12.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I'm thinking about the stuff that I'm spending time on.""" start="00:45:14.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""What about that?""" start="00:45:16.400" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Yeah, how are nodes structured and accessed""" start="00:45:18.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""when the nodes go from one to 100k?""" start="00:45:20.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I will imagine that it becomes a matter that's speculation.""" start="00:45:22.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""We'll see. My speculation is this.""" start="00:45:31.400" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""it's going to be self-similar, like Mandelbrot images,""" start="00:45:34.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""where you have recursive patterns.""" start="00:45:40.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""First, you have a couple of nodes.""" start="00:45:43.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""You can leave through them digitally or physically easily.""" start="00:45:46.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And then eventually, you need to rely on structures""" start="00:45:49.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""or some kinds of entry points,""" start="00:45:52.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""which we usually call structures,""" start="00:45:54.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""thanks to Sascha. Perfect. Thank you.""" start="00:45:55.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And the clue there is,""" start="00:46:03.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Eventually, you have hundreds or maybe thousands,""" start="00:46:04.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""not hundreds or thousands, of structure nodes.""" start="00:46:10.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And then you have the same problem""" start="00:46:12.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""that you had on the lower base layer.""" start="00:46:13.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And now you will probably look for another tool.""" start="00:46:16.040" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""But there is nothing else that's not also a structure node""" start="00:46:19.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but is structuring other structures mostly""" start="00:46:22.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""instead of structuring the low-level nodes.""" start="00:46:25.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""But this distinction, I want to point out, doesn't pay off.""" start="00:46:28.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""it seems like it doesn't pay off""" start="00:46:31.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""to say hey i have these foundational permanent nodes""" start="00:46:34.880" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and then i have these meta nodes""" start="00:46:37.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""these these maps and structures""" start="00:46:38.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and then i have these super mega structures""" start="00:46:40.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""which are not permanent""" start="00:46:42.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""which are not structures which are not""" start="00:46:44.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I don't know this doesn't seem to pay off""" start="00:46:45.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""because eventually there is another level and another level""" start="00:46:47.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and also sometimes you want to talk""" start="00:46:51.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""about a structure as a data point""" start="00:46:53.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""like hey I did this writing project""" start="00:46:56.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""once it was really cool link to writing project""" start="00:46:58.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and the writing project is a table of contents huge hierarchy or whatever.""" start="00:47:00.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Is it not a link to a thing?""" start="00:47:04.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Back then you get into all these weird academic questions""" start="00:47:06.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""about the nature of links""" start="00:47:10.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and there's no gold at the end of that rainbow, let's say.""" start="00:47:12.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""At least I've never seen anyone come back with any gold.""" start="00:47:17.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I've seen people come back with very long faces""" start="00:47:21.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and sadness in their eyes""" start="00:47:24.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""because all the effort, all the metadata was for naught.""" start="00:47:26.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""So, how do you do this?""" start="00:47:31.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""You figure out, when you get to 10k,""" start="00:47:32.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""you will probably have figured,""" start="00:47:36.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and if you do 10k, not like web clippings,""" start="00:47:37.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but really like you did put in effort to get there""" start="00:47:40.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and type everything yourself in one way or another""" start="00:47:42.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""you would have figured out something""" start="00:47:46.880" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""that kind of sort of works for you around that milestone.""" start="00:47:48.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And then I believe in you,""" start="00:47:52.600" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""you will be equipped to get to 20k, 30k,""" start="00:47:53.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""because you feel comfortable in your notes.""" start="00:47:58.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And then you can expand further.""" start="00:48:00.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And it will probably look different""" start="00:48:02.400" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""for someone in STEM fields than for an artist.""" start="00:48:03.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Maybe, maybe not. I don't know.""" start="00:48:06.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Maybe a fine arts artist would woodcrafter,""" start="00:48:09.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""maybe these kinds of folks will have different structures""" start="00:48:14.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and rely more on visuals, schemas,""" start="00:48:17.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""whole part relationships, whereas mathematicians may not.""" start="00:48:22.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but I don't know, I don't know, we need to compare""" start="00:48:28.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and this will be the interesting like""" start="00:48:31.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""if the internet survives and we all survive""" start="00:48:33.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and also Zettelkasten as an idea sticks on""" start="00:48:36.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I hope we can have this discussion""" start="00:48:40.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""every year in five years, in ten years""" start="00:48:43.040" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and then see how people transparently evolve""" start="00:48:44.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""their gardens, their processes, their note-taking systems""" start="00:48:50.040" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""next question not a question but i would be very interested""" start="00:48:55.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""in your thoughts on this video""" start="00:49:00.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""by westenberg okay it's it's this is not spam""" start="00:49:01.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""i i don't uh there's joe westenberg's uh youtube channel""" start="00:49:07.040" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""why i deleted my second brain""" start="00:49:13.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""a journey back to real thinking uh""" start="00:49:15.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I think I didn't watch the video but read an article.""" start="00:49:22.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Not sure where. Let me check my Zettelkasten.""" start="00:49:30.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""It's not on screen sharing. That was stupid.""" start="00:49:34.383" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I'm probably not going to watch it right now with everyone here,""" start="00:49:36.216" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""so my thoughts on deleting and stuff like that.""" start="00:49:48.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I do remember there was a very cleverly written, well-written post""" start="00:49:53.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and the claim was, from my perspective,""" start="00:49:58.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and that's not doing the work of""" start="00:50:02.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""It's not doing the work of the author justice.""" start="00:50:04.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""But the shortest summary is that there seems to be false contradiction,""" start="00:50:13.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""where the contradiction stems from how the opposite side,""" start="00:50:19.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""the note taking, the deliberate note taking,""" start="00:50:24.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""taking a lot of notes,""" start="00:50:27.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""all the notes every time, stuff, like how this is presented.""" start="00:50:28.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I would say this is more on the collecting""" start="00:50:31.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and not on the connecting side of things.""" start="00:50:34.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""So like I mentioned for the, some 30 minutes ago""" start="00:50:36.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""when I talked about Roam, Roam Research.""" start="00:50:42.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""If you start your day with a daily note,""" start="00:50:45.040" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""journal style, and then branch out from there,""" start="00:50:47.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""you do at least have time as a structure""" start="00:50:50.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""that helps you to organize what you put in.""" start="00:50:53.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""But also, it can get very messy""" start="00:50:57.040" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and very weirdly interconnected,""" start="00:50:59.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""like this meme of the with a guy""" start="00:51:01.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""standing in front of a board""" start="00:51:04.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""with all these lines connecting things""" start="00:51:10.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and just, you know, with the madness in his eyes""" start="00:51:14.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""you can do a lot of stuff in there.""" start="00:51:17.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""But at a certain point, it gets hard""" start="00:51:23.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""to also get out of your own head, let's say.""" start="00:51:27.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""If you do it in this kind of style,""" start="00:51:30.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""it can get hard to get off your own head.""" start="00:51:33.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And one litmus test that you may find enjoyable""" start="00:51:35.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""if you struggle with this""" start="00:51:39.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""is to publish more. Because having access""" start="00:51:41.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""to a very deeply interconnected web of stuff""" start="00:51:46.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""thoughts, ideas, notes, wisdoms, whatever""" start="00:51:49.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""very deeply connected,""" start="00:51:52.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""like not a pile, yarn, wool, what's the ball?""" start="00:51:55.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Ball of yarn? No, that's boring.""" start="00:52:02.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Let's say like you have a lot of yarn""" start="00:52:06.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and then you just create chaos and entropy""" start="00:52:09.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and can't untangle it. It's a very tangled mess.""" start="00:52:11.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""So it's a very dense, dense thingy""" start="00:52:13.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""that's now its own kind of structure. Like if you have this""" start="00:52:15.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And in your head, when you think about your notes,""" start="00:52:18.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""you may have some interesting pathways there.""" start="00:52:21.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""But you need to serialize and put into a linear order""" start="00:52:24.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""in order to communicate.""" start="00:52:29.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Otherwise, people cannot follow your thought.""" start="00:52:30.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""it's a pity because we still rely""" start="00:52:32.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""on the book style of writing""" start="00:52:36.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and also hypertext which is making navigation easy""" start="00:52:39.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but not telling a story easier in our modern times""" start="00:52:42.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but we still rely a lot on books""" start="00:52:47.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""which take take a lot of intertwined stuff,""" start="00:52:50.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""put it into one order so you can read from start to finish.""" start="00:52:54.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""But then, in order for you to make sense of this,""" start="00:52:58.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""you need to chop it up,""" start="00:53:01.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""associate with things you already know,""" start="00:53:02.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and then attach things and create a new kind of structure""" start="00:53:04.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""through the narrative,""" start="00:53:07.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""because it's only one kind of presentation""" start="00:53:08.400" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""that's given to you.""" start="00:53:11.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And there may also be different kinds of presentations,""" start="00:53:12.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""like I also mentioned for the STEM fields,""" start="00:53:14.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""where you have different textbooks""" start="00:53:16.600" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""from different eras of mathematics foundations,""" start="00:53:18.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and then you see, hey, this one clicks, this one doesn't.""" start="00:53:21.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Why? It's the same stuff, but they present it differently.""" start="00:53:24.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And the presentation matters. The presentation matters.""" start="00:53:27.880" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And if you only deal with the chaos,""" start="00:53:30.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""the weird entanglement,""" start="00:53:33.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""if you capture everything and anything,""" start="00:53:34.400" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""how many, I don't know, how many hairs you lost that day or whatever.""" start="00:53:36.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""If you capture everything in there,""" start="00:53:41.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""you don't create the kind of value""" start="00:53:43.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""that is linearizable into thought,""" start="00:53:45.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""which also makes reading your own stuff later,""" start="00:53:47.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""maybe unbearable, maybe at least hard and making sense.""" start="00:53:49.600" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Now we come back to one of the earlier questions,""" start="00:53:55.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""like, why do I not use outlines?""" start="00:53:57.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Because OrgNode allows me to do outlines.""" start="00:54:00.400" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Well, I try to write my notes as blog posts,""" start="00:54:03.040" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""very short blog posts, microblogging, if you will,""" start="00:54:06.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""paragraphs, a couple of paragraphs.""" start="00:54:09.600" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Maybe it's also more nested because it's a huge topic.""" start="00:54:11.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""It's a complex topic. That also happens.""" start="00:54:14.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""But then it's more like an article,""" start="00:54:16.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""a long blog post, or an essay,""" start="00:54:18.040" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but never just vomiting thought out onto the page,""" start="00:54:21.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""because then you will get back to the note""" start="00:54:26.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and you will find, hey, there's a lot of vomit.""" start="00:54:28.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""But you never follow this kind of phrase with nice.""" start="00:54:31.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I enjoyed reading that. It's always me.""" start="00:54:36.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Oppressing because of its mass,""" start="00:54:40.880" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""it's also getting in the way of having new ideas""" start="00:54:43.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""because whatever is there and you need to tangle it""" start="00:54:46.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and then you lost your new genuine idea,""" start="00:54:48.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""this can also happen.""" start="00:54:52.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""So I'm not sure what the Westenberg video contains,""" start="00:54:56.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but the sentiment there of deleting everything,""" start="00:55:00.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""it makes sense if you find yourself in a situation""" start="00:55:03.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""where you don't have a productive system.""" start="00:55:07.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and the notes from 2009 in my own Zettelkasten""" start="00:55:09.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""aren't of the highest quality standards""" start="00:55:13.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I rewrite most of them when I encounter them,""" start="00:55:15.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but I can still use a couple as is and sometimes they're just garbage,""" start="00:55:17.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but as Luhmann said garbage like trickles to the ground""" start="00:55:23.400" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and forms a nice sediment layer there in the septic tank of your thought machine,""" start="00:55:28.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""your thought thinking environment.""" start="00:55:34.600" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""But clear water separates and then rises to the top""" start="00:55:36.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and that's what you work with.""" start="00:55:40.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""it's never going to be 100% useful. But if it's 90% garbage""" start="00:55:42.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and if the water is, if the septic tank is never clearing,""" start="00:55:47.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""then you probably need to start""" start="00:55:51.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""over and rethink your approach.""" start="00:55:54.400" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Maybe there was just too much garbage,""" start="00:55:55.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""too much toxic waste in there, whatever that means, right?""" start="00:55:57.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""So I do understand this, but also I would say""" start="00:56:01.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""maybe maybe they tried to do too much with a different mindset""" start="00:56:07.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and it just didn't click and then they,""" start="00:56:11.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""you know next question is there a danger?""" start="00:56:24.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""also, wait a second, answer do not probably a lot of collection,""" start="00:56:27.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""not a lot of stinking in the Zettelkasten to some purpose.""" start="00:56:41.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Usually. Conflation was the word I was fishing for.""" start="00:56:52.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Usually posts videos like this.""" start="00:56:58.701" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Conflate note taking as a dumping ground""" start="00:57:02.841" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""for stuff with something that is valuable in the long term.""" start="00:57:10.091" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Also if this was our dear friend Westenberg""" start="00:57:22.175" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I think the note count also was higher,""" start="00:57:27.600" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but I might confuse them with someone else.""" start="00:57:30.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""The note count was way higher than mine. Note count.""" start="00:57:33.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""But then also, you know, there's the sign""" start="00:57:36.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""of going for quantity in...""" start="00:57:41.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""just capture anything, like capturing,""" start="00:57:44.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""that's not the bottleneck.""" start="00:57:47.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""The bottleneck is finding, making connections happen,""" start="00:57:48.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""having thoughts and working on problems""" start="00:57:52.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""you really want to solve in the long term.""" start="00:57:55.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""So next question.""" start="00:57:57.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Is there a danger that with the settled custom process,""" start="00:57:59.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""that the process gets a bit in the way of the content?""" start="00:58:02.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""yes, especially if you do it like old school style""" start="00:58:05.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""if you find that your handwriting sucks""" start="00:58:12.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and you want to type things""" start="00:58:14.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""on a typewriter like that kind of process""" start="00:58:16.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""definitely gets in the way""" start="00:58:19.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""that's going to be your bottleneck""" start="00:58:20.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""you can't find black paper""" start="00:58:21.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and put it into your typewriter and then like that's not the speed of thought""" start="00:58:24.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""that's the speed of, I don't know, my long deceased grandmother""" start="00:58:30.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but yeah it's not like a strive for speed of thought tools""" start="00:58:35.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""not needing a typewriter""" start="00:58:54.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and then next step reduce ritual reduce rituals and ceremony""" start="00:59:00.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""What I mean by that is if you find yourself doing the same moves""" start="00:59:10.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""or similar moves over and over again,""" start="00:59:15.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but they don't contribute""" start="00:59:16.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""to having more cool ideas per week, then maybe ditch these,""" start="00:59:19.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""apart from the day timestamp,""" start="00:59:23.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""having a title, hashtags, and content,""" start="00:59:26.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and also being very, very careful about quoting my sources.""" start="00:59:28.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I don't do much with my et cetera.""" start="00:59:32.400" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I cannot give up quoting my sources""" start="00:59:35.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""because then I'm plagiarizing, stealing,""" start="00:59:37.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""forgetting where I get ideas from and confuse.""" start="00:59:39.400" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And I get out because I'm aware of the problem there.""" start="00:59:41.880" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I'm also not trusting my own notes anymore.""" start="00:59:44.600" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""would not be trusting my own notes anymore""" start="00:59:47.600" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""i need to properly cite so then i can see hey""" start="00:59:51.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""this block has no quotations that's mine""" start="00:59:53.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and i can trust this it's not like hey this is maybe mine""" start="00:59:56.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""maybe this is a verbatim quote from a book like this""" start="01:00:00.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""is not helping that's a ceremony""" start="01:00:04.040" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""that's paying off in the long term also""" start="01:00:05.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""so that when you write something""" start="01:00:09.040" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""you have all the sources at hand""" start="01:00:11.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""that's a useful ceremony title""" start="01:00:15.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""is just a way of summarizing the content""" start="01:00:17.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""do it like an excerpt, right?""" start="01:00:20.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""you have the whole content, that's your etc.""" start="01:00:25.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""do a short summary, that may be your introduction.""" start="01:00:26.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""So have a way to quickly get a glimpse of the relevance""" start="01:00:29.880" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""before having to read the whole settle""" start="01:00:33.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""when you encounter it years from now.""" start="01:00:35.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And then have a one, that's one sentence summary,""" start="01:00:38.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and then have an even more condensed form that's a title.""" start="01:00:41.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""The title is basically your API,""" start="01:00:44.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""the interface for you and your nodes.""" start="01:00:45.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And it needs to uphold some kind of contract.""" start="01:00:49.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And if it just is, like, this is my second note,""" start="01:00:54.880" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""that's not useful. This is just a technical limitation""" start="01:00:57.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""because you can't have the same file name twice.""" start="01:01:00.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""That's not going to be useful.""" start="01:01:02.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""But if you give yourself the permission to take time""" start="01:01:05.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""of titling your notes in one way and also changing titles,""" start="01:01:09.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""because you will know from writing introductions""" start="01:01:12.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""the further you get along,""" start="01:01:16.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""the more and more you need to rewrite your introductions""" start="01:01:18.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""because your understanding changes same for titles""" start="01:01:22.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""titles don't always stay consistent or constant""" start="01:01:24.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""that's why I don't link by title, because I would then need""" start="01:01:28.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""to go through my node archive and also need to go to""" start="01:01:31.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""my node archive and need to correct all the links""" start="01:01:34.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""that's a janitorial task I like to not do, if I can""" start="01:01:40.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""So answer here, less ceremony, fewer ceremonies, plural.""" start="01:01:44.040" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Try to only do the minimum possible, minimum viable thing.""" start="01:01:49.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And using Emacs and D-Node, you get a lot of defaults.""" start="01:01:54.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And then you need to worry""" start="01:01:57.600" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""not about IDs and tags that much,""" start="01:01:58.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""or where to put them and how to put them.""" start="01:02:01.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""You can omit keywords. You can leave keywords out.""" start="01:02:04.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""They don't scale anyway.""" start="01:02:06.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""But they may be interesting as a way to group,""" start="01:02:08.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but also Sascha from zettelkasten.de, from our website,""" start="01:02:12.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Sascha also found that, I believe, he,""" start="01:02:19.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""structures win in the long term.""" start="01:02:23.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Manual created hubs and overviews""" start="01:02:28.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""win over machine generated lumps.""" start="01:02:30.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Because you need to reorient yourself""" start="01:02:34.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""in the search results all the time.""" start="01:02:37.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""That's not as useful as having a pathway""" start="01:02:42.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""through your nodes that you can follow.""" start="01:02:45.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""It may not be a pathway through all of your nodes, of course,""" start="01:02:49.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but it may be a pathway from entry point into some topic.""" start="01:02:52.040" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""That's why some things are essential and others aren't.""" start="01:02:56.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And the essential stuff, try to do it quickly, get better at it,""" start="01:03:01.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""practice the movements, then they get out of the way,""" start="01:03:06.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and then you can focus on having ideas""" start="01:03:08.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and typing them at speed of thought,""" start="01:03:10.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""more or less, and then you're good.""" start="01:03:12.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I hope. Wishing you all the best. Next and last question.""" start="01:03:15.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""How do you navigate looking at all posts with a certain text?""" start="01:03:20.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""This might be an emacs, already new to emacs.""" start="01:03:24.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I just may have answered this.""" start="01:03:26.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""How do you navigate looking at all posts with a certain text?""" start="01:03:28.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Let me go to my actual node archive.""" start="01:03:40.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and then php no language learning ah""" start="01:03:42.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""this is not my setup I'm very clumsy""" start="01:03:55.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I'm sorry, I don't know swift language learning""" start="01:03:59.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""ah that's that's a boring one php By this time, I could have also,""" start="01:04:03.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""ah, there's the model. This would be an entry point""" start="01:04:28.466" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""into my PHP atom molecule organism learning journey""" start="01:04:35.300" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""where I tried to practice, what's visual line mode, sorry,""" start="01:04:39.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""where I tried to practice this atom molecule thing on something new.""" start="01:04:43.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I haven't used PHP in a long time""" start="01:04:48.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and found that I wasn't, yeah, you can see it on the screen also""" start="01:04:51.880" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""like language primitives are the atoms,""" start="01:04:59.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I think molecules are more like idioms or patterns that are PHP special in PHP""" start="01:05:01.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and different in other languages in Python""" start="01:05:08.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""would be list comprehension that's in a molecule""" start="01:05:10.600" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and but also you can make a point for hey,""" start="01:05:13.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""this comprehension is more like a syntactical thing,""" start="01:05:16.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""no no get out of here, like the for loop is the syntactical atom""" start="01:05:18.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and the molecule is using the for loop""" start="01:05:23.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""with weird other stuff""" start="01:05:25.040" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""to then make the list comprehension happen.""" start="01:05:26.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""That's my argument there, okay? So what do we do with this?""" start="01:05:28.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I use this as an entry point if I want to see,""" start="01:05:33.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""hey, what kind of stuff did I take notes on""" start="01:05:38.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""to get a better understanding""" start="01:05:41.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""on multiple levels of the language.""" start="01:05:43.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And project structure conventions""" start="01:05:45.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and usually another language""" start="01:05:47.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""that I use more here would be, but I can't remember now.""" start="01:05:49.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Funny, right? I can't remember how I would need to look,""" start="01:05:53.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but I think I'm too clumsy in Emacs""" start="01:05:57.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""to do it live on camera, sorry.""" start="01:05:58.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""But the organisms part here would also be like my own inventions,""" start="01:06:00.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""let's say in code,""" start="01:06:05.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""like my own discoveries where I found that in Swift, for example,""" start="01:06:06.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""you can express things on the type level""" start="01:06:11.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""in a very sexy way sometimes.""" start="01:06:13.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And then I would put these there as well.""" start="01:06:15.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""So these are also,""" start="01:06:19.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""There are organisms to discover in the language reference,""" start="01:06:20.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but there are also organisms to discover in the world,""" start="01:06:26.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and then they are your own inventions,""" start="01:06:30.600" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""discoveries, more or less. And that's a sign of mastery.""" start="01:06:32.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""If you work more on these things,""" start="01:06:36.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""then you don't need to worry""" start="01:06:38.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""about the basics of the language anymore.""" start="01:06:40.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""So I can use this as an entry point""" start="01:06:42.400" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""to get into things that are very PHP-esque.""" start="01:06:46.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""When do I need this? When I want to talk about PHP,""" start="01:06:51.040" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""like I do now.""" start="01:06:54.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Why do I show this when the question is about tags?""" start="01:06:55.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Because if I search for... Which one do I take?""" start="01:06:59.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Let's try grep. php. Yep, grep exited the anomaly.""" start="01:07:10.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Dang, why? Option requires an argument.""" start="01:07:22.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Yes, eshell is there.""" start="01:07:28.040" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""So let's just use rg, ripgrep and then ripgrep for php.""" start="01:07:36.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And you see I get, I can do filenames only, right?""" start="01:07:43.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Let's not worry. I get a lot of, let's just scroll up.""" start="01:07:50.880" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I get a lot more hits here for the PHP tech,""" start="01:07:56.600" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""which is only about PHP specific things,""" start="01:08:03.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""not about anything that I do in PHP.""" start="01:08:06.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Like, I don't know, I don't take Laravel or Filament,""" start="01:08:09.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""which are frameworks, libraries in PHP,""" start="01:08:15.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""the Zend library or whatever, I don't know many.""" start="01:08:17.880" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Like I wouldn't take everything""" start="01:08:21.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and anything that is related to the php ecosystem""" start="01:08:23.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""with the php hashtag.""" start="01:08:27.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Why? Because then the tag becomes useless.""" start="01:08:28.400" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I only tag things that are about the language.""" start="01:08:30.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Like how do I pass variables to php includes that's php related.""" start="01:08:33.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And you see these are... I'm still not at the top.""" start="01:08:39.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""now i'm at the top these are a lot more findings than you could""" start="01:08:44.880" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""these don't fit on the screen""" start="01:08:48.400" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""these are three pages i believe""" start="01:08:49.880" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and the note about my language learning journey was""" start="01:08:51.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""wasn't even one full page here's white space""" start="01:08:55.040" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""there wasn't okay right but still there's much more stuff""" start="01:08:59.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""the hashtag I don't use for navigating.""" start="01:09:02.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I only use this, let's say, the shotgun approach.""" start="01:09:07.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I think Sascha on our Zettelkasten blog post,""" start="01:09:10.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""don't remember which post, mentioned this as well.""" start="01:09:14.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Sometimes you need a sniper rifle.""" start="01:09:16.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Sometimes you need a shotgun.""" start="01:09:18.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And the hashtag-based search would be I don't know what I'm looking for.""" start="01:09:21.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""It was PHP related. I hope I use the hashtag correctly""" start="01:09:27.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and then kill all these nodes from my archive.""" start="01:09:32.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""The metaphor doesn't work that way,""" start="01:09:36.880" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but still you get a lot of results here""" start="01:09:38.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and you could use this as a way to filter from 11,000 nodes""" start="01:09:41.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""down to 50 or so, maybe less.""" start="01:09:45.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And if you got this far, then you can start to do it in a mechanical way again.""" start="01:09:53.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""But wait, if you have 100 or 1000 nodes in the results there,""" start="01:09:59.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""then you can't mechanically go through all the nodes again.""" start="01:10:05.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""You can maybe skim and look""" start="01:10:08.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""for something that catches your eye,""" start="01:10:09.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""if you're lucky, and if that's the thing""" start="01:10:11.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""that works for you.""" start="01:10:14.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but usually no, like usually the text become useless""" start="01:10:15.040" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""then maybe tag groups become more useful""" start="01:10:21.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""like PHP and LSP which is on screen here""" start="01:10:24.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""like then maybe the combination of two tags""" start="01:10:28.040" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""that reduces the search terms enough""" start="01:10:30.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""like this is basically glorified full text search""" start="01:10:32.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""where you highlight certain terms of importance that's it,""" start="01:10:36.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I wouldn't use I wouldn't put more effort in there""" start="01:10:41.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""It's also maybe useful to group things by topic.""" start="01:10:45.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""For example, study notes like, I don't know,""" start="01:10:48.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""this is my undergrad, third semester,""" start="01:10:52.400" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""what do you do in the third semester, I don't know,""" start="01:10:56.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""history of philosophy of science of birds,""" start="01:11:01.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""very long course name, and then week 10.""" start="01:11:06.400" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And then you assemble everything""" start="01:11:10.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""with this very technical tagging.""" start="01:11:13.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Then you can use these folders""" start="01:11:15.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""to loosely group stuff together""" start="01:11:18.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""that happened during that week.""" start="01:11:21.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And if you have 10 required readings and then do five of them,""" start="01:11:23.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but they're also not closely interrelated,""" start="01:11:26.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""you will have read five to 10 different sources that you could process.""" start="01:11:28.880" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""You could maybe then also create an overview node""" start="01:11:33.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""as a preparation for the seminar""" start="01:11:36.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""whatever happens at university.""" start="01:11:38.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Then the hashtag becomes just a way to group things.""" start="01:11:44.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""But once you create the structure node,""" start="01:11:51.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""you don't need the hashtags to navigate anymore.""" start="01:11:52.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""You could then maybe use the hashtags not to navigate""" start="01:11:55.040" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but to to clump, to create collections,""" start="01:11:57.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""pre-assembled to some degree collections of things that exist already,""" start="01:12:02.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""get them out there and then review them.""" start="01:12:07.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Like Twyla Tharp again, dumping all the notes on a table,""" start="01:12:09.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""all the stuff on the table,""" start="01:12:13.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""not just notes, all the clippings and so on and so on,""" start="01:12:15.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and then making sense of them.""" start="01:12:17.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""That's what you can use a hashtag search for in the longterm.""" start="01:12:18.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And I'm not convinced about navigational use in the longterm.""" start="01:12:21.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""which doesn't mean that it won't work for you,""" start="01:12:27.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but I can't recommend it.""" start="01:12:31.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I can't recommend trying to do it that way.""" start="01:12:32.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""So my answer is going to be, how do you navigate""" start="01:12:34.900" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""looking at all posts with certain tags? I don't.""" start="01:12:37.883" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Tags are just a way to loosely group notes and stuff in general""" start="01:12:45.508" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""so that you can find potentially, PP, why doesn't P work?""" start="01:12:53.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Potentially relevant pieces of information more quickly.""" start="01:13:05.520" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Navigational aids. Create navigational aids""" start="01:13:14.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""things that help you navigate like this is for a week""" start="01:13:34.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""what did I say 10 of semester three""" start="01:13:38.050" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""uh the history of the sociology""" start="01:13:42.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""of the philosophy of science of birds""" start="01:13:44.633" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""or something lump things together there then you have a""" start="01:13:46.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""then you have a scratch pad to think on you do this""" start="01:13:51.560" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""did do this when you went to university with paper anyway, right?""" start="01:13:54.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""You would get your college book or whatever""" start="01:13:59.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and then you would take notes and these like that location""" start="01:14:01.040" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""of that piece of paper in your college book""" start="01:14:04.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""in your whatever notes folder""" start="01:14:07.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""that's the important piece of information""" start="01:14:09.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and the scratchpad, the thinking environment for this course""" start="01:14:15.040" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and if you have all the other things""" start="01:14:20.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""that you ever did at your disposal as well""" start="01:14:22.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""maybe pull them in maybe pull them in""" start="01:14:24.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and then bring them to the discussion""" start="01:14:26.840" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""with your professor or your teaching assistant""" start="01:14:28.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and asking about, well, I read these five books""" start="01:14:31.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""that you recommended for this week.""" start="01:14:35.200" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Thank you for recommending five whole books""" start="01:14:37.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""for one week of reading. I really enjoyed that. Long pause.""" start="01:14:40.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""And then you say, I also thought about other topics""" start="01:14:45.400" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and brought them into a, I don't know, dialectic or position.""" start="01:14:50.600" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""What do you think about foxes in that regard""" start="01:14:54.360" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and their own history and subjectivity""" start="01:14:58.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""when it comes to the bird's point of view or something, right?""" start="01:15:01.600" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""You can only do this if you either know this by heart""" start="01:15:08.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""because you do this a lot,""" start="01:15:11.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""think a lot about this stuff or you do this,""" start="01:15:13.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""you stumble upon this and then look for oppositions,""" start="01:15:15.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""look for certain patterns in your notes""" start="01:15:18.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and then try to pull them in and represent them again""" start="01:15:19.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""so they actually do exist and then you can work with this,""" start="01:15:22.480" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""you can get on people's nerves""" start="01:15:26.240" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""you can write weird papers, essays""" start="01:15:27.400" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and then get through your university studies quickly""" start="01:15:30.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""maybe also become an interesting columnist,""" start="01:15:33.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I don't know, I've never been a columnist Right.""" start="01:15:35.960" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I think these are all the questions.""" start="01:15:39.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I'm going to delete the leftover ones.""" start="01:15:44.080" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I hope you enjoyed some of the answers.""" start="01:15:47.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Thank you so much. Thank you. That's a lot.""" start="01:15:52.440" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""We'll go back and get everything transcribed as well""" start="01:15:58.160" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""and then you can turn that into other articles in the future""" start="01:16:02.760" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""because that's how this all works, right?""" start="01:16:08.600" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""It all turns into writing. It all does.""" start="01:16:10.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""All the rest is garbage.""" start="01:16:14.320" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I don't know why we invented anything else.""" start="01:16:16.000" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""It's only useful to transfer language before writing,""" start="01:16:20.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""but now you can just read.""" start="01:16:23.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""We have two people in the big blue button room""" start="01:16:26.280" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""who are still around, but I think they've got their, like,""" start="01:16:29.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""they don't have microphones set up.""" start="01:16:33.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""So I don't know if you want to just, like, CryptKNFL,""" start="01:16:35.720" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""if you want to just follow up through the etherpad,""" start="01:16:40.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""or email, I guess, in case you have further questions.""" start="01:16:44.340" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""But yeah, if you want to wrap up,""" start="01:16:47.640" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""I know it's getting a little bit late over there,""" start="01:16:50.120" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""you're in your time zone. Thank you so much.""" start="01:16:52.800" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Yeah, all right. Thank you. You're welcome.""" start="01:16:55.920" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Thanks for joining and listening.""" start="01:16:59.680" video="qanda-zettelkasten" id="subtitle"]] +[[!template text="""Okay, I'll wrap it up here then.""" start="01:17:02.720" video="qanda-zettelkasten" id="subtitle"]] + +</div>Questions or comments? Please e-mail [hi@christiantietze.de](mailto:hi@christiantietze.de?subject=Comment%20for%20EmacsConf%202023%20zettelkasten%3A%20Zettelkasten%20for%20regular%20Emacs%20hackers) <!-- End of emacsconf-publish-after-page --> diff --git a/2025/info/zettelkasten-before.md b/2025/info/zettelkasten-before.md index b9785474..4cfea6fc 100644 --- a/2025/info/zettelkasten-before.md +++ b/2025/info/zettelkasten-before.md @@ -1,19 +1,15 @@ <!-- Automatically generated by emacsconf-publish-before-page --> - -The following image shows where the talk is in the schedule for Sun 2025-12-07. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="zettelkasten"> -<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="700" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2025/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:10 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(11,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2025/talks/modern" title="Some problems of modernizing Emacs" data-slug="modern"> <title> 9:10- 9:30 Some problems of modernizing Emacs</title> <rect x="13" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(38,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> modern</text></g></a> <a href="/2025/talks/reader" title="An introduction to the Emacs Reader" data-slug="reader"> <title> 9:40-10:15 An introduction to the Emacs Reader</title> <rect x="54" y="15" opacity="0.5" width="48" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(100,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> reader</text></g></a> <a href="/2025/talks/weights" title="Weightlifting tracking with Emacs on Android" data-slug="weights"> <title> 10:35-10:45 Weightlifting tracking with Emacs on Android</title> <rect x="130" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(141,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> weights</text></g></a> <a href="/2025/talks/completion" title="corfu+yasnippet: Easier than I thought" data-slug="completion"> <title> 11:05-11:25 corfu+yasnippet: Easier than I thought</title> <rect x="171" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(196,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> completion</text></g></a> <a href="/2025/talks/zettelkasten" title="Zettelkasten for regular Emacs hackers" data-slug="zettelkasten"> <title> 1:00- 1:25 Zettelkasten for regular Emacs hackers</title> <rect stroke-width="3" x="329" y="15" opacity="0.8" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(361,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> zettelkasten</text></g></a> <a href="/2025/talks/hyperboleqa" title="Questions and answers to help you fly with Hyperbole" data-slug="hyperboleqa"> <title> 1:45- 2:15 Questions and answers to help you fly with Hyperbole</title> <rect x="391" y="15" opacity="0.5" width="41" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(430,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperboleqa</text></g></a> <a href="/2025/talks/gardening" title="Gardening in Emacs: A Windows user's tale of tending, tweaking, and triumph" data-slug="gardening"> <title> 2:15- 2:35 Gardening in Emacs: A Windows user's tale of tending, tweaking, and triumph</title> <rect x="432" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(457,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gardening</text></g></a> <a href="/2025/talks/bookclub-tapas" title="Bookclub tapas" data-slug="bookclub-tapas"> <title> 2:45- 3:20 Bookclub tapas</title> <rect x="473" y="15" opacity="0.5" width="48" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(519,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> bookclub-tapas</text></g></a> <a href="/2025/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 3:40- 3:50 Sunday closing remarks</title> <rect x="549" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(560,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <g transform="translate(0,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(82,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(164,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(247,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(329,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(411,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(494,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(576,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(658,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 5 PM</text></g></svg> -</div> - [[!toc ]] -Format: 24-min talk ; Q&A: BigBlueButton conference room <https://media.emacsconf.org/2025/current/bbb-zettelkasten.html> Etherpad: <https://pad.emacsconf.org/2025-zettelkasten> +Format: 24-min talk ; Q&A: BigBlueButton conference room Etherpad: <https://pad.emacsconf.org/2025-zettelkasten> Etherpad: <https://pad.emacsconf.org/2025-zettelkasten> -Discuss on IRC: [#emacsconf-gen](https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen) -Status: Q&A open for participation -<div>Times in different time zones:</div><div class="times" start="2025-12-07T18:00:00Z" end="2025-12-07T18:25:00Z"><div class="conf-time">Sunday, Dec 7 2025, ~1:00 PM - 1:25 PM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Sunday, Dec 7 2025, ~12:00 PM - 12:25 PM CST (US/Central)<br />Sunday, Dec 7 2025, ~11:00 AM - 11:25 AM MST (US/Mountain)<br />Sunday, Dec 7 2025, ~10:00 AM - 10:25 AM PST (US/Pacific)<br />Sunday, Dec 7 2025, ~6:00 PM - 6:25 PM UTC <br />Sunday, Dec 7 2025, ~7:00 PM - 7:25 PM CET (Europe/Paris)<br />Sunday, Dec 7 2025, ~8:00 PM - 8:25 PM EET (Europe/Athens)<br />Sunday, Dec 7 2025, ~11:30 PM - 11:55 PM IST (Asia/Kolkata)<br />Monday, Dec 8 2025, ~2:00 AM - 2:25 AM +08 (Asia/Singapore)<br />Monday, Dec 8 2025, ~3:00 AM - 3:25 AM JST (Asia/Tokyo)</div></div><div><strong><a href="/2025/watch/gen/">Find out how to watch and participate</a></strong></div> +Status: TO_INDEX_QA + +# Talk + <div class="vid mainVideo"><video controls preload="none" id="mainVideo-zettelkasten"><source src="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2025/captions/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--main--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="mainVideo-zettelkasten" data=""" 00:01.400 Introduction 01:25.534 Advocating Freedoms @@ -31,6 +27,10 @@ Status: Q&A open for participation 20:39.068 Learn, Share, Grow 22:45.297 Outro -"""]]<div></div>Duration: 23:18 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-zettelkasten">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/current/bbb-zettelkasten.html">Open public Q&A</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--main.opus">Download --main.opus (20MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--main.webm">Download --main.webm (41MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--script.org">Download --script.org</a></li><li><a href="https://youtu.be/wE8vCWyr1Eo">View on Youtube</a></li></ul></div></div> +"""]]<div></div>Duration: 23:18 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-zettelkasten">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--main.opus">Download --main.opus (20MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--main.webm">Download --main.webm (41MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--script.org">Download --script.org</a></li><li><a href="https://youtu.be/wE8vCWyr1Eo">View on Youtube</a></li></ul></div></div> + +# Q&A + +<div class="vid qanda"><video controls preload="none" id="qanda-zettelkasten"><source src="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--answers.m4v" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--answers.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div>Listen to just the audio:<br /><audio controls preload="none" id="qanda-zettelkasten-audio" src="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--answers.opus"></audio></div><div></div>Duration: 1:17:07 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-zettelkasten">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--answers.json">Download --answers.json (1.5MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--answers.m4v">Download --answers.m4v (152MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--answers.opus">Download --answers.opus (39MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--answers.tsv">Download --answers.tsv</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--answers.txt">Download --answers.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--answers.webm">Download --answers.webm (166MB)</a></li></ul></div></div> # Description <!-- End of emacsconf-publish-before-page -->
\ No newline at end of file diff --git a/2025/info/zettelkasten-nav.md b/2025/info/zettelkasten-nav.md index 900421db..bfc20b3a 100644 --- a/2025/info/zettelkasten-nav.md +++ b/2025/info/zettelkasten-nav.md @@ -1,7 +1,7 @@ <div class="talk-nav"> Back to the [[talks]] -Previous by time: <a href="/2025/talks/completion">corfu+yasnippet: Easier than I thought</a> -Next by time: <a href="/2025/talks/hyperboleqa">Questions and answers to help you fly with Hyperbole</a> -Track: <span class="sched-track General">General</span> - <strong><a href="https://emacsconf.org/2025/watch/gen">Watch</a></strong> +Previous by track: <a href="/2025/talks/completion">corfu+yasnippet: Easier than I thought</a> +Next by track: <a href="/2025/talks/hyperboleqa">Questions and answers to help you fly with Hyperbole</a> +Track: <span class="sched-track General">General</span> </div> diff --git a/2025/organizers-notebook/index.org b/2025/organizers-notebook/index.org index 2160b922..8c61f5c0 100644 --- a/2025/organizers-notebook/index.org +++ b/2025/organizers-notebook/index.org @@ -280,6 +280,14 @@ CLOSED: [2025-11-04 Tue 12:05] :results: saturday closing remarks: Starts at 16:00 before 16:30 sunday closing remarks: Starts at 15:40 before 16:30 +latex: video: 34, allocated 20 +open-mic: video: 77, allocated 50 +private-ai: video: 42, allocated 20 +modern: video: 26, allocated 20 +weights: video: 31, allocated 10 +completion: video: 37, allocated 25 +hyperboleqa: video: 50, allocated 30 +sun-close: video: 16, allocated 10 :end: #+ATTR_ORG: :width 500 @@ -772,8 +780,8 @@ CLOCK: [2024-11-20 Wed 10:48]--[2024-11-20 Wed 12:18] => 1:30 [[file:~/proj/emacsconf/wiki/organizers-notebook/index.org::#general-infrastructure-bigbluebutton-creating-talk-bbb-rooms][Creating talk BBB rooms]] -*** TODO Back up after the conference -SCHEDULED: <2025-12-13 Sat> +*** DONE Back up after the conference +CLOSED: [2025-12-13 Sat 08:34] SCHEDULED: <2025-12-13 Sat> :PROPERTIES: :CUSTOM_ID: check-emacsconf-infrastructure-bigbluebutton-notes-backing-up :CREATED: [2025-06-17 Tue 10:34] @@ -937,12 +945,13 @@ http://pad.emacsconf.org.vagrant/padbootstrap-rLLvrD2UOFI.min.js :PROPERTIES: :CUSTOM_ID: check-emacsconf-infrastructure-etherpad-generate-the-main-index :END: -** TODO Do a dry run -SCHEDULED: <2025-12-05 Fri> +** DONE Do a dry run +CLOSED: [2025-12-08 Mon 21:36] SCHEDULED: <2025-12-05 Fri> :PROPERTIES: :CUSTOM_ID: check-emacsconf-infrastructure-do-a-dry-run :END: -*** TODO Generate all the test assets +*** DONE Generate all the test assets +CLOSED: [2025-12-08 Mon 21:36] :PROPERTIES: :Effort: 0:15 :CUSTOM_ID: check-emacsconf-infrastructure-do-a-dry-run-generate-all-the-test-assets @@ -972,16 +981,16 @@ live0: 64GB front0: 32GB meet: 64GB -*** TODO [#A] Resize nodes after production -SCHEDULED: <2025-12-08 Mon> +*** DONE [#A] Resize nodes after production +CLOSED: [2025-12-08 Mon 21:36] SCHEDULED: <2025-12-08 Mon> :PROPERTIES: :CUSTOM_ID: check-emacsconf-infrastructure-resizing-resize-nodes-after-production :END: live0: nanode front0: nanode -*** TODO [#A] Resize meet after production -SCHEDULED: <2025-12-10 Wed> +*** DONE [#A] Resize meet after production +CLOSED: [2025-12-11 Thu 09:58] SCHEDULED: <2025-12-10 Wed> :PROPERTIES: :CUSTOM_ID: check-emacsconf-infrastructure-resizing-resize-meet-after-production :END: diff --git a/2025/schedule-2025-12-06.md b/2025/schedule-2025-12-06.md index fdfa4b6c..fb92d10c 100644 --- a/2025/schedule-2025-12-06.md +++ b/2025/schedule-2025-12-06.md @@ -1 +1 @@ -<div class="schedule-svg-container"><svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2025/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:10 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(13,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2025/talks/org-babel" title="Making Org-Babel reactive" data-slug="org-babel"> <title> 9:10- 9:20 Making Org-Babel reactive</title> <rect x="15" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(28,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> org-babel</text></g></a> <a href="/2025/talks/reference" title="Emacs as a fully-fledged reference manager" data-slug="reference"> <title> 9:30- 9:55 Emacs as a fully-fledged reference manager</title> <rect x="47" y="15" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(84,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> reference</text></g></a> <a href="/2025/talks/gmail" title="org-gmail: A deep integration of Gmail into your Org Mode" data-slug="gmail"> <title> 10:15-10:40 org-gmail: A deep integration of Gmail into your Org Mode</title> <rect x="117" y="15" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(154,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gmail</text></g></a> <a href="/2025/talks/gnus" title="Reading and writing emails in GNU Emacs with Gnus" data-slug="gnus"> <title> 10:50-11:15 Reading and writing emails in GNU Emacs with Gnus</title> <rect x="172" y="15" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(209,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gnus</text></g></a> <a href="/2025/talks/latex" title="LaTeX export in org-mode: the overhaul" data-slug="latex"> <title> 11:25-11:45 LaTeX export in org-mode: the overhaul</title> <rect x="227" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(256,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> latex</text></g></a> <a href="/2025/talks/calc" title="Basic Calc functionality for engineering or electronics" data-slug="calc"> <title> 1:00- 1:25 Basic Calc functionality for engineering or electronics</title> <rect x="376" y="15" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(413,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> calc</text></g></a> <a href="/2025/talks/blee-lcnt" title="Blee-LCNT: An Emacs-centered content production and self-publication framework" data-slug="blee-lcnt"> <title> 1:35- 2:15 Blee-LCNT: An Emacs-centered content production and self-publication framework</title> <rect x="431" y="15" opacity="0.8" width="62" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> blee-lcnt</text></g></a> <a href="/2025/talks/greader" title="GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence" data-slug="greader"> <title> 2:35- 2:40 GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence</title> <rect x="525" y="15" opacity="0.8" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(530,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> greader</text></g></a> <a href="/2025/talks/open-mic" title="Open session" data-slug="open-mic"> <title> 2:50- 3:40 Open session</title> <rect x="549" y="15" opacity="0.8" width="78" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(625,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> open-mic</text></g></a> <a href="/2025/talks/sat-close" title="Saturday closing remarks / open session" data-slug="sat-close"> <title> 4:00- 4:10 Saturday closing remarks / open session</title> <rect x="658" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(671,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2025/talks/schemacs" title="One year progress update Schemacs (formerly Gypsum)" data-slug="schemacs"> <title> 9:30- 9:55 One year progress update Schemacs (formerly Gypsum)</title> <rect x="47" y="75" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(84,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> schemacs</text></g></a> <a href="/2025/talks/juicemacs" title="Juicemacs: exploring speculative JIT compilation for ELisp in Java" data-slug="juicemacs"> <title> 10:15-10:35 Juicemacs: exploring speculative JIT compilation for ELisp in Java</title> <rect x="117" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(146,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> juicemacs</text></g></a> <a href="/2025/talks/swanky" title="Swanky Python: Interactive development for Python" data-slug="swanky"> <title> 10:45-11:10 Swanky Python: Interactive development for Python</title> <rect x="164" y="75" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(201,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> swanky</text></g></a> <a href="/2025/talks/python" title="Interactive Python programming in Emacs" data-slug="python"> <title> 11:20-11:40 Interactive Python programming in Emacs</title> <rect x="219" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(248,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <a href="/2025/talks/llm" title="Emacs, editors, and LLM driven workflows" data-slug="llm"> <title> 1:00- 1:25 Emacs, editors, and LLM driven workflows</title> <rect x="376" y="75" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(413,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> llm</text></g></a> <a href="/2025/talks/private-ai" title="Emacs and private AI: a great match" data-slug="private-ai"> <title> 1:45- 2:05 Emacs and private AI: a great match</title> <rect x="447" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(476,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> private-ai</text></g></a> <a href="/2025/talks/commonlisp" title="Common Lisp images communicating like-a-human through shared Emacs slime and eev" data-slug="commonlisp"> <title> 2:25- 2:55 Common Lisp images communicating like-a-human through shared Emacs slime and eev</title> <rect x="509" y="75" opacity="0.8" width="47" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(554,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> commonlisp</text></g></a> <a href="/2025/talks/graphics" title="Modern Emacs/Elisp hardware/software accelerated graphics" data-slug="graphics"> <title> 3:05- 3:30 Modern Emacs/Elisp hardware/software accelerated graphics</title> <rect x="572" y="75" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(609,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> graphics</text></g></a> <g transform="translate(0,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 5 PM</text></g></svg></div>
\ No newline at end of file +<div class="schedule-svg-container"><svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Saturday</title><rect width="800" height="150" x="0" y="0" fill="white"></rect><text font-size="10" fill="black" y="12" x="3">Saturday</text><a href="/2025/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"><title> 9:00- 9:10 Saturday opening remarks</title><rect x="0" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(13,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-open</text></g></a><a href="/2025/talks/org-babel" title="Making Org-Babel reactive" data-slug="org-babel"><title> 9:10- 9:20 Making Org-Babel reactive</title><rect x="15" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(28,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">org-babel</text></g></a><a href="/2025/talks/reference" title="Emacs as a fully-fledged reference manager" data-slug="reference"><title> 9:30- 9:55 Emacs as a fully-fledged reference manager</title><rect x="47" y="15" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(84,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">reference</text></g></a><a href="/2025/talks/gmail" title="org-gmail: A deep integration of Gmail into your Org Mode" data-slug="gmail"><title>10:15-10:40 org-gmail: A deep integration of Gmail into your Org Mode</title><rect x="117" y="15" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(154,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">gmail</text></g></a><a href="/2025/talks/gnus" title="Reading and writing emails in GNU Emacs with Gnus" data-slug="gnus"><title>10:50-11:15 Reading and writing emails in GNU Emacs with Gnus</title><rect x="172" y="15" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(209,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">gnus</text></g></a><a href="/2025/talks/latex" title="LaTeX export in org-mode: the overhaul" data-slug="latex"><title>11:25-11:45 LaTeX export in org-mode: the overhaul</title><rect x="227" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(256,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">latex</text></g></a><a href="/2025/talks/calc" title="Basic Calc functionality for engineering or electronics" data-slug="calc"><title> 1:00- 1:25 Basic Calc functionality for engineering or electronics</title><rect x="376" y="15" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(413,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">calc</text></g></a><a href="/2025/talks/blee-lcnt" title="Blee-LCNT: An Emacs-centered content production and self-publication framework" data-slug="blee-lcnt"><title> 1:35- 2:15 Blee-LCNT: An Emacs-centered content production and self-publication framework</title><rect x="431" y="15" opacity="0.8" width="62" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(491,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">blee-lcnt</text></g></a><a href="/2025/talks/greader" title="GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence" data-slug="greader"><title> 2:35- 2:40 GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence</title><rect x="525" y="15" opacity="0.8" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(530,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">greader</text></g></a><a href="/2025/talks/open-mic" title="Open session" data-slug="open-mic"><title> 2:50- 3:40 Open session</title><rect x="549" y="15" opacity="0.8" width="78" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(625,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">open-mic</text></g></a><a href="/2025/talks/sat-close" title="Saturday closing remarks / open session" data-slug="sat-close"><title> 4:00- 4:10 Saturday closing remarks / open session</title><rect x="658" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(671,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="/2025/talks/schemacs" title="One year progress update Schemacs (formerly Gypsum)" data-slug="schemacs"><title> 9:30- 9:55 One year progress update Schemacs (formerly Gypsum)</title><rect x="47" y="75" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(84,133)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">schemacs</text></g></a><a href="/2025/talks/juicemacs" title="Juicemacs: exploring speculative JIT compilation for ELisp in Java" data-slug="juicemacs"><title>10:15-10:35 Juicemacs: exploring speculative JIT compilation for ELisp in Java</title><rect x="117" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(146,133)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">juicemacs</text></g></a><a href="/2025/talks/swanky" title="Swanky Python: Interactive development for Python" data-slug="swanky"><title>10:45-11:10 Swanky Python: Interactive development for Python</title><rect x="164" y="75" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(201,133)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">swanky</text></g></a><a href="/2025/talks/python" title="Interactive Python programming in Emacs" data-slug="python"><title>11:20-11:40 Interactive Python programming in Emacs</title><rect x="219" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(248,133)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">python</text></g></a><a href="/2025/talks/llm" title="Emacs, editors, and LLM driven workflows" data-slug="llm"><title> 1:00- 1:25 Emacs, editors, and LLM driven workflows</title><rect x="376" y="75" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(413,133)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llm</text></g></a><a href="/2025/talks/private-ai" title="Emacs and private AI: a great match" data-slug="private-ai"><title> 1:45- 2:05 Emacs and private AI: a great match</title><rect x="447" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(476,133)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">private-ai</text></g></a><a href="/2025/talks/commonlisp" title="Common Lisp images communicating like-a-human through shared Emacs slime and eev" data-slug="commonlisp"><title> 2:25- 2:55 Common Lisp images communicating like-a-human through shared Emacs slime and eev</title><rect x="509" y="75" opacity="0.8" width="47" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(554,133)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">commonlisp</text></g></a><a href="/2025/talks/graphics" title="Modern Emacs/Elisp hardware/software accelerated graphics" data-slug="graphics"><title> 3:05- 3:30 Modern Emacs/Elisp hardware/software accelerated graphics</title><rect x="572" y="75" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(609,133)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">graphics</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">9 AM</text></g><g transform="translate(94,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">10 AM</text></g><g transform="translate(188,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">11 AM</text></g><g transform="translate(282,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">12 PM</text></g><g transform="translate(376,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">1 PM</text></g><g transform="translate(470,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">2 PM</text></g><g transform="translate(564,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">3 PM</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">4 PM</text></g><g transform="translate(752,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">5 PM</text></g></svg></div>
\ No newline at end of file diff --git a/2025/schedule-2025-12-07.md b/2025/schedule-2025-12-07.md index eaa1b11a..59f5ab8e 100644 --- a/2025/schedule-2025-12-07.md +++ b/2025/schedule-2025-12-07.md @@ -1 +1 @@ -<div class="schedule-svg-container"><svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2025/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:10 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(13,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2025/talks/modern" title="Some problems of modernizing Emacs" data-slug="modern"> <title> 9:10- 9:30 Some problems of modernizing Emacs</title> <rect x="15" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(44,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> modern</text></g></a> <a href="/2025/talks/reader" title="An introduction to the Emacs Reader" data-slug="reader"> <title> 9:40-10:15 An introduction to the Emacs Reader</title> <rect x="62" y="15" opacity="0.8" width="54" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(114,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> reader</text></g></a> <a href="/2025/talks/weights" title="Weightlifting tracking with Emacs on Android" data-slug="weights"> <title> 10:35-10:45 Weightlifting tracking with Emacs on Android</title> <rect x="149" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(162,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> weights</text></g></a> <a href="/2025/talks/completion" title="corfu+yasnippet: Easier than I thought" data-slug="completion"> <title> 11:05-11:25 corfu+yasnippet: Easier than I thought</title> <rect x="196" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(225,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> completion</text></g></a> <a href="/2025/talks/zettelkasten" title="Zettelkasten for regular Emacs hackers" data-slug="zettelkasten"> <title> 1:00- 1:25 Zettelkasten for regular Emacs hackers</title> <rect x="376" y="15" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(413,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> zettelkasten</text></g></a> <a href="/2025/talks/hyperboleqa" title="Questions and answers to help you fly with Hyperbole" data-slug="hyperboleqa"> <title> 1:45- 2:15 Questions and answers to help you fly with Hyperbole</title> <rect x="447" y="15" opacity="0.8" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(492,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperboleqa</text></g></a> <a href="/2025/talks/gardening" title="Gardening in Emacs: A Windows user's tale of tending, tweaking, and triumph" data-slug="gardening"> <title> 2:15- 2:35 Gardening in Emacs: A Windows user's tale of tending, tweaking, and triumph</title> <rect x="494" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(523,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gardening</text></g></a> <a href="/2025/talks/bookclub-tapas" title="Bookclub tapas" data-slug="bookclub-tapas"> <title> 2:45- 3:20 Bookclub tapas</title> <rect x="541" y="15" opacity="0.8" width="54" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(593,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> bookclub-tapas</text></g></a> <a href="/2025/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 3:40- 3:50 Sunday closing remarks</title> <rect x="627" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(640,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <g transform="translate(0,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 5 PM</text></g></svg></div>
\ No newline at end of file +<div class="schedule-svg-container"><svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Sunday</title><rect width="800" height="150" x="0" y="0" fill="white"></rect><text font-size="10" fill="black" y="12" x="3">Sunday</text><a href="/2025/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"><title> 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(13,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2025/talks/modern" title="Some problems of modernizing Emacs" data-slug="modern"><title> 9:10- 9:30 Some problems of modernizing Emacs</title><rect x="15" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(44,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">modern</text></g></a><a href="/2025/talks/reader" title="An introduction to the Emacs Reader" data-slug="reader"><title> 9:40-10:15 An introduction to the Emacs Reader</title><rect x="62" y="15" opacity="0.8" width="54" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(114,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">reader</text></g></a><a href="/2025/talks/weights" title="Weightlifting tracking with Emacs on Android" data-slug="weights"><title>10:35-10:45 Weightlifting tracking with Emacs on Android</title><rect x="149" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">weights</text></g></a><a href="/2025/talks/completion" title="corfu+yasnippet: Easier than I thought" data-slug="completion"><title>11:05-11:25 corfu+yasnippet: Easier than I thought</title><rect x="196" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(225,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">completion</text></g></a><a href="/2025/talks/zettelkasten" title="Zettelkasten for regular Emacs hackers" data-slug="zettelkasten"><title> 1:00- 1:25 Zettelkasten for regular Emacs hackers</title><rect x="376" y="15" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(413,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">zettelkasten</text></g></a><a href="/2025/talks/hyperboleqa" title="Questions and answers to help you fly with Hyperbole" data-slug="hyperboleqa"><title> 1:45- 2:15 Questions and answers to help you fly with Hyperbole</title><rect x="447" y="15" opacity="0.8" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(492,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hyperboleqa</text></g></a><a href="/2025/talks/gardening" title="Gardening in Emacs: A Windows user's tale of tending, tweaking, and triumph" data-slug="gardening"><title> 2:15- 2:35 Gardening in Emacs: A Windows user's tale of tending, tweaking, and triumph</title><rect x="494" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(523,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">gardening</text></g></a><a href="/2025/talks/bookclub-tapas" title="Bookclub tapas" data-slug="bookclub-tapas"><title> 2:45- 3:20 Bookclub tapas</title><rect x="541" y="15" opacity="0.8" width="54" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(593,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bookclub-tapas</text></g></a><a href="/2025/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"><title> 3:40- 3:50 Sunday closing remarks</title><rect x="627" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(640,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">9 AM</text></g><g transform="translate(94,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">10 AM</text></g><g transform="translate(188,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">11 AM</text></g><g transform="translate(282,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">12 PM</text></g><g transform="translate(376,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">1 PM</text></g><g transform="translate(470,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">2 PM</text></g><g transform="translate(564,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">3 PM</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">4 PM</text></g><g transform="translate(752,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">5 PM</text></g></svg></div>
\ No newline at end of file diff --git a/2025/schedule-details.md b/2025/schedule-details.md index a9456148..e2ae067a 100644 --- a/2025/schedule-details.md +++ b/2025/schedule-details.md @@ -1,54 +1,36 @@ -Times below are in US/Eastern (GMT-0500). If you have Javascript enabled, clicking on talk pages should include times in your computer's local time setting. +Jump to: <a href="#dev">Development</a> -[[!inline pages="internal(2025/schedule-image)" raw="yes"]] +<h1 id="gen" class="sched-track General">General (21 talks)</h1> +[[!template id=sched resources="""<li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sat-open--saturday-opening-remarks--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sat-open--saturday-opening-remarks--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sat-open--saturday-opening-remarks--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sat-open--saturday-opening-remarks--main.opus">Download --main.opus (2.5MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sat-open--saturday-opening-remarks--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sat-open--saturday-opening-remarks--main.webm">Download --main.webm (15MB)</a></li>""" title="""Saturday opening remarks""" url="""/2025/talks/sat-open""" speakers="""Sacha Chua""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""sat-open""" note="""captioned, video posted, video: 04:51"""]] +[[!template id=sched resources="""<li><a href="https://media.emacsconf.org/2025/emacsconf-2025-org-babel--making-orgbabel-reactive--abhinav-tushar--edited.vtt">Download --edited.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-org-babel--making-orgbabel-reactive--abhinav-tushar--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-org-babel--making-orgbabel-reactive--abhinav-tushar--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-org-babel--making-orgbabel-reactive--abhinav-tushar--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-org-babel--making-orgbabel-reactive--abhinav-tushar--main.opus">Download --main.opus (7.1MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-org-babel--making-orgbabel-reactive--abhinav-tushar--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-org-babel--making-orgbabel-reactive--abhinav-tushar--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-org-babel--making-orgbabel-reactive--abhinav-tushar--main.webm">Download --main.webm (17MB)</a></li>""" title="""Making Org-Babel reactive""" url="""/2025/talks/org-babel""" speakers="""Abhinav Tushar""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""org-babel""" note="""captioned, video posted, video: 08:08"""]] +[[!template id=sched resources="""<li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--answers.json">Download --answers.json</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--answers.m4v">Download --answers.m4v (63MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--answers.tsv">Download --answers.tsv</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--answers.txt">Download --answers.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--answers.webm">Download --answers.webm (52MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--main.opus">Download --main.opus (18MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--main.webm">Download --main.webm (103MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--script.org">Download --script.org</a></li>""" title="""Emacs as a fully-fledged reference manager""" url="""/2025/talks/reference""" speakers="""Vidianos Giannitsis""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""reference""" note="""captioned, video posted, video: 20:14"""]] +[[!template id=sched resources="""<li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--answers.json">Download --answers.json</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--answers.m4v">Download --answers.m4v (43MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--answers.tsv">Download --answers.tsv</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--answers.txt">Download --answers.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--answers.webm">Download --answers.webm (18MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--main.opus">Download --main.opus (20MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--main.webm">Download --main.webm (57MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--script.txt">Download --script.txt</a></li>""" title="""org-gmail: A deep integration of Gmail into your Org Mode""" url="""/2025/talks/gmail""" speakers="""Bala Ramadurai""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""gmail""" note="""captioned, video posted, Q&A posted, video: 23:04, answers: 24:55"""]] +[[!template id=sched resources="""<li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--answers.json">Download --answers.json</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--answers.m4v">Download --answers.m4v (62MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--answers.tsv">Download --answers.tsv</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--answers.txt">Download --answers.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--answers.webm">Download --answers.webm (58MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--main.opus">Download --main.opus (19MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--main.webm">Download --main.webm (60MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--split.txt">Download --split.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--split.vtt">Download --split.vtt</a></li>""" title="""Reading and writing emails in GNU Emacs with Gnus""" url="""/2025/talks/gnus""" speakers="""Amin Bandali""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""gnus""" note="""captioned, video posted, Q&A posted, video: 21:37, answers: 27:00"""]] +[[!template id=sched resources="""<li><a href="https://media.emacsconf.org/2025/emacsconf-2025-latex--latex-export-in-orgmode-the-overhaul--pedro-a-aranda-gutirrez--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-latex--latex-export-in-orgmode-the-overhaul--pedro-a-aranda-gutirrez--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-latex--latex-export-in-orgmode-the-overhaul--pedro-a-aranda-gutirrez--main.opus">Download --main.opus (17MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-latex--latex-export-in-orgmode-the-overhaul--pedro-a-aranda-gutirrez--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-latex--latex-export-in-orgmode-the-overhaul--pedro-a-aranda-gutirrez--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-latex--latex-export-in-orgmode-the-overhaul--pedro-a-aranda-gutirrez--main.webm">Download --main.webm (65MB)</a></li>""" title="""LaTeX export in org-mode: the overhaul""" url="""/2025/talks/latex""" speakers="""Pedro A. Aranda Gutiérrez""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""latex""" note="""video posted, video: 33:53"""]] +[[!template id=sched resources="""<li><a href="https://media.emacsconf.org/2025/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--main.opus">Download --main.opus (20MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--main.webm">Download --main.webm (56MB)</a></li>""" title="""Basic Calc functionality for engineering or electronics""" url="""/2025/talks/calc""" speakers="""Christopher Howard""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""calc""" note="""captioned, video posted, video: 23:35"""]] +[[!template id=sched resources="""<li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--answers.json">Download --answers.json</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--answers.m4v">Download --answers.m4v (111MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--answers.tsv">Download --answers.tsv</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--answers.txt">Download --answers.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--answers.webm">Download --answers.webm (69MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--main.opus">Download --main.opus (32MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--main.webm">Download --main.webm (97MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--script.txt">Download --script.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--split.txt">Download --split.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--split.vtt">Download --split.vtt</a></li>""" title="""Blee-LCNT: An Emacs-centered content production and self-publication framework""" url="""/2025/talks/blee-lcnt""" speakers="""Mohsen BANAN""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""blee-lcnt""" note="""captioned, video posted, Q&A posted, video: 36:41, answers: 1:24:10"""]] +[[!template id=sched resources="""<li><a href="https://media.emacsconf.org/2025/emacsconf-2025-greader--gnu-emacs-greader-gnam-reader-mode-is-the-best-emacs-mode-in-existence--yuval-langer--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-greader--gnu-emacs-greader-gnam-reader-mode-is-the-best-emacs-mode-in-existence--yuval-langer--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-greader--gnu-emacs-greader-gnam-reader-mode-is-the-best-emacs-mode-in-existence--yuval-langer--main.opus">Download --main.opus (3.5MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-greader--gnu-emacs-greader-gnam-reader-mode-is-the-best-emacs-mode-in-existence--yuval-langer--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-greader--gnu-emacs-greader-gnam-reader-mode-is-the-best-emacs-mode-in-existence--yuval-langer--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-greader--gnu-emacs-greader-gnam-reader-mode-is-the-best-emacs-mode-in-existence--yuval-langer--main.webm">Download --main.webm (10MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-greader--gnu-emacs-greader-gnam-reader-mode-is-the-best-emacs-mode-in-existence--yuval-langer--split.txt">Download --split.txt</a></li>""" title="""GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence""" url="""/2025/talks/greader""" speakers="""Yuval Langer""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""greader""" note="""captioned, video posted, video: 04:08"""]] +[[!template id=sched resources="""<li><a href="https://media.emacsconf.org/2025/emacsconf-2025-open-mic--open-session--participants--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-open-mic--open-session--participants--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-open-mic--open-session--participants--main.m4v">Download --main.m4v (195MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-open-mic--open-session--participants--main.opus">Download --main.opus (23MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-open-mic--open-session--participants--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-open-mic--open-session--participants--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-open-mic--open-session--participants--main.webm">Download --main.webm (140MB)</a></li>""" title="""Open session""" url="""/2025/talks/open-mic""" speakers="""Participants""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""open-mic""" note="""video posted, video: 1:16:28"""]] +[[!template id=sched resources="""<li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-open--sunday-opening-remarks--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-open--sunday-opening-remarks--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-open--sunday-opening-remarks--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-open--sunday-opening-remarks--main.opus">Download --main.opus (2.5MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-open--sunday-opening-remarks--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-open--sunday-opening-remarks--main.webm">Download --main.webm (15MB)</a></li>""" title="""Sunday opening remarks""" url="""/2025/talks/sun-open""" speakers="""Sacha Chua""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""sun-open""" note="""captioned, video posted, video: 04:51"""]] +[[!template id=sched resources="""<li><a href="https://media.emacsconf.org/2025/emacsconf-2025-modern--some-problems-of-modernizing-emacs--eduardo-ochs--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-modern--some-problems-of-modernizing-emacs--eduardo-ochs--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-modern--some-problems-of-modernizing-emacs--eduardo-ochs--main.opus">Download --main.opus (13MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-modern--some-problems-of-modernizing-emacs--eduardo-ochs--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-modern--some-problems-of-modernizing-emacs--eduardo-ochs--main.webm">Download --main.webm (57MB)</a></li>""" title="""Some problems of modernizing Emacs""" url="""/2025/talks/modern""" speakers="""Eduardo Ochs""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""modern""" note="""video posted, video: 25:22"""]] +[[!template id=sched resources="""<li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--answers.json">Download --answers.json</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--answers.m4v">Download --answers.m4v (82MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--answers.tsv">Download --answers.tsv</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--answers.txt">Download --answers.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--answers.webm">Download --answers.webm (77MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--main.opus">Download --main.opus (30MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--main.webm">Download --main.webm (101MB)</a></li>""" title="""An introduction to the Emacs Reader""" url="""/2025/talks/reader""" speakers="""Divyá""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""reader""" note="""captioned, video posted, Q&A posted, video: 34:37, answers: 20:12"""]] +[[!template id=sched resources="""<li><a href="https://media.emacsconf.org/2025/emacsconf-2025-weights--weightlifting-tracking-with-emacs-on-android--zachary-romero--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-weights--weightlifting-tracking-with-emacs-on-android--zachary-romero--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-weights--weightlifting-tracking-with-emacs-on-android--zachary-romero--main.opus">Download --main.opus</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-weights--weightlifting-tracking-with-emacs-on-android--zachary-romero--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-weights--weightlifting-tracking-with-emacs-on-android--zachary-romero--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-weights--weightlifting-tracking-with-emacs-on-android--zachary-romero--main.webm">Download --main.webm (106MB)</a></li>""" title="""Weightlifting tracking with Emacs on Android""" url="""/2025/talks/weights""" speakers="""Zachary Romero""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""weights""" note="""video posted, video: 30:05"""]] +[[!template id=sched resources="""<li><a href="https://media.emacsconf.org/2025/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--backup.webm">Download --backup.webm (30MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--handout.pdf">Download --handout.pdf</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--main.m4v">Download --main.m4v (95MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--main.opus">Download --main.opus (5.2MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--main.webm">Download --main.webm (48MB)</a></li>""" title="""corfu+yasnippet: Easier than I thought""" url="""/2025/talks/completion""" speakers="""Pedro A. Aranda Gutiérrez""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""completion""" note="""video posted, video: 36:04"""]] +[[!template id=sched resources="""<li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--answers.json">Download --answers.json (1.5MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--answers.m4v">Download --answers.m4v (152MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--answers.opus">Download --answers.opus (39MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--answers.tsv">Download --answers.tsv</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--answers.txt">Download --answers.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--answers.webm">Download --answers.webm (166MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--main.opus">Download --main.opus (20MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--main.webm">Download --main.webm (41MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--script.org">Download --script.org</a></li>""" title="""Zettelkasten for regular Emacs hackers""" url="""/2025/talks/zettelkasten""" speakers="""Christian Tietze""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""zettelkasten""" note="""captioned, video posted, Q&A posted, video: 23:18, answers: 1:17:07"""]] +[[!template id=sched resources="""<li><a href="https://media.emacsconf.org/2025/emacsconf-2025-hyperboleqa--questions-and-answers-to-help-you-fly-with-hyperbole--bob-weiner--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-hyperboleqa--questions-and-answers-to-help-you-fly-with-hyperbole--bob-weiner--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-hyperboleqa--questions-and-answers-to-help-you-fly-with-hyperbole--bob-weiner--main.json">Download --main.json</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-hyperboleqa--questions-and-answers-to-help-you-fly-with-hyperbole--bob-weiner--main.m4v">Download --main.m4v (108MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-hyperboleqa--questions-and-answers-to-help-you-fly-with-hyperbole--bob-weiner--main.tsv">Download --main.tsv</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-hyperboleqa--questions-and-answers-to-help-you-fly-with-hyperbole--bob-weiner--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-hyperboleqa--questions-and-answers-to-help-you-fly-with-hyperbole--bob-weiner--original.m4v">Download --original.m4v (111MB)</a></li>""" title="""Questions and answers to help you fly with Hyperbole""" url="""/2025/talks/hyperboleqa""" speakers="""Bob Weiner""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""hyperboleqa""" note="""video posted, video: 49:02"""]] +[[!template id=sched resources="""<li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gardening--gardening-in-emacs-a-windows-users-tale-of-tending-tweaking-and-triumph--marco-bresciani--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gardening--gardening-in-emacs-a-windows-users-tale-of-tending-tweaking-and-triumph--marco-bresciani--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gardening--gardening-in-emacs-a-windows-users-tale-of-tending-tweaking-and-triumph--marco-bresciani--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gardening--gardening-in-emacs-a-windows-users-tale-of-tending-tweaking-and-triumph--marco-bresciani--main.opus">Download --main.opus (15MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gardening--gardening-in-emacs-a-windows-users-tale-of-tending-tweaking-and-triumph--marco-bresciani--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gardening--gardening-in-emacs-a-windows-users-tale-of-tending-tweaking-and-triumph--marco-bresciani--main.webm">Download --main.webm (48MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gardening--gardening-in-emacs-a-windows-users-tale-of-tending-tweaking-and-triumph--marco-bresciani--script.txt">Download --script.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gardening--gardening-in-emacs-a-windows-users-tale-of-tending-tweaking-and-triumph--marco-bresciani--split.txt">Download --split.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gardening--gardening-in-emacs-a-windows-users-tale-of-tending-tweaking-and-triumph--marco-bresciani--split.vtt">Download --split.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gardening--gardening-in-emacs-a-windows-users-tale-of-tending-tweaking-and-triumph--marco-bresciani.odp">Download .odp (3.6MB)</a></li>""" title="""Gardening in Emacs: A Windows user's tale of tending, tweaking, and triumph""" url="""/2025/talks/gardening""" speakers="""Marco Bresciani""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""gardening""" note="""captioned, video posted, video: 17:36"""]] +[[!template id=sched resources="""<li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--answers.json">Download --answers.json</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--answers.m4v">Download --answers.m4v (100MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--answers.tsv">Download --answers.tsv</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--answers.txt">Download --answers.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--answers.webm">Download --answers.webm (107MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--main.opus">Download --main.opus (27MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--main.webm">Download --main.webm (74MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--script.org">Download --script.org</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--split.txt">Download --split.txt</a></li>""" title="""Bookclub tapas""" url="""/2025/talks/bookclub-tapas""" speakers="""Maddie Sullivan""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""bookclub-tapas""" note="""captioned, video posted, Q&A posted, video: 31:25"""]] +[[!template id=sched resources="""<li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sat-close--saturday-closing-remarks--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sat-close--saturday-closing-remarks--intro.webm">Download --intro.webm</a></li>""" title="""Saturday closing remarks / open session""" url="""/2025/talks/sat-close""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""sat-close""" note=""""""]] +[[!template id=sched resources="""<li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-close--sunday-closing-remarks--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-close--sunday-closing-remarks--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-close--sunday-closing-remarks--main.m4v">Download --main.m4v (53MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-close--sunday-closing-remarks--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-close--sunday-closing-remarks--original.json">Download --original.json</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-close--sunday-closing-remarks--original.m4v">Download --original.m4v (49MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-close--sunday-closing-remarks--original.tsv">Download --original.tsv</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-close--sunday-closing-remarks--original.txt">Download --original.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-close--sunday-closing-remarks--original.vtt">Download --original.vtt</a></li>""" title="""Sunday closing remarks""" url="""/2025/talks/sun-close""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""sun-close""" note="""video posted, video: 15:33"""]] -The conference is from ~9:00 AM - 5:00 PM EST (US/Eastern) / ~8:00 AM - 4:00 PM CST (US/Central) / ~7:00 AM - 3:00 PM MST (US/Mountain) / ~6:00 AM - 2:00 PM PST (US/Pacific) / ~2:00 PM - 10:00 PM UTC / ~3:00 PM - 11:00 PM CET (Europe/Paris) / ~4:00 PM - 12:00 AM EET (Europe/Athens) / ~7:30 PM - 3:30 AM IST (Asia/Kolkata) / ~10:00 PM - 6:00 AM +08 (Asia/Singapore) / ~11:00 PM - 7:00 AM JST (Asia/Tokyo). +Jump to: <a href="#gen">General</a> -You can also get this schedule as iCalendar files: <a href="https://media.emacsconf.org/2025/emacsconf.ics">emacsconf.ics</a> - <a href="https://media.emacsconf.org/2025/emacsconf-gen.ics">emacsconf-gen.ics</a> - <a href="https://media.emacsconf.org/2025/emacsconf-dev.ics">emacsconf-dev.ics</a>. Importing that into your calendar should translate things into your local time zone. Alternatively, you can use these time-zone-translated Org files: <https://media.emacsconf.org/2025/schedules/> - -Jump to: <a href="#date-2025-12-06">Sat Dec 6</a> - <a href="#date-2025-12-07">Sun Dec 7</a><a name="date-2025-12-06"></a> -# Saturday Dec 6, 2025 -[[!inline pages="internal(2025/schedule-2025-12-06)" raw="yes"]] - -<div class="schedule" data-start="2025-12-06T14:00:00+0000" data-end="2025-12-06T22:30:00+0000" data-tracks="General,Development"> -[[!template id=sched time="""10""" q-and-a="""<a href="https://pad.emacsconf.org/2025-sat-open">Etherpad</a>""" startutc="""2025-12-06T14:00:00+0000""" endutc="""2025-12-06T14:10:00+0000""" start="""9:00""" end="""9:10""" title="""Saturday opening remarks""" url="""/2025/talks/sat-open""" speakers="""Sacha Chua""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""sat-open""" note="""captioned, video posted, video: 04:51"""]] -[[!template id=sched time="""10""" q-and-a="""<a href="https://pad.emacsconf.org/2025-org-babel">Etherpad</a>""" startutc="""2025-12-06T14:10:00+0000""" endutc="""2025-12-06T14:20:00+0000""" start="""9:10""" end="""9:20""" title="""Making Org-Babel reactive""" url="""/2025/talks/org-babel""" speakers="""Abhinav Tushar""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""org-babel""" note="""captioned, video posted, video: 08:08"""]] -[[!template id=sched time="""25""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-schemacs.html">BBB</a>""" pad="""https://pad.emacsconf.org/2025-schemacs""" startutc="""2025-12-06T14:30:00+0000""" endutc="""2025-12-06T14:55:00+0000""" start="""9:30""" end="""9:55""" title="""One year progress update Schemacs (formerly Gypsum)""" url="""/2025/talks/schemacs""" speakers="""Ramin Honary""" track="""Development""" watch="""https://emacsconf.org/2025/watch/dev""" slug="""schemacs""" note="""captioned, video posted, Q&A posted, video: 23:14, answers: 31:11"""]] -[[!template id=sched time="""25""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-reference.html">BBB</a>""" pad="""https://pad.emacsconf.org/2025-reference""" startutc="""2025-12-06T14:30:00+0000""" endutc="""2025-12-06T14:55:00+0000""" start="""9:30""" end="""9:55""" title="""Emacs as a fully-fledged reference manager""" url="""/2025/talks/reference""" speakers="""Vidianos Giannitsis""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""reference""" note="""captioned, video posted, video: 20:14"""]] -[[!template id=sched time="""25""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-gmail.html">BBB</a>""" pad="""https://pad.emacsconf.org/2025-gmail""" startutc="""2025-12-06T15:15:00+0000""" endutc="""2025-12-06T15:40:00+0000""" start="""10:15""" end="""10:40""" title="""org-gmail: A deep integration of Gmail into your Org Mode""" url="""/2025/talks/gmail""" speakers="""Bala Ramadurai""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""gmail""" note="""captioned, video posted, video: 23:04"""]] -[[!template id=sched time="""20""" q-and-a="""<a href="https://pad.emacsconf.org/2025-juicemacs">Etherpad</a>""" startutc="""2025-12-06T15:15:00+0000""" endutc="""2025-12-06T15:35:00+0000""" start="""10:15""" end="""10:35""" title="""Juicemacs: exploring speculative JIT compilation for ELisp in Java""" url="""/2025/talks/juicemacs""" speakers="""Kana""" track="""Development""" watch="""https://emacsconf.org/2025/watch/dev""" slug="""juicemacs""" note="""captioned, video posted, video: 19:10"""]] -[[!template id=sched time="""25""" q-and-a="""none""" pad="""https://pad.emacsconf.org/2025-swanky""" startutc="""2025-12-06T15:45:00+0000""" endutc="""2025-12-06T16:10:00+0000""" start="""10:45""" end="""11:10""" title="""Swanky Python: Interactive development for Python""" url="""/2025/talks/swanky""" speakers="""Scott Zimmermann""" track="""Development""" watch="""https://emacsconf.org/2025/watch/dev""" slug="""swanky""" note="""captioned, video posted, video: 21:03"""]] -[[!template id=sched time="""25""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-gnus.html">BBB</a>""" pad="""https://pad.emacsconf.org/2025-gnus""" startutc="""2025-12-06T15:50:00+0000""" endutc="""2025-12-06T16:15:00+0000""" start="""10:50""" end="""11:15""" title="""Reading and writing emails in GNU Emacs with Gnus""" url="""/2025/talks/gnus""" speakers="""Amin Bandali""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""gnus""" note="""captioned, video posted, Q&A posted, video: 21:37, answers: 27:00"""]] -[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-python.html">BBB</a>""" pad="""https://pad.emacsconf.org/2025-python""" startutc="""2025-12-06T16:20:00+0000""" endutc="""2025-12-06T16:40:00+0000""" start="""11:20""" end="""11:40""" title="""Interactive Python programming in Emacs""" url="""/2025/talks/python""" speakers="""David Vujic""" track="""Development""" watch="""https://emacsconf.org/2025/watch/dev""" slug="""python""" note="""captioned, video posted, Q&A posted, video: 19:52, answers: 20:10"""]] -[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-latex.html">BBB</a>""" pad="""https://pad.emacsconf.org/2025-latex""" startutc="""2025-12-06T16:25:00+0000""" endutc="""2025-12-06T16:45:00+0000""" start="""11:25""" end="""11:45""" title="""LaTeX export in org-mode: the overhaul""" url="""/2025/talks/latex""" speakers="""Pedro A. Aranda Gutiérrez""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""latex""" note="""video posted, video: 33:53"""]] -[[!template id=sched time="""25""" q-and-a="""<a href="https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen">#emacsconf-gen, speaker nick: lispmacs or lispmacs[work]</a>""" pad="""https://pad.emacsconf.org/2025-calc""" startutc="""2025-12-06T18:00:00+0000""" endutc="""2025-12-06T18:25:00+0000""" start="""1:00""" end="""1:25""" title="""Basic Calc functionality for engineering or electronics""" url="""/2025/talks/calc""" speakers="""Christopher Howard""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""calc""" note="""captioned, video posted, video: 23:35"""]] -[[!template id=sched time="""25""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-llm.html">BBB</a>""" pad="""https://pad.emacsconf.org/2025-llm""" startutc="""2025-12-06T18:00:00+0000""" endutc="""2025-12-06T18:25:00+0000""" start="""1:00""" end="""1:25""" title="""Emacs, editors, and LLM driven workflows""" url="""/2025/talks/llm""" speakers="""Andrew Hyatt""" track="""Development""" watch="""https://emacsconf.org/2025/watch/dev""" slug="""llm""" note="""captioned, video posted, Q&A posted, video: 20:04, answers: 27:34"""]] -[[!template id=sched time="""40""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-blee-lcnt.html">BBB</a>""" pad="""https://pad.emacsconf.org/2025-blee-lcnt""" startutc="""2025-12-06T18:35:00+0000""" endutc="""2025-12-06T19:15:00+0000""" start="""1:35""" end="""2:15""" title="""Blee-LCNT: An Emacs-centered content production and self-publication framework""" url="""/2025/talks/blee-lcnt""" speakers="""Mohsen BANAN""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""blee-lcnt""" note="""captioned, video posted, Q&A posted, video: 36:41, answers: 1:24:10"""]] -[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-private-ai.html">BBB</a>""" pad="""https://pad.emacsconf.org/2025-private-ai""" startutc="""2025-12-06T18:45:00+0000""" endutc="""2025-12-06T19:05:00+0000""" start="""1:45""" end="""2:05""" title="""Emacs and private AI: a great match""" url="""/2025/talks/private-ai""" speakers="""Aaron Grothe""" track="""Development""" watch="""https://emacsconf.org/2025/watch/dev""" slug="""private-ai""" note="""video posted, video: 41:52"""]] -[[!template id=sched time="""30""" q-and-a="""<a href="https://chat.emacsconf.org/?join=emacsconf,emacsconf-dev">#emacsconf-dev, speaker nick: screwlisp</a>""" pad="""https://pad.emacsconf.org/2025-commonlisp""" startutc="""2025-12-06T19:25:00+0000""" endutc="""2025-12-06T19:55:00+0000""" start="""2:25""" end="""2:55""" title="""Common Lisp images communicating like-a-human through shared Emacs slime and eev""" url="""/2025/talks/commonlisp""" speakers="""screwlisp""" track="""Development""" watch="""https://emacsconf.org/2025/watch/dev""" slug="""commonlisp""" note="""captioned, video posted, Q&A posted, video: 25:56, answers: 18:24"""]] -[[!template id=sched time="""5""" q-and-a="""<a href="https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen">#emacsconf-gen, speaker nick: cow_2001</a>""" pad="""https://pad.emacsconf.org/2025-greader""" startutc="""2025-12-06T19:35:00+0000""" endutc="""2025-12-06T19:40:00+0000""" start="""2:35""" end="""2:40""" title="""GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence""" url="""/2025/talks/greader""" speakers="""Yuval Langer""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""greader""" note="""captioned, video posted, video: 04:08"""]] -[[!template id=sched time="""50""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-open-mic.html">BBB</a>""" pad="""https://pad.emacsconf.org/2025-open-mic""" startutc="""2025-12-06T19:50:00+0000""" endutc="""2025-12-06T20:40:00+0000""" start="""2:50""" end="""3:40""" title="""Open session""" url="""/2025/talks/open-mic""" speakers="""Participants""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""open-mic""" note=""""""]] -[[!template id=sched time="""25""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-graphics.html">BBB</a>""" note="""This talk has no narration, only music.""" pad="""https://pad.emacsconf.org/2025-graphics""" startutc="""2025-12-06T20:05:00+0000""" endutc="""2025-12-06T20:30:00+0000""" start="""3:05""" end="""3:30""" title="""Modern Emacs/Elisp hardware/software accelerated graphics""" url="""/2025/talks/graphics""" speakers="""Emanuel Berg""" track="""Development""" watch="""https://emacsconf.org/2025/watch/dev""" slug="""graphics""" note="""captioned, video posted, video: 22:15"""]] -[[!template id=sched time="""10""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-sat-close.html">BBB</a>""" pad="""https://pad.emacsconf.org/2025-sat-close""" startutc="""2025-12-06T21:00:00+0000""" endutc="""2025-12-06T21:10:00+0000""" start="""4:00""" end="""4:10""" title="""Saturday closing remarks / open session""" url="""/2025/talks/sat-close""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""sat-close""" note=""""""]]</div> - -Jump to: <a href="#date-2025-12-06">Sat Dec 6</a> - <a href="#date-2025-12-07">Sun Dec 7</a><a name="date-2025-12-07"></a> -# Sunday Dec 7, 2025 -[[!inline pages="internal(2025/schedule-2025-12-07)" raw="yes"]] - -<div class="schedule" data-start="2025-12-07T14:00:00+0000" data-end="2025-12-07T22:30:00+0000" data-tracks="General,Development"> -[[!template id=sched time="""10""" q-and-a="""<a href="https://pad.emacsconf.org/2025-sun-open">Etherpad</a>""" note="""This is the same as sat-open.""" startutc="""2025-12-07T14:00:00+0000""" endutc="""2025-12-07T14:10:00+0000""" start="""9:00""" end="""9:10""" title="""Sunday opening remarks""" url="""/2025/talks/sun-open""" speakers="""Sacha Chua""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""sun-open""" note="""captioned, video posted, video: 04:51"""]] -[[!template id=sched time="""20""" q-and-a="""<a href="https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen">#emacsconf-gen, speaker nick: edrx</a>""" pad="""https://pad.emacsconf.org/2025-modern""" startutc="""2025-12-07T14:10:00+0000""" endutc="""2025-12-07T14:30:00+0000""" start="""9:10""" end="""9:30""" title="""Some problems of modernizing Emacs""" url="""/2025/talks/modern""" speakers="""Eduardo Ochs""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""modern""" note="""video posted, video: 25:22"""]] -[[!template id=sched time="""35""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-reader.html">BBB</a>""" pad="""https://pad.emacsconf.org/2025-reader""" startutc="""2025-12-07T14:40:00+0000""" endutc="""2025-12-07T15:15:00+0000""" start="""9:40""" end="""10:15""" title="""An introduction to the Emacs Reader""" url="""/2025/talks/reader""" speakers="""Divyá""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""reader""" note="""captioned, video posted, video: 34:37"""]] -[[!template id=sched time="""10""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-weights.html">BBB</a>""" pad="""https://pad.emacsconf.org/2025-weights""" startutc="""2025-12-07T15:35:00+0000""" endutc="""2025-12-07T15:45:00+0000""" start="""10:35""" end="""10:45""" title="""Weightlifting tracking with Emacs on Android""" url="""/2025/talks/weights""" speakers="""Zachary Romero""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""weights""" note="""video posted, video: 30:05"""]] -[[!template id=sched time="""25""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-completion.html">BBB</a>""" pad="""https://pad.emacsconf.org/2025-completion""" startutc="""2025-12-07T16:05:00+0000""" endutc="""2025-12-07T16:25:00+0000""" start="""11:05""" end="""11:25""" title="""corfu+yasnippet: Easier than I thought""" url="""/2025/talks/completion""" speakers="""Pedro A. Aranda Gutiérrez""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""completion""" note="""video posted, video: 22:42"""]] -[[!template id=sched time="""25""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-zettelkasten.html">BBB</a>""" pad="""https://pad.emacsconf.org/2025-zettelkasten""" startutc="""2025-12-07T18:00:00+0000""" endutc="""2025-12-07T18:25:00+0000""" start="""1:00""" end="""1:25""" title="""Zettelkasten for regular Emacs hackers""" url="""/2025/talks/zettelkasten""" speakers="""Christian Tietze""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""zettelkasten""" note="""captioned, video posted, video: 23:18"""]] -[[!template id=sched time="""30""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-hyperboleqa.html">BBB</a>""" note="""No recorded presentation, just live Q&A""" pad="""https://pad.emacsconf.org/2025-hyperboleqa""" startutc="""2025-12-07T18:45:00+0000""" endutc="""2025-12-07T19:15:00+0000""" start="""1:45""" end="""2:15""" title="""Questions and answers to help you fly with Hyperbole""" url="""/2025/talks/hyperboleqa""" speakers="""Bob Weiner""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""hyperboleqa""" note=""""""]] -[[!template id=sched time="""20""" q-and-a="""none""" pad="""https://pad.emacsconf.org/2025-gardening""" startutc="""2025-12-07T19:15:00+0000""" endutc="""2025-12-07T19:35:00+0000""" start="""2:15""" end="""2:35""" title="""Gardening in Emacs: A Windows user's tale of tending, tweaking, and triumph""" url="""/2025/talks/gardening""" speakers="""Marco Bresciani""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""gardening""" note="""captioned, video posted, video: 17:36"""]] -[[!template id=sched time="""35""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-bookclub-tapas.html">BBB</a>""" pad="""https://pad.emacsconf.org/2025-bookclub-tapas""" startutc="""2025-12-07T19:45:00+0000""" endutc="""2025-12-07T20:20:00+0000""" start="""2:45""" end="""3:20""" title="""Bookclub tapas""" url="""/2025/talks/bookclub-tapas""" speakers="""Maddie Sullivan""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""bookclub-tapas""" note="""captioned, video posted, video: 31:25"""]] -[[!template id=sched time="""10""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-sun-close.html">BBB</a>""" pad="""https://pad.emacsconf.org/2025-sun-close""" startutc="""2025-12-07T20:40:00+0000""" endutc="""2025-12-07T20:50:00+0000""" start="""3:40""" end="""3:50""" title="""Sunday closing remarks""" url="""/2025/talks/sun-close""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""sun-close""" note=""""""]]</div><div class="cancelled">Cancelled:<ul><li>A writing day in the life with Org-Mode - Jeremy Friesen</li> -<li>Org-mode GTD vs N-angulator GTD - Kevin Haddock</li> -<li>How Emacs became my authoring playground—no Lisp required - Uli</li> -<li>Studying foreign languages with Emacs, Org Mode and gptel - Marek</li> -<li>From FRDCSA to FLP2: Building AI-Powered Life Planning Systems in Emacs - A Journey from Research to Real-World Impact - Andrew John Dougherty</li> -<li>emacs-claude-code: Intelligent Claude Integration for Emacs - Yusuke Watanabe</li> -<li>An enhanced bibliography in org-mode for scientific research and self-directed learning - Blaine Mooers</li></ul></div>
\ No newline at end of file +<h1 id="dev" class="sched-track Development">Development (8 talks)</h1> +[[!template id=sched resources="""<li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--answers.json">Download --answers.json</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--answers.m4v">Download --answers.m4v (101MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--answers.tsv">Download --answers.tsv</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--answers.txt">Download --answers.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--answers.webm">Download --answers.webm (102MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--main.opus">Download --main.opus (10MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--main.webm">Download --main.webm (63MB)</a></li>""" title="""One year progress update Schemacs (formerly Gypsum)""" url="""/2025/talks/schemacs""" speakers="""Ramin Honary""" watch="""https://emacsconf.org/2025/watch/dev""" slug="""schemacs""" note="""captioned, video posted, Q&A posted, video: 23:14, answers: 31:11"""]] +[[!template id=sched resources="""<li><a href="https://media.emacsconf.org/2025/emacsconf-2025-juicemacs--juicemacs-exploring-speculative-jit-compilation-for-elisp-in-java--kana--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-juicemacs--juicemacs-exploring-speculative-jit-compilation-for-elisp-in-java--kana--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-juicemacs--juicemacs-exploring-speculative-jit-compilation-for-elisp-in-java--kana--main.opus">Download --main.opus (17MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-juicemacs--juicemacs-exploring-speculative-jit-compilation-for-elisp-in-java--kana--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-juicemacs--juicemacs-exploring-speculative-jit-compilation-for-elisp-in-java--kana--main.webm">Download --main.webm (38MB)</a></li>""" title="""Juicemacs: exploring speculative JIT compilation for ELisp in Java""" url="""/2025/talks/juicemacs""" speakers="""Kana""" watch="""https://emacsconf.org/2025/watch/dev""" slug="""juicemacs""" note="""captioned, video posted, video: 19:10"""]] +[[!template id=sched resources="""<li><a href="https://media.emacsconf.org/2025/emacsconf-2025-swanky--swanky-python-interactive-development-for-python--scott-zimmermann--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-swanky--swanky-python-interactive-development-for-python--scott-zimmermann--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-swanky--swanky-python-interactive-development-for-python--scott-zimmermann--main.opus">Download --main.opus (18MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-swanky--swanky-python-interactive-development-for-python--scott-zimmermann--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-swanky--swanky-python-interactive-development-for-python--scott-zimmermann--main.webm">Download --main.webm (56MB)</a></li>""" title="""Swanky Python: Interactive development for Python""" url="""/2025/talks/swanky""" speakers="""Scott Zimmermann""" watch="""https://emacsconf.org/2025/watch/dev""" slug="""swanky""" note="""captioned, video posted, video: 21:03"""]] +[[!template id=sched resources="""<li><a href="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--answers.json">Download --answers.json</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--answers.m4v">Download --answers.m4v (75MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--answers.tsv">Download --answers.tsv</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--answers.txt">Download --answers.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--answers.webm">Download --answers.webm (71MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--main.opus">Download --main.opus (11MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--main.webm">Download --main.webm (37MB)</a></li>""" title="""Interactive Python programming in Emacs""" url="""/2025/talks/python""" speakers="""David Vujic""" watch="""https://emacsconf.org/2025/watch/dev""" slug="""python""" note="""captioned, video posted, Q&A posted, video: 19:52, answers: 20:10"""]] +[[!template id=sched resources="""<li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--answers.json">Download --answers.json</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--answers.m4v">Download --answers.m4v (94MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--answers.tsv">Download --answers.tsv</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--answers.txt">Download --answers.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--answers.webm">Download --answers.webm (91MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--main.opus">Download --main.opus (17MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--main.webm">Download --main.webm (45MB)</a></li>""" title="""Emacs, editors, and LLM driven workflows""" url="""/2025/talks/llm""" speakers="""Andrew Hyatt""" watch="""https://emacsconf.org/2025/watch/dev""" slug="""llm""" note="""captioned, video posted, Q&A posted, video: 20:04, answers: 27:34"""]] +[[!template id=sched resources="""<li><a href="https://media.emacsconf.org/2025/emacsconf-2025-private-ai--emacs-and-private-ai-a-great-match--aaron-grothe--answers.json">Download --answers.json (1015kB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-private-ai--emacs-and-private-ai-a-great-match--aaron-grothe--answers.m4v">Download --answers.m4v (106MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-private-ai--emacs-and-private-ai-a-great-match--aaron-grothe--answers.opus">Download --answers.opus (22MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-private-ai--emacs-and-private-ai-a-great-match--aaron-grothe--answers.tsv">Download --answers.tsv</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-private-ai--emacs-and-private-ai-a-great-match--aaron-grothe--answers.txt">Download --answers.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-private-ai--emacs-and-private-ai-a-great-match--aaron-grothe--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-private-ai--emacs-and-private-ai-a-great-match--aaron-grothe--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-private-ai--emacs-and-private-ai-a-great-match--aaron-grothe--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-private-ai--emacs-and-private-ai-a-great-match--aaron-grothe--main.opus">Download --main.opus (3MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-private-ai--emacs-and-private-ai-a-great-match--aaron-grothe--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-private-ai--emacs-and-private-ai-a-great-match--aaron-grothe--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-private-ai--emacs-and-private-ai-a-great-match--aaron-grothe--main.webm">Download --main.webm (44MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-private-ai--emacs-and-private-ai-a-great-match--aaron-grothe--slides.pdf">Download --slides.pdf</a></li>""" title="""Emacs and private AI: a great match""" url="""/2025/talks/private-ai""" speakers="""Aaron Grothe""" watch="""https://emacsconf.org/2025/watch/dev""" slug="""private-ai""" note="""video posted, video: 41:52"""]] +[[!template id=sched resources="""<li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--answers.json">Download --answers.json</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--answers.m4v">Download --answers.m4v (33MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--answers.tsv">Download --answers.tsv</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--answers.txt">Download --answers.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--debugged.png">Download --debugged.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--main.opus">Download --main.opus (23MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--main.org">Download --main.org</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--main.webm">Download --main.webm (63MB)</a></li>""" title="""Common Lisp images communicating like-a-human through shared Emacs slime and eev""" url="""/2025/talks/commonlisp""" speakers="""screwlisp""" watch="""https://emacsconf.org/2025/watch/dev""" slug="""commonlisp""" note="""captioned, video posted, Q&A posted, video: 25:56, answers: 18:24"""]] +[[!template id=sched resources="""<li><a href="https://media.emacsconf.org/2025/emacsconf-2025-graphics--modern-emacselisp-hardwaresoftware-accelerated-graphics--emanuel-berg--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-graphics--modern-emacselisp-hardwaresoftware-accelerated-graphics--emanuel-berg--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-graphics--modern-emacselisp-hardwaresoftware-accelerated-graphics--emanuel-berg--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-graphics--modern-emacselisp-hardwaresoftware-accelerated-graphics--emanuel-berg--main.opus">Download --main.opus (18MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-graphics--modern-emacselisp-hardwaresoftware-accelerated-graphics--emanuel-berg--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-graphics--modern-emacselisp-hardwaresoftware-accelerated-graphics--emanuel-berg--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-graphics--modern-emacselisp-hardwaresoftware-accelerated-graphics--emanuel-berg--main.webm">Download --main.webm (56MB)</a></li>""" title="""Modern Emacs/Elisp hardware/software accelerated graphics""" url="""/2025/talks/graphics""" speakers="""Emanuel Berg""" watch="""https://emacsconf.org/2025/watch/dev""" slug="""graphics""" note="""captioned, video posted, video: 22:15"""]]
\ No newline at end of file diff --git a/2025/schedule-image.md b/2025/schedule-image.md index 96b64981..97dd8ac5 100644 --- a/2025/schedule-image.md +++ b/2025/schedule-image.md @@ -1 +1 @@ -<div class="schedule-svg-container"><svg width="800" height="300" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Graphical view of the schedule</title> <g transform="translate(0,0)"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2025/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:10 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(13,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2025/talks/org-babel" title="Making Org-Babel reactive" data-slug="org-babel"> <title> 9:10- 9:20 Making Org-Babel reactive</title> <rect x="15" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(28,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> org-babel</text></g></a> <a href="/2025/talks/reference" title="Emacs as a fully-fledged reference manager" data-slug="reference"> <title> 9:30- 9:55 Emacs as a fully-fledged reference manager</title> <rect x="47" y="15" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(84,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> reference</text></g></a> <a href="/2025/talks/gmail" title="org-gmail: A deep integration of Gmail into your Org Mode" data-slug="gmail"> <title> 10:15-10:40 org-gmail: A deep integration of Gmail into your Org Mode</title> <rect x="117" y="15" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(154,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gmail</text></g></a> <a href="/2025/talks/gnus" title="Reading and writing emails in GNU Emacs with Gnus" data-slug="gnus"> <title> 10:50-11:15 Reading and writing emails in GNU Emacs with Gnus</title> <rect x="172" y="15" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(209,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gnus</text></g></a> <a href="/2025/talks/latex" title="LaTeX export in org-mode: the overhaul" data-slug="latex"> <title> 11:25-11:45 LaTeX export in org-mode: the overhaul</title> <rect x="227" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(256,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> latex</text></g></a> <a href="/2025/talks/calc" title="Basic Calc functionality for engineering or electronics" data-slug="calc"> <title> 1:00- 1:25 Basic Calc functionality for engineering or electronics</title> <rect x="376" y="15" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(413,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> calc</text></g></a> <a href="/2025/talks/blee-lcnt" title="Blee-LCNT: An Emacs-centered content production and self-publication framework" data-slug="blee-lcnt"> <title> 1:35- 2:15 Blee-LCNT: An Emacs-centered content production and self-publication framework</title> <rect x="431" y="15" opacity="0.8" width="62" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> blee-lcnt</text></g></a> <a href="/2025/talks/greader" title="GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence" data-slug="greader"> <title> 2:35- 2:40 GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence</title> <rect x="525" y="15" opacity="0.8" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(530,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> greader</text></g></a> <a href="/2025/talks/open-mic" title="Open session" data-slug="open-mic"> <title> 2:50- 3:40 Open session</title> <rect x="549" y="15" opacity="0.8" width="78" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(625,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> open-mic</text></g></a> <a href="/2025/talks/sat-close" title="Saturday closing remarks / open session" data-slug="sat-close"> <title> 4:00- 4:10 Saturday closing remarks / open session</title> <rect x="658" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(671,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2025/talks/schemacs" title="One year progress update Schemacs (formerly Gypsum)" data-slug="schemacs"> <title> 9:30- 9:55 One year progress update Schemacs (formerly Gypsum)</title> <rect x="47" y="75" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(84,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> schemacs</text></g></a> <a href="/2025/talks/juicemacs" title="Juicemacs: exploring speculative JIT compilation for ELisp in Java" data-slug="juicemacs"> <title> 10:15-10:35 Juicemacs: exploring speculative JIT compilation for ELisp in Java</title> <rect x="117" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(146,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> juicemacs</text></g></a> <a href="/2025/talks/swanky" title="Swanky Python: Interactive development for Python" data-slug="swanky"> <title> 10:45-11:10 Swanky Python: Interactive development for Python</title> <rect x="164" y="75" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(201,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> swanky</text></g></a> <a href="/2025/talks/python" title="Interactive Python programming in Emacs" data-slug="python"> <title> 11:20-11:40 Interactive Python programming in Emacs</title> <rect x="219" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(248,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <a href="/2025/talks/llm" title="Emacs, editors, and LLM driven workflows" data-slug="llm"> <title> 1:00- 1:25 Emacs, editors, and LLM driven workflows</title> <rect x="376" y="75" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(413,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> llm</text></g></a> <a href="/2025/talks/private-ai" title="Emacs and private AI: a great match" data-slug="private-ai"> <title> 1:45- 2:05 Emacs and private AI: a great match</title> <rect x="447" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(476,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> private-ai</text></g></a> <a href="/2025/talks/commonlisp" title="Common Lisp images communicating like-a-human through shared Emacs slime and eev" data-slug="commonlisp"> <title> 2:25- 2:55 Common Lisp images communicating like-a-human through shared Emacs slime and eev</title> <rect x="509" y="75" opacity="0.8" width="47" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(554,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> commonlisp</text></g></a> <a href="/2025/talks/graphics" title="Modern Emacs/Elisp hardware/software accelerated graphics" data-slug="graphics"> <title> 3:05- 3:30 Modern Emacs/Elisp hardware/software accelerated graphics</title> <rect x="572" y="75" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(609,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> graphics</text></g></a> <g transform="translate(0,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 5 PM</text></g></g> <g transform="translate(0,150)"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2025/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:10 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(13,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2025/talks/modern" title="Some problems of modernizing Emacs" data-slug="modern"> <title> 9:10- 9:30 Some problems of modernizing Emacs</title> <rect x="15" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(44,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> modern</text></g></a> <a href="/2025/talks/reader" title="An introduction to the Emacs Reader" data-slug="reader"> <title> 9:40-10:15 An introduction to the Emacs Reader</title> <rect x="62" y="15" opacity="0.8" width="54" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(114,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> reader</text></g></a> <a href="/2025/talks/weights" title="Weightlifting tracking with Emacs on Android" data-slug="weights"> <title> 10:35-10:45 Weightlifting tracking with Emacs on Android</title> <rect x="149" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(162,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> weights</text></g></a> <a href="/2025/talks/completion" title="corfu+yasnippet: Easier than I thought" data-slug="completion"> <title> 11:05-11:25 corfu+yasnippet: Easier than I thought</title> <rect x="196" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(225,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> completion</text></g></a> <a href="/2025/talks/zettelkasten" title="Zettelkasten for regular Emacs hackers" data-slug="zettelkasten"> <title> 1:00- 1:25 Zettelkasten for regular Emacs hackers</title> <rect x="376" y="15" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(413,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> zettelkasten</text></g></a> <a href="/2025/talks/hyperboleqa" title="Questions and answers to help you fly with Hyperbole" data-slug="hyperboleqa"> <title> 1:45- 2:15 Questions and answers to help you fly with Hyperbole</title> <rect x="447" y="15" opacity="0.8" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(492,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperboleqa</text></g></a> <a href="/2025/talks/gardening" title="Gardening in Emacs: A Windows user's tale of tending, tweaking, and triumph" data-slug="gardening"> <title> 2:15- 2:35 Gardening in Emacs: A Windows user's tale of tending, tweaking, and triumph</title> <rect x="494" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(523,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gardening</text></g></a> <a href="/2025/talks/bookclub-tapas" title="Bookclub tapas" data-slug="bookclub-tapas"> <title> 2:45- 3:20 Bookclub tapas</title> <rect x="541" y="15" opacity="0.8" width="54" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(593,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> bookclub-tapas</text></g></a> <a href="/2025/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 3:40- 3:50 Sunday closing remarks</title> <rect x="627" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(640,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <g transform="translate(0,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,3)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="140" font-size="10" text-anchor="left"> 5 PM</text></g></g></svg></div>
\ No newline at end of file +<div class="schedule-svg-container"><svg width="800" height="300" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Graphical view of the schedule</title><g transform="translate(0,0)"><title>Schedule for Saturday</title><rect width="800" height="150" x="0" y="0" fill="white"></rect><text font-size="10" fill="black" y="12" x="3">Saturday</text><a href="/2025/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"><title> 9:00- 9:10 Saturday opening remarks</title><rect x="0" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(13,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-open</text></g></a><a href="/2025/talks/org-babel" title="Making Org-Babel reactive" data-slug="org-babel"><title> 9:10- 9:20 Making Org-Babel reactive</title><rect x="15" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(28,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">org-babel</text></g></a><a href="/2025/talks/reference" title="Emacs as a fully-fledged reference manager" data-slug="reference"><title> 9:30- 9:55 Emacs as a fully-fledged reference manager</title><rect x="47" y="15" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(84,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">reference</text></g></a><a href="/2025/talks/gmail" title="org-gmail: A deep integration of Gmail into your Org Mode" data-slug="gmail"><title>10:15-10:40 org-gmail: A deep integration of Gmail into your Org Mode</title><rect x="117" y="15" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(154,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">gmail</text></g></a><a href="/2025/talks/gnus" title="Reading and writing emails in GNU Emacs with Gnus" data-slug="gnus"><title>10:50-11:15 Reading and writing emails in GNU Emacs with Gnus</title><rect x="172" y="15" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(209,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">gnus</text></g></a><a href="/2025/talks/latex" title="LaTeX export in org-mode: the overhaul" data-slug="latex"><title>11:25-11:45 LaTeX export in org-mode: the overhaul</title><rect x="227" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(256,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">latex</text></g></a><a href="/2025/talks/calc" title="Basic Calc functionality for engineering or electronics" data-slug="calc"><title> 1:00- 1:25 Basic Calc functionality for engineering or electronics</title><rect x="376" y="15" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(413,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">calc</text></g></a><a href="/2025/talks/blee-lcnt" title="Blee-LCNT: An Emacs-centered content production and self-publication framework" data-slug="blee-lcnt"><title> 1:35- 2:15 Blee-LCNT: An Emacs-centered content production and self-publication framework</title><rect x="431" y="15" opacity="0.8" width="62" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(491,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">blee-lcnt</text></g></a><a href="/2025/talks/greader" title="GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence" data-slug="greader"><title> 2:35- 2:40 GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence</title><rect x="525" y="15" opacity="0.8" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(530,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">greader</text></g></a><a href="/2025/talks/open-mic" title="Open session" data-slug="open-mic"><title> 2:50- 3:40 Open session</title><rect x="549" y="15" opacity="0.8" width="78" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(625,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">open-mic</text></g></a><a href="/2025/talks/sat-close" title="Saturday closing remarks / open session" data-slug="sat-close"><title> 4:00- 4:10 Saturday closing remarks / open session</title><rect x="658" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(671,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="/2025/talks/schemacs" title="One year progress update Schemacs (formerly Gypsum)" data-slug="schemacs"><title> 9:30- 9:55 One year progress update Schemacs (formerly Gypsum)</title><rect x="47" y="75" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(84,133)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">schemacs</text></g></a><a href="/2025/talks/juicemacs" title="Juicemacs: exploring speculative JIT compilation for ELisp in Java" data-slug="juicemacs"><title>10:15-10:35 Juicemacs: exploring speculative JIT compilation for ELisp in Java</title><rect x="117" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(146,133)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">juicemacs</text></g></a><a href="/2025/talks/swanky" title="Swanky Python: Interactive development for Python" data-slug="swanky"><title>10:45-11:10 Swanky Python: Interactive development for Python</title><rect x="164" y="75" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(201,133)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">swanky</text></g></a><a href="/2025/talks/python" title="Interactive Python programming in Emacs" data-slug="python"><title>11:20-11:40 Interactive Python programming in Emacs</title><rect x="219" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(248,133)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">python</text></g></a><a href="/2025/talks/llm" title="Emacs, editors, and LLM driven workflows" data-slug="llm"><title> 1:00- 1:25 Emacs, editors, and LLM driven workflows</title><rect x="376" y="75" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(413,133)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llm</text></g></a><a href="/2025/talks/private-ai" title="Emacs and private AI: a great match" data-slug="private-ai"><title> 1:45- 2:05 Emacs and private AI: a great match</title><rect x="447" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(476,133)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">private-ai</text></g></a><a href="/2025/talks/commonlisp" title="Common Lisp images communicating like-a-human through shared Emacs slime and eev" data-slug="commonlisp"><title> 2:25- 2:55 Common Lisp images communicating like-a-human through shared Emacs slime and eev</title><rect x="509" y="75" opacity="0.8" width="47" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(554,133)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">commonlisp</text></g></a><a href="/2025/talks/graphics" title="Modern Emacs/Elisp hardware/software accelerated graphics" data-slug="graphics"><title> 3:05- 3:30 Modern Emacs/Elisp hardware/software accelerated graphics</title><rect x="572" y="75" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(609,133)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">graphics</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">9 AM</text></g><g transform="translate(94,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">10 AM</text></g><g transform="translate(188,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">11 AM</text></g><g transform="translate(282,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">12 PM</text></g><g transform="translate(376,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">1 PM</text></g><g transform="translate(470,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">2 PM</text></g><g transform="translate(564,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">3 PM</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">4 PM</text></g><g transform="translate(752,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">5 PM</text></g></g><g transform="translate(0,150)"><title>Schedule for Sunday</title><rect width="800" height="150" x="0" y="0" fill="white"></rect><text font-size="10" fill="black" y="12" x="3">Sunday</text><a href="/2025/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"><title> 9:00- 9:10 Sunday opening remarks</title><rect x="0" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(13,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-open</text></g></a><a href="/2025/talks/modern" title="Some problems of modernizing Emacs" data-slug="modern"><title> 9:10- 9:30 Some problems of modernizing Emacs</title><rect x="15" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(44,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">modern</text></g></a><a href="/2025/talks/reader" title="An introduction to the Emacs Reader" data-slug="reader"><title> 9:40-10:15 An introduction to the Emacs Reader</title><rect x="62" y="15" opacity="0.8" width="54" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(114,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">reader</text></g></a><a href="/2025/talks/weights" title="Weightlifting tracking with Emacs on Android" data-slug="weights"><title>10:35-10:45 Weightlifting tracking with Emacs on Android</title><rect x="149" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(162,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">weights</text></g></a><a href="/2025/talks/completion" title="corfu+yasnippet: Easier than I thought" data-slug="completion"><title>11:05-11:25 corfu+yasnippet: Easier than I thought</title><rect x="196" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(225,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">completion</text></g></a><a href="/2025/talks/zettelkasten" title="Zettelkasten for regular Emacs hackers" data-slug="zettelkasten"><title> 1:00- 1:25 Zettelkasten for regular Emacs hackers</title><rect x="376" y="15" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(413,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">zettelkasten</text></g></a><a href="/2025/talks/hyperboleqa" title="Questions and answers to help you fly with Hyperbole" data-slug="hyperboleqa"><title> 1:45- 2:15 Questions and answers to help you fly with Hyperbole</title><rect x="447" y="15" opacity="0.8" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(492,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">hyperboleqa</text></g></a><a href="/2025/talks/gardening" title="Gardening in Emacs: A Windows user's tale of tending, tweaking, and triumph" data-slug="gardening"><title> 2:15- 2:35 Gardening in Emacs: A Windows user's tale of tending, tweaking, and triumph</title><rect x="494" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(523,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">gardening</text></g></a><a href="/2025/talks/bookclub-tapas" title="Bookclub tapas" data-slug="bookclub-tapas"><title> 2:45- 3:20 Bookclub tapas</title><rect x="541" y="15" opacity="0.8" width="54" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(593,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bookclub-tapas</text></g></a><a href="/2025/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"><title> 3:40- 3:50 Sunday closing remarks</title><rect x="627" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(640,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sun-close</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">9 AM</text></g><g transform="translate(94,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">10 AM</text></g><g transform="translate(188,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">11 AM</text></g><g transform="translate(282,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">12 PM</text></g><g transform="translate(376,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">1 PM</text></g><g transform="translate(470,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">2 PM</text></g><g transform="translate(564,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">3 PM</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">4 PM</text></g><g transform="translate(752,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">5 PM</text></g></g></svg></div>
\ No newline at end of file diff --git a/2025/talks.md b/2025/talks.md index b6d7602f..9720e96a 100644 --- a/2025/talks.md +++ b/2025/talks.md @@ -1,7 +1,7 @@ -We're getting ready for EmacsConf 2025. Here are the talks coming up: +Thanks for joining us for EmacsConf 2025. Here are the talks: [[!inline pages="internal(2025/schedule-details)" raw="yes"]] -Want to help make EmacsConf even awesomer? [[Volunteer!|/volunteer]] +We hope to see you next year! -We hope to see you all around on Dec 6-7 for EmacsConf 2025! +Want to help make the next EmacsConf even awesomer? [[Volunteer!|/volunteer]] diff --git a/2025/talks/graphics.md b/2025/talks/graphics.md index 6ff2eb7c..34ba2314 100644 --- a/2025/talks/graphics.md +++ b/2025/talks/graphics.md @@ -13,7 +13,8 @@ Emanuel Berg (he/him) - Pronunciation: Swenglish, IRC: lacni, <https://dataswamp Modern graphics with Emacs with hardware/software acceleration - +- <https://dataswamp.org/~incal/tmp/greeting.webm> +- <https://dataswamp.org/~incal/tmp/kitty-vt.webm> shows the software can be used from a -nw Emacs [[!inline pages="internal(2025/info/graphics-after)" raw="yes"]] diff --git a/organizers-notebook/index.org b/organizers-notebook/index.org index 31bdb3af..e49fe528 100644 --- a/organizers-notebook/index.org +++ b/organizers-notebook/index.org @@ -465,8 +465,8 @@ CLOCK: [2025-11-21 Fri 11:12]--[2025-11-21 Fri 11:14] => 0:02 :END: emacsconf-mail-intro-to-all -*** TODO Record opening remarks -SCHEDULED: <2025-12-02 Tue> +*** DONE Record opening remarks +CLOSED: [2025-12-08 Mon 21:37] SCHEDULED: <2025-12-02 Tue> :PROPERTIES: :CREATED: [2025-11-28 Fri 21:32] :END: @@ -491,6 +491,9 @@ SCHEDULED: <2025-12-02 Tue> - [X] Confirm I can connect to Mumble. - [X] Resize front0 to production: front0 shared Linode 32GB 8 CPUs 640GB $0.2880/hour - [X] Resize live0 to production: shared Linode 64GB 16 CPUs $0.5760/hour + - [X] CONFIRM DISK SIZE +- [X] Resize BBB to production + - [X] CONFIRM DISK SIZE - [X] Start the VNC servers. #+begin_src sh :tangle emacsconf-set-up-tracks.sh #!/bin/bash @@ -583,11 +586,36 @@ elisp:emacsconf-pad-open-shift-hyperlist :PROPERTIES: :CUSTOM_ID: phases-and-lessons-learned-after-the-conference :END: -*** Capture stats +*** DONE Capture stats +CLOSED: [2025-12-07 Sun 17:26] :PROPERTIES: :CUSTOM_ID: phases-and-lessons-learned-after-the-conference-capture-stats :END: -2024 stats + http://live0.emacsconf.org:8001/status.xsl +**** 2025 stats + +Saturday: +gen: 107 + 7 lowres +dev: 97 peak + 7 peak lowres + +Sunday: I forgot to copy icecast stats; maybe 70 peak on gen? + +Sunday: + +- res: + - %Cpu(s): 60.0 us, 6.7 sy, 0.0 ni, 33.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st + - MiB Mem : 48118.6 total, 15679.4 free, 7338.2 used, 26465.2 buff/cache +- bbb: + - CPU%: 3.0 us, 4.0 sy, 3.0 ni, 89.1 id, 0.0 wa, 0.0 hi, 1.0 si, 0.0 st + - Mem: 15988.8 total, 1450.0 free, 3552.0 used, 10986.9 buff/cache +- front: + - %Cpu(s): 2.4 us, 1.6 sy, 0.0 ni, 96.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st + - MiB Mem : 32169.5 total, 28072.2 free, 1257.1 used, 2840.2 buff/cache +- live: + - %Cpu(s): 7.5 us, 8.7 sy, 0.0 ni, 83.3 id, 0.0 wa, 0.0 hi, 0.4 si, 0.0 st + - MiB Mem : 64423.9 total, 56727.6 free, 797.6 used, 6898.8 buff/cache + +**** 2024 stats Saturday: gen: 177 peak + 14 peak lowres @@ -604,25 +632,29 @@ live peak 552% CPU (100% is 1 CPU) average 144% res peak 81.54% total CPU (each OBS ~250%), mem 7GB used so far we have used 1.2TB of transfer this month -*** Back up the data +*** DONE Back up the data +CLOSED: [2025-12-07 Sun 17:26] :PROPERTIES: :CUSTOM_ID: phases-and-lessons-learned-after-the-conference-back-up-the-data :END: +**** Etherpad +elisp:emacsconf-pad-backup-talks + +This creates --pad.html and --pad.md in the cache. + **** Icecast :PROPERTIES: :CUSTOM_ID: phases-and-lessons-learned-after-the-conference-back-up-the-data-icecast :END: -rsync -avze ssh live:'/data/emacsconf-2024-*' media:~/2024 - -rsync -avze ssh live:'/data/emacsconf-2024-*' . +rsync -avzue ssh live:'/data/emacsconf-2025-*' ~/proj/emacsconf/2025/backups **** BigBlueButton :PROPERTIES: :CUSTOM_ID: phases-and-lessons-learned-after-the-conference-back-up-the-data-bigbluebutton :END: -rsync -avze ssh root@bbb:/var/bigbluebutton/ bigbluebutton/ +rsync -avze ssh root@bbb:/var/bigbluebutton/ bbb/ ssh root@66.175.208.243 'dd if=/dev/sda bs=5M ' | dd of=bbb-img-2024-12-08.img status=progress @@ -665,6 +697,24 @@ cd test #+end_src - Copy IRC logs to cache and therefore to backstage: (ex: 2024-12-07-emacsconf-gen.txt) +*** DONE Resize the server disks +CLOSED: [2025-12-07 Sun 17:26] +SSH and use df to check first. Needs to fit under these limits: + +- [X] front0: 25 GB + - [X] disk + - [X] server resized to Nanode 1 GB +- [X] live0: 25 GB + - [X] disk + - [X] server resized to Nanode 1 GB +- [X] bbb: 25 GB + - [X] disk + - [X] server resized to Nanode 1 GB +Shut down the servers after backing up. + +1. In the Linode console, click on the linode. +2. Go to Storage. +3. Use the 3-dot menu on Debian 10 disk to reisze. *** Combine the IRC logs and the pads, and add them to the wiki :PROPERTIES: @@ -693,6 +743,25 @@ Indexing Also copy the YouTube comments and IRC comments emacsconf-extract-irc-anonymize-log + +answers--backstage--split.txt +answers--backstage--split.vtt + +subed-shift-subtitles-to-start-at-timestamp + +ffmpeg -i --answers--backstage--reencoded.webm -ss START-TIME -to END-TIME --answers--backstage--trimmed.webm +ffmpeg -i --answers--backstage--trimmed.opus + +Open --answers--backstage--trimmed.opus in Audacity. Select all the audio with Ctrl+A. Use Filter - Effect - Volume and Compression to normalize it to -16 LUFS. Export to --answers--backstage--normalized.opus + +Use https://studio.youtube.com to upload the video. +Use emacsconf-publish-answers-description to get the answer description, and move the title (and possibly the speaker name) to the video title. +Add the video to the playlist. +Set the ~QA_YOUTUBE_URL~ property. + +Play the preview and jump around to different points in the video to check if there are encoding errors. + + *** Send thank-you emails to the speakers :email: :PROPERTIES: :CUSTOM_ID: phases-and-lessons-learned-after-the-conference-send-thank-you-emails-to-the-speakers @@ -1401,12 +1470,19 @@ If you don't see the video format, doublecheck that [[#general-infrastructure-bi bbb-record seems to call ~ruby /usr/local/bigbluebutton/core/scripts/process/video.rb -m ID~, which might be a useful backup. -*** Backing up BBB :backup: +bbb-record --rebuild 4dc2c4e5ac5222bc416b7e31d76e22a5627aed5b-1765135929727 +bbb-record --rebuild e5fceca22f037945fb7183e118599cf37598936c-1765131855663 + +derp, no space left on the device, that's why, adding to checklist + + +*** DONE Backing up BBB :backup: +CLOSED: [2025-12-07 Sun 16:48] :PROPERTIES: :CUSTOM_ID: general-infrastructure-bigbluebutton-backing-up-bbb :END: -rsync -avze ssh root@bbb:/var/bigbluebutton/ bigbluebutton/ +rsync -avze ssh root@bbb:/var/bigbluebutton/ ~/proj/emacsconf/2025/backups/bbb/ ssh root@bbb 'tar zcvf - /var/bigbluebutton /etc/bigbluebutton /root/greenlight-v3 /usr/local/bigbluebutton /usr/share/bbb-web' > bbb-backup-$(date "+%Y-%m-%d").tar.gz @@ -1460,8 +1536,8 @@ Success: - [X] You can /opall, /conftopic, and /broadcast ** Check test crontab -** TODO Confirm automated IRC announcements from res -SCHEDULED: <2025-11-27 Thu> +** DONE Confirm automated IRC announcements from res +CLOSED: [2025-12-08 Mon 21:36] SCHEDULED: <2025-11-27 Thu> :PROPERTIES: :CUSTOM_ID: general-infrastructure-confirm-automated-irc-announcements-from-res :CREATED: [2025-11-26 Wed 15:04] @@ -1483,7 +1559,7 @@ backup on live: - /usr/local/bin/emacsconf-lowres-gen-on-connect - /usr/local/bin/emacsconf-lowres-dev-on-connect ** Upload talks to YouTube -SCHEDULED: <2024-11-30 Sat> +SCHEDULED: <2025-12-16 Tue> :PROPERTIES: :CREATED: [2024-11-27 Wed 17:33] :CUSTOM_ID: general-infrastructure-upload-talks-to-youtube |
