summaryrefslogtreecommitdiffstats
path: root/organizers-notebook
diff options
context:
space:
mode:
Diffstat (limited to 'organizers-notebook')
-rw-r--r--organizers-notebook/index.org388
1 files changed, 377 insertions, 11 deletions
diff --git a/organizers-notebook/index.org b/organizers-notebook/index.org
index fe8bcc89..60083412 100644
--- a/organizers-notebook/index.org
+++ b/organizers-notebook/index.org
@@ -41,26 +41,28 @@ Check in with core organizers from the previous year to see who's in.
This repository will store submissions, contact information, etc.
1. Create the repository on ~front0~. Ex:
- #+begin_src sh :eval no
+
+ #+begin_src sh
+ export YEAR=2025
sudo su - git
cd repositories
- mkdir emacsconf-2024-private.git
- cd emacsconf-2024-private.git
+ mkdir emacsconf-$YEAR-private.git
+ cd emacsconf-$YEAR-private.git
git init --bare
#+end_src
- 2. Edit ~gitolite-admin/config/gitolite-conf~. Add lines for the group and the repo. Commit and push. Ex:
+ 2. In the ~gitolite-admin~ repo, edit ~conf/gitolite-conf~. Add lines for the group and the repo. Commit and push. Ex:
#+begin_example
@emacsconf-2024-org = bandali sachac ...
repo emacsconf-2024-private
- RW+ = @admins @emacsconf-2024-org orga
+ RW+ = @admins @emacsconf-2024-org orga
#+end_example
- 3. Clone the private repository into the appropriate location. ~git clone git@git.emacsconf.org:emacsconf-2024-private private~
+ 3. Clone the private repository into the appropriate location. ~git clone git@git.emacsconf.org:emacsconf-2025-private private~
** Create the public organizers' notebook in the wiki
:PROPERTIES:
:CUSTOM_ID: starting-up-the-conference-planning-process-create-the-public-organizers-notebook-in-the-wiki
:END:
-Ex: 2024/organizers-notebook/index.org
+Ex: file:../2024/organizers-notebook/index.org
* Phases and lessons learned
:PROPERTIES:
:CUSTOM_ID: phases-and-lessons-learned
@@ -71,16 +73,100 @@ Ex: 2024/organizers-notebook/index.org
:END:
Create linked pages
-- [ ] year index
-- [ ] volunteer page
-- [ ] submit page
+- [ ] year index: ex: [[file:../2024.md]]
+- [ ] volunteer page: ex: [[file:../volunteer.md]]
+- [ ] submit page: ex: [[file:../2024/submit.md]]
*** How to mark pages as drafts
+:PROPERTIES:
+:CUSTOM_ID: phases-and-lessons-learned-draft-cfp-how-to-mark-pages-as-drafts
+:END:
+
+Have a Markdown export block with the following contents. Replace { and } with [ and ].
+
+#+begin_export md
+{{!template id=pagedraft}}
+#+end_export md
+
+*** Wiki template for year index
+:PROPERTIES:
+:CUSTOM_ID: phases-and-lessons-learned-draft-cfp-wiki-template-for-year-index
+:END:
+
+Replace { and } with [ and ].
+
+#+begin_example
+{{!meta copyright="Copyright © 2021-2022 Amin Bandali; 2023-2025 Sacha Chua"}}
+
+<p class="center">EmacsConf 2025 | Online Conference<br />
+<b>December 6 and 7, 2024 (Sat-Sun)</b></p>
+
+<p class="center">{{!img /i/emacsconf-logo1-256.png
+alt="EmacsConf logo"}}</p>
+
+<p class="center">{{<b>Call for Participation</b>|cfp}} | {{Ideas}} |
+{{Submit a Proposal|submit}} | {{Volunteer}} | {{Guidelines for Conduct|conduct}}</p>
+
+<p class="center">EmacsConf is the conference about the joy of
+<a href="https://www.gnu.org/software/emacs/">GNU Emacs</a> and
+Emacs Lisp.</p>
+
+We are busy putting things together for EmacsConf 2025, and we would
+love to have *your* help to make EmacsConf 2025 amazing, much like the
+previous EmacsConfs. See our {{**Call for Participation**|cfp}}, get
+involved, and help spread the word!
+
+We are holding EmacsConf 2025 as an online conference again this year.
+We remain fully committed to freedom, and we will continue using our
+infrastructure and streaming setup consisting entirely of {free
+software}{freesw}, much like previous EmacsConf conferences.
+
+For general EmacsConf discussions, join the
+{emacsconf-discuss}(https://lists.gnu.org/mailman/listinfo/emacsconf-discuss)
+mailing list. For discussions related to organizing EmacsConf, join
+the
+{emacsconf-org}(https://lists.gnu.org/mailman/listinfo/emacsconf-org)
+mailing list. You can email us publicly at
+<mailto:emacsconf-org@gnu.org> or privately at
+<mailto:emacsconf-org-private@gnu.org>.
+
+Come hang out with us in the `#emacsconf` channel on `irc.libera.chat`
+({Libera.Chat}{libera} IRC network). You can join the chat using
+{your favourite IRC client}{libera-emacsconf}, or by visiting
+{chat.emacsconf.org}{chat} in your web browser.
+
+{freesw}: https://www.gnu.org/philosophy/free-sw.html
+{libera}: https://libera.chat
+{libera-emacsconf}: ircs://irc.libera.chat:6697/emacsconf
+{chat}: https://chat.emacsconf.org
+#+end_example
-Put inside double square brackets: =!template id=pagedraft=
*** Previous years
+:PROPERTIES:
+:CUSTOM_ID: phases-and-lessons-learned-draft-cfp-previous-years
+:END:
[[file:~/proj/emacsconf/wiki/2023/cfp.org][2023]]
+*** Update dates
+:PROPERTIES:
+:CUSTOM_ID: phases-and-lessons-learned-draft-cfp-update-dates
+:END:
+
+[[file:~/proj/emacsconf/lisp/emacsconf.el]]
+[[file:~/proj/emacsconf/lisp/emacsconf-erc.el]]
+
+*** Update the IRC topic
+:PROPERTIES:
+:CUSTOM_ID: phases-and-lessons-learned-draft-cfp-update-the-irc-topic
+:END:
+
+#+begin_src emacs-lisp
+(erc-cmd-OPALL)
+(erc-cmd-CONFTOPIC (emacsconf-replace-plist-in-string
+ `(:year ,emacsconf-year :cfp-deadline ,emacsconf-cfp-deadline)
+ "Getting ready for EmacsConf ${year}! Call for proposals: https://emacsconf.org/${year}/cfp by ${cfp-deadline}, volunteer: https://emacsconf.org/volunteer/"))
+(erc-cmd-DEOPALL)
+#+end_src
*** Lessons learned
:PROPERTIES:
@@ -121,11 +207,17 @@ Put inside double square brackets: =!template id=pagedraft=
European organizers and volunteers, though.
- Put the speaker introduction right after the talk description for easier web page copying.
** Announce
+:PROPERTIES:
+:CUSTOM_ID: phases-and-lessons-learned-announce
+:END:
- Post CFP to emacsconf-discuss, reddit.com/r/emacs, and in Emacs News
- Submit to https://foss.events/
*** Promote the conference
+:PROPERTIES:
+:CUSTOM_ID: phases-and-lessons-learned-announce-promote-the-conference
+:END:
Submit to https://foss.events/
@@ -143,6 +235,9 @@ happens and also mention to them when videos are
available to spark more interest.
** Process proposals
+:PROPERTIES:
+:CUSTOM_ID: phases-and-lessons-learned-process-proposals
+:END:
1. In the private repository, create a conf.org.
2. Set ~emacsconf-org-file~ to its location.
@@ -170,6 +265,9 @@ When proposals come in:
TRACK, TIMEZONE, CATEGORY, DATE_SUBMITTED,
PUBLIC_EMAIL
** Accept proposals
+:PROPERTIES:
+:CUSTOM_ID: phases-and-lessons-learned-accept-proposals
+:END:
Setup:
@@ -197,6 +295,9 @@ For each talk:
- Create draft-schedule section in the public organizers notebook for the year
- Add missing items to plan
** Set up backstage and upload
+:PROPERTIES:
+:CUSTOM_ID: phases-and-lessons-learned-set-up-backstage-and-upload
+:END:
See [[emacsconf-ansible:README.org]].
@@ -205,6 +306,9 @@ 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.
** Post the schedule
+:PROPERTIES:
+:CUSTOM_ID: phases-and-lessons-learned-post-the-schedule
+:END:
- [[elisp:(setq emacsconf-publishing-phase 'schedule)]]
- elisp:emacsconf-publish-info-pages
@@ -212,6 +316,9 @@ Lessons learned:
- elisp:emacsconf-ical-generate-all
- Update talks.md to refer to watch.md as well
** Process uploaded files
+:PROPERTIES:
+:CUSTOM_ID: phases-and-lessons-learned-process-uploaded-files
+:END:
Basic setup:
@@ -233,14 +340,26 @@ Process:
2. elisp:emacsconf-publish-cache-video-data or elisp:emacsconf-cache-all-video-data
3. elisp:emacsconf-publish-backstage-index
** Generate assets
+:PROPERTIES:
+:CUSTOM_ID: phases-and-lessons-learned-generate-assets
+:END:
*** In-between pages
+:PROPERTIES:
+:CUSTOM_ID: phases-and-lessons-learned-generate-assets-in-between-pages
+:END:
- Make the $year/assets/in-between directory and copy the template.svg from the previous year.
- elisp:emacsconf-stream-generate-in-between-pages
*** Intros
+:PROPERTIES:
+:CUSTOM_ID: phases-and-lessons-learned-generate-assets-intros
+:END:
- 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.
** Prepare the infrastructure
+:PROPERTIES:
+:CUSTOM_ID: phases-and-lessons-learned-prepare-the-infrastructure
+:END:
Checklist:
@@ -260,6 +379,9 @@ Checklist:
- [ ] Icecast
** Getting ready for captions
+:PROPERTIES:
+:CUSTOM_ID: phases-and-lessons-learned-getting-ready-for-captions
+:END:
Onboarding:
@@ -276,13 +398,20 @@ elisp:emacsconf-pad-prepopulate-shift-hyperlists
SCHEDULED: <2024-11-30 Sat>
:PROPERTIES:
:CREATED: [2024-11-27 Wed 17:34]
+:CUSTOM_ID: phases-and-lessons-learned-getting-ready-for-the-conference-send-check-in-details-schedule-update-etc
:END:
*** Two days before the conference
+:PROPERTIES:
+:CUSTOM_ID: phases-and-lessons-learned-getting-ready-for-the-conference-two-days-before-the-conference
+:END:
Go through the :tminustwo: tags.
*** One day before the conference
+:PROPERTIES:
+:CUSTOM_ID: phases-and-lessons-learned-getting-ready-for-the-conference-one-day-before-the-conference
+:END:
Go through the :tminusone: tags.
@@ -295,7 +424,13 @@ Go through the :tminusone: tags.
:END:
elisp:emacsconf-pad-open-shift-hyperlist
** After the conference
+:PROPERTIES:
+:CUSTOM_ID: phases-and-lessons-learned-after-the-conference
+:END:
*** Capture stats
+:PROPERTIES:
+:CUSTOM_ID: phases-and-lessons-learned-after-the-conference-capture-stats
+:END:
2024 stats
Saturday:
@@ -312,13 +447,22 @@ res peak 81.54% total CPU (each OBS ~250%), mem 7GB used
so far we have used 1.2TB of transfer this month
*** Back up the data
+:PROPERTIES:
+:CUSTOM_ID: phases-and-lessons-learned-after-the-conference-back-up-the-data
+:END:
**** Icecast
+:PROPERTIES:
+:CUSTOM_ID: phases-and-lessons-learned-after-the-conference-back-up-the-data-icecast
+:END:
rsync -avze ssh live:'/data/emacsconf-2024-*' media:~/2024
rsync -avze ssh live:'/data/emacsconf-2024-*' .
**** BigBlueButton
+:PROPERTIES:
+:CUSTOM_ID: phases-and-lessons-learned-after-the-conference-back-up-the-data-bigbluebutton
+:END:
rsync -avze ssh root@bbb:/var/bigbluebutton/ bigbluebutton/
@@ -329,6 +473,9 @@ sudo losetup --find --show bbb-img-2024-12-08.img
sudo mount /dev/loop10 test
cd test
***** Reviewing all the Q&A durations and chat messages
+:PROPERTIES:
+:CUSTOM_ID: phases-and-lessons-learned-after-the-conference-back-up-the-data-bigbluebutton-reviewing-all-the-q-a-durations-and-chat-messages
+:END:
#+begin_src emacs-lisp :eval no
(let ((default-directory "/home/sacha/proj/emacsconf/2024/backups/bigbluebutton/published/video"))
(mapconcat
@@ -362,8 +509,14 @@ cd test
- Copy IRC logs to cache and therefore to backstage: (ex: 2024-12-07-emacsconf-gen.txt)
*** Combine the IRC logs and the pads, and add them to the wiki
+:PROPERTIES:
+:CUSTOM_ID: phases-and-lessons-learned-after-the-conference-combine-the-irc-logs-and-the-pads-and-add-them-to-the-wiki
+:END:
(did we e-mail the speakers before or after?)
*** Process the Q&A recordings and live presentations
+:PROPERTIES:
+:CUSTOM_ID: phases-and-lessons-learned-after-the-conference-process-the-q-a-recordings-and-live-presentations
+:END:
- Save answers videos as --answers.webm.
- From the pad file: emacsconf-extract-copy-pad-to-wiki
@@ -383,7 +536,13 @@ Also copy the YouTube comments and IRC comments
emacsconf-extract-irc-anonymize-log
*** Send thank-you emails to the speakers
+:PROPERTIES:
+:CUSTOM_ID: phases-and-lessons-learned-after-the-conference-send-thank-you-emails-to-the-speakers
+:END:
*** Notify emacs-discuss that the Q&A is up
+:PROPERTIES:
+:CUSTOM_ID: phases-and-lessons-learned-after-the-conference-notify-emacs-discuss-that-the-q-a-is-up
+:END:
https://lists.gnu.org/archive/html/emacsconf-discuss/2024-12/msg00000.html
@@ -413,25 +572,62 @@ Sacha
#+end_example
*** Write a report
+:PROPERTIES:
+:CUSTOM_ID: phases-and-lessons-learned-after-the-conference-write-a-report
+:END:
Sample: https://emacsconf.org/2023/report/
*** Send thank-you emails to the volunteers
+:PROPERTIES:
+:CUSTOM_ID: phases-and-lessons-learned-after-the-conference-send-thank-you-emails-to-the-volunteers
+:END:
emacsconf-mail-template-ask-volunteer-for-mailing-address
*** Process the lessons learned
+:PROPERTIES:
+:CUSTOM_ID: phases-and-lessons-learned-after-the-conference-process-the-lessons-learned
+:END:
* General infrastructure
+:PROPERTIES:
+:CUSTOM_ID: general-infrastructure
+:END:
** Linode instance sizes
+:PROPERTIES:
+:CUSTOM_ID: general-infrastructure-linode-instance-sizes
+:END:
*** Production
+:PROPERTIES:
+:CUSTOM_ID: general-infrastructure-linode-instance-sizes-production
+:END:
- front0 shared Linode 32GB
- live0 shared Linode 64GB
- meet Dedicated CPU 16GB
*** Dormant
+:PROPERTIES:
+:CUSTOM_ID: general-infrastructure-linode-instance-sizes-dormant
+:END:
Resize disk to 25GB, copying large files to media if needed
- nanode front0
- nanode live0
- delete meet after downloading all the recordings, or resize down to nanode
+** File uploads
+:PROPERTIES:
+:CUSTOM_ID: upload
+:END:
+
+[[https://github.com/psi-4ward/psitransfer][psi-4ward/psitransfer: Simple open source self-hosted file sharing solution]]
+Before the conference:
+
+1. Set ~upload_enabled~ to ~true~ in ~prod-vars.yml~ and run ~ansible-playbook -i inventory.yml prod-playbook.yml --tags upload~.
+2. Confirm that https://upload.emacsconf.org has the upload interface and works with the password.
+3. Use ~emacsconf-mail-template-to-all-groups~ and ~emacsconf-mail-upload-and-backstage-info~ to e-mail the upload information to all speakers.
+
+After the conference:
+
+1. Set ~upload_enabled~ to ~false~ in ~prod-vars.yml~ and run ~ansible-playbook -i inventory.yml prod-playbook.yml --tags upload~.
+2. Confirm that https://upload.emacsconf.org shows the in-between page.
** Icecast
:PROPERTIES:
@@ -602,6 +798,9 @@ 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
+:END:
Success: From the commandline, hosts can:
- [X] play just the intro: intro $SLUG
@@ -648,6 +847,9 @@ Explanation of files:
Other files might also have been uploaded by the speaker, such as slides or notes.
** IRC web client
+:PROPERTIES:
+:CUSTOM_ID: general-infrastructure-irc-web-client
+:END:
Success:
- [X] You can join from https://chat.emacsconf.org
@@ -665,11 +867,18 @@ 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
+:END:
Success:
- [X] pad.emacsconf.org redirects to this year's entry
- [X] Each talk has its own Etherpad
+
+Lessons learned:
+
+- After 2024: Added pronouns and pronunciation to the pad template since that's what the hosts will be looking at
** Publishing media to the server and to the wiki
:PROPERTIES:
:CUSTOM_ID: media
@@ -688,6 +897,9 @@ 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:
+:PROPERTIES:
+:CUSTOM_ID: general-infrastructure-publishing-media-to-the-server-and-to-the-wiki-switch-public-media-to-unprotected-root-before-the-conference
+:END:
1. Clear public media directory.
2. Set =media_protect_root= to false in Ansible =group_vars/all.yml=.
@@ -695,6 +907,9 @@ elisp:emacsconf-publish-media-files-on-change should remove it.
You can generate the index with =emacsconf-publish-update-media=.
** Automated IRC announcements
+:PROPERTIES:
+:CUSTOM_ID: general-infrastructure-automated-irc-announcements
+:END:
Success:
@@ -715,6 +930,40 @@ ssh root@bbb
cd greenlight-v3
docker compose restart
+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)
+
+*** Installing BigBlueButton
+:PROPERTIES:
+:CUSTOM_ID: general-infrastructure-bigbluebutton-installing-bigbluebutton
+:END:
+
+1. Create the instance.
+ - Linode 4core 8GB shared CPU
+ - Image: Ubuntu 22.04
+2. Update the DNS for bbb.emacsverse.org with its IP address.
+3. Download the BBB installer and make it executable.
+4. ufw allow 16384:32768/udp
+5. Run the BBB installer: ~./bbb-install.sh -v jammy-300 -s bbb.emacsverse.org -e emacsconf@sachachua.com -g~
+6. ~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]] .
+ - /usr/local/bigbluebutton/core/scripts/bigbluebutton.yml:
+ #+begin_example
+ steps:
+ archive: 'sanity'
+ sanity: 'captions'
+ captions:
+ - 'process:presentation'
+ - 'process:video'
+ 'process:presentation': 'publish:presentation'
+ 'process:video': 'publish:video'
+ #+end_example
+ - systemctl restart bbb-rap-resque-worker.service
+7. docker exec -it greenlight-v3 bundle exec rake admin:create['name','email','password']
+
+
*** System audio limitations
:PROPERTIES:
@@ -733,6 +982,9 @@ Related: https://github.com/bigbluebutton/bigbluebutton/issues/8632
*** Creating talk BBB rooms
+:PROPERTIES:
+:CUSTOM_ID: general-infrastructure-bigbluebutton-creating-talk-bbb-rooms
+:END:
- =docker exec -it greenlight-v3 /bin/bash=
- =bundle exec rails console=
@@ -757,8 +1009,58 @@ Print out the room IDs with
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
+: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
+
+#+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
+
*** Backing up BBB :backup:
+:PROPERTIES:
+:CUSTOM_ID: general-infrastructure-bigbluebutton-backing-up-bbb
+:END:
rsync -avze ssh root@bbb:/var/bigbluebutton/ bigbluebutton/
@@ -766,13 +1068,52 @@ ssh root@bbb 'tar zcvf - /var/bigbluebutton /etc/bigbluebutton /root/greenlight-
ssh root@bbb 'dd if=/dev/sda bs=5M ' | dd of=bbb-img-$(date "+%Y-%m-%d").img status=progress
+*** Spinning BBB up again
+: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
+
+1. Create a Nanode.
+2. Update the DNS for bbb.emacsverse.org with its IP address. (dns.he.net)
+3. Reboot into Rescue mode. In Lish:
+ #+begin_src sh :eval no
+ passwd # set interactively
+ sed -i -e 's/#PasswordAuthentication yes/PasswordAuthentication yes/g' /etc/ssh/sshd_config
+ echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config
+ service ssh start
+ #+end_src
+4. From the backup directory:
+ gunzip -c bbb-img-2024-12-08.img.gz | ssh root@bbb.emacsconf.org "dd of=/dev/sda bs=4M status=progress oflag=direct iflag=fullblock"
+5. After I resized to 4core 8GB RAM, I couldn't log in with SSH, so I used the Linode shell. ~sshd -t~ said no host keys available. Fix:
+ #+begin_src sh :eval no
+ ssh-keygen -A
+ service ssh --full-restart
+ #+end_src
+6. ./bbb-install.sh -v jammy-300 -s bbb.emacsverse.org -e emacsconf@sachachua.com
+
+Resources:
+
+- https://overto.eu/posts/gunzip-into-dd/
+- 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
+:PROPERTIES:
+:CUSTOM_ID: general-infrastructure-manual-irc-announcements
+:END:
Success:
- [X] You can /opall, /conftopic, and /broadcast
** Low-res stream
+:PROPERTIES:
+:CUSTOM_ID: general-infrastructure-low-res-stream
+:END:
Should be automatic, handled by Icecast
backup on live:
- /usr/local/bin/emacsconf-lowres-gen-on-connect
@@ -781,6 +1122,7 @@ backup on live:
SCHEDULED: <2024-11-30 Sat>
:PROPERTIES:
:CREATED: [2024-11-27 Wed 17:33]
+:CUSTOM_ID: general-infrastructure-upload-talks-to-youtube
:END:
[[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][Channel videos]]
@@ -830,6 +1172,9 @@ SCHEDULED: <2024-11-30 Sat>
:end:
** Restream to YouTube
+:PROPERTIES:
+:CUSTOM_ID: general-infrastructure-restream-to-youtube
+:END:
* Other process notes
@@ -846,6 +1191,9 @@ ssh bbb.emacsverse.org
docker exec -it greenlight-v2 bundle exec rake user:create["USERNAME","EMAIL","PASSWORD","user"]
#+end_src
** When a talk is added after the schedule has already been drafted
+:PROPERTIES:
+:CUSTOM_ID: other-process-notes-when-a-talk-is-added-after-the-schedule-has-already-been-drafted
+:END:
- [X] Add the talk to conf.org
- [X] Add the talk ID to the draft schedule
- [X] Run the draft schedule block
@@ -874,6 +1222,9 @@ docker exec -it greenlight-v2 bundle exec rake user:create["USERNAME","EMAIL","P
6. Consider updating the screenshots for sat-open and sun-open.
** When a talk changes title
+:PROPERTIES:
+:CUSTOM_ID: other-process-notes-when-a-talk-changes-title
+:END:
1. Update the title in conf.org.
2. Delete the FILE_PREFIX property.
@@ -897,11 +1248,17 @@ docker exec -it greenlight-v2 bundle exec rake user:create["USERNAME","EMAIL","P
5. Regenerate the pads: elisp:emacsconf-pad-prepopulate-all-talks
6. Regenerate talks.json: elisp:emacsconf-publish-talks-json-to-files
** To play the other stream
+:PROPERTIES:
+:CUSTOM_ID: other-process-notes-to-play-the-other-stream
+:END:
- mpv --profile=full https://live0.emacsconf.org/gen.webm
- Change the channel topic to note that discussion can be in the other channel
** When a system is down
+:PROPERTIES:
+:CUSTOM_ID: other-process-notes-when-a-system-is-down
+:END:
Let people know in #emacsconf and #emacsconf-org
@@ -912,17 +1269,26 @@ Update the status page:
/broadcast <message> may also be helpful
** When we need to bring on a last-minute volunteer
+:PROPERTIES:
+:CUSTOM_ID: other-process-notes-when-we-need-to-bring-on-a-last-minute-volunteer
+:END:
/backstage nick
will give them the backstage credentials and links to the index
** Checking people in
+:PROPERTIES:
+:CUSTOM_ID: other-process-notes-checking-people-in
+:END:
/checkin nick
/room nick (should be automatic if live, but there just in case)
** Ansible
+:PROPERTIES:
+:CUSTOM_ID: other-process-notes-ansible
+:END:
#+begin_src sh :eval no
git clone git@git.emacsconf.org:pub/emacsconf-ansible