summaryrefslogtreecommitdiffstats
path: root/2022/organizers-notebook.md
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--2022/organizers-notebook.md2168
1 files changed, 1823 insertions, 345 deletions
diff --git a/2022/organizers-notebook.md b/2022/organizers-notebook.md
index 5637eacb..44837dee 100644
--- a/2022/organizers-notebook.md
+++ b/2022/organizers-notebook.md
@@ -6,8 +6,8 @@ This file is automatically exported from [/2022/organizers-notebook/index.org](/
# Table of Contents
-- [Cadence](#cadence)
- [Overall priorities](#overall)
+- [Next comms update](#update)
- [Projects and other long-running tasks](#projects)
- [Ideas for next year](#maybe-projects):nextyear:
- [Things to figure out / decisions to make](#decisions)
@@ -22,10 +22,13 @@ This file is automatically exported from [/2022/organizers-notebook/index.org](/
Projects and tasks:
+- [Harvest live talks and Q&A](#harvest)
+- [Send thanks](#thanks)
+- [Finalize the files to be used for streaming](#files)
- [Look for ways to reduce risk](#derisk):derisk:
- [Make checkin and Q&A process slide](#qa):sachac:
- [Caption talks and make chapter headings](#caption)
-- [Prepare intros for the hosts to read](#host-intros):sachac:
+- [Prepare intros for the hosts to read](#host-intros)
- [Set up talks on Toobnix and YouTube](#video-platforms):sachac:yt:toobnix:
- [Do another run](#dry-run)
- [Turn off file upload service on media.emacsconf.org](#upload-off):sachac:infra:
@@ -41,123 +44,13 @@ Projects and tasks:
- [Consider breakout rooms for lunch break](#breakouts)
- [Work on the OBS scenes](#obs-scenes):zaeph:corwin:sachac:
- [Plan Etherpad use and hosting](#etherpad):sachac:ansible:
+- [Write about EmacsConf behind the scenes](#writing):sachac:
Schedule by status: (gray: waiting, light yellow: processing, yellow: to assign, light green: captioning, green: captioned and ready) - Updated by conf.org and the wiki repository
![img](schedule.svg)
-<a id="cadence"></a>
-
-# Cadence
-
-<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
-
-
-<colgroup>
-<col class="org-left" />
-
-<col class="org-left" />
-
-<col class="org-left" />
-
-<col class="org-left" />
-
-<col class="org-left" />
-</colgroup>
-<tbody>
-<tr>
-<td class="org-left">Week ending</td>
-<td class="org-left">Work</td>
-<td class="org-left">Speakers</td>
-<td class="org-left">Volunteers</td>
-<td class="org-left">Public</td>
-</tr>
-
-
-<tr>
-<td class="org-left"><span class="timestamp-wrapper"><span class="timestamp">[2022-09-30 Fri]</span></span></td>
-<td class="org-left">&#xa0;</td>
-<td class="org-left"><a href="#acceptance">acceptance, reply to confirm</a></td>
-<td class="org-left">&#xa0;</td>
-<td class="org-left">&#xa0;</td>
-</tr>
-
-
-<tr>
-<td class="org-left"><span class="timestamp-wrapper"><span class="timestamp">[2022-10-09 Sun]</span></span></td>
-<td class="org-left">&#xa0;</td>
-<td class="org-left"><a href="#check-sched">schedule, reply if not okay</a></td>
-<td class="org-left"><a href="#overall">overall priorities</a></td>
-<td class="org-left">&#xa0;</td>
-</tr>
-
-
-<tr>
-<td class="org-left"><span class="timestamp-wrapper"><span class="timestamp">[2022-10-16 Sun]</span></span></td>
-<td class="org-left"><a href="#etherpad">Etherpad</a>, <a href="#upload">stream</a></td>
-<td class="org-left">&#xa0;</td>
-<td class="org-left">infra update</td>
-<td class="org-left">&#xa0;</td>
-</tr>
-
-
-<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>, backstage</td>
-<td class="org-left"><a href="#volunteer-2022-10-23">training</a></td>
-<td class="org-left">&#xa0;</td>
-</tr>
-
-
-<tr>
-<td class="org-left"><span class="timestamp-wrapper"><span class="timestamp">[2022-10-30 Sun]</span></span></td>
-<td class="org-left"><a href="#streaming">OBS in the cloud</a></td>
-<td class="org-left">&#xa0;</td>
-<td class="org-left">caption kickoff</td>
-<td class="org-left"><a href="#announce-program">schedule</a>, posters?</td>
-</tr>
-
-
-<tr>
-<td class="org-left"><span class="timestamp-wrapper"><span class="timestamp">[2022-11-06 Sun]</span></span></td>
-<td class="org-left"><a href="#intro">intro, exit</a>, <a href="#dry-run">dry run</a>, prerecs</td>
-<td class="org-left"><a href="#ack-prerec">prerec confirmation</a>/reminder, <a href="#approve-captions">caption progress</a></td>
-<td class="org-left">&#xa0;</td>
-<td class="org-left">&#xa0;</td>
-</tr>
-
-
-<tr>
-<td class="org-left"><span class="timestamp-wrapper"><span class="timestamp">[2022-11-13 Sun]</span></span></td>
-<td class="org-left">captions</td>
-<td class="org-left">tech check, bio, support links (ex: Liberapay)?</td>
-<td class="org-left"><a href="#shifts">shifts</a></td>
-<td class="org-left">&#xa0;</td>
-</tr>
-
-
-<tr>
-<td class="org-left"><span class="timestamp-wrapper"><span class="timestamp">[2022-11-20 Sun]</span></span></td>
-<td class="org-left">captions</td>
-<td class="org-left">checkin instructions and schedule updates</td>
-<td class="org-left">&#xa0;</td>
-<td class="org-left">&#xa0;</td>
-</tr>
-
-
-<tr>
-<td class="org-left"><span class="timestamp-wrapper"><span class="timestamp">[2022-11-27 Sun]</span></span></td>
-<td class="org-left">captions</td>
-<td class="org-left">last weekend before EmacsConf</td>
-<td class="org-left">&#xa0;</td>
-<td class="org-left">watching</td>
-</tr>
-</tbody>
-</table>
-
-
<a id="overall"></a>
# Overall priorities
@@ -169,17 +62,17 @@ 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!
-<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
+<table>
<colgroup>
-<col class="org-left" />
+<col class="org-left">
-<col class="org-left" />
+<col class="org-left">
-<col class="org-left" />
+<col class="org-left">
-<col class="org-left" />
+<col class="org-left">
</colgroup>
<thead>
<tr>
@@ -192,6 +85,30 @@ interests you!
<tbody>
<tr>
+<td class="org-left"><a href="#harvest">harvesting talks &amp; Q&amp;A</a></td>
+<td class="org-left"><b>recordings trimmed if needed, published</b></td>
+<td class="org-left">chapter markers</td>
+<td class="org-left">edited transcripts</td>
+</tr>
+</tbody>
+</table>
+
+Previous priorities;
+
+<table>
+
+
+<colgroup>
+<col class="org-left">
+
+<col class="org-left">
+
+<col class="org-left">
+
+<col class="org-left">
+</colgroup>
+<tbody>
+<tr>
<td class="org-left"><a href="#conforg">conf.org management</a></td>
<td class="org-left">on sachac&rsquo;s laptop</td>
<td class="org-left">S: on res.emacsconf.org</td>
@@ -377,14 +294,29 @@ interests you!
</table>
+<a id="update"></a>
+
+# Next comms update
+
+- all the Q&A videos are available
+- updated GRAIL talk, uploaded orgvm talk
+- volunteers: next step is to make chapter markers, large model VTTs are now available
+- <span class="timestamp-wrapper"><span class="timestamp">[2022-12-15 Thu] </span></span> all Q&A videos posted, large model VTTs available
+- <span class="timestamp-wrapper"><span class="timestamp">[2022-12-12 Mon] </span></span> Updated grail, updated backstage view
+- <span class="timestamp-wrapper"><span class="timestamp">[2022-12-11 Sun] </span></span> Thank-you notes sent to all the speakers with Toobnix and YouTube URLs, BBB playback info
+
+
<a id="projects"></a>
# Projects and other long-running tasks
+- [Harvest live talks and Q&A](#harvest)
+- [Send thanks](#thanks)
+- [Finalize the files to be used for streaming](#files)
- [Look for ways to reduce risk](#derisk):derisk:
- [Make checkin and Q&A process slide](#qa):sachac:
- [Caption talks and make chapter headings](#caption)
-- [Prepare intros for the hosts to read](#host-intros):sachac:
+- [Prepare intros for the hosts to read](#host-intros)
- [Set up talks on Toobnix and YouTube](#video-platforms):sachac:yt:toobnix:
- [Do another run](#dry-run)
- [Turn off file upload service on media.emacsconf.org](#upload-off):sachac:infra:
@@ -400,6 +332,841 @@ interests you!
- [Consider breakout rooms for lunch break](#breakouts)
- [Work on the OBS scenes](#obs-scenes):zaeph:corwin:sachac:
- [Plan Etherpad use and hosting](#etherpad):sachac:ansible:
+- [Write about EmacsConf behind the scenes](#writing):sachac:
+
+
+<a id="harvest"></a>
+
+## Harvest live talks and Q&A
+
+
+### DONE Add audio-only options to the publishing process
+
+
+### Learn from how other conferences harvest their talks and Q&A
+
+- DebConf posts the talk video (prerecorded + in person Q&A), no transcripts or index
+ Ex: <https://debconf22.debconf.org/talks/71-sequoia-pgp-v5-openpgp-authentication-and-debian/> . They link to the video and the Etherpad.
+- FOSSDEM has directory listings by track: <https://video.fosdem.org/2022/D.conference/>
+ also embedded video and links to slides, video recording, chat room (but not logs) <https://archive.fosdem.org/2022/schedule/event/community_contributions/>
+- LibrePlanet has thumbnails:
+ <https://media.libreplanet.org/u/libreplanet/tag/libreplanet-2022-video/> . Talk page has video and links to slides, download.
+ <https://media.libreplanet.org/u/libreplanet/m/taking-back-the-web-with-haketilo/>
+- NeovimConf: YouTube playlist, lots of comments on YouTube, key moments
+- VS Code Day: link to YouTube video, edited CC captions in YouTube, links and a hashtag in the video description, key moments
+- TED: transcript button, shows transcript in a scrollable area on the right
+
+
+### DONE Publish more Q&A recordings
+
+
+#### DONE Check status
+
+ (emacsconf-collect-prop :slug
+ (seq-remove
+ (lambda (o)
+ (or (null (string-match "live" (or (plist-get o :q-and-a) "")))
+ (null (emacsconf-talk-file o "--bbb-webcams.webm"))
+ (and (emacsconf-talk-file o "--answers.webm")
+ (plist-get o :qa-public))))
+ (emacsconf-prepare-for-display (emacsconf-get-talk-info))))
+
+
+#### DONE Write code to make it easy to do so
+
+emacsconf-extract-publish-qa
+
+
+#### DONE Fetch the reencoded maint answers and post it to backstage
+
+
+### DONE Document this phase of the conference
+
+We&rsquo;re now in the harvesting phase of the conference, where we work on
+collecting the ideas that people shared in the Q&A sessions as well as
+any talks that were not available as pre-recorded videos. It&rsquo;s a great
+way to help speakers get stuff out of their heads and into a form we
+can all learn from. =)
+
+Status of talks and Q&A sessions:
+
+- All talks except for the new version of grail should now be
+ available at <https://media.emacsconf.org/2022/> and on talk pages
+- Links to the BBB playbacks and to the various BBB resources (&#x2013;bbb-\*
+ for each talk) are now in the backstage area for speakers and/or
+ volunteers to review
+- RMS Q&A audio has been uploaded (&#x2013;questions.ogg)
+- grail talk will be reuploaded by the speaker
+- IRC logs have been copied to the backstage area; see the links at
+ the top of the backstage area
+- Etherpads have been converted to Markdown and included on the talk pages
+- BBB chats have been converted to Markdown and included on the talk pages
+
+Here&rsquo;s a good/better/best scale for stuff we can do during this phase:
+
+- Good:
+ - Look at IRC log at the top of the backstage area and copy
+ anonymized questions/answers/feedback to the wiki pages as well,
+ if they weren&rsquo;t already on the page
+ - Somewhat manual because of overlapping conversations; might be
+ easier to have one volunteer do all the talks in one shift
+ (Saturday morning gen, Saturday morning dev, Saturday afternoon
+ gen, etc.), so you can e-mail to call dibs if you like. We
+ usually remove names from the public log as well. Most of the
+ conversations should be in the track-specific channels, but some
+ might have ended up in #emacsconf as well. You can check the
+ talk page to see if the questions are already there. If you&rsquo;re
+ already set up to edit the wiki or you can figure out the
+ slightly complicated setup for editing, feel free to edit the
+ page directly. If not, you can email a Markdown or Org Mode
+ snippet to emacsconf-submit@gnu.org and let me know what page to
+ put it on.
+- Better:
+ - Review the BBB recording to check if there&rsquo;s anything that needs
+ to be deleted from the recording before we publish it so that
+ people can listen to things themselves; publish the recording or
+ excerpts of it
+ - Might be easier with the transcript, but can also be done
+ without one. asmblox, async, buttons, dbus, detached, and eshell
+ have &#x2013;bbb-webcams.vtt as the autogenerated Whisper transcripts.
+- Even better than that:
+ - Make chapter markers for the Q&A recording so that people can jump
+ to the question they&rsquo;re particularly interested in. You can write
+ them in the form:
+ mm:ss text goes here
+ mm:ss more text
+ and I can turn those into chapter headings.
+- Totally awesome:
+ - Edited captions/transcripts for the Q&A
+ - Answers copied into the Q&A section, possibly with linked timestamps
+
+
+#### Process for reviewing and trimming the videos
+
+Helper function:
+
+- emacsconf-extract-publish-qa (call with C-u in order to specify a time for truncating the video)
+
+Skim the transcript and the videos to see if anything needs to be removed, and which video to use
+
+BigBlueButton gives us the webcams and audio as one video
+(\`&#x2013;bbb-webcams.webm\`) and the screenshare (if any) as another video
+(\`&#x2013;bbb-deskshare.webm\`). If the speaker shared their screen, we can
+focus on that instead of their webcam. The following ffmpeg command
+combines the audio from the webcams (which has been previously
+extracted into a separate file, \`&#x2013;bbb-webcams.opus\`) with the video
+from the screenshare.
+
+ffmpeg -i example&#x2013;bbb-webcams.opus -i example&#x2013;bbb-deskshare.webm -c copy example&#x2013;answers.webm
+
+We also want to check if people accidentally shared sensitive
+information on their screen, or if anyone said something that they
+might not have said if they remembered that thethe Q&A videos will be
+shared after the talk. Sometimes there&rsquo;s some time before we get
+around to closing the meeting at the end of the Q&A. Usually, a quick
+read of the transcript will show anything that needs to be trimmed.
+Here&rsquo;s how to stop the recording at a specified time:
+
+ffmpeg -i input.webm -to hh:mm:ss -c copy output.webm
+
+Cutting out stuff from the middle of a recording is slightly more
+complicated. It might be easier to use a nonlinear video editor such
+as kdenlive to edit the video. If you want to use ffmpeg, using
+filters to select the frames and reencode the video will probably work
+out better than splitting the file into multiple parts and then
+concatenating them without reencoding, as the latter tends to need to
+be split on keyframes. Here&rsquo;s a sample command based on this
+[StackOverflow](<https://stackoverflow.com/questions/64866231/remove-a-section-from-the-middle-of-a-video-without-concat>) answer that removes the section between 15 seconds and
+45 seconds:
+
+ffmpeg -i input.webm \\
+ -vf &ldquo;select=&rsquo;not(between(t,15,45))&rsquo;, setpts=N/FRAME\_RATE/TB&rdquo; \\
+ -af &ldquo;aselect=&rsquo;not(between(t,15,45))&rsquo;, asetpts=N/SR/TB&rdquo; \\
+ output.webm
+
+Alternatively, you can let us know what parts needs to be trimmed, and
+we can figure that part out.
+
+
+### TODO Prepare groundwork for volunteers to help
+
+
+#### CANCELLED Document IRC/pad/BBB chat extraction tasks
+
+Experience level: no technical background needed; slightly easier if you&rsquo;ve set up your computer for editing the wiki, which needs ssh and git
+
+There were lots of interesting notes and Q&A on IRC and the pad. If we can copy them to the talk page on the wiki, then we can catch any questions that hadn&rsquo;t been answered and forward feedback to the speaker. It&rsquo;s a little challenging because the IRC conversation might get mixed up when another talk starts, so it helps to read the IRC log and decide what lines to include. We usually remove names from the public log as well. Most of the conversations should be in the track-specific channels, but some might have ended up in #emacsconf as well.
+
+I&rsquo;ve added IRC chat logs to the top of the backstage page. Each talk also links to the HTML (&#x2013;pad.html) and Markdown (&#x2013;pad.md) version of the pad.
+
+You can see the 2021 talks (ex: <https://emacsconf.org/2021/talks/frownies/> , <https://emacsconf.org/2021/talks/pattern/> ) for an example of how the discussions were archived on the talk pages. Sometimes we organize them by type of comment, so it&rsquo;s easy to see Q&A vs. notes vs. feedback about the talk itself.
+
+To avoid duplicating work, maybe we can use this Etherpad to call dibs on talks to process. You can write your name or nick next to the talk(s) you&rsquo;re archiving.
+
+If you&rsquo;re already set up to edit the wiki or you can figure out the slightly complicated setup for editing, feel free to edit the page directly. If not, you can email a Markdown or Org Mode snippet to emacsconf-submit@gnu.org and let me know what page to put it on.
+
+
+### TODO Split up relevant sections from IRC logs so that volunteers can go through them
+
+
+### DONE Check duration of Q&A BBB recordings
+
+About 15 hours total
+
+ (format-seconds "%h:%.2m:%.2s"
+ (/ (apply '+
+ (seq-keep (lambda (o)
+ (and (file-exists-p (expand-file-name (concat (plist-get o :video-slug) "--bbb-webcams.opus") emacsconf-cache-dir))
+ (compile-media-get-file-duration-ms
+ (expand-file-name (concat (plist-get o :video-slug) "--bbb-webcams.opus") emacsconf-cache-dir))))
+ (emacsconf-get-talk-info)))
+ 1000)) ;; "14:52:28"
+
+around 4 hours to process asmblox: 14 minutes (/ (\* 4 60) 14.0) ~17x recorded time
+(/ (\* 17 15) 24.0) 10.625
+
+
+### DONE Get the playback links for the BBB talks
+
+Added as BBB\_PLAYBACK properties (:bbb-playback in the plist).
+on orga@res:
+
+- /data/emacsconf/2022/bbb-playbacks has the files from the web-based playback
+- /data/emacsconf/2022/bbb-raw has the raw files
+
+
+#### DONE Download all the BBB playback files
+
+ (let ((info (emacsconf-prepare-for-display (emacsconf-get-talk-info))))
+ (mapconcat
+ (lambda (o)
+ (when (plist-get o :bbb-playback)
+ (let ((meeting-id (when (string-match "meetingId=\\(.+\\)"
+ (plist-get o :bbb-playback))
+ (match-string 1 (plist-get o :bbb-playback)))))
+ (concat "mkdir " (plist-get o :slug) "\n"
+ "cd " (plist-get o :slug) "\n"
+ (mapconcat
+ (lambda (file)
+ (concat
+ "wget https://bbb.emacsverse.org/presentation/"
+ meeting-id "/" file "\n")
+ )
+ '("video/webcams.webm" "metadata.xml" "deskshare/deskshare.webm" "panzooms.xml" "cursor.xml" "deskshare.xml" "captions.json" "presentation_text.json" "slides_new.xml")
+ ""
+ )
+ "cd ..\n"
+ ))
+ )
+ )
+ info
+ ""))
+
+
+#### DONE Convert to Opus in preparation for transcription
+
+find -name webcams.webm -exec bash -c &rsquo;ffmpeg -i {} -c:a copy $(echo {} | sed &rsquo;s/webm/opus/&rsquo;)&rsquo; \\;
+
+
+#### TODO Transcribe serially
+
+in bbb-whisper
+
+ for SLUG in *; do
+ echo Processing $SLUG $(date -Iseconds) | tee -a bbb-whisper.log
+ (
+ cd $SLUG;
+ if [[ ! -f webcams.txt ]]; then
+ whisper --model large --language en --verbose True webcams.opus
+ else
+ echo "Skipping, already exists"
+ fi
+ )
+ done
+
+
+### DONE Extract RMS Q&A from dump
+
+17:48 of current
+
+
+#### DONE Ffmpeg
+
+[19:26] <bandali> rsyncing the stream dumps from live0:/data/emacsconf-2022-\* into fh-vm01:~orga/live0-streams/
+[19:26] <bandali> i&rsquo;ll probably rsync a copy to my own laptop as well, for backup
+[19:29] <bandali> a reminder that the stream dumps shouldn&rsquo;t be used as-is, and should first be remuxed using ffmpeg to fix the timestamps
+[19:30] <bandali> using something like this: ffmpeg -i myfile.webm -acodec copy -vcodec copy myfile-remuxed.webm >> myfile.log 2>&1
+
+
+### DONE Extract orgvm talk
+
+
+### DONE Post IRC logs to backstage so that volunteers can split them up
+
+See links at the top of backstage
+
+
+### SOMEDAY Copy logs for analysis
+
+
+### DONE Transcribe recordings
+
+
+### DONE Collect recordings from bbb
+
+
+### DONE Back up all the pads
+
+
+### DONE Extract bbb chat and add to backstage
+
+
+### SOMEDAY Awesome Speaker Diarization | awesome-diarization
+
+<https://wq2012.github.io/awesome-diarization/>
+
+
+### SOMEDAY Document irc, bbb chat, pad tasks
+
+Experience level: no technical background needed; slightly easier if you&rsquo;ve set up your computer for editing the wiki, which needs ssh and git
+
+There were lots of interesting notes and Q&A on IRC and the pad. If we can copy them to the talk page on the wiki, then we can catch any questions that hadn&rsquo;t been answered and forward feedback to the speaker. It&rsquo;s a little challenging because the IRC conversation might get mixed up when another talk starts, so it helps to read the IRC log and decide what lines to include. We usually remove names from the public log as well. Most of the conversations should be in the track-specific channels, but some might have ended up in #emacsconf as well.
+
+I&rsquo;ve added IRC chat logs to the top of the backstage page, and each talk also links to the HTML (&#x2013;pad.html) and Markdown (&#x2013;pad.md) version of the pad.
+
+You can see the 2021 talks (ex: <https://emacsconf.org/2021/talks/frownies/> , <https://emacsconf.org/2021/talks/pattern/> ) for an example of how the discussions were archived on the talk pages. Sometimes we organize them by type of comment, so it&rsquo;s easy to see Q&A vs. notes vs. feedback about the talk itself.
+
+To avoid duplicating work, maybe we can use this Etherpad to call dibs on talks to process. You can write your name or nick next to the talk(s) you&rsquo;re archiving.
+
+If you&rsquo;re already set up to edit the wiki or you can figure out the slightly complicated setup for editing, feel free to edit the page directly. If not, you can email a Markdown or Org Mode snippet to emacsconf-submit@gnu.org and let me know what page to put it on.
+
+
+### STARTED Write some code to copy the events.xml to the backstage
+
+recording timestamp is 2022-12-03T09:41:30.888-08
+bandali user ID is w\_uwwpzp4fjtqq
+joined 2022-12-03T10:07:06.066-08
+aaaaaah, hmm. recording timestamp seems earlier, that might just be when BBB starts the whole thing.
+aha! The raw directory has the whole thing, not just the recorded part, and the recording timestamp is the beginning of the meeting. So let&rsquo;s find out where the actual recording starts.
+
+Maybe StartWebRTCShareEvent ?
+ParticipantStatusChangeEvent might be the webcam start.
+Is it DeskShareStartRTMP ?
+
+
+### TODO Improve visualization for Q&A sessions, especially when there&rsquo;s nothing else to look at
+
+
+#### SOMEDAY Consider the challenge of aligning video segments with a timeline
+
+
+#### SOMEDAY windows - Reducing command-line shortcomings caused by excessive number of FFmpeg inputs - Super User
+
+<https://superuser.com/questions/1369843/reducing-command-line-shortcomings-caused-by-excessive-number-of-ffmpeg-inputs>
+
+
+#### SOMEDAY kkroening/ffmpeg-python: Python bindings for FFmpeg - with complex filtering support
+
+<https://github.com/kkroening/ffmpeg-python>
+
+
+#### SOMEDAY Extension repository - Inkscape Wiki
+
+<https://wiki.inkscape.org/wiki/index.php/Extension_repository#Generator>
+
+
+#### SOMEDAY how to render a long text in an area with automatic wrap - Legacy ImageMagick Discussions Archive
+
+<https://www.imagemagick.org/discourse-server/viewtopic.php?t=27325>
+
+
+#### SOMEDAY svg to tex with svg package and inkscape: make the text to wrap inside a shape - TeX - LaTeX Stack Exchange
+
+<https://tex.stackexchange.com/questions/325711/svg-to-tex-with-svg-package-and-inkscape-make-the-text-to-wrap-inside-a-shape>
+
+
+#### SOMEDAY tikz API documentation
+
+<https://allefeld.github.io/pytikz/tikz/>
+
+
+#### SOMEDAY tikz pgf - Absolute positioning in beamer - TeX - LaTeX Stack Exchange
+
+<https://tex.stackexchange.com/questions/6185/absolute-positioning-in-beamer>
+
+
+#### SOMEDAY CTAN: Package textpos
+
+<https://ctan.org/pkg/textpos>
+
+
+#### SOMEDAY positioning - How do I put some text in specific position on a page horizontally with the prosper class? - TeX - LaTeX Stack Exchange
+
+<https://tex.stackexchange.com/questions/35602/how-do-i-put-some-text-in-specific-position-on-a-page-horizontally-with-the-pros>
+
+
+#### SOMEDAY Exporting LaTeX TikZ as Image Files | Baeldung on Computer Science
+
+<https://www.baeldung.com/cs/exporting-tikz-as-images>
+
+
+#### SOMEDAY OpenAI Whisper tutorial: Whisper - Transcription and diarization (speaker identification) | LabLab
+
+<https://lablab.ai/t/whisper-transcription-and-speaker-identification>
+
+
+#### TODO Consider ffmpeg to make speaker labels so that I can overlay them on webcams.webm
+
+
+#### TODO could be fancy to have an FFMPEG compose the videos with names and webcams on the right side
+
+
+#### SOMEDAY Try using the single webcam view of the speaker
+
+
+### SOMEDAY Think about how I want to format the VTT for the RMS Q&A
+
+
+#### SOMEDAY Use word data, maybe reflow based on it
+
+
+### SOMEDAY Combine webcams and deskshare
+
+
+### TODO Extract comments from IRC
+
+
+#### SOMEDAY Auto-add A: marker for speaker
+
+
+### DONE compare deskshare with webcams
+
+ (mapcar (lambda (o)
+ (cons (emacsconf-get-slug-from-string o)
+ (- (compile-media-get-file-duration-ms o)
+ (compile-media-get-file-duration-ms (replace-regexp-in-string "deskshare" "webcams" o))) )
+
+ )
+ (directory-files emacsconf-cache-dir t "-deskshare.webm"))
+
+
+### Improve segmented audio normalization
+
+
+#### SOMEDAY How to normalize the volume of an audio file in python? - Stack Overflow
+
+<https://stackoverflow.com/questions/42492246/how-to-normalize-the-volume-of-an-audio-file-in-python>
+
+
+#### SOMEDAY Execute Macro from Script - Audacity Forum
+
+<https://forum.audacityteam.org/viewtopic.php?t=121821>
+
+
+### TODO subtitle hyperorg
+
+
+### DONE Check duration
+
+ (/ (apply '+
+ (mapcar #'compile-media-get-file-duration-ms
+ (directory-files emacsconf-cache-dir t "\\(main\\|webcams\\).webm\\|rms.*ogg")))
+ 3600000.0)
+
+28.860543888888888
+
+- 29 hours including Q&A
+- 14 hours of talks, 15 hours of Q&A
+
+(\* 28 0.0075 60)
+12.6
+
+
+### SOMEDAY Copy irc, haven&rsquo;t actually done that yet
+
+
+### SOMEDAY Create harvesting etherpad if needed to track the status?
+
+
+### DONE Update task status now that I have TO\_REVIEW\_QA, TO\_INDEX\_QA, TO\_CAPTION\_QA
+
+ (with-current-buffer (find-file-noselect emacsconf-org-file)
+ (org-map-entries
+ (lambda ()
+ (if (file-exists-p (expand-file-name (concat (org-entry-get (point) "VIDEO_SLUG") "--answers.webm")
+ emacsconf-cache-dir))
+ (org-todo "TO_INDEX_QA")
+ (org-todo "TO_REVIEW_QA")))
+ "TODO=\"TO_ARCHIVE\"+SLUG={.}")
+ )
+
+ (with-current-buffer (find-file-noselect emacsconf-org-file)
+ (org-map-entries
+ (lambda ()
+ (unless (file-exists-p (expand-file-name (concat (org-entry-get (point) "VIDEO_SLUG") "--bbb-webcams.webm")
+ emacsconf-cache-dir))
+ (org-todo "TO_ARCHIVE")))
+ "TODO=\"TO_REVIEW_QA\"+SLUG={.}")
+ )
+
+
+### TODO consider number-anonymizing the IRC chat
+
+
+### TODO switch to resources view
+
+
+### TODO Harvest the closing remarks
+
+
+### TODO Check normalization of answers
+
+<https://stackoverflow.com/questions/42492246/how-to-normalize-the-volume-of-an-audio-file-in-python>
+
+
+#### SOMEDAY Scripting - Audacity Manual
+
+<https://manual.audacityteam.org/man/scripting.html>
+
+
+### SOMEDAY Post transcripts, start working on chapter workflow
+
+
+### SOMEDAY Add audio-only handler for media card
+
+
+### SOMEDAY How to chunk text into paragraphs using python | by N Polovinkin | Medium
+
+<https://medium.com/@npolovinkin/how-to-chunk-text-into-paragraphs-using-python-8ae66be38ea6>
+
+
+### STARTED Figure out ways to make sense of IRC logs
+
+ssh
+Possible: thread speaker messages?
+Manual:
+
+- search backward to find the lines, put something under
+- avy to indent it under that line
+- use properties to suggest lines
+- copy everything, use Emacs News code to refile entries
+- anonymize after
+
+
+### TODO improve nil note for missing resources
+
+
+### CANCELLED Trim grail if needed
+
+
+### DONE I uploaded the Q&A sessions to Toobnix. :sachac:
+
+Least extra work if I do it after chapter markers, but I can just do them now and then update them later
+
+ (mapc (lambda (o)
+ (let ((default-directory "~/vendor/PeerTube/"))
+ (when (emacsconf-publish-upload-answers o 'toobnix)
+ (emacsconf-go-to-talk o)
+ (shell-command "xdotool mousemove 1782 370 click 1 sleep 1 key Ctrl+r sleep 4 mousemove 1584 546 click 3 sleep 1 mousemove 1664 746 click 1 mousemove 1584 546 sleep 1 key Alt+Tab sleep 1")
+ (org-entry-put
+ (point) "QA_TOOBNIX"
+ (read-string (format "URL for %s: "
+ (org-entry-get (point) "SLUG")))))))
+ (seq-remove
+ (lambda (o)
+ (or (null (emacsconf-talk-file o "--answers.webm"))
+ (plist-get o :qa-toobnix)))
+ (emacsconf-prepare-for-display (emacsconf-get-talk-info))))
+
+
+### DONE Upload answers to Youtube :sachac:
+
+Set eval to yes and work carefully.
+
+ (defun emacsconf-publish-answers-python (talk)
+ (interactive)
+ (concat "filename = \"\"\"" (emacsconf-talk-file talk "--answers.webm") "\"\"\"\n"
+ "title = \"\"\"" (emacsconf-publish-answers-title talk 100) "\"\"\"\n"
+ "description = \"\"\"" (emacsconf-publish-answers-description talk 'youtube) "\"\"\"\n"))
+ (plist-get
+ (seq-find (lambda (talk)
+ (not (or (null (emacsconf-talk-file talk "--answers.webm"))
+ (plist-get talk :qa-youtube))))
+ (emacsconf-prepare-for-display (emacsconf-get-talk-info)))
+ :slug)
+
+:end:
+
+quota, continue tomorrow
+
+
+#### Setup
+
+ from playwright.sync_api import Playwright, sync_playwright, expect
+ from pathlib import Path
+ import json
+
+ playwright = sync_playwright().start()
+ browser = playwright.firefox.launch(headless=False)
+ context = browser.new_context()
+ page = context.new_page()
+ context.add_cookies(json.loads(Path("cookies.json").read_text()))
+ page.goto("https://studio.youtube.com/")
+
+Save the cookies after it&rsquo;s all set up
+
+ Path("cookies.json").write_text(json.dumps(cookies))
+
+ context.add_cookies(json.loads(Path("cookies.json").read_text()))
+ page.goto("https://studio.youtube.com/channel/UCwuyodzTl_KdEKNuJmeo99A")
+
+1. Upload the file
+
+ #page.get_by_role("dialog", name="Video processing").get_by_role("button", name="Close").click()
+ page.locator("#create-icon").click()
+ page.get_by_text("Upload videos").click()
+ page.get_by_role("button", name="Select files").click()
+ nil
+
+1. Set the talk details and copy the URL.
+
+ (save-window-excursion
+ (emacsconf-go-to-talk (emacsconf-resolve-talk slug))
+ (org-entry-put (point) "QA_YOUTUBE" url))
+
+
+##### Background code
+
+ (let ((talk (emacsconf-resolve-talk slug)))
+ (kill-new (emacsconf-talk-file talk "--answers.webm"))
+ (emacsconf-publish-answers-python talk))
+
+ nil
+ page.locator("#title-textarea").click()
+ page.keyboard.press("Control+KeyA")
+ page.keyboard.press("Delete")
+ page.keyboard.type(title)
+ page.locator("#description-textarea #textbox").fill(description)
+ page.locator('ytcp-video-metadata-playlists .dropdown-trigger-text').click()
+ page.get_by_role("dialog", name="Choose playlists").get_by_text("EmacsConf 2022").click()
+ page.get_by_role("button", name="Done").click()
+ page.get_by_role("button", name="Show more").click()
+ page.get_by_placeholder("Add tag").fill("emacs, emacsconf, answers")
+ page.get_by_placeholder("Add tag").click()
+ href = page.locator('a.ytcp-video-info').get_attribute('href')
+ page.locator("#step-badge-3").click()
+ page.locator(".ytcp-video-visibility-select[name=PUBLIC]").click()
+ page.get_by_role("button", name="PUBLISH").click()
+ print(href)
+
+<https://youtu.be/Q453L_whGEc>
+
+
+### TODO Add links to Q&A to Youtube video descriptions
+
+
+### SOMEDAY Make a podcast feed of the talks
+
+
+### TODO Check that webms have latest vtts
+
+
+### TODO Break autocaptions every 5 minutes or so, so that they can be included on the webpage
+
+
+### DONE Add maint chapter markers to Toobnix and Youtube, automate it
+
+ (setq talk (emacsconf-resolve-talk "maint"))
+ (replace-regexp-in-string
+ "\\\\" "\\\\\\\\"
+ (json-encode
+ (list
+ :qa-youtube (plist-get talk :qa-youtube)
+ :qa-toobnix (plist-get talk :qa-toobnix)
+ :slug (plist-get talk :slug)
+ :answers-description-youtube (emacsconf-publish-answers-description talk 'youtube)
+ :answers-description-toobnix (emacsconf-publish-answers-description talk 'youtube))))
+
+Update YouTube
+
+ from playwright.sync_api import Playwright, sync_playwright, expect
+ from pathlib import Path
+ import json
+ import re
+
+ talk = json.loads("""nil""")
+ playwright = sync_playwright().start()
+ browser = playwright.firefox.launch(headless=False)
+ context = browser.new_context()
+ page = context.new_page()
+ context.add_cookies(json.loads(Path("cookies.json").read_text()))
+ m = re.search("[^/=]+$", talk['qa-youtube'])
+ page.goto("https://studio.youtube.com/video/" + m.group(0) + "/edit")
+ page.locator("#description-textarea #textbox").fill(talk['answers-description-youtube'])
+ page.get_by_role('button', name="Save").click()
+
+Update Toobnix:
+
+ talk = json.loads("""nil""")
+ m = re.search("[^/=]+$", talk['qa-youtube'])
+ page.goto("https://toobnix.org/videos/update/" + m.group(0))
+ page.locator("#description").fill(talk['answers-description-toobnix'])
+ page.locator('.orange-button').click()
+
+
+<a id="thanks"></a>
+
+## TODO Send thanks
+
+
+### TODO Send thank-you notes to speakers
+
+Dependencies:
+
+- youtube, toobnix urls
+- bbb playback urls
+- pads copied
+
+ (defvar emacsconf-mail-thank-speaker-open-youtube t
+ "If non-nil, browse to the YouTube page so we can mention views and stuff.")
+
+ (defun emacsconf-mail-thank-speaker (group &optional template)
+ (interactive (list (emacsconf-mail-complete-email-group)))
+ (delete-other-windows)
+ (with-selected-window
+ (split-window-right)
+ (emacsconf-edit-wiki-page (plist-get (cadr group) :slug))
+ (when (> (length (cdr group)) 1)
+ (mapc
+ (lambda (talk)
+ (with-selected-window (split-window-below)
+ (emacsconf-edit-wiki-page (plist-get talk :slug))))
+ (cddr group))
+ (balance-windows)))
+ (let ((with-bbb (seq-filter (lambda (talk) (plist-get talk :bbb-playback)) (cdr group))))
+ (emacsconf-mail-prepare
+ (or template (emacsconf-mail-merge-get-template "thanks-speaker"))
+ (car group)
+ (list
+ :email (car group)
+ :conf-name emacsconf-name
+ :year
+ emacsconf-year
+ :plural
+ (if (= (length (cdr group)) 1) "" "s")
+ :video-is
+ (if (= (length (cdr group)) 1) "video is" "videos are")
+ :bbb-note
+ (if with-bbb
+ (concat
+ " We'd like to publish the audio (and possibly the video as well)
+ with chapter markers and maybe even captions, depending on
+ volunteers. In case you want to revisit your Q&A session in
+ order to remember anything particularly cool that you'd like to
+ follow up on (or anything particularly sensitive/embarrassing
+ that you'd like us to omit), you can view the BigBlueButton
+ playback at " (mapconcat (lambda (talk) (plist-get talk :bbb-playback)) with-bbb " , ") " . Volunteers will be working on harvesting the Q&A over the next few weeks/months. If you'd like to help with the processing, I've added the files
+ to ${backstage} and documented our harvesting process at
+ https://emacsconf.org/harvesting/ . The files start with --bbb in the backstage area. This is
+ totally optional and just there in case you feel like taking advantage
+ of it. =)")
+ "")
+ :backstage
+ (mapconcat (lambda (talk)
+ (concat "https://media.emacsconf.org/" emacsconf-year "/backstage/#" (plist-get talk :slug)))
+ (cdr group) " , ")
+ :urls
+ (mapconcat (lambda (talk)
+ (plist-get talk :absolute-url))
+ (cdr group) " , ")
+ :toobnix-url
+ (mapconcat (lambda (talk)
+ (plist-get talk :toobnix-url))
+ (cdr group) " , ")
+ :youtube-url
+ (mapconcat (lambda (talk)
+ (plist-get talk :youtube-url))
+ (cdr group) " , ")
+ :speakers-short (plist-get (cadr group) :speakers-short)))
+ (when emacsconf-mail-thank-speaker-open-youtube
+ (mapc (lambda (talk)
+ (when (plist-get talk :youtube-url)) (browse-url (plist-get talk :youtube-url)))
+ (cdr group)))))
+
+
+#### Template
+
+Hi, ${speakers-short}!
+
+Thank you so much for being part of EmacsConf ${year}! Hundreds of
+people enjoyed it, and I&rsquo;m sure even more will come across the videos
+in the days to follow.
+
+Your ${video-is} available on the talk page${plural} at ${urls} , and
+we&rsquo;ve added the discussions from Etherpad/IRC.${bbb-note}${wrap}
+
+We&rsquo;ve also uploaded your talk video${plural} to Toobnix (a PeerTube
+instance) at ${toobnix-url} and YouTube at ${youtube-url} . If you
+want to reupload the video to your own channel, please feel free to do
+so. If you let me know where you&rsquo;ve uploaded it, I think I can switch
+our playlist to include your version of the video instead. That way,
+it might be easier for you to respond to comments on videos.${wrap}
+
+If you would like to share more resources, you can add them to the
+talk page or e-mail them to us and we can add them for you.
+
+Thanks again for speaking at EmacsConf!
+
+Sacha
+
+
+### TODO Send thank-you notes to volunteers
+
+
+<a id="files"></a>
+
+## STARTED Finalize the files to be used for streaming
+
+Verify that all the files load
+
+ (let ((info (emacsconf-prepare-for-display (emacsconf-get-talk-info))))
+ (mapconcat
+ (lambda (track)
+ (concat "- " (plist-get track :name) "\n"
+ (mapconcat
+ (lambda (talk)
+ (if (plist-get talk :video-file)
+ (format " - [ ] [[elisp:(emacsconf-stream-play-talk-on-change \"%s\")][Play %s]]\n"
+ (plist-get talk :slug) (plist-get talk :slug))
+ ""))
+ (emacsconf-filter-talks-by-track track info))))
+ emacsconf-tracks))
+
+How about the ones that might be live
+
+ (let ((info (emacsconf-prepare-for-display (emacsconf-get-talk-info))))
+ (mapconcat
+ (lambda (track)
+ (concat "- " (plist-get track :name) "\n"
+ (mapconcat
+ (lambda (talk)
+ (if (null (plist-get talk :video-file))
+ (format " - [ ] [[elisp:(emacsconf-stream-play-talk-on-change \"%s\")][Play %s]]\n"
+ (plist-get talk :slug) (plist-get talk :slug))
+ ""))
+ (emacsconf-filter-talks-by-track track info))))
+ emacsconf-tracks))
+
+
+### TODO Fix my audio volume for intros
+
+
+### DONE Remove first eight seconds of Jupyter if possible, and the last 16 seconds or so
+
+screen -S jupyter-trim ffmpeg -y -ss 8 -to 00:16:40 -i emacsconf-2022-jupyter&#x2013;edit-live-jupyter-notebook-cells-with-emacs&#x2013;blaine-mooers&#x2013;final.webm emacsconf-2022-jupyter&#x2013;edit-live-jupyter-notebook-cells-with-emacs&#x2013;blaine-mooers&#x2013;trimmed.webm
+
+
+### TODO Regenerate overlays to accommodate different layout
<a id="derisk"></a>
@@ -409,7 +1176,7 @@ interests you!
<https://pad.emacsconf.org/premortem>
-### TODO Click on stuff with xdotool
+### DONE Click on stuff with xdotool
(emacsconf-stream-bbb &ldquo;journalism&rdquo;)
(emacsconf-stream-xdotool-set-up-bbb &ldquo;journalism&rdquo;)
@@ -451,7 +1218,30 @@ xdotool key f11
(org-agenda nil "a")))
-### TODO Try a reboot
+### DONE Try a reboot before the resize :sachac:
+
+- After rebooting live0, we should still be able to:
+ - [X] SSH to it
+ - [X] Stream gen to it
+ - [X] Start up the fallbacks: screen-fallbacks
+ - test: mpv <https://live0.emacsconf.org/gen-fallback.webm>
+ - [X] Play gen stream: mpv <https://live0.emacsconf.org/gen.webm>
+ - [X] Play gen 480p stream: mpv <https://live0.emacsconf.org/gen-480p.webm>
+ - [X] Go to watch page for gen:
+ - <https://emacsconf.org/2022/watch/gen/>
+ - <https://live.emacsconf.org/2022/watch/gen/>
+ - [X] Start test restream to toobnix
+ - screen-restream-test-toobnix.sh
+ - <https://toobnix.org/w/dmibQFkBTNcJyTVVQTyd5C>
+ - Test dev as well (optional)
+ - [X] Stream dev to it
+ - [X] Play dev stream
+ - [X] Play dev 480p stream
+ - [X] Go to watch page for dev
+- After rebooting front0, we should still be able to:
+ - [X] View the wiki <https://emacsconf.org/2022/>
+ - [X] Update the status page [edit](file://ssh:front0.emacsconf.org:/var/www/status.emacsconf.org/index.html) <https://status.emacsconf.org>
+ - [ ] Go to the pad: <https://pad.emacsconf.org/2022>
### DONE icecast fallback :derisk:sachac:
@@ -537,13 +1327,13 @@ Input #0, matroska,webm, from &rsquo;http://live0.emacsconf.org:8001/gen.webm&rs
#### DONE Add keyboard shortcuts
-<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
+<table>
<colgroup>
-<col class="org-left" />
+<col class="org-left">
-<col class="org-left" />
+<col class="org-left">
</colgroup>
<tbody>
<tr>
@@ -605,7 +1395,7 @@ If it was the most recently announced talk in the channel, don&rsquo;t re-announ
<a id="qa"></a>
-## TODO Make checkin and Q&A process slide :sachac:
+## CANCELLED Make checkin and Q&A process slide :sachac:
Low-priority because people were able to manage fine last year
Even better if we can add in-between slides (ex:
@@ -627,9 +1417,12 @@ can paste in <https://emacsconf.org/2022/qa/> for tips.
### DONE Copy chapter headings for mail talk :emacsconf:captions:
+### DONE Caption the new talks :sachac:
+
+
<a id="host-intros"></a>
-## Prepare intros for the hosts to read :sachac:
+## Prepare intros for the hosts to read
<https://pad.emacsconf.org/intros>
also in :INTRO\_NOTE: in conf.org so that we can plop it into the hyperlists.
@@ -712,20 +1505,276 @@ echo &rsquo;/bin/bash /home/orga/screen-restream-test-toobnix.sh&rsquo; | at 8:3
### TODO Process the other intros
-### SOMEDAY Record more intros :sachac:
+### DONE Record more intros :zaeph:
+
+
+### DONE Record two-part introduction for RMS talk
+
+Before Richard Stallman shares what he&rsquo;d like to see in Emacs, we will first play Richard Stallman&rsquo;s 2014 TEDx talk called &ldquo;Free Software, Free Society&rdquo;. The TEDx talk is licensed under the Creative Commons Attribution - No Derivative Works 3.0 license.
+
+The next talk is called &ldquo;What I&rsquo;d like to see in Emacs,&rdquo; by Richard Stallman. This talk will be under the Creative Commons Attribution - ShareAlike license like the other talks at EmacsConf. Afterwards, he will answer questions via a moderated Q&A, so please put your questions in the Etherpad or IRC.
+
+
+### DONE Add images to zaeph&rsquo;s intros :sachac:
+
+
+### DONE Add subtitles to intros
+
+
+### DONE rerecord zachary, pronunciation
+
+
+### DONE rerecord buddy, got mixed up with meetups
+
+
+### DONE redo visual for health, changed the title case
+
+
+### DONE rerecord indieweb, accent on the wrong syllable
+
+
+### DONE rerecord jupyter intro, repetitive
+
+
+### TODO consider rerecording meetups to add
+
+Spanish subtitles are also available for this talk.
+
+You can find them on the talk page.
+
+
+### TODO Contextualize journalism talk
<a id="video-platforms"></a>
-## TODO Set up talks on Toobnix and YouTube :sachac:yt:toobnix:
+## DONE Set up talks on Toobnix and YouTube :sachac:yt:toobnix:
so that people can find the videos on other video platforms
waiting for prerecs
+category 15: science and technology
+license 2: attribution - share alike
+language: en
+privacy 2: unlisted
+tags: emacs,emacsconf
+
### DONE Add toobnix url on schedule
+### Upload to YouTube
+
+ (insert
+ (string-join
+ (seq-take
+ (seq-keep
+ (lambda (o)
+ (when (and
+ (file-exists-p
+ (expand-file-name
+ (concat (plist-get o :video-slug) "--final.webm")
+ emacsconf-cache-dir))
+ (null (plist-get o :youtube-url)))
+ (format "./youtube-upload --client-secrets=../../client_secret.json --title=%s --description=%s --category=%s --tags=emacs,emacsconf --recording-date=%s --default-language=en --default-audio-language=en --embeddable=True %s"
+ (shell-quote-argument
+ (concat emacsconf-name " " emacsconf-year ": " (plist-get o :title) " - " (plist-get o :speakers-with-pronouns)))
+ (shell-quote-argument
+ (emacsconf-publish-video-description o))
+ (shell-quote-argument "Science & Technology")
+ (format-time-string "%Y-%m-%dT%H:%M:%S.0Z" (plist-get o :start-time) t)
+ (expand-file-name
+ (concat (plist-get o :video-slug) "--final.webm")
+ emacsconf-cache-dir)
+ )))
+ (emacsconf-get-talk-info)) 1)
+ "\n"))
+ ./youtube-upload --client-secrets=../../client_secret.json --title=EmacsConf\ 2022\:\ Writing\ and\ organizing\ literature\ notes\ for\ scientific\ writing\ -\ Vidianos\ Giannitsis --description=https\://emacsconf.org/2022/talks/science'
+ ''
+ '00\:00\:00\ My\ second\ brain'
+ '00\:28\ Contents\ of\ the\ talk'
+ '01\:40\ Bibliography\ management'
+ '02\:35\ Creating\ literature\ notes\:\ ivy-bibtex-edit-notes'
+ '03\:04\ org-roam\ reference\ template'
+ '04\:40\ Demo'
+ '05\:40\ Annotating\ with\ org-noter'
+ '06\:44\ Annotating\ in\ English'
+ '07\:02\ Afterthoughts\ on\ an\ article'
+ '07\:30\ Adding\ a\ note'
+ '08\:21\ Creating\ permanent\ notes\ from\ reference\ material'
+ '09\:01\ The\ organization\ problem'
+ '09\:21\ zetteldesk.el'
+ '10\:43\ The\ zetteldesk-desktop'
+ '11\:45\ Filtering\ with\ ivy-bibtex'
+ '12\:09\ Inserting\ literature'
+ '13\:46\ Composing\ the\ final\ article'
+ '15\:19\ Thanks'
+ ''
+ 'You\ can\ view\ this\ and\ other\ resources\ using\ free/libre\ software\ at\ https\://emacsconf.org/2022/talks/science\ .'
+ 'This\ video\ is\ available\ under\ the\ terms\ of\ the\ Creative\ Commons\ Attribution-ShareAlike\ 4.0\ International\ \(CC\ BY-SA\ 4.0\)\ license. --category=Science\ \&\ Technology --tags=emacs,emacsconf --recording-date=2022-12-03T15:45:00.0Z --default-language=en --default-audio-language=en --embeddable=True /home/sacha/proj/emacsconf/cache/emacsconf-2022-science--writing-and-organizing-literature-notes-for-scientific-writing--vidianos--final.webm
+
+
+### Toobnix
+
+ (insert
+ (string-join
+ (seq-keep
+ (lambda (o)
+ (when (and
+ (file-exists-p
+ (expand-file-name
+ (concat (plist-get o :video-slug) "--main.webm")
+ emacsconf-cache-dir))
+ (null (plist-get o :toobnix-url)))
+ (format "cd ~/vendor/PeerTube; node dist/server/tools/peertube.js upload -f %s -n %s -l 2 -c 15 -P 2 -t emacs,emacsconf -L en -C emacsconf -d %s"
+ (expand-file-name
+ (concat (plist-get o :video-slug) "--main.webm")
+ emacsconf-cache-dir)
+ (shell-quote-argument
+ (concat emacsconf-name " " emacsconf-year ": " (plist-get o :title) " - " (plist-get o :speakers-with-pronouns)))
+ (shell-quote-argument
+ (emacsconf-publish-video-description o)))))
+ (emacsconf-get-talk-info))
+ "\n"))
+
+
+### DONE Upload the rest of the talks to Toobnix
+
+
+### DONE Add Toobnix talks to a playlist
+
+ (mapc (lambda (o)
+ (when (plist-get o :toobnix-url)
+ (browse-url (plist-get o :toobnix-url))
+ (shell-command "xdotool sleep 5 mousemove 1815 1030 click 1 sleep 2 mousemove 1684 799 click 1 key Alt+Tab")
+ (read-string "Continue?")))
+ (let ((talks (emacsconf-prepare-for-display (emacsconf-get-talk-info))))
+ (seq-drop talks
+ (1+ (seq-position talks
+ (seq-find (lambda (o) (string= (plist-get o :slug) "haskell")) talks)))))
+ )
+
+
+### DONE Add Youtube talks to a playlist
+
+
+### DONE Upload talks to YouTube
+
+ (seq-keep
+ (lambda (o)
+ (when (and
+ (file-exists-p
+ (expand-file-name
+ (concat (plist-get o :video-slug) "--final.webm")
+ emacsconf-cache-dir))
+ (null (plist-get o :youtube-url)))
+ (concat (plist-get o :video-slug) "--final.webm")))
+ (emacsconf-get-talk-info))
+
+ ;; This buffer is for text that is not saved, and for Lisp evaluation.
+ ;; To create a file, visit it with C-x C-f and enter text in its buffer.
+
+ (let ((pos (shell-command-to-string "xdotool getmouselocation")))
+ (when (string-match "x:\\([0-9]+\\) y:\\([0-9]+\\)" pos)
+ (insert (format "(shell-command \"xdotool mousemove %s %s click 1\")\n" (match-string 1 pos) (match-string 2 pos)))))
+
+ (setq list (seq-filter (lambda (o)
+ (and
+ (file-exists-p
+ (expand-file-name
+ (concat (plist-get o :video-slug) "--final.webm")
+ emacsconf-cache-dir))
+ (null (plist-get o :youtube-url))))
+ (emacsconf-prepare-for-display (emacsconf-get-talk-info))))
+ (setq list (cons talk list))
+
+ (while list
+ (progn
+ (shell-command "xdotool mousemove 707 812 click 1 sleep 2")
+
+ (setq talk (pop list))
+ ;; click create
+ (shell-command "xdotool mousemove 843 187 click 1 sleep 1")
+ ;; video
+ (shell-command "xdotool mousemove 833 217 click 1 sleep 1")
+ ;; select files
+ (shell-command (concat "xdotool mousemove 491 760 click 1 sleep 4 type "
+ (shell-quote-argument (concat (plist-get talk :video-slug) "--final.webm"))))
+ ;; open
+ (shell-command "xdotool mousemove 1318 847 click 1 sleep 5")
+
+ (kill-new (concat
+ emacsconf-name " "
+ emacsconf-year ": "
+ (plist-get talk :title)
+ " - "
+ (plist-get talk :speakers-with-pronouns)))
+ (shell-command "xdotool sleep 1 mousemove 331 440 click :1 key Ctrl+a Delete sleep 1 key Ctrl+Shift+v sleep 2")
+
+ (kill-new (emacsconf-publish-video-description talk t))
+ (shell-command "xdotool mousemove 474 632 click 1 sleep 1 key Ctrl+a sleep 1 key Delete sleep 1 key Ctrl+Shift+v"))
+ (read-string "Press a key once you've pasted in the description")
+
+ ;; next
+ (when (emacsconf-captions-edited-p (expand-file-name (concat (plist-get talk :video-slug) "--main.vtt") emacsconf-cache-dir))
+ (shell-command "xdotool mousemove 352 285 click 1 sleep 1")
+
+ ;; add captions
+ (shell-command "xdotool mousemove 877 474 click 1 sleep 3")
+ (shell-command "xdotool mousemove 165 408 click 1 sleep 1")
+ (shell-command "xdotool mousemove 633 740 click 1 sleep 2")
+ (shell-command (concat "xdotool mousemove 914 755 click 1 sleep 4 type "
+ (shell-quote-argument (concat (plist-get talk :video-slug) "--main.vtt"))))
+ (read-string "Press a key once you've loaded the VTT")
+ (shell-command "xdotool mousemove 910 1037 sleep 1 click 1 sleep 4")
+ ;; done
+ (shell-command "xdotool mousemove 890 297 click 1 sleep 3")
+ )
+
+
+ (progn
+ ;; visibility
+ (shell-command "xdotool mousemove 810 303 click 1 sleep 2")
+ ;; public
+ (shell-command "xdotool mousemove 119 614 click 1 sleep 2")
+ ;; copy
+ (shell-command "xdotool mousemove 882 669 click 1 sleep 1")
+ ;; done
+ (shell-command "xdotool mousemove 908 1089 click 1 sleep 5 key Alt+Tab")
+
+ (emacsconf-with-talk-heading talk
+ (org-entry-put (point) "YOUTUBE_URL" (read-string "URL: "))
+ ))
+ )
+
+ ;; (shell-command "xdotool mousemove 165 408 click 1 sleep 1")
+ ;; (shell-command "xdotool mousemove 2312 1483 click 1 sleep 1")
+ ;; ;; schedule
+ ;; (shell-command "xdotool mousemove 1527 752 click 1")
+ ;; (message "%s" (format-time-string "%Y-%m-%d %I:%M %p" (plist-get talk :start-time)
+ ;; emacsconf-timezone))))
+ ;; ;; (shell-command (concat "xdotool mousemove 1695 611 click 1 key Shift+PgDn Ctrl+a Del type "
+ ;; ;; (format-time-string "%I:%M %p"
+ ;; ;; (plist-get talk :start-time)
+ ;; ;; emacsconf-timezone)))
+ ;; ;; copy link
+
+ ;; (progn
+ ;; (shell-command "xdotool mousemove 2284 668 click 1 sleep 1 click 1")
+ ;; ;; schedule
+ ;; (shell-command "xdotool mousemove 2324 1498 click 1 sleep 3")
+
+ ;; ;; close
+ ;; (shell-command "xdotool mousemove 2100 996 click 1")
+ ;; )
+
+
+### DONE upload the rest of the files onto Toobnix
+
+
+### TODO Upload more Toobnix and YouTube talks
+
+
<a id="dry-run"></a>
## DONE Do another run
@@ -823,19 +1872,19 @@ videotestsrc num\_buffers=2450 ! video/x-raw,width=400,height=300,framerate=10/1
Testing:
-<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
+<table>
<colgroup>
-<col class="org-left" />
+<col class="org-left">
-<col class="org-left" />
+<col class="org-left">
-<col class="org-left" />
+<col class="org-left">
-<col class="org-left" />
+<col class="org-left">
-<col class="org-left" />
+<col class="org-left">
</colgroup>
<tbody>
<tr>
@@ -923,6 +1972,9 @@ so that nginx can have more memory and we don&rsquo;t risk slowdowns
## DONE Review notebook for tasks, priorities, and scheduling
+### TODO Review tasks
+
+
<a id="mumble"></a>
## Use Mumble for backchannel coordination and also on-stage
@@ -980,15 +2032,15 @@ Sacha
### DONE Set up Mumble and bring the volunteers on board
-<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
+<table>
<colgroup>
-<col class="org-left" />
+<col class="org-left">
-<col class="org-left" />
+<col class="org-left">
-<col class="org-left" />
+<col class="org-left">
</colgroup>
<thead>
<tr>
@@ -1121,6 +2173,15 @@ Pattern:
### TODO Adjust audio levels from hyperlist with a repeat-mode keymap
+### DONE Link pamix to a konsole ssh
+
+
+### DONE Add monitoring the streams to the hyperlist / shortcuts
+
+
+### TODO Test hyperlist on obs and record quick demos
+
+
<a id="rec-intro"></a>
## TODO Record intro/outro for day-1 and day-2 :zaeph:
@@ -1255,6 +2316,9 @@ in prod or docker container
### DONE Set up Etherpad with MySQL
+### TODO Make the upload ansible configuration controllable via a variable
+
+
<a id="breakouts"></a>
## SOMEDAY Consider breakout rooms for lunch break
@@ -1387,11 +2451,90 @@ if we can get the anchor plugin
### TODO Consider monospace font for Etherpad? :nextyear:
+<a id="writing"></a>
+
+## TODO Write about EmacsConf behind the scenes :sachac:
+
+
+### TODO Write about scheduling and tracks
+
+
+### TODO Write about scheduling and summing up properties
+
+
+### TODO Write about scheduling and SVG
+
+
+### TODO Write about timers and todo state change hooks
+
+
+### TODO Write about TRAMP and workaround of shifting talks
+
+
+### TODO Write about OBS on VNC
+
+
+### TODO Write about BBB redirects and opening things up
+
+
+### TODO Write about ERC announcements
+
+
+### TODO Write about copying files to backstage
+
+
+### TODO Write about captions
+
+
+### SOMEDAY Write about setup for vnc
+
+
+### SOMEDAY Write about setting org properties from a region, looking at tables, summing it up
+
+
+### SOMEDAY Record animation of changing the schedule
+
+
+### SOMEDAY Write about mail merge
+
+
+### #EmacsConf behind the scenes: Testing the schedule with SVGs
+
+> Org mode allows you to have inline images, and you can return them as the results of Org Babel
+> blocks. I wanted to test different #EmacsConf scheduling strategies quickly. I used Emacs&rsquo;s XML and
+> SVG support to create the SVGs based on the scheduling data I gave it. Splitting my window made it
+> easy to change the schedule, use \`C-c C-c\` to execute the block, and see the schedule image
+> (including any validation notes) in the other window. The code is in
+> <https://git.emacsconf.org/emacsconf-el/tree/emacsconf-schedule.el> .
+>
+> [Screenshot of how I tested #EmacsConf scheduling strategies using inline images in an Org file](https://emacs.ch/system/media_attachments/files/109/485/992/555/721/586/original/7bf3ab2a89fdcaec.png)
+
+<https://emacs.ch/@sachac/109486006078029919>
+
+
+### SOMEDAY <https://graz.social/@publicvoit/109496340869869181>
+
+publicvoit@graz.social - Organizers of online #video #conferences: take a look at the amazing work the organizers of #EmacsConf are doing with the pre- and post-processing of a 9 minute demo #video: <https://emacsconf.org/2022/talks/orgsuperlinks/>
+
+Subtitles, transcript, (Q&A from the live discussion are following), chapter marks, discussion thread from the #Etherpad used, &#x2026;
+
+I only wrote the &rsquo;Description&rsquo; section and contributed the raw video file. It&rsquo;s really impressive what @sachac and the other organizers + volunteers are doing here.  
+
+
<a id="maybe-projects"></a>
# Ideas for next year :nextyear:
+## Possible talks
+
+
+### SOMEDAY Is eMacs worth using/learning for non programmers? I.e are there non programming applications for it?
+
+<https://www.reddit.com/r/emacs/comments/107y169/is_emacs_worth_usinglearning_for_non_programmers/>
+Interesting comments
+
+
## 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
@@ -1414,6 +2557,12 @@ Update schedule
Publish prerec when talk is playing
+### SOMEDAY Irc bot for opening
+
+notice the message
+open the Q&A specified by slug, or look it up from the channel
+
+
## TODO Consider making a bot to support announcing, updating, publishing, who&rsquo;s here, announcing when speakers are here
<https://salsa.debian.org/rhonda/schedulebot>
@@ -1527,6 +2676,153 @@ That might be interesting for reviewing text recognition output
## TODO back up media and bbb
+## TODO figure out how zaeph can run ansible
+
+
+## TODO Check that the restreams can handle hiccups
+
+<https://toobnix.org/w/dmibQFkBTNcJyTVVQTyd5C>
+
+ugh might need to restart restreams
+PTS 233286211, next:63716000 invalid dropping st:0
+DTS 233286223, next:63828674 st:1 invalid dropping
+
+screen -S restream-test-toobnix -X quit; screen-restream-test-toobnix.sh
+screen -S restream-test-youtube -X quit; screen-restream-test-youtube.sh
+screen -S restream-gen-toobnix -X quit; screen-restream-gen-toobnix.sh
+screen -S restream-gen-youtube -X quit; screen-restream-gen-youtube.sh
+screen -S restream-dev-toobnix -X quit; screen-restream-dev-toobnix.sh
+screen -S restream-dev-youtube -X quit; screen-restream-dev-youtube.sh
+
+ugh sound timestamps get all messed up
+
+
+## TODO Figure out how to have a test talk for publishing
+
+
+## TODO figure out back button
+
+<bandali> hmm, for some reason with firefox the back button doesn&rsquo;t seem to
+ work as expected on after clicking on one of the tracks on
+ live.emacsconf.org [21:44]
+<bandali> seems like there&rsquo;s an additional redirect or something. doesn&rsquo;t
+ matter too much tho [21:45]
+
+
+## TODO Erc bot so bandali and zaeph can check time remaining
+
+
+## TODO make hotkeys for kicking the 480p streams
+
+
+## SOMEDAY Add timezones to all schedules
+
+
+## SOMEDAY <https://social.coop/@jotaemei/109456544613400591>
+
+jotaemei@social.coop - This yearā€™s #Emacs Conference is taking place right now; its official website is naturally RMS/FSF/MIT flavored. The video feed is not working on my mobile phone browser. So, the alternative instructions are to open a link in MPV (will VLC work?) on a desktop. The event times that are given in the schedule do not display a timezone. And presentation notes and collection of audience questions are provided via Etherpad. šŸ˜† I hope the recordings will be available. ā˜ŗļø <https://emacsconf.org/2022/watch/dev/>
+
+
+## SOMEDAY Consider idle timer for wiki publishing the wiki, at for running things
+
+
+## SOMEDAY Re: How to avoid the user triggering &ldquo;Forbidden reentrant call of Tramp&rdquo;
+
+<https://lists.gnu.org/archive/html/tramp-devel/2021-04/msg00036.html>
+
+
+## TODO Make it easier to ship a last-minute update
+
+1. Upload file to backstage
+2. make all
+3. Copy to orga@res:~/stream
+4. Sync it to orga@res:~/cache
+
+
+## SOMEDAY Add timezone note above every schedule table
+
+
+## TODO Braindump things that worked well and things I&rsquo;m looking forward to tweaking
+
+
+## TODO Incorporate zaeph&rsquo;s braindump
+
+
+## SOMEDAY <https://social.coop/@jotaemei/109468491432592197>
+
+jotaemei@social.coop - @sachac I like this idea of a timezone converter for people displayed on (or by) the listing. For me, the cause was that I was trying to find my way around the site at the last second and was afraid Iā€™d missed a presentation I saw someone post earlier about coming up, but I think it was just that the speakers were running a little behind schedule.
+
+
+## SOMEDAY Add export/txt to the pad announcements next year - dto
+
+
+## TODO Learn from other conferences
+
+
+### Neovimconf
+
+
+### SOMEDAY Normconf: The Normcore Tech Conference
+
+<https://normconf.com/>
+
+
+## SOMEDAY Look into properly streaming to YouTube, Toobnix, and 480p
+
+
+## TODO Consider practising with ffmpeg in the cloud so that we can handle last-minute submissions
+
+<https://cloud.google.com/functions/docs/console-quickstart-1st-gen>
+<https://aws.amazon.com/marketplace/pp/prodview-ixe3igo3gsu24#pdp-pricing>
+or a VM
+
+
+### TODO <https://github.com/tuomastik/ffmpeg-google-cloud>
+
+<https://cloud.google.com/functions/docs/console-quickstart-1st-gen>
+
+
+### SOMEDAY Investigate bacalhau compute over data
+
+
+### SOMEDAY Using video transcoding on Amazon ECS - Amazon Elastic Container Service
+
+<https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-vt1.html>
+
+
+## SOMEDAY Add timer for 5 minute and 2 minute warnings to go to emacsconf-org
+
+
+## TODO make the Org agenda versions more visible
+
+
+## SOMEDAY Explore idea of OBS virtual webcam showing the question vs screenshare
+
+
+## SOMEDAY Ideas for people to reach out to for talks?
+
+
+### Using emacs mail to prefilter mail
+
+<https://www.reddit.com/r/emacs/comments/zp0qn6/a_tragic_story_of_emacs_lover/j0r7i1f/>
+
+
+## SOMEDAY Check ffmpeg benchmarks and recommendations; can we speed up our encoding for last-minute submissions?
+
+
+### SOMEDAY <https://www.reddit.com/r/AV1/comments/k7colv/encoder_tuning_part_1_tuning_libvpxvp9_be_more/?utm_source=share&utm_medium=android_app&utm_name=androidcss&utm_term=2&utm_content=share_button>
+
+
+## TODO <https://owncast.online/faq/>
+
+instead of Icecast? uses RTMP
+
+
+## STARTED Jingle
+
+[02:38] <dto> tweaked it <https://usercontent.irccloud-cdn.com/file/akHATPq3/emacsconf.ogg>
+
+
<a id="decisions"></a>
# Things to figure out / decisions to make
@@ -1867,7 +3163,7 @@ Options:
<a id="schedule-gaps"></a>
-## SOMEDAY Think about what to do with schedule gaps due to cancelled talks :thoughts:
+## TODO Think about what to do with schedule gaps due to cancelled talks :thoughts:
- if the previous Q&A is still going, we can stream that one
- if there are no previous Q&As running, options:
@@ -1885,7 +3181,7 @@ Options:
<a id="rmstedsplit"></a>
-## SOMEDAY Split rms into two talks?
+## CANCELLED Split rms into two talks?
- Split into a separate talk:
- Can more easily have intros
@@ -1894,6 +3190,11 @@ Options:
- Might as well learn how to do that anyway
+### DONE Figure out what to do about rms sequence
+
+Keep it at one talk, but figure out stream files thing
+
+
<a id="roles"></a>
# Roles needed
@@ -1996,23 +3297,23 @@ AM: 9-12 PM EST, PM: 1-5 PM EST (plus a little extra for setup/transition)
Saturday Dec 3
-<table id="org937887e" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
+<table id="org4d51b24">
<colgroup>
-<col class="org-left" />
+<col class="org-left">
-<col class="org-left" />
+<col class="org-left">
-<col class="org-left" />
+<col class="org-left">
-<col class="org-left" />
+<col class="org-left">
-<col class="org-left" />
+<col class="org-left">
-<col class="org-left" />
+<col class="org-left">
-<col class="org-left" />
+<col class="org-left">
</colgroup>
<thead>
<tr>
@@ -2076,23 +3377,23 @@ publicvoit - pad until 4pm on Sat, until 2pm on Sun
Sunday Dec 4
-<table id="org8b8b53c" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
+<table id="org9b01a39">
<colgroup>
-<col class="org-left" />
+<col class="org-left">
-<col class="org-left" />
+<col class="org-left">
-<col class="org-left" />
+<col class="org-left">
-<col class="org-left" />
+<col class="org-left">
-<col class="org-left" />
+<col class="org-left">
-<col class="org-left" />
+<col class="org-left">
-<col class="org-left" />
+<col class="org-left">
</colgroup>
<thead>
<tr>
@@ -2241,13 +3542,13 @@ Where is the new stuff?
Per categories, earlier suffixes come earlier in the process.
-<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
+<table>
<colgroup>
-<col class="org-left" />
+<col class="org-left">
-<col class="org-left" />
+<col class="org-left">
</colgroup>
<thead>
<tr>
@@ -2445,8 +3746,6 @@ We tried using q56 before, but it was a little too aggressive. Q=32 is the defau
- [X] abin (meain, ackā€™d by zaeph)
-<a id="ack-prerec"></a>
-
#### Acknowledge pre-rec submission
(defun emacsconf-mail-acknowledge-submission (talk &optional template)
@@ -2640,19 +3939,6 @@ If youā€™ve got any question on the process, you canget in touch with me (zaeph)
- Coordinate volunteer schedules so all the roles are covered
-### TODO Update ansible configuration :sachac:
-
-Clean up the media root
-
-in all.yml
-
-test\_mode: false
-
-then
-
-ansible-playbook -i inventory.yml prod-playbook.yml &#x2013;tags media,stream,publish
-
-
### Test stream setup
[Stream](#other-streams)
@@ -2756,6 +4042,12 @@ Needs the `$main480p` environment variable set to something of the form `icecast
###### Youtube
+###### Toobnix
+
+
+###### DONE Add IRC links to YouTube and Toobnix descriptions
+
+
### Check in a speaker
Exception: [CHECK is unavailable](#check-gone)
@@ -2827,7 +4119,7 @@ Exception: [CHECK is unavailable](#check-gone)
- [? prerec]
- HOST switches to MPV scene in OBS and plays the video (with captions if available).
- Exception: [Last-minute prerecording submission](#last-minute-prerec)
- - Exception: [Last-minute caption update](#last-minute-captions)
+ - Exception:
- [CHECK publishes information](#publish)
- [HOST gets a head start on handling Q&A](#questions)
- When prerec finishes, HOST switches the OBS scene to show BBB.
@@ -2876,6 +4168,14 @@ Exception: [CHECK is unavailable](#check-gone)
- wiki page for talk
+#### DONE Automatically commit to the wiki
+
+when emacsconf-publish-autocommit-wiki is set
+
+(emacsconf-publish-update-talk (append (list :public t) (emacsconf-resolve-talk &ldquo;journalism&rdquo;)))
+(emacsconf-publish-update-talk (append (list :public nil) (emacsconf-resolve-talk &ldquo;journalism&rdquo;)))
+
+
#### DONE Make sure VTTs only get published when they&rsquo;re edited
@@ -2911,6 +4211,9 @@ Exception: [CHECK is unavailable](#check-gone)
(emacsconf-get-talk-info)))
+#### DONE Automatically commit and push the wiki
+
+
#### DONE Set publishing on a timer :sachac:
@@ -2919,6 +4222,14 @@ Exception: [CHECK is unavailable](#check-gone)
(emacsconf-stream-schedule-timers)
+##### DONE Take intro into account for scheduling q&a time
+
+
+##### TODO Test the timer
+
+ (let ((info (emacsconf-inflate-sexp '(journalism
+
+
#### DONE Simplify manual setting of a timer to update task status :sachac:
emacsconf-stream-schedule-talk-status-change
@@ -3177,21 +4488,21 @@ Probably focus on grabbing the audio first and seeing what&rsquo;s worth keeping
Make a table of the form
-<table id="orgf538b8f" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
+<table id="orgf99a134">
<colgroup>
-<col class="org-left" />
+<col class="org-left">
-<col class="org-left" />
+<col class="org-left">
-<col class="org-left" />
+<col class="org-left">
-<col class="org-left" />
+<col class="org-left">
-<col class="org-left" />
+<col class="org-left">
-<col class="org-left" />
+<col class="org-left">
</colgroup>
<tbody>
<tr>
@@ -3264,6 +4575,20 @@ Make a table of the form
- Update ${conf-year}/${captions}/${slug}.md in the wiki. To make this from scratch, use `M-x conf-prepare-transcript-directives` from the talk heading in the conference Org file.
+### STARTED Update the chapter index for answers
+
+- emacsconf-subed-make-chapter-file-based-on-comments
+- emacsconf-publish-process-answers-chapters
+ - Put it in wiki/year/captions/ and add it to the repository
+ - Add it to the cache directory
+ - Upload it to media.emacsconf.org:~/year
+- Update the talk page
+- Remove the help marker from the talk page
+
+ <https://emacsconf.org/help_with_chapter_markers/>
+ <file:///home/sacha/proj/emacsconf/cache>
+
+
### BLOCKED Downsize the server :bandali:
@@ -3273,34 +4598,36 @@ Make a table of the form
See <https://pad.emacsconf.org/premortem> for more.
-- [Common broadcast (gen and dev)](#common)
-- [Stuck wiki](#ikiwiki-stuck)
-- [Cancelled talk](#cancelled)
-- [Last-minute prerecording submission](#last-minute-prerec)
-- [Last-minute caption update](#last-minute-captions)
-- [Speaker has not checked in](#missing)
-- [Speaker does not have a prerec and has not checked in](#really-missing)
-- [Pad malfunction or mess-up](#pad-broken)
-- [Conduct guidelines issue](#conduct)
-- [CHECK is unavailable](#check-gone)
-- [HOST is unavailable](#host-gone)
+- [Common broadcast (gen and dev)](#common):stream:
+- [Stream OBS needs to be restarted](#obs-restart):stream:
+- [Wiki](#ikiwiki-stuck):publish:
+- [Cancelled talk](#cancelled):schedule:
+- [Last-minute prerecording submission](#last-minute-prerec):upload:
- [Technical issues during a live presentation](#live-issues):stream:
- [Big technical issues with streaming](#stream-issues):stream:
+- [Last-minute caption or file update](#last-minute-captions):upload:
+- [Pad malfunction or mess-up](#pad-broken):infra:
+- [Speaker has not checked in](#missing):sched:
+- [Speaker does not have a prerec and has not checked in](#really-missing):sched:
+- [Conduct guidelines issue](#conduct):host:
+- [CHECK is unavailable](#check-gone)
+- [HOST is unavailable](#host-gone)
- [live0 can&rsquo;t handle the load or is close to network transfer limit](#network)
- [People have a hard time seeing dark-mode presentations (or light-mode)](#dark-mode)
- [Schedule update](#update-sched):sched:
- [New talk](#new-talk):sched:
- [In case we need to do things manually because the task status hooks don&rsquo;t work](#manual)
- [Alternate stream volunteer wants to stream](#alternate)
-- [Renamed talk](#renamed)
- [Video playing error, need to play with mpv manually](#play-mpv-manually):stream:
-- [Shift changes](#org5e6db1e)
-- [Need to restart 480p stream](#restart-480p)
+- [Shift changes](#orgd99c648)
+- [Need to restart 480p stream](#restart-480p):stream:
+- [Renamed talk](#renamed):sched:
+- [Need to restart the Toobnix streams so we don&rsquo;t exceed 5 hours](#orgc1b179b)
<a id="common"></a>
-## Common broadcast (gen and dev)
+## Common broadcast (gen and dev) :stream:
Options:
@@ -3308,17 +4635,46 @@ Options:
- mpv the same video
- join the BBB room
+emacsconf-stream-rebroadcast - specify the source track
+
+[Development -> General]((emacsconf-stream-rebroadcast "Development" "General"))
+[General -> Development]((emacsconf-stream-rebroadcast "General" "Development"))
+
+
+<a id="obs-restart"></a>
+
+## Stream OBS needs to be restarted :stream:
+
+- ssh to the track and run `track-obs`
+- ssh to live0.emacsconf and run whatever&rsquo;s appropriate:
+
+ screen -S restream-test-toobnix -X quit; screen-restream-test-toobnix.sh
+ screen -S restream-test-youtube -X quit; screen-restream-test-youtube.sh
+ screen -S restream-gen-toobnix -X quit; screen-restream-gen-toobnix.sh
+ screen -S restream-gen-youtube -X quit; screen-restream-gen-youtube.sh
+ screen -S restream-dev-toobnix -X quit; screen-restream-dev-toobnix.sh
+ screen -S restream-dev-youtube -X quit; screen-restream-dev-youtube.sh
+- check if the streams are all right
+
<a id="ikiwiki-stuck"></a>
-## Stuck wiki
+## Wiki :publish:
+
+Stuck:
sudo -iu ikiwiki &#x2013; ikiwiki &#x2013;setup ~ikiwiki/emacsconf.setup
+emacsconf.setup changed:
+
+ssh orga@front0.emacsconf.org
+sudo su - ikiwiki
+ikiwiki &#x2013;setup emacsconf.setup &#x2013;rebuild &#x2013;wrappers
+
<a id="cancelled"></a>
-## Cancelled talk
+## Cancelled talk :schedule:
1. Update conf.org to mark the talk as cancelled.
2. Update the `schedule-choices` block to fix the time for the following talk, or recalculate all the schedules. Check for any validation errors in the `:results:` block.
@@ -3333,23 +4689,71 @@ sudo -iu ikiwiki &#x2013; ikiwiki &#x2013;setup ~ikiwiki/emacsconf.setup
<a id="last-minute-prerec"></a>
-## Last-minute prerecording submission
+## Last-minute prerecording submission :upload:
- COORD will copy it from the FTP upload server to orga@res.emacsconf.org:~/stream -p 46668 and name it appropriately.
- COORD will notify STREAM with the scp command and the mpv command so that STREAM can choose.
+<a id="live-issues"></a>
+
+## Technical issues during a live presentation :stream:
+
+- HOST tries to contact the speaker
+- [? back on track]
+ - [? can be squeezed into remaining time]: Continue
+ - [? need extra time]: CHECK fiddles with buffer of following talks in conf.org and updates schedule
+ - [? need too much extra time (ex: 10min)]: HOST acknowledges
+ technical issues and says we may be able to follow up after the
+ conference
+- [? can&rsquo;t resume]: HOST acknowledges technical issues and says we may
+ be able to follow up after the conference
+
+
+<a id="stream-issues"></a>
+
+## Big technical issues with streaming :stream:
+
+<file://ssh:orga@front0.emacsconf.org:/var/www/status.emacsconf.org/index.html>
+
+- HOST notifies #emacsconf and #emacsconf-org and adds a note at the top of the ${pad}.
+- HOST updates the 2022.md wiki page
+- CHECK publishes prerecordings
+ - media.emacsconf.org
+ - wiki
+ - Toobnix
+ - Peertube
+- STREAM e-mails the mailing list
+
+
<a id="last-minute-captions"></a>
-## Last-minute caption update
+## Last-minute caption or file update :upload:
- CHECK uploads the &#x2013;main.vtt file to orga@res.emacsconf.org:~/stream -p 46668
- If streaming locally, STREAM copies the VTT file and loads it into MPV with `--sub-file`
+ssh orga@media.emacsconf.org
+cd backstage; make all
+
+ssh orga@res.emacsconf.org -p 46668
+~/cache/update-cache
+cd ~/stream
+cp ~/cache/\*$SLUG\*&#x2013;main.webm .
+
+
+<a id="pad-broken"></a>
+
+## Pad malfunction or mess-up :infra:
+
+- PAD resets the pad using the time slider
+- [? still not recovered]
+ - PAD reimports the pad from backup
+
<a id="missing"></a>
-## Speaker has not checked in
+## Speaker has not checked in :sched:
- Let the previous talk run a little longer for Q&A; end at least in time for the prerec
- After the previous Q&A wraps up, play the prerec
@@ -3360,7 +4764,7 @@ sudo -iu ikiwiki &#x2013; ikiwiki &#x2013;setup ~ikiwiki/emacsconf.setup
<a id="really-missing"></a>
-## Speaker does not have a prerec and has not checked in
+## Speaker does not have a prerec and has not checked in :sched:
- Let the previous talk do extended Q&A
- Close to the time of the missing talk:
@@ -3373,18 +4777,9 @@ sudo -iu ikiwiki &#x2013; ikiwiki &#x2013;setup ~ikiwiki/emacsconf.setup
- let mplsCorwin or zaeph fill in
-<a id="pad-broken"></a>
-
-## Pad malfunction or mess-up
-
-- PAD resets the pad using the time slider
-- [? still not recovered]
- - PAD reimports the pad from backup
-
-
<a id="conduct"></a>
-## Conduct guidelines issue
+## Conduct guidelines issue :host:
- [? IRC]: IRC operator addresses it with a reminder and/or a kick or a ban
- [? not resolved, or onscreen]
@@ -3410,37 +4805,6 @@ sudo -iu ikiwiki &#x2013; ikiwiki &#x2013;setup ~ikiwiki/emacsconf.setup
- STREAM will do the hosting.
-<a id="live-issues"></a>
-
-## Technical issues during a live presentation :stream:
-
-- HOST tries to contact the speaker
-- [? back on track]
- - [? can be squeezed into remaining time]: Continue
- - [? need extra time]: CHECK fiddles with buffer of following talks in conf.org and updates schedule
- - [? need too much extra time (ex: 10min)]: HOST acknowledges
- technical issues and says we may be able to follow up after the
- conference
-- [? can&rsquo;t resume]: HOST acknowledges technical issues and says we may
- be able to follow up after the conference
-
-
-<a id="stream-issues"></a>
-
-## Big technical issues with streaming :stream:
-
-<file://ssh:orga@front0.emacsconf.org:/var/www/status.emacsconf.org/index.html>
-
-- HOST notifies #emacsconf and #emacsconf-org and adds a note at the top of the ${pad}.
-- HOST updates the 2022.md wiki page
-- CHECK publishes prerecordings
- - media.emacsconf.org
- - wiki
- - Toobnix
- - Peertube
-- STREAM e-mails the mailing list
-
-
<a id="network"></a>
## live0 can&rsquo;t handle the load or is close to network transfer limit
@@ -3488,12 +4852,12 @@ mpv &#x2013;vf=negate $url
export SLUG=the ID of the talk
-- [TO\_STREAM -> PLAYING](#orgd7e6def):stream:
+- [TO\_STREAM -> PLAYING](#orgffa54ff):stream:
- [CLOSED\_Q -> OPEN\_Q](#open)
- [OPEN\_Q -> TO\_ARCHIVE](#archive)
-<a id="orgd7e6def"></a>
+<a id="orgffa54ff"></a>
### TO\_STREAM -> PLAYING :stream:
@@ -3554,20 +4918,6 @@ STATE=before; ssh orga@media.emacsconf.org &ldquo;cp *home/orga/backstage/assets
- MPV goes to MPV sink, browser goes to recording sink, FFMPEG takes in recording monitor
-<a id="renamed"></a>
-
-## Renamed talk
-
-1. Change conf.org heading.
-2. Change the video slug property.
-3. Rename any existing files in the backstage area.
-4. emacsconf-publish-backstage-index
-5. Change the title and heading on the wiki page.
-6. Update the schedule (emacsconf-publish-schedule).
-7. Update info pages (emacsconf-publish-before-pages).
-8. Update the watch pages.
-
-
<a id="play-mpv-manually"></a>
## Video playing error, need to play with mpv manually :stream:
@@ -3576,7 +4926,7 @@ You can skip the intro and play a video by specifying the filename, like this:
play ~/stream/emacsconf-2022-journalism-\*
-<a id="org5e6db1e"></a>
+<a id="orgd99c648"></a>
## Shift changes
@@ -3588,7 +4938,7 @@ play ~/stream/emacsconf-2022-journalism-\*
<a id="restart-480p"></a>
-## Need to restart 480p stream
+## Need to restart 480p stream :stream:
ssh live
@@ -3597,6 +4947,44 @@ or
/usr/local/bin/emacsconf-lowres-gen-on-connect
+<a id="renamed"></a>
+
+## Renamed talk :sched:
+
+1. Change conf.org heading.
+2. Change the video slug property.
+3. Rename any existing files in the backstage area.
+4. emacsconf-publish-backstage-index
+5. Change the title and heading on the wiki page.
+6. Update the schedule (emacsconf-publish-schedule).
+7. Update info pages (emacsconf-publish-info-pages).
+8. Update the watch page (emacsconf-publish-watch-pages).
+9. Update the pad, and the two previous pads.
+10. Update the in-between slide (and for the following one) and upload the assets.
+11. Redo the intros for that talk and the following one
+ SLUG=health; ffmpeg -y -loop 1 -i ../../in-between/$SLUG.png -i $SLUG.opus -i $SLUG.vtt -shortest ../$SLUG.webm; mpv $SLUG.webm
+
+
+### DONE Rename lspbridge
+
+rerecord lspbridge intro
+
+lspbridge science
+
+
+### DONE Rename health
+
+health eev
+
+
+<a id="orgc1b179b"></a>
+
+## TODO Need to restart the Toobnix streams so we don&rsquo;t exceed 5 hours
+
+screen -S restream-gen-toobnix -X quit; screen-restream-gen-toobnix.sh
+screen -S restream-dev-toobnix -X quit; screen-restream-dev-toobnix.sh
+
+
<a id="archive"></a>
# Task archive
@@ -3808,8 +5196,6 @@ Process for accepting a talk:
Look for the TO\_CONFIRM status in conf.org, probably include in schedule e-mail
-<a id="check-sched"></a>
-
## DONE Send people schedule information and doublecheck their availability/Q&A preference :sachac:email:speakers:sched:
(defun emacsconf-mail-schedule (group &optional template)
@@ -4173,19 +5559,19 @@ Considerations:
- FOSSGIS uses Seafile <https://vmx.cx/cgi-bin/blog/index.cgi/video-uploads-for-an-online-conference%3A2021-06-12%3Aen%2Cconference%2Cgeo>
- Some options:
- <table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
+ <table>
<colgroup>
- <col class="org-left" />
+ <col class="org-left">
- <col class="org-left" />
+ <col class="org-left">
- <col class="org-left" />
+ <col class="org-left">
- <col class="org-left" />
+ <col class="org-left">
- <col class="org-left" />
+ <col class="org-left">
</colgroup>
<tbody>
<tr>
@@ -4323,8 +5709,6 @@ Where:
It&rsquo;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:
@@ -4523,8 +5907,6 @@ should the captions be outside the wiki?
- SIL fonts choice
-<a id="volunteer-2022-10-23"></a>
-
## DONE Write volunteer update 2022-10-23 :update:
Hello, folks! Here&rsquo;s the weekly update on what&rsquo;s happening backstage
@@ -4676,7 +6058,8 @@ Sacha
### DONE Follow up with speakers based on their availability
-<a id="announce-program"></a>
+### CANCELLED Email speakers because I&rsquo;ll be shutting down the web upload
+
## DONE Send schedule-published email for emacsconf-discuss :needsowner:timesensitive:email:
@@ -4889,6 +6272,11 @@ Other considerations:
- We might want to tweak the time before keyframes (`-g`).
+#### FFMpeg
+
+<https://img.ly/blog/ultimate-guide-to-ffmpeg/>
+
+
### DONE Figure out workflow for handling submitted prerecs
We need time after the prerecs get submitted to:
@@ -5092,6 +6480,12 @@ see conf.org for the rest of the process
### CANCELLED Hold Q&A session with volunteers
+### TODO Respond to new volunteers
+
+
+### SOMEDAY Subscribe volunteers to mailing list
+
+
<a id="streaming"></a>
## DONE Investigate streaming options, maybe OBS in the cloud :sachac:
@@ -5295,13 +6689,13 @@ and type your message in.
ssh emacsconf-$TRACK@res.emacsconf.org &ldquo;vncserver -kill&rdquo;
-<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
+<table>
<colgroup>
-<col class="org-left" />
+<col class="org-left">
-<col class="org-left" />
+<col class="org-left">
</colgroup>
<tbody>
<tr>
@@ -5384,7 +6778,7 @@ emacsconf-todo-hooks
### CANCELLED Use xdotool to automate joining BBB in Firefox (signing in, clicking on listen only)
-#### TODO Xdotool over ssh so that I can click things?
+#### DONE Xdotool over ssh so that I can click things?
### CANCELLED Experiment with sharing part of the screen so that there&rsquo;s space for us to work a little off-screen
@@ -5469,15 +6863,15 @@ intro needs to be manual
Gen:
-<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
+<table>
<colgroup>
-<col class="org-left" />
+<col class="org-left">
-<col class="org-left" />
+<col class="org-left">
-<col class="org-left" />
+<col class="org-left">
</colgroup>
<tbody>
<tr>
@@ -5519,7 +6913,7 @@ dev:
### DONE Separate mumble audio so that panic button can still bring in our audio
-### SOMEDAY Prepare for rms talk and Q&A with bandali
+### DONE Prepare for rms talk and Q&A with bandali
Mumble?
@@ -5543,6 +6937,12 @@ if ! screen -list | grep -q background; then
fi
+### DONE Make it easy to rebroadcast other track (ex: rms) - might need mpv with minimal configuration, switchable profiles
+
+
+#### DONE make it easy to rebroadcast
+
+
<a id="caption-workflow"></a>
## DONE Smoothen captioning workflow :sachac:
@@ -5555,6 +6955,22 @@ OpenAPI captions so that people can decide what they like.
[Set up MPV for captions](#mpv-captions)
+### DONE Make sure all the captioned files are marked so
+
+ (seq-keep (lambda (o)
+ (when (and (string= (plist-get o :status) "TO_STREAM")
+ (or (null (plist-get o :captions-edited))
+ (null (with-temp-buffer
+ (insert-file-contents
+ (expand-file-name (concat (plist-get o :video-slug) "--main.vtt")
+ emacsconf-cache-dir))
+ (goto-char (point-min))
+ (re-search-forward "captioned by" (line-end-position) t)))))
+ (plist-get o :slug)
+ ))
+ (emacsconf-get-talk-info))
+
+
### DONE Edit survey captions
@@ -5582,17 +6998,17 @@ I might try out lhotse and torchaudio someday, but it&rsquo;s low priority. aene
Original file: 21:16 21 minutes
-<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
+<table>
<colgroup>
-<col class="org-left" />
+<col class="org-left">
-<col class="org-right" />
+<col class="org-right">
-<col class="org-right" />
+<col class="org-right">
-<col class="org-left" />
+<col class="org-left">
</colgroup>
<tbody>
<tr>
@@ -5796,6 +7212,70 @@ ffmpeg -y -i emacsconf-2022-rmsted&#x2013;main.ogg -acodec pcm\_s16le -ac 1 -ar
)
+### SOMEDAY ggerganov/whisper.cpp: Port of OpenAI&rsquo;s Whisper model in C/C++
+
+<https://github.com/ggerganov/whisper.cpp>
+
+
+### TODO Move the captioning stuff to the public area
+
+
+### TODO Look into getting the confidence intervals out of aeneas, maybe by getting it as an XML
+
+Also look into finetuneas
+
+
+### SOMEDAY A Deep Dive Exploration Applying OpenAIā€™s Whisper ASR To A PBS NewsHour Broadcast ā€“ The GDELT Project
+
+<https://blog.gdeltproject.org/a-deep-dive-exploration-applying-openais-whisper-asr-to-a-pbs-newshour-broadcast/>
+
+
+### SOMEDAY Confidence scores for each word? - Discussion #284 - openai/whisper
+
+<https://github.com/openai/whisper/discussions/284>
+
+
+### SOMEDAY jianfch/stable-ts: Stabilizing timestamps of OpenAI&rsquo;s Whisper outputs down to word-level
+
+<https://github.com/jianfch/stable-ts>
+
+
+### SOMEDAY See if we can get confidence data out of whisper
+
+
+### SOMEDAY Use bbb events to identify speaker changes and overlapping spans that might need closer attention
+
+
+### SOMEDAY Getting Started with Bacalhau | Bacalhau Docs
+
+<https://docs.bacalhau.org/getting-started/installation>
+
+
+### SOMEDAY Use OpenAI Whisper and Bacalhau to transcribe audio and video files | Nerd For Tech
+
+<https://medium.com/nerd-for-tech/how-to-use-bacalhau-and-openai-whisper-to-transcribe-a-youtube-video-7b6ee0135ce2>
+
+
+### SOMEDAY A Deep Dive Exploration Applying OpenAIā€™s Whisper ASR To A Russian Television News Broadcast ā€“ The GDELT Project
+
+<https://blog.gdeltproject.org/a-deep-dive-exploration-applying-openais-whisper-asr-to-a-russian-television-news-broadcast/>
+
+
+### SOMEDAY Benchmarks for T4 & V100 GPUs, comparison with human captioning, and deep dive on non-deterministic output Ā· Discussion #395 Ā· openai/whisper
+
+<https://github.com/openai/whisper/discussions/395>
+
+
+### SOMEDAY Pointers for running this on a GPU via a cloud service? Ā· Discussion #398 Ā· openai/whisper
+
+<https://github.com/openai/whisper/discussions/398>
+
+
+### SOMEDAY How to chunk text into paragraphs using python | by N Polovinkin | Medium
+
+<https://medium.com/@npolovinkin/how-to-chunk-text-into-paragraphs-using-python-8ae66be38ea6>
+
+
## 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
@@ -6062,6 +7542,7 @@ We also need a quick way to update the schedule.
### Sunday morning
+- rms: Ends at 12:15 after 12:00
- ![img](emergency-back-to-one-sun-am.svg)
@@ -6143,6 +7624,48 @@ Thank you for your patience!
Sacha
+## DONE Manage front0 and live0 size :bandali:
+
+
+### DONE Resize front0 and live0 in the Linode administration console :bandali:
+
+[20:23:48] <bandali> aha okay thanks. yeah i think i&rsquo;ll do at least 8gb or 16gb for front0, maybe even one or two larger
+[20:24:19] <bandali> and for live0 probably the same as last year, maybe slightly larger
+
+
+### CANCELLED Check fps after resize :sachac:
+
+
+### DONE Back up dumps from live0
+
+media.emacsconf.org:~/emacsconf-2021-stream-dumps/
+res.emacsconf.org:/data/emacsconf/2021/dumps/
+
+Now there should be more space in case we want to enable dumping before the resize
+
+
+### DONE Update ansible configuration :sachac:
+
+Waiting for resize
+Clean up the media root
+
+in all.yml
+
+test\_mode: false
+
+then
+
+ansible-playbook -i inventory.yml prod-playbook.yml &#x2013;tags media
+ansible-playbook -i inventory.yml prod-playbook.yml &#x2013;tags stream
+ansible-playbook -i inventory.yml prod-playbook.yml &#x2013;tags publish
+
+Confirm that
+
+- icecast dumps recordings
+- <https://media.emacsconf.org/2022> is unprotected
+- <https://media.emacsconf.org/2022/backstage> is protected
+
+
<a id="comms"></a>
# Communications
@@ -6318,53 +7841,6 @@ Sacha Chua
### Captions for approval
- (defun emacsconf-mail-captions-for-approval (talk)
- (interactive (list (emacsconf-complete-talk-info)))
- (let ((captions (expand-file-name (concat (plist-get talk :video-slug) "--main.vtt")
- emacsconf-cache-dir))
- (captioner-info
- (with-current-buffer (find-file-noselect emacsconf-org-file)
- (org-entry-properties (org-find-property "CUSTOM_ID" (plist-get talk :captioner))))))
- (emacsconf-mail-prepare
- (emacsconf-mail-merge-get-template "captions")
- (plist-get talk :email)
- (list
- :speakers-short (plist-get talk :speakers-short)
- :year emacsconf-year
- :email (plist-get talk :email)
- :title (plist-get talk :title)
- :captioner (assoc-default "NAME_SHORT" captioner-info)
- :url
- (format "https://%s:%s@media.emacsconf.org/%s/backstage/#%s"
- emacsconf-backstage-user
- emacsconf-backstage-password
- emacsconf-year
- (plist-get talk :slug))
- :password emacsconf-backstage-password
- :captioner-email (assoc-default "EMAIL" captioner-info)
- :captioner-volunteered
- (if (string= (plist-get talk :captioner) "sachac")
- ""
- (format "%s volunteered to edit the captions for your video. " (assoc-default "NAME_SHORT" captioner-info)))
- :chapters-note
- (if (file-exists-p
- (expand-file-name (concat (plist-get talk :video-slug) "--main--chapters.vtt")
- emacsconf-cache-dir))
- "I've come up with some potential chapter headings which you can see as NOTE in the transcript or in the backstage entry for your video. Let me know if you want to tweak those.\n\n"
- "")
- :intro-note
- (emacsconf-surround
- "${wrap}Also, I drafted a quick intro for the host to read. Let me know if you want to tweak this: " (plist-get talk :intro-note) "\n\n"
- "")
- :captioner-thanks
- (if (string= (plist-get talk :captioner) "sachac")
- ""
- (format "%s: Thank you for editing the captions!\n\n" (assoc-default "NAME_SHORT" captioner-info)))
- :captions (with-temp-buffer (insert-file-contents captions) (buffer-string))))
- (mml-attach-file captions "text/vtt" "Subtitles" "attachment")))
-
-
-<a id="approve-captions"></a>
#### Template
@@ -6376,8 +7852,7 @@ ${captioner-volunteered} I&rsquo;ve attached the caption text file in case
you want to review it, suggest any corrections, or use the text in a
blog post or elsewhere. You can look at the attached file or watch
your video with closed captions at ${url} . I&rsquo;ve also included the
-captions at the end of this e-mail for your convenience, and the
-proposed chapter headings are NOTEs before the subtitles.${wrap}
+captions at the end of this e-mail for your convenience.${wrap}
${chapters-note}${intro-note}Do you have a bio or social/donation links you&rsquo;d like us
to add to the wiki page for your talk?
@@ -6944,19 +8419,20 @@ see emacsconf-import-comments-from-etherpad-text
## From previous years
-- [ ] Shorter CFP, longer recording time
-- [ ] Ask for talk title to be subject in submission
+- [X] Shorter CFP, longer recording time
+- [X] Ask for talk title to be subject in submission
- [X] Fresh eyes can doublecheck that all the talks are included and that availability properties have been set/followed
- [X] Putting ā€˜availabilityā€™ towards the top of the submission template would make it harder for us to miss it during reviews, and it shouldnā€™t change anything for speakers.
- [X] All the personalised messages weā€™ve sent during the scheduling campaign should probably be kept in a repo so that itā€™s less work for those who will be in charge of it next.
-- [ ] Since people kept running into ftp problems, we might want to set up a web-frontend next year to minimise problems.
+- [X] Since people kept running into ftp problems, we might want to set up a web-frontend next year to minimise problems.
- [X] Might be a good idea to avoid Thanksgiving weekend, as lots of people travel then
-- [ ] Tech-checks havenā€™t been really popular this year, but there are so many ways we could make them more useful. On the <span class="timestamp-wrapper"><span class="timestamp">[2021-11-16 Tue]</span></span>, 10 days prior the conf, we thought that it could be nice to use them as recording sessions for late-prerecs, and thatā€™s only one example.
+- [X] Tech-checks havenā€™t been really popular this year, but there are so many ways we could make them more useful. On the <span class="timestamp-wrapper"><span class="timestamp">[2021-11-16 Tue]</span></span>, 10 days prior the conf, we thought that it could be nice to use them as recording sessions for late-prerecs, and thatā€™s only one example.
- [X] Having the NO\_NEWS / WAITING\_FOR\_PREREC contrast from the start of `conf.org` might have made it easier for us to ping speakers who were late to the party this year. Rather than sending the personalised 10 days prior to the conference, we might have sent it a week after the submission of the anticipated scheduled (where we ask speakers if their allocated time is okay, based on their availability).
-- [ ] Move first dry run earlier (maybe one month before?) to give us more time for process tweaks
+- [X] Move first dry run earlier (maybe one month before?) to give us more time for process tweaks
- [ ] Dropping talks one week before the conf might allow us to have a near-fixed schedule to announce early.
+ - or we can plan for live or gaps, that&rsquo;s cool too
- [ ] CRM
- - [ ]zaeph: Implementing a variable for `automatic-emails` would make it easier to suppress user-hooks for message-mode
+ - [ ] zaeph: Implementing a variable for `automatic-emails` would make it easier to suppress user-hooks for message-mode
- [ ]zaeph: Even though weā€™re sending emails automatically, we might want to keep trace of them in our `Sent` IMAP folder. notmuch does it with `Fcc:` in the header, so we might need a user-customisable var here as well.
- [ ] less tiring lighting
- [ ] split host and streamer?
@@ -6965,9 +8441,11 @@ see emacsconf-import-comments-from-etherpad-text
- [ ] Tight opening-remarks, possible pre-rec.
- [X] Asking pronunciation of name as soon as application with SA-cha CHEW-ah pattern would be good. Not a lot of diligence with it this year.
- [ ] People need to specify their IRC handle on application (potentially forcing nick and/or first-name/last-name.
+ - suggested, but not everyone has IRC, so that&rsquo;s okay. We&rsquo;ll manage. Walk new speakers through it?
- [ ] We might want to figure out an ffmpeg workflow for noise-suppressing on top of normalisation. Take inspiration from Audacity macros.
- [ ] Having a more relaxed Saturday might give us time to adjust to tech-stack.
-- [ ] Creating BBB rooms in anticipation and/or automatically, before or during, might make for smoother check-in; right now, people keep wanting to check in via email even though we told them to use chat
+- [X] Creating BBB rooms in anticipation and/or automatically, before or during, might make for smoother check-in; right now, people keep wanting to check in via email even though we told them to use chat
+ - One BBB room per talk
- [ ] Pre-recs were a little blocky wrt encoding; we might want to bump the bitrate next year
- [ ] we can see if bot + pads + merging will help next year, and we can also experiment with multiple streams if there are enough people to pull it off so that speakers don&rsquo;t feel like they&rsquo;ve just been dropped in a room and left to their own devices :)