summaryrefslogtreecommitdiffstats
path: root/2022/organizers-notebook/index.org
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--2022/organizers-notebook/index.org2375
1 files changed, 2180 insertions, 195 deletions
diff --git a/2022/organizers-notebook/index.org b/2022/organizers-notebook/index.org
index 3703ffe8..a778b6f4 100644
--- a/2022/organizers-notebook/index.org
+++ b/2022/organizers-notebook/index.org
@@ -1,3 +1,4 @@
+# [[elisp:(org-md-export-to-markdown)][Export this file to Markdown]]
#+todo: TODO(t) SOMEDAY STARTED INPROGRESS(i) WAITING(w) STANDBY(s) BLOCKED(b) | DONE(x) CANCELLED(c)
#+OPTIONS: h:6 toc:nil num:nil ':t
#+PROPERTY: header-args :results silent :exports code :tangle yes
@@ -52,23 +53,6 @@ or ~C-c \~ (~org-match-sparse-tree~) to see anything tagged with your tag.
~org-agenda~ with ~<~ for the file restriction may also be handy.
-* Cadence
-:PROPERTIES:
-:CUSTOM_ID: cadence
-:OWNER: sachac
-:END:
-
-| Week ending | Work | Speakers | Volunteers | Public |
-| [2022-09-30 Fri] | | [[#acceptance][acceptance, reply to confirm]] | | |
-| [2022-10-09 Sun] | | [[#check-sched][schedule, reply if not okay]] | [[#overall][overall priorities]] | |
-| [2022-10-16 Sun] | [[#etherpad][Etherpad]], [[#upload][stream]] | | infra update | |
-| [2022-10-23 Sun] | [[#upload][file upload]], [[#write-viewing][watch pages]] | [[#mail-upload][file upload instructions]], backstage | [[#volunteer-2022-10-23][training]] | |
-| [2022-10-30 Sun] | [[#streaming][OBS in the cloud]] | | caption kickoff | [[#announce-program][schedule]], posters? |
-| [2022-11-06 Sun] | [[#intro][intro, exit]], [[#dry-run][dry run]], prerecs | [[#ack-prerec][prerec confirmation]]/reminder, [[#approve-captions][caption progress]] | | |
-| [2022-11-13 Sun] | captions | tech check, bio, support links (ex: Liberapay)? | [[#shifts][shifts]] | |
-| [2022-11-20 Sun] | captions | checkin instructions and schedule updates | | |
-| [2022-11-27 Sun] | captions | last weekend before EmacsConf | | watching |
-
* Overall priorities
:PROPERTIES:
:CUSTOM_ID: overall
@@ -81,31 +65,48 @@ scramble to do in order to get the conference off the ground. *bold*
is our current goal. Feel free to volunteer for anything that
interests you!
-| | Good | Better | Best |
-|------------------------+-----------------------------------------+--------------------------------------+--------------------------------------------------------------|
-| [[#conforg][conf.org management]] | on sachac's laptop | S: on res.emacsconf.org | *DONE S/Z: other people know how to work with it* |
-| [[#prepare-prerec-process][prerec]] | convert to webm | normalize audio | *[[#mastering][DONE Z: reduce noise]]* |
-| [[#publish-live][talk pages]] | DONE S: link to stream, pad, IRC | *S: link to prerec when live* | embed stream, pad, IRC, prerec |
-| [[#sched-decision][schedule]] | one track | *DONE S: two tracks* | aligned times, full roster |
-| [[#upload][upload]] | FTP | *DONE S: web-based* | auto-encoded, preview (SReview?) |
-| [[#streaming][streaming]] | ffmpeg from computer | OBS | *DONE: OBS in cloud, switchable hosts* |
-| [[#other-streams][other streams]] | 480p | + Toobnix | *S: + YouTube* |
-| [[#coordinate-volunteers][volunteer coordination]] | ad-hoc | *DONE playbook* | training meetings + recordings |
-| BBB rooms | about 5 rooms that we cycle through | | *DONE S: one room per speaker* |
-| host | no host, speaker reads pad | *host reads pad* | host monitors IRC and helps with BBB as well |
-| BBB Q&A | none | *DONE open to community* | moderated by speaker and host |
-| BBB Q&A start | awkward silence while waiting | *speaker can demo a little* | host has prepared questions just in case no one shows up |
-| [[#write-viewing][watch page]] | tracks | + IRC | *DONE S: + talk info*, maybe even current/recent/next |
-| [[#etherpad][pad]] | one pad for conf | one pad per talk, wikimedia | *DONE S: one pad per talk, self-hosted* so we can access API |
-| [[#irc][IRC]] | #emacsconf, -org | *DONE #emacsconf, -gen, -dev, -org* | IRC volunteer copying to pads; maybe even IRC bots |
-| [[#irc-announce][IRC announcements]] | ERC commands | *DONE S: hook-based* | timer-based |
-| [[#publishing-sched][sched update]] | *DONE S: publish at start* | update main sched | update talk pages |
-| [[#video-platforms][other platforms]] | *S: Toobnix & YT after event* | | S: Toobnix + YT when live |
-| schedule view | text table | imagemap fallback | *DONE S: interactive SVG* |
-| [[#caption-workflow][caption workflow]] | YT autosubs | Whisper autosubs | *DONE: Whisper + more granular timestamps* |
-| [[#wiki-design][wiki]] | plain text, markdown | *DONE S: some JS and CSS enrichment* | more JS and CSS, embeds, videoplayer |
-| [[#ansible][ansible]] | none | *DONE S: some automation* | comprehensive, can also work against containers |
-| [[#intro][intro and exit]] | *DONE: slide on screen, host on Mumble* | per-talk video, recorded voiceover | Emacs thing so we can display info, countdowns, IRC |
+| | Good | Better | Best |
+|------------------------+-------------------------------------------+--------------------------------------+--------------------------------------------------------------|
+| [[#harvest][harvesting talks & Q&A]] | *recordings trimmed if needed, published* | chapter markers | edited transcripts |
+
+Previous priorities;
+
+| [[#conforg][conf.org management]] | on sachac's laptop | S: on res.emacsconf.org | *DONE S/Z: other people know how to work with it* |
+| [[#prepare-prerec-process][prerec]] | convert to webm | normalize audio | *[[#mastering][DONE Z: reduce noise]]* |
+| [[#publish-live][talk pages]] | DONE S: link to stream, pad, IRC | *S: link to prerec when live* | embed stream, pad, IRC, prerec |
+| [[#sched-decision][schedule]] | one track | *DONE S: two tracks* | aligned times, full roster |
+| [[#upload][upload]] | FTP | *DONE S: web-based* | auto-encoded, preview (SReview?) |
+| [[#streaming][streaming]] | ffmpeg from computer | OBS | *DONE: OBS in cloud, switchable hosts* |
+| [[#other-streams][other streams]] | 480p | + Toobnix | *S: + YouTube* |
+| [[#coordinate-volunteers][volunteer coordination]] | ad-hoc | *DONE playbook* | training meetings + recordings |
+| BBB rooms | about 5 rooms that we cycle through | | *DONE S: one room per speaker* |
+| host | no host, speaker reads pad | *host reads pad* | host monitors IRC and helps with BBB as well |
+| BBB Q&A | none | *DONE open to community* | moderated by speaker and host |
+| BBB Q&A start | awkward silence while waiting | *speaker can demo a little* | host has prepared questions just in case no one shows up |
+| [[#write-viewing][watch page]] | tracks | + IRC | *DONE S: + talk info*, maybe even current/recent/next |
+| [[#etherpad][pad]] | one pad for conf | one pad per talk, wikimedia | *DONE S: one pad per talk, self-hosted* so we can access API |
+| [[#irc][IRC]] | #emacsconf, -org | *DONE #emacsconf, -gen, -dev, -org* | IRC volunteer copying to pads; maybe even IRC bots |
+| [[#irc-announce][IRC announcements]] | ERC commands | *DONE S: hook-based* | timer-based |
+| [[#publishing-sched][sched update]] | *DONE S: publish at start* | update main sched | update talk pages |
+| [[#video-platforms][other platforms]] | *S: Toobnix & YT after event* | | S: Toobnix + YT when live |
+| schedule view | text table | imagemap fallback | *DONE S: interactive SVG* |
+| [[#caption-workflow][caption workflow]] | YT autosubs | Whisper autosubs | *DONE: Whisper + more granular timestamps* |
+| [[#wiki-design][wiki]] | plain text, markdown | *DONE S: some JS and CSS enrichment* | more JS and CSS, embeds, videoplayer |
+| [[#ansible][ansible]] | none | *DONE S: some automation* | comprehensive, can also work against containers |
+| [[#intro][intro and exit]] | DONE: slide on screen, host on Mumble | *per-talk video, recorded voiceover* | Emacs thing so we can display info, countdowns, IRC |
+* Next comms update
+SCHEDULED: <2022-12-18 Sun>
+:PROPERTIES:
+:CUSTOM_ID: update
+:CREATED: [022-12-11 Sun 10:0]
+:END:
+
+- 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
+- [2022-12-15 Thu] all Q&A videos posted, large model VTTs available
+- [2022-12-12 Mon] Updated grail, updated backstage view
+- [2022-12-11 Sun] Thank-you notes sent to all the speakers with Toobnix and YouTube URLs, BBB playback info
* Projects and other long-running tasks
:PROPERTIES:
@@ -113,12 +114,1072 @@ interests you!
:END:
#+TOC: headlines 1 local
+** Harvest live talks and Q&A
+:PROPERTIES:
+:CUSTOM_ID: harvest
+:END:
+*** DONE Add audio-only options to the publishing process
+CLOSED: [2022-12-15 Thu 16:38]
+:PROPERTIES:
+:Effort: 0:30
+:END:
+*** 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
+CLOSED: [2022-12-15 Thu 10:27]
+**** DONE Check status
+CLOSED: [2022-12-15 Thu 00:39]
+#+begin_src emacs-lisp :results replace :eval no
+(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))))
+#+end_src
+
+#+RESULTS:
+:results:
+nil
+:end:
+
+**** 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
+CLOSED: [2022-12-12 Mon 11:30]
+:PROPERTIES:
+:CREATED: [2022-12-11 Sun 09:53]
+:END:
+:LOGBOOK:
+- State "DONE" from "TODO" [2022-12-12 Mon 11:30]
+:END:
+
+*** DONE Document this phase of the conference
+CLOSED: [2022-12-08 Thu 20:54]
+:PROPERTIES:
+:CREATED: [2022-12-08 Thu 19:33]
+:END:
+
+We'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'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 (--bbb-*
+ for each talk) are now in the backstage area for speakers and/or
+ volunteers to review
+- RMS Q&A audio has been uploaded (--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'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'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'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'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 --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'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
+(`--bbb-webcams.webm`) and the screenshare (if any) as another video
+(`--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, `--bbb-webcams.opus`) with the video
+from the screenshare.
+
+ ffmpeg -i example--bbb-webcams.opus -i example--bbb-deskshare.webm -c copy example--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 the the Q&A videos will be
+shared after the talk. Sometimes there'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'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'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 "select='not(between(t,15,45))', setpts=N/FRAME_RATE/TB" \
+ -af "aselect='not(between(t,15,45))', asetpts=N/SR/TB" \
+ 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
+CLOSED: [2022-12-08 Thu 20:35]
+
+Experience level: no technical background needed; slightly easier if you'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't been answered and forward feedback to the speaker. It'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've added IRC chat logs to the top of the backstage page. Each talk also links to the HTML (--pad.html) and Markdown (--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'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're archiving.
+
+If you'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
+CLOSED: [2022-12-08 Thu 20:35]
+
+About 15 hours total
+#+begin_src emacs-lisp :eval no
+(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"
+#+end_src
+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
+CLOSED: [2022-12-06 Tue 09:52]
+
+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
+ #+begin_src emacs-lisp :eval no
+ (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
+ ""))
+ #+end_src
+
+**** DONE Convert to Opus in preparation for transcription
+
+find -name webcams.webm -exec bash -c 'ffmpeg -i {} -c:a copy $(echo {} | sed 's/webm/opus/')' \;
+
+**** TODO Transcribe serially
+in bbb-whisper
+#+begin_src sh :eval no
+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
+#+end_src
+*** DONE Extract RMS Q&A from dump
+CLOSED: [2022-12-08 Thu 20:35]
+17:48 of current
+
+**** DONE Ffmpeg
+CLOSED: [2022-12-08 Thu 20:35]
+:PROPERTIES:
+:CREATED: [2022-12-04 Sun 20:18]
+:END:
+
+[19:26] <bandali> rsyncing the stream dumps from live0:/data/emacsconf-2022-* into fh-vm01:~orga/live0-streams/
+[19:26] <bandali> i'll probably rsync a copy to my own laptop as well, for backup
+[19:29] <bandali> a reminder that the stream dumps shouldn'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
+CLOSED: [2022-12-08 Thu 20:35]
+*** DONE Post IRC logs to backstage so that volunteers can split them up
+CLOSED: [2022-12-06 Tue 09:55]
+
+See links at the top of backstage
+
+*** SOMEDAY Copy logs for analysis
+:PROPERTIES:
+:CREATED: [2022-12-04 Sun 20:41]
+:END:
+
+*** DONE Transcribe recordings
+CLOSED: [2022-12-15 Thu 00:40]
+:PROPERTIES:
+:CREATED: [2022-12-04 Sun 20:38]
+:END:
+
+*** DONE Collect recordings from bbb
+CLOSED: [2022-12-08 Thu 20:36]
+:PROPERTIES:
+:CREATED: [2022-12-04 Sun 20:38]
+:END:
+
+*** DONE Back up all the pads
+CLOSED: [2022-12-08 Thu 20:35] SCHEDULED: <2022-12-05 Mon>
+*** DONE Extract bbb chat and add to backstage
+CLOSED: [2022-12-08 Thu 20:35]
+:PROPERTIES:
+:CREATED: [2022-12-06 Tue 12:04]
+:Effort: 0:30
+:END:
+:LOGBOOK:
+CLOCK: [2022-12-06 Tue 13:51]--[2022-12-06 Tue 22:11] => 8:20
+:END:
+
+*** SOMEDAY Awesome Speaker Diarization | awesome-diarization
+:PROPERTIES:
+:CREATED: [2022-12-06 Tue 12:00]
+:END:
+
+https://wq2012.github.io/awesome-diarization/
+
+*** SOMEDAY Document irc, bbb chat, pad tasks
+:PROPERTIES:
+:CREATED: [2022-12-05 Mon 15:36]
+:END:
+
+Experience level: no technical background needed; slightly easier if you'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't been answered and forward feedback to the speaker. It'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've added IRC chat logs to the top of the backstage page, and each talk also links to the HTML (--pad.html) and Markdown (--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'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're archiving.
+
+If you'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
+:PROPERTIES:
+:Effort: 0:15
+:END:
+:LOGBOOK:
+CLOCK: [2022-12-11 Sun 14:14]
+:END:
+
+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's find out where the actual recording starts.
+
+Maybe StartWebRTCShareEvent ?
+ParticipantStatusChangeEvent might be the webcam start.
+Is it DeskShareStartRTMP ?
+
+*** TODO [#C] Improve visualization for Q&A sessions, especially when there's nothing else to look at
+**** SOMEDAY Consider the challenge of aligning video segments with a timeline
+:PROPERTIES:
+:CREATED: [2022-12-08 Thu 16:31]
+:END:
+
+**** SOMEDAY windows - Reducing command-line shortcomings caused by excessive number of FFmpeg inputs - Super User
+:PROPERTIES:
+:CREATED: [2022-12-09 Fri 20:24]
+:END:
+
+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
+:PROPERTIES:
+:CREATED: [2022-12-09 Fri 20:26]
+:END:
+
+https://github.com/kkroening/ffmpeg-python
+
+**** SOMEDAY Extension repository - Inkscape Wiki
+:PROPERTIES:
+:CREATED: [2022-12-11 Sun 22:59]
+:END:
+
+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
+:PROPERTIES:
+:CREATED: [2022-12-11 Sun 23:01]
+:END:
+
+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
+:PROPERTIES:
+:CREATED: [2022-12-11 Sun 22:58]
+:END:
+
+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
+:PROPERTIES:
+:CREATED: [2022-12-11 Sun 22:40]
+:END:
+
+https://allefeld.github.io/pytikz/tikz/
+
+**** SOMEDAY tikz pgf - Absolute positioning in beamer - TeX - LaTeX Stack Exchange
+:PROPERTIES:
+:CREATED: [2022-12-11 Sun 22:36]
+:END:
+
+https://tex.stackexchange.com/questions/6185/absolute-positioning-in-beamer
+
+**** SOMEDAY CTAN: Package textpos
+:PROPERTIES:
+:CREATED: [2022-12-11 Sun 22:36]
+:END:
+
+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
+:PROPERTIES:
+:CREATED: [2022-12-11 Sun 22:34]
+:END:
+
+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
+:PROPERTIES:
+:CREATED: [2022-12-11 Sun 22:33]
+:END:
+
+https://www.baeldung.com/cs/exporting-tikz-as-images
+
+**** SOMEDAY OpenAI Whisper tutorial: Whisper - Transcription and diarization (speaker identification) | LabLab
+:PROPERTIES:
+:CREATED: [2022-12-11 Sun 22:23]
+:END:
+
+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
+:PROPERTIES:
+:CREATED: [2022-12-11 Sun 21:53]
+:END:
+
+**** TODO could be fancy to have an FFMPEG compose the videos with names and webcams on the right side
+:PROPERTIES:
+:CREATED: [2022-12-11 Sun 14:41]
+:END:
+
+**** SOMEDAY Try using the single webcam view of the speaker
+:PROPERTIES:
+:CREATED: [2022-12-11 Sun 18:03]
+:END:
+
+*** SOMEDAY Think about how I want to format the VTT for the RMS Q&A
+:PROPERTIES:
+:CREATED: [2022-12-08 Thu 13:53]
+:END:
+
+**** SOMEDAY Use word data, maybe reflow based on it
+:PROPERTIES:
+:CREATED: [2022-12-08 Thu 18:35]
+:END:
+*** SOMEDAY Combine webcams and deskshare
+:PROPERTIES:
+:CREATED: [2022-12-09 Fri 21:24]
+:END:
+
+*** TODO Extract comments from IRC
+**** SOMEDAY Auto-add A: marker for speaker
+:PROPERTIES:
+:CREATED: [2022-12-11 Sun 22:19]
+:END:
+
+*** DONE compare deskshare with webcams
+
+#+begin_src emacs-lisp :eval no
+(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"))
+#+end_src
+
+#+RESULTS:
+:results:
+((/home/sacha/proj/emacsconf/cache/emacsconf-2022-async--emacs-was-async-before-async-was-cool--michael-herstine--bbb-deskshare.webm . -9.0) (/home/sacha/proj/emacsconf/cache/emacsconf-2022-buttons--linking-personal-info-with-hyperbole-implicit-buttons--mats-lidell--bbb-deskshare.webm . -7.0) (/home/sacha/proj/emacsconf/cache/emacsconf-2022-dbus--the-wheels-on-dbus--ian-eure--bbb-deskshare.webm . -24.0) (/home/sacha/proj/emacsconf/cache/emacsconf-2022-grail--graila-generalized-representation-and-aggregation-of-information-layers--sameer-pradhan--bbb-deskshare.webm . -8.0) (/home/sacha/proj/emacsconf/cache/emacsconf-2022-mail--revisiting-the-anatomy-of-emacs-mail-user-agents--mohsen-banan--bbb-deskshare.webm . -7.0) (/home/sacha/proj/emacsconf/cache/emacsconf-2022-orgvm--orgvm-a-simple-http-server-for-org--corwin-brust--bbb-deskshare.webm . 12.0) (/home/sacha/proj/emacsconf/cache/emacsconf-2022-rde--rde-emacs-introduction--andrew-tropin--bbb-deskshare.webm . -49.0) (/home/sacha/proj/emacsconf/cache/emacsconf-2022-science--writing-and-organizing-literature-notes-for-scientific-writing--vidianos--bbb-deskshare.webm . 5.0))
+:end:
+
+*** Improve segmented audio normalization
+**** SOMEDAY How to normalize the volume of an audio file in python? - Stack Overflow
+:PROPERTIES:
+:CREATED: [2022-12-11 Sun 21:03]
+:END:
+
+https://stackoverflow.com/questions/42492246/how-to-normalize-the-volume-of-an-audio-file-in-python
+
+
+**** SOMEDAY Execute Macro from Script - Audacity Forum
+:PROPERTIES:
+:CREATED: [2022-12-11 Sun 20:59]
+:END:
+
+https://forum.audacityteam.org/viewtopic.php?t=121821
+
+*** TODO subtitle hyperorg
+:PROPERTIES:
+:CREATED: [2022-12-11 Sun 20:07]
+:END:
+
+*** DONE Check duration
+
+#+begin_src emacs-lisp :eval no
+(/ (apply '+
+ (mapcar #'compile-media-get-file-duration-ms
+ (directory-files emacsconf-cache-dir t "\\(main\\|webcams\\).webm\\|rms.*ogg")))
+ 3600000.0)
+#+end_src
+
+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't actually done that yet
+:PROPERTIES:
+:CREATED: [2022-12-11 Sun 15:39]
+:END:
+
+*** SOMEDAY [#C] Create harvesting etherpad if needed to track the status?
+:PROPERTIES:
+:CREATED: [2022-12-12 Mon 18:53]
+:END:
+
+*** DONE Update task status now that I have TO_REVIEW_QA, TO_INDEX_QA, TO_CAPTION_QA
+CLOSED: [2022-12-13 Tue 09:55]
+:LOGBOOK:
+- State "DONE" from "TODO" [2022-12-13 Tue 09:55]
+:END:
+
+#+begin_src emacs-lisp :eval no
+(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={.}")
+ )
+#+end_src
+
+*** TODO consider number-anonymizing the IRC chat
+:PROPERTIES:
+:CREATED: [2022-12-12 Mon 09:34]
+:END:
+
+*** TODO switch to resources view
+:PROPERTIES:
+:CREATED: [2022-12-15 Thu 01:16]
+:END:
+*** TODO Harvest the closing remarks
+:PROPERTIES:
+:CREATED: [2022-12-15 Thu 00:59]
+:END:
+*** TODO Check normalization of answers
+:PROPERTIES:
+:CREATED: [2022-12-15 Thu 00:11]
+:END:
+https://stackoverflow.com/questions/42492246/how-to-normalize-the-volume-of-an-audio-file-in-python
+**** SOMEDAY Scripting - Audacity Manual
+:PROPERTIES:
+:CREATED: [2022-12-15 Thu 00:02]
+:END:
+
+https://manual.audacityteam.org/man/scripting.html
+
+*** SOMEDAY Post transcripts, start working on chapter workflow
+:PROPERTIES:
+:CREATED: [2022-12-14 Wed 22:24]
+:END:
+
+*** SOMEDAY Add audio-only handler for media card
+:PROPERTIES:
+:CREATED: [2022-12-15 Thu 01:18]
+:END:
+
+*** SOMEDAY How to chunk text into paragraphs using python | by N Polovinkin | Medium
+:PROPERTIES:
+:CREATED: [2022-12-14 Wed 17:17]
+:END:
+
+https://medium.com/@npolovinkin/how-to-chunk-text-into-paragraphs-using-python-8ae66be38ea6
+
+*** STARTED Figure out ways to make sense of IRC logs
+:PROPERTIES:
+:CREATED: [2022-12-13 Tue 16:37]
+:Effort: 0:30
+:END:
+:LOGBOOK:
+CLOCK: [2022-12-20 Tue 10:34]--[2022-12-20 Tue 13:16] => 2:42
+:END:
+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
+:PROPERTIES:
+:CREATED: [2022-12-15 Thu 16:52]
+:END:
+*** CANCELLED Trim grail if needed
+CLOSED: [2022-12-16 Fri 21:35]
+:PROPERTIES:
+:CREATED: [2022-12-15 Thu 22:24]
+:END:
+*** DONE I uploaded the Q&A sessions to Toobnix. :sachac:
+CLOSED: [2022-12-16 Fri 13:53]
+:LOGBOOK:
+- State "DONE" from "TODO" [2022-12-16 Fri 13:53]
+:END:
+
+Least extra work if I do it after chapter markers, but I can just do them now and then update them later
+
+#+begin_src emacs-lisp :eval yes
+(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))))
+#+end_src
+*** DONE Upload answers to Youtube :sachac:
+CLOSED: [2022-12-16 Fri 21:35] SCHEDULED: <2022-12-17 Sat>
+:PROPERTIES:
+:CREATED: [2022-12-16 Fri 08:01]
+:header-args: :eval no
+:END:
+:LOGBOOK:
+- State "WAITING" from "SOMEDAY" [2022-12-16 Fri 12:58] \\
+ quota
+:END:
+
+Set eval to yes and work carefully.
+
+#+NAME: not-done
+#+begin_src emacs-lisp
+(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_src
+
+#+RESULTS: not-done
+:results:
+nil
+:end:
+:end:
+
+quota, continue tomorrow
+**** Setup
+#+begin_src python :dir "/home/sacha/proj/plays" :session plays
+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/")
+#+end_src
+
+#+RESULTS:
+:results:
+<Response url='https://studio.youtube.com/' request=<Request url='https://studio.youtube.com/' method='GET'>>
+:end:
+
+Save the cookies after it's all set up
+
+#+begin_src python :dir "/home/sacha/proj/plays" :session plays
+Path("cookies.json").write_text(json.dumps(cookies))
+#+end_src
+
+#+RESULTS:
+:results:
+:end:
+
+#+begin_src python :dir "/home/sacha/proj/plays" :session plays
+context.add_cookies(json.loads(Path("cookies.json").read_text()))
+page.goto("https://studio.youtube.com/channel/UCwuyodzTl_KdEKNuJmeo99A")
+#+end_src
+
+
+#+RESULTS:
+:results:
+:end:
+
+1. Upload the file
+
+#+NAME: create
+#+begin_src python :dir "/home/sacha/proj/plays" :session plays :noweb yes :results silent
+#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()
+<<talk()>>
+#+end_src
+
+2. Set the talk details and copy the URL.
+
+#+begin_src emacs-lisp :var slug=not-done :var url=set_details :results silent
+(save-window-excursion
+ (emacsconf-go-to-talk (emacsconf-resolve-talk slug))
+ (org-entry-put (point) "QA_YOUTUBE" url))
+#+end_src
+***** Background code
+#+NAME: talk
+#+begin_src emacs-lisp :var slug=not-done :noweb yes
+(let ((talk (emacsconf-resolve-talk slug)))
+ (kill-new (emacsconf-talk-file talk "--answers.webm"))
+ (emacsconf-publish-answers-python talk))
+#+end_src
+
+#+RESULTS: talk
+:results:
+filename = """/home/sacha/proj/emacsconf/cache/emacsconf-2022-health--health-data-journaling-and-visualization-with-org-mode-and-gnuplot--david-otoole--answers.webm"""
+title = """EmacsConf 2022 Q&A: Health data journaling and visualization with Org Mode and gnuplot"""
+description = """David O'Toole (he/him)
+
+This is the Q&A for the talk at https://youtu.be/YmQ1CYMz-OY .
+
+You can view this and other resources using free/libre software at https://emacsconf.org/2022/talks/health .
+This video is available under the terms of the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.
+"""
+:end:
+
+#+NAME: set_details
+#+begin_src python :dir "/home/sacha/proj/plays" :session plays :results output :noweb yes
+<<talk()>>
+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)
+#+end_src
+
+#+RESULTS: set_details
+:results:
+https://youtu.be/XTDpzx9QHSI
+:end:
+
+#+RESULTS:
+:results:
+https://youtu.be/Q453L_whGEc
+:end:
+
+*** TODO Add links to Q&A to Youtube video descriptions
+:PROPERTIES:
+:CREATED: [2022-12-16 Fri 14:12]
+:END:
+
+*** SOMEDAY Make a podcast feed of the talks
+:PROPERTIES:
+:CREATED: [2022-12-17 Sat 14:26]
+:END:
+
+*** TODO Check that webms have latest vtts
+:PROPERTIES:
+:CREATED: [2022-12-17 Sat 08:09]
+:END:
+
+*** TODO Break autocaptions every 5 minutes or so, so that they can be included on the webpage
+SCHEDULED: <2022-12-20 Tue>
+:PROPERTIES:
+:CREATED: [2022-12-15 Thu 22:05]
+:END:
+
+*** DONE Add maint chapter markers to Toobnix and Youtube, automate it
+:PROPERTIES:
+:CREATED: [2022-12-21 Wed 09:45]
+:Effort: 1:00
+:QUANTIFIED: Emacs
+:END:
+:LOGBOOK:
+- State "DONE" from "STARTED" [2022-12-21 Wed 10:30]
+CLOCK: [2022-12-21 Wed 10:06]--[2022-12-21 Wed 10:30] => 0:24
+:END:
+
+#+NAME: answers-chapters
+#+begin_src emacs-lisp :eval no
+(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))))
+#+end_src
+
+Update YouTube
+
+#+begin_src python :dir "/home/sacha/proj/plays" :session plays :var talk_json=answers-chapters :noweb yes :results output
+from playwright.sync_api import Playwright, sync_playwright, expect
+from pathlib import Path
+import json
+import re
+
+talk = json.loads("""<<talk()>>""")
+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()
+#+end_src
+
+Update Toobnix:
+
+#+begin_src python :dir "/home/sacha/proj/plays" :session plays :var talk_json=answers-chapters :noweb yes :results output
+talk = json.loads("""<<talk()>>""")
+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()
+#+end_src
+
+
+#+RESULTS:
+:results:
+:end:
+
+** TODO Send thanks
+:PROPERTIES:
+:CUSTOM_ID: thanks
+:END:
+*** TODO Send thank-you notes to speakers
+
+Dependencies:
+- youtube, toobnix urls
+- bbb playback urls
+- pads copied
+
+ #+begin_src emacs-lisp
+(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)))))
+ #+end_src
+
+**** Template
+:PROPERTIES:
+:EMAIL_ID: thanks-speaker
+:TO: ${email}
+:REPLY_TO: emacsconf-submit@gnu.org, ${email}, sacha@sachachua.com
+:MAIL_FOLLOWUP_TO: emacsconf-submit@gnu.org, ${email}, sacha@sachachua.com
+:FUNCTION: emacsconf-mail-thank-speaker
+:CC: emacsconf-submit@gnu.org
+:LOG_NOTE: thanked speaker
+:SUBJECT: ${conf-name} ${year}: Thank you for presenting
+:END:
+
+Hi, ${speakers-short}!
+
+Thank you so much for being part of EmacsConf ${year}! Hundreds of
+people enjoyed it, and I'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've added the discussions from Etherpad/IRC.${bbb-note}${wrap}
+
+We'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'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
+** STARTED Finalize the files to be used for streaming
+SCHEDULED: <2022-12-02 Fri>
+:PROPERTIES:
+:CUSTOM_ID: files
+:Effort: 0:15
+:END:
+
+Verify that all the files load
+
+#+begin_src emacs-lisp :results replace
+(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))
+#+end_src
+
+#+RESULTS:
+:results:
+- General
+- Development
+:end:
+
+How about the ones that might be live
+#+begin_src emacs-lisp :results replace
+(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))
+#+end_src
+
+#+RESULTS:
+:results:
+- General
+- Development
+:end:
+
+*** TODO Fix my audio volume for intros
+*** DONE [#C] Remove first eight seconds of Jupyter if possible, and the last 16 seconds or so
+CLOSED: [2022-12-02 Fri 10:27] SCHEDULED: <2022-12-02 Fri>
+:PROPERTIES:
+:CREATED: [2022-12-01 Thu 21:53]
+:END:
+:LOGBOOK:
+- State "WAITING" from "TODO" [2022-12-02 Fri 08:00] \\
+ waiting for ffmpeg to finish
+:END:
+
+screen -S jupyter-trim ffmpeg -y -ss 8 -to 00:16:40 -i emacsconf-2022-jupyter--edit-live-jupyter-notebook-cells-with-emacs--blaine-mooers--final.webm emacsconf-2022-jupyter--edit-live-jupyter-notebook-cells-with-emacs--blaine-mooers--trimmed.webm
+*** TODO Regenerate overlays to accommodate different layout
+
** [#A] Look for ways to reduce risk :derisk:
:PROPERTIES:
:CUSTOM_ID: derisk
:END:
https://pad.emacsconf.org/premortem
-*** TODO [#B] Click on stuff with xdotool
+*** DONE [#C] Click on stuff with xdotool
+CLOSED: [2022-12-01 Thu 08:29]
(emacsconf-stream-bbb "journalism")
(emacsconf-stream-xdotool-set-up-bbb "journalism")
@@ -176,12 +1237,35 @@ CLOCK: [2022-11-21 Mon 13:17]--[2022-11-21 Mon 13:56] => 0:39
)))))
(org-agenda nil "a")))
#+end_src
-*** TODO Try a reboot
-SCHEDULED: <2022-12-01 Thu>
+*** DONE Try a reboot before the resize :sachac:
+CLOSED: [2022-12-02 Fri 09:06] SCHEDULED: <2022-12-02 Fri>
:PROPERTIES:
:CREATED: [2022-11-27 Sun 12:48]
:END:
+- 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 [[file:/ssh:front0.emacsconf.org:/var/www/status.emacsconf.org/index.html][edit]] https://status.emacsconf.org
+ - [ ] Go to the pad: https://pad.emacsconf.org/2022
+
*** DONE [#A] icecast fallback :derisk:sachac:
SCHEDULED: <2022-11-28 Mon>
:PROPERTIES:
@@ -343,7 +1427,8 @@ If it was the most recently announced talk in the channel, don't re-announce it
(with-eval-after-load 'erc (add-hook 'erc-insert-pre-hook 'emacsconf-erc-notice-announcements))
-** TODO [#C] Make checkin and Q&A process slide :sachac:
+** CANCELLED [#C] Make checkin and Q&A process slide :sachac:
+CLOSED: [2022-12-06 Tue 10:01]
:PROPERTIES:
:CREATED: [2022-11-20 Sun 10:04]
:Effort: 0:30
@@ -372,7 +1457,12 @@ CLOSED: [2022-11-28 Mon 00:23]
:CREATED: [2022-11-21 Mon 20:50]
:END:
-** [#A] Prepare intros for the hosts to read :sachac:
+*** DONE Caption the new talks :sachac:
+CLOSED: [2022-12-01 Thu 12:39] SCHEDULED: <2022-12-02 Fri>
+:PROPERTIES:
+:CREATED: [2022-12-01 Thu 07:47]
+:END:
+** [#A] Prepare intros for the hosts to read
:PROPERTIES:
:CUSTOM_ID: host-intros
:END:
@@ -473,19 +1563,89 @@ echo '/bin/bash /home/orga/screen-restream-test-toobnix.sh' | at 8:30
:CREATED: [2022-11-26 Sat 10:38]
:END:
-*** SOMEDAY Record more intros :sachac:
-SCHEDULED: <2022-11-30 Wed>
+*** DONE Record more intros :zaeph:
+CLOSED: [2022-12-01 Thu 14:08] SCHEDULED: <2022-12-01 Thu>
:PROPERTIES:
:CREATED: [2022-11-30 Wed 00:02]
:END:
-** TODO Set up talks on Toobnix and YouTube :sachac:yt:toobnix:
-SCHEDULED: <2022-12-01 Thu>
+*** DONE [#A] Record two-part introduction for RMS talk
+CLOSED: [2022-12-01 Thu 10:32] SCHEDULED: <2022-12-01 Thu>
+:PROPERTIES:
+:CREATED: [2022-12-01 Thu 07:46]
+:Effort: 0:30
+:END:
+:LOGBOOK:
+CLOCK: [2022-12-01 Thu 09:44]--[2022-12-01 Thu 10:32] => 0:48
+:END:
+
+Before Richard Stallman shares what he'd like to see in Emacs, we will first play Richard Stallman's 2014 TEDx talk called "Free Software, Free Society". The TEDx talk is licensed under the Creative Commons Attribution - No Derivative Works 3.0 license.
+
+
+The next talk is called "What I'd like to see in Emacs," 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 [#A] Add images to zaeph's intros :sachac:
+CLOSED: [2022-12-01 Thu 18:36] SCHEDULED: <2022-12-01 Thu>
+:PROPERTIES:
+:CREATED: [2022-12-01 Thu 12:52]
+:END:
+*** DONE Add subtitles to intros
+CLOSED: [2022-12-01 Thu 23:07]
+:PROPERTIES:
+:CREATED: [2022-12-01 Thu 18:34]
+:Effort: 1:00
+:END:
+:LOGBOOK:
+
+CLOCK: [2022-12-01 Thu 20:09]--[2022-12-01 Thu 23:07] => 2:58
+:END:
+*** DONE rerecord zachary, pronunciation
+CLOSED: [2022-12-01 Thu 23:07]
+*** DONE rerecord buddy, got mixed up with meetups
+CLOSED: [2022-12-01 Thu 23:07]
+*** DONE redo visual for health, changed the title case
+CLOSED: [2022-12-01 Thu 23:07]
+*** DONE [#C] rerecord indieweb, accent on the wrong syllable
+CLOSED: [2022-12-01 Thu 23:07]
+*** DONE [#C] rerecord jupyter intro, repetitive
+CLOSED: [2022-12-01 Thu 23:07]
+*** TODO [#C] consider rerecording meetups to add
+SCHEDULED: <2022-12-02 Fri>
+
+Spanish subtitles are also available for this talk.
+
+You can find them on the talk page.
+
+*** TODO [#C] Contextualize journalism talk
+SCHEDULED: <2022-12-02 Fri>
+:PROPERTIES:
+:CREATED: [2022-12-02 Fri 01:26]
+:END:
+
+** DONE Set up talks on Toobnix and YouTube :sachac:yt:toobnix:
+CLOSED: [2022-11-30 Wed 18:54] SCHEDULED: <2022-12-01 Thu>
:PROPERTIES:
:CUSTOM_ID: video-platforms
+:Effort: 1:00
+:END:
+:LOGBOOK:
+CLOCK: [2022-11-30 Wed 14:32]--[2022-11-30 Wed 15:21] => 0:49
:END:
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
+
+
+#+begin_src emacs-lisp
+
+#+end_src
+
+
*** DONE Add toobnix url on schedule
CLOSED: [2022-11-23 Wed 22:57]
:PROPERTIES:
@@ -495,6 +1655,243 @@ CLOSED: [2022-11-23 Wed 22:57]
:LOGBOOK:
CLOCK: [2022-11-23 Wed 21:52]--[2022-11-23 Wed 22:57] => 1:05
:END:
+*** Upload to YouTube
+
+#+begin_src emacs-lisp :eval no
+(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
+#+end_src
+
+*** Toobnix
+
+
+#+begin_src emacs-lisp :eval no
+(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"))
+#+end_src
+
+*** DONE Upload the rest of the talks to Toobnix
+CLOSED: [2022-12-06 Tue 10:32]
+*** DONE Add Toobnix talks to a playlist
+CLOSED: [2022-12-06 Tue 13:44]
+#+begin_src emacs-lisp :eval no
+(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)))))
+ )
+
+#+end_src
+*** DONE Add Youtube talks to a playlist
+CLOSED: [2022-12-06 Tue 13:21]
+*** DONE Upload talks to YouTube
+CLOSED: [2022-12-06 Tue 13:21] SCHEDULED: <2022-12-05 Mon>
+:PROPERTIES:
+:CREATED: [2022-12-01 Thu 07:47]
+:Effort: 0:30
+:END:
+:LOGBOOK:
+CLOCK: [2022-12-02 Fri 12:56]--[2022-12-02 Fri 15:59] => 3:03
+:END:
+
+#+begin_src emacs-lisp :eval yes :results replace list
+(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))
+#+end_src
+
+#+RESULTS:
+:results:
+- nil
+:end:
+
+#+begin_src emacs-lisp :eval no
+;; 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")
+ ;; )
+#+end_src
+*** DONE upload the rest of the files onto Toobnix
+CLOSED: [2022-12-02 Fri 12:54] SCHEDULED: <2022-12-02 Fri>
+:PROPERTIES:
+:CREATED: [2022-12-02 Fri 08:16]
+:Effort: 0:30
+:END:
+:LOGBOOK:
+CLOCK: [2022-12-02 Fri 12:47]--[2022-12-02 Fri 12:54] => 0:07
+:END:
+*** TODO [#C] Upload more Toobnix and YouTube talks
+SCHEDULED: <2022-12-05 Mon>
+:PROPERTIES:
+:CREATED: [2022-12-03 Sat 07:01]
+:END:
** DONE [#A] Do another run
CLOSED: [2022-11-28 Mon 00:21] SCHEDULED: <2022-11-27 Sun>
@@ -627,8 +2024,8 @@ CLOSED: [2022-11-28 Mon 00:21] SCHEDULED: <2022-11-27 Sun>
:CREATED: [2022-11-25 Fri 13:28]
:END:
-** TODO [#B] Turn off file upload service on media.emacsconf.org :sachac:infra:
-SCHEDULED: <2022-12-01 Thu>
+** TODO [#C] Turn off file upload service on media.emacsconf.org :sachac:infra:
+SCHEDULED: <2022-12-03 Sat>
:PROPERTIES:
:CUSTOM_ID: upload-off
:END:
@@ -643,6 +2040,8 @@ CLOSED: [2022-11-21 Mon 14:34]
:LOGBOOK:
CLOCK: [2022-11-19 Sat 11:17]--[2022-11-19 Sat 11:29] => 0:12
:END:
+*** TODO Review tasks
+SCHEDULED: <2022-12-02 Fri>
** Use Mumble for backchannel coordination and also on-stage
:PROPERTIES:
:CUSTOM_ID: mumble
@@ -835,6 +2234,30 @@ CLOSED: [2022-11-30 Wed 13:03]
:END:
*** TODO [#C] Adjust audio levels from hyperlist with a repeat-mode keymap
+*** DONE Link pamix to a konsole ssh
+CLOSED: [2022-12-01 Thu 09:31] SCHEDULED: <2022-12-01 Thu>
+:PROPERTIES:
+:CREATED: [2022-12-01 Thu 07:47]
+:Effort: 0:15
+:END:
+:LOGBOOK:
+CLOCK: [2022-12-01 Thu 09:18]--[2022-12-01 Thu 09:31] => 0:13
+:END:
+*** DONE Add monitoring the streams to the hyperlist / shortcuts
+CLOSED: [2022-12-01 Thu 09:38] SCHEDULED: <2022-12-01 Thu>
+:PROPERTIES:
+:CREATED: [2022-12-01 Thu 07:50]
+:Effort: 0:15
+:END:
+:LOGBOOK:
+CLOCK: [2022-12-01 Thu 09:31]--[2022-12-01 Thu 09:38] => 0:07
+:END:
+*** TODO Test hyperlist on obs and record quick demos
+SCHEDULED: <2022-12-02 Fri>
+:PROPERTIES:
+:CREATED: [2022-12-02 Fri 06:58]
+:END:
+
** TODO [#C] Record intro/outro for day-1 and day-2 :zaeph:
:PROPERTIES:
:CUSTOM_ID: rec-intro
@@ -973,6 +2396,10 @@ CLOSED: [2022-11-19 Sat 11:12]
CLOSED: [2022-10-11 Tue 12:20]
*** DONE Set up Etherpad with MySQL
+*** TODO Make the upload ansible configuration controllable via a variable
+:PROPERTIES:
+:CREATED: [2022-12-13 Tue 09:43]
+:END:
** SOMEDAY [#C] Consider breakout rooms for lunch break
:PROPERTIES:
:CREATED: [2022-11-07 Mon 08:12]
@@ -1021,6 +2448,16 @@ Consider if we need extra scaling beyond being on a beefy live0?
Will need to try this again when we resize nodes. Probably just the extra memory will be enough and the CPU use from node won't step on the streaming, but not sure
+*** DONE Create pads for all the talks
+CLOSED: [2023-10-17 Tue 09:46] SCHEDULED: <2023-11-05 Sun>
+:PROPERTIES:
+:CUSTOM_ID: create-pads
+:CREATED: [023-10-13 Fri 10:1]
+:END:
+
+Because the pads refer to the next and previous talks and include the talk titles, this is best redone after the schedule has settled down.
+
+
*** DONE Use the API to create pages based on all the slugs
CLOSED: [2022-10-11 Tue 20:41]
*** CANCELLED Figure out monitoring; maybe get everything daily and commit to git repo?
@@ -1119,11 +2556,89 @@ CLOSED: [2022-11-22 Tue 10:06]
:CREATED: [2022-11-27 Sun 09:00]
:END:
+** TODO [#C] Write about EmacsConf behind the scenes :sachac:
+SCHEDULED: <2022-12-26 Mon>
+:PROPERTIES:
+:CUSTOM_ID: writing
+:END:
+*** TODO Write about scheduling and tracks
+:PROPERTIES:
+:CREATED: [2022-12-04 Sun 20:41]
+:END:
+
+*** TODO Write about scheduling and summing up properties
+:PROPERTIES:
+:CREATED: [2022-12-04 Sun 20:41]
+:END:
+*** 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
+:PROPERTIES:
+:CREATED: [2022-11-29 Tue 18:38]
+:END:
+
+*** SOMEDAY Write about setting org properties from a region, looking at tables, summing it up
+:PROPERTIES:
+:CREATED: [2022-12-08 Thu 15:15]
+:END:
+
+*** SOMEDAY Record animation of changing the schedule
+:PROPERTIES:
+:CREATED: [2022-12-09 Fri 21:07]
+:END:
+
+*** SOMEDAY Write about mail merge
+:PROPERTIES:
+:CREATED: [2022-12-10 Sat 10:22]
+:END:
+
+*** #EmacsConf behind the scenes: Testing the schedule with SVGs
+
+#+begin_quote
+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'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 .
+
+[[https://emacs.ch/system/media_attachments/files/109/485/992/555/721/586/original/7bf3ab2a89fdcaec.png][Screenshot of how I tested #EmacsConf scheduling strategies using inline images in an Org file]]
+#+end_quote
+
+[[https://emacs.ch/@sachac/109486006078029919]]
+
+*** SOMEDAY https://graz.social/@publicvoit/109496340869869181
+:PROPERTIES:
+:CREATED: [2022-12-11 Sun 13:04]
+:END:
+
+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, ...
+
+I only wrote the 'Description' section and contributed the raw video file. It's really impressive what @sachac and the other organizers + volunteers are doing here.  
+
* Ideas for next year :nextyear:
:PROPERTIES:
:CUSTOM_ID: maybe-projects
:END:
+** Possible talks
+*** SOMEDAY Is eMacs worth using/learning for non programmers? I.e are there non programming applications for it?
+:PROPERTIES:
+:CREATED: [2023-01-10 Tue 08:18]
+:END:
+
+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
:PROPERTIES:
:CREATED: [2022-11-19 Sat 22:42]
@@ -1153,6 +2668,15 @@ Goals:
Update schedule
Publish prerec when talk is playing
+*** SOMEDAY [#C] Irc bot for opening
+SCHEDULED: <2022-12-02 Fri>
+:PROPERTIES:
+:CREATED: [2022-12-01 Thu 22:35]
+:END:
+
+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's here, announcing when speakers are here
:PROPERTIES:
:CREATED: [2022-10-03 Mon 23:43]
@@ -1299,6 +2823,197 @@ SCHEDULED: <2023-01-26 Thu>
:CREATED: [2022-11-27 Sun 13:07]
:END:
+** TODO figure out how zaeph can run ansible
+:PROPERTIES:
+:CREATED: [2022-12-02 Fri 08:23]
+:END:
+** TODO [#A] Check that the restreams can handle hiccups
+:PROPERTIES:
+:CREATED: [2022-12-01 Thu 07:48]
+:Effort: 0:30
+:END:
+:LOGBOOK:
+CLOCK: [2022-12-01 Thu 12:39]--[2022-12-01 Thu 18:36] => 5:57
+:END:
+
+
+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
+:PROPERTIES:
+:CREATED: [2022-12-02 Fri 09:03]
+:END:
+** TODO figure out back button
+:PROPERTIES:
+:CREATED: [2022-12-02 Fri 21:45]
+:END:
+
+<bandali> hmm, for some reason with firefox the back button doesn't seem to
+ work as expected on after clicking on one of the tracks on
+ live.emacsconf.org [21:44]
+<bandali> seems like there's an additional redirect or something. doesn't
+ matter too much tho [21:45]
+
+** TODO Erc bot so bandali and zaeph can check time remaining
+:PROPERTIES:
+:CREATED: [2022-12-02 Fri 16:16]
+:END:
+
+** TODO make hotkeys for kicking the 480p streams
+:PROPERTIES:
+:CREATED: [2022-12-04 Sun 14:52]
+:END:
+** SOMEDAY Add timezones to all schedules
+:PROPERTIES:
+:CREATED: [2022-12-04 Sun 20:40]
+:END:
+
+** SOMEDAY https://social.coop/@jotaemei/109456544613400591
+:PROPERTIES:
+:CREATED: [2022-12-04 Sun 18:10]
+:END:
+
+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
+:PROPERTIES:
+:CREATED: [2022-12-03 Sat 21:21]
+:END:
+
+** SOMEDAY Re: How to avoid the user triggering "Forbidden reentrant call of Tramp"
+:PROPERTIES:
+:CREATED: [2022-12-03 Sat 20:32]
+:END:
+
+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 [#C] Add timezone note above every schedule table
+:PROPERTIES:
+:CREATED: [2022-12-03 Sat 01:41]
+:END:
+
+** TODO Braindump things that worked well and things I'm looking forward to tweaking
+SCHEDULED: <2022-12-05 Mon>
+** TODO Incorporate zaeph's braindump
+** SOMEDAY https://social.coop/@jotaemei/109468491432592197
+:PROPERTIES:
+:CREATED: [2022-12-06 Tue 15:57]
+:END:
+
+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
+:PROPERTIES:
+:CREATED: [2022-12-05 Mon 23:16]
+:END:
+
+** TODO Learn from other conferences
+*** Neovimconf
+*** SOMEDAY Normconf: The Normcore Tech Conference
+:PROPERTIES:
+:CREATED: [2022-12-07 Wed 00:09]
+:END:
+
+https://normconf.com/
+** SOMEDAY Look into properly streaming to YouTube, Toobnix, and 480p
+:PROPERTIES:
+:CREATED: [2022-12-08 Thu 21:27]
+:END:
+
+** TODO Consider practising with ffmpeg in the cloud so that we can handle last-minute submissions
+:PROPERTIES:
+:CREATED: [2022-12-11 Sun 11:07]
+:END:
+
+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
+:PROPERTIES:
+:CREATED: [2022-12-11 Sun 11:07]
+:END:
+
+https://cloud.google.com/functions/docs/console-quickstart-1st-gen
+
+*** SOMEDAY Investigate bacalhau compute over data
+:PROPERTIES:
+:CREATED: [2022-12-12 Mon 17:14]
+:END:
+
+*** SOMEDAY Using video transcoding on Amazon ECS - Amazon Elastic Container Service
+:PROPERTIES:
+:CREATED: [2022-12-11 Sun 20:52]
+:END:
+
+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
+:PROPERTIES:
+:CREATED: [2022-12-11 Sun 16:36]
+:END:
+
+** TODO make the Org agenda versions more visible
+:PROPERTIES:
+:CREATED: [2022-12-13 Tue 10:54]
+:END:
+** SOMEDAY Explore idea of OBS virtual webcam showing the question vs screenshare
+:PROPERTIES:
+:CREATED: [2022-12-13 Tue 16:38]
+:END:
+
+** 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?
+:PROPERTIES:
+:CREATED: [2022-12-13 Tue 15:38]
+:END:
+
+*** 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
+:PROPERTIES:
+:CREATED: [2022-12-13 Tue 20:58]
+:END:
+
+** TODO https://owncast.online/faq/
+:PROPERTIES:
+:CREATED: [2022-12-23 Fri 10:46]
+:END:
+
+instead of Icecast? uses RTMP
+** STARTED Jingle
+:PROPERTIES:
+:CREATED: [2022-12-09 Fri 08:46]
+:Effort: 0:15
+:QUANTIFIED: Emacs
+:END:
+:LOGBOOK:
+CLOCK: [2022-12-09 Fri 09:15]
+:END:
+
+[02:38] <dto> tweaked it https://usercontent.irccloud-cdn.com/file/akHATPq3/emacsconf.ogg
+
* Things to figure out / decisions to make
:PROPERTIES:
:CUSTOM_ID: decisions
@@ -1596,8 +3311,8 @@ Options:
- Haven't had a problem with spam
- Reduces merge conflict potential
-** SOMEDAY Think about what to do with schedule gaps due to cancelled talks :thoughts:
-SCHEDULED: <2022-12-01 Thu>
+** TODO Think about what to do with schedule gaps due to cancelled talks :thoughts:
+SCHEDULED: <2022-12-02 Fri>
:PROPERTIES:
:CREATED: [2022-11-19 Sat 17:30]
:CUSTOM_ID: schedule-gaps
@@ -1618,8 +3333,8 @@ SCHEDULED: <2022-12-01 Thu>
:CREATED: [2022-11-19 Sat 17:43]
:END:
-** SOMEDAY Split rms into two talks?
-SCHEDULED: <2022-11-30 Wed>
+** CANCELLED Split rms into two talks?
+CLOSED: [2022-12-01 Thu 09:17] SCHEDULED: <2022-12-01 Thu>
:PROPERTIES:
:CREATED: [2022-11-29 Tue 23:06]
:CUSTOM_ID: rmstedsplit
@@ -1631,6 +3346,14 @@ SCHEDULED: <2022-11-30 Wed>
- Same talk, stream files:
- Might as well learn how to do that anyway
+*** DONE Figure out what to do about rms sequence
+CLOSED: [2022-12-01 Thu 09:17] SCHEDULED: <2022-12-01 Thu>
+:PROPERTIES:
+:CREATED: [2022-11-30 Wed 22:26]
+:END:
+
+Keep it at one talk, but figure out stream files thing
+
* Roles needed
:PROPERTIES:
:CUSTOM_ID: roles
@@ -2175,19 +3898,6 @@ If you’ve got any question on the process, you canget in touch with me (zaeph)
:CUSTOM_ID: before
:END:
- Coordinate volunteer schedules so all the roles are covered
-*** TODO [#A] Update ansible configuration :sachac:
-SCHEDULED: <2022-12-01 Thu>
-Clean up the media root
-
-in all.yml
-
-test_mode: false
-
-
-then
-
-ansible-playbook -i inventory.yml prod-playbook.yml --tags media,stream,publish
-
*** Test stream setup
:PROPERTIES:
:CUSTOM_ID: test-stream
@@ -2298,7 +4008,17 @@ Links:
#+end_src
****** Youtube
+****** Toobnix
+****** DONE Add IRC links to YouTube and Toobnix descriptions
+CLOSED: [2022-12-01 Thu 09:10] SCHEDULED: <2022-12-01 Thu>
+:PROPERTIES:
+:CREATED: [2022-12-01 Thu 07:49]
+:Effort: 0:15
+:END:
+:LOGBOOK:
+CLOCK: [2022-12-01 Thu 08:53]--[2022-12-01 Thu 09:10] => 0:17
+:END:
*** Check in a speaker
:PROPERTIES:
:CUSTOM_ID: check-in
@@ -2424,7 +4144,20 @@ ${description}
- CHECK finetunes the rough-cut recording (trim start and end) and posts it to:
- media.emacsconf.org/2021
- wiki page for talk
-
+**** DONE Automatically commit to the wiki
+CLOSED: [2022-12-02 Fri 12:43]
+:PROPERTIES:
+:Effort: 0:30
+:END:
+:LOGBOOK:
+CLOCK: [2022-12-02 Fri 11:12]
+:END:
+when emacsconf-publish-autocommit-wiki is set
+
+(emacsconf-publish-update-talk (append (list :public t) (emacsconf-resolve-talk "journalism")))
+(emacsconf-publish-update-talk (append (list :public nil) (emacsconf-resolve-talk "journalism")))
+
+
**** DONE [#B] Make sure VTTs only get published when they're edited
CLOSED: [2022-11-25 Fri 12:59] SCHEDULED: <2022-11-25 Fri>
:PROPERTIES:
@@ -2471,6 +4204,14 @@ CLOSED: [2022-11-29 Tue 07:50] SCHEDULED: <2022-12-01 Thu>
(null (plist-get o :captions-edited))))
(emacsconf-get-talk-info)))
#+end_src
+**** DONE Automatically commit and push the wiki
+CLOSED: [2022-12-02 Fri 12:47]
+:PROPERTIES:
+:Effort: 0:30
+:END:
+:LOGBOOK:
+CLOCK: [2022-12-02 Fri 11:06]
+:END:
**** DONE Set publishing on a timer :sachac:
CLOSED: [2022-11-29 Tue 12:48] SCHEDULED: <2022-11-29 Tue>
@@ -2484,6 +4225,18 @@ CLOSED: [2022-11-29 Tue 12:48]
:END:
(emacsconf-stream-schedule-timers)
+***** DONE Take intro into account for scheduling q&a time
+CLOSED: [2022-12-01 Thu 09:44] SCHEDULED: <2022-12-01 Thu>
+:PROPERTIES:
+:CREATED: [2022-11-30 Wed 16:28]
+:END:
+***** TODO Test the timer
+SCHEDULED: <2022-12-02 Fri>
+
+#+begin_src emacs-lisp :eval no
+(let ((info (emacsconf-inflate-sexp '(journalism
+#+end_src
+
**** DONE Simplify manual setting of a timer to update task status :sachac:
CLOSED: [2022-11-29 Tue 12:35] SCHEDULED: <2022-11-29 Tue>
:PROPERTIES:
@@ -2531,7 +4284,7 @@ so that the wiki doesn't have to depend on synchronized conf.org state
:public))
#+end_src
-**** TODO figure out if we need to adapt to org-time-stamp-formats change removing brackets
+**** TODO [#C] figure out if we need to adapt to org-time-stamp-formats change removing brackets
:PROPERTIES:
:CREATED: [2022-11-29 Tue 06:40]
:END:
@@ -2825,6 +4578,22 @@ Make a table of the form
- Update Toobnix and Youtube captions with =conf-video-share=.
- Update Toobnix and Youtube descriptions with chapters.
- 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
+SCHEDULED: <2023-03-28 Tue>
+:PROPERTIES:
+:Effort: 0:30
+:END:
+
+- 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/
+ [[~/proj/emacsconf/cache]]
*** BLOCKED [#A] Downsize the server :bandali:
SCHEDULED: <2022-12-03 Sat>
* In case of
@@ -2836,7 +4605,7 @@ See https://pad.emacsconf.org/premortem for more.
#+TOC: headlines 1 local
-** Common broadcast (gen and dev)
+** Common broadcast (gen and dev) :stream:
:PROPERTIES:
:CUSTOM_ID: common
:END:
@@ -2846,13 +4615,46 @@ Options:
- mpv the same video
- join the BBB room
-** Stuck wiki
+emacsconf-stream-rebroadcast - specify the source track
+
+[[elisp:(emacsconf-stream-rebroadcast "Development" "General")][Development -> General]]
+[[elisp:(emacsconf-stream-rebroadcast "General" "Development")][General -> Development]]
+
+** Stream OBS needs to be restarted :stream:
+:PROPERTIES:
+:CUSTOM_ID: obs-restart
+:END:
+
+- ssh to the track and run ~track-obs~
+- ssh to live0.emacsconf and run whatever's appropriate:
+ #+begin_example
+ 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
+ #+end_example
+- check if the streams are all right
+
+
+
+** Wiki :publish:
:PROPERTIES:
:CUSTOM_ID: ikiwiki-stuck
:END:
+Stuck:
+
sudo -iu ikiwiki -- ikiwiki --setup ~ikiwiki/emacsconf.setup
-** Cancelled talk
+
+emacsconf.setup changed:
+
+ssh orga@front0.emacsconf.org
+sudo su - ikiwiki
+ikiwiki --setup emacsconf.setup --rebuild --wrappers
+
+** Cancelled talk :schedule:
:PROPERTIES:
:CUSTOM_ID: cancelled
:END:
@@ -2866,8 +4668,7 @@ Options:
- Talk listed among the cancelled talks?
- Talk page has cancelled info?
6. Remove the talk from the [[#one-track][one-track emergency schedule]]
-
-** Last-minute prerecording submission
+** Last-minute prerecording submission :upload:
:PROPERTIES:
:CUSTOM_ID: last-minute-prerec
:END:
@@ -2875,15 +4676,63 @@ Options:
- 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.
-** Last-minute caption update
+** Technical issues during a live presentation :stream:
+:PROPERTIES:
+:CUSTOM_ID: live-issues
+:END:
+
+- 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't resume]: HOST acknowledges technical issues and says we may
+ be able to follow up after the conference
+
+** Big technical issues with streaming :stream:
+:PROPERTIES:
+:CUSTOM_ID: stream-issues
+:END:
+
+[[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
+** Last-minute caption or file update :upload:
:PROPERTIES:
:CUSTOM_ID: last-minute-captions
:END:
- CHECK uploads the --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=
-
-** Speaker has not checked in
+
+ssh orga@media.emacsconf.org
+cd backstage; make all
+
+ssh orga@res.emacsconf.org -p 46668
+~/cache/update-cache
+cd ~/stream
+cp ~/cache/*$SLUG*--main.webm .
+
+
+** Pad malfunction or mess-up :infra:
+:PROPERTIES:
+:CUSTOM_ID: pad-broken
+:END:
+
+- PAD resets the pad using the time slider
+- [? still not recovered]
+ - PAD reimports the pad from backup
+
+** Speaker has not checked in :sched:
:PROPERTIES:
:CUSTOM_ID: missing
:END:
@@ -2892,9 +4741,8 @@ Options:
- [? still not around after prerec finishes]
- HOST: Speaker might be having some difficulty connecting, but we'll collect your questions on the pad and send them afterwards.
- Show the questions and discussion, invite people into the Q&A to talk about the talk. They can share their experiences and comments.
-
-
-** Speaker does not have a prerec and has not checked in
+
+** Speaker does not have a prerec and has not checked in :sched:
:PROPERTIES:
:CUSTOM_ID: really-missing
:END:
@@ -2907,16 +4755,7 @@ Options:
- invite another speaker for an impromptu extension; mplsCorwin will keep a list of possible speakers who are still active
- replay a short prerec
- let mplsCorwin or zaeph fill in
-** Pad malfunction or mess-up
-:PROPERTIES:
-:CUSTOM_ID: pad-broken
-:END:
-
-- PAD resets the pad using the time slider
-- [? still not recovered]
- - PAD reimports the pad from backup
-
-** Conduct guidelines issue
+** Conduct guidelines issue :host:
:PROPERTIES:
:CUSTOM_ID: conduct
:END:
@@ -2944,36 +4783,6 @@ Options:
- STREAM will do the hosting.
-** Technical issues during a live presentation :stream:
-:PROPERTIES:
-:CUSTOM_ID: live-issues
-:END:
-
-- 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't resume]: HOST acknowledges technical issues and says we may
- be able to follow up after the conference
-
-** Big technical issues with streaming :stream:
-:PROPERTIES:
-:CUSTOM_ID: stream-issues
-:END:
-
-[[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
** live0 can't handle the load or is close to network transfer limit
:PROPERTIES:
:CUSTOM_ID: network
@@ -3076,19 +4885,6 @@ STATE=before; ssh orga@media.emacsconf.org "cp /home/orga/backstage/assets/redir
- Set up audio monitor as the input for FFMPEG
- MPV goes to MPV sink, browser goes to recording sink, FFMPEG takes in recording monitor
-** Renamed talk
-:PROPERTIES:
-:CUSTOM_ID: renamed
-:END:
-
-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.
** Video playing error, need to play with mpv manually :stream:
:PROPERTIES:
:CUSTOM_ID: play-mpv-manually
@@ -3103,7 +4899,7 @@ play ~/stream/emacsconf-2022-journalism-*
3. Put the setq in emacsconf.el.
4. Regenerate the hyperlists: emacsconf-pad-prepopulate-hyperlists
-** Need to restart 480p stream
+** Need to restart 480p stream :stream:
:PROPERTIES:
:CUSTOM_ID: restart-480p
:END:
@@ -3113,6 +4909,47 @@ ssh live
/usr/local/bin/emacsconf-lowres-dev-on-connect
or
/usr/local/bin/emacsconf-lowres-gen-on-connect
+** Renamed talk :sched:
+:PROPERTIES:
+:CUSTOM_ID: renamed
+:END:
+
+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
+CLOSED: [2022-12-02 Fri 19:23]
+rerecord lspbridge intro
+
+lspbridge science
+
+*** DONE Rename health
+CLOSED: [2022-12-02 Fri 19:27]
+:PROPERTIES:
+:Effort: 0:15
+:END:
+:LOGBOOK:
+CLOCK: [2022-12-02 Fri 18:58]--[2022-12-02 Fri 19:27] => 0:29
+:END:
+health eev
+** TODO Need to restart the Toobnix streams so we don't exceed 5 hours
+:PROPERTIES:
+:CREATED: [2022-12-03 Sat 12:33]
+:END:
+
+screen -S restream-gen-toobnix -X quit; screen-restream-gen-toobnix.sh
+screen -S restream-dev-toobnix -X quit; screen-restream-dev-toobnix.sh
+
* Task archive
:PROPERTIES:
:CUSTOM_ID: archive
@@ -4153,6 +5990,12 @@ CLOSED: [2022-11-11 Fri 19:27] SCHEDULED: <2022-11-11 Fri>
CLOSED: [2022-11-11 Fri 19:27]
*** DONE Follow up with speakers based on their availability
CLOSED: [2022-11-11 Fri 19:27]
+*** CANCELLED Email speakers because I'll be shutting down the web upload
+CLOSED: [2022-12-02 Fri 19:30] SCHEDULED: <2022-12-02 Fri>
+:PROPERTIES:
+:CREATED: [2022-11-30 Wed 22:24]
+:END:
+
** DONE Send schedule-published email for emacsconf-discuss :needsowner:timesensitive:email:
CLOSED: [2022-11-01 Tue 08:50] SCHEDULED: <2022-10-31 Mon> DEADLINE: <2022-10-31 Mon>
:PROPERTIES:
@@ -4381,6 +6224,8 @@ ffmpeg -y -i "$1" -c:v libvpx-vp9 -b:v 0 -crf $Q -an -row-mt 1 -tile-columns 2 -
Other considerations:
- We might want to tweak the time before keyframes (~-g~).
+**** FFMpeg
+https://img.ly/blog/ultimate-guide-to-ffmpeg/
*** DONE Figure out workflow for handling submitted prerecs
CLOSED: [2022-10-29 Sat 09:54]
We need time after the prerecs get submitted to:
@@ -4600,6 +6445,14 @@ CLOSED: [2022-11-19 Sat 11:14]
:PROPERTIES:
:CUSTOM_ID: schedule-volunteer-qna
:END:
+*** TODO Respond to new volunteers
+SCHEDULED: <2022-12-05 Mon>
+*** SOMEDAY Subscribe volunteers to mailing list
+SCHEDULED: <2022-12-08 Thu>
+:PROPERTIES:
+:CREATED: [2022-12-05 Mon 17:49]
+:END:
+
** DONE Investigate streaming options, maybe OBS in the cloud :sachac:
CLOSED: [2022-11-06 Sun 18:16] DEADLINE: <2022-11-20 Sun>
:PROPERTIES:
@@ -4866,7 +6719,8 @@ CLOSED: [2022-11-08 Tue 12:49]
emacsconf-todo-hooks
*** CANCELLED [#C] Use xdotool to automate joining BBB in Firefox (signing in, clicking on listen only)
CLOSED: [2022-11-08 Tue 12:32]
-**** TODO Xdotool over ssh so that I can click things?
+**** DONE Xdotool over ssh so that I can click things?
+CLOSED: [2022-12-01 Thu 08:29]
:PROPERTIES:
:CREATED: [2022-11-28 Mon 23:08]
:END:
@@ -4992,8 +6846,8 @@ dev:
CLOCK: [2022-11-22 Tue 10:19]--[2022-11-22 Tue 11:00] => 0:41
:END:
-*** SOMEDAY Prepare for rms talk and Q&A with bandali
- SCHEDULED: <2022-12-01 Thu> DEADLINE: <2022-12-01 Thu>
+*** DONE Prepare for rms talk and Q&A with bandali
+ CLOSED: [2022-12-01 Thu 12:38] SCHEDULED: <2022-12-01 Thu> DEADLINE: <2022-12-01 Thu>
:PROPERTIES:
:CREATED: [2022-11-18 Fri 12:27]
:END:
@@ -5037,6 +6891,23 @@ if ! screen -list | grep -q background; then
screen -S track-mpv ~/stream/background.wav &
fi
+*** DONE [#A] Make it easy to rebroadcast other track (ex: rms) - might need mpv with minimal configuration, switchable profiles
+CLOSED: [2022-12-02 Fri 07:41] SCHEDULED: <2022-12-01 Thu>
+:PROPERTIES:
+:CREATED: [2022-11-30 Wed 23:46]
+:Effort: 0:15
+:END:
+:LOGBOOK:
+CLOCK: [2022-12-01 Thu 18:46]--[2022-12-01 Thu 20:09] => 1:23
+CLOCK: [2022-12-01 Thu 08:29]--[2022-12-01 Thu 08:53] => 0:24
+:END:
+
+
+**** DONE make it easy to rebroadcast
+CLOSED: [2022-12-02 Fri 07:41] SCHEDULED: <2022-12-01 Thu>
+:PROPERTIES:
+:CREATED: [2022-12-01 Thu 13:39]
+:END:
** DONE [#C] Smoothen captioning workflow :sachac:
CLOSED: [2022-11-19 Sat 11:10]
:PROPERTIES:
@@ -5048,6 +6919,23 @@ capitalization and punctuation, but it produces longer captions
OpenAPI captions so that people can decide what they like.
[[#mpv-captions][Set up MPV for captions]]
+*** DONE Make sure all the captioned files are marked so
+CLOSED: [2022-11-30 Wed 19:03]
+
+#+begin_src emacs-lisp :eval no
+(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))
+#+end_src
*** DONE Edit survey captions
CLOSED: [2022-11-29 Tue 22:20] SCHEDULED: <2022-11-30 Wed>
:PROPERTIES:
@@ -5289,6 +7177,98 @@ CLOCK: [2022-11-30 Wed 14:05]--[2022-11-30 Wed 14:17] => 0:12
#+end_src
+*** SOMEDAY ggerganov/whisper.cpp: Port of OpenAI's Whisper model in C/C++
+:PROPERTIES:
+:CREATED: [2022-11-28 Mon 11:37]
+:END:
+
+https://github.com/ggerganov/whisper.cpp
+
+*** TODO Move the captioning stuff to the public area
+:PROPERTIES:
+:CREATED: [2022-12-05 Mon 11:09]
+:END:
+
+*** TODO Look into getting the confidence intervals out of aeneas, maybe by getting it as an XML
+:PROPERTIES:
+:CREATED: [2022-12-10 Sat 08:58]
+:END:
+
+Also look into finetuneas
+
+*** SOMEDAY A Deep Dive Exploration Applying OpenAI’s Whisper ASR To A PBS NewsHour Broadcast – The GDELT Project
+:PROPERTIES:
+:CREATED: [2022-12-11 Sun 00:36]
+:END:
+
+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
+:PROPERTIES:
+:CREATED: [2022-12-12 Mon 08:33]
+:END:
+
+https://github.com/openai/whisper/discussions/284
+
+*** SOMEDAY jianfch/stable-ts: Stabilizing timestamps of OpenAI's Whisper outputs down to word-level
+:PROPERTIES:
+:CREATED: [2022-12-12 Mon 08:35]
+:END:
+
+https://github.com/jianfch/stable-ts
+
+*** SOMEDAY See if we can get confidence data out of whisper
+:PROPERTIES:
+:CREATED: [2022-12-12 Mon 08:32]
+:END:
+
+*** SOMEDAY Use bbb events to identify speaker changes and overlapping spans that might need closer attention
+:PROPERTIES:
+:CREATED: [2022-12-12 Mon 08:32]
+:END:
+
+*** SOMEDAY Getting Started with Bacalhau | Bacalhau Docs
+:PROPERTIES:
+:CREATED: [2022-12-12 Mon 17:09]
+:END:
+
+https://docs.bacalhau.org/getting-started/installation
+
+*** SOMEDAY Use OpenAI Whisper and Bacalhau to transcribe audio and video files | Nerd For Tech
+:PROPERTIES:
+:CREATED: [2022-12-12 Mon 17:08]
+:END:
+
+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
+:PROPERTIES:
+:CREATED: [2022-12-12 Mon 16:49]
+:END:
+
+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
+:PROPERTIES:
+:CREATED: [2022-12-12 Mon 16:40]
+:END:
+
+https://github.com/openai/whisper/discussions/395
+
+*** SOMEDAY Pointers for running this on a GPU via a cloud service? · Discussion #398 · openai/whisper
+:PROPERTIES:
+:CREATED: [2022-12-12 Mon 21:44]
+:END:
+
+https://github.com/openai/whisper/discussions/398
+
+*** SOMEDAY How to chunk text into paragraphs using python | by N Polovinkin | Medium
+:PROPERTIES:
+:CREATED: [2022-12-12 Mon 21:35]
+:END:
+
+https://medium.com/@npolovinkin/how-to-chunk-text-into-paragraphs-using-python-8ae66be38ea6
+
** DONE Find a way to accommodate a specific return-speaker
CLOSED: [2022-11-19 Sat 11:17]
We’re not sure if we’re going to get a presentation or a prerec for them
@@ -5641,6 +7621,7 @@ CLOSED: [2022-11-24 Thu 21:33] SCHEDULED: <2022-11-28 Mon>
#+RESULTS:
:results:
+- rms: Ends at 12:15 after 12:00
- [[file:emergency-back-to-one-sun-am.svg]]
:end:
@@ -5764,6 +7745,54 @@ Thank you for your patience!
Sacha
+** DONE [#A] Manage front0 and live0 size :bandali:
+CLOSED: [2022-12-06 Tue 10:01] SCHEDULED: <2022-12-02 Fri>
+:PROPERTIES:
+:CUSTOM_ID: resize
+:END:
+
+*** DONE Resize front0 and live0 in the Linode administration console :bandali:
+CLOSED: [2022-12-06 Tue 10:00]
+[20:23:48] <bandali> aha okay thanks. yeah i think i'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:
+CLOSED: [2022-12-02 Fri 09:06] SCHEDULED: <2022-12-02 Fri>
+:PROPERTIES:
+:CREATED: [2022-12-02 Fri 07:27]
+:END:
+*** DONE Back up dumps from live0
+CLOSED: [2022-12-02 Fri 11:05]
+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 [#A] Update ansible configuration :sachac:
+CLOSED: [2022-12-02 Fri 19:30] SCHEDULED: <2022-12-02 Fri>
+:PROPERTIES:
+:Effort: 0:30
+:END:
+:LOGBOOK:
+CLOCK: [2022-12-02 Fri 15:59]--[2022-12-02 Fri 18:58] => 2:59
+:END:
+Waiting for resize
+Clean up the media root
+
+in all.yml
+
+test_mode: false
+
+then
+
+ansible-playbook -i inventory.yml prod-playbook.yml --tags media
+ansible-playbook -i inventory.yml prod-playbook.yml --tags stream
+ansible-playbook -i inventory.yml prod-playbook.yml --tags publish
+
+Confirm that
+- icecast dumps recordings
+- https://media.emacsconf.org/2022 is unprotected
+- https://media.emacsconf.org/2022/backstage is protected
+
* Communications
:PROPERTIES:
:CUSTOM_ID: comms
@@ -5940,52 +7969,6 @@ Sacha Chua
** Future
*** Captions for approval
-#+begin_src emacs-lisp
-(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")))
-#+end_src
**** Template
:PROPERTIES:
@@ -6005,8 +7988,7 @@ ${captioner-volunteered} I'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'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'd like us
to add to the wiki page for your talk?
@@ -6607,19 +8589,20 @@ see emacsconf-import-comments-from-etherpad-text
:CUSTOM_ID: lessons
:END:
** 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 [2021-11-16 Tue], 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 [2021-11-16 Tue], 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'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?
@@ -6628,9 +8611,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's okay. We'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't feel like they've just been dropped in a room and left to their own devices :)