summaryrefslogtreecommitdiffstats
path: root/2022/organizers-notebook.md
diff options
context:
space:
mode:
authorSacha Chua <sacha@sachachua.com>2022-11-22 07:25:20 -0500
committerSacha Chua <sacha@sachachua.com>2022-11-22 07:25:20 -0500
commitd8cdfa2bdbd9f997961743d2332eecbc34148148 (patch)
treebf91059bce0d8e593a4018e39fa55304b0d7c30a /2022/organizers-notebook.md
parente4d3239064086f3ad983ed03d277c17d12953451 (diff)
downloademacsconf-wiki-d8cdfa2bdbd9f997961743d2332eecbc34148148.tar.xz
emacsconf-wiki-d8cdfa2bdbd9f997961743d2332eecbc34148148.zip
update link to mpv.conf, schedule tasks
Diffstat (limited to '2022/organizers-notebook.md')
-rw-r--r--2022/organizers-notebook.md813
1 files changed, 509 insertions, 304 deletions
diff --git a/2022/organizers-notebook.md b/2022/organizers-notebook.md
index f8ee9bad..4a8bd546 100644
--- a/2022/organizers-notebook.md
+++ b/2022/organizers-notebook.md
@@ -9,7 +9,7 @@ This file is automatically exported from [/2022/organizers-notebook/index.org](/
- [Cadence](#cadence)
- [Overall priorities](#overall)
- [Projects and other long-running tasks](#projects)
-- [Ideas for next year](#maybe-projects)
+- [Ideas for next year](#maybe-projects):nextyear:
- [Things to figure out / decisions to make](#decisions)
- [Roles needed](#roles)
- [Infrastructure notes](#infra)
@@ -21,10 +21,11 @@ This file is automatically exported from [/2022/organizers-notebook/index.org](/
Projects and tasks:
+- [Look for ways to reduce risk](#derisk)
+- [Facilitate Q&A](#qa)
- [Prepare intros for the hosts to read](#host-intros):sachac:
-- [Write check-in email](#check-in-email):sachac:
- [Review the submissions for encoding issues](#review-submissions):zaeph:
-- [Plan in-case-of-emergency schedule for dropping back to one track after Saturday morning](#one-track):sachac:
+- [Plan in-case-of-emergency schedule for dropping back to one track after Saturday morning](#one-track):sachac:derisk:
- [Create protocol for live Q&A](#live-protocol):zaeph:
- [Update viewing instructions and watch pages](#write-viewing):sachac:
- [Prepare to handle talk state changes](#publish-live):sachac:publish:
@@ -384,10 +385,11 @@ interests you!
# Projects and other long-running tasks
+- [Look for ways to reduce risk](#derisk)
+- [Facilitate Q&A](#qa)
- [Prepare intros for the hosts to read](#host-intros):sachac:
-- [Write check-in email](#check-in-email):sachac:
- [Review the submissions for encoding issues](#review-submissions):zaeph:
-- [Plan in-case-of-emergency schedule for dropping back to one track after Saturday morning](#one-track):sachac:
+- [Plan in-case-of-emergency schedule for dropping back to one track after Saturday morning](#one-track):sachac:derisk:
- [Create protocol for live Q&A](#live-protocol):zaeph:
- [Update viewing instructions and watch pages](#write-viewing):sachac:
- [Prepare to handle talk state changes](#publish-live):sachac:publish:
@@ -409,246 +411,56 @@ interests you!
- [Plan Etherpad use and hosting](#etherpad):sachac:ansible:
-<a id="host-intros"></a>
-
-## TODO Prepare intros for the hosts to read :sachac:
-
-<https://pad.emacsconf.org/intros>
-also in :INTRO\_NOTE: in conf.org so that we can plop it into the hyperlists.
-
-
-### TODO Write intros for all the other talks
-
-
-### DONE Set up Etherpad with the talks and see if we can involve the speakers and captioning volunteers :sachac:
-
-
-<a id="check-in-email"></a>
-
-## TODO Write check-in email :sachac:
-
-
-### DONE Switch all the rooms to allow anyone to start them - one less step for the check-in person
-
- //list = [...document.querySelectorAll('.room-name-editable')].filter((o) => o.value.match(/^ec22-(sat|sun)/));
- card = document.querySelector('a[href=\"%s\"] .card-body');
- card.querySelector('.item-action.dropdown a').click()
- card.querySelector('.update-room').click()
- if (!document.querySelector('#room_anyone_can_start').checked) {
- document.querySelector('#room_anyone_can_start').click();
- }
- document.querySelector('.update-only.create-room-button').click();
-
-okay, next thing, it automatically refreshes. so I can&rsquo;t run the whole Javascript, I need to xdotool it.
-
- (setq list (mapcar (lambda (o) (plist-get o :bbb-room)) (emacsconf-get-talk-info)))
- (setq list (seq-drop list (seq-position list "https://bbb.emacsverse.org/b/sac-rvc-kd2-pev")))
- (progn
- (setq item (pop list))
- (when (string-match "/b/\\(.*\\)" item)
- (kill-new (format "card = document.querySelector('a[href=\"%s\"] .card-body');
- card.querySelector('.item-action.dropdown a').click()
- card.querySelector('.update-room').click()
- if (!document.querySelector('#room_anyone_can_start').checked) {
- document.querySelector('#room_anyone_can_start').click();
- }
- document.querySelector('.update-only.create-room-button').click();
- "
- (match-string 0 item)))
- (sleep-for 2)
- (shell-command "xdotool key alt+Tab")))
-
-Relying on xdotool seems a little fragile. Let&rsquo;s just check the page
-itself for the next one that needs to be done.
-
- list = [...document.querySelectorAll('.room-name-editable')].filter((o) => o.value.match(/^ec22-(sat|sun)/));
- list.reduce(async(prev, elem) => {
- await prev;
- if (!sessionStorage.getItem(elem.value)) {
- return new Promise((resolve, reject) => {
- card = elem.closest('.card-body');
- card.querySelector('.item-action.dropdown a').click();
- card.querySelector('.update-room').click();
- sessionStorage.setItem(elem.value, true);
- setTimeout(function() {
- if (!document.querySelector('#room_anyone_can_start').checked) {
- document.querySelector('#room_anyone_can_start').click();
- document.querySelector('.update-only.create-room-button').click();
- } else {
- document.querySelector('#createRoomModal').click();
- }
- resolve(true);
- }, 500);
- });
- }
- });
-
-
-### DONE Update checkin instructions
-
-
-### Templates
-
-Goals:
-
-- Ask speaker verify their scheduled time
- It has already been confirmed with them, but it might have changed slightly
- - HOW: They should check the time at the top of their talk page on the day of the conference
-- Double-check Q&A preference, encourage tech checks for live talks/Q&A
- - If they are available:
- - Direct to tech-checks via <https://emacsconf.org/${year}/prepare/>
- - Inform them of the check-in process
- - They come say hi to us 30&rsquo; before their session in #emacsconf-org or #emacsconf (they can use chat.emacsconf.org )
- - We get them set up in a room where they can wait until the end of the broadcast of their pretention
- - They’re joined by the streamer and host.
-- Warning about potential emergency changes
-
-Slightly more complex because of the conditionals
-
- (defun emacsconf-mail-checkin-instructions (group &optional template)
- "Send checkin instructions.
- GROUP is (email . (talk talk))"
- (interactive (list (emacsconf-mail-complete-email-group
- (seq-filter
- (lambda (o)
- (or
- (string= (plist-get o :status) "CANCELLED")
- (null (plist-get o :email))
- (string-match "after" (or (plist-get o :q-and-a) ""))))
- (emacsconf-get-talk-info)))))
- (let* ((talks (seq-remove
- (lambda (o)
- (or
- (string= (plist-get o :status) "CANCELLED")
- (null (plist-get o :email))
- (string-match "after" (or (plist-get o :q-and-a) ""))
- (save-window-excursion
- (emacsconf-with-talk-heading o
- (re-search-forward "checkin instructions" (save-excursion (org-end-of-subtree)) t)))))
- (cdr group)))
- (waiting-talks (seq-find (lambda (o) (string= (plist-get o :status) "WAITING_FOR_PREREC")) talks)))
- (when talks
- (emacsconf-mail-prepare
- (or template (emacsconf-mail-merge-get-template "checkin-at-conf"))
- (car group)
- (list
- :year emacsconf-year
- :base-url emacsconf-base-url
- :conf-name emacsconf-name
- :email (plist-get (car talks) :email)
- :emergency emacsconf-emergency-contact
- :plural (if (> (length (cdr group)) 1) "s" "")
- :speakers-short (plist-get (car talks) :speakers-short)
- :url (mapconcat (lambda (o) (concat emacsconf-base-url (plist-get o :url)))
- talks" , ")
- :waiting
- (cond
- ((> (length waiting-talks) 1)
- " If you can upload your talk videos before the conference, I think that might be much less stressful for everyone than doing it live. =) Please note that we will turn off the web-based upload on Dec 1 to free up memory on the server, so please upload them as early as you can.${wrap}")
- ((= (length waiting-talks) 1)
- " If you can upload your talk video before the conference, I think that might be much less stressful for everyone than doing it live. =) Please note that we will turn off the web-based upload on Dec 1 to free up memory on the server, so please upload it as early as you can.${wrap}")
- (t ""))
- :checkin-info
- (mapconcat
- (lambda (o)
- (let ((base-checkin (format-time-string "%b %-d %-l:%M %p" (plist-get o :checkin-time) emacsconf-timezone))
- (speaker-checkin (format-time-string "%b %-d %-l:%M %p" (plist-get o :checkin-time) (plist-get o :timezone))))
- (emacsconf-replace-plist-in-string
- (append (list :base-url emacsconf-base-url
- :check-in
- (concat
- "Before "
- base-checkin " in " emacsconf-timezone
- (if (string= base-checkin speaker-checkin)
- ""
- (concat
- ", which is the same as " speaker-checkin " in " (plist-get o :timezone))) "\n"
- " (this is " (plist-get o :checkin-label) ")")
- :qa-info-speakers
- (cond
- ;; aaaaah, no prerec yet
- ((string= (plist-get o :status) "WAITING_FOR_PREREC")
- (concat "Talk and Q&A BigBlueButton room: " (plist-get o :bbb-room)))
- ((null (plist-get o :q-and-a)) "")
- ((string-match "live" (plist-get o :q-and-a)) (concat "Q&A BigBlueButton room: " (plist-get o :bbb-room)))
- ((string-match "irc" (plist-get o :q-and-a)) (concat "Q&A: " (plist-get o :channel) " (" (plist-get o :webchat-url) ")"))
- ((string-match "pad" (plist-get o :q-and-a)) "Q&A: On the pad")
- (t "Q&A: After the event")))
- o)
- "- ${title}
- Info and sched: ${base-url}${url}
- Check-in: ${check-in}
- Pad: ${pad-url}
- ${qa-info-speakers}")))
- talks "\n\n")))
- (mapc (lambda (o)
- (emacsconf-mail-log-message-when-sent o "Sent checkin instructions"))
- talks))))
+<a id="derisk"></a>
+## Look for ways to reduce risk
-#### E-mail for speakers who are planning to be at the conference
+<https://pad.emacsconf.org/premortem>
-Hello, ${speakers-short}!
-We&rsquo;re looking forward to having you join us at EmacsConf!
+### TODO Make copyable version of bbb redirect :derisk:
-We&rsquo;ve updated the schedule based on the submissions and cancellations,
-and we&rsquo;ll probably update the schedule even on the day of the
-conference. You can get a rough idea of your schedule at the talk
-pages with the URL${plural} below. You might want to check your talk
-page${plural} some time next week to get a rough sense of where it is,
-and then check it again on the day of your talk${plural}. Please let
-me know if the times don&rsquo;t work for you.
-We&rsquo;ll try our best to keep your talk in the same general timeslot (ex:
-Saturday morning, Saturday afternoon, Sunday morning, Sunday
-afternoon). We&rsquo;ve done some dry-runs, but just in case it turns out
-that running two tracks at the same time leaves us too frazzled, we
-may drop back to one track with Q&A on an alternate stream, like last
-year. If there are big changes to your schedule on the day of your
-talk${plural}, you&rsquo;ll get an e-mail from us with a subject like
-&ldquo;URGENT: EmacsConf 2022: &#x2026;&rdquo;.${wrap}
+### DONE Make sure all the important tasks are scheduled over the next two weeks
-Here&rsquo;s your checkin info:
+ (defun emacsconf-agenda ()
+ (interactive)
+ (let* ((notebook (expand-file-name "index.org" (expand-file-name "organizers-notebook" (expand-file-name emacsconf-year emacsconf-directory))))
+ (org-agenda-custom-commands
+ `(("a" "Agenda"
+ ((tags-todo "-PRIORITY=\"C\"-SCHEDULED={.}-nextyear"
+ ((org-agenda-files (list ,notebook))))
+ (agenda ""
+ ((org-agenda-files (list ,notebook))
+ (org-agenda-span 7)))
+ )))))
+ (org-agenda nil "a")))
-${checkin-info}
-Please check in early so that we can deal with scheduling changes or
-technical issues. You can find the check-in process at
-${base-url}${year}/speakers/ .${waiting}
+<a id="qa"></a>
-If something comes up, please let us know as soon as you can. Here&rsquo;s
-my emergency contact information: ${emergency}
+## Facilitate Q&A
-Thank you for sharing your time and energy with the EmacsConf community!
-Sacha
+### SOMEDAY Upload a presentation & enable for download – Blindside Networks Customer Support Portal
-p.s. If you need to cancel, that&rsquo;s okay too, life happens. Let me know
-as soon as you can and I&rsquo;ll try to shuffle things around. Thank you!
+Low priority because people were able to do Q&A last year without us holding their hand
+<https://support.blindsidenetworks.com/hc/en-us/articles/360024688392-Upload-a-presentation-enable-for-download#:~:text=BigBlueButton%20will%20accept%20Office%20documents,pptx>)%2C%20text%20documents%20(.
-#### E-mail for speakers who are not planning to be around, but who have sent us their prerecs
-Hello, ${name}!
+<a id="host-intros"></a>
-Thank you so much for contributing a talk for EmacsConf ${year}! We&rsquo;re
-looking forward to collecting questions and forwarding them to you by
-e-mail after the conference. We&rsquo;ll also post the prerecording at the
-time that it gets streamed, so people will be able to access it at
-${url} once it has gone live.
+## Prepare intros for the hosts to read :sachac:
-If it turns out that you can make it to the conference after all, feel
-free to drop us a line at #emacsconf-org and we&rsquo;ll let people know
-you&rsquo;re around. You can find the check-in process at
-<https://emacsconf.org/${year}/speakers/> .
+<https://pad.emacsconf.org/intros>
+also in :INTRO\_NOTE: in conf.org so that we can plop it into the hyperlists.
-Thank you again for being part of EmacsConf ${year}!
-Sacha
+### TODO Write intros for all the other talks
-### TODO Draft e-mail to send speakers who may need to do it live
+### DONE Set up Etherpad with the talks and see if we can involve the speakers and captioning volunteers :sachac:
<a id="review-submissions"></a>
@@ -660,17 +472,17 @@ so that we don&rsquo;t get surprised by missing or corrupted videos
<a id="one-track"></a>
-## TODO Plan in-case-of-emergency schedule for dropping back to one track after Saturday morning :sachac:
+## Plan in-case-of-emergency schedule for dropping back to one track after Saturday morning :sachac:derisk:
We might be able to do it on a modular basis (Saturday afternoon, Sunday morning, or Sunday afternoon).
We need a quick way to notify the affected speakers, and we should give them a heads-up as well.
We also need a quick way to update the schedule.
-### STARTED Update conf.org and the wiki based on the selected schedule
+### STARTED Update conf.org and the wiki based on the selected emergency schedule
-### TODO Give speakers a heads-up regarding schedule tweaks and the potential for bigger schedule changes
+### DONE Give speakers a heads-up regarding schedule tweaks and the potential for bigger schedule changes
### TODO Draft the code for mailing all the affected speakers
@@ -693,6 +505,8 @@ We also need a quick way to update the schedule.
### TODO Get the emergency schedule sorted out so that we can easily switch to it
+It needs to be applied
+
<a id="live-protocol"></a>
@@ -730,11 +544,16 @@ Also add to watch page
Maybe links to the current shift&rsquo;s pads
-### TODO Add pad to sched directive so that it will be linked when the pads are live
+### DONE Add pad to sched directive so that it will be linked when the pads are live
### TODO Update <https://live.emacsconf.org/> as well
+Ansible or Emacs Lisp? Emacs Lisp
+control the status too
+
+also 2022/ and 2022/watch
+
<a id="publish-live"></a>
@@ -777,15 +596,12 @@ Other things that aren&rsquo;t tracked by todo status:
- **CHECK\_IN: t:** once the speaker has been checked into the BBB room or IRC
-#### TODO Prerec publishing
+### TODO Check process for posting prerecs to the talk page and media directory as soon as the talk is live :sachac:
Move to public directory and create a link from the backstage directory
Update the wiki page
-### TODO Check process for posting prerecs to the talk page and media directory as soon as the talk is live :sachac:
-
-
<a id="irc-announce"></a>
### DONE Prepare to announce talks on IRC
@@ -801,15 +617,12 @@ emacsconf-erc.el in the emacsconf-el repo
<a id="other-streams"></a>
-## STARTED Set up stream events on Toobnix and YouTube :sachac:stream:
+## DONE Set up stream events on Toobnix and YouTube :sachac:stream:
so that people on other platforms can come across EmacsConf
-### TODO Write the restreaming shell scripts
-
-
-#### TODO Restream-gen-youtube
+### DONE Write the restreaming shell scripts
### DONE Create the events and save the keys :sachac:
@@ -832,6 +645,10 @@ Creating the events
This is for the general track of EmacsConf, the conference about the joy of Emacs and Emacs Lisp.
+Schedule:
+Saturday Dec 3, 2022, 9 AM - 12 PM EST, 1 PM - 5 PM EST
+Sunday Dec 4, 2022, 9 AM - 12 PM EST, 1 PM - 5 PM EST
+
Watch using free/open source software: <https://live.emacsconf.org/2022/watch/gen/>
Conference info: <https://emacsconf.org/2022/>
Schedule: <https://emacsconf.org/2022/talks/>
@@ -846,6 +663,10 @@ International (CC BY-SA 4.0) license. Please observe the guidelines for conduct:
This is for the development track of EmacsConf, the conference about the joy of Emacs and Emacs Lisp.
+Schedule:
+Saturday Dec 3, 2022, 9 AM - 12 PM EST, 1 PM - 5 PM EST
+Sunday Dec 4, 2022, 9 AM - 12 PM EST, 1 PM - 5 PM EST
+
Watch using free/open source software: <https://live.emacsconf.org/2022/watch/dev/>
Conference info: <https://emacsconf.org/2022/>
Schedule: <https://emacsconf.org/2022/talks/>
@@ -953,12 +774,12 @@ so that nginx can have more memory and we don&rsquo;t risk slowdowns
<a id="review"></a>
-## STARTED Review notebook for tasks, priorities, and scheduling
+## DONE Review notebook for tasks, priorities, and scheduling
<a id="mumble"></a>
-## INPROGRESS Use Mumble for backchannel coordination and also on-stage
+## Use Mumble for backchannel coordination and also on-stage
<span class="timestamp-wrapper"><span class="timestamp">[2022-11-19 Sat] </span></span> sachac: Confirmed that you can join the emacsconf-dev or emacsconf-gen channel if you have access, and you can speak on air in just that channel
@@ -1011,7 +832,7 @@ Sacha
### DONE Generate certificates, add them to conf.org, and register the users :sachac:
-### WAITING Set up Mumble and bring the volunteers on board
+### DONE Set up Mumble and bring the volunteers on board
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
@@ -1042,19 +863,27 @@ Sacha
<tr>
<td class="org-left">jman</td>
<td class="org-left">X</td>
-<td class="org-left">&#xa0;</td>
+<td class="org-left"><span class="timestamp-wrapper"><span class="timestamp">[2022-11-21 Mon] </span></span> access granted, briefed</td>
</tr>
<tr>
<td class="org-left">vetrivln</td>
<td class="org-left">X</td>
-<td class="org-left"><span class="timestamp-wrapper"><span class="timestamp">[2022-11-19 Sat] </span></span> access granted, needs to figure out audio</td>
+<td class="org-left"><span class="timestamp-wrapper"><span class="timestamp">[2022-11-19 Sat] </span></span> access granted, briefed</td>
</tr>
</tbody>
</table>
+### TODO set up Mumble channels for host-dev and host-gen?
+
+zaeph wants to make it easy to talk to the host without distracting them all the time
+
+
+### DONE add dry-run check of whispering to hosts
+
+
<a id="satellite"></a>
## Satellite events
@@ -1063,12 +892,14 @@ Sacha
### Zurich
-#### TODO Link to them on the wiki :bandali:
+#### DONE Link to satellite events on the wiki :bandali:
<https://200ok.ch/posts/2022-11-01_emacsconf__with_a_new_physical_venue.html>
+on the watch page
-#### TODO announce on the emacsconf-discuss mailing list :bandali:
+
+#### DONE announce on the emacsconf-discuss mailing list :bandali:
<a id="volunteer-2022-11-14"></a>
@@ -1080,7 +911,7 @@ Sacha
<a id="hyperlist"></a>
-## TODO Make a linear hyperlist for managing EmacsConf :sachac:
+## Make a linear hyperlist for managing EmacsConf :sachac:
Goal:
@@ -1133,6 +964,9 @@ Try them in an Etherpad
### TODO Make backstage redirects for pad and qa so that hosts and streamers can have an easier time
+### TODO Regenerate hyperlist if sched changes
+
+
<a id="rec-intro"></a>
## TODO Record intro/outro for day-1 and day-2 :zaeph:
@@ -1314,7 +1148,7 @@ add to /etc/dehydrated/domains.txt
sudo sh -x /etc/cron.daily/renew-https-cert-local
-### TODO Link to pad from talk page
+### DONE Link to pad from talk page
### DONE Add links to general conference pad
@@ -1337,19 +1171,145 @@ if we can get the anchor plugin
<a id="maybe-projects"></a>
-# Ideas for next year
+# Ideas for next year :nextyear:
## 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
+## SOMEDAY Suggest public submissions next time
+
+would it be interesting to see if other people can build on what&rsquo;s submitted?
+
+
+## SOMEDAY Match /names with speakers, maybe make a page with people currently online
+
+
+## SOMEDAY EmacsWiki: Erc Robot
+
+<https://www.emacswiki.org/emacs/ErcRobot>
+
+After I get ikiwiki sorted out, I can use Erc to control it so that I can test it a lot before letting it mess with the real thing
+
+Goals:
+Update schedule
+Publish prerec when talk is playing
+
+
+## TODO Consider making a bot to support announcing, updating, publishing, who&rsquo;s here, announcing when speakers are here
+
+<https://salsa.debian.org/rhonda/schedulebot>
+
+- announces:
+ - $talk will start in $min minutes
+ - $talk has just begun
+ - $talk has just finished
+- seen
+
+
+## SOMEDAY indentation - CSS - successive indenting of siblings after headings - Stack Overflow
+
+<https://stackoverflow.com/questions/31872535/css-successive-indenting-of-siblings-after-headings>
+
+
+## SOMEDAY html - Indent everything after h1, h2, etc. before the next, one, while stacking the indents, with CSS - Stack Overflow
+
+<https://stackoverflow.com/questions/69711847/indent-everything-after-h1-h2-etc-before-the-next-one-while-stacking-the-in>
+
+
+## Video
+
+
+### SOMEDAY infrastructure/source-recording.sh at master · FOSDEM/infrastructure
+
+<https://github.com/FOSDEM/infrastructure/blob/master/ansible/playbooks/roles/video-bbb/files/scripts/source-recording.sh>
+
+
+### SOMEDAY c3voc/voctomix - Docker Image | Docker Hub
+
+<https://hub.docker.com/r/c3voc/voctomix/>
+
+
+### SOMEDAY DebConf video team / vogol · GitLab
+
+<https://salsa.debian.org/debconf-video-team/vogol>
+
+
+### SOMEDAY roles/vogol · master · DebConf video team / ansible · GitLab web interface for voctomix
+
+<https://salsa.debian.org/debconf-video-team/ansible/-/tree/master/roles/vogol>
+
+
+### SOMEDAY CarlFK/veyepar: Video Eyeball Processor and Review
+
+<https://github.com/CarlFK/veyepar>
+
+
+### SOMEDAY timvideos/streaming-system: Tim Video&rsquo;s - Live Streaming for user groups and other events.
+
+<https://github.com/timvideos/streaming-system>
+
+
+### SOMEDAY <no title> — DebConf Videoteam Ansible documentation
+
+<https://debconf-video-team.pages.debian.net/ansible/ansible_roles/etherpad.html>
+
+
+### SOMEDAY DebConf video team / ansible · GitLab
+
+<https://salsa.debian.org/debconf-video-team/ansible>
+
+
+## SOMEDAY handprint · PyPI
+
+<https://pypi.org/project/handprint/>
+That might be interesting for reviewing text recognition output
+
+
+## TODO Update websocket
+
+
+## TODO Idea for next year: save talk details in an org note so that I can easily send e-mails comparing previous with current
+
+<file:///home/sacha/proj/emacsconf/wiki/2022/speakers.md>
+
+
+## DONE What ideas do we want to borrow from other conferences?
+
+- FOSDEM had a conference track
+ - <https://archive.fosdem.org/2022/schedule/track/conference_organisation/>
+- DebConf
+ - Thorough documentation at <https://debconf-video-team.pages.debian.net/docs/>
+ - <https://debconf-video-team.pages.debian.net/docs/online_volunteer_roles.html>
+ - Ansible: <https://salsa.debian.org/debconf-video-team/ansible> , <https://debconf-video-team.pages.debian.net/ansible>
+ - SReview for cutting videos?
+ - <https://wiki.debian.org/Teams/DebConf/Video/Subtitles>
+ - Pentabarf <https://lists.debian.org/debconf-team/2008/08/msg00147.html>
+ - Schedule shows local time and DebConf time: <https://debconf21.debconf.org/schedule/>
+- LibrePlanet <https://libreplanet.org/2022/>
+
+ - libreadventure, minetest?
+
+ - <https://www.collabmagazine.com/organizing-a-multi-track-virtual-conference-with-microsoft-teams-live-events-a-technical-playbook-and-lessons-learned/> : 4-person team, post-prod, break commercials
+
+
+### SOMEDAY virtual-conf-resources/foss-north.md at master · e8johan/virtual-conf-resources
+
+<https://github.com/e8johan/virtual-conf-resources/blob/master/foss-north.md>
+
+
+### SOMEDAY e8johan/virtual-conf-resources: Resources for virtual conferences
+
+<https://github.com/e8johan/virtual-conf-resources>
+
+
<a id="decisions"></a>
# Things to figure out / decisions to make
- [How do we want to coordinate during the conference itself?](#coordination)
- [How do we want to make the full schedule more manageable?](#sched-decision)
-- [Do we want to skip the closed Q&A and go straight to open?](#org2abb62c)
+- [Do we want to skip the closed Q&A and go straight to open?](#org170f667)
- [How much do we want to enrich the wiki with JS?](#wiki-design)
- [How do we want to make better use of Etherpad?](#pad-decision)
- [Can we nudge people to ask IRC questions in a way that will make it easier for us to follow them?](#irc-markers)
@@ -1428,7 +1388,7 @@ Shifts will be Sat AM, Sat PM, Sun AM, or Sun PM per track. People can take mult
- Better for the viewers and the volunteers
-<a id="org2abb62c"></a>
+<a id="org170f667"></a>
## Do we want to skip the closed Q&A and go straight to open?
@@ -1671,25 +1631,6 @@ Options:
- Reduces merge conflict potential
-### DONE What ideas do we want to borrow from other conferences?
-
-- FOSDEM had a conference track
- - <https://archive.fosdem.org/2022/schedule/track/conference_organisation/>
-- DebConf
- - Thorough documentation at <https://debconf-video-team.pages.debian.net/docs/>
- - <https://debconf-video-team.pages.debian.net/docs/online_volunteer_roles.html>
- - Ansible: <https://salsa.debian.org/debconf-video-team/ansible> , <https://debconf-video-team.pages.debian.net/ansible>
- - SReview for cutting videos?
- - <https://wiki.debian.org/Teams/DebConf/Video/Subtitles>
- - Pentabarf <https://lists.debian.org/debconf-team/2008/08/msg00147.html>
- - Schedule shows local time and DebConf time: <https://debconf21.debconf.org/schedule/>
-- LibrePlanet <https://libreplanet.org/2022/>
-
- - libreadventure, minetest?
-
- - <https://www.collabmagazine.com/organizing-a-multi-track-virtual-conference-with-microsoft-teams-live-events-a-technical-playbook-and-lessons-learned/> : 4-person team, post-prod, break commercials
-
-
<a id="schedule-gaps"></a>
## SOMEDAY Think about what to do with schedule gaps due to cancelled talks :thoughts:
@@ -1810,7 +1751,7 @@ AM: 9-12 PM EST, PM: 1-5 PM EST (plus a little extra for setup/transition)
Saturday Dec 3
-<table id="orga70d05b" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
+<table id="orgbf0bdd9" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup>
@@ -1825,6 +1766,8 @@ Saturday Dec 3
<col class="org-left" />
<col class="org-left" />
+
+<col class="org-left" />
</colgroup>
<thead>
<tr>
@@ -1834,6 +1777,7 @@ Saturday Dec 3
<th scope="col" class="org-left">Checkin</th>
<th scope="col" class="org-left">IRC</th>
<th scope="col" class="org-left">Pad</th>
+<th scope="col" class="org-left">Coord</th>
</tr>
</thead>
@@ -1845,6 +1789,7 @@ Saturday Dec 3
<td class="org-left">sachac</td>
<td class="org-left">sachac</td>
<td class="org-left">publicvoit</td>
+<td class="org-left">sachac</td>
</tr>
@@ -1855,6 +1800,7 @@ Saturday Dec 3
<td class="org-left">FlowyCoder</td>
<td class="org-left">dto</td>
<td class="org-left">publicvoit</td>
+<td class="org-left">sachac</td>
</tr>
@@ -1865,6 +1811,7 @@ Saturday Dec 3
<td class="org-left">sachac</td>
<td class="org-left">dto</td>
<td class="org-left">&#xa0;</td>
+<td class="org-left">sachac</td>
</tr>
@@ -1875,6 +1822,7 @@ Saturday Dec 3
<td class="org-left">FlowyCoder</td>
<td class="org-left">vetrivln</td>
<td class="org-left">&#xa0;</td>
+<td class="org-left">sachac</td>
</tr>
</tbody>
</table>
@@ -1883,7 +1831,7 @@ publicvoit - pad until 4pm on Sat, until 2pm on Sun
Sunday Dec 4
-<table id="org80a3226" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
+<table id="org2043541" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup>
@@ -1898,6 +1846,8 @@ Sunday Dec 4
<col class="org-left" />
<col class="org-left" />
+
+<col class="org-left" />
</colgroup>
<thead>
<tr>
@@ -1907,6 +1857,7 @@ Sunday Dec 4
<th scope="col" class="org-left">Checkin</th>
<th scope="col" class="org-left">IRC</th>
<th scope="col" class="org-left">Pad</th>
+<th scope="col" class="org-left">Coord</th>
</tr>
</thead>
@@ -1918,6 +1869,7 @@ Sunday Dec 4
<td class="org-left">sachac</td>
<td class="org-left">sachac</td>
<td class="org-left">publicvoit</td>
+<td class="org-left">sachac</td>
</tr>
@@ -1928,6 +1880,7 @@ Sunday Dec 4
<td class="org-left">FlowyCoder</td>
<td class="org-left">dto</td>
<td class="org-left">publicvoit</td>
+<td class="org-left">sachac</td>
</tr>
@@ -1938,6 +1891,7 @@ Sunday Dec 4
<td class="org-left">sachac</td>
<td class="org-left">dto</td>
<td class="org-left">&#xa0;</td>
+<td class="org-left">sachac</td>
</tr>
@@ -1948,6 +1902,7 @@ Sunday Dec 4
<td class="org-left">FlowyCoder</td>
<td class="org-left">vetrivln</td>
<td class="org-left">&#xa0;</td>
+<td class="org-left">sachac</td>
</tr>
</tbody>
</table>
@@ -2464,42 +2419,10 @@ ansible-playbook -i inventory.yml prod-playbook.yml &#x2013;tags media,stream
### Set up MPV for captions
+mpv.conf profile tips are now at <https://emacsconf.org/mpv/> .
-#### mpv profile
-Add the following profile to `~/.config/mpv/mpv.conf`. You can also change the font to whatever you prefer.
-
- # Uncomment the profile line to load the profile by default
- # Otherwise, use `--profile=emacsconf-talks`
- # profile=emacsconf-talks
-
- # Positioning
- video-zoom=-0.15
- video-align-x=1
- video-align-y=-1
- sub-use-margins=yes
- sub-scale-by-window=yes
- sub-pos=103
- sub-margin-x=110
- sub-margin-y=60
- sub-align-x=left
- # Style
- sub-font="Clear Sans Bold"
- sub-color="1/0.82/0"
- sub-blur=0.2
- sub-scale=0.9
- sub-font-size=30
- sub-border-size=0
- sub-border-color=0/1
- sub-shadow-color=0/1
- sub-shadow-offset=1.2
- sub-ass-force-style=Kerning=yes
- sub-ass-line-spacing=0
-
-(Thanks, zaeph)
-
-
-#### Font: Clear Sans
+#### Suggested font: Clear Sans
Links:
@@ -2720,6 +2643,9 @@ Exception: [CHECK is unavailable](#check-gone)
##### media directory
+#### TODO Fix mapconcat error in updating task status
+
+
### Handle Q&A
Exceptions:
@@ -2944,7 +2870,7 @@ Probably focus on grabbing the audio first and seeing what&rsquo;s worth keeping
Make a table of the form
-<table id="org34fc36c" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
+<table id="org63bdbe5" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup>
@@ -4597,6 +4523,14 @@ Overlay considerations:
![img](https://gitlab.com/akshay196/emacsconf-artwork/-/blob/main/2022/talk-banner/sample.svg)
+### TODO Make a list of different things to plug during commercial breaks, like Mastodon :sachac:
+
+
+### TODO Make Q&A process slide :sachac:
+
+Raise hands
+
+
## DONE Find volunteers for tech-checks :zaeph:
@@ -4665,6 +4599,35 @@ see conf.org for the rest of the process
- jman: sun-pm-gen
+### DONE Doublecheck mute on join
+
+[Shifts](file:///home/sacha/proj/emacsconf/wiki/2022/organizers-notebook/index.md)
+
+ list = [...document.querySelectorAll('.room-name-editable')].filter((o) => o.value.match(/^ec22-(sat|sun)/));
+ list.reduce(async(prev, elem) => {
+ await prev;
+ if (!sessionStorage.getItem(elem.value)) {
+ return new Promise(async (resolve, reject) => {
+ card = elem.closest('.card-body');
+ card.querySelector('.item-action.dropdown a').click();
+ await new Promise(r => setTimeout(r, 1000));
+ card.querySelector('.update-room').click();
+ await new Promise(r => setTimeout(r, 1000));
+ if (!document.querySelector('#room_mute_on_join').checked) {
+ document.querySelector('#room_mute_on_join').click();
+ sessionStorage.setItem(elem.value, true);
+ await new Promise(r => setTimeout(r, 1000));
+ document.querySelector('.update-only.create-room-button').click();
+ } else {
+ sessionStorage.setItem(elem.value, true);
+ document.querySelector('#createRoomModal').click();
+ }
+ resolve(true);
+ });
+ }
+ });
+
+
<a id="coordinate-volunteers"></a>
## DONE Coordinate and help volunteers :sachac:
@@ -5037,6 +5000,22 @@ so that the streamer can adjust volume offscreen?
[Think about what to do with schedule gaps due to cancelled talks](file:///home/sacha/proj/emacsconf/wiki/2022/organizers-notebook/index.md)
+### TODO Separate mumble audio so that panic button can still bring in our audio
+
+
+### SOMEDAY Prepare for rms talk and Q&A with bandali
+
+Mumble?
+
+
+#### TODO Reflow and edit VTT for RMS TEDx talk so that things are on one line
+
+<file:///home/sacha/proj/emacsconf/lisp/emacsconf-stream.el>
+
+
+### TODO Add panic button to OBS settings
+
+
<a id="caption-workflow"></a>
## DONE Smoothen captioning workflow :sachac:
@@ -5253,6 +5232,232 @@ Note on how DebConf handled incidents:
<https://www.mail-archive.com/search?l=debconf-team@lists.debian.org&q=subject:%22Re%5C%3A+DebConf+21+Incident+Response%22&o=newest&f=1>
+## DONE Write check-in email :sachac:
+
+
+### DONE Switch all the rooms to allow anyone to start them - one less step for the check-in person
+
+ //list = [...document.querySelectorAll('.room-name-editable')].filter((o) => o.value.match(/^ec22-(sat|sun)/));
+ card = document.querySelector('a[href=\"%s\"] .card-body');
+ card.querySelector('.item-action.dropdown a').click()
+ card.querySelector('.update-room').click()
+ if (!document.querySelector('#room_anyone_can_start').checked) {
+ document.querySelector('#room_anyone_can_start').click();
+ }
+ document.querySelector('.update-only.create-room-button').click();
+
+okay, next thing, it automatically refreshes. so I can&rsquo;t run the whole Javascript, I need to xdotool it.
+
+ (setq list (mapcar (lambda (o) (plist-get o :bbb-room)) (emacsconf-get-talk-info)))
+ (setq list (seq-drop list (seq-position list "https://bbb.emacsverse.org/b/sac-rvc-kd2-pev")))
+ (progn
+ (setq item (pop list))
+ (when (string-match "/b/\\(.*\\)" item)
+ (kill-new (format "card = document.querySelector('a[href=\"%s\"] .card-body');
+ card.querySelector('.item-action.dropdown a').click()
+ card.querySelector('.update-room').click()
+ if (!document.querySelector('#room_anyone_can_start').checked) {
+ document.querySelector('#room_anyone_can_start').click();
+ }
+ document.querySelector('.update-only.create-room-button').click();
+ "
+ (match-string 0 item)))
+ (sleep-for 2)
+ (shell-command "xdotool key alt+Tab")))
+
+Relying on xdotool seems a little fragile. Let&rsquo;s just check the page
+itself for the next one that needs to be done.
+
+ list = [...document.querySelectorAll('.room-name-editable')].filter((o) => o.value.match(/^ec22-(sat|sun)/));
+ list.reduce(async(prev, elem) => {
+ await prev;
+ if (!sessionStorage.getItem(elem.value)) {
+ return new Promise((resolve, reject) => {
+ card = elem.closest('.card-body');
+ card.querySelector('.item-action.dropdown a').click();
+ card.querySelector('.update-room').click();
+ sessionStorage.setItem(elem.value, true);
+ setTimeout(function() {
+ if (!document.querySelector('#room_anyone_can_start').checked) {
+ document.querySelector('#room_anyone_can_start').click();
+ document.querySelector('.update-only.create-room-button').click();
+ } else {
+ document.querySelector('#createRoomModal').click();
+ }
+ resolve(true);
+ }, 500);
+ });
+ }
+ });
+
+
+### DONE Update checkin instructions
+
+
+### Templates
+
+Goals:
+
+- Ask speaker verify their scheduled time
+ It has already been confirmed with them, but it might have changed slightly
+ - HOW: They should check the time at the top of their talk page on the day of the conference
+- Double-check Q&A preference, encourage tech checks for live talks/Q&A
+ - If they are available:
+ - Direct to tech-checks via <https://emacsconf.org/${year}/prepare/>
+ - Inform them of the check-in process
+ - They come say hi to us 30&rsquo; before their session in #emacsconf-org or #emacsconf (they can use chat.emacsconf.org )
+ - We get them set up in a room where they can wait until the end of the broadcast of their pretention
+ - They’re joined by the streamer and host.
+- Warning about potential emergency changes
+
+Slightly more complex because of the conditionals
+
+ (defun emacsconf-mail-checkin-instructions (group &optional template)
+ "Send checkin instructions.
+ GROUP is (email . (talk talk))"
+ (interactive (list (emacsconf-mail-complete-email-group
+ (seq-filter
+ (lambda (o)
+ (or
+ (string= (plist-get o :status) "CANCELLED")
+ (null (plist-get o :email))
+ (string-match "after" (or (plist-get o :q-and-a) ""))))
+ (emacsconf-get-talk-info)))))
+ (let* ((talks (seq-remove
+ (lambda (o)
+ (or
+ (string= (plist-get o :status) "CANCELLED")
+ (null (plist-get o :email))
+ (string-match "after" (or (plist-get o :q-and-a) ""))
+ (save-window-excursion
+ (emacsconf-with-talk-heading o
+ (re-search-forward "checkin instructions" (save-excursion (org-end-of-subtree)) t)))))
+ (cdr group)))
+ (waiting-talks (seq-find (lambda (o) (string= (plist-get o :status) "WAITING_FOR_PREREC")) talks)))
+ (when talks
+ (emacsconf-mail-prepare
+ (or template (emacsconf-mail-merge-get-template "checkin-at-conf"))
+ (car group)
+ (list
+ :year emacsconf-year
+ :base-url emacsconf-base-url
+ :conf-name emacsconf-name
+ :email (plist-get (car talks) :email)
+ :emergency emacsconf-emergency-contact
+ :plural (if (> (length (cdr group)) 1) "s" "")
+ :speakers-short (plist-get (car talks) :speakers-short)
+ :url (mapconcat (lambda (o) (concat emacsconf-base-url (plist-get o :url)))
+ talks" , ")
+ :waiting
+ (cond
+ ((> (length waiting-talks) 1)
+ " If you can upload your talk videos before the conference, I think that might be much less stressful for everyone than doing it live. =) Please note that we will turn off the web-based upload on Dec 1 to free up memory on the server, so please upload them as early as you can.${wrap}")
+ ((= (length waiting-talks) 1)
+ " If you can upload your talk video before the conference, I think that might be much less stressful for everyone than doing it live. =) Please note that we will turn off the web-based upload on Dec 1 to free up memory on the server, so please upload it as early as you can.${wrap}")
+ (t ""))
+ :checkin-info
+ (mapconcat
+ (lambda (o)
+ (let ((base-checkin (format-time-string "%b %-d %-l:%M %p" (plist-get o :checkin-time) emacsconf-timezone))
+ (speaker-checkin (format-time-string "%b %-d %-l:%M %p" (plist-get o :checkin-time) (plist-get o :timezone))))
+ (emacsconf-replace-plist-in-string
+ (append (list :base-url emacsconf-base-url
+ :check-in
+ (concat
+ "Before "
+ base-checkin " in " emacsconf-timezone
+ (if (string= base-checkin speaker-checkin)
+ ""
+ (concat
+ ", which is the same as " speaker-checkin " in " (plist-get o :timezone))) "\n"
+ " (this is " (plist-get o :checkin-label) ")")
+ :qa-info-speakers
+ (cond
+ ;; aaaaah, no prerec yet
+ ((string= (plist-get o :status) "WAITING_FOR_PREREC")
+ (concat "Talk and Q&A BigBlueButton room: " (plist-get o :bbb-room)))
+ ((null (plist-get o :q-and-a)) "")
+ ((string-match "live" (plist-get o :q-and-a)) (concat "Q&A BigBlueButton room: " (plist-get o :bbb-room)))
+ ((string-match "irc" (plist-get o :q-and-a)) (concat "Q&A: " (plist-get o :channel) " (" (plist-get o :webchat-url) ")"))
+ ((string-match "pad" (plist-get o :q-and-a)) "Q&A: On the pad")
+ (t "Q&A: After the event")))
+ o)
+ "- ${title}
+ Info and sched: ${base-url}${url}
+ Check-in: ${check-in}
+ Pad: ${pad-url}
+ ${qa-info-speakers}")))
+ talks "\n\n")))
+ (mapc (lambda (o)
+ (emacsconf-mail-log-message-when-sent o "Sent checkin instructions"))
+ talks))))
+
+
+#### E-mail for speakers who are planning to be at the conference
+
+Hello, ${speakers-short}!
+
+We&rsquo;re looking forward to having you join us at EmacsConf!
+
+We&rsquo;ve updated the schedule based on the submissions and cancellations,
+and we&rsquo;ll probably update the schedule even on the day of the
+conference. You can get a rough idea of your schedule at the talk
+pages with the URL${plural} below. You might want to check your talk
+page${plural} some time next week to get a rough sense of where it is,
+and then check it again on the day of your talk${plural}. Please let
+me know if the times don&rsquo;t work for you.
+
+We&rsquo;ll try our best to keep your talk in the same general timeslot (ex:
+Saturday morning, Saturday afternoon, Sunday morning, Sunday
+afternoon). We&rsquo;ve done some dry-runs, but just in case it turns out
+that running two tracks at the same time leaves us too frazzled, we
+may drop back to one track with Q&A on an alternate stream, like last
+year. If there are big changes to your schedule on the day of your
+talk${plural}, you&rsquo;ll get an e-mail from us with a subject like
+&ldquo;URGENT: EmacsConf 2022: &#x2026;&rdquo;.${wrap}
+
+Here&rsquo;s your checkin info:
+
+${checkin-info}
+
+Please check in early so that we can deal with scheduling changes or
+technical issues. You can find the check-in process at
+${base-url}${year}/speakers/ .${waiting}
+
+If something comes up, please let us know as soon as you can. Here&rsquo;s
+my emergency contact information: ${emergency}
+
+Thank you for sharing your time and energy with the EmacsConf community!
+
+Sacha
+
+p.s. If you need to cancel, that&rsquo;s okay too, life happens. Let me know
+as soon as you can and I&rsquo;ll try to shuffle things around. Thank you!
+
+
+#### E-mail for speakers who are not planning to be around, but who have sent us their prerecs
+
+Hello, ${name}!
+
+Thank you so much for contributing a talk for EmacsConf ${year}! We&rsquo;re
+looking forward to collecting questions and forwarding them to you by
+e-mail after the conference. We&rsquo;ll also post the prerecording at the
+time that it gets streamed, so people will be able to access it at
+${url} once it has gone live.
+
+If it turns out that you can make it to the conference after all, feel
+free to drop us a line at #emacsconf-org and we&rsquo;ll let people know
+you&rsquo;re around. You can find the check-in process at
+<https://emacsconf.org/${year}/speakers/> .
+
+Thank you again for being part of EmacsConf ${year}!
+
+Sacha
+
+
+### CANCELLED Draft e-mail to send speakers who may need to do it live
+
+
<a id="comms"></a>
# Communications