diff options
Diffstat (limited to '')
104 files changed, 38661 insertions, 473 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..df891f67 --- /dev/null +++ b/2025/captions/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--answers.vtt @@ -0,0 +1,1024 @@ +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.120 +to speak about one question that I saw + +00:00:20.080 --> 00:00:22.879 +come in earlier on the pad, + +NOTE Q: Where do we find all the inputs and outputs you mentioned? + +00:00:22.880 --> 00:00:25.540 +which was all the outputs + +00:00:25.541 --> 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:41.939 +I mentioned the URL for it. I'll show you that as well. + +00:00:41.940 --> 00:00:50.391 +So the URL for it is https://github.com/bxplpc/180068, + +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: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 beamer, + +00:01:24.320 --> 00:01:27.279 +let's take a quick look at the beamer, + +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:40.280 --> 00:01:44.120 +This presentation, left to right, + +00:01:44.121 --> 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 bodyPresArt, + +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 Aeneas + +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 planned 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. + +NOTE Making presentations easier to distribute + +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. + +NOTE Reveal output + +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 bootstrapping 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 BxBlee, + +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:14.999 +you would get a Emacs package ready to go over here. + +NOTE GitHub organizations + +00:08:15.000 --> 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 BISOS 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 Aidermacs. + +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 BISOS in Python is in BISOS-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 +convert it 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. One 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. + +NOTE Challenge of DIY model and recipes + +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 BISOS and BLEE. + +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, BISOS 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 Comeega, which is the inverse of Babel. + +00:13:51.600 --> 00:13:57.479 +And I'd also be interested in feedback on those. + +NOTE Dblocks everywhere + +00:13:57.480 --> 00:14:03.239 +I think the dblocks 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 dblock, + +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 path. + +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 path. + +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 COMEEGA, of course, I've gone + +00:17:07.760 --> 00:17:09.959 +over it through the presentation. + +NOTE Q: What changes have you seen in the culture while developing all these things like libre-halal system and now blee-lcnt? + +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:36.279 +like Libre-halaal system and now Blee-LCNT? + +00:17:36.280 --> 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. + +NOTE Intellectual property rights + +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 IPR regime. + +00:19:30.720 --> 00:19:34.399 +So throughout the FOSS 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 FOSS 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 Affero 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 + +NOTE Q: Given that large AI companies are openly stealing IP and copyright, thereby eroding the authority of such law (and eroding truth itself as well), can you see a future where IP & copyright flaw become untenable and what sort of onwards effect might that have? + +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 Affero 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..aa234934 --- /dev/null +++ b/2025/captions/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--answers.vtt @@ -0,0 +1,995 @@ +WEBVTT + +NOTE Q: I noticed that it took a considerable amount of time to send email. Is it possible to configure gnus to use an external smtp client to send emails? + +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. + +NOTE Q: Is the dovecot workaround actually a solution? + +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 Gnus + +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 Dovecot + +00:03:02.718 --> 00:03:07.117 +for such a setup, for a local setup. + +NOTE Q: Do you have experience with mu4e or Notmuch, and why would you say Gnus is worth using compared to these? + +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:05.319 +Oh, and I will check IRC as well. + +NOTE Q: At my organization, we're forced to use OAuth with outlook and they've also blacklisted all email clients except thunderbird (but they don't support it, only the webmail or the outlook app). Do you know if this is something that can be circumvented in Gnus? + +00:06:05.320 --> 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:34.674 +the user agent header or something, + +00:07:34.640 --> 00:07:37.279 +that's pretty easy to customize and set. + +00:07:37.280 --> 00:07:40.879 +With Gnus, you can set, define a posting style + +00:07:40.880 --> 00:07:43.279 +to set a custom user agent. + +00:07:43.280 --> 00:07:48.719 +So, yeah, that's as far as I know. + +00:07:48.720 --> 00:07:50.079 +Thunderbird is pretty nice too. + +00:07:50.080 --> 00:07:54.159 +Like I reach out for it sometimes + +00:07:54.160 --> 00:07:55.799 +when I'm in a rush or can't, + +00:07:55.800 --> 00:08:00.159 +don't have the time to like set up Gnus with + +00:08:00.160 --> 00:08:04.039 +like some new like IMAP server or something. + +00:08:04.040 --> 00:08:05.519 +I reach for it sometimes, but yeah, + +00:08:05.520 --> 00:08:10.359 +I primarily use Gnus. I see. + +00:08:10.360 --> 00:08:11.719 +So the question says they tried it + +00:08:11.720 --> 00:08:13.279 +with not much and it never worked. + +00:08:13.280 --> 00:08:19.999 +Even KML on Android didn't work. + +00:08:20.000 --> 00:08:23.519 +Right. Yeah, I'm not sure. + +00:08:23.520 --> 00:08:27.039 +If you can like provide maybe more details + +00:08:27.040 --> 00:08:29.319 +as to like what doesn't work + +00:08:29.320 --> 00:08:32.079 +or if you get any particular error messages + +00:08:32.080 --> 00:08:37.359 +or like how they're trying to like prevent you from using it, + +00:08:37.360 --> 00:08:38.439 +then maybe folks could have some ideas + +00:08:38.440 --> 00:08:41.999 +of maybe how to get around that. + +00:08:42.000 --> 00:08:45.999 +Yeah. Let's see, I'm going to go + +00:08:46.000 --> 00:08:59.959 +over and take a look at IRC. Yes, scoring is great. + +00:08:59.960 --> 00:09:02.959 +In it for bankruptcy, + +00:09:02.960 --> 00:09:06.559 +they have mail to use outlook from Gnus, right? + +00:09:06.560 --> 00:09:11.999 +Yeah, there are various like solutions and workarounds. + +00:09:12.000 --> 00:09:23.519 +Yeah, let's see. How's the schedule looking? + +00:09:23.520 --> 00:09:24.519 +I think the next talk + +00:09:24.520 --> 00:09:30.519 +is gonna start pretty soon, if I'm not mistaken. + +00:09:30.520 --> 00:09:34.279 +Yeah, so I believe that's about all the time + +00:09:34.280 --> 00:09:36.799 +that we have on the stream for the Q&A, + +00:09:36.800 --> 00:09:40.759 +but of course I'll hang around here on big blue button + +00:09:40.760 --> 00:09:45.279 +and IRC for a while if folks would like to ask more questions. + +00:09:45.280 --> 00:09:47.279 +And also feel free to email me, + +00:09:47.280 --> 00:09:49.099 +bandali@gnu.org + +00:09:49.100 --> 00:10:31.539 +or at kelar.org with any questions. + +00:10:31.540 --> 00:10:35.719 +Thanks again for the kind words folks, appreciate it. + +00:10:35.720 --> 00:10:38.399 +Yeah, I myself also wish + +00:10:38.400 --> 00:10:41.319 +that there were like some tutorials or something + +00:10:41.320 --> 00:10:43.679 +when I was getting started with Gnus, + +00:10:43.680 --> 00:10:46.119 +but we didn't have that. So, and I've been meaning + +00:10:46.120 --> 00:10:49.999 +to like record a talk like this for years for EmacsConf, + +00:10:50.000 --> 00:10:53.039 +but yeah, funnily enough, after like 10 years of, + +00:10:53.040 --> 00:10:54.919 +at my 10th anniversary + +00:10:54.920 --> 00:10:55.879 +of being involved with the conference, + +00:10:55.880 --> 00:10:57.999 +I finally put together a talk of my own + +00:10:58.000 --> 00:11:08.199 +to talk about configuring Gnus. + +00:11:08.200 --> 00:11:25.959 +Let's see. Oh, I see, I see. + +00:11:25.960 --> 00:11:29.719 +So the organization is doing some kind of check + +00:11:29.720 --> 00:11:41.239 +during setting up of OAuth. + +00:11:41.240 --> 00:11:45.639 +So I think how that works is + +00:11:45.640 --> 00:11:47.399 +sometimes these email clients, + +00:11:47.400 --> 00:11:50.040 +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. + +NOTE Comment: Liked how I started with a clean setup + +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:17:34.659 +Yeah. I'm going to hang out here for a few more minutes. + +NOTE Comment: They would have liked to see a quick demo of Gnus while it is fully configured and tweaked + +00:17:34.660 --> 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. + +NOTE My init file + +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:34.079 +like archive. For example, 2025. + +NOTE Mail splitting + +00:19:34.080 --> 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. + +NOTE Gnus parameters + +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:31.019 +Gnus can integrate with Dired. + +NOTE Custom signatures + +00:21:31.020 --> 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:22:05.019 +I set a signature to that. Yeah. + +NOTE Other customizations + +00:22:05.020 --> 00:22:09.997 +You can write custom like functions to move email around. + +00:22:09.998 --> 00:22:13.919 +So I have this like Gnus chunk article function + +00:22:13.920 --> 00:22:19.117 +that I bind to v s, + +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:41.759 +It has a bunch of customizations. + +00:23:41.760 --> 00:23:44.797 +that you can configure and have Gnus 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--chapters.vtt b/2025/captions/emacsconf-2025-latex--latex-export-in-orgmode-the-overhaul--pedro-a-aranda-gutirrez--main--chapters.vtt new file mode 100644 index 00000000..8b89b14a --- /dev/null +++ b/2025/captions/emacsconf-2025-latex--latex-export-in-orgmode-the-overhaul--pedro-a-aranda-gutirrez--main--chapters.vtt @@ -0,0 +1,41 @@ +WEBVTT + + +00:00:00.000 --> 00:00:41.399 +Introduction + +00:00:41.400 --> 00:02:53.359 +Motivation + +00:02:53.360 --> 00:06:02.479 +Evolution + +00:06:02.480 --> 00:08:47.279 +What do you get from the feature branch? + +00:08:47.280 --> 00:11:59.079 +Behind the scenes: .dir-locals.el + +00:11:59.080 --> 00:15:21.079 +When fontspec is not enough + +00:15:21.080 --> 00:18:34.479 +Rationale behind my take at LaTeX font management + +00:18:34.480 --> 00:22:57.474 +Demonstrations + +00:22:57.475 --> 00:23:33.179 +Demo: Emoji + +00:23:33.180 --> 00:25:44.399 +Demo: Letter + +00:25:44.400 --> 00:28:12.599 +Demo: Side by side + +00:28:12.600 --> 00:29:47.119 +Thanks + +00:29:47.120 --> 00:32:34.599 +Q: What about video (mp4) support for ox-latex? 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..5a734387 --- /dev/null +++ b/2025/captions/emacsconf-2025-latex--latex-export-in-orgmode-the-overhaul--pedro-a-aranda-gutirrez--main.vtt @@ -0,0 +1,1437 @@ +WEBVTT captioned by sachac + +NOTE Introduction + +00:00:00.140 --> 00:00:04.456 +Okay. Good afternoon, morning or evening, + +00:00:04.457 --> 00:00:06.519 +whatever it is in your time 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. + +NOTE Motivation + +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 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:21.479 +So, requirements from the Emacs side 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 a new Mac, + +00:02:40.600 --> 00:02:47.359 +and I'm able now to get my vanilla Emacs within four. + +00:02:47.360 --> 00:02:53.359 +So that was a big accomplishment in these last days. + +NOTE Evolution + +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 ox-latex + +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 header, 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 Polyglossia. + +00:04:02.880 --> 00:04:06.199 +and it was made basically for font LaTeX + +00:04:06.200 --> 00:04:08.839 +although some of the things can... for lualatex + +00:04:08.840 --> 00:04:14.279 +and some of the things can also be used with xelatex. + +00:04:14.280 --> 00:04:16.519 +So overriding template fonts + +00:04:16.520 --> 00:04:21.279 +and taking into account fallback fonts + +00:04:21.280 --> 00:04:23.839 +was something that I learned + +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.407 +is that fallback fonts only work for lualatex + +00:04:34.408 --> 00:04:36.307 +because xelatex doesn't support them. + +00:04:36.308 --> 00:04:40.540 +Actually, fallback fonts is a lua feature. + +00:04:40.541 --> 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 Juan M. Macias 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 +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:14.174 +which was when we started talking + +00:05:14.175 --> 00:05:19.039 +about internationalization or localization. + +00:05:19.040 --> 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. + +NOTE What do you get from the feature branch? + +00:06:02.480 --> 00:06:04.955 +What do you get from the feature branch? + +00:06:04.956 --> 00:06:08.999 +The feature branch adds font management for fontspec, + +00:06:09.000 --> 00:06:10.839 +which is not strictly needed + +00:06:10.840 --> 00:06:14.919 +when you are on Latin, Cyrillic, and Greek scripts + +00:06:14.920 --> 00:06:18.579 +as long as the fonts in your template support them. + +00:06:18.580 --> 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 fallback fonts. + +00:06:59.360 --> 00:07:05.319 +So my idea is that the next thing that you can add + +00:07:05.320 --> 00:07:07.319 +is Babel and Polyglossia 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 +Then what I've added is a keyword + +00:07:32.640 --> 00:07:34.279 +which is `#+LATEX_MULTI_LANG:` + +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 Org Mode + +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 +Jing Huang 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 really helpful and a big thanks to him + +00:08:06.800 --> 00:08:10.974 +because he also had an easy idea + +00:08:10.975 --> 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:21.859 +that you're going to write your document in. + +00:08:21.860 --> 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 PDF, + +00:08:40.040 --> 00:08:47.279 +and I compare whether it is correct or not. + +NOTE Behind the scenes: .dir-locals.el + +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 this famous .dir-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 font 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.239 +And there you can even configure a lot of compiler + +00:09:54.240 --> 00:09:56.839 +and font language management too, + +00:09:56.840 --> 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:03.739 +This is something that is provided by you + +00:11:03.740 --> 00:11:05.359 +through the fontspec 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 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:15.779 +or your own challenge, + +00:11:15.780 --> 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 the font that where you want to replace this. + +00:11:31.240 --> 00:11:37.339 +This is what I'm doing right now for this presentation, and you will see... + +00:11:37.340 --> 00:11:39.119 +You can always, as I've said, + +00:11:39.120 --> 00:11:42.359 +you can always have your dir-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 dir-locals.el file. + +NOTE When fontspec is not enough + +00:11:59.080 --> 00:12:05.439 +So, fontspec is normally enough, + +00:12:05.440 --> 00:12:09.379 +but sometimes, you can't control all the fonts + +00:12:09.380 --> 00:12:15.479 +with fontspec only, 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.119 +that you are working in an intended language, + +00:12:25.120 --> 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 variables + +00:12:42.560 --> 00:12:48.679 +to configure both fontspec, 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 Thai. + +00:13:05.600 --> 00:13:09.999 +So, and I found an example in the internet + +00:13:10.000 --> 00:13:13.359 +that tells me that I'm going to be using Babel. + +00:13:13.360 --> 00:13:15.079 +Main is going to be English. + +00:13:15.080 --> 00:13:20.339 +And I'm also going to have Thai. + +00:13:20.340 --> 00:13:23.840 +And then they tell me that, for English, + +00:13:23.841 --> 00:13:26.639 +I'm going to be using Noto Serif for the main, + +00:13:26.640 --> 00:13:30.082 +for the main of the serif font, + +00:13:30.083 --> 00:13:31.759 +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:41.106 +I'm going to be using Noto Serif Thai and Noto Sans Thai. + +00:13:41.107 --> 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.107 +is, for example, the language. + +00:14:05.108 --> 00:14:07.774 +The language here is Thai. You have the language + +00:14:07.775 --> 00:14:10.559 +that you're intending this font for is Thai. + +00:14:10.560 --> 00:14:16.319 +So this appears here. In case you don't have any language, + +00:14:16.320 --> 00:14:19.439 +like in the first two lines, + +00:14:19.440 --> 00:14:21.039 +you just say that the language is nil, + +00:14:21.040 --> 00:14:23.959 +which is the language for the default language. + +00:14:23.960 --> 00:14:26.799 +The other thing is in my example, + +00:14:26.800 --> 00:14:29.374 +in this example that I found in the Internet, + +00:14:29.375 --> 00:14:40.174 +I have my properties for the fonts in this part in LaTeX, + +00:14:40.175 --> 00:14:43.907 +and I put them as properties here. + +00:14:43.908 --> 00:14:53.519 +That's the whole idea behind the feature branch. + +00:14:53.520 --> 00:15:01.640 +The babelprovide part is generated or is also integrated + +00:15:01.641 --> 00:15:11.319 +from the Org header, mainly from the language line. + +00:15:11.320 --> 00:15:14.600 +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. + +NOTE Rationale behind my take at LaTeX font management + +00:15:21.080 --> 00:15:27.679 +So what is the rationale behind my take at LaTeX font management? + +00:15:27.680 --> 00:15:31.359 +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 xelatex, + +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 fontspec + +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 LaTeX backend assumes that you want the dates, + +00:16:16.520 --> 00:16:18.599 +standard names for the abstract and so on + +00:16:18.600 --> 00:16:21.039 +in American English, if you're using them. + +00:16:21.040 --> 00:16:24.759 +In many cases, you're not using any sort of + +00:16:24.760 --> 00:16:26.274 +abstract, table of contents, and so on, + +00:16:26.275 --> 00:16:27.879 +and you don't need that. + +00:16:27.880 --> 00:16:34.119 +The important thing is maybe date management. + +00:16:34.120 --> 00:16:36.199 +If you need dates, headings + +00:16:36.200 --> 00:16:40.359 +or anything in any other language or locale, + +00:16:40.360 --> 00:16:46.199 +then yes, then you need to use Babel or Polyglossia. + +00:16:46.200 --> 00:16:52.959 +Choice, Depends. Can use polyglossia here, + +00:16:52.960 --> 00:16:56.039 +or you can use Babel, whatever you want. + +00:16:56.040 --> 00:16:58.599 +Also, in some cases, it will depend + +00:16:58.600 --> 00:17:00.399 +if you've been researching a bit + +00:17:00.400 --> 00:17:02.439 +of how this is done with pure LaTeX, + +00:17:02.440 --> 00:17:05.639 +it will be also depending on, uh, + +00:17:05.640 --> 00:17:07.799 +on the examples that you get. + +00:17:07.800 --> 00:17:10.999 +So, what can you, when you are using + +00:17:11.000 --> 00:17:12.639 +Babel or Polyglossia here, what do you have? + +00:17:12.640 --> 00:17:16.919 +You have your dates, your headings, and so on. + +00:17:16.920 --> 00:17:20.999 +You might need to control the text + +00:17:21.000 --> 00:17:22.919 +in the sense that what passage + +00:17:22.920 --> 00:17:24.519 +is written in what language. + +00:17:24.520 --> 00:17:29.159 +For example, for things like hyphenation + +00:17:29.160 --> 00:17:37.119 +and some ways of writing the hyphens in a + +00:17:37.120 --> 00:17:42.519 +and direct speech and things like that. + +00:17:42.520 --> 00:17:45.519 +And the other place where you need + +00:17:45.520 --> 00:17:47.279 +other Babel or Polyglossia here, + +00:17:47.280 --> 00:17:50.439 +and you will see that, because all examples + +00:17:50.440 --> 00:17:53.319 +that you can get for later, in this case, + +00:17:53.320 --> 00:17:56.140 +is when you have a language + +00:17:56.141 --> 00:17:59.407 +that uses right to left alignment + +00:17:59.408 --> 00:18:06.439 +like Arabic, Hebrew and others. + +00:18:06.440 --> 00:18:14.479 +So one note of, I would say, care is you always use the, + +00:18:14.480 --> 00:18:16.639 +if you use Unicode fonts + +00:18:16.640 --> 00:18:19.719 +that includes the scripts as you need, + +00:18:19.720 --> 00:18:28.239 +you will have done, that will be a great leap for you + +00:18:28.240 --> 00:18:34.479 +because that simplifies the configuration a lot. + +NOTE Demonstrations + +00:18:34.480 --> 00:18:36.839 +Now, a couple of demos. + +00:18:36.840 --> 00:18:39.319 +I don't know if you've noticed + +00:18:39.320 --> 00:18:43.199 +first demo is that I'm using + +00:18:43.200 --> 00:18:47.519 +fonts that are not the official fonts + +00:18:47.520 --> 00:18:48.959 +in this Beamer template, + +00:18:48.960 --> 00:18:51.399 +which is by the way Boadilla. + +00:18:51.400 --> 00:18:53.959 +This would be the first thing. + +00:18:53.960 --> 00:18:56.599 +So I've been using other fonts, + +00:18:56.600 --> 00:19:01.679 +and they are, at least from what I get in class, + +00:19:01.680 --> 00:19:03.759 +they are more readable than the official... + +00:19:03.760 --> 00:19:06.279 +than the default fonts in Polyglossia, + +00:19:06.280 --> 00:19:12.239 +that you get in Babel for the Boadilla theme. + +00:19:12.240 --> 00:19:14.319 +Another thing is what I've told you, + +00:19:14.320 --> 00:19:18.959 +I have my own things like emojis. + +00:19:18.960 --> 00:19:22.799 +Now, if you allow me for a second, + +00:19:22.800 --> 00:19:26.999 +I'm going to switch to the Emacs + +00:19:27.000 --> 00:19:36.759 +which is running behind the scenes to show you what. + +00:19:36.760 --> 00:19:42.119 +Okay, fine. So, this is the presentation. + +00:19:42.120 --> 00:19:44.799 +that I have here, and as you see, + +00:19:44.800 --> 00:19:54.839 +I'm using Lua LaTeX and just fontspec, + +00:19:54.840 --> 00:19:59.440 +given I don't know why 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:11.171 +and now what... + +00:20:11.172 --> 00:20:12.940 +[Ihor]: I don't think you're showing anything + +00:20:12.941 --> 00:20:18.479 +[Pedro]: Oh, thank you. + +00:20:18.480 --> 00:20:21.399 +Okay, this is the presentation, right? + +00:20:21.400 --> 00:20:23.540 +So what I'm going to do is, I'm going to go back + +00:20:23.541 --> 00:20:31.200 +and I'm going to show the full screen. + +00:20:31.201 --> 00:20:32.639 +And in this full screen, + +00:20:32.640 --> 00:20:34.759 +you see the presentation on one side + +00:20:34.760 --> 00:20:40.599 +and you see Emacs on the other side. Oh, still nothing. + +00:20:40.600 --> 00:20:44.319 +Yeah, we're not seeing your screen at the moment, sorry. + +00:20:44.320 --> 00:20:47.719 +Oh, thank you. Thank you for that. + +00:20:47.720 --> 00:20:52.879 +Now it's starting to come. Okay. Yay! Fine. + +00:20:52.880 --> 00:21:00.399 +So this presentation, I've done it with Lua LaTeX, + +00:21:00.400 --> 00:21:06.439 +and what I add here is fontspec and English language. + +00:21:06.440 --> 00:21:10.240 +Just to show you, but with the same configuration, + +00:21:10.280 --> 00:21:11.839 +with the same fontspec configuration, + +00:21:11.840 --> 00:21:20.473 +but adding Polyglossia. + +00:21:20.474 --> 00:21:23.159 +I just have enough with adding Polyglossia + +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 date 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 polyglossia here, + +00:21:58.080 --> 00:22:02.339 +I can get my dates in Spanish. + +00:22:02.340 --> 00:22:09.559 +What... I have included the dir-locals + +00:22:09.560 --> 00:22:16.959 +in these lines, but just to discuss it a bit more. + +00:22:16.960 --> 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:28.799 +for the presentations I use for Emacs conferences, + +00:22:28.800 --> 00:22:33.959 +I have it, and it's something like this. + +00:22:33.960 --> 00:22:37.359 +Actually, you don't need a fallback + +00:22:37.360 --> 00:22:40.107 +for the main font here + +00:22:40.108 --> 00:22:44.607 +because the presentations are done with the sans font, + +00:22:44.608 --> 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.919 +This can be commented, and the same happens here + +00:22:53.920 --> 00:22:57.474 +with the mono. This can be also commented. + +NOTE Demo: Emoji + +00:22:57.475 --> 00:23:00.399 +The only thing where I would really need + +00:23:00.400 --> 00:23:02.119 +a fallback 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 fallback for the emoji, + +00:23:07.080 --> 00:23:09.799 +for the emoji script, + +00:23:09.800 --> 00:23:14.740 +and you need to use the Apple Color Emoji font + +00:23:14.741 --> 00:23:15.399 +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:22.874 +to have the Harfbuzz renderer. + +00:23:22.875 --> 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:33.179 +and from different scripts in the Internet. + +NOTE Demo: Letter + +00:23:33.180 --> 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 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:08.679 +was Spanish polyglossia for the date. + +00:24:08.680 --> 00:24:14.719 +Anyhow, 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 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:43.859 +If you now go and I get my LaTeX for that running. + +00:24:43.860 --> 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. + +NOTE Demo: Side by side + +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 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 done with Polyglossia. + +00:26:18.680 --> 00:26:24.240 +If I go once again and produce + +00:26:24.241 --> 00:26:37.999 +the PDF for this... Just a second... + +00:26:38.000 --> 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:53.879 +I'm using for the main font for me is FreeSerif. + +00:26:53.880 --> 00:27:01.479 +This listing is produced with DejaVu Sans Mono. + +00:27:01.480 --> 00:27:12.899 +And using Polyglossia here, I'm able to go and define + +00:27:12.900 --> 00:27:15.799 +the Greek polyton 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 FreeSerif. + +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:12.599 +Just a couple of final words on this. + +NOTE Thanks + +00:28:12.600 --> 00:28:16.839 +I want to thank once again Juan Manuel Macias and Jing Huang + +00:28:16.840 --> 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:37.039 +and I'm going to be leaving + +00:28:37.040 --> 00:28:39.607 +the feature font untouched for a couple of months + +00:28:39.608 --> 00:28:42.220 +so that people can take... the feature branch + +00:28:42.221 --> 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:29:24.839 +or if people need it and all that. Now questions, comments? + +00:29:24.840 --> 00:29:39.240 +[Ihor]: I think there was one question on Etherpad for... + +00:29:39.241 --> 00:29:47.119 +[Pedro]: Beautiful. I think that goes beyond fonts right. + +NOTE Q: What about video (mp4) support for ox-latex? + +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:14.739 +This is something that really pushed me back using ox-latex." + +00:30:14.740 --> 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:42.279 +which was, first of all, try to write it in LaTeX, + +00:30:42.280 --> 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 LaTeX parts + +00:30:53.160 --> 00:31:00.319 +integrated into your own presentation. + +00:31:00.320 --> 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 latex` `#+end_export` LaTeX. + +00:31:18.320 --> 00:31:24.279 +That's what I'm doing. + +00:31:24.280 --> 00:31:27.274 +[Ihor]: Videos are generally a bit tricky because you cannot... + +00:31:27.275 --> 00:31:31.119 +Not every viewer will play them. + +00:31:31.120 --> 00:31:35.119 +so I think there is something called pdfpc that can, + +00:31:35.120 --> 00:31:37.399 +this provides a LaTeX 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 +[Pedro]: 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 LaTeX + +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..04d1a62b --- /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 Mastodon + +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 ToobNix, 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. Helary, Triko, and James Endres 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 +PsiTransfer, 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..0362cbc2 --- /dev/null +++ b/2025/captions/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--answers.vtt @@ -0,0 +1,4019 @@ +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. + +NOTE Q: What do you use for the fancy animations? + +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. + +NOTE Q: Are you not a fan of using *, **, *** headings in org-mode? + +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 notes, 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 note, + +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 hierarchical structure. + +00:07:11.480 --> 00:07:13.719 +Thank you for capturing this. Next question. + +NOTE Q: 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 note. + +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 Q: 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 notes, for example, permanent notes. + +00:08:28.480 --> 00:08:33.199 +I guess that's a Sonke Ahrens, + +00:08:33.200 --> 00:08:35.039 +permanent notes 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 notes and fleeting notes, + +00:08:38.280 --> 00:08:41.599 +now we have two types of notes. 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 Ivar Jacobson. + +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:25.964 +and A6 minus the tariff part + +00:09:25.965 --> 00:09:31.174 +from another notepad. These are notes I took, engagement notes + +00:09:31.175 --> 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 +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. + +NOTE Q: Zettelkasten feels like a very "cagey" approach to note-taking and knowledge management. Doesn't it restrict one to think in certain ways rather than what feels natural to someone? + +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:07.327 +I can promise. + +NOTE Q: How does denote compare to org-roam? + +00:15:07.328 --> 00:15:10.279 +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 Roam-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 in Zettelkasten, + +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:44.924 +and just want to gather data for whatever reason? + +00:16:44.925 --> 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, + +NOTE Q: I noticed that the wikipedia link you wrote was typed wrongly - and it got me thinking about how to deal with broken links at scale? Do you have any thoughts on this? What about archival? + +00:18:25.040 --> 00:18:27.559 +I guess next question, + +00:18:27.560 --> 00:18:29.174 +I noticed that the wikipedia link you wrote + +00:18:29.175 --> 00:18:38.632 +was typed wrongly, oh no garbage in, garbage out, + +00:18:38.633 --> 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 +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 your notes, + +00:18:59.560 --> 00:19:05.759 +you hopefully get a 404 code from wikipedia + +00:19:05.760 --> 00:19:06.859 +because the page doesn't exist. + +00:19:06.860 --> 00:19:11.999 +Let's now check. 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. This happens all the time on the Internet. + +00:19:30.480 --> 00:19:31.919 +Even if you don't mistype, + +00:19:31.920 --> 00:19:35.879 +you could... you know things go 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.279 +I'm not good at this. + +00:19:52.280 --> 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 note 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-note 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 notes, stuff like this. + +00:21:07.480 --> 00:21:10.039 +Find large notes 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:16.382 +but also it's better if you use a tool to get started, + +00:21:16.383 --> 00:21:20.590 +otherwise you waste a lot of time. + +NOTE Comment: When I completely re-worked my config some two years ago, I also tried out some of these packages for making notes in Emacs... + +00:21:20.591 --> 00:21:26.632 +Next question, when I complete, next long question. + +00:21:26.633 --> 00:21:34.964 +I'm going to copy this over because maybe... + +00:21:34.965 --> 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 notes, + +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, Zettelkasten my two cents + +00:22:22.800 --> 00:22:24.715 +by the way I work on legal sociological topics + +00:22:24.716 --> 00:22:29.452 +I'm a lawyer by training." + +00:22:29.453 --> 00:22:34.590 +You know, Luhmann was a German-style + +00:22:34.591 --> 00:22:35.632 +weird sociologist, + +00:22:35.633 --> 00:22:41.048 +and sociology studies are + +00:22:41.049 --> 00:22:43.999 +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. + +NOTE Q: How Zettelkasten is useful for highly mathematical STEM academic fields like computer science or engineering fields? + +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.059 +So opinions may vary. The presentation may vary. + +00:25:42.060 --> 00:25:43.674 +Some textbooks may click with you, + +00:25:43.675 --> 00:26:04.559 +while others stay opaque, and you can't get into the meat. + +00:26:04.560 --> 00:26:12.919 +Sorry, I'm just typing the answer right now. + +00:26:12.920 --> 00:26:17.379 +Copying information to another box is not, yeah. + +00:26:17.380 --> 00:26:19.090 +Yeah, let's see what the first answer is. + +00:26:19.091 --> 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 Org-Babel you can have living source code, yes, + +00:26:25.440 --> 00:26:26.719 +that you can execute from the note, + +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 notes, + +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... + +00:27:14.640 --> 00:27:30.879 +The Etherpad's 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 Agda reference + +00:27:47.680 --> 00:27:49.799 +because nobody uses Agda, + +00:27:49.800 --> 00:27:55.999 +nobody in the world maybe. So Agda 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 German + +00:28:29.640 --> 00:28:32.011 +and our style of law where you have a lot of, + +00:28:32.012 --> 00:28:33.759 +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:44.540 +where you don't rely on the ruling + +00:28:44.541 --> 00:28:48.239 +as much as you do in, for example, the USA, + +00:28:48.240 --> 00:28:52.674 +where you need to be aware of every court ruling + +00:28:52.675 --> 00:28:53.919 +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 Etherpad 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:54.019 +from the public internet box into my own buffer, + +00:36:54.020 --> 00:36:56.399 +that Zettelkasten 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. + +NOTE Q: In your experience, would you say that you re-use most of your notes? + +00:39:40.960 --> 00:39:45.639 +In your experience, would you say that you reuse most of your notes? + +00:39:45.640 --> 00:39:47.959 +Watching your demo, I thought that more notes 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 notes or something, + +00:39:54.880 --> 00:39:57.239 +and I don't use 11,000 notes 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 notes, + +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 notes, + +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.339 +where you had a hard time figuring out + +00:40:49.340 --> 00:40:52.479 +how the Zettelkasten 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 Zettelkastenify 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 notes a lot. Next question. + +NOTE Q: How are notes structured and accessed when the notes grow from 10K to 100K notes? + +00:44:15.280 --> 00:44:17.719 +How are notes structured and accessed + +00:44:17.720 --> 00:44:20.639 +when the notes grow from 10k to 100k notes? + +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 note 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 notes structured and accessed + +00:45:20.640 --> 00:45:22.919 +when the notes 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 notes. + +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 notes. + +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 note + +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 notes. + +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 notes + +00:46:37.320 --> 00:46:38.759 +And then I have these meta notes, + +00:46:38.760 --> 00:46:40.519 +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 + +NOTE Q: I would be very interested in your thought on this video by Westenberg - https://www.youtube.com/watch?v=CjSWwmg-JRM (Why I Deleted My Second Brain: A Journey Back to Real Thinking) + +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. This is not spam. + +00:49:07.040 --> 00:49:13.959 +I don't... Uh, there's Joe Westenberg's 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." + +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:51.659 +so my thoughts on deleting and stuff like that. + +00:49:51.660 --> 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 Org-node 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:25.519 +you know next question is there a danger? + +00:56:25.520 --> 00:56:34.340 +also, wait a second, answer do not probably a lot of collection, + +00:56:34.341 --> 00:56:52.359 +not a lot of thinking 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:15.049 +Conflate note taking as a dumping ground for stuff + +00:57:15.050 --> 00:57:22.174 +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. + +NOTE Q: Is there a danger that with the Zettelkasten process, that the process gets a bit in the way of the content? + +00:57:59.160 --> 00:58:02.359 +Is there a danger that with the Zettelkasten 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 Zettelkasten. + +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:49.439 +I'm also not trusting my own notes anymore. + +00:59:49.440 --> 00:59:51.159 +I 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:16.882 +That's a useful ceremony. + +01:00:16.883 --> 01:00:20.799 +Title 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 Zettel. + +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 Zettel + +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 notes. + +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:39.299 +to go through my note archive and also need to go to + +01:01:39.300 --> 01:01:41.090 +my note archive and need to correct all the links. + +01:01:41.091 --> 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 Denote, 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 notes that you can follow. + +01:02:49.560 --> 01:02:52.039 +It may not be a pathway through all of your notes, 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. + +NOTE Q: How do you navigate looking at all posts with certain tags + +01:03:20.640 --> 01:03:24.519 +How do you navigate looking at all posts with certain tags? + +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:31.799 +How do you navigate looking at all posts with certain tags? + +01:03:31.800 --> 01:03:43.215 +Let me go to my actual note archive, + +01:03:43.216 --> 01:03:55.919 +and then php, no, language learning, ah, + +01:03:55.920 --> 01:03:59.319 +this is not a nice 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 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 abnormally. + +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 notes 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 notes + +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 notes in the results there, + +01:10:05.280 --> 01:10:08.279 +then you can't mechanically go through all the notes 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 note + +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 note, + +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:54.719 +I hope you enjoyed some of the answers. + +01:15:54.720 --> 01:16:01.174 +Thank you so much. Thank you. That's a lot. + +01:16:01.175 --> 01:16:04.674 +We'll go back and get everything transcribed as well, + +01:16:04.675 --> 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 Etherpadmp, + +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..2f4f5ed7 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-06T16:00:00+0000""" endutc="""2025-12-06T16:25:00+0000""" start="""11:00""" end="""11:25""" 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:45:00+0000""" endutc="""2025-12-06T17:05:00+0000""" start="""11:45""" end="""12:05""" 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:30:00+0000""" start="""11:05""" end="""11:30""" 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..037c1afb 100644 --- a/2025/info/blee-lcnt-after.md +++ b/2025/info/blee-lcnt-after.md @@ -702,7 +702,354 @@ 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 that I saw""" start="00:00:17.680" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""come in earlier on the pad,""" start="00:00:20.080" video="qanda-blee-lcnt" id="subtitle"]] + +<div class="transcript-heading">[[!template new="1" text="""Q: Where do we find all the inputs and outputs you mentioned?""" start="00:00:22.880" video="qanda-blee-lcnt" id="subtitle"]]</div>[[!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.541" 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 https://github.com/bxplpc/180068,""" start="00:00:41.940" 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="""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 beamer,""" start="00:01:19.440" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""let's take a quick look at the beamer,""" 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="""This presentation, left to right,""" start="00:01:40.280" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""is the one that includes all the LaTeX packages.""" start="00:01:44.121" 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 bodyPresArt,""" 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 Aeneas""" 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 planned 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"]] + +<div class="transcript-heading">[[!template new="1" text="""Making presentations easier to distribute""" start="00:04:48.400" video="qanda-blee-lcnt" id="subtitle"]]</div>[[!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"]] + +<div class="transcript-heading">[[!template new="1" text="""Reveal output""" start="00:05:42.040" video="qanda-blee-lcnt" id="subtitle"]]</div>[[!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 bootstrapping 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 BxBlee,""" 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"]] + +<div class="transcript-heading">[[!template new="1" text="""GitHub organizations""" start="00:08:15.000" video="qanda-blee-lcnt" id="subtitle"]]</div>[[!template text="""But again, all of this is through the use of GitHub organizations.""" start="00:08:15.000" 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 BISOS 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 Aidermacs.""" 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 BISOS in Python is in BISOS-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="""convert it 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. One 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"]] + +<div class="transcript-heading">[[!template new="1" text="""Challenge of DIY model and recipes""" start="00:12:24.040" video="qanda-blee-lcnt" id="subtitle"]]</div>[[!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 BISOS and BLEE.""" 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, BISOS 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 Comeega, 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"]] + +<div class="transcript-heading">[[!template new="1" text="""Dblocks everywhere""" start="00:13:57.480" video="qanda-blee-lcnt" id="subtitle"]]</div>[[!template text="""I think the dblocks 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 dblock,""" 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 path.""" 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 path.""" 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 COMEEGA, 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"]] + +<div class="transcript-heading">[[!template new="1" text="""Q: What changes have you seen in the culture while developing all these things like libre-halal system and now blee-lcnt?""" start="00:17:09.960" video="qanda-blee-lcnt" id="subtitle"]]</div>[[!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 Libre-halaal system and now Blee-LCNT?""" 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:36.280" 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"]] + +<div class="transcript-heading">[[!template new="1" text="""Intellectual property rights""" start="00:19:11.160" video="qanda-blee-lcnt" id="subtitle"]]</div>[[!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 IPR regime.""" start="00:19:28.760" video="qanda-blee-lcnt" id="subtitle"]] +[[!template text="""So throughout the FOSS 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 FOSS 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 Affero 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"]] + +<div class="transcript-heading">[[!template new="1" text="""Q: Given that large AI companies are openly stealing IP and copyright, thereby eroding the authority of such law (and eroding truth itself as well), can you see a future where IP & copyright flaw become untenable and what sort of onwards effect might that have?""" start="00:23:43.560" video="qanda-blee-lcnt" id="subtitle"]]</div>[[!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 Affero 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..4b72b35d 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_CAPTION_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,21 @@ 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.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--answers.vtt" default />"""<track kind="chapters" label="Chapters" src="/2025/captions/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--answers--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="qanda-blee-lcnt" data=""" +00:22.880 Q: Where do we find all the inputs and outputs you mentioned? +04:48.400 Making presentations easier to distribute +05:42.040 Reveal output +08:15.000 GitHub organizations +12:24.040 Challenge of DIY model and recipes +13:57.480 Dblocks everywhere +17:09.960 Q: What changes have you seen in the culture while developing all these things like libre-halal system and now blee-lcnt? +19:11.160 Intellectual property rights +23:43.560 Q: Given that large AI companies are openly stealing IP and copyright, thereby eroding the authority of such law (and eroding truth itself as well), can you see a future where IP & copyright flaw become untenable and what sort of onwards effect might that have? + +"""]]<div>Listen to just the audio:<br /><audio controls preload="none" id="qanda-blee-lcnt-audio" src="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--answers.opus"></audio></div><div></div>Duration: 27:45 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--chapters.vtt">Download --answers--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--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.opus">Download --answers.opus (24MB)</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 (55MB)</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..b30609c0 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 (79MB)</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..b6fad87b 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>Listen to just the audio:<br /><audio controls preload="none" id="qanda-gmail-audio" src="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--answers.opus"></audio></div><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.opus">Download --answers.opus (7.3MB)</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..cd1891c5 100644 --- a/2025/info/gnus-after.md +++ b/2025/info/gnus-after.md @@ -457,7 +457,345 @@ 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> + + +<div class="transcript-heading">[[!template new="1" text="""Q: I noticed that it took a considerable amount of time to send email. Is it possible to configure gnus to use an external smtp client to send emails?""" start="00:00:00.000" video="qanda-gnus" id="subtitle"]]</div>[[!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"]] + +<div class="transcript-heading">[[!template new="1" text="""Q: Is the dovecot workaround actually a solution?""" start="00:01:17.838" video="qanda-gnus" id="subtitle"]]</div>[[!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 Gnus""" 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 Dovecot""" 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"]] + +<div class="transcript-heading">[[!template new="1" text="""Q: Do you have experience with mu4e or Notmuch, and why would you say Gnus is worth using compared to these?""" start="00:03:07.118" video="qanda-gnus" id="subtitle"]]</div>[[!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"]] + +<div class="transcript-heading">[[!template new="1" text="""Q: At my organization, we're forced to use OAuth with outlook and they've also blacklisted all email clients except thunderbird (but they don't support it, only the webmail or the outlook app). Do you know if this is something that can be circumvented in Gnus?""" start="00:06:05.320" video="qanda-gnus" id="subtitle"]]</div>[[!template text="""Let's see, at my organization,""" start="00:06:05.320" 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:34.640" video="qanda-gnus" id="subtitle"]] +[[!template text="""With Gnus, you can set, define a posting style""" start="00:07:37.280" video="qanda-gnus" id="subtitle"]] +[[!template text="""to set a custom user agent.""" start="00:07:40.880" video="qanda-gnus" id="subtitle"]] +[[!template text="""So, yeah, that's as far as I know.""" start="00:07:43.280" video="qanda-gnus" id="subtitle"]] +[[!template text="""Thunderbird is pretty nice too.""" start="00:07:48.720" video="qanda-gnus" id="subtitle"]] +[[!template text="""Like I reach out for it sometimes""" start="00:07:50.080" video="qanda-gnus" id="subtitle"]] +[[!template text="""when I'm in a rush or can't,""" start="00:07:54.160" video="qanda-gnus" id="subtitle"]] +[[!template text="""don't have the time to like set up Gnus with""" start="00:07:55.800" video="qanda-gnus" id="subtitle"]] +[[!template text="""like some new like IMAP server or something.""" start="00:08:00.160" video="qanda-gnus" id="subtitle"]] +[[!template text="""I reach for it sometimes, but yeah,""" start="00:08:04.040" video="qanda-gnus" id="subtitle"]] +[[!template text="""I primarily use Gnus. I see.""" start="00:08:05.520" video="qanda-gnus" id="subtitle"]] +[[!template text="""So the question says they tried it""" start="00:08:10.360" video="qanda-gnus" id="subtitle"]] +[[!template text="""with not much and it never worked.""" start="00:08:11.720" video="qanda-gnus" id="subtitle"]] +[[!template text="""Even KML on Android didn't work.""" start="00:08:13.280" video="qanda-gnus" id="subtitle"]] +[[!template text="""Right. Yeah, I'm not sure.""" start="00:08:20.000" video="qanda-gnus" id="subtitle"]] +[[!template text="""If you can like provide maybe more details""" start="00:08:23.520" video="qanda-gnus" id="subtitle"]] +[[!template text="""as to like what doesn't work""" start="00:08:27.040" video="qanda-gnus" id="subtitle"]] +[[!template text="""or if you get any particular error messages""" start="00:08:29.320" video="qanda-gnus" id="subtitle"]] +[[!template text="""or like how they're trying to like prevent you from using it,""" start="00:08:32.080" video="qanda-gnus" id="subtitle"]] +[[!template text="""then maybe folks could have some ideas""" start="00:08:37.360" video="qanda-gnus" id="subtitle"]] +[[!template text="""of maybe how to get around that.""" start="00:08:38.440" video="qanda-gnus" id="subtitle"]] +[[!template text="""Yeah. Let's see, I'm going to go""" start="00:08:42.000" video="qanda-gnus" id="subtitle"]] +[[!template text="""over and take a look at IRC. Yes, scoring is great.""" start="00:08:46.000" video="qanda-gnus" id="subtitle"]] +[[!template text="""In it for bankruptcy,""" start="00:08:59.960" video="qanda-gnus" id="subtitle"]] +[[!template text="""they have mail to use outlook from Gnus, right?""" start="00:09:02.960" video="qanda-gnus" id="subtitle"]] +[[!template text="""Yeah, there are various like solutions and workarounds.""" start="00:09:06.560" video="qanda-gnus" id="subtitle"]] +[[!template text="""Yeah, let's see. How's the schedule looking?""" start="00:09:12.000" video="qanda-gnus" id="subtitle"]] +[[!template text="""I think the next talk""" start="00:09:23.520" video="qanda-gnus" id="subtitle"]] +[[!template text="""is gonna start pretty soon, if I'm not mistaken.""" start="00:09:24.520" video="qanda-gnus" id="subtitle"]] +[[!template text="""Yeah, so I believe that's about all the time""" start="00:09:30.520" video="qanda-gnus" id="subtitle"]] +[[!template text="""that we have on the stream for the Q&A,""" start="00:09:34.280" video="qanda-gnus" id="subtitle"]] +[[!template text="""but of course I'll hang around here on big blue button""" start="00:09:36.800" video="qanda-gnus" id="subtitle"]] +[[!template text="""and IRC for a while if folks would like to ask more questions.""" start="00:09:40.760" video="qanda-gnus" id="subtitle"]] +[[!template text="""And also feel free to email me,""" start="00:09:45.280" video="qanda-gnus" id="subtitle"]] +[[!template text="""bandali@gnu.org""" start="00:09:47.280" video="qanda-gnus" id="subtitle"]] +[[!template text="""or at kelar.org with any questions.""" start="00:09:49.100" video="qanda-gnus" id="subtitle"]] +[[!template text="""Thanks again for the kind words folks, appreciate it.""" start="00:10:31.540" video="qanda-gnus" id="subtitle"]] +[[!template text="""Yeah, I myself also wish""" start="00:10:35.720" video="qanda-gnus" id="subtitle"]] +[[!template text="""that there were like some tutorials or something""" start="00:10:38.400" video="qanda-gnus" id="subtitle"]] +[[!template text="""when I was getting started with Gnus,""" start="00:10:41.320" video="qanda-gnus" id="subtitle"]] +[[!template text="""but we didn't have that. So, and I've been meaning""" start="00:10:43.680" video="qanda-gnus" id="subtitle"]] +[[!template text="""to like record a talk like this for years for EmacsConf,""" start="00:10:46.120" video="qanda-gnus" id="subtitle"]] +[[!template text="""but yeah, funnily enough, after like 10 years of,""" start="00:10:50.000" video="qanda-gnus" id="subtitle"]] +[[!template text="""at my 10th anniversary""" start="00:10:53.040" video="qanda-gnus" id="subtitle"]] +[[!template text="""of being involved with the conference,""" start="00:10:54.920" video="qanda-gnus" id="subtitle"]] +[[!template text="""I finally put together a talk of my own""" start="00:10:55.880" video="qanda-gnus" id="subtitle"]] +[[!template text="""to talk about configuring Gnus.""" start="00:10:58.000" video="qanda-gnus" id="subtitle"]] +[[!template text="""Let's see. Oh, I see, I see.""" start="00:11:08.200" video="qanda-gnus" id="subtitle"]] +[[!template text="""So the organization is doing some kind of check""" start="00:11:25.960" video="qanda-gnus" id="subtitle"]] +[[!template text="""during setting up of OAuth.""" start="00:11:29.720" video="qanda-gnus" id="subtitle"]] +[[!template text="""So I think how that works is""" start="00:11:41.240" video="qanda-gnus" id="subtitle"]] +[[!template text="""sometimes these email clients,""" start="00:11:45.640" video="qanda-gnus" id="subtitle"]] +[[!template text="""I think at least this is the case for Gmail or something,""" start="00:11:47.400" 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"]] + +<div class="transcript-heading">[[!template new="1" text="""Comment: Liked how I started with a clean setup""" start="00:13:18.798" video="qanda-gnus" id="subtitle"]]</div>[[!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"]] + +<div class="transcript-heading">[[!template new="1" text="""Comment: They would have liked to see a quick demo of Gnus while it is fully configured and tweaked""" start="00:17:34.660" video="qanda-gnus" id="subtitle"]]</div>[[!template text="""Another comment, they would have liked""" start="00:17:34.660" 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"]] + +<div class="transcript-heading">[[!template new="1" text="""My init file""" start="00:18:22.798" video="qanda-gnus" id="subtitle"]]</div>[[!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"]] + +<div class="transcript-heading">[[!template new="1" text="""Mail splitting""" start="00:19:34.080" video="qanda-gnus" id="subtitle"]]</div>[[!template text="""Yeah, you can do like mail splitting,""" start="00:19:34.080" 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"]] + +<div class="transcript-heading">[[!template new="1" text="""Gnus parameters""" start="00:19:52.638" video="qanda-gnus" id="subtitle"]]</div>[[!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="""Gnus can integrate with Dired.""" start="00:21:22.998" video="qanda-gnus" id="subtitle"]] + +<div class="transcript-heading">[[!template new="1" text="""Custom signatures""" start="00:21:31.020" video="qanda-gnus" id="subtitle"]]</div>[[!template text="""You can set like custom signatures like here.""" start="00:21:31.020" 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"]] + +<div class="transcript-heading">[[!template new="1" text="""Other customizations""" start="00:22:05.020" video="qanda-gnus" id="subtitle"]]</div>[[!template text="""You can write custom like functions to move email around.""" start="00:22:05.020" 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 v s,""" start="00:22:13.920" 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 Gnus behave a certain way.""" start="00:23:41.760" 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..752e969e 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,23 @@ 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 />"""<track kind="chapters" label="Chapters" src="/2025/captions/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--answers--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="qanda-gnus" data=""" +00:00.000 Q: I noticed that it took a considerable amount of time to send email. Is it possible to configure gnus to use an external smtp client to send emails? +01:17.838 Q: Is the dovecot workaround actually a solution? +03:07.118 Q: Do you have experience with mu4e or Notmuch, and why would you say Gnus is worth using compared to these? +06:05.320 Q: At my organization, we're forced to use OAuth with outlook and they've also blacklisted all email clients except thunderbird (but they don't support it, only the webmail or the outlook app). Do you know if this is something that can be circumvented in Gnus? +13:18.798 Comment: Liked how I started with a clean setup +17:34.660 Comment: They would have liked to see a quick demo of Gnus while it is fully configured and tweaked +18:22.798 My init file +19:34.080 Mail splitting +19:52.638 Gnus parameters +21:31.020 Custom signatures +22:05.020 Other customizations + +"""]]<div>Listen to just the audio:<br /><audio controls preload="none" id="qanda-gnus-audio" src="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--answers.opus"></audio></div><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--chapters.vtt">Download --answers--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--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.opus">Download --answers.opus (21MB)</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..89903ea1 100644 --- a/2025/info/latex-after.md +++ b/2025/info/latex-after.md @@ -1,7 +1,493 @@ <!-- 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</h1> + + +<div class="transcript-heading">[[!template new="1" text="""Introduction""" start="00:00:00.140" video="mainVideo-latex" id="subtitle"]]</div>[[!template text="""Okay. Good afternoon, morning or evening,""" start="00:00:00.140" video="mainVideo-latex" id="subtitle"]] +[[!template text="""whatever it is in your time 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"]] + +<div class="transcript-heading">[[!template new="1" text="""Motivation""" start="00:00:41.400" video="mainVideo-latex" id="subtitle"]]</div>[[!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 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 from the Emacs side to do this is none,""" start="00:02:17.360" 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 a new Mac,""" start="00:02:36.840" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and I'm able now to get my vanilla Emacs 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"]] + +<div class="transcript-heading">[[!template new="1" text="""Evolution""" start="00:02:53.360" video="mainVideo-latex" id="subtitle"]]</div>[[!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 ox-latex""" 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 header, 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 Polyglossia.""" start="00:04:00.400" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and it was made basically for font LaTeX""" start="00:04:02.880" video="mainVideo-latex" id="subtitle"]] +[[!template text="""although some of the things can... for lualatex""" start="00:04:06.200" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and some of the things can also be used with xelatex.""" 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 fallback fonts""" start="00:04:16.520" video="mainVideo-latex" id="subtitle"]] +[[!template text="""was something that I learned""" 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 lualatex""" start="00:04:29.840" video="mainVideo-latex" id="subtitle"]] +[[!template text="""because xelatex doesn't support them.""" start="00:04:34.408" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Actually, fallback fonts is a lua feature.""" start="00:04:36.308" video="mainVideo-latex" id="subtitle"]] +[[!template text="""There was already something in the list""" start="00:04:40.541" 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 Juan M. Macias 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="""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:14.175" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Looking back, I have a very strange feeling""" start="00:05:19.040" 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"]] + +<div class="transcript-heading">[[!template new="1" text="""What do you get from the feature branch?""" start="00:06:02.480" video="mainVideo-latex" id="subtitle"]]</div>[[!template text="""What do you get from the feature branch?""" start="00:06:02.480" video="mainVideo-latex" id="subtitle"]] +[[!template text="""The feature branch adds font management for fontspec,""" start="00:06:04.956" 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:14.920" video="mainVideo-latex" id="subtitle"]] +[[!template text="""But again, it's a nice way to get better support here.""" start="00:06:18.580" 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 fallback 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 Polyglossia here""" start="00:07:05.320" 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="""Then what I've added is a keyword""" start="00:07:30.560" video="mainVideo-latex" id="subtitle"]] +[[!template text="""which is `#+LATEX_MULTI_LANG:`""" 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 Org Mode""" 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="""Jing Huang 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 really helpful and a big thanks to him""" start="00:08:03.480" video="mainVideo-latex" id="subtitle"]] +[[!template text="""because he also had an easy idea""" start="00:08:06.800" video="mainVideo-latex" id="subtitle"]] +[[!template text="""to support Chinese and Japanese documents,""" start="00:08:10.975" 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:21.860" 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 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"]] + +<div class="transcript-heading">[[!template new="1" text="""Behind the scenes: .dir-locals.el""" start="00:08:47.280" video="mainVideo-latex" id="subtitle"]]</div>[[!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 this famous .dir-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 font 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.240" video="mainVideo-latex" id="subtitle"]] +[[!template text="""so you have everything in a file.""" start="00:09:56.840" 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 provided by you""" start="00:10:58.640" video="mainVideo-latex" id="subtitle"]] +[[!template text="""through the fontspec package,""" start="00:11:03.740" 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 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="""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:15.780" 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 the font that where you want to replace this.""" start="00:11:24.960" video="mainVideo-latex" id="subtitle"]] +[[!template text="""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:37.340" video="mainVideo-latex" id="subtitle"]] +[[!template text="""you can always have your dir-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 dir-locals.el file.""" start="00:11:54.120" video="mainVideo-latex" id="subtitle"]] + +<div class="transcript-heading">[[!template new="1" text="""When fontspec is not enough""" start="00:11:59.080" video="mainVideo-latex" id="subtitle"]]</div>[[!template text="""So, fontspec 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 fontspec only, and there you have a polyglot here""" start="00:12:09.380" 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.120" 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 variables""" start="00:12:38.640" video="mainVideo-latex" id="subtitle"]] +[[!template text="""to configure both fontspec, 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 Thai.""" 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 Babel.""" start="00:13:10.000" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Main is going to be English.""" start="00:13:13.360" video="mainVideo-latex" id="subtitle"]] +[[!template text="""And I'm also going to have Thai.""" start="00:13:15.080" video="mainVideo-latex" id="subtitle"]] +[[!template text="""And then they tell me that, for English,""" start="00:13:20.340" video="mainVideo-latex" id="subtitle"]] +[[!template text="""I'm going to be using Noto Serif for the main,""" start="00:13:23.841" video="mainVideo-latex" id="subtitle"]] +[[!template text="""for the main of the serif font,""" start="00:13:26.640" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Noto Sans for the sans font,""" start="00:13:30.083" 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:41.107" 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.108" video="mainVideo-latex" id="subtitle"]] +[[!template text="""that you're intending this font for is Thai.""" start="00:14:07.775" video="mainVideo-latex" id="subtitle"]] +[[!template text="""So this appears here. In case you don't have any language,""" start="00:14:10.560" video="mainVideo-latex" id="subtitle"]] +[[!template text="""like in the first two lines,""" start="00:14:16.320" video="mainVideo-latex" id="subtitle"]] +[[!template text="""you just say that the language is nil,""" start="00:14:19.440" video="mainVideo-latex" id="subtitle"]] +[[!template text="""which is the language for the default language.""" start="00:14:21.040" video="mainVideo-latex" id="subtitle"]] +[[!template text="""The other thing is in my example,""" start="00:14:23.960" video="mainVideo-latex" id="subtitle"]] +[[!template text="""in this example that I found in the Internet,""" start="00:14:26.800" video="mainVideo-latex" id="subtitle"]] +[[!template text="""I have my properties for the fonts in this part in LaTeX,""" start="00:14:29.375" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and I put them as properties here.""" start="00:14:40.175" video="mainVideo-latex" id="subtitle"]] +[[!template text="""That's the whole idea behind the feature branch.""" start="00:14:43.908" video="mainVideo-latex" id="subtitle"]] +[[!template text="""The babelprovide part is generated or is also integrated""" start="00:14:53.520" video="mainVideo-latex" id="subtitle"]] +[[!template text="""from the Org header, mainly from the language line.""" start="00:15:01.641" video="mainVideo-latex" id="subtitle"]] +[[!template text="""We have a variable in case you need to tweak it,""" start="00:15:11.320" 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"]] + +<div class="transcript-heading">[[!template new="1" text="""Rationale behind my take at LaTeX font management""" start="00:15:21.080" video="mainVideo-latex" id="subtitle"]]</div>[[!template text="""So what is the rationale behind my take at LaTeX font management?""" start="00:15:21.080" video="mainVideo-latex" id="subtitle"]] +[[!template text="""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 xelatex,""" 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 fontspec""" 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 LaTeX 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:18.600" 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:24.760" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and you don't need that.""" start="00:16:26.275" video="mainVideo-latex" id="subtitle"]] +[[!template text="""The important thing is maybe date management.""" start="00:16:27.880" video="mainVideo-latex" id="subtitle"]] +[[!template text="""If you need dates, headings""" start="00:16:34.120" video="mainVideo-latex" id="subtitle"]] +[[!template text="""or anything in any other language or locale,""" start="00:16:36.200" video="mainVideo-latex" id="subtitle"]] +[[!template text="""then yes, then you need to use Babel or Polyglossia.""" start="00:16:40.360" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Choice, Depends. Can use polyglossia here,""" start="00:16:46.200" video="mainVideo-latex" id="subtitle"]] +[[!template text="""or you can use Babel, whatever you want.""" start="00:16:52.960" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Also, in some cases, it will depend""" start="00:16:56.040" video="mainVideo-latex" id="subtitle"]] +[[!template text="""if you've been researching a bit""" start="00:16:58.600" video="mainVideo-latex" id="subtitle"]] +[[!template text="""of how this is done with pure LaTeX,""" start="00:17:00.400" video="mainVideo-latex" id="subtitle"]] +[[!template text="""it will be also depending on, uh,""" start="00:17:02.440" video="mainVideo-latex" id="subtitle"]] +[[!template text="""on the examples that you get.""" start="00:17:05.640" video="mainVideo-latex" id="subtitle"]] +[[!template text="""So, what can you, when you are using""" start="00:17:07.800" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Babel or Polyglossia here, what do you have?""" start="00:17:11.000" video="mainVideo-latex" id="subtitle"]] +[[!template text="""You have your dates, your headings, and so on.""" start="00:17:12.640" video="mainVideo-latex" id="subtitle"]] +[[!template text="""You might need to control the text""" start="00:17:16.920" video="mainVideo-latex" id="subtitle"]] +[[!template text="""in the sense that what passage""" start="00:17:21.000" video="mainVideo-latex" id="subtitle"]] +[[!template text="""is written in what language.""" start="00:17:22.920" video="mainVideo-latex" id="subtitle"]] +[[!template text="""For example, for things like hyphenation""" start="00:17:24.520" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and some ways of writing the hyphens in a""" start="00:17:29.160" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and direct speech and things like that.""" start="00:17:37.120" video="mainVideo-latex" id="subtitle"]] +[[!template text="""And the other place where you need""" start="00:17:42.520" video="mainVideo-latex" id="subtitle"]] +[[!template text="""other Babel or Polyglossia here,""" start="00:17:45.520" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and you will see that, because all examples""" start="00:17:47.280" video="mainVideo-latex" id="subtitle"]] +[[!template text="""that you can get for later, in this case,""" start="00:17:50.440" video="mainVideo-latex" id="subtitle"]] +[[!template text="""is when you have a language""" start="00:17:53.320" video="mainVideo-latex" id="subtitle"]] +[[!template text="""that uses right to left alignment""" start="00:17:56.141" video="mainVideo-latex" id="subtitle"]] +[[!template text="""like Arabic, Hebrew and others.""" start="00:17:59.408" video="mainVideo-latex" id="subtitle"]] +[[!template text="""So one note of, I would say, care is you always use the,""" start="00:18:06.440" video="mainVideo-latex" id="subtitle"]] +[[!template text="""if you use Unicode fonts""" start="00:18:14.480" video="mainVideo-latex" id="subtitle"]] +[[!template text="""that includes the scripts as you need,""" start="00:18:16.640" video="mainVideo-latex" id="subtitle"]] +[[!template text="""you will have done, that will be a great leap for you""" start="00:18:19.720" video="mainVideo-latex" id="subtitle"]] +[[!template text="""because that simplifies the configuration a lot.""" start="00:18:28.240" video="mainVideo-latex" id="subtitle"]] + +<div class="transcript-heading">[[!template new="1" text="""Demonstrations""" start="00:18:34.480" video="mainVideo-latex" id="subtitle"]]</div>[[!template text="""Now, a couple of demos.""" start="00:18:34.480" video="mainVideo-latex" id="subtitle"]] +[[!template text="""I don't know if you've noticed""" start="00:18:36.840" video="mainVideo-latex" id="subtitle"]] +[[!template text="""first demo is that I'm using""" start="00:18:39.320" video="mainVideo-latex" id="subtitle"]] +[[!template text="""fonts that are not the official fonts""" start="00:18:43.200" video="mainVideo-latex" id="subtitle"]] +[[!template text="""in this Beamer template,""" start="00:18:47.520" video="mainVideo-latex" id="subtitle"]] +[[!template text="""which is by the way Boadilla.""" start="00:18:48.960" video="mainVideo-latex" id="subtitle"]] +[[!template text="""This would be the first thing.""" start="00:18:51.400" video="mainVideo-latex" id="subtitle"]] +[[!template text="""So I've been using other fonts,""" start="00:18:53.960" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and they are, at least from what I get in class,""" start="00:18:56.600" video="mainVideo-latex" id="subtitle"]] +[[!template text="""they are more readable than the official...""" start="00:19:01.680" video="mainVideo-latex" id="subtitle"]] +[[!template text="""than the default fonts in Polyglossia,""" start="00:19:03.760" video="mainVideo-latex" id="subtitle"]] +[[!template text="""that you get in Babel for the Boadilla theme.""" start="00:19:06.280" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Another thing is what I've told you,""" start="00:19:12.240" video="mainVideo-latex" id="subtitle"]] +[[!template text="""I have my own things like emojis.""" start="00:19:14.320" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Now, if you allow me for a second,""" start="00:19:18.960" video="mainVideo-latex" id="subtitle"]] +[[!template text="""I'm going to switch to the Emacs""" start="00:19:22.800" video="mainVideo-latex" id="subtitle"]] +[[!template text="""which is running behind the scenes to show you what.""" start="00:19:27.000" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Okay, fine. So, this is the presentation.""" start="00:19:36.760" video="mainVideo-latex" id="subtitle"]] +[[!template text="""that I have here, and as you see,""" start="00:19:42.120" video="mainVideo-latex" id="subtitle"]] +[[!template text="""I'm using Lua LaTeX and just fontspec,""" start="00:19:44.800" video="mainVideo-latex" id="subtitle"]] +[[!template text="""given I don't know why I would need this,""" start="00:19:54.840" 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...""" start="00:20:09.360" video="mainVideo-latex" id="subtitle"]] +[[!template text="""[Ihor]: I don't think you're showing anything""" start="00:20:11.172" video="mainVideo-latex" id="subtitle"]] +[[!template text="""[Pedro]: Oh, thank you.""" start="00:20:12.941" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Okay, this is the presentation, right?""" start="00:20:18.480" 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:23.541" video="mainVideo-latex" id="subtitle"]] +[[!template text="""And in this full screen,""" start="00:20:31.201" video="mainVideo-latex" id="subtitle"]] +[[!template text="""you see the presentation on one side""" start="00:20:32.640" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and you see Emacs on the other side. Oh, still nothing.""" start="00:20:34.760" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Yeah, we're not seeing your screen at the moment, sorry.""" start="00:20:40.600" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Oh, thank you. Thank you for that.""" start="00:20:44.320" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Now it's starting to come. Okay. Yay! Fine.""" start="00:20:47.720" video="mainVideo-latex" id="subtitle"]] +[[!template text="""So this presentation, I've done it with Lua LaTeX,""" start="00:20:52.880" video="mainVideo-latex" id="subtitle"]] +[[!template text="""and what I add here is fontspec and English language.""" start="00:21:00.400" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Just to show you, but with the same configuration,""" start="00:21:06.440" video="mainVideo-latex" id="subtitle"]] +[[!template text="""with the same fontspec configuration,""" start="00:21:10.280" video="mainVideo-latex" id="subtitle"]] +[[!template text="""but adding Polyglossia.""" start="00:21:11.840" video="mainVideo-latex" id="subtitle"]] +[[!template text="""I just have enough with adding Polyglossia""" start="00:21:20.474" 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 date 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 polyglossia 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 dir-locals""" start="00:22:02.340" video="mainVideo-latex" id="subtitle"]] +[[!template text="""in these 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:16.960" 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 Emacs 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:28.800" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Actually, you don't need a fallback""" start="00:22:33.960" video="mainVideo-latex" id="subtitle"]] +[[!template text="""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:40.108" video="mainVideo-latex" id="subtitle"]] +[[!template text="""so the only thing that I would really need""" start="00:22:44.608" 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 mono. This can be also commented.""" start="00:22:53.920" video="mainVideo-latex" id="subtitle"]] + +<div class="transcript-heading">[[!template new="1" text="""Demo: Emoji""" start="00:22:57.475" video="mainVideo-latex" id="subtitle"]]</div>[[!template text="""The only thing where I would really need""" start="00:22:57.475" video="mainVideo-latex" id="subtitle"]] +[[!template text="""a fallback 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 fallback 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""" start="00:23:09.800" video="mainVideo-latex" id="subtitle"]] +[[!template text="""with a modifier,""" start="00:23:14.741" 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 Harfbuzz 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:22.875" 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"]] + +<div class="transcript-heading">[[!template new="1" text="""Demo: Letter""" start="00:23:33.180" video="mainVideo-latex" id="subtitle"]]</div>[[!template text="""I also have a couple of other things to show.""" start="00:23:33.180" 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 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 polyglossia for the date.""" start="00:24:06.120" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Anyhow, how did... What was my first thing that I did""" start="00:24:08.680" 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 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 LaTeX for that running.""" start="00:24:35.280" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Well, I actually, all my LaTeX is supported for that.""" start="00:24:43.860" 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"]] + +<div class="transcript-heading">[[!template new="1" text="""Demo: Side by side""" start="00:25:44.400" video="mainVideo-latex" id="subtitle"]]</div>[[!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 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 done with Polyglossia.""" start="00:26:12.920" video="mainVideo-latex" id="subtitle"]] +[[!template text="""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:24.241" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Come on. There you are. You get this.""" start="00:26:38.000" 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 FreeSerif.""" start="00:26:48.240" video="mainVideo-latex" id="subtitle"]] +[[!template text="""This listing is produced with DejaVu Sans Mono.""" start="00:26:53.880" video="mainVideo-latex" id="subtitle"]] +[[!template text="""And using Polyglossia here, I'm able to go and define""" start="00:27:01.480" video="mainVideo-latex" id="subtitle"]] +[[!template text="""the Greek polyton for the variant,""" start="00:27:12.900" 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 FreeSerif.""" 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"]] + +<div class="transcript-heading">[[!template new="1" text="""Thanks""" start="00:28:12.600" video="mainVideo-latex" id="subtitle"]]</div>[[!template text="""I want to thank once again Juan Manuel Macias and Jing Huang""" start="00:28:12.600" video="mainVideo-latex" id="subtitle"]] +[[!template text="""for what they have shared.""" start="00:28:16.840" 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 font untouched for a couple of months""" start="00:28:37.040" video="mainVideo-latex" id="subtitle"]] +[[!template text="""so that people can take... the feature branch""" start="00:28:39.608" video="mainVideo-latex" id="subtitle"]] +[[!template text="""untouched for a couple of months""" start="00:28:42.221" 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="""[Ihor]: I think there was one question on Etherpad for...""" start="00:29:24.840" video="mainVideo-latex" id="subtitle"]] +[[!template text="""[Pedro]: Beautiful. I think that goes beyond fonts right.""" start="00:29:39.241" video="mainVideo-latex" id="subtitle"]] + +<div class="transcript-heading">[[!template new="1" text="""Q: What about video (mp4) support for ox-latex?""" start="00:29:47.120" video="mainVideo-latex" id="subtitle"]]</div>[[!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:14.740" 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:42.280" video="mainVideo-latex" id="subtitle"]] +[[!template text="""you can get the LaTeX 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:31:00.320" 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 latex` `#+end_export` LaTeX.""" 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="""[Ihor]: Videos are generally a bit tricky because you cannot...""" start="00:31:24.280" video="mainVideo-latex" id="subtitle"]] +[[!template text="""Not every viewer will play them.""" start="00:31:27.275" video="mainVideo-latex" id="subtitle"]] +[[!template text="""so I think there is something called pdfpc that can,""" start="00:31:31.120" video="mainVideo-latex" id="subtitle"]] +[[!template text="""this provides a LaTeX 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="""[Pedro]: 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 LaTeX""" 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..7a149948 100644 --- a/2025/info/latex-before.md +++ b/2025/info/latex-before.md @@ -1,19 +1,28 @@ <!-- 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"><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 />"""<track kind="chapters" label="Chapters" src="/2025/captions/emacsconf-2025-latex--latex-export-in-orgmode-the-overhaul--pedro-a-aranda-gutirrez--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-latex" data=""" +00:00.000 Introduction +00:41.400 Motivation +02:53.360 Evolution +06:02.480 What do you get from the feature branch? +08:47.280 Behind the scenes: .dir-locals.el +11:59.080 When fontspec is not enough +15:21.080 Rationale behind my take at LaTeX font management +18:34.480 Demonstrations +22:57.475 Demo: Emoji +23:33.180 Demo: Letter +25:44.400 Demo: Side by side +28:12.600 Thanks +29:47.120 Q: What about video (mp4) support for ox-latex? -<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></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--chapters.vtt">Download --main--chapters.vtt</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></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..e00f6105 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 Mastodon""" 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 ToobNix, 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. Helary, Triko, and James Endres 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="""PsiTransfer, 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..ca632dbd 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 (156MB)</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..199f4e4c 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>Listen to just the audio:<br /><audio controls preload="none" id="qanda-reader-audio" src="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--answers.opus"></audio></div><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.opus">Download --answers.opus (17MB)</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..fdd54459 100644 --- a/2025/info/zettelkasten-before.md +++ b/2025/info/zettelkasten-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 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: Q&A to be extracted from the room recordings + + +# 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 @@ -31,6 +27,26 @@ 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 />"""<track kind="chapters" label="Chapters" src="/2025/captions/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--answers--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="qanda-zettelkasten" data=""" +00:49.560 Q: What do you use for the fancy animations? +03:30.080 Q: Are you not a fan of using *, **, *** headings in org-mode? +07:13.720 Q: Can you use org files and all its features inside Denote? +07:49.000 Q: Where or how do you like to capture fleeting notes? +11:29.040 Q: Zettelkasten feels like a very "cagey" approach to note-taking and knowledge management. Doesn't it restrict one to think in certain ways rather than what feels natural to someone? +15:07.328 Q: How does denote compare to org-roam? +18:25.040 Q: I noticed that the wikipedia link you wrote was typed wrongly - and it got me thinking about how to deal with broken links at scale? Do you have any thoughts on this? What about archival? +21:20.591 Comment: When I completely re-worked my config some two years ago, I also tried out some of these packages for making notes in Emacs... +24:34.800 Q: How Zettelkasten is useful for highly mathematical STEM academic fields like computer science or engineering fields? +39:40.960 Q: In your experience, would you say that you re-use most of your notes? +44:15.280 Q: How are notes structured and accessed when the notes grow from 10K to 100K notes? +48:55.160 Q: I would be very interested in your thought on this video by Westenberg - https://www.youtube.com/watch?v=CjSWwmg-JRM (Why I Deleted My Second Brain: A Journey Back to Real Thinking) +57:59.160 Q: Is there a danger that with the Zettelkasten process, that the process gets a bit in the way of the content? +01:03:20.640 Q: How do you navigate looking at all posts with certain tags + +"""]]<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--chapters.vtt">Download --answers--chapters.vtt</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 (67MB)</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..ba009a71 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.opus">Download --answers.opus (20MB)</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.opus">Download --answers.opus (7.3MB)</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--chapters.vtt">Download --answers--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--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.opus">Download --answers.opus (21MB)</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--chapters.vtt">Download --main--chapters.vtt</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></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--chapters.vtt">Download --answers--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--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.opus">Download --answers.opus (24MB)</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 (55MB)</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 (156MB)</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.opus">Download --answers.opus (17MB)</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 (79MB)</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--chapters.vtt">Download --answers--chapters.vtt</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 (67MB)</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.opus">Download --answers.opus (19MB)</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.opus">Download --answers.opus (24MB)</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.opus">Download --answers.opus (16MB)</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.opus">Download --answers.opus (22MB)</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 (88MB)</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"]] |
