summaryrefslogtreecommitdiffstats
path: root/organizers-notebook.md
diff options
context:
space:
mode:
authorSacha Chua <sacha@sachachua.com>2024-12-02 10:11:42 -0500
committerSacha Chua <sacha@sachachua.com>2024-12-02 10:11:42 -0500
commitf5236287c24014831da52c52abfa0d09a00e9fc8 (patch)
treec2fe09acf18c67e001f8ebadcdfe037c50d2333e /organizers-notebook.md
parenta1712d3f98fe3ae117f2df7818c659eee91cc1c6 (diff)
downloademacsconf-wiki-f5236287c24014831da52c52abfa0d09a00e9fc8.tar.xz
emacsconf-wiki-f5236287c24014831da52c52abfa0d09a00e9fc8.zip
document bbb system audio limitations
Diffstat (limited to '')
-rw-r--r--organizers-notebook.md240
1 files changed, 195 insertions, 45 deletions
diff --git a/organizers-notebook.md b/organizers-notebook.md
index bcaa74f7..c7c68e28 100644
--- a/organizers-notebook.md
+++ b/organizers-notebook.md
@@ -20,36 +20,43 @@ This document is the general organizers' notebook that can be used as a starting
- [Create the public organizers&rsquo; notebook in the wiki](#starting-up-the-conference-planning-process-create-the-public-organizers-notebook-in-the-wiki)
- [Phases and lessons learned](#phases-and-lessons-learned)
- [Draft CFP](#phases-and-lessons-learned-draft-cfp)
- - [Announce](#org0e21b8c)
- - [Process proposals](#org0b948ff)
- - [Accept proposals](#org709c243)
+ - [Announce](#orgfbeb841)
+ - [Process proposals](#orgfe4f71e)
+ - [Accept proposals](#org576ce01)
- [Draft schedule](#draft-schedule)
- - [Set up backstage and upload](#orgdc12c78)
- - [Post the schedule](#orgce4ff13)
- - [Process uploaded files](#org6cdaa28)
- - [Generate assets](#org3c7eeb9)
- - [Prepare the infrastructure](#orgf502d28)
- - [Getting ready for captions](#org00f1270)
-- [General infrastructure](#orga2f2794)
+ - [Set up backstage and upload](#orgeb5f493)
+ - [Post the schedule](#org12c176d)
+ - [Process uploaded files](#org50e7b10)
+ - [Generate assets](#org7df66e5)
+ - [Prepare the infrastructure](#org62526de)
+ - [Getting ready for captions](#orgdf2206d)
+ - [Getting ready for the conference](#pre-conf)
+ - [During the conference](#conf)
+- [General infrastructure](#orgc8215f3)
- [Icecast](#icecast)
- [Watching pages](#watch)
- [VNC](#vnc)
- [Streaming with OBS](#obs)
- - [Shell scripts](#org93c38b4)
+ - [Shell scripts](#orgfa04f6d)
- [Backstage](#backstage)
- - [IRC web client](#org75fb0fd)
- - [Etherpad](#orgadd3307)
+ - [IRC web client](#org4e4a2e5)
+ - [Etherpad](#org89c57f6)
- [Publishing media to the server and to the wiki](#media)
- - [Automated IRC announcements](#org0b45c02)
- - [Manual IRC announcements](#orgf31a707)
- - [Low-res stream](#org2b9c281)
- - [Restream to YouTube](#org00999f1)
- - [Restream to Toobnix](#org1d92e71)
+ - [Automated IRC announcements](#org53dc7b5)
+ - [BigBlueButton](#orgc02997b)
+ - [Manual IRC announcements](#orge215951)
+ - [Low-res stream](#orgd38bf1e)
+ - [Upload talks to YouTube](#orgc7b7ef7)
+ - [Restream to YouTube](#org759bcd0)
- [Other process notes](#other)
- [Adding another user to BBB](#bbb-user)
+ - [When a talk is added after the schedule has already been drafted](#org7972560)
- [When a talk is cancelled](#cancel-talk)
- [When a talk Q&A changes method](#change-talk-qa)
- - [Ansible](#orge2b5368)
+ - [When a system is down](#org60241a7)
+ - [When we need to bring on a last-minute volunteer](#org1707a7f)
+ - [Checking people in](#org8465eac)
+ - [Ansible](#org1dfb09d)
<a id="starting-up-the-conference-planning-process"></a>
@@ -150,7 +157,7 @@ Put inside double square brackets: `!template id=pagedraft`
- Put the speaker introduction right after the talk description for easier web page copying.
-<a id="org0e21b8c"></a>
+<a id="orgfbeb841"></a>
## Announce
@@ -158,7 +165,7 @@ Put inside double square brackets: `!template id=pagedraft`
- Submit to <https://foss.events/>
-<a id="org0b948ff"></a>
+<a id="orgfe4f71e"></a>
## Process proposals
@@ -187,7 +194,7 @@ When proposals come in:
PUBLIC\_EMAIL
-<a id="org709c243"></a>
+<a id="org576ce01"></a>
## Accept proposals
@@ -220,7 +227,7 @@ For each talk:
- Add missing items to plan
-<a id="orgdc12c78"></a>
+<a id="orgeb5f493"></a>
## Set up backstage and upload
@@ -231,7 +238,7 @@ Lessons learned:
- Next year, let&rsquo;s get upload.emacsconf.org in place as the domain name so that people don&rsquo;t try to FTP files to it.
-<a id="orgce4ff13"></a>
+<a id="org12c176d"></a>
## Post the schedule
@@ -242,7 +249,7 @@ Lessons learned:
- Update talks.md to refer to watch.md as well
-<a id="org6cdaa28"></a>
+<a id="org50e7b10"></a>
## Process uploaded files
@@ -267,7 +274,7 @@ Process:
3. <elisp:emacsconf-publish-backstage-index>
-<a id="org3c7eeb9"></a>
+<a id="org7df66e5"></a>
## Generate assets
@@ -285,7 +292,7 @@ Process:
- Splice together into a file that will be processed with subed-record-compile-video.
-<a id="orgf502d28"></a>
+<a id="org62526de"></a>
## Prepare the infrastructure
@@ -307,7 +314,7 @@ Checklist:
- [ ] Icecast
-<a id="org00f1270"></a>
+<a id="orgdf2206d"></a>
## Getting ready for captions
@@ -318,7 +325,34 @@ Onboarding:
- Send backstage information <elisp:emacsconf-mail-backstage-info-to-volunteer> . (Can be sent to all captioning volunteers with <elisp:emacsconf-mail-backstage-info-to-captioning-volunteers>)
-<a id="orga2f2794"></a>
+<a id="pre-conf"></a>
+
+## Getting ready for the conference
+
+<elisp:emacsconf-pad-prepopulate-shift-hyperlists>
+
+
+### TODO Send check-in details, schedule update, etc.
+
+
+### Two days before the conference
+
+Go through the :tminustwo: tags.
+
+
+### One day before the conference
+
+Go through the :tminusone: tags.
+
+
+<a id="conf"></a>
+
+## During the conference
+
+<elisp:emacsconf-pad-open-shift-hyperlist>
+
+
+<a id="orgc8215f3"></a>
# General infrastructure
@@ -482,7 +516,7 @@ so that the year is updated in the configuration.
This is on live.emacsconf.org and can be restarted with `/etc/init.d/emacsconf restart`.
-<a id="org93c38b4"></a>
+<a id="orgfa04f6d"></a>
## Shell scripts
@@ -596,7 +630,7 @@ Explanation of files:
Other files might also have been uploaded by the speaker, such as slides or notes.
-<a id="org75fb0fd"></a>
+<a id="org4e4a2e5"></a>
## IRC web client
@@ -618,7 +652,7 @@ connection exhaustion errors. Is that something we can plan now or would
you like me to bring it up a few days before the conference?
-<a id="orgadd3307"></a>
+<a id="org89c57f6"></a>
## Etherpad
@@ -645,7 +679,7 @@ Switching it back to `TO_STREAM` and calling
<elisp:emacsconf-publish-media-files-on-change> should remove it.
-### TODO Switch public media to unprotected root before the conference
+### TODO Switch public media to unprotected root before the conference :tminustwo:
1. Clear public media directory.
2. Set `media_protect_root` to false in Ansible `group_vars/all.yml`.
@@ -654,7 +688,7 @@ Switching it back to `TO_STREAM` and calling
You can generate the index with `emacsconf-publish-update-media`.
-<a id="org0b45c02"></a>
+<a id="org53dc7b5"></a>
## Automated IRC announcements
@@ -663,7 +697,36 @@ Success:
- [ ] When a talk starts playing, it is announced in the relevant channel
-<a id="orgf31a707"></a>
+<a id="orgc02997b"></a>
+
+## BigBlueButton
+
+ssh orga@media.emacsconf.org &ldquo;~/bin/bbb-before sat-open&rdquo;
+<https://media.emacsconf.org/2024/current/bbb-sat-open.html>
+
+ssh orga@media.emacsconf.org &ldquo;~/bin/bbb-open sat-open&rdquo;
+
+After restarting, and in case of &ldquo;Firefox can’t establish a connection to the server at wss://bbb.emacsverse.org/graphql.&rdquo;
+
+ssh root@bbb
+cd greenlight-v3
+docker compose restart
+
+&#x2026; do I need to worry about BBB? AAAAAAAAAH!! Does not work in Firefox private browsing?
+
+
+### System audio limitations
+
+Sharing system audio by changing the audio device to &ldquo;Built-in Audio Analog Stereo&rdquo; is very choppy, only gets captured in the recording if I&rsquo;m using Firefox (not Chrome) AND there&rsquo;s at least one listener, and doesn&rsquo;t allow simultaneous narration from the speaker.
+
+Using pulseaudio to change the app&rsquo;s recording device to the audio monitor results in smoother audio (because it&rsquo;s pretending to be the microphone), but still doesn&rsquo;t allow simultaneous narration from the speaker.
+
+Combining microphone + system audio into a new virtual microphone source is probably more complicated than we want to walk speakers through.
+
+BBB says sharing system audio works only if you use Chrome on Mac OS X or Microsoft Windows (<https://support.bigbluebutton.org/hc/en-us/articles/1500005315642-Can-I-play-a-video-using-screen-sharing>). I tested it on Linux and sharing system audio is not an option. If you happen to know of any more elegant way to do this, I&rsquo;d love to hear it.
+
+
+<a id="orge215951"></a>
## Manual IRC announcements
@@ -672,21 +735,58 @@ Success:
- [X] You can /opall, /conftopic, and /broadcast
-<a id="org2b9c281"></a>
+<a id="orgd38bf1e"></a>
## Low-res stream
-
-<a id="org00999f1"></a>
+Should be automatic, handled by Icecast
+backup on live:
+
+- /usr/local/bin/emacsconf-lowres-gen-on-connect
+- /usr/local/bin/emacsconf-lowres-dev-on-connect
+
+
+<a id="orgc7b7ef7"></a>
+
+## Upload talks to YouTube
+
+[Channel videos](https://studio.youtube.com/channel/UCwuyodzTl_KdEKNuJmeo99A/videos/upload?filter=%5B%5D&sort=%7B%22columnType%22%3A%22date%22%2C%22sortOrder%22%3A%22DESCENDING%22%7D)
+
+ (seq-keep
+ (lambda (o)
+ (when (and (string= (plist-get o :status) "TO_STREAM")
+ (not (plist-get o :youtube)))
+ (list
+ (plist-get o :slug)
+ (org-link-make-string
+ (concat "copy:"
+ )
+ "video file")
+ (org-link-make-string
+ (format "elisp:(emacsconf-publish-video-description \"%s\" t)"
+ (plist-get o :slug))
+ "desc")
+ (if (emacsconf-talk-file o "--main.vtt")
+ (org-link-make-string
+ (concat "copy:"
+ (emacsconf-talk-file o "--main.vtt"))
+ "sub file")
+ "")
+ (org-link-make-string
+ (concat "elisp:(emacsconf-set-property-from-slug \""
+ (plist-get o :slug)
+ "\" \"YOUTUBE\" (read-string \"YouTube URL: \"))"
+ )
+ "save")
+ (plist-get o :scheduled))))
+ (emacsconf-publish-prepare-for-display (emacsconf-get-talk-info)))
+
+
+<a id="org759bcd0"></a>
## Restream to YouTube
-<a id="org1d92e71"></a>
-
-## Restream to Toobnix
-
-
<a id="other"></a>
# Other process notes
@@ -700,13 +800,33 @@ Success:
docker exec -it greenlight-v2 bundle exec rake user:create["USERNAME","EMAIL","PASSWORD","user"]
+<a id="org7972560"></a>
+
+## When a talk is added after the schedule has already been drafted
+
+- [X] Add the talk to conf.org
+- [X] Add the talk ID to the draft schedule
+- [X] Run the draft schedule block
+- [X] <elisp:emacsconf-schedule-update-from-info>
+- [X] <elisp:emacsconf-publish-talks-json-to-files>
+- [X] Generate pads with `ansible-playbook -i inventory.yml prod-playbook.yml --tags pad`
+- [X] <elisp:emacsconf-set-file-prefixes>
+- [X] <elisp:emacsconf-update-schedule>
+- [X] <elisp:emacsconf-stream-generate-overlays>
+- [X] <elisp:emacsconf-stream-generate-test-videos>
+- [X] `rsync -avze ssh ~/proj/emacsconf/2024/assets/ res:/data/emacsconf/shared/2024/assets/`
+- [X] Send the upload instructions
+- [X] Generate the intro text
+- [ ] Record the intro
+
+
<a id="cancel-talk"></a>
## When a talk is cancelled
1. Update the status to CANCELLED.
2. Rejig the schedule if needed, and update with <elisp:emacsconf-schedule-update-from-info>
-3. Update the published schedule with <elisp:emacsconf-update-schedule>
+3. Update the published schedule with <elisp:emacsconf-update-schedule> and push the wiki.
4. Regenerate the intros (before, after). <elisp:emacsconf-stream-generate-in-between-pages>, then use <elisp:subed-record-compile-video> in the intros file.
5. Sync the new intros to the /data/emacsconf/shared/$YEAR/assets/intros directory.
6. Regenerate the pads: <elisp:emacsconf-pad-prepopulate-all-talks>
@@ -724,7 +844,37 @@ Success:
6. Regenerate talks.json: <elisp:emacsconf-publish-talks-json-to-files>
-<a id="orge2b5368"></a>
+<a id="org60241a7"></a>
+
+## When a system is down
+
+Let people know in #emacsconf and #emacsconf-org
+
+Update the status page:
+
+<file://ssh:orga@front0.emacsconf.org:/var/www/status.emacsconf.org/index.html>
+
+/broadcast <message> may also be helpful
+
+
+<a id="org1707a7f"></a>
+
+## When we need to bring on a last-minute volunteer
+
+/backstage nick
+
+will give them the backstage credentials and links to the index
+
+
+<a id="org8465eac"></a>
+
+## Checking people in
+
+/checkin nick
+/room nick (should be automatic if live, but there just in case)
+
+
+<a id="org1dfb09d"></a>
## Ansible