summaryrefslogtreecommitdiffstats
path: root/organizers-notebook
diff options
context:
space:
mode:
authorSacha Chua <sacha@sachachua.com>2025-11-22 12:03:06 -0500
committerSacha Chua <sacha@sachachua.com>2025-11-22 12:03:06 -0500
commit165204757ff68a0efcbf911a6bea7a8b88f496f4 (patch)
tree91b48e26d6b28941541d038823c5006593815971 /organizers-notebook
parenta8c86ded9ac02c1ccd96d69f168e0cdbcc4cf8fa (diff)
downloademacsconf-wiki-165204757ff68a0efcbf911a6bea7a8b88f496f4.tar.xz
emacsconf-wiki-165204757ff68a0efcbf911a6bea7a8b88f496f4.zip
Cancel claude-code, weights
Diffstat (limited to '')
-rw-r--r--organizers-notebook/index.org264
1 files changed, 168 insertions, 96 deletions
diff --git a/organizers-notebook/index.org b/organizers-notebook/index.org
index 04a22977..541d6571 100644
--- a/organizers-notebook/index.org
+++ b/organizers-notebook/index.org
@@ -308,6 +308,9 @@ After the CFP ends:
- Create draft-schedule section in the public organizers notebook for the year
- Add missing items to plan
*** TODO Send draft schedule to speakers :email:
+:PROPERTIES:
+:CUSTOM_ID: phases-and-lessons-learned-draft-schedule-send-draft-schedule-to-speakers
+:END:
1. Evaluate the draft schedule we want to use.
2. ~emacsconf-schedule-update-from-info~
@@ -324,7 +327,11 @@ See [[emacsconf-ansible:README.org]].
Lessons learned:
- Next year, let's get upload.emacsconf.org in place as the domain name so that people don't try to FTP files to it.
-*** TODO Send backstage and upload instructions :email:
+*** DONE Send backstage and upload instructions :email:
+CLOSED: [2025-11-12 Wed 13:48]
+:PROPERTIES:
+:CUSTOM_ID: phases-and-lessons-learned-set-up-backstage-and-upload-send-backstage-and-upload-instructions
+:END:
** Post the schedule
:PROPERTIES:
:CUSTOM_ID: phases-and-lessons-learned-post-the-schedule
@@ -360,7 +367,7 @@ Process:
1. update-cache on my computer.
2. elisp:emacsconf-publish-cache-video-data or elisp:emacsconf-cache-all-video-data
3. elisp:emacsconf-publish-backstage-index
-** Generate assets
+** TODO Generate assets
:PROPERTIES:
:CUSTOM_ID: phases-and-lessons-learned-generate-assets
:END:
@@ -377,9 +384,37 @@ Process:
- In an empty VTT file, elisp:emacsconf-subed-intro-subtitles
- Record the audio and get captions
- Splice together into a file that will be processed with subed-record-compile-video.
+*** TODO Test videos
+:PROPERTIES:
+:CUSTOM_ID: phases-and-lessons-learned-generate-assets-test-videos
+:END:
+elisp:emacsconf-stream-generate-test-videos
** Record pronunciations
-*** TODO Record pronunciations
+:PROPERTIES:
+:CUSTOM_ID: phases-and-lessons-learned-record-pronunciations
+:END:
+*** STARTED Record pronunciations
+:PROPERTIES:
+:CUSTOM_ID: phases-and-lessons-learned-record-pronunciations-record-pronunciations
+:Effort: 2:00
+:END:
+:LOGBOOK:
+CLOCK: [2025-11-21 Fri 12:58]--[2025-11-21 Fri 15:10] => 2:12
+:END:
+
+1. mkdir -p ~/proj/emacsconf/2025/assets/intros ~/proj/emacsconf/2025/assets/in-between
+2. cp ~/proj/emacsconf/2024/assets/in-between/template.svg ~/proj/emacsconf/2025/assets/in-between/template.svg
+3. elisp:emacsconf-stream-generate-in-between-pages
+4. Create ~/proj/emacsconf/2025/assets/intros/intro.vtt
+5. elisp:emacsconf-subed-intro-subtitles
+6. Record the audio, possibly with subed-record, left, and right.
+7. Split the lines for nicer subtitles.
+8. Use elisp:subed-record-compile
+
*** TODO E-mail speakers asking them to confirm the pronunciations
+:PROPERTIES:
+:CUSTOM_ID: phases-and-lessons-learned-record-pronunciations-e-mail-speakers-asking-them-to-confirm-the-pronunciations
+:END:
** Prepare the infrastructure
:PROPERTIES:
:CUSTOM_ID: phases-and-lessons-learned-prepare-the-infrastructure
@@ -418,6 +453,16 @@ Onboarding:
:END:
elisp:emacsconf-pad-prepopulate-shift-hyperlists
+*** STARTED Check in with speakers for cancellations, adjustments
+:PROPERTIES:
+:Effort: 1:00
+:END:
+:LOGBOOK:
+CLOCK: [2025-11-21 Fri 11:12]--[2025-11-21 Fri 11:14] => 0:02
+:END:
+
+emacsconf-mail-intro-to-all
+
*** TODO Send check-in details, schedule update, etc. :email:
:PROPERTIES:
:CREATED: [2024-11-27 Wed 17:34]
@@ -776,16 +821,25 @@ When a talk comes in:
8. ~emacsconf-publish-cache-video-data~ to save the file size and length.
9. ~emacsconf-publish-backstage-index~
-** Icecast
+** DONE Icecast
+CLOSED: [2025-11-15 Sat 15:05]
:PROPERTIES:
:CUSTOM_ID: icecast
+:Effort: 0:30
+:END:
+:LOGBOOK:
+- Note taken on [2025-11-15 Sat 15:05] \\
+ okay for 2025
+CLOCK: [2025-11-15 Sat 14:43]--[2025-11-15 Sat 15:05] => 0:22
:END:
-Success: You can use [[#obs-instructions][OBS+VNC to record]], and the results can be viewed by mpv.
+Success: You can send a stream to Icecast and the results can be viewed by mpv.
- [X] Gen
- [X] Dev
Also, recordings are available in /data.
+See also: [[#obs-instructions][Use OBS+VNC to record]]
+
New year:
1. Reprovision with
@@ -797,7 +851,7 @@ New year:
Start it again with ~/etc/init.d/emacsconf start~
3. To test, you can use FFmpeg like this for the gen stream:
#+begin_src sh
- ffmpeg -y -f lavfi -i testsrc=size=1280x720:rate=10 -i background-music.opus \
+ffmpeg -y -f lavfi -i testsrc=size=1280x720:rate=10 -i background-music.opus \
-c:v libvpx -b:v 500K -crf 25 -b:a 128k \
-content_type video/webm "icecast://emacsconf:$EMACSCONF_ICECAST_SOURCE_PASSWORD@live0.emacsconf.org:8001/gen.webm"
#+end_src
@@ -810,9 +864,18 @@ New year:
and then view it with
#+begin_src sh
mpv https://live0.emacsconf.org/gen.webm
+ mpv https://live0.emacsconf.org/dev.webm
#+end_src
+*** Cooldown
+:PROPERTIES:
+:CUSTOM_ID: general-infrastructure-icecast-cooldown
+:END:
+
+ssh live0.emacsconf.org
+sudo /etc/init.d/emacsconf stop
-** Watching pages
+** DONE Watching pages
+CLOSED: [2025-11-15 Sat 14:57]
:PROPERTIES:
:CUSTOM_ID: watch
:END:
@@ -830,10 +893,15 @@ New year:
Set up test streams (see ffmpeg instructions from [[#icecast][Icecast]]) and then:
-** VNC
+** DONE VNC
+CLOSED: [2025-11-15 Sat 15:02]
:PROPERTIES:
:CUSTOM_ID: vnc
:END:
+:LOGBOOK:
+- Note taken on [2025-11-15 Sat 15:02] \\
+ Okay for 2025
+:END:
We use VNC to connect to the X servers on res.emacsconf.org so that we can stream from it.
@@ -893,24 +961,38 @@ and then connect with:
#+begin_src sh :eval no
xvncviewer 127.0.0.1:$TRACK_PORT -shared -geometry 1280x720 -passwd vnc-passwd-$TRACK &
#+end_src
+*** Cooldown
+:PROPERTIES:
+:CUSTOM_ID: general-infrastructure-vnc-cooldown
+:END:
-** Streaming with OBS
+ssh sachac@res
+sudo killall Xtigervnc
+
+** DONE Streaming with OBS
+CLOSED: [2025-11-15 Sat 15:04]
:PROPERTIES:
:CUSTOM_ID: obs
:END:
+:LOGBOOK:
+- Note taken on [2025-11-15 Sat 15:04] \\
+ Okay for 2025
+:END:
-Success: Confirm that you can stream
+Success: You can use [[#obs-instructions][OBS+VNC to record]], and the results can be viewed by mpv.
- [X] gen
- [X] dev
New year: reprovision with
#+begin_src sh :eval no
-ansible-playbook -i inventory.yml prod-playbook.yml --tags obs
+ansible-playbook -i inventory.yml prod-playbook.yml --tags obs,stream
#+end_src
so that the year is updated in the shell scripts.
+icecast is on live0.emacsconf.org and can be restarted with =/etc/init.d/emacsconf restart=.
+
*** Instructions
:PROPERTIES:
:CUSTOM_ID: obs-instructions
@@ -926,24 +1008,9 @@ so that the year is updated in the shell scripts.
mpv https://live0.emacsconf.org/$TRACK.webm &
#+end_example
-*** Icecast
-:PROPERTIES:
-:CUSTOM_ID: icecast
-:END:
-
-Success: You can use [[#obs-instructions][OBS+VNC to record]], and the results can be viewed by mpv.
-- [ ] gen
-- [ ] dev
-
-New year: reprovision with
-
-#+begin_src sh :eval no
-ansible-playbook -i inventory.yml prod-playbook.yml --tags stream
-#+end_src
-
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=.
+
** Shell scripts
:PROPERTIES:
:CUSTOM_ID: general-infrastructure-shell-scripts
@@ -1002,17 +1069,18 @@ Success:
- [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
+
+*** DONE Ask libera.chat to increase IRC limits
+CLOSED: [2025-11-12 Wed 13:50]
+:PROPERTIES:
+:CUSTOM_ID: general-infrastructure-irc-web-client-ask-libera-chat-to-increase-irc-limits
+:END:
+
Remember to schedule a task to ask libera.chat to increase the number of users it will accept from chat.emacsconf.org to avoid connection exhaustion errors.
Message I've posted to support@libera.chat:
-Thank you for running libera.chat. We're looking forward to using IRC
-(#emacsconf-gen, #emacsconf-dev) for the discussions for the upcoming
-EmacsConf (Dec 7-8, https://emacsconf.org). In the past, we've needed to
-coordinate with Libera staff to increase the number of connections
-allowed from chat.emacsconf.org during conference days in order to avoid
-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?
+Thank you for running libera.chat. We're looking forward to using IRC (#emacsconf, #emacsconf-gen, #emacsconf-dev, #emacsconf-org) for the discussions for the upcoming EmacsConf (Dec 6-7, https://emacsconf.org). In the past, we've needed to coordinate with Libera staff to increase the number of connections allowed from chat.emacsconf.org during conference days in order to avoid 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?
** Etherpad
:PROPERTIES:
:CUSTOM_ID: general-infrastructure-etherpad
@@ -1089,6 +1157,7 @@ Sizes:
- dormant: 1 GB nanode
- testing: 4 core 8 GB shared CPU
- production: 8 core 16 GB dedicated CPU (roughly half CPU load for 107 simultaneous users, 2024)
+ - maybe 8 core 16 GB shared CPU next?
*** Installing BigBlueButton
:PROPERTIES:
@@ -1134,82 +1203,54 @@ BBB says sharing system audio works only if you use Chrome on Mac OS X or Micros
Related: https://github.com/bigbluebutton/bigbluebutton/issues/8632
-
-*** Creating talk BBB rooms
+*** DONE Create meeting rooms for each speaker
+CLOSED: [2025-11-12 Wed 13:51]
:PROPERTIES:
:CUSTOM_ID: general-infrastructure-bigbluebutton-creating-talk-bbb-rooms
:END:
-- =docker exec -it greenlight-v3 /bin/bash=
-- =bundle exec rails console=
-- =user_id = User.find_by_email("sacha@sachachua.com").id=
+#+begin_src sh :eval no
+docker exec -it greenlight-v3 /bin/bash -c "bundle exec rails console"
+#+end_src
-#+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)))
- "")
+#+begin_src ruby :eval no
+user_id = User.find_by_email("emacsconf@sachachua.com").id
#+end_src
-- elisp:emacsconf-publish-bbb-static-redirects
+1. elisp:emacsconf-bbb-create-rooms
+2. elisp:emacsconf-bbb-load-rooms: set the ROOM properties.
+3. elisp:emacsconf-publish-bbb-static-redirects
-Print out the room IDs with
+Print out the room IDs with:
-#+begin_src ruby
+#+begin_src ruby :eval no
Room.all.each { |x| puts x.friendly_id + " " + x.name }; nil
#+end_src
It's possible to change the friendly_id and then use ~x.save!~.
-*** Setting up moderator access codes
+*** DONE Set up moderator access codes
+CLOSED: [2025-11-12 Wed 13:51]
:PROPERTIES:
:CUSTOM_ID: general-infrastructure-bigbluebutton-setting-up-moderator-access-codes
:END:
-#+begin_src emacs-lisp
-(dolist (talk (seq-filter (lambda (o)
- (and (plist-get o :bbb-room)
- (not (plist-get o :bbb-mod-code))))
- (emacsconf-publish-prepare-for-display (emacsconf-get-talk-info))))
- (spookfox-js-injection-eval-in-active-tab
- (format "window.location.href = \"%s\""
- (replace-regexp-in-string "/join" "" (plist-get talk :bbb-room)))
- t)
- (sleep-for 3)
- (spookfox-js-injection-eval-in-active-tab
- "document.querySelector('button[data-rr-ui-event-key=\"settings\"]').click()" t)
- (spookfox-js-injection-eval-in-active-tab
- "document.querySelector('input#glAnyoneCanStart').checked = true")
- (spookfox-js-injection-eval-in-active-tab
- "document.querySelector('input#muteOnStart').checked = true")
- (spookfox-js-injection-eval-in-active-tab
- "document.querySelectorAll('.border-end button')[2].click()" t)
- (let ((code (spookfox-js-injection-eval-in-active-tab
- "document.querySelector('.access-code-input input').value" t)))
- (message "Setting %s to %s" (plist-get talk :slug) code)
- (emacsconf-set-property-from-slug
- talk "BBB_MOD_CODE"
- code)
- (sit-for 2)))
-#+end_src
+- elisp:emacsconf-bbb-spookfox-set-moderator-codes
+- elisp:emacsconf-bbb-spookfox-confirm-settings
-#+begin_src emacs-lisp
-(dolist (talk (seq-filter (lambda (o)
- (plist-get o :bbb-room))
- (emacsconf-publish-prepare-for-display (emacsconf-get-talk-info))))
- (spookfox-js-injection-eval-in-active-tab
- (format "window.location.href = \"%s\""
- (replace-regexp-in-string "/join" "" (plist-get talk :bbb-room)))
- t)
- (sleep-for 3)
- (spookfox-js-injection-eval-in-active-tab
- "document.querySelector('button[data-rr-ui-event-key=\"settings\"]').click()" t)
- (sleep-for 3))
-#+end_src
+Then you can use elisp:emacsconf-mail-checkin-instructions-for-attending-speakers
+or elisp:emacsconf-mail-checkin-instructions-to-all to send the info.
+
+*** Processing BBB videos
+:PROPERTIES:
+:CUSTOM_ID: general-infrastructure-bigbluebutton-processing-bbb-videos
+:END:
+
+~bbb-record --list~ shows all the recordings. You can use ~bbb-record --rebuild~ to regenerate the meeting, and ~bbb-record --watch~ to monitor progress. Presentation is a web-based interface, video is a single video file that contains the webcam, the screenshare, and the audio.
+
+If you don't see the video format, doublecheck that [[#general-infrastructure-bigbluebutton-installing-bigbluebutton][the video format is enabled]].
+
+bbb-record seems to call ~ruby /usr/local/bigbluebutton/core/scripts/process/video.rb -m ID~, which might be a useful backup.
*** Backing up BBB :backup:
:PROPERTIES:
@@ -1221,15 +1262,22 @@ rsync -avze ssh root@bbb:/var/bigbluebutton/ bigbluebutton/
ssh root@bbb 'tar zcvf - /var/bigbluebutton /etc/bigbluebutton /root/greenlight-v3 /usr/local/bigbluebutton /usr/share/bbb-web' > bbb-backup-$(date "+%Y-%m-%d").tar.gz
ssh root@bbb 'dd if=/dev/sda bs=5M ' | dd of=bbb-img-$(date "+%Y-%m-%d").img status=progress
+*** Scaling BBB up and down
+:PROPERTIES:
+:CUSTOM_ID: general-infrastructure-bigbluebutton-scaling-bbb-up-and-down
+:END:
+
+[[https://sachachua.com/blog/2025/01/scaling-a-bigbluebutton-server-down-to-a-1-gb-node-between-uses/][Scaling a BigBlueButton server down to a 1 GB node between uses]]
-*** Spinning BBB up again
+When the server is downscaled, ~/etc/nginx/sites-backup~ configures the Nginx.
+The web root is ~/var/www/bigbluebutton-default/assets~, and the page is ~/var/www/bigbluebutton-default/assets/backup/index.html~.
+
+*** Spinning BBB up again from scratch
:PROPERTIES:
:CUSTOM_ID: general-infrastructure-bigbluebutton-spinning-bbb-up-again
:END:
-[2025-01-22 Wed] ... actually, this ran into some issues with the certificate, so I'm just going to do a reinstall.
-
-Previous notes
+Previous notes:
1. Create a Nanode.
2. Update the DNS for bbb.emacsverse.org with its IP address. (dns.he.net)
@@ -1255,7 +1303,9 @@ Resources:
- https://www.linode.com/community/questions/20386/how-do-i-ssh-to-linode-from-the-finnix-boot-in-order-to-copy-my-local-vm-over-to
- https://github.com/bigbluebutton/bigbluebutton/issues/9485
-** Manual IRC announcements
+
+
+** TODO Manual IRC announcements
:PROPERTIES:
:CUSTOM_ID: general-infrastructure-manual-irc-announcements
:END:
@@ -1263,6 +1313,14 @@ Resources:
Success:
- [X] You can /opall, /conftopic, and /broadcast
+** TODO Confirm automated IRC announcements from res
+:PROPERTIES:
+:CUSTOM_ID: general-infrastructure-confirm-automated-irc-announcements-from-res
+:END:
+
+Success:
+
+- A test schedule can generate announcements.
** Low-res stream
:PROPERTIES:
@@ -1329,7 +1387,21 @@ SCHEDULED: <2024-11-30 Sat>
:PROPERTIES:
:CUSTOM_ID: general-infrastructure-restream-to-youtube
:END:
+*** TODO Set up YouTube restreaming events
+:PROPERTIES:
+:CUSTOM_ID: general-infrastructure-restream-to-youtube-set-up-youtube-restreaming-events
+:END:
+1. Switch to the EmacsConf account.
+2. Go to https://studio.youtube.com/channel/UCwuyodzTl_KdEKNuJmeo99A
+3. Create > Go live > Schedule stream.
+ - [ ] Gen - Sat AM
+ - [ ] Gen - Sat PM
+ - [ ] Dev - Sat AM
+ - [ ] Dev - Sat PM
+ - [ ] Gen - Sun AM
+ - [ ] Gen - Sun PM
+ - [ ] Test
* Other process notes
:PROPERTIES:
:CUSTOM_ID: other