diff options
Diffstat (limited to '2022/organizers-notebook/index.org')
-rw-r--r-- | 2022/organizers-notebook/index.org | 818 |
1 files changed, 566 insertions, 252 deletions
diff --git a/2022/organizers-notebook/index.org b/2022/organizers-notebook/index.org index f9d7d97c..8312cf88 100644 --- a/2022/organizers-notebook/index.org +++ b/2022/organizers-notebook/index.org @@ -2,7 +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 +#+PROPERTY: QUANTIFIED Emacs #+begin_export md <!-- organizers-notebook.md is exported from organizers-notebook/index.org, please modify that instead. --> @@ -113,282 +113,71 @@ interests you! :END: #+TOC: headlines 1 local - -** TODO [#A] Prepare intros for the hosts to read :sachac: +** [#A] Look for ways to reduce risk :PROPERTIES: -:CUSTOM_ID: host-intros +:CUSTOM_ID: derisk :END: -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 +https://pad.emacsconf.org/premortem +*** TODO [#A] Make copyable version of bbb redirect :derisk: 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: -DEADLINE: <2022-11-20 Sun> SCHEDULED: <2022-11-19 Sat> :PROPERTIES: -:CUSTOM_ID: check-in-email +:CREATED: [2022-11-21 Mon 06:45] :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] +*** STARTED Make sure all the important tasks are scheduled over the next two weeks +SCHEDULED: <2022-11-21 Mon> :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 :eval no -(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 - -*** DONE Update checkin instructions -CLOSED: [2022-11-20 Sun 10:58] -:PROPERTIES: -:Effort: 0:30 -:END: -:LOGBOOK: -CLOCK: [2022-11-20 Sun 10:12]--[2022-11-20 Sun 10:58] => 0:46 -:END: -*** Templates -:PROPERTIES: -:SUBJECT: Getting ready for EmacsConf ${year} +CLOCK: [2022-11-21 Mon 13:17] :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 (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)))) +#+begin_src emacs-lisp :eval yes +(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"))) #+end_src - -**** E-mail for speakers who are planning to be at the conference +** Facilitate Q&A :PROPERTIES: -:EMAIL_ID: checkin-instructions -:SUBJECT: ${conf-name} ${year}: Check-in instructions -:REPLY_TO: emacsconf-submit@gnu.org, ${email} -:MAIL_FOLLOWUP_TO: emacsconf-submit@gnu.org, ${email} -:CC: emacsconf-submit@gnu.org -:FUNCTION: emacsconf-mail-checkin-instructions +:CUSTOM_ID: qa :END: -Hello, ${speakers-short}! - -We're looking forward to having you join us at EmacsConf! - -We've updated the schedule based on the submissions and cancellations, -and we'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't work for you. - -We'll try our best to keep your talk in the same general timeslot (ex: -Saturday morning, Saturday afternoon, Sunday morning, Sunday -afternoon). We'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'll get an e-mail from us with a subject like -"URGENT: EmacsConf 2022: ...".${wrap} - -Here'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'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's okay too, life happens. Let me know -as soon as you can and I'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 +*** SOMEDAY [#C] Upload a presentation & enable for download – Blindside Networks Customer Support Portal :PROPERTIES: -:EMAIL_ID: checkin-after -:SUBJECT: EmacsConf ${year}: Check-in instructions +:CREATED: [2022-11-20 Sun 22:26] :END: -Hello, ${name}! +Low priority because people were able to do Q&A last year without us holding their hand -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/ . +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(. -Thank you again for being part of EmacsConf ${year}! - -Sacha -*** TODO Draft e-mail to send speakers who may need to do it live +** [#A] Prepare intros for the hosts to read :sachac: :PROPERTIES: -:CUSTOM_ID: live-speakers +: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. +*** TODO Write intros for all the other talks +SCHEDULED: <2022-11-28 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] Review the submissions for encoding issues :zaeph: +SCHEDULED: <2022-11-28 Mon> :PROPERTIES: :CUSTOM_ID: review-submissions :END: so that we don't get surprised by missing or corrupted videos -** TODO [#B] Plan in-case-of-emergency schedule for dropping back to one track after Saturday morning :sachac: +** [#B] Plan in-case-of-emergency schedule for dropping back to one track after Saturday morning :sachac:derisk: :PROPERTIES: :CUSTOM_ID: one-track :END: @@ -396,7 +185,8 @@ so that we don't get surprised by missing or corrupted videos 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 +SCHEDULED: <2022-11-28 Mon> :PROPERTIES: :Effort: 0:30 :END: @@ -407,6 +197,7 @@ CLOCK: [2022-11-17 Thu 21:15]--[2022-11-17 Thu 21:15] => 0:00 *** 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 +SCHEDULED: <2022-11-28 Mon> *** Saturday afternoon #+begin_src emacs-lisp :exports results :results replace :var filename="emergency-back-to-one-sat-pm.svg" :eval never-export (emacsconf-schedule-test @@ -488,10 +279,14 @@ SCHEDULED: <2022-11-18 Fri> :end: *** TODO Get the emergency schedule sorted out so that we can easily switch to it +SCHEDULED: <2022-11-22 Tue> :PROPERTIES: :CREATED: [2022-11-19 Sat 08:01] :END: + +It needs to be applied ** TODO [#B] Create protocol for live Q&A :zaeph: +SCHEDULED: <2022-11-28 Mon> :PROPERTIES: :CUSTOM_ID: live-protocol :END: @@ -500,7 +295,10 @@ Objective: Comments: - It would be nice to have a protocol with speakers to tell us that they’re uncomfortable with a question, just so that we can find a smooth way to skip it. + + ** TODO Update viewing instructions and watch pages :sachac: +SCHEDULED: <2022-11-21 Mon> :PROPERTIES: :CUSTOM_ID: write-viewing :END: @@ -517,7 +315,13 @@ CLOSED: [2022-10-17 Mon 00:39] CLOSED: [2022-11-19 Sat 11:08] Maybe links to the current shift's pads *** TODO Add pad to sched directive so that it will be linked when the pads are live -*** TODO Update https://live.emacsconf.org/ as well +*** TODO [#A] Update https://live.emacsconf.org/ as well +SCHEDULED: <2022-11-21 Mon> +Ansible or Emacs Lisp? Emacs Lisp +control the status too + +also 2022/ and 2022/watch + ** TODO Prepare to handle talk state changes :sachac:publish: SCHEDULED: <2022-11-21 Mon> :PROPERTIES: @@ -621,6 +425,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/ @@ -634,6 +442,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/ @@ -812,6 +624,16 @@ SCHEDULED: <2022-11-26 Sat> | jman | X | | | vetrivln | X | [2022-11-19 Sat] access granted, needs to figure out audio | +*** TODO set up Mumble channels for host-dev and host-gen? + :PROPERTIES: + :CREATED: [2022-11-20 Sun 10:38] + :END: + +*** TODO add dry-run check of whispering to hosts + :PROPERTIES: + :CREATED: [2022-11-20 Sun 10:34] + :END: + ** Satellite events :PROPERTIES: :CUSTOM_ID: satellite @@ -882,6 +704,12 @@ SCHEDULED: <2022-11-26 Sat> :CREATED: [2022-11-19 Sat 13:54] :END: +*** SOMEDAY [#B] Regenerate hyperlist if sched changes + SCHEDULED: <2022-11-21 Mon> + :PROPERTIES: + :CREATED: [2022-11-17 Thu 22:17] + :END: + ** TODO [#C] Record intro/outro for day-1 and day-2 :zaeph: :PROPERTIES: :CUSTOM_ID: rec-intro @@ -1087,7 +915,7 @@ 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~ -* Ideas for next year +* Ideas for next year :nextyear: :PROPERTIES: :CUSTOM_ID: maybe-projects :END: @@ -1097,6 +925,132 @@ CLOSED: [2022-10-13 Thu 13:46] :CREATED: [2022-11-19 Sat 22:42] :END: +** SOMEDAY Suggest public submissions next time + :PROPERTIES: + :CREATED: [2022-09-22 Thu 21:09] + :END: +would it be interesting to see if other people can build on what's submitted? + +** SOMEDAY [#C] Match /names with speakers, maybe make a page with people currently online + :PROPERTIES: + :CREATED: [2022-10-01 Sat 23:58] + :END: + +** SOMEDAY EmacsWiki: Erc Robot + :PROPERTIES: + :CREATED: [2022-10-01 Sat 21:11] + :END: + +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's here, announcing when speakers are here + :PROPERTIES: + :CREATED: [2022-10-03 Mon 23:43] + :END: + +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 + :PROPERTIES: + :CREATED: [2022-10-07 Fri 21:15] + :END: + +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 + :PROPERTIES: + :CREATED: [2022-10-07 Fri 21:13] + :END: + +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 + :PROPERTIES: + :CREATED: [2022-10-04 Tue 00:11] + :END: + +https://github.com/FOSDEM/infrastructure/blob/master/ansible/playbooks/roles/video-bbb/files/scripts/source-recording.sh + +*** SOMEDAY c3voc/voctomix - Docker Image | Docker Hub + :PROPERTIES: + :CREATED: [2022-10-04 Tue 00:09] + :END: + +https://hub.docker.com/r/c3voc/voctomix/ + +*** SOMEDAY DebConf video team / vogol · GitLab + :PROPERTIES: + :CREATED: [2022-10-04 Tue 00:07] + :END: + +https://salsa.debian.org/debconf-video-team/vogol + +*** SOMEDAY roles/vogol · master · DebConf video team / ansible · GitLab web interface for voctomix + :PROPERTIES: + :CREATED: [2022-10-04 Tue 00:06] + :END: + +https://salsa.debian.org/debconf-video-team/ansible/-/tree/master/roles/vogol + +*** SOMEDAY CarlFK/veyepar: Video Eyeball Processor and Review + :PROPERTIES: + :CREATED: [2022-10-04 Tue 00:02] + :END: + +https://github.com/CarlFK/veyepar + +*** SOMEDAY timvideos/streaming-system: Tim Video's - Live Streaming for user groups and other events. + :PROPERTIES: + :CREATED: [2022-10-04 Tue 00:01] + :END: + +https://github.com/timvideos/streaming-system + +*** SOMEDAY <no title> — DebConf Videoteam Ansible documentation + :PROPERTIES: + :CREATED: [2022-10-03 Mon 23:40] + :END: + +https://debconf-video-team.pages.debian.net/ansible/ansible_roles/etherpad.html + +*** SOMEDAY DebConf video team / ansible · GitLab + :PROPERTIES: + :CREATED: [2022-10-03 Mon 23:38] + :END: + +https://salsa.debian.org/debconf-video-team/ansible + +** SOMEDAY handprint · PyPI + :PROPERTIES: + :CREATED: [2022-11-14 Mon 23:22] + :END: + +https://pypi.org/project/handprint/ +That might be interesting for reviewing text recognition output + +** TODO Update websocket + SCHEDULED: <2022-12-18 Sun> + +** TODO Idea for next year: save talk details in an org note so that I can easily send e-mails comparing previous with current + :PROPERTIES: + :CREATED: [2022-11-20 Sun 10:31] + :END: + +[[file:~/proj/emacsconf/wiki/2022/speakers.md::you beforehand.]] + * Things to figure out / decisions to make :PROPERTIES: :CUSTOM_ID: decisions @@ -1402,6 +1356,20 @@ Options: - 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 + :PROPERTIES: + :CREATED: [2022-10-01 Sat 23:50] + :END: + +https://github.com/e8johan/virtual-conf-resources/blob/master/foss-north.md + +**** SOMEDAY e8johan/virtual-conf-resources: Resources for virtual conferences + :PROPERTIES: + :CREATED: [2022-10-01 Sat 23:49] + :END: + +https://github.com/e8johan/virtual-conf-resources + ** SOMEDAY Think about what to do with schedule gaps due to cancelled talks :thoughts: :PROPERTIES: :CREATED: [2022-11-19 Sat 17:30] @@ -2255,6 +2223,12 @@ ${description} ***** publishing ***** webm ***** media directory +**** TODO [#A] Fix mapconcat error in updating task status +SCHEDULED: <2022-11-21 Mon> +:PROPERTIES: +:CREATED: [2022-11-21 Mon 07:23] +:END: + *** Handle Q&A :PROPERTIES: :CUSTOM_ID: questions @@ -4077,6 +4051,22 @@ Overlay considerations: CLOSED: [2022-11-07 Mon 14:46] 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 + SCHEDULED: <2022-11-25 Fri> + :PROPERTIES: + :CREATED: [2022-11-17 Thu 14:25] + :END: + +[[file:~/sync/Phone/Wednesday at 23-00.txt::So see Oh, that beginner elephant make a list of different things to plug during commercial breaks and elephant.]] + +*** TODO Make Q&A process slide + SCHEDULED: <2022-11-22 Tue> + :PROPERTIES: + :CREATED: [2022-11-20 Sun 10:04] + :END: + +Raise hands + ** DONE Find volunteers for tech-checks :zaeph: CLOSED: [2022-11-19 Sat 11:08] :PROPERTIES: @@ -4147,6 +4137,44 @@ CLOSED: [2022-11-08 Tue 09:48] DEADLINE: <2022-11-18 Fri> - FlowyCoder: sat-pm-gen, sun-pm-gen - jman: sun-pm-gen +*** DONE Doublecheck mute on join +CLOSED: [2022-11-21 Mon 12:05] +:PROPERTIES: +:CREATED: [2022-11-21 Mon 11:31] +:Effort: 0:15 +:QUANTIFIED: Emacs +:END: +:LOGBOOK: +CLOCK: [2022-11-21 Mon 11:49]--[2022-11-21 Mon 12:05] => 0:16 +:END: +[[file:~/proj/emacsconf/wiki/2022/organizers-notebook/index.org::*Shifts][Shifts]] + +#+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(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); + }); + } +}); + +#+end_src ** DONE Coordinate and help volunteers :sachac: CLOSED: [2022-11-19 Sat 11:14] :PROPERTIES: @@ -4485,6 +4513,32 @@ CLOSED: [2022-11-19 Sat 11:15] :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]] +*** TODO [#A] Separate mumble audio so that panic button can still bring in our audio + SCHEDULED: <2022-11-21 Mon> + :PROPERTIES: + :CREATED: [2022-11-20 Sun 10:14] + :END: + +*** SOMEDAY Prepare for rms talk and Q&A with bandali + DEADLINE: <2022-11-25 Fri> + :PROPERTIES: + :CREATED: [2022-11-18 Fri 12:27] + :END: + +Mumble? + +**** TODO [#C] Reflow and edit VTT for RMS TEDx talk so that things are on one line + :PROPERTIES: + :CREATED: [2022-11-19 Sat 19:02] + :END: + +[[file:~/proj/emacsconf/lisp/emacsconf-stream.el]] + +*** TODO Add panic button to OBS settings + :PROPERTIES: + :CREATED: [2022-11-20 Sun 10:13] + :END: + ** DONE [#C] Smoothen captioning workflow :sachac: CLOSED: [2022-11-19 Sat 11:10] :PROPERTIES: @@ -4676,6 +4730,266 @@ 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 +** DONE [#A] Write check-in email :sachac: +CLOSED: [2022-11-21 Mon 13:30] 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 :eval no +(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 + +*** DONE Update checkin instructions +CLOSED: [2022-11-20 Sun 10:58] +:PROPERTIES: +:Effort: 0:30 +:END: +:LOGBOOK: +CLOCK: [2022-11-20 Sun 10:12]--[2022-11-20 Sun 10:58] => 0:46 +: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 (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)))) +#+end_src + +**** E-mail for speakers who are planning to be at the conference +:PROPERTIES: +:EMAIL_ID: checkin-instructions +:SUBJECT: ${conf-name} ${year}: Check-in instructions +:REPLY_TO: emacsconf-submit@gnu.org, ${email} +:MAIL_FOLLOWUP_TO: emacsconf-submit@gnu.org, ${email} +:CC: emacsconf-submit@gnu.org +:FUNCTION: emacsconf-mail-checkin-instructions +:END: + +Hello, ${speakers-short}! + +We're looking forward to having you join us at EmacsConf! + +We've updated the schedule based on the submissions and cancellations, +and we'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't work for you. + +We'll try our best to keep your talk in the same general timeslot (ex: +Saturday morning, Saturday afternoon, Sunday morning, Sunday +afternoon). We'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'll get an e-mail from us with a subject like +"URGENT: EmacsConf 2022: ...".${wrap} + +Here'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'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's okay too, life happens. Let me know +as soon as you can and I'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 +: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 +*** CANCELLED Draft e-mail to send speakers who may need to do it live +CLOSED: [2022-11-21 Mon 13:30] +:PROPERTIES: +:CUSTOM_ID: live-speakers +:END: * Communications :PROPERTIES: :CUSTOM_ID: comms |