diff options
Diffstat (limited to '2024/organizers-notebook/index.org')
-rw-r--r-- | 2024/organizers-notebook/index.org | 1483 |
1 files changed, 1483 insertions, 0 deletions
diff --git a/2024/organizers-notebook/index.org b/2024/organizers-notebook/index.org new file mode 100644 index 00000000..4c47e4b1 --- /dev/null +++ b/2024/organizers-notebook/index.org @@ -0,0 +1,1483 @@ +# [[elisp:(progn (memoize 'emacsconf-get-talk-info "5 seconds") (org-md-export-to-markdown) (memoize-restore 'emacsconf-get-talk-info))][Export this file to Markdown]] +#+TAGS: emacsconf +# [[elisp:(memoize 'emacsconf-get-talk-info "5 seconds")][Memoize emacsconf-get-talk-info]] - [[elisp:(memoize-restore 'emacsconf-get-talk-info)][Unmemoize]] +#+todo: TODO(t) SOMEDAY STARTED INPROGRESS(i) WAITING(w) STANDBY(s) BLOCKED(b) | DONE(x) CANCELLED(c) +#+OPTIONS: h:6 toc:nil num:nil ':t +#+PROPERTY: header-args :results silent :exports code :tangle yes +#+EXPORT_FILE_NAME: ../organizers-notebook.md +#+PROPERTY: QUANTIFIED Emacs + +#+begin_export md +<!-- organizers-notebook.md is exported from organizers-notebook/index.org, please modify that instead. --> +[[!sidebar content=""]] + +This file is automatically exported from [/2024/organizers-notebook/index.org](/2024/organizers-notebook/index.org). You might prefer to navigate this as an Org file instead. To do so, [clone the wiki repository](https://emacsconf.org/edit/). + +You might also like the [general organizers' notebook](/organizers-notebook) and [the organizers' notebook from 2023](/2023/organizers-notebook). +#+end_export + + + +#+NAME: list-headings +#+begin_src emacs-lisp :results value replace :exports results :eval never-export :var heading="Help wanted" :var match="helpwanted" +(emacsconf-surround + (concat heading ":\n\n") + (string-join + (delq nil + (org-map-entries + (lambda () + (when (and (org-entry-is-todo-p) (not (org-entry-is-done-p))) + (format "- %s %s\n" + (org-link-make-string + (concat "#" (org-entry-get (point) "CUSTOM_ID")) + (org-entry-get (point) "ITEM")) + (emacsconf-surround + "(by " + (and (org-entry-get (point) "DEADLINE") + (replace-regexp-in-string "[<>]" "" (org-entry-get (point) "DEADLINE"))) + ")" + "")))) + match nil)) + "") +"" "") +#+end_src + +#+RESULTS: list-headings +:results: +:end: + +#+CALL: list-headings(heading="Decisions to make", match="decision") + +#+RESULTS: +:results: +:end: + + +#+TOC: headlines 2 +* COMMENT Shortcuts +:PROPERTIES: +:CUSTOM_ID: shortcuts +:END: + +[[file:~/proj/emacsconf/wiki/organizers-notebook/index.org][Common notebook]] + +* TODO Timeline +:PROPERTIES: +:CUSTOM_ID: timeline +:END: + +| CFP | [2024-06-30 Sun] | | +| CFP deadline | [2024-09-20 Fri] | 82 | +| Speaker notifications | [2024-09-27 Fri] | | +| *Publish schedule* | [2024-10-25 Fri] | | +| Video submission deadline | [2024-11-08 Fri] | 49 | +| EmacsConf | [2024-12-07 Sat] | 29 | +#+TBLFM: @2$3=@2$2-@1$2::@5$3=@5$2-@2$2::@6$3=@6$2-@5$2 + +We like to have at least a month to work on audio +normalization and transcription, and we want +speakers to have at least a month to work on their +videos (considering early submissions will already +have gotten started on processing). + +* About this document +:PROPERTIES: +:CUSTOM_ID: about-this-doc +:END: + +Tags: +- =conforg=: Requires access to private conf.org repository + +* Communications plan +:PROPERTIES: +:CUSTOM_ID: comms +:END: + +Objectives: +- keep everyone in the loop without them feeling like they're overloaded + +Everyone: +- [ ] Call for participation (speakers and volunteers) +- [ ] Reminder about CFP +- [ ] Last call + +Speakers: +- [ ] Send all speakers backstage access and upload instructions +- [ ] Send all speakers check-in instructions + +Volunteers: +- [ ] Send captioning volunteers the backstage info +- [ ] Send past captioning volunteers an invitation to participate - ask when there's a lot of load +- [ ] Ask for help with audio processing + +* Good/better/best +:PROPERTIES: +:CUSTOM_ID: good-better-best +:END: + +This table makes it easier to move the slider depending on who wants +to volunteer and how much we can get done. At some point, we'll figure +out how to track our current status so we know what we need to +scramble to do in order to get the conference off the ground. *bold* +is our current goal. Feel free to volunteer for anything that +interests you! + + | | Good | Better | Best | + | Streaming | Regular stream | + alternate streams on PeerTube | + alternate streams on YouTube | + | 480p | Same on live | Separate node | Ansible setup | + | Audio normalization | Core org handling it | Other volunteer | Multiple volunteers | + | Video resolution | Usual reminders | Extra reminders | Everyone remembering to use a large font size | + | Intros | Standard, recorded | Reviewed by speakers | More details/context | + | Pad | v1.9.7 | v2.x | | +* Phases +:PROPERTIES: +:CUSTOM_ID: phases +:END: +** DONE Draft CFP +CLOSED: [2024-09-17 Tue 16:45] +:PROPERTIES: +:CUSTOM_ID: cfp +:END: + +**** Draft linked pages +:PROPERTIES: +:CUSTOM_ID: phases-draft-cfp-draft-linked-pages +:END: + +- [X] cfp +- [X] submit page +- [X] year index +- [X] volunteer page +**** DONE Check with other organizers +CLOSED: [2024-06-11 Tue 19:21] DEADLINE: <2024-06-14 Fri> +:PROPERTIES: +:CREATED: [024-06-03 Mon 10:1] +:CUSTOM_ID: phases-draft-cfp-check-with-other-organizers +:END: +**** DONE Post CFP in the usual places +CLOSED: [2024-09-17 Tue 16:45] +:PROPERTIES: +:CUSTOM_ID: phases-draft-cfp-post-cfp-in-the-usual-places +:END: +emacsconf-discuss, reddit.com/r/emacs, Emacs News, emacs-tangents, Mastodon, X +** TODO Draft schedule +:PROPERTIES: +:CUSTOM_ID: draft-schedule +:END: + +#+NAME: schedule +#+begin_src emacs-lisp :results value replace :exports none :eval never-export :var filename="schedule-1.5-tracks.svg" +(require 'emacsconf) +(require 'emacsconf-schedule) +(setq emacsconf-schedule-tracks + '((:label "Saturday" + :start "2024-12-07 9:00" + :end "2024-12-07 18:00" + :tracks ("General" "Development")) + (:label "Sunday" + :start "2024-12-08 9:00" + :end "2024-12-08 18:00" + :tracks ("General" "Development")))) +(let ((emacsconf-schedule-default-buffer-minutes 10) + (emacsconf-schedule-default-buffer-minutes-for-live-q-and-a 20) + (emacsconf-schedule-break-time 10) + (emacsconf-schedule-lunch-time 60) + (emacsconf-use-absolute-url t) + (emacsconf-schedule-strategies '(emacsconf-schedule-allocate-buffer-time + emacsconf-schedule-copy-previous-track)) + (emacsconf-schedule-validation-functions + '(emacsconf-schedule-validate-time-constraints + ;; emacsconf-schedule-validate-live-q-and-a-sessions-are-staggered + emacsconf-schedule-validate-no-cancelled-talks + emacsconf-schedule-validate-all-talks-present + emacsconf-schedule-validate-no-duplicates))) + (setq emacsconf-schedule-plan + '(("GEN Saturday, Dec 7" :start "2024-12-07 09:00" :set-track "General") + sat-open + papers ; <= 10:00 + project ; any + org-update ; <= 13:00 EST Sat or >= 15:00 Sat or <= 14:00 Sun, Sat preferred + color ; <= 12:00 sat pref + (lunch :start "12:00") + theme ; >= 12:30 + (water :time 15) ; >= 13:00 Sat, same speaker as shell + shell ; >= 13:00 Sat + casual ; >= 13:00 + hyperdrive ; >= 13:30 Sat + writing ; >= 15:30 Sat + emacs30 ; probably any + (sat-close :start "17:00") + ("DEV Saturday, Dec 7" :start "2024-12-07 10:00" :set-track "Development") + gypsum ; <= 11:00 + rust ; Dec 7 + p-search ; any + (lunch :start "12:00") + (julia :buffer 15) ; >= 13:00 + guile ; >= 12:00 + secrets ; >= 13:00 + (mcclim :time 60) ; >= 14:00 + maxima + ("GEN Sunday, Dec 8" :start "2024-12-08 09:00" :set-track "General") + sun-open + links ; <= 10:30 + regex ; <= 12:00 sun or >= 12:00 sat + learning ; <= 13:00 + (blee :buffer 15) ; any + (hyperbole :buffer 15) + (lunch :start "12:00") + (hywiki :buffer 20) ; >= 10:00 + (pgmacs :buffer 20) ; <= 15:00 + (literate :buffer 20) ; >= 13:00 + (students :start "15:00") ; >= 14:00 Sun + sharing ; >= 13:00 + (transducers :start "16:00") ; >= 16:00 sun + (sun-close) + )) + (setq emacsconf-schedule-draft (emacsconf-schedule-prepare (emacsconf-schedule-inflate-sexp emacsconf-schedule-plan))) + (prog1 (string-join (emacsconf-schedule-validate emacsconf-schedule-draft) "\n") + (let ((emacsconf-schedule-svg-modify-functions + '(emacsconf-schedule-svg-color-by-availability + ;emacsconf-schedule-svg-color-by-status + ))) + (with-temp-file (expand-file-name filename (file-name-directory emacsconf-org-file)) + (svg-print (emacsconf-schedule-svg 800 300 emacsconf-schedule-draft))) + (with-temp-file (expand-file-name filename (expand-file-name "organizers-notebook" (expand-file-name emacsconf-year emacsconf-directory))) + (svg-print (emacsconf-schedule-svg 800 300 emacsconf-schedule-draft)))) + (clear-image-cache))) +#+end_src + +#+RESULTS: schedule +:results: +:end: + +#+RESULTS: +:results: +:end: + +[[file:schedule-1.5-tracks.svg]] + +Legend: +- light blue: constraint is <= a time +- peach: constraint is >= a time +- solid line: Q&A will be through BigBlueButton web conference +- dashed line: Q&A will be IRC/Etherpad during the event or e-mail after the event + +Notes: + +- Updates: + - [2024-10-27 Sun] Removed emacsconf:graph, moved emacsconf:p-search earlier; also emacsconf:learning needs to be in the morning, so I moved emacsconf:pgmacs and emacsconf:org-teach around. + - [2024-10-22 Tue] Swapped emacsconf:org-teach and emacsconf:blee + - [2024-10-21 Mon] Extended emacsconf:blee + - [2024-10-17 Thu] Added emacsconf:org-update to Saturday morning, moving emacsconf:org-teach to Sunday afternoon + - [2024-10-15 Tue] Swapped emacsconf:students and emacsconf:literate for availability reasons + - [2024-10-13 Sun] Moved emacsconf:hyperdrive to the afternoon (swapping with emacsconf:flp) because of changed availability + - [2024-10-12 Sat] I fixed the time constraint for emacsconf:students (needs to be in the afternoon), so I moved emacsconf:hyperbole to the morning. +- General approach: + - I've mostly tried to alternate IRC/pad Q&A with live Q&A. + - 1.5 tracks keeps things faster-paced than the 2-track option. +- Sat: + - Gen track: + - emacsconf:papers, emacsconf:project, emacsconf:org-teach, emacsconf:flp, emacsconf:color should be pretty general + - emacsconf:color and emacsconf:theme are both theme-related. emacsconf:color needs to be in the morning and emacsconf:theme needs to be in the afternoon, so I put them on either side of the lunch break. + - Other afternoon talks: emacsconf:water and emacsconf:shell are by the same speaker. emacsconf:casual, emacsconf:hyperdrive, and emacsconf:writing will probably be good for a general audience. These speakers are only available in the afternoon, so this part of the schedule is a bit tight. + - I put emacsconf:emacs30 at the end of Saturday to act sort of as a keynote. Closing remarks on Saturday are usually very light, so we could skip them. + - Dev track: + - emacsconf:gypsum, emacsconf:rust, emacsconf:julia, emacsconf:guile, and emacsconf:mcclim are about other projects + - emacsconf:graph, emacsconf:p-search, emacsconf:secrets, and emacsconf:repro will probably be more dev-focused +- Sun: + - Sunday morning last year had some packet loss issues at around 9:30, so we'll start with some talks that don't have BBB Q&A: emacsconf:students, emacsconf:links, emacsconf:regex + - emacsconf:blee and emacsconf:language are probably general-audience + - emacsconf:pgmacs, emacsconf:regex, and emacsconf:transducers are all development-oriented, but are on the general track for scheduling purposes. [[emacsconf:transducers]] can only be on Sunday afternoon at 4pm because of availability. + - I've separated emacsconf:hyperbole and emacsconf:hywiki by lunch so that people who are interested in that can attend the live Q&A for both without worrying about missing things. + - emacsconf:learning, emacsconf:sharing, emacsconf:literate will probably be good for a general audience + +*** Option: 2 tracks :noexport: +:PROPERTIES: +:CUSTOM_ID: sched-2-tracks +:END: +#+begin_src emacs-lisp :results value replace :exports none :eval never-export :var filename="schedule-2-tracks.svg" +(require 'emacsconf) +(require 'emacsconf-schedule) +(setq emacsconf-schedule-tracks + '((:label "Saturday" + :start "2024-12-07 9:00" + :end "2024-12-07 18:00" + :tracks ("General" "Development")) + (:label "Sunday" + :start "2024-12-08 9:00" + :end "2024-12-08 18:00" + :tracks ("General" "Development")))) +(let ((emacsconf-schedule-default-buffer-minutes 20) + (emacsconf-schedule-default-buffer-minutes-for-live-q-and-a 30) + (emacsconf-schedule-break-time 10) + (emacsconf-schedule-lunch-time 60) + (emacsconf-use-absolute-url t) + (emacsconf-schedule-strategies '(emacsconf-schedule-allocate-buffer-time + emacsconf-schedule-copy-previous-track)) + (emacsconf-schedule-validation-functions + '(emacsconf-schedule-validate-time-constraints + ;; emacsconf-schedule-validate-live-q-and-a-sessions-are-staggered + emacsconf-schedule-validate-all-talks-present + emacsconf-schedule-validate-no-duplicates))) + (setq emacsconf-schedule-plan + '(("GEN Saturday, Dec 7" :start "2024-12-07 09:00" :set-track "General") + sat-open + papers ; <= 10:00 + color ; <= 12:00 sat pref + flp ; any, Sat pref + hyperdrive ; >= 11:00 Sat + (lunch :start "12:00") + emacs30 ; probably any + theme ; >= 12:30 + water ; >= 13:00 Sat, same speaker as shell >= 10:00 EST Sat and <= 16:00 EST Sat + shell ; >= 13:00 Sat >= 10:00 EST Sat and <= 16:00 EST Sat + students + writing ; >= 15:30 Sat + sat-close + ("DEV Saturday, Dec 7" :start "2024-12-07 10:00" :set-track "Development") + gypsum ; <= 11:00 + rust ; Dec 7 + (lunch :start "12:00") + julia ; >= 13:00 + guile ; >= 12:00 + (mcclim :time 60) ; >= 14:00 + regex ; <= 12:00 sun or >= 12:00 sat + repro ; any + ("GEN Sunday, Dec 8" :start "2024-12-08 09:00" :set-track "General") + sun-open + links ; <= 10:30 + (org-teach :buffer 20) ; any + (hyperbole :buffer 20) + (hywiki :buffer 20) ; >= 10:00 + language ; <= 12:00 + (lunch :start "12:00") + literate ; >= 13:00 + casual ; >= 13:00 + learning ; any + project ; any + sharing ; any + (sun-close :start "16:50") + ("DEV Sunday, Dec 8" :start "2024-12-08 10:00" :set-track "Development") + pgmacs ; <= 15:00 + graph ; <= 12:00 + (lunch :start "12:00") + blee ; any + p-search ; any + secrets ; >= 13:00 + (transducers :start "16:00") ; >= 16:00 sun + )) + (setq emacsconf-schedule-draft (emacsconf-schedule-prepare (emacsconf-schedule-inflate-sexp emacsconf-schedule-plan))) + (prog1 (string-join (emacsconf-schedule-validate emacsconf-schedule-draft) "\n") + (let ((emacsconf-schedule-svg-modify-functions + '(emacsconf-schedule-svg-color-by-availability + ;emacsconf-schedule-svg-color-by-status + ))) + (with-temp-file (expand-file-name filename (file-name-directory emacsconf-org-file)) + (svg-print (emacsconf-schedule-svg 800 300 emacsconf-schedule-draft))) + (with-temp-file (expand-file-name filename (expand-file-name "organizers-notebook" (expand-file-name emacsconf-year emacsconf-directory))) + (svg-print (emacsconf-schedule-svg 800 300 emacsconf-schedule-draft)))) + (clear-image-cache))) +#+end_src + +#+RESULTS: +:results: +:end: + +[[file:schedule-2-tracks.svg]] + +Coloring by availability: +- light blue: constraint is <= a time +- peach: constraint is >= a time + +** DONE Prepare shift calendar, ask people to sign up +CLOSED: [2024-11-26 Tue 10:06] SCHEDULED: <2023-11-01 Wed> +:PROPERTIES: +:CUSTOM_ID: shifts +:END: + +#+BEGIN_EXPORT md +<a name="shifts"></a> +#+END_EXPORT + +AM: 9-12 PM EST, PM: 1-5 PM EST (plus a little extra for setup/transition) + +Saturday Dec 7 2024 + +#+NAME: saturday-shifts +| | Start | End | [[https://emacsconf.org/2023/volunteer/host/][Host]] | Streamer | [[https://emacsconf.org/2023/volunteer/checkin/][Checkin]] | [[https://emacsconf.org/2023/volunteer/irc/][IRC]] | [[https://emacsconf.org/2023/volunteer/pad/][Pad]] | Coord | +|--------+-------+-------+--------+----------+---------+-----+-----+--------| +| Gen AM | 09:00 | 12:00 | zaeph | sachac | sachac | | | sachac | +| Gen PM | 13:00 | 17:00 | zaeph | sachac | sachac | | | sachac | +| Dev AM | 10:00 | 12:00 | corwin | sachac | sachac | | | sachac | +| Dev PM | 13:00 | 17:00 | corwin | sachac | sachac | | | sachac | + +Sunday Dec 8 2024 + +#+NAME: sunday-shifts +| | Start | End | [[https://emacsconf.org/2023/volunteer/host/][Host]] | Streamer | [[https://emacsconf.org/2023/volunteer/checkin/][Checkin]] | [[https://emacsconf.org/2023/volunteer/irc/][IRC]] | [[https://emacsconf.org/2023/volunteer/pad/][Pad]] | Coord | +|--------+-------+-------+-------+----------+---------+-----+-----+--------| +| Gen AM | 09:00 | 12:00 | zaeph | sachac | corwin | | | sachac | +| Gen PM | 13:00 | 17:00 | zaeph | sachac | corwin | | | sachac | + +Backups: +- dev host/streamer: +- gen host/streamer: +- checkin, IRC, pad: + +Interested in a shift? Please e-mail [[mailto:emacsconf-org-private@gnu.org]] and we'll help you figure out what you need to learn. + +#+begin_src emacs-lisp :var sat=saturday-shifts :var sun=sunday-shifts :rownames no :colnames no :results verbatim replace +`(setq emacsconf-shifts + (list + ,@(apply #'append + (mapcar + (lambda (day) + (let ((headers + (mapcar + (lambda (field) + (intern + (concat + ":" + (downcase + (if (string-match org-link-bracket-re field) + (match-string 2 field) + field))))) + (seq-drop (car (cadr day)) 3)))) + (mapcar + (lambda (row) + (apply #'append + (list 'list :id + (when (string-match "^\\([^ ]+\\) \\(AM\\|PM\\)" (car row)) + (format "%s-%s-%s" + (car day) + (downcase (match-string 2 (car row))) + (downcase (match-string 1 (car row))))) + :track + (if (string-match "^Gen" (car row)) "General" "Development") + :start + (format "%sT%s:00%s" + (elt day 2) + (elt row 1) + emacsconf-timezone-offset) + :end + (format "%sT%s:00%s" + (elt day 2) + (elt row 2) + emacsconf-timezone-offset)) + (seq-map-indexed + (lambda (value index) + (unless (string= value "") + (list (elt headers index) value))) + (seq-drop row 3)))) + (cdr (cadr day))) + )) + (list + (list "sat" sat "2024-12-07") + (list "sun" sun "2024-12-08")))))) + +#+end_src + +#+RESULTS: +:results: +(setq emacsconf-shifts (list (list :id "sat-am-gen" :track "General" :start "2024-12-07T09:00:00-0500" :end "2024-12-07T12:00:00-0500" :host "zaeph" :streamer "sachac" :checkin "sachac" :coord "sachac") (list :id "sat-pm-gen" :track "General" :start "2024-12-07T13:00:00-0500" :end "2024-12-07T17:00:00-0500" :host "zaeph" :streamer "sachac" :checkin "sachac" :coord "sachac") (list :id "sat-am-dev" :track "Development" :start "2024-12-07T10:00:00-0500" :end "2024-12-07T12:00:00-0500" :host "corwin" :streamer "sachac" :checkin "sachac" :coord "sachac") (list :id "sat-pm-dev" :track "Development" :start "2024-12-07T13:00:00-0500" :end "2024-12-07T17:00:00-0500" :host "corwin" :streamer "sachac" :checkin "sachac" :coord "sachac") (list :id "sun-am-gen" :track "General" :start "2024-12-08T09:00:00-0500" :end "2024-12-08T12:00:00-0500" :host "zaeph" :streamer "sachac" :checkin "corwin" :coord "sachac") (list :id "sun-pm-gen" :track "General" :start "2024-12-08T13:00:00-0500" :end "2024-12-08T17:00:00-0500" :host "zaeph" :streamer "sachac" :checkin "corwin" :coord "sachac"))) +:end: + + +** Record intros and opening remarks +:PROPERTIES: +:CUSTOM_ID: intros +:END: + +*** WAITING Redo pkal pronunciation :emacsconf:record: +SCHEDULED: <2024-12-03 Tue> +:PROPERTIES: +:CREATED: [2024-12-02 Mon 16:48] +:CUSTOM_ID: phases-record-intros-and-opening-remarks-redo-pkal-pronunciation +:END: + +#+begin_quote +kǎlud͡ʑert͡ʃit͡ɕ - zaeph's guess is kah-loo-dyer-tshitch +#+end_quote + +#+begin_example +Next, we have "Emacs 30 Highlights" by Philip Kaludercic. +You can ask questions in the web conference +by joining from the talk page, +or you can ask questions through Etherpad or IRC. +#+end_example + +*** WAITING Rerecord intro for Ihor Radchenko and Bastien Guerry +:PROPERTIES: +:CUSTOM_ID: phases-record-intros-and-opening-remarks-rerecord-intro-for-ihor-radchenko-and-bastien-guerry +:END: + + +zaeph's tips: Ihor said his name in this presentation: https://youtu.be/YA1RJxH4xfQ?t=1 +You’re rolling your Rs for both “Ihor” and “Guerry”, but I think both +are supposed to be smooth. For Bastien’s family name, it’s +"ghey-ree". https://paste.xinu.at/A9DFSN/ + +zaeph will probably pronounce this so much better than I can. =) + +#+begin_example +Next, we have "The future of Org", +by Ihor Radchenko and Bastien Guerry. +They will answer questions via web conference. +You can join using the URL from the talk page +or ask questions through Etherpad or IRC. +#+end_example + +*** TODO Rerecord Eev intro with MAC-SYM-A pronunciation :record:emacsconf: +:PROPERTIES: +:CUSTOM_ID: phases-record-intros-and-opening-remarks-rerecord-eev-intro-with-mac-sym-a-pronunciation +:END: + +#+begin_quote +My name in the intro is perfect, but Maxima comes from Macsyma, and it is +pronounced mac - sym (<- as in "symbolic") a... +#+end_quote + +#+begin_example +Next, we have "Emacs, eev, and Maxima - now!", +by Eduardo Ochs. +You can ask questions via Etherpad or IRC. +#+end_example + +*** WAITING Rerecord Vincent Conus using psitransfer version :record:emacsconf: +SCHEDULED: <2024-12-03 Tue> +:PROPERTIES: +:CREATED: [2024-12-02 Mon 19:48] +:CUSTOM_ID: phases-record-intros-and-opening-remarks-rerecord-vincent-conus-using-psitransfer-version +:END: + +[[file:~/proj/emacsconf/2024/cache/emacsconf-2024-papers--writing-academic-papers-in-orgroam--vincent-conus--name.ogg]] + +cuhn-us + +#+begin_example +Next, we have "Writing academic papers in Org-Roam", +by Vincent Conus. +He will answer questions via web conference. +You can join using the URL from the talk page +or ask questions through Etherpad or IRC. +#+end_example + + +*** WAITING Rerecord Joseph Turner with new title :emacsconf:record: +:PROPERTIES: +:CREATED: [2024-12-02 Mon 13:51] +:CUSTOM_ID: phases-record-intros-and-opening-remarks-rerecord-joseph-turner-with-new-title +:END: + +[[https://sachachua.com/blog/2024/12/2024-12-02-emacs-news/][2024-12-02 Emacs news]] + +New in hyperdrive.el: quick install, peer graph, transclusion! + +#+begin_example +Next, we have "New in hyperdrive.el: quick install, +peer graph, transclusion!" by Joseph Turner. +You can ask questions in the web conference +by joining from the talk page, +or you can ask questions through Etherpad or IRC. +#+end_example +*** STARTED Record sat-open remarks :emacsconf:record: +:PROPERTIES: +:Effort: 0:30 +:CUSTOM_ID: phases-record-intros-and-opening-remarks-record-sat-open-remarks +:END: +:LOGBOOK: +CLOCK: [2024-12-03 Tue 13:38]--[2024-12-04 Wed 08:48] => 19:10 +:END: + +Welcome to EmacsConf 2024, where we have fun +exploring how much we can do with a text editor. +It's hard to give a general overview +of all the cool talks today and tomorrow, +so you can flip through the talks +and see what sparks your interests. +Don't feel limited to one track or another. +The best parts of EmacsConf are the conversations. +The wiki has a page on how to watch and participate, +and I'll give you a quick overview as well. +You can watch both streams at live.emacsconf.org +using free and open source software. +Using a streaming media player like mpv +seems to be the best way to watch in terms of performance +but there are also web-based players +just in case that's all you've got. +The schedule shows the General track on top +and the Development track on the bottom, +so you can see what else is going on. +As you're watching the talks, +you can refer to the schedule in another window. +Hover over the boxes to see the times and titles, +and click on the boxes in the schedule +to jump to the talk's page for more details. +You can also get the schedule as an iCalendar file +or as an Org file in different time zones. +Many talks will be followed by +live Q&A web conferences with the speaker, +which will be done in BigBlueButton or BBB. +These are indicated with a solid border on the schedule +and by Q&A: BBB on the schedule page. +You can join the web conference room +by clicking on the BBB link + +on the schedule page or the talk's webpage. +Then you can ask your questions yourself when the Q&A starts. +To improve performance, please keep your webcam off +and stay muted until it's your turn to talk. +If you don't like Javascript, +you can still ask questions via IRC +and the hosts can read them out for you. +We're probably going to automatically switch +between talks and Q&A sessions, +so the transitions on the stream might be a little sudden. + +People in the BigBlueButton room +can continue the conversation +even after the talk moves off-stream. +and you can also reach out to the speakers +using the contact information on the talk page. + +Other talks will have Q&A via Etherpad or IRC, +depending on what the speakers prefer. +This is indicated in the schedule with a dashed border +and on the schedule page as well. +Some talks will have the Q&A after the event, +so you can add your questions to their Etherpad +or ask on IRC. +We'll e-mail the speakers afterwards +and update the talk pages when they answer. +The schedule pages and track pages have quick shortcuts +so that you can find out more about talks, open the Etherpads, +and join the Q&A sessions. The watch page has more tips +on how to make the most of Q&A. +If you can, please add notes and ask questions +in the Etherpad for the talk. That makes it easier +for everyone to share their notes, +and speakers and hosts can read the questions from there. +We'll copy the notes to the talk pages afterwards. +We have one pad for each talk, +so you can follow the links to get to the next one +or go back to the schedule and get the link from there. +If you have general feedback about +the conference itself, please put it in +pad.emacsconf.org/2024 , which is linked on each pad. +You can also use this as a general community message board +for things like Help Wanted. +Internet Relay Chat or IRC can be another great way +to be part of lots of conversations. +You can use chat.emacsconf.org to join the IRC channels +through your web browser. The tabs on the left can help you +switch between the different channels. +There's #emacsconf-gen for the General track +and #emacsconf-dev for the Development track. +If you need to reach us, you can join #emacsconf-org +or e-mail emacsconf-org-private@gnu.org. +You can use #emacsconf for hallway conversations. +Of course, you can join any of these channels +with your favourite IRC client. +You can connect to irc.libera.chat +port 6697 with TLS. +Once again, we're going to be streaming with open captions +for most of the talks this year, thanks to our speakers and +captioning volunteers. The captioned talks are indicated +on the schedule, and with any luck, we'll be posting +transcripts on talk pages shortly after the talks start. +If you need additional accommodations, +please let us know in #emacsconf-org +and we'll see if we can make things happen. +If something goes down, we'll update status.emacsconf.org. +If it doesn't look like we've noticed yet, +please let us know in the #emacsconf-org IRC channel, +where we will be quietly panicking. +In all of these conversations, please keep in mind +our guidelines for conduct. You can find them on the wiki, +They basically boil down to: please be nice. +If all goes well, the prerecorded talks and transcripts +should be available from the talk pages +shortly after they start playing, +and we'll post the recordings of live talks +and Q&A sessions within the next month or so. +If you'd like to get an update, you can subscribe to +the emacsconf-discuss mailing list. +All right, let's get going. +Leo is hosting the general track, +and Corwin hosting the development track. +The other volunteers and I will run around mostly backstage, +and you'll probably meet us in the closing remarks. +That's also where we get to thank +all the people and organizations +who make EmacsConf possible. +Thanks for coming to EmacsConf 2024. +*** TODO Record sun-open remarks +:PROPERTIES: +:CUSTOM_ID: phases-record-intros-and-opening-remarks-record-sun-open-remarks +:END: + +Welcome to the second day of EmacsConf 2024. +Today we have one track of talks, +so you don't have to worry about +missing out on anything. +The best parts of EmacsConf are the conversations. +The wiki has a page on how to watch and participate, +and I'll give you a quick overview as well. +You can watch the stream at live.emacsconf.org +using free and open source software. +Using a streaming media player like mpv +seems to be the best way to watch in terms of performance +but there are also web-based players +just in case that's all you've got. +As you're watching the talks, +you can refer to the schedule in another window. +Hover over the boxes to see the times and titles, +and click on the boxes in the schedule +to jump to the talk's page for more details. +You can also get the schedule as an iCalendar file +or as an Org file in different time zones. + +Many talks will be followed by +live Q&A web conferences with the speaker, +which will be done in BigBlueButton or BBB. +These are indicated with a solid border on the schedule +and by Q&A: BBB on the schedule page. +You can join the web conference room +by clicking on the BBB link +on the schedule page or the talk's webpage. +Then you can ask your questions yourself when the Q&A starts. +To improve performance, please keep your webcam off +and stay muted until it's your turn to talk. +If you don't like Javascript, +you can still ask questions via IRC +and the hosts can read them out for you. + +We're probably going to automatically switch +between talks and Q&A sessions, +so the transitions on the stream might be a little sudden, +People in the BigBlueButton room +can continue the conversation +even after the talk moves off-stream, +and you can also reach out to the speakers +using the contact information on the talk page. + +Other talks will have Q&A via Etherpad or IRC, +depending on what the speakers prefer. +This is indicated in the schedule with a dashed border +and on the schedule page as well. +Please ask your questions in the recommended places +so that the speakers can easily see them. + +Some talks will have the Q&A after the event, +so you can add your questions to their Etherpad. +We'll e-mail the speakers afterwards +and update the talk pages when they answer. + +We're going to start Sunday morning +with more IRC/Etherpad Q&A +to try to get around +some of the bandwidth issues +that we noticed last year. + +The schedule pages and track pages have quick shortcuts +so that you can find out more about talks, open the Etherpads, +and join the Q&A sessions. The watch page has more tips +on how to make the most of Q&A. +If you can, please add notes and ask questions +in the Etherpad for the talk. That makes it easier +for everyone to share their notes, +and speakers and hosts can read the questions from there. +We'll copy the notes to the talk pages afterwards. +We have one pad for each talk, +so you can follow the links to get to the next one +or go back to the schedule and get the link from there. +If you have general feedback about +the conference itself, please put it in +pad.emacsconf.org/2024 , which is linked on each pad. +You can also use this as a general community message board +for things like Help Wanted. +Internet Relay Chat or IRC can be another great way +to be part of lots of conversations. +You can use chat.emacsconf.org to join the IRC channels +through your web browser. The tabs on the left can help you +switch between the different channels. +Most discussions will be in +#emacsconf-gen for the General track. +If you need to reach us, you can join #emacsconf-org +or e-mail emacsconf-org-private@gnu.org. +You can use #emacsconf for hallway conversations. +Of course, you can join any of these channels +with your favourite IRC client. +You can connect to irc.libera.chat +port 6697 with TLS. +Once again, we're going to be streaming with open captions +for most of the talks this year, thanks to our speakers and +captioning volunteers. The captioned talks are indicated +on the schedule, and with any luck, we'll be posting +transcripts on talk pages shortly after the talks start. +If you need additional accommodations, +please let us know in #emacsconf-org +and we'll see if we can make things happen. +If something goes down, we'll update status.emacsconf.org. +If it doesn't look like we've noticed yet, +please let us know in the #emacsconf-org IRC channel, +where we will be quietly panicking. +In all of these conversations, please keep in mind +our guidelines for conduct. You can find them on the wiki, +They basically boil down to: please be nice. +If all goes well, the prerecorded talks and transcripts +should be available from the talk pages +shortly after they start playing, +and we'll post the recordings of live talks +and Q&A sessions within the next month or so. +If you'd like to get an update, you can subscribe to +the emacsconf-discuss mailing list. +All right, let's get going. +Leo Vivier is hosting the general track again today. +The other volunteers and I will run around mostly backstage, +and you'll probably meet us in the closing remarks. +That's also where we get to thank +all the people and organizations +who make EmacsConf even possible. +Thanks for coming to EmacsConf 2024. + +* TODO [#A] Check EmacsConf infrastructure :project: +:PROPERTIES: +:CUSTOM_ID: check-emacsconf-infrastructure +:END: + +- [X] IRC +- [ ] Streaming assets +- [ ] Publishing to the wiki +- [ ] Web conference +- [ ] OBS +- [ ] Publishing to the media server +- [ ] Etherpad +- [ ] Streaming +- [ ] Toobnix +- [ ] YouTube +- [X] Mumble: Can join from my phone, can speak on stream + +** TODO [#A] BigBlueButton +DEADLINE: <2024-11-15 Fri> +:PROPERTIES: +:CREATED: [2024-11-02 Sat 11:38] +:CUSTOM_ID: check-emacsconf-infrastructure-bigbluebutton +:END: + +- Plan: spin up Linode temporarily: [[#bbb][BigBlueButton replacement]] + +*** Notes +:PROPERTIES: +:CUSTOM_ID: check-emacsconf-infrastructure-bigbluebutton-notes +:END: +**** install, sizes +:PROPERTIES: +:CUSTOM_ID: check-emacsconf-infrastructure-bigbluebutton-notes-install-sizes +:END: +[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. + Image: Ubuntu 22.04 + +Steps: +1. Run the BBB installer: ~./bbb-install.sh -v jammy-300 -s bbb.emacsverse.org -e emacsconf@sachachua.com -g~ +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 + +#+begin_src +echo "notify-send 'Resizing BBB...'; linode-cli linodes resize 67329098 --type g6-nanode-1 --allow_auto_disk_resize true" | at 'now + 1 hour' +#+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 +:PROPERTIES: +:CUSTOM_ID: check-emacsconf-infrastructure-bigbluebutton-notes-backing-up +:END: +[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 +**** DONE Set up bbb with new domain name +CLOSED: [2024-11-28 Thu 10:00] +:PROPERTIES: +:Effort: 1:00 +:CUSTOM_ID: check-emacsconf-infrastructure-bigbluebutton-notes-set-up-bbb-with-new-domain-name +:END: +:LOGBOOK: +CLOCK: [2024-11-28 Thu 09:06]--[2024-11-28 Thu 09:17] => 0:11 +:END: +If changing IP: + +bbb-conf --setip bbb-new.example.com +service nginx stop +certbot certonly +service nginx start +edit /etc/hosts, add domain name + +Certificate is saved at: /etc/letsencrypt/live/bbb.emacsverse.org/fullchain.pem +Key is saved at: /etc/letsencrypt/live/bbb.emacsverse.org/privkey.pem + +edit /etc/nginx/sites-available/bigbluebutton to add server_name +/etc/letsencrypt/live/ + +grep in /etc for the old domain + +https://github.com/bigbluebutton/greenlight/issues/1794 +- change greenlight/.env + + curl failed to verify the legitimacy of the server and therefore could not +establish a secure connection to it. To learn more about this situation and +how to fix it, please visit the web page mentioned above. +.curl: (60) SSL: no alternative certificate subject name matches target host name 'bbb.emacsverse.org' +More details here: https://curl.se/docs/sslcerts.html + +haproxy is already listening on 443 + +Fine, let's just reinstall it, harumph. + +Create the users: + +user_id = User.find_by_email("sacha@sachachua.com").id + +... ugh, what's going on, why is free only reporting a little memory? ah, we're still resizing, that's why +*** STARTED Set up moderator access codes for all the meeting rooms, and make it so people can start the meeting +SCHEDULED: <2024-11-28 Thu> +:PROPERTIES: +:CREATED: [2024-11-28 Thu 11:12] +:Effort: 0:30 +:CUSTOM_ID: check-emacsconf-infrastructure-bigbluebutton-set-up-moderator-access-codes-for-all-the-meeting-rooms-and-make-it-so-people-can-start-the-meeting +:END: +:LOGBOOK: +CLOCK: [2024-11-28 Thu 12:13]--[2024-11-28 Thu 13:10] => 0:57 +:END: + +- Let's try + - [ ] Rails + - [ ] Spookfox + - [ ] Manual + + https://github.com/bigbluebutton/greenlight/blob/a5da808fc33f03613aa3a4089fd418403c539b2f/spec/models/room_spec.rb#L128 + RoomMeetingOption. + +room.get_setting + +yeah, that's not good, rails console keeps quitting! +docker-compose down +docker-compose up + +1:M 28 Nov 2024 17:16:23.441 # WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect. + +docker-compose down +docker-compose up -d + +makes it more reliable, it seems + +room = Room.find_by_id('8b3f36b1-7aee-459d-b963-bddcfe03e1db') + +o = MeetingOption.find_by_name('glAnyoneCanStart') +o.default_value = 'true' +o.save! + +o = MeetingOption.find_by_name('glModeratorAccessCode') + +"https://bbb.emacsverse.org/rooms/p4o-29n-esd-ow5/join" +#+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 +*** DONE [#A] Figure out what's going on with BBB! +CLOSED: [2024-11-28 Thu 10:59] SCHEDULED: <2024-11-28 Thu> +:PROPERTIES: +:CREATED: [2024-11-28 Thu 10:12] +:Effort: 1:00 +:CUSTOM_ID: check-emacsconf-infrastructure-bigbluebutton-figure-out-what-s-going-on-with-bbb +:END: +:LOGBOOK: +CLOCK: [2024-11-28 Thu 10:47]--[2024-11-28 Thu 10:59] => 0:12 +:END: +*** DONE Create meeting rooms for each speaker +CLOSED: [2024-11-28 Thu 10:59] SCHEDULED: <2024-11-15 Fri> +:PROPERTIES: +:CREATED: [2024-11-02 Sat 11:50] +:Effort: 0:30 +:CUSTOM_ID: create_rooms +:END: +:LOGBOOK: +CLOCK: [2024-11-28 Thu 10:00]--[2024-11-28 Thu 10:12] => 0:12 +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 + +docker exec -it greenlight-v3 bundle exec rails console + +#+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: "Eduardo Ochs - maxima") +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: "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") +: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 + + +*** DONE Check BBB audio from my phone +CLOSED: [2024-11-28 Thu 13:03] SCHEDULED: <2024-11-21 Thu> +:PROPERTIES: +:CREATED: [2024-11-19 Tue 15:39] +:CUSTOM_ID: check-emacsconf-infrastructure-bigbluebutton-check-bbb-audio-from-my-phone +:END: +*** DONE Create accounts for corwin +CLOSED: [2024-11-28 Thu 10:11] +:PROPERTIES: +:CUSTOM_ID: check-emacsconf-infrastructure-bigbluebutton-create-accounts-for-corwin +:END: +*** CANCELLED [#C] Customize BBB to process at night +CLOSED: [2024-11-27 Wed 13:17] +:PROPERTIES: +:CREATED: [2024-11-20 Wed 12:11] +:CUSTOM_ID: check-emacsconf-infrastructure-bigbluebutton-customize-bbb-to-process-at-night +:END: + +https://docs.bigbluebutton.org/3.0/administration/customize/ +Change processing time + +On a 2.2.x BigBlueButton server, the server will process recordings as meetings finish. You can restrict the recording processing interval to specific hours by creating the file /etc/systemd/system/bbb-record-core.timer.d/override.conf with the contents + +[Timer] +OnActiveSec= +OnUnitInactiveSec= +OnCalendar=21,22,23,00,01,02,03:*:00 +Persistent=false + +and do systemctl daemon-reload. This file overrides the timing of when systemd runs bbb-record-core.target. In the above example, recordings will start processing between 21:00 and 03:59. + +- [[file:~/sync/orgzly/Inbox.org::*Set up rooms and assign as properties][Set up rooms and assign as properties]] +*** TODO [#C] Change background presentation +:PROPERTIES: +:CUSTOM_ID: check-emacsconf-infrastructure-bigbluebutton-change-background-presentation +:END: +https://docs.bigbluebutton.org/3.0/administration/customize/#change-the-default-presentation +*** TODO [#C] Modify landing page +:PROPERTIES: +:CUSTOM_ID: check-emacsconf-infrastructure-bigbluebutton-modify-landing-page +:END: +/var/www/bigbluebutton-default/assets/index.html +keep backup copy as it will be overwritten when bbb-conf is called +*** TODO [#C] Change default welcome message +:PROPERTIES: +:Effort: 0:30 +:CUSTOM_ID: check-emacsconf-infrastructure-bigbluebutton-change-default-welcome-message +: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 [#C] Change html5 title +:PROPERTIES: +:CUSTOM_ID: check-emacsconf-infrastructure-bigbluebutton-change-html5-title +:END: +/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 [#C] Try live captions +:PROPERTIES: +:CUSTOM_ID: check-emacsconf-infrastructure-bigbluebutton-try-live-captions +:END: +https://docs.bigbluebutton.org/3.0/administration/customize/#enable-live-captions +*** TODO Explore meeting layout? Default to custom, hosts will need to drag people's webcam over if there's a share +:PROPERTIES: +:CUSTOM_ID: check-emacsconf-infrastructure-bigbluebutton-explore-meeting-layout-default-to-custom-hosts-will-need-to-drag-people-s-webcam-over-if-there-s-a-share +:END: + +** IRC web client +:PROPERTIES: +:CUSTOM_ID: check-emacsconf-infrastructure-irc-web-client +:END: +*** DONE Ask libera.chat to increase connections allowed from chat.emacsconf.org on Dec 7 and 8 +CLOSED: [2024-11-27 Wed 13:18] +:PROPERTIES: +:CUSTOM_ID: check-emacsconf-infrastructure-irc-web-client-ask-libera-chat-to-increase-connections-allowed-from-chat-emacsconf-org-on-dec-7-and-8 +:END: +** IRC announcements +:PROPERTIES: +:CUSTOM_ID: check-emacsconf-infrastructure-irc-announcements +:END: +*** DONE Confirm manual IRC announcements +CLOSED: [2024-11-02 Sat 12:05] +:PROPERTIES: +:CUSTOM_ID: check-emacsconf-infrastructure-irc-announcements-confirm-manual-irc-announcements +:END: +*** TODO Confirm automated IRC announcements from res +:PROPERTIES: +:CUSTOM_ID: check-emacsconf-infrastructure-irc-announcements-confirm-automated-irc-announcements-from-res +:END: +** Media +:PROPERTIES: +:CUSTOM_ID: check-emacsconf-infrastructure-media +:END: + +*** TODO Switch public media to unprotected root before the conference +SCHEDULED: <2024-11-29 Fri> +:PROPERTIES: +:CREATED: [2024-11-12 Tue 14:18] +:CUSTOM_ID: check-emacsconf-infrastructure-media-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=. +3. =ansible-playbook -i inventory.yml prod-playbook.yml --tags media= + +You can generate the index with =emacsconf-publish-update-media=. +** TODO Publishing resources to the wiki +:PROPERTIES: +:CUSTOM_ID: check-emacsconf-infrastructure-publishing-resources-to-the-wiki +:END: +ansible-playbook -i inventory.yml prod-playbook.yml --tags publish + + + +** TODO Publishing videos to the media server +:PROPERTIES: +:CUSTOM_ID: check-emacsconf-infrastructure-publishing-videos-to-the-media-server +:END: +** Playing videos, switching to windows +:PROPERTIES: +:CUSTOM_ID: check-emacsconf-infrastructure-playing-videos-switching-to-windows +:END: + +*** TODO Generate test videos for everything +:PROPERTIES: +:CUSTOM_ID: check-emacsconf-infrastructure-playing-videos-switching-to-windows-generate-test-videos-for-everything +:END: +*** TODO Document how to get that set up again +:PROPERTIES: +:CUSTOM_ID: check-emacsconf-infrastructure-playing-videos-switching-to-windows-document-how-to-get-that-set-up-again +:END: +** Etherpad +:PROPERTIES: +:CUSTOM_ID: check-emacsconf-infrastructure-etherpad +:END: +*** TODO Generate pads for all the talks +:PROPERTIES: +:CUSTOM_ID: check-emacsconf-infrastructure-etherpad-generate-pads-for-all-the-talks +:END: +*** TODO Generate the main index +:PROPERTIES: +:CUSTOM_ID: check-emacsconf-infrastructure-etherpad-generate-the-main-index +:END: +** TODO Do a dry run +SCHEDULED: <2024-11-22 Fri> +:PROPERTIES: +:CREATED: [2024-11-02 Sat 11:40] +:CUSTOM_ID: check-emacsconf-infrastructure-do-a-dry-run +:END: +*** DONE Generate all the test assets +CLOSED: [2024-11-06 Wed 18:52] +:PROPERTIES: +:Effort: 0:15 +:CUSTOM_ID: check-emacsconf-infrastructure-do-a-dry-run-generate-all-the-test-assets +:END: +:LOGBOOK: +CLOCK: [2024-11-06 Wed 18:47]--[2024-11-06 Wed 18:52] => 0:05 +:END: +*** TODO Test connecting to VNC and streaming via OBS +SCHEDULED: <2024-11-07 Thu> +:PROPERTIES: +:CREATED: [2024-11-06 Wed 18:52] +:CUSTOM_ID: check-emacsconf-infrastructure-do-a-dry-run-test-connecting-to-vnc-and-streaming-via-obs +:END: +** Resizing +:PROPERTIES: +:CUSTOM_ID: check-emacsconf-infrastructure-resizing +:END: + +live0: 64GB +front0: 32GB +meet: 64GB + +*** TODO [#A] Resize nodes before production +SCHEDULED: <2024-12-06 Fri> +:PROPERTIES: +:CREATED: [2024-11-22 Fri 13:46] +:CUSTOM_ID: check-emacsconf-infrastructure-resizing-resize-nodes-before-production +:END: + +live0: 64GB +front0: 32GB +meet: 64GB + +*** TODO [#A] Resize nodes after production +SCHEDULED: <2024-12-08 Sun> +:PROPERTIES: +:CREATED: [2024-11-22 Fri 13:46] +:CUSTOM_ID: check-emacsconf-infrastructure-resizing-resize-nodes-after-production +:END: + +live0: nanode +front0: nanode +*** TODO [#A] Resize meet after production +SCHEDULED: <2024-12-10 Tue> +:PROPERTIES: +:CREATED: [2024-11-22 Fri 13:47] +:CUSTOM_ID: check-emacsconf-infrastructure-resizing-resize-meet-after-production +:END: +meet: nanode +* Processes and notes +:PROPERTIES: +:CUSTOM_ID: processes-and-notes +:END: +** Hosting +:PROPERTIES: +:CUSTOM_ID: processes-and-notes-hosting +:END: +*** TODO Finalize host for dev track +:PROPERTIES: +:CUSTOM_ID: processes-and-notes-hosting-finalize-host-for-dev-track +:END: +** ERC +:PROPERTIES: +:CUSTOM_ID: processes-and-notes-erc +:END: + +Some convenient commands are defined in emacsconf-el:emacsconf-erc.el. + +| /opall | Grant operator status in the Emacsconf channels | +| /deopall | Remove operator status in the Emacsconf channels | +| /conftopic | Set the first part of the topic | + +* Decisions +:PROPERTIES: +:CUSTOM_ID: decisions +:END: +** BigBlueButton replacement (BBB) +:PROPERTIES: +:CUSTOM_ID: bbb +:END: + +The server running bbb.emacsverse.org has been decommissioned, since the nonprofit that shared it with us is defunct. + +- We'd like to figure out what our live Q&A setup is going to be for EmacsConf 2024 (Dec 7-8). +- Nice to have: Hosting for other Emacs meetups like Emacs APAC and OrgMeetup +- [[https://sachachua.com/blog/2023/12/emacsconf-backstage-figuring-out-our-maximum-number-of-simultaneous-bigbluebutton-users/][Stats from last year]]: 31 meetings, 84 unique users, 62 max simultaneous users, 6 max simultaneous meetings, 27 max users in one meeting, 36 unique talking + - also includes some notes on hosting +- Nice thing about running our own server: we can make one room per speaker, pre-assign their URLs, and let people stay as long as they want in recorded Q&A sessions + +Recommendation: + +We spin up a shared CPU 4GB under bandali's Linode +account (for bandwidth pooling and easier +reimbursement), do the setup/testing, scale down +as small as possible over the next few weeks, +scale up to dedicated CPU 16GB a day or two before +the conference, and keep it at that level until +the recordings are all done. I have access to that +Linode account, so I can set it up. If bandali can +configure emacsverse.org to be handled by Linode, +I can manage the DNS changes, or he can change +bbb.emacsverse.org to the IP address of the new +node. + +Some options: + +- Linode with 16GB RAM and 8 cores + - Advantages: can experiment with both Galene and BBB, manage things ourselves, have filesystem access + - Disadvantages: needs someone to do it + - Base pricing + - Shared CPU 4GB 80GB storage: hourly USD 0.04, monthly USD 24 + - Dedicated CPU 16GB: hourly USD 0.22, daily 5.28, weekly 36.96, monthly USD 144 - meets minimum requirements and can probably support 200 simultaneous ([[https://docs.bigbluebutton.org/support/faq/][FAQ]]) + - Shared CPU 8GB 160GB storage: hourly USD 0.07 + - Shared CPU 16GB 320GB storage: hourly USD 0.14 + - Last year + - Block storage: $1/10GB/month + - 125M/hour - [[https://docs.bigbluebutton.org/support/faq/#what-is-the-disk-space-usage-for-storing-one-hour-of-recordings][FAQ]] + - In 2023, we had 31 hours of trimmed recordings (main + answers), + - (* 31 0.125) 3.875, oh, maybe we can get away with 10GB storage and add another chunk of 10GB midway if we need it, or extend the dedicated + - Actually, block storage probably not needed if we're going to keep the big instance up until the recordings are done + - Ideas + - *We're here -- Option B: Run a slightly larger shared CPU instance from now until shortly before the conference, then scale up* in case BBB does not work for installation/testing with less memory; block storage probably not needed + - (* 0.07 24 7 3) USD 35.28 for 8GB, total (+ 35.28 36.96) USD 72.24 + - (* 0.14 24 7 3) USD 70.56 for 16GB, total (+ 70.56 36.96) USD 107.52 + - *Option A: Run a small instance continuously, scale up for the conference, pull the recordings off, spin the instance down* - est total USD 60+tax + - There are three weeks between now and the conference (* 0.04 24 7 3) USD 20 + - Last year, recordings were available within three days after the conference + - Let's plan for a week at high capacity. (* 0.22 24 7) USD 36.96 + - and a month of 10GB, possibly up to 30GB. USD 3 + - That's probably small enough that it doesn't make as much sense to try to fully spin down for a week in between now and the conference (* 0.04 24 7) - which would save USD 6.72 but require figuring out backing up, etc. + +- Ask FSF if we can borrow their BBB or Galene, maybe limit it to cycling among 6 or 7 rooms + - Waiting for feedback; Corwin has asked them +- Pay for BigBlueButton hosting; can we find one that's compatible with our commitment to freedom? + - https://bigbluebutton.host/plans/#economyplans - Economy 120 (USD 130/month) or Economy 80 (USD 85/month), custom URL + - https://www.bigbluemeeting.com/#pricing - 100 concurrent users: USD 125/month, custom URL + - https://www.mynaparrot.com/affordable-bigbluebutton-hosting + - 100 concurrent users: USD 79/month + - 200 concurrent users and custom URL: USD 15 setup fee + USD 149/month + - https://www.webhostingzone.org/solutions/bigbluebutton-hosting.html - 150 concurrent, USD 75/month + - https://bbbplugin.com/en/pricing/bigbluebutton-for-api/ - 250 concurrent, USD 49 setup + USD 108.80/month + - https://biggerbluebutton.com/plans + - 150 concurrent users, 10 concurrent meetings, USD 40/month + - custom domain, 600 concurrent users, USD 149/month + - Compare with Linode pricing +- Try to squeeze it onto res.emacsconf.org + - Tricky to run on a shared server; it likes to use a lot of ports and strongly recommends running it on its own server +- Go back to using meet.jit.si? + - Free: + - Need to check speed, reliability + - Can send RTMP from the meeting itself + - [2024-11-13 Wed] I attended Ihor's + OrgMeetup, which he hosted on meet.jit.si. I + think he had bandwidth issues at some point + and we lost his audio. I remember we ran + into that problem before, too, when we used + Jitsi for one of the Emacsconfs. Free Jitsi + hosting might not be the right fit for us. + - Paid: USD 99/month + $0.01/min for recordings + $0.01 min (optional) for RTMP streaming +- Galene? + - [2024-10-31 Thu] I checked out Galene in the last Emacs Berlin meeting. It's promising, but I think the user interface might still need a bit of work. Simple deployment (run one Go binary, I think), but muting/unmuting doesn't trigger enabling the microphone, and the chat was buggy to get to on my mobile device. Supposed to have support for raising hands. + + +* Support code +:PROPERTIES: +:CUSTOM_ID: support-code +:END: + +#+begin_src emacs-lisp +(defun my-ox-link-path (link _ info) + (let* ((raw-path (org-element-property :path link))) + (setq raw-path + (org-export-file-uri + (org-publish-file-relative-name raw-path info))) + ;; Possibly append `:html-link-home' to relative file + ;; name. + (let ((home (and (plist-get info :html-link-home) + (org-trim (plist-get info :html-link-home))))) + (when (and home + (plist-get info :html-link-use-abs-url) + (not (file-name-absolute-p raw-path))) + (setq raw-path (concat (file-name-as-directory home) raw-path)))) + raw-path)) + +(defun my-org-md-link (link desc info) + (if (string= (org-element-property :type link) "file") + (let ((path (my-ox-link-path link desc info))) + (if (string= (file-name-extension path) "svg") + (with-temp-buffer + (insert-file-contents-literally path) + (buffer-string)) + (org-md-link link desc info))) + (org-md-link link desc info))) + +(with-eval-after-load 'ox-md + (setf + (alist-get 'link (org-export-backend-transcoders (org-export-get-backend 'md))) + 'my-org-md-link)) +#+end_src |