summaryrefslogtreecommitdiffstats
path: root/2023/organizers-notebook/index.org
blob: 6fae62bec86002acb3fa38024c53216a9bd54384 (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
# [[elisp:(org-md-export-to-markdown)][Export this file to Markdown]]
#+todo: TODO(t) SOMEDAY STARTED INPROGRESS(i) WAITING(w) STANDBY(s) BLOCKED(b) | DONE(x) CANCELLED(c)
#+OPTIONS: h:6 toc:nil num:nil ':t
#+PROPERTY: header-args    :results silent :exports code :tangle yes
#+EXPORT_FILE_NAME: ../organizers-notebook.md
#+PROPERTY: QUANTIFIED Emacs

#+begin_export md
<!-- 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/).
#+end_export

#+TOC: headlines 2

* Timeline
:PROPERTIES:
:CUSTOM_ID: timeline
:END:


| CFP                       | [2023-06-26 Mon]                   |
| CFP deadline              | [2023-09-14 Thu]                   |
| *Speaker notifications*   | [2023-09-25 Mon]                   |
| Publish schedule          | [2023-10-30 Mon]                   |
| Video submission deadline | [2023-11-03 Fri]                   |
| EmacsConf                 | [2023-12-02 Sat], [2023-12-03 Sun] |

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

** TODO Dry run
SCHEDULED: <2023-10-28 Sat>
:PROPERTIES:
:CUSTOM_ID: dry-run
:END:

* Phases
:PROPERTIES:
:CUSTOM_ID: phases
:END:
** DONE Draft CFP
CLOSED: [2023-09-22 Fri 09:49]
:PROPERTIES:
:CUSTOM_ID: cfp
:END:
*** 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're doing multiple streams, there'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's good for people'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 "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?"
  - sachac: I'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'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'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'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'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.  

** DONE Distribute CFP
CLOSED: [2023-09-22 Fri 09:50]
:PROPERTIES:
:CUSTOM_ID: distrib-cfp
:END:
*** DONE Add proposal review volunteers to emacsconf-submit
CLOSED: [2023-06-25 Sun 19:35]
- 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
SCHEDULED: <2023-06-26 Mon>
- Remove draft tags                                       :sachac:
- Post on emacsconf-discuss, emacs-tangents               :bandali: :zaeph:
- Sticky on reddit.com/r/emacs
- Post in Emacs News                                           :sachac:

*** Reminder 
SCHEDULED: <2023-09-01 Fri>
** DONE Process submissions
CLOSED: [2023-09-22 Fri 09:50]
:PROPERTIES:
:CUSTOM_ID: submission-process
:END:

- Proposal received: sachac adds it to this document with status of PROPOSED
  - Fields:
    #+begin_example
    EMERGENCY, Q_AND_A, AVAILABILITY, NAME, PRONOUNS, TIME, MIN_TIME, MAX_TIME, SLUG, EMAIL, NAME_SHORT, CUSTOM_ID, TRACK, TIMEZONE, CATEGORY, DATE_SUBMITTED
    #+end_example
- 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)
SCHEDULED: <2023-08-14 Mon>
:PROPERTIES:
:CUSTOM_ID: cfp-progress
:END:

#+begin_comment
https://emacsconf.org/blog/2023-08-14-cfp-progress/
#+end_comment

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

#+begin_src emacs-lisp :results replace table :exports results
(append
 '(("Duration" "Title" "Speaker"))
 (mapcar (lambda (o)
					 (list (plist-get o :duration)
								 (plist-get o :title)
								 (plist-get o :speakers)))
				 (seq-filter (lambda (o) (string= (plist-get o :status) "WAITING_FOR_PREREC")) (emacsconf-get-talk-info))))
#+end_src

#+RESULTS:
:results:
| Duration | Title                                                                                                       | Speaker            |
|       10 | An Org-Mode based text adventure game for learning the basics of Emacs, inside Emacs, written in Emacs Lisp | Chung-hong Chan    |
|       20 | Authoring and presenting university courses with Emacs and a full libre software stack                      | James Howell       |
|       20 | Org-Mode workflow: informal reference tracking                                                              | Christopher Howard |
|       20 | GNU Emacs for electronics, note-taking, and as lightweight IDE                                              | Anand Tamariya     |
|       10 | A modern Emacs look-and-feel without pain                                                                   | Pedro A. Aranda    |
|       10 | Writing a language server in OCaml for Emacs, fun, and profit                                               | Austin Theriault   |
|       20 | LLM clients in Emacs, functionality and standardization                                                     | Andrew Hyatt       |
|       10 | The many ways to browse Hacker News from Emacs                                                              | Mickael Kerjean    |
:end:

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

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

#+begin_src emacs-lisp :results replace table :exports results
(append
 '(("Duration" "Title" "Speaker"))
 (mapcar (lambda (o)
					 (list (plist-get o :duration)
								 (plist-get o :title)
								 (plist-get o :speakers)))
				 (seq-filter (lambda (o) (string= (plist-get o :status) "TO_REVIEW")) (emacsconf-get-talk-info))))
#+end_src

#+RESULTS:
:results:
| Duration | Title                                                        | Speaker    |
|       20 | one.el: the static site generator for Emacs Lisp Programmers | Tony Aldon |
:end:

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

#+begin_src emacs-lisp :results replace table :exports results
(append
 '(("Title" "Speaker"))
 (mapcar (lambda (o)
					 (list (plist-get o :title)
								 (plist-get o :speakers)))
				 (seq-filter (lambda (o) (string= (plist-get o :status) "TODO")) (emacsconf-get-talk-info))))
#+end_src

#+RESULTS:
:results:
| Title                                       | Speaker        |
| Emacs MultiMedia System (EMMS)              | Yoni Rabkin    |
| Emacs development updates                   | John Wiegley   |
| Watch Over Our Folders                      | Bastien Guerry |
| Emacs community information sharing?        | Jake B         |
| Emacs saves the Web                         | Yuchen Pei     |
| How to build an Emacs 2: Revenge of the Lem | Fermin         |
:end:

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'd already have a pretty fun EmacsConf. Can't wait to see what
it'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'd like to see if we can get away without officially
extending the CFP this time.

Sacha
*** Lessons learned from the CFP                                  :lessons:

- Early acceptances are nice. A few got comments within the 1-week
  period, which helped refine the talk idea more. We probably don't
  need to make this a 2-week review period.
- It's a good idea to send the review and acceptance e-mails even to
  fellow organizers/volunteers, even if they're quite familiar with
  the page already. =)
- I added some more automation for including a template in a mail
  reply.
- We successfully didn'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's trends.

    
** 2023-09-25 EmacsConf 2023 progress report: 44 talks accepted, schedule being drafted
:PROPERTIES:
:CUSTOM_ID: 2023-09-25
:END:

https://emacsconf.org/blog/2023-09-25-draft-schedule

** Draft schedule
:PROPERTIES:
:CUSTOM_ID: draft-schedule
:END:

These times are in EST (GMT-5).

#+begin_src emacs-lisp :results value replace :exports none
(require 'emacsconf)
(require 'emacsconf-schedule)
(setq emacsconf-schedule-tracks
			'((:label "Saturday"
								:start "2023-12-02 9:00"
								:end "2023-12-02 18:00"
								:tracks ("General" "Development"))
				(:label "Sunday"
								:start "2023-12-03 9:00"
								:end "2023-12-03 18:00"
								:tracks ("General" "Development"))))
(let ((emacsconf-schedule-default-buffer-minutes 10)
			(emacsconf-schedule-default-buffer-minutes-for-live-q-and-a 20)
			(emacsconf-schedule-break-time 10)
			(emacsconf-schedule-lunch-time 60)
			(emacsconf-use-absolute-url t)
			(emacsconf-schedule-max-time 30)
			(emacsconf-schedule-strategies '(emacsconf-schedule-allocate-buffer-time))
			(emacsconf-schedule-validation-functions
			 '(emacsconf-schedule-validate-time-constraints
				 ;; emacsconf-schedule-validate-live-q-and-a-sessions-are-staggered
				 emacsconf-schedule-validate-all-talks-present
				 emacsconf-schedule-validate-no-duplicates)))
	(setq emacsconf-schedule-plan
				'(("GEN Saturday, Dec 2" :start "2023-12-02 09:00")
					sat-open
					adventure
					uni
					table
					taming 
					one
					(lunch :start "11:50")
					writing
					nabokov 
					collab
					(woof :track "General")
					solo
					unentangling
					ref
					(devel :track "General") 
					(sat-close)
					("DEV Saturday, Dec 2" :start "2023-12-02 10:00")
					(matplotllm :track "Development")
					(voice :track "Development")
					(llm :track "Development")
					lunch
					(overlay :start "12:50")
					(eval)
					(repl)
					(hyperdrive :track "Development")
					(extending :track "Development")
					("GEN Sunday, Dec 3" :start "2023-12-03 09:00")
					sun-open
					hyperamp
					koutline
					(parallel :track "General")
					poltys
					cubing
					(lunch :start "11:50")
					(eat)
					(emms :track "General")
					mentor
					(hn :start "15:00")
					web
					sharing
					sun-close
					("DEV Sunday, Dec 3" :start "2023-12-03 10:00")
					scheme
					test
					(flat :track "Development")
					(lunch :start "11:50")
					gc
					lspocaml
					(windows :track "Development")
					(emacsconf :track "Development")
					(steno :track "Development")
					(emacsen :track "Development")
					))
	(setq emacsconf-schedule-draft (emacsconf-schedule-prepare (emacsconf-schedule-inflate-sexp emacsconf-schedule-plan)))
	(prog1 (string-join (emacsconf-schedule-validate emacsconf-schedule-draft) "\n")
		(let ((emacsconf-schedule-svg-modify-functions
					 '(;emacsconf-schedule-svg-color-by-availability
						 emacsconf-schedule-svg-color-by-status)))
		(with-temp-file (expand-file-name "schedule.svg" (file-name-directory emacsconf-org-file))
			(svg-print (emacsconf-schedule-svg 800 300 emacsconf-schedule-draft)))
		(with-temp-file (expand-file-name "schedule.svg" (expand-file-name "organizers-notebook" (expand-file-name emacsconf-year emacsconf-directory)))
			(svg-print (emacsconf-schedule-svg 800 300 emacsconf-schedule-draft))))
		(clear-image-cache)))
#+end_src

#+RESULTS:
:results:
:end:

#+begin_comment
[[file:schedule.svg]]
#+end_comment

#+INCLUDE: schedule.svg export html

*** Draft schedule as a list
:PROPERTIES:
:CUSTOM_ID: schedule-list
:END:

    #+NAME: draft-schedule-table
    #+begin_src emacs-lisp :results raw replace :exports results  :eval t
  (string-join
   (seq-keep (lambda (o) (when (plist-get o :slug)												
												  (concat "- "
												   (replace-regexp-in-string "[<>]" ""
																									   (plist-get o :scheduled))
													 " "
													 (if (string-match "after the event" (or (plist-get o :q-and-a) "")) "- no live Q&A - " "")
													 (let ((constraint (emacsconf-schedule-get-time-constraint o)))
														 (cond
															((and (car constraint) (cadr constraint)) (format "- between %s-%s EST - " (car constraint) (cadr constraint)))
															((car constraint) (format "- after %s EST - " (car constraint)))
															((cadr constraint) (format "- before %s EST - " (cadr constraint)))
															(t "")))
												   (format "[[emacsconf:%s][%s]]: "
																   (plist-get o :slug)
																   (plist-get o :slug))
												   (plist-get o :title)
													 (emacsconf-surround " ("
																							 (plist-get o :speakers)
																							 ") " "")

													 )))
					  (sort emacsconf-schedule-draft (lambda (a b) (string< (plist-get a :scheduled) (plist-get b :scheduled))))) "\n")
  #+end_src

  #+RESULTS: draft-schedule-table
  - 2023-12-02 Sat 09:00-09:10 [[emacsconf:sat-open][sat-open]]: Saturday opening remarks
  - 2023-12-02 Sat 09:10-09:20 - before 10:00 EST - [[emacsconf:adventure][adventure]]: 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 [[emacsconf:uni][uni]]: Authoring and presenting university courses with Emacs and a full libre software stack (James Howell) 
  - 2023-12-02 Sat 10:00-10:10 - before 10:30 EST - [[emacsconf:matplotllm][matplotllm]]: MatplotLLM, iterative natural language data visualization in org-babel (Abhinav Tushar) 
  - 2023-12-02 Sat 10:10-10:20 - before 11:00 EST - [[emacsconf:table][table]]: Who needs Excel? Managing your students qualifications with org-table (Daniel Molina) 
  - 2023-12-02 Sat 10:20-10:40 [[emacsconf:voice][voice]]: Improving access to AI-assisted literate programming with voice control (Blaine Mooers) 
  - 2023-12-02 Sat 10:40-10:50 - before 15:00 EST - [[emacsconf:taming][taming]]: Taming things with Org Mode (Gergely Nagy (algernon)) 
  - 2023-12-02 Sat 11:00-11:20 - after 10:00 EST - [[emacsconf:llm][llm]]: LLM clients in Emacs, functionality and standardization (Andrew Hyatt) 
  - 2023-12-02 Sat 11:10-11:30 - before 13:00 EST - [[emacsconf:one][one]]: one.el: the static site generator for Emacs Lisp Programmers (Tony Aldon) 
  - 2023-12-02 Sat 12:50-13:00 [[emacsconf:writing][writing]]: Emacs turbo-charges my writing (Jeremy Friesen) 
  - 2023-12-02 Sat 12:50-13:10 - after 11:00 EST - [[emacsconf:overlay][overlay]]: Improving compiler diagnostics with Overlays (Jeff Trull) 
  - 2023-12-02 Sat 13:20-13:30 [[emacsconf:nabokov][nabokov]]: Why Nabokov would use Org-Mode if he were writing today (Edmund Jorgensen) 
  - 2023-12-02 Sat 13:30-13:40 [[emacsconf:eval][eval]]: Editor Integrated REPL Driven Development for all languages (Musa Al-hassy) 
  - 2023-12-02 Sat 13:50-14:10 - no live Q&A - [[emacsconf:collab][collab]]: Collaborative data processing and documenting using org-babel (Jonathan Hartman, Lukas C. Bossert) 
  - 2023-12-02 Sat 14:00-14:40 [[emacsconf:repl][repl]]: REPLs in strange places: Lua, LaTeX, LPeg, LPegRex, TikZ (Eduardo Ochs) 
  - 2023-12-02 Sat 14:20-14:40 - before 15:00 EST - [[emacsconf:woof][woof]]: Watch Over Our Folders (Bastien Guerry) 
  - 2023-12-02 Sat 14:50-15:30 - after 11:00 EST - [[emacsconf:hyperdrive][hyperdrive]]: hyperdrive.el: Peer-to-peer filesystem in Emacs (Joseph Turner) 
  - 2023-12-02 Sat 15:00-15:20 - after 12:00 EST - [[emacsconf:solo][solo]]: How I play TTRPGs in Emacs (Howard Abrams) 
  - 2023-12-02 Sat 15:40-15:50 - between 15:00-16:00 EST - [[emacsconf:unentangling][unentangling]]: (Un)entangling projects and repos (Alexey Bochkarev) 
  - 2023-12-02 Sat 15:50-16:10 [[emacsconf:extending][extending]]: GNU Emacs for electronics, note-taking, and as lightweight IDE (Anand Tamariya) 
  - 2023-12-02 Sat 16:00-16:20 - after 13:00 EST - [[emacsconf:ref][ref]]: Org-Mode workflow: informal reference tracking (Christopher Howard) 
  - 2023-12-02 Sat 16:30-16:40 - no live Q&A - [[emacsconf:devel][devel]]: Emacs development updates (John Wiegley) 
  - 2023-12-02 Sat 16:50-17:00 [[emacsconf:sat-close][sat-close]]: Saturday closing remarks
  - 2023-12-03 Sun 09:00-09:05 [[emacsconf:sun-open][sun-open]]: Sunday opening remarks
  - 2023-12-03 Sun 09:05-09:25 - before 12:00 EST - [[emacsconf:hyperamp][hyperamp]]: Top 10 ways Hyperbole amps up Emacs (Robert Weiner) 
  - 2023-12-03 Sun 09:45-10:05 [[emacsconf:koutline][koutline]]: Using Koutline for stream of thought journaling (Matthew Jorgensen (PlasmaStrike)) 
  - 2023-12-03 Sun 10:00-10:20 - before 12:00 EST - [[emacsconf:scheme][scheme]]: Bringing joy to Scheme programming (Andrew Tropin) 
  - 2023-12-03 Sun 10:15-10:25 - before 11:00 EST - [[emacsconf:parallel][parallel]]: Parallel Text Replacement: Does P = NP? (Lovro, Valentino Picotti) 
  - 2023-12-03 Sun 10:40-11:00 - before 12:00 EST - [[emacsconf:test][test]]: What I learned by writing test cases for GNU Hyperbole (Mats Lidell) 
  - 2023-12-03 Sun 10:45-11:05 - before 13:00 EST - [[emacsconf:poltys][poltys]]: The browser in a buffer (Michael Bauer) 
  - 2023-12-03 Sun 11:20-11:30 - between 11:00-13:00 EST - [[emacsconf:flat][flat]]: A modern Emacs look-and-feel without pain (Pedro A. Aranda) 
  - 2023-12-03 Sun 11:25-11:45 - before 17:00 EST - [[emacsconf:cubing][cubing]]: Speedcubing in Emacs (Vasilij "wasamasa" Schneidermann) 
  - 2023-12-03 Sun 12:50-13:00 - before 14:00 EST - [[emacsconf:eat][eat]]: Eat and Eat powered Eshell, fast featureful terminal inside Emacs (Akib Azmain Turja) 
  - 2023-12-03 Sun 12:50-13:10 - before 14:00 EST - [[emacsconf:gc][gc]]: emacs-gc-stats: Does garbage collection actually slow down Emacs? (Ihor Radchenko) 
  - 2023-12-03 Sun 13:20-14:00 [[emacsconf:emms][emms]]: Emacs MultiMedia System (EMMS) (Yoni Rabkin) 
  - 2023-12-03 Sun 13:30-13:40 [[emacsconf:lspocaml][lspocaml]]: Writing a language server in OCaml for Emacs, fun, and profit (Austin Theriault) 
  - 2023-12-03 Sun 14:00-14:40 [[emacsconf:windows][windows]]: Windows into Freedom (Corwin Brust) 
  - 2023-12-03 Sun 14:20-14:30 [[emacsconf:mentor][mentor]]: Mentoring VS-Coders as an Emacsian (or How to show not tell people about the wonders of Emacs) (Jeremy Friesen) 
  - 2023-12-03 Sun 15:00-15:10 - after 15:00 EST - [[emacsconf:hn][hn]]: The many ways to browse Hacker News from Emacs (Mickael Kerjean) 
  - 2023-12-03 Sun 15:00-15:20 [[emacsconf:emacsconf][emacsconf]]: EmacsConf.org: How we use Org Mode and TRAMP to organize and run a multi-track conference (Sacha Chua) 
  - 2023-12-03 Sun 15:20-16:00 - after 15:00 EST - [[emacsconf:web][web]]: Emacs saves the Web (Yuchen Pei) 
  - 2023-12-03 Sun 15:40-16:10 [[emacsconf:steno][steno]]: Programming at 200 wpm (Daniel Alejandro Tapia) 
  - 2023-12-03 Sun 16:20-16:40 [[emacsconf:sharing][sharing]]: Sharing Emacs is Caring Emacs: Emacs education and why I embraced video (Jacob Boxerman) 
  - 2023-12-03 Sun 16:20-16:40 - no live Q&A - [[emacsconf:emacsen][emacsen]]: The Emacsen family, the design of an Emacs and the importance of Lisp (Fermin) 
  - 2023-12-03 Sun 17:00-17:10 [[emacsconf:sun-close][sun-close]]: Sunday closing remarks

*** Schedule notes
:PROPERTIES:
:CUSTOM_ID: schedule-notes
:END:

- Legend: dashed line means non-BBB Q&A; light gray means penciled-in talk
- Saturday on the General track: Org day + misc
  - emacsconf:adventure is the first talk because of availability constraints; would be nice to connect it to emacsconf:solo
  - emacsconf:uni for teaching, emacsconf:table for grading
  - emacsconf:taming and emacsconf:one both deal with exports in some way. emacsconf:unentangling would be nice to add here, but that one needs to be in the afternoon because of availability constraints.
  - emacsconf:writing is connected to emacsconf:nabokov (blog posts, novel). It's also a little connected to emacsconf:one (exporting a blog).
  - emacsconf:collab and emacsconf:solo are amusing to pair together, but maybe following emacsconf:collab (coordinating with other people who use Org) with emacsconf:woof (Org development coordination) also makes sense and makes it so that [[emacsconf:woof]] isn't too late (Europe/Paris timezone). I put emacsconf:woof on the general track because it's Org-related and could encourage people to help out. Penciled in because bzg isn't sure he'll make it.
  - [[emacsconf:unentangling]] and emacsconf:ref are also Org-related. emacsconf:ref would be nice to place together with emacsconf:nabokov, but that would move emacsconf:woof and emacsconf:unentangling too late.
  - [[emacsconf:devel]] 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 emacsconf:matplotllm. emacsconf:llm is about general interfaces, so we can put that last. Could have a general LLM discussion after the talks. Can't swap it with Sunday morning because [[emacsconf:test]] should stick with [[emacsconf:hyperamp]] and emacsconf:koutline (Hyperbole talks), and the Hyperbole talks won't fit into Saturday morning
- Saturday afternoon, developer track: REPLs, misc talks
  - start off with developer tweaks: emacsconf:overlay (compilation), and then emacsconf:eval and emacsconf:repl are paired together
  - emacsconf:hyperdrive: adding another file protocol, using HTTP APIs
  - [[emacsconf:extending]] might just 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 [[emacsconf:test]]'s availability constraints; emacsconf:hyperamp and emacsconf:koutline go before it. Try to avoid conflicts so they can attend each other's talks
  - Sunday morning after emacsconf:test could be a fun extended "let's write tests together" session if someone wants to lead it
  - emacsconf:parallel needs to go in the morning. Might be okay to include in the general talk.
  - emacsconf:poltys and emacsconf:cubing aren't related to Hyperbole, but we need to fit them into the schedule somewhere. It would be nice to connect emacsconf:poltys (talking to web browsers from Emacs) to emacsconf:web (doing web stuff in Emacs instead), but emacsconf:poltys needs to be in the morning (which is pretty full) and emacsconf:web is in the afternoon because Yuchen is in Australia/Sydney.
  - emacsconf:cubing can be something fun to transition to lunch, then.
- Sunday afternoon gen: misc talks, community
  - emacsconf:eat is about shells and running commands, so it's generally useful
  - [[emacsconf:emms]] is a user+dev talk
  - community theme (emacsconf:mentor, emacsconf:hn, emacsconf:sharing), with an aside for [[emacsconf:web]] (using Emacs as a client for stuff). [[emacsconf:sharing]] is possible closing keynote - encourage people to go out and explore/share all year? If not, emacsconf:web could be good for a closing talk - encouraging people to use Emacs for more stuff.
- Sunday dev: misc dev talks
  - Morning:
    - emacsconf:test is related to the Hyperbole talks emacsconf:hyperamp and emacsconf:koutline, so we don't want to overlap with the Q&A for those talks
    - emacsconf:flat, emacsconf:scheme, emacsconf:gc, emacsconf:flat, emacsconf:windows, emacsconf:emacsconf, emacsconf:steno 
    - emacsconf:emacsen is more high-level and can talk about other editors
- checking with emacsconf:web and emacsconf:hn if ~3pm Sunday afternoon (~7am Mon local time) is okay with them. It would be nice to pair it with emacsconf:hn, which is nice to connect to emacsconf:mentor and emacsconf:web.
- 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 emacsconf:repl, emacsconf:eval
  - emacsconf:hyperamp, emacsconf:koutline, and emacsconf:test are all in touch because they work on Hyperbole together
  - emacsconf:hn and emacsconf:web
  - [[emacsconf:unentangling]], [[emacsconf:taming]]? 
  - emacsconf:matplotllm, emacsconf:voice, emacsconf:llm (so they don't all have to define LLMs?)
- The schedule doesn'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'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's Q&A live
    (they'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're going to say them out loud
  - Speakers will work on videos, and we can help with nudges/coordination if needed
    
* E-mail templates
:PROPERTIES:
:CUSTOM_ID: templates
:END:
** Review
:PROPERTIES:
:CUSTOM_ID: review
:END:
*** Template
:PROPERTIES:
:EMAIL_ID: review
:CUSTOM_ID: review-template
:END:

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

** Acceptance
:PROPERTIES:
:CUSTOM_ID: acceptance
:END:
*** Function
:PROPERTIES:
:CUSTOM_ID: acceptance-func
:END:
#+begin_src emacs-lisp
(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)))
#+end_src
*** Template
:PROPERTIES:
:EMAIL_ID: acceptance
:TO: ${email}
:REPLY_TO: emacsconf-submit@gnu.org, ${email}, sacha@sachachua.com
:MAIL_FOLLOWUP_TO: emacsconf-submit@gnu.org, ${email}, sacha@sachachua.com
:CC: emacsconf-submit@gnu.org
:LOG_NOTE: accepted talk
:SUBJECT:  ${conf-name} ${year} acceptance: ${title}
:FUNCTION: emacsconf-mail-accept-talk
:CUSTOM_ID: acceptance-template
:END:

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'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'll save ${time} minutes
for your talk, not including time for Q&A. Don't sweat it if
you'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'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's anything we can do to help out!

Sacha

* Archive
:PROPERTIES:
:CUSTOM_ID: archive
:END: