summaryrefslogtreecommitdiffstats
path: root/2023/organizers-notebook.md
diff options
context:
space:
mode:
Diffstat (limited to '2023/organizers-notebook.md')
-rw-r--r--2023/organizers-notebook.md2350
1 files changed, 2350 insertions, 0 deletions
diff --git a/2023/organizers-notebook.md b/2023/organizers-notebook.md
new file mode 100644
index 00000000..8fe6916b
--- /dev/null
+++ b/2023/organizers-notebook.md
@@ -0,0 +1,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
+