summaryrefslogtreecommitdiffstats
path: root/2023/organizers-notebook.md
blob: 8fe6916b16ada78020dd4295345f5b60efef53c4 (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
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
<!-- organizers-notebook.md is exported from organizers-notebook/index.org, please modify that instead. -->
[[!sidebar content=""]]

This file is automatically exported from [/2023/organizers-notebook/index.org](/2023/organizers-notebook/index.org). You might prefer to navigate this as an Org file instead. To do so, [clone the wiki repository](https://emacsconf.org/edit/).

Help wanted:

-   [Find volunteers for audio processing (normalization, noise reduction) and document the process](#audio)
-   [Video editing: the eval talk is a little bit out of sync](#eval-video-sync) (by 2023-11-15 Wed)

Help wanted:

-   [Figure out a better way to handle 480p stream](#lowres)


# Table of Contents

-   [Timeline](#timeline)
    -   [Dry run](#dry-run)
    -   [Dry run with more volunteers](#dry-run-2)
-   [About this document](#about-this-doc)
-   [Communications plan](#comms)
    -   [Next emacsconf-org update](#emacsconf-org-2023-10-21)
-   [Good/better/best](#good-better-best)
-   [Phases](#phases)
    -   [Draft CFP](#cfp)
    -   [Distribute CFP](#distrib-cfp)
    -   [Process submissions](#submission-process)
    -   [Draft schedule for EmacsConf 2023](#draft-schedule)
    -   [Prepare for the conference](#status)
    -   [Get ready for production](#go-live):preflight:
    -   [Harvest cool stuff](#org45dfd5e)
    -   [Make things easier for next year](#org3dd5255)
    -   [Volunteers](#coordinate-volunteers)
    -   [Lessons learned](#org5fa50a9)
-   [Progress reports](#progress)
-   [E-mail templates](#templates)
    -   [Review](#review)
    -   [Acceptance](#acceptance)
-   [Archive](#archive)
    -   [Check with hyperdrive and core if they&rsquo;re willing to swap](#hyperdrive-core):decision:
    -   [Test the idea of three tracks and more aligned times](#three-tracks):decision:


<a id="timeline"></a>

# Timeline

<table>


<colgroup>
<col  class="org-left">

<col  class="org-left">
</colgroup>
<tbody>
<tr>
<td class="org-left">CFP</td>
<td class="org-left"><span class="timestamp-wrapper"><span class="timestamp">[2023-06-26 Mon]</span></span></td>
</tr>


<tr>
<td class="org-left">CFP deadline</td>
<td class="org-left"><span class="timestamp-wrapper"><span class="timestamp">[2023-09-14 Thu]</span></span></td>
</tr>


<tr>
<td class="org-left">Speaker notifications</td>
<td class="org-left"><span class="timestamp-wrapper"><span class="timestamp">[2023-09-25 Mon]</span></span></td>
</tr>


<tr>
<td class="org-left"><b>Publish schedule</b></td>
<td class="org-left"><span class="timestamp-wrapper"><span class="timestamp">[2023-10-25 Wed]</span></span></td>
</tr>


<tr>
<td class="org-left">Video submission deadline</td>
<td class="org-left"><span class="timestamp-wrapper"><span class="timestamp">[2023-11-04 Sat]</span></span></td>
</tr>


<tr>
<td class="org-left">EmacsConf</td>
<td class="org-left"><span class="timestamp-wrapper"><span class="timestamp">[2023-12-02 Sat]</span></span>, <span class="timestamp-wrapper"><span class="timestamp">[2023-12-03 Sun]</span></span></td>
</tr>
</tbody>
</table>

Last year, these were the actual dates:

-   July 17: CFP sent
-   Sept 18: Original CFP deadline
-   Sept 30: CFP closed after extension
-   Oct 1: acceptances sent


<a id="dry-run"></a>

## TODO Dry run


<a id="dry-run-2"></a>

## TODO Dry run with more volunteers


<a id="about-this-doc"></a>

# About this document

Tags:

-   `conforg`: Requires access to private conf.org repository


<a id="comms"></a>

# Communications plan

Objectives:

-   keep everyone in the loop without them feeling like they&rsquo;re overloaded

Speakers:

-   [X] Send all speakers backstage access and upload instructions
-   [ ] Send all speakers check-in instructions

Volunteers:

-   [X] Send captioning volunteers the backstage info
-   [ ] Send past captioning volunteers an invitation to participate - ask when there&rsquo;s a lot of load
-   [ ] Ask for help with audio processing


<a id="emacsconf-org-2023-10-21"></a>

## Next emacsconf-org update

backstage

volunteers

help wanted:

audio processing

intros


<a id="good-better-best"></a>

# Good/better/best

This table makes it easier to move the slider depending on who wants
to volunteer and how much we can get done. At some point, we&rsquo;ll figure
out how to track our current status so we know what we need to
scramble to do in order to get the conference off the ground. **bold**
is our current goal. Feel free to volunteer for anything that
interests you!

<table>


<colgroup>
<col  class="org-left">

<col  class="org-left">

<col  class="org-left">

<col  class="org-left">
</colgroup>
<tbody>
<tr>
<td class="org-left">&#xa0;</td>
<td class="org-left">Good</td>
<td class="org-left">Better</td>
<td class="org-left">Best</td>
</tr>


<tr>
<td class="org-left">Autopilot</td>
<td class="org-left">offset TRAMP timers</td>
<td class="org-left">Crontab</td>
<td class="org-left">Can be toggled</td>
</tr>


<tr>
<td class="org-left">480p</td>
<td class="org-left">Someone&rsquo;s computer</td>
<td class="org-left">Separate node</td>
<td class="org-left">Ansible setup</td>
</tr>


<tr>
<td class="org-left">Watch instructions</td>
<td class="org-left">Embed</td>
<td class="org-left">Reminder to prefer mpv</td>
<td class="org-left">&#xa0;</td>
</tr>


<tr>
<td class="org-left">Audio</td>
<td class="org-left">As is</td>
<td class="org-left">Normalized</td>
<td class="org-left">Noise reduction</td>
</tr>


<tr>
<td class="org-left">Intros</td>
<td class="org-left">Standard, recorded</td>
<td class="org-left">Reviewed by speakers in backstage</td>
<td class="org-left">More details/context</td>
</tr>
</tbody>
</table>


<a id="phases"></a>

# Phases


<a id="cfp"></a>

## DONE Draft CFP


### How to mark pages as drafts

Put inside double square brackets: `!template id=pagedraft`


### Considerations

We could see if there are parts of the CFP that we can remove or
postpone. Here are some thoughts:

-   We might not need the 10+20+40 structure in the proposal. We did
    that before because people tend to propose longer talks, and we had
    to do lots of e-mail coordination in order to squeeze everything
    into one track. If we&rsquo;re doing multiple streams, there&rsquo;s less time
    pressure, so we might not need to confuse people with those
    requirements. I think it would still be good to nudge people towards
    20 minutes for their prerecorded presentations (separate time for
    Q&A) instead of 40 minutes, because it&rsquo;s good for people&rsquo;s attention
    spans. As an incentive to consider a 5-10 minute talk, we can say
    that 5-10 minute videos can be played extra times during the
    conference to fill gaps.
    -   Choices:
        -   Keep the 10+20+40 structure so that people who want to propose
            longer talks are nudged to think about shorter versions
        -   Strongly nudge people towards 20-minute talks, with repeats as
            the incentive for shorter talks and extra coordination/waiting
            needed for longer talks. People propose just the talk length
            they want (and can optionally propose other talk lengths if they
            want to be considered for them).
-   We added emergency contact info, public contact info, pronouns, and
    introduction to the submission form because we ended up going back
    and forth with people in previous years, and sometimes we had
    incomplete info and were panicking about how to reach people during
    the conference. We could drop this from the submission form and do a
    separate speaker information form.
    -   Choices:
        -   Talk submission, then speaker information form: less
            intimidating for speakers
        -   Everything in one: easier for organizers


### Previous years

-   Ask for public e-mail or contact information, IRC handle in CFP
    -   Added to submit page.
-   Be even more stringent about the 10/20/40-min splits. A lot of
    speakers still default to the 20- or 40-min formats without
    providing us shorter formats, and that puts strain on our schedule
    and requires us to use a different template for the notification
    (which can be confusing). We need to stress that not respecting the
    format makes it harder not only for the organizers, but also for the
    speakers themselves (since they will have to rethink their
    presentation). Maybe we can have an e-mail template for a quick
    reply that says something like &ldquo;Just in case we need to squeeze
    talks into shorter times, could you please also propose an outline
    for a possible 10-minute talk that could get people interested in
    your topic and point them to where they can find out more?&rdquo;
    -   sachac: I&rsquo;d love to experiment with rolling acceptances. If people
        have a good 10-20 minute version of their talk and we want to
        accept it in the program, it would be nice to be able to say yes
        early so that they can start working on it. We can work with any
        duplication of content in later proposals.
-   Two people is the sweet number of reviewers to have for the
    proposals before sending the notifications, and there’d be
    diminishing returns with more. Two is enough to release the pressure
    on SCHED, verify the metadata (esp. speaker availability), and
    suggest a different ordering where appropriate. It can take a long
    time to comb through the proposals (roughly 10 proposals per hour),
    and whilst it’d be difficult to justify more in-depth reviewers,
    other orgas can do a shallow-pass to catch red-flags or discuss the
    submissions as they come in. Other organizers can always chime in on
    topics they particularly care about so that their encouraging
    comments or suggestions can be included in the acceptance e-mail.
    -   sachac: Who wants to help me with this?
-   We extended CFP-end by two weeks this year, but that made it coincide
    with speaker-notifs, and that’s awkward.  Next time, we should only
    extend the CFP by one week to avoid having to scramble with the
    schedule until the very last day.
    -   Proposed dates in <https://emacsconf.org/2023/cfp/> have similar
        spacing, so yeah, we&rsquo;ll want to extend by only one week.
-   Some people assume that they have to suggest longer formats even if
    they intend their talks to be 10′ or 20′.  We should change the
    wording on the CFP to ask them to only provide alternatives for
    shorter formats, not longer.
    -   Added a brief note to CFP.
-   It was hard to squeeze all the org/hyperbole talk on day-1.
    Generally, the people who submit these kinds of talk come from all
    over the world, and US mornings are more accommodating than US
    evenings when it comes to timezones.  We might consider having two org
    **mornings** rather than an org **day**; it would give us more flexibility
    with those talks.
    -   Let&rsquo;s see if we can do two streams again. That was fun.
-   We’re starting to reach critical mass on the org-talks.  We might want
    to consider splitting the org-talks and the dev-talks into two
    distinct events to allow them to grow independently.
    -   Let&rsquo;s see if we can do two streams again. That was fun.
-   We should associate time-of-day with CFP-deadline; otherwise, the
    scheduler has to be on edge until the very end of the day.  It’s worse
    this year because we made CFP-end coincide with speaker-notif, so this
    might not be as much of a problem next year.
    -   If we do rolling acceptances and we extend by at most one week
        instead of two, this should be fine.
-   It’s easier for us to extend beyond 5pm than to go before 9am
    (especially for the West coast).  Extending beyond 5pm puts strain on
    European organizers and volunteers, though.
    -   Time pressure should be alleviated with multiple streams.
-   Sometimes, ikiwiki on front0 took a lot of time to process the new
    commits.  sachac assumed this is due to a faulty regex parsing.  We
    should be able to find out more by looking at the logs from ikiwiki
    after a slow commit.
    -   Seems speedy at the moment.
-   Ask for preferred timezone in CFP
    -   Added to availability.
-   Check with John Wiegley re: schedule - we always happen to coincide
    with his work trips
    -   I checked with him and the people at his work don&rsquo;t have a schedule
        yet, so we should go ahead and plan


### Lessons learned for next year

-   Maybe incentivize proper timezone specification by saying we can translate times to their local time?
-   Make sure to include cfp.org as an attachment instead of inline


### Other thoughts

-   sachac: bandali likes having the commitment to freedom section in the CFP as a form of activism
-   sachac: I thought about pulling the deadline back to Sept 1, but it might be
    good to keep it at Sept 14 so that anyone who tends to work with the
    schoolyear can still have a little time to work on it.


<a id="distrib-cfp"></a>

## DONE Distribute CFP


### DONE Add proposal review volunteers to emacsconf-submit

-   <https://lists.gnu.org/mailman/admin/emacsconf-submit/members/add>
-   Ask volunteers to e-mail an SSH public key so they can be added via the gitolite-admin repo to the conf.org repo for the year


### First announcement

-   Remove draft tags                                       :sachac:
-   Post on emacsconf-discuss, emacs-tangents               :bandali: :zaeph:
-   Sticky on reddit.com/r/emacs
-   Post in Emacs News                                           :sachac:


### Reminder


<a id="submission-process"></a>

## DONE Process submissions

-   Proposal received: sachac adds it to this document with status of PROPOSED
    -   Fields:
        
            EMERGENCY, Q_AND_A, AVAILABILITY, NAME, PRONOUNS, TIME, MIN_TIME, MAX_TIME, SLUG, EMAIL, NAME_SHORT, CUSTOM_ID, TRACK, TIMEZONE, CATEGORY, DATE_SUBMITTED
-   jc doublechecks that the data has been correctly captured (especially EMAIL and AVAILABILITY)
-   People review it (sachac, jc, etc.) and weigh in
-   Proposal accepted: sachac e-mails the speaker and sets status to WAITING\_FOR\_EMAIL\_CONFIRM
-   E-mail confirmation received: log it in the logbook
-   Schedule set: sachac e-mails the speaker and sets status to WAITING\_FOR\_SCHED\_CONFIRM


### 2023-08-14 EmacsConf 2023 CFP progress report (8 talks accepted so far, 1 to review, 6 todo)

The end of the EmacsConf 2023 call for participation is one month away
(Sept 14; <https://emacsconf.org/2023/cfp/>). Whee! So far, we&rsquo;ve sent
early acceptances to the following talks and added them to the program
on the wiki (<https://emacsconf.org/2023/talks>):

<table>


<colgroup>
<col  class="org-right">

<col  class="org-left">

<col  class="org-left">
</colgroup>
<tbody>
<tr>
<td class="org-right">Duration</td>
<td class="org-left">Title</td>
<td class="org-left">Speaker</td>
</tr>


<tr>
<td class="org-right">10</td>
<td class="org-left">An Org-Mode based text adventure game for learning the basics of Emacs, inside Emacs, written in Emacs Lisp</td>
<td class="org-left">Chung-hong Chan</td>
</tr>


<tr>
<td class="org-right">20</td>
<td class="org-left">Authoring and presenting university courses with Emacs and a full libre software stack</td>
<td class="org-left">James Howell</td>
</tr>


<tr>
<td class="org-right">20</td>
<td class="org-left">Org-Mode workflow: informal reference tracking</td>
<td class="org-left">Christopher Howard</td>
</tr>


<tr>
<td class="org-right">20</td>
<td class="org-left">GNU Emacs for electronics, note-taking, and as lightweight IDE</td>
<td class="org-left">Anand Tamariya</td>
</tr>


<tr>
<td class="org-right">10</td>
<td class="org-left">A modern Emacs look-and-feel without pain</td>
<td class="org-left">Pedro A. Aranda</td>
</tr>


<tr>
<td class="org-right">10</td>
<td class="org-left">Writing a language server in OCaml for Emacs, fun, and profit</td>
<td class="org-left">Austin Theriault</td>
</tr>


<tr>
<td class="org-right">20</td>
<td class="org-left">LLM clients in Emacs, functionality and standardization</td>
<td class="org-left">Andrew Hyatt</td>
</tr>


<tr>
<td class="org-right">10</td>
<td class="org-left">The many ways to browse Hacker News from Emacs</td>
<td class="org-left">Mickael Kerjean</td>
</tr>
</tbody>
</table>

We sent the speakers <https://emacsconf.org/2023/prepare/> in case
anyone wants to get started on their presentations.

There&rsquo;s one talk that&rsquo;s waiting for feedback on the emacsconf-submit
before we send the early acceptance in about a week:

<table>


<colgroup>
<col  class="org-right">

<col  class="org-left">

<col  class="org-left">
</colgroup>
<tbody>
<tr>
<td class="org-right">Duration</td>
<td class="org-left">Title</td>
<td class="org-left">Speaker</td>
</tr>


<tr>
<td class="org-right">20</td>
<td class="org-left">one.el: the static site generator for Emacs Lisp Programmers</td>
<td class="org-left">Tony Aldon</td>
</tr>
</tbody>
</table>

There are several talk proposals that are in progress (need to
coordinate, don&rsquo;t have speaker releases / full details / etc.):

<table>


<colgroup>
<col  class="org-left">

<col  class="org-left">
</colgroup>
<tbody>
<tr>
<td class="org-left">Title</td>
<td class="org-left">Speaker</td>
</tr>


<tr>
<td class="org-left">Emacs MultiMedia System (EMMS)</td>
<td class="org-left">Yoni Rabkin</td>
</tr>


<tr>
<td class="org-left">Emacs development updates</td>
<td class="org-left">John Wiegley</td>
</tr>


<tr>
<td class="org-left">Watch Over Our Folders</td>
<td class="org-left">Bastien Guerry</td>
</tr>


<tr>
<td class="org-left">Emacs community information sharing?</td>
<td class="org-left">Jake B</td>
</tr>


<tr>
<td class="org-left">Emacs saves the Web</td>
<td class="org-left">Yuchen Pei</td>
</tr>


<tr>
<td class="org-left">How to build an Emacs 2: Revenge of the Lem</td>
<td class="org-left">Fermin</td>
</tr>
</tbody>
</table>

This time last year, we had 2 proposals, with most of the proposals
coming in at the end of the CFP. This was usually when we started
panicking about not having lots of proposals, but I think we can skip
stressing about it this year. <laugh> Even with the program as it is
now, we&rsquo;d already have a pretty fun EmacsConf. Can&rsquo;t wait to see what
it&rsquo;ll look like when more people get their proposals in!

bandali, maybe we can do a 1-month and/or 2-week reminder about the
CFP deadline? I&rsquo;d like to see if we can get away without officially
extending the CFP this time.

Sacha


### Lessons learned from the CFP acceptance phase     :lessons:

-   Early acceptances are nice. A few got comments within the 1-week
    period, which helped refine the talk idea more. We probably don&rsquo;t
    need to make this a 2-week review period.
-   It&rsquo;s a good idea to send the review and acceptance e-mails even to
    fellow organizers/volunteers, even if they&rsquo;re quite familiar with
    the page already. =)
-   We successfully didn&rsquo;t panic about submissions, yay! It was nice to
    be able to draft schedules as we went along, and to compare the
    dates with last year&rsquo;s trends.
-   I added some more automation for including a template in a mail
    reply. Changing the subject to `EmacsConf 2023 acceptance: talk
      title` made it easier to verify that talks had been responded to.
-   I added `emacsconf-mail-add-submission` for parsing submissions from
    e-mail and adding them to `emacsconf-org-file`. That was nice
    because it automatically saved `EMAIL`, `DATE_SUBMITTED`, and
    `DATE_TO_NOTIFY`.
-   Displaying the schedule as a list with time constraints made it
    easier to verify the time constraints and to see how I can fix
    errors.
-   Drafting the schedule in the public organizers notebook was nice
    because I could share that with the speakers and other volunteers.


### DONE E-mail the speakers the upload and backstage instructions


### Handling a late submission

doc

-   [ ] Add talk entry to conf.org
-   [ ] Add talk to schedule in organizers notebook
-   [ ] Add talk to the wiki
-   [ ] Send speaker backstage information, upload information, and schedule
-   [ ] Create BBB room
-   [ ] Record intro


<a id="draft-schedule"></a>

## Draft schedule for EmacsConf 2023

These times are in EST (GMT-5).

<svg width="800" height="300" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Graphical view of the schedule</title> <g transform="translate(0,0)"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="https://emacsconf.org/2023/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title>  9:00- 9:10 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="lightblue"></rect> <g transform="translate(13,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="https://emacsconf.org/2023/talks/adventure" title="An Org-Mode based text adventure game for learning the basics of Emacs, inside Emacs, written in Emacs Lisp" data-slug="adventure"> <title>  9:10- 9:20 An Org-Mode based text adventure game for learning the basics of Emacs, inside Emacs, written in Emacs Lisp</title> <rect x="15" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="lightblue"></rect> <g transform="translate(28,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> adventure</text></g></a> <a href="https://emacsconf.org/2023/talks/uni" title="Authoring and presenting university courses with Emacs and a full libre software stack" data-slug="uni"> <title>  9:30- 9:50 Authoring and presenting university courses with Emacs and a full libre software stack</title> <rect x="47" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(76,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> uni</text></g></a> <a href="https://emacsconf.org/2023/talks/teaching" title="Teaching computer and data science with literate programming tools" data-slug="teaching"> <title> 10:05-10:25 Teaching computer and data science with literate programming tools</title> <rect x="101" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(130,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> teaching</text></g></a> <a href="https://emacsconf.org/2023/talks/table" title="Who needs Excel? Managing your students qualifications with org-table" data-slug="table"> <title> 10:40-10:50 Who needs Excel? Managing your students qualifications with org-table</title> <rect x="156" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="lightblue"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> table</text></g></a> <a href="https://emacsconf.org/2023/talks/one" title="one.el: the static site generator for Emacs Lisp Programmers" data-slug="one"> <title> 11:30-11:50 one.el: the static site generator for Emacs Lisp Programmers</title> <rect x="235" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(264,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> one</text></g></a> <a href="https://emacsconf.org/2023/talks/writing" title="Emacs turbo-charges my writing" data-slug="writing"> <title>  1:00- 1:10 Emacs turbo-charges my writing</title> <rect x="376" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(389,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> writing</text></g></a> <a href="https://emacsconf.org/2023/talks/nabokov" title="Why Nabokov would use Org-Mode if he were writing today" data-slug="nabokov"> <title>  1:25- 1:35 Why Nabokov would use Org-Mode if he were writing today</title> <rect x="415" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(428,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> nabokov</text></g></a> <a href="https://emacsconf.org/2023/talks/collab" title="Collaborative data processing and documenting using org-babel" data-slug="collab"> <title>  1:50- 2:10 Collaborative data processing and documenting using org-babel</title> <rect x="454" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="lightblue"></rect> <g transform="translate(483,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> collab</text></g></a> <a href="https://emacsconf.org/2023/talks/solo" title="How I play TTRPGs in Emacs" data-slug="solo"> <title>  2:20- 2:40 How I play TTRPGs in Emacs</title> <rect x="501" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(530,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> solo</text></g></a> <a href="https://emacsconf.org/2023/talks/ref" title="Org-Mode workflow: informal reference tracking" data-slug="ref"> <title>  2:55- 3:15 Org-Mode workflow: informal reference tracking</title> <rect x="556" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="lightblue"></rect> <g transform="translate(585,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> ref</text></g></a> <a href="https://emacsconf.org/2023/talks/unentangling" title="(Un)entangling projects and repos" data-slug="unentangling"> <title>  3:25- 3:35 (Un)entangling projects and repos</title> <rect x="603" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="palegoldenrod"></rect> <g transform="translate(616,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> unentangling</text></g></a> <a href="https://emacsconf.org/2023/talks/devel" title="Emacs development updates" data-slug="devel"> <title>  3:45- 3:55 Emacs development updates</title> <rect x="635" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(648,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="https://emacsconf.org/2023/talks/core" title="Emacs core development: how it works" data-slug="core"> <title>  4:10- 4:50 Emacs core development: how it works</title> <rect x="674" y="15" opacity="0.8" width="62" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(734,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> core</text></g></a> <a href="https://emacsconf.org/2023/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title>  5:05- 5:15 Saturday closing remarks</title> <rect x="760" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(773,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="https://emacsconf.org/2023/talks/matplotllm" title="MatplotLLM, iterative natural language data visualization in org-babel" data-slug="matplotllm"> <title> 10:00-10:10 MatplotLLM, iterative natural language data visualization in org-babel</title> <rect x="94" y="75" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="lightblue"></rect> <g transform="translate(107,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> matplotllm</text></g></a> <a href="https://emacsconf.org/2023/talks/voice" title="Enhancing productivity with voice computing" data-slug="voice"> <title> 10:20-10:40 Enhancing productivity with voice computing</title> <rect x="125" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="palegoldenrod"></rect> <g transform="translate(154,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> voice</text></g></a> <a href="https://emacsconf.org/2023/talks/llm" title="LLM clients in Emacs, functionality and standardization" data-slug="llm"> <title> 10:55-11:15 LLM clients in Emacs, functionality and standardization</title> <rect x="180" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> llm</text></g></a> <a href="https://emacsconf.org/2023/talks/overlay" title="Improving compiler diagnostics with overlays" data-slug="overlay"> <title>  1:00- 1:20 Improving compiler diagnostics with overlays</title> <rect x="376" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(405,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> overlay</text></g></a> <a href="https://emacsconf.org/2023/talks/eval" title="Editor Integrated REPL Driven Development for all languages" data-slug="eval"> <title>  1:35- 1:45 Editor Integrated REPL Driven Development for all languages</title> <rect x="431" y="75" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="lightblue"></rect> <g transform="translate(444,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eval</text></g></a> <a href="https://emacsconf.org/2023/talks/repl" title="REPLs in strange places: Lua, LaTeX, LPeg, LPegRex, TikZ" data-slug="repl"> <title>  2:00- 3:00 REPLs in strange places: Lua, LaTeX, LPeg, LPegRex, TikZ</title> <rect x="470" y="75" opacity="0.8" width="94" height="59" stroke="black" stroke-dasharray="5,5,5" fill="palegoldenrod"></rect> <g transform="translate(562,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> repl</text></g></a> <a href="https://emacsconf.org/2023/talks/doc" title="Literate Documentation with Emacs and Org Mode" data-slug="doc"> <title>  3:10- 3:50 Literate Documentation with Emacs and Org Mode</title> <rect x="580" y="75" opacity="0.8" width="62" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(640,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> doc</text></g></a> <a href="https://emacsconf.org/2023/talks/windows" title="Windows into Freedom" data-slug="windows"> <title>  4:05- 4:45 Windows into Freedom</title> <rect x="666" y="75" opacity="0.8" width="62" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(726,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> windows</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></g> <g transform="translate(0,150)"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="https://emacsconf.org/2023/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title>  8:59- 9:04 Sunday opening remarks</title> <rect x="-2" y="15" opacity="0.8" width="7" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(3,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="https://emacsconf.org/2023/talks/hyperamp" title="Top 10 ways Hyperbole amps up Emacs" data-slug="hyperamp"> <title>  9:05- 9:25 Top 10 ways Hyperbole amps up Emacs</title> <rect x="7" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperamp</text></g></a> <a href="https://emacsconf.org/2023/talks/koutline" title="Using Koutline for stream of thought journaling" data-slug="koutline"> <title>  9:40-10:00 Using Koutline for stream of thought journaling</title> <rect x="62" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(91,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> koutline</text></g></a> <a href="https://emacsconf.org/2023/talks/parallel" title="Parallel text replacement" data-slug="parallel"> <title> 10:10-10:25 Parallel text replacement</title> <rect x="109" y="15" opacity="0.8" width="23" height="59" stroke="black" stroke-dasharray="" fill="palegoldenrod"></rect> <g transform="translate(130,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> parallel</text></g></a> <a href="https://emacsconf.org/2023/talks/eat" title="Eat and Eat powered Eshell, fast featureful terminal inside Emacs" data-slug="eat"> <title> 10:35-10:45 Eat and Eat powered Eshell, fast featureful terminal inside Emacs</title> <rect x="149" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="palegoldenrod"></rect> <g transform="translate(162,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eat</text></g></a> <a href="https://emacsconf.org/2023/talks/poltys" title="The browser in a buffer" data-slug="poltys"> <title> 11:00-11:20 The browser in a buffer</title> <rect x="188" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(217,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> poltys</text></g></a> <a href="https://emacsconf.org/2023/talks/cubing" title="Speedcubing in Emacs" data-slug="cubing"> <title> 11:35-11:55 Speedcubing in Emacs</title> <rect x="243" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="lightblue"></rect> <g transform="translate(272,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> cubing</text></g></a> <a href="https://emacsconf.org/2023/talks/emms" title="Emacs MultiMedia System (EMMS)" data-slug="emms"> <title>  1:00- 1:40 Emacs MultiMedia System (EMMS)</title> <rect x="376" y="15" opacity="0.8" width="62" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(436,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> emms</text></g></a> <a href="https://emacsconf.org/2023/talks/steno" title="Programming with steno" data-slug="steno"> <title>  1:55- 2:25 Programming with steno</title> <rect x="462" y="15" opacity="0.8" width="47" height="59" stroke="black" stroke-dasharray="5,5,5" fill="lightblue"></rect> <g transform="translate(507,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> steno</text></g></a> <a href="https://emacsconf.org/2023/talks/mentor" title="Mentoring VS-Coders as an Emacsian (or How to show not tell people about the wonders of Emacs)" data-slug="mentor"> <title>  2:35- 2:45 Mentoring VS-Coders as an Emacsian (or How to show not tell people about the wonders of Emacs)</title> <rect x="525" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(538,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mentor</text></g></a> <a href="https://emacsconf.org/2023/talks/web" title="Emacs saves the Web (maybe)" data-slug="web"> <title>  3:10- 3:40 Emacs saves the Web (maybe)</title> <rect x="580" y="15" opacity="0.8" width="47" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(625,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> web</text></g></a> <a href="https://emacsconf.org/2023/talks/sharing" title="Sharing Emacs is Caring Emacs: Emacs education and why I embraced video" data-slug="sharing"> <title>  3:55- 4:15 Sharing Emacs is Caring Emacs: Emacs education and why I embraced video</title> <rect x="650" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sharing</text></g></a> <a href="https://emacsconf.org/2023/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title>  4:30- 4:40 Sunday closing remarks</title> <rect x="705" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(718,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="https://emacsconf.org/2023/talks/scheme" title="Bringing joy to Scheme programming" data-slug="scheme"> <title> 10:00-10:20 Bringing joy to Scheme programming</title> <rect x="94" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(123,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> scheme</text></g></a> <a href="https://emacsconf.org/2023/talks/world" title="GNU Emacs: A World of Possibilities" data-slug="world"> <title> 10:35-10:55 GNU Emacs: A World of Possibilities</title> <rect x="149" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(178,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> world</text></g></a> <a href="https://emacsconf.org/2023/talks/flat" title="A modern Emacs look-and-feel without pain" data-slug="flat"> <title> 11:10-11:20 A modern Emacs look-and-feel without pain</title> <rect x="203" y="75" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(216,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> flat</text></g></a> <a href="https://emacsconf.org/2023/talks/emacsen" title="The Emacsen family, the design of an Emacs and the importance of Lisp" data-slug="emacsen"> <title> 11:35-11:55 The Emacsen family, the design of an Emacs and the importance of Lisp</title> <rect x="243" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(272,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> emacsen</text></g></a> <a href="https://emacsconf.org/2023/talks/gc" title="emacs-gc-stats: Does garbage collection actually slow down Emacs?" data-slug="gc"> <title>  1:00- 1:35 emacs-gc-stats: Does garbage collection actually slow down Emacs?</title> <rect x="376" y="75" opacity="0.8" width="54" height="59" stroke="black" stroke-dasharray="" fill="palegoldenrod"></rect> <g transform="translate(428,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gc</text></g></a> <a href="https://emacsconf.org/2023/talks/hyperdrive" title="hyperdrive.el: Peer-to-peer filesystem in Emacs" data-slug="hyperdrive"> <title>  1:50- 2:30 hyperdrive.el: Peer-to-peer filesystem in Emacs</title> <rect x="454" y="75" opacity="0.8" width="62" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(514,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperdrive</text></g></a> <a href="https://emacsconf.org/2023/talks/lspocaml" title="Writing a language server in OCaml for Emacs, fun, and profit" data-slug="lspocaml"> <title>  2:45- 3:00 Writing a language server in OCaml for Emacs, fun, and profit</title> <rect x="541" y="75" opacity="0.8" width="23" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(562,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspocaml</text></g></a> <a href="https://emacsconf.org/2023/talks/test" title="What I learned by writing test cases for GNU Hyperbole" data-slug="test"> <title>  3:15- 3:45 What I learned by writing test cases for GNU Hyperbole</title> <rect x="588" y="75" opacity="0.8" width="47" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(633,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> test</text></g></a> <a href="https://emacsconf.org/2023/talks/emacsconf" title="EmacsConf.org: How we use Org Mode and TRAMP to organize and run a multi-track conference" data-slug="emacsconf"> <title>  4:00- 4:20 EmacsConf.org: How we use Org Mode and TRAMP to organize and run a multi-track conference</title> <rect x="658" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(687,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> emacsconf</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></g></svg>

-   Legend: dashed line means non-BBB Q&A; light gray means penciled-in talk; yellow means video already submitted and being processed


### Draft schedule as a list

-   2023-12-02 Sat 09:00-09:10 [sat-open](https://emacsconf.org/2023/talks/sat-open "Saturday opening remarks"): Saturday opening remarks
-   2023-12-02 Sat 09:10-09:20 - <= 10:00 - [adventure](https://emacsconf.org/2023/talks/adventure "An Org-Mode based text adventure game for learning the basics of Emacs, inside Emacs, written in Emacs Lisp"): An Org-Mode based text adventure game for learning the basics of Emacs, inside Emacs, written in Emacs Lisp (Chung-hong Chan)
-   2023-12-02 Sat 09:30-09:50 [uni](https://emacsconf.org/2023/talks/uni "Authoring and presenting university courses with Emacs and a full libre software stack"): Authoring and presenting university courses with Emacs and a full libre software stack (James Howell)
-   2023-12-02 Sat 10:00-10:10 - <= 10:30 - [matplotllm](https://emacsconf.org/2023/talks/matplotllm "MatplotLLM, iterative natural language data visualization in org-babel"): MatplotLLM, iterative natural language data visualization in org-babel (Abhinav Tushar)
-   2023-12-02 Sat 10:05-10:25 - on 2023-12-02 - [teaching](https://emacsconf.org/2023/talks/teaching "Teaching computer and data science with literate programming tools"): Teaching computer and data science with literate programming tools (Marcus Birkenkrahe)
-   2023-12-02 Sat 10:20-10:40 [voice](https://emacsconf.org/2023/talks/voice "Enhancing productivity with voice computing"): Enhancing productivity with voice computing (Blaine Mooers)
-   2023-12-02 Sat 10:40-10:50 - <= 11:00 - [table](https://emacsconf.org/2023/talks/table "Who needs Excel? Managing your students qualifications with org-table"): Who needs Excel? Managing your students qualifications with org-table (Daniel Molina)
-   2023-12-02 Sat 10:55-11:15 - >= 10:00 - [llm](https://emacsconf.org/2023/talks/llm "LLM clients in Emacs, functionality and standardization"): LLM clients in Emacs, functionality and standardization (Andrew Hyatt)
-   2023-12-02 Sat 11:05-11:15 - <= 15:00 - [taming](https://emacsconf.org/2023/talks/taming "Taming things with Org Mode"): Taming things with Org Mode (Gergely Nagy (algernon))
-   2023-12-02 Sat 11:30-11:50 - <= 13:00 - [one](https://emacsconf.org/2023/talks/one "one.el: the static site generator for Emacs Lisp Programmers"): one.el: the static site generator for Emacs Lisp Programmers (Tony Aldon)
-   2023-12-02 Sat 13:00-13:10 [writing](https://emacsconf.org/2023/talks/writing "Emacs turbo-charges my writing"): Emacs turbo-charges my writing (Jeremy Friesen)
-   2023-12-02 Sat 13:00-13:20 - >= 11:00 - [overlay](https://emacsconf.org/2023/talks/overlay "Improving compiler diagnostics with overlays"): Improving compiler diagnostics with overlays (Jeff Trull)
-   2023-12-02 Sat 13:25-13:35 [nabokov](https://emacsconf.org/2023/talks/nabokov "Why Nabokov would use Org-Mode if he were writing today"): Why Nabokov would use Org-Mode if he were writing today (Edmund Jorgensen)
-   2023-12-02 Sat 13:35-13:45 [eval](https://emacsconf.org/2023/talks/eval "Editor Integrated REPL Driven Development for all languages"): Editor Integrated REPL Driven Development for all languages (Musa Al-hassy)
-   2023-12-02 Sat 13:50-14:10 - no live Q&A - [collab](https://emacsconf.org/2023/talks/collab "Collaborative data processing and documenting using org-babel"): Collaborative data processing and documenting using org-babel (Jonathan Hartman, Lukas C. Bossert)
-   2023-12-02 Sat 14:00-15:00 [repl](https://emacsconf.org/2023/talks/repl "REPLs in strange places: Lua, LaTeX, LPeg, LPegRex, TikZ"): REPLs in strange places: Lua, LaTeX, LPeg, LPegRex, TikZ (Eduardo Ochs)
-   2023-12-02 Sat 14:20-14:40 - >= 12:00 - [solo](https://emacsconf.org/2023/talks/solo "How I play TTRPGs in Emacs"): How I play TTRPGs in Emacs (Howard Abrams)
-   2023-12-02 Sat 14:55-15:15 - >= 13:00 - [ref](https://emacsconf.org/2023/talks/ref "Org-Mode workflow: informal reference tracking"): Org-Mode workflow: informal reference tracking (Christopher Howard)
-   2023-12-02 Sat 15:10-15:50 [doc](https://emacsconf.org/2023/talks/doc "Literate Documentation with Emacs and Org Mode"): Literate Documentation with Emacs and Org Mode (Mike Hamrick)
-   2023-12-02 Sat 15:25-15:35 - between 15:00-16:00 - [unentangling](https://emacsconf.org/2023/talks/unentangling "(Un)entangling projects and repos"): (Un)entangling projects and repos (Alexey Bochkarev)
-   2023-12-02 Sat 15:45-15:55 - >= 12:00 - [devel](https://emacsconf.org/2023/talks/devel "Emacs development updates"): Emacs development updates (John Wiegley)
-   2023-12-02 Sat 16:05-16:45 [windows](https://emacsconf.org/2023/talks/windows "Windows into Freedom"): Windows into Freedom (Corwin Brust)
-   2023-12-02 Sat 16:10-16:50 [core](https://emacsconf.org/2023/talks/core "Emacs core development: how it works"): Emacs core development: how it works (Stefan Kangas)
-   2023-12-02 Sat 17:05-17:15 [sat-close](https://emacsconf.org/2023/talks/sat-close "Saturday closing remarks"): Saturday closing remarks
-   2023-12-03 Sun 08:59-09:04 [sun-open](https://emacsconf.org/2023/talks/sun-open "Sunday opening remarks"): Sunday opening remarks
-   2023-12-03 Sun 09:05-09:25 - <= 12:00 - [hyperamp](https://emacsconf.org/2023/talks/hyperamp "Top 10 ways Hyperbole amps up Emacs"): Top 10 ways Hyperbole amps up Emacs (Robert Weiner)
-   2023-12-03 Sun 09:40-10:00 [koutline](https://emacsconf.org/2023/talks/koutline "Using Koutline for stream of thought journaling"): Using Koutline for stream of thought journaling (Matthew Jorgensen (PlasmaStrike))
-   2023-12-03 Sun 10:00-10:20 - <= 12:00 - [scheme](https://emacsconf.org/2023/talks/scheme "Bringing joy to Scheme programming"): Bringing joy to Scheme programming (Andrew Tropin)
-   2023-12-03 Sun 10:10-10:25 - <= 11:00 - [parallel](https://emacsconf.org/2023/talks/parallel "Parallel text replacement"): Parallel text replacement (Lovro, Valentino Picotti)
-   2023-12-03 Sun 10:35-10:45 - <= 13:00 - [eat](https://emacsconf.org/2023/talks/eat "Eat and Eat powered Eshell, fast featureful terminal inside Emacs"): Eat and Eat powered Eshell, fast featureful terminal inside Emacs (Akib Azmain Turja)
-   2023-12-03 Sun 10:35-10:55 - <= 11:30 - [world](https://emacsconf.org/2023/talks/world "GNU Emacs: A World of Possibilities"): GNU Emacs: A World of Possibilities (Anand Tamariya)
-   2023-12-03 Sun 11:00-11:20 - <= 13:00 - [poltys](https://emacsconf.org/2023/talks/poltys "The browser in a buffer"): The browser in a buffer (Michael Bauer)
-   2023-12-03 Sun 11:10-11:20 - between 11:00-13:00 - [flat](https://emacsconf.org/2023/talks/flat "A modern Emacs look-and-feel without pain"): A modern Emacs look-and-feel without pain (Pedro A. Aranda)
-   2023-12-03 Sun 11:35-11:55 - <= 17:00 - [cubing](https://emacsconf.org/2023/talks/cubing "Speedcubing in Emacs"): Speedcubing in Emacs (wasamasa)
-   2023-12-03 Sun 11:35-11:55 - <= 13:00 - [emacsen](https://emacsconf.org/2023/talks/emacsen "The Emacsen family, the design of an Emacs and the importance of Lisp"): The Emacsen family, the design of an Emacs and the importance of Lisp (Fermin)
-   2023-12-03 Sun 13:00-13:35 - <= 14:00 - [gc](https://emacsconf.org/2023/talks/gc "emacs-gc-stats: Does garbage collection actually slow down Emacs?"): emacs-gc-stats: Does garbage collection actually slow down Emacs? (Ihor Radchenko)
-   2023-12-03 Sun 13:00-13:40 [emms](https://emacsconf.org/2023/talks/emms "Emacs MultiMedia System (EMMS)"): Emacs MultiMedia System (EMMS) (Yoni Rabkin)
-   2023-12-03 Sun 13:50-14:30 - >= 11:00 - [hyperdrive](https://emacsconf.org/2023/talks/hyperdrive "hyperdrive.el: Peer-to-peer filesystem in Emacs"): hyperdrive.el: Peer-to-peer filesystem in Emacs (Joseph Turner and Protesilaos Stavrou)
-   2023-12-03 Sun 13:55-14:25 [steno](https://emacsconf.org/2023/talks/steno "Programming with steno"): Programming with steno (Daniel Alejandro Tapia)
-   2023-12-03 Sun 14:35-14:45 [mentor](https://emacsconf.org/2023/talks/mentor "Mentoring VS-Coders as an Emacsian (or How to show not tell people about the wonders of Emacs)"): Mentoring VS-Coders as an Emacsian (or How to show not tell people about the wonders of Emacs) (Jeremy Friesen)
-   2023-12-03 Sun 14:45-15:00 [lspocaml](https://emacsconf.org/2023/talks/lspocaml "Writing a language server in OCaml for Emacs, fun, and profit"): Writing a language server in OCaml for Emacs, fun, and profit (Austin Theriault)
-   2023-12-03 Sun 15:10-15:40 - >= 15:00 - [web](https://emacsconf.org/2023/talks/web "Emacs saves the Web (maybe)"): Emacs saves the Web (maybe) (Yuchen Pei)
-   2023-12-03 Sun 15:15-15:45 - >= 12:00 - [test](https://emacsconf.org/2023/talks/test "What I learned by writing test cases for GNU Hyperbole"): What I learned by writing test cases for GNU Hyperbole (Mats Lidell)
-   2023-12-03 Sun 15:55-16:15 [sharing](https://emacsconf.org/2023/talks/sharing "Sharing Emacs is Caring Emacs: Emacs education and why I embraced video"): Sharing Emacs is Caring Emacs: Emacs education and why I embraced video (Jacob Boxerman)
-   2023-12-03 Sun 16:00-16:20 [emacsconf](https://emacsconf.org/2023/talks/emacsconf "EmacsConf.org: How we use Org Mode and TRAMP to organize and run a multi-track conference"): EmacsConf.org: How we use Org Mode and TRAMP to organize and run a multi-track conference (Sacha Chua)
-   2023-12-03 Sun 16:30-16:40 [sun-close](https://emacsconf.org/2023/talks/sun-close "Sunday closing remarks"): Sunday closing remarks


### Schedule announcements

-   <span class="timestamp-wrapper"><span class="timestamp">[2023-12-02 Sat] </span></span> [repl](https://emacsconf.org/2023/talks/repl "REPLs in strange places: Lua, LaTeX, LPeg, LPegRex, TikZ") needs 60 minutes instead of 40, adjusting doc and windows
-   <span class="timestamp-wrapper"><span class="timestamp">[2023-12-01 Fri] </span></span> [gc](https://emacsconf.org/2023/talks/gc "emacs-gc-stats: Does garbage collection actually slow down Emacs?") needs 35 minutes, adjusting later talks ([hyperdrive](https://emacsconf.org/2023/talks/hyperdrive "hyperdrive.el: Peer-to-peer filesystem in Emacs"), [lspocaml](https://emacsconf.org/2023/talks/lspocaml "Writing a language server in OCaml for Emacs, fun, and profit"), [test](https://emacsconf.org/2023/talks/test "What I learned by writing test cases for GNU Hyperbole"), [emacsconf](https://emacsconf.org/2023/talks/emacsconf "EmacsConf.org: How we use Org Mode and TRAMP to organize and run a multi-track conference"))
-   <span class="timestamp-wrapper"><span class="timestamp">[2023-12-01 Fri] </span></span> [windows](https://emacsconf.org/2023/talks/windows "Windows into Freedom") now on Sat afternoon devel track and [emacsconf](https://emacsconf.org/2023/talks/emacsconf "EmacsConf.org: How we use Org Mode and TRAMP to organize and run a multi-track conference") now on Sunday afternoon devel track
-   <span class="timestamp-wrapper"><span class="timestamp">[2023-12-01 Fri] </span></span> Cancelled [taming](https://emacsconf.org/2023/talks/taming "Taming things with Org Mode")
-   <span class="timestamp-wrapper"><span class="timestamp">[2023-11-29 Wed] </span></span> Changed title for [voice](https://emacsconf.org/2023/talks/voice "Enhancing productivity with voice computing"), changed [table](https://emacsconf.org/2023/talks/table "Who needs Excel? Managing your students qualifications with org-table") Q&A to after the conference


### Schedule notes

-   **Schedule changes after the schedule FYI email from 2023-10-05**:
    -   <span class="timestamp-wrapper"><span class="timestamp">[2023-11-29 Wed] </span></span> Allocated 15 minutes to [lspocaml](https://emacsconf.org/2023/talks/lspocaml "Writing a language server in OCaml for Emacs, fun, and profit")
    -   <span class="timestamp-wrapper"><span class="timestamp">[2023-11-23 Thu] </span></span> Allocated 30 minutes to [test](https://emacsconf.org/2023/talks/test "What I learned by writing test cases for GNU Hyperbole")
    -   <span class="timestamp-wrapper"><span class="timestamp">[2023-11-14 Tue] </span></span> Update [steno](https://emacsconf.org/2023/talks/steno "Programming with steno") title; add Prot to [hyperdrive](https://emacsconf.org/2023/talks/hyperdrive "hyperdrive.el: Peer-to-peer filesystem in Emacs")
    -   <span class="timestamp-wrapper"><span class="timestamp">[2023-11-04 Sat] </span></span> Moved [emacsen](https://emacsconf.org/2023/talks/emacsen "The Emacsen family, the design of an Emacs and the importance of Lisp") earlier to accommodate live session, moved [test](https://emacsconf.org/2023/talks/test "What I learned by writing test cases for GNU Hyperbole") later to accommodate travel
    -   <span class="timestamp-wrapper"><span class="timestamp">[2023-10-31 Tue] </span></span> Cancelled hn, added [doc](https://emacsconf.org/2023/talks/doc "Literate Documentation with Emacs and Org Mode") before [emacsconf](https://emacsconf.org/2023/talks/emacsconf "EmacsConf.org: How we use Org Mode and TRAMP to organize and run a multi-track conference")
    -   Moved [hyperdrive](https://emacsconf.org/2023/talks/hyperdrive "hyperdrive.el: Peer-to-peer filesystem in Emacs") talk to general track; removed afternoon break. Changed [solo](https://emacsconf.org/2023/talks/solo "How I play TTRPGs in Emacs"), [unentangling](https://emacsconf.org/2023/talks/unentangling "(Un)entangling projects and repos"), [ref](https://emacsconf.org/2023/talks/ref "Org-Mode workflow: informal reference tracking"), [devel](https://emacsconf.org/2023/talks/devel "Emacs development updates"), [sat-close](https://emacsconf.org/2023/talks/sat-close "Saturday closing remarks"), [overlay](https://emacsconf.org/2023/talks/overlay "Improving compiler diagnostics with overlays"), [eval](https://emacsconf.org/2023/talks/eval "Editor Integrated REPL Driven Development for all languages"), [repl](https://emacsconf.org/2023/talks/repl "REPLs in strange places: Lua, LaTeX, LPeg, LPegRex, TikZ"), [hyperdrive](https://emacsconf.org/2023/talks/hyperdrive "hyperdrive.el: Peer-to-peer filesystem in Emacs"), and [world](https://emacsconf.org/2023/talks/world "GNU Emacs: A World of Possibilities"), but none of the talks moved by 2 hours or more, so no extra e-mails needed for now.
    -   <span class="timestamp-wrapper"><span class="timestamp">[2023-10-08 Sun] </span></span> Added [core](https://emacsconf.org/2023/talks/core "Emacs core development: how it works"). Moved [hyperdrive](https://emacsconf.org/2023/talks/hyperdrive "hyperdrive.el: Peer-to-peer filesystem in Emacs") to Sun afternoon.
    -   <span class="timestamp-wrapper"><span class="timestamp">[2023-10-09 Mon] </span></span> Renamed `extending` to [world](https://emacsconf.org/2023/talks/world "GNU Emacs: A World of Possibilities") and moved it to the morning to accommodate IST.
-   Saturday on the General track: Org day + misc
    -   [adventure](https://emacsconf.org/2023/talks/adventure "An Org-Mode based text adventure game for learning the basics of Emacs, inside Emacs, written in Emacs Lisp") is the first talk because of availability constraints; would be nice to connect it to [solo](https://emacsconf.org/2023/talks/solo "How I play TTRPGs in Emacs")
    -   [uni](https://emacsconf.org/2023/talks/uni "Authoring and presenting university courses with Emacs and a full libre software stack") for teaching, [teaching](https://emacsconf.org/2023/talks/teaching "Teaching computer and data science with literate programming tools") is also related, and [table](https://emacsconf.org/2023/talks/table "Who needs Excel? Managing your students qualifications with org-table") for grading
    -   [taming](https://emacsconf.org/2023/talks/taming "Taming things with Org Mode") and [one](https://emacsconf.org/2023/talks/one "one.el: the static site generator for Emacs Lisp Programmers") both deal with exports in some way. [unentangling](https://emacsconf.org/2023/talks/unentangling "(Un)entangling projects and repos") would be nice to add here, but that one needs to be in the afternoon because of availability constraints.
    -   [writing](https://emacsconf.org/2023/talks/writing "Emacs turbo-charges my writing") is connected to [nabokov](https://emacsconf.org/2023/talks/nabokov "Why Nabokov would use Org-Mode if he were writing today") (blog posts, novel). It&rsquo;s also a little connected to [one](https://emacsconf.org/2023/talks/one "one.el: the static site generator for Emacs Lisp Programmers") (exporting a blog).
    -   [collab](https://emacsconf.org/2023/talks/collab "Collaborative data processing and documenting using org-babel") and [solo](https://emacsconf.org/2023/talks/solo "How I play TTRPGs in Emacs") are amusing to pair together.
    -   [unentangling](https://emacsconf.org/2023/talks/unentangling "(Un)entangling projects and repos") and [ref](https://emacsconf.org/2023/talks/ref "Org-Mode workflow: informal reference tracking") are also Org-related. [ref](https://emacsconf.org/2023/talks/ref "Org-Mode workflow: informal reference tracking") would be nice to place together with [nabokov](https://emacsconf.org/2023/talks/nabokov "Why Nabokov would use Org-Mode if he were writing today"), but that would move [unentangling](https://emacsconf.org/2023/talks/unentangling "(Un)entangling projects and repos") too late.
    -   [devel](https://emacsconf.org/2023/talks/devel "Emacs development updates") is not Org-related, but probably good to share with everyone.
-   Saturday morning Development track: large language models, AI. Has to be morning because of [matplotllm](https://emacsconf.org/2023/talks/matplotllm "MatplotLLM, iterative natural language data visualization in org-babel"). [llm](https://emacsconf.org/2023/talks/llm "LLM clients in Emacs, functionality and standardization") is about general interfaces, so we can put that last. Could have a general LLM discussion after the talks. Can&rsquo;t swap it with Sunday morning because [test](https://emacsconf.org/2023/talks/test "What I learned by writing test cases for GNU Hyperbole") should stick with [hyperamp](https://emacsconf.org/2023/talks/hyperamp "Top 10 ways Hyperbole amps up Emacs") and [koutline](https://emacsconf.org/2023/talks/koutline "Using Koutline for stream of thought journaling") (Hyperbole talks), and the Hyperbole talks won&rsquo;t fit into Saturday morning
-   Saturday afternoon, developer track: REPLs, misc talks
    -   start off with developer tweaks: [overlay](https://emacsconf.org/2023/talks/overlay "Improving compiler diagnostics with overlays") (compilation), and then [eval](https://emacsconf.org/2023/talks/eval "Editor Integrated REPL Driven Development for all languages") and [repl](https://emacsconf.org/2023/talks/repl "REPLs in strange places: Lua, LaTeX, LPeg, LPegRex, TikZ") are paired together
    -   [hyperdrive](https://emacsconf.org/2023/talks/hyperdrive "hyperdrive.el: Peer-to-peer filesystem in Emacs"): adding another file protocol, using HTTP APIs
    -   [world](https://emacsconf.org/2023/talks/world "GNU Emacs: A World of Possibilities") might be replays of demos + Q&A session if people are interested
-   Sunday morning gen: Hyperbole (gen track, then crossing over to dev for testing) + misc talks
    -   Hyperbole mini-track is in the morning because of [test](https://emacsconf.org/2023/talks/test "What I learned by writing test cases for GNU Hyperbole")&rsquo;s availability constraints; [hyperamp](https://emacsconf.org/2023/talks/hyperamp "Top 10 ways Hyperbole amps up Emacs") and [koutline](https://emacsconf.org/2023/talks/koutline "Using Koutline for stream of thought journaling") go before it. Try to avoid conflicts so they can attend each other&rsquo;s talks
    -   Sunday morning after [test](https://emacsconf.org/2023/talks/test "What I learned by writing test cases for GNU Hyperbole") could be a fun extended &ldquo;let&rsquo;s write tests together&rdquo; session if someone wants to lead it
    -   [parallel](https://emacsconf.org/2023/talks/parallel "Parallel text replacement") needs to go in the morning. Might be okay to include in the general talk.
    -   [poltys](https://emacsconf.org/2023/talks/poltys "The browser in a buffer") and [cubing](https://emacsconf.org/2023/talks/cubing "Speedcubing in Emacs") aren&rsquo;t related to Hyperbole, but we need to fit them into the schedule somewhere. It would be nice to connect [poltys](https://emacsconf.org/2023/talks/poltys "The browser in a buffer") (talking to web browsers from Emacs) to [web](https://emacsconf.org/2023/talks/web "Emacs saves the Web (maybe)") (doing web stuff in Emacs instead), but [poltys](https://emacsconf.org/2023/talks/poltys "The browser in a buffer") needs to be in the morning (which is pretty full) and [web](https://emacsconf.org/2023/talks/web "Emacs saves the Web (maybe)") is in the afternoon because Yuchen is in Australia/Sydney.
    -   [cubing](https://emacsconf.org/2023/talks/cubing "Speedcubing in Emacs") can be something fun to transition to lunch, then.
-   Sunday afternoon gen: misc talks, community
    -   [eat](https://emacsconf.org/2023/talks/eat "Eat and Eat powered Eshell, fast featureful terminal inside Emacs") is about shells and running commands, so it&rsquo;s generally useful
    -   [emms](https://emacsconf.org/2023/talks/emms "Emacs MultiMedia System (EMMS)") is a user+dev talk
    -   community theme ([mentor](https://emacsconf.org/2023/talks/mentor "Mentoring VS-Coders as an Emacsian (or How to show not tell people about the wonders of Emacs)"), [hn](https://emacsconf.org/2023/talks/hn "The many ways to browse Hacker News from Emacs"), [sharing](https://emacsconf.org/2023/talks/sharing "Sharing Emacs is Caring Emacs: Emacs education and why I embraced video")), with an aside for [web](https://emacsconf.org/2023/talks/web "Emacs saves the Web (maybe)") (using Emacs as a client for stuff). [sharing](https://emacsconf.org/2023/talks/sharing "Sharing Emacs is Caring Emacs: Emacs education and why I embraced video") is possible closing keynote - encourage people to go out and explore/share all year? If not, [web](https://emacsconf.org/2023/talks/web "Emacs saves the Web (maybe)") could be good for a closing talk - encouraging people to use Emacs for more stuff.
-   Sunday dev: misc dev talks
    -   Morning:
        -   [test](https://emacsconf.org/2023/talks/test "What I learned by writing test cases for GNU Hyperbole") is related to the Hyperbole talks [hyperamp](https://emacsconf.org/2023/talks/hyperamp "Top 10 ways Hyperbole amps up Emacs") and [koutline](https://emacsconf.org/2023/talks/koutline "Using Koutline for stream of thought journaling"), so we don&rsquo;t want to overlap with the Q&A for those talks
        -   [flat](https://emacsconf.org/2023/talks/flat "A modern Emacs look-and-feel without pain"), [scheme](https://emacsconf.org/2023/talks/scheme "Bringing joy to Scheme programming"), [gc](https://emacsconf.org/2023/talks/gc "emacs-gc-stats: Does garbage collection actually slow down Emacs?"), [flat](https://emacsconf.org/2023/talks/flat "A modern Emacs look-and-feel without pain"), [windows](https://emacsconf.org/2023/talks/windows "Windows into Freedom"), [emacsconf](https://emacsconf.org/2023/talks/emacsconf "EmacsConf.org: How we use Org Mode and TRAMP to organize and run a multi-track conference"), [steno](https://emacsconf.org/2023/talks/steno "Programming with steno")
        -   [emacsen](https://emacsconf.org/2023/talks/emacsen "The Emacsen family, the design of an Emacs and the importance of Lisp") is more high-level and can talk about other editors
-   checking with [web](https://emacsconf.org/2023/talks/web "Emacs saves the Web (maybe)") and [hn](https://emacsconf.org/2023/talks/hn "The many ways to browse Hacker News from Emacs") if ~3pm Sunday afternoon (~7am Mon local time) is okay with them. It would be nice to pair it with [hn](https://emacsconf.org/2023/talks/hn "The many ways to browse Hacker News from Emacs"), which is nice to connect to [mentor](https://emacsconf.org/2023/talks/mentor "Mentoring VS-Coders as an Emacsian (or How to show not tell people about the wonders of Emacs)") and [web](https://emacsconf.org/2023/talks/web "Emacs saves the Web (maybe)").
-   Thinking about the flow:
    -   General: Org day, then misc talks Sunday morning and part of Sunday afternoon. Ending with a focus on community and expanding Emacs. It would be nice to get people excited about connecting and sharing throughout the year.
    -   Dev: people who are really curious about AI can connect on
        Saturday morning and keep the conversation going. Some programming
        tweaks are grouped together. The rest are mostly based on
        availability.
-   if the talks get cancelled, we can have an open meetup possibly with
    breakout rooms
-   coordination notes:
    -   TODO [uni](https://emacsconf.org/2023/talks/uni "Authoring and presenting university courses with Emacs and a full libre software stack"), [teaching](https://emacsconf.org/2023/talks/teaching "Teaching computer and data science with literate programming tools"), [table](https://emacsconf.org/2023/talks/table "Who needs Excel? Managing your students qualifications with org-table") are all about Emacs, Org Mode, and teaching
    -   TODO [repl](https://emacsconf.org/2023/talks/repl "REPLs in strange places: Lua, LaTeX, LPeg, LPegRex, TikZ"), [eval](https://emacsconf.org/2023/talks/eval "Editor Integrated REPL Driven Development for all languages")
    -   [hyperamp](https://emacsconf.org/2023/talks/hyperamp "Top 10 ways Hyperbole amps up Emacs"), [koutline](https://emacsconf.org/2023/talks/koutline "Using Koutline for stream of thought journaling"), and [test](https://emacsconf.org/2023/talks/test "What I learned by writing test cases for GNU Hyperbole") are all in touch because they work on Hyperbole together
    -   [hn](https://emacsconf.org/2023/talks/hn "The many ways to browse Hacker News from Emacs") and [web](https://emacsconf.org/2023/talks/web "Emacs saves the Web (maybe)")
    -   [unentangling](https://emacsconf.org/2023/talks/unentangling "(Un)entangling projects and repos"), [taming](https://emacsconf.org/2023/talks/taming "Taming things with Org Mode")?
    -   [matplotllm](https://emacsconf.org/2023/talks/matplotllm "MatplotLLM, iterative natural language data visualization in org-babel"), [voice](https://emacsconf.org/2023/talks/voice "Enhancing productivity with voice computing"), [llm](https://emacsconf.org/2023/talks/llm "LLM clients in Emacs, functionality and standardization") (so they don&rsquo;t all have to define LLMs?)
-   The schedule doesn&rsquo;t have neat aligned slots on purpose so that
    organizers can jump between streams if needed, and also because we
    have so many awesome talks. Somehow people managed to handle the
    schedule last year. =)
-   Next steps:
    -   Schedule: We&rsquo;ll e-mail the draft schedule to speakers so that they
        can get a sense of where they are in the schedule, see if they
        really want to make it to a conflicting session&rsquo;s Q&A live
        (they&rsquo;ll have early access to the videos), etc.
    -   Infrastructure:
        -   Dust off and document infrastructure, processes
        -   Sort out access to media.emacsconf.org so that we can get the upload service up and running
    -   Draft brief intros for talks, keeping in mind that we&rsquo;re going to say them out loud
    -   Speakers will work on videos, and we can help with nudges/coordination if needed


### DONE E-mail all the speakers a link to the draft schedule

so that they can confirm that I&rsquo;ve got their availability correctly coded and ask for any adjustments in case they really want to attend someone else&rsquo;s Q&A session


### DONE Announce schedule publicly


### DONE Incorporate &ldquo;About the speaker&rdquo; info on the wiki pages     :conforg:

Good idea to include it because that gives people (a) more context on
where a speaker is coming from, and (b) a feeling for the kinds of
backgrounds and interests people have.


### TODO Follow up with people we haven&rsquo;t heard from in a while

When do we want to do this?

We don&rsquo;t have to worry too much, because we can offer them the option of doing it live,
and we can have space in the schedule if they cancel last-minute.


<a id="status"></a>

## Prepare for the conference

<table>


<colgroup>
<col  class="org-left">

<col  class="org-left">

<col  class="org-left">
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left">ITEM</th>
<th scope="col" class="org-left">TODO</th>
<th scope="col" class="org-left">STATUS</th>
</tr>
</thead>

<tbody>
<tr>
<td class="org-left">Upload</td>
<td class="org-left">DONE</td>
<td class="org-left">Ready to go</td>
</tr>


<tr>
<td class="org-left">Prerec</td>
<td class="org-left">DONE</td>
<td class="org-left">Ready to go</td>
</tr>


<tr>
<td class="org-left">Captions</td>
<td class="org-left">INPROGRESS</td>
<td class="org-left">Ready to go; waiting for videos and captions</td>
</tr>


<tr>
<td class="org-left">Backstage</td>
<td class="org-left">DONE</td>
<td class="org-left">Ready to go</td>
</tr>


<tr>
<td class="org-left">Test assets</td>
<td class="org-left">DONE</td>
<td class="org-left">test videos generated</td>
</tr>


<tr>
<td class="org-left">BBB</td>
<td class="org-left">&#xa0;</td>
<td class="org-left">redirects created, confirmed; next: e-mail speakers testing/checkin instructions</td>
</tr>


<tr>
<td class="org-left">VNC</td>
<td class="org-left">DONE</td>
<td class="org-left">confirmed access to emacsconf-gen and emacsconf-dev</td>
</tr>


<tr>
<td class="org-left">OBS</td>
<td class="org-left">DONE</td>
<td class="org-left">confirmed that gen and dev can stream</td>
</tr>


<tr>
<td class="org-left">Icecast</td>
<td class="org-left">DONE</td>
<td class="org-left">gen and dev confirmed with MPV</td>
</tr>


<tr>
<td class="org-left">MPV</td>
<td class="org-left">DONE</td>
<td class="org-left">confirmed that mpv can watch both streams</td>
</tr>


<tr>
<td class="org-left">Watch page</td>
<td class="org-left">DONE</td>
<td class="org-left">updated for 2023</td>
</tr>


<tr>
<td class="org-left">Status page</td>
<td class="org-left">DONE</td>
<td class="org-left">ready to go</td>
</tr>


<tr>
<td class="org-left">Public media</td>
<td class="org-left">DONE</td>
<td class="org-left">confirmed, set to protected so that we can test publishing live</td>
</tr>


<tr>
<td class="org-left">Mumble</td>
<td class="org-left">DONE</td>
<td class="org-left">confirmed gen and dev can connect, receive audio</td>
</tr>


<tr>
<td class="org-left">Etherpad</td>
<td class="org-left">DONE</td>
<td class="org-left">Ready to go, pads created</td>
</tr>


<tr>
<td class="org-left">Pad proxy</td>
<td class="org-left">DONE</td>
<td class="org-left">Ready to go, pad.emacsconf.org works</td>
</tr>


<tr>
<td class="org-left">Overlays</td>
<td class="org-left">DONE</td>
<td class="org-left">generated and uploaded</td>
</tr>


<tr>
<td class="org-left">Intros</td>
<td class="org-left">INPROGRESS</td>
<td class="org-left">all intros recorded, should send them to speakers for review</td>
</tr>


<tr>
<td class="org-left">IRC channels</td>
<td class="org-left">&#xa0;</td>
<td class="org-left">Not yet started</td>
</tr>


<tr>
<td class="org-left">IRC talk info</td>
<td class="org-left">&#xa0;</td>
<td class="org-left">Not yet started</td>
</tr>


<tr>
<td class="org-left">Announcements</td>
<td class="org-left">&#xa0;</td>
<td class="org-left">Not yet started</td>
</tr>


<tr>
<td class="org-left">Publishing updates live</td>
<td class="org-left">&#xa0;</td>
<td class="org-left">Not yet started</td>
</tr>


<tr>
<td class="org-left">Autopilot</td>
<td class="org-left">&#xa0;</td>
<td class="org-left">Not yet started</td>
</tr>


<tr>
<td class="org-left">YouTube</td>
<td class="org-left">&#xa0;</td>
<td class="org-left">Not yet started</td>
</tr>


<tr>
<td class="org-left">Peertube</td>
<td class="org-left">&#xa0;</td>
<td class="org-left">Not yet started</td>
</tr>


<tr>
<td class="org-left">480p</td>
<td class="org-left">&#xa0;</td>
<td class="org-left">Delegated to corwin</td>
</tr>


<tr>
<td class="org-left">Audio processing</td>
<td class="org-left">&#xa0;</td>
<td class="org-left">Help wanted</td>
</tr>
</tbody>
</table>


### Status

<svg width="800" height="300" version="1.1" xmlns="<http://www.w3.org/2000/svg>" xmlns:xlink="<http://www.w3.org/1999/xlink>"> <title> Graphical view of the schedule</title> <g transform="translate(0,0)"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="<https://emacsconf.org/2023/talks/sat-open>" title="Saturday opening remarks" data-slug="sat-open"> <title>  9:00- 9:10 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="lightblue"></rect> <g transform="translate(13,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="<https://emacsconf.org/2023/talks/adventure>" title="An Org-Mode based text adventure game for learning the basics of Emacs, inside Emacs, written in Emacs Lisp" data-slug="adventure"> <title>  9:10- 9:20 An Org-Mode based text adventure game for learning the basics of Emacs, inside Emacs, written in Emacs Lisp</title> <rect x="15" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="lightblue"></rect> <g transform="translate(28,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> adventure</text></g></a> <a href="<https://emacsconf.org/2023/talks/uni>" title="Authoring and presenting university courses with Emacs and a full libre software stack" data-slug="uni"> <title>  9:30- 9:50 Authoring and presenting university courses with Emacs and a full libre software stack</title> <rect x="47" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(76,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> uni</text></g></a> <a href="<https://emacsconf.org/2023/talks/teaching>" title="Teaching computer and data science with literate programming tools" data-slug="teaching"> <title> 10:05-10:25 Teaching computer and data science with literate programming tools</title> <rect x="101" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(130,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> teaching</text></g></a> <a href="<https://emacsconf.org/2023/talks/table>" title="Who needs Excel? Managing your students qualifications with org-table" data-slug="table"> <title> 10:40-10:50 Who needs Excel? Managing your students qualifications with org-table</title> <rect x="156" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="lightblue"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> table</text></g></a> <a href="<https://emacsconf.org/2023/talks/one>" title="one.el: the static site generator for Emacs Lisp Programmers" data-slug="one"> <title> 11:30-11:50 one.el: the static site generator for Emacs Lisp Programmers</title> <rect x="235" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(264,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> one</text></g></a> <a href="<https://emacsconf.org/2023/talks/writing>" title="Emacs turbo-charges my writing" data-slug="writing"> <title>  1:00- 1:10 Emacs turbo-charges my writing</title> <rect x="376" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(389,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> writing</text></g></a> <a href="<https://emacsconf.org/2023/talks/nabokov>" title="Why Nabokov would use Org-Mode if he were writing today" data-slug="nabokov"> <title>  1:25- 1:35 Why Nabokov would use Org-Mode if he were writing today</title> <rect x="415" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(428,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> nabokov</text></g></a> <a href="<https://emacsconf.org/2023/talks/collab>" title="Collaborative data processing and documenting using org-babel" data-slug="collab"> <title>  1:50- 2:10 Collaborative data processing and documenting using org-babel</title> <rect x="454" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="lightblue"></rect> <g transform="translate(483,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> collab</text></g></a> <a href="<https://emacsconf.org/2023/talks/solo>" title="How I play TTRPGs in Emacs" data-slug="solo"> <title>  2:20- 2:40 How I play TTRPGs in Emacs</title> <rect x="501" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(530,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> solo</text></g></a> <a href="<https://emacsconf.org/2023/talks/ref>" title="Org-Mode workflow: informal reference tracking" data-slug="ref"> <title>  2:55- 3:15 Org-Mode workflow: informal reference tracking</title> <rect x="556" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="lightblue"></rect> <g transform="translate(585,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> ref</text></g></a> <a href="<https://emacsconf.org/2023/talks/unentangling>" title="(Un)entangling projects and repos" data-slug="unentangling"> <title>  3:25- 3:35 (Un)entangling projects and repos</title> <rect x="603" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="palegoldenrod"></rect> <g transform="translate(616,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> unentangling</text></g></a> <a href="<https://emacsconf.org/2023/talks/devel>" title="Emacs development updates" data-slug="devel"> <title>  3:45- 3:55 Emacs development updates</title> <rect x="635" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(648,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="<https://emacsconf.org/2023/talks/core>" title="Emacs core development: how it works" data-slug="core"> <title>  4:10- 4:50 Emacs core development: how it works</title> <rect x="674" y="15" opacity="0.8" width="62" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(734,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> core</text></g></a> <a href="<https://emacsconf.org/2023/talks/sat-close>" title="Saturday closing remarks" data-slug="sat-close"> <title>  5:05- 5:15 Saturday closing remarks</title> <rect x="760" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(773,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="<https://emacsconf.org/2023/talks/matplotllm>" title="MatplotLLM, iterative natural language data visualization in org-babel" data-slug="matplotllm"> <title> 10:00-10:10 MatplotLLM, iterative natural language data visualization in org-babel</title> <rect x="94" y="75" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="lightblue"></rect> <g transform="translate(107,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> matplotllm</text></g></a> <a href="<https://emacsconf.org/2023/talks/voice>" title="Enhancing productivity with voice computing" data-slug="voice"> <title> 10:20-10:40 Enhancing productivity with voice computing</title> <rect x="125" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="palegoldenrod"></rect> <g transform="translate(154,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> voice</text></g></a> <a href="<https://emacsconf.org/2023/talks/llm>" title="LLM clients in Emacs, functionality and standardization" data-slug="llm"> <title> 10:55-11:15 LLM clients in Emacs, functionality and standardization</title> <rect x="180" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> llm</text></g></a> <a href="<https://emacsconf.org/2023/talks/overlay>" title="Improving compiler diagnostics with overlays" data-slug="overlay"> <title>  1:00- 1:20 Improving compiler diagnostics with overlays</title> <rect x="376" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(405,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> overlay</text></g></a> <a href="<https://emacsconf.org/2023/talks/eval>" title="Editor Integrated REPL Driven Development for all languages" data-slug="eval"> <title>  1:35- 1:45 Editor Integrated REPL Driven Development for all languages</title> <rect x="431" y="75" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="lightblue"></rect> <g transform="translate(444,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eval</text></g></a> <a href="<https://emacsconf.org/2023/talks/repl>" title="REPLs in strange places: Lua, LaTeX, LPeg, LPegRex, TikZ" data-slug="repl"> <title>  2:00- 3:00 REPLs in strange places: Lua, LaTeX, LPeg, LPegRex, TikZ</title> <rect x="470" y="75" opacity="0.8" width="94" height="59" stroke="black" stroke-dasharray="5,5,5" fill="palegoldenrod"></rect> <g transform="translate(562,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> repl</text></g></a> <a href="<https://emacsconf.org/2023/talks/doc>" title="Literate Documentation with Emacs and Org Mode" data-slug="doc"> <title>  3:10- 3:50 Literate Documentation with Emacs and Org Mode</title> <rect x="580" y="75" opacity="0.8" width="62" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(640,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> doc</text></g></a> <a href="<https://emacsconf.org/2023/talks/windows>" title="Windows into Freedom" data-slug="windows"> <title>  4:05- 4:45 Windows into Freedom</title> <rect x="666" y="75" opacity="0.8" width="62" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(726,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> windows</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></g> <g transform="translate(0,150)"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="<https://emacsconf.org/2023/talks/sun-open>" title="Sunday opening remarks" data-slug="sun-open"> <title>  8:59- 9:04 Sunday opening remarks</title> <rect x="-2" y="15" opacity="0.8" width="7" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(3,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="<https://emacsconf.org/2023/talks/hyperamp>" title="Top 10 ways Hyperbole amps up Emacs" data-slug="hyperamp"> <title>  9:05- 9:25 Top 10 ways Hyperbole amps up Emacs</title> <rect x="7" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperamp</text></g></a> <a href="<https://emacsconf.org/2023/talks/koutline>" title="Using Koutline for stream of thought journaling" data-slug="koutline"> <title>  9:40-10:00 Using Koutline for stream of thought journaling</title> <rect x="62" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(91,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> koutline</text></g></a> <a href="<https://emacsconf.org/2023/talks/parallel>" title="Parallel text replacement" data-slug="parallel"> <title> 10:10-10:25 Parallel text replacement</title> <rect x="109" y="15" opacity="0.8" width="23" height="59" stroke="black" stroke-dasharray="" fill="palegoldenrod"></rect> <g transform="translate(130,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> parallel</text></g></a> <a href="<https://emacsconf.org/2023/talks/eat>" title="Eat and Eat powered Eshell, fast featureful terminal inside Emacs" data-slug="eat"> <title> 10:35-10:45 Eat and Eat powered Eshell, fast featureful terminal inside Emacs</title> <rect x="149" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="palegoldenrod"></rect> <g transform="translate(162,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eat</text></g></a> <a href="<https://emacsconf.org/2023/talks/poltys>" title="The browser in a buffer" data-slug="poltys"> <title> 11:00-11:20 The browser in a buffer</title> <rect x="188" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(217,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> poltys</text></g></a> <a href="<https://emacsconf.org/2023/talks/cubing>" title="Speedcubing in Emacs" data-slug="cubing"> <title> 11:35-11:55 Speedcubing in Emacs</title> <rect x="243" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="lightblue"></rect> <g transform="translate(272,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> cubing</text></g></a> <a href="<https://emacsconf.org/2023/talks/emms>" title="Emacs MultiMedia System (EMMS)" data-slug="emms"> <title>  1:00- 1:40 Emacs MultiMedia System (EMMS)</title> <rect x="376" y="15" opacity="0.8" width="62" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(436,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> emms</text></g></a> <a href="<https://emacsconf.org/2023/talks/steno>" title="Programming with steno" data-slug="steno"> <title>  1:55- 2:25 Programming with steno</title> <rect x="462" y="15" opacity="0.8" width="47" height="59" stroke="black" stroke-dasharray="5,5,5" fill="lightblue"></rect> <g transform="translate(507,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> steno</text></g></a> <a href="<https://emacsconf.org/2023/talks/mentor>" title="Mentoring VS-Coders as an Emacsian (or How to show not tell people about the wonders of Emacs)" data-slug="mentor"> <title>  2:35- 2:45 Mentoring VS-Coders as an Emacsian (or How to show not tell people about the wonders of Emacs)</title> <rect x="525" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(538,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mentor</text></g></a> <a href="<https://emacsconf.org/2023/talks/web>" title="Emacs saves the Web (maybe)" data-slug="web"> <title>  3:10- 3:40 Emacs saves the Web (maybe)</title> <rect x="580" y="15" opacity="0.8" width="47" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(625,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> web</text></g></a> <a href="<https://emacsconf.org/2023/talks/sharing>" title="Sharing Emacs is Caring Emacs: Emacs education and why I embraced video" data-slug="sharing"> <title>  3:55- 4:15 Sharing Emacs is Caring Emacs: Emacs education and why I embraced video</title> <rect x="650" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sharing</text></g></a> <a href="<https://emacsconf.org/2023/talks/sun-close>" title="Sunday closing remarks" data-slug="sun-close"> <title>  4:30- 4:40 Sunday closing remarks</title> <rect x="705" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(718,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="<https://emacsconf.org/2023/talks/scheme>" title="Bringing joy to Scheme programming" data-slug="scheme"> <title> 10:00-10:20 Bringing joy to Scheme programming</title> <rect x="94" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(123,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> scheme</text></g></a> <a href="<https://emacsconf.org/2023/talks/world>" title="GNU Emacs: A World of Possibilities" data-slug="world"> <title> 10:35-10:55 GNU Emacs: A World of Possibilities</title> <rect x="149" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(178,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> world</text></g></a> <a href="<https://emacsconf.org/2023/talks/flat>" title="A modern Emacs look-and-feel without pain" data-slug="flat"> <title> 11:10-11:20 A modern Emacs look-and-feel without pain</title> <rect x="203" y="75" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(216,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> flat</text></g></a> <a href="<https://emacsconf.org/2023/talks/emacsen>" title="The Emacsen family, the design of an Emacs and the importance of Lisp" data-slug="emacsen"> <title> 11:35-11:55 The Emacsen family, the design of an Emacs and the importance of Lisp</title> <rect x="243" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(272,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> emacsen</text></g></a> <a href="<https://emacsconf.org/2023/talks/gc>" title="emacs-gc-stats: Does garbage collection actually slow down Emacs?" data-slug="gc"> <title>  1:00- 1:35 emacs-gc-stats: Does garbage collection actually slow down Emacs?</title> <rect x="376" y="75" opacity="0.8" width="54" height="59" stroke="black" stroke-dasharray="" fill="palegoldenrod"></rect> <g transform="translate(428,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gc</text></g></a> <a href="<https://emacsconf.org/2023/talks/hyperdrive>" title="hyperdrive.el: Peer-to-peer filesystem in Emacs" data-slug="hyperdrive"> <title>  1:50- 2:30 hyperdrive.el: Peer-to-peer filesystem in Emacs</title> <rect x="454" y="75" opacity="0.8" width="62" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(514,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperdrive</text></g></a> <a href="<https://emacsconf.org/2023/talks/lspocaml>" title="Writing a language server in OCaml for Emacs, fun, and profit" data-slug="lspocaml"> <title>  2:45- 3:00 Writing a language server in OCaml for Emacs, fun, and profit</title> <rect x="541" y="75" opacity="0.8" width="23" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(562,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspocaml</text></g></a> <a href="<https://emacsconf.org/2023/talks/test>" title="What I learned by writing test cases for GNU Hyperbole" data-slug="test"> <title>  3:15- 3:45 What I learned by writing test cases for GNU Hyperbole</title> <rect x="588" y="75" opacity="0.8" width="47" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(633,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> test</text></g></a> <a href="<https://emacsconf.org/2023/talks/emacsconf>" title="EmacsConf.org: How we use Org Mode and TRAMP to organize and run a multi-track conference" data-slug="emacsconf"> <title>  4:00- 4:20 EmacsConf.org: How we use Org Mode and TRAMP to organize and run a multi-track conference</title> <rect x="658" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="lightblue"></rect> <g transform="translate(687,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> emacsconf</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></g></svg>


### DONE Upload


#### DONE Get access to media.emacsconf.org so that we can set up the upload service and the backstage area


##### DONE Decide what to do for backstage area and upload service     :decision:

-   <span class="timestamp-wrapper"><span class="timestamp">[2023-10-13 Fri]</span></span>: Got access to media.emacsconf.org, set up the backstage area

-   res.emacsconf.org
    -   up right away, so people can get started on captions
    -   more memory than media.emacsconf.org - is the upload service thrashing?
-   media.emacsconf.org
    -   does not interfere with res streaming during the conference itself
    -   don&rsquo;t need to send people multiple e-mails, risk confusion/out-of-date info
    -   access to media.emacsconf.org might be sorted out by <span class="timestamp-wrapper"><span class="timestamp">[2023-10-13 Fri]</span></span>
    -   not in a big rush yet


### DONE Prerec


##### Set up for the new year

As orga@res:

-   mkdir /data/emacsconf/$year
-   rm ~/current
-   ln -s /data/emacsconf/$year current
-   ln -s /data/emacsconf/$year $year

When we receive files

-   change the TODO status to PROCESSING
-   mkdir ~/current/$slug
-   copy the files to there
-   rename-original $slug $file
-   process-prerec $video
-   Copy the files to the res:~/cache, laptop:~/proj/emacsconf/2023/cache, and media:~/backstage
-   emacsconf-cache-all-video-data
-   emacsconf-publish-info-pages
-   emacsconf-publish-backstage-index

(check that the reencode.sh process has kicked off; if not, call reencode.sh $video $prefix&#x2013;reencoded.webm)


### INPROGRESS Captions

-   OpenAI Whisper SaaS (<https://platform.openai.com/docs/guides/speech-to-text/longer-inputs>) limits audio files to 25MB, so it&rsquo;s probably easier to do it ourselves


#### TODO E-mail previous captioning volunteers to see if they&rsquo;re interested in helping out


#### DONE E-mail captioning volunteers the backstage instructions


#### DONE E-mail current caption volunteers backstage information, captioning process, etc.

I&rsquo;ll wait a few days for Yoni to get back to us about whether he wants
to caption his own talk and/or seeing if other speakers will get their
talks in.

`emacsconf-mail-backstage-info`

Hi ${name}!

You&rsquo;re getting this e-mail because you have volunteered to help out
with captions for ${conf-name} ${year}. (Thank you so much!)

I&rsquo;m so excited! =) We&rsquo;re starting to get recorded talks, which means
it&rsquo;s time to get captions going. People really appreciate the
captions, especially when the captions have been lovingly edited by
volunteers who change things like &ldquo;Emax&rdquo; to &ldquo;Emacs&rdquo; and &ldquo;metaX&rdquo; to
&ldquo;M-x&rdquo;.

Just like last year, we&rsquo;re using OpenAI Whisper to give us a
reasonable starting point for transcripts. If working from scratch
works better for you, you&rsquo;re welcome to do that too.

We&rsquo;ve set up ${backstage} as the backstage area where you can view the
videos and resources uploaded so far. You can access it with the
username "${backstage-user}&ldquo; and the password &rdquo;${backstage-password}&ldquo;.
Please keep the backstage password and other speakers&rsquo; talk resources
secret. ${backstage-use}

To call dibs on a video to caption, just send a message to me at
sacha@sachachua.com and I can update the page so that it&rsquo;s assigned to
you. You can e-mail me the edited captions when you&rsquo;re done. Don&rsquo;t
worry too much about timestamps; we can re-align the text with the
audio afterwards. If life gets suddenly busy and you can&rsquo;t see it all
the way through, no worries. Just e-mail me what you&rsquo;ve got and I&rsquo;ll
put it back in the pool. Every little bit helps!

Thank you!

Sacha Chua


#### TODO E-mail the emacsconf-org mailing list the announcement and the invitation to volunteer


#### TODO Try out Deepgram, play around with it for last-minute submissions?


#### DONE Get the autocaptions for emms up in the backstage area


#### Captions lessons learned     :lessons:

-   OpenAI had a breaking API change, need to call `whisper.utils.get_writer`
    -   <https://github.com/dmarx/video-killed-the-radio-star/issues/101>
        
            vtt_writer = whisper.utils.get_writer('vtt', os.path.dirname(new_file))
            txt_writer = whisper.utils.get_writer('txt', os.path.dirname(new_file))
            vtt_writer(result, work['audio'], {'max_line_width': 60, 'max_line_count': None, 'highlight_words': None})
            txt_writer(result, work['audio'], {'max_line_width': 60, 'max_line_count': None, 'highlight_words': None})


#### Reencoding


### DONE Backstage


<a id="test"></a>

### DONE Test assets

<file://ssh:res:/data/emacsconf/2023/assets/test>


#### DONE Generate test videos


#### Try autopilot

    (let* ((offset-seconds 60)
    			 (start-time (time-add (current-time) offset-seconds))
    			 (emacsconf-schedule-validation-functions nil)
    			 (emacsconf-schedule-default-buffer-minutes 1)
    			 (emacsconf-schedule-default-buffer-minutes-for-live-q-and-a 1)
    			 (emacsconf-schedule-strategies '(emacsconf-schedule-allocate-buffer-time
    																				emacsconf-schedule-copy-previous-track))
    			 (schedule (emacsconf-schedule-prepare
    									(emacsconf-schedule-inflate-sexp
    									 `(("GEN"
    											:start ,(format-time-string "%Y-%m-%d %H:%M" start-time)
    											:set-track "General")
    										 (sat-open :time 1)
    										 (adventure :time 1) ; pad Q&A
    										 (uni :time 1) ; live Q&A
    										 (teaching :time 1)
    										 (table :time 1)
    										 (taming :time 1)
    										 (one :time 1)
    										 (cubing :time 1) ; IRC
    										 ("DEV"
    											:start
    											,(format-time-string "%Y-%m-%d %H:%M" (time-add start-time 60))
    											:set-track "Development")
    										 (matplotllm :time 1)
    										 (gc :time 1) ; pad
    										 (repl :time 1) ; IRC
    										 (voice :time 1)
    										 (llm :time 1)
    										 (overlay :time 1)
    										 (eval :time 1)
    										 (emacsconf :time 1))))))
    	(emacsconf-stream-crontabs t schedule))

    (let* ((offset-seconds 240)
    			 (start-time (time-add (current-time) offset-seconds))
    			 (emacsconf-schedule-validation-functions nil)
    			 (emacsconf-schedule-default-buffer-minutes 5)
    			 (emacsconf-schedule-default-buffer-minutes-for-live-q-and-a 5)
    			 (emacsconf-schedule-strategies
    				'(emacsconf-schedule-ignore-fixed
    					emacsconf-schedule-allocate-buffer-time
    					emacsconf-schedule-copy-previous-track))
    			 (schedule (emacsconf-schedule-prepare
    									(emacsconf-schedule-inflate-sexp
    									 `(("GEN"
    											:start ,(format-time-string "%Y-%m-%d %H:%M" start-time)
    											:set-track "General")
    										 (sat-open)
    										 (sun-open)
    										 ("DEV"
    											:start
    											,(format-time-string "%Y-%m-%d %H:%M" (time-add start-time 60))
    											:set-track "Development")
    										 (emacsconf))))))
    	(emacsconf-stream-crontabs nil schedule))


### BBB

Generate them for possibly live presentations as well? We&rsquo;ll see.


#### DONE Generate redirects

We use redirects for Q&A sessions with BBB web conferences so that people can easily join the web conference.

-   <emacsconf-publish-bbb-static-redirects>: generate static redirects
-   <emacsconf-publish-bbb-redirect-all>


#### DONE Generate BBB rooms

BBB name convention from last year

ec22-sat-am-dev Abin Simon (treesitter)

That means things change if I move to a different time or track.
Other option:

ec23 Speaker Name (talk-ids)

Deleting old rooms:

    (spookfox-js-injection-eval-in-active-tab "[...document.querySelectorAll('.delete-room')].filter((o) => o.getAttribute('data-name').match(/ec22/))[0].click(); document.querySelector('#delete-confirm').click();" t)

Creating new rooms

    (defun emacsconf-spookfox-create-bbb (group)
    	"Create a BBB room for this group of talks.
    GROUP is (email . (talk talk talk)).
    Needs a Spookfox connection."
    	(interactive (list (emacsconf-mail-complete-email-group)))
    	(let* ((bbb-name
    					(format "%s (%s) - %s%s"
    									(mapconcat (lambda (o) (plist-get o :slug)) (cdr group) ", ")
    									(plist-get (cadr group) :speakers)
    									emacsconf-id
    									emacsconf-year))
    				 path
    				 (retrieve-command (format "window.location.origin + [...document.querySelectorAll('h4.room-name-text')].find((o) => o.textContent.trim() == '%s').closest('tr').querySelector('.delete-room').getAttribute('data-path')" bbb-name))
    				 (create-command (format "name=\"%s\";
    console.debug(name);
    console.debug(document.querySelector('#create-room-block'));
    document.querySelector('#create-room-block').click();
    console.debug(document.querySelector('#create-room-name'));
    document.querySelector('#create-room-name').value = name;
    document.querySelector('#room_mute_on_join').click();
    document.querySelector('.create-room-button').click();"
    																 bbb-name)))
    		(setq path (spookfox-js-injection-eval-in-active-tab retrieve-command t))
    		(unless path
    			(kill-new create-command)
    			(dolist (cmd (split-string create-command ";"))
    				(spookfox-js-injection-eval-in-active-tab cmd t)
    				(sleep-for 2))
    			(sleep-for 2)
    			(setq path (spookfox-js-injection-eval-in-active-tab retrieve-command t)))
    		(when path
    			(dolist (talk (cdr group))
    				(save-window-excursion
    					(emacsconf-with-talk-heading talk
    						(org-entry-put (point) "ROOM" path))))
    			(cons bbb-name path))))
    
    (let ((groups
    			 (emacsconf-mail-groups
    				(seq-filter
    				 (lambda (o)
    					 (and (string-match "live" (or (plist-get o :q-and-a) ""))
    								(not (plist-get o :bbb-room))))
    				 (emacsconf-publish-prepare-for-display (emacsconf-get-talk-info))))))
    	(dolist (group groups)
    		(emacsconf-spookfox-create-bbb group)))


#### DONE Possibly generate BBB rooms for live presentations?


#### DONE Send testing instructions


### DONE VNC

We use VNC to connect to the X servers on res.emacsconf.org so that we can stream from it.

Success:

-   [X] Confirm that you can connect to emacsconf-gen via VNC
-   [X] Confirm that you can connect to emacsconf-dev via VNC

Setting up

-   <emacsconf-publish-res-index>


<a id="vnc-instructions"></a>

#### Instructions

NOTE: VNC+OBS doesn&rsquo;t work well if you have a window manager that
automatically resizes windows, like i3. Please configure your window
manager so that the VNC window is not resized.

1.  Install a VNC viewer on your system (ex: tigervnc-viewer).

2.  Set up your local environment:
    -   gen: export TRACK=gen; export TRACK\_PORT=5905; export SSH\_PORT=46668
    -   dev: export TRACK=dev; export TRACK\_PORT=5906; export SSH\_PORT=46668

3.  Copy the password:
    
    scp emacsconf-$TRACK@res.emacsconf.org:~/.vnc/passwd vnc-passwd-$TRACK -p $SSH\_PORT

4.  Forward your local ports and connect via VNC viewer to the
    appropriate forwarded port from your laptop:
    
        ssh emacsconf-$TRACK@res.emacsconf.org -N -L $TRACK_PORT:127.0.0.1:$TRACK_PORT -p $SSH_PORT &
        sleep 5   # Give it time to establish the tunnels
        xvncviewer 127.0.0.1:$TRACK_PORT -shared -geometry 1280x720 -passwd vnc-passwd-$TRACK &

If you get the following error:

    channel 2: open failed: connect failed: Connection refused
    CConn:       End of stream
    CConn:       The connection was dropped by the server before the session could
                 be established.

then the VNC server hasn&rsquo;t started yet. You can start it with

    ssh emacsconf-$TRACK@res.emacsconf.org -p $SSH_PORT /home/emacsconf-$TRACK/bin/track-vnc

and then connect with:

    xvncviewer 127.0.0.1:$TRACK_PORT -shared -geometry 1280x720 -passwd vnc-passwd-$TRACK &


#### TODO Ask bandali or zaeph to share their window manager configuration     :bandali:zaeph:


### DONE OBS

We use OBS to stream to Icecast on live.emacsconf.org.

Success: Confirm that you can stream

-   [X] gen
-   [X] dev

New year: reprovision with

    ansible-playbook -i inventory.yml prod-playbook.yml --tags obs

so that the year is updated in the shell scripts.


<a id="obs-instructions"></a>

#### Instructions

1.  [Connect to the VNC session for the track.](#vnc-instructions)

2.  Start **recording** (not streaming). If you don&rsquo;t see OBS when you connect, it&rsquo;s probably on workspace 2, so you can switch with Alt-2. If you still don&rsquo;t see it there, you can open a terminal with Alt-Enter and then run `track-obs`. After you start recording, confirm that it is now broadcasting to the stream.

3.  Verify with MPV on your local system:
    
        mpv https://live0.emacsconf.org/$TRACK.webm &


#### DONE Double-check OBS setup and streaming on res


### DONE Icecast

Success: You can use [OBS+VNC to record](#obs-instructions), and the results can be viewed by mpv.

-   [X] Gen
-   [X] Dev

New year: reprovision with

    ansible-playbook -i inventory.yml prod-playbook.yml --tags stream

so that the year is updated in the configuration.

This is on live.emacsconf.org and can be restarted with `/etc/init.d/emacsconf restart`.


#### DONE Double-check icecast


### DONE MPV


### DONE Watch page

live.emacsconf.org is on the front0.emacsconf.org server.

To set up for the year:

1.  Create directories and update the Nginx configuration
    
        ansible-playbook -i inventory.yml prod-playbook.yml --tags live

2.  Generate the pages
    
        (emacsconf-publish-watch-pages)

3.  Add the $year/watch to the wiki.

4.  Create a $year/watch.md manually.


### DONE Status page

Manually maintained

/ssh:front0.emacsconf.org:/var/www/status.emacsconf.org/index.html


### DONE Public media

Start of year:

1.  Set `media_protect_root` to true in Ansible `group_vars/all.yml`.
2.  `ansible-playbook -i inventory.yml prod-playbook.yml --tags media`
3.  Generate the index with `emacsconf-publish-update-media`

Confirm by setting a submitted talk to `PLAYING` and testing with
<emacsconf-publish-media-files-on-change> . The public media
directory should have the files and the entry should be in the index.
Switching it back to `TO_STREAM` and calling
<emacsconf-publish-media-files-on-change> should remove it.


#### TODO Switch public media to unprotected root before the conference

1.  Clear public media directory.
2.  Set `media_protect_root` to false in Ansible `group_vars/all.yml`.
3.  `ansible-playbook -i inventory.yml prod-playbook.yml --tags media`

You can generate the index with `emacsconf-publish-update-media`.


### DONE Mumble

If you see `Server connection rejected: Wrong certificate or password.`, use **Certificate Wizard** to reimport the .p12 file in that user&rsquo;s home directory.


### DONE Etherpad

<emacsconf-pad-prepopulate-all-talks>


#### DONE Create pads for all the talks

Because the pads refer to the next and previous talks and include the talk titles, this is best redone after the schedule has settled down.


### DONE Pad proxy


### DONE Overlays

<emacsconf-stream-generate-overlays>


### INPROGRESS Intros

Intro slides

<emacsconf-stream-generate-in-between-pages>
<emacsconf-pad-expand-intro>
[elisp:emacsconf-subed-intro-subtitles](emacsconf-subed-intro-subtitles)

<http://ipa-reader.xyz/>


#### DONE Regenerate overlays


#### TODO Add all intros to the backstage so that people can review them


#### TODO Record intro for Mike Hamrick

Next, we have &ldquo;Literate Documentation with Emacs and Org Mode&rdquo;, by Mike Hamrick. He will answer questions via BigBlueButton. You can join using the URL from the talk page or ask questions through Etherpad or IRC.


#### CANCELLED Write 1-2 sentence intros for all the talks

We do a brief introduction before each talk so that people know the
topic of the next talk, the pronunciation of the speaker&rsquo;s name, the
pronouns to use when referring to them, and the type of Q&A that will
follow.

The template we used last year was: &ldquo;In this talk, SPEAKER shares
TITLE OR SUMMARY. Afterwards, PRONOUN will handle questions over Q&A
METHOD.&rdquo;

This year, we asked speakers to contribute a short introduction. These
are in conf.org in the private repository. Many of the introductions
are a little longer than the template, but we might be able to handle
that. Some need to be rewritten into third-person (using the speaker&rsquo;s
name/pronouns instead of I). Some might be a bit of a tongue-twister
and can be rewritten to be easier to say.

We can store the introduction in the `INTRO_NOTE` property in
conf.org.

Actually recording the introductions can wait until closer to the
conference because talk titles and Q&A methods can change. We can
verify speaker name pronunciations at that time.

Hmm&#x2026; Actually, we can go ahead and record all of these so that
speakers can doublecheck pronunciations, and then we&rsquo;ll re-record them
in case someone wants to get fancier about intros.


##### Intros     :levels:

-   Good: Use the same template as before: In this talk, SPEAKER shares
    TITLE OR SUMMARY. Afterwards, PRONOUN will handle questions over Q&A
    METHOD.
-   Better: Include some more biographical information to give listeners some context.


##### DONE Do we want to use honorifics like Dr.?     :decision:

DECISION: Include in the intro-review email:

> We will usually introduce you by your first name (or handle, if you
> prefer to go by a pseudonym) but if you&rsquo;d rather be introduced
> differently (for example honorific followed by last-name, or whatever
> you prefer), just let us know.

Let&rsquo;s see if we can decide on this by <span class="timestamp-wrapper"><span class="timestamp">[2023-11-04 Sat] </span></span> so that we can
use it when recording the intros.

-   OPTION: Consistently using names without honorifics, even if indicated in the
    speaker-submitted intros (as in previous EmacsConfs)
    -   Equality
    -   votes: zaeph
-   CHOSEN: Asking speakers if they want us to use any honorifics in their intro:
    
    -   Observes personal preferences
    -   votes: corwin, max, jc (We can also say that we prefer not to use honorifics (it&rsquo;s not an academic
        -   Corwin&rsquo;s suggested wording: We will usually introduce you by your first name (or handle, if you prefer to go by a pseudonym) but if you&rsquo;d rather be introduced
            differently (for example honorific followed by last-name, or
            whatever you prefer) just let us know.
    
    conference) but we respect people&rsquo;s preferences.)
-   OPTION: Using honorifics based on e-mail signatures and intros:
    -   Recognizes credentials


#### DONE Record intro videos with 1-2 sentence intros for all the talks


#### DONE Record the rest of the intros


#### DONE Generate intro slides

We generate intro slides to display in between talks so that people
can find out information about the previous talk and learn about the
next talk. It includes talk titles, speaker names, URLs, and Q&A
methods. The image will also be used for an introduction video if we
can record one before the conference.

We also generate overlays that show talk information during the talk
itself.

SVGs don&rsquo;t support line-wrapping, so it helps to do a quick pass to
make sure all the talks are displayed properly.

Hmm&#x2026; Maybe I should take the names and pronouns off the video
overlay? Then there&rsquo;s less worry about wrapping, and people can always
go to the URL to get more information.

<emacsconf-stream-generate-in-between-pages>


#### TODO Ask speakers to review intros

after they&rsquo;ve uploaded their videos, since we might be able to check the pronunciation ourselves


### IRC channels

-   /opall
-   /conftopic
-   /deopall


#### TODO Confirm that the emacsconf user can connect

I think I had that on orga@res.emacsconf.org


### IRC talk info


### Announcements


### Publishing updates live


### Autopilot


### YouTube


### Peertube


### 480p

Consider increasing memory/cpu configuration on live?


<a id="lowres"></a>

#### TODO Figure out a better way to handle 480p stream     :corwin:

It kept dropping last year and sachac didn&rsquo;t have the mental bandwidth to figure it out.
Might need another node so that we don&rsquo;t risk it getting killed for memory reasons?

Corwin has volunteered to take this on


### Audio processing


<a id="audio"></a>

#### TODO Find volunteers for audio processing (normalization, noise reduction) and document the process     :helpwanted:

-   audio normalization
-   noise reduction


### Other things people can help with


<a id="eval-video-sync"></a>

#### TODO Video editing: the eval talk is a little bit out of sync     :helpwanted:

The circular video inset into
<https://media.emacsconf.org/2023/backstage/#eval> is a little bit out
of sync with the audio. Not sure if the screenshare is offset as well.
Maybe just nudging the audio a little bit will be enough to bring
these in sync? If someone would like to fix this, that would be
awesome.


### TODO Write something for merging in information from previous years if not specified

-   availability
-   timezone
-   name
-   short name
-   pronouns


<a id="go-live"></a>

## Get ready for production     :preflight:


### A day or two before


#### DONE Update the variables

<a href="https://git.emacsconf.org/emacsconf-ansible/tree/group_vars/all.yml">group_vars/all.yml</a>:

    test_mode: false
    media_protect_root: false
    protect_stream_with_password: false

    ansible-playbook -i inventory.ml prod-playbook.yml --tags stream
    ansible-playbook -i inventory.ml prod-playbook.yml --tags media


#### DONE Test the 480p!


#### DONE Resize the nodes     :bandali:

2022:

-   Front: 16GB
-   Live: 64GB


#### TODO Update the BigBlueButton rooms so that users are not all moderators

    (require 'emacsconf-spookfox)
    (dolist (talk (emacsconf-publish-prepare-for-display (emacsconf-get-talk-info)))
    	(emacsconf-spookfox-update-bbb-settings
    	 talk
    	 '(("room_mute_on_join" . "true")
    		 ("room_all_join_moderator" . "false")
    		 ("room_anyone_can_start" . "true"))
    	 ))


#### TODO Make sure conf.org and the publishing wiki are up to date


### On the day of the conference


#### TODO Update the emacsconf-tracks status


<a id="org45dfd5e"></a>

## Harvest cool stuff


### Harvesting

-   download published recordings: (defun emacsconf-harvest-download-published-recordings (source dest)
    	"Copy the command for downloading published recordings from SOURCE to DEST."
    	(kill-new
    	 (mapconcat (lambda (o) (if (plist-get o :bbb-meeting-id)
    															(format "rsync -avzue ssh %s%s %s\n"
    																			source
    																			(match-string 1 (plist-get o :bbb-rec))
    																			dest)
    														""))
    							(emacsconf-get-talk-info))))


### TODO Announce that videos have been uploaded     :emacsconf:


### When the speaker posts a video to their own channel     :process:

1.  Open the video.
2.  Add it to the playlist.
3.  Open the playlist: <https://www.youtube.com/playlist?list=PLomc4HLgvuCUdrW3JkugtKv8xPelUoOyP>
4.  Move the video to the correct place.
5.  Open the old video.
6.  Remove the old video from the playlist.
7.  Edit the video. Add the link to the new video in the description.
8.  Select **Editor** from the left side. Add an info card and maybe an end screen pointing to the new video.
9.  Update the `YOUTUBE_URL` property in the conf.org file. Commit and push.


### DONE Figure out which published presentations don&rsquo;t have any deskshare, so I can just upload those directly

The following talks do not have deskshares and can therefore be published by copying webcams.webm.

    (seq-keep
     (lambda (o)
    	 (when (plist-get o :bbb-meeting-id)
    		 (let* ((xml-file
    						 (expand-file-name "deskshare.xml"
    															 (expand-file-name (plist-get o :bbb-meeting-id) emacsconf-harvest-bbb-published-dir)))
    						(dom (and (file-exists-p xml-file)
    											(xml-parse-file xml-file))))
    			 (unless (and dom (dom-by-tag dom 'event))
    				 (plist-get o :slug)))))
     (emacsconf-get-talk-info))

    (defun emacsconf-harvest-bbb-copy-webcams-only-sessions ()
    	"Copy the webcam-only Q&A sessions as --answers.webm in the cache directory."
    	(interactive)
    	(seq-keep
    	 (lambda (o)
    		 (when (and (plist-get o :bbb-meeting-id)
    								(file-exists-p
    								 (expand-file-name "video/webcams.webm"
    																	 (expand-file-name (plist-get o :bbb-meeting-id) emacsconf-harvest-bbb-published-dir))))
    			 (let* ((xml-file
    							 (expand-file-name "deskshare.xml"
    																 (expand-file-name (plist-get o :bbb-meeting-id) emacsconf-harvest-bbb-published-dir)))
    							(dom (and (file-exists-p xml-file)
    												(xml-parse-file xml-file))))
    				 (unless
    							(and dom
    									 (dom-by-tag dom 'event))
    					 (unless (file-exists-p (expand-file-name
    																	 (concat (plist-get o :file-prefix) "--answers.webm")
    																	 emacsconf-cache-dir))
    						 (copy-file
    							(expand-file-name "video/webcams.webm"
    																(expand-file-name (plist-get o :bbb-meeting-id) emacsconf-harvest-bbb-published-dir))
    							(expand-file-name (concat (plist-get o :file-prefix) "--answers.webm")
    																emacsconf-cache-dir)))
    					 (plist-get o :slug)))))
    	 (emacsconf-get-talk-info)))

    (emacsconf-harvest-bbb-copy-webcams-only-sessions)

    (defun emacsconf-harvest-set-qa-public ()
    	(dolist (talk (emacsconf-publish-prepare-for-display (emacsconf-get-talk-info)))
    		(when (emacsconf-talk-file talk "--answers.webm")
    			(emacsconf-with-talk-heading talk
    				(org-entry-put (point) "QA_PUBLIC" "1")))))


### DONE Figure out which talks have screenshares and process them

hmm, speed is about the same on my computer?

The following talks have deskshares and need splicing.

    (seq-keep
     (lambda (o)
    	 (when (plist-get o :bbb-meeting-id)
    		 (let* ((xml-file
    						 (expand-file-name "deskshare.xml"
    															 (expand-file-name (plist-get o :bbb-meeting-id) emacsconf-harvest-bbb-published-dir)))
    						(dom (and (file-exists-p xml-file)
    											(xml-parse-file xml-file))))
    			 (when (and dom (dom-by-tag dom 'event))
    				 (plist-get o :slug)))))
     (emacsconf-get-talk-info))

    (emacsconf-extract-replace-strings
     `((,(expand-file-name emacsconf-extract-bbb-published-dir) . "~/current/bbb-published/")
    	 (,(expand-file-name emacsconf-cache-dir) . "~/current/cache"))
     (mapconcat
    	(lambda (slug)
    		(let ((prefix (plist-get (emacsconf-resolve-talk (symbol-name slug)) :file-prefix)))
    			(format "if [ ! -f ~/current/cache/%s--answers--original.webm ]; then\n  %s && cp ~/current/cache/%s--answers.webm ~/current/cache/%s--answers--original.webm\nfi"
    							prefix
    							(emacsconf-get-ffmpeg-to-splice-webcam-and-recording (symbol-name slug))
    							prefix
    							prefix)))
    	'(teaching one writing sat-close hyperamp poltys sun-close voice scheme world flat emacsen gc)
    	"\n"))


### SOMEDAY Clean up storage on media     :emacsconf:


### DONE Move answers to main for live talks

    (mapconcat
     (lambda (o)
    						(and (null
    									(file-exists-p
    									 (expand-file-name (concat (plist-get o :file-prefix) "--main.webm")
    																		 emacsconf-cache-dir)))
    								 (file-exists-p
    									(expand-file-name (concat (plist-get o :file-prefix) "--answers.webm")
    																		emacsconf-cache-dir))
    								 (format "cp %s %s; ../rm-from-cache %s\n"
    												 (concat (plist-get o :file-prefix) "--answers.webm")
    												 (concat (plist-get o :file-prefix) "--main.webm")
    												 (concat (plist-get o :file-prefix) "--answers.webm")
    												 )))
     (emacsconf-get-talk-info)
     "")


<a id="org3dd5255"></a>

## Make things easier for next year


### TODO Figure out better space usage for backstage vs public on media.emacsconf.org     :emacsconf:

Maybe I can use hard links or symbolic links?


### TODO Update the makefile     :emacsconf:


<a id="coordinate-volunteers"></a>

## Volunteers


### DONE E-mail the list asking people to sign up

Hi everyone!

EmacsConf is coming up soon! Here are some roles we need help with
during the conference:

-   Check-in (can handle both tracks):
    -   Keep an eye out for speakers on IRC and in the BigBlueButton room
    -   Give the speaker moderator permissions
    -   <https://emacsconf.org/2023/volunteer/checkin/>
-   Host (one for each track):
    -   Read out questions (and ask some of their own while waiting for questions to come in)
    -   Remind people how to join
    -   Keep the speaker company
    -   Moderate the Q&A sessions as needed
    -   Let us know when you want the Q&A session to be opened up to everyone
    -   <https://emacsconf.org/2023/volunteer/host/>
-   Streamer (one for each track):
    -   Manage what happens on the screen
    -   Listen to the audio volume on the stream and adjust as needed, especially for BigBlueButton rooms
    -   <https://emacsconf.org/2023/volunteer/stream/>
-   Internet Relay Chat scribe (one for each track):
    -   Check the IRC channel for questions and answers and copy them to the talk&rsquo;s Etherpad
    -   <https://emacsconf.org/2023/volunteer/irc/>
-   Pad scribe (one for each track):
    -   Add notes, questions, and answers to the talk&rsquo;s Etherpad
    -   <https://emacsconf.org/2023/volunteer/pad/>
-   Other things you might be interested in helping out with - feel free to suggest!

If you let us know which role(s) you&rsquo;re interested in, the track(s)
you&rsquo;re interested in (general / development) and your availability for
the conference (ex: Sat AM, Sat PM, Sun AM, Sun PM, or more granular
as needed), I can make a shift schedule.

If you&rsquo;re new to the role and have questions, we can help you get
started via e-mail or set up a training meeting. Let me know what you
want to know and what times what might work for you.

We can also set up a dry run in a couple of weeks so that people can
try working together. Please let me know your availability for maybe
Nov 11 or Nov 18 for a dry run.

Looking forward to a nice smooth EmacsConf!

Sacha


### TODO Prepare shift calendar, ask people to sign up

<a name="shifts"></a>

AM: 9-12 PM EST, PM: 1-5 PM EST (plus a little extra for setup/transition)

Saturday Dec 2 2023

<table id="orgbedd0ea">


<colgroup>
<col  class="org-left">

<col  class="org-left">

<col  class="org-left">

<col  class="org-left">

<col  class="org-left">

<col  class="org-left">

<col  class="org-left">
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left">&#xa0;</th>
<th scope="col" class="org-left"><a href="https://emacsconf.org/2023/volunteer/host/">Host</a></th>
<th scope="col" class="org-left">Streamer</th>
<th scope="col" class="org-left"><a href="https://emacsconf.org/2023/volunteer/checkin/">Checkin</a></th>
<th scope="col" class="org-left"><a href="https://emacsconf.org/2023/volunteer/irc/">IRC</a></th>
<th scope="col" class="org-left"><a href="https://emacsconf.org/2023/volunteer/pad/">Pad</a></th>
<th scope="col" class="org-left">Coord</th>
</tr>
</thead>

<tbody>
<tr>
<td class="org-left">Gen AM</td>
<td class="org-left">zaeph</td>
<td class="org-left">sachac</td>
<td class="org-left">FlowyCoder</td>
<td class="org-left">&#xa0;</td>
<td class="org-left">&#xa0;</td>
<td class="org-left">sachac</td>
</tr>


<tr>
<td class="org-left">Gen PM</td>
<td class="org-left">zaph</td>
<td class="org-left">sachac</td>
<td class="org-left">FlowyCoder</td>
<td class="org-left">&#xa0;</td>
<td class="org-left">&#xa0;</td>
<td class="org-left">sachac</td>
</tr>


<tr>
<td class="org-left">Dev AM</td>
<td class="org-left">bandali</td>
<td class="org-left">sachac</td>
<td class="org-left">FlowyCoder</td>
<td class="org-left">&#xa0;</td>
<td class="org-left">&#xa0;</td>
<td class="org-left">sachac</td>
</tr>


<tr>
<td class="org-left">Dev PM</td>
<td class="org-left">bandali</td>
<td class="org-left">sachac</td>
<td class="org-left">FlowyCoder</td>
<td class="org-left">&#xa0;</td>
<td class="org-left">&#xa0;</td>
<td class="org-left">sachac</td>
</tr>
</tbody>
</table>

Sunday Dec 3 2023

<table id="orgcd6d77f">


<colgroup>
<col  class="org-left">

<col  class="org-left">

<col  class="org-left">

<col  class="org-left">

<col  class="org-left">

<col  class="org-left">

<col  class="org-left">
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left">&#xa0;</th>
<th scope="col" class="org-left"><a href="https://emacsconf.org/2023/volunteer/host/">Host</a></th>
<th scope="col" class="org-left">Streamer</th>
<th scope="col" class="org-left"><a href="https://emacsconf.org/2023/volunteer/checkin/">Checkin</a></th>
<th scope="col" class="org-left"><a href="https://emacsconf.org/2023/volunteer/irc/">IRC</a></th>
<th scope="col" class="org-left"><a href="https://emacsconf.org/2023/volunteer/pad/">Pad</a></th>
<th scope="col" class="org-left">Coord</th>
</tr>
</thead>

<tbody>
<tr>
<td class="org-left">Gen AM</td>
<td class="org-left">zaeph</td>
<td class="org-left">sachac</td>
<td class="org-left">FlowyCoder</td>
<td class="org-left">&#xa0;</td>
<td class="org-left">&#xa0;</td>
<td class="org-left">sachac</td>
</tr>


<tr>
<td class="org-left">Gen PM</td>
<td class="org-left">zaeph</td>
<td class="org-left">sachac</td>
<td class="org-left">FlowyCoder</td>
<td class="org-left">&#xa0;</td>
<td class="org-left">&#xa0;</td>
<td class="org-left">sachac</td>
</tr>


<tr>
<td class="org-left">Dev AM</td>
<td class="org-left">bandali</td>
<td class="org-left">sachac</td>
<td class="org-left">FlowyCoder</td>
<td class="org-left">&#xa0;</td>
<td class="org-left">&#xa0;</td>
<td class="org-left">sachac</td>
</tr>


<tr>
<td class="org-left">Dev PM</td>
<td class="org-left">bandali</td>
<td class="org-left">sachac</td>
<td class="org-left">FlowyCoder</td>
<td class="org-left">&#xa0;</td>
<td class="org-left">&#xa0;</td>
<td class="org-left">sachac</td>
</tr>
</tbody>
</table>

Backups:

-   dev host/streamer:
-   gen host/streamer:
-   checkin, IRC, pad:

Interested in a shift? Please e-mail <mailto:emacsconf-org-private@gnu.org> and we&rsquo;ll help you figure out what you need to learn.

    `(setq emacsconf-shifts
           (list
           ,@(apply #'append
                   (mapcar
                    (lambda (day)
                      (let ((headers
    												 (mapcar
    													(lambda (field)
    														(intern
    														 (concat
    															":"
    															(downcase
    															 (if (string-match org-link-bracket-re field)
    																	 (match-string 2 field)
    																 field)))))
                              (cdr (car (cadr day))))))
                        (mapcar
                         (lambda (row)
                              (apply #'append
                                     (list 'list :id
                                           (when (string-match "^\\([^ ]+\\) \\(AM\\|PM\\)" (car row))
                                             (format "%s-%s-%s"
                                                     (car day)
                                                     (downcase (match-string 2 (car row)))
                                                     (downcase (match-string 1 (car row)))))
                                           :track
                                           (if (string-match "^Gen" (car row)) "General" "Development")
                                           :start
                                           (format "%sT%s:00:00%s"
                                                   (elt day 2)
                                                   (if (string-match "AM" (car row)) "08" "13")
                                                   emacsconf-timezone-offset)
                                           :end
                                           (format "%sT%s:00:00%s"
                                                   (elt day 2)
                                                   (if (string-match "AM" (car row)) "12" "18")
                                                   emacsconf-timezone-offset))
                                     (seq-map-indexed
                                      (lambda (value index)
                                        (unless (string= value "")
                                          (list (elt headers index) value)))
                                      (cdr row))))
                            (cdr (cadr day)))
                          ))
                    (list
                     (list "sat" sat "2023-12-02")
                     (list "sun" sun "2023-12-03"))))))


### DONE Document volunteer roles

Copied it over from the previous year


<a id="org5fa50a9"></a>

## Lessons learned

-   Make sure timezones are on anything that has time (schedule page, watch pages, etc.)
-   Remember to publish the icals and schedule org files: `emacsconf-update-schedule`. Added to the schedule-details.md.
-   For really late submissions, make sure you also create the pad (`emacsconf-pad-prepopulate-talk-pad`) and the BBB room (`emacsconf-spookfox-create-bbb`).
-   We need to move off the current bbb.emacsverse.org or discuss the future of the current BBB VM.
-   Next year, it might be nice to use the intros and generate title slides in order to add them to the videos.


<a id="progress"></a>

# Progress reports

-   <https://emacsconf.org/blog/2023-08-14-cfp-progress/>
-   <https://emacsconf.org/blog/2023-09-25-draft-schedule>


<a id="templates"></a>

# E-mail templates


<a id="review"></a>

## Review


### Template

Thanks for submitting your proposal! (ZZZ: feedback) We&rsquo;re experimenting
with early acceptance this year, so we&rsquo;ll wait a week in case the
other volunteers want to chime in regarding your talk. =)


<a id="acceptance"></a>

## Acceptance


### Function

    (defun emacsconf-mail-accept-talk (talk &optional template)
      (interactive (list (emacsconf-complete-talk-info)))
      (emacsconf-mail-prepare
       (or template (emacsconf-mail-merge-get-template "acceptance"))
       (plist-get talk :email)
       (list
       :title (plist-get talk :title)
       :email (plist-get talk :email)
       :time (plist-get talk :time)
    	 :conf-name emacsconf-name
       :speakers-short (plist-get talk :speakers-short)
       :url (concat emacsconf-base-url (plist-get talk :url))
    	 :video-target-date emacsconf-video-target-date
       :year emacsconf-year)))


### Template

Hi, ${speakers-short}!

Looks like all systems are a go for your talk. =) Thanks for proposing
it! Your talk page is now at ${url} . Please feel free to update it or
e-mail us if you&rsquo;d like help with any changes.

If you want to get started on your talk early, we have some
instructions at <https://emacsconf.org/${year}/prepare/> that might help.
We strongly encourage speakers to prepare a talk video by
${video-target-date} in order to reduce technical risks and make
things flow more smoothly. Plus, we might be able to get it captioned
by volunteers, just like the talks last year. We&rsquo;ll save ${time} minutes
for your talk, not including time for Q&A. Don&rsquo;t sweat it if
you&rsquo;re a few minutes over or under. If it looks like a much shorter or
longer talk once you start getting into it, let us know and we might
be able to adjust.

I&rsquo;ll follow up with the specific schedule for your talk once things
settle down. In the meantime, please let us know if you have any
questions or if there&rsquo;s anything we can do to help out!

Sacha


<a id="archive"></a>

# Archive


<a id="hyperdrive-core"></a>

## DONE Check with hyperdrive and core if they&rsquo;re willing to swap     :decision:

DONE <span class="timestamp-wrapper"><span class="timestamp">[2023-10-08 Sun]</span></span>: hyperdrive on Sunday afternoon, will keep an eye out for openings on general track and call it out in the opening remarks so people know that it&rsquo;s a general talk.

If Stefan Kangas puts together [Emacs core development: how it works](https://emacsconf.org/2023/talks/core "Emacs core development: how it works")
speaking as a new Emacs maintainer, that might be a good general
closing talk on the first day because it can encourage people to help
with Emacs development. We don&rsquo;t have a lot of space on the General
track, but if we move [hyperdrive.el: Peer-to-peer filesystem in Emacs](https://emacsconf.org/2023/talks/hyperdrive "hyperdrive.el: Peer-to-peer filesystem in Emacs")
to the other track, then there&rsquo;s enough space.

It might also be a good idea to move [devel](https://emacsconf.org/2023/talks/devel "Emacs development updates") earlier than
[unentangling](https://emacsconf.org/2023/talks/unentangling "(Un)entangling projects and repos") in case John Wiegley can have a live Q&A
session (he might be travelling at that time, so it&rsquo;s unsure), so that
there&rsquo;s more time for people to ask emacs-devel highlight questions
and so that John Wiegley and Stefan Kangas can attend each other&rsquo;s
Q&A.

Joseph Turner wanted to make sure that people don&rsquo;t assume the
[hyperdrive](https://emacsconf.org/2023/talks/hyperdrive "hyperdrive.el: Peer-to-peer filesystem in Emacs") talk is too technical for them. We can rename the
tracks (Track A and Track B)? if that helps, so that people don&rsquo;t
think the other track is exclusively for more technical things.

Thoughts?


### Option A: Here&rsquo;s the schedule with [hyperdrive](https://emacsconf.org/2023/talks/hyperdrive "hyperdrive.el: Peer-to-peer filesystem in Emacs") in the second track and [core](https://emacsconf.org/2023/talks/core "Emacs core development: how it works") in the first track.

-   world: Ends at 15:30 after 11:30

<svg width="800" height="400" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Graphical view of the schedule</title> <g transform="translate(0,0)"> <title> Schedule for Saturday</title> <rect width="800" height="200" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2023/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title>  9:00- 9:10 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.8" width="15" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(13,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2023/talks/adventure" title="An Org-Mode based text adventure game for learning the basics of Emacs, inside Emacs, written in Emacs Lisp" data-slug="adventure"> <title>  9:10- 9:20 An Org-Mode based text adventure game for learning the basics of Emacs, inside Emacs, written in Emacs Lisp</title> <rect x="15" y="15" opacity="0.8" width="15" height="84" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(28,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> adventure</text></g></a> <a href="/2023/talks/uni" title="Authoring and presenting university courses with Emacs and a full libre software stack" data-slug="uni"> <title>  9:30- 9:50 Authoring and presenting university courses with Emacs and a full libre software stack</title> <rect x="47" y="15" opacity="0.8" width="31" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(76,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> uni</text></g></a> <a href="/2023/talks/teaching" title="Teaching computer and data science with literate programming tools" data-slug="teaching"> <title> 10:05-10:25 Teaching computer and data science with literate programming tools</title> <rect x="101" y="15" opacity="0.8" width="31" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(130,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> teaching</text></g></a> <a href="/2023/talks/table" title="Who needs Excel? Managing your students qualifications with org-table" data-slug="table"> <title> 10:40-10:50 Who needs Excel? Managing your students qualifications with org-table</title> <rect x="156" y="15" opacity="0.8" width="15" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(169,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> table</text></g></a> <a href="/2023/talks/taming" title="Taming things with Org Mode" data-slug="taming"> <title> 11:05-11:15 Taming things with Org Mode</title> <rect x="196" y="15" opacity="0.8" width="15" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(209,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> taming</text></g></a> <a href="/2023/talks/one" title="one.el: the static site generator for Emacs Lisp Programmers" data-slug="one"> <title> 11:30-11:50 one.el: the static site generator for Emacs Lisp Programmers</title> <rect x="235" y="15" opacity="0.8" width="31" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(264,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> one</text></g></a> <a href="/2023/talks/writing" title="Emacs turbo-charges my writing" data-slug="writing"> <title> 12:45-12:55 Emacs turbo-charges my writing</title> <rect x="352" y="15" opacity="0.8" width="15" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(365,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> writing</text></g></a> <a href="/2023/talks/nabokov" title="Why Nabokov would use Org-Mode if he were writing today" data-slug="nabokov"> <title>  1:10- 1:20 Why Nabokov would use Org-Mode if he were writing today</title> <rect x="392" y="15" opacity="0.8" width="15" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(405,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> nabokov</text></g></a> <a href="/2023/talks/collab" title="Collaborative data processing and documenting using org-babel" data-slug="collab"> <title>  1:35- 1:55 Collaborative data processing and documenting using org-babel</title> <rect x="431" y="15" opacity="0.8" width="31" height="84" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(460,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> collab</text></g></a> <a href="/2023/talks/solo" title="How I play TTRPGs in Emacs" data-slug="solo"> <title>  2:05- 2:25 How I play TTRPGs in Emacs</title> <rect x="478" y="15" opacity="0.8" width="31" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(507,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> solo</text></g></a> <a href="/2023/talks/ref" title="Org-Mode workflow: informal reference tracking" data-slug="ref"> <title>  2:40- 3:00 Org-Mode workflow: informal reference tracking</title> <rect x="533" y="15" opacity="0.8" width="31" height="84" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(562,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> ref</text></g></a> <a href="/2023/talks/devel" title="Emacs development updates" data-slug="devel"> <title>  3:10- 3:20 Emacs development updates</title> <rect x="580" y="15" opacity="0.8" width="15" height="84" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(593,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2023/talks/unentangling" title="(Un)entangling projects and repos" data-slug="unentangling"> <title>  3:30- 3:40 (Un)entangling projects and repos</title> <rect x="611" y="15" opacity="0.8" width="15" height="84" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(624,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> unentangling</text></g></a> <a href="/2023/talks/core" title="Emacs core development: how it works" data-slug="core"> <title>  3:50- 4:30 Emacs core development: how it works</title> <rect x="643" y="15" opacity="0.8" width="62" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(703,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> core</text></g></a> <a href="/2023/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title>  4:45- 4:55 Saturday closing remarks</title> <rect x="729" y="15" opacity="0.8" width="15" height="84" stroke="black" stroke-dasharray="" fill="green"></rect> <g transform="translate(742,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2023/talks/matplotllm" title="MatplotLLM, iterative natural language data visualization in org-babel" data-slug="matplotllm"> <title> 10:00-10:10 MatplotLLM, iterative natural language data visualization in org-babel</title> <rect x="94" y="100" opacity="0.8" width="15" height="84" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(107,183)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> matplotllm</text></g></a> <a href="/2023/talks/voice" title="Improving access to AI-assisted literate programming with voice control" data-slug="voice"> <title> 10:20-10:40 Improving access to AI-assisted literate programming with voice control</title> <rect x="125" y="100" opacity="0.8" width="31" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(154,183)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> voice</text></g></a> <a href="/2023/talks/llm" title="LLM clients in Emacs, functionality and standardization" data-slug="llm"> <title> 10:55-11:15 LLM clients in Emacs, functionality and standardization</title> <rect x="180" y="100" opacity="0.8" width="31" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(209,183)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> llm</text></g></a> <a href="/2023/talks/woof" title="Watch Over Our Folders" data-slug="woof"> <title> 12:45- 1:05 Watch Over Our Folders</title> <rect x="352" y="100" opacity="0.8" width="31" height="84" stroke="black" stroke-dasharray="" fill="lightgray"></rect> <g transform="translate(381,183)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> woof</text></g></a> <a href="/2023/talks/overlay" title="Improving compiler diagnostics with Overlays" data-slug="overlay"> <title>  1:20- 1:40 Improving compiler diagnostics with Overlays</title> <rect x="407" y="100" opacity="0.8" width="31" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(436,183)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> overlay</text></g></a> <a href="/2023/talks/eval" title="Editor Integrated REPL Driven Development for all languages" data-slug="eval"> <title>  1:55- 2:05 Editor Integrated REPL Driven Development for all languages</title> <rect x="462" y="100" opacity="0.8" width="15" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(475,183)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eval</text></g></a> <a href="/2023/talks/repl" title="REPLs in strange places: Lua, LaTeX, LPeg, LPegRex, TikZ" data-slug="repl"> <title>  2:20- 3:00 REPLs in strange places: Lua, LaTeX, LPeg, LPegRex, TikZ</title> <rect x="501" y="100" opacity="0.8" width="62" height="84" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(561,183)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> repl</text></g></a> <a href="/2023/talks/world" title="GNU Emacs: A World of Possibilities" data-slug="world"> <title>  3:10- 3:30 GNU Emacs: A World of Possibilities</title> <rect x="580" y="100" opacity="0.8" width="31" height="84" stroke="black" stroke-dasharray="" fill="red"></rect> <g transform="translate(609,183)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> world</text></g></a> <a href="/2023/talks/hyperdrive" title="hyperdrive.el: Peer-to-peer filesystem in Emacs" data-slug="hyperdrive"> <title>  3:45- 4:25 hyperdrive.el: Peer-to-peer filesystem in Emacs</title> <rect x="635" y="100" opacity="0.8" width="62" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(695,183)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperdrive</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 5 PM</text></g></g> <g transform="translate(0,200)"> <title> Schedule for Sunday</title> <rect width="800" height="200" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2023/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title>  9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.8" width="7" height="84" stroke="black" stroke-dasharray="" fill="green"></rect> <g transform="translate(5,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2023/talks/hyperamp" title="Top 10 ways Hyperbole amps up Emacs" data-slug="hyperamp"> <title>  9:05- 9:25 Top 10 ways Hyperbole amps up Emacs</title> <rect x="7" y="15" opacity="0.8" width="31" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(36,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperamp</text></g></a> <a href="/2023/talks/koutline" title="Using Koutline for stream of thought journaling" data-slug="koutline"> <title>  9:40-10:00 Using Koutline for stream of thought journaling</title> <rect x="62" y="15" opacity="0.8" width="31" height="84" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(91,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> koutline</text></g></a> <a href="/2023/talks/parallel" title="Parallel Text Replacement: Does P = NP?" data-slug="parallel"> <title> 10:10-10:20 Parallel Text Replacement: Does P = NP?</title> <rect x="109" y="15" opacity="0.8" width="15" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(122,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> parallel</text></g></a> <a href="/2023/talks/eat" title="Eat and Eat powered Eshell, fast featureful terminal inside Emacs" data-slug="eat"> <title> 10:35-10:45 Eat and Eat powered Eshell, fast featureful terminal inside Emacs</title> <rect x="149" y="15" opacity="0.8" width="15" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(162,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eat</text></g></a> <a href="/2023/talks/poltys" title="The browser in a buffer" data-slug="poltys"> <title> 11:00-11:20 The browser in a buffer</title> <rect x="188" y="15" opacity="0.8" width="31" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(217,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> poltys</text></g></a> <a href="/2023/talks/cubing" title="Speedcubing in Emacs" data-slug="cubing"> <title> 11:35-11:55 Speedcubing in Emacs</title> <rect x="243" y="15" opacity="0.8" width="31" height="84" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(272,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> cubing</text></g></a> <a href="/2023/talks/emms" title="Emacs MultiMedia System (EMMS)" data-slug="emms"> <title> 12:45- 1:25 Emacs MultiMedia System (EMMS)</title> <rect x="352" y="15" opacity="0.8" width="62" height="84" stroke="black" stroke-dasharray="" fill="yellow"></rect> <g transform="translate(412,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> emms</text></g></a> <a href="/2023/talks/steno" title="Programming at 200 wpm" data-slug="steno"> <title>  1:40- 2:10 Programming at 200 wpm</title> <rect x="439" y="15" opacity="0.8" width="47" height="84" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(484,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> steno</text></g></a> <a href="/2023/talks/mentor" title="Mentoring VS-Coders as an Emacsian (or How to show not tell people about the wonders of Emacs)" data-slug="mentor"> <title>  2:20- 2:30 Mentoring VS-Coders as an Emacsian (or How to show not tell people about the wonders of Emacs)</title> <rect x="501" y="15" opacity="0.8" width="15" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(514,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mentor</text></g></a> <a href="/2023/talks/hn" title="The many ways to browse Hacker News from Emacs" data-slug="hn"> <title>  3:00- 3:10 The many ways to browse Hacker News from Emacs</title> <rect x="564" y="15" opacity="0.8" width="15" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(577,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hn</text></g></a> <a href="/2023/talks/web" title="Emacs saves the Web" data-slug="web"> <title>  3:25- 4:05 Emacs saves the Web</title> <rect x="603" y="15" opacity="0.8" width="62" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(663,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> web</text></g></a> <a href="/2023/talks/sharing" title="Sharing Emacs is Caring Emacs: Emacs education and why I embraced video" data-slug="sharing"> <title>  4:20- 4:40 Sharing Emacs is Caring Emacs: Emacs education and why I embraced video</title> <rect x="690" y="15" opacity="0.8" width="31" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(719,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sharing</text></g></a> <a href="/2023/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title>  4:55- 5:05 Sunday closing remarks</title> <rect x="745" y="15" opacity="0.8" width="15" height="84" stroke="black" stroke-dasharray="" fill="green"></rect> <g transform="translate(758,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2023/talks/scheme" title="Bringing joy to Scheme programming" data-slug="scheme"> <title> 10:00-10:20 Bringing joy to Scheme programming</title> <rect x="94" y="100" opacity="0.8" width="31" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(123,183)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> scheme</text></g></a> <a href="/2023/talks/test" title="What I learned by writing test cases for GNU Hyperbole" data-slug="test"> <title> 10:35-10:55 What I learned by writing test cases for GNU Hyperbole</title> <rect x="149" y="100" opacity="0.8" width="31" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(178,183)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> test</text></g></a> <a href="/2023/talks/flat" title="A modern Emacs look-and-feel without pain" data-slug="flat"> <title> 11:10-11:20 A modern Emacs look-and-feel without pain</title> <rect x="203" y="100" opacity="0.8" width="15" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(216,183)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> flat</text></g></a> <a href="/2023/talks/gc" title="emacs-gc-stats: Does garbage collection actually slow down Emacs?" data-slug="gc"> <title> 12:45- 1:05 emacs-gc-stats: Does garbage collection actually slow down Emacs?</title> <rect x="352" y="100" opacity="0.8" width="31" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(381,183)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gc</text></g></a> <a href="/2023/talks/lspocaml" title="Writing a language server in OCaml for Emacs, fun, and profit" data-slug="lspocaml"> <title>  1:20- 1:30 Writing a language server in OCaml for Emacs, fun, and profit</title> <rect x="407" y="100" opacity="0.8" width="15" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(420,183)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspocaml</text></g></a> <a href="/2023/talks/windows" title="Windows into Freedom" data-slug="windows"> <title>  1:45- 2:25 Windows into Freedom</title> <rect x="447" y="100" opacity="0.8" width="62" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(507,183)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> windows</text></g></a> <a href="/2023/talks/emacsconf" title="EmacsConf.org: How we use Org Mode and TRAMP to organize and run a multi-track conference" data-slug="emacsconf"> <title>  2:40- 3:00 EmacsConf.org: How we use Org Mode and TRAMP to organize and run a multi-track conference</title> <rect x="533" y="100" opacity="0.8" width="31" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(562,183)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> emacsconf</text></g></a> <a href="/2023/talks/emacsen" title="The Emacsen family, the design of an Emacs and the importance of Lisp" data-slug="emacsen"> <title>  3:15- 3:35 The Emacsen family, the design of an Emacs and the importance of Lisp</title> <rect x="588" y="100" opacity="0.8" width="31" height="84" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(617,183)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> emacsen</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 5 PM</text></g></g></svg>


### Option B: Keep [hyperdrive](https://emacsconf.org/2023/talks/hyperdrive "hyperdrive.el: Peer-to-peer filesystem in Emacs") on the first track, and group [devel](https://emacsconf.org/2023/talks/devel "Emacs development updates") and [core](https://emacsconf.org/2023/talks/core "Emacs core development: how it works") on the second track.

We can encourage people to check out the different tracks in the opening remarks.

-   world: Ends at 14:55 after 11:30

<svg width="800" height="400" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Graphical view of the schedule</title> <g transform="translate(0,0)"> <title> Schedule for Saturday</title> <rect width="800" height="200" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2023/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title>  9:00- 9:10 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.8" width="15" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(13,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2023/talks/adventure" title="An Org-Mode based text adventure game for learning the basics of Emacs, inside Emacs, written in Emacs Lisp" data-slug="adventure"> <title>  9:10- 9:20 An Org-Mode based text adventure game for learning the basics of Emacs, inside Emacs, written in Emacs Lisp</title> <rect x="15" y="15" opacity="0.8" width="15" height="84" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(28,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> adventure</text></g></a> <a href="/2023/talks/uni" title="Authoring and presenting university courses with Emacs and a full libre software stack" data-slug="uni"> <title>  9:30- 9:50 Authoring and presenting university courses with Emacs and a full libre software stack</title> <rect x="47" y="15" opacity="0.8" width="31" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(76,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> uni</text></g></a> <a href="/2023/talks/teaching" title="Teaching computer and data science with literate programming tools" data-slug="teaching"> <title> 10:05-10:25 Teaching computer and data science with literate programming tools</title> <rect x="101" y="15" opacity="0.8" width="31" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(130,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> teaching</text></g></a> <a href="/2023/talks/table" title="Who needs Excel? Managing your students qualifications with org-table" data-slug="table"> <title> 10:40-10:50 Who needs Excel? Managing your students qualifications with org-table</title> <rect x="156" y="15" opacity="0.8" width="15" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(169,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> table</text></g></a> <a href="/2023/talks/taming" title="Taming things with Org Mode" data-slug="taming"> <title> 11:05-11:15 Taming things with Org Mode</title> <rect x="196" y="15" opacity="0.8" width="15" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(209,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> taming</text></g></a> <a href="/2023/talks/one" title="one.el: the static site generator for Emacs Lisp Programmers" data-slug="one"> <title> 11:30-11:50 one.el: the static site generator for Emacs Lisp Programmers</title> <rect x="235" y="15" opacity="0.8" width="31" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(264,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> one</text></g></a> <a href="/2023/talks/writing" title="Emacs turbo-charges my writing" data-slug="writing"> <title> 12:45-12:55 Emacs turbo-charges my writing</title> <rect x="352" y="15" opacity="0.8" width="15" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(365,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> writing</text></g></a> <a href="/2023/talks/nabokov" title="Why Nabokov would use Org-Mode if he were writing today" data-slug="nabokov"> <title>  1:10- 1:20 Why Nabokov would use Org-Mode if he were writing today</title> <rect x="392" y="15" opacity="0.8" width="15" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(405,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> nabokov</text></g></a> <a href="/2023/talks/collab" title="Collaborative data processing and documenting using org-babel" data-slug="collab"> <title>  1:35- 1:55 Collaborative data processing and documenting using org-babel</title> <rect x="431" y="15" opacity="0.8" width="31" height="84" stroke="black" stroke-dasharray="5,5,5" fill="yellow"></rect> <g transform="translate(460,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> collab</text></g></a> <a href="/2023/talks/solo" title="How I play TTRPGs in Emacs" data-slug="solo"> <title>  2:05- 2:25 How I play TTRPGs in Emacs</title> <rect x="478" y="15" opacity="0.8" width="31" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(507,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> solo</text></g></a> <a href="/2023/talks/ref" title="Org-Mode workflow: informal reference tracking" data-slug="ref"> <title>  2:40- 3:00 Org-Mode workflow: informal reference tracking</title> <rect x="533" y="15" opacity="0.8" width="31" height="84" stroke="black" stroke-dasharray="5,5,5" fill="green"></rect> <g transform="translate(562,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> ref</text></g></a> <a href="/2023/talks/unentangling" title="(Un)entangling projects and repos" data-slug="unentangling"> <title>  3:10- 3:20 (Un)entangling projects and repos</title> <rect x="580" y="15" opacity="0.8" width="15" height="84" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(593,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> unentangling</text></g></a> <a href="/2023/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title>  4:40- 4:50 Saturday closing remarks</title> <rect x="721" y="15" opacity="0.8" width="15" height="84" stroke="black" stroke-dasharray="" fill="green"></rect> <g transform="translate(734,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2023/talks/matplotllm" title="MatplotLLM, iterative natural language data visualization in org-babel" data-slug="matplotllm"> <title> 10:00-10:10 MatplotLLM, iterative natural language data visualization in org-babel</title> <rect x="94" y="100" opacity="0.8" width="15" height="84" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(107,183)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> matplotllm</text></g></a> <a href="/2023/talks/voice" title="Improving access to AI-assisted literate programming with voice control" data-slug="voice"> <title> 10:20-10:40 Improving access to AI-assisted literate programming with voice control</title> <rect x="125" y="100" opacity="0.8" width="31" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(154,183)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> voice</text></g></a> <a href="/2023/talks/llm" title="LLM clients in Emacs, functionality and standardization" data-slug="llm"> <title> 10:55-11:15 LLM clients in Emacs, functionality and standardization</title> <rect x="180" y="100" opacity="0.8" width="31" height="84" stroke="black" stroke-dasharray="" fill="lightgreen"></rect> <g transform="translate(209,183)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> llm</text></g></a> <a href="/2023/talks/overlay" title="Improving compiler diagnostics with Overlays" data-slug="overlay"> <title> 12:45- 1:05 Improving compiler diagnostics with Overlays</title> <rect x="352" y="100" opacity="0.8" width="31" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(381,183)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> overlay</text></g></a> <a href="/2023/talks/eval" title="Editor Integrated REPL Driven Development for all languages" data-slug="eval"> <title>  1:20- 1:30 Editor Integrated REPL Driven Development for all languages</title> <rect x="407" y="100" opacity="0.8" width="15" height="84" stroke="black" stroke-dasharray="" fill="lightgreen"></rect> <g transform="translate(420,183)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eval</text></g></a> <a href="/2023/talks/repl" title="REPLs in strange places: Lua, LaTeX, LPeg, LPegRex, TikZ" data-slug="repl"> <title>  1:45- 2:25 REPLs in strange places: Lua, LaTeX, LPeg, LPegRex, TikZ</title> <rect x="447" y="100" opacity="0.8" width="62" height="84" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(507,183)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> repl</text></g></a> <a href="/2023/talks/world" title="GNU Emacs: A World of Possibilities" data-slug="world"> <title>  2:35- 2:55 GNU Emacs: A World of Possibilities</title> <rect x="525" y="100" opacity="0.8" width="31" height="84" stroke="black" stroke-dasharray="" fill="red"></rect> <g transform="translate(554,183)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> world</text></g></a> <a href="/2023/talks/devel" title="Emacs development updates" data-slug="devel"> <title>  3:10- 3:20 Emacs development updates</title> <rect x="580" y="100" opacity="0.8" width="15" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(593,183)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2023/talks/hyperdrive" title="hyperdrive.el: Peer-to-peer filesystem in Emacs" data-slug="hyperdrive"> <title>  3:30- 4:10 hyperdrive.el: Peer-to-peer filesystem in Emacs</title> <rect x="611" y="100" opacity="0.8" width="62" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(671,183)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperdrive</text></g></a> <a href="/2023/talks/core" title="Emacs core development: how it works" data-slug="core"> <title>  3:35- 4:15 Emacs core development: how it works</title> <rect x="619" y="100" opacity="0.8" width="62" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(679,183)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> core</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 5 PM</text></g></g> <g transform="translate(0,200)"> <title> Schedule for Sunday</title> <rect width="800" height="200" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2023/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title>  9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.8" width="7" height="84" stroke="black" stroke-dasharray="" fill="green"></rect> <g transform="translate(5,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2023/talks/hyperamp" title="Top 10 ways Hyperbole amps up Emacs" data-slug="hyperamp"> <title>  9:05- 9:25 Top 10 ways Hyperbole amps up Emacs</title> <rect x="7" y="15" opacity="0.8" width="31" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(36,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperamp</text></g></a> <a href="/2023/talks/koutline" title="Using Koutline for stream of thought journaling" data-slug="koutline"> <title>  9:40-10:00 Using Koutline for stream of thought journaling</title> <rect x="62" y="15" opacity="0.8" width="31" height="84" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(91,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> koutline</text></g></a> <a href="/2023/talks/parallel" title="Parallel Text Replacement: Does P = NP?" data-slug="parallel"> <title> 10:10-10:20 Parallel Text Replacement: Does P = NP?</title> <rect x="109" y="15" opacity="0.8" width="15" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(122,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> parallel</text></g></a> <a href="/2023/talks/eat" title="Eat and Eat powered Eshell, fast featureful terminal inside Emacs" data-slug="eat"> <title> 10:35-10:45 Eat and Eat powered Eshell, fast featureful terminal inside Emacs</title> <rect x="149" y="15" opacity="0.8" width="15" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(162,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eat</text></g></a> <a href="/2023/talks/poltys" title="The browser in a buffer" data-slug="poltys"> <title> 11:00-11:20 The browser in a buffer</title> <rect x="188" y="15" opacity="0.8" width="31" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(217,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> poltys</text></g></a> <a href="/2023/talks/cubing" title="Speedcubing in Emacs" data-slug="cubing"> <title> 11:35-11:55 Speedcubing in Emacs</title> <rect x="243" y="15" opacity="0.8" width="31" height="84" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(272,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> cubing</text></g></a> <a href="/2023/talks/emms" title="Emacs MultiMedia System (EMMS)" data-slug="emms"> <title> 12:45- 1:25 Emacs MultiMedia System (EMMS)</title> <rect x="352" y="15" opacity="0.8" width="62" height="84" stroke="black" stroke-dasharray="" fill="green"></rect> <g transform="translate(412,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> emms</text></g></a> <a href="/2023/talks/steno" title="Programming at 200 wpm" data-slug="steno"> <title>  1:40- 2:10 Programming at 200 wpm</title> <rect x="439" y="15" opacity="0.8" width="47" height="84" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(484,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> steno</text></g></a> <a href="/2023/talks/mentor" title="Mentoring VS-Coders as an Emacsian (or How to show not tell people about the wonders of Emacs)" data-slug="mentor"> <title>  2:20- 2:30 Mentoring VS-Coders as an Emacsian (or How to show not tell people about the wonders of Emacs)</title> <rect x="501" y="15" opacity="0.8" width="15" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(514,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mentor</text></g></a> <a href="/2023/talks/hn" title="The many ways to browse Hacker News from Emacs" data-slug="hn"> <title>  3:00- 3:10 The many ways to browse Hacker News from Emacs</title> <rect x="564" y="15" opacity="0.8" width="15" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(577,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hn</text></g></a> <a href="/2023/talks/web" title="Emacs saves the Web" data-slug="web"> <title>  3:00- 3:40 Emacs saves the Web</title> <rect x="564" y="15" opacity="0.8" width="62" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(624,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> web</text></g></a> <a href="/2023/talks/sharing" title="Sharing Emacs is Caring Emacs: Emacs education and why I embraced video" data-slug="sharing"> <title>  3:55- 4:15 Sharing Emacs is Caring Emacs: Emacs education and why I embraced video</title> <rect x="650" y="15" opacity="0.8" width="31" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(679,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sharing</text></g></a> <a href="/2023/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title>  4:30- 4:40 Sunday closing remarks</title> <rect x="705" y="15" opacity="0.8" width="15" height="84" stroke="black" stroke-dasharray="" fill="green"></rect> <g transform="translate(718,98)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2023/talks/scheme" title="Bringing joy to Scheme programming" data-slug="scheme"> <title> 10:00-10:20 Bringing joy to Scheme programming</title> <rect x="94" y="100" opacity="0.8" width="31" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(123,183)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> scheme</text></g></a> <a href="/2023/talks/test" title="What I learned by writing test cases for GNU Hyperbole" data-slug="test"> <title> 10:35-10:55 What I learned by writing test cases for GNU Hyperbole</title> <rect x="149" y="100" opacity="0.8" width="31" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(178,183)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> test</text></g></a> <a href="/2023/talks/flat" title="A modern Emacs look-and-feel without pain" data-slug="flat"> <title> 11:10-11:20 A modern Emacs look-and-feel without pain</title> <rect x="203" y="100" opacity="0.8" width="15" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(216,183)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> flat</text></g></a> <a href="/2023/talks/gc" title="emacs-gc-stats: Does garbage collection actually slow down Emacs?" data-slug="gc"> <title> 12:45- 1:05 emacs-gc-stats: Does garbage collection actually slow down Emacs?</title> <rect x="352" y="100" opacity="0.8" width="31" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(381,183)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gc</text></g></a> <a href="/2023/talks/lspocaml" title="Writing a language server in OCaml for Emacs, fun, and profit" data-slug="lspocaml"> <title>  1:20- 1:30 Writing a language server in OCaml for Emacs, fun, and profit</title> <rect x="407" y="100" opacity="0.8" width="15" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(420,183)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspocaml</text></g></a> <a href="/2023/talks/windows" title="Windows into Freedom" data-slug="windows"> <title>  1:45- 2:25 Windows into Freedom</title> <rect x="447" y="100" opacity="0.8" width="62" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(507,183)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> windows</text></g></a> <a href="/2023/talks/emacsconf" title="EmacsConf.org: How we use Org Mode and TRAMP to organize and run a multi-track conference" data-slug="emacsconf"> <title>  2:40- 3:00 EmacsConf.org: How we use Org Mode and TRAMP to organize and run a multi-track conference</title> <rect x="533" y="100" opacity="0.8" width="31" height="84" stroke="black" stroke-dasharray="" fill="gray"></rect> <g transform="translate(562,183)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> emacsconf</text></g></a> <a href="/2023/talks/emacsen" title="The Emacsen family, the design of an Emacs and the importance of Lisp" data-slug="emacsen"> <title>  3:15- 3:35 The Emacsen family, the design of an Emacs and the importance of Lisp</title> <rect x="588" y="100" opacity="0.8" width="31" height="84" stroke="black" stroke-dasharray="5,5,5" fill="gray"></rect> <g transform="translate(617,183)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> emacsen</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="170"></line> <text fill="black" x="0" y="183" font-size="10" text-anchor="left"> 5 PM</text></g></g></svg>


### Other ideas?

Feel free to suggest something!

Notes:

-   [sharing](https://emacsconf.org/2023/talks/sharing "Sharing Emacs is Caring Emacs: Emacs education and why I embraced video") is nice to pair with [mentor](https://emacsconf.org/2023/talks/mentor "Mentoring VS-Coders as an Emacsian (or How to show not tell people about the wonders of Emacs)") and [hn](https://emacsconf.org/2023/talks/hn "The many ways to browse Hacker News from Emacs") and might be a good general-audience keynote-type thing as well. I don&rsquo;t want to schedule [core](https://emacsconf.org/2023/talks/core "Emacs core development: how it works") to compete with it.


<a id="three-tracks"></a>

## DONE Test the idea of three tracks and more aligned times     :decision:

Decision: We&rsquo;ll stick with the two-track schedule for now because it&rsquo;s
more likely, and we&rsquo;ll adjust as we get closer to the conference
depending on speaker submissions and on volunteer availability.

Note: Let&rsquo;s see if we can decide on this by <span class="timestamp-wrapper"><span class="timestamp">[2023-10-13 Fri] </span></span> so that we can
e-mail the draft schedules to people.

Compared to [two-track schedule](#draft-schedule):

What if we have three tracks instead?

-   Two-track advantages as in EmacsConf 2022:
    -   Fewer volunteers needed (host, IRC, pad)
    -   Can do with existing computing power (instead of spinning up another node for VNC+OBS)
    -   Less fear of missing out for participants
    -   votes: zaeph
-   Three-track advantages:
    -   More space between talks for streaming the Q&A
    -   Easier to explain the schedule
    -   More logical grouping
    -   Ends earlier, which is easier for participants from Europe
    -   votes: max (Three tracks is the best policy if you’re more than 75% sure that you can round up the volunteers)
-   [Three tracks just for Sunday morning](#three-tracks-sun-am):
    -   Allows us to have 20 minutes between talks instead of 15
    -   Might be easier to test the idea for just one part of the conference


<a id="three-tracks-sun-am"></a>

### Three tracks for Sunday morning?

-   unentangling: Starts at 14:35 before 15:00
-   world: Ends at 16:20 after 11:30
-   Missing talks: core