summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSacha Chua <sacha@sachachua.com>2023-10-17 12:03:11 -0400
committerSacha Chua <sacha@sachachua.com>2023-10-17 12:03:11 -0400
commite4ae6b2fc60289ee2380be75342657477b2fcf7f (patch)
tree1af8dc81b933cab6c0321ed8ed74b5de89c8572f
parentc8fbc646340e0e4ed55fae2b27e237d86c5f7d48 (diff)
downloademacsconf-wiki-e4ae6b2fc60289ee2380be75342657477b2fcf7f.tar.xz
emacsconf-wiki-e4ae6b2fc60289ee2380be75342657477b2fcf7f.zip
add 2023 watch pages
-rw-r--r--2022/organizers-notebook/index.org10
-rw-r--r--2023/organizers-notebook/index.org567
-rw-r--r--2023/watch/dev.md149
-rw-r--r--2023/watch/gen.md247
-rw-r--r--2023/watch/info.md7
5 files changed, 839 insertions, 141 deletions
diff --git a/2022/organizers-notebook/index.org b/2022/organizers-notebook/index.org
index 96f255a9..4e8287d9 100644
--- a/2022/organizers-notebook/index.org
+++ b/2022/organizers-notebook/index.org
@@ -2450,6 +2450,16 @@ Consider if we need extra scaling beyond being on a beefy live0?
Will need to try this again when we resize nodes. Probably just the extra memory will be enough and the CPU use from node won't step on the streaming, but not sure
+*** DONE Create pads for all the talks
+CLOSED: [2023-10-17 Tue 09:46] SCHEDULED: <2023-11-05 Sun>
+:PROPERTIES:
+:CUSTOM_ID: create-pads
+:CREATED: [023-10-13 Fri 10:1]
+:END:
+
+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 Use the API to create pages based on all the slugs
CLOSED: [2022-10-11 Tue 20:41]
*** CANCELLED Figure out monitoring; maybe get everything daily and commit to git repo?
diff --git a/2023/organizers-notebook/index.org b/2023/organizers-notebook/index.org
index 586a239b..cc1b39fd 100644
--- a/2023/organizers-notebook/index.org
+++ b/2023/organizers-notebook/index.org
@@ -708,17 +708,56 @@ When do we want to do this?
We don'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.
-** Prepare infrastructure
+** Prepare for the conference
:PROPERTIES:
:CUSTOM_ID: check-infra
:END:
-*** DONE Get access to media.emacsconf.org so that we can set up the upload service and the backstage area
+
+#+BEGIN: columnview :id local :match "STATUS={.}" :format "%20ITEM %10TODO %20STATUS"
+| ITEM | TODO | STATUS |
+|-------------------------+------------+-----------------------------------------------------|
+| Upload | DONE | Ready to go |
+| Prerec | DONE | Ready to go |
+| Captions | INPROGRESS | Ready to go; waiting for videos and captions |
+| Backstage | DONE | Ready to go |
+| Test assets | | Not yet started |
+| BBB | | Rooms created, next step is to create redirects |
+| VNC | | confirmed access to emacsconf-gen and emacsconf-dev |
+| OBS | | confirmed that gen and dev can stream |
+| Icecast | DONE | gen and dev confirmed with MPV |
+| MPV | | confirmed that mpv can watch both streams |
+| Watch page | | updated for 2023 |
+| Status page | | Not yet started |
+| Public media | | Not yet started |
+| Mumble | | Not yet started |
+| Etherpad | DONE | Ready to go, pads created |
+| Pad proxy | DONE | Ready to go, pad.emacsconf.org works |
+| Overlays | | Not yet started |
+| Intros | | Not yet started |
+| IRC channels | | Not yet started |
+| IRC talk info | | Not yet started |
+| Announcements | | Not yet started |
+| Publishing updates live | | Not yet started |
+| Autopilot | | Not yet started |
+| YouTube | | Not yet started |
+| Peertube | | Not yet started |
+| 480p | | Delegated to corwin |
+| Audio processing | | Help wanted |
+#+END:
+
+*** DONE Upload
+:PROPERTIES:
+:STATUS: Ready to go
+:CUSTOM_ID: upload
+:END:
+
+**** DONE Get access to media.emacsconf.org so that we can set up the upload service and the backstage area
CLOSED: [2023-10-13 Fri 10:01] SCHEDULED: <2023-10-03 Tue>
:PROPERTIES:
:CREATED: [023-09-26 Tue 10:3]
:CUSTOM_ID: check-media-emacsconf
:END:
-**** DONE Decide what to do for backstage area and upload service :decision:
+***** DONE Decide what to do for backstage area and upload service :decision:
CLOSED: [2023-10-13 Fri 10:00] DEADLINE: <2023-10-13 Fri>
:PROPERTIES:
:CUSTOM_ID: res-or-media
@@ -734,11 +773,138 @@ CLOSED: [2023-10-13 Fri 10:00] DEADLINE: <2023-10-13 Fri>
- don't need to send people multiple e-mails, risk confusion/out-of-date info
- access to media.emacsconf.org might be sorted out by [2023-10-13 Fri]
- not in a big rush yet
-*** TODO Double-check OBS setup and streaming on res
+*** DONE Prerec
+CLOSED: [2023-10-17 Tue 09:50]
:PROPERTIES:
-:CUSTOM_ID: check-streaming
+:CUSTOM_ID: prerec
+:STATUS: Ready to go
+:END:
+***** 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--reencoded.webm)
+
+*** INPROGRESS Captions
+:PROPERTIES:
+:CUSTOM_ID: captions
+:STATUS: Ready to go; waiting for videos and captions
+:END:
+- OpenAI Whisper SaaS (https://platform.openai.com/docs/guides/speech-to-text/longer-inputs) limits audio files to 25MB, so it's probably easier to do it ourselves
+**** TODO E-mail previous captioning volunteers to see if they're interested in helping out
+SCHEDULED: <2023-11-04 Sat>
+:PROPERTIES:
+:CREATED: [023-10-16 Mon 12:5]
+:END:
+**** DONE E-mail captioning volunteers the backstage instructions
+CLOSED: [2023-10-16 Mon 12:57]
+**** DONE E-mail current caption volunteers backstage information, captioning process, etc.
+CLOSED: [2023-10-17 Tue 09:37] SCHEDULED: <2023-10-17 Tue>
+:PROPERTIES:
+:CREATED: [023-10-13 Fri 10:1]
+:END:
+
+I'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're getting this e-mail because you have volunteered to help out
+with captions for ${conf-name} ${year}. (Thank you so much!)
+
+I'm so excited! =) We're starting to get recorded talks, which means
+it'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 "Emax" to "Emacs" and "metaX" to
+"M-x".
+
+Just like last year, we're using OpenAI Whisper to give us a
+reasonable starting point for transcripts. If working from scratch
+works better for you, you're welcome to do that too.
+
+We'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}" and the password "${backstage-password}".
+Please keep the backstage password and other speakers' 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's assigned to
+you. You can e-mail me the edited captions when you're done. Don't
+worry too much about timestamps; we can re-align the text with the
+audio afterwards. If life gets suddenly busy and you can't see it all
+the way through, no worries. Just e-mail me what you've got and I'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 [#C] Try out Deepgram, play around with it for last-minute submissions?
+**** DONE Get the autocaptions for emms up in the backstage area
+CLOSED: [2023-10-13 Fri 10:08] SCHEDULED: <2023-10-08 Sun>
+**** 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
+ #+begin_src python :eval no
+ 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})
+ #+end_src
+
+**** Reencoding
+:PROPERTIES:
+:CUSTOM_ID: check-reencoding
:END:
-*** TODO Generate BBB rooms
+*** DONE Backstage
+:PROPERTIES:
+:CUSTOM_ID: backstage
+:STATUS: Ready to go
+:END:
+*** Test assets
+:PROPERTIES:
+:CUSTOM_ID: test
+:STATUS: Not yet started
+:END:
+**** TODO Generate test videos
+*** BBB
+:PROPERTIES:
+:CUSTOM_ID: bbb
+:STATUS: Rooms created, next step is to create redirects
+:END:
+**** TODO Generate redirects
+:PROPERTIES:
+:CUSTOM_ID: generate-redirects
+:END:
+
+We use redirects for Q&A sessions with BBB web conferences so that people can easily join the web conference. This is blocked while waiting for media.emacsconf.org.
+
+**** DONE Generate BBB rooms
+CLOSED: [2023-10-17 Tue 09:41]
:PROPERTIES:
:CUSTOM_ID: generate-bbb
:END:
@@ -808,176 +974,214 @@ document.querySelector('.create-room-button').click();"
(dolist (group groups)
(emacsconf-spookfox-create-bbb group)))
#+end_src
-
-*** TODO Double-check icecast
+**** TODO Send testing instructions
+SCHEDULED: <2023-11-10 Fri>
+*** VNC
:PROPERTIES:
-:CUSTOM_ID: check-icecast
-:END:
-*** TODO Figure out a better way to handle 480p stream :corwin:
-:PROPERTIES:
-:CUSTOM_ID: lowres
+:CUSTOM_ID: vnc
+:STATUS: confirmed access to emacsconf-gen and emacsconf-dev
:END:
-It kept dropping last year and sachac didn't have the mental bandwidth to figure it out.
-Might need another node so that we don't risk it getting killed for memory reasons?
+We use VNC to connect to the X servers on res.emacsconf.org so that we can stream from it.
-Corwin has volunteered to take this on
+Success:
+- [X] Confirm that you can connect to emacsconf-gen via VNC
+- [X] Confirm that you can connect to emacsconf-dev via VNC
-*** BLOCKED Create pads for all the talks
-SCHEDULED: <2023-11-05 Sun>
+**** Instructions
:PROPERTIES:
-:CUSTOM_ID: create-pads
-:CREATED: [023-10-13 Fri 10:1]
+:CUSTOM_ID: vnc-instructions
:END:
-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.
+NOTE: VNC+OBS doesn'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).
-*** TODO Doublecheck prerec processing workflow
-:PROPERTIES:
-:CUSTOM_ID: check-prerec
-:END:
-**** Process
-***** Set up for the new year
-As orga@res:
+ 2. Set up your local environment:
-- mkdir /data/emacsconf/$year
-- rm ~/current
-- ln -s /data/emacsconf/$year current
-- ln -s /data/emacsconf/$year $year
+ - gen: export TRACK=gen; export TRACK_PORT=5905; export SSH_PORT=46668
+ - dev: export TRACK=dev; export TRACK_PORT=5906; export SSH_PORT=46668
-When we receive files
+ 3. Copy the password:
-- 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--reencoded.webm)
+ scp emacsconf-$TRACK@res.emacsconf.org:~/.vnc/passwd vnc-passwd-$TRACK -p $SSH_PORT
-**** Captions
-:PROPERTIES:
-:CUSTOM_ID: check-captions
-:END:
-- OpenAI Whisper SaaS (https://platform.openai.com/docs/guides/speech-to-text/longer-inputs) limits audio files to 25MB, so it's probably easier to do it ourselves
-***** TODO E-mail current caption volunteers backstage information, captioning process, etc.
-SCHEDULED: <2023-10-17 Tue>
-:PROPERTIES:
-:CREATED: [023-10-13 Fri 10:1]
-:END:
+ 4. Forward your local ports and connect via VNC viewer to the
+ appropriate forwarded port from your laptop:
-I'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.
+ #+begin_example
+ 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 &
+ #+end_example
-=emacsconf-mail-backstage-info=
+If you get the following error:
+#+begin_example
+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.
+#+end_example
+then the VNC server hasn't started yet. You can start it with
-Hi ${name}!
+#+begin_src sh :eval no
+ssh emacsconf-$TRACK@res.emacsconf.org -p $SSH_PORT /home/emacsconf-$TRACK/bin/track-vnc
+#+end_src
-You're getting this e-mail because you have volunteered to help out
-with captions for ${conf-name} ${year}. (Thank you so much!)
+and then connect with:
-I'm so excited! =) We're starting to get recorded talks, which means
-it'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 "Emax" to "Emacs" and "metaX" to
-"M-x".
+#+begin_src sh :eval no
+xvncviewer 127.0.0.1:$TRACK_PORT -shared -geometry 1280x720 -passwd vnc-passwd-$TRACK &
+#+end_src
-Just like last year, we're using OpenAI Whisper to give us a
-reasonable starting point for transcripts. If working from scratch
-works better for you, you're welcome to do that too.
+**** TODO Ask bandali or zaeph to share their window manager configuration :bandali:zaeph:
-We'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}" and the password "${backstage-password}".
-Please keep the backstage password and other speakers' talk resources
-secret. ${backstage-use}
+*** OBS
+:PROPERTIES:
+:CUSTOM_ID: obs
+:STATUS: confirmed that gen and dev can stream
+:END:
-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's assigned to
-you. You can e-mail me the edited captions when you're done. Don't
-worry too much about timestamps; we can re-align the text with the
-audio afterwards. If life gets suddenly busy and you can't see it all
-the way through, no worries. Just e-mail me what you've got and I'll
-put it back in the pool. Every little bit helps!
+We use OBS to stream to Icecast on live.emacsconf.org.
-Thank you!
+Success: Confirm that you can stream
+- [X] gen
+- [X] dev
-Sacha Chua
+New year: reprovision with
-***** TODO E-mail the emacsconf-org mailing list the announcement and the invitation to volunteer
-***** TODO [#C] Try out Deepgram, play around with it for last-minute submissions?
-***** DONE Get the autocaptions for emms up in the backstage area
-CLOSED: [2023-10-13 Fri 10:08] SCHEDULED: <2023-10-08 Sun>
-***** 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
- #+begin_src python :eval no
- 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})
- #+end_src
-
-**** Reencoding
+#+begin_src sh :eval no
+ansible-playbook -i inventory.yml prod-playbook.yml --tags obs
+#+end_src
+
+so that the year is updated in the shell scripts.
+
+**** Instructions
:PROPERTIES:
-:CUSTOM_ID: check-reencoding
+:CUSTOM_ID: obs-instructions
+:END:
+
+1. [[#vnc-instructions][Connect to the VNC session for the track.]]
+
+2. Start *recording* (not streaming). If you don't see OBS when you connect, it's probably on workspace 2, so you can switch with Alt-2. If you still don'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:
+
+ #+begin_example
+ mpv https://live0.emacsconf.org/$TRACK.webm &
+ #+end_example
+
+**** DONE Double-check OBS setup and streaming on res
+CLOSED: [2023-10-17 Tue 10:22]
+:PROPERTIES:
+:CUSTOM_ID: check-streaming
:END:
-*** TODO Find volunteers for audio processing (normalization, noise reduction) and document the process :helpwanted:
+*** DONE Icecast
+CLOSED: [2023-10-17 Tue 10:30]
:PROPERTIES:
-:CUSTOM_ID: audio
+:CUSTOM_ID: icecast
+:STATUS: gen and dev confirmed with MPV
:END:
-- audio normalization
-- noise reduction
+Success: You can use [[#obs-instructions][OBS+VNC to record]], and the results can be viewed by mpv.
+- [X] Gen
+- [X] Dev
+New year: reprovision with
-*** TODO [#C] Write something for merging in information from previous years if not specified
+#+begin_src sh :eval no
+ansible-playbook -i inventory.yml prod-playbook.yml --tags stream
+#+end_src
+
+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
+CLOSED: [2023-10-17 Tue 10:30]
:PROPERTIES:
-:CUSTOM_ID: previous-years
+:CUSTOM_ID: check-icecast
:END:
-- availability
-- timezone
-- name
-- short name
-- pronouns
-** Prepare assets
+*** MPV
:PROPERTIES:
-:CUSTOM_ID: prepare-assets
+:CUSTOM_ID: mpv
+:STATUS: confirmed that mpv can watch both streams
:END:
-*** TODO Generate intro slides and overlays
+*** DONE Watch page
:PROPERTIES:
-:CUSTOM_ID: generate-intro
+:CUSTOM_ID: watch
+:STATUS: updated for 2023
:END:
-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.
+live.emacsconf.org is on the front0.emacsconf.org server.
-We also generate overlays that show talk information during the talk
-itself.
+To set up for the year:
-SVGs don't support line-wrapping, so it helps to do a quick pass to
-make sure all the talks are displayed properly.
+1. Create directories and update the Nginx configuration
+ #+begin_src sh :eval no
+ ansible-playbook -i inventory.yml prod-playbook.yml --tags live
+ #+end_src
+
+2. Generate the pages
+ #+begin_src emacs-lisp :eval no
+ (emacsconf-publish-watch-pages)
+ #+end_src
-*** BLOCKED Generate redirects
+3. Add the $year/watch to the wiki.
+
+*** Status page
:PROPERTIES:
-:CUSTOM_ID: generate-redirects
+:CUSTOM_ID: status
+:STATUS: Not yet started
:END:
-We use redirects for Q&A sessions with BBB web conferences so that people can easily join the web conference. This is blocked while waiting for media.emacsconf.org.
+*** Public media
+:PROPERTIES:
+:CUSTOM_ID: media
+:STATUS: Not yet started
+:END:
+*** Mumble
+:PROPERTIES:
+:CUSTOM_ID: mumble
+:STATUS: Not yet started
+:END:
+*** DONE Etherpad
+:PROPERTIES:
+:CUSTOM_ID: etherpad
+:STATUS: Ready to go, pads created
+:END:
+**** DONE Create pads for all the talks
+CLOSED: [2023-10-17 Tue 09:46] SCHEDULED: <2023-11-05 Sun>
+:PROPERTIES:
+:CUSTOM_ID: create-pads
+:CREATED: [023-10-13 Fri 10:1]
+:END:
-*** TODO Write 1-2 sentence intros 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
+:PROPERTIES:
+:CUSTOM_ID: proxy
+:STATUS: Ready to go, pad.emacsconf.org works
+:END:
+*** Overlays
+:PROPERTIES:
+:CUSTOM_ID: overlays
+:STATUS: Not yet started
+:END:
+*** Intros
+:PROPERTIES:
+:CUSTOM_ID: intros
+:STATUS: Not yet started
+:END:
+**** BLOCKED Record intro videos with 1-2 sentence intros for all the talks
+:PROPERTIES:
+:CUSTOM_ID: record-intros
+:END:
+**** TODO Write 1-2 sentence intros for all the talks
:PROPERTIES:
:CUSTOM_ID: write-intros
:END:
@@ -1004,15 +1208,15 @@ 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.
-**** Intros :levels:
+***** 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:
+
+***** DONE Do we want to use honorifics like Dr.? :decision:
CLOSED: [2023-10-03 Tue 15:38] DEADLINE: <2023-11-14 Tue>
:PROPERTIES:
:CUSTOM_ID: honorifics
@@ -1043,22 +1247,103 @@ use it when recording the intros.
- OPTION: Using honorifics based on e-mail signatures and intros:
- Recognizes credentials
-*** BLOCKED Record intro videos with 1-2 sentence intros for all the talks
+**** TODO Generate intro slides
:PROPERTIES:
-:CUSTOM_ID: record-intros
+:CUSTOM_ID: generate-intro
:END:
-** Coordinate volunteers
+
+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't support line-wrapping, so it helps to do a quick pass to
+make sure all the talks are displayed properly.
+
+*** IRC channels
:PROPERTIES:
-:CUSTOM_ID: coordinate-volunteers
+:CUSTOM_ID: irc
+:STATUS: Not yet started
:END:
-*** DONE E-mail captioning volunteers the backstage instructions
-CLOSED: [2023-10-16 Mon 12:57]
-*** TODO E-mail previous captioning volunteers to see if they're interested in helping out
-SCHEDULED: <2023-11-04 Sat>
+*** IRC talk info
:PROPERTIES:
-:CREATED: [023-10-16 Mon 12:5]
+:CUSTOM_ID: irc-talk-info
+:STATUS: Not yet started
+:END:
+*** Announcements
+:PROPERTIES:
+:CUSTOM_ID: announcements
+:STATUS: Not yet started
+:END:
+*** Publishing updates live
+:PROPERTIES:
+:CUSTOM_ID: publish
+:STATUS: Not yet started
+:END:
+*** Autopilot
+:PROPERTIES:
+:CUSTOM_ID: autopilot
+:STATUS: Not yet started
+:END:
+*** YouTube
+:PROPERTIES:
+:CUSTOM_ID: youtube
+:STATUS: Not yet started
+:END:
+*** Peertube
+:PROPERTIES:
+:CUSTOM_ID: peertube
+:STATUS: Not yet started
+:END:
+*** 480p
+:PROPERTIES:
+:STATUS: Delegated to corwin
+:END:
+
+Consider increasing memory/cpu configuration on live?
+
+**** TODO Figure out a better way to handle 480p stream :corwin:
+:PROPERTIES:
+:CUSTOM_ID: lowres
+:END:
+
+It kept dropping last year and sachac didn't have the mental bandwidth to figure it out.
+Might need another node so that we don't risk it getting killed for memory reasons?
+
+Corwin has volunteered to take this on
+*** Audio processing
+:PROPERTIES:
+:CUSTOM_ID: audio-proc
+:STATUS: Help wanted
+:END:
+
+**** TODO Find volunteers for audio processing (normalization, noise reduction) and document the process :helpwanted:
+:PROPERTIES:
+:CUSTOM_ID: audio
+:END:
+
+- audio normalization
+- noise reduction
+*** TODO [#C] Write something for merging in information from previous years if not specified
+:PROPERTIES:
+:CUSTOM_ID: previous-years
+:END:
+- availability
+- timezone
+- name
+- short name
+- pronouns
+** Volunteers
+:PROPERTIES:
+:CUSTOM_ID: coordinate-volunteers
+:STATUS: Need to coordinate people
:END:
-*** TODO Prepare shift calendar
+*** TODO Prepare shift calendar, ask people to sign up
+SCHEDULED: <2023-11-01 Wed>
:PROPERTIES:
:CUSTOM_ID: shifts
:END:
diff --git a/2023/watch/dev.md b/2023/watch/dev.md
new file mode 100644
index 00000000..56d5b0d0
--- /dev/null
+++ b/2023/watch/dev.md
@@ -0,0 +1,149 @@
+<!-- Automatically generated by emacsconf-publish-watch-pages -->
+<!--
+[[!inline pages="internal(2023/watch/announce)" raw="yes"]]
+[[!meta title="Development stream"]]
+[[!sidebar content=""]] -->
+
+<hr size="1">
+<div><a name="watch"></a><strong>Watch</strong> - <a href="#links">Pad and Q&amp;A links</a> - <a href="#chat">Chat</a> - <a href="#sched">Schedule</a> | Tracks: <a href="/2023/watch/gen/">General</a> - <strong>Development</strong> | <a href="https://emacsconf.org/2022/watch/">Tips for watching/participating</a></div>
+
+For better performance, we recommend watching <a href="https://live0.emacsconf.org/dev.webm">https://live0.emacsconf.org/dev.webm</a> using a streaming media player. Examples:
+
+<ul>
+<li>mpv https://live0.emacsconf.org/dev.webm</li>
+<li>vlc https://live0.emacsconf.org/dev.webm</li>
+<li>ffplay https://live0.emacsconf.org/dev.webm</li>
+</ul>
+
+If you have limited bandwidth, you can watch the low-res stream <a href="https://live0.emacsconf.org/dev-480p.webm">https://live0.emacsconf.org/dev-480p.webm</a>.
+
+If you don't have a streaming media player, you can watch using the player below.
+
+<video controls class="reload"><source src="https://live0.emacsconf.org/dev.webm" type="video/webm" /></video>
+
+<hr size="1"><div><a name="links"></a><a href="#watch">Watch</a> - <strong>Pad and Q&amp;A links</strong> - <a href="#chat">Chat</a> - <a href="#sched">Schedule</a> | Tracks: <a href="/2023/watch/gen/">General</a> - <strong>Development</strong></div><div><span><a href="https://emacsconf.org/2023/talks/matplotllm">matplotllm</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-matplotllm">pad</a>)</span> - <span><a href="https://emacsconf.org/2023/talks/voice">voice</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-voice">pad</a>, <a href="https://emacsconf.org/current/voice/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2023/talks/llm">llm</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-llm">pad</a>, <a href="https://emacsconf.org/current/llm/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2023/talks/overlay">overlay</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-overlay">pad</a>, <a href="https://emacsconf.org/current/overlay/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2023/talks/eval">eval</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-eval">pad</a>, <a href="https://emacsconf.org/current/eval/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2023/talks/repl">repl</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-repl">pad</a>, <a href="https://chat.emacsconf.org/?join=emacsconf">#emacsconf, speaker nick: edrx</a>)</span> - <span><a href="https://emacsconf.org/2023/talks/emacsconf">emacsconf</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-emacsconf">pad</a>, <a href="https://emacsconf.org/current/emacsconf/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2023/talks/scheme">scheme</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-scheme">pad</a>, <a href="https://emacsconf.org/current/scheme/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2023/talks/test">test</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-test">pad</a>, <a href="https://emacsconf.org/current/test/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2023/talks/world">world</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-world">pad</a>, <a href="https://emacsconf.org/current/world/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2023/talks/flat">flat</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-flat">pad</a>, <a href="https://emacsconf.org/current/flat/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2023/talks/gc">gc</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-gc">pad</a>, <a href="https://emacsconf.org/current/gc/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2023/talks/hyperdrive">hyperdrive</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-hyperdrive">pad</a>, <a href="https://emacsconf.org/current/hyperdrive/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2023/talks/lspocaml">lspocaml</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-lspocaml">pad</a>, <a href="https://emacsconf.org/current/lspocaml/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2023/talks/windows">windows</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-windows">pad</a>, <a href="https://emacsconf.org/current/windows/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2023/talks/emacsen">emacsen</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-emacsen">pad</a>, none)</span></div>
+<div class="pad-output"></div>
+<hr size="1"><div><a name="chat"></a><a href="#watch">Watch</a> - <a href="#links">Pad and Q&amp;A links</a> - <strong>Chat</strong> - <a href="#sched">Schedule</a> | Tracks: <a href="/2023/watch/gen/">General</a> - <strong>Development</strong></div><div>Chat: <a href="https://chat.emacsconf.org/?join=emacsconf,emacsconf-org,emacsconf-accessible,emacsconf-gen,emacsconf-dev">emacsconf-dev</a> on libera.chat</div>
+
+<div class="chat-iframe" data-track="dev"></div>
+<iframe src="https://chat.emacsconf.org/?join=emacsconf,emacsconf-org,emacsconf-accessible,emacsconf-gen,emacsconf-dev" height="600" width="100%"></iframe>
+<hr size="1"><div><a name="sched"></a><a href="#watch">Watch</a> - <a href="#links">Pad and Q&amp;A links</a> - <a href="#chat">Chat</a> - <strong>Schedule</strong> | Tracks: <a href="/2023/watch/gen/">General</a> - <strong>Development</strong></div>
+<ul>Legend:
+<li>Solid lines: Q&A will be through a BigBlueButton room (you can ask questions there or through IRC/Etherpad)</li>
+<li>Dashed lines: Q&A will be over IRC or the Etherpad, or the speaker will follow up afterwards</li></ul>
+<div><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="" fill="peachpuff"></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="peachpuff"></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="peachpuff"></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="peachpuff"></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="" fill="peachpuff"></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/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="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(209,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> taming</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="peachpuff"></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="peachpuff"></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="peachpuff"></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="peachpuff"></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="peachpuff"></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="peachpuff"></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="peachpuff"></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="5,5,5" fill="peachpuff"></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:05- 4:45 Emacs core development: how it works</title> <rect x="666" y="15" opacity="0.8" width="62" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(726,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:00- 5:10 Saturday closing remarks</title> <rect x="752" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(765,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="skyblue"></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="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="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></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="skyblue"></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="skyblue"></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="" fill="skyblue"></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- 2:40 REPLs in strange places: Lua, LaTeX, LPeg, LPegRex, TikZ</title> <rect x="470" y="75" opacity="0.8" width="62" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(530,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/emacsconf" title="EmacsConf.org: How we use Org Mode and TRAMP to organize and run a multi-track conference" data-slug="emacsconf"> <title> 2:50- 3:10 EmacsConf.org: How we use Org Mode and TRAMP to organize and run a multi-track conference</title> <rect x="549" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(578,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> <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> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.8" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,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="peachpuff"></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="peachpuff"></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: 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="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(122,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="peachpuff"></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="peachpuff"></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="peachpuff"></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="peachpuff"></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 at 200 wpm" data-slug="steno"> <title> 1:55- 2:25 Programming at 200 wpm</title> <rect x="462" y="15" opacity="0.8" width="47" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></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="peachpuff"></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/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="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(577,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hn</text></g></a> <a href="https://emacsconf.org/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="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(663,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> 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="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(719,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:55- 5:05 Sunday closing remarks</title> <rect x="745" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(758,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="skyblue"></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/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="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(178,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/world" title="GNU Emacs: A World of Possibilities" data-slug="world"> <title> 11:10-11:30 GNU Emacs: A World of Possibilities</title> <rect x="203" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(232,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:45-11:55 A modern Emacs look-and-feel without pain</title> <rect x="258" y="75" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(271,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/gc" title="emacs-gc-stats: Does garbage collection actually slow down Emacs?" data-slug="gc"> <title> 1:00- 1:20 emacs-gc-stats: Does garbage collection actually slow down Emacs?</title> <rect x="376" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(405,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:35- 2:15 hyperdrive.el: Peer-to-peer filesystem in Emacs</title> <rect x="431" y="75" opacity="0.8" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(491,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:30- 2:40 Writing a language server in OCaml for Emacs, fun, and profit</title> <rect x="517" y="75" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,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/windows" title="Windows into Freedom" data-slug="windows"> <title> 2:55- 3:35 Windows into Freedom</title> <rect x="556" y="75" opacity="0.8" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(616,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> windows</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> 3:50- 4:10 The Emacsen family, the design of an Emacs and the importance of Lisp</title> <rect x="643" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(672,133)"> <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="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></div>
+<div><h1>Saturday, Dec 2, 2023</h1>
+<div data-start="2023-12-02T15:00:00+0000" data-end="2023-12-02T15:10:00+0000" class="sched-entry track-Development">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">10:00</span> - <span class="sched-end">10:10</span></span> <span class="sched-track Development">Development</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-matplotllm">Etherpad</a></span>; <span class="sched-slug">id:matplotllm</span></div>
+<div class="sched-title"><a href="https://emacsconf.org/2023/talks/matplotllm">MatplotLLM, iterative natural language data visualization in org-babel</a></div>
+ <div class="sched-speakers">Abhinav Tushar (he/him)</div>
+
+</div>
+
+<div data-start="2023-12-02T15:20:00+0000" data-end="2023-12-02T15:40:00+0000" class="sched-entry track-Development">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">10:20</span> - <span class="sched-end">10:40</span></span> <span class="sched-track Development">Development</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-voice">Etherpad</a></span>; <span class="sched-q-and-a">Q&amp;A: <a href="https://emacsconf.org/current/voice/room/">BBB</a></span>; <span class="sched-slug">id:voice</span></div>
+<div class="sched-title"><a href="https://emacsconf.org/2023/talks/voice">Improving access to AI-assisted literate programming with voice control</a></div>
+ <div class="sched-speakers">Blaine Mooers (he/him/his)</div>
+
+</div>
+
+<div data-start="2023-12-02T15:55:00+0000" data-end="2023-12-02T16:15:00+0000" class="sched-entry track-Development">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">10:55</span> - <span class="sched-end">11:15</span></span> <span class="sched-track Development">Development</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-llm">Etherpad</a></span>; <span class="sched-q-and-a">Q&amp;A: <a href="https://emacsconf.org/current/llm/room/">BBB</a></span>; <span class="sched-slug">id:llm</span></div>
+<div class="sched-title"><a href="https://emacsconf.org/2023/talks/llm">LLM clients in Emacs, functionality and standardization</a></div>
+ <div class="sched-speakers">Andrew Hyatt (he/him)</div>
+
+</div>
+
+<div data-start="2023-12-02T18:00:00+0000" data-end="2023-12-02T18:20:00+0000" class="sched-entry track-Development">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">1:00</span> - <span class="sched-end">1:20</span></span> <span class="sched-track Development">Development</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-overlay">Etherpad</a></span>; <span class="sched-q-and-a">Q&amp;A: <a href="https://emacsconf.org/current/overlay/room/">BBB</a></span>; <span class="sched-slug">id:overlay</span></div>
+<div class="sched-title"><a href="https://emacsconf.org/2023/talks/overlay">Improving compiler diagnostics with Overlays</a></div>
+ <div class="sched-speakers">Jeff Trull (he/him)</div>
+
+</div>
+
+<div data-start="2023-12-02T18:35:00+0000" data-end="2023-12-02T18:45:00+0000" class="sched-entry track-Development">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">1:35</span> - <span class="sched-end">1:45</span></span> <span class="sched-track Development">Development</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-eval">Etherpad</a></span>; <span class="sched-q-and-a">Q&amp;A: <a href="https://emacsconf.org/current/eval/room/">BBB</a></span>; <span class="sched-slug">id:eval</span></div>
+<div class="sched-title"><a href="https://emacsconf.org/2023/talks/eval">Editor Integrated REPL Driven Development for all languages</a></div>
+ <div class="sched-speakers">Musa Al-hassy (he/him)</div>
+
+</div>
+
+<div data-start="2023-12-02T19:00:00+0000" data-end="2023-12-02T19:40:00+0000" class="sched-entry track-Development">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">2:00</span> - <span class="sched-end">2:40</span></span> <span class="sched-track Development">Development</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-repl">Etherpad</a></span>; <span class="sched-q-and-a">Q&amp;A: <a href="https://chat.emacsconf.org/?join=emacsconf">#emacsconf, speaker nick: edrx</a></span>; <span class="sched-slug">id:repl</span></div>
+<div class="sched-title"><a href="https://emacsconf.org/2023/talks/repl">REPLs in strange places: Lua, LaTeX, LPeg, LPegRex, TikZ</a></div>
+ <div class="sched-speakers">Eduardo Ochs</div>
+
+</div>
+
+<div data-start="2023-12-02T19:50:00+0000" data-end="2023-12-02T20:10:00+0000" class="sched-entry track-Development">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">2:50</span> - <span class="sched-end">3:10</span></span> <span class="sched-track Development">Development</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-emacsconf">Etherpad</a></span>; <span class="sched-q-and-a">Q&amp;A: <a href="https://emacsconf.org/current/emacsconf/room/">BBB</a></span>; <span class="sched-slug">id:emacsconf</span></div>
+<div class="sched-title"><a href="https://emacsconf.org/2023/talks/emacsconf">EmacsConf.org: How we use Org Mode and TRAMP to organize and run a multi-track conference</a></div>
+ <div class="sched-speakers">Sacha Chua (she/her)</div>
+
+</div>
+
+<h1>Sunday, Dec 3, 2023</h1>
+<div data-start="2023-12-03T15:00:00+0000" data-end="2023-12-03T15:20:00+0000" class="sched-entry track-Development">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">10:00</span> - <span class="sched-end">10:20</span></span> <span class="sched-track Development">Development</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-scheme">Etherpad</a></span>; <span class="sched-q-and-a">Q&amp;A: <a href="https://emacsconf.org/current/scheme/room/">BBB</a></span>; <span class="sched-slug">id:scheme</span></div>
+<div class="sched-title"><a href="https://emacsconf.org/2023/talks/scheme">Bringing joy to Scheme programming</a></div>
+ <div class="sched-speakers">Andrew Tropin</div>
+
+</div>
+
+<div data-start="2023-12-03T15:35:00+0000" data-end="2023-12-03T15:55:00+0000" class="sched-entry track-Development">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">10:35</span> - <span class="sched-end">10:55</span></span> <span class="sched-track Development">Development</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-test">Etherpad</a></span>; <span class="sched-q-and-a">Q&amp;A: <a href="https://emacsconf.org/current/test/room/">BBB</a></span>; <span class="sched-slug">id:test</span></div>
+<div class="sched-title"><a href="https://emacsconf.org/2023/talks/test">What I learned by writing test cases for GNU Hyperbole</a></div>
+ <div class="sched-speakers">Mats Lidell (he, him, his)</div>
+
+</div>
+
+<div data-start="2023-12-03T16:10:00+0000" data-end="2023-12-03T16:30:00+0000" class="sched-entry track-Development">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">11:10</span> - <span class="sched-end">11:30</span></span> <span class="sched-track Development">Development</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-world">Etherpad</a></span>; <span class="sched-q-and-a">Q&amp;A: <a href="https://emacsconf.org/current/world/room/">BBB</a></span>; <span class="sched-slug">id:world</span></div>
+<div class="sched-title"><a href="https://emacsconf.org/2023/talks/world">GNU Emacs: A World of Possibilities</a></div>
+ <div class="sched-speakers">Anand Tamariya</div>
+
+</div>
+
+<div data-start="2023-12-03T16:45:00+0000" data-end="2023-12-03T16:55:00+0000" class="sched-entry track-Development">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">11:45</span> - <span class="sched-end">11:55</span></span> <span class="sched-track Development">Development</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-flat">Etherpad</a></span>; <span class="sched-q-and-a">Q&amp;A: <a href="https://emacsconf.org/current/flat/room/">BBB</a></span>; <span class="sched-slug">id:flat</span></div>
+<div class="sched-title"><a href="https://emacsconf.org/2023/talks/flat">A modern Emacs look-and-feel without pain</a></div>
+ <div class="sched-speakers">Pedro A. Aranda (he)</div>
+
+</div>
+
+<div data-start="2023-12-03T18:00:00+0000" data-end="2023-12-03T18:20:00+0000" class="sched-entry track-Development">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">1:00</span> - <span class="sched-end">1:20</span></span> <span class="sched-track Development">Development</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-gc">Etherpad</a></span>; <span class="sched-q-and-a">Q&amp;A: <a href="https://emacsconf.org/current/gc/room/">BBB</a></span>; <span class="sched-slug">id:gc</span></div>
+<div class="sched-title"><a href="https://emacsconf.org/2023/talks/gc">emacs-gc-stats: Does garbage collection actually slow down Emacs?</a></div>
+ <div class="sched-speakers">Ihor Radchenko (he)</div>
+
+</div>
+
+<div data-start="2023-12-03T18:35:00+0000" data-end="2023-12-03T19:15:00+0000" class="sched-entry track-Development">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">1:35</span> - <span class="sched-end">2:15</span></span> <span class="sched-track Development">Development</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-hyperdrive">Etherpad</a></span>; <span class="sched-q-and-a">Q&amp;A: <a href="https://emacsconf.org/current/hyperdrive/room/">BBB</a></span>; <span class="sched-slug">id:hyperdrive</span></div>
+<div class="sched-title"><a href="https://emacsconf.org/2023/talks/hyperdrive">hyperdrive.el: Peer-to-peer filesystem in Emacs</a></div>
+ <div class="sched-speakers">Joseph Turner</div>
+
+</div>
+
+<div data-start="2023-12-03T19:30:00+0000" data-end="2023-12-03T19:40:00+0000" class="sched-entry track-Development">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">2:30</span> - <span class="sched-end">2:40</span></span> <span class="sched-track Development">Development</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-lspocaml">Etherpad</a></span>; <span class="sched-q-and-a">Q&amp;A: <a href="https://emacsconf.org/current/lspocaml/room/">BBB</a></span>; <span class="sched-slug">id:lspocaml</span></div>
+<div class="sched-title"><a href="https://emacsconf.org/2023/talks/lspocaml">Writing a language server in OCaml for Emacs, fun, and profit</a></div>
+ <div class="sched-speakers">Austin Theriault (he/they)</div>
+
+</div>
+
+<div data-start="2023-12-03T19:55:00+0000" data-end="2023-12-03T20:35:00+0000" class="sched-entry track-Development">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">2:55</span> - <span class="sched-end">3:35</span></span> <span class="sched-track Development">Development</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-windows">Etherpad</a></span>; <span class="sched-q-and-a">Q&amp;A: <a href="https://emacsconf.org/current/windows/room/">BBB</a></span>; <span class="sched-slug">id:windows</span></div>
+<div class="sched-title"><a href="https://emacsconf.org/2023/talks/windows">Windows into Freedom</a></div>
+ <div class="sched-speakers">Corwin Brust (He/Him)</div>
+
+</div>
+
+<div data-start="2023-12-03T20:50:00+0000" data-end="2023-12-03T21:10:00+0000" class="sched-entry track-Development">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">3:50</span> - <span class="sched-end">4:10</span></span> <span class="sched-track Development">Development</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-emacsen">Etherpad</a></span>; <span class="sched-q-and-a">Q&amp;A: none</span>; <span class="sched-slug">id:emacsen</span></div>
+<div class="sched-title"><a href="https://emacsconf.org/2023/talks/emacsen">The Emacsen family, the design of an Emacs and the importance of Lisp</a></div>
+ <div class="sched-speakers">Fermin (he/him)</div>
+
+</div>
+
+</div>
diff --git a/2023/watch/gen.md b/2023/watch/gen.md
new file mode 100644
index 00000000..8c3f573c
--- /dev/null
+++ b/2023/watch/gen.md
@@ -0,0 +1,247 @@
+<!-- Automatically generated by emacsconf-publish-watch-pages -->
+<!--
+[[!inline pages="internal(2023/watch/announce)" raw="yes"]]
+[[!meta title="General stream"]]
+[[!sidebar content=""]] -->
+
+<hr size="1">
+<div><a name="watch"></a><strong>Watch</strong> - <a href="#links">Pad and Q&amp;A links</a> - <a href="#chat">Chat</a> - <a href="#sched">Schedule</a> | Tracks: <strong>General</strong> - <a href="/2023/watch/dev/">Development</a> | <a href="https://emacsconf.org/2022/watch/">Tips for watching/participating</a></div>
+
+For better performance, we recommend watching <a href="https://live0.emacsconf.org/gen.webm">https://live0.emacsconf.org/gen.webm</a> using a streaming media player. Examples:
+
+<ul>
+<li>mpv https://live0.emacsconf.org/gen.webm</li>
+<li>vlc https://live0.emacsconf.org/gen.webm</li>
+<li>ffplay https://live0.emacsconf.org/gen.webm</li>
+</ul>
+
+If you have limited bandwidth, you can watch the low-res stream <a href="https://live0.emacsconf.org/gen-480p.webm">https://live0.emacsconf.org/gen-480p.webm</a>.
+
+If you don't have a streaming media player, you can watch using the player below.
+
+<video controls class="reload"><source src="https://live0.emacsconf.org/gen.webm" type="video/webm" /></video>
+
+<hr size="1"><div><a name="links"></a><a href="#watch">Watch</a> - <strong>Pad and Q&amp;A links</strong> - <a href="#chat">Chat</a> - <a href="#sched">Schedule</a> | Tracks: <strong>General</strong> - <a href="/2023/watch/dev/">Development</a></div><div><span><a href="https://emacsconf.org/2023/talks/adventure">adventure</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-adventure">pad</a>)</span> - <span><a href="https://emacsconf.org/2023/talks/uni">uni</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-uni">pad</a>, <a href="https://emacsconf.org/current/uni/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2023/talks/teaching">teaching</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-teaching">pad</a>, <a href="https://emacsconf.org/current/teaching/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2023/talks/table">table</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-table">pad</a>, <a href="https://emacsconf.org/current/table/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2023/talks/taming">taming</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-taming">pad</a>, <a href="https://emacsconf.org/current/taming/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2023/talks/one">one</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-one">pad</a>, <a href="https://emacsconf.org/current/one/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2023/talks/writing">writing</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-writing">pad</a>, <a href="https://emacsconf.org/current/writing/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2023/talks/nabokov">nabokov</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-nabokov">pad</a>, <a href="https://emacsconf.org/current/nabokov/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2023/talks/collab">collab</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-collab">pad</a>, none)</span> - <span><a href="https://emacsconf.org/2023/talks/solo">solo</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-solo">pad</a>, <a href="https://emacsconf.org/current/solo/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2023/talks/ref">ref</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-ref">pad</a>, <a href="https://chat.emacsconf.org/?join=emacsconf">#emacsconf, speaker nick: lispmacs</a>)</span> - <span><a href="https://emacsconf.org/2023/talks/unentangling">unentangling</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-unentangling">pad</a>)</span> - <span><a href="https://emacsconf.org/2023/talks/devel">devel</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-devel">pad</a>, none)</span> - <span><a href="https://emacsconf.org/2023/talks/core">core</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-core">pad</a>, none)</span> - <span><a href="https://emacsconf.org/2023/talks/hyperamp">hyperamp</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-hyperamp">pad</a>, <a href="https://emacsconf.org/current/hyperamp/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2023/talks/koutline">koutline</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-koutline">pad</a>, <a href="https://chat.emacsconf.org/?join=emacsconf">#emacsconf</a>)</span> - <span><a href="https://emacsconf.org/2023/talks/parallel">parallel</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-parallel">pad</a>, <a href="https://emacsconf.org/current/parallel/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2023/talks/eat">eat</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-eat">pad</a>, <a href="https://emacsconf.org/current/eat/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2023/talks/poltys">poltys</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-poltys">pad</a>, <a href="https://emacsconf.org/current/poltys/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2023/talks/cubing">cubing</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-cubing">pad</a>, <a href="https://chat.emacsconf.org/?join=emacsconf">#emacsconf, speaker nick: wasamasa</a>)</span> - <span><a href="https://emacsconf.org/2023/talks/emms">emms</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-emms">pad</a>, none)</span> - <span><a href="https://emacsconf.org/2023/talks/steno">steno</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-steno">pad</a>, none)</span> - <span><a href="https://emacsconf.org/2023/talks/mentor">mentor</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-mentor">pad</a>, <a href="https://emacsconf.org/current/mentor/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2023/talks/hn">hn</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-hn">pad</a>, <a href="https://emacsconf.org/current/hn/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2023/talks/web">web</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-web">pad</a>, <a href="https://emacsconf.org/current/web/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2023/talks/sharing">sharing</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-sharing">pad</a>, <a href="https://emacsconf.org/current/sharing/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2023/talks/sat-open">sat-open</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-sat-open">pad</a>, none)</span> - <span><a href="https://emacsconf.org/2023/talks/sat-close">sat-close</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-sat-close">pad</a>, none)</span> - <span><a href="https://emacsconf.org/2023/talks/sun-open">sun-open</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-sun-open">pad</a>, none)</span> - <span><a href="https://emacsconf.org/2023/talks/sun-close">sun-close</a> (<a class="pad-link" href="https://pad.emacsconf.org/2023-sun-close">pad</a>, none)</span></div>
+<div class="pad-output"></div>
+<hr size="1"><div><a name="chat"></a><a href="#watch">Watch</a> - <a href="#links">Pad and Q&amp;A links</a> - <strong>Chat</strong> - <a href="#sched">Schedule</a> | Tracks: <strong>General</strong> - <a href="/2023/watch/dev/">Development</a></div><div>Chat: <a href="https://chat.emacsconf.org/?join=emacsconf,emacsconf-org,emacsconf-accessible,emacsconf-dev,emacsconf-gen">emacsconf-gen</a> on libera.chat</div>
+
+<div class="chat-iframe" data-track="gen"></div>
+<iframe src="https://chat.emacsconf.org/?join=emacsconf,emacsconf-org,emacsconf-accessible,emacsconf-dev,emacsconf-gen" height="600" width="100%"></iframe>
+<hr size="1"><div><a name="sched"></a><a href="#watch">Watch</a> - <a href="#links">Pad and Q&amp;A links</a> - <a href="#chat">Chat</a> - <strong>Schedule</strong> | Tracks: <strong>General</strong> - <a href="/2023/watch/dev/">Development</a></div>
+<ul>Legend:
+<li>Solid lines: Q&A will be through a BigBlueButton room (you can ask questions there or through IRC/Etherpad)</li>
+<li>Dashed lines: Q&A will be over IRC or the Etherpad, or the speaker will follow up afterwards</li></ul>
+<div><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="" fill="peachpuff"></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="peachpuff"></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="peachpuff"></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="peachpuff"></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="" fill="peachpuff"></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/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="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(209,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> taming</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="peachpuff"></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="peachpuff"></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="peachpuff"></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="peachpuff"></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="peachpuff"></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="peachpuff"></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="peachpuff"></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="5,5,5" fill="peachpuff"></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:05- 4:45 Emacs core development: how it works</title> <rect x="666" y="15" opacity="0.8" width="62" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(726,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:00- 5:10 Saturday closing remarks</title> <rect x="752" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(765,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="skyblue"></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="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="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></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="skyblue"></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="skyblue"></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="" fill="skyblue"></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- 2:40 REPLs in strange places: Lua, LaTeX, LPeg, LPegRex, TikZ</title> <rect x="470" y="75" opacity="0.8" width="62" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(530,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/emacsconf" title="EmacsConf.org: How we use Org Mode and TRAMP to organize and run a multi-track conference" data-slug="emacsconf"> <title> 2:50- 3:10 EmacsConf.org: How we use Org Mode and TRAMP to organize and run a multi-track conference</title> <rect x="549" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(578,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> <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> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.8" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,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="peachpuff"></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="peachpuff"></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: 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="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(122,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="peachpuff"></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="peachpuff"></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="peachpuff"></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="peachpuff"></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 at 200 wpm" data-slug="steno"> <title> 1:55- 2:25 Programming at 200 wpm</title> <rect x="462" y="15" opacity="0.8" width="47" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></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="peachpuff"></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/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="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(577,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hn</text></g></a> <a href="https://emacsconf.org/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="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(663,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> 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="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(719,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:55- 5:05 Sunday closing remarks</title> <rect x="745" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(758,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="skyblue"></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/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="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(178,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/world" title="GNU Emacs: A World of Possibilities" data-slug="world"> <title> 11:10-11:30 GNU Emacs: A World of Possibilities</title> <rect x="203" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(232,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:45-11:55 A modern Emacs look-and-feel without pain</title> <rect x="258" y="75" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(271,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/gc" title="emacs-gc-stats: Does garbage collection actually slow down Emacs?" data-slug="gc"> <title> 1:00- 1:20 emacs-gc-stats: Does garbage collection actually slow down Emacs?</title> <rect x="376" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(405,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:35- 2:15 hyperdrive.el: Peer-to-peer filesystem in Emacs</title> <rect x="431" y="75" opacity="0.8" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(491,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:30- 2:40 Writing a language server in OCaml for Emacs, fun, and profit</title> <rect x="517" y="75" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,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/windows" title="Windows into Freedom" data-slug="windows"> <title> 2:55- 3:35 Windows into Freedom</title> <rect x="556" y="75" opacity="0.8" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(616,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> windows</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> 3:50- 4:10 The Emacsen family, the design of an Emacs and the importance of Lisp</title> <rect x="643" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(672,133)"> <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="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></div>
+<div><h1>Saturday, Dec 2, 2023</h1>
+<div data-start="2023-12-02T14:10:00+0000" data-end="2023-12-02T14:20:00+0000" class="sched-entry track-General">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">9:10</span> - <span class="sched-end">9:20</span></span> <span class="sched-track General">General</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-adventure">Etherpad</a></span>; <span class="sched-slug">id:adventure</span></div>
+<div class="sched-title"><a href="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</a></div>
+ <div class="sched-speakers">Chung-hong Chan (he/his/him, er/sein/ihn/ihm, 佢/他)</div>
+
+</div>
+
+<div data-start="2023-12-02T14:30:00+0000" data-end="2023-12-02T14:50:00+0000" class="sched-entry track-General">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">9:30</span> - <span class="sched-end">9:50</span></span> <span class="sched-track General">General</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-uni">Etherpad</a></span>; <span class="sched-q-and-a">Q&amp;A: <a href="https://emacsconf.org/current/uni/room/">BBB</a></span>; <span class="sched-slug">id:uni</span></div>
+<div class="sched-title"><a href="https://emacsconf.org/2023/talks/uni">Authoring and presenting university courses with Emacs and a full libre software stack</a></div>
+ <div class="sched-speakers">James Howell</div>
+
+</div>
+
+<div data-start="2023-12-02T15:05:00+0000" data-end="2023-12-02T15:25:00+0000" class="sched-entry track-General">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">10:05</span> - <span class="sched-end">10:25</span></span> <span class="sched-track General">General</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-teaching">Etherpad</a></span>; <span class="sched-q-and-a">Q&amp;A: <a href="https://emacsconf.org/current/teaching/room/">BBB</a></span>; <span class="sched-slug">id:teaching</span></div>
+<div class="sched-title"><a href="https://emacsconf.org/2023/talks/teaching">Teaching computer and data science with literate programming tools</a></div>
+ <div class="sched-speakers">Marcus Birkenkrahe</div>
+
+</div>
+
+<div data-start="2023-12-02T15:40:00+0000" data-end="2023-12-02T15:50:00+0000" class="sched-entry track-General">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">10:40</span> - <span class="sched-end">10:50</span></span> <span class="sched-track General">General</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-table">Etherpad</a></span>; <span class="sched-q-and-a">Q&amp;A: <a href="https://emacsconf.org/current/table/room/">BBB</a></span>; <span class="sched-slug">id:table</span></div>
+<div class="sched-title"><a href="https://emacsconf.org/2023/talks/table">Who needs Excel? Managing your students qualifications with org-table</a></div>
+ <div class="sched-speakers">Daniel Molina (he/him)</div>
+
+</div>
+
+<div data-start="2023-12-02T16:05:00+0000" data-end="2023-12-02T16:15:00+0000" class="sched-entry track-General">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">11:05</span> - <span class="sched-end">11:15</span></span> <span class="sched-track General">General</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-taming">Etherpad</a></span>; <span class="sched-q-and-a">Q&amp;A: <a href="https://emacsconf.org/current/taming/room/">BBB</a></span>; <span class="sched-slug">id:taming</span></div>
+<div class="sched-title"><a href="https://emacsconf.org/2023/talks/taming">Taming things with Org Mode</a></div>
+ <div class="sched-speakers">Gergely Nagy (algernon) (he/him)</div>
+
+</div>
+
+<div data-start="2023-12-02T16:30:00+0000" data-end="2023-12-02T16:50:00+0000" class="sched-entry track-General">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">11:30</span> - <span class="sched-end">11:50</span></span> <span class="sched-track General">General</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-one">Etherpad</a></span>; <span class="sched-q-and-a">Q&amp;A: <a href="https://emacsconf.org/current/one/room/">BBB</a></span>; <span class="sched-slug">id:one</span></div>
+<div class="sched-title"><a href="https://emacsconf.org/2023/talks/one">one.el: the static site generator for Emacs Lisp Programmers</a></div>
+ <div class="sched-speakers">Tony Aldon</div>
+
+</div>
+
+<div data-start="2023-12-02T18:00:00+0000" data-end="2023-12-02T18:10:00+0000" class="sched-entry track-General">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">1:00</span> - <span class="sched-end">1:10</span></span> <span class="sched-track General">General</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-writing">Etherpad</a></span>; <span class="sched-q-and-a">Q&amp;A: <a href="https://emacsconf.org/current/writing/room/">BBB</a></span>; <span class="sched-slug">id:writing</span></div>
+<div class="sched-title"><a href="https://emacsconf.org/2023/talks/writing">Emacs turbo-charges my writing</a></div>
+ <div class="sched-speakers">Jeremy Friesen (he/him)</div>
+
+</div>
+
+<div data-start="2023-12-02T18:25:00+0000" data-end="2023-12-02T18:35:00+0000" class="sched-entry track-General">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">1:25</span> - <span class="sched-end">1:35</span></span> <span class="sched-track General">General</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-nabokov">Etherpad</a></span>; <span class="sched-q-and-a">Q&amp;A: <a href="https://emacsconf.org/current/nabokov/room/">BBB</a></span>; <span class="sched-slug">id:nabokov</span></div>
+<div class="sched-title"><a href="https://emacsconf.org/2023/talks/nabokov">Why Nabokov would use Org-Mode if he were writing today</a></div>
+ <div class="sched-speakers">Edmund Jorgensen (he/him)</div>
+
+</div>
+
+<div data-start="2023-12-02T18:50:00+0000" data-end="2023-12-02T19:10:00+0000" class="sched-entry track-General">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">1:50</span> - <span class="sched-end">2:10</span></span> <span class="sched-track General">General</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-collab">Etherpad</a></span>; <span class="sched-q-and-a">Q&amp;A: none</span>; <span class="sched-slug">id:collab</span></div>
+<div class="sched-title"><a href="https://emacsconf.org/2023/talks/collab">Collaborative data processing and documenting using org-babel</a></div>
+ <div class="sched-speakers">Jonathan Hartman (he/him), Lukas C. Bossert (he/him)</div>
+
+</div>
+
+<div data-start="2023-12-02T19:20:00+0000" data-end="2023-12-02T19:40:00+0000" class="sched-entry track-General">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">2:20</span> - <span class="sched-end">2:40</span></span> <span class="sched-track General">General</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-solo">Etherpad</a></span>; <span class="sched-q-and-a">Q&amp;A: <a href="https://emacsconf.org/current/solo/room/">BBB</a></span>; <span class="sched-slug">id:solo</span></div>
+<div class="sched-title"><a href="https://emacsconf.org/2023/talks/solo">How I play TTRPGs in Emacs</a></div>
+ <div class="sched-speakers">Howard Abrams</div>
+
+</div>
+
+<div data-start="2023-12-02T19:55:00+0000" data-end="2023-12-02T20:15:00+0000" class="sched-entry track-General">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">2:55</span> - <span class="sched-end">3:15</span></span> <span class="sched-track General">General</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-ref">Etherpad</a></span>; <span class="sched-q-and-a">Q&amp;A: <a href="https://chat.emacsconf.org/?join=emacsconf">#emacsconf, speaker nick: lispmacs</a></span>; <span class="sched-slug">id:ref</span></div>
+<div class="sched-title"><a href="https://emacsconf.org/2023/talks/ref">Org-Mode workflow: informal reference tracking</a></div>
+ <div class="sched-speakers">Christopher Howard (he/him)</div>
+
+</div>
+
+<div data-start="2023-12-02T20:25:00+0000" data-end="2023-12-02T20:35:00+0000" class="sched-entry track-General">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">3:25</span> - <span class="sched-end">3:35</span></span> <span class="sched-track General">General</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-unentangling">Etherpad</a></span>; <span class="sched-slug">id:unentangling</span></div>
+<div class="sched-title"><a href="https://emacsconf.org/2023/talks/unentangling">(Un)entangling projects and repos</a></div>
+ <div class="sched-speakers">Alexey Bochkarev (he/him)</div>
+
+</div>
+
+<div data-start="2023-12-02T20:45:00+0000" data-end="2023-12-02T20:55:00+0000" class="sched-entry track-General">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">3:45</span> - <span class="sched-end">3:55</span></span> <span class="sched-track General">General</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-devel">Etherpad</a></span>; <span class="sched-q-and-a">Q&amp;A: none</span>; <span class="sched-slug">id:devel</span></div>
+<div class="sched-title"><a href="https://emacsconf.org/2023/talks/devel">Emacs development updates</a></div>
+ <div class="sched-speakers">John Wiegley (he/him)</div>
+
+</div>
+
+<div data-start="2023-12-02T21:05:00+0000" data-end="2023-12-02T21:45:00+0000" class="sched-entry track-General">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">4:05</span> - <span class="sched-end">4:45</span></span> <span class="sched-track General">General</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-core">Etherpad</a></span>; <span class="sched-q-and-a">Q&amp;A: none</span>; <span class="sched-slug">id:core</span></div>
+<div class="sched-title"><a href="https://emacsconf.org/2023/talks/core">Emacs core development: how it works</a></div>
+ <div class="sched-speakers">Stefan Kangas</div>
+
+</div>
+
+<div data-start="2023-12-02T14:00:00+0000" data-end="2023-12-02T14:10:00+0000" class="sched-entry track-General">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">9:00</span> - <span class="sched-end">9:10</span></span> <span class="sched-track General">General</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-sat-open">Etherpad</a></span>; <span class="sched-q-and-a">Q&amp;A: none</span>; <span class="sched-slug">id:sat-open</span></div>
+<div class="sched-title"><a href="https://emacsconf.org/2023/talks/sat-open">Saturday opening remarks</a></div>
+
+
+</div>
+
+<div data-start="2023-12-02T22:00:00+0000" data-end="2023-12-02T22:10:00+0000" class="sched-entry track-General">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">5:00</span> - <span class="sched-end">5:10</span></span> <span class="sched-track General">General</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-sat-close">Etherpad</a></span>; <span class="sched-q-and-a">Q&amp;A: none</span>; <span class="sched-slug">id:sat-close</span></div>
+<div class="sched-title"><a href="https://emacsconf.org/2023/talks/sat-close">Saturday closing remarks</a></div>
+
+
+</div>
+
+<h1>Sunday, Dec 3, 2023</h1>
+<div data-start="2023-12-03T14:05:00+0000" data-end="2023-12-03T14:25:00+0000" class="sched-entry track-General">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">9:05</span> - <span class="sched-end">9:25</span></span> <span class="sched-track General">General</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-hyperamp">Etherpad</a></span>; <span class="sched-q-and-a">Q&amp;A: <a href="https://emacsconf.org/current/hyperamp/room/">BBB</a></span>; <span class="sched-slug">id:hyperamp</span></div>
+<div class="sched-title"><a href="https://emacsconf.org/2023/talks/hyperamp">Top 10 ways Hyperbole amps up Emacs</a></div>
+ <div class="sched-speakers">Robert Weiner</div>
+
+</div>
+
+<div data-start="2023-12-03T14:40:00+0000" data-end="2023-12-03T15:00:00+0000" class="sched-entry track-General">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">9:40</span> - <span class="sched-end">10:00</span></span> <span class="sched-track General">General</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-koutline">Etherpad</a></span>; <span class="sched-q-and-a">Q&amp;A: <a href="https://chat.emacsconf.org/?join=emacsconf">#emacsconf</a></span>; <span class="sched-slug">id:koutline</span></div>
+<div class="sched-title"><a href="https://emacsconf.org/2023/talks/koutline">Using Koutline for stream of thought journaling</a></div>
+ <div class="sched-speakers">Matthew Jorgensen (PlasmaStrike)</div>
+
+</div>
+
+<div data-start="2023-12-03T15:10:00+0000" data-end="2023-12-03T15:20:00+0000" class="sched-entry track-General">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">10:10</span> - <span class="sched-end">10:20</span></span> <span class="sched-track General">General</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-parallel">Etherpad</a></span>; <span class="sched-q-and-a">Q&amp;A: <a href="https://emacsconf.org/current/parallel/room/">BBB</a></span>; <span class="sched-slug">id:parallel</span></div>
+<div class="sched-title"><a href="https://emacsconf.org/2023/talks/parallel">Parallel Text Replacement: Does P = NP?</a></div>
+ <div class="sched-speakers">Lovro, Valentino Picotti</div>
+
+</div>
+
+<div data-start="2023-12-03T15:35:00+0000" data-end="2023-12-03T15:45:00+0000" class="sched-entry track-General">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">10:35</span> - <span class="sched-end">10:45</span></span> <span class="sched-track General">General</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-eat">Etherpad</a></span>; <span class="sched-q-and-a">Q&amp;A: <a href="https://emacsconf.org/current/eat/room/">BBB</a></span>; <span class="sched-slug">id:eat</span></div>
+<div class="sched-title"><a href="https://emacsconf.org/2023/talks/eat">Eat and Eat powered Eshell, fast featureful terminal inside Emacs</a></div>
+ <div class="sched-speakers">Akib Azmain Turja (he/him)</div>
+
+</div>
+
+<div data-start="2023-12-03T16:00:00+0000" data-end="2023-12-03T16:20:00+0000" class="sched-entry track-General">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">11:00</span> - <span class="sched-end">11:20</span></span> <span class="sched-track General">General</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-poltys">Etherpad</a></span>; <span class="sched-q-and-a">Q&amp;A: <a href="https://emacsconf.org/current/poltys/room/">BBB</a></span>; <span class="sched-slug">id:poltys</span></div>
+<div class="sched-title"><a href="https://emacsconf.org/2023/talks/poltys">The browser in a buffer</a></div>
+ <div class="sched-speakers">Michael Bauer (he/him)</div>
+
+</div>
+
+<div data-start="2023-12-03T16:35:00+0000" data-end="2023-12-03T16:55:00+0000" class="sched-entry track-General">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">11:35</span> - <span class="sched-end">11:55</span></span> <span class="sched-track General">General</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-cubing">Etherpad</a></span>; <span class="sched-q-and-a">Q&amp;A: <a href="https://chat.emacsconf.org/?join=emacsconf">#emacsconf, speaker nick: wasamasa</a></span>; <span class="sched-slug">id:cubing</span></div>
+<div class="sched-title"><a href="https://emacsconf.org/2023/talks/cubing">Speedcubing in Emacs</a></div>
+ <div class="sched-speakers">Vasilij "wasamasa" Schneidermann (he/him)</div>
+
+</div>
+
+<div data-start="2023-12-03T18:00:00+0000" data-end="2023-12-03T18:40:00+0000" class="sched-entry track-General">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">1:00</span> - <span class="sched-end">1:40</span></span> <span class="sched-track General">General</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-emms">Etherpad</a></span>; <span class="sched-q-and-a">Q&amp;A: none</span>; <span class="sched-slug">id:emms</span></div>
+<div class="sched-title"><a href="https://emacsconf.org/2023/talks/emms">Emacs MultiMedia System (EMMS)</a></div>
+ <div class="sched-speakers">Yoni Rabkin</div>
+
+</div>
+
+<div data-start="2023-12-03T18:55:00+0000" data-end="2023-12-03T19:25:00+0000" class="sched-entry track-General">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">1:55</span> - <span class="sched-end">2:25</span></span> <span class="sched-track General">General</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-steno">Etherpad</a></span>; <span class="sched-q-and-a">Q&amp;A: none</span>; <span class="sched-slug">id:steno</span></div>
+<div class="sched-title"><a href="https://emacsconf.org/2023/talks/steno">Programming at 200 wpm</a></div>
+ <div class="sched-speakers">Daniel Alejandro Tapia (I like "thou" for the second person and "ou" for the third)</div>
+
+</div>
+
+<div data-start="2023-12-03T19:35:00+0000" data-end="2023-12-03T19:45:00+0000" class="sched-entry track-General">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">2:35</span> - <span class="sched-end">2:45</span></span> <span class="sched-track General">General</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-mentor">Etherpad</a></span>; <span class="sched-q-and-a">Q&amp;A: <a href="https://emacsconf.org/current/mentor/room/">BBB</a></span>; <span class="sched-slug">id:mentor</span></div>
+<div class="sched-title"><a href="https://emacsconf.org/2023/talks/mentor">Mentoring VS-Coders as an Emacsian (or How to show not tell people about the wonders of Emacs)</a></div>
+ <div class="sched-speakers">Jeremy Friesen (he/him)</div>
+
+</div>
+
+<div data-start="2023-12-03T20:00:00+0000" data-end="2023-12-03T20:10:00+0000" class="sched-entry track-General">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">3:00</span> - <span class="sched-end">3:10</span></span> <span class="sched-track General">General</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-hn">Etherpad</a></span>; <span class="sched-q-and-a">Q&amp;A: <a href="https://emacsconf.org/current/hn/room/">BBB</a></span>; <span class="sched-slug">id:hn</span></div>
+<div class="sched-title"><a href="https://emacsconf.org/2023/talks/hn">The many ways to browse Hacker News from Emacs</a></div>
+ <div class="sched-speakers">Mickael Kerjean</div>
+
+</div>
+
+<div data-start="2023-12-03T20:25:00+0000" data-end="2023-12-03T21:05:00+0000" class="sched-entry track-General">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">3:25</span> - <span class="sched-end">4:05</span></span> <span class="sched-track General">General</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-web">Etherpad</a></span>; <span class="sched-q-and-a">Q&amp;A: <a href="https://emacsconf.org/current/web/room/">BBB</a></span>; <span class="sched-slug">id:web</span></div>
+<div class="sched-title"><a href="https://emacsconf.org/2023/talks/web">Emacs saves the Web</a></div>
+ <div class="sched-speakers">Yuchen Pei (he/him)</div>
+
+</div>
+
+<div data-start="2023-12-03T21:20:00+0000" data-end="2023-12-03T21:40:00+0000" class="sched-entry track-General">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">4:20</span> - <span class="sched-end">4:40</span></span> <span class="sched-track General">General</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-sharing">Etherpad</a></span>; <span class="sched-q-and-a">Q&amp;A: <a href="https://emacsconf.org/current/sharing/room/">BBB</a></span>; <span class="sched-slug">id:sharing</span></div>
+<div class="sched-title"><a href="https://emacsconf.org/2023/talks/sharing">Sharing Emacs is Caring Emacs: Emacs education and why I embraced video</a></div>
+ <div class="sched-speakers">Jacob Boxerman (he/him)</div>
+
+</div>
+
+<div data-start="2023-12-03T14:00:00+0000" data-end="2023-12-03T14:05:00+0000" class="sched-entry track-General">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">9:00</span> - <span class="sched-end">9:05</span></span> <span class="sched-track General">General</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-sun-open">Etherpad</a></span>; <span class="sched-q-and-a">Q&amp;A: none</span>; <span class="sched-slug">id:sun-open</span></div>
+<div class="sched-title"><a href="https://emacsconf.org/2023/talks/sun-open">Sunday opening remarks</a></div>
+
+
+</div>
+
+<div data-start="2023-12-03T21:55:00+0000" data-end="2023-12-03T22:05:00+0000" class="sched-entry track-General">
+<div class="sched-meta"><span class="sched-time"><span class="sched-start">4:55</span> - <span class="sched-end">5:05</span></span> <span class="sched-track General">General</span> <span class="sched-pad"> <a href="https://pad.emacsconf.org/2023-sun-close">Etherpad</a></span>; <span class="sched-q-and-a">Q&amp;A: none</span>; <span class="sched-slug">id:sun-close</span></div>
+<div class="sched-title"><a href="https://emacsconf.org/2023/talks/sun-close">Sunday closing remarks</a></div>
+
+
+</div>
+
+</div>
diff --git a/2023/watch/info.md b/2023/watch/info.md
new file mode 100644
index 00000000..510226ae
--- /dev/null
+++ b/2023/watch/info.md
@@ -0,0 +1,7 @@
+[[!sidebar content=""]]<!-- Automatically generated by emacsconf-publish-watch-pages -->
+
+<h2>Tracks</h2><table width="100%"><tr><th>Watch page</th><th>IRC channel (libera.chat)</th><th>URL for streaming player (ex: mpv, vlc, ffplay)</th><th>Low res</th></tr>
+<tr><td><div class="sched-track General"><a href="/2023/watch/gen/">General</a></div></td><td><a href="https://chat.emacsconf.org/?join=emacsconf,emacsconf-org,emacsconf-accessible,emacsconf-dev,emacsconf-gen">emacsconf-gen</a></td><td><a href="https://live0.emacsconf.org/gen.webm">https://live0.emacsconf.org/gen.webm</a></td><td><a href="https://live0.emacsconf.org/gen-480p.webm">gen-480p.webm</a></tr>
+<tr><td><div class="sched-track Development"><a href="/2023/watch/dev/">Development</a></div></td><td><a href="https://chat.emacsconf.org/?join=emacsconf,emacsconf-org,emacsconf-accessible,emacsconf-gen,emacsconf-dev">emacsconf-dev</a></td><td><a href="https://live0.emacsconf.org/dev.webm">https://live0.emacsconf.org/dev.webm</a></td><td><a href="https://live0.emacsconf.org/dev-480p.webm">dev-480p.webm</a></tr></table>
+
+<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="" fill="peachpuff"></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="peachpuff"></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="peachpuff"></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="peachpuff"></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="" fill="peachpuff"></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/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="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(209,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> taming</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="peachpuff"></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="peachpuff"></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="peachpuff"></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="peachpuff"></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="peachpuff"></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="peachpuff"></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="peachpuff"></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="5,5,5" fill="peachpuff"></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:05- 4:45 Emacs core development: how it works</title> <rect x="666" y="15" opacity="0.8" width="62" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(726,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:00- 5:10 Saturday closing remarks</title> <rect x="752" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(765,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="skyblue"></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="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="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></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="skyblue"></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="skyblue"></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="" fill="skyblue"></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- 2:40 REPLs in strange places: Lua, LaTeX, LPeg, LPegRex, TikZ</title> <rect x="470" y="75" opacity="0.8" width="62" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(530,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/emacsconf" title="EmacsConf.org: How we use Org Mode and TRAMP to organize and run a multi-track conference" data-slug="emacsconf"> <title> 2:50- 3:10 EmacsConf.org: How we use Org Mode and TRAMP to organize and run a multi-track conference</title> <rect x="549" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(578,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> <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> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.8" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,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="peachpuff"></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="peachpuff"></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: 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="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(122,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="peachpuff"></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="peachpuff"></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="peachpuff"></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="peachpuff"></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 at 200 wpm" data-slug="steno"> <title> 1:55- 2:25 Programming at 200 wpm</title> <rect x="462" y="15" opacity="0.8" width="47" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></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="peachpuff"></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/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="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(577,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hn</text></g></a> <a href="https://emacsconf.org/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="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(663,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> 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="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(719,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:55- 5:05 Sunday closing remarks</title> <rect x="745" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(758,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="skyblue"></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/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="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(178,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/world" title="GNU Emacs: A World of Possibilities" data-slug="world"> <title> 11:10-11:30 GNU Emacs: A World of Possibilities</title> <rect x="203" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(232,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:45-11:55 A modern Emacs look-and-feel without pain</title> <rect x="258" y="75" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(271,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/gc" title="emacs-gc-stats: Does garbage collection actually slow down Emacs?" data-slug="gc"> <title> 1:00- 1:20 emacs-gc-stats: Does garbage collection actually slow down Emacs?</title> <rect x="376" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(405,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:35- 2:15 hyperdrive.el: Peer-to-peer filesystem in Emacs</title> <rect x="431" y="75" opacity="0.8" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(491,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:30- 2:40 Writing a language server in OCaml for Emacs, fun, and profit</title> <rect x="517" y="75" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,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/windows" title="Windows into Freedom" data-slug="windows"> <title> 2:55- 3:35 Windows into Freedom</title> <rect x="556" y="75" opacity="0.8" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(616,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> windows</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> 3:50- 4:10 The Emacsen family, the design of an Emacs and the importance of Lisp</title> <rect x="643" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(672,133)"> <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="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> \ No newline at end of file