summaryrefslogtreecommitdiffstats
path: root/2023/captions/emacsconf-2023-emacsconf--emacsconforg-how-we-use-org-mode-and-tramp-to-organ...
diff options
context:
space:
mode:
authorSacha Chua <sacha@sachachua.com>2023-12-01 10:29:46 -0500
committerSacha Chua <sacha@sachachua.com>2023-12-01 10:29:46 -0500
commit7989a856e670e3603e52b1aa325a5a863af5ea3f (patch)
tree12857520206e4d469e6d5cf77b13a5819eb50d82 /2023/captions/emacsconf-2023-emacsconf--emacsconforg-how-we-use-org-mode-and-tramp-to-organize-and-run-a-multitrack-conference--sacha-chua--main.vtt
parentb42635d2d070f3851a11f2f2a581ad45e06b0d75 (diff)
downloademacsconf-wiki-7989a856e670e3603e52b1aa325a5a863af5ea3f.tar.xz
emacsconf-wiki-7989a856e670e3603e52b1aa325a5a863af5ea3f.zip
start sun-open a little early so that it fits
Diffstat (limited to '2023/captions/emacsconf-2023-emacsconf--emacsconforg-how-we-use-org-mode-and-tramp-to-organize-and-run-a-multitrack-conference--sacha-chua--main.vtt')
-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.vtt390
1 files changed, 192 insertions, 198 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.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 d97b9aa8..cbec1bb1 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,4 +1,4 @@
-WEBVTT captioned by sachac
+WEBVTT captioned by sachac, checked by sachac
NOTE Intro
@@ -206,10 +206,10 @@ based on the current region. I bind that to `C-c C-x p`.
00:02:56.040 --> 00:02:58.599
That makes it much easier to set properties
-00:02:58.600 --> 00:03:00.639
+00:02:58.600 --> 00:03:01.239
that couldn't automatically be recognized.
-00:03:00.640 --> 00:03:04.519
+00:03:01.240 --> 00:03:04.519
Sometimes it makes sense to dynamically generate a property
00:03:04.520 --> 00:03:07.679
@@ -265,19 +265,19 @@ NOTE Timezones
00:03:53.120 --> 00:03:55.639
Another example of semi-structured information
-00:03:55.640 --> 00:03:56.759
+00:03:55.640 --> 00:03:57.299
is speaker availability.
-00:03:56.760 --> 00:03:59.319
+00:03:57.300 --> 00:03:59.619
We have speakers from all over the world,
-00:03:59.320 --> 00:04:02.599
+00:03:59.620 --> 00:04:03.019
so we try to schedule live Q&A sessions when they're around.
-00:04:02.600 --> 00:04:04.559
+00:04:03.020 --> 00:04:05.019
That means working with timezones.
-00:04:04.560 --> 00:04:08.439
+00:04:05.020 --> 00:04:08.439
Completion makes it much easier to set the timezone property
00:04:08.440 --> 00:04:10.599
@@ -286,10 +286,10 @@ 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
+00:04:14.360 --> 00:04:17.159
which works with Unix timezone definitions.
-00:04:16.680 --> 00:04:19.919
+00:04:17.160 --> 00:04:19.919
Then we can convert times using Emacs.
00:04:19.920 --> 00:04:22.639
@@ -301,18 +301,18 @@ 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
+00:04:27.440 --> 00:04:29.719
when I'm experimenting with the schedule.
NOTE Scheduling
-00:04:29.120 --> 00:04:30.759
+00:04:29.720 --> 00:04:31.679
Now that I have the availability information,
-00:04:30.760 --> 00:04:31.919
+00:04:31.680 --> 00:04:33.940
I can think about scheduling.
-00:04:34.480 --> 00:04:38.239
+00:04:33.941 --> 00:04:38.239
When we were planning EmacsConf 2022, the schedule was so full,
00:04:38.240 --> 00:04:40.839
@@ -348,10 +348,10 @@ 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
+00:05:06.880 --> 00:05:08.939
and even what tracks the talks were in.
-00:05:08.600 --> 00:05:10.719
+00:05:08.940 --> 00:05:10.719
This was helpful when I needed to include
00:05:10.720 --> 00:05:13.239
@@ -372,27 +372,27 @@ 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
+00:05:28.600 --> 00:05:31.999
that I can view right there in my text editor.
-00:05:31.280 --> 00:05:34.799
+00:05:32.000 --> 00:05:34.799
Setting the timezone lets me automatically translate times
-00:05:34.800 --> 00:05:36.919
+00:05:34.800 --> 00:05:37.819
to the speaker's local timezone when I e-mail them.
-00:05:36.920 --> 00:05:39.079
+00:05:37.820 --> 00:05:41.779
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:41.780 --> 00:05:43.159
+There's a lot of text to work with,
-00:05:43.160 --> 00:05:45.119
+00:05:43.160 --> 00:05:45.699
which means templates are super handy.
-00:05:45.120 --> 00:05:48.119
+00:05:45.700 --> 00:05:48.119
There are a number of templating functions for Emacs Lisp,
00:05:48.120 --> 00:05:52.959
@@ -401,10 +401,10 @@ 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
+00:05:54.440 --> 00:05:58.019
that works with property lists (plists) instead,
-00:05:57.280 --> 00:06:02.199
+00:05:58.020 --> 00:06:02.199
since we use plists all over the emacsconf-el library.
00:06:02.200 --> 00:06:03.999
@@ -419,60 +419,60 @@ 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
+00:06:11.080 --> 00:06:14.299
and it's hard to get an overall view if I just use `concat`.
-00:06:13.920 --> 00:06:17.599
+00:06:14.300 --> 00:06:17.599
The code looks for the properties and replaces them with the values.
-00:06:17.600 --> 00:06:20.919
+00:06:17.600 --> 00:06:21.299
I just find it a little easier to think about sometimes.
-00:06:20.920 --> 00:06:24.079
+00:06:21.300 --> 00:06:24.079
Getting all the information is just a matter of going over
-00:06:24.080 --> 00:06:26.999
+00:06:24.080 --> 00:06:27.399
all the talk entries using `org-map-entries`.
-00:06:27.000 --> 00:06:30.319
+00:06:27.400 --> 00:06:30.699
This builds the talk info by running a bunch of functions.
-00:06:30.320 --> 00:06:33.439
+00:06:30.700 --> 00:06:33.819
Some functions get the information from the Org file.
-00:06:33.440 --> 00:06:36.359
+00:06:33.820 --> 00:06:36.959
Other functions use the info already collected.
-00:06:36.360 --> 00:06:39.039
+00:06:36.960 --> 00:06:39.259
This can take a while to do again and again.
-00:06:39.040 --> 00:06:41.479
+00:06:39.260 --> 00:06:41.739
It's useful to `memoize` this function
-00:06:41.480 --> 00:06:43.239
+00:06:41.740 --> 00:06:43.499
when I know I'll be using it a lot,
-00:06:43.240 --> 00:06:45.679
+00:06:43.500 --> 00:06:45.959
like when I export the organizers notebook.
-00:06:45.680 --> 00:06:48.119
+00:06:45.960 --> 00:06:48.399
Memoize caches recent values.
NOTE Wiki
-00:06:48.120 --> 00:06:50.239
+00:06:48.400 --> 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
+00:06:51.480 --> 00:06:53.439
to fill in the conference wiki,
-00:06:53.120 --> 00:06:56.279
+00:06:53.440 --> 00:06:56.479
since that's a matter of writing templated strings to files.
-00:06:56.280 --> 00:06:58.279
+00:06:56.480 --> 00:06:58.279
The talk pages are generated once
00:06:58.280 --> 00:07:00.279
@@ -481,16 +481,16 @@ 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
+00:07:02.400 --> 00:07:04.659
every time we change the details.
-00:07:04.200 --> 00:07:05.799
+00:07:04.660 --> 00:07:05.799
Here are some examples
-00:07:05.800 --> 00:07:07.319
+00:07:05.800 --> 00:07:07.919
of how we fill in the conference wiki.
-00:07:07.320 --> 00:07:10.959
+00:07:07.920 --> 00:07:10.959
We put in the format of the talk, how Q&A works,
00:07:10.960 --> 00:07:12.319
@@ -499,72 +499,72 @@ 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
+00:07:14.960 --> 00:07:17.079
and the links to the files, too.
-00:07:16.480 --> 00:07:18.719
+00:07:17.080 --> 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
+00:07:20.080 --> 00:07:22.879
we fill in a plist with the values we calculate,
-00:07:22.640 --> 00:07:26.159
+00:07:22.880 --> 00:07:26.379
and then we can use `emacsconf-replace-plist-in-string`
-00:07:26.160 --> 00:07:27.719
+00:07:26.380 --> 00:07:28.019
to put that all together.
-00:07:27.720 --> 00:07:30.079
+00:07:28.020 --> 00:07:30.279
The schedule is a little more complicated.
-00:07:30.080 --> 00:07:32.079
+00:07:30.280 --> 00:07:32.079
I wrote an Ikiwiki directive
-00:07:32.080 --> 00:07:33.839
+00:07:32.080 --> 00:07:34.019
so that the markup is more manageable,
-00:07:33.840 --> 00:07:36.159
+00:07:34.020 --> 00:07:36.519
and the Emacs Lisp function uses that.
-00:07:36.160 --> 00:07:40.399
+00:07:36.520 --> 00:07:40.619
The Ikiwiki directive takes all the data and turns it into HTML...
-00:07:40.400 --> 00:07:42.959
+00:07:40.620 --> 00:07:42.959
...so we can use Emacs Lisp to iterate over
-00:07:42.960 --> 00:07:44.679
+00:07:42.960 --> 00:07:44.819
a slightly smaller property list
-00:07:44.680 --> 00:07:47.479
+00:07:44.820 --> 00:07:47.779
and put them into the format Ikiwiki expects.
-00:07:47.480 --> 00:07:50.079
+00:07:47.780 --> 00:07:50.079
It's nice to be able to navigate between talks
-00:07:50.080 --> 00:07:52.319
+00:07:50.080 --> 00:07:52.839
without going back to the schedule page each time.
-00:07:52.320 --> 00:07:55.399
+00:07:52.840 --> 00:07:55.579
This is handled by keeping two extra copies of the list:
-00:07:55.400 --> 00:07:57.319
+00:07:55.580 --> 00:07:57.559
one with the first talk popped off,
-00:07:57.320 --> 00:08:00.159
+00:07:57.560 --> 00:08:00.359
and one with an extra element added to the beginning.
-00:08:00.160 --> 00:08:02.439
+00:08:00.360 --> 00:08:02.439
Then we can use the heads of those lists
-00:08:02.440 --> 00:08:03.959
+00:08:02.440 --> 00:08:04.379
for next/previous links.
NOTE Etherpad
-00:08:03.960 --> 00:08:06.679
+00:08:04.380 --> 00:08:06.679
Links to the next talks are also handy
00:08:06.680 --> 00:08:08.639
@@ -576,63 +576,63 @@ 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
+00:08:12.840 --> 00:08:15.299
Etherpad has an API...
-00:08:14.680 --> 00:08:17.319
+00:08:15.300 --> 00:08:17.319
...so I can start the pads off with a template
-00:08:17.320 --> 00:08:18.559
+00:08:17.320 --> 00:08:18.939
before the conference.
-00:08:18.560 --> 00:08:21.239
+00:08:18.940 --> 00:08:21.239
I don't want to accidentally overwrite a pad
-00:08:21.240 --> 00:08:22.679
+00:08:21.240 --> 00:08:22.939
that has been manually edited.
-00:08:22.680 --> 00:08:25.719
+00:08:22.940 --> 00:08:25.719
We can save the timestamp of the last modification
-00:08:25.720 --> 00:08:27.679
+00:08:25.720 --> 00:08:28.199
and then compare it before overwriting.
NOTE E-mail
-00:08:27.680 --> 00:08:30.839
+00:08:28.200 --> 00:08:31.239
Templates are also very handy when it comes to e-mail.
-00:08:30.840 --> 00:08:33.599
+00:08:31.240 --> 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
+00:08:35.200 --> 00:08:36.879
that we've received their proposal.
-00:08:36.600 --> 00:08:39.559
+00:08:36.880 --> 00:08:39.559
That's mostly a matter of plugging the talk's properties
-00:08:39.560 --> 00:08:41.119
+00:08:39.560 --> 00:08:41.559
into the right places in the template.
-00:08:41.120 --> 00:08:44.799
+00:08:41.560 --> 00:08:45.019
Sometimes we send e-mails to lots of speakers at the same time,
-00:08:44.800 --> 00:08:47.999
+00:08:45.020 --> 00:08:48.299
like when we send them instructions for uploading their files.
-00:08:48.000 --> 00:08:51.439
+00:08:48.300 --> 00:08:51.619
Instead of sending one e-mail and Bcc-ing everyone,
-00:08:51.440 --> 00:08:53.479
+00:08:51.620 --> 00:08:53.479
or sending people multiple e-mails
-00:08:53.480 --> 00:08:54.999
+00:08:53.480 --> 00:08:55.139
because they have multiple talks,
-00:08:55.000 --> 00:08:57.559
+00:08:55.140 --> 00:08:57.559
I like to draft these as individual e-mails
00:08:57.560 --> 00:08:59.799
@@ -641,98 +641,92 @@ 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
+00:09:02.600 --> 00:09:05.919
That gives me an opportunity to personalize it further.
NOTE BigBlueButton web conferences
-00:09:05.480 --> 00:09:08.119
+00:09:05.920 --> 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
+00:09:10.440 --> 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
+00:09:15.400 --> 00:09:18.719
and associate the recorded video with the talk afterwards.
-00:09:18.520 --> 00:09:20.599
+00:09:18.720 --> 00:09:20.599
For EmacsConf 2023,
-00:09:20.600 --> 00:09:24.839
+00:09:20.600 --> 00:09:25.079
I used Spookfox to control Mozilla Firefox from Emacs
-00:09:24.840 --> 00:09:27.479
+00:09:25.080 --> 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
+00:09:30.957 --> 00:09:33.959
Then I can use mail merge to send each speaker
-00:09:33.960 --> 00:09:36.399
+00:09:33.960 --> 00:09:36.899
the check-in instructions for their specific room.
-00:09:36.400 --> 00:09:38.679
+00:09:36.900 --> 00:09:39.139
Some speakers will take questions by e-mail
-00:09:38.680 --> 00:09:41.399
+00:09:39.140 --> 00:09:41.619
after the conference instead of attending live,
-00:09:41.400 --> 00:09:43.359
+00:09:41.620 --> 00:09:43.359
so we send them shorter instructions
-00:09:43.360 --> 00:09:45.119
+00:09:43.360 --> 00:09:45.539
just in case they want to drop by.
-00:09:45.120 --> 00:09:46.479
-Live Q&A sessions start off
+00:09:45.540 --> 00:09:47.799
+[Live Q&A sessions]: After the first rush of questions,
-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
+00:09:47.800 --> 00:09:50.579
we can open it up for other people to join.
-00:09:49.960 --> 00:09:52.759
+00:09:50.580 --> 00:09:53.039
This is handled by changing the public page
-00:09:52.760 --> 00:09:55.119
+00:09:53.040 --> 00:09:55.119
from one that just refreshes in a loop
-00:09:55.120 --> 00:09:58.119
+00:09:55.120 --> 00:09:58.820
to one that redirects to the actual web conference room.
-00:09:58.120 --> 00:10:00.079
+00:09:58.821 --> 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
+00:10:02.160 --> 00:10:04.299
so that we can copy them if needed.
-00:10:04.040 --> 00:10:06.679
+00:10:04.300 --> 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
+00:10:06.680 --> 00:10:08.120
publish them over TRAMP.
NOTE Shortcuts
-00:10:07.760 --> 00:10:11.239
+00:10:08.121 --> 00:10:11.659
During the conference, I'm often jumping from talk to talk.
-00:10:11.240 --> 00:10:13.199
+00:10:11.660 --> 00:10:13.199
Instead of going to the Org file
00:10:13.200 --> 00:10:14.519
@@ -744,80 +738,80 @@ 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
+00:10:19.080 --> 00:10:20.959
jump to a talk with completion
-00:10:20.800 --> 00:10:23.999
+00:10:20.960 --> 00:10:24.259
so that I can just type in part of the talk ID,
-00:10:24.000 --> 00:10:25.679
+00:10:24.260 --> 00:10:26.399
title, or speaker name.
-00:10:25.680 --> 00:10:28.679
+00:10:26.400 --> 00:10:28.679
I've also defined some Embark actions
-00:10:28.680 --> 00:10:31.719
+00:10:28.680 --> 00:10:32.079
so that I can act on a talk right from the completion menu.
-00:10:31.720 --> 00:10:34.719
+00:10:32.080 --> 00:10:35.079
For example, I might want to jump to the wiki page
-00:10:34.720 --> 00:10:36.199
+00:10:35.080 --> 00:10:36.699
or e-mail the speaker.
NOTE Logbook
-00:10:36.200 --> 00:10:39.839
+00:10:36.700 --> 00:10:40.099
I can also add notes to a talk while looking at an email,
-00:10:39.840 --> 00:10:41.639
+00:10:40.100 --> 00:10:41.639
like when a speaker lets me know
-00:10:41.640 --> 00:10:42.839
+00:10:41.640 --> 00:10:43.279
that their video will be late.
-00:10:42.840 --> 00:10:45.799
+00:10:43.280 --> 00:10:45.799
Making it easy to add a note turns Emacs into
-00:10:45.800 --> 00:10:49.439
+00:10:45.800 --> 00:10:49.959
a very basic contact relationship management system, or CRM.
-00:10:49.440 --> 00:10:52.439
+00:10:49.960 --> 00:10:52.439
The way this works is that we have a function
-00:10:52.440 --> 00:10:55.159
+00:10:52.440 --> 00:10:55.459
that lists all the email addresses associated with a talk.
-00:10:55.160 --> 00:10:57.919
+00:10:55.460 --> 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
+00:10:59.960 --> 00:11:03.679
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
+00:11:03.680 --> 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
+00:11:07.240 --> 00:11:10.419
and now we have a small army of volunteer captioners.
-00:11:09.960 --> 00:11:12.679
+00:11:10.420 --> 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
+00:11:16.160 --> 00:11:19.579
to follow Emacs conventions, spell names correctly,
-00:11:19.360 --> 00:11:21.839
+00:11:19.580 --> 00:11:21.839
and do all sorts of other wonderful things.
00:11:21.840 --> 00:11:24.399
@@ -826,152 +820,152 @@ 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
+00:11:28.360 --> 00:11:32.039
and also make captions so that those videos can be searched.
-00:11:31.800 --> 00:11:34.999
+00:11:32.040 --> 00:11:34.999
To make that possible, we first need a backstage area
-00:11:35.000 --> 00:11:36.639
+00:11:35.000 --> 00:11:36.919
where volunteers can get the files.
-00:11:36.640 --> 00:11:39.839
+00:11:36.920 --> 00:11:39.839
This is just a simple password-protected directory
-00:11:39.840 --> 00:11:43.559
+00:11:39.840 --> 00:11:43.739
with a static HTML page that lists the talks by status
-00:11:43.560 --> 00:11:46.119
+00:11:43.740 --> 00:11:46.379
and shows the files related to each talk.
-00:11:46.120 --> 00:11:49.599
+00:11:46.380 --> 00:11:49.899
As a talk moves through the process, I update its TODO state
-00:11:49.600 --> 00:11:51.359
+00:11:49.900 --> 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
+00:11:54.520 --> 00:11:58.179
and volunteers can call dibs on the talk they're interested in.
-00:11:57.680 --> 00:12:00.799
+00:11:58.180 --> 00:12:00.979
That's all done with a function that formats the information
-00:12:00.800 --> 00:12:03.839
+00:12:00.980 --> 00:12:04.319
and uses TRAMP to save the file directly to the server.
-00:12:03.840 --> 00:12:06.679
+00:12:04.320 --> 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
+00:12:09.040 --> 00:12:13.219
I like using subed to edit subtitles within Emacs.
NOTE Crontabs and playing the talks
-00:12:12.520 --> 00:12:15.399
+00:12:13.220 --> 00:12:16.059
Let's talk about actually playing the talks.
-00:12:15.400 --> 00:12:19.559
+00:12:16.060 --> 00:12:19.559
For EmacsConf 2022, we tried using Emacs timers
-00:12:19.560 --> 00:12:20.519
+00:12:19.560 --> 00:12:20.939
to run the talks.
-00:12:20.520 --> 00:12:24.079
+00:12:20.940 --> 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
+00:12:26.720 --> 00:12:27.799
at the same time.
-00:12:27.440 --> 00:12:29.719
+00:12:27.800 --> 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
+00:12:31.800 --> 00:12:35.119
but I figured there's probably a more elegant way to do this.
-00:12:34.800 --> 00:12:37.519
+00:12:35.120 --> 00:12:37.519
This year, I'm planning to experiment with using cron
-00:12:37.520 --> 00:12:38.959
+00:12:37.520 --> 00:12:39.599
to start talks on autopilot.
-00:12:38.960 --> 00:12:42.119
+00:12:39.600 --> 00:12:42.479
The shell scripts will take care of playing the videos...
-00:12:42.120 --> 00:12:44.399
+00:12:42.480 --> 00:12:44.839
... figuring out the appropriate Q&A...
-00:12:44.400 --> 00:12:47.119
+00:12:44.840 --> 00:12:47.579
... and joining the web conference if needed.
-00:12:47.120 --> 00:12:49.599
+00:12:47.580 --> 00:12:49.599
We just need to format the information...
-00:12:49.600 --> 00:12:51.759
+00:12:49.600 --> 00:12:52.219
...and install it as the track's crontab.
-00:12:51.760 --> 00:12:54.079
+00:12:52.220 --> 00:12:54.079
It's useful to be able to switch tracks
-00:12:54.080 --> 00:12:55.599
+00:12:54.080 --> 00:12:55.879
to manual mode independently,
-00:12:55.600 --> 00:12:57.679
+00:12:55.880 --> 00:12:57.899
just in case things go haywire.
-00:12:57.680 --> 00:12:59.719
+00:12:57.900 --> 00:13:00.119
Then we can start everything manually.
-00:12:59.720 --> 00:13:02.359
+00:13:00.120 --> 00:13:02.799
I can also manually update a talk's status,
-00:13:02.360 --> 00:13:05.919
+00:13:02.800 --> 00:13:06.519
like when the host tells me that it's okay to open up the Q&A.
-00:13:05.920 --> 00:13:08.719
+00:13:06.520 --> 00:13:08.719
The shell scripts we run from the crontab
-00:13:08.720 --> 00:13:10.839
+00:13:08.720 --> 00:13:11.279
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:11.280 --> 00:13:14.319
+Then a bunch of things automatically happen 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.
+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
+00:13:20.360 --> 00:13:22.519
and pass it to a list of functions.
-00:13:21.960 --> 00:13:26.279
+00:13:22.520 --> 00:13:26.279
Internet Relay Chat or IRC is an easy way for people
-00:13:26.280 --> 00:13:28.719
+00:13:26.280 --> 00:13:29.139
to join the conversation around EmacsConf.
-00:13:28.720 --> 00:13:31.239
+00:13:29.140 --> 00:13:31.799
We announce a talk whenever it changes state.
-00:13:31.240 --> 00:13:33.599
+00:13:31.800 --> 00:13:33.599
For example, when a talk starts,
00:13:33.600 --> 00:13:36.039
@@ -986,42 +980,42 @@ 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
+00:13:43.180 --> 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
+00:13:48.520 --> 00:13:49.879
In fact, it has several.
NOTE Wrapping up
-00:13:49.640 --> 00:13:52.799
+00:13:49.880 --> 00:13:53.139
It seems like a lot of automation and Emacs Lisp,
-00:13:52.800 --> 00:13:56.439
+00:13:53.140 --> 00:13:56.899
but really, all of this was just built up little by little.
-00:13:56.440 --> 00:13:59.279
+00:13:56.900 --> 00:13:59.279
And tinkering with this is *fun*, you know?
-00:13:59.280 --> 00:14:00.679
+00:13:59.280 --> 00:14:01.259
It's like always being able to ask,
-00:14:00.680 --> 00:14:02.159
+00:14:01.260 --> 00:14:03.300
"Hey, wouldn't it be cool if..."
-00:14:02.160 --> 00:14:05.279
+00:14:03.301 --> 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
+00:14:08.000 --> 00:14:10.199
for me to play with Emacs.
-00:14:09.360 --> 00:14:11.999
+00:14:10.200 --> 00:14:11.999
It's pretty amazing what you can do
00:14:12.000 --> 00:14:13.799
@@ -1051,28 +1045,28 @@ 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
+00:14:29.640 --> 00:14:32.699
in a way that you couldn't if they were all separate things.
-00:14:32.320 --> 00:14:35.879
+00:14:32.700 --> 00:14:36.279
The code is in the emacsconf-el repository.
-00:14:35.880 --> 00:14:39.119
+00:14:36.280 --> 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
+00:14:40.880 --> 00:14:42.579
to step back and clean it up.
-00:14:42.360 --> 00:14:45.519
+00:14:42.580 --> 00:14:45.919
But if you spotted anything interesting in this presentation,
-00:14:45.520 --> 00:14:48.279
+00:14:45.920 --> 00:14:48.619
you can go check it out and see what you can scavenge.
-00:14:48.280 --> 00:14:50.999
+00:14:48.620 --> 00:14:50.999
The link and this presentation are available
00:14:51.000 --> 00:14:59.119