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
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
|
<!-- Automatically generated by emacsconf-publish-after-page -->
<div class="transcript transcript-mainVideo"><a name="mcclim-mainVideo-transcript"></a><h1>Transcript</h1>
<div class="transcript-heading">[[!template new="1" text="""Introduction""" start="00:00:01.750" video="mainVideo-mcclim" id="subtitle"]]</div>[[!template text="""Welcome everyone to my EmacsConf presentation,""" start="00:00:01.750" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""where we're going to look at Lisp's vdemo[??] app from 1978,""" start="00:00:15.370" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""but done in modern Elisp.""" start="00:00:22.139" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Then we're going to look at getting inferior-lisp working,""" start="00:00:28.460" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""my dear Common Lisp.""" start="00:00:33.390" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Then we're going to use the Common Lisp interface manager,""" start="00:00:37.003" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""the open source child of the Common Lisp interface manager,""" start="00:00:42.159" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""McCLIM, from inferior-lisp in Superior Lisp,""" start="00:00:47.813" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""which is the opposite order that I initially thought""" start="00:00:55.710" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""we were going to do things in,""" start="00:00:58.375" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""but this is how it's kind of turned out.""" start="00:00:59.326" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So it's this article,""" start="00:01:00.829" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I thought, from 1978, was interesting to us today.""" start="00:01:01.845" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""“Programming in an Interactive Environment:""" start="00:01:05.999" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""the ‘Lisp’ Experience.”""" start="00:01:08.752" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Explaining what all these LISP programmers were doing to""" start="00:01:12.005" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""people unfamiliar with LISP programming.""" start="00:01:19.478" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""“LISP systems have been used for""" start="00:01:22.566" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""highly interactive programming for more than a decade.”""" start="00:01:24.451" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""This was from 1978.""" start="00:01:27.604" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And we're just going to go and,""" start="00:01:29.990" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""almost verbatim, port the demo application for LISP""" start="00:01:34.109" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""out of 1978 Interlisp and into Emacs Lisp.""" start="00:01:40.017" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And we're going to do it without Org Mode,""" start="00:01:49.720" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""because I think everyone is finding out""" start="00:01:51.478" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""how great Org Mode is already.""" start="00:01:54.281" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""For inferior Lisp, I thought instead of org-mode,""" start="00:01:58.100" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""we'll theme it around slime-mode and then it turned out""" start="00:02:00.837" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""most of this presentation happens in Emacs Lisp,""" start="00:02:02.873" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""because this is an Emacs Lisp conference.""" start="00:02:06.109" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""But I found out that there's ielm-mode,""" start="00:02:09.379" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""which is pretty similar to slime-mode,""" start="00:02:12.849" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""but in our hearts, we can imagine that this is""" start="00:02:19.054" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""an Emacs example, homed around slime-mode,""" start="00:02:23.660" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Superior Lisp Interaction Mode for Emacs, instead of org-mode.""" start="00:02:27.498" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Though, you know, I do secretly use org-mode as well,""" start="00:02:33.403" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""not very secretly.""" start="00:02:36.440" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""But that means we're kind of improvising,""" start="00:02:37.958" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""improvising a presentation mode.""" start="00:02:46.790" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So we have this big buffer of Elisp, and let's just...""" start="00:02:49.986" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""This is me, not Sandewall, out of interest,""" start="00:02:56.726" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""let's make a keyboard macro,""" start="00:03:00.614" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""go get the S-expression wherever the cursor is,""" start="00:03:04.216" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""move it to the next S-expression, paste it in here,""" start="00:03:10.290" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""and the keyboard macro, alright.""" start="00:03:13.661" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""What was basically happening...""" start="00:03:20.190" video="mainVideo-mcclim" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Calendar""" start="00:03:21.702" video="mainVideo-mcclim" id="subtitle"]]</div>[[!template text="""So the demo application in this case is""" start="00:03:21.702" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""a scheduling application.""" start="00:03:25.356" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And so you can imagine improvising a calendar like this""" start="00:03:28.792" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""if you weren't existingly using an""" start="00:03:34.731" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""org-mode integrated calendar.""" start="00:03:36.683" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So, you know, just have a list and maybe""" start="00:03:39.252" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""each list is of sublists, where the first element,""" start="00:03:43.989" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""the car of the sublist, I guess,""" start="00:03:49.579" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""is a sensible-sounding date format, like sat dec 7,""" start="00:03:51.931" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""this is clearly the first day of EmacsConf.""" start="00:03:56.119" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Then after that, a list of basically from and to times,""" start="00:03:59.939" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""and then a quick written description of whatever event""" start="00:04:06.280" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""was at that time.""" start="00:04:18.642" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So similar to what we were seeing recently""" start="00:04:19.876" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""as of me recording this in our Structure and""" start="00:04:23.180" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Interpretation of Computer Programs study group,""" start="00:04:25.499" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""you have all these little methods, sorry, defuns.""" start="00:04:29.902" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So hours of a time is actually just car of the time,""" start="00:04:35.759" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""minutes of the time, cadr of time.""" start="00:04:40.763" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And so we all know these kind of little,""" start="00:04:43.216" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""basically turning car and cadr,""" start="00:04:46.720" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""which we do use into descriptive names like from and to.""" start="00:04:50.223" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""You can see how this lines up with the appointments.""" start="00:04:53.143" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So for "reproducibly building emacs" described event,""" start="00:04:56.379" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I guess from would be 16 25.""" start="00:05:01.751" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Let's just grab that and literally use those,""" start="00:05:05.680" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""because we're in interactive programming, right?""" start="00:05:07.708" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So we have this quoted form and then""" start="00:05:11.711" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""let's do from of that. Great.""" start="00:05:18.266" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And let's do minutes.""" start="00:05:22.290" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So from 16 25, 16 45 reproducibly building Emacs,""" start="00:05:25.308" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""so when I do from to that I get 16 25""" start="00:05:31.548" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""when I do minutes to 16 25, I get 25""" start="00:05:34.851" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""and a description of this number in octal and hexadecimal,""" start="00:05:42.057" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""out of interest.""" start="00:05:45.590" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""What was up next? Okay, getting nextday from a date.""" start="00:05:48.047" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And so, what was it? Saturday, December 27th.""" start="00:05:53.553" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So what happens? So this function,""" start="00:05:57.073" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I guess this was part of Sandewall's personal exploration of""" start="00:06:01.345" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""atoms using symbols with property lists,""" start="00:06:06.032" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""with an attached property list to every symbol.""" start="00:06:12.238" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And so you can kind of see how this works.""" start="00:06:15.942" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I get whatever was keyed by the symbol nextweekday out of""" start="00:06:21.510" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""the day symbol, so I guess we would do...""" start="00:06:32.800" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""so if we had Sat December 6, I guess we get Sat""" start="00:06:36.579" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Oh, it destructures that itself somehow, get nextweekday.""" start="00:06:48.140" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Sorry, nextday.""" start="00:06:58.429" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""set December 6th""" start="00:07:02.280" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""But of course these weren't defined yet,""" start="00:07:10.270" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""so what if we (setf (get 'sat 'nextweekday) 'sun)""" start="00:07:12.782" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""and it's going to be sun right""" start="00:07:23.793" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And then if we (nextday '(sat dec 6)),""" start="00:07:28.990" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Sunday, December 7th.""" start="00:07:36.720" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Yeah, so that kind of makes sense in an intuitive way.""" start="00:07:38.942" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And you can see cond is being used.""" start="00:07:41.778" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So if you're not a Lisp person, cond evaluates a condition.""" start="00:07:43.850" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""If the condition returns non-nil,""" start="00:07:51.588" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""it executes the code attached to that condition.""" start="00:07:54.758" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""It evaluates each of these conditions in terms""" start="00:07:57.210" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""and then stops when one returns non-nil,""" start="00:08:00.297" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""as you might expect as a Lisp programmer.""" start="00:08:04.901" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Let's keep marching along.""" start="00:08:07.670" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Okay, so we have to populate this.""" start="00:08:09.672" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And this was an interesting one.""" start="00:08:11.741" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""As you can see, this was my attempt.""" start="00:08:13.543" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""let days mon tue wed, so forth.""" start="00:08:15.612" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Then I used cl-loop from Emacs Lisp, you know,""" start="00:08:19.249" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""for day in days, for nex in cdr days, setf nextweekday.""" start="00:08:23.453" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""This I thought was surprisingly deep, was that""" start="00:08:32.610" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Lisp programmers, Sandewall thought,""" start="00:08:36.432" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""are basically constantly trying to break new ground and they""" start="00:08:38.485" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""lose interest very quickly when""" start="00:08:43.723" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""that's not what they're doing.""" start="00:08:45.425" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And he was making the point that breaking new ground""" start="00:08:46.843" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""involves solving a problem exactly once.""" start="00:08:50.229" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And so you kind of should do it""" start="00:08:54.232" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""in the most expedient way possible""" start="00:08:56.003" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""to solve it kind of for the first time.""" start="00:08:58.672" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And after that, it's not breaking new ground anymore.""" start="00:09:00.992" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And so I thought that was a kind of fun point""" start="00:09:07.663" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""from Sandewall's paper that we could kind of chew on.""" start="00:09:10.400" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Do something similar for months and month lengths.""" start="00:09:15.121" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""But as we can see, if I get Feb,""" start="00:09:21.059" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""nrdr days I think that characters in 1978,""" start="00:09:32.120" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""characters and symbols in 1978 were more precious""" start="00:09:42.082" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""which is why Sandewall was writing in this abbreviated way.""" start="00:09:45.468" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""We might write more verbosely these days.""" start="00:09:47.871" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""We get 28th but it is in fact a leap year,""" start="00:09:51.391" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""so let's just set that to be 29. Now, it's fine.""" start="00:09:54.277" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Then I guess if we do, we were doing nextday.""" start="00:09:59.048" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Sure, nextday. I don't know what day it was.""" start="00:10:06.038" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""let's assume it was Sunday Feb 28""" start="00:10:10.994" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""some kind of typo crept in there, but we can deal with it.""" start="00:10:22.716" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Let's just setf get sun nextweekday month.""" start="00:10:26.230" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So once we've solved it once, we should be fine, right?""" start="00:10:43.944" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Okay, I think I have to speed up a bit.""" start="00:10:48.698" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Yeah, there we go, Monday February 29th and then""" start="00:10:52.000" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""what if we nextday... Tuesday March 1st.""" start="00:10:55.605" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Okay, it basically seems to be working.""" start="00:11:01.244" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And I'd argue it's actually fun that""" start="00:11:03.750" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""we kind of had to do that.""" start="00:11:06.448" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Then, just imagining you're kind of functioning with""" start="00:11:08.585" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""other people: day begins at 900, ends at 1700,""" start="00:11:13.523" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""so kind of a 9:00 to 5:00, imagining... though perhaps,""" start="00:11:18.361" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""shorter is more appropriate,""" start="00:11:23.915" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""but let's not quibble about that.""" start="00:11:25.368" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""What was happening next in this app?""" start="00:11:27.420" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""holesin. Oh, yeah, so get me the free slots""" start="00:11:29.839" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""in from start time, list of appointments,""" start="00:11:35.712" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""remembering characters, I guess, were more precious""" start="00:11:40.110" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""is my theory.""" start="00:11:45.288" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And then an end time, so if I go holesin and then from 900""" start="00:11:46.906" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""to where I've written 9 space 0 0""" start="00:11:59.050" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""and what are my appointments?""" start="00:12:03.389" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So I have a list of appointments that""" start="00:12:07.459" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""need to have start times and finish times.""" start="00:12:09.980" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So let's go 12 59 to 13 01.""" start="00:12:12.132" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""The description, I guess, can be test.""" start="00:12:23.580" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And then let's finish that at 1700,""" start="00:12:25.429" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""like we kind of thought.""" start="00:12:29.115" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Oops, some of these were meant to be arguments.""" start="00:12:37.830" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Okay, there we go.""" start="00:12:54.800" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And so the available times between nine and five,""" start="00:12:56.042" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""if there's one appointment from 12:59 to 1:01,""" start="00:13:01.397" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""are from 9 to 1259 and from 1 past 1 to 5,""" start="00:13:05.580" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""which is kind of what we were expecting.""" start="00:13:13.792" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And so our appointment app is kind of coming along.""" start="00:13:15.728" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Then we have commonholes,""" start="00:13:18.931" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""kind of works in a sensible way.""" start="00:13:23.430" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Do we have, what are some common holes from""" start="00:13:33.890" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""two lists of appointments, I guess? commonholes.""" start="00:13:36.249" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I guess, let's have one person have an appointment""" start="00:13:50.903" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""from 9 to 10.""" start="00:13:53.850" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""That's going to be their only appointment.""" start="00:13:59.569" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And let's have another person have an appointment""" start="00:14:02.558" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""from 9.30 to 10.30.""" start="00:14:05.996" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Oh, we didn't do beforetime yet.""" start="00:14:14.450" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""This is the order Sandewall implemented things in there.""" start="00:14:18.441" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Ok, there.""" start="00:14:22.345" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So the commonholes are from 9.30 to 10.""" start="00:14:25.515" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""That's actually the overlapping time.""" start="00:14:34.272" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I'll re-record this""" start="00:14:42.232" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""if some kind of gremlin has crept into my things.""" start="00:14:43.900" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And then, what did we first start by doing?""" start="00:15:04.150" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Emacsconf track 1 and Emacsconf track 2,""" start="00:15:07.389" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""and we'll do it on Saturday, December 7.""" start="00:15:11.494" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""commontime, and I'm being prompted, of course.""" start="00:15:21.140" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""emacsconf-track-1,""" start="00:15:23.806" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""emacsconf-track-2,""" start="00:15:29.676" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""the date that we grabbed.""" start="00:15:33.370" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Let's say we want five minutes.""" start="00:15:36.585" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And, as always, I'm forgetting to quote things.""" start="00:15:49.120" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And so my opportunities for common times""" start="00:15:52.468" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""between emacsconf-track-1 to emacsconf-track-2""" start="00:15:56.739" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""on the first day of the conference,""" start="00:16:01.376" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Saturday, December 7th, for five minutes.""" start="00:16:02.869" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I have an opportunity between 9:20 and 9:40,""" start="00:16:05.864" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""11:40 and 13:00, 13:10, 13:25,""" start="00:16:08.984" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""13:45, 13:55, and 16:15 to 16:25.""" start="00:16:14.489" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So I think that's all working.""" start="00:16:19.662" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And it was done with almost exactly the same code,""" start="00:16:23.881" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""except for my loopy populating symbol plist bits earlier,""" start="00:16:31.355" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""in Interlisp in 1978 as Emacs Lisp in 2024.""" start="00:16:39.015" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I thought that was pretty interesting that""" start="00:16:46.539" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""you could do that.""" start="00:16:48.675" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I think setf get was put prop""" start="00:16:49.542" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""was the biggest difference in 1978 Interlisp and""" start="00:16:57.099" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""modern Emacs Lisp.""" start="00:17:02.787" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And obviously modern Emacs Lisp has Common Lisp loop in it,""" start="00:17:04.740" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""kind of. It's another big difference.""" start="00:17:09.228" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""How are we doing for time? 17 minutes?""" start="00:17:11.914" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Great, because now let's get a bit closer to what""" start="00:17:16.450" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""my talk title has promised.""" start="00:17:19.805" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""We're going to use Common Lisp from Emacs Lisp""" start="00:17:21.991" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""and we're going to use Common Lisp Interface Manager,""" start="00:17:25.211" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""the open source implementation of""" start="00:17:28.130" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Common Lisp Interface Manager from""" start="00:17:30.166" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Inferior Lisp from Emacs Lisp.""" start="00:17:33.836" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And what we just went over in Sandewall's paper...""" start="00:17:37.300" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""This was the starting point, and Sandewall says,""" start="00:17:45.550" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""well, if you just kind of jammed these ideas using lists""" start="00:17:47.783" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""you just kind of made hour a synonym for car and""" start="00:17:51.587" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""minute a synonym for cadr and so forth,""" start="00:17:55.391" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""you can then make a whole bunch of improvements.""" start="00:17:59.795" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Can we actually get a glimpse of the …""" start="00:18:04.166" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""No, I didn't really write this.""" start="00:18:09.239" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Yeah, so you can see I basically just ported out of""" start="00:18:10.473" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""the Interlisp code in the text of this paper.""" start="00:18:14.294" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Yeah, you see from lambda of appointment,""" start="00:18:17.580" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""car appointment, and that's defineq.""" start="00:18:21.350" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I guess Interlisp in 1978 used defineq,""" start="00:18:24.954" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""whereas we used defun in Elisp,""" start="00:18:27.907" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""but I'd encourage you to explore that yourselves.""" start="00:18:33.361" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""But the extension that I wanted to develop today is,""" start="00:18:35.314" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""since Common Lisp interface manager is just Lisp,""" start="00:18:38.601" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""and Inferior Lisp is just Lisp,""" start="00:18:41.237" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""and Emacs Lisp is just Lisp,""" start="00:18:43.472" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""and Interlisp in 1978 is just Lisp,""" start="00:18:45.341" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""we could kind of use them all together""" start="00:18:48.928" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""in a kind of funky way.""" start="00:18:50.162" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""But a complaint you often hear, or a statement of confusion""" start="00:18:51.480" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""that you often hear as a Lisp person,""" start="00:18:57.086" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""people from other languages often can't kind of figure out""" start="00:19:00.423" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""how to get started with Lisp.""" start="00:19:06.762" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So I'm just going to try and do everything here and now.""" start="00:19:09.765" video="mainVideo-mcclim" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Inferior Lisp and McCLIM""" start="00:19:12.802" video="mainVideo-mcclim" id="subtitle"]]</div>[[!template text="""And this is the second piece of my three pieces,""" start="00:19:12.802" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""so let's just get inferior lisp and McCLIM happening.""" start="00:19:18.407" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""We normally use slime Superior Lisp Interaction Mode""" start="00:19:22.928" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""for Emacs, which we could get from Emacs's package manager.""" start="00:19:29.318" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""If I go package-list-packages and then we wait""" start="00:19:41.897" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""for however fast my network is,""" start="00:19:48.954" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""we're going to see how long it's been""" start="00:19:54.270" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""since I updated something.""" start="00:19:55.361" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Yeah, but you see it's in MELPA, right?""" start="00:19:58.629" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""It's got to be somewhere here.""" start="00:20:15.750" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Yeah, all right.""" start="00:20:18.082" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So there's one slime available in non-GNU,""" start="00:20:18.551" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""one possibly more recent one available in""" start="00:20:21.470" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""the MELPA package repositories.""" start="00:20:26.758" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I don't know about you,""" start="00:20:30.278" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""but I can sympathize with people who feel confused by this""" start="00:20:31.013" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""because I think if you look online,""" start="00:20:33.666" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""if you found a search engine result,""" start="00:20:36.519" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""it doesn't customize these like I customize them.""" start="00:20:38.687" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So let's just do this.""" start="00:20:44.160" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""customize-variable.""" start="00:20:45.995" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""package-archives.""" start="00:20:48.197" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Yeah and you can see here I've ins-ed gnu, non-gnu, and melpa.""" start="00:20:54.518" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""It's melpa, not melpa stable.""" start="00:21:00.542" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Saved and set.""" start="00:21:03.478" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So that's how I do that.""" start="00:21:06.810" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""We're just kind of totally get an inferior lisp working.""" start="00:21:08.384" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And then, like we saw before,""" start="00:21:17.130" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""this might occur, buffer is still open.""" start="00:21:20.949" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""No. occur. slime.""" start="00:21:23.148" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So we could install and execute that.""" start="00:21:35.330" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I cloned slime since Common Lisp people""" start="00:21:38.681" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""might use slime and swank, like McCLIM does outside of Emacs.""" start="00:21:41.784" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I think we can secretly see""" start="00:21:48.924" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I've got it here already in my ~/.emacs.d/slime,""" start="00:21:51.093" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""but you could install it like that. The hotkey is I,""" start="00:21:56.064" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""and then execute the install.""" start="00:22:00.169" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I realize you all already know this,""" start="00:22:02.071" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""but many of you might not yet be Common Lisp programmers,""" start="00:22:04.039" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""and you can use both Superior and Inferior Lisp.""" start="00:22:06.809" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Instead of package archives in Emacs,""" start="00:22:10.370" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""in Inferior Lisp, and with great controversy,""" start="00:22:14.783" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""we often use QuickLisp.""" start="00:22:19.755" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""People sometimes complain QuickLisp releases""" start="00:22:22.758" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""get out of date quite quickly.""" start="00:22:25.828" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""But there was one recently, so they're pretty in date.""" start="00:22:28.630" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And so there should be a …""" start="00:22:32.167" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Yeah, so basically you download quicklisp.lisp,""" start="00:22:35.371" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""you check its SHA-256 sum.""" start="00:22:39.158" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So I guess in, ooh, over here, if I press D,""" start="00:22:44.910" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""~screwtape/downloads/quicklisp.lisp.""" start="00:22:51.229" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Great. If we open a shell, we realize that""" start="00:22:53.756" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""this is just riveting for all of our experts there.""" start="00:22:57.426" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""sha256 ~/Downloads/quicklisp.lisp""" start="00:23:06.450" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Your SHA-256 might be different to mine.""" start="00:23:19.720" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Somebody please tell me during the actual conference,""" start="00:23:22.601" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""the right Emacs idiom to do this.""" start="00:23:25.621" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I guess it will be tools decrypt something.""" start="00:23:29.225" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""But then once you have QuickLisp,""" start="00:23:33.930" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""let's go back to our shell.""" start="00:23:36.214" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I'm on OpenBSD or a BSD, so I type pkg_add ecl""" start="00:23:41.810" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""to get embeddable Common Lisp.""" start="00:23:46.675" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""However, I think I already have it.""" start="00:23:53.590" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And then, let's start ecl [embeddable Common Lisp].""" start="00:23:58.540" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Quicklisp inserts itself already,""" start="00:24:04.670" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""but just loading that quicklisp.lisp file""" start="00:24:11.290" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""kind of would get you here anyway.""" start="00:24:14.970" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Now let's (ql:quickload :mcclim)""" start="00:24:17.039" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I'm actually following my plan.""" start="00:24:27.140" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""McCLIM is kind of like Emacs in that""" start="00:24:33.269" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""it handles all sorts of graphical stuff""" start="00:24:38.344" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""like if you have GTK Emacs,""" start="00:24:41.013" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""you know, it can do really a lot of stuff.""" start="00:24:42.798" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""That's the reason why compiling and loading""" start="00:24:44.383" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""the McCLIM package takes a while""" start="00:24:50.504" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""and I do use my old computer laptop,""" start="00:24:53.175" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""my old computer challenge laptop all the time,""" start="00:24:57.012" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""so when you do this, your computer will be""" start="00:25:00.349" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""substantially faster or you will be feeling""" start="00:25:02.735" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""smug about how slow you're running your computer,""" start="00:25:06.404" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""and so there's no problem.""" start="00:25:12.759" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Next, we're going to start Swank""" start="00:25:15.531" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""which is the Lisp part of Emacs's slime-mode.""" start="00:25:17.366" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""If I remember, we looked at this before""" start="00:25:27.649" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""in my .emacs.d,""" start="00:25:32.348" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""and then there should be slime/start-swank.lisp.""" start="00:25:35.050" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Let's just grab that and load it.""" start="00:25:41.699" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""You don't have to type #p.""" start="00:25:46.293" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""The string will work as well as the path name,""" start="00:25:48.870" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""but it's kind of fun to do so.""" start="00:25:51.200" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Now, slime-connect.""" start="00:25:52.668" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""You installed slime earlier.""" start="00:25:55.437" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Default values.""" start="00:25:57.559" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Oh, the reason we had to do this""" start="00:25:59.074" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""and not use Slime, start Slime normally was that""" start="00:26:01.844" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""CLIM, Common Lisp Interface Manager,""" start="00:26:07.214" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""McCLIM, implementation of the""" start="00:26:10.786" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Common Lisp Interface Manager spec, also uses Swank""" start="00:26:12.254" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""and McCLIM really wants to be in the driver's seat.""" start="00:26:16.675" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""We can have our Emacs connect""" start="00:26:20.162" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""to the Swank that McCLIM was already running.""" start="00:26:23.332" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So (in-package :clim-user)...""" start="00:26:28.553" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I don't know if this is an Emacs Lisp idiom,""" start="00:26:30.873" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""so you normally have user packages to absorb user code""" start="00:26:33.625" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""just for fooling around.""" start="00:26:37.162" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Then let's just use clim at all.""" start="00:26:42.110" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And so clim does lots of things around presentations""" start="00:26:47.606" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""but one thing it does is automatically, to a large extent,""" start="00:26:53.094" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""generate graphical user interfaces.""" start="00:26:58.367" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So there's a lot to it that's not about graphics,""" start="00:27:04.006" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""kind of richer interfaces than""" start="00:27:09.444" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""ANSI Common Lisp's character streams.""" start="00:27:14.082" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""But let's use it to grab a graphical pop-up""" start="00:27:19.389" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""that returns a value.""" start="00:27:23.258" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So we have this accepting-values tool.""" start="00:27:24.743" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""t is just choose whatever you think the default stream is.""" start="00:27:28.013" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""We're going to want our own window, t as well,""" start="00:27:32.150" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""so just a keyword argument.""" start="00:27:36.688" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""After that, we can just write things like (accept 'string).""" start="00:27:38.640" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And I'm just doing this in, for people only listening,""" start="00:27:44.978" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I've just done this in my ECL Slime REPL.""" start="00:27:47.933" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Enter a string: foo bar baz.""" start="00:27:50.986" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Alt-Enter, I think, is the shortcut to return that.""" start="00:27:56.530" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""As you can see, its first return was "foo bar baz",""" start="00:27:59.150" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""and it had second and third returns,""" start="00:28:02.298" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""string being the type, presentation type that it got,""" start="00:28:04.366" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""and t, I think, to indicate that it exited successfully.""" start="00:28:10.155" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""We can also do expression, might be more interesting.""" start="00:28:16.189" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""There are a whole bunch of these.""" start="00:28:20.966" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""clim's examples folder is pretty good.""" start="00:28:26.140" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And the documentation, everybody's documentation,""" start="00:28:29.358" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""McCLIM's documentation, you know,""" start="00:28:32.344" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""lispworks and franz's documentation will tell you about""" start="00:28:35.413" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""the different default presentation types you can accept.""" start="00:28:39.385" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And they're pretty intuitive and""" start="00:28:47.969" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""they're kind of very Lisp compatible,""" start="00:28:49.912" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""which everything kind of is.""" start="00:28:53.264" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""We could accept an expression. foo bar baz.""" start="00:28:54.316" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""return "foo bar baz 123" because that's what I wrote.""" start="00:29:05.350" video="mainVideo-mcclim" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Putting things together""" start="00:29:10.964" video="mainVideo-mcclim" id="subtitle"]]</div>[[!template text="""And now the kind of pièce de résistance""" start="00:29:10.964" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""of putting those things together.""" start="00:29:14.820" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Let's just run over to our scratch buffer.""" start="00:29:17.555" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Oh, or our ielm thing, right?""" start="00:29:22.226" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""That's what we're actually doing.""" start="00:29:24.246" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So now, I think we're going to do, hang on,""" start="00:29:25.964" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""M-:.""" start="00:29:30.251" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I think it's going to be slime-eval-save,""" start="00:29:32.921" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""because it'll eval asynchronously.""" start="00:29:41.663" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""There's a question of how to get the value out of""" start="00:29:45.849" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""the asynchronous slime evaluation.""" start="00:29:49.171" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And so an obvious way is to yank it.""" start="00:29:52.524" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I'm looking forward to learning from kickingvegas.""" start="00:29:59.661" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""He finally makes it stick in my brain how to...""" start="00:30:02.284" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Options other than just starting to write a command""" start="00:30:07.138" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""in the minibuffer and then mashing Tab""" start="00:30:10.959" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""and looking at what the likely sounding results are.""" start="00:30:14.063" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""That's what I will be learning this conference, if anything.""" start="00:30:16.765" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""slime-eval-save and then, what was happening over here?""" start="00:30:22.070" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""(accepting-values (t :own-window t) (accept 'expression)).""" start="00:30:26.958" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Kind of confusingly, slime-eval-save takes a string,""" start="00:30:33.369" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""but it works really well, I'd argue.""" start="00:30:39.169" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I think it's about to work really well.""" start="00:30:41.940" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Ok, this is great.""" start="00:30:45.825" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So you can see I've used... Oh, please enter an expression.""" start="00:30:46.762" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So we're doing an expression.""" start="00:30:50.882" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And so let's write like (3 4/2 5/6).""" start="00:30:52.167" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""That's an expression, right?""" start="00:30:59.357" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And now I've yanked it.""" start="00:31:03.609" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I should have really been in *scratch*,""" start="00:31:05.847" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""because I just want to dump. Sorry, *scratch*.""" start="00:31:07.429" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Dump whatever that did.""" start="00:31:13.770" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Oh, yeah, and see, it kind of simplified that""" start="00:31:16.540" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""while it was reading it.""" start="00:31:19.530" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""So running in Elisp, (slime-eval-save "(accepting-values""" start="00:31:20.762" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""(t :own-window t), accept 'expression))").""" start="00:31:27.536" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And I got the three returns all the way""" start="00:31:33.157" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""from McCLIM to inferior-lisp to Elisp.""" start="00:31:36.378" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""3, 2, 5/6.""" start="00:31:43.885" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Second return, it was a presentation type of expression,""" start="00:31:46.521" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""returned successfully, key.""" start="00:31:50.625" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Yeah, so that's pretty cool. How out of time are we?""" start="00:31:53.561" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Oh, we did this in basically half an hour.""" start="00:31:58.530" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Maybe we could stop and assume there will be a bit under""" start="00:32:04.009" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""half an hour of interactive discussion.""" start="00:32:07.259" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And when I also watch this and also receive suggestions,""" start="00:32:11.646" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""there will be additions and changes to make, I think.""" start="00:32:16.934" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""But can we quickly defun accept-date?""" start="00:32:21.671" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Let's not take any arguments.""" start="00:32:34.667" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Let's do this.""" start="00:32:40.239" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""accept-date.""" start="00:32:48.409" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Saturday, December 7th.""" start="00:32:55.519" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Oh, it doesn't return it.""" start="00:33:02.649" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""But it gets pretty close to returning it.""" start="00:33:04.215" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I guess it yanks it.""" start="00:33:05.568" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""I would have to call … I'm going to say it's slime-sync,""" start="00:33:07.818" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""at which point it will resolve the slime-eval-async.""" start="00:33:21.160" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""And then I could get the first value out of""" start="00:33:25.670" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""my kill-ring pop, right?""" start="00:33:28.807" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Does kill ring pop what I want?""" start="00:33:33.629" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""You know, you tell me in the interactive feedback,""" start="00:33:36.646" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""which should be happening in LambdaMOO.""" start="00:33:39.968" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Well, I'll record another draft of this later""" start="00:33:43.020" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""after getting some feedback.""" start="00:33:45.609" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Or worse to worse, this is just what you'll hear.""" start="00:33:48.609" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Hopefully we have some questions and constructive comments.""" start="00:33:52.180" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""All right, see everybody later.""" start="00:33:59.303" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Thank you so much for being here.""" start="00:34:00.305" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Please do drop in to my live show""" start="00:34:04.470" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""if you're so inclined on Wednesdays""" start="00:34:08.663" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""where you're not busy with cool Emacs conferences.""" start="00:34:11.316" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""The list be go for climate.""" start="00:34:14.936" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Thank you to everyone who helped.""" start="00:34:16.219" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""Thank you to Sacha""" start="00:34:17.772" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""for really getting me into this conference""" start="00:34:18.690" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""and kind of getting me going and""" start="00:34:21.710" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""submitting this prerecorded talk.""" start="00:34:23.678" video="mainVideo-mcclim" id="subtitle"]]
[[!template text="""See everybody later.""" start="00:34:27.981" video="mainVideo-mcclim" id="subtitle"]]
</div>
Captioner: rodrigo
<div class="transcript transcript-qanda"><a name="mcclim-qanda-transcript"></a><h1>Q&A transcript (unedited)</h1>
<div class="transcript-heading">[[!template new="1" text="""I would love to see the GUI interacting with the scheduling stuff""" start="00:00:00.000" video="qanda-mcclim" id="subtitle"]]</div>[[!template text="""...volume of code I've written that.""" start="00:00:00.000" video="qanda-mcclim" id="subtitle"]]
[[!template text="""I will do a follow-up video with the kind of synchronized""" start="00:00:02.000" video="qanda-mcclim" id="subtitle"]]
[[!template text="""elisp-mode stuff because that is the point of the talk. Sorry""" start="00:00:06.320" video="qanda-mcclim" id="subtitle"]]
[[!template text="""for talking over you. Please continue.""" start="00:00:12.520" video="qanda-mcclim" id="subtitle"]]
[[!template text="""sachac is saying (car kill-ring).""" start="00:00:38.600" video="qanda-mcclim" id="subtitle"]]
[[!template text="""Oh, yeah, so this question, they're just asking in the""" start="00:00:41.880" video="qanda-mcclim" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Q: Or any other GUI stuff you've worked on in the past that you'd be comfortable showing?""" start="00:00:57.560" video="qanda-mcclim" id="subtitle"]]</div>[[!template text="""Scratchpad, is there any other GUI stuff I've worked on in""" start="00:00:57.560" video="qanda-mcclim" id="subtitle"]]
[[!template text="""the past? I guess my Toobnix channel, I was doing a bunch of""" start="00:01:01.320" video="qanda-mcclim" id="subtitle"]]
[[!template text="""that, so just Common Lisp development, homed around""" start="00:01:07.320" video="qanda-mcclim" id="subtitle"]]
[[!template text="""McCLIM. What is my Toobnix channel? If you find a Toobnix""" start="00:01:12.640" video="qanda-mcclim" id="subtitle"]]
[[!template text="""channel and it has a name like Screwtape, that'll""" start="00:01:16.360" video="qanda-mcclim" id="subtitle"]]
[[!template text="""presumably be that. So Toobnix is SDF.org's PeerTube.""" start="00:01:21.520" video="qanda-mcclim" id="subtitle"]]
[[!template text="""Nope, not that one.""" start="00:01:28.680" video="qanda-mcclim" id="subtitle"]]
[[!template text="""Sacha's got it here in the IRC. I think it's""" start="00:01:35.720" video="qanda-mcclim" id="subtitle"]]
[[!template text="""screwtape_channels/videos. Yeah. So the""" start="00:01:41.320" video="qanda-mcclim" id="subtitle"]]
[[!template text="""author of mastodon.el, which hopefully lots of us are using""" start="00:01:47.960" video="qanda-mcclim" id="subtitle"]]
[[!template text="""for our mastodoning, I used the name Screwtape as my""" start="00:01:52.640" video="qanda-mcclim" id="subtitle"]]
[[!template text="""username, and I think Wintermute said some kind of""" start="00:01:58.080" video="qanda-mcclim" id="subtitle"]]
[[!template text="""exasperated Emacs theme. You know what? Screw Lisp. Then""" start="00:02:01.520" video="qanda-mcclim" id="subtitle"]]
[[!template text="""Mousebot of mastodon.el rechristened me screwlisp. So""" start="00:02:06.120" video="qanda-mcclim" id="subtitle"]]
[[!template text="""sometimes you see my name written one way, and sometimes you""" start="00:02:09.720" video="qanda-mcclim" id="subtitle"]]
[[!template text="""see my name written the other way. I quite like it. A lot of""" start="00:02:12.320" video="qanda-mcclim" id="subtitle"]]
[[!template text="""people thought that I was quitting Emacs when I changed my""" start="00:02:15.040" video="qanda-mcclim" id="subtitle"]]
[[!template text="""name to be mainly screwlisp. I love it. That's a great story.""" start="00:02:19.320" video="qanda-mcclim" id="subtitle"]]
[[!template text="""Thank you. It's so great to have a name from somebody else. I""" start="00:02:23.400" video="qanda-mcclim" id="subtitle"]]
[[!template text="""was just thrilled. So thank you, mousebot. Everyone use""" start="00:02:27.320" video="qanda-mcclim" id="subtitle"]]
[[!template text="""mousebot's mode. Welcome to Green Guest. I'm with you""" start="00:02:30.000" video="qanda-mcclim" id="subtitle"]]
[[!template text="""there. All my kids want to choose their own names, and I'm""" start="00:02:35.200" video="qanda-mcclim" id="subtitle"]]
[[!template text="""just like, more power to you. I'm very glad that my parents""" start="00:02:38.400" video="qanda-mcclim" id="subtitle"]]
[[!template text="""picked mine for me, and that's one thing I never had to think""" start="00:02:41.360" video="qanda-mcclim" id="subtitle"]]
[[!template text="""about. All right, so do we have to cut short so I can go back to""" start="00:02:45.480" video="qanda-mcclim" id="subtitle"]]
[[!template text="""watching MPV? of the other stuff. We don't have to, but you""" start="00:02:50.440" video="qanda-mcclim" id="subtitle"]]
[[!template text="""are not obligated to sit here one moment more answering our""" start="00:02:55.840" video="qanda-mcclim" id="subtitle"]]
[[!template text="""questions than, you know, but of course, you know, we've""" start="00:02:59.000" video="qanda-mcclim" id="subtitle"]]
[[!template text="""talked a little before, but I, so I have a pile of questions.""" start="00:03:02.040" video="qanda-mcclim" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Lispy Gopher Show""" start="00:03:07.400" video="qanda-mcclim" id="subtitle"]]</div>[[!template text="""You promised to come on the Lispy Gopher show. That's right.""" start="00:03:07.400" video="qanda-mcclim" id="subtitle"]]
[[!template text="""I have so much to say. I could, I could, I could come right on""" start="00:03:11.160" video="qanda-mcclim" id="subtitle"]]
[[!template text="""your show and just talk to you there, but I'm just curious.""" start="00:03:13.240" video="qanda-mcclim" id="subtitle"]]
[[!template text="""Talk to us a little bit about that. Tell us more about the""" start="00:03:16.040" video="qanda-mcclim" id="subtitle"]]
[[!template text="""program. Oh, the Lispy Gopher climate. What do we do? So it's""" start="00:03:18.560" video="qanda-mcclim" id="subtitle"]]
[[!template text="""hosted by the Superdimensional Fortress, SDF.org, who are""" start="00:03:23.800" video="qanda-mcclim" id="subtitle"]]
[[!template text="""a public access Unix mainly. They do their own little radio""" start="00:03:29.040" video="qanda-mcclim" id="subtitle"]]
[[!template text="""thing as well. And so I guess for a few years now, I do a weekly""" start="00:03:32.920" video="qanda-mcclim" id="subtitle"]]
[[!template text="""show every zero hundred hours UTC. We always start off with""" start="00:03:38.360" video="qanda-mcclim" id="subtitle"]]
[[!template text="""kind of climate crisis topics, because that is a climate""" start="00:03:45.560" video="qanda-mcclim" id="subtitle"]]
[[!template text="""crisis topic. But there's a sort of joy in that, because Kent""" start="00:03:49.120" video="qanda-mcclim" id="subtitle"]]
[[!template text="""Pitman, who Kent Pitman you're familiar with from the""" start="00:03:54.440" video="qanda-mcclim" id="subtitle"]]
[[!template text="""Pit Manual and so forth, writes a kind of climate crisis""" start="00:03:58.280" video="qanda-mcclim" id="subtitle"]]
[[!template text="""haiku, which we kind of lead out with, and we kind of go into""" start="00:04:03.600" video="qanda-mcclim" id="subtitle"]]
[[!template text="""the discussions there. Then obviously the show has- It's a""" start="00:04:07.600" video="qanda-mcclim" id="subtitle"]]
[[!template text="""highlight, not gonna lie. Yeah, yeah, I love it. I try and do""" start="00:04:10.240" video="qanda-mcclim" id="subtitle"]]
[[!template text="""these dramatic readings, but it's often stumble over.""" start="00:04:16.960" video="qanda-mcclim" id="subtitle"]]
[[!template text="""Actually, when Sacha was on, there was an auxiliary poem""" start="00:04:19.480" video="qanda-mcclim" id="subtitle"]]
[[!template text="""that happened, which was pretty interesting, too. What was""" start="00:04:23.720" video="qanda-mcclim" id="subtitle"]]
[[!template text="""I going to say? Then, I mean, the way we got named the Lispy""" start="00:04:27.960" video="qanda-mcclim" id="subtitle"]]
[[!template text="""Gopher Climate was because, broadly speaking, I like to""" start="00:04:31.320" video="qanda-mcclim" id="subtitle"]]
[[!template text="""talk about kind of lisp, and most of my writing for a long time""" start="00:04:33.840" video="qanda-mcclim" id="subtitle"]]
[[!template text="""was on the Gopher. Though I accidentally locked myself out""" start="00:04:37.960" video="qanda-mcclim" id="subtitle"]]
[[!template text="""of the Gopher recently, so there hasn't been an update there""" start="00:04:41.920" video="qanda-mcclim" id="subtitle"]]
[[!template text="""for a while. I'm kind of around the IRCs and Mastodon quite a""" start="00:04:45.680" video="qanda-mcclim" id="subtitle"]]
[[!template text="""bit now. Lisp, I like to use the term Lisp inclusively,""" start="00:04:52.160" video="qanda-mcclim" id="subtitle"]]
[[!template text="""basically. Obviously this talk, I was making the point that""" start="00:04:56.760" video="qanda-mcclim" id="subtitle"]]
[[!template text="""I just could go through a 1978 paper written in, and so pre-D""" start="00:04:59.720" video="qanda-mcclim" id="subtitle"]]
[[!template text="""machine inter-LISP, right? And it basically just worked in""" start="00:05:05.520" video="qanda-mcclim" id="subtitle"]]
[[!template text="""modern Emacs LISP. Somebody was pointing out to me, who""" start="00:05:10.280" video="qanda-mcclim" id="subtitle"]]
[[!template text="""pointed out where I was like, I don't know what PUT is in,""" start="00:05:13.440" video="qanda-mcclim" id="subtitle"]]
[[!template text="""in Emacs Lisp, and somebody was saying definitely there's""" start="00:05:20.120" video="qanda-mcclim" id="subtitle"]]
[[!template text="""put in Emacs Lisp. So I'm going to come back to the recording""" start="00:05:23.040" video="qanda-mcclim" id="subtitle"]]
[[!template text="""of this talk, and I'm going to just pinpoint this moment the""" start="00:05:28.320" video="qanda-mcclim" id="subtitle"]]
[[!template text="""next time somebody says, we need to modernize Lisp. I'm""" start="00:05:31.200" video="qanda-mcclim" id="subtitle"]]
[[!template text="""going to say, no, no, no, this is modern Emacs Lisp. You see,""" start="00:05:34.520" video="qanda-mcclim" id="subtitle"]]
[[!template text="""here's people talking about, yeah, I'm just tripping over,""" start="00:05:37.800" video="qanda-mcclim" id="subtitle"]]
[[!template text="""not tripping over, I'm amused by your phrase there, but""" start="00:05:42.360" video="qanda-mcclim" id="subtitle"]]
[[!template text="""that's exactly how I see it too. And I take your point utterly""" start="00:05:45.520" video="qanda-mcclim" id="subtitle"]]
[[!template text="""that, you know, this tradition of Lisp of carrying forward""" start="00:05:48.600" video="qanda-mcclim" id="subtitle"]]
[[!template text="""ideas. And, you know, we, you know, especially in Emacs, it""" start="00:05:53.360" video="qanda-mcclim" id="subtitle"]]
[[!template text="""really is like a brain trust, right? Buckets of knowledge of""" start="00:05:57.800" video="qanda-mcclim" id="subtitle"]]
[[!template text="""how to get some sort of work done, or, you know, how to work""" start="00:06:00.800" video="qanda-mcclim" id="subtitle"]]
[[!template text="""with some kind of code or some kind of data. Yeah, but I had a""" start="00:06:04.400" video="qanda-mcclim" id="subtitle"]]
[[!template text="""kind of, interesting experience with some great friends of""" start="00:06:08.920" video="qanda-mcclim" id="subtitle"]]
[[!template text="""mine, whom I love dearly. Vidak, if you're watching this,""" start="00:06:12.080" video="qanda-mcclim" id="subtitle"]]
[[!template text="""I'm gossiping about you people over in Australia there.""" start="00:06:15.800" video="qanda-mcclim" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Lisp already did it""" start="00:06:21.560" video="qanda-mcclim" id="subtitle"]]</div>[[!template text="""Where people come to you with really exciting ideas that""" start="00:06:21.560" video="qanda-mcclim" id="subtitle"]]
[[!template text="""seem to be very cutting edge and like, you know, very much the""" start="00:06:25.440" video="qanda-mcclim" id="subtitle"]]
[[!template text="""current talk of the day, like you can hear in other""" start="00:06:30.360" video="qanda-mcclim" id="subtitle"]]
[[!template text="""programming languages, and they're telling you how they""" start="00:06:33.560" video="qanda-mcclim" id="subtitle"]]
[[!template text="""think you might be able to do this in Lisp. And you have to say,""" start="00:06:36.120" video="qanda-mcclim" id="subtitle"]]
[[!template text="""well, you know, if we go back to the late 70s, where the Lisp""" start="00:06:39.640" video="qanda-mcclim" id="subtitle"]]
[[!template text="""community really kind of pioneered this topic already.""" start="00:06:43.720" video="qanda-mcclim" id="subtitle"]]
[[!template text="""Here's how we did it in the late 70s. And there's actually""" start="00:06:47.960" video="qanda-mcclim" id="subtitle"]]
[[!template text="""quite a kind of awkward, just kind of disjunction there. I""" start="00:06:51.400" video="qanda-mcclim" id="subtitle"]]
[[!template text="""mean, that's the thing, right? Where use of Emacs in""" start="00:06:56.440" video="qanda-mcclim" id="subtitle"]]
[[!template text="""particular use of Lisp in general will unravel somebody's""" start="00:06:59.080" video="qanda-mcclim" id="subtitle"]]
[[!template text="""whole big bag of wind that they've built up around why""" start="00:07:03.760" video="qanda-mcclim" id="subtitle"]]
[[!template text="""something has to be rebuilt and well right but that's just a""" start="00:07:06.320" video="qanda-mcclim" id="subtitle"]]
[[!template text="""function you know it's data so we'll probably just think""" start="00:07:10.440" video="qanda-mcclim" id="subtitle"]]
[[!template text="""about that as I don't know sitting in a variable.""" start="00:07:13.360" video="qanda-mcclim" id="subtitle"]]
[[!template text="""Oh, so that whole problem, like the elegance of a solution""" start="00:07:16.680" video="qanda-mcclim" id="subtitle"]]
[[!template text="""can entirely fall away once you fall back to an earlier way of""" start="00:07:21.360" video="qanda-mcclim" id="subtitle"]]
[[!template text="""thinking about it. And then, you know, look at the pieces""" start="00:07:25.960" video="qanda-mcclim" id="subtitle"]]
[[!template text="""you've carried forward the idea of the declarative""" start="00:07:29.480" video="qanda-mcclim" id="subtitle"]]
[[!template text="""language, right? Declaring user experience. Yeah. Once""" start="00:07:32.040" video="qanda-mcclim" id="subtitle"]]
[[!template text="""again, tangentially to, um, to the actual talk we've just""" start="00:07:37.120" video="qanda-mcclim" id="subtitle"]]
[[!template text="""watched, which I will try and follow up on as well. But one""" start="00:07:42.000" video="qanda-mcclim" id="subtitle"]]
[[!template text="""example was After watching me use the Common Lisp loop""" start="00:07:47.480" video="qanda-mcclim" id="subtitle"]]
[[!template text="""facility so much, Kent pointed out to me, hey, you know, why""" start="00:07:51.920" video="qanda-mcclim" id="subtitle"]]
[[!template text="""don't you try using Richard Waters' series iteration""" start="00:07:56.000" video="qanda-mcclim" id="subtitle"]]
[[!template text="""stuff, which was kind of lazy evaluation of series that""" start="00:08:01.720" video="qanda-mcclim" id="subtitle"]]
[[!template text="""Waters did. And so after criticizing Haskell for a long""" start="00:08:05.800" video="qanda-mcclim" id="subtitle"]]
[[!template text="""time, me kind of saying, hey, you know, I don't think this""" start="00:08:09.120" video="qanda-mcclim" id="subtitle"]]
[[!template text="""lazy evaluation is important. then Kent pointed out to me""" start="00:08:12.880" video="qanda-mcclim" id="subtitle"]]
[[!template text="""that, for example, the series, like what is it? AIM 1082 or""" start="00:08:16.520" video="qanda-mcclim" id="subtitle"]]
[[!template text="""something published in 1989 was Lazy Evaluation in LISP""" start="00:08:22.400" video="qanda-mcclim" id="subtitle"]]
[[!template text="""with series. And so I thought, well, once I realized that""" start="00:08:28.800" video="qanda-mcclim" id="subtitle"]]
[[!template text="""this was part of kind of almost classic LISP history to have""" start="00:08:33.640" video="qanda-mcclim" id="subtitle"]]
[[!template text="""lazy evaluation, I adopted series, I kind of had to rethink""" start="00:08:37.880" video="qanda-mcclim" id="subtitle"]]
[[!template text="""my LISP worldview to realize it did already include lazy""" start="00:08:43.680" video="qanda-mcclim" id="subtitle"]]
[[!template text="""evaluation, which I attributed to the late 80s. And then""" start="00:08:47.800" video="qanda-mcclim" id="subtitle"]]
[[!template text="""when I actually read a little bit further, lazy evaluation,""" start="00:08:51.680" video="qanda-mcclim" id="subtitle"]]
[[!template text="""depending on your research group, has been, was kind of""" start="00:08:55.240" video="qanda-mcclim" id="subtitle"]]
[[!template text="""established in the late 70s by Waters again, actually.""" start="00:08:59.160" video="qanda-mcclim" id="subtitle"]]
[[!template text="""Sorry for the anecdote, just kind of the interesting""" start="00:09:02.720" video="qanda-mcclim" id="subtitle"]]
[[!template text="""medley. Not at all.""" start="00:09:05.720" video="qanda-mcclim" id="subtitle"]]
[[!template text="""Yeah.""" start="00:09:11.160" video="qanda-mcclim" id="subtitle"]]
[[!template text="""Ellis over in the IRC has come up with a good slime about""" start="00:09:17.920" video="qanda-mcclim" id="subtitle"]]
[[!template text="""async. Oh, I see. So yeah,""" start="00:09:25.640" video="qanda-mcclim" id="subtitle"]]
[[!template text="""I guess that would work. I have to try that. OK, so you're just""" start="00:09:33.340" video="qanda-mcclim" id="subtitle"]]
[[!template text="""getting me reading this. They have had a stab at resolving""" start="00:09:38.200" video="qanda-mcclim" id="subtitle"]]
[[!template text="""our asynchronous calls thing more elegantly than me. Left""" start="00:09:42.680" video="qanda-mcclim" id="subtitle"]]
[[!template text="""as an exercise to the listener. It's one of the big virtues of""" start="00:09:49.280" video="qanda-mcclim" id="subtitle"]]
[[!template text="""something like a convention. It'll bring us together with""" start="00:09:53.880" video="qanda-mcclim" id="subtitle"]]
[[!template text="""other people that can kind of see past the boats in our eyes.""" start="00:09:56.800" video="qanda-mcclim" id="subtitle"]]
[[!template text="""Oh yeah, that's easy for me. Yeah, definitely. Hearing""" start="00:10:01.080" video="qanda-mcclim" id="subtitle"]]
[[!template text="""somebody else's kind of thought process from you and from""" start="00:10:06.240" video="qanda-mcclim" id="subtitle"]]
[[!template text="""just the past speaker who was Robin, I think, because this""" start="00:10:10.280" video="qanda-mcclim" id="subtitle"]]
[[!template text="""was in the morning for me, so I just kind of got up and caught""" start="00:10:16.640" video="qanda-mcclim" id="subtitle"]]
[[!template text="""some of Robin. Yeah, it's so great, kind of vicariously""" start="00:10:19.520" video="qanda-mcclim" id="subtitle"]]
[[!template text="""experiencing somebody else's Emacs usage and how it kind of""" start="00:10:25.920" video="qanda-mcclim" id="subtitle"]]
[[!template text="""subtly backs onto their own development flows. Yeah, so I""" start="00:10:30.560" video="qanda-mcclim" id="subtitle"]]
[[!template text="""really appreciate this talk. I'm constantly cribbing from""" start="00:10:34.800" video="qanda-mcclim" id="subtitle"]]
[[!template text="""everyone I meet. And yeah, this talk has been eye-popping,""" start="00:10:37.320" video="qanda-mcclim" id="subtitle"]]
[[!template text="""just watching you casually navigate Emacs, actually.""" start="00:10:40.520" video="qanda-mcclim" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""IELM""" start="00:10:43.600" video="qanda-mcclim" id="subtitle"]]</div>[[!template text="""Yeah, it's cool. Yeah, I enjoyed discovering IELM mode.""" start="00:10:43.600" video="qanda-mcclim" id="subtitle"]]
[[!template text="""That was going to be my other question for people. Are there""" start="00:10:51.520" video="qanda-mcclim" id="subtitle"]]
[[!template text="""any IELM Power users around? I could really go for an""" start="00:10:54.960" video="qanda-mcclim" id="subtitle"]]
[[!template text="""EmacsConf talk on IELM mode. Aha, yes. Very good. Note""" start="00:10:59.440" video="qanda-mcclim" id="subtitle"]]
[[!template text="""taken. Yeah. So, just thoughts for next year? Oh, well, I""" start="00:11:05.680" video="qanda-mcclim" id="subtitle"]]
[[!template text="""kind of want to get back onto the MPV, but thank you so much for""" start="00:11:12.200" video="qanda-mcclim" id="subtitle"]]
[[!template text="""this. You are cmak in the IRC, right? I am Corwin, same as you.""" start="00:11:16.000" video="qanda-mcclim" id="subtitle"]]
[[!template text="""So you're Corwin. There's also cmak, and I guess there are a""" start="00:11:22.040" video="qanda-mcclim" id="subtitle"]]
[[!template text="""few other people. Sorry that I'm tripping over the""" start="00:11:26.160" video="qanda-mcclim" id="subtitle"]]
[[!template text="""different people here. But you're going to come on the Lispy""" start="00:11:28.720" video="qanda-mcclim" id="subtitle"]]
[[!template text="""Gopher Climate later. Sure, I'm happy to. That sounds""" start="00:11:31.360" video="qanda-mcclim" id="subtitle"]]
[[!template text="""like fun. I always got a million things to talk about me or an""" start="00:11:35.720" video="qanda-mcclim" id="subtitle"]]
[[!template text="""opinion on everything. But of course, my favorite thing to""" start="00:11:38.480" video="qanda-mcclim" id="subtitle"]]
[[!template text="""talk about is just the huge thanks that, you know, sharing""" start="00:11:42.400" video="qanda-mcclim" id="subtitle"]]
[[!template text="""that, the generosity or the, you know, my appreciation for""" start="00:11:48.360" video="qanda-mcclim" id="subtitle"]]
[[!template text="""you and all the other members of the Emacs community that""" start="00:11:53.640" video="qanda-mcclim" id="subtitle"]]
[[!template text="""create talks like this and make the conference and the rest""" start="00:11:57.160" video="qanda-mcclim" id="subtitle"]]
[[!template text="""of the community so rich. Well, yeah, and thank you for your""" start="00:12:00.520" video="qanda-mcclim" id="subtitle"]]
[[!template text="""work. Sacha is just saying over in Lambda that when I say I""" start="00:12:04.840" video="qanda-mcclim" id="subtitle"]]
[[!template text="""want someone to give the talk, this means I'm volunteering""" start="00:12:09.760" video="qanda-mcclim" id="subtitle"]]
[[!template text="""to give the IELM talk. That's what I wrote down. Oh, yeah. I've""" start="00:12:13.040" video="qanda-mcclim" id="subtitle"]]
[[!template text="""been working for Sacha. I mean, helping Sacha with this""" start="00:12:17.080" video="qanda-mcclim" id="subtitle"]]
[[!template text="""conference for years. I know. No, I'm kidding. That would be""" start="00:12:19.480" video="qanda-mcclim" id="subtitle"]]
[[!template text="""cool. I will absolutely go to your ielm talk. I make a lot of use""" start="00:12:23.920" video="qanda-mcclim" id="subtitle"]]
[[!template text="""of that and could do more. Yeah, we're meant to suddenly""" start="00:12:28.560" video="qanda-mcclim" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Q: Are we going to get a McCLIM LambdaMOO client?""" start="00:12:32.880" video="qanda-mcclim" id="subtitle"]]</div>[[!template text="""stop. But a guest over in Lambda also said, are we going to get""" start="00:12:32.880" video="qanda-mcclim" id="subtitle"]]
[[!template text="""a McCLIM LambdaMOO client? And I actually had all my kind of""" start="00:12:36.640" video="qanda-mcclim" id="subtitle"]]
[[!template text="""Moo stuff I'd written in Common Lisp, which I was thinking of""" start="00:12:41.240" video="qanda-mcclim" id="subtitle"]]
[[!template text="""just kind of jettisoning. But you're right, I should make""" start="00:12:44.520" video="qanda-mcclim" id="subtitle"]]
[[!template text="""that into a client for Common Lisp. Anyway, I'm going to hang""" start="00:12:47.640" video="qanda-mcclim" id="subtitle"]]
[[!template text="""up so I can keep watching the conference sounds good so we'll""" start="00:12:51.480" video="qanda-mcclim" id="subtitle"]]
[[!template text="""just cut away with the stream throw some music and a""" start="00:12:55.840" video="qanda-mcclim" id="subtitle"]]
[[!template text="""countdown uh back on give us just a second to make that on bbb""" start="00:12:58.400" video="qanda-mcclim" id="subtitle"]]
[[!template text="""and then i'll give you the big thumbs up thank you thank you""" start="00:13:02.800" video="qanda-mcclim" id="subtitle"]]
[[!template text="""recording here we'll get it all posted up uh right next to""" start="00:13:05.360" video="qanda-mcclim" id="subtitle"]]
[[!template text="""your awesome pre-recorded talk""" start="00:13:08.360" video="qanda-mcclim" id="subtitle"]]
[[!template text="""thanks again like it's been fun chatting and uh Yeah,""" start="00:13:09.840" video="qanda-mcclim" id="subtitle"]]
[[!template text="""definitely seeing you around in the conference channel off""" start="00:13:17.160" video="qanda-mcclim" id="subtitle"]]
[[!template text="""off season. So to speak, you're like, you're totally""" start="00:13:20.800" video="qanda-mcclim" id="subtitle"]]
[[!template text="""welcome to use our chat like it to the extent you need to IRC""" start="00:13:23.880" video="qanda-mcclim" id="subtitle"]]
[[!template text="""channel that's been working on great for me. It's fun to fun""" start="00:13:26.680" video="qanda-mcclim" id="subtitle"]]
[[!template text="""to see it.""" start="00:13:29.040" video="qanda-mcclim" id="subtitle"]]
[[!template text="""All right, I'm gonna hang up this thing. All right. Happy day""" start="00:13:30.640" video="qanda-mcclim" id="subtitle"]]
[[!template text="""flowy. Sorry, I mean, screwlisp. Oh my gosh, I have""" start="00:13:39.320" video="qanda-mcclim" id="subtitle"]]
[[!template text="""conference brain. Bye bye. All right, later, later.""" start="00:13:44.120" video="qanda-mcclim" id="subtitle"]]
</div>Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202023%20mcclim%3A%20Elisp%20and%20McCLIM)
<!-- End of emacsconf-publish-after-page -->
|