summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEmacsConf <emacsconf-org@gnu.org>2025-12-06 13:01:25 -0500
committerEmacsConf <emacsconf-org@gnu.org>2025-12-06 13:01:25 -0500
commit8f3eea5feb59c73501f1bf4dda2e71438dd824ff (patch)
tree4188fa728d487ba7833f111c327cd467530752e4
parent8f87f3d23541bb5c54e4b6c5376b89a61858e660 (diff)
downloademacsconf-wiki-8f3eea5feb59c73501f1bf4dda2e71438dd824ff.tar.xz
emacsconf-wiki-8f3eea5feb59c73501f1bf4dda2e71438dd824ff.zip
Automated commit
-rw-r--r--2025/captions/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--main.vtt1069
-rw-r--r--2025/info/llm-after.md366
-rw-r--r--2025/info/llm-before.md6
3 files changed, 1438 insertions, 3 deletions
diff --git a/2025/captions/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--main.vtt b/2025/captions/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--main.vtt
new file mode 100644
index 00000000..ea969e1e
--- /dev/null
+++ b/2025/captions/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--main.vtt
@@ -0,0 +1,1069 @@
+WEBVTT captioned by amitav
+
+NOTE Introduction
+
+00:00:01.040 --> 00:00:03.079
+Hi, I'm Andrew Hyatt.
+
+00:00:03.080 --> 00:00:09.399
+I'm going to talk to you today about Emacs and AI,
+
+00:00:09.400 --> 00:00:10.879
+and where things are right now
+
+00:00:10.880 --> 00:00:12.119
+in the world of Emacs and AI,
+
+00:00:12.120 --> 00:00:14.159
+via large language models,
+
+00:00:14.160 --> 00:00:16.999
+and where things might be going,
+
+00:00:17.000 --> 00:00:22.699
+and what it means for the future of Emacs.
+
+00:00:22.700 --> 00:00:27.279
+I think what we're seeing with Emacs is interesting.
+
+00:00:27.280 --> 00:00:29.399
+We've seen a lot of different things
+
+00:00:29.400 --> 00:00:31.559
+come around in the past year,
+
+00:00:31.560 --> 00:00:33.119
+in the past several years.
+
+00:00:33.120 --> 00:00:35.079
+There's lots of different solutions.
+
+00:00:35.080 --> 00:00:36.759
+But in the past year, things have been very interesting.
+
+00:00:36.760 --> 00:00:39.679
+I think there's new and interesting questions
+
+00:00:39.680 --> 00:00:43.279
+about what does it mean to use Emacs?
+
+00:00:43.280 --> 00:00:45.479
+What does it mean to use any editor?
+
+00:00:45.480 --> 00:00:47.279
+I'm going to be talking about Emacs,
+
+00:00:47.280 --> 00:00:50.359
+and I'm going to show you various Emacs packages
+
+00:00:50.360 --> 00:00:53.079
+as demonstrations of these ideas.
+
+00:00:53.080 --> 00:00:59.839
+But there's the general question of
+
+00:00:59.840 --> 00:01:03.719
+what does it mean to use any editor, not just Emacs?
+
+00:01:03.720 --> 00:01:06.239
+What does it mean to do work?
+
+00:01:06.240 --> 00:01:10.719
+And I think the industry in general is facing these challenges
+
+00:01:10.720 --> 00:01:13.279
+of we don't really know where things are going to end up,
+
+00:01:13.280 --> 00:01:16.919
+but we do know the direction they're going.
+
+00:01:16.920 --> 00:01:20.039
+Emacs is a reflection of that.
+
+00:01:20.040 --> 00:01:23.239
+I think the answer for Emacs might be
+
+00:01:23.240 --> 00:01:25.719
+a little bit different than everything else,
+
+00:01:25.720 --> 00:01:28.599
+but I do want to show you what's out there
+
+00:01:28.600 --> 00:01:33.319
+so we can explore what are the possibilities
+
+00:01:33.320 --> 00:01:41.119
+of Emacs, AI, and generally how we get things done.
+
+00:01:41.120 --> 00:01:44.719
+Thanks. Let's dive right into it.
+
+NOTE Copilot
+
+00:01:44.720 --> 00:01:48.079
+We're going to start by showing you
+
+00:01:48.080 --> 00:01:51.039
+some things that are pretty well integrated,
+
+00:01:51.040 --> 00:01:55.279
+that look a lot like what you see in Emacs
+
+00:01:55.280 --> 00:01:58.679
+and fit in with the kinds of editing
+
+00:01:58.680 --> 00:02:02.639
+that you normally do in Emacs.
+
+00:02:02.640 --> 00:02:06.579
+So this is just kind of like, it's well integrated.
+
+00:02:06.580 --> 00:02:08.779
+So we're going to talk about Copilot and Semext.
+
+00:02:08.780 --> 00:02:12.679
+Copilot is by Microsoft via GitHub,
+
+00:02:12.680 --> 00:02:14.759
+and Semext is just my personal demo,
+
+00:02:14.760 --> 00:02:18.039
+but they're both showing you, you know,
+
+00:02:18.040 --> 00:02:24.399
+this kind of thing. Let's start with Copilot.
+
+00:02:24.400 --> 00:02:31.919
+Let's try out Copilot on just a standard bit of Elisp.
+
+00:02:31.920 --> 00:02:38.439
+We're going to write a Fibonacci function.
+
+00:02:38.440 --> 00:02:43.079
+Let's try out Emacs on a standard bit of Elisp.
+
+00:02:43.080 --> 00:02:49.279
+We're going to write a Fibonacci function.
+
+00:02:49.280 --> 00:02:53.159
+And you can see like as soon as we even start typing it,
+
+00:02:53.160 --> 00:02:56.339
+we get everything as a completion.
+
+00:02:56.340 --> 00:02:59.879
+So you can just press Tab here,
+
+00:02:59.880 --> 00:03:02.159
+and you've just completed
+
+00:03:02.160 --> 00:03:06.799
+a significant bunch of Emacs Lisp code.
+
+00:03:06.800 --> 00:03:09.919
+It will do this no matter where you are.
+
+00:03:09.920 --> 00:03:14.799
+So, pretty useful. It will just keep suggesting things.
+
+00:03:14.800 --> 00:03:16.439
+Do you want to do this?
+
+00:03:16.440 --> 00:03:17.479
+I'm not sure.
+
+00:03:17.480 --> 00:03:22.839
+But it usually is offering pretty reasonable things.
+
+00:03:22.840 --> 00:03:29.299
+So you could do this with code,
+
+00:03:29.300 --> 00:03:32.119
+of course, any code.
+
+00:03:32.120 --> 00:03:33.919
+You don't really even have to have a mode for it, right?
+
+00:03:33.920 --> 00:03:36.679
+That's kind of the beauty of AI is that
+
+00:03:36.680 --> 00:03:38.519
+you don't need any Emacs functionality for this,
+
+00:03:38.520 --> 00:03:39.519
+except for Copilot.
+
+00:03:39.520 --> 00:03:41.679
+It doesn't need to know the structure of your code.
+
+00:03:41.680 --> 00:03:45.279
+It doesn't need anything except for the text itself
+
+00:03:45.280 --> 00:03:51.239
+and whatever AI integration that this is.
+
+00:03:51.240 --> 00:03:53.739
+We can look at, you can do the same thing with Org-mode.
+
+00:03:53.740 --> 00:03:57.999
+So we could say create, no,
+
+00:03:58.000 --> 00:04:02.919
+how about let's, let's do, you know, spring cleaning.
+
+00:04:02.920 --> 00:04:10.839
+It's actually the fall, but still we'll say spring cleaning.
+
+00:04:10.840 --> 00:04:12.767
+And it'll start suggesting things that, you know,
+
+00:04:12.768 --> 00:04:15.439
+maybe at first, it doesn't really know what to do to
+
+00:04:15.440 --> 00:04:16.433
+clean up all code.
+
+00:04:16.434 --> 00:04:18.400
+It thinks I need to clean up code, but no,
+
+00:04:18.401 --> 00:04:21.839
+this is going to be actual, you know,
+
+00:04:21.840 --> 00:04:31.567
+clean hood over range. Clean out pantry.
+
+00:04:31.568 --> 00:04:33.879
+These are all really reasonable suggestions.
+
+00:04:33.880 --> 00:04:38.319
+You just keep going here.
+
+NOTE Semext
+
+00:04:38.320 --> 00:04:40.559
+I'm going to demonstrate Semext,
+
+00:04:40.560 --> 00:04:43.879
+which is a package I have on GNU Elpa,
+
+00:04:43.880 --> 00:04:48.719
+that is designed to integrate AI in a very Emacs-like way.
+
+00:04:48.720 --> 00:04:50.999
+And so what you could do is you could do a
+
+00:04:51.000 --> 00:04:54.799
+semext-search-forward.
+
+00:04:54.800 --> 00:04:58.719
+The UI looks just like other Emacs commands,
+
+00:04:58.720 --> 00:05:02.379
+but you can search for anything.
+
+00:05:02.380 --> 00:05:06.279
+There's really no way to express what I'm about to,
+
+00:05:06.280 --> 00:05:08.679
+what I'm trying to demonstrate
+
+00:05:08.680 --> 00:05:12.359
+in Emacs's normal search commands.
+
+00:05:12.360 --> 00:05:15.399
+You could really ask for anything.
+
+00:05:15.400 --> 00:05:18.759
+And it takes a little while, which is not Emacs-like,
+
+00:05:18.760 --> 00:05:20.033
+but everything else is sort of like
+
+00:05:20.034 --> 00:05:21.719
+it's designed to be like Emacs,
+
+00:05:21.720 --> 00:05:23.519
+except way more powerful.
+
+00:05:23.520 --> 00:05:27.119
+You don't need any mode to be active for this.
+
+00:05:27.120 --> 00:05:32.039
+You just need the library
+
+00:05:32.040 --> 00:05:34.759
+and an AI provider of some sort, either locally
+
+00:05:34.760 --> 00:05:41.199
+or, you know, your favorite cloud provider.
+
+NOTE Integrated AI experiences: gptel, ellama, chatgpt-shell, etc.
+
+00:05:41.200 --> 00:05:43.679
+Now we're going to move on to a different way
+
+00:05:43.680 --> 00:05:46.399
+of interacting with AI and Emacs.
+
+00:05:46.400 --> 00:05:52.319
+This way is less like the normal editing experience.
+
+00:05:52.320 --> 00:05:56.999
+So you lose some familiarity. However, in exchange,
+
+00:05:57.000 --> 00:05:58.079
+it is a lot more powerful.
+
+00:05:58.080 --> 00:06:00.119
+And there's a whole suite of these tools.
+
+00:06:00.120 --> 00:06:02.479
+I'm going to demonstrate gptel,
+
+00:06:02.480 --> 00:06:05.779
+which is the most popular one.
+
+00:06:05.780 --> 00:06:06.399
+But there are many.
+
+00:06:06.400 --> 00:06:08.479
+And I think different people have
+
+00:06:08.480 --> 00:06:11.759
+their own preferences of what they like to use.
+
+00:06:11.760 --> 00:06:12.999
+We're going to try now something
+
+00:06:13.000 --> 00:06:15.079
+that is a step away from just editing.
+
+00:06:15.080 --> 00:06:19.839
+And we're going to, I'm actually using gptel.
+
+00:06:19.840 --> 00:06:22.799
+There are several packages that are going to be
+
+00:06:22.800 --> 00:06:25.959
+doing the same sort of thing as I'm going to show you.
+
+00:06:25.960 --> 00:06:29.999
+gptel has sort of become the most popular one.
+
+00:06:30.000 --> 00:06:32.199
+So that's why I'm showing that to you.
+
+00:06:32.200 --> 00:06:39.319
+But let's just highlight everything and say gptel rewrite.
+
+00:06:39.320 --> 00:06:42.399
+And gptel basically just has a few things.
+
+00:06:42.400 --> 00:06:45.119
+There's different ways of thinking about this.
+
+00:06:45.120 --> 00:06:49.999
+With just a few very configurable menus,
+
+00:06:50.000 --> 00:06:53.959
+you can do a large variety of things.
+
+00:06:53.960 --> 00:06:59.819
+So let's give rewrite instructions.
+
+00:06:59.820 --> 00:07:06.600
+"Turn this into an iterative program
+
+00:07:06.601 --> 00:07:12.199
+instead of a recursive program."
+
+00:07:12.200 --> 00:07:17.799
+In Elisp, you really should not be using recursion.
+
+00:07:17.800 --> 00:07:20.359
+So we could say "return to be ready".
+
+00:07:20.360 --> 00:07:21.119
+Do we accept it?
+
+00:07:21.120 --> 00:07:24.519
+Yes, we accept it. Or we could iterate and say, no, no,
+
+00:07:24.520 --> 00:07:26.799
+that's not what we meant. We meant something else.
+
+00:07:26.800 --> 00:07:29.159
+Or you did something a little something wrong.
+
+00:07:29.160 --> 00:07:29.879
+Please fix it.
+
+00:07:29.880 --> 00:07:31.879
+So this is all very powerful.
+
+00:07:31.880 --> 00:07:33.799
+Is this editing?
+
+00:07:33.800 --> 00:07:40.279
+Well, it's in the editor.
+
+00:07:40.280 --> 00:07:42.759
+You could do this while editing, while deleting,
+
+00:07:42.760 --> 00:07:44.959
+you could be doing some sort of traditional editing.
+
+00:07:44.960 --> 00:07:47.679
+And then this, which is editing
+
+00:07:47.680 --> 00:07:48.919
+in the sense that it's in your editor,
+
+00:07:48.920 --> 00:07:51.039
+you might have to highlight
+
+00:07:51.040 --> 00:07:52.799
+some parts of the file and do things,
+
+00:07:52.800 --> 00:07:54.719
+but generally you don't even need to,
+
+00:07:54.720 --> 00:07:59.879
+or you go to a spot and you say, put code at this spot.
+
+00:07:59.880 --> 00:08:01.959
+It's kind of like editing.
+
+00:08:01.960 --> 00:08:05.839
+I would say it's not exactly editing,
+
+00:08:05.840 --> 00:08:10.159
+but it's at least something that must happen in an editor
+
+00:08:10.160 --> 00:08:12.359
+and it's well integrated into Emacs.
+
+00:08:12.360 --> 00:08:14.759
+As you can tell, it used very sort of
+
+00:08:14.760 --> 00:08:18.239
+modern standard Emacs UI paradigms
+
+00:08:18.240 --> 00:08:20.759
+and it's all written in Elisp.
+
+00:08:20.760 --> 00:08:23.779
+Everything is happening in Elisp here.
+
+00:08:23.780 --> 00:08:25.959
+So this is just very much an Emacs experience.
+
+00:08:25.960 --> 00:08:27.679
+It's just not exactly editing
+
+00:08:27.680 --> 00:08:29.879
+because the thing doing the editing
+
+00:08:29.880 --> 00:08:32.519
+is the AI and not you.
+
+00:08:32.520 --> 00:08:36.039
+You're just kind of telling it what to do.
+
+NOTE Outside the editor
+
+00:08:36.040 --> 00:08:41.119
+Now we're going to go and look at a way of interaction
+
+00:08:41.120 --> 00:08:43.239
+that's even more powerful
+
+00:08:43.240 --> 00:08:46.279
+and even more disconnected from the normal editing experience.
+
+00:08:46.280 --> 00:08:47.919
+In fact, it's so disconnected
+
+00:08:47.920 --> 00:08:52.399
+that most people are using this without an editor.
+
+00:08:52.400 --> 00:08:57.879
+These are things like Claude Code
+
+00:08:57.880 --> 00:09:01.079
+or the sort of open source equivalent, Aider.
+
+00:09:01.080 --> 00:09:05.039
+There's a few other things that follow this pattern as well.
+
+00:09:05.040 --> 00:09:07.479
+But it's very interesting in the sense
+
+00:09:07.480 --> 00:09:09.839
+that while you can integrate these with the editors,
+
+00:09:09.840 --> 00:09:12.039
+and I'm going to show you an Emacs integration,
+
+00:09:12.040 --> 00:09:13.519
+you don't need to.
+
+00:09:13.520 --> 00:09:16.939
+And that's not the way most people are using them.
+
+00:09:16.940 --> 00:09:19.759
+And I find it very interesting that sort of
+
+00:09:19.760 --> 00:09:23.719
+we're going back kind of full circle where, you know,
+
+00:09:23.720 --> 00:09:31.959
+in the 1960s or 70s, we were using Ed from the terminal
+
+00:09:31.960 --> 00:09:35.639
+to edit files, but then we created editors,
+
+00:09:35.640 --> 00:09:37.959
+and that was a really good idea.
+
+00:09:37.960 --> 00:09:40.167
+It is a lot easier to edit files
+
+00:09:40.168 --> 00:09:42.499
+when you have an actual UI.
+
+00:09:42.500 --> 00:09:46.879
+But now it's 2025, and we're back in the terminal,
+
+00:09:46.880 --> 00:09:50.799
+and we're editing files through the terminal,
+
+00:09:50.800 --> 00:09:53.599
+and you know what, it's great,
+
+00:09:53.600 --> 00:09:56.899
+but I think it's even better with Emacs.
+
+00:09:56.900 --> 00:10:00.279
+On the other hand, it comes with some trade-offs,
+
+00:10:00.280 --> 00:10:04.733
+as you can see, as we will see.
+
+NOTE Outside Experiences: claude-code.el, aidermacs, eca
+
+00:10:04.734 --> 00:10:07.467
+Okay, we're going to look at
+
+00:10:07.468 --> 00:10:20.320
+[audio glitch] Claude Code IDE, aidermacs, ECA.
+
+00:10:20.321 --> 00:10:22.639
+Last time, I didn't show you all the variants.
+
+00:10:22.640 --> 00:10:26.839
+I do want to show you eca, which points to,
+
+00:10:26.840 --> 00:10:29.799
+it is a very similar tool in what it does,
+
+00:10:29.800 --> 00:10:32.739
+but does have a different
+
+00:10:32.740 --> 00:10:37.239
+and I think better type of Emacs integration.
+
+00:10:37.240 --> 00:10:42.599
+All right, we're going to demonstrate Claude Code IDE,
+
+00:10:42.600 --> 00:10:46.839
+which is one of three Claude Code packages.
+
+00:10:46.840 --> 00:10:47.719
+It's a bit confusing.
+
+00:10:47.720 --> 00:10:52.039
+One of them will be demoed by another presenter
+
+00:10:52.040 --> 00:10:54.639
+at the Emacs conference, so stay tuned for that.
+
+00:10:54.640 --> 00:10:56.439
+Here I'm just going to give you a little taste
+
+00:10:56.440 --> 00:10:58.759
+of what these packages look like.
+
+00:10:58.760 --> 00:11:03.339
+So if we say Claude Code IDE,
+
+00:11:03.340 --> 00:11:06.839
+it presents us with basically
+
+00:11:06.840 --> 00:11:09.039
+almost exactly what you would get
+
+00:11:09.040 --> 00:11:11.519
+when you're running this in the terminal.
+
+00:11:11.520 --> 00:11:13.933
+And essentially there's a terminal interface.
+
+00:11:13.934 --> 00:11:16.659
+You can see that there's a vterm.
+
+00:11:16.660 --> 00:11:20.699
+But here we're going to say, "In scratch.el"...
+
+00:11:20.700 --> 00:11:23.400
+let's say what we want to happen.
+
+00:11:23.401 --> 00:11:32.133
+[In scratch.el, there is a fibonacci function.
+
+00:11:32.134 --> 00:11:39.567
+Can you add all normal elisp headers
+
+00:11:39.568 --> 00:11:43.859
+and footers to this file?]
+
+00:11:43.860 --> 00:11:45.840
+So, we just say what's going to happen,
+
+00:11:45.841 --> 00:11:48.399
+and this is going to do things in the background.
+
+00:11:48.400 --> 00:11:50.979
+It's not going to do things through Emacs.
+
+00:11:50.980 --> 00:11:54.079
+That said, there is an integration with Emacs,
+
+00:11:54.080 --> 00:12:00.659
+so that it can do things like show you these nice ediffs.
+
+00:12:00.660 --> 00:12:03.199
+My screen is not really wide enough
+
+00:12:03.200 --> 00:12:04.699
+to show you a really great ediff here,
+
+00:12:04.700 --> 00:12:06.239
+but you can kind of see what it's doing,
+
+00:12:06.240 --> 00:12:09.079
+and you can see, yeah, that looks good,
+
+00:12:09.080 --> 00:12:14.120
+so you could say yes, yes, accept the changes,
+
+00:12:14.121 --> 00:12:25.299
+and if we... Just need to revert the buffer.
+
+00:12:25.300 --> 00:12:28.459
+We can quit the printout of this.
+
+00:12:28.460 --> 00:12:33.019
+We see that it just did everything I asked it to.
+
+00:12:33.020 --> 00:12:36.139
+Is everything exactly right?
+
+00:12:36.140 --> 00:12:39.159
+Probably not. It's reasonable for a start though.
+
+00:12:39.160 --> 00:12:40.959
+But you could ask it to do anything.
+
+00:12:40.960 --> 00:12:45.339
+You could say, write unit tests for this, and it will.
+
+00:12:45.340 --> 00:12:49.019
+You could say, write me a suite of functions
+
+00:12:49.020 --> 00:12:52.579
+like Fibonacci, and it'll probably do something reasonable.
+
+00:12:52.580 --> 00:12:54.900
+But you can see this is not editing.
+
+00:12:54.901 --> 00:12:58.659
+There's nothing editing-like about this.
+
+00:12:58.660 --> 00:13:07.159
+That said, there is something that is editing.
+
+00:13:07.160 --> 00:13:08.599
+You need to give it instructions.
+
+00:13:08.600 --> 00:13:10.959
+You need to tell it what to do.
+
+NOTE Org files
+
+00:13:10.960 --> 00:13:19.619
+And what you could do is... You could have a project.org,
+
+00:13:19.620 --> 00:13:23.899
+and what you could do is you could have functions.
+
+00:13:23.900 --> 00:13:26.659
+The way I've done things often is ....
+
+00:13:26.660 --> 00:13:28.439
+You could say something like,
+
+00:13:28.440 --> 00:13:36.199
+unit tests for Fibonacci. How do you spell Fibonacci?
+
+00:13:36.200 --> 00:13:40.479
+I don't remember. But then you could say that this is,
+
+00:13:40.480 --> 00:13:47.159
+you could clock it, basically. org-clock.
+
+00:13:47.160 --> 00:13:48.879
+What I've done is...
+
+00:13:48.880 --> 00:13:50.399
+You could add custom commands to Claude Code,
+
+00:13:50.400 --> 00:13:53.119
+and you could just say, look, here's my Org file,
+
+00:13:53.120 --> 00:13:57.879
+read it and do the thing that I'm clocked in as.
+
+00:13:57.880 --> 00:14:01.159
+And then you can write a bunch of instructions here, like,
+
+00:14:01.160 --> 00:14:07.039
+I like to use ert for tests. Tests should, like, whatever.
+
+00:14:07.040 --> 00:14:08.639
+You should just say... everything
+
+00:14:08.640 --> 00:14:10.999
+you need to kind of specify.
+
+00:14:11.000 --> 00:14:13.199
+As you get to more complicated tasks,
+
+00:14:13.200 --> 00:14:16.679
+it's harder and harder to give it all the context
+
+00:14:16.680 --> 00:14:17.799
+it needs for a task,
+
+00:14:17.800 --> 00:14:22.299
+and Org Mode is actually a pretty good way to do this.
+
+00:14:22.300 --> 00:14:24.079
+I find that this works pretty well,
+
+00:14:24.080 --> 00:14:26.699
+and you can even have it instruct Claude
+
+00:14:26.700 --> 00:14:29.333
+to just mark things done in your Org file
+
+00:14:29.334 --> 00:14:30.679
+when they're done.
+
+00:14:30.680 --> 00:14:32.867
+And it knows how to do this, of course.
+
+00:14:32.868 --> 00:14:37.959
+So, let's just clock out.
+
+00:14:37.960 --> 00:14:45.239
+That's one way to do things.
+
+NOTE ECA
+
+00:14:45.240 --> 00:14:49.499
+So one other thing I'd like to show you is eca,
+
+00:14:49.500 --> 00:14:52.879
+which, compared to Claude Code, ECA is open source.
+
+00:14:52.880 --> 00:14:54.239
+It's very nice in that respect.
+
+00:14:54.240 --> 00:14:57.839
+It doesn't have to use Anthropic's models.
+
+00:14:57.840 --> 00:15:00.279
+You can use local models,
+
+00:15:00.280 --> 00:15:07.619
+but it has the advantage of integrating very well with Emacs.
+
+00:15:07.620 --> 00:15:08.559
+I'm not going to demonstrate it,
+
+00:15:08.560 --> 00:15:11.159
+because it works essentially the same thing you could do
+
+00:15:11.160 --> 00:15:14.119
+approximately the same kinds of things
+
+00:15:14.120 --> 00:15:15.479
+you could do with Claude Code.
+
+00:15:15.480 --> 00:15:17.439
+You just write what you want to happen
+
+00:15:17.440 --> 00:15:18.639
+and it will make it happen.
+
+00:15:18.640 --> 00:15:21.879
+It again does not do this through Emacs,
+
+00:15:21.880 --> 00:15:23.039
+but what it does do is
+
+00:15:23.040 --> 00:15:25.119
+it gives you a much better Emacs interface
+
+00:15:25.120 --> 00:15:26.919
+that's not terminal-based,
+
+00:15:26.920 --> 00:15:29.639
+because you're not using it through the terminal,
+
+00:15:29.640 --> 00:15:31.239
+or not even through comint,
+
+00:15:31.240 --> 00:15:35.599
+you are using it through a backend
+
+00:15:35.600 --> 00:15:37.499
+that is exchanging structured information
+
+00:15:37.500 --> 00:15:40.999
+with this process that is doing all the work.
+
+00:15:41.000 --> 00:15:41.900
+But other than that,
+
+00:15:41.901 --> 00:15:44.519
+it's the same model as Claude Code
+
+00:15:44.520 --> 00:15:52.059
+and projects of that nature.
+
+NOTE Editing
+
+00:15:52.060 --> 00:15:56.159
+We've seen in the demos that I gave
+
+00:15:56.160 --> 00:15:58.639
+that there are AI experiences
+
+00:15:58.640 --> 00:16:01.279
+that are very natural in the world of editing.
+
+00:16:01.280 --> 00:16:05.339
+because they, like Copilot, just offers completion,
+
+00:16:05.340 --> 00:16:09.479
+it fits very well with what we all do in Emacs.
+
+00:16:09.480 --> 00:16:14.279
+And it's truly, yes, it's kind of a cheat in a sense
+
+00:16:14.280 --> 00:16:15.639
+for editing experiences,
+
+00:16:15.640 --> 00:16:20.159
+because it can do so much, but it's just editing.
+
+00:16:20.160 --> 00:16:25.259
+Whereas things like gptel and those kinds of tools,
+
+00:16:25.260 --> 00:16:29.799
+they are clearly in an editor and using editor,
+
+00:16:29.800 --> 00:16:35.319
+they're using Emacs, but they represent sort of like, well,
+
+00:16:35.320 --> 00:16:37.759
+you can edit for a while, then you could use these tools
+
+00:16:37.760 --> 00:16:39.479
+to do something that is not editing,
+
+00:16:39.480 --> 00:16:45.899
+this AI just changing the buffer for you. And that's fine.
+
+00:16:45.900 --> 00:16:48.399
+It's still... It may not be editing,
+
+00:16:48.400 --> 00:16:52.033
+but it's still clearly something that
+
+00:16:52.034 --> 00:16:55.567
+is useful to do in Emacs
+
+00:16:55.568 --> 00:16:57.039
+and belongs in Emacs.
+
+00:16:57.040 --> 00:17:01.859
+But the new tools like Claude Code and things like that
+
+00:17:01.860 --> 00:17:02.639
+are kind of different.
+
+00:17:02.640 --> 00:17:06.639
+Yes, they will get better integrated with Emacs,
+
+00:17:06.640 --> 00:17:11.639
+but it's not clear that they really need to.
+
+00:17:11.640 --> 00:17:15.479
+They can do a lot of things without editing.
+
+00:17:15.480 --> 00:17:19.239
+In a sense, editing is obsolete in some sense.
+
+00:17:19.240 --> 00:17:23.459
+For as many tasks, you don't need to edit anymore.
+
+00:17:23.460 --> 00:17:26.439
+And that's a nice thing.
+
+00:17:26.440 --> 00:17:30.579
+No one really knows when all this will end,
+
+00:17:30.580 --> 00:17:36.879
+how far things will go. It could be that in a decade or so,
+
+00:17:36.880 --> 00:17:41.039
+no one's really editing for work anymore.
+
+00:17:41.040 --> 00:17:43.159
+Maybe you're just writing instructions.
+
+00:17:43.160 --> 00:17:44.319
+You could do that with anything.
+
+00:17:44.320 --> 00:17:47.439
+You don't need Emacs or any special editor.
+
+00:17:47.440 --> 00:17:50.439
+We could all be using Notepad. That would be bad.
+
+00:17:50.440 --> 00:17:58.039
+But... I think it could go that far,
+
+00:17:58.040 --> 00:18:01.839
+but it could be that, well, for many specialized things,
+
+00:18:01.840 --> 00:18:04.359
+people are still using editing for certain tasks,
+
+00:18:04.360 --> 00:18:07.000
+but most tasks are getting fed to just...
+
+00:18:07.001 --> 00:18:08.839
+AI is just doing those things.
+
+00:18:08.840 --> 00:18:15.759
+In any case, I think it's clear that editing is diminishing,
+
+00:18:15.760 --> 00:18:17.959
+the need for editing itself is diminishing.
+
+00:18:17.960 --> 00:18:21.879
+And in such a world, It's interesting to think
+
+00:18:21.880 --> 00:18:24.799
+where Emacs is headed, especially in relation to
+
+00:18:24.800 --> 00:18:26.359
+all the other editors.
+
+00:18:26.360 --> 00:18:28.599
+I think people will use Emacs less.
+
+00:18:28.600 --> 00:18:31.639
+But I think other editors, like VS Code,
+
+00:18:31.640 --> 00:18:37.999
+may simply disappear or be a relatively fringe tool.
+
+00:18:38.000 --> 00:18:42.719
+And Emacs is going to follow its own path.
+
+00:18:42.720 --> 00:18:44.679
+It's very extensible. It could do anything.
+
+00:18:44.680 --> 00:18:47.919
+If there's one thing Emacs can do, it's adapt.
+
+00:18:47.920 --> 00:18:51.679
+Emacs has been around for a long time.
+
+00:18:51.680 --> 00:18:54.799
+It's pretty clear that Emacs will be around for a long time.
+
+00:18:54.800 --> 00:18:58.879
+It might be that in the future,
+
+00:18:58.880 --> 00:19:04.339
+editing is some sort of like an artisanal activity that we do.
+
+00:19:04.340 --> 00:19:05.599
+It's kind of weird to think about it.
+
+00:19:05.600 --> 00:19:07.679
+It's not like baking bread.
+
+00:19:07.680 --> 00:19:10.079
+But it is the sense that AI might be
+
+00:19:10.080 --> 00:19:12.399
+churning out code in the way, you know,
+
+00:19:12.400 --> 00:19:14.199
+the factories are turning out bread,
+
+00:19:14.200 --> 00:19:17.139
+but if you really want the good stuff,
+
+00:19:17.140 --> 00:19:20.999
+you'll have to do it yourself.
+
+00:19:21.000 --> 00:19:23.959
+I don't know if it'll be exactly like that,
+
+00:19:23.960 --> 00:19:29.519
+but it could be that Emacs survives and thrives
+
+00:19:29.520 --> 00:19:33.559
+in a very kind of specialized ecosystem of people
+
+00:19:33.560 --> 00:19:35.599
+who contribute and use it in the way
+
+00:19:35.600 --> 00:19:39.539
+it has survived and thrive right now.
+
+00:19:39.540 --> 00:19:46.139
+And I think that's a really nice way for all this to end up.
+
+00:19:46.140 --> 00:19:48.719
+There's the whole sense of how society will end up
+
+00:19:48.720 --> 00:19:50.759
+if all this happens. I don't know,
+
+00:19:50.760 --> 00:19:54.639
+but Emacs will be there for us when whatever happens.
+
+00:19:54.640 --> 00:20:00.079
+So thank you, and let's help make Emacs the best it can be
+
+00:20:00.080 --> 00:20:04.880
+to survive and thrive in the next decade.
diff --git a/2025/info/llm-after.md b/2025/info/llm-after.md
index b83899b2..91904dd7 100644
--- a/2025/info/llm-after.md
+++ b/2025/info/llm-after.md
@@ -1,6 +1,372 @@
<!-- Automatically generated by emacsconf-publish-after-page -->
+<div class="transcript transcript-mainVideo"><a name="llm-mainVideo-transcript"></a><h1>Transcript</h1>
+
+
+<div class="transcript-heading">[[!template new="1" text="""Introduction""" start="00:00:01.040" video="mainVideo-llm" id="subtitle"]]</div>[[!template text="""Hi, I'm Andrew Hyatt.""" start="00:00:01.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I'm going to talk to you today about Emacs and AI,""" start="00:00:03.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and where things are right now""" start="00:00:09.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""in the world of Emacs and AI,""" start="00:00:10.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""via large language models,""" start="00:00:12.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and where things might be going,""" start="00:00:14.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and what it means for the future of Emacs.""" start="00:00:17.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I think what we're seeing with Emacs is interesting.""" start="00:00:22.700" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""We've seen a lot of different things""" start="00:00:27.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""come around in the past year,""" start="00:00:29.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""in the past several years.""" start="00:00:31.560" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""There's lots of different solutions.""" start="00:00:33.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But in the past year, things have been very interesting.""" start="00:00:35.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I think there's new and interesting questions""" start="00:00:36.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""about what does it mean to use Emacs?""" start="00:00:39.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""What does it mean to use any editor?""" start="00:00:43.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I'm going to be talking about Emacs,""" start="00:00:45.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and I'm going to show you various Emacs packages""" start="00:00:47.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""as demonstrations of these ideas.""" start="00:00:50.360" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But there's the general question of""" start="00:00:53.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""what does it mean to use any editor, not just Emacs?""" start="00:00:59.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""What does it mean to do work?""" start="00:01:03.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And I think the industry in general is facing these challenges""" start="00:01:06.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""of we don't really know where things are going to end up,""" start="00:01:10.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but we do know the direction they're going.""" start="00:01:13.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Emacs is a reflection of that.""" start="00:01:16.920" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I think the answer for Emacs might be""" start="00:01:20.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""a little bit different than everything else,""" start="00:01:23.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but I do want to show you what's out there""" start="00:01:25.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""so we can explore what are the possibilities""" start="00:01:28.600" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""of Emacs, AI, and generally how we get things done.""" start="00:01:33.320" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Thanks. Let's dive right into it.""" start="00:01:41.120" video="mainVideo-llm" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Copilot""" start="00:01:44.720" video="mainVideo-llm" id="subtitle"]]</div>[[!template text="""We're going to start by showing you""" start="00:01:44.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""some things that are pretty well integrated,""" start="00:01:48.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""that look a lot like what you see in Emacs""" start="00:01:51.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and fit in with the kinds of editing""" start="00:01:55.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""that you normally do in Emacs.""" start="00:01:58.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So this is just kind of like, it's well integrated.""" start="00:02:02.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So we're going to talk about Copilot and Semext.""" start="00:02:06.580" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Copilot is by Microsoft via GitHub,""" start="00:02:08.780" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and Semext is just my personal demo,""" start="00:02:12.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but they're both showing you, you know,""" start="00:02:14.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""this kind of thing. Let's start with Copilot.""" start="00:02:18.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Let's try out Copilot on just a standard bit of Elisp.""" start="00:02:24.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""We're going to write a Fibonacci function.""" start="00:02:31.920" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Let's try out Emacs on a standard bit of Elisp.""" start="00:02:38.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""We're going to write a Fibonacci function.""" start="00:02:43.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And you can see like as soon as we even start typing it,""" start="00:02:49.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""we get everything as a completion.""" start="00:02:53.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So you can just press Tab here,""" start="00:02:56.340" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and you've just completed""" start="00:02:59.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""a significant bunch of Emacs Lisp code.""" start="00:03:02.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It will do this no matter where you are.""" start="00:03:06.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So, pretty useful. It will just keep suggesting things.""" start="00:03:09.920" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Do you want to do this?""" start="00:03:14.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I'm not sure.""" start="00:03:16.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But it usually is offering pretty reasonable things.""" start="00:03:17.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So you could do this with code,""" start="00:03:22.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""of course, any code.""" start="00:03:29.300" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You don't really even have to have a mode for it, right?""" start="00:03:32.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""That's kind of the beauty of AI is that""" start="00:03:33.920" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""you don't need any Emacs functionality for this,""" start="00:03:36.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""except for Copilot.""" start="00:03:38.520" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It doesn't need to know the structure of your code.""" start="00:03:39.520" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It doesn't need anything except for the text itself""" start="00:03:41.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and whatever AI integration that this is.""" start="00:03:45.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""We can look at, you can do the same thing with Org-mode.""" start="00:03:51.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So we could say create, no,""" start="00:03:53.740" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""how about let's, let's do, you know, spring cleaning.""" start="00:03:58.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It's actually the fall, but still we'll say spring cleaning.""" start="00:04:02.920" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And it'll start suggesting things that, you know,""" start="00:04:10.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""maybe at first, it doesn't really know what to do to""" start="00:04:12.768" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""clean up all code.""" start="00:04:15.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It thinks I need to clean up code, but no,""" start="00:04:16.434" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""this is going to be actual, you know,""" start="00:04:18.401" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""clean hood over range. Clean out pantry.""" start="00:04:21.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""These are all really reasonable suggestions.""" start="00:04:31.568" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You just keep going here.""" start="00:04:33.880" video="mainVideo-llm" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Semext""" start="00:04:38.320" video="mainVideo-llm" id="subtitle"]]</div>[[!template text="""I'm going to demonstrate Semext,""" start="00:04:38.320" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""which is a package I have on GNU Elpa,""" start="00:04:40.560" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""that is designed to integrate AI in a very Emacs-like way.""" start="00:04:43.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And so what you could do is you could do a""" start="00:04:48.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""semext-search-forward.""" start="00:04:51.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""The UI looks just like other Emacs commands,""" start="00:04:54.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but you can search for anything.""" start="00:04:58.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""There's really no way to express what I'm about to,""" start="00:05:02.380" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""what I'm trying to demonstrate""" start="00:05:06.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""in Emacs's normal search commands.""" start="00:05:08.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You could really ask for anything.""" start="00:05:12.360" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And it takes a little while, which is not Emacs-like,""" start="00:05:15.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but everything else is sort of like""" start="00:05:18.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""it's designed to be like Emacs,""" start="00:05:20.034" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""except way more powerful.""" start="00:05:21.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You don't need any mode to be active for this.""" start="00:05:23.520" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You just need the library""" start="00:05:27.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and an AI provider of some sort, either locally""" start="00:05:32.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""or, you know, your favorite cloud provider.""" start="00:05:34.760" video="mainVideo-llm" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Integrated AI experiences: gptel, ellama, chatgpt-shell, etc.""" start="00:05:41.200" video="mainVideo-llm" id="subtitle"]]</div>[[!template text="""Now we're going to move on to a different way""" start="00:05:41.200" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""of interacting with AI and Emacs.""" start="00:05:43.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""This way is less like the normal editing experience.""" start="00:05:46.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So you lose some familiarity. However, in exchange,""" start="00:05:52.320" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""it is a lot more powerful.""" start="00:05:57.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And there's a whole suite of these tools.""" start="00:05:58.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I'm going to demonstrate gptel,""" start="00:06:00.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""which is the most popular one.""" start="00:06:02.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But there are many.""" start="00:06:05.780" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And I think different people have""" start="00:06:06.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""their own preferences of what they like to use.""" start="00:06:08.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""We're going to try now something""" start="00:06:11.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""that is a step away from just editing.""" start="00:06:13.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And we're going to, I'm actually using gptel.""" start="00:06:15.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""There are several packages that are going to be""" start="00:06:19.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""doing the same sort of thing as I'm going to show you.""" start="00:06:22.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""gptel has sort of become the most popular one.""" start="00:06:25.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So that's why I'm showing that to you.""" start="00:06:30.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But let's just highlight everything and say gptel rewrite.""" start="00:06:32.200" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And gptel basically just has a few things.""" start="00:06:39.320" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""There's different ways of thinking about this.""" start="00:06:42.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""With just a few very configurable menus,""" start="00:06:45.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""you can do a large variety of things.""" start="00:06:50.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So let's give rewrite instructions.""" start="00:06:53.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""&quot;Turn this into an iterative program""" start="00:06:59.820" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""instead of a recursive program.&quot;""" start="00:07:06.601" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""In Elisp, you really should not be using recursion.""" start="00:07:12.200" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So we could say &quot;return to be ready&quot;.""" start="00:07:17.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Do we accept it?""" start="00:07:20.360" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Yes, we accept it. Or we could iterate and say, no, no,""" start="00:07:21.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""that's not what we meant. We meant something else.""" start="00:07:24.520" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Or you did something a little something wrong.""" start="00:07:26.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Please fix it.""" start="00:07:29.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So this is all very powerful.""" start="00:07:29.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Is this editing?""" start="00:07:31.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Well, it's in the editor.""" start="00:07:33.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You could do this while editing, while deleting,""" start="00:07:40.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""you could be doing some sort of traditional editing.""" start="00:07:42.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And then this, which is editing""" start="00:07:44.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""in the sense that it's in your editor,""" start="00:07:47.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""you might have to highlight""" start="00:07:48.920" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""some parts of the file and do things,""" start="00:07:51.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but generally you don't even need to,""" start="00:07:52.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""or you go to a spot and you say, put code at this spot.""" start="00:07:54.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It's kind of like editing.""" start="00:07:59.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I would say it's not exactly editing,""" start="00:08:01.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but it's at least something that must happen in an editor""" start="00:08:05.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and it's well integrated into Emacs.""" start="00:08:10.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""As you can tell, it used very sort of""" start="00:08:12.360" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""modern standard Emacs UI paradigms""" start="00:08:14.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and it's all written in Elisp.""" start="00:08:18.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Everything is happening in Elisp here.""" start="00:08:20.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So this is just very much an Emacs experience.""" start="00:08:23.780" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It's just not exactly editing""" start="00:08:25.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""because the thing doing the editing""" start="00:08:27.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""is the AI and not you.""" start="00:08:29.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You're just kind of telling it what to do.""" start="00:08:32.520" video="mainVideo-llm" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Outside the editor""" start="00:08:36.040" video="mainVideo-llm" id="subtitle"]]</div>[[!template text="""Now we're going to go and look at a way of interaction""" start="00:08:36.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""that's even more powerful""" start="00:08:41.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and even more disconnected from the normal editing experience.""" start="00:08:43.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""In fact, it's so disconnected""" start="00:08:46.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""that most people are using this without an editor.""" start="00:08:47.920" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""These are things like Claude Code""" start="00:08:52.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""or the sort of open source equivalent, Aider.""" start="00:08:57.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""There's a few other things that follow this pattern as well.""" start="00:09:01.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But it's very interesting in the sense""" start="00:09:05.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""that while you can integrate these with the editors,""" start="00:09:07.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and I'm going to show you an Emacs integration,""" start="00:09:09.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""you don't need to.""" start="00:09:12.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And that's not the way most people are using them.""" start="00:09:13.520" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And I find it very interesting that sort of""" start="00:09:16.940" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""we're going back kind of full circle where, you know,""" start="00:09:19.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""in the 1960s or 70s, we were using Ed from the terminal""" start="00:09:23.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""to edit files, but then we created editors,""" start="00:09:31.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and that was a really good idea.""" start="00:09:35.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It is a lot easier to edit files""" start="00:09:37.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""when you have an actual UI.""" start="00:09:40.168" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But now it's 2025, and we're back in the terminal,""" start="00:09:42.500" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and we're editing files through the terminal,""" start="00:09:46.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and you know what, it's great,""" start="00:09:50.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but I think it's even better with Emacs.""" start="00:09:53.600" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""On the other hand, it comes with some trade-offs,""" start="00:09:56.900" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""as you can see, as we will see.""" start="00:10:00.280" video="mainVideo-llm" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Outside Experiences: claude-code.el, aidermacs, eca""" start="00:10:04.734" video="mainVideo-llm" id="subtitle"]]</div>[[!template text="""Okay, we're going to look at""" start="00:10:04.734" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""[audio glitch] Claude Code IDE, aidermacs, ECA.""" start="00:10:07.468" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Last time, I didn't show you all the variants.""" start="00:10:20.321" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I do want to show you eca, which points to,""" start="00:10:22.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""it is a very similar tool in what it does,""" start="00:10:26.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but does have a different""" start="00:10:29.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and I think better type of Emacs integration.""" start="00:10:32.740" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""All right, we're going to demonstrate Claude Code IDE,""" start="00:10:37.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""which is one of three Claude Code packages.""" start="00:10:42.600" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It's a bit confusing.""" start="00:10:46.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""One of them will be demoed by another presenter""" start="00:10:47.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""at the Emacs conference, so stay tuned for that.""" start="00:10:52.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Here I'm just going to give you a little taste""" start="00:10:54.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""of what these packages look like.""" start="00:10:56.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So if we say Claude Code IDE,""" start="00:10:58.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""it presents us with basically""" start="00:11:03.340" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""almost exactly what you would get""" start="00:11:06.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""when you're running this in the terminal.""" start="00:11:09.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And essentially there's a terminal interface.""" start="00:11:11.520" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You can see that there's a vterm.""" start="00:11:13.934" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But here we're going to say, &quot;In scratch.el&quot;...""" start="00:11:16.660" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""let's say what we want to happen.""" start="00:11:20.700" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""[In scratch.el, there is a fibonacci function.""" start="00:11:23.401" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Can you add all normal elisp headers""" start="00:11:32.134" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and footers to this file?]""" start="00:11:39.568" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So, we just say what's going to happen,""" start="00:11:43.860" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and this is going to do things in the background.""" start="00:11:45.841" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It's not going to do things through Emacs.""" start="00:11:48.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""That said, there is an integration with Emacs,""" start="00:11:50.980" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""so that it can do things like show you these nice ediffs.""" start="00:11:54.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""My screen is not really wide enough""" start="00:12:00.660" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""to show you a really great ediff here,""" start="00:12:03.200" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but you can kind of see what it's doing,""" start="00:12:04.700" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and you can see, yeah, that looks good,""" start="00:12:06.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""so you could say yes, yes, accept the changes,""" start="00:12:09.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and if we... Just need to revert the buffer.""" start="00:12:14.121" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""We can quit the printout of this.""" start="00:12:25.300" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""We see that it just did everything I asked it to.""" start="00:12:28.460" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Is everything exactly right?""" start="00:12:33.020" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Probably not. It's reasonable for a start though.""" start="00:12:36.140" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But you could ask it to do anything.""" start="00:12:39.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You could say, write unit tests for this, and it will.""" start="00:12:40.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You could say, write me a suite of functions""" start="00:12:45.340" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""like Fibonacci, and it'll probably do something reasonable.""" start="00:12:49.020" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But you can see this is not editing.""" start="00:12:52.580" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""There's nothing editing-like about this.""" start="00:12:54.901" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""That said, there is something that is editing.""" start="00:12:58.660" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You need to give it instructions.""" start="00:13:07.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You need to tell it what to do.""" start="00:13:08.600" video="mainVideo-llm" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Org files""" start="00:13:10.960" video="mainVideo-llm" id="subtitle"]]</div>[[!template text="""And what you could do is... You could have a project.org,""" start="00:13:10.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and what you could do is you could have functions.""" start="00:13:19.620" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""The way I've done things often is ....""" start="00:13:23.900" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You could say something like,""" start="00:13:26.660" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""unit tests for Fibonacci. How do you spell Fibonacci?""" start="00:13:28.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I don't remember. But then you could say that this is,""" start="00:13:36.200" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""you could clock it, basically. org-clock.""" start="00:13:40.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""What I've done is...""" start="00:13:47.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You could add custom commands to Claude Code,""" start="00:13:48.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and you could just say, look, here's my Org file,""" start="00:13:50.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""read it and do the thing that I'm clocked in as.""" start="00:13:53.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And then you can write a bunch of instructions here, like,""" start="00:13:57.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I like to use ert for tests. Tests should, like, whatever.""" start="00:14:01.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You should just say... everything""" start="00:14:07.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""you need to kind of specify.""" start="00:14:08.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""As you get to more complicated tasks,""" start="00:14:11.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""it's harder and harder to give it all the context""" start="00:14:13.200" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""it needs for a task,""" start="00:14:16.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and Org Mode is actually a pretty good way to do this.""" start="00:14:17.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I find that this works pretty well,""" start="00:14:22.300" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and you can even have it instruct Claude""" start="00:14:24.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""to just mark things done in your Org file""" start="00:14:26.700" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""when they're done.""" start="00:14:29.334" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And it knows how to do this, of course.""" start="00:14:30.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So, let's just clock out.""" start="00:14:32.868" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""That's one way to do things.""" start="00:14:37.960" video="mainVideo-llm" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""ECA""" start="00:14:45.240" video="mainVideo-llm" id="subtitle"]]</div>[[!template text="""So one other thing I'd like to show you is eca,""" start="00:14:45.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""which, compared to Claude Code, ECA is open source.""" start="00:14:49.500" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It's very nice in that respect.""" start="00:14:52.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It doesn't have to use Anthropic's models.""" start="00:14:54.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You can use local models,""" start="00:14:57.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but it has the advantage of integrating very well with Emacs.""" start="00:15:00.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I'm not going to demonstrate it,""" start="00:15:07.620" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""because it works essentially the same thing you could do""" start="00:15:08.560" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""approximately the same kinds of things""" start="00:15:11.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""you could do with Claude Code.""" start="00:15:14.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You just write what you want to happen""" start="00:15:15.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and it will make it happen.""" start="00:15:17.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It again does not do this through Emacs,""" start="00:15:18.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but what it does do is""" start="00:15:21.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""it gives you a much better Emacs interface""" start="00:15:23.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""that's not terminal-based,""" start="00:15:25.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""because you're not using it through the terminal,""" start="00:15:26.920" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""or not even through comint,""" start="00:15:29.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""you are using it through a backend""" start="00:15:31.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""that is exchanging structured information""" start="00:15:35.600" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""with this process that is doing all the work.""" start="00:15:37.500" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But other than that,""" start="00:15:41.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""it's the same model as Claude Code""" start="00:15:41.901" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and projects of that nature.""" start="00:15:44.520" video="mainVideo-llm" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Editing""" start="00:15:52.060" video="mainVideo-llm" id="subtitle"]]</div>[[!template text="""We've seen in the demos that I gave""" start="00:15:52.060" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""that there are AI experiences""" start="00:15:56.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""that are very natural in the world of editing.""" start="00:15:58.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""because they, like Copilot, just offers completion,""" start="00:16:01.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""it fits very well with what we all do in Emacs.""" start="00:16:05.340" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And it's truly, yes, it's kind of a cheat in a sense""" start="00:16:09.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""for editing experiences,""" start="00:16:14.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""because it can do so much, but it's just editing.""" start="00:16:15.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Whereas things like gptel and those kinds of tools,""" start="00:16:20.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""they are clearly in an editor and using editor,""" start="00:16:25.260" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""they're using Emacs, but they represent sort of like, well,""" start="00:16:29.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""you can edit for a while, then you could use these tools""" start="00:16:35.320" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""to do something that is not editing,""" start="00:16:37.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""this AI just changing the buffer for you. And that's fine.""" start="00:16:39.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It's still... It may not be editing,""" start="00:16:45.900" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but it's still clearly something that""" start="00:16:48.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""is useful to do in Emacs""" start="00:16:52.034" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and belongs in Emacs.""" start="00:16:55.568" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But the new tools like Claude Code and things like that""" start="00:16:57.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""are kind of different.""" start="00:17:01.860" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Yes, they will get better integrated with Emacs,""" start="00:17:02.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but it's not clear that they really need to.""" start="00:17:06.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""They can do a lot of things without editing.""" start="00:17:11.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""In a sense, editing is obsolete in some sense.""" start="00:17:15.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""For as many tasks, you don't need to edit anymore.""" start="00:17:19.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And that's a nice thing.""" start="00:17:23.460" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""No one really knows when all this will end,""" start="00:17:26.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""how far things will go. It could be that in a decade or so,""" start="00:17:30.580" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""no one's really editing for work anymore.""" start="00:17:36.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Maybe you're just writing instructions.""" start="00:17:41.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You could do that with anything.""" start="00:17:43.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You don't need Emacs or any special editor.""" start="00:17:44.320" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""We could all be using Notepad. That would be bad.""" start="00:17:47.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But... I think it could go that far,""" start="00:17:50.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but it could be that, well, for many specialized things,""" start="00:17:58.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""people are still using editing for certain tasks,""" start="00:18:01.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but most tasks are getting fed to just...""" start="00:18:04.360" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""AI is just doing those things.""" start="00:18:07.001" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""In any case, I think it's clear that editing is diminishing,""" start="00:18:08.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""the need for editing itself is diminishing.""" start="00:18:15.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And in such a world, It's interesting to think""" start="00:18:17.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""where Emacs is headed, especially in relation to""" start="00:18:21.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""all the other editors.""" start="00:18:24.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I think people will use Emacs less.""" start="00:18:26.360" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But I think other editors, like VS Code,""" start="00:18:28.600" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""may simply disappear or be a relatively fringe tool.""" start="00:18:31.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And Emacs is going to follow its own path.""" start="00:18:38.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It's very extensible. It could do anything.""" start="00:18:42.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""If there's one thing Emacs can do, it's adapt.""" start="00:18:44.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Emacs has been around for a long time.""" start="00:18:47.920" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It's pretty clear that Emacs will be around for a long time.""" start="00:18:51.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It might be that in the future,""" start="00:18:54.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""editing is some sort of like an artisanal activity that we do.""" start="00:18:58.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It's kind of weird to think about it.""" start="00:19:04.340" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It's not like baking bread.""" start="00:19:05.600" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But it is the sense that AI might be""" start="00:19:07.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""churning out code in the way, you know,""" start="00:19:10.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""the factories are turning out bread,""" start="00:19:12.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but if you really want the good stuff,""" start="00:19:14.200" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""you'll have to do it yourself.""" start="00:19:17.140" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I don't know if it'll be exactly like that,""" start="00:19:21.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but it could be that Emacs survives and thrives""" start="00:19:23.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""in a very kind of specialized ecosystem of people""" start="00:19:29.520" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""who contribute and use it in the way""" start="00:19:33.560" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""it has survived and thrive right now.""" start="00:19:35.600" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And I think that's a really nice way for all this to end up.""" start="00:19:39.540" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""There's the whole sense of how society will end up""" start="00:19:46.140" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""if all this happens. I don't know,""" start="00:19:48.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but Emacs will be there for us when whatever happens.""" start="00:19:50.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So thank you, and let's help make Emacs the best it can be""" start="00:19:54.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""to survive and thrive in the next decade.""" start="00:20:00.080" video="mainVideo-llm" id="subtitle"]]
+
+</div>
+
+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)
diff --git a/2025/info/llm-before.md b/2025/info/llm-before.md
index c2aa1889..2ba18a33 100644
--- a/2025/info/llm-before.md
+++ b/2025/info/llm-before.md
@@ -5,15 +5,15 @@ The following image shows where the talk is in the schedule for Sat 2025-12-06.
</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: 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-llm>
Etherpad: <https://pad.emacsconf.org/2025-llm>
Discuss on IRC: [#emacsconf-dev](https://chat.emacsconf.org/?join=emacsconf,emacsconf-dev)
-Status: Ready to stream
+Status: Now playing on the conference livestream
<div>Times in different time zones:</div><div class="times" start="2025-12-06T18:00:00Z" end="2025-12-06T18:25:00Z"><div class="conf-time">Saturday, Dec 6 2025, ~1:00 PM - 1:25 PM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Saturday, Dec 6 2025, ~12:00 PM - 12:25 PM CST (US/Central)<br />Saturday, Dec 6 2025, ~11:00 AM - 11:25 AM MST (US/Mountain)<br />Saturday, Dec 6 2025, ~10:00 AM - 10:25 AM PST (US/Pacific)<br />Saturday, Dec 6 2025, ~6:00 PM - 6:25 PM UTC <br />Saturday, Dec 6 2025, ~7:00 PM - 7:25 PM CET (Europe/Paris)<br />Saturday, Dec 6 2025, ~8:00 PM - 8:25 PM EET (Europe/Athens)<br />Saturday, Dec 6 2025, ~11:30 PM - 11:55 PM IST (Asia/Kolkata)<br />Sunday, Dec 7 2025, ~2:00 AM - 2:25 AM +08 (Asia/Singapore)<br />Sunday, Dec 7 2025, ~3:00 AM - 3:25 AM JST (Asia/Tokyo)</div></div><div><strong><a href="/2025/watch/dev/">Find out how to watch and participate</a></strong></div>
-
+<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>
# Description
<!-- End of emacsconf-publish-before-page --> \ No newline at end of file