summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSacha Chua <sacha@sachachua.com>2024-11-20 12:52:35 -0500
committerSacha Chua <sacha@sachachua.com>2024-11-20 12:52:35 -0500
commitf95e4b730ced1b9e162c131491c973a36119e2df (patch)
treea69b4096c08927852aa5a1cccdeb866ca0549eb5
parent9ae4fb82a5ce5e5bca4df064d4e15f8f2690573a (diff)
downloademacsconf-wiki-f95e4b730ced1b9e162c131491c973a36119e2df.tar.xz
emacsconf-wiki-f95e4b730ced1b9e162c131491c973a36119e2df.zip
Add BBB notes and backstage
-rw-r--r--2024/organizers-notebook/index.org135
-rw-r--r--organizers-notebook.md166
-rw-r--r--organizers-notebook/index.org21
3 files changed, 278 insertions, 44 deletions
diff --git a/2024/organizers-notebook/index.org b/2024/organizers-notebook/index.org
index 40241c26..b48f01d1 100644
--- a/2024/organizers-notebook/index.org
+++ b/2024/organizers-notebook/index.org
@@ -405,11 +405,142 @@ DEADLINE: <2024-11-15 Fri>
- Possibly relevant: dynamic DNS?
https://www.linode.com/community/questions/7945/custom-dynamic-dns
Can also update manually
-*** TODO Create meeting rooms for each speaker
-SCHEDULED: <2024-11-15 Fri>
+
+
+
+
+*** Notes
+**** install, sizes
+[2024-11-19 Tue]
+
+Prerequisites:
+- BBB requires 4 CPU cores before it will install. bbb-conf.sh is fairly straightforward, so I guess we could spin down and then spin up again.
+
+Steps:
+1. Run the BBB installer.
+2. ~sudo apt install bbb-playback-video~ and then follow the instructions at [[https://docs.bigbluebutton.org/3.0/administration/customize/#install-additional-recording-processing-formats][Server Customization | BigBlueButton]] .
+3. https://docs.bigbluebutton.org/3.0/administration/customize/#mute-all-users-on-startup
+
+I think it needs 4 CPU cores for regular running, too.
+
+Sizing to shared 8GB 4 core for testing
+#+begin_src sh :eval no
+linode-cli linodes resize 67329098 --type g6-standard-4 --allow_auto_disk_resize false
+#+end_src
+takes about 2 minutes
+
+Sizing to shared nanode, dormant
+
+#+begin_src sh :eval no
+linode-cli linodes resize 67329098 --type g6-nanode-1 --allow_auto_disk_resize true
+#+end_src
+
+Resize disk
+linode-cli linodes disks-list 67329098
+linode-cli linodes disk-resize 67329098 131474261 --size 24000
+
+/var/bigbluebutton is where recordings will go
+
+https://techdocs.akamai.com/linode-api/reference/post-resize-disk
+
+https://www.linode.com/community/questions/21942/how-can-i-schedule-resizing-a-linode
+**** backing up
+[2024-11-20 Wed] ssh root@66.175.208.243 'tar zcvf - /var/bigbluebutton /etc/bigbluebutton /root/greenlight-v3 /usr/local/bigbluebutton /usr/share/bbb-web' > bbb-backup.tar.gz
+If changing IP: bbb-conf --setip bbb-new.example.com
+
+*** DONE Create meeting rooms for each speaker
+CLOSED: [2024-11-20 Wed 12:18] SCHEDULED: <2024-11-15 Fri>
:PROPERTIES:
:CREATED: [2024-11-02 Sat 11:50]
+:Effort: 0:30
:END:
+:LOGBOOK:
+CLOCK: [2024-11-20 Wed 10:48]--[2024-11-20 Wed 12:18] => 1:30
+:END:
+
+Now that I'm more familiar with BigBlueButton and
+Greenlight, I don't have to [[https://sachachua.com/blog/2023/10/using-emacs-and-spookfox-to-automate-creating-bigbluebutton-rooms-in-mozilla-firefox/][use Spookfox to
+automate creating BigBlueButton rooms in Mozilla
+Firefox]]. I can just create them through the Rails
+console.
+
+docker exec -it greenlight-v3 bundle exec rails c
+
+user_id = User.find_by_email("sacha@sachachua.com").id
+
+#+begin_src emacs-lisp :results replace
+(mapconcat (lambda (group)
+ (format
+ "Room.create(user_id: user_id, name: \"%s - %s\")\n"
+ (plist-get (cadr group) :speakers)
+ (string-join (mapcar (lambda (talk) (plist-get talk :slug))
+ (cdr group)))))
+ (emacsconf-mail-groups (emacsconf-active-talks (emacsconf-get-talk-info)))
+ "")
+#+end_src
+
+#+RESULTS:
+:results:
+Room.create(user_id: user_id, name: "Robin Templeton - guile")
+Room.create(user_id: user_id, name: "Daniel Pinkston - students")
+Room.create(user_id: user_id, name: "Ihor Radchenko and Bastien Guerry - org-update")
+Room.create(user_id: user_id, name: "Mats Lidell - hyperbole")
+Room.create(user_id: user_id, name: "screwlisp - mcclim")
+Room.create(user_id: user_id, name: "Vincent Conus - papers")
+Room.create(user_id: user_id, name: "Jonathan Otsuka - secrets")
+Room.create(user_id: user_id, name: "Aaron Grothe - repro")
+Room.create(user_id: user_id, name: "Ryota - color")
+Room.create(user_id: user_id, name: "Danny McClanahan - regex")
+Room.create(user_id: user_id, name: "Bob Weiner - hywiki")
+Room.create(user_id: user_id, name: "Abhinav Tushar - links")
+Room.create(user_id: user_id, name: "Mohsen BANAN - blee")
+Room.create(user_id: user_id, name: "Gabriele Bozzola - julia")
+Room.create(user_id: user_id, name: "Philip Kaludercic - emacs30")
+Room.create(user_id: user_id, name: "Ramin Honary - gypsum")
+Room.create(user_id: user_id, name: "Colin Woodbury - transducers")
+Room.create(user_id: user_id, name: "MetroWind - theme")
+Room.create(user_id: user_id, name: "Joseph Turner - hyperdrive")
+Room.create(user_id: user_id, name: "Charles Choi - casual")
+Room.create(user_id: user_id, name: "Troy Hinckley - rust")
+Room.create(user_id: user_id, name: "Blaine Mooers - project")
+Room.create(user_id: user_id, name: "Peter Prevos - writing")
+Room.create(user_id: user_id, name: "Howard Abrams - literate")
+Room.create(user_id: user_id, name: "Eric Marsden - pgmacs")
+Room.create(user_id: user_id, name: "Zac Romero - p-search")
+Room.create(user_id: user_id, name: "Bala Ramadurai - learning")
+Room.create(user_id: user_id, name: "Gopar - sharing")
+Room.create(user_id: user_id, name: "Christopher Howard - shellwater")
+Room.create(user_id: user_id, name: "James Endres Howell - org-teach")
+:end:
+
+Print out the room IDs with
+
+#+begin_src ruby
+Room.all.each { |x| puts x.friendly_id + " " + x.name }; nil
+#+end_src
+https://github.com/bigbluebutton/greenlight/issues/1925
+*** TODO Change background presentation
+https://docs.bigbluebutton.org/3.0/administration/customize/#change-the-default-presentation
+*** TODO Modify landing page
+/var/www/bigbluebutton-default/assets/index.html
+keep backup copy as it will be overwritten when bbb-conf is called
+*** STARTED Change default welcome message
+:PROPERTIES:
+:Effort: 0:30
+:END:
+:LOGBOOK:
+CLOCK: [2024-11-20 Wed 12:21]--[2024-11-20 Wed 12:46] => 0:25
+:END:
+https://docs.bigbluebutton.org/3.0/administration/customize/#change-the-default-welcome-message
+*** TODO Change html5 title
+/usr/share/bigbluebutton/html5-client/private/config/settings.yml
+
+TARGET=/usr/share/bigbluebutton/html5-client/private/config/settings.yml
+yq e -i ".public.app.clientTitle = \"EmacsConf\"" $TARGET
+*** TODO Try live captions
+https://docs.bigbluebutton.org/3.0/administration/customize/#enable-live-captions
+*** TODO Explore meeting layout?
+
** IRC web client
*** WAITING Ask libera.chat to increase connections allowed from chat.emacsconf.org on Dec 7 and 8
** IRC announcements
diff --git a/organizers-notebook.md b/organizers-notebook.md
index 2cff5989..b5e21093 100644
--- a/organizers-notebook.md
+++ b/organizers-notebook.md
@@ -20,35 +20,36 @@ 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](#orgc65a882)
- - [Process proposals](#org05d8ef4)
- - [Accept proposals](#orge98e249)
+ - [Announce](#orgc54b35e)
+ - [Process proposals](#orga69f2f4)
+ - [Accept proposals](#org1a0698c)
- [Draft schedule](#draft-schedule)
- - [Set up backstage and upload](#orge9a3c89)
- - [Post the schedule](#org1e7771f)
- - [Process uploaded files](#orgfd23289)
- - [Generate assets](#org80c461d)
- - [Prepare the infrastructure](#org033e054)
- - [Getting ready for captions](#org217ecc8)
-- [General infrastructure](#org59478a5)
+ - [Set up backstage and upload](#org8d4fef6)
+ - [Post the schedule](#orgda53020)
+ - [Process uploaded files](#orgfb02d97)
+ - [Generate assets](#orge3a49dc)
+ - [Prepare the infrastructure](#orgbe3ed00)
+ - [Getting ready for captions](#org58a27dd)
+- [General infrastructure](#org3881d33)
- [Icecast](#icecast)
- [Watching pages](#watch)
- [VNC](#vnc)
- [Streaming with OBS](#obs)
- - [Shell scripts](#org511ba94)
- - [IRC web client](#org6abc1fd)
- - [Etherpad](#orgd320fcc)
+ - [Shell scripts](#org18a331c)
+ - [Backstage](#backstage)
+ - [IRC web client](#org0e78085)
+ - [Etherpad](#org6cd335d)
- [Publishing media to the server and to the wiki](#media)
- - [Automated IRC announcements](#org005b5de)
- - [Manual IRC announcements](#org33f6301)
- - [Low-res stream](#orgd5b1661)
- - [Restream to YouTube](#org3875a88)
- - [Restream to Toobnix](#org678b044)
+ - [Automated IRC announcements](#org8972cd0)
+ - [Manual IRC announcements](#orgaa2f53d)
+ - [Low-res stream](#org6a806b3)
+ - [Restream to YouTube](#orgd90e577)
+ - [Restream to Toobnix](#org5d68580)
- [Other process notes](#other)
- [Adding another user to BBB](#bbb-user)
- [When a talk is cancelled](#cancel-talk)
- [When a talk Q&A changes method](#change-talk-qa)
- - [Ansible](#orgf87ae48)
+ - [Ansible](#org2f0dc69)
<a id="starting-up-the-conference-planning-process"></a>
@@ -149,7 +150,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="orgc65a882"></a>
+<a id="orgc54b35e"></a>
## Announce
@@ -157,7 +158,7 @@ Put inside double square brackets: `!template id=pagedraft`
- Submit to <https://foss.events/>
-<a id="org05d8ef4"></a>
+<a id="orga69f2f4"></a>
## Process proposals
@@ -186,7 +187,7 @@ When proposals come in:
PUBLIC\_EMAIL
-<a id="orge98e249"></a>
+<a id="org1a0698c"></a>
## Accept proposals
@@ -219,7 +220,7 @@ For each talk:
- Add missing items to plan
-<a id="orge9a3c89"></a>
+<a id="org8d4fef6"></a>
## Set up backstage and upload
@@ -230,7 +231,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="org1e7771f"></a>
+<a id="orgda53020"></a>
## Post the schedule
@@ -241,7 +242,7 @@ Lessons learned:
- Update talks.md to refer to watch.md as well
-<a id="orgfd23289"></a>
+<a id="orgfb02d97"></a>
## Process uploaded files
@@ -266,7 +267,7 @@ Process:
3. <elisp:emacsconf-publish-backstage-index>
-<a id="org80c461d"></a>
+<a id="orge3a49dc"></a>
## Generate assets
@@ -284,7 +285,7 @@ Process:
- Splice together into a file that will be processed with subed-record-compile-video.
-<a id="org033e054"></a>
+<a id="orgbe3ed00"></a>
## Prepare the infrastructure
@@ -306,7 +307,7 @@ Checklist:
- [ ] Icecast
-<a id="org217ecc8"></a>
+<a id="org58a27dd"></a>
## Getting ready for captions
@@ -317,7 +318,7 @@ 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="org59478a5"></a>
+<a id="org3881d33"></a>
# General infrastructure
@@ -481,7 +482,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="org511ba94"></a>
+<a id="org18a331c"></a>
## Shell scripts
@@ -508,7 +509,87 @@ Setup:
- Set up the assets/music directory
-<a id="org6abc1fd"></a>
+<a id="backstage"></a>
+
+## Backstage
+
+Update this with <elisp:emacsconf-publish-backstage-index>
+
+Explanation of files:
+
+<table>
+
+
+<colgroup>
+<col class="org-left">
+
+<col class="org-left">
+</colgroup>
+<tbody>
+<tr>
+<td class="org-left">&#x2013;original.mp4/mov/webm</td>
+<td class="org-left">original file as uploaded by the speaker</td>
+</tr>
+
+<tr>
+<td class="org-left">&#x2013;reencoded.webm</td>
+<td class="org-left">converted to .webm format and compressed</td>
+</tr>
+
+<tr>
+<td class="org-left">&#x2013;reencoded.opus</td>
+<td class="org-left">audio only</td>
+</tr>
+
+<tr>
+<td class="org-left">&#x2013;normalized.opus</td>
+<td class="org-left">normalized audio</td>
+</tr>
+
+<tr>
+<td class="org-left">&#x2013;reencoded.vtt</td>
+<td class="org-left">WhisperX captions, WebVTT format</td>
+</tr>
+
+<tr>
+<td class="org-left">&#x2013;reencoded.json</td>
+<td class="org-left">WhisperX word data</td>
+</tr>
+
+<tr>
+<td class="org-left">&#x2013;reencoded.srt</td>
+<td class="org-left">WhisperX captions, SRT format</td>
+</tr>
+
+<tr>
+<td class="org-left">&#x2013;reencoded.txt</td>
+<td class="org-left">WhisperX captions, plain text</td>
+</tr>
+
+<tr>
+<td class="org-left">&#x2013;main.vtt</td>
+<td class="org-left">edited captions</td>
+</tr>
+
+<tr>
+<td class="org-left">&#x2013;main&#x2013;chapters.vtt</td>
+<td class="org-left">chapter markers</td>
+</tr>
+
+<tr>
+<td class="org-left">&#x2013;main.txt</td>
+<td class="org-left">captions as text</td>
+</tr>
+
+<tr>
+<td class="org-left">&#x2013;main.webm</td>
+<td class="org-left">version for streaming based on the most recent resources</td>
+</tr>
+</tbody>
+</table>
+
+
+<a id="org0e78085"></a>
## IRC web client
@@ -530,7 +611,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="orgd320fcc"></a>
+<a id="org6cd335d"></a>
## Etherpad
@@ -566,7 +647,7 @@ Switching it back to `TO_STREAM` and calling
You can generate the index with `emacsconf-publish-update-media`.
-<a id="org005b5de"></a>
+<a id="org8972cd0"></a>
## Automated IRC announcements
@@ -575,7 +656,7 @@ Success:
- [ ] When a talk starts playing, it is announced in the relevant channel
-<a id="org33f6301"></a>
+<a id="orgaa2f53d"></a>
## Manual IRC announcements
@@ -584,17 +665,17 @@ Success:
- [X] You can /opall, /conftopic, and /broadcast
-<a id="orgd5b1661"></a>
+<a id="org6a806b3"></a>
## Low-res stream
-<a id="org3875a88"></a>
+<a id="orgd90e577"></a>
## Restream to YouTube
-<a id="org678b044"></a>
+<a id="org5d68580"></a>
## Restream to Toobnix
@@ -617,10 +698,11 @@ Success:
## When a talk is cancelled
1. Update the status to CANCELLED.
-2. Update the schedule with <elisp:emacsconf-update-schedule>
-3. Regenerate the intros (before, after). <elisp:emacsconf-stream-generate-in-between-pages>, then use <elisp:subed-record-compile-video> in the intros file.
-4. Sync the new intros to the /data/emacsconf/shared/$YEAR/assets/intros directory.
-5. Regenerate the pads: <elisp:emacsconf-pad-prepopulate-all-talks>
+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>
+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>
<a id="change-talk-qa"></a>
@@ -635,7 +717,7 @@ Success:
6. Regenerate talks.json: <elisp:emacsconf-publish-talks-json-to-files>
-<a id="orgf87ae48"></a>
+<a id="org2f0dc69"></a>
## Ansible
diff --git a/organizers-notebook/index.org b/organizers-notebook/index.org
index b22162d5..483d9d04 100644
--- a/organizers-notebook/index.org
+++ b/organizers-notebook/index.org
@@ -440,6 +440,27 @@ Setup:
- You may want to generate test assets and copy them over to the assets/stream directory.
- Generate all the overlays and copy them to assets/overlays
- Set up the assets/music directory
+** Backstage
+:PROPERTIES:
+:CUSTOM_ID: backstage
+:END:
+
+Update this with elisp:emacsconf-publish-backstage-index
+
+Explanation of files:
+
+| --original.mp4/mov/webm | original file as uploaded by the speaker |
+| --reencoded.webm | converted to .webm format and compressed |
+| --reencoded.opus | audio only |
+| --normalized.opus | normalized audio |
+| --reencoded.vtt | WhisperX captions, WebVTT format |
+| --reencoded.json | WhisperX word data |
+| --reencoded.srt | WhisperX captions, SRT format |
+| --reencoded.txt | WhisperX captions, plain text |
+| --main.vtt | edited captions |
+| --main--chapters.vtt | chapter markers |
+| --main.txt | captions as text |
+| --main.webm | version for streaming based on the most recent resources |
** IRC web client