1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
|
<!-- 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=""""Turn this into an iterative program""" start="00:06:59.820" video="mainVideo-llm" id="subtitle"]]
[[!template text="""instead of a recursive program."""" 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 "return to be ready".""" 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, "In scratch.el"...""" 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)
<!-- End of emacsconf-publish-after-page -->
|