summaryrefslogtreecommitdiffstats
path: root/2025/info/modern-after.md
blob: 8a56edf39dd91316b794a170b9d52b823eeef5e2 (plain) (blame)
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
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
<!-- Automatically generated by emacsconf-publish-after-page -->


<div class="transcript transcript-mainVideo"><a name="modern-mainVideo-transcript"></a><h1>Transcript (unedited)</h1>


<div class="transcript-heading">[[!template new="1" text="""Introduction""" start="00:00:00.000" video="mainVideo-modern" id="subtitle"]]</div>[[!template text="""Hi, my name is Eduardo Ochs,""" start="00:00:00.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and this is my video for the EmacsConf 2025.""" start="00:00:02.360" video="mainVideo-modern" id="subtitle"]]
[[!template text="""Its title is Some Problems of Modernizing Emacs,""" start="00:00:06.640" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and that is the same title as a video""" start="00:00:09.800" video="mainVideo-modern" id="subtitle"]]
[[!template text="""that I tried to record in March.""" start="00:00:12.840" video="mainVideo-modern" id="subtitle"]]
[[!template text="""But my video from March had a good &quot;beginning&quot; and a bad &quot;rest&quot;,""" start="00:00:16.200" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and I thought, I can't release that because the rest is very bad.""" start="00:00:19.880" video="mainVideo-modern" id="subtitle"]]
[[!template text="""I need to replace... to re-record the last part of the video.""" start="00:00:23.760" video="mainVideo-modern" id="subtitle"]]
[[!template text="""But I never did that.""" start="00:00:27.920" video="mainVideo-modern" id="subtitle"]]
[[!template text="""So this video is going to be the first 12 minutes""" start="00:00:29.760" video="mainVideo-modern" id="subtitle"]]
[[!template text="""of that other video, with another ending.""" start="00:00:33.200" video="mainVideo-modern" id="subtitle"]]
[[!template text="""And in this other ending, I'm going to show some things""" start="00:00:37.960" video="mainVideo-modern" id="subtitle"]]
[[!template text="""that are very easy to test. And, if people are interested,""" start="00:00:41.440" video="mainVideo-modern" id="subtitle"]]
[[!template text="""then the rest of the old video will make more sense.""" start="00:00:46.640" video="mainVideo-modern" id="subtitle"]]
[[!template text="""Anyway, let me start.""" start="00:00:51.800" video="mainVideo-modern" id="subtitle"]]
[[!template text="""Hi! My name is Eduardo Ochs. I'm the""" start="00:00:55.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""author of an Emacs package called eev and""" start="00:00:57.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""the title of this video is""" start="00:01:00.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""&quot;Some problems of modernizing Emacs&quot;.""" start="00:01:03.000" video="mainVideo-modern" id="subtitle"]]

<div class="transcript-heading">[[!template new="1" text="""The main themes of this video""" start="00:01:05.000" video="mainVideo-modern" id="subtitle"]]</div>[[!template text="""Here is a summary of the main themes""" start="00:01:05.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""of this video. I'm going to talk mainly""" start="00:01:08.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""about these four things here. The first""" start="00:01:10.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""one is that Emacs has changed a lot in its""" start="00:01:12.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""recent versions, and now it has lots of""" start="00:01:15.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""types... so if we want to look under the""" start="00:01:18.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""hood and to understand what Emacs""" start="00:01:21.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""really does we are going to stumble on""" start="00:01:24.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""lots of types... and the""" start="00:01:27.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""current tree of classes and types""" start="00:01:30.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""looks like this... that is,""" start="00:01:34.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""is quite big.""" start="00:01:37.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""The second theme is that people used""" start="00:01:46.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""to say things like &quot;Anyone can learn Lisp""" start="00:01:49.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""in one day&quot;... I'm going to explain""" start="00:01:53.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""this quote, and I'm also going to show""" start="00:01:56.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""that now this is gone... anyway. This is a""" start="00:02:01.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""very short summary... details soon.""" start="00:02:04.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""I will also show how to display""" start="00:02:08.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""better &quot;inner views&quot; of Emacs objects...""" start="00:02:10.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""I'm going to define what is an inner view,""" start="00:02:13.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""of course.""" start="00:02:16.000" video="mainVideo-modern" id="subtitle"]]

<div class="transcript-heading">[[!template new="1" text="""Inner views of Emacs objects""" start="00:02:18.000" video="mainVideo-modern" id="subtitle"]]</div>[[!template text="""The main trick is that we are going""" start="00:02:18.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""to use one of the ways of displaying""" start="00:02:20.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""internal objects, that is the `cl-print`""" start="00:02:24.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""family of functions, for example,""" start="00:02:29.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""`cl-prin1-to-string`, and here are some""" start="00:02:32.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""examples of the kind of output that we""" start="00:02:35.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""are going to see...""" start="00:02:37.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""for example, if we run these two lines""" start="00:02:38.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""here the first line defines a function `foo`""" start="00:02:44.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and the second line sets `o` to the""" start="00:02:47.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""internal view of the definition of `foo`.""" start="00:02:52.000" video="mainVideo-modern" id="subtitle"]]

<div class="transcript-heading">[[!template new="1" text="""Older Emacses""" start="00:02:54.000" video="mainVideo-modern" id="subtitle"]]</div>[[!template text="""In older Emacses `o` would be just a""" start="00:02:54.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""list that looks... that would look very""" start="00:02:59.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""similar to this line here... but in newer""" start="00:03:02.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""Emacses the result of this - I mean, the""" start="00:03:05.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""the contents of `o` is this thing here,""" start="00:03:09.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""that looks quite different""" start="00:03:12.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""from this definition.""" start="00:03:15.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""So, in older Emacses""" start="00:03:18.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""the contents of the""" start="00:03:21.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""function cell of `o`...""" start="00:03:25.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""sorry, of the function cell of `foo`,""" start="00:03:28.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""would be an &quot;old-style lambda&quot;,""" start="00:03:30.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""that would be just a list like this...""" start="00:03:32.000" video="mainVideo-modern" id="subtitle"]]

<div class="transcript-heading">[[!template new="1" text="""Newer Emacses""" start="00:03:35.000" video="mainVideo-modern" id="subtitle"]]</div>[[!template text="""and in newer Emacses uh the contents of O would""" start="00:03:35.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""be a &quot;vector-like lambda&quot;... look for the""" start="00:03:39.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""square brackets here - this is a""" start="00:03:42.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""vector, but it is preceded by a hash sign.""" start="00:03:44.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""So this is what we call""" start="00:03:47.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""a &quot;vector-like lambda&quot;,""" start="00:03:49.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and vector-like lambas do not""" start="00:03:51.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""have a canonical printed representation -""" start="00:03:53.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""they have at least two semicanonical""" start="00:03:55.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""printed representations...""" start="00:03:57.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""The first semicanonical""" start="00:03:59.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""printed representation is this one, that is""" start="00:04:01.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""generated by a family of functions with""" start="00:04:04.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""names like `prin1`...""" start="00:04:07.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and the second semicanonical printed""" start="00:04:09.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""representation is like this -""" start="00:04:13.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""it looks like a list...""" start="00:04:17.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""it looks somewhat like this definition""" start="00:04:20.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""of `foo` here, but it has this""" start="00:04:23.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""`:dynbind` symbol here...""" start="00:04:27.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and it turns out that when we use""" start="00:04:29.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""the `cl-print` family of functions we can""" start="00:04:32.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""reconfigure how things are printed...""" start="00:04:35.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and I'm going to show several interesting""" start="00:04:37.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""ways of reconfiguring how lambdas are printed,""" start="00:04:40.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and one of the ways is going to""" start="00:04:47.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""be like this.""" start="00:04:49.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""We can also use the `cl-print`""" start="00:04:52.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""functions with my indentation tricks to""" start="00:04:56.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""to display how types, or classes, are""" start="00:04:59.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""viewed internally by Emacs, and this is a""" start="00:05:04.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""big example...""" start="00:05:07.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""This is what Emacs considers as being""" start="00:05:10.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""the definition of the type""" start="00:05:14.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""`cl-structure-class`,""" start="00:05:16.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""class and it is this big thing here.""" start="00:05:18.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""I edited it very lightly...""" start="00:05:21.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""I just deleted some line breaks here.""" start="00:05:24.000" video="mainVideo-modern" id="subtitle"]]

<div class="transcript-heading">[[!template new="1" text="""Help buttons""" start="00:05:30.000" video="mainVideo-modern" id="subtitle"]]</div>[[!template text="""And another thing that I want to""" start="00:05:30.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""explain is that Emacs""" start="00:05:33.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""has some help functions that""" start="00:05:35.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""I have never liked...""" start="00:05:37.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""for most people they are good enough,""" start="00:05:39.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""but for me they aren't... they...""" start="00:05:41.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""uh, well - I'm going to say""" start="00:05:44.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""more about this later...""" start="00:05:48.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and, for example,""" start="00:05:50.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""if we want a description of what is""" start="00:05:52.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""this type here, that we just saw in""" start="00:05:54.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""its internal view here...""" start="00:05:58.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""we can run either `describe-type`""" start="00:06:00.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""or my variant of `describe-type`,""" start="00:06:02.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and we get a help buffer""" start="00:06:04.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""that looks like this, in which""" start="00:06:07.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""these blue things that are underlined""" start="00:06:10.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""are &quot;buttons&quot;, in the classical sense...""" start="00:06:13.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""you can click on these buttons, or type""" start="00:06:15.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""RET on these buttons, and you will be""" start="00:06:17.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""taken to another help page, that is""" start="00:06:19.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""generated dynamically...""" start="00:06:22.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and you can navigate back and forth...""" start="00:06:24.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and well, whatever...""" start="00:06:28.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and I'm going to explain my""" start="00:06:30.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""problems with these kinds of help buffers""" start="00:06:33.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and what I'm trying to do to""" start="00:06:35.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""overcome these problems...""" start="00:06:37.000" video="mainVideo-modern" id="subtitle"]]

<div class="transcript-heading">[[!template new="1" text="""Anyone can learn Lisp in one day""" start="00:06:41.000" video="mainVideo-modern" id="subtitle"]]</div>[[!template text="""One of my slogans in this video""" start="00:06:41.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""is going to be this one:""" start="00:06:43.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""&quot;Anyone can learn Lisp in one day&quot;.""" start="00:06:44.541" video="mainVideo-modern" id="subtitle"]]
[[!template text="""this is a part of a bigger quote""" start="00:06:46.675" video="mainVideo-modern" id="subtitle"]]
[[!template text="""that I took from a keynote presentation""" start="00:06:50.421" video="mainVideo-modern" id="subtitle"]]
[[!template text="""by Abelson and Sussman, who""" start="00:06:53.041" video="mainVideo-modern" id="subtitle"]]
[[!template text="""are two dinosaurs of Computer Science...""" start="00:06:54.721" video="mainVideo-modern" id="subtitle"]]
[[!template text="""Here is the full quote:""" start="00:06:58.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""&quot;Anyone can learn Lisp in one day -""" start="00:07:00.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""except that if they already know Fortran""" start="00:07:04.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""then it would take three days.&quot;""" start="00:07:06.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""This is a frame of the video...""" start="00:07:11.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""By the way I am going to to add""" start="00:07:24.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""this... &quot;and if the person is starting""" start="00:07:28.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""with Doom Emacs then it would take 5 years.&quot;""" start="00:07:32.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""why? I'm going to explain why.""" start="00:07:34.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""This is how Emacs used to be.""" start="00:07:39.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""If we execute these two expressions here""" start="00:07:43.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""the first one... sorry, each symbol can""" start="00:07:46.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""have two &quot;values&quot;,""" start="00:07:51.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""one is its &quot;value as a variable&quot;""" start="00:07:53.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and another one is its &quot;value as a function&quot;...""" start="00:07:54.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and if we run this we store 42""" start="00:07:58.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""in the &quot;value cell&quot; of the symbol `foo`, and""" start="00:08:02.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""if we run this defun here it stores a""" start="00:08:07.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""certain anonymous function in the""" start="00:08:11.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""&quot;function cell&quot; of the symbol `foo`...""" start="00:08:14.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and in Emacs, until some time ago""" start="00:08:18.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""if we did that and and if we ran""" start="00:08:22.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""this expression here the result""" start="00:08:27.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""would be 42,""" start="00:08:30.775" video="mainVideo-modern" id="subtitle"]]
[[!template text="""because of this line here, and if we""" start="00:08:32.575" video="mainVideo-modern" id="subtitle"]]
[[!template text="""ran this line here the result would be""" start="00:08:35.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""the anonymous function corresponding to""" start="00:08:37.841" video="mainVideo-modern" id="subtitle"]]
[[!template text="""this defun here...""" start="00:08:40.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""but now this has changed...""" start="00:08:41.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""the result of this thing here is this""" start="00:08:45.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""vector-like lambda here - but that doesn't""" start="00:08:48.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""matter much now...""" start="00:08:51.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""So, until some time ago""" start="00:08:53.280" video="mainVideo-modern" id="subtitle"]]
[[!template text="""if we did that and if we ran""" start="00:08:57.600" video="mainVideo-modern" id="subtitle"]]
[[!template text="""this expression here, (foo foo)...""" start="00:09:00.840" video="mainVideo-modern" id="subtitle"]]
[[!template text="""Emacs would do this: it would""" start="00:09:02.840" video="mainVideo-modern" id="subtitle"]]
[[!template text="""replace the first `foo` by this""" start="00:09:04.600" video="mainVideo-modern" id="subtitle"]]
[[!template text="""anonymous function here, it would replace""" start="00:09:06.001" video="mainVideo-modern" id="subtitle"]]
[[!template text="""the second `foo` by the value of `foo` as a""" start="00:09:09.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""variable, that is 42,""" start="00:09:12.041" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and it would evaluate this, and the""" start="00:09:14.460" video="mainVideo-modern" id="subtitle"]]
[[!template text="""result would be 420.""" start="00:09:16.775" video="mainVideo-modern" id="subtitle"]]
[[!template text="""So, again, we used to have this slogan""" start="00:09:20.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""here, &quot;anyone can learn Lisp in one day&quot;...""" start="00:09:23.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""but now this is gone.""" start="00:09:26.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""Let me show... let me talk""" start="00:09:28.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""a bit more about why...""" start="00:09:30.000" video="mainVideo-modern" id="subtitle"]]

<div class="transcript-heading">[[!template new="1" text="""Lambdas for beginners broken""" start="00:09:34.000" video="mainVideo-modern" id="subtitle"]]</div>[[!template text="""the title of this slide is""" start="00:09:34.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""&quot;Lambdas for beginners broken&quot;...""" start="00:09:36.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""if we run this, as I've shown""" start="00:09:38.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""in the previous slide...""" start="00:09:41.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""in the old style, in old Emacses,""" start="00:09:43.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""the result of (symbol-function 'foo)""" start="00:09:46.475" video="mainVideo-modern" id="subtitle"]]
[[!template text="""would be this anonymous function here...""" start="00:09:49.280" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and now we get this strange thing here.""" start="00:09:52.280" video="mainVideo-modern" id="subtitle"]]
[[!template text="""So, this is an &quot;old-style lambda&quot;,""" start="00:09:56.320" video="mainVideo-modern" id="subtitle"]]
[[!template text="""this is a &quot;vector-like lambda&quot;,""" start="00:10:00.160" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and until the middle of 2024""" start="00:10:04.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""beginners could learn a lot of Lisp""" start="00:10:07.600" video="mainVideo-modern" id="subtitle"]]
[[!template text="""by thinking only in terms of""" start="00:10:09.400" video="mainVideo-modern" id="subtitle"]]
[[!template text="""objects like these...""" start="00:10:11.360" video="mainVideo-modern" id="subtitle"]]
[[!template text="""this is a function and this""" start="00:10:13.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""is an anonymous function, and""" start="00:10:15.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""they would learn how to draw cons cell""" start="00:10:17.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""diagrams like this thing here and this""" start="00:10:20.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""thing here...""" start="00:10:23.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""they would think on lists as""" start="00:10:25.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""being these trees here, and they""" start="00:10:26.340" video="mainVideo-modern" id="subtitle"]]
[[!template text="""would be able to understand a lot of""" start="00:10:29.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""Lisp just by thinking in these terms...""" start="00:10:32.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and then vector-like lambdas started""" start="00:10:35.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""to appear in many places... and if we use""" start="00:10:39.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""&quot;vector-like lambdas&quot; in a wide sense,""" start="00:10:43.240" video="mainVideo-modern" id="subtitle"]]
[[!template text="""to mean all the new objects,""" start="00:10:46.475" video="mainVideo-modern" id="subtitle"]]
[[!template text="""these new objects, that are""" start="00:10:50.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""difficult to visualize... they also started""" start="00:10:54.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""to appear in many places.""" start="00:10:56.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""This is a continuation of the""" start="00:10:58.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""previous slide - this part here is a copy""" start="00:11:01.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""of things that were in the previous slide...""" start="00:11:04.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""before 2024 beginners could""" start="00:11:06.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""open black boxes like this...""" start="00:11:12.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""they could try to see what was in the""" start="00:11:17.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""function cell of the symbol `foo`...""" start="00:11:20.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and they would see something elegant and""" start="00:11:24.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""mind-blowing... and they would start to love""" start="00:11:27.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""Lisp immediately.""" start="00:11:29.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""Now what they get - what they see -""" start="00:11:31.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""is a tiny part of a very complex structure""" start="00:11:33.675" video="mainVideo-modern" id="subtitle"]]
[[!template text="""that is very powerful but that is""" start="00:11:37.041" video="mainVideo-modern" id="subtitle"]]
[[!template text="""very difficult to understand...""" start="00:11:39.641" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and now our beginners are overwhelmed""" start="00:11:41.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""instead of mind-blown. Note that I said &quot;black box&quot; here.""" start="00:11:44.920" video="mainVideo-modern" id="subtitle"]]
[[!template text="""Let me explain the term.""" start="00:11:51.340" video="mainVideo-modern" id="subtitle"]]
[[!template text="""We can open what's inside of `foo`...""" start="00:11:53.401" video="mainVideo-modern" id="subtitle"]]
[[!template text="""we can open `foo` to see the contents of""" start="00:11:57.540" video="mainVideo-modern" id="subtitle"]]
[[!template text="""the symbol `foo`, and we can try to see""" start="00:12:00.141" video="mainVideo-modern" id="subtitle"]]
[[!template text="""what's in the function cell of the""" start="00:12:03.008" video="mainVideo-modern" id="subtitle"]]
[[!template text="""symbol `foo`...""" start="00:12:06.621" video="mainVideo-modern" id="subtitle"]]
[[!template text="""so we can open the box, but what we get""" start="00:12:08.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""is something very difficult to understand,""" start="00:12:10.941" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and so I'm going to say that""" start="00:12:13.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""when this happens that box is black.""" start="00:12:17.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""It is not totally black - we can open open it -""" start="00:12:21.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""but we don't understand what is going on there,""" start="00:12:24.580" video="mainVideo-modern" id="subtitle"]]
[[!template text="""so we declare that that is black.""" start="00:12:27.375" video="mainVideo-modern" id="subtitle"]]
[[!template text="""And... when these things started to happen""" start="00:12:30.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""_I_ was overwhelmed -""" start="00:12:36.575" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and in this video I'm going to pretend""" start="00:12:38.975" video="mainVideo-modern" id="subtitle"]]
[[!template text="""that I was not the only person""" start="00:12:41.975" video="mainVideo-modern" id="subtitle"]]
[[!template text="""that was overwhelmed""" start="00:12:44.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""by these new structures""" start="00:12:47.008" video="mainVideo-modern" id="subtitle"]]
[[!template text="""that are not so elegant""" start="00:12:51.241" video="mainVideo-modern" id="subtitle"]]
[[!template text="""as the ones that we had before.""" start="00:12:52.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""Anyway...""" start="00:12:54.000" video="mainVideo-modern" id="subtitle"]]

<div class="transcript-heading">[[!template new="1" text="""Demo""" start="00:12:59.302" video="mainVideo-modern" id="subtitle"]]</div>[[!template text="""In the beginning of the video,""" start="00:12:59.302" video="mainVideo-modern" id="subtitle"]]
[[!template text="""I said that I was going to replace""" start="00:13:00.600" video="mainVideo-modern" id="subtitle"]]
[[!template text="""the second part of my video from March""" start="00:13:02.880" video="mainVideo-modern" id="subtitle"]]
[[!template text="""by something that was very easy to test.""" start="00:13:06.360" video="mainVideo-modern" id="subtitle"]]
[[!template text="""So this is a quick demo for the _very_ impatient.""" start="00:13:08.800" video="mainVideo-modern" id="subtitle"]]
[[!template text="""I'm recording this in December for the EmacsConf 2025.""" start="00:13:11.840" video="mainVideo-modern" id="subtitle"]]
[[!template text="""This is the demo that I'm going to present.""" start="00:13:16.920" video="mainVideo-modern" id="subtitle"]]
[[!template text="""The idea is that people can run the demo a first time""" start="00:13:19.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""just to check that everything works""" start="00:13:21.760" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and to have a notion of how things look like,""" start="00:13:24.400" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and then, in a second moment,""" start="00:13:27.560" video="mainVideo-modern" id="subtitle"]]
[[!template text="""they can rerun the demo more slowly""" start="00:13:29.240" video="mainVideo-modern" id="subtitle"]]
[[!template text="""to understand what each step does.""" start="00:13:32.280" video="mainVideo-modern" id="subtitle"]]
[[!template text="""So... we are in a file called &quot;00-try-this&quot;...""" start="00:13:34.880" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and the idea is that we can execute most of this file""" start="00:13:38.800" video="mainVideo-modern" id="subtitle"]]
[[!template text="""just by typing `f8`​s in the right places.""" start="00:13:42.200" video="mainVideo-modern" id="subtitle"]]
[[!template text="""Remember that when we type `f8`""" start="00:13:45.360" video="mainVideo-modern" id="subtitle"]]
[[!template text="""on a line that starts with two red stars,""" start="00:13:47.480" video="mainVideo-modern" id="subtitle"]]
[[!template text="""eev treats that line as a comment.""" start="00:13:49.840" video="mainVideo-modern" id="subtitle"]]
[[!template text="""So I'm going to start here... Note that it says in the bottom""" start="00:13:53.200" video="mainVideo-modern" id="subtitle"]]
[[!template text="""of the screen that this is a comment.""" start="00:13:58.008" video="mainVideo-modern" id="subtitle"]]
[[!template text="""We are going to run this to download some files...""" start="00:13:59.741" video="mainVideo-modern" id="subtitle"]]
[[!template text="""Now the files are there...""" start="00:14:09.880" video="mainVideo-modern" id="subtitle"]]
[[!template text="""This `find-2a` here shows a certain file""" start="00:14:12.960" video="mainVideo-modern" id="subtitle"]]
[[!template text="""at the window at the right,""" start="00:14:17.320" video="mainVideo-modern" id="subtitle"]]
[[!template text="""but we don't need to pay attention to that.""" start="00:14:19.160" video="mainVideo-modern" id="subtitle"]]
[[!template text="""And this thing `load`​s that file.""" start="00:14:22.480" video="mainVideo-modern" id="subtitle"]]
[[!template text="""So when we load that file, it defines some functions here""" start="00:14:24.200" video="mainVideo-modern" id="subtitle"]]
[[!template text="""that are going to be used by the rest of the examples.""" start="00:14:27.520" video="mainVideo-modern" id="subtitle"]]
[[!template text="""Now we can run this thing here... Note that""" start="00:14:29.800" video="mainVideo-modern" id="subtitle"]]
[[!template text="""we just defined some functions""" start="00:14:34.020" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and then we ran these functions here... `find-eoutput-2a`...""" start="00:14:34.880" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and they show some things in the window at the right.""" start="00:14:39.360" video="mainVideo-modern" id="subtitle"]]
[[!template text="""These things are boring.""" start="00:14:42.680" video="mainVideo-modern" id="subtitle"]]
[[!template text="""When we run `adt-insert` with argument 42,""" start="00:14:45.680" video="mainVideo-modern" id="subtitle"]]
[[!template text="""it just shows a 42, in this way...""" start="00:14:49.680" video="mainVideo-modern" id="subtitle"]]
[[!template text="""The other ones show other numbers... and so on.""" start="00:14:52.400" video="mainVideo-modern" id="subtitle"]]
[[!template text="""And... what happens when we modify""" start="00:14:55.640" video="mainVideo-modern" id="subtitle"]]
[[!template text="""this function here, `adt-2`,""" start="00:14:59.480" video="mainVideo-modern" id="subtitle"]]
[[!template text="""by adding and removing advices to it?""" start="00:15:02.360" video="mainVideo-modern" id="subtitle"]]
[[!template text="""The idea is that people can run""" start="00:15:05.200" video="mainVideo-modern" id="subtitle"]]
[[!template text="""this thing here several times,""" start="00:15:06.920" video="mainVideo-modern" id="subtitle"]]
[[!template text="""watching the window at the right,""" start="00:15:08.680" video="mainVideo-modern" id="subtitle"]]
[[!template text="""because the results are going to be shown there.""" start="00:15:10.800" video="mainVideo-modern" id="subtitle"]]
[[!template text="""So, in the first moment, when we run...""" start="00:15:14.720" video="mainVideo-modern" id="subtitle"]]
[[!template text="""no, no, sorry, sorry, let me run it again.""" start="00:15:17.800" video="mainVideo-modern" id="subtitle"]]
[[!template text="""In the first moment when we run `adt-2`""" start="00:15:21.680" video="mainVideo-modern" id="subtitle"]]
[[!template text="""it just shows a 2, and then we modify it in a certain way,""" start="00:15:24.040" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and we run it again,""" start="00:15:28.240" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and now before showing the 2 it shows a 1, mysteriously,""" start="00:15:29.480" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and then we add something to be run after the 2,""" start="00:15:33.800" video="mainVideo-modern" id="subtitle"]]
[[!template text="""And we run it again,""" start="00:15:37.120" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and now `adt-2` shows these three things.""" start="00:15:38.480" video="mainVideo-modern" id="subtitle"]]
[[!template text="""And then we remove the advices,""" start="00:15:41.840" video="mainVideo-modern" id="subtitle"]]
[[!template text="""we remove these other things,""" start="00:15:43.960" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and when we run `adt-2` again, it shows only `;; --&gt; 2`.""" start="00:15:45.160" video="mainVideo-modern" id="subtitle"]]
[[!template text="""It's impossible to understand that in the first time,""" start="00:15:49.080" video="mainVideo-modern" id="subtitle"]]
[[!template text="""so we can run that several times... to see how things work.""" start="00:15:51.880" video="mainVideo-modern" id="subtitle"]]
[[!template text="""And now we want to understand""" start="00:15:57.880" video="mainVideo-modern" id="subtitle"]]
[[!template text="""what changes in the function `adt-2`...""" start="00:16:02.280" video="mainVideo-modern" id="subtitle"]]
[[!template text="""how it is modified internally.""" start="00:16:04.960" video="mainVideo-modern" id="subtitle"]]
[[!template text="""I'm calling that the internal view of the function,""" start="00:16:08.640" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and we are going to compare""" start="00:16:11.480" video="mainVideo-modern" id="subtitle"]]
[[!template text="""several internal views of the function `adt-2`.""" start="00:16:13.600" video="mainVideo-modern" id="subtitle"]]
[[!template text="""I'm going to reset the function `adt-2`""" start="00:16:16.680" video="mainVideo-modern" id="subtitle"]]
[[!template text="""by removing the advices and placing the advices on it again...""" start="00:16:20.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and if we just pretty-print this function here,""" start="00:16:25.680" video="mainVideo-modern" id="subtitle"]]
[[!template text="""the symbol... the value of this symbol here as a function,""" start="00:16:28.508" video="mainVideo-modern" id="subtitle"]]
[[!template text="""it is something very ugly.""" start="00:16:36.320" video="mainVideo-modern" id="subtitle"]]
[[!template text="""But if we print it in another way, with `cl-prin1`,""" start="00:16:38.640" video="mainVideo-modern" id="subtitle"]]
[[!template text="""then we get something that is much nicer...""" start="00:16:43.840" video="mainVideo-modern" id="subtitle"]]
[[!template text="""but that is not indented. And if we use this thing here,""" start="00:16:47.240" video="mainVideo-modern" id="subtitle"]]
[[!template text="""`cl-prin2` instead of `cl-prin1`, it becomes indented.""" start="00:16:51.160" video="mainVideo-modern" id="subtitle"]]
[[!template text="""So let's try it again.""" start="00:16:55.840" video="mainVideo-modern" id="subtitle"]]
[[!template text="""Here is the current view of what is `adt-2`.""" start="00:17:00.840" video="mainVideo-modern" id="subtitle"]]
[[!template text="""So, the original `adt-insert` is here...""" start="00:17:06.800" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and here are some modifications""" start="00:17:10.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""that were added by the advices.""" start="00:17:11.840" video="mainVideo-modern" id="subtitle"]]
[[!template text="""And we can run these things many times""" start="00:17:13.520" video="mainVideo-modern" id="subtitle"]]
[[!template text="""to understand what each step does.""" start="00:17:16.760" video="mainVideo-modern" id="subtitle"]]
[[!template text="""But my suggestion is: in the first time""" start="00:17:19.240" video="mainVideo-modern" id="subtitle"]]
[[!template text="""just run everything very quickly...""" start="00:17:21.240" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and then you run it again,""" start="00:17:23.880" video="mainVideo-modern" id="subtitle"]]
[[!template text="""paying attention to the parts that look more interesting.""" start="00:17:25.200" video="mainVideo-modern" id="subtitle"]]

<div class="transcript-heading">[[!template new="1" text="""Printing something in different ways for lambdas""" start="00:17:29.120" video="mainVideo-modern" id="subtitle"]]</div>[[!template text="""Now, I'm going to... Remember that here""" start="00:17:29.120" video="mainVideo-modern" id="subtitle"]]
[[!template text="""I printed the contents of `adt-2` in several different ways,""" start="00:17:37.374" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and now I'm going to show how we can do the same idea""" start="00:17:42.560" video="mainVideo-modern" id="subtitle"]]
[[!template text="""of printing something in different ways for lambdas...""" start="00:17:47.120" video="mainVideo-modern" id="subtitle"]]
[[!template text="""that is something that I explained""" start="00:17:51.600" video="mainVideo-modern" id="subtitle"]]
[[!template text="""in the first part of the video.""" start="00:17:52.920" video="mainVideo-modern" id="subtitle"]]
[[!template text="""In this part of the demo we define a function `foo`...""" start="00:17:54.640" video="mainVideo-modern" id="subtitle"]]
[[!template text="""this `setq` here defines `o` as""" start="00:18:00.640" video="mainVideo-modern" id="subtitle"]]
[[!template text="""the contents of the function cell of `foo`...""" start="00:18:06.361" video="mainVideo-modern" id="subtitle"]]
[[!template text="""And now we are going to print""" start="00:18:08.960" video="mainVideo-modern" id="subtitle"]]
[[!template text="""that `o` in several different ways.""" start="00:18:13.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""The default way is this one, it's very ugly,""" start="00:18:15.400" video="mainVideo-modern" id="subtitle"]]
[[!template text="""but we can redefine how these things are printed""" start="00:18:19.200" video="mainVideo-modern" id="subtitle"]]
[[!template text="""by just running these lines...""" start="00:18:22.240" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and if we pay attention at what's happening""" start="00:18:24.560" video="mainVideo-modern" id="subtitle"]]
[[!template text="""at the window at the right,""" start="00:18:28.720" video="mainVideo-modern" id="subtitle"]]
[[!template text="""we can see that we have several different""" start="00:18:30.520" video="mainVideo-modern" id="subtitle"]]
[[!template text="""printed representations for the same thing...""" start="00:18:33.560" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and then at the last step,""" start="00:18:35.760" video="mainVideo-modern" id="subtitle"]]
[[!template text="""we reset the printer to the default representation.""" start="00:18:36.880" video="mainVideo-modern" id="subtitle"]]
[[!template text="""And the details are here.""" start="00:18:41.080" video="mainVideo-modern" id="subtitle"]]
[[!template text="""If we run these lines here,""" start="00:18:43.280" video="mainVideo-modern" id="subtitle"]]
[[!template text="""they show the definitions at the window at the right.""" start="00:18:45.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""And this... now comes the difficult part,""" start="00:18:48.760" video="mainVideo-modern" id="subtitle"]]
[[!template text="""in which we have to do something""" start="00:18:53.880" video="mainVideo-modern" id="subtitle"]]
[[!template text="""besides just running things with F8. We need""" start="00:18:56.680" video="mainVideo-modern" id="subtitle"]]
[[!template text="""a help buffer with buttons...""" start="00:19:02.080" video="mainVideo-modern" id="subtitle"]]
[[!template text="""buttons in the traditional sense,""" start="00:19:04.920" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and we need to choose a certain button there,""" start="00:19:08.920" video="mainVideo-modern" id="subtitle"]]
[[!template text="""or any button there,""" start="00:19:11.560" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and run `M-x ee-set-button` on that button.""" start="00:19:13.440" video="mainVideo-modern" id="subtitle"]]
[[!template text="""So, let me define a `struct` here,""" start="00:19:17.941" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and this is some help on what is that structure.""" start="00:19:24.720" video="mainVideo-modern" id="subtitle"]]
[[!template text="""I'm going to choose this button here""" start="00:19:29.360" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and I'm going to type `M-x ee-set-button`.""" start="00:19:33.600" video="mainVideo-modern" id="subtitle"]]
[[!template text="""The message is a bit obscure.""" start="00:19:40.160" video="mainVideo-modern" id="subtitle"]]
[[!template text="""And now we have something that displays""" start="00:19:43.560" video="mainVideo-modern" id="subtitle"]]
[[!template text="""a lot of information about that button...""" start="00:19:47.960" video="mainVideo-modern" id="subtitle"]]
[[!template text="""And we can also run that with just `F8`s.""" start="00:19:51.080" video="mainVideo-modern" id="subtitle"]]
[[!template text="""By the way, if we want to understand""" start="00:19:53.920" video="mainVideo-modern" id="subtitle"]]
[[!template text="""the code that's behind these things,""" start="00:20:00.280" video="mainVideo-modern" id="subtitle"]]
[[!template text="""we can run this sexp here.""" start="00:20:02.320" video="mainVideo-modern" id="subtitle"]]
[[!template text="""It is going to show the code here at the right.""" start="00:20:04.840" video="mainVideo-modern" id="subtitle"]]
[[!template text="""But anyway, these first lines here...""" start="00:20:07.220" video="mainVideo-modern" id="subtitle"]]
[[!template text="""they display the output in the echo area... Let's try...""" start="00:20:10.760" video="mainVideo-modern" id="subtitle"]]
[[!template text="""And each one of them extracts a different part""" start="00:20:15.480" video="mainVideo-modern" id="subtitle"]]
[[!template text="""of the information on that button.""" start="00:20:20.560" video="mainVideo-modern" id="subtitle"]]
[[!template text="""And these other lines here create a three-window setting""" start="00:20:22.560" video="mainVideo-modern" id="subtitle"]]
[[!template text="""in which the help buffer is shown here,""" start="00:20:26.040" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and the result of some other thing""" start="00:20:29.640" video="mainVideo-modern" id="subtitle"]]
[[!template text="""is shown in the third window. Let's try...""" start="00:20:33.120" video="mainVideo-modern" id="subtitle"]]
[[!template text="""So now that we have... well... I said""" start="00:20:39.980" video="mainVideo-modern" id="subtitle"]]
[[!template text="""that we needed to choose a certain button""" start="00:20:46.108" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and run `M-x ee-set-button` there. We have done that...""" start="00:20:48.408" video="mainVideo-modern" id="subtitle"]]
[[!template text="""so now this variable `ee-button`""" start="00:20:53.440" video="mainVideo-modern" id="subtitle"]]
[[!template text="""contains information about the button...""" start="00:20:55.920" video="mainVideo-modern" id="subtitle"]]
[[!template text="""And now we can run this part here""" start="00:20:58.440" video="mainVideo-modern" id="subtitle"]]
[[!template text="""as many times as we want to...""" start="00:21:01.120" video="mainVideo-modern" id="subtitle"]]
[[!template text="""try to understand what are the values of these things here...""" start="00:21:03.480" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and how some things start with a value that is very complex""" start="00:21:07.480" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and very difficult to understand,""" start="00:21:11.680" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and then we extract the more interesting parts.""" start="00:21:13.840" video="mainVideo-modern" id="subtitle"]]
[[!template text="""And the details, as I said, are here.""" start="00:21:16.840" video="mainVideo-modern" id="subtitle"]]
[[!template text="""That was the end of the demo, and my question is,""" start="00:21:22.280" video="mainVideo-modern" id="subtitle"]]
[[!template text="""what was your reaction to that?""" start="00:21:26.760" video="mainVideo-modern" id="subtitle"]]
[[!template text="""If your reaction was more like &quot;wow&quot; than like &quot;blergh&quot;""" start="00:21:28.560" video="mainVideo-modern" id="subtitle"]]
[[!template text="""then you might like the last part of the video that I recorded in March,""" start="00:21:32.680" video="mainVideo-modern" id="subtitle"]]
[[!template text="""that was very technical...""" start="00:21:37.040" video="mainVideo-modern" id="subtitle"]]
[[!template text="""When I recorded it, I thought, oh my god, this video is very bad...""" start="00:21:38.400" video="mainVideo-modern" id="subtitle"]]
[[!template text="""only the hardcore eev users are going to like that,""" start="00:21:42.720" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and there are less than five hardcore""" start="00:21:47.280" video="mainVideo-modern" id="subtitle"]]
[[!template text="""eev users in the world...""" start="00:21:51.040" video="mainVideo-modern" id="subtitle"]]

<div class="transcript-heading">[[!template new="1" text="""Exploring buttons""" start="00:21:52.840" video="mainVideo-modern" id="subtitle"]]</div>[[!template text="""But anyway, if you saw that introduction""" start="00:21:52.840" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and you think that these things are interesting,""" start="00:21:56.640" video="mainVideo-modern" id="subtitle"]]
[[!template text="""you can execute any one of these S-expressions here""" start="00:21:59.080" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and take a look at the final part of that video""" start="00:22:03.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""that describes how I wrote some functions""" start="00:22:06.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""for exploring buttons. If you execute this sexp here,""" start="00:22:09.560" video="mainVideo-modern" id="subtitle"]]
[[!template text="""it plays a part of the video starting from that position.""" start="00:22:14.240" video="mainVideo-modern" id="subtitle"]]
[[!template text="""If you execute this one, you go to the subtitles in HTML...""" start="00:22:19.560" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and if you run this one, you go""" start="00:22:26.920" video="mainVideo-modern" id="subtitle"]]
[[!template text="""to the subtitles in another format. And... that's it!""" start="00:22:30.560" video="mainVideo-modern" id="subtitle"]]
[[!template text="""No, no, sorry, I said &quot;that's it&quot;,""" start="00:22:36.160" video="mainVideo-modern" id="subtitle"]]
[[!template text="""but I forgot a very important part...""" start="00:22:40.120" video="mainVideo-modern" id="subtitle"]]

<div class="transcript-heading">[[!template new="1" text="""Some design decisions behind eev""" start="00:22:42.160" video="mainVideo-modern" id="subtitle"]]</div>[[!template text="""I had prepared this slide here""" start="00:22:42.160" video="mainVideo-modern" id="subtitle"]]
[[!template text="""to explain some design decisions behind eev""" start="00:22:45.160" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and why there are so few users of eev... and let me do that.""" start="00:22:48.508" video="mainVideo-modern" id="subtitle"]]
[[!template text="""The thing is that my working memory is very small,""" start="00:22:53.680" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and I need examples that are easy to visualize...""" start="00:22:57.920" video="mainVideo-modern" id="subtitle"]]
[[!template text="""ideally, examples that are easy to run""" start="00:23:01.280" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and that I can compare the outputs""" start="00:23:04.960" video="mainVideo-modern" id="subtitle"]]
[[!template text="""of different ways of running them.""" start="00:23:10.308" video="mainVideo-modern" id="subtitle"]]
[[!template text="""For me, understanding specifications""" start="00:23:12.160" video="mainVideo-modern" id="subtitle"]]
[[!template text="""in an API is not enough... examples work much better for me.""" start="00:23:16.360" video="mainVideo-modern" id="subtitle"]]
[[!template text="""Also, I make lots of mistakes when I type...""" start="00:23:20.680" video="mainVideo-modern" id="subtitle"]]
[[!template text="""so I need ways to run my executable notes""" start="00:23:24.440" video="mainVideo-modern" id="subtitle"]]
[[!template text="""by just typing `f8` and `M-e`...""" start="00:23:28.400" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and... most people in the #emacs channel and in other places""" start="00:23:31.880" video="mainVideo-modern" id="subtitle"]]
[[!template text="""recommend executing sexps by typing `M-:`, like this...""" start="00:23:37.040" video="mainVideo-modern" id="subtitle"]]
[[!template text="""But I hate that... I think that `M-:` and IELM are""" start="00:23:44.520" video="mainVideo-modern" id="subtitle"]]
[[!template text="""for people who type well, so not me...""" start="00:23:49.240" video="mainVideo-modern" id="subtitle"]]
[[!template text="""And also, 99% of what I do is scratch code.""" start="00:23:54.560" video="mainVideo-modern" id="subtitle"]]
[[!template text="""Very few things that I do go""" start="00:23:58.840" video="mainVideo-modern" id="subtitle"]]
[[!template text="""into &quot;production&quot; - between quotes.""" start="00:24:01.640" video="mainVideo-modern" id="subtitle"]]

<div class="transcript-heading">[[!template new="1" text="""Tests""" start="00:24:05.800" video="mainVideo-modern" id="subtitle"]]</div>[[!template text="""So most of my tests are not automated tests.""" start="00:24:05.800" video="mainVideo-modern" id="subtitle"]]
[[!template text="""They are just things that I run with F8,""" start="00:24:10.200" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and they don't include the expected result.""" start="00:24:12.440" video="mainVideo-modern" id="subtitle"]]
[[!template text="""Many people feel that this is very, very, very wrong.""" start="00:24:15.880" video="mainVideo-modern" id="subtitle"]]
[[!template text="""Tests MUST MEAN automated tests.""" start="00:24:19.160" video="mainVideo-modern" id="subtitle"]]
[[!template text="""Also, and this is very frustrating,""" start="00:24:23.280" video="mainVideo-modern" id="subtitle"]]
[[!template text="""eev has lots of &quot;non-users&quot;,""" start="00:24:25.640" video="mainVideo-modern" id="subtitle"]]
[[!template text="""I mean, people who have tried to use it,""" start="00:24:28.400" video="mainVideo-modern" id="subtitle"]]
[[!template text="""but they said that they couldn't figure out how to use it.""" start="00:24:31.520" video="mainVideo-modern" id="subtitle"]]
[[!template text="""They couldn't understand""" start="00:24:34.760" video="mainVideo-modern" id="subtitle"]]
[[!template text="""what would be the workflows for eev.""" start="00:24:36.160" video="mainVideo-modern" id="subtitle"]]
[[!template text="""And that's the same that happens with me with code blocks in Org...""" start="00:24:38.080" video="mainVideo-modern" id="subtitle"]]
[[!template text="""I'm still at the point in which code blocks in Org just feel wrong.""" start="00:24:43.680" video="mainVideo-modern" id="subtitle"]]
[[!template text="""I still don't understand how to organize my workflows around code blocks.""" start="00:24:48.760" video="mainVideo-modern" id="subtitle"]]
[[!template text="""I said that eev has very few users,""" start="00:24:55.200" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and they are all very weird and very busy,""" start="00:24:59.000" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and I decided that all my blog-ish posts about eev""" start="00:25:02.240" video="mainVideo-modern" id="subtitle"]]
[[!template text="""would be things that they can run in a few minutes...""" start="00:25:06.360" video="mainVideo-modern" id="subtitle"]]
[[!template text="""just like the demo that I showed a few minutes ago.""" start="00:25:09.720" video="mainVideo-modern" id="subtitle"]]
[[!template text="""I said &quot;like the examples in the rest of the video&quot;,""" start="00:25:13.040" video="mainVideo-modern" id="subtitle"]]
[[!template text="""but I forgot this slide,""" start="00:25:16.120" video="mainVideo-modern" id="subtitle"]]
[[!template text="""and I'm recording this after the demo.""" start="00:25:17.400" video="mainVideo-modern" id="subtitle"]]
[[!template text="""So... that's it. Thanks!""" start="00:25:19.640" video="mainVideo-modern" id="subtitle"]]

</div>Questions or comments? Please e-mail [eduardoochs@gmail.com](mailto:eduardoochs@gmail.com?subject=Comment%20for%20EmacsConf%202023%20modern%3A%20Some%20problems%20of%20modernizing%20Emacs)


<!-- End of emacsconf-publish-after-page -->