diff options
author | Sacha Chua <sacha@sachachua.com> | 2022-10-22 09:45:00 -0400 |
---|---|---|
committer | Sacha Chua <sacha@sachachua.com> | 2022-10-22 09:45:00 -0400 |
commit | 4175b2d919546a1c6daa5a473a404bb94fd59b37 (patch) | |
tree | b19953ff594857ab50ef0478e5179663448eb02f /2022/organizers-notebook | |
parent | 3d17c57f473391fdd2e5cf4ff99c778e6748a06b (diff) | |
download | emacsconf-wiki-4175b2d919546a1c6daa5a473a404bb94fd59b37.tar.xz emacsconf-wiki-4175b2d919546a1c6daa5a473a404bb94fd59b37.zip |
Update tasks
Diffstat (limited to '')
-rw-r--r-- | 2022/organizers-notebook.md | 583 | ||||
-rw-r--r-- | 2022/organizers-notebook/index.org | 590 |
2 files changed, 729 insertions, 444 deletions
diff --git a/2022/organizers-notebook.md b/2022/organizers-notebook.md index 6b17a943..465911d6 100644 --- a/2022/organizers-notebook.md +++ b/2022/organizers-notebook.md @@ -23,31 +23,29 @@ This file is automatically exported from [/2022/organizers-notebook/index.org](/ Time-sensitive tasks: - [Send schedule-published email for emacsconf-discuss](#announce-program):needsowner:timesensitive:email: -- [Prepare email for nudging speakers to send prerec, and inform on upload workflow](#mail-upload):timesensitive:needsowner: -- [Write volunteer update 2022-10-23](#volunteer-2022-10-23) +- [Write volunteer update 2022-10-23](#volunteer-2022-10-23):update: Other projects: - [Coordinate and help volunteers](#coordinate-volunteers):sachac: - [Prepare for prerecs](#prepare-prerec-process):zaeph: -- [Investigate streaming options, maybe OBS in the cloud](#streaming):corwin: - [Work on the OBS scenes](#obs-scenes):zaeph:corwin: - [Build up the ansible playbook](#ansible):sachac:opal: -- [Make something to display between talks](#intro) +- [Make something to display between talks](#intro):sachac: - [Create protocol for live Q&A](#live-protocol):zaeph: -- [Add nice-to-have stuff to prepare.md](#extra-prepare):zaeph: - [Find volunteers for tech-checks](#tech-checks):zaeph: +- [Smoothen captioning workflow](#caption-workflow):sachac: - [Update viewing instructions and watch pages](#write-viewing):sachac: - [Prepare to handle talk state changes](#publish-live):sachac: - [Set up talks on Toobnix and YouTube](#video-platforms):sachac: - [Set up stream events on Toobnix and YouTube](#other-streams):sachac: - [Ask speakers for bios or support nudges to include on their talk pages](#speaker-bio) - [Do a dry run](#dry-run) -- [Figure out why ikiwiki is slow](#ikiwiki-regex):infra:wiki: - [Add category tags and possibly links between talks across 2022 and all previous years](#link-pages):needsowner:wiki: - [Turn off file upload service on media.emacsconf.org](#upload-off):sachac:infra: - [Plan Etherpad use and hosting](#etherpad):sachac:ansible: - [Set up BBB rooms and update conf.org](#create-bbb):sachac: +- [Investigate streaming options, maybe OBS in the cloud](#streaming):corwin: <a id="cadence"></a> @@ -108,7 +106,7 @@ Other projects: <tr> <td class="org-left"><span class="timestamp-wrapper"><span class="timestamp">[2022-10-23 Sun]</span></span></td> <td class="org-left"><a href="#upload">file upload</a></td> -<td class="org-left"><a href="#mail-upload">file upload instructions</a></td> +<td class="org-left"><a href="#mail-upload">file upload instructions</a>, backstage</td> <td class="org-left"><a href="#volunteer-2022-10-23">training</a></td> <td class="org-left"> </td> </tr> @@ -229,7 +227,7 @@ interests you! <tr> <td class="org-left"><a href="#coordinate-volunteers">volunteer coordination</a></td> <td class="org-left">ad-hoc</td> -<td class="org-left"><b>INPROGRESS playbook</b></td> +<td class="org-left"><b>DONE playbook</b></td> <td class="org-left">training meetings + recordings</td> </tr> @@ -237,8 +235,8 @@ interests you! <tr> <td class="org-left"><a href="#prepare-prerec-process">prerec</a></td> <td class="org-left">DONE play original with captions</td> -<td class="org-left">Z: normalize audio, reduce noise</td> -<td class="org-left"><b>S: post as soon as talk is live</b></td> +<td class="org-left"><b>DONE Z: normalize audio</b></td> +<td class="org-left">reduce noise</td> </tr> @@ -246,7 +244,7 @@ interests you! <td class="org-left">BBB rooms</td> <td class="org-left">about 5 rooms that we cycle through</td> <td class="org-left"> </td> -<td class="org-left"><b>S: DONE one room per speaker</b></td> +<td class="org-left"><b>DONE S: one room per speaker</b></td> </tr> @@ -270,7 +268,7 @@ interests you! <td class="org-left"><a href="#write-viewing">watch page</a></td> <td class="org-left">tracks</td> <td class="org-left">+ IRC</td> -<td class="org-left"><b>S: DONE + talk info</b>, maybe even current/recent/next</td> +<td class="org-left"><b>DONE S: + talk info</b>, maybe even current/recent/next</td> </tr> @@ -278,7 +276,7 @@ interests you! <td class="org-left"><a href="#etherpad">pad</a></td> <td class="org-left">one pad for conf</td> <td class="org-left">one pad per talk, wikimedia</td> -<td class="org-left"><b>S: DONE one pad per talk, self-hosted</b> so we can access API</td> +<td class="org-left"><b>DONE S: one pad per talk, self-hosted</b> so we can access API</td> </tr> @@ -309,7 +307,7 @@ interests you! <tr> <td class="org-left"><a href="#publish-live">talk pages</a></td> <td class="org-left">S: link to stream, pad, IRC</td> -<td class="org-left"><b>link to prerec when live</b></td> +<td class="org-left"><b>S: link to prerec when live</b></td> <td class="org-left">embed stream, pad, IRC, prerec</td> </tr> @@ -333,7 +331,7 @@ interests you! <tr> <td class="org-left"><a href="#wiki-design">wiki</a></td> <td class="org-left">plain text, markdown</td> -<td class="org-left"><b>sachac: some JS and CSS enrichment</b></td> +<td class="org-left"><b>S: some JS and CSS enrichment</b></td> <td class="org-left">more JS and CSS, embeds, videoplayer</td> </tr> @@ -349,9 +347,17 @@ interests you! <tr> <td class="org-left"><a href="#ansible">ansible</a></td> <td class="org-left">none</td> -<td class="org-left"><b>sachac: some automation</b></td> +<td class="org-left"><b>S: some automation</b></td> <td class="org-left">comprehensive, can also work against containers</td> </tr> + + +<tr> +<td class="org-left"><a href="#caption-workflow">caption workflow</a></td> +<td class="org-left">YT autosubs</td> +<td class="org-left"><b>DONE S: Whisper autosubs</b></td> +<td class="org-left">Whisper + more granular timestamps</td> +</tr> </tbody> </table> @@ -363,8 +369,7 @@ interests you! Ordered chronologically (and therefore by importance). - [Send schedule-published email for emacsconf-discuss](#announce-program):needsowner:timesensitive:email: -- [Prepare email for nudging speakers to send prerec, and inform on upload workflow](#mail-upload):timesensitive:needsowner: -- [Write volunteer update 2022-10-23](#volunteer-2022-10-23) +- [Write volunteer update 2022-10-23](#volunteer-2022-10-23):update: <a id="announce-program"></a> @@ -416,93 +421,26 @@ emacsconf-discuss list, so as to help avoid generating extra off-topic chatter in the other lists cc’d in this message; thank you. -<a id="mail-upload"></a> - -## TODO Prepare email for nudging speakers to send prerec, and inform on upload workflow :timesensitive:needsowner: - - -### Code - - (defun emacsconf-mail-upload (group &optional template) - "Send upload instructions and reminder. - GROUP is (email . (talk talk))" - (interactive (list (emacsconf-mail-complete-email-group))) - (let ((action-date (date-to-time "2022-11-04"))) - (emacsconf-mail-prepare - (or template (emacsconf-mail-merge-get-template "upload")) - group - (list - :slugs (mapconcat (lambda (o) (plist-get o :slug)) (cdr group) " or ") - :speakers-short (plist-get (cadr group) :speakers-short) - :plural (if (= (length (cdr group)) 1) "" "s") - :email (plist-get (cadr group) :email) - :year (or (plist-get (cadr group) :year) emacsconf-year) - :prerec-note (emacsconf-surround - (make-string 64 ?-) - (string-join (seq-uniq (mapcar - (lambda (o) - (plist-get o :prerec-info)) - (cdr group))) - "\n") - (make-string 64 ?-) - ""))))) - - -### Template - -Hi, ${speakers-short}! - -${prerec-note}Here are the instructions for uploading the video${plural} for your talk${plural}. -You can find the latest version of the instructions at https://emacsconf.org/2022/upload/ . -There are two ways to upload your talk${plural} this year, so you can pick the one that works best for you:${wrap} - -- Web-based: <https://ftp-upload.emacsconf.org> , password emacsconf -- FTP: host: ftp-upload.emacsconf.org, port: 21, username: anonymous - folder: upload-here - -If you upload slides and other resources, we can include them on the -talk page when your talk goes live. If you happen to have a script or -a transcript, please include them as well (it’ll speed up the -captioning for us). - -Please start your filenames with the ID for the talk that it’s for: -${slugs}. - -If you’re still working on your talk, you might find the tips at -<https://emacsconf.org/2022/prepare> useful. In brief: - -- at least 1280x720 resolution -- we recommend dark text on a light background, with enough contrast - to make it easy to read -- if possible, use a headset or external microphone to record audio -- leave 5 seconds of quiet at the end of the video to facilitate noise - reduction for us - -Please plan to upload your talk by November 4 (next Friday) so that we -can get started preparing it for streaming. If you can’t make it by -then, we can accept later submissions, although it’s a bit more of a -scramble and our stress levels go up as the conference approaches. =) -We’d really appreciate the extra time for captioning and -double-checking. Thank you for your help in getting ready for a smooth -EmacsConf 2022! - -Sacha Chua - - <a id="volunteer-2022-10-23"></a> -## TODO Write volunteer update 2022-10-23 +## TODO Write volunteer update 2022-10-23 :update: -- Updates: - - dto signed up for shifts - - created BBB rooms and added them to conf.org - - set up web-based upload, nudging speakers +- set up web-based upload, nudging speakers +- Backstage area now open with three talks, info sent to speakers and captioning volunteers +- created BBB rooms and added them to conf.org +- dto signed up for shifts - playbook drafts - <https://emacsconf.org/2022/volunteer/irc> - <https://emacsconf.org/2022/volunteer/caption> - <https://emacsconf.org/2022/volunteer/pad> - <https://emacsconf.org/2022/volunteer/checkin> - <https://emacsconf.org/2022/volunteer/host> +- tested streaming to gen and dev streams, viewing from watch pages + +next week: + +- captions +- <a id="projects"></a> @@ -511,24 +449,23 @@ Sacha Chua - [Coordinate and help volunteers](#coordinate-volunteers):sachac: - [Prepare for prerecs](#prepare-prerec-process):zaeph: -- [Investigate streaming options, maybe OBS in the cloud](#streaming):corwin: - [Work on the OBS scenes](#obs-scenes):zaeph:corwin: - [Build up the ansible playbook](#ansible):sachac:opal: -- [Make something to display between talks](#intro) +- [Make something to display between talks](#intro):sachac: - [Create protocol for live Q&A](#live-protocol):zaeph: -- [Add nice-to-have stuff to prepare.md](#extra-prepare):zaeph: - [Find volunteers for tech-checks](#tech-checks):zaeph: +- [Smoothen captioning workflow](#caption-workflow):sachac: - [Update viewing instructions and watch pages](#write-viewing):sachac: - [Prepare to handle talk state changes](#publish-live):sachac: - [Set up talks on Toobnix and YouTube](#video-platforms):sachac: - [Set up stream events on Toobnix and YouTube](#other-streams):sachac: - [Ask speakers for bios or support nudges to include on their talk pages](#speaker-bio) - [Do a dry run](#dry-run) -- [Figure out why ikiwiki is slow](#ikiwiki-regex):infra:wiki: - [Add category tags and possibly links between talks across 2022 and all previous years](#link-pages):needsowner:wiki: - [Turn off file upload service on media.emacsconf.org](#upload-off):sachac:infra: - [Plan Etherpad use and hosting](#etherpad):sachac:ansible: - [Set up BBB rooms and update conf.org](#create-bbb):sachac: +- [Investigate streaming options, maybe OBS in the cloud](#streaming):corwin: Ordered by importance. @@ -544,39 +481,6 @@ Ordered by importance. - Encourage people to sign up for [Shifts](#shifts) -### TODO Write playbooks - - -#### DONE Host :zaeph: - -<https://emacsconf.org/2022/volunteer/host> - - -#### BLOCKED Streamer :zaeph: - -Blocked by [Investigate streaming options, maybe OBS in the cloud](#streaming) - - -#### DONE Check-in - -<https://emacsconf.org/2022/volunteer/checkin/> - - -#### DONE IRC - -<https://emacsconf.org/2022/volunteer/irc/> - - -#### DONE Pad - -<https://emacsconf.org/2022/volunteer/pad/> - - -#### DONE Captions - -<https://emacsconf.org/2022/volunteer/caption/> - - ### TODO Plan training session(s), Q&A availability, recordings @@ -622,6 +526,9 @@ Other considerations: - We might want to tweak the time before keyframes (`-g`). +### TODO Check process for posting prerecs to the talk page and media directory as soon as the talk is live :sachac: + + ### TODO Figure out workflow for handling submitted prerecs We need time after the prerecs get submitted to: @@ -634,37 +541,6 @@ We need time after the prerecs get submitted to: Make changes in [As prerecorded talks come in](#prerec-process) -<a id="streaming"></a> - -## TODO Investigate streaming options, maybe OBS in the cloud :corwin: - -- Issue: zaeph was dropping frames and couldn’t pay attention to as many things as he wanted -- Issue: corwin needs assistance to not be locked in his chair for the whole conf. Premptively, zaeph can do it by broadcasting OBS scenes via the rtmp (instead of just his webcam). -- With a long day, we may want to be able to schedule hosts/streamers/publishers in shifts -- Ideal: Easy reproducible setup to spin up an OBS VM with scenes set up, allowing multiple users to connect to it at the same time. Maybe x2go or vnc? VMs with 8 vCPUs and a vGPU cost more, so it would be good to figure out what’s needed, spin it down, and then spin it up maybe the day before or something like that. -- Plus points if we can control the OBS via password-protected websocket so we can tell it to switch scenes (and even more points if we do so from Emacs, maybe via that obs-websocket.el ;) ). MPV is also controllable via IPC, so we can use the same MPV player and then switch videos around. Maybe mpvc? <https://unix.stackexchange.com/questions/664728/how-can-i-control-mpv-in-command-line> -- Probably Linode’s Dedicated 32 GB + RTX6000 GPU x1 at $1.50 an hour for 2-3 days + dev time, since live.emacsconf.org is in Linode as well -- We should also look into normalization across the board, especially if we have BBB participants. pipewire + easyeffects on the box might be the easiest way to do it. - -Resources: - -- <https://blog.wirelessmoves.com/2021/07/running-obs-studio-in-the-cloud.html> - -- Multiple users accessing X11 - - Apache Guacamole - - <https://askubuntu.com/questions/817970/how-to-setup-multiple-simultaneous-access-to-x11vnc-session> - - <https://xpra.org/> - - -### TODO corwin: plan an approach to use a centralized OBS/nginix “bouncer” :corwin: - - -### TODO corwin: document such that someone else could use/fix it :corwin: - - -### TODO corwin: recruit at least one more person to help operate the “video bouncer” :corwin: - - <a id="obs-scenes"></a> ## TODO Work on the OBS scenes :zaeph:corwin: @@ -695,7 +571,12 @@ in prod or docker container ### TODO restreamers on live0 -### TODO icecast on live0 +### STARTED icecast on live0 + +(find-file “/ssh:live|sudo::/etc/icecast2/icecast.xml”) + + +#### TODO Set up watch/gen-480p ### TODO publishing environment @@ -709,7 +590,7 @@ in prod or docker container <a id="intro"></a> -## BLOCKED Make something to display between talks +## TODO Make something to display between talks :sachac: Goals: @@ -721,10 +602,6 @@ What to show in between talks: - Previous talk: title, speaker, pronouns, talk page, Q&A information (if still live) - Next talk: title, speaker, pronouns, talk page, Q&A information, countdown -If it’s static, this needs to wait for the decision on how we’re going -to use Etherpad, or we should have friendly URLs redirect to the right -pads - - Good: Static image, maybe created with LaTeX - Better: Video with unobtrusive sound so people can doublecheck that their audio works - Best: Emacs thing so that we can have a dynamic timer and last-minute announcements, and so that it’s Emacs =) @@ -747,14 +624,6 @@ Comments: - It would be nice to have a protocol with speakers to tell us that they’re uncomfortable with a question, just so that we can find a smooth way to skip it. -<a id="extra-prepare"></a> - -## STANDBY Add nice-to-have stuff to prepare.md :zaeph: - -- org-reveal config -- SIL fonts choice - - <a id="tech-checks"></a> ## INPROGRESS Find volunteers for tech-checks :zaeph: @@ -784,6 +653,21 @@ From previous years: > - Do you need help finding your way around IRC so that you can check into \`#emacsconf-org\`? What is your IRC nickname? +<a id="caption-workflow"></a> + +## TODO Smoothen captioning workflow :sachac: + +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. + + +### TODO Investigate more granular timestamps for the output from OpenAPI Whisper + +<https://stackoverflow.com/questions/73822353/how-can-i-get-word-level-timestamps-in-openais-whisper-asr> + + <a id="write-viewing"></a> ## DONE Update viewing instructions and watch pages :sachac: @@ -927,14 +811,6 @@ zaeph is available on 2022-11-06 - [ ] Wind everything down -<a id="ikiwiki-regex"></a> - -## TODO Figure out why ikiwiki is slow :infra:wiki: - -complex regular expression issues? -should the captions be outside the wiki? - - <a id="link-pages"></a> ## TODO Add category tags and possibly links between talks across 2022 and all previous years :needsowner:wiki: @@ -1092,6 +968,39 @@ see conf.org for the rest of the process ### TODO Add volunteers to the BBB rooms +<a id="streaming"></a> + +## TODO Investigate streaming options, maybe OBS in the cloud :corwin: + +- bandali doesn’t have much cognitive bandwidth at the moment, so we can keep things simple with OBS on laptops + +- Issue: zaeph was dropping frames and couldn’t pay attention to as many things as he wanted +- Issue: corwin needs assistance to not be locked in his chair for the whole conf. Premptively, zaeph can do it by broadcasting OBS scenes via the rtmp (instead of just his webcam). +- With a long day, we may want to be able to schedule hosts/streamers/publishers in shifts +- Ideal: Easy reproducible setup to spin up an OBS VM with scenes set up, allowing multiple users to connect to it at the same time. Maybe x2go or vnc? VMs with 8 vCPUs and a vGPU cost more, so it would be good to figure out what’s needed, spin it down, and then spin it up maybe the day before or something like that. +- Plus points if we can control the OBS via password-protected websocket so we can tell it to switch scenes (and even more points if we do so from Emacs, maybe via that obs-websocket.el ;) ). MPV is also controllable via IPC, so we can use the same MPV player and then switch videos around. Maybe mpvc? <https://unix.stackexchange.com/questions/664728/how-can-i-control-mpv-in-command-line> +- Probably Linode’s Dedicated 32 GB + RTX6000 GPU x1 at $1.50 an hour for 2-3 days + dev time, since live.emacsconf.org is in Linode as well +- We should also look into normalization across the board, especially if we have BBB participants. pipewire + easyeffects on the box might be the easiest way to do it. + +Resources: + +- <https://blog.wirelessmoves.com/2021/07/running-obs-studio-in-the-cloud.html> + +- Multiple users accessing X11 + - Apache Guacamole + - <https://askubuntu.com/questions/817970/how-to-setup-multiple-simultaneous-access-to-x11vnc-session> + - <https://xpra.org/> + + +### TODO corwin: plan an approach to use a centralized OBS/nginix “bouncer” :corwin: + + +### TODO corwin: document such that someone else could use/fix it :corwin: + + +### TODO corwin: recruit at least one more person to help operate the “video bouncer” :corwin: + + <a id="maybe-projects"></a> # Projects to bear in mind but which are not actual @@ -1817,6 +1726,71 @@ We tried using q56 before, but it was a little too aggressive. Q=32 is the defau fi +### sachac + +- download to local cache + ~/proj/emacsconf/private/sync-cache +- upload to YouTube in case we can get autogenerated subtitles from there + <https://studio.youtube.com/channel/UCwuyodzTl_KdEKNuJmeo99A/videos/upload?filter=%5B%5D&sort=%7B%22columnType%22%3A%22date%22%2C%22sortOrder%22%3A%22DESCENDING%22%7D> +- upload to res:~/2022/captions +- caption.sh +- sync-cache to copy the vtt +- emacsconf-make-backstage-index +- send confirmation e-mail + + +### Confirmation e-mail + + +<a id="ack-prerec"></a> + +#### Acknowledge pre-rec submission + + (defun emacsconf-mail-acknowledge-submission (talk &optional template) + (interactive (list (emacsconf-complete-talk-info))) + (emacsconf-mail-prepare + (or template (emacsconf-mail-merge-get-template "ack-prerec")) + (plist-get talk :email) + (list + :backstage "https://media.emacsconf.org/2022/backstage/" + :backstage-user "emacsconf" + :backstage-password emacsconf-backstage-password + :time (plist-get talk :time) + :title (plist-get talk :title) + :email (plist-get talk :email) + :minutes (plist-get talk :video-time) + :speakers-short (plist-get talk :speakers-short) + :url (concat emacsconf-base-url (plist-get talk :url)) + :year emacsconf-year))) + + +#### Template + +Hi, ${speakers-short}! + +Just a quick note to let you know that I’ve downloaded your +submission for “${title}”. We’ve added your submission to the backstage +area at ${backstage} (username: ${backstage-user}, password: +${backstage-password}), and we’ll post the files on your talk page +when the talk is public. A quick check shows that your video is about +${minutes} minutes long (${time} minutes budgeted).${wrap} + +We’ll be working on captioning it over the next few weeks. We’ll +e-mail again a little closer to the conference with schedule updates +and other useful information. If you want to upload a new version, you +can upload it the same way you did the previous one. + +Please feel free to e-mail us at emacsconf-submit@gnu.org if you need +help updating the talk wiki page at ${url} or if you have other +questions.${wrap} + +Thank you so much for all the work you put into preparing a talk for +EmacsConf ${year}, and thank you for submitting the prerecorded video +before the conference! + +Sacha Chua + + <a id="when-captioned"></a> ## When a talk is captioned @@ -2307,7 +2281,7 @@ Probably focus on grabbing the audio first and seeing what’s worth keeping Make a table of the form -<table id="orgecfc040" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"> +<table id="org1b57c8d" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"> <colgroup> @@ -2775,7 +2749,7 @@ Look for the TO\_CONFIRM status in conf.org, probably include in schedule e-mail (draft-schedule (concat emacsconf-base-url emacsconf-year "/draft-schedule/"))) (emacsconf-mail-prepare (or template (emacsconf-mail-merge-get-template "check-sched")) - group + (car group) (list :titles (mapconcat (lambda (o) (format "%s: %s" @@ -2849,7 +2823,7 @@ Look for the TO\_CONFIRM status in conf.org, probably include in schedule e-mail (draft-schedule (concat emacsconf-base-url emacsconf-year "/draft-schedule/"))) (emacsconf-mail-prepare (or template (emacsconf-mail-merge-get-template "check-sched")) - group + (car group) (list :titles (mapconcat (lambda (o) (format "%s: %s" @@ -3247,6 +3221,202 @@ Where: It’s now on front. +<a id="mail-upload"></a> + +## DONE Prepare email for nudging speakers to send prerec, and inform on upload workflow :timesensitive:needsowner: + + +### Code + + (defun emacsconf-mail-upload (group &optional template) + "Send upload instructions and reminder. + GROUP is (email . (talk talk))" + (interactive (list (emacsconf-mail-complete-email-group))) + (let ((action-date (date-to-time "2022-11-04"))) + (emacsconf-mail-prepare + (or template (emacsconf-mail-merge-get-template "upload")) + (car group) + (list + :slugs (mapconcat (lambda (o) (plist-get o :slug)) (cdr group) " or ") + :speakers-short (plist-get (cadr group) :speakers-short) + :plural (if (= (length (cdr group)) 1) "" "s") + :email (plist-get (cadr group) :email) + :year (or (plist-get (cadr group) :year) emacsconf-year) + :prerec-note (emacsconf-surround + (make-string 64 ?-) + (string-join (seq-uniq (mapcar + (lambda (o) + (plist-get o :prerec-info)) + (cdr group))) + "\n") + (make-string 64 ?-) + ""))))) + + +### Template + +Hi, ${speakers-short}! + +${prerec-note}Here are the instructions for uploading the video${plural} for your talk${plural}. +You can find the latest version of the instructions at https://emacsconf.org/2022/upload/ . +There are two ways to upload your talk${plural} this year, so you can pick the one that works best for you:${wrap} + +- Web-based: <https://ftp-upload.emacsconf.org> , password emacsconf +- FTP: host: ftp-upload.emacsconf.org, port: 21, username: anonymous + folder: upload-here + +If you upload slides and other resources, we can include them on the +talk page when your talk goes live. If you happen to have a script or +a transcript, please include them as well (it’ll speed up the +captioning for us). + +Please start your filenames with the ID for the talk that it’s for: +${slugs}. + +If you’re still working on your talk, you might find the tips at +<https://emacsconf.org/2022/prepare> useful. In brief: + +- at least 1280x720 resolution +- we recommend dark text on a light background, with enough contrast + to make it easy to read +- if possible, use a headset or external microphone to record audio +- leave 5 seconds of quiet at the end of the video to facilitate noise + reduction for us + +Please plan to upload your talk by November 4 (next Friday) so that we +can get started preparing it for streaming. If you can’t make it by +then, we can accept later submissions, although it’s a bit more of a +scramble and our stress levels go up as the conference approaches. =) +We’d really appreciate the extra time for captioning and +double-checking. Thank you for your help in getting ready for a smooth +EmacsConf 2022! + +Sacha Chua + + +## DONE Send backstage email + + (defun emacsconf-mail-backstage-info (group &optional template) + (interactive (list (emacsconf-complete-talk-info))) + (emacsconf-mail-prepare + (or template (emacsconf-mail-merge-get-template "backstage")) + (plist-get group :email) + (append group + (list + :backstage "https://media.emacsconf.org/2022/backstage/" + :backstage-user "emacsconf" + :backstage-password emacsconf-backstage-password + :conf-name emacsconf-name + :year emacsconf-year)))) + (defun emacsconf-mail-backstage-info-to-speakers-and-captioners () + (interactive) + (let ((template (emacsconf-mail-merge-get-template "backstage")) + (speaker-groups + (seq-uniq + (mapcar + (lambda (talk) + (list + :name (plist-get talk :speakers-short) + :email (plist-get talk :email) + :role "speaker" + :backstage-use + "As we add more talks, you can skim through any relevant ones to + see if there are any points you'd like to build on in your talk. + Also, you can get a sense of what we do behind the scenes to try + to get as many talks captioned for broadcast, and what you can do + to make it easier. (A text file with names and technical terms + can be helpful. No need to type out a manual transcript if you + don't start from a script.) After you upload your talk and we + process the files, you can use the backstage area to check the + quality of the reencoded video.")) + (seq-filter (lambda (o) (string= (plist-get o :status) "WAITING_FOR_PREREC")) + (emacsconf-filter-talks (emacsconf-get-talk-info)))))) + (volunteer-groups + (with-current-buffer (find-file-noselect emacsconf-org-file) + (org-map-entries (lambda () + (list :name (org-entry-get (point) "NAME_SHORT") + :email (org-entry-get (point) "EMAIL") + :role "captioning volunteer" + :backstage-use "If you see a talk that you'd like to caption, you can e-mail me at sacha@sachachua.com and I can reserve it for you.")) + "captions")))) + (mapcar (lambda (g) (emacsconf-mail-backstage-info g template)) + (append + speaker-groups + (seq-remove (lambda (v) (seq-find (lambda (s) (string= (plist-get s :email) + (plist-get v :email))) + speaker-groups)) + volunteer-groups))))) + + +### Template + +Hi ${name}! + +You’re getting this e-mail because you are a ${role} for ${conf-name} +${year}. (Thanks!)${wrap} + +I’m so excited! =) A number of speakers have uploaded their videos, +and OpenAI Whisper looks like a promising way to get automatically +generated captions that we can use as a starting point. + +We’ve set up ${backstage} as the backstage area where you can view the +videos and resources uploaded so far. You can access it with the +username "${backstage-user}“ and the password ”${backstage-password}“. +Please keep the backstage password and other speakers’ talk resources +secret. ${backstage-use}${wrap} + +Thank you! + +Sacha Chua + + +## DONE Write playbooks + + +### DONE Host :zaeph: + +<https://emacsconf.org/2022/volunteer/host> + + +### CANCELLED Streamer :zaeph: + +Blocked by [Investigate streaming options, maybe OBS in the cloud](#streaming) + +bandali and corwin/zaeph will do the streaming, so writing the streaming playbook is a little lower priority for now + + +### DONE Check-in + +<https://emacsconf.org/2022/volunteer/checkin/> + + +### DONE IRC + +<https://emacsconf.org/2022/volunteer/irc/> + + +### DONE Pad + +<https://emacsconf.org/2022/volunteer/pad/> + + +### DONE Captions + +<https://emacsconf.org/2022/volunteer/caption/> + + +## CANCELLED Figure out why ikiwiki is slow :infra:wiki: + +complex regular expression issues? +should the captions be outside the wiki? + + +## CANCELLED Add nice-to-have stuff to prepare.md :zaeph: + +- org-reveal config +- SIL fonts choice + + <a id="comms"></a> # Communications @@ -3350,7 +3520,7 @@ Objectives for this e-mail: :prerec-target (format-time-string "%b %-e" prerec-target))) (plist-get o :acceptance-comment)) 72))) talks "\n---------------------------------------------------------------------\n")))) - (emacsconf-mail-prepare template group attrs))) + (emacsconf-mail-prepare template (car group) attrs))) (defun emacsconf-draft-all-acceptances () (interactive) @@ -3420,39 +3590,6 @@ Sacha Chua ## Future -<a id="ack-prerec"></a> - -### Acknowledge pre-rec submission - - (defun emacsconf-acknowledge-submission () - (interactive) - (let ((files (directory-files "captions" t (regexp-quote (org-entry-get (point) "VIDEO_SLUG")))) - (page (format "https://emacsconf.org/%s/talks/%s" conf-year (org-entry-get (point) "SLUG"))) - (slug (org-entry-get (point) "VIDEO_SLUG"))) - (emacsconf-mail-speaker - "Thanks for sending us your prerecorded video for EmacsConf ${year}!" - (concat - "Hi! Just a quick note to let you know that I've downloaded your submission for \"" (org-entry-get (point) "ITEM") "\".\n" - (format "\nNow we have the following file%s starting with %s:\n%s" - (if (= (length files) 1) "" "s") - slug - (mapconcat (lambda (f) - (format "- %s (%s, md5: %s)\n" - (replace-regexp-in-string slug "" (file-name-nondirectory f)) - (file-size-human-readable (file-attribute-size (file-attributes f))) - (string-trim (shell-command-to-string (concat "md5sum " (shell-quote-argument f) " | cut -f 1 -d ' '"))))) - files "")) - (format "A quick check shows that it's about %d minutes long.\n" - (ceiling - (/ (compile-media-get-file-duration-ms - (seq-find (lambda (o) (member (file-name-extension o) subed-video-extensions)) - files)) - 60000.0))) - "\nWe'll be working on captioning it over the next few weeks. We'll e-mail again a little closer to the conference with schedule updates and other useful information. If you want to upload a new version, you can upload it the same way you did the previous one.\n\n" - "Please feel free to e-mail us at emacsconf-submit@gnu.org if you need help updating the talk wiki page at " page " or if you have other questions.\n\n" - "Thank you so much for all the work you put into preparing a talk for EmacsConf ${year}, and thank you for submitting the prerecorded video before the conference!\n\nSacha")))) - - <a id="approve-captions"></a> ### Captions for approval diff --git a/2022/organizers-notebook/index.org b/2022/organizers-notebook/index.org index 86057caa..0403fcd3 100644 --- a/2022/organizers-notebook/index.org +++ b/2022/organizers-notebook/index.org @@ -61,7 +61,7 @@ or ~C-c \~ (~org-match-sparse-tree~) to see anything tagged with your tag. | [2022-09-30 Fri] | | [[#acceptance][acceptance, reply to confirm]] | | | | [2022-10-09 Sun] | | [[#check-sched][schedule, reply if not okay]] | [[#volunteer-2022-10-09][overall priorities]] | | | [2022-10-16 Sun] | [[#etherpad][Etherpad]], [[#upload][stream]] | | infra update | | -| [2022-10-23 Sun] | [[#upload][file upload]] | [[#mail-upload][file upload instructions]] | [[#volunteer-2022-10-23][training]] | | +| [2022-10-23 Sun] | [[#upload][file upload]] | [[#mail-upload][file upload instructions]], backstage | [[#volunteer-2022-10-23][training]] | | | [2022-10-30 Sun] | [[#intro][intro, exit]] | | [[#shifts][shifts]] | [[#announce-program][schedule]], posters? | | [2022-11-06 Sun] | [[#write-viewing][watch pages]], prerecs | [[#ack-prerec][prerec confirmation]]/reminder, [[#approve-captions][caption progress]] | caption kickoff | | | [2022-11-13 Sun] | [[#dry-run][dry run]], captions | tech check, bio, support links (ex: Liberapay)? | | | @@ -81,28 +81,29 @@ scramble to do in order to get the conference off the ground. *bold* is our current goal. Feel free to volunteer for anything that interests you! -| | Good | Better | Best | -|------------------------+-------------------------------------+--------------------------------------+--------------------------------------------------------------| -| [[#sched-decision][schedule]] | one track | *DONE S: two tracks* | aligned times, full roster | -| schedule view | text table | imagemap fallback | *DONE S: interactive SVG* | -| [[#upload][upload]] | FTP | *DONE S: web-based* | auto-encoded, preview (SReview?) | -| [[#streaming][streaming]] | ffmpeg from computer | *DONE OBS* | ?: OBS in cloud, switchable hosts | -| [[#coordinate-volunteers][volunteer coordination]] | ad-hoc | *INPROGRESS playbook* | training meetings + recordings | -| [[#prepare-prerec-process][prerec]] | DONE play original with captions | Z: normalize audio, reduce noise | *S: post as soon as talk is live* | -| BBB rooms | about 5 rooms that we cycle through | | *S: DONE one room per speaker* | -| host | no host, speaker reads pad | *host reads pad* | host monitors IRC and helps with BBB as well | -| BBB Q&A | none | *DONE open to community* | moderated by speaker and host | -| [[#write-viewing][watch page]] | tracks | + IRC | *S: DONE + talk info*, maybe even current/recent/next | -| [[#etherpad][pad]] | one pad for conf | one pad per talk, wikimedia | *S: DONE one pad per talk, self-hosted* so we can access API | -| [[#irc][IRC]] | #emacsconf, -org | *DONE #emacsconf, -gen, -dev, -org* | IRC volunteer copying to pads; maybe even IRC bots | -| [[#irc-announce][IRC announcements]] | *DONE S: ERC commands* | timer-based | bot commands | -| [[#publishing-sched][sched update]] | *DONE S: publish at start* | update main sched | update talk pages | -| [[#publish-live][talk pages]] | S: link to stream, pad, IRC | *link to prerec when live* | embed stream, pad, IRC, prerec | -| [[#other-streams][other streams]] | 480p | + Toobnix | *S: + YouTube* | -| [[#video-platforms][other platforms]] | *S: Toobnix & YT after event* | | S: Toobnix + YT when live | -| [[#wiki-design][wiki]] | plain text, markdown | *sachac: some JS and CSS enrichment* | more JS and CSS, embeds, videoplayer | -| [[#intro][intro and exit]] | *generic static image* | per-talk image | Emacs thing so we can display info, countdowns, IRC | -| [[#ansible][ansible]] | none | *sachac: some automation* | comprehensive, can also work against containers | +| | Good | Better | Best | +|------------------------+-------------------------------------+-------------------------------------+--------------------------------------------------------------| +| [[#sched-decision][schedule]] | one track | *DONE S: two tracks* | aligned times, full roster | +| schedule view | text table | imagemap fallback | *DONE S: interactive SVG* | +| [[#upload][upload]] | FTP | *DONE S: web-based* | auto-encoded, preview (SReview?) | +| [[#streaming][streaming]] | ffmpeg from computer | *DONE OBS* | ?: OBS in cloud, switchable hosts | +| [[#coordinate-volunteers][volunteer coordination]] | ad-hoc | *DONE playbook* | training meetings + recordings | +| [[#prepare-prerec-process][prerec]] | DONE play original with captions | *DONE Z: normalize audio* | reduce noise | +| BBB rooms | about 5 rooms that we cycle through | | *DONE S: one room per speaker* | +| host | no host, speaker reads pad | *host reads pad* | host monitors IRC and helps with BBB as well | +| BBB Q&A | none | *DONE open to community* | moderated by speaker and host | +| [[#write-viewing][watch page]] | tracks | + IRC | *DONE S: + talk info*, maybe even current/recent/next | +| [[#etherpad][pad]] | one pad for conf | one pad per talk, wikimedia | *DONE S: one pad per talk, self-hosted* so we can access API | +| [[#irc][IRC]] | #emacsconf, -org | *DONE #emacsconf, -gen, -dev, -org* | IRC volunteer copying to pads; maybe even IRC bots | +| [[#irc-announce][IRC announcements]] | *DONE S: ERC commands* | timer-based | bot commands | +| [[#publishing-sched][sched update]] | *DONE S: publish at start* | update main sched | update talk pages | +| [[#publish-live][talk pages]] | S: link to stream, pad, IRC | *S: link to prerec when live* | embed stream, pad, IRC, prerec | +| [[#other-streams][other streams]] | 480p | + Toobnix | *S: + YouTube* | +| [[#video-platforms][other platforms]] | *S: Toobnix & YT after event* | | S: Toobnix + YT when live | +| [[#wiki-design][wiki]] | plain text, markdown | *S: some JS and CSS enrichment* | more JS and CSS, embeds, videoplayer | +| [[#intro][intro and exit]] | *generic static image* | per-talk image | Emacs thing so we can display info, countdowns, IRC | +| [[#ansible][ansible]] | none | *S: some automation* | comprehensive, can also work against containers | +| [[#caption-workflow][caption workflow]] | YT autosubs | *DONE S: Whisper autosubs* | Whisper + more granular timestamps | * Time-sensitive :PROPERTIES: @@ -162,102 +163,27 @@ P.S. please direct all replies to this post either to myself or to the emacsconf-discuss list, so as to help avoid generating extra off-topic chatter in the other lists cc'd in this message; thank you. -** TODO Prepare email for nudging speakers to send prerec, and inform on upload workflow :timesensitive:needsowner: -:PROPERTIES: -:CUSTOM_ID: mail-upload -:END: - -*** Code - -#+begin_src emacs-lisp -(defun emacsconf-mail-upload (group &optional template) - "Send upload instructions and reminder. -GROUP is (email . (talk talk))" - (interactive (list (emacsconf-mail-complete-email-group))) - (let ((action-date (date-to-time "2022-11-04"))) - (emacsconf-mail-prepare - (or template (emacsconf-mail-merge-get-template "upload")) - group - (list - :slugs (mapconcat (lambda (o) (plist-get o :slug)) (cdr group) " or ") - :speakers-short (plist-get (cadr group) :speakers-short) - :plural (if (= (length (cdr group)) 1) "" "s") - :email (plist-get (cadr group) :email) - :year (or (plist-get (cadr group) :year) emacsconf-year) - :prerec-note (emacsconf-surround - (make-string 64 ?-) - (string-join (seq-uniq (mapcar - (lambda (o) - (plist-get o :prerec-info)) - (cdr group))) - "\n") - (make-string 64 ?-) - ""))))) -#+end_src - -*** Template -:PROPERTIES: -:EMAIL_ID: upload -:FUNCTION: emacsconf-mail-upload -:SUBJECT: EmacsConf upload instructions -:REPLY_TO: emacsconf-submit@gnu.org, ${email} -:MAIL_FOLLOWUP_TO: emacsconf-submit@gnu.org, ${email} -:CC: emacsconf-submit@gnu.org -:END: - -Hi, ${speakers-short}! - -${prerec-note}Here are the instructions for uploading the video${plural} for your talk${plural}. -You can find the latest version of the instructions at https://emacsconf.org/2022/upload/ . -There are two ways to upload your talk${plural} this year, so you can pick the one that works best for you:${wrap} - -- Web-based: https://ftp-upload.emacsconf.org , password emacsconf -- FTP: host: ftp-upload.emacsconf.org, port: 21, username: anonymous - folder: upload-here - -If you upload slides and other resources, we can include them on the -talk page when your talk goes live. If you happen to have a script or -a transcript, please include them as well (it’ll speed up the -captioning for us). - -Please start your filenames with the ID for the talk that it's for: -${slugs}. - -If you're still working on your talk, you might find the tips at -https://emacsconf.org/2022/prepare useful. In brief: - -- at least 1280x720 resolution -- we recommend dark text on a light background, with enough contrast - to make it easy to read -- if possible, use a headset or external microphone to record audio -- leave 5 seconds of quiet at the end of the video to facilitate noise - reduction for us - -Please plan to upload your talk by November 4 (next Friday) so that we -can get started preparing it for streaming. If you can't make it by -then, we can accept later submissions, although it's a bit more of a -scramble and our stress levels go up as the conference approaches. =) -We'd really appreciate the extra time for captioning and -double-checking. Thank you for your help in getting ready for a smooth -EmacsConf 2022! - -Sacha Chua -** TODO Write volunteer update 2022-10-23 +** TODO Write volunteer update 2022-10-23 :update: :PROPERTIES: :CUSTOM_ID: volunteer-2022-10-23 :END: -- Updates: - - dto signed up for shifts - - created BBB rooms and added them to conf.org - - set up web-based upload, nudging speakers +- set up web-based upload, nudging speakers +- Backstage area now open with three talks, info sent to speakers and captioning volunteers +- created BBB rooms and added them to conf.org +- dto signed up for shifts - playbook drafts - https://emacsconf.org/2022/volunteer/irc - https://emacsconf.org/2022/volunteer/caption - https://emacsconf.org/2022/volunteer/pad - https://emacsconf.org/2022/volunteer/checkin - https://emacsconf.org/2022/volunteer/host - +- tested streaming to gen and dev streams, viewing from watch pages + +next week: +- captions +- + * Projects and other long-running tasks :PROPERTIES: :CUSTOM_ID: projects @@ -277,34 +203,6 @@ Ordered by importance. https://wiki.debian.org/DebConf/21/VideoVolunteering - Encourage people to sign up for [[#shifts]] -*** TODO Write playbooks -**** DONE Host :zaeph: -CLOSED: [2022-10-20 Thu 11:30] -https://emacsconf.org/2022/volunteer/host - -**** BLOCKED Streamer :zaeph: -:PROPERTIES: -:CUSTOM_ID: inform-streamer-volunteers -:END: -Blocked by [[#streaming]] -**** DONE Check-in -CLOSED: [2022-10-16 Sun 21:26] -[[https://emacsconf.org/2022/volunteer/checkin/]] -**** DONE IRC -CLOSED: [2022-10-16 Sun 21:38] -https://emacsconf.org/2022/volunteer/irc/ -**** DONE Pad -CLOSED: [2022-10-17 Mon 00:25] -:PROPERTIES: -:CUSTOM_ID: inform-pad-volunteers -:END: -https://emacsconf.org/2022/volunteer/pad/ -**** DONE Captions -CLOSED: [2022-10-17 Mon 00:25] -:PROPERTIES: -:CUSTOM_ID: inform-pad-volunteers -:END: -https://emacsconf.org/2022/volunteer/caption/ *** TODO Plan training session(s), Q&A availability, recordings *** BLOCKED Hold Q&A session with volunteers :PROPERTIES: @@ -325,6 +223,10 @@ ffmpeg -y -i "$1" -c:v libvpx-vp9 -b:v 0 -crf $Q -aq-mode 2 -an -tile-columns 0 ffmpeg -y -i "$1" -c:v libvpx-vp9 -b:v 0 -crf $Q -c:a copy -tile-columns 2 -tile-rows 2 -frame-parallel 0 -cpu-used -5 -auto-alt-ref 1 -lag-in-frames 25 -pass 2 -g 240 -threads 8 "$2" #+end_src +#+RESULTS: +:results: +:end: + **** New candidate Changelog: - Disable adaptive quantization by setting aq-mode to 0 (TODO: compare samples) @@ -343,7 +245,7 @@ ffmpeg -y -i "$1" -c:v libvpx-vp9 -b:v 0 -crf $Q -an -row-mt 1 -tile-columns 2 - Other considerations: - We might want to tweak the time before keyframes (~-g~). - +*** TODO Check process for posting prerecs to the talk page and media directory as soon as the talk is live :sachac: *** TODO Figure out workflow for handling submitted prerecs We need time after the prerecs get submitted to: - convert the videos and check that they've been reencoded properly by watching the re-encoded ones all the way to the end @@ -353,32 +255,6 @@ We need time after the prerecs get submitted to: Make changes in [[#prerec-process]] -** TODO Investigate streaming options, maybe OBS in the cloud :corwin: -DEADLINE: <2022-11-20 Sun> -:PROPERTIES: -:CUSTOM_ID: streaming -:END: - -- Issue: zaeph was dropping frames and couldn’t pay attention to as many things as he wanted -- Issue: corwin needs assistance to not be locked in his chair for the whole conf. Premptively, zaeph can do it by broadcasting OBS scenes via the rtmp (instead of just his webcam). -- With a long day, we may want to be able to schedule hosts/streamers/publishers in shifts -- Ideal: Easy reproducible setup to spin up an OBS VM with scenes set up, allowing multiple users to connect to it at the same time. Maybe x2go or vnc? VMs with 8 vCPUs and a vGPU cost more, so it would be good to figure out what's needed, spin it down, and then spin it up maybe the day before or something like that. -- Plus points if we can control the OBS via password-protected websocket so we can tell it to switch scenes (and even more points if we do so from Emacs, maybe via that obs-websocket.el ;) ). MPV is also controllable via IPC, so we can use the same MPV player and then switch videos around. Maybe mpvc? https://unix.stackexchange.com/questions/664728/how-can-i-control-mpv-in-command-line -- Probably Linode's Dedicated 32 GB + RTX6000 GPU x1 at $1.50 an hour for 2-3 days + dev time, since live.emacsconf.org is in Linode as well -- We should also look into normalization across the board, especially if we have BBB participants. pipewire + easyeffects on the box might be the easiest way to do it. - -Resources: -- https://blog.wirelessmoves.com/2021/07/running-obs-studio-in-the-cloud.html - -- Multiple users accessing X11 - - Apache Guacamole - - https://askubuntu.com/questions/817970/how-to-setup-multiple-simultaneous-access-to-x11vnc-session - - https://xpra.org/ - -*** TODO corwin: plan an approach to use a centralized OBS/nginix "bouncer" :corwin: -*** TODO corwin: document such that someone else could use/fix it :corwin: -*** TODO corwin: recruit at least one more person to help operate the "video bouncer" :corwin: - ** TODO Work on the OBS scenes :zaeph:corwin: DEADLINE: <2022-11-11 Fri> :PROPERTIES: @@ -411,13 +287,15 @@ CLOCK: [2022-10-20 Thu 12:36] :END: (find-file "/ssh:live|sudo::/etc/icecast2/icecast.xml") -**** TODO Set up watch/gen/480p +**** TODO Set up watch/gen-480p + + *** TODO publishing environment *** DONE Get ansible to run against a clean docker CLOSED: [2022-10-11 Tue 12:20] *** DONE Set up Etherpad with MySQL -** BLOCKED Make something to display between talks +** TODO Make something to display between talks :sachac: :PROPERTIES: :CREATED: [2022-10-03 Mon 07:50] :CUSTOM_ID: intro @@ -431,10 +309,6 @@ What to show in between talks: - Previous talk: title, speaker, pronouns, talk page, Q&A information (if still live) - Next talk: title, speaker, pronouns, talk page, Q&A information, countdown -If it's static, this needs to wait for the decision on how we're going -to use Etherpad, or we should have friendly URLs redirect to the right -pads - - Good: Static image, maybe created with LaTeX - Better: Video with unobtrusive sound so people can doublecheck that their audio works - Best: Emacs thing so that we can have a dynamic timer and last-minute announcements, and so that it's Emacs =) @@ -452,13 +326,6 @@ Objective: Comments: - It would be nice to have a protocol with speakers to tell us that they’re uncomfortable with a question, just so that we can find a smooth way to skip it. -** STANDBY Add nice-to-have stuff to prepare.md :zaeph: -:PROPERTIES: -:CUSTOM_ID: extra-prepare -:END: -- org-reveal config -- SIL fonts choice - ** INPROGRESS Find volunteers for tech-checks :zaeph: :PROPERTIES: :CUSTOM_ID: tech-checks @@ -480,6 +347,16 @@ From previous years: - Can you share contact information (ex: phone number) so that we can get in touch with you in case of technical issues or scheduling changes? - Do you need help finding your way around IRC so that you can check into `#emacsconf-org`? What is your IRC nickname? #+end_quote +** TODO Smoothen captioning workflow :sachac: +:PROPERTIES: +:CUSTOM_ID: caption-workflow +:END: +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. +*** TODO Investigate more granular timestamps for the output from OpenAPI Whisper +https://stackoverflow.com/questions/73822353/how-can-i-get-word-level-timestamps-in-openais-whisper-asr ** DONE Update viewing instructions and watch pages :sachac: CLOSED: [2022-10-14 Fri 15:02] :PROPERTIES: @@ -573,7 +450,6 @@ so that people on other platforms can come across EmacsConf :END: maybe after we get the prerecs ex: liberapay, patreon, anyone looking for a job, etc. - ** BLOCKED Do a dry run SCHEDULED: <2022-11-06 Sun> :PROPERTIES: @@ -608,12 +484,6 @@ zaeph is available on 2022-11-06 - [ ] Message on the schedule - [ ] Prerec live - [ ] Wind everything down -** TODO [#C] Figure out why ikiwiki is slow :infra:wiki: -:PROPERTIES: -:CUSTOM_ID: ikiwiki-regex -:END: -complex regular expression issues? -should the captions be outside the wiki? ** TODO [#C] Add category tags and possibly links between talks across 2022 and all previous years :needsowner:wiki: :PROPERTIES: :CUSTOM_ID: link-pages @@ -635,7 +505,6 @@ SCHEDULED: <2022-12-14 Wed> :CUSTOM_ID: upload-off :END: ** INPROGRESS [#C] Plan Etherpad use and hosting :sachac:ansible: -DEADLINE: <2022-10-15 Sat> :PROPERTIES: :CUSTOM_ID: etherpad :END: @@ -775,6 +644,34 @@ console.log(JSON.stringify([...document.querySelectorAll('.delete-room')].map((o see conf.org for the rest of the process *** TODO Add volunteers to the BBB rooms +** TODO [#C] Investigate streaming options, maybe OBS in the cloud :corwin: +DEADLINE: <2022-11-20 Sun> +:PROPERTIES: +:CUSTOM_ID: streaming +:END: + +- bandali doesn't have much cognitive bandwidth at the moment, so we can keep things simple with OBS on laptops + +- Issue: zaeph was dropping frames and couldn’t pay attention to as many things as he wanted +- Issue: corwin needs assistance to not be locked in his chair for the whole conf. Premptively, zaeph can do it by broadcasting OBS scenes via the rtmp (instead of just his webcam). +- With a long day, we may want to be able to schedule hosts/streamers/publishers in shifts +- Ideal: Easy reproducible setup to spin up an OBS VM with scenes set up, allowing multiple users to connect to it at the same time. Maybe x2go or vnc? VMs with 8 vCPUs and a vGPU cost more, so it would be good to figure out what's needed, spin it down, and then spin it up maybe the day before or something like that. +- Plus points if we can control the OBS via password-protected websocket so we can tell it to switch scenes (and even more points if we do so from Emacs, maybe via that obs-websocket.el ;) ). MPV is also controllable via IPC, so we can use the same MPV player and then switch videos around. Maybe mpvc? https://unix.stackexchange.com/questions/664728/how-can-i-control-mpv-in-command-line +- Probably Linode's Dedicated 32 GB + RTX6000 GPU x1 at $1.50 an hour for 2-3 days + dev time, since live.emacsconf.org is in Linode as well +- We should also look into normalization across the board, especially if we have BBB participants. pipewire + easyeffects on the box might be the easiest way to do it. + +Resources: +- https://blog.wirelessmoves.com/2021/07/running-obs-studio-in-the-cloud.html + +- Multiple users accessing X11 + - Apache Guacamole + - https://askubuntu.com/questions/817970/how-to-setup-multiple-simultaneous-access-to-x11vnc-session + - https://xpra.org/ + +*** TODO corwin: plan an approach to use a centralized OBS/nginix "bouncer" :corwin: +*** TODO corwin: document such that someone else could use/fix it :corwin: +*** TODO corwin: recruit at least one more person to help operate the "video bouncer" :corwin: + * Projects to bear in mind but which are not actual :PROPERTIES: :CUSTOM_ID: maybe-projects @@ -1311,6 +1208,77 @@ fi #+end_src +*** sachac + +- download to local cache + ~/proj/emacsconf/private/sync-cache +- upload to YouTube in case we can get autogenerated subtitles from there + https://studio.youtube.com/channel/UCwuyodzTl_KdEKNuJmeo99A/videos/upload?filter=%5B%5D&sort=%7B%22columnType%22%3A%22date%22%2C%22sortOrder%22%3A%22DESCENDING%22%7D +- upload to res:~/2022/captions +- caption.sh +- sync-cache to copy the vtt +- emacsconf-make-backstage-index +- send confirmation e-mail +*** Confirmation e-mail +:PROPERTIES: +:CUSTOM_ID: confirm-prerec +:END: +**** Acknowledge pre-rec submission +:PROPERTIES: +:CUSTOM_ID: ack-prerec +:END: + +#+begin_src emacs-lisp +(defun emacsconf-mail-acknowledge-submission (talk &optional template) + (interactive (list (emacsconf-complete-talk-info))) + (emacsconf-mail-prepare + (or template (emacsconf-mail-merge-get-template "ack-prerec")) + (plist-get talk :email) + (list + :backstage "https://media.emacsconf.org/2022/backstage/" + :backstage-user "emacsconf" + :backstage-password emacsconf-backstage-password + :time (plist-get talk :time) + :title (plist-get talk :title) + :email (plist-get talk :email) + :minutes (plist-get talk :video-time) + :speakers-short (plist-get talk :speakers-short) + :url (concat emacsconf-base-url (plist-get talk :url)) + :year emacsconf-year))) +#+end_src +**** Template +:PROPERTIES: +:EMAIL_ID: ack-prerec +:TO: ${email} +:REPLY_TO: emacsconf-submit@gnu.org, ${email} +:MAIL_FOLLOWUP_TO: emacsconf-submit@gnu.org, ${email} +:CC: emacsconf-submit@gnu.org +:SUBJECT: EmacsConf ${year}: Thank you for uploading your video! +:END: + +Hi, ${speakers-short}! + +Just a quick note to let you know that I've downloaded your +submission for "${title}". We've added your submission to the backstage +area at ${backstage} (username: ${backstage-user}, password: +${backstage-password}), and we'll post the files on your talk page +when the talk is public. A quick check shows that your video is about +${minutes} minutes long (${time} minutes budgeted).${wrap} + +We'll be working on captioning it over the next few weeks. We'll +e-mail again a little closer to the conference with schedule updates +and other useful information. If you want to upload a new version, you +can upload it the same way you did the previous one. + +Please feel free to e-mail us at emacsconf-submit@gnu.org if you need +help updating the talk wiki page at ${url} or if you have other +questions.${wrap} + +Thank you so much for all the work you put into preparing a talk for +EmacsConf ${year}, and thank you for submitting the prerecorded video +before the conference! + +Sacha Chua ** When a talk is captioned :PROPERTIES: :CUSTOM_ID: when-captioned @@ -2276,7 +2244,7 @@ GROUP is (email . (talk talk))" (draft-schedule (concat emacsconf-base-url emacsconf-year "/draft-schedule/"))) (emacsconf-mail-prepare (or template (emacsconf-mail-merge-get-template "check-sched")) - group + (car group) (list :titles (mapconcat (lambda (o) (format "%s: %s" @@ -2350,7 +2318,7 @@ GROUP is (email . (talk talk))" (draft-schedule (concat emacsconf-base-url emacsconf-year "/draft-schedule/"))) (emacsconf-mail-prepare (or template (emacsconf-mail-merge-get-template "check-sched")) - group + (car group) (list :titles (mapconcat (lambda (o) (format "%s: %s" @@ -2667,6 +2635,219 @@ Where: It's now on front. +** DONE Prepare email for nudging speakers to send prerec, and inform on upload workflow :timesensitive:needsowner: +CLOSED: [2022-10-22 Sat 08:42] +:PROPERTIES: +:CUSTOM_ID: mail-upload +:END: + +*** Code + +#+begin_src emacs-lisp +(defun emacsconf-mail-upload (group &optional template) + "Send upload instructions and reminder. +GROUP is (email . (talk talk))" + (interactive (list (emacsconf-mail-complete-email-group))) + (let ((action-date (date-to-time "2022-11-04"))) + (emacsconf-mail-prepare + (or template (emacsconf-mail-merge-get-template "upload")) + (car group) + (list + :slugs (mapconcat (lambda (o) (plist-get o :slug)) (cdr group) " or ") + :speakers-short (plist-get (cadr group) :speakers-short) + :plural (if (= (length (cdr group)) 1) "" "s") + :email (plist-get (cadr group) :email) + :year (or (plist-get (cadr group) :year) emacsconf-year) + :prerec-note (emacsconf-surround + (make-string 64 ?-) + (string-join (seq-uniq (mapcar + (lambda (o) + (plist-get o :prerec-info)) + (cdr group))) + "\n") + (make-string 64 ?-) + ""))))) +#+end_src + +*** Template +:PROPERTIES: +:EMAIL_ID: upload +:FUNCTION: emacsconf-mail-upload +:SUBJECT: EmacsConf upload instructions +:REPLY_TO: emacsconf-submit@gnu.org, ${email} +:MAIL_FOLLOWUP_TO: emacsconf-submit@gnu.org, ${email} +:CC: emacsconf-submit@gnu.org +:END: + +Hi, ${speakers-short}! + +${prerec-note}Here are the instructions for uploading the video${plural} for your talk${plural}. +You can find the latest version of the instructions at https://emacsconf.org/2022/upload/ . +There are two ways to upload your talk${plural} this year, so you can pick the one that works best for you:${wrap} + +- Web-based: https://ftp-upload.emacsconf.org , password emacsconf +- FTP: host: ftp-upload.emacsconf.org, port: 21, username: anonymous + folder: upload-here + +If you upload slides and other resources, we can include them on the +talk page when your talk goes live. If you happen to have a script or +a transcript, please include them as well (it’ll speed up the +captioning for us). + +Please start your filenames with the ID for the talk that it's for: +${slugs}. + +If you're still working on your talk, you might find the tips at +https://emacsconf.org/2022/prepare useful. In brief: + +- at least 1280x720 resolution +- we recommend dark text on a light background, with enough contrast + to make it easy to read +- if possible, use a headset or external microphone to record audio +- leave 5 seconds of quiet at the end of the video to facilitate noise + reduction for us + +Please plan to upload your talk by November 4 (next Friday) so that we +can get started preparing it for streaming. If you can't make it by +then, we can accept later submissions, although it's a bit more of a +scramble and our stress levels go up as the conference approaches. =) +We'd really appreciate the extra time for captioning and +double-checking. Thank you for your help in getting ready for a smooth +EmacsConf 2022! + +Sacha Chua +** DONE Send backstage email +CLOSED: [2022-10-22 Sat 09:23] + +#+begin_src emacs-lisp +(defun emacsconf-mail-backstage-info (group &optional template) + (interactive (list (emacsconf-complete-talk-info))) + (emacsconf-mail-prepare + (or template (emacsconf-mail-merge-get-template "backstage")) + (plist-get group :email) + (append group + (list + :backstage "https://media.emacsconf.org/2022/backstage/" + :backstage-user "emacsconf" + :backstage-password emacsconf-backstage-password + :conf-name emacsconf-name + :year emacsconf-year)))) +(defun emacsconf-mail-backstage-info-to-speakers-and-captioners () + (interactive) + (let ((template (emacsconf-mail-merge-get-template "backstage")) + (speaker-groups + (seq-uniq + (mapcar + (lambda (talk) + (list + :name (plist-get talk :speakers-short) + :email (plist-get talk :email) + :role "speaker" + :backstage-use + "As we add more talks, you can skim through any relevant ones to +see if there are any points you'd like to build on in your talk. +Also, you can get a sense of what we do behind the scenes to try +to get as many talks captioned for broadcast, and what you can do +to make it easier. (A text file with names and technical terms +can be helpful. No need to type out a manual transcript if you +don't start from a script.) After you upload your talk and we +process the files, you can use the backstage area to check the +quality of the reencoded video.")) + (seq-filter (lambda (o) (string= (plist-get o :status) "WAITING_FOR_PREREC")) + (emacsconf-filter-talks (emacsconf-get-talk-info)))))) + (volunteer-groups + (with-current-buffer (find-file-noselect emacsconf-org-file) + (org-map-entries (lambda () + (list :name (org-entry-get (point) "NAME_SHORT") + :email (org-entry-get (point) "EMAIL") + :role "captioning volunteer" + :backstage-use "If you see a talk that you'd like to caption, you can e-mail me at sacha@sachachua.com and I can reserve it for you.")) + "captions")))) + (mapcar (lambda (g) (emacsconf-mail-backstage-info g template)) + (append + speaker-groups + (seq-remove (lambda (v) (seq-find (lambda (s) (string= (plist-get s :email) + (plist-get v :email))) + speaker-groups)) + volunteer-groups))))) + +#+end_src + +*** Template +:PROPERTIES: +:SUBJECT: EmacsConf backstage area with videos and other resources +:EMAIL_ID: backstage +:REPLY_TO: emacsconf-submit@gnu.org, ${email} +:MAIL_FOLLOWUP_TO: emacsconf-submit@gnu.org, ${email} +:CC: emacsconf-submit@gnu.org +:END: + +Hi ${name}! + +You're getting this e-mail because you are a ${role} for ${conf-name} +${year}. (Thanks!)${wrap} + +I'm so excited! =) A number of speakers have uploaded their videos, +and OpenAI Whisper looks like a promising way to get automatically +generated captions that we can use as a starting point. + +We've set up ${backstage} as the backstage area where you can view the +videos and resources uploaded so far. You can access it with the +username "${backstage-user}" and the password "${backstage-password}". +Please keep the backstage password and other speakers' talk resources +secret. ${backstage-use}${wrap} + +Thank you! + +Sacha Chua + +** DONE Write playbooks +CLOSED: [2022-10-22 Sat 09:25] +*** DONE Host :zaeph: +CLOSED: [2022-10-20 Thu 11:30] +https://emacsconf.org/2022/volunteer/host + +*** CANCELLED Streamer :zaeph: +CLOSED: [2022-10-22 Sat 09:24] +:PROPERTIES: +:CUSTOM_ID: inform-streamer-volunteers +:END: +Blocked by [[#streaming]] + +bandali and corwin/zaeph will do the streaming, so writing the streaming playbook is a little lower priority for now +*** DONE Check-in +CLOSED: [2022-10-16 Sun 21:26] +[[https://emacsconf.org/2022/volunteer/checkin/]] +*** DONE IRC +CLOSED: [2022-10-16 Sun 21:38] +https://emacsconf.org/2022/volunteer/irc/ +*** DONE Pad +CLOSED: [2022-10-17 Mon 00:25] +:PROPERTIES: +:CUSTOM_ID: inform-pad-volunteers +:END: +https://emacsconf.org/2022/volunteer/pad/ +*** DONE Captions +CLOSED: [2022-10-17 Mon 00:25] +:PROPERTIES: +:CUSTOM_ID: inform-pad-volunteers +:END: +https://emacsconf.org/2022/volunteer/caption/ +** CANCELLED [#C] Figure out why ikiwiki is slow :infra:wiki: +CLOSED: [2022-10-22 Sat 09:26] +:PROPERTIES: +:CUSTOM_ID: ikiwiki-regex +:END: +complex regular expression issues? +should the captions be outside the wiki? +** CANCELLED Add nice-to-have stuff to prepare.md :zaeph: +CLOSED: [2022-10-22 Sat 09:27] +:PROPERTIES: +:CUSTOM_ID: extra-prepare +:END: +- org-reveal config +- SIL fonts choice + * Communications :PROPERTIES: :CUSTOM_ID: comms @@ -2771,7 +2952,7 @@ Objectives for this e-mail: :prerec-target (format-time-string "%b %-e" prerec-target))) (plist-get o :acceptance-comment)) 72))) talks "\n---------------------------------------------------------------------\n")))) - (emacsconf-mail-prepare template group attrs))) + (emacsconf-mail-prepare template (car group) attrs))) (defun emacsconf-draft-all-acceptances () (interactive) @@ -2842,40 +3023,7 @@ Thank you so much! Sacha Chua ** Future -*** Acknowledge pre-rec submission -:PROPERTIES: -:CUSTOM_ID: ack-prerec -:END: -#+begin_src emacs-lisp -(defun emacsconf-acknowledge-submission () - (interactive) - (let ((files (directory-files "captions" t (regexp-quote (org-entry-get (point) "VIDEO_SLUG")))) - (page (format "https://emacsconf.org/%s/talks/%s" conf-year (org-entry-get (point) "SLUG"))) - (slug (org-entry-get (point) "VIDEO_SLUG"))) - (emacsconf-mail-speaker - "Thanks for sending us your prerecorded video for EmacsConf ${year}!" - (concat - "Hi! Just a quick note to let you know that I've downloaded your submission for \"" (org-entry-get (point) "ITEM") "\".\n" - (format "\nNow we have the following file%s starting with %s:\n%s" - (if (= (length files) 1) "" "s") - slug - (mapconcat (lambda (f) - (format "- %s (%s, md5: %s)\n" - (replace-regexp-in-string slug "" (file-name-nondirectory f)) - (file-size-human-readable (file-attribute-size (file-attributes f))) - (string-trim (shell-command-to-string (concat "md5sum " (shell-quote-argument f) " | cut -f 1 -d ' '"))))) - files "")) - (format "A quick check shows that it's about %d minutes long.\n" - (ceiling - (/ (compile-media-get-file-duration-ms - (seq-find (lambda (o) (member (file-name-extension o) subed-video-extensions)) - files)) - 60000.0))) - "\nWe'll be working on captioning it over the next few weeks. We'll e-mail again a little closer to the conference with schedule updates and other useful information. If you want to upload a new version, you can upload it the same way you did the previous one.\n\n" - "Please feel free to e-mail us at emacsconf-submit@gnu.org if you need help updating the talk wiki page at " page " or if you have other questions.\n\n" -"Thank you so much for all the work you put into preparing a talk for EmacsConf ${year}, and thank you for submitting the prerecorded video before the conference!\n\nSacha")))) -#+end_src *** Captions for approval :PROPERTIES: :SUBJECT: EmacsConf ${year}: Please review these captions for ${title} |