summaryrefslogblamecommitdiffstats
path: root/2024/captions/emacsconf-2024-mcclim--elisp-and-mcclim--screwlisp--answers.vtt
blob: 812e174f3097219970dd3794fb8aeb5eda880a59 (plain) (tree)
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
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574





























































































































































































































































































































































































































































































































































































                                                                                              
WEBVTT

NOTE I would love to see the GUI interacting with the scheduling stuff

00:00:00.000 --> 00:00:01.999
...volume of code I've written that.

00:00:02.000 --> 00:00:06.319
I will do a follow-up video with the kind of synchronized

00:00:06.320 --> 00:00:12.519
elisp-mode stuff because that is the point of the talk. Sorry

00:00:12.520 --> 00:00:38.599
for talking over you. Please continue.

00:00:38.600 --> 00:00:41.879
sachac is saying (car kill-ring).

00:00:41.880 --> 00:00:57.559
Oh, yeah, so this question, they're just asking in the

NOTE Q: Or any other GUI stuff you've worked on in the past that you'd be comfortable showing?

00:00:57.560 --> 00:01:01.319
Scratchpad, is there any other GUI stuff I've worked on in

00:01:01.320 --> 00:01:07.319
the past? I guess my Toobnix channel, I was doing a bunch of

00:01:07.320 --> 00:01:12.639
that, so just Common Lisp development, homed around

00:01:12.640 --> 00:01:16.359
McCLIM. What is my Toobnix channel? If you find a Toobnix

00:01:16.360 --> 00:01:21.519
channel and it has a name like Screwtape, that'll

00:01:21.520 --> 00:01:28.679
presumably be that. So Toobnix is SDF.org's PeerTube.

00:01:28.680 --> 00:01:35.719
Nope, not that one.

00:01:35.720 --> 00:01:41.319
Sacha's got it here in the IRC. I think it's

00:01:41.320 --> 00:01:47.959
screwtape_channels/videos. Yeah. So the

00:01:47.960 --> 00:01:52.639
author of mastodon.el, which hopefully lots of us are using

00:01:52.640 --> 00:01:58.079
for our mastodoning, I used the name Screwtape as my

00:01:58.080 --> 00:02:01.519
username, and I think Wintermute said some kind of

00:02:01.520 --> 00:02:06.119
exasperated Emacs theme. You know what? Screw Lisp. Then

00:02:06.120 --> 00:02:09.719
Mousebot of mastodon.el rechristened me screwlisp. So

00:02:09.720 --> 00:02:12.319
sometimes you see my name written one way, and sometimes you

00:02:12.320 --> 00:02:15.039
see my name written the other way. I quite like it. A lot of

00:02:15.040 --> 00:02:19.319
people thought that I was quitting Emacs when I changed my

00:02:19.320 --> 00:02:23.399
name to be mainly screwlisp. I love it. That's a great story.

00:02:23.400 --> 00:02:27.319
Thank you. It's so great to have a name from somebody else. I

00:02:27.320 --> 00:02:29.999
was just thrilled. So thank you, mousebot. Everyone use

00:02:30.000 --> 00:02:35.199
mousebot's mode. Welcome to Green Guest. I'm with you

00:02:35.200 --> 00:02:38.399
there. All my kids want to choose their own names, and I'm

00:02:38.400 --> 00:02:41.359
just like, more power to you. I'm very glad that my parents

00:02:41.360 --> 00:02:45.479
picked mine for me, and that's one thing I never had to think

00:02:45.480 --> 00:02:50.439
about. All right, so do we have to cut short so I can go back to

00:02:50.440 --> 00:02:55.839
watching MPV? of the other stuff. We don't have to, but you

00:02:55.840 --> 00:02:58.999
are not obligated to sit here one moment more answering our

00:02:59.000 --> 00:03:02.039
questions than, you know, but of course, you know, we've

00:03:02.040 --> 00:03:07.399
talked a little before, but I, so I have a pile of questions.

NOTE Lispy Gopher Show

00:03:07.400 --> 00:03:11.159
You promised to come on the Lispy Gopher show. That's right.

00:03:11.160 --> 00:03:13.239
I have so much to say. I could, I could, I could come right on

00:03:13.240 --> 00:03:16.039
your show and just talk to you there, but I'm just curious.

00:03:16.040 --> 00:03:18.559
Talk to us a little bit about that. Tell us more about the

00:03:18.560 --> 00:03:23.799
program. Oh, the Lispy Gopher climate. What do we do? So it's

00:03:23.800 --> 00:03:29.039
hosted by the Superdimensional Fortress, SDF.org, who are

00:03:29.040 --> 00:03:32.919
a public access Unix mainly. They do their own little radio

00:03:32.920 --> 00:03:38.359
thing as well. And so I guess for a few years now, I do a weekly

00:03:38.360 --> 00:03:45.559
show every zero hundred hours UTC. We always start off with

00:03:45.560 --> 00:03:49.119
kind of climate crisis topics, because that is a climate

00:03:49.120 --> 00:03:54.439
crisis topic. But there's a sort of joy in that, because Kent

00:03:54.440 --> 00:03:58.279
Pitman, who Kent Pitman you're familiar with from the

00:03:58.280 --> 00:04:03.599
Pit Manual and so forth, writes a kind of climate crisis

00:04:03.600 --> 00:04:07.599
haiku, which we kind of lead out with, and we kind of go into

00:04:07.600 --> 00:04:10.239
the discussions there. Then obviously the show has- It's a

00:04:10.240 --> 00:04:16.959
highlight, not gonna lie. Yeah, yeah, I love it. I try and do

00:04:16.960 --> 00:04:19.479
these dramatic readings, but it's often stumble over.

00:04:19.480 --> 00:04:23.719
Actually, when Sacha was on, there was an auxiliary poem

00:04:23.720 --> 00:04:27.959
that happened, which was pretty interesting, too. What was

00:04:27.960 --> 00:04:31.319
I going to say? Then, I mean, the way we got named the Lispy

00:04:31.320 --> 00:04:33.839
Gopher Climate was because, broadly speaking, I like to

00:04:33.840 --> 00:04:37.959
talk about kind of lisp, and most of my writing for a long time

00:04:37.960 --> 00:04:41.919
was on the Gopher. Though I accidentally locked myself out

00:04:41.920 --> 00:04:45.679
of the Gopher recently, so there hasn't been an update there

00:04:45.680 --> 00:04:52.159
for a while. I'm kind of around the IRCs and Mastodon quite a

00:04:52.160 --> 00:04:56.759
bit now. Lisp, I like to use the term Lisp inclusively,

00:04:56.760 --> 00:04:59.719
basically. Obviously this talk, I was making the point that

00:04:59.720 --> 00:05:05.519
I just could go through a 1978 paper written in, and so pre-D

00:05:05.520 --> 00:05:10.279
machine inter-LISP, right? And it basically just worked in

00:05:10.280 --> 00:05:13.439
modern Emacs LISP. Somebody was pointing out to me, who

00:05:13.440 --> 00:05:20.119
pointed out where I was like, I don't know what PUT is in,

00:05:20.120 --> 00:05:23.039
in Emacs Lisp, and somebody was saying definitely there's

00:05:23.040 --> 00:05:28.319
put in Emacs Lisp. So I'm going to come back to the recording

00:05:28.320 --> 00:05:31.199
of this talk, and I'm going to just pinpoint this moment the

00:05:31.200 --> 00:05:34.519
next time somebody says, we need to modernize Lisp. I'm

00:05:34.520 --> 00:05:37.799
going to say, no, no, no, this is modern Emacs Lisp. You see,

00:05:37.800 --> 00:05:42.359
here's people talking about, yeah, I'm just tripping over,

00:05:42.360 --> 00:05:45.519
not tripping over, I'm amused by your phrase there, but

00:05:45.520 --> 00:05:48.599
that's exactly how I see it too. And I take your point utterly

00:05:48.600 --> 00:05:53.359
that, you know, this tradition of Lisp of carrying forward

00:05:53.360 --> 00:05:57.799
ideas. And, you know, we, you know, especially in Emacs, it

00:05:57.800 --> 00:06:00.799
really is like a brain trust, right? Buckets of knowledge of

00:06:00.800 --> 00:06:04.399
how to get some sort of work done, or, you know, how to work

00:06:04.400 --> 00:06:08.919
with some kind of code or some kind of data. Yeah, but I had a

00:06:08.920 --> 00:06:12.079
kind of, interesting experience with some great friends of

00:06:12.080 --> 00:06:15.799
mine, whom I love dearly. Vidak, if you're watching this,

00:06:15.800 --> 00:06:21.559
I'm gossiping about you people over in Australia there.

NOTE Lisp already did it

00:06:21.560 --> 00:06:25.439
Where people come to you with really exciting ideas that

00:06:25.440 --> 00:06:30.359
seem to be very cutting edge and like, you know, very much the

00:06:30.360 --> 00:06:33.559
current talk of the day, like you can hear in other

00:06:33.560 --> 00:06:36.119
programming languages, and they're telling you how they

00:06:36.120 --> 00:06:39.639
think you might be able to do this in Lisp. And you have to say,

00:06:39.640 --> 00:06:43.719
well, you know, if we go back to the late 70s, where the Lisp

00:06:43.720 --> 00:06:47.959
community really kind of pioneered this topic already.

00:06:47.960 --> 00:06:51.399
Here's how we did it in the late 70s. And there's actually

00:06:51.400 --> 00:06:56.439
quite a kind of awkward, just kind of disjunction there. I

00:06:56.440 --> 00:06:59.079
mean, that's the thing, right? Where use of Emacs in

00:06:59.080 --> 00:07:03.759
particular use of Lisp in general will unravel somebody's

00:07:03.760 --> 00:07:06.319
whole big bag of wind that they've built up around why

00:07:06.320 --> 00:07:10.439
something has to be rebuilt and well right but that's just a

00:07:10.440 --> 00:07:13.359
function you know it's data so we'll probably just think

00:07:13.360 --> 00:07:16.679
about that as I don't know sitting in a variable.

00:07:16.680 --> 00:07:21.359
Oh, so that whole problem, like the elegance of a solution

00:07:21.360 --> 00:07:25.959
can entirely fall away once you fall back to an earlier way of

00:07:25.960 --> 00:07:29.479
thinking about it. And then, you know, look at the pieces

00:07:29.480 --> 00:07:32.039
you've carried forward the idea of the declarative

00:07:32.040 --> 00:07:37.119
language, right? Declaring user experience. Yeah. Once

00:07:37.120 --> 00:07:41.999
again, tangentially to, um, to the actual talk we've just

00:07:42.000 --> 00:07:47.479
watched, which I will try and follow up on as well. But one

00:07:47.480 --> 00:07:51.919
example was After watching me use the Common Lisp loop

00:07:51.920 --> 00:07:55.999
facility so much, Kent pointed out to me, hey, you know, why

00:07:56.000 --> 00:08:01.719
don't you try using Richard Waters' series iteration

00:08:01.720 --> 00:08:05.799
stuff, which was kind of lazy evaluation of series that

00:08:05.800 --> 00:08:09.119
Waters did. And so after criticizing Haskell for a long

00:08:09.120 --> 00:08:12.879
time, me kind of saying, hey, you know, I don't think this

00:08:12.880 --> 00:08:16.519
lazy evaluation is important. then Kent pointed out to me

00:08:16.520 --> 00:08:22.399
that, for example, the series, like what is it? AIM 1082 or

00:08:22.400 --> 00:08:28.799
something published in 1989 was Lazy Evaluation in LISP

00:08:28.800 --> 00:08:33.639
with series. And so I thought, well, once I realized that

00:08:33.640 --> 00:08:37.879
this was part of kind of almost classic LISP history to have

00:08:37.880 --> 00:08:43.679
lazy evaluation, I adopted series, I kind of had to rethink

00:08:43.680 --> 00:08:47.799
my LISP worldview to realize it did already include lazy

00:08:47.800 --> 00:08:51.679
evaluation, which I attributed to the late 80s. And then

00:08:51.680 --> 00:08:55.239
when I actually read a little bit further, lazy evaluation,

00:08:55.240 --> 00:08:59.159
depending on your research group, has been, was kind of

00:08:59.160 --> 00:09:02.719
established in the late 70s by Waters again, actually.

00:09:02.720 --> 00:09:05.719
Sorry for the anecdote, just kind of the interesting

00:09:05.720 --> 00:09:11.159
medley. Not at all.

00:09:11.160 --> 00:09:17.919
Yeah.

00:09:17.920 --> 00:09:25.639
Ellis over in the IRC has come up with a good slime about

00:09:25.640 --> 00:09:33.339
async. Oh, I see. So yeah,

00:09:33.340 --> 00:09:38.199
I guess that would work. I have to try that. OK, so you're just

00:09:38.200 --> 00:09:42.679
getting me reading this. They have had a stab at resolving

00:09:42.680 --> 00:09:49.279
our asynchronous calls thing more elegantly than me. Left

00:09:49.280 --> 00:09:53.879
as an exercise to the listener. It's one of the big virtues of

00:09:53.880 --> 00:09:56.799
something like a convention. It'll bring us together with

00:09:56.800 --> 00:10:01.079
other people that can kind of see past the boats in our eyes.

00:10:01.080 --> 00:10:06.239
Oh yeah, that's easy for me. Yeah, definitely. Hearing

00:10:06.240 --> 00:10:10.279
somebody else's kind of thought process from you and from

00:10:10.280 --> 00:10:16.639
just the past speaker who was Robin, I think, because this

00:10:16.640 --> 00:10:19.519
was in the morning for me, so I just kind of got up and caught

00:10:19.520 --> 00:10:25.919
some of Robin. Yeah, it's so great, kind of vicariously

00:10:25.920 --> 00:10:30.559
experiencing somebody else's Emacs usage and how it kind of

00:10:30.560 --> 00:10:34.799
subtly backs onto their own development flows. Yeah, so I

00:10:34.800 --> 00:10:37.319
really appreciate this talk. I'm constantly cribbing from

00:10:37.320 --> 00:10:40.519
everyone I meet. And yeah, this talk has been eye-popping,

00:10:40.520 --> 00:10:43.599
just watching you casually navigate Emacs, actually.

NOTE IELM

00:10:43.600 --> 00:10:51.519
Yeah, it's cool. Yeah, I enjoyed discovering IELM mode.

00:10:51.520 --> 00:10:54.959
That was going to be my other question for people. Are there

00:10:54.960 --> 00:10:59.439
any IELM Power users around? I could really go for an

00:10:59.440 --> 00:11:05.679
EmacsConf talk on IELM mode. Aha, yes. Very good. Note

00:11:05.680 --> 00:11:12.199
taken. Yeah. So, just thoughts for next year? Oh, well, I

00:11:12.200 --> 00:11:15.999
kind of want to get back onto the MPV, but thank you so much for

00:11:16.000 --> 00:11:22.039
this. You are cmak in the IRC, right? I am Corwin, same as you.

00:11:22.040 --> 00:11:26.159
So you're Corwin. There's also cmak, and I guess there are a

00:11:26.160 --> 00:11:28.719
few other people. Sorry that I'm tripping over the

00:11:28.720 --> 00:11:31.359
different people here. But you're going to come on the Lispy

00:11:31.360 --> 00:11:35.719
Gopher Climate later. Sure, I'm happy to. That sounds

00:11:35.720 --> 00:11:38.479
like fun. I always got a million things to talk about me or an

00:11:38.480 --> 00:11:42.399
opinion on everything. But of course, my favorite thing to

00:11:42.400 --> 00:11:48.359
talk about is just the huge thanks that, you know, sharing

00:11:48.360 --> 00:11:53.639
that, the generosity or the, you know, my appreciation for

00:11:53.640 --> 00:11:57.159
you and all the other members of the Emacs community that

00:11:57.160 --> 00:12:00.519
create talks like this and make the conference and the rest

00:12:00.520 --> 00:12:04.839
of the community so rich. Well, yeah, and thank you for your

00:12:04.840 --> 00:12:09.759
work. Sacha is just saying over in Lambda that when I say I

00:12:09.760 --> 00:12:13.039
want someone to give the talk, this means I'm volunteering

00:12:13.040 --> 00:12:17.079
to give the IELM talk. That's what I wrote down. Oh, yeah. I've

00:12:17.080 --> 00:12:19.479
been working for Sacha. I mean, helping Sacha with this

00:12:19.480 --> 00:12:23.919
conference for years. I know. No, I'm kidding. That would be

00:12:23.920 --> 00:12:28.559
cool. I will absolutely go to your ielm talk. I make a lot of use

00:12:28.560 --> 00:12:32.879
of that and could do more. Yeah, we're meant to suddenly

NOTE Q: Are we going to get a McCLIM LambdaMOO client?

00:12:32.880 --> 00:12:36.639
stop. But a guest over in Lambda also said, are we going to get

00:12:36.640 --> 00:12:41.239
a McCLIM LambdaMOO client? And I actually had all my kind of

00:12:41.240 --> 00:12:44.519
Moo stuff I'd written in Common Lisp, which I was thinking of

00:12:44.520 --> 00:12:47.639
just kind of jettisoning. But you're right, I should make

00:12:47.640 --> 00:12:51.479
that into a client for Common Lisp. Anyway, I'm going to hang

00:12:51.480 --> 00:12:55.839
up so I can keep watching the conference sounds good so we'll

00:12:55.840 --> 00:12:58.399
just cut away with the stream throw some music and a

00:12:58.400 --> 00:13:02.799
countdown uh back on give us just a second to make that on bbb

00:13:02.800 --> 00:13:05.359
and then i'll give you the big thumbs up thank you thank you

00:13:05.360 --> 00:13:08.359
recording here we'll get it all posted up uh right next to

00:13:08.360 --> 00:13:09.839
your awesome pre-recorded talk

00:13:09.840 --> 00:13:17.159
thanks again like it's been fun chatting and uh Yeah,

00:13:17.160 --> 00:13:20.799
definitely seeing you around in the conference channel off

00:13:20.800 --> 00:13:23.879
off season. So to speak, you're like, you're totally

00:13:23.880 --> 00:13:26.679
welcome to use our chat like it to the extent you need to IRC

00:13:26.680 --> 00:13:29.039
channel that's been working on great for me. It's fun to fun

00:13:29.040 --> 00:13:30.639
to see it.

00:13:30.640 --> 00:13:39.319
All right, I'm gonna hang up this thing. All right. Happy day

00:13:39.320 --> 00:13:44.119
flowy. Sorry, I mean, screwlisp. Oh my gosh, I have

00:13:44.120 --> 00:13:54.360
conference brain. Bye bye. All right, later, later.