summaryrefslogtreecommitdiffstats
path: root/2023
diff options
context:
space:
mode:
Diffstat (limited to '2023')
-rw-r--r--2023/captions/emacsconf-2023-emacsconf--emacsconforg-how-we-use-org-mode-and-tramp-to-organize-and-run-a-multitrack-conference--sacha-chua--main--chapters.vtt53
-rw-r--r--2023/captions/emacsconf-2023-emacsconf--emacsconforg-how-we-use-org-mode-and-tramp-to-organize-and-run-a-multitrack-conference--sacha-chua--main.vtt1140
-rw-r--r--2023/info/adventure-before.md2
-rw-r--r--2023/info/collab-before.md2
-rw-r--r--2023/info/doc-before.md2
-rw-r--r--2023/info/emacsen-before.md2
-rw-r--r--2023/info/eval-before.md2
-rw-r--r--2023/info/hyperdrive-before.md4
-rw-r--r--2023/info/matplotllm-before.md2
-rw-r--r--2023/info/nabokov-before.md2
-rw-r--r--2023/info/overlay-before.md2
-rw-r--r--2023/info/scheme-before.md2
-rw-r--r--2023/info/teaching-before.md2
-rw-r--r--2023/info/world-before.md2
-rw-r--r--2023/schedule-details.md18
-rw-r--r--2023/talks/hyperdrive.md4
16 files changed, 1097 insertions, 144 deletions
diff --git a/2023/captions/emacsconf-2023-emacsconf--emacsconforg-how-we-use-org-mode-and-tramp-to-organize-and-run-a-multitrack-conference--sacha-chua--main--chapters.vtt b/2023/captions/emacsconf-2023-emacsconf--emacsconforg-how-we-use-org-mode-and-tramp-to-organize-and-run-a-multitrack-conference--sacha-chua--main--chapters.vtt
new file mode 100644
index 00000000..939155bd
--- /dev/null
+++ b/2023/captions/emacsconf-2023-emacsconf--emacsconforg-how-we-use-org-mode-and-tramp-to-organize-and-run-a-multitrack-conference--sacha-chua--main--chapters.vtt
@@ -0,0 +1,53 @@
+WEBVTT
+
+
+00:00:00.000 --> 00:00:16.679
+Intro
+
+00:00:16.680 --> 00:01:09.399
+Reasons
+
+00:01:09.400 --> 00:02:09.159
+Information
+
+00:02:09.160 --> 00:03:53.119
+Properties
+
+00:03:53.120 --> 00:04:29.119
+Timezones
+
+00:04:29.120 --> 00:05:39.079
+Scheduling
+
+00:05:42.360 --> 00:06:48.119
+Templates
+
+00:06:48.120 --> 00:08:03.959
+Wiki
+
+00:08:03.960 --> 00:08:27.679
+Etherpad
+
+00:08:27.680 --> 00:09:05.479
+E-mail
+
+00:09:05.480 --> 00:10:07.759
+BigBlueButton web conferences
+
+00:10:07.760 --> 00:10:36.199
+Shortcuts
+
+00:10:36.200 --> 00:11:03.319
+Logbook
+
+00:11:03.320 --> 00:12:12.519
+Captions
+
+00:12:12.520 --> 00:13:10.839
+Crontabs and playing the talks
+
+00:13:10.840 --> 00:13:49.639
+Transitions
+
+00:13:49.640 --> 00:15:05.200
+Wrapping up
diff --git a/2023/captions/emacsconf-2023-emacsconf--emacsconforg-how-we-use-org-mode-and-tramp-to-organize-and-run-a-multitrack-conference--sacha-chua--main.vtt b/2023/captions/emacsconf-2023-emacsconf--emacsconforg-how-we-use-org-mode-and-tramp-to-organize-and-run-a-multitrack-conference--sacha-chua--main.vtt
index 5b2a69b1..b91f97d2 100644
--- a/2023/captions/emacsconf-2023-emacsconf--emacsconforg-how-we-use-org-mode-and-tramp-to-organize-and-run-a-multitrack-conference--sacha-chua--main.vtt
+++ b/2023/captions/emacsconf-2023-emacsconf--emacsconforg-how-we-use-org-mode-and-tramp-to-organize-and-run-a-multitrack-conference--sacha-chua--main.vtt
@@ -1,182 +1,1082 @@
WEBVTT captioned by sachac
+NOTE Intro
-00:00:00.000 --> 00:00:00.999
-emacsconf 00 456789 123456789 123456789 123456789 123456789
+00:00:00.000 --> 00:00:04.839
+Hi, I'm Sacha Chua. This presentation is a quick tour
-00:00:01.000 --> 00:00:00.999
-emacsconf 01 456789 123456789 123456789 123456789 123456789
+00:00:04.840 --> 00:00:07.959
+of some of the things we do to run EmacsConf.
-00:00:02.000 --> 00:00:01.999
-emacsconf 02 456789 123456789 123456789 123456789 123456789
+00:00:07.960 --> 00:00:12.239
+Since 2019, we've run it as an entirely online conference,
-00:00:03.000 --> 00:00:02.999
-emacsconf 03 456789 123456789 123456789 123456789 123456789
+00:00:12.240 --> 00:00:14.999
+and we do as much of the organization as possible
-00:00:04.000 --> 00:00:03.999
-emacsconf 04 456789 123456789 123456789 123456789 123456789
+00:00:15.000 --> 00:00:16.679
+within Emacs itself.
-00:00:05.000 --> 00:00:04.999
-emacsconf 05 456789 123456789 123456789 123456789 123456789
+NOTE Reasons
-00:00:06.000 --> 00:00:05.999
-emacsconf 06 456789 123456789 123456789 123456789 123456789
+00:00:16.680 --> 00:00:19.759
+I have three reasons for making this presentation.
-00:00:07.000 --> 00:00:06.999
-emacsconf 07 456789 123456789 123456789 123456789 123456789
+00:00:19.760 --> 00:00:22.759
+The first is entirely selfish: I need to figure out
-00:00:08.000 --> 00:00:07.999
-emacsconf 08 456789 123456789 123456789 123456789 123456789
+00:00:22.760 --> 00:00:25.359
+all the stuff I built for last year's EmacsConf,
-00:00:09.000 --> 00:00:08.999
-emacsconf 09 456789 123456789 123456789 123456789 123456789
+00:00:25.360 --> 00:00:28.079
+since it was a bit of a crazy scramble.
-00:00:10.000 --> 00:00:09.999
-emacsconf 10 456789 123456789 123456789 123456789 123456789
+00:00:28.080 --> 00:00:30.159
+The second is that I want to show people
-00:00:11.000 --> 00:00:10.999
-emacsconf 11 456789 123456789 123456789 123456789 123456789
+00:00:30.160 --> 00:00:33.239
+the process of thinking about a complex project,
-00:00:12.000 --> 00:00:11.999
-emacsconf 12 456789 123456789 123456789 123456789 123456789
+00:00:33.240 --> 00:00:35.879
+looking for little things to automate in Emacs,
-00:00:13.000 --> 00:00:12.999
-emacsconf 13 456789 123456789 123456789 123456789 123456789
+00:00:35.880 --> 00:00:38.439
+and building things up from small pieces.
-00:00:14.000 --> 00:00:13.999
-emacsconf 14 456789 123456789 123456789 123456789 123456789
+00:00:38.440 --> 00:00:39.799
+Maybe you'll get some ideas
-00:00:15.000 --> 00:00:14.999
-emacsconf 15 456789 123456789 123456789 123456789 123456789
+00:00:39.800 --> 00:00:42.759
+and start building tools for yourself, too.
-00:00:16.000 --> 00:00:15.999
-emacsconf 16 456789 123456789 123456789 123456789 123456789
+00:00:42.760 --> 00:00:47.039
+The third is that you find any of these little tools interesting,
-00:00:17.000 --> 00:00:16.999
-emacsconf 17 456789 123456789 123456789 123456789 123456789
+00:00:47.040 --> 00:00:49.439
+I want to point you to blog posts and source code
-00:00:18.000 --> 00:00:17.999
-emacsconf 18 456789 123456789 123456789 123456789 123456789
+00:00:49.440 --> 00:00:51.239
+where you can find out more.
-00:00:19.000 --> 00:00:18.999
-emacsconf 19 456789 123456789 123456789 123456789 123456789
+00:00:51.240 --> 00:00:52.559
+That way, you don't need to try
-00:00:20.000 --> 00:00:19.999
-emacsconf 20 456789 123456789 123456789 123456789 123456789
+00:00:52.560 --> 00:00:55.399
+to read and understand everything quickly.
-00:00:21.000 --> 00:00:20.999
-emacsconf 21 456789 123456789 123456789 123456789 123456789
+00:00:55.400 --> 00:00:57.719
+You can find this presentation and other links
-00:00:22.000 --> 00:00:21.999
-emacsconf 22 456789 123456789 123456789 123456789 123456789
+00:00:57.720 --> 00:01:04.439
+on the talk page at emacsconf.org/2023/talks/emacsconf.
-00:00:23.000 --> 00:00:22.999
-emacsconf 23 456789 123456789 123456789 123456789 123456789
+00:01:04.440 --> 00:01:06.319
+There are a lot of different parts,
-00:00:24.000 --> 00:00:23.999
-emacsconf 24 456789 123456789 123456789 123456789 123456789
+00:01:06.320 --> 00:01:09.399
+so I'll try to use this map to help make sense of it all.
-00:00:25.000 --> 00:00:24.999
-emacsconf 25 456789 123456789 123456789 123456789 123456789
+NOTE Information
-00:00:26.000 --> 00:00:25.999
-emacsconf 26 456789 123456789 123456789 123456789 123456789
+00:01:09.400 --> 00:01:11.199
+There's so much information to work with,
-00:00:27.000 --> 00:00:26.999
-emacsconf 27 456789 123456789 123456789 123456789 123456789
+00:01:11.200 --> 00:01:14.919
+so it probably doesn't surprise you that we use Org Mode a lot.
-00:00:28.000 --> 00:00:27.999
-emacsconf 28 456789 123456789 123456789 123456789 123456789
+00:01:14.920 --> 00:01:17.999
+Most of the conference coordination happens over e-mail,
-00:00:29.000 --> 00:00:28.999
-emacsconf 29 456789 123456789 123456789 123456789 123456789
+00:01:18.000 --> 00:01:20.639
+which I can quickly search with notmuch.
-00:00:30.000 --> 00:00:29.999
-emacsconf 30 456789 123456789 123456789 123456789 123456789
+00:01:20.640 --> 00:01:22.359
+Some of the information is private,
-00:00:31.000 --> 00:00:30.999
-emacsconf 31 456789 123456789 123456789 123456789 123456789
+00:01:22.360 --> 00:01:24.519
+like emergency contact numbers.
-00:00:32.000 --> 00:00:31.999
-emacsconf 32 456789 123456789 123456789 123456789 123456789
+00:01:24.520 --> 00:01:28.079
+We store the talk information in a private Org file.
-00:00:33.000 --> 00:00:32.999
-emacsconf 33 456789 123456789 123456789 123456789 123456789
+00:01:28.080 --> 00:01:30.079
+I try to put as much as possible
-00:00:34.000 --> 00:00:33.999
-emacsconf 34 456789 123456789 123456789 123456789 123456789
+00:01:30.080 --> 00:01:32.319
+into our public organizers' notebook
-00:00:35.000 --> 00:00:34.999
-emacsconf 35 456789 123456789 123456789 123456789 123456789
+00:01:32.320 --> 00:01:35.359
+so that processes and decisions are documented.
-00:00:36.000 --> 00:00:35.999
-emacsconf 36 456789 123456789 123456789 123456789 123456789
+00:01:35.360 --> 00:01:36.919
+We need a public website.
-00:00:37.000 --> 00:00:36.999
-emacsconf 37 456789 123456789 123456789 123456789 123456789
+00:01:36.920 --> 00:01:39.039
+We use Ikiwiki to make the webpages
-00:00:38.000 --> 00:00:37.999
-emacsconf 38 456789 123456789 123456789 123456789 123456789
+00:01:39.040 --> 00:01:41.119
+because we can work with plain text files
-00:00:39.000 --> 00:00:38.999
-emacsconf 39 456789 123456789 123456789 123456789 123456789
+00:01:41.120 --> 00:01:42.599
+in a Git repository.
-00:00:40.000 --> 00:00:39.999
-emacsconf 40 456789 123456789 123456789 123456789 123456789
+00:01:42.600 --> 00:01:45.399
+We also make a few static HTML pages
-00:00:41.000 --> 00:00:40.999
-emacsconf 41 456789 123456789 123456789 123456789 123456789
+00:01:45.400 --> 00:01:48.119
+for things where Ikiwiki is a little awkward.
-00:00:42.000 --> 00:00:41.999
-emacsconf 42 456789 123456789 123456789 123456789 123456789
+00:01:48.120 --> 00:01:50.519
+We post announcements to mailing lists.
-00:00:43.000 --> 00:00:42.999
-emacsconf 43 456789 123456789 123456789 123456789 123456789
+00:01:50.520 --> 00:01:53.159
+We also receive submissions in a private mailing list
-00:00:44.000 --> 00:00:43.999
-emacsconf 44 456789 123456789 123456789 123456789 123456789
+00:01:53.160 --> 00:01:55.639
+so that a number of people can review them.
-00:00:45.000 --> 00:00:44.999
-emacsconf 45 456789 123456789 123456789 123456789 123456789
+00:01:55.640 --> 00:01:56.839
+We have a backstage area
-00:00:46.000 --> 00:00:45.999
-emacsconf 46 456789 123456789 123456789 123456789 123456789
+00:01:56.840 --> 00:01:59.959
+for sharing files with volunteers and speakers.
-00:00:47.000 --> 00:00:46.999
-emacsconf 47 456789 123456789 123456789 123456789 123456789
+00:01:59.960 --> 00:02:03.119
+We share those files publicly when the talk goes live.
-00:00:48.000 --> 00:00:47.999
-emacsconf 48 456789 123456789 123456789 123456789 123456789
+00:02:03.120 --> 00:02:06.319
+And there's all the other stuff that goes into running EmacsConf,
-00:00:49.000 --> 00:00:48.999
-emacsconf 49 456789 123456789 123456789 123456789 123456789
+00:02:06.320 --> 00:02:09.159
+like shell scripts and configuration files.
-00:00:50.000 --> 00:00:49.999
-emacsconf 50 456789 123456789 123456789 123456789 123456789
+NOTE Properties
-00:00:51.000 --> 00:00:50.999
-emacsconf 51 456789 123456789 123456789 123456789 123456789
+00:02:09.160 --> 00:02:12.319
+First, speakers propose a talk by sending an e-mail.
-00:00:52.000 --> 00:00:51.999
-emacsconf 52 456789 123456789 123456789 123456789 123456789
+00:02:12.320 --> 00:02:15.799
+We take the info from that e-mail and store it in Org properties
-00:00:53.000 --> 00:00:52.999
-emacsconf 53 456789 123456789 123456789 123456789 123456789
+00:02:15.800 --> 00:02:18.199
+so that we can work with it later.
-00:00:54.000 --> 00:00:53.999
-emacsconf 54 456789 123456789 123456789 123456789 123456789
+00:02:18.200 --> 00:02:20.239
+Every talk is identified with an ID,
-00:00:55.000 --> 00:00:54.999
-emacsconf 55 456789 123456789 123456789 123456789 123456789
+00:02:20.240 --> 00:02:24.119
+but since `:ID:` and `:CUSTOM_ID:` have special meanings for Org,
-00:00:56.000 --> 00:00:55.999
-emacsconf 56 456789 123456789 123456789 123456789 123456789
+00:02:24.120 --> 00:02:25.399
+I use `:SLUG:` as the keyword.
-00:00:57.000 --> 00:00:56.999
-emacsconf 57 456789 123456789 123456789 123456789 123456789
+00:02:25.400 --> 00:02:27.759
+Speakers' names go into the `:NAME:` property,
-00:00:58.000 --> 00:00:57.999
-emacsconf 58 456789 123456789 123456789 123456789 123456789
+00:02:27.760 --> 00:02:29.799
+and a short version goes into `:NAME_SHORT:`
-00:00:59.000 --> 00:00:58.999
-emacsconf 59 456789 123456789 123456789 123456789 123456789
+00:02:29.800 --> 00:02:32.199
+so that we can include that in a greeting.
+
+00:02:32.200 --> 00:02:34.439
+If people follow the template closely...
+
+00:02:34.440 --> 00:02:38.039
+...we can even automatically fill in the Org subtree for their talk.
+
+00:02:38.040 --> 00:02:40.799
+We can use regular expressions to recognize the text
+
+00:02:40.800 --> 00:02:42.879
+and extract the properties.
+
+00:02:42.880 --> 00:02:45.359
+Other properties need to be set by hand.
+
+00:02:45.360 --> 00:02:47.559
+I often mess things up when I retype them.
+
+00:02:47.560 --> 00:02:51.039
+To avoid typos, I have a function that sets a property
+
+00:02:51.040 --> 00:02:55.079
+based on the current region. I bind that to `C-c C-x p`.
+
+00:02:55.080 --> 00:02:58.599
+That makes it much easier to set properties
+
+00:02:58.600 --> 00:03:00.639
+that couldn't automatically be recognized.
+
+00:03:00.640 --> 00:03:04.519
+Sometimes it makes sense to dynamically generate a property
+
+00:03:04.520 --> 00:03:07.679
+and then edit it, like with filenames.
+
+00:03:07.680 --> 00:03:10.399
+We like to name all the talk files the same way,
+
+00:03:10.400 --> 00:03:14.439
+but sometimes special characters in talk titles or speaker names
+
+00:03:14.440 --> 00:03:17.839
+need a little tweaking. I'll put that in a `:FILE_PREFIX:` property
+
+00:03:17.840 --> 00:03:19.439
+so I can edit it.
+
+00:03:19.440 --> 00:03:22.799
+An Org property match can map over all the talk entries
+
+00:03:22.800 --> 00:03:25.439
+that don't have `:FILE_PREFIX:` defined.
+
+00:03:25.440 --> 00:03:29.199
+We can use that `:FILE_PREFIX:` to rename files from Emacs.
+
+00:03:29.200 --> 00:03:32.639
+With that property, we can then rename files using that prefix,
+
+00:03:32.640 --> 00:03:35.639
+some extra text, and the file extension.
+
+00:03:35.640 --> 00:03:38.879
+Sometimes it's easier to work with the data outside Emacs,
+
+00:03:38.880 --> 00:03:42.119
+like when I want to rename files with a shell script.
+
+00:03:42.120 --> 00:03:45.319
+If I export a subset of the data as JSON
+
+00:03:45.320 --> 00:03:48.959
+or JavaScript Object Notation, using `json-encode`...
+
+00:03:48.960 --> 00:03:51.119
+... then I can extract the data with `jq`
+
+00:03:51.120 --> 00:03:53.119
+and use it in shell scripts.
+
+NOTE Timezones
+
+00:03:53.120 --> 00:03:55.639
+Another example of semi-structured information
+
+00:03:55.640 --> 00:03:56.759
+is speaker availability.
+
+00:03:56.760 --> 00:03:59.319
+We have speakers from all over the world,
+
+00:03:59.320 --> 00:04:02.599
+so we try to schedule live Q&A sessions when they're around.
+
+00:04:02.600 --> 00:04:04.559
+That means working with timezones.
+
+00:04:04.560 --> 00:04:08.439
+Completion makes it much easier to set the timezone property
+
+00:04:08.440 --> 00:04:10.599
+without worrying about typos.
+
+00:04:10.600 --> 00:04:14.359
+We can take advantage of the timezone list from the tzc package,
+
+00:04:14.360 --> 00:04:16.679
+which works with Unix timezone definitions.
+
+00:04:16.680 --> 00:04:19.919
+Then we can convert times using Emacs.
+
+00:04:19.920 --> 00:04:22.639
+Using a standard format to encode the availability
+
+00:04:22.640 --> 00:04:24.399
+makes it easier to parse.
+
+00:04:24.400 --> 00:04:27.439
+I can use those availability constraints to report errors
+
+00:04:27.440 --> 00:04:29.119
+when I'm experimenting with the schedule.
+
+NOTE Scheduling
+
+00:04:29.120 --> 00:04:30.759
+Now that I have the availability information,
+
+00:04:30.760 --> 00:04:31.919
+I can think about scheduling.
+
+00:04:34.480 --> 00:04:38.239
+When we were planning EmacsConf 2022, the schedule was so full,
+
+00:04:38.240 --> 00:04:40.839
+I wanted to see if we could make it more manageable
+
+00:04:40.840 --> 00:04:43.039
+by splitting it up into two tracks.
+
+00:04:43.040 --> 00:04:45.919
+It was hard to think about times with just a table.
+
+00:04:45.920 --> 00:04:48.199
+I was able to turn the schedule information
+
+00:04:48.200 --> 00:04:51.279
+into an SVG to convince the other organizers
+
+00:04:51.280 --> 00:04:53.359
+to get on board with this crazy plan.
+
+00:04:53.360 --> 00:04:54.959
+And the nice thing about SVGs is that
+
+00:04:54.960 --> 00:04:57.519
+they can even be clickable on the wiki.
+
+00:04:57.520 --> 00:05:00.639
+Being able to quickly make SVGs of different schedules
+
+00:05:00.640 --> 00:05:04.199
+also helped me test scheduling ideas and think out loud.
+
+00:05:04.200 --> 00:05:06.879
+I could change the time between talks, the order of the talks,
+
+00:05:06.880 --> 00:05:08.599
+and even what tracks the talks were in.
+
+00:05:08.600 --> 00:05:10.719
+This was helpful when I needed to include
+
+00:05:10.720 --> 00:05:13.239
+some late submissions or availability changes
+
+00:05:13.240 --> 00:05:15.599
+and I wanted to ask speakers what they thought.
+
+00:05:15.600 --> 00:05:18.799
+They could see the different schedule options themselves.
+
+00:05:18.800 --> 00:05:22.679
+It's really nice to have Emacs Lisp support for working with SVGs.
+
+00:05:22.680 --> 00:05:25.399
+I also love how I can have an Emacs Lisp block
+
+00:05:25.400 --> 00:05:28.599
+in an Org Mode document that updates an SVG
+
+00:05:28.600 --> 00:05:31.279
+that I can view right there in my text editor.
+
+00:05:31.280 --> 00:05:34.799
+Setting the timezone lets me automatically translate times
+
+00:05:34.800 --> 00:05:36.919
+to the speaker's local timezone when I e-mail them.
+
+00:05:36.920 --> 00:05:39.079
+That's mostly a matter of using `format-time-string` with a timezone.
+
+NOTE Templates
+
+00:05:42.360 --> 00:05:43.159
+There's also a lot of text to work with,
+
+00:05:43.160 --> 00:05:45.119
+which means templates are super handy.
+
+00:05:45.120 --> 00:05:48.119
+There are a number of templating functions for Emacs Lisp,
+
+00:05:48.120 --> 00:05:52.959
+like the built-in `tempo.el` or `s-lex-format` from `s.el`.
+
+00:05:52.960 --> 00:05:54.439
+I ended up writing something
+
+00:05:54.440 --> 00:05:57.279
+that works with property lists (plists) instead,
+
+00:05:57.280 --> 00:06:02.199
+since we use plists all over the emacsconf-el library.
+
+00:06:02.200 --> 00:06:03.999
+All it does is replace `${variable}`
+
+00:06:04.000 --> 00:06:05.519
+with the value from a property list.
+
+00:06:05.520 --> 00:06:07.559
+I use this mostly because I have a hard time
+
+00:06:07.560 --> 00:06:11.079
+keeping track of which `%s` is which when I use `format`,
+
+00:06:11.080 --> 00:06:13.919
+and it's hard to get an overall view if I just use `concat`.
+
+00:06:13.920 --> 00:06:17.599
+The code looks for the properties and replaces them with the values.
+
+00:06:17.600 --> 00:06:20.919
+I just find it a little easier to think about sometimes.
+
+00:06:20.920 --> 00:06:24.079
+Getting all the information is just a matter of going over
+
+00:06:24.080 --> 00:06:26.999
+all the talk entries using `org-map-entries`.
+
+00:06:27.000 --> 00:06:30.319
+This builds the talk info by running a bunch of functions.
+
+00:06:30.320 --> 00:06:33.439
+Some functions get the information from the Org file.
+
+00:06:33.440 --> 00:06:36.359
+Other functions use the info already collected.
+
+00:06:36.360 --> 00:06:39.039
+This can take a while to do again and again.
+
+00:06:39.040 --> 00:06:41.479
+It's useful to `memoize` this function
+
+00:06:41.480 --> 00:06:43.239
+when I know I'll be using it a lot,
+
+00:06:43.240 --> 00:06:45.679
+like when I export the organizers notebook.
+
+00:06:45.680 --> 00:06:48.119
+Memoize caches recent values.
+
+NOTE Wiki
+
+00:06:48.120 --> 00:06:50.239
+We combine this templating function
+
+00:06:50.240 --> 00:06:51.479
+with the talk information
+
+00:06:51.480 --> 00:06:53.119
+to fill in the conference wiki,
+
+00:06:53.120 --> 00:06:56.279
+since that's a matter of writing templated strings to files.
+
+00:06:56.280 --> 00:06:58.279
+The talk pages are generated once
+
+00:06:58.280 --> 00:07:00.279
+and then left alone for manual editing,
+
+00:07:00.280 --> 00:07:02.399
+while the navigation is regenerated
+
+00:07:02.400 --> 00:07:04.199
+every time we change the details.
+
+00:07:04.200 --> 00:07:05.799
+Here are some examples
+
+00:07:05.800 --> 00:07:07.319
+of how we fill in the conference wiki.
+
+00:07:07.320 --> 00:07:10.959
+We put in the format of the talk, how Q&A works,
+
+00:07:10.960 --> 00:07:12.319
+and what the status is.
+
+00:07:12.320 --> 00:07:14.959
+Once the talk is live, we include the video
+
+00:07:14.960 --> 00:07:16.479
+and the links to the files, too.
+
+00:07:16.480 --> 00:07:18.719
+The code is a little bit long,
+
+00:07:18.720 --> 00:07:20.079
+but the important part is that
+
+00:07:20.080 --> 00:07:22.639
+we fill in a plist with the values we calculate,
+
+00:07:22.640 --> 00:07:26.159
+and then we can use `emacsconf-replace-plist-in-string`
+
+00:07:26.160 --> 00:07:27.719
+to put that all together.
+
+00:07:27.720 --> 00:07:30.079
+The schedule is a little more complicated.
+
+00:07:30.080 --> 00:07:32.079
+I wrote an Ikiwiki directive
+
+00:07:32.080 --> 00:07:33.839
+so that the markup is more manageable,
+
+00:07:33.840 --> 00:07:36.159
+and the Emacs Lisp function uses that.
+
+00:07:36.160 --> 00:07:40.399
+The Ikiwiki directive takes all the data and turns it into HTML...
+
+00:07:40.400 --> 00:07:42.959
+...so we can use Emacs Lisp to iterate over
+
+00:07:42.960 --> 00:07:44.679
+a slightly smaller property list
+
+00:07:44.680 --> 00:07:47.479
+and put them into the format Ikiwiki expects.
+
+00:07:47.480 --> 00:07:50.079
+It's nice to be able to navigate between talks
+
+00:07:50.080 --> 00:07:52.319
+without going back to the schedule page each time.
+
+00:07:52.320 --> 00:07:55.399
+This is handled by keeping two extra copies of the list:
+
+00:07:55.400 --> 00:07:57.319
+one with the first talk popped off,
+
+00:07:57.320 --> 00:08:00.159
+and one with an extra element added to the beginning.
+
+00:08:00.160 --> 00:08:02.439
+Then we can use the heads of those lists
+
+00:08:02.440 --> 00:08:03.959
+for next/previous links.
+
+NOTE Etherpad
+
+00:08:03.960 --> 00:08:06.679
+Links to the next talks are also handy
+
+00:08:06.680 --> 00:08:08.639
+on the collaborative Etherpad documents
+
+00:08:08.640 --> 00:08:12.039
+that we use for collecting questions, answers, and notes
+
+00:08:12.040 --> 00:08:12.839
+during each talk.
+
+00:08:12.840 --> 00:08:14.679
+Etherpad has an API...
+
+00:08:14.680 --> 00:08:17.319
+...so I can start the pads off with a template
+
+00:08:17.320 --> 00:08:18.559
+before the conference.
+
+00:08:18.560 --> 00:08:21.239
+I don't want to accidentally overwrite a pad
+
+00:08:21.240 --> 00:08:22.679
+that has been manually edited.
+
+00:08:22.680 --> 00:08:25.719
+We can save the timestamp of the last modification
+
+00:08:25.720 --> 00:08:27.679
+and then compare it before overwriting.
+
+NOTE E-mail
+
+00:08:27.680 --> 00:08:30.839
+Templates are also very handy when it comes to e-mail.
+
+00:08:30.840 --> 00:08:33.599
+Sometimes we send e-mails one at a time,
+
+00:08:33.600 --> 00:08:35.199
+like when we let a speaker know
+
+00:08:35.200 --> 00:08:36.599
+that we've received their proposal.
+
+00:08:36.600 --> 00:08:39.559
+That's mostly a matter of plugging the talk's properties
+
+00:08:39.560 --> 00:08:41.119
+into the right places in the template.
+
+00:08:41.120 --> 00:08:44.799
+Sometimes we send e-mails to lots of speakers at the same time,
+
+00:08:44.800 --> 00:08:47.999
+like when we send them instructions for uploading their files.
+
+00:08:48.000 --> 00:08:51.439
+Instead of sending one e-mail and Bcc-ing everyone,
+
+00:08:51.440 --> 00:08:53.479
+or sending people multiple e-mails
+
+00:08:53.480 --> 00:08:54.999
+because they have multiple talks,
+
+00:08:55.000 --> 00:08:57.559
+I like to draft these as individual e-mails
+
+00:08:57.560 --> 00:08:59.799
+to each speaker (or group of speakers,
+
+00:08:59.800 --> 00:09:02.599
+if more than one person is associated with a talk).
+
+00:09:02.600 --> 00:09:05.479
+That gives me an opportunity to personalize it further.
+
+NOTE BigBlueButton web conferences
+
+00:09:05.480 --> 00:09:08.119
+Many speakers answer questions live
+
+00:09:08.120 --> 00:09:10.039
+in BigBlueButton web conference rooms.
+
+00:09:10.040 --> 00:09:12.639
+Setting up one room per group of speakers
+
+00:09:12.640 --> 00:09:15.199
+makes it easy to give the speakers the details
+
+00:09:15.200 --> 00:09:18.519
+and associate the recorded video with the talk afterwards.
+
+00:09:18.520 --> 00:09:20.599
+For EmacsConf 2023,
+
+00:09:20.600 --> 00:09:24.839
+I used Spookfox to control Mozilla Firefox from Emacs
+
+00:09:24.840 --> 00:09:27.479
+so that I could automate creating the rooms
+
+00:09:27.480 --> 00:09:30.919
+and adding the URLs to the talk properties in my Org file.
+
+00:09:30.920 --> 00:09:33.959
+Then I can use mail merge to send each speaker
+
+00:09:33.960 --> 00:09:36.399
+the check-in instructions for their specific room.
+
+00:09:36.400 --> 00:09:38.679
+Some speakers will take questions by e-mail
+
+00:09:38.680 --> 00:09:41.399
+after the conference instead of attending live,
+
+00:09:41.400 --> 00:09:43.359
+so we send them shorter instructions
+
+00:09:43.360 --> 00:09:45.119
+just in case they want to drop by.
+
+00:09:45.120 --> 00:09:46.479
+Live Q&A sessions start off
+
+00:09:46.480 --> 00:09:46.919
+with just the speaker and the host.
+
+00:09:46.920 --> 00:09:48.119
+After the first rush of questions,
+
+00:09:48.120 --> 00:09:49.959
+we can open it up for other people to join.
+
+00:09:49.960 --> 00:09:52.759
+This is handled by changing the public page
+
+00:09:52.760 --> 00:09:55.119
+from one that just refreshes in a loop
+
+00:09:55.120 --> 00:09:58.119
+to one that redirects to the actual web conference room.
+
+00:09:58.120 --> 00:10:00.079
+Just in case, we also
+
+00:10:00.080 --> 00:10:02.159
+generate static copies of those redirects
+
+00:10:02.160 --> 00:10:04.039
+so that we can copy them if needed.
+
+00:10:04.040 --> 00:10:06.679
+That way, I don't have to count on Emacs being able to
+
+00:10:06.680 --> 00:10:07.759
+publish them over TRAMP.
+
+NOTE Shortcuts
+
+00:10:07.760 --> 00:10:11.239
+During the conference, I'm often jumping from talk to talk.
+
+00:10:11.240 --> 00:10:13.199
+Instead of going to the Org file
+
+00:10:13.200 --> 00:10:14.519
+and then searching for the talk,
+
+00:10:14.520 --> 00:10:17.239
+I've made a little Hydra with keyboard shortcuts.
+
+00:10:17.240 --> 00:10:19.079
+One of these shortcuts lets me
+
+00:10:19.080 --> 00:10:20.799
+jump to a talk with completion
+
+00:10:20.800 --> 00:10:23.999
+so that I can just type in part of the talk ID,
+
+00:10:24.000 --> 00:10:25.679
+title, or speaker name.
+
+00:10:25.680 --> 00:10:28.679
+I've also defined some Embark actions
+
+00:10:28.680 --> 00:10:31.719
+so that I can act on a talk right from the completion menu.
+
+00:10:31.720 --> 00:10:34.719
+For example, I might want to jump to the wiki page
+
+00:10:34.720 --> 00:10:36.199
+or e-mail the speaker.
+
+NOTE Logbook
+
+00:10:36.200 --> 00:10:39.839
+I can also add notes to a talk while looking at an email,
+
+00:10:39.840 --> 00:10:41.639
+like when a speaker lets me know
+
+00:10:41.640 --> 00:10:42.839
+that their video will be late.
+
+00:10:42.840 --> 00:10:45.799
+Making it easy to add a note turns Emacs into
+
+00:10:45.800 --> 00:10:49.439
+a very basic contact relationship management system, or CRM.
+
+00:10:49.440 --> 00:10:52.439
+The way this works is that we have a function
+
+00:10:52.440 --> 00:10:55.159
+that lists all the email addresses associated with a talk.
+
+00:10:55.160 --> 00:10:57.919
+We can then map that over the list of talks,
+
+00:10:57.920 --> 00:10:59.959
+look up the author of the current email,
+
+00:10:59.960 --> 00:11:03.319
+prompt the user for the talk to add the note to, and add the note.
+
+NOTE Captions
+
+00:11:03.320 --> 00:11:04.679
+On to captions.
+
+00:11:04.680 --> 00:11:07.239
+We've been doing captions for the last couple of years,
+
+00:11:07.240 --> 00:11:09.959
+and now we have a small army of volunteer captioners.
+
+00:11:09.960 --> 00:11:12.679
+They get early access to the recorded talks
+
+00:11:12.680 --> 00:11:16.159
+and fix up misrecognized words, format keyboard shortcuts
+
+00:11:16.160 --> 00:11:19.359
+to follow Emacs conventions, spell names correctly,
+
+00:11:19.360 --> 00:11:21.839
+and do all sorts of other wonderful things.
+
+00:11:21.840 --> 00:11:24.399
+One of our evil plans with EmacsConf
+
+00:11:24.400 --> 00:11:28.359
+is to get cool stuff out of people's heads into videos
+
+00:11:28.360 --> 00:11:31.799
+and also make captions so that those videos can be searched.
+
+00:11:31.800 --> 00:11:34.999
+To make that possible, we first need a backstage area
+
+00:11:35.000 --> 00:11:36.639
+where volunteers can get the files.
+
+00:11:36.640 --> 00:11:39.839
+This is just a simple password-protected directory
+
+00:11:39.840 --> 00:11:43.559
+with a static HTML page that lists the talks by status
+
+00:11:43.560 --> 00:11:46.119
+and shows the files related to each talk.
+
+00:11:46.120 --> 00:11:49.599
+As a talk moves through the process, I update its TODO state
+
+00:11:49.600 --> 00:11:51.359
+and republish this index.
+
+00:11:51.360 --> 00:11:54.519
+Talks that are ready to be captioned show up in that section,
+
+00:11:54.520 --> 00:11:57.679
+and volunteers can call dibs on the talk they're interested in.
+
+00:11:57.680 --> 00:12:00.799
+That's all done with a function that formats the information
+
+00:12:00.800 --> 00:12:03.839
+and uses TRAMP to save the file directly to the server.
+
+00:12:03.840 --> 00:12:06.679
+You can find more details on our captioning process
+
+00:12:06.680 --> 00:12:09.039
+at emacsconf.org/captioning.
+
+00:12:09.040 --> 00:12:12.519
+I like using subed to edit subtitles within Emacs.
+
+NOTE Crontabs and playing the talks
+
+00:12:12.520 --> 00:12:15.399
+Let's talk about actually playing the talks.
+
+00:12:15.400 --> 00:12:19.559
+For EmacsConf 2022, we tried using Emacs timers
+
+00:12:19.560 --> 00:12:20.519
+to run the talks.
+
+00:12:20.520 --> 00:12:24.079
+It turns out that you can't call TRAMP from a timer
+
+00:12:24.080 --> 00:12:26.719
+when you're already using TRAMP from another timer
+
+00:12:26.720 --> 00:12:27.439
+at the same time.
+
+00:12:27.440 --> 00:12:29.719
+I thought about just tweaking the schedule
+
+00:12:29.720 --> 00:12:31.799
+so that we always start things at different times,
+
+00:12:31.800 --> 00:12:34.799
+but I figured there's probably a more elegant way to do this.
+
+00:12:34.800 --> 00:12:37.519
+This year, I'm planning to experiment with using cron
+
+00:12:37.520 --> 00:12:38.959
+to start talks on autopilot.
+
+00:12:38.960 --> 00:12:42.119
+The shell scripts will take care of playing the videos...
+
+00:12:42.120 --> 00:12:44.399
+... figuring out the appropriate Q&A...
+
+00:12:44.400 --> 00:12:47.119
+... and joining the web conference if needed.
+
+00:12:47.120 --> 00:12:49.599
+We just need to format the information...
+
+00:12:49.600 --> 00:12:51.759
+...and install it as the track's crontab.
+
+00:12:51.760 --> 00:12:54.079
+It's useful to be able to switch tracks
+
+00:12:54.080 --> 00:12:55.599
+to manual mode independently,
+
+00:12:55.600 --> 00:12:57.679
+just in case things go haywire.
+
+00:12:57.680 --> 00:12:59.719
+Then we can start everything manually.
+
+00:12:59.720 --> 00:13:02.359
+I can also manually update a talk's status,
+
+00:13:02.360 --> 00:13:05.919
+like when the host tells me that it's okay to open up the Q&A.
+
+00:13:05.920 --> 00:13:08.719
+The shell scripts we run from the crontab
+
+00:13:08.720 --> 00:13:10.839
+can also update the talk status themselves.
+
+NOTE Transitions
+
+00:13:10.840 --> 00:13:14.319
+Then a bunch of things happen automatically based on
+
+00:13:14.320 --> 00:13:15.599
+the talk status changes.
+
+00:13:15.600 --> 00:13:18.959
+This uses org-after-todo-state-change-hook.
+
+00:13:18.960 --> 00:13:20.359
+We get the talk information
+
+00:13:20.360 --> 00:13:21.959
+and pass it to a list of functions.
+
+00:13:21.960 --> 00:13:26.279
+Internet Relay Chat or IRC is an easy way for people
+
+00:13:26.280 --> 00:13:28.719
+to join the conversation around EmacsConf.
+
+00:13:28.720 --> 00:13:31.239
+We announce a talk whenever it changes state.
+
+00:13:31.240 --> 00:13:33.599
+For example, when a talk starts,
+
+00:13:33.600 --> 00:13:36.039
+we post the URLs to the talk webpage
+
+00:13:36.040 --> 00:13:39.439
+and the Etherpad for questions. We change the topic as well,
+
+00:13:39.440 --> 00:13:41.879
+so anyone can see the current talk's information
+
+00:13:41.880 --> 00:13:43.039
+even if they're a little late.
+
+00:13:43.040 --> 00:13:45.799
+This is easy to do with a little bit of Emacs Lisp
+
+00:13:45.800 --> 00:13:48.519
+because (of course!) Emacs has an IRC client.
+
+00:13:48.520 --> 00:13:49.639
+In fact, it has several.
+
+NOTE Wrapping up
+
+00:13:49.640 --> 00:13:52.799
+It seems like a lot of automation and Emacs Lisp,
+
+00:13:52.800 --> 00:13:56.439
+but really, all of this was just built up little by little.
+
+00:13:56.440 --> 00:13:59.279
+And tinkering with this is *fun*, you know?
+
+00:13:59.280 --> 00:14:00.679
+It's like always being able to ask,
+
+00:14:00.680 --> 00:14:02.159
+"Hey, wouldn't it be cool if..."
+
+00:14:02.160 --> 00:14:05.279
+and then actually being able to go and do it.
+
+00:14:05.280 --> 00:14:07.999
+Sometimes it feels like EmacsConf is an excuse
+
+00:14:08.000 --> 00:14:09.359
+for me to play with Emacs.
+
+00:14:09.360 --> 00:14:11.999
+It's pretty amazing what you can do
+
+00:14:12.000 --> 00:14:13.799
+by combining a bunch of pieces.
+
+00:14:13.800 --> 00:14:16.719
+A way to store slightly-structured information.
+
+00:14:16.720 --> 00:14:18.879
+A way to get it out again. Templates.
+
+00:14:18.880 --> 00:14:20.679
+TRAMP, for working with remote files
+
+00:14:20.680 --> 00:14:21.919
+and running remote commands.
+
+00:14:21.920 --> 00:14:23.839
+A way to talk to a web browser.
+
+00:14:23.840 --> 00:14:25.399
+A way to work with SVGs.
+
+00:14:25.400 --> 00:14:27.759
+An email client. A chat client.
+
+00:14:27.760 --> 00:14:29.639
+You can smoosh them all together
+
+00:14:29.640 --> 00:14:32.319
+in a way that you couldn't if they were all separate things.
+
+00:14:32.320 --> 00:14:35.879
+The code is in the emacsconf-el repository.
+
+00:14:35.880 --> 00:14:39.119
+It's a bit of a tangle because it's accumulating organically
+
+00:14:39.120 --> 00:14:40.879
+and I haven't really had the brainspace
+
+00:14:40.880 --> 00:14:42.359
+to step back and clean it up.
+
+00:14:42.360 --> 00:14:45.519
+But if you spotted anything interesting in this presentation,
+
+00:14:45.520 --> 00:14:48.279
+you can go check it out and see what you can scavenge.
+
+00:14:48.280 --> 00:14:50.999
+The link and this presentation are available
+
+00:14:51.000 --> 00:14:59.119
+from this talk's webpage at emacsconf.org/2023/talks/emacsconf .
+
+00:14:59.120 --> 00:15:05.200
+Let's figure out how to make Emacsconf even awesomer next year!
diff --git a/2023/info/adventure-before.md b/2023/info/adventure-before.md
index 99c8fbb2..156b97be 100644
--- a/2023/info/adventure-before.md
+++ b/2023/info/adventure-before.md
@@ -7,7 +7,7 @@ The following image shows where the talk is in the schedule for Sat 2023-12-02.
[[!toc ]]
Format: 6-min talk followed by Pad / e-mail Q&A
Discuss on IRC: [#emacsconf](https://chat.emacsconf.org/?join=emacsconf)
-Status: Waiting for a caption volunteer
+Status: Ready to stream
<div>Times in different timezones:</div><div class="times" start="2023-12-02T14:10:00Z" end="2023-12-02T14:20:00Z"><div class="conf-time">Saturday, Dec 2 2023, ~9:10 AM - 9:20 AM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Saturday, Dec 2 2023, ~8:10 AM - 8:20 AM CST (US/Central)<br />Saturday, Dec 2 2023, ~7:10 AM - 7:20 AM MST (US/Mountain)<br />Saturday, Dec 2 2023, ~6:10 AM - 6:20 AM PST (US/Pacific)<br />Saturday, Dec 2 2023, ~2:10 PM - 2:20 PM UTC <br />Saturday, Dec 2 2023, ~3:10 PM - 3:20 PM CET (Europe/Paris)<br />Saturday, Dec 2 2023, ~4:10 PM - 4:20 PM EET (Europe/Athens)<br />Saturday, Dec 2 2023, ~7:40 PM - 7:50 PM IST (Asia/Kolkata)<br />Saturday, Dec 2 2023, ~10:10 PM - 10:20 PM +08 (Asia/Singapore)<br />Saturday, Dec 2 2023, ~11:10 PM - 11:20 PM JST (Asia/Tokyo)</div></div><div><a href="/2023/watch/gen/">Find out how to watch and participate</a></div>
diff --git a/2023/info/collab-before.md b/2023/info/collab-before.md
index 3447d181..f5024f75 100644
--- a/2023/info/collab-before.md
+++ b/2023/info/collab-before.md
@@ -7,7 +7,7 @@ The following image shows where the talk is in the schedule for Sat 2023-12-02.
[[!toc ]]
Format: 20-min talk followed by email after the event, wiki Q&A
Discuss on IRC: [#emacsconf](https://chat.emacsconf.org/?join=emacsconf)
-Status: Waiting for a caption volunteer
+Status: Ready to stream
<div>Times in different timezones:</div><div class="times" start="2023-12-02T18:50:00Z" end="2023-12-02T19:10:00Z"><div class="conf-time">Saturday, Dec 2 2023, ~1:50 PM - 2:10 PM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Saturday, Dec 2 2023, ~12:50 PM - 1:10 PM CST (US/Central)<br />Saturday, Dec 2 2023, ~11:50 AM - 12:10 PM MST (US/Mountain)<br />Saturday, Dec 2 2023, ~10:50 AM - 11:10 AM PST (US/Pacific)<br />Saturday, Dec 2 2023, ~6:50 PM - 7:10 PM UTC <br />Saturday, Dec 2 2023, ~7:50 PM - 8:10 PM CET (Europe/Paris)<br />Saturday, Dec 2 2023, ~8:50 PM - 9:10 PM EET (Europe/Athens)<br />Sunday, Dec 3 2023, ~12:20 AM - 12:40 AM IST (Asia/Kolkata)<br />Sunday, Dec 3 2023, ~2:50 AM - 3:10 AM +08 (Asia/Singapore)<br />Sunday, Dec 3 2023, ~3:50 AM - 4:10 AM JST (Asia/Tokyo)</div></div><div><a href="/2023/watch/gen/">Find out how to watch and participate</a></div>
diff --git a/2023/info/doc-before.md b/2023/info/doc-before.md
index 520a4120..15367f40 100644
--- a/2023/info/doc-before.md
+++ b/2023/info/doc-before.md
@@ -9,7 +9,7 @@ The following image shows where the talk is in the schedule for Sat 2023-12-02.
[[!toc ]]
Format: 43-min talk followed by live Q&A
Discuss on IRC: [#emacsconf](https://chat.emacsconf.org/?join=emacsconf)
-Status: Waiting for a caption volunteer
+Status: Being captioned
<div>Times in different timezones:</div><div class="times" start="2023-12-02T19:50:00Z" end="2023-12-02T20:30:00Z"><div class="conf-time">Saturday, Dec 2 2023, ~2:50 PM - 3:30 PM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Saturday, Dec 2 2023, ~1:50 PM - 2:30 PM CST (US/Central)<br />Saturday, Dec 2 2023, ~12:50 PM - 1:30 PM MST (US/Mountain)<br />Saturday, Dec 2 2023, ~11:50 AM - 12:30 PM PST (US/Pacific)<br />Saturday, Dec 2 2023, ~7:50 PM - 8:30 PM UTC <br />Saturday, Dec 2 2023, ~8:50 PM - 9:30 PM CET (Europe/Paris)<br />Saturday, Dec 2 2023, ~9:50 PM - 10:30 PM EET (Europe/Athens)<br />Sunday, Dec 3 2023, ~1:20 AM - 2:00 AM IST (Asia/Kolkata)<br />Sunday, Dec 3 2023, ~3:50 AM - 4:30 AM +08 (Asia/Singapore)<br />Sunday, Dec 3 2023, ~4:50 AM - 5:30 AM JST (Asia/Tokyo)</div></div><div><a href="/2023/watch/dev/">Find out how to watch and participate</a></div>
diff --git a/2023/info/emacsen-before.md b/2023/info/emacsen-before.md
index 753b14f9..4c61fdf7 100644
--- a/2023/info/emacsen-before.md
+++ b/2023/info/emacsen-before.md
@@ -7,7 +7,7 @@ The following image shows where the talk is in the schedule for Sun 2023-12-03.
[[!toc ]]
Format: 19-min talk followed by live Q&A
Discuss on IRC: [#emacsconf](https://chat.emacsconf.org/?join=emacsconf)
-Status: Waiting for a caption volunteer
+Status: Ready to stream
<div>Times in different timezones:</div><div class="times" start="2023-12-03T16:35:00Z" end="2023-12-03T16:55:00Z"><div class="conf-time">Sunday, Dec 3 2023, ~11:35 AM - 11:55 AM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Sunday, Dec 3 2023, ~10:35 AM - 10:55 AM CST (US/Central)<br />Sunday, Dec 3 2023, ~9:35 AM - 9:55 AM MST (US/Mountain)<br />Sunday, Dec 3 2023, ~8:35 AM - 8:55 AM PST (US/Pacific)<br />Sunday, Dec 3 2023, ~4:35 PM - 4:55 PM UTC <br />Sunday, Dec 3 2023, ~5:35 PM - 5:55 PM CET (Europe/Paris)<br />Sunday, Dec 3 2023, ~6:35 PM - 6:55 PM EET (Europe/Athens)<br />Sunday, Dec 3 2023, ~10:05 PM - 10:25 PM IST (Asia/Kolkata)<br />Monday, Dec 4 2023, ~12:35 AM - 12:55 AM +08 (Asia/Singapore)<br />Monday, Dec 4 2023, ~1:35 AM - 1:55 AM JST (Asia/Tokyo)</div></div><div><a href="/2023/watch/dev/">Find out how to watch and participate</a></div>
diff --git a/2023/info/eval-before.md b/2023/info/eval-before.md
index f05e949c..834b763e 100644
--- a/2023/info/eval-before.md
+++ b/2023/info/eval-before.md
@@ -7,7 +7,7 @@ The following image shows where the talk is in the schedule for Sat 2023-12-02.
[[!toc ]]
Format: 10-min talk followed by live web conference Q&A
Discuss on IRC: [#emacsconf](https://chat.emacsconf.org/?join=emacsconf)
-Status: Being captioned
+Status: Ready to stream
<div>Times in different timezones:</div><div class="times" start="2023-12-02T18:35:00Z" end="2023-12-02T18:45:00Z"><div class="conf-time">Saturday, Dec 2 2023, ~1:35 PM - 1:45 PM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Saturday, Dec 2 2023, ~12:35 PM - 12:45 PM CST (US/Central)<br />Saturday, Dec 2 2023, ~11:35 AM - 11:45 AM MST (US/Mountain)<br />Saturday, Dec 2 2023, ~10:35 AM - 10:45 AM PST (US/Pacific)<br />Saturday, Dec 2 2023, ~6:35 PM - 6:45 PM UTC <br />Saturday, Dec 2 2023, ~7:35 PM - 7:45 PM CET (Europe/Paris)<br />Saturday, Dec 2 2023, ~8:35 PM - 8:45 PM EET (Europe/Athens)<br />Sunday, Dec 3 2023, ~12:05 AM - 12:15 AM IST (Asia/Kolkata)<br />Sunday, Dec 3 2023, ~2:35 AM - 2:45 AM +08 (Asia/Singapore)<br />Sunday, Dec 3 2023, ~3:35 AM - 3:45 AM JST (Asia/Tokyo)</div></div><div><a href="/2023/watch/dev/">Find out how to watch and participate</a></div>
diff --git a/2023/info/hyperdrive-before.md b/2023/info/hyperdrive-before.md
index 66a29fa0..c5002514 100644
--- a/2023/info/hyperdrive-before.md
+++ b/2023/info/hyperdrive-before.md
@@ -7,9 +7,9 @@ The following image shows where the talk is in the schedule for Sun 2023-12-03.
</div>
[[!toc ]]
-Format: 40-min talk followed by live web conference Q&A
+Format: 41-min talk followed by live web conference Q&A
Discuss on IRC: [#emacsconf](https://chat.emacsconf.org/?join=emacsconf)
-Status: Waiting for video from speaker
+Status: Processing uploaded video
<div>Times in different timezones:</div><div class="times" start="2023-12-03T18:35:00Z" end="2023-12-03T19:15:00Z"><div class="conf-time">Sunday, Dec 3 2023, ~1:35 PM - 2:15 PM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Sunday, Dec 3 2023, ~12:35 PM - 1:15 PM CST (US/Central)<br />Sunday, Dec 3 2023, ~11:35 AM - 12:15 PM MST (US/Mountain)<br />Sunday, Dec 3 2023, ~10:35 AM - 11:15 AM PST (US/Pacific)<br />Sunday, Dec 3 2023, ~6:35 PM - 7:15 PM UTC <br />Sunday, Dec 3 2023, ~7:35 PM - 8:15 PM CET (Europe/Paris)<br />Sunday, Dec 3 2023, ~8:35 PM - 9:15 PM EET (Europe/Athens)<br />Monday, Dec 4 2023, ~12:05 AM - 12:45 AM IST (Asia/Kolkata)<br />Monday, Dec 4 2023, ~2:35 AM - 3:15 AM +08 (Asia/Singapore)<br />Monday, Dec 4 2023, ~3:35 AM - 4:15 AM JST (Asia/Tokyo)</div></div><div><a href="/2023/watch/dev/">Find out how to watch and participate</a></div>
diff --git a/2023/info/matplotllm-before.md b/2023/info/matplotllm-before.md
index 45efcaa0..6babb1b3 100644
--- a/2023/info/matplotllm-before.md
+++ b/2023/info/matplotllm-before.md
@@ -7,7 +7,7 @@ The following image shows where the talk is in the schedule for Sat 2023-12-02.
[[!toc ]]
Format: 10-min talk followed by pad Q&A
Discuss on IRC: [#emacsconf](https://chat.emacsconf.org/?join=emacsconf)
-Status: Waiting for a caption volunteer
+Status: Ready to stream
<div>Times in different timezones:</div><div class="times" start="2023-12-02T15:00:00Z" end="2023-12-02T15:10:00Z"><div class="conf-time">Saturday, Dec 2 2023, ~10:00 AM - 10:10 AM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Saturday, Dec 2 2023, ~9:00 AM - 9:10 AM CST (US/Central)<br />Saturday, Dec 2 2023, ~8:00 AM - 8:10 AM MST (US/Mountain)<br />Saturday, Dec 2 2023, ~7:00 AM - 7:10 AM PST (US/Pacific)<br />Saturday, Dec 2 2023, ~3:00 PM - 3:10 PM UTC <br />Saturday, Dec 2 2023, ~4:00 PM - 4:10 PM CET (Europe/Paris)<br />Saturday, Dec 2 2023, ~5:00 PM - 5:10 PM EET (Europe/Athens)<br />Saturday, Dec 2 2023, ~8:30 PM - 8:40 PM IST (Asia/Kolkata)<br />Saturday, Dec 2 2023, ~11:00 PM - 11:10 PM +08 (Asia/Singapore)<br />Sunday, Dec 3 2023, ~12:00 AM - 12:10 AM JST (Asia/Tokyo)</div></div><div><a href="/2023/watch/dev/">Find out how to watch and participate</a></div>
diff --git a/2023/info/nabokov-before.md b/2023/info/nabokov-before.md
index fc0b914b..c6f4bb62 100644
--- a/2023/info/nabokov-before.md
+++ b/2023/info/nabokov-before.md
@@ -7,7 +7,7 @@ The following image shows where the talk is in the schedule for Sat 2023-12-02.
[[!toc ]]
Format: 10-min talk followed by live web conference Q&A
Discuss on IRC: [#emacsconf](https://chat.emacsconf.org/?join=emacsconf)
-Status: Waiting for a caption volunteer
+Status: Being captioned
<div>Times in different timezones:</div><div class="times" start="2023-12-02T18:25:00Z" end="2023-12-02T18:35:00Z"><div class="conf-time">Saturday, Dec 2 2023, ~1:25 PM - 1:35 PM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Saturday, Dec 2 2023, ~12:25 PM - 12:35 PM CST (US/Central)<br />Saturday, Dec 2 2023, ~11:25 AM - 11:35 AM MST (US/Mountain)<br />Saturday, Dec 2 2023, ~10:25 AM - 10:35 AM PST (US/Pacific)<br />Saturday, Dec 2 2023, ~6:25 PM - 6:35 PM UTC <br />Saturday, Dec 2 2023, ~7:25 PM - 7:35 PM CET (Europe/Paris)<br />Saturday, Dec 2 2023, ~8:25 PM - 8:35 PM EET (Europe/Athens)<br />Saturday, Dec 2 2023, ~11:55 PM - 12:05 AM IST (Asia/Kolkata)<br />Sunday, Dec 3 2023, ~2:25 AM - 2:35 AM +08 (Asia/Singapore)<br />Sunday, Dec 3 2023, ~3:25 AM - 3:35 AM JST (Asia/Tokyo)</div></div><div><a href="/2023/watch/gen/">Find out how to watch and participate</a></div>
diff --git a/2023/info/overlay-before.md b/2023/info/overlay-before.md
index 2f47fae0..a46fb2d8 100644
--- a/2023/info/overlay-before.md
+++ b/2023/info/overlay-before.md
@@ -7,7 +7,7 @@ The following image shows where the talk is in the schedule for Sat 2023-12-02.
[[!toc ]]
Format: 21-min talk followed by live web conference Q&A
Discuss on IRC: [#emacsconf](https://chat.emacsconf.org/?join=emacsconf)
-Status: Processing uploaded video
+Status: Ready to stream
<div>Times in different timezones:</div><div class="times" start="2023-12-02T18:00:00Z" end="2023-12-02T18:20:00Z"><div class="conf-time">Saturday, Dec 2 2023, ~1:00 PM - 1:20 PM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Saturday, Dec 2 2023, ~12:00 PM - 12:20 PM CST (US/Central)<br />Saturday, Dec 2 2023, ~11:00 AM - 11:20 AM MST (US/Mountain)<br />Saturday, Dec 2 2023, ~10:00 AM - 10:20 AM PST (US/Pacific)<br />Saturday, Dec 2 2023, ~6:00 PM - 6:20 PM UTC <br />Saturday, Dec 2 2023, ~7:00 PM - 7:20 PM CET (Europe/Paris)<br />Saturday, Dec 2 2023, ~8:00 PM - 8:20 PM EET (Europe/Athens)<br />Saturday, Dec 2 2023, ~11:30 PM - 11:50 PM IST (Asia/Kolkata)<br />Sunday, Dec 3 2023, ~2:00 AM - 2:20 AM +08 (Asia/Singapore)<br />Sunday, Dec 3 2023, ~3:00 AM - 3:20 AM JST (Asia/Tokyo)</div></div><div><a href="/2023/watch/dev/">Find out how to watch and participate</a></div>
diff --git a/2023/info/scheme-before.md b/2023/info/scheme-before.md
index b84d0a15..771ecfd5 100644
--- a/2023/info/scheme-before.md
+++ b/2023/info/scheme-before.md
@@ -7,7 +7,7 @@ The following image shows where the talk is in the schedule for Sun 2023-12-03.
[[!toc ]]
Format: 22-min talk followed by live web conference Q&A
Discuss on IRC: [#emacsconf](https://chat.emacsconf.org/?join=emacsconf)
-Status: Waiting for a caption volunteer
+Status: Ready to stream
<div>Times in different timezones:</div><div class="times" start="2023-12-03T15:00:00Z" end="2023-12-03T15:20:00Z"><div class="conf-time">Sunday, Dec 3 2023, ~10:00 AM - 10:20 AM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Sunday, Dec 3 2023, ~9:00 AM - 9:20 AM CST (US/Central)<br />Sunday, Dec 3 2023, ~8:00 AM - 8:20 AM MST (US/Mountain)<br />Sunday, Dec 3 2023, ~7:00 AM - 7:20 AM PST (US/Pacific)<br />Sunday, Dec 3 2023, ~3:00 PM - 3:20 PM UTC <br />Sunday, Dec 3 2023, ~4:00 PM - 4:20 PM CET (Europe/Paris)<br />Sunday, Dec 3 2023, ~5:00 PM - 5:20 PM EET (Europe/Athens)<br />Sunday, Dec 3 2023, ~8:30 PM - 8:50 PM IST (Asia/Kolkata)<br />Sunday, Dec 3 2023, ~11:00 PM - 11:20 PM +08 (Asia/Singapore)<br />Monday, Dec 4 2023, ~12:00 AM - 12:20 AM JST (Asia/Tokyo)</div></div><div><a href="/2023/watch/dev/">Find out how to watch and participate</a></div>
diff --git a/2023/info/teaching-before.md b/2023/info/teaching-before.md
index cada0b34..086d1532 100644
--- a/2023/info/teaching-before.md
+++ b/2023/info/teaching-before.md
@@ -7,7 +7,7 @@ The following image shows where the talk is in the schedule for Sat 2023-12-02.
[[!toc ]]
Format: 20-min talk followed by live Q&A
Discuss on IRC: [#emacsconf](https://chat.emacsconf.org/?join=emacsconf)
-Status: Waiting for a caption volunteer
+Status: Ready to stream
<div>Times in different timezones:</div><div class="times" start="2023-12-02T15:05:00Z" end="2023-12-02T15:25:00Z"><div class="conf-time">Saturday, Dec 2 2023, ~10:05 AM - 10:25 AM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Saturday, Dec 2 2023, ~9:05 AM - 9:25 AM CST (US/Central)<br />Saturday, Dec 2 2023, ~8:05 AM - 8:25 AM MST (US/Mountain)<br />Saturday, Dec 2 2023, ~7:05 AM - 7:25 AM PST (US/Pacific)<br />Saturday, Dec 2 2023, ~3:05 PM - 3:25 PM UTC <br />Saturday, Dec 2 2023, ~4:05 PM - 4:25 PM CET (Europe/Paris)<br />Saturday, Dec 2 2023, ~5:05 PM - 5:25 PM EET (Europe/Athens)<br />Saturday, Dec 2 2023, ~8:35 PM - 8:55 PM IST (Asia/Kolkata)<br />Saturday, Dec 2 2023, ~11:05 PM - 11:25 PM +08 (Asia/Singapore)<br />Sunday, Dec 3 2023, ~12:05 AM - 12:25 AM JST (Asia/Tokyo)</div></div><div><a href="/2023/watch/gen/">Find out how to watch and participate</a></div>
diff --git a/2023/info/world-before.md b/2023/info/world-before.md
index 45b8f67b..389f2931 100644
--- a/2023/info/world-before.md
+++ b/2023/info/world-before.md
@@ -5,7 +5,7 @@ The following image shows where the talk is in the schedule for Sun 2023-12-03.
</div>
[[!toc ]]
-Format: 23-min talk followed by live web conference Q&A
+Format: 21-min talk followed by live web conference Q&A
Discuss on IRC: [#emacsconf](https://chat.emacsconf.org/?join=emacsconf)
Status: Ready to stream
<div>Times in different timezones:</div><div class="times" start="2023-12-03T15:35:00Z" end="2023-12-03T15:55:00Z"><div class="conf-time">Sunday, Dec 3 2023, ~10:35 AM - 10:55 AM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Sunday, Dec 3 2023, ~9:35 AM - 9:55 AM CST (US/Central)<br />Sunday, Dec 3 2023, ~8:35 AM - 8:55 AM MST (US/Mountain)<br />Sunday, Dec 3 2023, ~7:35 AM - 7:55 AM PST (US/Pacific)<br />Sunday, Dec 3 2023, ~3:35 PM - 3:55 PM UTC <br />Sunday, Dec 3 2023, ~4:35 PM - 4:55 PM CET (Europe/Paris)<br />Sunday, Dec 3 2023, ~5:35 PM - 5:55 PM EET (Europe/Athens)<br />Sunday, Dec 3 2023, ~9:05 PM - 9:25 PM IST (Asia/Kolkata)<br />Sunday, Dec 3 2023, ~11:35 PM - 11:55 PM +08 (Asia/Singapore)<br />Monday, Dec 4 2023, ~12:35 AM - 12:55 AM JST (Asia/Tokyo)</div></div><div><a href="/2023/watch/dev/">Find out how to watch and participate</a></div>
diff --git a/2023/schedule-details.md b/2023/schedule-details.md
index ecfe9045..ddf82f1b 100644
--- a/2023/schedule-details.md
+++ b/2023/schedule-details.md
@@ -4,27 +4,27 @@ Jump to: <a href="#date-2023-12-02">Sat Dec 2</a> - <a href="#date-2023-12-03">S
<div class="schedule" data-start="2023-12-02T14:00:00+0000" data-end="2023-12-02T22:30:00+0000" data-tracks="General,Development">
[[!template id=sched time="""10""" q-and-a="""""" startutc="""2023-12-02T14:00:00+0000""" endutc="""2023-12-02T14:10:00+0000""" start="""9:00""" end="""9:10""" title="""Saturday opening remarks""" url="""/2023/talks/sat-open""" track="""General""" watch="""https://emacsconf.org/2023/watch/gen""" slug="""sat-open""" note=""""""]]
-[[!template id=sched time="""10""" q-and-a="""<a href="https://pad.emacsconf.org/2023-adventure">Etherpad</a>""" startutc="""2023-12-02T14:10:00+0000""" endutc="""2023-12-02T14:20:00+0000""" start="""9:10""" end="""9:20""" title="""An Org-Mode based text adventure game for learning the basics of Emacs, inside Emacs, written in Emacs Lisp""" url="""/2023/talks/adventure""" speakers="""Chung-hong Chan""" track="""General""" watch="""https://emacsconf.org/2023/watch/gen""" slug="""adventure""" note=""""""]]
+[[!template id=sched time="""10""" q-and-a="""<a href="https://pad.emacsconf.org/2023-adventure">Etherpad</a>""" startutc="""2023-12-02T14:10:00+0000""" endutc="""2023-12-02T14:20:00+0000""" start="""9:10""" end="""9:20""" title="""An Org-Mode based text adventure game for learning the basics of Emacs, inside Emacs, written in Emacs Lisp""" url="""/2023/talks/adventure""" speakers="""Chung-hong Chan""" track="""General""" watch="""https://emacsconf.org/2023/watch/gen""" slug="""adventure""" note="""captioned"""]]
[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2023/current/bbb-uni.html">BBB</a>""" startutc="""2023-12-02T14:30:00+0000""" endutc="""2023-12-02T14:50:00+0000""" start="""9:30""" end="""9:50""" title="""Authoring and presenting university courses with Emacs and a full libre software stack""" url="""/2023/talks/uni""" speakers="""James Howell""" track="""General""" watch="""https://emacsconf.org/2023/watch/gen""" slug="""uni""" note=""""""]]
-[[!template id=sched time="""10""" q-and-a="""<a href="https://pad.emacsconf.org/2023-matplotllm">Etherpad</a>""" startutc="""2023-12-02T15:00:00+0000""" endutc="""2023-12-02T15:10:00+0000""" start="""10:00""" end="""10:10""" title="""MatplotLLM, iterative natural language data visualization in org-babel""" url="""/2023/talks/matplotllm""" speakers="""Abhinav Tushar""" track="""Development""" watch="""https://emacsconf.org/2023/watch/dev""" slug="""matplotllm""" note=""""""]]
+[[!template id=sched time="""10""" q-and-a="""<a href="https://pad.emacsconf.org/2023-matplotllm">Etherpad</a>""" startutc="""2023-12-02T15:00:00+0000""" endutc="""2023-12-02T15:10:00+0000""" start="""10:00""" end="""10:10""" title="""MatplotLLM, iterative natural language data visualization in org-babel""" url="""/2023/talks/matplotllm""" speakers="""Abhinav Tushar""" track="""Development""" watch="""https://emacsconf.org/2023/watch/dev""" slug="""matplotllm""" note="""captioned"""]]
[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2023/current/bbb-teaching.html">BBB</a>""" startutc="""2023-12-02T15:05:00+0000""" endutc="""2023-12-02T15:25:00+0000""" start="""10:05""" end="""10:25""" title="""Teaching computer and data science with literate programming tools""" url="""/2023/talks/teaching""" speakers="""Marcus Birkenkrahe""" track="""General""" watch="""https://emacsconf.org/2023/watch/gen""" slug="""teaching""" note=""""""]]
[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2023/current/bbb-voice.html">BBB</a>""" startutc="""2023-12-02T15:20:00+0000""" endutc="""2023-12-02T15:40:00+0000""" start="""10:20""" end="""10:40""" title="""Improving access to AI-assisted literate programming with voice control""" url="""/2023/talks/voice""" speakers="""Blaine Mooers""" track="""Development""" watch="""https://emacsconf.org/2023/watch/dev""" slug="""voice""" note=""""""]]
[[!template id=sched time="""10""" q-and-a="""<a href="https://media.emacsconf.org/2023/current/bbb-table.html">BBB</a>""" startutc="""2023-12-02T15:40:00+0000""" endutc="""2023-12-02T15:50:00+0000""" start="""10:40""" end="""10:50""" title="""Who needs Excel? Managing your students qualifications with org-table""" url="""/2023/talks/table""" speakers="""Daniel Molina""" track="""General""" watch="""https://emacsconf.org/2023/watch/gen""" slug="""table""" note=""""""]]
[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2023/current/bbb-llm.html">BBB</a>""" startutc="""2023-12-02T15:55:00+0000""" endutc="""2023-12-02T16:15:00+0000""" start="""10:55""" end="""11:15""" title="""LLM clients in Emacs, functionality and standardization""" url="""/2023/talks/llm""" speakers="""Andrew Hyatt""" track="""Development""" watch="""https://emacsconf.org/2023/watch/dev""" slug="""llm""" note=""""""]]
[[!template id=sched time="""10""" q-and-a="""<a href="https://media.emacsconf.org/2023/current/bbb-taming.html">BBB</a>""" startutc="""2023-12-02T16:05:00+0000""" endutc="""2023-12-02T16:15:00+0000""" start="""11:05""" end="""11:15""" title="""Taming things with Org Mode""" url="""/2023/talks/taming""" speakers="""Gergely Nagy (algernon)""" track="""General""" watch="""https://emacsconf.org/2023/watch/gen""" slug="""taming""" note=""""""]]
[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2023/current/bbb-one.html">BBB</a>""" startutc="""2023-12-02T16:30:00+0000""" endutc="""2023-12-02T16:50:00+0000""" start="""11:30""" end="""11:50""" title="""one.el: the static site generator for Emacs Lisp Programmers""" url="""/2023/talks/one""" speakers="""Tony Aldon""" track="""General""" watch="""https://emacsconf.org/2023/watch/gen""" slug="""one""" note=""""""]]
-[[!template id=sched time="""10""" q-and-a="""<a href="https://media.emacsconf.org/2023/current/bbb-writing.html">BBB</a>""" startutc="""2023-12-02T18:00:00+0000""" endutc="""2023-12-02T18:10:00+0000""" start="""1:00""" end="""1:10""" title="""Emacs turbo-charges my writing""" url="""/2023/talks/writing""" speakers="""Jeremy Friesen""" track="""General""" watch="""https://emacsconf.org/2023/watch/gen""" slug="""writing""" note=""""""]]
-[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2023/current/bbb-overlay.html">BBB</a>""" startutc="""2023-12-02T18:00:00+0000""" endutc="""2023-12-02T18:20:00+0000""" start="""1:00""" end="""1:20""" title="""Improving compiler diagnostics with Overlays""" url="""/2023/talks/overlay""" speakers="""Jeff Trull""" track="""Development""" watch="""https://emacsconf.org/2023/watch/dev""" slug="""overlay""" note=""""""]]
+[[!template id=sched time="""10""" q-and-a="""<a href="https://media.emacsconf.org/2023/current/bbb-writing.html">BBB</a>""" startutc="""2023-12-02T18:00:00+0000""" endutc="""2023-12-02T18:10:00+0000""" start="""1:00""" end="""1:10""" title="""Emacs turbo-charges my writing""" url="""/2023/talks/writing""" speakers="""Jeremy Friesen""" track="""General""" watch="""https://emacsconf.org/2023/watch/gen""" slug="""writing""" note="""captioned"""]]
+[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2023/current/bbb-overlay.html">BBB</a>""" startutc="""2023-12-02T18:00:00+0000""" endutc="""2023-12-02T18:20:00+0000""" start="""1:00""" end="""1:20""" title="""Improving compiler diagnostics with Overlays""" url="""/2023/talks/overlay""" speakers="""Jeff Trull""" track="""Development""" watch="""https://emacsconf.org/2023/watch/dev""" slug="""overlay""" note="""captioned"""]]
[[!template id=sched time="""10""" q-and-a="""<a href="https://media.emacsconf.org/2023/current/bbb-nabokov.html">BBB</a>""" startutc="""2023-12-02T18:25:00+0000""" endutc="""2023-12-02T18:35:00+0000""" start="""1:25""" end="""1:35""" title="""Why Nabokov would use Org-Mode if he were writing today""" url="""/2023/talks/nabokov""" speakers="""Edmund Jorgensen""" track="""General""" watch="""https://emacsconf.org/2023/watch/gen""" slug="""nabokov""" note=""""""]]
-[[!template id=sched time="""10""" q-and-a="""<a href="https://media.emacsconf.org/2023/current/bbb-eval.html">BBB</a>""" startutc="""2023-12-02T18:35:00+0000""" endutc="""2023-12-02T18:45:00+0000""" start="""1:35""" end="""1:45""" title="""Editor Integrated REPL Driven Development for all languages""" url="""/2023/talks/eval""" speakers="""Musa Al-hassy""" track="""Development""" watch="""https://emacsconf.org/2023/watch/dev""" slug="""eval""" note=""""""]]
-[[!template id=sched time="""20""" q-and-a="""none""" startutc="""2023-12-02T18:50:00+0000""" endutc="""2023-12-02T19:10:00+0000""" start="""1:50""" end="""2:10""" title="""Collaborative data processing and documenting using org-babel""" url="""/2023/talks/collab""" speakers="""Jonathan Hartman, Lukas C. Bossert""" track="""General""" watch="""https://emacsconf.org/2023/watch/gen""" slug="""collab""" note=""""""]]
+[[!template id=sched time="""10""" q-and-a="""<a href="https://media.emacsconf.org/2023/current/bbb-eval.html">BBB</a>""" startutc="""2023-12-02T18:35:00+0000""" endutc="""2023-12-02T18:45:00+0000""" start="""1:35""" end="""1:45""" title="""Editor Integrated REPL Driven Development for all languages""" url="""/2023/talks/eval""" speakers="""Musa Al-hassy""" track="""Development""" watch="""https://emacsconf.org/2023/watch/dev""" slug="""eval""" note="""captioned"""]]
+[[!template id=sched time="""20""" q-and-a="""none""" startutc="""2023-12-02T18:50:00+0000""" endutc="""2023-12-02T19:10:00+0000""" start="""1:50""" end="""2:10""" title="""Collaborative data processing and documenting using org-babel""" url="""/2023/talks/collab""" speakers="""Jonathan Hartman, Lukas C. Bossert""" track="""General""" watch="""https://emacsconf.org/2023/watch/gen""" slug="""collab""" note="""captioned"""]]
[[!template id=sched time="""40""" q-and-a="""<a href="https://chat.emacsconf.org/?join=emacsconf">#emacsconf, speaker nick: edrx</a>""" startutc="""2023-12-02T19:00:00+0000""" endutc="""2023-12-02T19:40:00+0000""" start="""2:00""" end="""2:40""" title="""REPLs in strange places: Lua, LaTeX, LPeg, LPegRex, TikZ""" url="""/2023/talks/repl""" speakers="""Eduardo Ochs""" track="""Development""" watch="""https://emacsconf.org/2023/watch/dev""" slug="""repl""" note=""""""]]
[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2023/current/bbb-solo.html">BBB</a>""" startutc="""2023-12-02T19:20:00+0000""" endutc="""2023-12-02T19:40:00+0000""" start="""2:20""" end="""2:40""" title="""How I play TTRPGs in Emacs""" url="""/2023/talks/solo""" speakers="""Howard Abrams""" track="""General""" watch="""https://emacsconf.org/2023/watch/gen""" slug="""solo""" note=""""""]]
[[!template id=sched time="""40""" q-and-a="""<a href="https://media.emacsconf.org/2023/current/bbb-doc.html">BBB</a>""" note="""Actually a general-audience talk; just on the development track for scheduling purposes""" startutc="""2023-12-02T19:50:00+0000""" endutc="""2023-12-02T20:30:00+0000""" start="""2:50""" end="""3:30""" title="""Literate Documentation with Emacs and Org Mode""" url="""/2023/talks/doc""" speakers="""Mike Hamrick""" track="""Development""" watch="""https://emacsconf.org/2023/watch/dev""" slug="""doc""" note=""""""]]
[[!template id=sched time="""20""" q-and-a="""<a href="https://chat.emacsconf.org/?join=emacsconf">#emacsconf, speaker nick: lispmacs</a>""" startutc="""2023-12-02T19:55:00+0000""" endutc="""2023-12-02T20:15:00+0000""" start="""2:55""" end="""3:15""" title="""Org-Mode workflow: informal reference tracking""" url="""/2023/talks/ref""" speakers="""Christopher Howard""" track="""General""" watch="""https://emacsconf.org/2023/watch/gen""" slug="""ref""" note="""captioned"""]]
[[!template id=sched time="""10""" q-and-a="""<a href="https://pad.emacsconf.org/2023-unentangling">Etherpad</a>""" startutc="""2023-12-02T20:25:00+0000""" endutc="""2023-12-02T20:35:00+0000""" start="""3:25""" end="""3:35""" title="""(Un)entangling projects and repos""" url="""/2023/talks/unentangling""" speakers="""Alexey Bochkarev""" track="""General""" watch="""https://emacsconf.org/2023/watch/gen""" slug="""unentangling""" note=""""""]]
[[!template id=sched time="""10""" q-and-a="""<a href="https://media.emacsconf.org/2023/current/bbb-devel.html">BBB</a>""" startutc="""2023-12-02T20:45:00+0000""" endutc="""2023-12-02T20:55:00+0000""" start="""3:45""" end="""3:55""" title="""Emacs development updates""" url="""/2023/talks/devel""" speakers="""John Wiegley""" track="""General""" watch="""https://emacsconf.org/2023/watch/gen""" slug="""devel""" note=""""""]]
-[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2023/current/bbb-emacsconf.html">BBB</a>""" startutc="""2023-12-02T20:45:00+0000""" endutc="""2023-12-02T21:05:00+0000""" start="""3:45""" end="""4:05""" title="""EmacsConf.org: How we use Org Mode and TRAMP to organize and run a multi-track conference""" url="""/2023/talks/emacsconf""" speakers="""Sacha Chua""" track="""Development""" watch="""https://emacsconf.org/2023/watch/dev""" slug="""emacsconf""" note=""""""]]
+[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2023/current/bbb-emacsconf.html">BBB</a>""" startutc="""2023-12-02T20:45:00+0000""" endutc="""2023-12-02T21:05:00+0000""" start="""3:45""" end="""4:05""" title="""EmacsConf.org: How we use Org Mode and TRAMP to organize and run a multi-track conference""" url="""/2023/talks/emacsconf""" speakers="""Sacha Chua""" track="""Development""" watch="""https://emacsconf.org/2023/watch/dev""" slug="""emacsconf""" note="""captioned"""]]
[[!template id=sched time="""40""" q-and-a="""<a href="https://media.emacsconf.org/2023/current/bbb-core.html">BBB</a>""" startutc="""2023-12-02T21:10:00+0000""" endutc="""2023-12-02T21:50:00+0000""" start="""4:10""" end="""4:50""" title="""Emacs core development: how it works""" url="""/2023/talks/core""" speakers="""Stefan Kangas""" track="""General""" watch="""https://emacsconf.org/2023/watch/gen""" slug="""core""" note=""""""]]
[[!template id=sched time="""10""" q-and-a="""""" startutc="""2023-12-02T22:05:00+0000""" endutc="""2023-12-02T22:15:00+0000""" start="""5:05""" end="""5:15""" title="""Saturday closing remarks""" url="""/2023/talks/sat-close""" track="""General""" watch="""https://emacsconf.org/2023/watch/gen""" slug="""sat-close""" note=""""""]]</div>
@@ -39,14 +39,14 @@ Jump to: <a href="#date-2023-12-02">Sat Dec 2</a> - <a href="#date-2023-12-03">S
[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2023/current/bbb-scheme.html">BBB</a>""" startutc="""2023-12-03T15:00:00+0000""" endutc="""2023-12-03T15:20:00+0000""" start="""10:00""" end="""10:20""" title="""Bringing joy to Scheme programming""" url="""/2023/talks/scheme""" speakers="""Andrew Tropin""" track="""Development""" watch="""https://emacsconf.org/2023/watch/dev""" slug="""scheme""" note=""""""]]
[[!template id=sched time="""10""" q-and-a="""<a href="https://media.emacsconf.org/2023/current/bbb-parallel.html">BBB</a>""" startutc="""2023-12-03T15:10:00+0000""" endutc="""2023-12-03T15:20:00+0000""" start="""10:10""" end="""10:20""" title="""Parallel Text Replacement: Does P = NP?""" url="""/2023/talks/parallel""" speakers="""Lovro, Valentino Picotti""" track="""General""" watch="""https://emacsconf.org/2023/watch/gen""" slug="""parallel""" note=""""""]]
[[!template id=sched time="""10""" q-and-a="""<a href="https://media.emacsconf.org/2023/current/bbb-eat.html">BBB</a>""" startutc="""2023-12-03T15:35:00+0000""" endutc="""2023-12-03T15:45:00+0000""" start="""10:35""" end="""10:45""" title="""Eat and Eat powered Eshell, fast featureful terminal inside Emacs""" url="""/2023/talks/eat""" speakers="""Akib Azmain Turja""" track="""General""" watch="""https://emacsconf.org/2023/watch/gen""" slug="""eat""" note=""""""]]
-[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2023/current/bbb-world.html">BBB</a>""" startutc="""2023-12-03T15:35:00+0000""" endutc="""2023-12-03T15:55:00+0000""" start="""10:35""" end="""10:55""" title="""GNU Emacs: A World of Possibilities""" url="""/2023/talks/world""" speakers="""Anand Tamariya""" track="""Development""" watch="""https://emacsconf.org/2023/watch/dev""" slug="""world""" note=""""""]]
+[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2023/current/bbb-world.html">BBB</a>""" startutc="""2023-12-03T15:35:00+0000""" endutc="""2023-12-03T15:55:00+0000""" start="""10:35""" end="""10:55""" title="""GNU Emacs: A World of Possibilities""" url="""/2023/talks/world""" speakers="""Anand Tamariya""" track="""Development""" watch="""https://emacsconf.org/2023/watch/dev""" slug="""world""" note="""captioned"""]]
[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2023/current/bbb-poltys.html">BBB</a>""" startutc="""2023-12-03T16:00:00+0000""" endutc="""2023-12-03T16:20:00+0000""" start="""11:00""" end="""11:20""" title="""The browser in a buffer""" url="""/2023/talks/poltys""" speakers="""Michael Bauer""" track="""General""" watch="""https://emacsconf.org/2023/watch/gen""" slug="""poltys""" note=""""""]]
[[!template id=sched time="""10""" q-and-a="""<a href="https://media.emacsconf.org/2023/current/bbb-flat.html">BBB</a>""" startutc="""2023-12-03T16:10:00+0000""" endutc="""2023-12-03T16:20:00+0000""" start="""11:10""" end="""11:20""" title="""A modern Emacs look-and-feel without pain""" url="""/2023/talks/flat""" speakers="""Pedro A. Aranda""" track="""Development""" watch="""https://emacsconf.org/2023/watch/dev""" slug="""flat""" note=""""""]]
[[!template id=sched time="""20""" q-and-a="""<a href="https://chat.emacsconf.org/?join=emacsconf">#emacsconf, speaker nick: wasamasa</a>""" startutc="""2023-12-03T16:35:00+0000""" endutc="""2023-12-03T16:55:00+0000""" start="""11:35""" end="""11:55""" title="""Speedcubing in Emacs""" url="""/2023/talks/cubing""" speakers="""wasamasa""" track="""General""" watch="""https://emacsconf.org/2023/watch/gen""" slug="""cubing""" note=""""""]]
[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2023/current/bbb-emacsen.html">BBB</a>""" startutc="""2023-12-03T16:35:00+0000""" endutc="""2023-12-03T16:55:00+0000""" start="""11:35""" end="""11:55""" title="""The Emacsen family, the design of an Emacs and the importance of Lisp""" url="""/2023/talks/emacsen""" speakers="""Fermin""" track="""Development""" watch="""https://emacsconf.org/2023/watch/dev""" slug="""emacsen""" note=""""""]]
[[!template id=sched time="""40""" q-and-a="""<a href="https://media.emacsconf.org/2023/current/bbb-emms.html">BBB</a>""" startutc="""2023-12-03T18:00:00+0000""" endutc="""2023-12-03T18:40:00+0000""" start="""1:00""" end="""1:40""" title="""Emacs MultiMedia System (EMMS)""" url="""/2023/talks/emms""" speakers="""Yoni Rabkin""" track="""General""" watch="""https://emacsconf.org/2023/watch/gen""" slug="""emms""" note="""captioned"""]]
[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2023/current/bbb-gc.html">BBB</a>""" startutc="""2023-12-03T18:00:00+0000""" endutc="""2023-12-03T18:20:00+0000""" start="""1:00""" end="""1:20""" title="""emacs-gc-stats: Does garbage collection actually slow down Emacs?""" url="""/2023/talks/gc""" speakers="""Ihor Radchenko""" track="""Development""" watch="""https://emacsconf.org/2023/watch/dev""" slug="""gc""" note=""""""]]
-[[!template id=sched time="""40""" q-and-a="""<a href="https://media.emacsconf.org/2023/current/bbb-hyperdrive.html">BBB</a>""" note="""Actually a general-audience talk; just on the development track for scheduling purposes""" startutc="""2023-12-03T18:35:00+0000""" endutc="""2023-12-03T19:15:00+0000""" start="""1:35""" end="""2:15""" title="""hyperdrive.el: Peer-to-peer filesystem in Emacs""" url="""/2023/talks/hyperdrive""" speakers="""Joseph Turner""" track="""Development""" watch="""https://emacsconf.org/2023/watch/dev""" slug="""hyperdrive""" note=""""""]]
+[[!template id=sched time="""40""" q-and-a="""<a href="https://media.emacsconf.org/2023/current/bbb-hyperdrive.html">BBB</a>""" note="""Actually a general-audience talk; just on the development track for scheduling purposes""" startutc="""2023-12-03T18:35:00+0000""" endutc="""2023-12-03T19:15:00+0000""" start="""1:35""" end="""2:15""" title="""hyperdrive.el: Peer-to-peer filesystem in Emacs""" url="""/2023/talks/hyperdrive""" speakers="""Joseph Turner and Protesilaos Stavrou""" track="""Development""" watch="""https://emacsconf.org/2023/watch/dev""" slug="""hyperdrive""" note=""""""]]
[[!template id=sched time="""30""" q-and-a="""none""" startutc="""2023-12-03T18:55:00+0000""" endutc="""2023-12-03T19:25:00+0000""" start="""1:55""" end="""2:25""" title="""Programming at 200 wpm""" url="""/2023/talks/steno""" speakers="""Daniel Alejandro Tapia""" track="""General""" watch="""https://emacsconf.org/2023/watch/gen""" slug="""steno""" note=""""""]]
[[!template id=sched time="""10""" q-and-a="""<a href="https://media.emacsconf.org/2023/current/bbb-lspocaml.html">BBB</a>""" startutc="""2023-12-03T19:30:00+0000""" endutc="""2023-12-03T19:40:00+0000""" start="""2:30""" end="""2:40""" title="""Writing a language server in OCaml for Emacs, fun, and profit""" url="""/2023/talks/lspocaml""" speakers="""Austin Theriault""" track="""Development""" watch="""https://emacsconf.org/2023/watch/dev""" slug="""lspocaml""" note=""""""]]
[[!template id=sched time="""10""" q-and-a="""<a href="https://media.emacsconf.org/2023/current/bbb-mentor.html">BBB</a>""" startutc="""2023-12-03T19:35:00+0000""" endutc="""2023-12-03T19:45:00+0000""" start="""2:35""" end="""2:45""" title="""Mentoring VS-Coders as an Emacsian (or How to show not tell people about the wonders of Emacs)""" url="""/2023/talks/mentor""" speakers="""Jeremy Friesen""" track="""General""" watch="""https://emacsconf.org/2023/watch/gen""" slug="""mentor""" note=""""""]]
diff --git a/2023/talks/hyperdrive.md b/2023/talks/hyperdrive.md
index 4aee6509..4c4dfdbf 100644
--- a/2023/talks/hyperdrive.md
+++ b/2023/talks/hyperdrive.md
@@ -1,5 +1,5 @@
[[!meta title="hyperdrive.el: Peer-to-peer filesystem in Emacs"]]
-[[!meta copyright="Copyright &copy; 2023 ${speakers}"]]
+[[!meta copyright="Copyright &copy; 2023 Joseph Turner and Protesilaos Stavrou"]]
[[!inline pages="internal(2023/info/hyperdrive-nav)" raw="yes"]]
<!-- Initially generated with emacsconf-publish-talk-page and then left alone for manual editing -->
@@ -7,7 +7,7 @@
# hyperdrive.el: Peer-to-peer filesystem in Emacs
-Joseph Turner, <https://ushin.org> xmpp:discuss@conference.ushin.org (XMPP MUC for USHIN discussion), <mailto:joseph@ushin.org>
+Joseph Turner and Protesilaos Stavrou, <https://ushin.org> xmpp:discuss@conference.ushin.org (XMPP MUC for USHIN discussion), <mailto:joseph@ushin.org>
[[!inline pages="internal(2023/info/hyperdrive-before)" raw="yes"]]