summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSacha Chua <sacha@sachachua.com>2022-11-20 17:35:12 -0500
committerSacha Chua <sacha@sachachua.com>2022-11-20 17:35:12 -0500
commitd818273c7af44549f17bc24aae76de1947aaa224 (patch)
tree1edea5c9dc9a25e40f3865f11632f32a8379b1e9
parent7c6a6fdb18df43fe406417d8f0276d2b54c4731a (diff)
downloademacsconf-wiki-d818273c7af44549f17bc24aae76de1947aaa224.tar.xz
emacsconf-wiki-d818273c7af44549f17bc24aae76de1947aaa224.zip
Update mpv config and make it linkable
-rw-r--r--2022/organizers-notebook.md423
-rw-r--r--2022/organizers-notebook/index.org18
2 files changed, 294 insertions, 147 deletions
diff --git a/2022/organizers-notebook.md b/2022/organizers-notebook.md
index 332d6bd3..f8ee9bad 100644
--- a/2022/organizers-notebook.md
+++ b/2022/organizers-notebook.md
@@ -9,7 +9,7 @@ This file is automatically exported from [/2022/organizers-notebook/index.org](/
- [Cadence](#cadence)
- [Overall priorities](#overall)
- [Projects and other long-running tasks](#projects)
-- [Projects to bear in mind but which are not actual](#maybe-projects)
+- [Ideas for next year](#maybe-projects)
- [Things to figure out / decisions to make](#decisions)
- [Roles needed](#roles)
- [Infrastructure notes](#infra)
@@ -414,8 +414,10 @@ interests you!
## TODO Prepare intros for the hosts to read :sachac:
<https://pad.emacsconf.org/intros>
-also in :INTRO\_NOTE: in conf.org so that we can plop it into the hyperlists
-Doublecheck:
+also in :INTRO\_NOTE: in conf.org so that we can plop it into the hyperlists.
+
+
+### TODO Write intros for all the other talks
### DONE Set up Etherpad with the talks and see if we can involve the speakers and captioning volunteers :sachac:
@@ -426,6 +428,226 @@ Doublecheck:
## TODO Write check-in email :sachac:
+### DONE Switch all the rooms to allow anyone to start them - one less step for the check-in person
+
+ //list = [...document.querySelectorAll('.room-name-editable')].filter((o) => o.value.match(/^ec22-(sat|sun)/));
+ card = document.querySelector('a[href=\"%s\"] .card-body');
+ card.querySelector('.item-action.dropdown a').click()
+ card.querySelector('.update-room').click()
+ if (!document.querySelector('#room_anyone_can_start').checked) {
+ document.querySelector('#room_anyone_can_start').click();
+ }
+ document.querySelector('.update-only.create-room-button').click();
+
+okay, next thing, it automatically refreshes. so I can&rsquo;t run the whole Javascript, I need to xdotool it.
+
+ (setq list (mapcar (lambda (o) (plist-get o :bbb-room)) (emacsconf-get-talk-info)))
+ (setq list (seq-drop list (seq-position list "https://bbb.emacsverse.org/b/sac-rvc-kd2-pev")))
+ (progn
+ (setq item (pop list))
+ (when (string-match "/b/\\(.*\\)" item)
+ (kill-new (format "card = document.querySelector('a[href=\"%s\"] .card-body');
+ card.querySelector('.item-action.dropdown a').click()
+ card.querySelector('.update-room').click()
+ if (!document.querySelector('#room_anyone_can_start').checked) {
+ document.querySelector('#room_anyone_can_start').click();
+ }
+ document.querySelector('.update-only.create-room-button').click();
+ "
+ (match-string 0 item)))
+ (sleep-for 2)
+ (shell-command "xdotool key alt+Tab")))
+
+Relying on xdotool seems a little fragile. Let&rsquo;s just check the page
+itself for the next one that needs to be done.
+
+ list = [...document.querySelectorAll('.room-name-editable')].filter((o) => o.value.match(/^ec22-(sat|sun)/));
+ list.reduce(async(prev, elem) => {
+ await prev;
+ if (!sessionStorage.getItem(elem.value)) {
+ return new Promise((resolve, reject) => {
+ card = elem.closest('.card-body');
+ card.querySelector('.item-action.dropdown a').click();
+ card.querySelector('.update-room').click();
+ sessionStorage.setItem(elem.value, true);
+ setTimeout(function() {
+ if (!document.querySelector('#room_anyone_can_start').checked) {
+ document.querySelector('#room_anyone_can_start').click();
+ document.querySelector('.update-only.create-room-button').click();
+ } else {
+ document.querySelector('#createRoomModal').click();
+ }
+ resolve(true);
+ }, 500);
+ });
+ }
+ });
+
+
+### DONE Update checkin instructions
+
+
+### Templates
+
+Goals:
+
+- Ask speaker verify their scheduled time
+ It has already been confirmed with them, but it might have changed slightly
+ - HOW: They should check the time at the top of their talk page on the day of the conference
+- Double-check Q&A preference, encourage tech checks for live talks/Q&A
+ - If they are available:
+ - Direct to tech-checks via <https://emacsconf.org/${year}/prepare/>
+ - Inform them of the check-in process
+ - They come say hi to us 30&rsquo; before their session in #emacsconf-org or #emacsconf (they can use chat.emacsconf.org )
+ - We get them set up in a room where they can wait until the end of the broadcast of their pretention
+ - They’re joined by the streamer and host.
+- Warning about potential emergency changes
+
+Slightly more complex because of the conditionals
+
+ (defun emacsconf-mail-checkin-instructions (group &optional template)
+ "Send checkin instructions.
+ GROUP is (email . (talk talk))"
+ (interactive (list (emacsconf-mail-complete-email-group
+ (seq-filter
+ (lambda (o)
+ (or
+ (string= (plist-get o :status) "CANCELLED")
+ (null (plist-get o :email))
+ (string-match "after" (or (plist-get o :q-and-a) ""))))
+ (emacsconf-get-talk-info)))))
+ (let* ((talks (seq-remove
+ (lambda (o)
+ (or
+ (string= (plist-get o :status) "CANCELLED")
+ (null (plist-get o :email))
+ (string-match "after" (or (plist-get o :q-and-a) ""))
+ (save-window-excursion
+ (emacsconf-with-talk-heading o
+ (re-search-forward "checkin instructions" (save-excursion (org-end-of-subtree)) t)))))
+ (cdr group)))
+ (waiting-talks (seq-find (lambda (o) (string= (plist-get o :status) "WAITING_FOR_PREREC")) talks)))
+ (when talks
+ (emacsconf-mail-prepare
+ (or template (emacsconf-mail-merge-get-template "checkin-at-conf"))
+ (car group)
+ (list
+ :year emacsconf-year
+ :base-url emacsconf-base-url
+ :conf-name emacsconf-name
+ :email (plist-get (car talks) :email)
+ :emergency emacsconf-emergency-contact
+ :plural (if (> (length (cdr group)) 1) "s" "")
+ :speakers-short (plist-get (car talks) :speakers-short)
+ :url (mapconcat (lambda (o) (concat emacsconf-base-url (plist-get o :url)))
+ talks" , ")
+ :waiting
+ (cond
+ ((> (length waiting-talks) 1)
+ " If you can upload your talk videos before the conference, I think that might be much less stressful for everyone than doing it live. =) Please note that we will turn off the web-based upload on Dec 1 to free up memory on the server, so please upload them as early as you can.${wrap}")
+ ((= (length waiting-talks) 1)
+ " If you can upload your talk video before the conference, I think that might be much less stressful for everyone than doing it live. =) Please note that we will turn off the web-based upload on Dec 1 to free up memory on the server, so please upload it as early as you can.${wrap}")
+ (t ""))
+ :checkin-info
+ (mapconcat
+ (lambda (o)
+ (let ((base-checkin (format-time-string "%b %-d %-l:%M %p" (plist-get o :checkin-time) emacsconf-timezone))
+ (speaker-checkin (format-time-string "%b %-d %-l:%M %p" (plist-get o :checkin-time) (plist-get o :timezone))))
+ (emacsconf-replace-plist-in-string
+ (append (list :base-url emacsconf-base-url
+ :check-in
+ (concat
+ "Before "
+ base-checkin " in " emacsconf-timezone
+ (if (string= base-checkin speaker-checkin)
+ ""
+ (concat
+ ", which is the same as " speaker-checkin " in " (plist-get o :timezone))) "\n"
+ " (this is " (plist-get o :checkin-label) ")")
+ :qa-info-speakers
+ (cond
+ ;; aaaaah, no prerec yet
+ ((string= (plist-get o :status) "WAITING_FOR_PREREC")
+ (concat "Talk and Q&A BigBlueButton room: " (plist-get o :bbb-room)))
+ ((null (plist-get o :q-and-a)) "")
+ ((string-match "live" (plist-get o :q-and-a)) (concat "Q&A BigBlueButton room: " (plist-get o :bbb-room)))
+ ((string-match "irc" (plist-get o :q-and-a)) (concat "Q&A: " (plist-get o :channel) " (" (plist-get o :webchat-url) ")"))
+ ((string-match "pad" (plist-get o :q-and-a)) "Q&A: On the pad")
+ (t "Q&A: After the event")))
+ o)
+ "- ${title}
+ Info and sched: ${base-url}${url}
+ Check-in: ${check-in}
+ Pad: ${pad-url}
+ ${qa-info-speakers}")))
+ talks "\n\n")))
+ (mapc (lambda (o)
+ (emacsconf-mail-log-message-when-sent o "Sent checkin instructions"))
+ talks))))
+
+
+#### E-mail for speakers who are planning to be at the conference
+
+Hello, ${speakers-short}!
+
+We&rsquo;re looking forward to having you join us at EmacsConf!
+
+We&rsquo;ve updated the schedule based on the submissions and cancellations,
+and we&rsquo;ll probably update the schedule even on the day of the
+conference. You can get a rough idea of your schedule at the talk
+pages with the URL${plural} below. You might want to check your talk
+page${plural} some time next week to get a rough sense of where it is,
+and then check it again on the day of your talk${plural}. Please let
+me know if the times don&rsquo;t work for you.
+
+We&rsquo;ll try our best to keep your talk in the same general timeslot (ex:
+Saturday morning, Saturday afternoon, Sunday morning, Sunday
+afternoon). We&rsquo;ve done some dry-runs, but just in case it turns out
+that running two tracks at the same time leaves us too frazzled, we
+may drop back to one track with Q&A on an alternate stream, like last
+year. If there are big changes to your schedule on the day of your
+talk${plural}, you&rsquo;ll get an e-mail from us with a subject like
+&ldquo;URGENT: EmacsConf 2022: &#x2026;&rdquo;.${wrap}
+
+Here&rsquo;s your checkin info:
+
+${checkin-info}
+
+Please check in early so that we can deal with scheduling changes or
+technical issues. You can find the check-in process at
+${base-url}${year}/speakers/ .${waiting}
+
+If something comes up, please let us know as soon as you can. Here&rsquo;s
+my emergency contact information: ${emergency}
+
+Thank you for sharing your time and energy with the EmacsConf community!
+
+Sacha
+
+p.s. If you need to cancel, that&rsquo;s okay too, life happens. Let me know
+as soon as you can and I&rsquo;ll try to shuffle things around. Thank you!
+
+
+#### E-mail for speakers who are not planning to be around, but who have sent us their prerecs
+
+Hello, ${name}!
+
+Thank you so much for contributing a talk for EmacsConf ${year}! We&rsquo;re
+looking forward to collecting questions and forwarding them to you by
+e-mail after the conference. We&rsquo;ll also post the prerecording at the
+time that it gets streamed, so people will be able to access it at
+${url} once it has gone live.
+
+If it turns out that you can make it to the conference after all, feel
+free to drop us a line at #emacsconf-org and we&rsquo;ll let people know
+you&rsquo;re around. You can find the check-in process at
+<https://emacsconf.org/${year}/speakers/> .
+
+Thank you again for being part of EmacsConf ${year}!
+
+Sacha
+
+
### TODO Draft e-mail to send speakers who may need to do it live
@@ -1115,16 +1337,10 @@ if we can get the anchor plugin
<a id="maybe-projects"></a>
-# Projects to bear in mind but which are not actual
+# Ideas for next year
-## DONE Find a way to accommodate a specific return-speaker
-
-We’re not sure if we’re going to get a presentation or a prerec for them
-this year, but we need to keep this at the back of our minds.
-
-Note on how DebConf handled incidents:
-<https://www.mail-archive.com/search?l=debconf-team@lists.debian.org&q=subject:%22Re%5C%3A+DebConf+21+Incident+Response%22&o=newest&f=1>
+## SOMEDAY <https://www.reddit.com/r/i3wm/comments/b1hgxm/i3wm_over_vnc_with_dual_monitors/?utm_source=share&utm_medium=android_app&utm_name=androidcss&utm_term=2&utm_content=share_button> might be interesting to have dual monitors next year
<a id="decisions"></a>
@@ -1133,6 +1349,7 @@ Note on how DebConf handled incidents:
- [How do we want to coordinate during the conference itself?](#coordination)
- [How do we want to make the full schedule more manageable?](#sched-decision)
+- [Do we want to skip the closed Q&A and go straight to open?](#org2abb62c)
- [How much do we want to enrich the wiki with JS?](#wiki-design)
- [How do we want to make better use of Etherpad?](#pad-decision)
- [Can we nudge people to ask IRC questions in a way that will make it easier for us to follow them?](#irc-markers)
@@ -1211,6 +1428,14 @@ Shifts will be Sat AM, Sat PM, Sun AM, or Sun PM per track. People can take mult
- Better for the viewers and the volunteers
+<a id="org2abb62c"></a>
+
+## Do we want to skip the closed Q&A and go straight to open?
+
+- Closed: Less moderation needed in the beginning
+- Open: less coordination needed (since the host doesn&rsquo;t have to either tell me that it&rsquo;s okay to open it up or change the task status themselves), and people are generally good at meeting etiquette
+
+
<a id="wiki-design"></a>
## How much do we want to enrich the wiki with JS?
@@ -1469,8 +1694,15 @@ Options:
## SOMEDAY Think about what to do with schedule gaps due to cancelled talks :thoughts:
-- just leave it on the in-between slide: no extra effort required
-- host breakout rooms
+- if the previous Q&A is still going, we can stream that one
+- if there are no previous Q&As running, options:
+ - just leave it on the in-between slide: no extra effort required
+ - host a breakout room in [ec22-open](https://media.emacsconf.org/current/bbb-open.html): gives people someplaco to go, might lead to interesting conversatinos
+- big gaps: consider:
+ - substitute talk
+ - rearrange conference schedule
+ - just show the IRC
+ - replay talks from previous years
### SOMEDAY Consider fillers covering conference stuff :thoughts:
@@ -1578,7 +1810,7 @@ AM: 9-12 PM EST, PM: 1-5 PM EST (plus a little extra for setup/transition)
Saturday Dec 3
-<table id="org12e0313" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
+<table id="orga70d05b" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup>
@@ -1651,7 +1883,7 @@ publicvoit - pad until 4pm on Sat, until 2pm on Sun
Sunday Dec 4
-<table id="org206cfa6" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
+<table id="org80a3226" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup>
@@ -2228,32 +2460,35 @@ ansible-playbook -i inventory.yml prod-playbook.yml &#x2013;tags media,stream
[Stream](#other-streams)
+<a id="mpv-captions"></a>
+
### Set up MPV for captions
#### mpv profile
-Add the following profile to `~/.config/mpv/mpv.conf`:
+Add the following profile to `~/.config/mpv/mpv.conf`. You can also change the font to whatever you prefer.
- # Uncomment this line to load the profile by default
+ # Uncomment the profile line to load the profile by default
# Otherwise, use `--profile=emacsconf-talks`
# profile=emacsconf-talks
- [emacsconf-talks]
# Positioning
video-zoom=-0.15
- video-pan-y=-0.055
+ video-align-x=1
+ video-align-y=-1
sub-use-margins=yes
sub-scale-by-window=yes
sub-pos=103
- sub-margin-x=150
- sub-margin-y=40
+ sub-margin-x=110
+ sub-margin-y=60
+ sub-align-x=left
# Style
sub-font="Clear Sans Bold"
sub-color="1/0.82/0"
sub-blur=0.2
sub-scale=0.9
- sub-font-size=40
+ sub-font-size=30
sub-border-size=0
sub-border-color=0/1
sub-shadow-color=0/1
@@ -2709,7 +2944,7 @@ Probably focus on grabbing the audio first and seeing what&rsquo;s worth keeping
Make a table of the form
-<table id="orgc90a9b8" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
+<table id="org34fc36c" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup>
@@ -2804,6 +3039,15 @@ Make a table of the form
## In case of
+### Common broadcast (gen and dev)
+
+Options:
+
+- mpv <https://live.emacsconf.org/emacsconf/gen.webm>
+- mpv the same video
+- join the BBB room
+
+
### Stuck wiki
sudo -iu ikiwiki &#x2013; ikiwiki &#x2013;setup ~ikiwiki/emacsconf.setup
@@ -4788,6 +5032,11 @@ so that the streamer can adjust volume offscreen?
- <https://obsproject.com/forum/threads/run-obs-on-vm-in-the-cloud.122543/>
+### TODO Automate in-between display?
+
+[Think about what to do with schedule gaps due to cancelled talks](file:///home/sacha/proj/emacsconf/wiki/2022/organizers-notebook/index.md)
+
+
<a id="caption-workflow"></a>
## DONE Smoothen captioning workflow :sachac:
@@ -4797,6 +5046,8 @@ capitalization and punctuation, but it produces longer captions
(likely a 30-second sliding window). I&rsquo;ll try to upload both YT and
OpenAPI captions so that people can decide what they like.
+[Set up MPV for captions](#mpv-captions)
+
### DONE Figure out why it&rsquo;s choking on SRV2
@@ -4993,6 +5244,15 @@ Sacha Chua
<https://pypi.org/project/jiwer/>
+## DONE Find a way to accommodate a specific return-speaker
+
+We’re not sure if we’re going to get a presentation or a prerec for them
+this year, but we need to keep this at the back of our minds.
+
+Note on how DebConf handled incidents:
+<https://www.mail-archive.com/search?l=debconf-team@lists.debian.org&q=subject:%22Re%5C%3A+DebConf+21+Incident+Response%22&o=newest&f=1>
+
+
<a id="comms"></a>
# Communications
@@ -5352,123 +5612,6 @@ stream for you. Hope to hear from you soon!
Sacha
-### Check-in instructions
-
-Goals:
-
-- Ask speaker verify their scheduled time
- It has already been confirmed with them, but it might have changed slightly (give-or-take 30&rsquo;
- - HOW: They should check the time at the top of their talk page on the day of the conference
-- Double-check Q&A preference, encourage tech checks for live talks/Q&A
- - If they are available:
- - Direct to tech-checks via <https://emacsconf.org/${year}/prepare/>
- - Inform them of the check-in process
- - They come say hi to us 30&rsquo; before their session in #emacsconf-org or #emacsconf (they can use chat.emacsconf.org )
- - We get them set up in a room where they can wait until the end of the broadcast of their pretention
- - They’re joined by the streamer and host.
-
-
-#### Code
-
-Slightly more complex because of the conditionals
-
- (defun emacsconf-mail-checkin-instructions ()
- (interactive)
- (seq-map
- (lambda (list)
- (let ((template (with-current-buffer (find-file-noselect emacsconf-org-file)
- (emacsconf-mail-merge-get-template (car list)))))
- (seq-map
- (lambda (email-list)
- (let* ((email (car email-list))
- (talks (cdr email-list))
- (combined-info (emacsconf-combine-plist talks " , "))
- (for-mail
- (list
- :name (or (car (plist-get combined-info :speakers)) "???")
- :url (or (string-join (plist-get combined-info :url) " , ") "???")
- :email (car (plist-get combined-info :email))))
- (body (when (plist-get for-mail :email) (emacsconf-replace-plist-in-string for-mail (plist-get template :body))))
- (subject (when (plist-get for-mail :email) (emacsconf-replace-plist-in-string for-mail (plist-get template :subject)))))
- (when (plist-get for-mail :email)
- (compose-mail
- (plist-get for-mail :email)
- subject
- `(("Reply-To" . ,(plist-get template :reply-to))
- ("Mail-Followup-To" . ,(plist-get template :mail-followup-to))
- ("Cc" . ,(plist-get template :cc))))
- (message-goto-body)
- (save-excursion
- (insert body)))))
- (cdr list))))
- ;; Group by e-mail
- (seq-map
- (lambda (list)
- (cons (car list) (seq-group-by (lambda (o) (plist-get o :email)) (cdr list))))
- ;; Group by q-and-a pref
- (seq-group-by
- (lambda (o)
- (pcase (plist-get o :q-and-a)
- ('nil "checkin-unknown")
- ((pred (string-match "after")) "checkin-after")
- ((pred (string-match "live\\|irc\\|pad")) "checkin-at-conf")
- (_ "checkin-unknown")))
- (emacsconf-filter-talks (emacsconf-get-talk-info))))))
-
- (defun emacsconf-cancel-mail-merge ()
- (interactive)
- (mapc (lambda (buffer)
- (when (string-match "unsent" (buffer-name buffer))
- (let ((buffer-modified-p nil)) (kill-buffer buffer))))
- (buffer-list)))
-
-
-#### E-mail for speakers who are planning to be at the conference
-
-Hello, ${name}!
-
-We&rsquo;re looking forward to having you join us at EmacsConf!
-
-We&rsquo;ll probably keep updating the schedule even on the day of the
-conference. You can get a rough idea of when your talk is scheduled at
-${url}. You might want to check it some time next week to get a rough
-sense of where it is, and then check it again on the day of your talk.
-
-Please check in at least 30 minutes before the scheduled start of your
-prerecorded talk so that we can deal with small scheduling changes or
-technical issues. You can find the check-in process at
-<https://emacsconf.org/${year}/speakers/> .
-
-If something comes up, please let us know as soon as you can. Here&rsquo;s
-our emergency contact information:
-
-${emergency}
-
-Looking forward to seeing you soon!
-
-Sacha
-
-
-#### E-mail for speakers who are not planning to be around, but who have sent us their prerecs
-
-Hello, ${name}!
-
-Thank you so much for contributing a talk for EmacsConf ${year}! We&rsquo;re
-looking forward to collecting questions and forwarding them to you by
-e-mail after the conference. We&rsquo;ll also post the prerecording at the
-time that it gets streamed, so people will be able to access it at
-${url} once it has gone live.
-
-If it turns out that you can make it to the conference after all, feel
-free to drop us a line at #emacsconf-org and we&rsquo;ll let people know
-you&rsquo;re around. You can find the check-in process at
-<https://emacsconf.org/${year}/speakers/> .
-
-Thank you again for being part of EmacsConf ${year}!
-
-Sacha
-
-
### Last email before the conference
> Friends, emacsians, hackers, lend me your ears!
diff --git a/2022/organizers-notebook/index.org b/2022/organizers-notebook/index.org
index d267cd17..9561c6eb 100644
--- a/2022/organizers-notebook/index.org
+++ b/2022/organizers-notebook/index.org
@@ -1991,28 +1991,29 @@ ansible-playbook -i inventory.yml prod-playbook.yml --tags media,stream
:END:
**** mpv profile
-Add the following profile to ~~/.config/mpv/mpv.conf~:
+Add the following profile to ~~/.config/mpv/mpv.conf~. You can also change the font to whatever you prefer.
#+begin_src conf :eval no
-# Uncomment this line to load the profile by default
+# Uncomment the profile line to load the profile by default
# Otherwise, use `--profile=emacsconf-talks`
# profile=emacsconf-talks
-[emacsconf-talks]
# Positioning
video-zoom=-0.15
-video-pan-y=-0.055
+video-align-x=1
+video-align-y=-1
sub-use-margins=yes
sub-scale-by-window=yes
sub-pos=103
-sub-margin-x=150
-sub-margin-y=40
+sub-margin-x=110
+sub-margin-y=60
+sub-align-x=left
# Style
sub-font="Clear Sans Bold"
sub-color="1/0.82/0"
sub-blur=0.2
sub-scale=0.9
-sub-font-size=40
+sub-font-size=30
sub-border-size=0
sub-border-color=0/1
sub-shadow-color=0/1
@@ -4493,6 +4494,9 @@ It looks like OpenAPI needs a little less editing in terms of
capitalization and punctuation, but it produces longer captions
(likely a 30-second sliding window). I'll try to upload both YT and
OpenAPI captions so that people can decide what they like.
+
+[[#mpv-captions][Set up MPV for captions]]
+
*** DONE Figure out why it's choking on SRV2
CLOSED: [2022-10-30 Sun 00:13]
Can I use aeneas for alignment instead?