From b63df27687d5fd5c89446da8a5201b2f9dbe6600 Mon Sep 17 00:00:00 2001 From: Sacha Chua Date: Sun, 20 Nov 2022 10:28:16 -0500 Subject: speaker checkin --- 2022/organizers-notebook/index.org | 385 +++++++++++++++++++++++-------------- 2022/speakers.md | 12 +- 2 files changed, 241 insertions(+), 156 deletions(-) (limited to '2022') diff --git a/2022/organizers-notebook/index.org b/2022/organizers-notebook/index.org index a340cfba..406b80d2 100644 --- a/2022/organizers-notebook/index.org +++ b/2022/organizers-notebook/index.org @@ -2,6 +2,7 @@ #+OPTIONS: h:6 toc:nil num:nil ':t #+PROPERTY: header-args :results silent :exports code :tangle yes #+EXPORT_FILE_NAME: ../organizers-notebook.md +#+QUANTIFIED: Emacs #+begin_export md @@ -118,11 +119,9 @@ interests you! :CUSTOM_ID: host-intros :END: https://pad.emacsconf.org/intros -also in :INTRO_NOTE: in conf.org so that we can plop it into the hyperlists -Doublecheck: - -#+begin_src emacs-lisp -#+end_src +also in :INTRO_NOTE: in conf.org so that we can plop it into the hyperlists. +*** TODO Write intros for all the other talks +SCHEDULED: <2022-11-21 Mon> *** DONE Set up Etherpad with the talks and see if we can involve the speakers and captioning volunteers :sachac: CLOSED: [2022-11-19 Sat 11:06] ** TODO [#A] Write check-in email :sachac: @@ -130,6 +129,199 @@ DEADLINE: <2022-11-20 Sun> SCHEDULED: <2022-11-19 Sat> :PROPERTIES: :CUSTOM_ID: check-in-email :END: +*** DONE Switch all the rooms to allow anyone to start them - one less step for the check-in person +CLOSED: [2022-11-20 Sun 09:33] +:PROPERTIES: +:Effort: 0:30 +:QUANTIFIED: Emacs +:END: +:LOGBOOK: +CLOCK: [2022-11-20 Sun 08:46]--[2022-11-20 Sun 09:33] => 0:47 +:END: + +#+begin_src js2 :eval no +//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(); +#+end_src + +okay, next thing, it automatically refreshes. so I can't run the whole Javascript, I need to xdotool it. + +#+begin_src emacs-lisp +(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"))) +#+end_src + +Relying on xdotool seems a little fragile. Let's just check the page +itself for the next one that needs to be done. + +#+begin_src js2 :eval no +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); + }); + } +}); +#+end_src + +*** STARTED Update checkin instructions +:PROPERTIES: +:Effort: 0:30 +:END: +:LOGBOOK: +CLOCK: [2022-11-20 Sun 10:12] +:END: +*** Templates +:PROPERTIES: +:SUBJECT: Getting ready for EmacsConf ${year} +:END: + +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' 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 + +#+begin_src emacs-lisp :lexical t +(defun emacsconf-mail-checkin-instructions () + (interactive) + (seq-map + (lambda (list) + (let ((template (with-current-buffer (find-file-noselect emacsconf-org-file) + (emacsconf-mail-merge-get-template (car list))))) + (seq-map + (lambda (email-list) + (let* ((email (car email-list)) + (talks (cdr email-list)) + (combined-info (emacsconf-combine-plist talks " , ")) + (for-mail + (list + :name (or (car (plist-get combined-info :speakers)) "???") + :url (or (string-join (plist-get combined-info :url) " , ") "???") + :email (car (plist-get combined-info :email)))) + (body (when (plist-get for-mail :email) (emacsconf-replace-plist-in-string for-mail (plist-get template :body)))) + (subject (when (plist-get for-mail :email) (emacsconf-replace-plist-in-string for-mail (plist-get template :subject))))) + (when (plist-get for-mail :email) + (compose-mail + (plist-get for-mail :email) + subject + `(("Reply-To" . ,(plist-get template :reply-to)) + ("Mail-Followup-To" . ,(plist-get template :mail-followup-to)) + ("Cc" . ,(plist-get template :cc)))) + (message-goto-body) + (save-excursion + (insert body))))) + (cdr list)))) + ;; Group by e-mail + (seq-map + (lambda (list) + (cons (car list) (seq-group-by (lambda (o) (plist-get o :email)) (cdr list)))) + ;; Group by q-and-a pref + (seq-group-by + (lambda (o) + (pcase (plist-get o :q-and-a) + ('nil "checkin-unknown") + ((pred (string-match "after")) "checkin-after") + ((pred (string-match "live\\|irc\\|pad")) "checkin-at-conf") + (_ "checkin-unknown"))) + (emacsconf-filter-talks (emacsconf-get-talk-info)))))) +#+end_src + + +**** E-mail for speakers who are planning to be at the conference +:PROPERTIES: +:EMAIL_ID: checkin-at-conf +:SUBJECT: EmacsConf ${year}: Check-in instructions +:END: + +Hello, ${name}! + +We're looking forward to having you join us at EmacsConf! + +We'll probably keep updating the schedule even on the day of the +conference. You can get a rough idea of when your talk is scheduled at +${url}. You might want to check it some time next week to get a rough +sense of where it is, and then check it again on the day of your talk. + +Please check in at least 30 minutes before the scheduled start of your +prerecorded talk so that we can deal with small scheduling changes or +technical issues. You can find the check-in process at +https://emacsconf.org/${year}/speakers/ . + +If something comes up, please let us know as soon as you can. Here's +our emergency contact information: + +${emergency} + +Looking forward to seeing you soon! + +Sacha + +**** E-mail for speakers who are not planning to be around, but who have sent us their prerecs +:PROPERTIES: +:EMAIL_ID: checkin-after +:SUBJECT: EmacsConf ${year}: Check-in instructions +:END: + +Hello, ${name}! + +Thank you so much for contributing a talk for EmacsConf ${year}! We're +looking forward to collecting questions and forwarding them to you by +e-mail after the conference. We'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'll let people know +you're around. You can find the check-in process at +https://emacsconf.org/${year}/speakers/ . + +Thank you again for being part of EmacsConf ${year}! + +Sacha *** TODO Draft e-mail to send speakers who may need to do it live :PROPERTIES: :CUSTOM_ID: live-speakers @@ -154,6 +346,7 @@ We also need a quick way to update the schedule. :LOGBOOK: CLOCK: [2022-11-17 Thu 21:15]--[2022-11-17 Thu 21:15] => 0:00 :END: + *** TODO Give speakers a heads-up regarding schedule tweaks and the potential for bigger schedule changes SCHEDULED: <2022-11-18 Fri> *** TODO Draft the code for mailing all the affected speakers @@ -345,6 +538,7 @@ CLOCK: [2022-11-19 Sat 11:30]--[2022-11-19 Sat 18:50] => 7:20 so that people on other platforms can come across EmacsConf *** TODO [#A] Write the restreaming shell scripts + **** TODO Restream-gen-youtube :PROPERTIES: :CREATED: [2022-11-19 Sat 13:32] @@ -836,18 +1030,15 @@ CLOSED: [2022-10-13 Thu 13:55] *** DONE Export pad initial content HTML to make it easier to reimport into wikimedia or elsewhere CLOSED: [2022-10-13 Thu 13:46] ~emacsconf-pad-export-initial-content-for-all-talks~ -* Projects to bear in mind but which are not actual +* Ideas for next year :PROPERTIES: :CUSTOM_ID: maybe-projects :END: -** 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 -this year, but we need to keep this at the back of our minds. - -Note on how DebConf handled incidents: -https://www.mail-archive.com/search?l=debconf-team@lists.debian.org&q=subject:%22Re%5C%3A+DebConf+21+Incident+Response%22&o=newest&f=1 +** SOMEDAY https://www.reddit.com/r/i3wm/comments/b1hgxm/i3wm_over_vnc_with_dual_monitors/?utm_source=share&utm_medium=android_app&utm_name=androidcss&utm_term=2&utm_content=share_button might be interesting to have dual monitors next year +:PROPERTIES: +:CREATED: [2022-11-19 Sat 22:42] +:END: * Things to figure out / decisions to make :PROPERTIES: @@ -921,7 +1112,9 @@ https://emacsconf.org/2022/decisions/#schedule - Decided on Option A with B, C, or F as fallbacks depending on volunteer roster - Better for the viewers and the volunteers - +** Do we want to skip the closed Q&A and go straight to open? +- Closed: Less moderation needed in the beginning +- Open: less coordination needed (since the host doesn't have to either tell me that it's okay to open it up or change the task status themselves), and people are generally good at meeting etiquette ** How much do we want to enrich the wiki with JS? :PROPERTIES: :CUSTOM_ID: wiki-design @@ -940,7 +1133,6 @@ Ideas to consider: gitolite should have some options to do this *** SOMEDAY [#C] ?: Beautify video players :js:css: Might not be necessary. - ** How do we want to make better use of Etherpad? :PROPERTIES: :CUSTOM_ID: pad-decision @@ -1159,8 +1351,15 @@ Options: :CUSTOM_ID: schedule-gaps :END: -- just leave it on the in-between slide: no extra effort required -- host breakout rooms +- if the previous Q&A is still going, we can stream that one +- if there are no previous Q&As running, options: + - just leave it on the in-between slide: no extra effort required + - host a breakout room in [[https://media.emacsconf.org/current/bbb-open.html][ec22-open]]: gives people someplaco to go, might lead to interesting conversatinos +- big gaps: consider: + - substitute talk + - rearrange conference schedule + - just show the IRC + - replay talks from previous years *** SOMEDAY Consider fillers covering conference stuff :thoughts: :PROPERTIES: @@ -2293,6 +2492,13 @@ SCHEDULED: <2022-12-03 Sat> :PROPERTIES: :CUSTOM_ID: exceptions :END: +*** Common broadcast (gen and dev) + +Options: +- mpv https://live.emacsconf.org/emacsconf/gen.webm +- mpv the same video +- join the BBB room + *** Stuck wiki sudo -iu ikiwiki -- ikiwiki --setup ~ikiwiki/emacsconf.setup @@ -4216,6 +4422,11 @@ CLOSED: [2022-11-19 Sat 11:15] - https://opensource.com/article/20/5/conference-free-software - https://github.com/soonum/hubangl - https://obsproject.com/forum/threads/run-obs-on-vm-in-the-cloud.122543/ +*** TODO Automate in-between display? +:PROPERTIES: +:CREATED: [2022-11-20 Sun 08:33] +:END: +[[file:~/proj/emacsconf/wiki/2022/organizers-notebook/index.org::*Think about what to do with schedule gaps due to cancelled talks][Think about what to do with schedule gaps due to cancelled talks]] ** DONE [#C] Smoothen captioning workflow :sachac: CLOSED: [2022-11-19 Sat 11:10] :PROPERTIES: @@ -4396,6 +4607,14 @@ CLOSED: [2022-11-19 Sat 11:09] https://pypi.org/project/jiwer/ +** 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 +this year, but we need to keep this at the back of our minds. + +Note on how DebConf handled incidents: +https://www.mail-archive.com/search?l=debconf-team@lists.debian.org&q=subject:%22Re%5C%3A+DebConf+21+Incident+Response%22&o=newest&f=1 + * Communications :PROPERTIES: :CUSTOM_ID: comms @@ -4762,138 +4981,6 @@ stream for you. Hope to hear from you soon! Sacha - -*** Check-in instructions -:PROPERTIES: -:SUBJECT: Getting ready for EmacsConf ${year} -:END: - -Goals: -- Ask speaker verify their scheduled time - It has already been confirmed with them, but it might have changed slightly (give-or-take 30' - - 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' before their session in #emacsconf-org or #emacsconf (they can use chat.emacsconf.org ) - - We get them set up in a room where they can wait until the end of the broadcast of their pretention - - They’re joined by the streamer and host. - -**** Code - -Slightly more complex because of the conditionals - -#+begin_src emacs-lisp :lexical t -(defun emacsconf-mail-checkin-instructions () - (interactive) - (seq-map - (lambda (list) - (let ((template (with-current-buffer (find-file-noselect emacsconf-org-file) - (emacsconf-mail-merge-get-template (car list))))) - (seq-map - (lambda (email-list) - (let* ((email (car email-list)) - (talks (cdr email-list)) - (combined-info (emacsconf-combine-plist talks " , ")) - (for-mail - (list - :name (or (car (plist-get combined-info :speakers)) "???") - :url (or (string-join (plist-get combined-info :url) " , ") "???") - :email (car (plist-get combined-info :email)))) - (body (when (plist-get for-mail :email) (emacsconf-replace-plist-in-string for-mail (plist-get template :body)))) - (subject (when (plist-get for-mail :email) (emacsconf-replace-plist-in-string for-mail (plist-get template :subject))))) - (when (plist-get for-mail :email) - (compose-mail - (plist-get for-mail :email) - subject - `(("Reply-To" . ,(plist-get template :reply-to)) - ("Mail-Followup-To" . ,(plist-get template :mail-followup-to)) - ("Cc" . ,(plist-get template :cc)))) - (message-goto-body) - (save-excursion - (insert body))))) - (cdr list)))) - ;; Group by e-mail - (seq-map - (lambda (list) - (cons (car list) (seq-group-by (lambda (o) (plist-get o :email)) (cdr list)))) - ;; Group by q-and-a pref - (seq-group-by - (lambda (o) - (pcase (plist-get o :q-and-a) - ('nil "checkin-unknown") - ((pred (string-match "after")) "checkin-after") - ((pred (string-match "live\\|irc\\|pad")) "checkin-at-conf") - (_ "checkin-unknown"))) - (emacsconf-filter-talks (emacsconf-get-talk-info)))))) - -(defun emacsconf-cancel-mail-merge () - (interactive) - (mapc (lambda (buffer) - (when (string-match "unsent" (buffer-name buffer)) - (let ((buffer-modified-p nil)) (kill-buffer buffer)))) - (buffer-list))) -#+end_src - -#+RESULTS: -:results: -conf-cancel-mail-merge -:end: - -**** E-mail for speakers who are planning to be at the conference -:PROPERTIES: -:EMAIL_ID: checkin-at-conf -:SUBJECT: EmacsConf ${year}: Check-in instructions -:END: - -Hello, ${name}! - -We're looking forward to having you join us at EmacsConf! - -We'll probably keep updating the schedule even on the day of the -conference. You can get a rough idea of when your talk is scheduled at -${url}. You might want to check it some time next week to get a rough -sense of where it is, and then check it again on the day of your talk. - -Please check in at least 30 minutes before the scheduled start of your -prerecorded talk so that we can deal with small scheduling changes or -technical issues. You can find the check-in process at -https://emacsconf.org/${year}/speakers/ . - -If something comes up, please let us know as soon as you can. Here's -our emergency contact information: - -${emergency} - -Looking forward to seeing you soon! - -Sacha - -**** E-mail for speakers who are not planning to be around, but who have sent us their prerecs -:PROPERTIES: -:EMAIL_ID: checkin-after -:SUBJECT: EmacsConf ${year}: Check-in instructions -:END: - -Hello, ${name}! - -Thank you so much for contributing a talk for EmacsConf ${year}! We're -looking forward to collecting questions and forwarding them to you by -e-mail after the conference. We'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'll let people know -you're around. You can find the check-in process at -https://emacsconf.org/${year}/speakers/ . - -Thank you again for being part of EmacsConf ${year}! - -Sacha - - *** Last email before the conference #+begin_quote Friends, emacsians, hackers, lend me your ears! diff --git a/2022/speakers.md b/2022/speakers.md index 4fc7c713..48e7542c 100644 --- a/2022/speakers.md +++ b/2022/speakers.md @@ -8,13 +8,11 @@ session. You can check in on IRC by joining the #emacsconf-org channel on libera.chat using your favorite IRC client or using [https://chat.emacsconf.org](https://chat.emacsconf.org/?join=emacsconf-org). If you want, you can also join the channel for your track as well -(either #emacsconf-gen or #emacsconf-dev). - -Say something like "Hi, this is <your name> checking in" in the -\#emacsconf-org channel and one of the organizers will check you in. -If you are having a hard time with IRC, e-mail - and we can give you the URL of a -BigBlueButton room to join. +(either #emacsconf-gen or #emacsconf-dev). Say something like "Hi, +this is <your name> checking in" in the \#emacsconf-org channel +and one of the organizers will check you in. If you are having a hard +time with IRC, e-mail and we can give you +the URL of a BigBlueButton room to join. # The process -- cgit v1.2.3