summaryrefslogtreecommitdiffstats
path: root/2025/info/schemacs-after.md
blob: 65fe55f160584b8c0d262ead5702d46a0780cf94 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
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
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
<!-- Automatically generated by emacsconf-publish-after-page -->


<div class="transcript transcript-mainVideo"><a name="schemacs-mainVideo-transcript"></a><h1>Transcript</h1>

[[!template text="""Hi, EmacsConf 2025. My name is Ramin Honary,""" start="00:00:01.060" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""and I'd like to talk to you today""" start="00:00:05.640" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""about my project called Schemacs""" start="00:00:07.560" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""which I presented last year.""" start="00:00:10.400" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""Back then it was called &quot;Gypsum&quot;""" start="00:00:12.080" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""and the name has since changed.""" start="00:00:13.880" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""So my name is Ramin Honary.""" start="00:00:18.320" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""I'm an Emacs enthusiast, have been since 2017 or so.""" start="00:00:20.240" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""I'm a full stack software developer.""" start="00:00:25.000" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""I love Haskell, Scheme,""" start="00:00:27.760" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""anything functional programming related,""" start="00:00:29.301" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""and of course Emacs.""" start="00:00:31.434" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""I started learning Scheme about three years ago,""" start="00:00:32.960" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""and this is my third time presenting""" start="00:00:36.200" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""at EmacsConf.""" start="00:00:38.000" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""So the Schemacs project that I'm talking to,""" start="00:00:40.800" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""I'm talking about to you today,""" start="00:00:46.480" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""was originally called &quot;Gypsum&quot;.""" start="00:00:48.160" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""The reason I did not call it &quot;Schemacs&quot;""" start="00:00:50.280" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""was that the name &quot;Schemacs&quot; was taken on GitHub.""" start="00:00:53.360" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""But in the past year,""" start="00:00:58.120" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""I was able to get the permission""" start="00:00:59.568" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""of the author of GitHub's Schemacs""" start="00:01:02.120" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""project to name my project the same thing,""" start="00:01:04.480" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""even though it's a very similar project.""" start="00:01:08.841" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""So I changed the name.""" start="00:01:11.321" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""Let me see if I can quickly show the screen.""" start="00:01:14.720" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""So yeah, I have archived the old project.""" start="00:01:19.701" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""It's still there, but there's an explanation in""" start="00:01:24.960" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""the readme file and a screen grab""" start="00:01:27.720" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""of the conversation I had""" start="00:01:30.168" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""with the original author of GitHub Schemacs.""" start="00:01:31.600" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""My Schemacs is not on GitHub at all.""" start="00:01:36.120" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""It's only on Codeberg. So please don't get confused.""" start="00:01:38.680" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""But yes, I received permission""" start="00:01:43.880" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""to change the name and so I did.""" start="00:01:46.000" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""And I would like to give a quick shout-out to""" start="00:01:50.200" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""user &quot;Tusharhero&quot; for helping me with that.""" start="00:01:52.840" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""This person really helped make that name change happen.""" start="00:01:57.240" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""So back to the slides.""" start="00:02:02.640" video="mainVideo-schemacs" id="subtitle"]]

<div class="transcript-heading">[[!template new="1" text="""The scope of the project""" start="00:02:07.200" video="mainVideo-schemacs" id="subtitle"]]</div>[[!template text="""And so now I'd like to clarify the scope of the project.""" start="00:02:07.200" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""I don't think I quite made it clear""" start="00:02:11.320" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""well enough last year,""" start="00:02:13.001" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""but... Although I'm definitely cloning""" start="00:02:14.920" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""the Emacs Lisp programming language,""" start="00:02:18.401" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""the actual scope of the Schemacs project""" start="00:02:20.168" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""is to make an Emacs-like app platform for Scheme.""" start="00:02:25.268" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""I don't consider Emacs to be a text editor.""" start="00:02:29.760" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""I consider Emacs to be a Lisp app platform.""" start="00:02:32.960" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""So it's similar to something like the""" start="00:02:38.200" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""World Wide Web, or Microsoft's .NET app platform, or Java.""" start="00:02:39.840" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""These are all examples of app platforms.""" start="00:02:48.540" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""I would like Schemacs to make it easy""" start="00:02:52.560" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""for not only people to use it for""" start="00:02:55.120" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""things like editing text or, you know, for""" start="00:02:59.400" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""using your computer through a command line""" start="00:03:03.480" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""or manipulating your Git repository.""" start="00:03:06.440" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""I'd also like you to be able to create simple""" start="00:03:10.600" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""GUIs or TUIs using Scheme.""" start="00:03:13.160" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""So that's also one of the goals of this project.""" start="00:03:16.120" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""It will of course have an Emacs-like text editor,""" start="00:03:19.320" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""and I will clone Emacs Lisp.""" start="00:03:23.080" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""So hopefully GNU Emacs users""" start="00:03:25.000" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""will feel comfortable moving over to Schemacs""" start="00:03:29.880" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""because they'll be able to use your init.""" start="00:03:32.780" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""You'll be able to use your init.el file.""" start="00:03:35.680" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""So configuring and scripting Schemacs""" start="00:03:40.400" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""should be done in Scheme.""" start="00:03:43.240" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""I'd like to encourage scripting in Scheme""" start="00:03:44.480" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""and creating new workflows and macros in Scheme.""" start="00:03:47.680" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""It will support Emacs Lisp depending on""" start="00:03:51.200" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""how much of the Emacs Lisp interpreter I can clone.""" start="00:03:54.268" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""That will be supported but not encouraged.""" start="00:03:59.320" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""But you should still be able to run your init.el.""" start="00:04:03.040" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""And I would like it to be good enough,""" start="00:04:06.320" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""this Emacs Lisp interpreter""" start="00:04:08.840" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""should be good enough to run packages from ELPA.""" start="00:04:10.000" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""Although it will probably be some time""" start="00:04:13.000" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""before it will be able to run""" start="00:04:15.880" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""something as large as Org Mode or Magit.""" start="00:04:17.560" video="mainVideo-schemacs" id="subtitle"]]

<div class="transcript-heading">[[!template new="1" text="""Difference with Robin Templeton's project (Guile-Emacs)""" start="00:04:24.760" video="mainVideo-schemacs" id="subtitle"]]</div>[[!template text="""It is slightly different from the Guile-Emacs project.""" start="00:04:24.760" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""This is the work of Robin Templeton""" start="00:04:27.440" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""who presented last year.""" start="00:04:30.334" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""Guile-Emacs links the Guile runtime""" start="00:04:32.220" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""into the Emacs executable.""" start="00:04:36.034" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""It's not a Scheme application. Emacs,""" start="00:04:38.501" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""the core of Emacs is written in C.""" start="00:04:41.581" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""Guile, the core of Guile is written in C.""" start="00:04:44.201" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""What Robin Templeton has done is, at the C level, linked""" start="00:04:48.121" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""&quot;libguile.so&quot; into Emacs and then provided""" start="00:04:53.701" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""a programming layer where you can""" start="00:04:56.834" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""call the Scheme interpreter from Emacs Lisp""" start="00:04:59.501" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""so that you can run Scheme programs from within Emacs""" start="00:05:04.760" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""without having to launch a separate process""" start="00:05:11.280" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""and communicate over a channel such as a socket.""" start="00:05:13.920" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""You won't need &quot;SLIME&quot; or anything.""" start="00:05:18.040" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""The Guile interpreter is just right there inside of Emacs.""" start="00:05:19.840" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""But my project is not like this at all.""" start="00:05:23.420" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""Schemacs is written completely from the ground up""" start="00:05:26.000" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""in R7RS-compliant Scheme. And because it's R7RS-compliant,""" start="00:05:28.880" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""it's not bound to any one particular Scheme implementation,""" start="00:05:35.000" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""although Guile is the reference implementation.""" start="00:05:38.000" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""One goal of this project is to be able to run""" start="00:05:39.880" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""Schemacs on any R7RS-compliant Scheme implementation.""" start="00:05:42.360" video="mainVideo-schemacs" id="subtitle"]]

<div class="transcript-heading">[[!template new="1" text="""Progress made since last year""" start="00:05:49.720" video="mainVideo-schemacs" id="subtitle"]]</div>[[!template text="""The work that I've done this past year mostly is internal.""" start="00:05:49.720" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""There's not much that you can see on the surface.""" start="00:05:56.260" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""But the most... One of the most important things that I""" start="00:06:00.940" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""did was I rewrote the parser in R7RS Scheme,""" start="00:06:04.520" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""so it no longer depends on""" start="00:06:06.840" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""the Guile regular expressions library.""" start="00:06:07.920" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""The parser now also provides source locations,""" start="00:06:12.000" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""so if an error occurs in Emacs Lisp,""" start="00:06:14.960" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""there will be a stack trace""" start="00:06:18.940" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""and it will show you where in the source code""" start="00:06:20.568" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""the error occured. This was not possible last year.""" start="00:06:23.634" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""And because it no longer depends on Guile,""" start="00:06:28.320" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""I can make it work on multiple Scheme implementations.""" start="00:06:30.861" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""So far, I've been able to get it to run on""" start="00:06:34.521" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""the Chibi Scheme interpreter""" start="00:06:36.821" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""and the Gauche Scheme interpreter, as well as""" start="00:06:38.921" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""Guile, which is the reference implementation.""" start="00:06:41.281" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""For a short time, it did work also on Chez Scheme,""" start="00:06:44.280" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""the Chez Scheme compiler, using Gwen Weinholt's &quot;Akku,&quot;""" start="00:06:48.560" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""which is a program that translates R7RS Scheme to R6RS Scheme.""" start="00:06:53.180" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""And with that translation, because Chez Scheme""" start="00:06:59.300" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""is pretty strictly an R6RS compiler,""" start="00:07:04.520" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""the translation allows you to run R7RS programs.""" start="00:07:07.320" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""But due to some change, I'm not sure where,""" start="00:07:11.520" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""it may have been changed in the Schemacs source code,""" start="00:07:15.220" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""or it may have been a change to Akku,""" start="00:07:17.120" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""but it no longer builds on Chez.""" start="00:07:19.640" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""It did at one point. I'd like to try to fix that.""" start="00:07:21.240" video="mainVideo-schemacs" id="subtitle"]]

<div class="transcript-heading">[[!template new="1" text="""Portable React-like GUI""" start="00:07:28.040" video="mainVideo-schemacs" id="subtitle"]]</div>[[!template text="""The second most important thing that I've worked on is a""" start="00:07:28.040" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""portable React-like GUI. And so React,""" start="00:07:30.720" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""for anyone who has done web programming,""" start="00:07:36.440" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""is a very popular framework for programming web applications.""" start="00:07:41.000" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""And I've provided something""" start="00:07:46.840" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""very similar to that in Scheme now.""" start="00:07:48.234" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""So it works. I have constructed a DOM data structure""" start="00:07:49.600" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""in Scheme. It's just an ordinary Scheme data structure.""" start="00:07:54.680" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""It works like the web's &quot;Document Object Model&quot;""" start="00:07:59.080" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""or the &quot;DOM&quot; data structure.""" start="00:08:01.520" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""And then this Scheme DOM data structure can be rendered""" start="00:08:03.961" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""using any GUI framework that is convenient""" start="00:08:10.000" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""for the Scheme implementation that you're targeting.""" start="00:08:13.060" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""And you should be able to implement""" start="00:08:16.240" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""also rendering to a CLI as well.""" start="00:08:18.880" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""The current reference implementation""" start="00:08:22.920" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""is using a framework called Guile-GI.""" start="00:08:24.601" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""This is the &quot;GObject Introspection&quot; framework.""" start="00:08:27.760" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""It's a very simple""" start="00:08:30.640" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""GObject Introspection framework for Guile,""" start="00:08:31.968" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""and it binds to GTK3 on Linux.""" start="00:08:36.120" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""There's a similar framework called G-Golf""" start="00:08:40.980" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""which I'd like to begin using as well, also for Guile.""" start="00:08:42.920" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""G-Golf seems to be a bit more well-maintained, a bit...""" start="00:08:48.360" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""It has better features. G-Golf may be a""" start="00:08:53.740" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""better rendering backend for the reference""" start="00:08:57.800" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""implementation, but I would like to provide both.""" start="00:09:00.040" video="mainVideo-schemacs" id="subtitle"]]

<div class="transcript-heading">[[!template new="1" text="""Demo""" start="00:09:06.040" video="mainVideo-schemacs" id="subtitle"]]</div>[[!template text="""I will give a demo of this now.""" start="00:09:06.040" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""Unfortunately not a whole lot""" start="00:09:07.934" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""to see compared to last year.""" start="00:09:13.000" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""First thing I'd like to show is""" start="00:09:18.140" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""that I now have a Makefile. You can look inside""" start="00:09:20.640" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""this Makefile and if you're able to read a Makefile,""" start="00:09:24.280" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""you can see that I have several targets now available.""" start="00:09:28.401" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""You can build Schemacs for Guile,""" start="00:09:31.968" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""you can build Schemacs for Gambit,""" start="00:09:35.001" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""or Stklos, or Chicken, or Chez,""" start="00:09:36.668" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""although none of these (except for Guile)""" start="00:09:40.334" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""currently works. These targets will actually""" start="00:09:42.901" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""build the source code, but then you would have to""" start="00:09:51.168" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""load it into the REPL separately.""" start="00:09:56.001" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""There are targets for launching""" start="00:09:59.434" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""a Gauche REPL and a Chibi REPL.""" start="00:10:02.468" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""You can also run the Emacs Lisp tests""" start="00:10:06.468" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""in Gauche and Chibi.""" start="00:10:10.868" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""You can also start a Guile REPL through this Makefile.""" start="00:10:13.068" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""So I will do that right now in the shell.""" start="00:10:19.080" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""(...make the text larger...there we go...)""" start="00:10:27.500" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""OK, so we have this directory of the source code.""" start="00:10:31.834" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""Let's just begin by running &quot;guile.sh&quot;.""" start="00:10:38.480" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""This will launch a REPL and you can load &quot;main-guile&quot;.""" start="00:10:44.560" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""This will launch the GUI. This is the basic""" start="00:10:52.601" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""proof of concept GUI that uses Guile-GI.""" start="00:10:59.720" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""So it may be hard to see.""" start="00:11:04.801" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""I cannot change the size of the text yet.""" start="00:11:10.520" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""I've implemented the M-: feature""" start="00:11:14.560" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""where you can eval in a minibuffer some Scheme code.""" start="00:11:17.334" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""(string-append &quot;hello&quot; ...)""" start="00:11:24.068" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""It outputs the result in the buffer.""" start="00:11:34.440" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""This is basically the &quot;\*Messages\*&quot; buffer.""" start="00:11:38.280" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""And that's all the more that I have.""" start="00:11:40.960" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""This is the same state it was in last year.""" start="00:11:42.620" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""It hasn't changed a whole lot since back then.""" start="00:11:45.480" video="mainVideo-schemacs" id="subtitle"]]

<div class="transcript-heading">[[!template new="1" text="""Additional changes""" start="00:11:48.700" video="mainVideo-schemacs" id="subtitle"]]</div>[[!template text="""But I have made additional changes.""" start="00:11:48.700" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""So first of all, you can run""" start="00:11:52.820" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""(let me just go back into the Guile)... you can""" start="00:12:05.380" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""run the Emacs Lisp interpreter tests, so &quot;elisp-tests&quot;.""" start="00:12:10.201" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""As you can see, it gives you a stack trace.""" start="00:12:16.620" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""So this is an error that I've been able to reproduce.""" start="00:12:18.920" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""I know exactly what the cause of this error is.""" start="00:12:22.040" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""It is not finding a variable""" start="00:12:24.600" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""because the closure is not correctly""" start="00:12:27.600" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""capturing its environment. So there should be a variable""" start="00:12:30.320" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""in the closure, but that variable has not been captured""" start="00:12:35.200" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""and so it is causing an error.""" start="00:12:38.720" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""It is currently loading &quot;byte-run.el&quot;.""" start="00:12:43.460" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""Let me show you what code that is here.""" start="00:12:48.081" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""So I've copied into the source repository""" start="00:12:49.821" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""for Schemacs some of the Elisp code from GNU Emacs.""" start="00:12:53.501" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""So I have this &quot;subr.el&quot;.""" start="00:12:58.761" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""This declares most of the core of Emacs Lisp""" start="00:13:04.421" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""that's not written in C.""" start="00:13:09.861" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""There's also &quot;byte-run.el&quot;. Schemacs Emacs Lisp can now""" start="00:13:12.861" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""evaluate this. This is where functions like &quot;defun&quot; are""" start="00:13:19.000" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""defined, and &quot;defmacro&quot;. So as you can see,""" start="00:13:24.380" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""defun itself is a defmacro defined right here.""" start="00:13:28.360" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""It's written in Emacs Lisp itself,""" start="00:13:30.800" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""defined in terms of defalias.""" start="00:13:34.860" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""So I can evaluate &quot;byte-run&quot;,""" start="00:13:37.720" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""I can evaluate &quot;macroexp&quot;,""" start="00:13:40.240" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""and the failure occurs somewhere in &quot;subr.el&quot;.""" start="00:13:42.740" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""Although if you look at the stack trace,""" start="00:13:46.020" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""it doesn't provide all the necessary information.""" start="00:13:48.960" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""So it appears to be happening in byte-run.el.""" start="00:13:51.160" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""Really, it's an error that's occurring inside of a macro,""" start="00:13:56.440" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""and the macro call site is somewhere in subr.el.""" start="00:14:00.620" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""Anyway, take note of this stack trace.""" start="00:14:05.800" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""This was run from within Guile.""" start="00:14:08.640" video="mainVideo-schemacs" id="subtitle"]]

<div class="transcript-heading">[[!template new="1" text="""Other Scheme implementations""" start="00:14:12.020" video="mainVideo-schemacs" id="subtitle"]]</div>[[!template text="""Now what I've done this past year""" start="00:14:12.020" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""is make it work on other Scheme implementations.""" start="00:14:14.200" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""Use &quot;make&quot; to launch a Gauche REPL.""" start="00:14:19.480" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""Now I'm inside of Gauche.""" start="00:14:23.834" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""This is the command that""" start="00:14:26.000" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""you would use to launch a Gauche REPL.""" start="00:14:27.234" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""And I can load the same program (load &quot;elisp-tests.scm&quot;).""" start="00:14:30.080" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""You get the exact same result as Guile.""" start="00:14:38.200" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""So we have two different Scheme implementations""" start="00:14:42.760" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""producing the same result.""" start="00:14:45.800" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""Let's try &quot;make&quot; a Chibi REPL. This is Chibi Scheme.""" start="00:14:46.800" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""And you can (load &quot;elisp-tests.scm&quot;).""" start="00:14:53.080" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""Chibi is a bit slower, but you get the exact same result.""" start="00:15:00.220" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""So we have three different Scheme implementations""" start="00:15:04.081" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""all running Emacs Lisp,""" start="00:15:07.401" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""and all producing the same result.""" start="00:15:11.540" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""I think that's...""" start="00:15:14.040" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""I'm fairly proud of that accomplishment.""" start="00:15:14.768" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""I was able to get the code written to the point""" start="00:15:17.100" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""where it actually runs on multiple implementations.""" start="00:15:21.201" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""You can also try making it for other Scheme compilers""" start="00:15:24.880" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""like &quot;schemacs-mitscheme&quot; for example,""" start="00:15:30.600" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""but this will fail.""" start="00:15:35.960" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""You can try building it for &quot;schemacs-chez&quot;,""" start="00:15:40.020" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""Let's try Chez... there we go.""" start="00:15:46.680" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""And it will use Akku,""" start="00:15:51.801" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""and it will fetch the necessary dependencies.""" start="00:15:54.234" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""But it fails, and I haven't been able to""" start="00:15:58.001" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""debug that quite yet.""" start="00:16:03.434" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""Stklos fails for a similar reason.""" start="00:16:05.960" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""Gambit... Chicken still doesn't build all the way yet.""" start="00:16:13.140" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""The Makefile at least has places for it.""" start="00:16:21.700" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""If anyone can help me out and get Schemacs to compile""" start="00:16:27.121" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""on these other Scheme implementations,""" start="00:16:30.968" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""I'd appreciate it.""" start="00:16:32.734" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""I can probably figure it out myself,""" start="00:16:34.001" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""but that will take more time.""" start="00:16:35.468" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""And let me just show you quickly""" start="00:16:37.001" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""the test program.""" start="00:16:40.121" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""Basically this is the Emacs Lisp test program""" start="00:16:41.721" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""that I was just running, and it produces an error.""" start="00:16:44.501" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""All it does is it loads these files here in this order,""" start="00:16:48.581" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""and it fails right around here.""" start="00:16:53.221" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""So it's able to load these two.""" start="00:16:55.181" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""And yeah, that's what I've accomplished""" start="00:16:58.320" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""on the Emacs Lisp side of things.""" start="00:17:01.361" video="mainVideo-schemacs" id="subtitle"]]

<div class="transcript-heading">[[!template new="1" text="""GUI framework""" start="00:17:06.200" video="mainVideo-schemacs" id="subtitle"]]</div>[[!template text="""The next thing I want to show you is the GUI framework""" start="00:17:06.200" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""that I've written, which I'm fairly proud of so far.""" start="00:17:09.120" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""So this is the GUI framework""" start="00:17:13.200" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""(oops, I better launch it again, OK...)""" start="00:17:15.834" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""and let me show you the tests.""" start="00:17:19.920" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""So here in the tests, you can start to see""" start="00:17:22.601" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""some examples of how you use it.""" start="00:17:25.701" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""So here is a &quot;counter&quot; test, and this is kind of like""" start="00:17:29.068" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""the &quot;hello world&quot; of reactive programming frameworks,""" start="00:17:31.834" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""where you have a state variable,""" start="00:17:35.941" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""sometimes called an &quot;observable.&quot;""" start="00:17:38.200" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""I'm calling it &quot;number&quot;,""" start="00:17:41.660" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""and it uses &quot;=&quot; to check if the state has updated.""" start="00:17:43.440" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""If an update occurs and the new value is different""" start="00:17:49.000" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""from the old value according to the &quot;=&quot; function,""" start="00:17:52.821" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""then trigger a state update in the GUI as well.""" start="00:17:55.033" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""Initialize to 0, bound to &quot;number&quot;.""" start="00:17:59.233" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""I have a &quot;button&quot; function which creates a simple button.""" start="00:18:03.100" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""It takes a label and an action.""" start="00:18:06.133" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""Right here you see the &quot;div&quot; command.""" start="00:18:07.833" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""This is what creates a &quot;div&quot;.""" start="00:18:10.866" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""Using the properties, I describe that this div is a""" start="00:18:13.040" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""push-button and the &quot;on-button-push&quot; is an action.""" start="00:18:19.000" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""The action is to update the variable &quot;number&quot;""" start="00:18:22.600" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""using whatever function or lambda was provided to it.""" start="00:18:25.266" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""And then the content that you see on screen,""" start="00:18:30.400" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""that you will see on screen when it runs,""" start="00:18:31.966" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""is here. You create a &quot;div-pack cut-vertical&quot;.""" start="00:18:34.034" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""You declare two buttons and then you declare""" start="00:18:38.668" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""this &quot;use-vars&quot; which will take the content""" start="00:18:43.234" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""of this variable here, this observable,""" start="00:18:46.801" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""and place it into the GUI next to the buttons here.""" start="00:18:48.834" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""So what you will see on screen is""" start="00:18:51.734" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""a &quot;plus&quot; button which increments,""" start="00:18:54.234" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""here is the &quot;increment&quot; function,""" start="00:18:57.068" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""a &quot;minus&quot; button which decrements,""" start="00:18:59.321" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""and then the content of the variable that is""" start="00:19:02.780" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""being incremented and decremented.""" start="00:19:05.480" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""The advantage of these reactive frameworks is that""" start="00:19:09.700" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""with very few lines of code""" start="00:19:11.866" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""you can create fairly complex interfaces.""" start="00:19:13.066" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""The less code you have to write,""" start="00:19:16.033" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""the fewer chances you have to make mistakes.""" start="00:19:18.600" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""So let's just run this program.""" start="00:19:21.233" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""This was the &quot;counter-test.&quot;""" start="00:19:23.968" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""And that is the debug window. Here's the &quot;counter.&quot;""" start="00:19:33.293" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""I'm sorry it's not much larger than this.""" start="00:19:35.200" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""But here's the &quot;plus&quot; button, the &quot;minus&quot; button,""" start="00:19:38.453" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""and here's the &quot;number&quot;, 0.""" start="00:19:41.133" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""And I can increment or decrement as much as I like.""" start="00:19:43.920" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""So yeah, that's kind of the hello world""" start="00:19:49.793" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""of reactive programming. (I'll reboot the REPL...)""" start="00:19:51.101" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""The next thing I want to show you is this layout test.""" start="00:19:55.240" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""And I'll just run the test first.""" start="00:19:58.600" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""So here we have basically""" start="00:20:02.193" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""a tiling window manager kind of thing,""" start="00:20:05.020" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""where you can resize the tiles""" start="00:20:08.540" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""and then by clicking on these buttons here,""" start="00:20:11.280" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""you can change the layout.""" start="00:20:12.934" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""So you can do two on the right,""" start="00:20:16.940" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""two up above, or three up above. So, yeah.""" start="00:20:20.168" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""Those tiling windows, as you can see,""" start="00:20:27.101" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""once I work this branch into the main branch of Schemacs,""" start="00:20:30.268" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""I can use that to implement""" start="00:20:33.001" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""the split window functionality for Schemacs,""" start="00:20:35.274" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""the editor. So here's what this split...""" start="00:20:38.266" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""Here's the layout test that you just saw.""" start="00:20:42.466" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""Let me make it a bit smaller""" start="00:20:44.866" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""so that it all fits on one screen.""" start="00:20:46.733" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""So basically we have the &quot;button&quot; command again,""" start="00:20:48.200" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""and then these are the button actions""" start="00:20:51.366" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""which basically just changes the layout,""" start="00:20:54.133" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""and then I have the layout. So this layout is a &quot;div.&quot;""" start="00:20:57.000" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""The first div just places three buttons in a row.""" start="00:21:01.460" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""The next layout is a div within a div.""" start="00:21:04.920" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""So we have one div which places the button""" start="00:21:07.533" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""called &quot;two right&quot; buttons, and the div above it,""" start="00:21:13.000" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""which places the &quot;three in a row&quot; button""" start="00:21:18.633" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""or the &quot;two above&quot; buttons.""" start="00:21:21.493" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""And here's the next... So there's three different""" start="00:21:22.661" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""layouts, and clicking on one of their associated buttons""" start="00:21:26.001" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""will just change the layout.""" start="00:21:30.601" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""As you can see, very little code""" start="00:21:32.101" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""to create a somewhat complex user interface.""" start="00:21:33.434" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""That's the advantage of using reactive or declarative""" start="00:21:38.501" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""UI programming paradigms.""" start="00:21:42.868" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""So yeah, this has not been merged into Schemacs""" start="00:21:44.234" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""at the time of this recording,""" start="00:21:47.233" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""but will be soon hopefully.""" start="00:21:48.701" video="mainVideo-schemacs" id="subtitle"]]

<div class="transcript-heading">[[!template new="1" text="""Wrapping up""" start="00:21:51.520" video="mainVideo-schemacs" id="subtitle"]]</div>[[!template text="""So yeah, I think I've already gone on for 20 minutes.""" start="00:21:51.520" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""So I guess I'll just end my presentation here.""" start="00:21:55.166" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""I have lots more to talk about.""" start="00:21:59.140" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""I guess I will say one last thing before I go:""" start="00:22:00.466" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""that I would very much like for others""" start="00:22:03.980" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""to try and contribute to this project.""" start="00:22:07.066" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""I will do my best to try and help teach anybody""" start="00:22:09.200" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""or work with anybody, especially even""" start="00:22:14.233" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""if you don't have much experience with Scheme.""" start="00:22:16.833" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""I'd like to help everybody try to contribute.""" start="00:22:18.600" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""Basically I want to get this proof of concept working.""" start="00:22:22.760" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""I want to get a stable user interface up and running,""" start="00:22:26.240" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""and then we can start working on""" start="00:22:30.674" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""improving the Emacs Lisp interpreter all together.""" start="00:22:33.066" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""There are close to 1,400 built-in functions""" start="00:22:36.700" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""which need to be implemented.""" start="00:22:41.066" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""We don't need to get all of them""" start="00:22:43.660" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""in order to be able to run probably most of ELPA,""" start="00:22:44.966" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""but as much as possible.""" start="00:22:48.466" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""We would like to clone Emacs Lisp and I need help.""" start="00:22:50.866" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""So get a hold of me. My project is on Codeberg.""" start="00:22:54.800" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""Well, (oh, I can't show this here),""" start="00:23:02.580" video="mainVideo-schemacs" id="subtitle"]]
[[!template text="""but I will end it there. Thank you for listening.""" start="00:23:06.920" video="mainVideo-schemacs" id="subtitle"]]

</div>

Captioner: sachac

<div class="transcript transcript-qanda"><a name="schemacs-qanda-transcript"></a><h1>Q&A transcript (unedited)</h1>

[[!template text="""[oops, forgot to start] object protocol has a scheme implementation.""" start="00:00:00.000" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Does this mean schemacs will be""" start="00:00:03.840" video="qanda-schemacs" id="subtitle"]]
[[!template text="""meta object changeable in practice?""" start="00:00:07.160" video="qanda-schemacs" id="subtitle"]]
[[!template text="""So I don't actually need the meta object protocol so far.""" start="00:00:11.080" video="qanda-schemacs" id="subtitle"]]
[[!template text="""In the reference implementation for Guile,""" start="00:00:16.600" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Guile has its own object-oriented system called Goops.""" start="00:00:19.280" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I'm sorry, I'm hearing a delay.""" start="00:00:27.560" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Anyway, I'm going to turn off my stream quick. There we go.""" start="00:00:29.240" video="qanda-schemacs" id="subtitle"]]
[[!template text="""So, um. Yes, uh, I, I don't I wasn't aware of the, um.""" start="00:00:32.520" video="qanda-schemacs" id="subtitle"]]
[[!template text="""the meta-object protocol that you have mentioned here,""" start="00:00:39.440" video="qanda-schemacs" id="subtitle"]]
[[!template text="""but I will look into it.""" start="00:00:43.920" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I know that there isn't really a standard""" start="00:00:45.960" video="qanda-schemacs" id="subtitle"]]
[[!template text="""meta-object protocol for Scheme.""" start="00:00:48.720" video="qanda-schemacs" id="subtitle"]]
[[!template text="""That was an issue for me""" start="00:00:52.120" video="qanda-schemacs" id="subtitle"]]
[[!template text="""because I'm trying to make this cross-platform,""" start="00:00:53.520" video="qanda-schemacs" id="subtitle"]]
[[!template text="""and so I've done all of my work so far""" start="00:00:56.920" video="qanda-schemacs" id="subtitle"]]
[[!template text="""without a meta-object protocol""" start="00:00:59.640" video="qanda-schemacs" id="subtitle"]]
[[!template text="""because that's the easiest way to make it work""" start="00:01:00.960" video="qanda-schemacs" id="subtitle"]]
[[!template text="""on multiple Scheme implementations.""" start="00:01:02.440" video="qanda-schemacs" id="subtitle"]]
[[!template text="""But if there is a nice portable one""" start="00:01:04.880" video="qanda-schemacs" id="subtitle"]]
[[!template text="""that works on many implementations, I would use that, yes.""" start="00:01:07.360" video="qanda-schemacs" id="subtitle"]]
[[!template text="""It's just that so far it hasn't been necessary.""" start="00:01:12.560" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I've been doing mostly functional reactive programming""" start="00:01:15.000" video="qanda-schemacs" id="subtitle"]]
[[!template text="""and React.js-like framework.""" start="00:01:19.280" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I've created that for the GUI front end.""" start="00:01:21.080" video="qanda-schemacs" id="subtitle"]]
[[!template text="""And that's all the more I've needed so far.""" start="00:01:23.240" video="qanda-schemacs" id="subtitle"]]
[[!template text="""So, yeah. Oh, yeah, please, next question. Sure.""" start="00:01:26.200" video="qanda-schemacs" id="subtitle"]]
[[!template text="""So how will the GUI display code be R7RS compliant?""" start="00:01:33.400" video="qanda-schemacs" id="subtitle"]]
[[!template text="""As far as I know, there's no DL open in R7RS. That's right.""" start="00:01:39.600" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Yeah, R7RS small is extremely small""" start="00:01:45.080" video="qanda-schemacs" id="subtitle"]]
[[!template text="""and does not have any features at all.""" start="00:01:48.880" video="qanda-schemacs" id="subtitle"]]
[[!template text="""But it does provide a conv expand macro.""" start="00:01:50.440" video="qanda-schemacs" id="subtitle"]]
[[!template text="""And this allows you to load in different code""" start="00:01:54.800" video="qanda-schemacs" id="subtitle"]]
[[!template text="""depending on which scheme implementation you're using.""" start="00:01:57.640" video="qanda-schemacs" id="subtitle"]]
[[!template text="""So basically, I'll have to write a different back end""" start="00:02:00.880" video="qanda-schemacs" id="subtitle"]]
[[!template text="""for each scheme implementation.""" start="00:02:03.360" video="qanda-schemacs" id="subtitle"]]
[[!template text="""And I think that's really""" start="00:02:05.280" video="qanda-schemacs" id="subtitle"]]
[[!template text="""the only way is possible at all,""" start="00:02:06.640" video="qanda-schemacs" id="subtitle"]]
[[!template text="""because there's no standardization.""" start="00:02:10.920" video="qanda-schemacs" id="subtitle"]]
[[!template text="""So essentially, the libraries""" start="00:02:12.720" video="qanda-schemacs" id="subtitle"]]
[[!template text="""that I've written for schemacs""" start="00:02:14.440" video="qanda-schemacs" id="subtitle"]]
[[!template text="""will become kind of a platform-independent way""" start="00:02:15.720" video="qanda-schemacs" id="subtitle"]]
[[!template text="""of writing GUIs for Scheme.""" start="00:02:22.440" video="qanda-schemacs" id="subtitle"]]
[[!template text="""It's just a matter of,""" start="00:02:25.840" video="qanda-schemacs" id="subtitle"]]
[[!template text="""will your Scheme implementation""" start="00:02:27.120" video="qanda-schemacs" id="subtitle"]]
[[!template text="""support the Schemacs GUI protocol?""" start="00:02:28.680" video="qanda-schemacs" id="subtitle"]]
[[!template text="""So I've kind of written my own protocol,""" start="00:02:32.280" video="qanda-schemacs" id="subtitle"]]
[[!template text="""and it's entirely R7 RSML compliant.""" start="00:02:34.200" video="qanda-schemacs" id="subtitle"]]
[[!template text="""It's all done with record,""" start="00:02:36.680" video="qanda-schemacs" id="subtitle"]]
[[!template text="""what are they called, record types.""" start="00:02:38.240" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Do you think some of the Schemacs""" start="00:02:43.040" video="qanda-schemacs" id="subtitle"]]
[[!template text="""could be extracted into SFRIs since you've made it portable""" start="00:02:46.520" video="qanda-schemacs" id="subtitle"]]
[[!template text="""between scheme implementations?""" start="00:02:50.680" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Yes, I would definitely like to do that.""" start="00:02:52.880" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Probably first thing I'll do is start splitting up""" start="00:02:55.280" video="qanda-schemacs" id="subtitle"]]
[[!template text="""and publishing independent libraries""" start="00:02:59.240" video="qanda-schemacs" id="subtitle"]]
[[!template text="""on the Aku package manager.""" start="00:03:01.680" video="qanda-schemacs" id="subtitle"]]
[[!template text="""This is a kind of a package manager ecosystem for Scheme,""" start="00:03:04.320" video="qanda-schemacs" id="subtitle"]]
[[!template text="""and in particular R7RS Scheme.""" start="00:03:07.640" video="qanda-schemacs" id="subtitle"]]
[[!template text="""And it's also mirrored on the other package manager,""" start="00:03:11.680" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Snowfort, just by the way.""" start="00:03:15.240" video="qanda-schemacs" id="subtitle"]]
[[!template text="""But yeah, and then I might be also,""" start="00:03:18.280" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I've considered creating a SRFI for the lens library,""" start="00:03:21.360" video="qanda-schemacs" id="subtitle"]]
[[!template text="""which is based on the Haskell lens library.""" start="00:03:25.080" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I don't think that exists yet in Scheme,""" start="00:03:27.400" video="qanda-schemacs" id="subtitle"]]
[[!template text="""so I thought that might make a good SRFI.""" start="00:03:29.840" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Is there a recommended Scheme implementation?""" start="00:03:34.320" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Guile is the reference implementation.""" start="00:03:36.720" video="qanda-schemacs" id="subtitle"]]
[[!template text="""It's the only one that works with GUI,""" start="00:03:44.560" video="qanda-schemacs" id="subtitle"]]
[[!template text="""but as I demonstrated in my presentation,""" start="00:03:47.280" video="qanda-schemacs" id="subtitle"]]
[[!template text="""the Emacs Lisp interpreter""" start="00:03:51.360" video="qanda-schemacs" id="subtitle"]]
[[!template text="""works on multiple schemes so far,""" start="00:03:52.600" video="qanda-schemacs" id="subtitle"]]
[[!template text="""and I've had trouble with some of the scheme compilers.""" start="00:03:55.080" video="qanda-schemacs" id="subtitle"]]
[[!template text="""But yeah, I would recommend Guile.""" start="00:04:00.040" video="qanda-schemacs" id="subtitle"]]
[[!template text="""But how would schemacs deal with""" start="00:04:04.840" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Emacs's re-display architecture""" start="00:04:07.720" video="qanda-schemacs" id="subtitle"]]
[[!template text="""will be having its own display architecture?""" start="00:04:10.040" video="qanda-schemacs" id="subtitle"]]
[[!template text="""And if so, how will you handle""" start="00:04:13.160" video="qanda-schemacs" id="subtitle"]]
[[!template text="""things like overlays and images?""" start="00:04:15.360" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Yeah, definitely. That's to be determined.""" start="00:04:18.480" video="qanda-schemacs" id="subtitle"]]
[[!template text="""So basically, the scheme way of doing things""" start="00:04:25.240" video="qanda-schemacs" id="subtitle"]]
[[!template text="""So, I've created this React-like programming framework.""" start="00:04:31.280" video="qanda-schemacs" id="subtitle"]]
[[!template text="""It's like ReactJS or Vue.js.""" start="00:04:36.640" video="qanda-schemacs" id="subtitle"]]
[[!template text="""That is just the API of how you write GUI code in Scheme.""" start="00:04:41.000" video="qanda-schemacs" id="subtitle"]]
[[!template text="""And each Scheme implementation""" start="00:04:45.120" video="qanda-schemacs" id="subtitle"]]
[[!template text="""will have its own GUI backend,""" start="00:04:49.720" video="qanda-schemacs" id="subtitle"]]
[[!template text="""which implements that Protocol.""" start="00:04:52.280" video="qanda-schemacs" id="subtitle"]]
[[!template text="""And so when it comes time to link""" start="00:04:55.600" video="qanda-schemacs" id="subtitle"]]
[[!template text="""the Emacs Lisp built-in functions""" start="00:04:59.200" video="qanda-schemacs" id="subtitle"]]
[[!template text="""that do these things like overlays and so on,""" start="00:05:03.080" video="qanda-schemacs" id="subtitle"]]
[[!template text="""we're going to have to come up with some way""" start="00:05:08.280" video="qanda-schemacs" id="subtitle"]]
[[!template text="""of modeling that""" start="00:05:11.080" video="qanda-schemacs" id="subtitle"]]
[[!template text="""using the scheme framework that I've designed.""" start="00:05:12.080" video="qanda-schemacs" id="subtitle"]]
[[!template text="""And I may have to make alterations""" start="00:05:15.800" video="qanda-schemacs" id="subtitle"]]
[[!template text="""specifically to support Emacs Lisp.""" start="00:05:17.600" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I don't know yet. I haven't got that far.""" start="00:05:22.040" video="qanda-schemacs" id="subtitle"]]
[[!template text="""You were saying that you would like""" start="00:05:28.560" video="qanda-schemacs" id="subtitle"]]
[[!template text="""to get the most out of the 1300""" start="00:05:30.080" video="qanda-schemacs" id="subtitle"]]
[[!template text="""and something Emacs packages that exist.""" start="00:05:33.480" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Are there technical blockers to doing them all""" start="00:05:36.520" video="qanda-schemacs" id="subtitle"]]
[[!template text="""or just a problem of getting enough people to jump into it?""" start="00:05:38.760" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Yeah, it's just a matter of implementing enough""" start="00:05:44.040" video="qanda-schemacs" id="subtitle"]]
[[!template text="""of the Emacs built-in functions.""" start="00:05:48.640" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Right now, there's kind of a big bug.""" start="00:05:50.840" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I mentioned this also in the presentation.""" start="00:05:57.080" video="qanda-schemacs" id="subtitle"]]
[[!template text="""The stacks trace that you saw during my presentation,""" start="00:05:59.360" video="qanda-schemacs" id="subtitle"]]
[[!template text="""that is the biggest bug right now""" start="00:06:02.600" video="qanda-schemacs" id="subtitle"]]
[[!template text="""that's preventing me from running most other code.""" start="00:06:05.800" video="qanda-schemacs" id="subtitle"]]
[[!template text="""And I don't think other people""" start="00:06:08.160" video="qanda-schemacs" id="subtitle"]]
[[!template text="""will be able to contribute to the code base""" start="00:06:10.360" video="qanda-schemacs" id="subtitle"]]
[[!template text="""until I get that bug fixed,""" start="00:06:13.040" video="qanda-schemacs" id="subtitle"]]
[[!template text="""because it doesn't capture closures correctly.""" start="00:06:14.560" video="qanda-schemacs" id="subtitle"]]
[[!template text="""it doesn't behave like Emacs Lisp does,""" start="00:06:18.680" video="qanda-schemacs" id="subtitle"]]
[[!template text="""and that's the big problem.""" start="00:06:22.520" video="qanda-schemacs" id="subtitle"]]
[[!template text="""So once I get that worked out,""" start="00:06:26.960" video="qanda-schemacs" id="subtitle"]]
[[!template text="""then it's just a matter of implementing enough""" start="00:06:31.760" video="qanda-schemacs" id="subtitle"]]
[[!template text="""of the EmacsLisp built-in functions,""" start="00:06:35.600" video="qanda-schemacs" id="subtitle"]]
[[!template text="""these are the functions that are mostly implemented in C,""" start="00:06:37.880" video="qanda-schemacs" id="subtitle"]]
[[!template text="""implementing those in Scheme.""" start="00:06:40.680" video="qanda-schemacs" id="subtitle"]]
[[!template text="""And that, yeah, that's the thing""" start="00:06:42.880" video="qanda-schemacs" id="subtitle"]]
[[!template text="""that I'm going to need a lot of help with""" start="00:06:45.960" video="qanda-schemacs" id="subtitle"]]
[[!template text="""because there's quite a few of those APIs.""" start="00:06:47.840" video="qanda-schemacs" id="subtitle"]]
[[!template text="""But I imagine, I have no idea, no way of knowing,""" start="00:06:49.720" video="qanda-schemacs" id="subtitle"]]
[[!template text="""but I imagine we don't need 100% of them""" start="00:06:53.520" video="qanda-schemacs" id="subtitle"]]
[[!template text="""in order to run most of Elpa.""" start="00:06:56.460" video="qanda-schemacs" id="subtitle"]]
[[!template text="""We probably can get some of the important large Elpa packages""" start="00:06:58.168" video="qanda-schemacs" id="subtitle"]]
[[!template text="""like Magit and Org mode with just enough of the Emacs Lisp""" start="00:07:05.085" video="qanda-schemacs" id="subtitle"]]
[[!template text="""built-in functions to handle that.""" start="00:07:12.720" video="qanda-schemacs" id="subtitle"]]
[[!template text="""But we won't really know until we've tried.""" start="00:07:14.960" video="qanda-schemacs" id="subtitle"]]
[[!template text="""So yeah, I'll try to get this bug fixed right away.""" start="00:07:19.280" video="qanda-schemacs" id="subtitle"]]
[[!template text="""That way we can all start working on it together, hopefully.""" start="00:07:22.520" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Highly relatable answer there.""" start="00:07:24.980" video="qanda-schemacs" id="subtitle"]]
[[!template text="""We'll burn that bridge when we're on it or something.""" start="00:07:27.127" video="qanda-schemacs" id="subtitle"]]
[[!template text="""What are your thoughts on chicken scheme?""" start="00:07:31.960" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Will that be a good fit? Do you think?""" start="00:07:34.560" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I think it will be, um, I, I did show""" start="00:07:37.200" video="qanda-schemacs" id="subtitle"]]
[[!template text="""trying to run chicken scheme in my, um, presentation""" start="00:07:41.040" video="qanda-schemacs" id="subtitle"]]
[[!template text="""and, uh, I ran up against some kind of issue,""" start="00:07:44.960" video="qanda-schemacs" id="subtitle"]]
[[!template text="""which I really don't know how to debug.""" start="00:07:48.840" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Um, it's probably something to do with the, uh, pattern matcher.""" start="00:07:51.080" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Um, I'm using the pattern matcher,""" start="00:07:55.880" video="qanda-schemacs" id="subtitle"]]
[[!template text="""uh, written by Alex shin,""" start="00:07:58.920" video="qanda-schemacs" id="subtitle"]]
[[!template text="""which seems to be the most portable.""" start="00:08:00.600" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Pattern matcher, uh, for our seven RS scheme.""" start="00:08:02.600" video="qanda-schemacs" id="subtitle"]]
[[!template text="""But not all scheme compilers implement, what is it called?""" start="00:08:05.920" video="qanda-schemacs" id="subtitle"]]
[[!template text="""The macro, I can't remember what it's called.""" start="00:08:13.520" video="qanda-schemacs" id="subtitle"]]
[[!template text="""There's the macro expansion system for R7 RS small.""" start="00:08:19.560" video="qanda-schemacs" id="subtitle"]]
[[!template text="""All of these scheme implementations""" start="00:08:24.200" video="qanda-schemacs" id="subtitle"]]
[[!template text="""seem to have a slightly different take on how they work.""" start="00:08:27.200" video="qanda-schemacs" id="subtitle"]]
[[!template text="""And so that macro expander has been, for pattern matching,""" start="00:08:29.320" video="qanda-schemacs" id="subtitle"]]
[[!template text="""has been the biggest difficulty""" start="00:08:33.920" video="qanda-schemacs" id="subtitle"]]
[[!template text="""in making this code portable.""" start="00:08:35.720" video="qanda-schemacs" id="subtitle"]]
[[!template text="""And so I'm thinking of ways of maybe trying to ditch pattern matching,""" start="00:08:37.360" video="qanda-schemacs" id="subtitle"]]
[[!template text="""but that's such a useful feature and it's hard.""" start="00:08:42.240" video="qanda-schemacs" id="subtitle"]]
[[!template text="""So I don't know, we'll see if I can,""" start="00:08:45.000" video="qanda-schemacs" id="subtitle"]]
[[!template text="""if somebody can help me get it to work on chicken team,""" start="00:08:49.880" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I'd really appreciate it.""" start="00:08:52.440" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Can this implementation be used by Guile's Emacs Lisp mode?""" start="00:08:56.600" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Guile's Emacs list mode. Okay. Yeah, good question.""" start="00:09:01.800" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I did mention this last year in my presentation.""" start="00:09:08.200" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Emacs list in Guile is totally different""" start="00:09:10.920" video="qanda-schemacs" id="subtitle"]]
[[!template text="""from what I've done.""" start="00:09:13.720" video="qanda-schemacs" id="subtitle"]]
[[!template text="""That implementation was written about 10 or 15 years ago.""" start="00:09:16.200" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I can't remember exactly when. It is quite incomplete.""" start="00:09:21.293" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I don't think it even runs most of the macro expanding code.""" start="00:09:26.502" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Some of the code that is written""" start="00:09:36.543" video="qanda-schemacs" id="subtitle"]]
[[!template text="""for GNU Emacs in Emacs Lisp,""" start="00:09:39.680" video="qanda-schemacs" id="subtitle"]]
[[!template text="""where GNU Emacs is initializing itself,""" start="00:09:42.480" video="qanda-schemacs" id="subtitle"]]
[[!template text="""it can't even get the first file in that code.""" start="00:09:45.680" video="qanda-schemacs" id="subtitle"]]
[[!template text="""It hasn't been touched in 10 or 15 years.""" start="00:09:51.320" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Initially, when I first started this project,""" start="00:09:53.480" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I was using the parser""" start="00:09:57.240" video="qanda-schemacs" id="subtitle"]]
[[!template text="""for Guile's Emacs Lisp implementation,""" start="00:09:59.160" video="qanda-schemacs" id="subtitle"]]
[[!template text="""but it didn't give me things like source locations,""" start="00:10:02.320" video="qanda-schemacs" id="subtitle"]]
[[!template text="""so I had to rewrite that. And also, it wasn't portable.""" start="00:10:05.320" video="qanda-schemacs" id="subtitle"]]
[[!template text="""So yeah, because I want it to be portable,""" start="00:10:10.640" video="qanda-schemacs" id="subtitle"]]
[[!template text="""it's necessarily going to be not reliant""" start="00:10:14.280" video="qanda-schemacs" id="subtitle"]]
[[!template text="""on anything that's inside of the Guile library,""" start="00:10:16.920" video="qanda-schemacs" id="subtitle"]]
[[!template text="""including the Emacs LISP interpreter that's there.""" start="00:10:19.120" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Maybe I could replace the Emacs LISP interpreter in Guile""" start="00:10:21.480" video="qanda-schemacs" id="subtitle"]]
[[!template text="""if Andy Wingo would be interested. All right.""" start="00:10:24.960" video="qanda-schemacs" id="subtitle"]]
[[!template text="""And I see we've got a few people""" start="00:10:29.600" video="qanda-schemacs" id="subtitle"]]
[[!template text="""that did jump into the BBB.""" start="00:10:31.600" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I'm just going to quickly, oops.""" start="00:10:34.040" video="qanda-schemacs" id="subtitle"]]
[[!template text="""quickly try to make my text a little bigger""" start="00:10:37.160" video="qanda-schemacs" id="subtitle"]]
[[!template text="""so I can read a question that came here.""" start="00:10:40.680" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I wonder if we can do some sort of pragmatic analysis""" start="00:10:42.800" video="qanda-schemacs" id="subtitle"]]
[[!template text="""on popular Emacs packages""" start="00:10:48.480" video="qanda-schemacs" id="subtitle"]]
[[!template text="""to see what list of functions they tend to depend on""" start="00:10:49.960" video="qanda-schemacs" id="subtitle"]]
[[!template text="""while a function calls down to the lower level.""" start="00:10:52.400" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Yeah, that would be good.""" start="00:10:54.800" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Somebody please do that for me. Awesome.""" start="00:10:57.210" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Somebody's raising their hand. Divya.""" start="00:11:02.252" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Let's see. Yeah, can you hear me?""" start="00:11:05.440" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Yes, I can. Yeah, go ahead. Hello, thank you.""" start="00:11:08.800" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Yeah, this is really awesome.""" start="00:11:12.360" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I use Guile, and I love Guile,""" start="00:11:14.080" video="qanda-schemacs" id="subtitle"]]
[[!template text="""and I also love functional programming,""" start="00:11:16.960" video="qanda-schemacs" id="subtitle"]]
[[!template text="""so this is really nice that you took""" start="00:11:18.920" video="qanda-schemacs" id="subtitle"]]
[[!template text="""the declarative approach.""" start="00:11:21.600" video="qanda-schemacs" id="subtitle"]]
[[!template text="""One thing that I'm interested in is,""" start="00:11:22.720" video="qanda-schemacs" id="subtitle"]]
[[!template text="""are you also considering Racket in the scheme group?""" start="00:11:26.320" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Because I know a lot of people do not consider Racket""" start="00:11:29.840" video="qanda-schemacs" id="subtitle"]]
[[!template text="""as a sort of scheme thing, because it grew out of it.""" start="00:11:32.960" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Do you think you'll take something from Racket?""" start="00:11:36.640" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Because I think Racket has""" start="00:11:39.520" video="qanda-schemacs" id="subtitle"]]
[[!template text="""a lot of good ideas that can be used.""" start="00:11:42.120" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Yeah, I briefly looked at Racket's GUI library,""" start="00:11:44.520" video="qanda-schemacs" id="subtitle"]]
[[!template text="""but it's very, very heavily dependent""" start="00:11:48.440" video="qanda-schemacs" id="subtitle"]]
[[!template text="""on Racket's macro expander,""" start="00:11:51.880" video="qanda-schemacs" id="subtitle"]]
[[!template text="""which is, well, yeah, the macro expander""" start="00:11:53.840" video="qanda-schemacs" id="subtitle"]]
[[!template text="""is extremely complex for Racket,""" start="00:11:57.680" video="qanda-schemacs" id="subtitle"]]
[[!template text="""and I don't think it's possible to port it to any other scheme,""" start="00:11:59.680" video="qanda-schemacs" id="subtitle"]]
[[!template text="""as far as I know. But Racket is based on SheaScheme.""" start="00:12:02.160" video="qanda-schemacs" id="subtitle"]]
[[!template text="""And I am making an effort to port my code to Shea's scheme.""" start="00:12:07.680" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I mentioned this earlier,""" start="00:12:14.480" video="qanda-schemacs" id="subtitle"]]
[[!template text="""but there's the Gwen Weinholdt Aku system,""" start="00:12:18.640" video="qanda-schemacs" id="subtitle"]]
[[!template text="""which allows you to translate R7RS to R6RS.""" start="00:12:22.160" video="qanda-schemacs" id="subtitle"]]
[[!template text="""And since Shea is an R6RS compiler,""" start="00:12:25.440" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I did at one point get the Emacs Lisp interpreter""" start="00:12:28.520" video="qanda-schemacs" id="subtitle"]]
[[!template text="""to compile for Shea,""" start="00:12:33.920" video="qanda-schemacs" id="subtitle"]]
[[!template text="""although I think There's been a change""" start="00:12:34.920" video="qanda-schemacs" id="subtitle"]]
[[!template text="""either to Aku or somewhere in my own code base.""" start="00:12:38.240" video="qanda-schemacs" id="subtitle"]]
[[!template text="""It doesn't build anymore, and I'm not sure why.""" start="00:12:40.480" video="qanda-schemacs" id="subtitle"]]
[[!template text="""But I would also very much like to run this on Che.""" start="00:12:42.880" video="qanda-schemacs" id="subtitle"]]
[[!template text="""And I guess in that sense, we'll be able to work on Racket as well.""" start="00:12:47.040" video="qanda-schemacs" id="subtitle"]]
[[!template text="""There's also one other option.""" start="00:12:54.680" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Alexis King has written an R7RS language package for Racket.""" start="00:12:56.200" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I have not yet tried.""" start="00:13:03.520" video="qanda-schemacs" id="subtitle"]]
[[!template text="""running my package on R7RS for Racket.""" start="00:13:05.040" video="qanda-schemacs" id="subtitle"]]
[[!template text="""But that would be something interesting.""" start="00:13:08.480" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Yes, I would like to try that.""" start="00:13:11.600" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Yeah, it'll be interesting.""" start="00:13:12.920" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I do have some experience with chairs.""" start="00:13:13.920" video="qanda-schemacs" id="subtitle"]]
[[!template text="""So, uh, if I can find some time,""" start="00:13:15.840" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I'll, I'll, I'll certainly like to, I would appreciate.""" start="00:13:17.480" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Yes. Yeah. Go ahead. Yeah.""" start="00:13:21.240" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Another question I have is, like,""" start="00:13:24.040" video="qanda-schemacs" id="subtitle"]]
[[!template text="""what exactly is sort of, like, the, the approach is that""" start="00:13:26.080" video="qanda-schemacs" id="subtitle"]]
[[!template text="""you'll 1st want to do the interpreter""" start="00:13:29.200" video="qanda-schemacs" id="subtitle"]]
[[!template text="""and then have enough list functions.""" start="00:13:31.480" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Uh, getting the max list functions""" start="00:13:33.800" video="qanda-schemacs" id="subtitle"]]
[[!template text="""interpreted or interpretable.""" start="00:13:36.480" video="qanda-schemacs" id="subtitle"]]
[[!template text="""And then go for GUI or do you want""" start="00:13:38.120" video="qanda-schemacs" id="subtitle"]]
[[!template text="""to sort of like go hand in hand""" start="00:13:41.000" video="qanda-schemacs" id="subtitle"]]
[[!template text="""is like we have the interpreter working on""" start="00:13:42.760" video="qanda-schemacs" id="subtitle"]]
[[!template text="""and we have also the GUI""" start="00:13:45.680" video="qanda-schemacs" id="subtitle"]]
[[!template text="""and we sort of use one for the other.""" start="00:13:46.960" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Yeah, I consider the two tasks to be parallel.""" start="00:13:53.200" video="qanda-schemacs" id="subtitle"]]
[[!template text="""So I'm actually doing the GUI separately.""" start="00:13:56.480" video="qanda-schemacs" id="subtitle"]]
[[!template text="""The reason why is because the GUI for Schemacs""" start="00:13:59.640" video="qanda-schemacs" id="subtitle"]]
[[!template text="""is really just a clone of the look and feel of Emacs.""" start="00:14:05.520" video="qanda-schemacs" id="subtitle"]]
[[!template text="""It's not like an actual clone of the low-level C code""" start="00:14:10.280" video="qanda-schemacs" id="subtitle"]]
[[!template text="""that puts everything on screen.""" start="00:14:14.680" video="qanda-schemacs" id="subtitle"]]
[[!template text="""And I'm actually not really that interested""" start="00:14:16.040" video="qanda-schemacs" id="subtitle"]]
[[!template text="""in the low-level details""" start="00:14:18.680" video="qanda-schemacs" id="subtitle"]]
[[!template text="""of how Emacs draws things on screen either.""" start="00:14:21.440" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I think it has a lot of historical baggage,""" start="00:14:23.480" video="qanda-schemacs" id="subtitle"]]
[[!template text="""and I'm actually trying to move away from that.""" start="00:14:26.840" video="qanda-schemacs" id="subtitle"]]
[[!template text="""So that was part of the reason why I started""" start="00:14:28.840" video="qanda-schemacs" id="subtitle"]]
[[!template text="""with this React.js or Vue.js-like Reactive GUI framework.""" start="00:14:31.760" video="qanda-schemacs" id="subtitle"]]
[[!template text="""So that GUI part is completely separate.""" start="00:14:36.400" video="qanda-schemacs" id="subtitle"]]
[[!template text="""And I want to worry about the details""" start="00:14:39.520" video="qanda-schemacs" id="subtitle"]]
[[!template text="""of how we make the GUI look and feel""" start="00:14:42.240" video="qanda-schemacs" id="subtitle"]]
[[!template text="""similar in Schemacs, similar to GNU Emacs.""" start="00:14:46.720" video="qanda-schemacs" id="subtitle"]]
[[!template text="""In Schemacs, using the Emacs programming language,""" start="00:14:50.320" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I think that's something that we should worried about""" start="00:14:54.800" video="qanda-schemacs" id="subtitle"]]
[[!template text="""after we have enough of the Emacs list implemented.""" start="00:14:59.320" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Yeah, that makes sense.""" start="00:15:03.400" video="qanda-schemacs" id="subtitle"]]
[[!template text="""There are sort of, I'm a bit worried.""" start="00:15:04.920" video="qanda-schemacs" id="subtitle"]]
[[!template text="""So, I don't know if, so one of my presentations""" start="00:15:06.680" video="qanda-schemacs" id="subtitle"]]
[[!template text="""is going to be tomorrow.""" start="00:15:10.600" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I'm working on something called Emacs Viewer.""" start="00:15:11.480" video="qanda-schemacs" id="subtitle"]]
[[!template text="""It's a document viewer in Emacs.""" start="00:15:13.120" video="qanda-schemacs" id="subtitle"]]
[[!template text="""And essentially one of the issues that I'm up against""" start="00:15:15.320" video="qanda-schemacs" id="subtitle"]]
[[!template text="""is that Emacs's display system""" start="00:15:17.680" video="qanda-schemacs" id="subtitle"]]
[[!template text="""is sort of very let's say, not flexible.""" start="00:15:20.360" video="qanda-schemacs" id="subtitle"]]
[[!template text="""When trying to analyze where this inflexibility comes from,""" start="00:15:25.440" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I don't think it's just the display architecture.""" start="00:15:31.840" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I think parts of eLISP itself""" start="00:15:35.760" video="qanda-schemacs" id="subtitle"]]
[[!template text="""are connected to the display architecture.""" start="00:15:38.320" video="qanda-schemacs" id="subtitle"]]
[[!template text="""The notion of a cell in a buffer,""" start="00:15:43.600" video="qanda-schemacs" id="subtitle"]]
[[!template text="""itself is connected tightly to""" start="00:15:48.400" video="qanda-schemacs" id="subtitle"]]
[[!template text="""how the re-display architecture works.""" start="00:15:52.200" video="qanda-schemacs" id="subtitle"]]
[[!template text="""So I think you'll have to sort of figure out""" start="00:15:54.520" video="qanda-schemacs" id="subtitle"]]
[[!template text="""what exactly you can salvage from ELISP""" start="00:15:57.200" video="qanda-schemacs" id="subtitle"]]
[[!template text="""without taking the display architecture baggage.""" start="00:16:00.680" video="qanda-schemacs" id="subtitle"]]
[[!template text="""That's right. I do anticipate""" start="00:16:05.200" video="qanda-schemacs" id="subtitle"]]
[[!template text="""that's going to be fairly challenging.""" start="00:16:08.002" video="qanda-schemacs" id="subtitle"]]
[[!template text="""It's all Turing-complete,""" start="00:16:09.877" video="qanda-schemacs" id="subtitle"]]
[[!template text="""so I imagine we're probably going to end up""" start="00:16:14.585" video="qanda-schemacs" id="subtitle"]]
[[!template text="""creating something like an emulator""" start="00:16:17.880" video="qanda-schemacs" id="subtitle"]]
[[!template text="""for the Emacs Lisp display architecture in Scheme""" start="00:16:21.040" video="qanda-schemacs" id="subtitle"]]
[[!template text="""that will somehow translate down""" start="00:16:24.320" video="qanda-schemacs" id="subtitle"]]
[[!template text="""to the React-like protocol that I've written.""" start="00:16:27.560" video="qanda-schemacs" id="subtitle"]]
[[!template text="""But yeah, I don't I haven't that's nice.""" start="00:16:30.040" video="qanda-schemacs" id="subtitle"]]
[[!template text="""No, this is this is very exciting. Yeah. Oh Yes, it is.""" start="00:16:32.720" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Yeah, I'm glad so like a lot of people have told me""" start="00:16:36.320" video="qanda-schemacs" id="subtitle"]]
[[!template text="""that they really Are excited to see this project""" start="00:16:39.560" video="qanda-schemacs" id="subtitle"]]
[[!template text="""and this really helps me""" start="00:16:41.680" video="qanda-schemacs" id="subtitle"]]
[[!template text="""You know keep focused on this project""" start="00:16:42.720" video="qanda-schemacs" id="subtitle"]]
[[!template text="""because a lot of people are very interested.""" start="00:16:46.400" video="qanda-schemacs" id="subtitle"]]
[[!template text="""So It's so I'd like to move on""" start="00:16:48.320" video="qanda-schemacs" id="subtitle"]]
[[!template text="""to a couple of questions from the past.""" start="00:16:50.360" video="qanda-schemacs" id="subtitle"]]
[[!template text="""We're starting to build up a good backlog.""" start="00:16:52.160" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Thank you for that. Yeah Next question from the pad I have.""" start="00:16:54.480" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Can you tell us more about the show stopping bug?""" start="00:16:59.720" video="qanda-schemacs" id="subtitle"]]
[[!template text="""How to squash it? How can people help?""" start="00:17:02.240" video="qanda-schemacs" id="subtitle"]]
[[!template text="""OK, well, that one, unfortunately, I think,""" start="00:17:04.160" video="qanda-schemacs" id="subtitle"]]
[[!template text="""unless you're really a scheme genius""" start="00:17:08.800" video="qanda-schemacs" id="subtitle"]]
[[!template text="""and you can really read my code""" start="00:17:11.680" video="qanda-schemacs" id="subtitle"]]
[[!template text="""and immediately understand how it all works,""" start="00:17:13.800" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I don't think you'd be able to help.""" start="00:17:15.480" video="qanda-schemacs" id="subtitle"]]
[[!template text="""It shouldn't be too difficult for me to fix.""" start="00:17:18.320" video="qanda-schemacs" id="subtitle"]]
[[!template text="""So it has to do with how closures work.""" start="00:17:22.600" video="qanda-schemacs" id="subtitle"]]
[[!template text="""And a closure is basically an object""" start="00:17:26.640" video="qanda-schemacs" id="subtitle"]]
[[!template text="""that can be created with stuff that's on the stack.""" start="00:17:30.720" video="qanda-schemacs" id="subtitle"]]
[[!template text="""And this is a feature, I think,""" start="00:17:33.160" video="qanda-schemacs" id="subtitle"]]
[[!template text="""that was introduced with Emacs 27.""" start="00:17:37.080" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I can't remember exactly,""" start="00:17:39.680" video="qanda-schemacs" id="subtitle"]]
[[!template text="""but it's actually a relatively recent feature.""" start="00:17:40.880" video="qanda-schemacs" id="subtitle"]]
[[!template text="""It was ever since they introduced""" start="00:17:43.440" video="qanda-schemacs" id="subtitle"]]
[[!template text="""lexically scoped variable bindings in Emacs Lisp.""" start="00:17:45.880" video="qanda-schemacs" id="subtitle"]]
[[!template text="""And so yeah, the problem is that""" start="00:17:51.000" video="qanda-schemacs" id="subtitle"]]
[[!template text="""when you create like a let structure""" start="00:17:54.520" video="qanda-schemacs" id="subtitle"]]
[[!template text="""and you could declare a variable in the let.""" start="00:17:59.840" video="qanda-schemacs" id="subtitle"]]
[[!template text="""And then you create inside of that a second let structure,""" start="00:18:01.800" video="qanda-schemacs" id="subtitle"]]
[[!template text="""and you have a lambda inside of that.""" start="00:18:05.400" video="qanda-schemacs" id="subtitle"]]
[[!template text="""And the lambda references or uses a variable""" start="00:18:07.240" video="qanda-schemacs" id="subtitle"]]
[[!template text="""that was declared in the outer let binding.""" start="00:18:11.320" video="qanda-schemacs" id="subtitle"]]
[[!template text="""That outer let binding is somewhere on the stack.""" start="00:18:14.400" video="qanda-schemacs" id="subtitle"]]
[[!template text="""And the lambda you can actually return it as a value.""" start="00:18:18.280" video="qanda-schemacs" id="subtitle"]]
[[!template text="""So when you do return that lambda,""" start="00:18:23.000" video="qanda-schemacs" id="subtitle"]]
[[!template text="""it has to have a note somewhere inside""" start="00:18:25.320" video="qanda-schemacs" id="subtitle"]]
[[!template text="""that says, by the way, I'm using that variable.""" start="00:18:27.680" video="qanda-schemacs" id="subtitle"]]
[[!template text="""So you need to capture it and restore it to the stack""" start="00:18:31.280" video="qanda-schemacs" id="subtitle"]]
[[!template text="""whenever this lambda is applied, whenever you execute it.""" start="00:18:34.360" video="qanda-schemacs" id="subtitle"]]
[[!template text="""And that is where the error is.""" start="00:18:38.200" video="qanda-schemacs" id="subtitle"]]
[[!template text="""It's not capturing the stack variable properly.""" start="00:18:40.960" video="qanda-schemacs" id="subtitle"]]
[[!template text="""And I think what I'm going to do,""" start="00:18:44.400" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I haven't looked into it in detail yet""" start="00:18:46.880" video="qanda-schemacs" id="subtitle"]]
[[!template text="""because I've gone back to GUI stuff recently,""" start="00:18:49.760" video="qanda-schemacs" id="subtitle"]]
[[!template text="""but what I'm going to do, I think,""" start="00:18:53.280" video="qanda-schemacs" id="subtitle"]]
[[!template text="""is just do a static analysis""" start="00:18:55.480" video="qanda-schemacs" id="subtitle"]]
[[!template text="""of the code inside of the Lambda""" start="00:18:57.800" video="qanda-schemacs" id="subtitle"]]
[[!template text="""and see which symbols are being used,""" start="00:18:59.080" video="qanda-schemacs" id="subtitle"]]
[[!template text="""and then just capture all of those""" start="00:19:02.920" video="qanda-schemacs" id="subtitle"]]
[[!template text="""and place those into the record type""" start="00:19:05.080" video="qanda-schemacs" id="subtitle"]]
[[!template text="""that stores the lambda.""" start="00:19:07.560" video="qanda-schemacs" id="subtitle"]]
[[!template text="""That's how I'm going to fix that, I think.""" start="00:19:09.520" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I hope anyway that's going to work.""" start="00:19:12.680" video="qanda-schemacs" id="subtitle"]]
[[!template text="""You never know with bugs.""" start="00:19:16.000" video="qanda-schemacs" id="subtitle"]]
[[!template text="""They're always a little bit tricky. Okay, next question.""" start="00:19:17.240" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Are there performance concerns""" start="00:19:21.760" video="qanda-schemacs" id="subtitle"]]
[[!template text="""with implementing certain C primitives in PeerScheme?""" start="00:19:23.120" video="qanda-schemacs" id="subtitle"]]
[[!template text="""So who is it? The famous computer scientist that said""" start="00:19:28.480" video="qanda-schemacs" id="subtitle"]]
[[!template text="""premature optimization is the root of all evil.""" start="00:19:32.880" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I think it was the guy who invented the A star algorithm.""" start="00:19:35.880" video="qanda-schemacs" id="subtitle"]]
[[!template text="""His name escapes me at the minute.""" start="00:19:39.800" video="qanda-schemacs" id="subtitle"]]
[[!template text="""But yeah, I'm not concerned about performance yet,""" start="00:19:42.720" video="qanda-schemacs" id="subtitle"]]
[[!template text="""although most of the scheme compilers that I have seen,""" start="00:19:49.360" video="qanda-schemacs" id="subtitle"]]
[[!template text="""especially Shea and Gambit""" start="00:19:52.120" video="qanda-schemacs" id="subtitle"]]
[[!template text="""have extremely good performance characteristics.""" start="00:19:57.000" video="qanda-schemacs" id="subtitle"]]
[[!template text="""And so I think there won't be""" start="00:20:02.040" video="qanda-schemacs" id="subtitle"]]
[[!template text="""too much difficulty with performance,""" start="00:20:03.680" video="qanda-schemacs" id="subtitle"]]
[[!template text="""even implementing some of the C stuff.""" start="00:20:05.880" video="qanda-schemacs" id="subtitle"]]
[[!template text="""And besides, a lot of the GUI stuff""" start="00:20:08.760" video="qanda-schemacs" id="subtitle"]]
[[!template text="""is already written in C anyway.""" start="00:20:10.760" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I mean, it would be cool""" start="00:20:12.720" video="qanda-schemacs" id="subtitle"]]
[[!template text="""if we had a scheme GUI library""" start="00:20:14.400" video="qanda-schemacs" id="subtitle"]]
[[!template text="""that painted to a canvas,""" start="00:20:16.880" video="qanda-schemacs" id="subtitle"]]
[[!template text="""maybe for a Wayland implementation or something.""" start="00:20:18.600" video="qanda-schemacs" id="subtitle"]]
[[!template text="""But I don't know. It's not a concern for me, performance.""" start="00:20:21.640" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Okay, there are a few more questions. I do want to mention""" start="00:20:29.080" video="qanda-schemacs" id="subtitle"]]
[[!template text="""that the stream has cut away at this point,""" start="00:20:32.080" video="qanda-schemacs" id="subtitle"]]
[[!template text="""but we're still recording live.""" start="00:20:33.840" video="qanda-schemacs" id="subtitle"]]
[[!template text="""All of this will be put up on the website""" start="00:20:36.280" video="qanda-schemacs" id="subtitle"]]
[[!template text="""and so on like that.""" start="00:20:38.800" video="qanda-schemacs" id="subtitle"]]
[[!template text="""So, I appreciate all the enthusiastic questions""" start="00:20:40.400" video="qanda-schemacs" id="subtitle"]]
[[!template text="""and you're kind of tanking through them all.""" start="00:20:44.200" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Me too. I love how many questions I'm getting.""" start="00:20:47.800" video="qanda-schemacs" id="subtitle"]]
[[!template text="""This is very encouraging""" start="00:20:52.800" video="qanda-schemacs" id="subtitle"]]
[[!template text="""and it really makes me want to keep on working on it.""" start="00:20:54.040" video="qanda-schemacs" id="subtitle"]]
[[!template text="""So it's great.""" start="00:20:56.000" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I'm so glad to hear that because that's exactly the message""" start="00:20:56.880" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I think you should be receiving.""" start="00:21:00.200" video="qanda-schemacs" id="subtitle"]]
[[!template text="""This is a fantastic project. Thank you so much.""" start="00:21:01.440" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I'll just say so myself. If the project is successful,""" start="00:21:04.160" video="qanda-schemacs" id="subtitle"]]
[[!template text="""are you worried about a possible split in the community""" start="00:21:08.440" video="qanda-schemacs" id="subtitle"]]
[[!template text="""between Schemacs and GNU Emacs?""" start="00:21:11.480" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Oh, I have thought about that.""" start="00:21:15.600" video="qanda-schemacs" id="subtitle"]]
[[!template text="""And I really don't know what's going to happen.""" start="00:21:18.960" video="qanda-schemacs" id="subtitle"]]
[[!template text="""There seems to be already a huge demand""" start="00:21:24.040" video="qanda-schemacs" id="subtitle"]]
[[!template text="""for a scheme-based, a modern scheme-based editor.""" start="00:21:26.240" video="qanda-schemacs" id="subtitle"]]
[[!template text="""You know, the Edwin scheme for MIT scheme""" start="00:21:30.440" video="qanda-schemacs" id="subtitle"]]
[[!template text="""hasn't been touched since like 1987 or something,""" start="00:21:33.400" video="qanda-schemacs" id="subtitle"]]
[[!template text="""maybe 1993 or, but anyway.""" start="00:21:37.280" video="qanda-schemacs" id="subtitle"]]
[[!template text="""There seems to be huge demand.""" start="00:21:41.440" video="qanda-schemacs" id="subtitle"]]
[[!template text="""And so I guess a lot of people""" start="00:21:43.160" video="qanda-schemacs" id="subtitle"]]
[[!template text="""who are currently using GNU Emacs""" start="00:21:45.120" video="qanda-schemacs" id="subtitle"]]
[[!template text="""will probably just switch over""" start="00:21:47.680" video="qanda-schemacs" id="subtitle"]]
[[!template text="""because they've been wanting""" start="00:21:49.080" video="qanda-schemacs" id="subtitle"]]
[[!template text="""something like this for a very long time.""" start="00:21:50.480" video="qanda-schemacs" id="subtitle"]]
[[!template text="""And then, I mean, is that going to cause fragmentation?""" start="00:21:53.160" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Is it really a big deal, though?""" start="00:21:56.560" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I mean, it's all GPL-licensed code.""" start="00:21:58.680" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I mean, I think a rising tide raises all the ships at the same time.""" start="00:22:02.480" video="qanda-schemacs" id="subtitle"]]
[[!template text="""So, yeah, also, the last thing I want to say about that""" start="00:22:08.760" video="qanda-schemacs" id="subtitle"]]
[[!template text="""is I would like to contribute some of what I do in Schemacs""" start="00:22:13.280" video="qanda-schemacs" id="subtitle"]]
[[!template text="""back into GNU Emacs, if I can. So, for example, I'm going""" start="00:22:19.000" video="qanda-schemacs" id="subtitle"]]
[[!template text="""to be working on like a canvas library""" start="00:22:24.400" video="qanda-schemacs" id="subtitle"]]
[[!template text="""where you can have interactive canvases""" start="00:22:25.960" video="qanda-schemacs" id="subtitle"]]
[[!template text="""and you know you can actually like draw pictures""" start="00:22:27.880" video="qanda-schemacs" id="subtitle"]]
[[!template text="""and put things with the mouse and drag things around.""" start="00:22:30.880" video="qanda-schemacs" id="subtitle"]]
[[!template text="""And I was thinking you know""" start="00:22:33.560" video="qanda-schemacs" id="subtitle"]]
[[!template text="""if if I can figure out how that works""" start="00:22:36.080" video="qanda-schemacs" id="subtitle"]]
[[!template text="""maybe I can write something like that for Emacs""" start="00:22:37.668" video="qanda-schemacs" id="subtitle"]]
[[!template text="""or GNU Emacs using the Cairo library, you know,""" start="00:22:41.918" video="qanda-schemacs" id="subtitle"]]
[[!template text="""SVG rendering library that they have.""" start="00:22:47.760" video="qanda-schemacs" id="subtitle"]]
[[!template text="""So, you know, if I have time,""" start="00:22:49.320" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I would like to continue contributing to GNU Emacs as well.""" start="00:22:51.320" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I'm sorry, what was the name of the library you mentioned?""" start="00:22:55.800" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Oh, Cairo, like Cairo.""" start="00:22:57.840" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Oh, Cairo, yeah. Absolutely. I spelled that poorly.""" start="00:23:01.040" video="qanda-schemacs" id="subtitle"]]
[[!template text="""The dream of never needing to change to the web browser.""" start="00:23:07.600" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Would schemacs bring us closer to that? I hope so.""" start="00:23:12.520" video="qanda-schemacs" id="subtitle"]]
[[!template text="""That's also a dream of mine.""" start="00:23:18.377" video="qanda-schemacs" id="subtitle"]]
[[!template text="""The part of the reason why I wanted to work, you know,""" start="00:23:21.710" video="qanda-schemacs" id="subtitle"]]
[[!template text="""make sure I had a really good workable GUI framework""" start="00:23:26.480" video="qanda-schemacs" id="subtitle"]]
[[!template text="""is so that I could, you know,""" start="00:23:31.000" video="qanda-schemacs" id="subtitle"]]
[[!template text="""we could write apps like, you know,""" start="00:23:32.627" video="qanda-schemacs" id="subtitle"]]
[[!template text="""they have a mastodon client written in Emacs Lisp.""" start="00:23:34.880" video="qanda-schemacs" id="subtitle"]]
[[!template text="""that would be so nice to have this, you know,""" start="00:23:38.760" video="qanda-schemacs" id="subtitle"]]
[[!template text="""a really nice Mastodon client""" start="00:23:42.200" video="qanda-schemacs" id="subtitle"]]
[[!template text="""that was right inside of, you know, our scheme environment""" start="00:23:43.440" video="qanda-schemacs" id="subtitle"]]
[[!template text="""where we were doing our text editing and other stuff.""" start="00:23:47.480" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I've always wanted something like that,""" start="00:23:50.040" video="qanda-schemacs" id="subtitle"]]
[[!template text="""or it would be cool to have""" start="00:23:52.080" video="qanda-schemacs" id="subtitle"]]
[[!template text="""just a slightly nicer GUI for Magit.""" start="00:23:53.800" video="qanda-schemacs" id="subtitle"]]
[[!template text="""So, yeah, I mean, like, yeah, being able to avoid the web entirely""" start="00:23:56.320" video="qanda-schemacs" id="subtitle"]]
[[!template text="""and just be able to like, you know, do social networking""" start="00:24:04.200" video="qanda-schemacs" id="subtitle"]]
[[!template text="""and do your GitHub stuff,""" start="00:24:08.200" video="qanda-schemacs" id="subtitle"]]
[[!template text="""everything from within Emacs or Schemacs in this case,""" start="00:24:11.440" video="qanda-schemacs" id="subtitle"]]
[[!template text="""that's a dream of mine as well.""" start="00:24:14.760" video="qanda-schemacs" id="subtitle"]]
[[!template text="""And so I hope that that's where we end up in a couple of years.""" start="00:24:16.920" video="qanda-schemacs" id="subtitle"]]
[[!template text="""The sooner the better. Anything, just double checking.""" start="00:24:20.080" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Anything specific other than minimalism""" start="00:24:30.000" video="qanda-schemacs" id="subtitle"]]
[[!template text="""that made you choose Scheme over Commonwealth?""" start="00:24:33.320" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Oh, yeah, it's kind of a philosophical question.""" start="00:24:35.800" video="qanda-schemacs" id="subtitle"]]
[[!template text="""So a couple of things. First of all, it was a conversation""" start="00:24:40.200" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I had with William Byrd,""" start="00:24:45.560" video="qanda-schemacs" id="subtitle"]]
[[!template text="""and he's a guy who makes the Mini Conran framework for Scheme.""" start="00:24:47.400" video="qanda-schemacs" id="subtitle"]]
[[!template text="""It was his PhD thesis.""" start="00:24:50.520" video="qanda-schemacs" id="subtitle"]]
[[!template text="""He worked with, I'm sorry, I just can't remember his name.""" start="00:24:52.880" video="qanda-schemacs" id="subtitle"]]
[[!template text="""He worked at the University of Indiana.""" start="00:24:57.120" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Another famous Scheme or Lisp person was there.""" start="00:24:59.680" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Friedman, Dan Friedman was his advisor.""" start="00:25:03.840" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Yeah, big name in Lisp.""" start="00:25:06.280" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Anyway, so I was talking with William Byrd,""" start="00:25:09.160" video="qanda-schemacs" id="subtitle"]]
[[!template text="""and I'm a huge Haskell fan,""" start="00:25:12.840" video="qanda-schemacs" id="subtitle"]]
[[!template text="""and he told me why he didn't like Haskell at all,""" start="00:25:14.640" video="qanda-schemacs" id="subtitle"]]
[[!template text="""and kind of convinced me to try Scheme out.""" start="00:25:16.920" video="qanda-schemacs" id="subtitle"]]
[[!template text="""And what I really like about Scheme is,""" start="00:25:19.640" video="qanda-schemacs" id="subtitle"]]
[[!template text="""yeah, like you said, the minimalism,""" start="00:25:22.760" video="qanda-schemacs" id="subtitle"]]
[[!template text="""but it's more that it is very close""" start="00:25:25.400" video="qanda-schemacs" id="subtitle"]]
[[!template text="""to the mathematical framework of lambda calculus.""" start="00:25:29.840" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Haskell is probably the most pure""" start="00:25:34.880" video="qanda-schemacs" id="subtitle"]]
[[!template text="""lambda calculus that I've ever used,""" start="00:25:38.520" video="qanda-schemacs" id="subtitle"]]
[[!template text="""but Scheme is like the simply typed lambda calculus,""" start="00:25:39.920" video="qanda-schemacs" id="subtitle"]]
[[!template text="""and That just appeals to me.""" start="00:25:45.520" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I think, you know, if you have this tiny, tiny core language""" start="00:25:47.800" video="qanda-schemacs" id="subtitle"]]
[[!template text="""from which all of the computing can be defined,""" start="00:25:50.840" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I think it's kind of a shame""" start="00:25:55.600" video="qanda-schemacs" id="subtitle"]]
[[!template text="""that so far we just haven't explored that space yet.""" start="00:25:57.120" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I mean, there's compared to JavaScript or Python,""" start="00:26:00.080" video="qanda-schemacs" id="subtitle"]]
[[!template text="""there's very little scheme code out there""" start="00:26:03.640" video="qanda-schemacs" id="subtitle"]]
[[!template text="""and it could be doing so much. And I would just like to try""" start="00:26:05.880" video="qanda-schemacs" id="subtitle"]]
[[!template text="""and expand the scheme ecosystem""" start="00:26:08.240" video="qanda-schemacs" id="subtitle"]]
[[!template text="""and see just what this tiny little language can do.""" start="00:26:10.160" video="qanda-schemacs" id="subtitle"]]
[[!template text="""And I think we haven't even seen""" start="00:26:13.000" video="qanda-schemacs" id="subtitle"]]
[[!template text="""a fraction of what it can do.""" start="00:26:14.480" video="qanda-schemacs" id="subtitle"]]
[[!template text="""That's why I've chosen scheme.""" start="00:26:16.840" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Divya, I see you've got a bunch more comments.""" start="00:26:22.400" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I think we're just about close to our time here,""" start="00:26:24.720" video="qanda-schemacs" id="subtitle"]]
[[!template text="""but if you wanted to jump back in,""" start="00:26:26.680" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I'm sorry, I had to cut you off a little before.""" start="00:26:28.280" video="qanda-schemacs" id="subtitle"]]
[[!template text="""No, it's fine. No, it's fine.""" start="00:26:30.520" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I think I agree with most of what he said.""" start="00:26:33.960" video="qanda-schemacs" id="subtitle"]]
[[!template text="""So, yeah, thank you so much.""" start="00:26:36.600" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Um, closing thoughts, Ramin.""" start="00:26:40.680" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Yeah, I guess everybody, please, if you're interested,""" start="00:26:45.160" video="qanda-schemacs" id="subtitle"]]
[[!template text="""keep watching my Mastodon and keep watching my Codeberg.""" start="00:26:51.640" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I'm going to try and squash this bug as quickly as I can.""" start="00:26:56.720" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I hope early next year,""" start="00:27:01.560" video="qanda-schemacs" id="subtitle"]]
[[!template text="""hopefully not much later than February,""" start="00:27:03.280" video="qanda-schemacs" id="subtitle"]]
[[!template text="""I'll actually be able to start taking in contributions""" start="00:27:07.520" video="qanda-schemacs" id="subtitle"]]
[[!template text="""for some of the Emacs Lisp built-ins in the code base.""" start="00:27:12.040" video="qanda-schemacs" id="subtitle"]]
[[!template text="""So, please keep watching. The pace of my development""" start="00:27:16.720" video="qanda-schemacs" id="subtitle"]]
[[!template text="""has increased pretty rapidly recently,""" start="00:27:21.960" video="qanda-schemacs" id="subtitle"]]
[[!template text="""and I think we're pretty close""" start="00:27:24.280" video="qanda-schemacs" id="subtitle"]]
[[!template text="""to getting something that we can all use together.""" start="00:27:25.840" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Thank you once again for your amazing talk,""" start="00:27:29.120" video="qanda-schemacs" id="subtitle"]]
[[!template text="""for your exceptional work,""" start="00:27:31.720" video="qanda-schemacs" id="subtitle"]]
[[!template text="""and for jumping in, doing the live Q&A,""" start="00:27:34.040" video="qanda-schemacs" id="subtitle"]]
[[!template text="""rolling with us here as we have yet another""" start="00:27:36.600" video="qanda-schemacs" id="subtitle"]]
[[!template text="""We'll See How It Goes conference.""" start="00:27:40.040" video="qanda-schemacs" id="subtitle"]]
[[!template text="""It's been just amazing so far,""" start="00:27:42.080" video="qanda-schemacs" id="subtitle"]]
[[!template text="""and this talk is no small part of that. Thank you.""" start="00:27:44.280" video="qanda-schemacs" id="subtitle"]]
[[!template text="""Oh, thank you so much. Yeah. OK, cool.""" start="00:27:46.840" video="qanda-schemacs" id="subtitle"]]
[[!template text="""And thanks for all the questions, everyone.""" start="00:27:50.280" video="qanda-schemacs" 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%20schemacs%3A%20One%20year%20progress%20update%20Schemacs%20%28formerly%20Gypsum%29)


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