From d818273c7af44549f17bc24aae76de1947aaa224 Mon Sep 17 00:00:00 2001 From: Sacha Chua Date: Sun, 20 Nov 2022 17:35:12 -0500 Subject: Update mpv config and make it linkable --- 2022/organizers-notebook.md | 423 +++++++++++++++++++++++++++++--------------- 1 file changed, 283 insertions(+), 140 deletions(-) (limited to '2022/organizers-notebook.md') diff --git a/2022/organizers-notebook.md b/2022/organizers-notebook.md index 332d6bd3..f8ee9bad 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) -- [Projects to bear in mind but which are not actual](#maybe-projects) +- [Ideas for next year](#maybe-projects) - [Things to figure out / decisions to make](#decisions) - [Roles needed](#roles) - [Infrastructure notes](#infra) @@ -414,8 +414,10 @@ interests you! ## TODO Prepare intros for the hosts to read :sachac: -also in :INTRO\_NOTE: in conf.org so that we can plop it into the hyperlists -Doublecheck: +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: @@ -426,6 +428,226 @@ Doublecheck: ## 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’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’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 + - 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 + + (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’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 + +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 + . + +Thank you again for being part of EmacsConf ${year}! + +Sacha + + ### TODO Draft e-mail to send speakers who may need to do it live @@ -1115,16 +1337,10 @@ if we can get the anchor plugin -# Projects to bear in mind but which are not actual +# Ideas for next year -## DONE Find a way to accommodate a specific return-speaker - -We’re not sure if we’re going to get a presentation or a prerec for them -this year, but we need to keep this at the back of our minds. - -Note on how DebConf handled incidents: - +## SOMEDAY might be interesting to have dual monitors next year @@ -1133,6 +1349,7 @@ Note on how DebConf handled incidents: - [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) - [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) @@ -1211,6 +1428,14 @@ 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 + + +## 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? @@ -1469,8 +1694,15 @@ Options: ## SOMEDAY Think about what to do with schedule gaps due to cancelled talks :thoughts: -- 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 [ec22-open](https://media.emacsconf.org/current/bbb-open.html): 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: @@ -1578,7 +1810,7 @@ AM: 9-12 PM EST, PM: 1-5 PM EST (plus a little extra for setup/transition) Saturday Dec 3 - +
@@ -1651,7 +1883,7 @@ publicvoit - pad until 4pm on Sat, until 2pm on Sun Sunday Dec 4 -
+
@@ -2228,32 +2460,35 @@ ansible-playbook -i inventory.yml prod-playbook.yml –tags media,stream [Stream](#other-streams) + + ### Set up MPV for captions #### mpv profile -Add the following profile to `~/.config/mpv/mpv.conf`: +Add the following profile to `~/.config/mpv/mpv.conf`. You can also change the font to whatever you prefer. - # Uncomment this line to load the profile by default + # Uncomment the profile line to load the profile by default # Otherwise, use `--profile=emacsconf-talks` # profile=emacsconf-talks - [emacsconf-talks] # Positioning video-zoom=-0.15 - video-pan-y=-0.055 + video-align-x=1 + video-align-y=-1 sub-use-margins=yes sub-scale-by-window=yes sub-pos=103 - sub-margin-x=150 - sub-margin-y=40 + 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=40 + sub-font-size=30 sub-border-size=0 sub-border-color=0/1 sub-shadow-color=0/1 @@ -2709,7 +2944,7 @@ Probably focus on grabbing the audio first and seeing what’s worth keeping Make a table of the form -
+
@@ -2804,6 +3039,15 @@ Make a table of the form ## In case of +### Common broadcast (gen and dev) + +Options: + +- mpv +- mpv the same video +- join the BBB room + + ### Stuck wiki sudo -iu ikiwiki – ikiwiki –setup ~ikiwiki/emacsconf.setup @@ -4788,6 +5032,11 @@ so that the streamer can adjust volume offscreen? - +### TODO Automate in-between display? + +[Think about what to do with schedule gaps due to cancelled talks](file:///home/sacha/proj/emacsconf/wiki/2022/organizers-notebook/index.md) + + ## DONE Smoothen captioning workflow :sachac: @@ -4797,6 +5046,8 @@ capitalization and punctuation, but it produces longer captions (likely a 30-second sliding window). I’ll try to upload both YT and OpenAPI captions so that people can decide what they like. +[Set up MPV for captions](#mpv-captions) + ### DONE Figure out why it’s choking on SRV2 @@ -4993,6 +5244,15 @@ Sacha Chua +## DONE Find a way to accommodate a specific return-speaker + +We’re not sure if we’re going to get a presentation or a prerec for them +this year, but we need to keep this at the back of our minds. + +Note on how DebConf handled incidents: + + + # Communications @@ -5352,123 +5612,6 @@ stream for you. Hope to hear from you soon! Sacha -### Check-in instructions - -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 - - 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 - - (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))) - - -#### E-mail for speakers who are planning to be at the conference - -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 - . - -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 - -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 - . - -Thank you again for being part of EmacsConf ${year}! - -Sacha - - ### Last email before the conference > Friends, emacsians, hackers, lend me your ears! -- cgit v1.2.3