summaryrefslogtreecommitdiffstats
path: root/organizers-notebook
diff options
context:
space:
mode:
authorSacha Chua <sacha@sachachua.com>2025-12-05 21:37:09 -0500
committerSacha Chua <sacha@sachachua.com>2025-12-05 21:37:12 -0500
commitd63372493b06d0c04ae308ce7386f12e5d79698a (patch)
tree039d905cef1d6145e95cba35bc5eb2d26b5ce763 /organizers-notebook
parentbfdb45f2f45187a668fa90cd95e59c82d6c30e35 (diff)
downloademacsconf-wiki-d63372493b06d0c04ae308ce7386f12e5d79698a.tar.xz
emacsconf-wiki-d63372493b06d0c04ae308ce7386f12e5d79698a.zip
schedule update
Diffstat (limited to '')
-rw-r--r--organizers-notebook.md209
-rw-r--r--organizers-notebook/index.org86
2 files changed, 247 insertions, 48 deletions
diff --git a/organizers-notebook.md b/organizers-notebook.md
index b3bd61c4..3cdcda26 100644
--- a/organizers-notebook.md
+++ b/organizers-notebook.md
@@ -39,29 +39,31 @@ This document is the general organizers' notebook that can be used as a starting
- [Linode instance sizes](#general-infrastructure-linode-instance-sizes)
- [File uploads](#upload)
- [Media processing](#general-infrastructure-media-processing)
- - [Wiki](#orgeaf5478)
+ - [Wiki](#org7f83d48)
- [Icecast](#icecast)
- [Watching pages](#watch)
- [VNC](#vnc)
- [Streaming with OBS](#obs)
+ - [Mumble](#org09cd092)
- [Shell scripts](#general-infrastructure-shell-scripts)
- [Backstage](#backstage)
- - [IRC web client](#general-infrastructure-irc-web-client)
+ - [Thelounge IRC web client](#general-infrastructure-irc-web-client)
- [Etherpad](#general-infrastructure-etherpad)
- [Publishing media to the server and to the wiki](#media)
+ - [Automated publishing to the media server](#orgc40bf50)
- [Automated IRC announcements](#general-infrastructure-automated-irc-announcements)
- [BigBlueButton](#bbb)
- [Manual IRC announcements](#general-infrastructure-manual-irc-announcements)
+ - [Check test crontab](#orgc7d6d2a)
- [Confirm automated IRC announcements from res](#general-infrastructure-confirm-automated-irc-announcements-from-res)
- [Low-res stream](#general-infrastructure-low-res-stream)
- [Upload talks to YouTube](#general-infrastructure-upload-talks-to-youtube)
- [Restream to YouTube](#general-infrastructure-restream-to-youtube)
- - [Restream to Toobnix](#orgd102e79)
+ - [Restream to Toobnix](#orgdc911e7)
+ - [i3 window manager](#org692ea98)
- [Other process notes](#other)
- [Adding another user to BBB](#bbb-user)
- - [When a talk is added after the schedule has already been drafted](#other-process-notes-when-a-talk-is-added-after-the-schedule-has-already-been-drafted)
- - [When a talk is cancelled](#cancel-talk)
- - [When a talk changes title](#other-process-notes-when-a-talk-changes-title)
+ - [Schedule changes](#org5f8f6b0)
- [When a talk Q&A changes method](#change-talk-qa)
- [To play the other stream](#other-process-notes-to-play-the-other-stream)
- [When a system is down](#other-process-notes-when-a-system-is-down)
@@ -479,25 +481,78 @@ Onboarding:
<elisp:emacsconf-pad-prepopulate-shift-hyperlists>
-### STARTED Check in with speakers for cancellations, adjustments
+### DONE Check in with speakers for cancellations, adjustments
emacsconf-mail-intro-to-all
-### TODO Send check-in details, schedule update, etc. :email:
-
+### TODO Record opening remarks
-### Two days before the conference
-Go through the :tminustwo: tags.
+### TODO Send check-in details, schedule update, etc. :email:
### One day before the conference
-Go through the :tminusone: tags.
-
-- Set `emacsconf-publishing-phase` to `conference`.
-- Set emacsconf-publish-include-pads to t and republish the info pages.
+- [X] Set `emacsconf-publishing-phase` to `conference`.
+- [X] Set emacsconf-publish-include-pads to t.
+- [X] Republish the schedule and the info pages.
+- [X] Update the conf.org and the wiki on res. (~/emacsconf-2025-private, ~/emacsconf-wiki)
+- [X] Resize the BBB server to production levels with bbb-prod: 16 GB $0.1440/hour 6 CPUs
+- [X] Send check-in details and last-minute schedule updates.
+- [X] Start thelounge on front0: systemctl start thelounge.
+- [X] Confirm I can connect to Mumble.
+- [X] Resize front0 to production: front0 shared Linode 32GB 8 CPUs 640GB $0.2880/hour
+- [X] Resize live0 to production: shared Linode 64GB 16 CPUs $0.5760/hour
+- [X] Start the VNC servers.
+
+ #!/bin/bash
+ # SSH to both
+ cd ~/proj/emacsconf/emacsconf-ansible
+
+ # Gen
+ export TRACK=gen; TRACK_PORT=5905; export SSH_PORT=46668
+ ssh emacsconf-$TRACK@res.emacsconf.org -p $SSH_PORT /home/emacsconf-$TRACK/bin/track-vnc
+ sleep 5
+ ssh emacsconf-$TRACK@res.emacsconf.org -N -L $TRACK_PORT:127.0.0.1:$TRACK_PORT -p $SSH_PORT &
+ xvncviewer 127.0.0.1:$TRACK_PORT -shared -geometry 1280x720 -passwd vnc-passwd-$TRACK &
+
+ # Dev
+ export TRACK=dev; export TRACK_PORT=5906; export SSH_PORT=46668
+ ssh emacsconf-$TRACK@res.emacsconf.org -p $SSH_PORT /home/emacsconf-$TRACK/bin/track-vnc
+ sleep 5
+ ssh emacsconf-$TRACK@res.emacsconf.org -N -L $TRACK_PORT:127.0.0.1:$TRACK_PORT -p $SSH_PORT &
+ xvncviewer 127.0.0.1:$TRACK_PORT -shared -geometry 1280x720 -passwd vnc-passwd-$TRACK &
+- [X] Confirm that we can use &ldquo;Start Recording&rdquo; to stream to gen.
+ - [X] play-with-intro sat-open
+ - [X] <https://live.emacsconf.org/2025/watch/gen/>
+ - [X] mpv <https://live0.emacsconf.org/gen.webm>
+ - [X] play-with-intro sun-open (to check the overlays)
+ - [X] <https://live.emacsconf.org/2025/watch/gen-480p/>
+ - [X] mpv <https://live0.emacsconf.org/gen-480p.webm>
+- [X] Confirm that we can stream to dev.
+ - [X] play-with-intro sat-open
+ - [X] <https://live.emacsconf.org/2025/watch/dev/>
+ - [X] mpv <https://live0.emacsconf.org/dev.webm>
+ - [X] play-with-intro sun-open (to check the overlays)
+ - [X] <https://live.emacsconf.org/2025/watch/dev-480p/>
+ - [X] mpv <https://live0.emacsconf.org/dev-480p.webm>
+- [X] Confirm that I can restream to YouTube.
+ - Settings - Stream, paste in the RTMP key for the relevant event, then Start Streaming.
+ - [X] gen
+ - [X] dev
+- [X] Confirm that I can restream to Toobnix
+ - [X] live0: restream-gen-toobnix
+ - [X] live0: restream-dev-toobnix
+- [X] Check automated announcements and publishing
+ - [X] orga@res: talk sat-open TO\_STREAM
+ - [X] <https://emacsconf.org/2025/talks/sat-open/> doesn&rsquo;t have video
+ - [X] <https://media.emacsconf.org/2025> doesn&rsquo;t have it
+ - orga@res: talk sat-open PLAYING
+ - [X] <https://emacsconf.org/2025/talks/sat-open/> has video and transcript
+ - [X] <https://media.emacsconf.org/2025> has talk files
+ - [X] IRC announcement in #emacsconf-gen
+- [X] Confirm icecast stats are available: <http://live0.emacsconf.org/admin/stats> (username: admin, password is in prod-vars.yml)
<a id="conf"></a>
@@ -523,6 +578,8 @@ dev: 226 peak + 79 peak lowres
Sunday:
gen: 89 peak + 10 peak lowres
+<http://live0.emacsconf.org/admin/stats> (username: admin, password is in prod-vars.yml)
+
meet peak 409% CPU (100% is 1 CPU), average 69.4%
front peak 70.66% CPU (100% is 1 CPU)
live peak 552% CPU (100% is 1 CPU) average 144%
@@ -797,14 +854,15 @@ After the conference:
#!/bin/bash
# export CONF_PUBLIC=1
- rsync -avzue ssh --exclude .lock-\* --exclude 'partial--*' res:~/cache/ ~/proj/emacsconf/2025/cache/ --exclude .git
+ rsync -avu ~/proj/emacsconf/2025/assets/intros/*--intro.* ~/proj/emacsconf/2025/cache/
+ rsync -avzue ssh --exclude ffmpeg2pass* --exclude .lock-\* --exclude 'partial--*' res:~/cache/ ~/proj/emacsconf/2025/cache/ --exclude .git
chmod ugo+r . -R
- rsync -avzue ssh --exclude .lock-\* --exclude 'partial--*' res:~/cache/ ~/proj/emacsconf/2025/cache/ --exclude .git
- rsync -avzue ssh --exclude 'partial--*' ~/proj/emacsconf/2025/cache/ res:~/cache/ $* --exclude .git
+ rsync -avzue ssh --exclude ffmpeg2pass* --exclude 'partial--*' ~/proj/emacsconf/2025/cache/ res:~/cache/ $* --exclude .git
+ rsync -avzue ssh --exclude ffmpeg2pass* --exclude 'partial--*' ~/proj/emacsconf/2025/cache/ orga@media:/var/www/media.emacsconf.org/2025/backstage/ $* --exclude .git
ssh orga@media "cd ~/backstage; chmod ugo+r -- *"
if [ ! -z "$CONF_PUBLIC" ]; then
echo "Updating public media"
- rsync -avzue ssh --exclude \*--original\* --exclude \*--reencoded\* ~/proj/emacsconf/2025/cache/ orga@media:/var/www/media.emacsconf.org/2025/ 3--exclude .git
+ rsync -avzue ssh --exclude \*--original\* --exclude ffmpeg2pass* --exclude \*--reencoded\* ~/proj/emacsconf/2025/cache/ orga@media:/var/www/media.emacsconf.org/2025/ 3--exclude .git
fi
rsync -avzue ssh ~/proj/emacsconf/2025/assets/ res:~/current/assets/
@@ -823,7 +881,7 @@ When a talk comes in:
9. `emacsconf-publish-backstage-index`
-<a id="orgeaf5478"></a>
+<a id="org7f83d48"></a>
## Wiki
@@ -990,6 +1048,30 @@ icecast is on live0.emacsconf.org and can be restarted with `/etc/init.d/emacsco
so that the year is updated in the configuration.
+<a id="org09cd092"></a>
+
+## DONE Mumble
+
+Success:
+
+- [X] You can connect to Mumble on your preferred device(s).
+- [X] You can broadcast to the emacsconf-gen channel.
+- [X] You can broadcast to the emacsconf-dev channel.
+
+mumble.emacsconf.org is hosted on front. Start it with:
+
+ sudo /etc/init.d/mumble-server start
+
+It listens on port 64738
+
+Logs are in `/var/log/mumble-server`.
+
+To add a new account:
+
+- After they log in, register their user.
+- Right-click on the server name. Edit - Groups. Add them to the org group.
+
+
<a id="general-infrastructure-shell-scripts"></a>
## Shell scripts
@@ -1106,15 +1188,20 @@ Other files might also have been uploaded by the speaker, such as slides or note
<a id="general-infrastructure-irc-web-client"></a>
-## IRC web client
+## Thelounge IRC web client
Success:
+- [X] When the service is not running, the error page is displayed
- [X] You can join from <https://chat.emacsconf.org>
- [X] You can join from <https://live.emacsconf.org> and the channels end up as the latest ones
+ansible: lounge tag
+
On front:
-sudo -u thelounge node /usr/bin/thelounge start
+
+- To start: sudo systemctl start thelounge
+- To stop: sudo systemctl stop thelounge
### DONE Ask libera.chat to increase IRC limits
@@ -1157,14 +1244,13 @@ Start of year:
2. `ansible-playbook -i inventory.yml prod-playbook.yml --tags media`
3. Generate the index with `emacsconf-publish-update-media`
-Confirm by setting a submitted talk to `PLAYING` and testing with
-<elisp:emacsconf-publish-media-files-on-change> . The public media
+Confirm by using `talk sat-open PLAYING` on res. The public media
directory should have the files and the entry should be in the index.
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 :tminustwo:
+### DONE 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`.
@@ -1173,14 +1259,31 @@ Switching it back to `TO_STREAM` and calling
You can generate the index with `emacsconf-publish-update-media`.
+<a id="orgc40bf50"></a>
+
+## Automated publishing to the media server
+
+`ansible-playbook -i inventory.yml prod-playbook.yml --tags publish,edit`
+
+On orga@res, in the screen session with the emacs server, make sure emacsconf-year and emacsconf-cache-dir refer to the current ones.
+
+
<a id="general-infrastructure-automated-irc-announcements"></a>
-## Automated IRC announcements
+## DONE Automated IRC announcements
Success:
- [ ] When a talk starts playing, it is announced in the relevant channel
+How it works: On res:
+
+/usr/local/bin/handle-session sudos to the orga user and calls the `/usr/local/bin/talk` shell script,
+
+You will need the private repository checked out to `orga/emacsconf-2025-private`, which is set up by the ansible playbook `publish` tag.
+
+This is by `/usr/local/bin/talk` on res, which connects to a running Emacs with emacsclient. Make sure the emacs thing has the right year.
+
<a id="bbb"></a>
@@ -1332,6 +1435,11 @@ Success:
- [X] You can /opall, /conftopic, and /broadcast
+<a id="orgc7d6d2a"></a>
+
+## Check test crontab
+
+
<a id="general-infrastructure-confirm-automated-irc-announcements-from-res"></a>
## TODO Confirm automated IRC announcements from res
@@ -1339,6 +1447,8 @@ Success:
Success:
- A test schedule can generate announcements.
+
+ See C-u M-x emacsconf-stream-crontabs
<a id="general-infrastructure-low-res-stream"></a>
@@ -1419,17 +1529,27 @@ Need to have set up shifts first.
use `ansible-playbook -i inventory.yml prod-playbook.yml --tags restream` to set up
-<a id="orgd102e79"></a>
+<a id="orgdc911e7"></a>
## Restream to Toobnix
-### STARTED Set up Toobnix restreaming events
+### DONE Set up Toobnix restreaming events
1. <https://toobnix.org>, Publish, Permanent/recurring live
2. emacsconf-stream-toobnix-copy-livestream-description
+<a id="org692ea98"></a>
+
+## i3 window manager
+
+termit is the terminal
+
+- M-d: launcher
+- M-1, M-2: change workspace
+
+
<a id="other"></a>
# Other process notes
@@ -1443,9 +1563,20 @@ Need to have set up shifts first.
docker exec -it greenlight-v2 bundle exec rake user:create["USERNAME","EMAIL","PASSWORD","user"]
-<a id="other-process-notes-when-a-talk-is-added-after-the-schedule-has-already-been-drafted"></a>
+<a id="org5f8f6b0"></a>
+
+## Schedule changes
+
+In general:
-## When a talk is added after the schedule has already been drafted
+ (emacsconf-schedule-update-from-info)
+ (emacsconf-update-schedule)
+ (emacsconf-publish-watch-pages)
+ (emacsconf-publish-talks-json-to-files)
+ (emacsconf-publish-info-pages)
+
+
+### 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
@@ -1463,21 +1594,23 @@ Need to have set up shifts first.
- [ ] Record the intro
-<a id="cancel-talk"></a>
+### When a talk is cancelled
-## When a talk is cancelled
+<elisp:emacsconf-cancel-talk>
1. Update the status to CANCELLED. Update that specific talk with <elisp:emacsconf-publish-info-pages-for-talk>.
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> 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. Resync the cache directory.
-6. Consider updating the screenshots for sat-open and sun-open.
+3. Update the published schedule with <elisp:emacsconf-update-schedule>.
+
+Manual steps:
+1. Push the wiki.
+2. Regenerate the intros (before, after). <elisp:emacsconf-stream-generate-in-between-pages>, then use <elisp:subed-record-compile-video> in the intros file.
+3. Resync the cache directory.
+4. Consider updating the screenshots for sat-open and sun-open.
-<a id="other-process-notes-when-a-talk-changes-title"></a>
-## When a talk changes title
+### When a talk changes title
1. Update the title in conf.org.
2. Delete the FILE\_PREFIX property.
diff --git a/organizers-notebook/index.org b/organizers-notebook/index.org
index 5c242418..0488a9b3 100644
--- a/organizers-notebook/index.org
+++ b/organizers-notebook/index.org
@@ -484,13 +484,65 @@ SCHEDULED: <2025-12-02 Tue>
- [X] Set ~emacsconf-publishing-phase~ to ~conference~.
- [X] Set emacsconf-publish-include-pads to t.
- [X] Republish the schedule and the info pages.
-- [ ] Update the conf.org and the wiki on res. (~/emacsconf-2025-private, ~/emacsconf-wiki)
-- [ ] Resize the BBB server to production levels with bbb-prod.
-- [ ] Send check-in details and last-minute schedule updates.
-- [ ] Start thelounge on front0: systemctl start thelounge.
-- [ ] Confirm I can connect to Mumble.
-- [ ] Start the VNC servers. Confirm that we can stream.
-- [ ] Confirm that I can restream to Toobnix.
+- [X] Update the conf.org and the wiki on res. (~/emacsconf-2025-private, ~/emacsconf-wiki)
+- [X] Resize the BBB server to production levels with bbb-prod: 16 GB $0.1440/hour 6 CPUs
+- [X] Send check-in details and last-minute schedule updates.
+- [X] Start thelounge on front0: systemctl start thelounge.
+- [X] Confirm I can connect to Mumble.
+- [X] Resize front0 to production: front0 shared Linode 32GB 8 CPUs 640GB $0.2880/hour
+- [X] Resize live0 to production: shared Linode 64GB 16 CPUs $0.5760/hour
+- [X] Start the VNC servers.
+ #+begin_src sh :tangle emacsconf-set-up-tracks.sh
+ #!/bin/bash
+ # SSH to both
+ cd ~/proj/emacsconf/emacsconf-ansible
+
+ # Gen
+ export TRACK=gen; TRACK_PORT=5905; export SSH_PORT=46668
+ ssh emacsconf-$TRACK@res.emacsconf.org -p $SSH_PORT /home/emacsconf-$TRACK/bin/track-vnc
+ sleep 5
+ ssh emacsconf-$TRACK@res.emacsconf.org -N -L $TRACK_PORT:127.0.0.1:$TRACK_PORT -p $SSH_PORT &
+ xvncviewer 127.0.0.1:$TRACK_PORT -shared -geometry 1280x720 -passwd vnc-passwd-$TRACK &
+
+ # Dev
+ export TRACK=dev; export TRACK_PORT=5906; export SSH_PORT=46668
+ ssh emacsconf-$TRACK@res.emacsconf.org -p $SSH_PORT /home/emacsconf-$TRACK/bin/track-vnc
+ sleep 5
+ ssh emacsconf-$TRACK@res.emacsconf.org -N -L $TRACK_PORT:127.0.0.1:$TRACK_PORT -p $SSH_PORT &
+ xvncviewer 127.0.0.1:$TRACK_PORT -shared -geometry 1280x720 -passwd vnc-passwd-$TRACK &
+ #+end_src
+- [X] Confirm that we can use "Start Recording" to stream to gen.
+ - [X] play-with-intro sat-open
+ - [X] https://live.emacsconf.org/2025/watch/gen/
+ - [X] mpv https://live0.emacsconf.org/gen.webm
+ - [X] play-with-intro sun-open (to check the overlays)
+ - [X] https://live.emacsconf.org/2025/watch/gen-480p/
+ - [X] mpv https://live0.emacsconf.org/gen-480p.webm
+- [X] Confirm that we can stream to dev.
+ - [X] play-with-intro sat-open
+ - [X] https://live.emacsconf.org/2025/watch/dev/
+ - [X] mpv https://live0.emacsconf.org/dev.webm
+ - [X] play-with-intro sun-open (to check the overlays)
+ - [X] https://live.emacsconf.org/2025/watch/dev-480p/
+ - [X] mpv https://live0.emacsconf.org/dev-480p.webm
+- [X] Confirm that I can restream to YouTube.
+ - Settings - Stream, paste in the RTMP key for the relevant event, then Start Streaming.
+ - [X] gen
+ - [X] dev
+- [X] Confirm that I can restream to Toobnix
+ - [X] live0: restream-gen-toobnix
+ - [X] live0: restream-dev-toobnix
+- [X] Check automated announcements and publishing
+ - [X] orga@res: talk sat-open TO_STREAM
+ - [X] https://emacsconf.org/2025/talks/sat-open/ doesn't have video
+ - [X] https://media.emacsconf.org/2025 doesn't have it
+ - orga@res: talk sat-open PLAYING
+ - [X] https://emacsconf.org/2025/talks/sat-open/ has video and transcript
+ - [X] https://media.emacsconf.org/2025 has talk files
+ - [X] IRC announcement in #emacsconf-gen
+- [X] Confirm icecast stats are available: http://live0.emacsconf.org/admin/stats (username: admin, password is in prod-vars.yml)
+- [X] Generate and check all the crontabs elisp:emacsconf-stream-crontabs
+- [X] Generate all the hyperlists
** During the conference
:PROPERTIES:
@@ -514,6 +566,8 @@ dev: 226 peak + 79 peak lowres
Sunday:
gen: 89 peak + 10 peak lowres
+http://live0.emacsconf.org/admin/stats (username: admin, password is in prod-vars.yml)
+
meet peak 409% CPU (100% is 1 CPU), average 69.4%
front peak 70.66% CPU (100% is 1 CPU)
live peak 552% CPU (100% is 1 CPU) average 144%
@@ -1041,7 +1095,13 @@ sudo /etc/init.d/mumble-server start
It listens on port 64738
-Logs are in ~/var/log/mumble-server~
+Logs are in ~/var/log/mumble-server~.
+
+To add a new account:
+
+- After they log in, register their user.
+- Right-click on the server name. Edit - Groups. Add them to the org group.
+
** Shell scripts
:PROPERTIES:
:CUSTOM_ID: general-infrastructure-shell-scripts
@@ -1138,7 +1198,6 @@ The pad is at front0.emacsconf.org
Non-JS way to get plain text or HTML of a pad: ex:
- https://pad.emacsconf.org/orgmeetup/export/txt
- https://pad.emacsconf.org/orgmeetup/export/html
-
** Publishing media to the server and to the wiki
:PROPERTIES:
:CUSTOM_ID: media
@@ -1477,7 +1536,8 @@ Need to have set up shifts first.
use =ansible-playbook -i inventory.yml prod-playbook.yml --tags restream= to set up
** Restream to Toobnix
-*** STARTED Set up Toobnix restreaming events
+*** DONE Set up Toobnix restreaming events
+CLOSED: [2025-12-05 Fri 18:54]
:PROPERTIES:
:Effort: 0:30
:END:
@@ -1487,6 +1547,12 @@ CLOCK: [2025-11-22 Sat 17:42]--[2025-11-23 Sun 12:15] => 18:33
1. https://toobnix.org, Publish, Permanent/recurring live
2. emacsconf-stream-toobnix-copy-livestream-description
+** i3 window manager
+
+termit is the terminal
+
+- M-d: launcher
+- M-1, M-2: change workspace
* Other process notes
:PROPERTIES:
:CUSTOM_ID: other