diff options
Diffstat (limited to '2024/organizers-notebook/index.org')
-rw-r--r-- | 2024/organizers-notebook/index.org | 384 |
1 files changed, 315 insertions, 69 deletions
diff --git a/2024/organizers-notebook/index.org b/2024/organizers-notebook/index.org index 97ad77c6..bbb1032a 100644 --- a/2024/organizers-notebook/index.org +++ b/2024/organizers-notebook/index.org @@ -1,4 +1,4 @@ -# [[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]] +# [[elisp:(progn (memoize 'emacsconf-get-talk-info "5 seconds") (org-md-export-to-markdown) (memoize-restore 'emacsconf-get-talk-info))][EPpxport 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) @@ -125,7 +125,7 @@ interests you! | 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 @@ -150,18 +150,14 @@ CLOSED: [2024-06-11 Tue 19:21] DEADLINE: <2024-06-14 Fri> **** DONE Post CFP in the usual places CLOSED: [2024-09-17 Tue 16:45] emacsconf-discuss, reddit.com/r/emacs, Emacs News, emacs-tangents, Mastodon, X -** Draft schedule +** DONE Draft schedule +CLOSED: [2024-11-02 Sat 11:38] :PROPERTIES: :CUSTOM_ID: draft-schedule :END: #+NAME: schedule - -*** Option: 2 tracks -: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" +#+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 @@ -173,8 +169,8 @@ emacsconf-discuss, reddit.com/r/emacs, Emacs News, emacs-tangents, Mastodon, X :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) +(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) @@ -183,53 +179,52 @@ emacsconf-discuss, reddit.com/r/emacs, Emacs News, emacs-tangents, Mastodon, X (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 - 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 + (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 - sat-close + 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 ; >= 13:00 - regex ; <= 12:00 sun or >= 12:00 sat + (julia :buffer 15) ; >= 13:00 + guile ; >= 12:00 + secrets ; >= 13:00 (mcclim :time 60) ; >= 14:00 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 + regex ; <= 12:00 sun or >= 12:00 sat + learning ; <= 13:00 language ; <= 12:00 + (org-teach :buffer 15) ; any + (hyperbole :buffer 15) (lunch :start "12:00") - literate ; >= 13:00 - casual ; >= 13:00 - learning ; any - project ; any - sharing ; any, same speaker as learning - (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 + (hywiki :buffer 15) ; >= 10:00 + (pgmacs :buffer 15) ; <= 15:00 + (blee :buffer 10) ; any + (literate :buffer 15) ; >= 13:00 + students ; >= 14:00 Sun + sharing ; >= 13:00 + (transducers) ; >= 16:00 sun + (sun-close :start "17:00") )) (setq emacsconf-schedule-draft (emacsconf-schedule-prepare (emacsconf-schedule-inflate-sexp emacsconf-schedule-plan))) (prog1 (string-join (emacsconf-schedule-validate emacsconf-schedule-draft) "\n") @@ -244,22 +239,56 @@ emacsconf-discuss, reddit.com/r/emacs, Emacs News, emacs-tangents, Mastodon, X (clear-image-cache))) #+end_src +#+RESULTS: schedule +:results: +:end: + #+RESULTS: :results: :end: -[[file:schedule-2-tracks.svg]] +[[file:schedule-1.5-tracks.svg]] -Coloring by availability: +Legend: - light blue: constraint is <= a time - peach: constraint is >= a time - -*** Option: 1.5 tracks +- 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-1.5-tracks +:CUSTOM_ID: sched-2-tracks :END: - -#+begin_src emacs-lisp :results value replace :exports none :eval never-export :var filename="schedule-1.5-tracks.svg" +#+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 @@ -271,8 +300,8 @@ Coloring by availability: :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) +(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) @@ -287,45 +316,48 @@ Coloring by availability: '(("GEN Saturday, Dec 7" :start "2024-12-07 09:00" :set-track "General") sat-open papers ; <= 10:00 - links ; <= 10:30 - org-teach ; any - language ; <= 12:00 - hyperdrive ; >= 11:00 Sat 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 - shell ; >= 13:00 Sat - flp ; any, Sat pref + 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 - graph ; <= 12:00 (lunch :start "12:00") julia ; >= 13:00 - regex ; <= 12:00 sun or >= 12:00 sat - secrets ; >= 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 - pgmacs ; <= 15:00 - p-search ; any - hyperbole - hywiki ; >= 10:00 - project ; any - blee ; any + links ; <= 10:30 + (org-teach :buffer 20) ; any + (hyperbole :buffer 20) + (hywiki :buffer 20) ; >= 10:00 + language ; <= 12:00 (lunch :start "12:00") - casual ; >= 13:00 - learning ; >= 13:00 - sharing ; any, same speaker as learning literate ; >= 13:00 - students - (transducers :start "16:00") ; >= 16:00 sun + 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") @@ -342,11 +374,225 @@ Coloring by availability: #+RESULTS: :results: -saturday closing remarks: Starts at 16:10 before 16:30 :end: -[[file:schedule-1.5-tracks.svg]] +[[file:schedule-2-tracks.svg]] Coloring by availability: - light blue: constraint is <= a time - peach: constraint is >= a time +* TODO [#A] Check EmacsConf infrastructure :project: + +- [X] IRC +- [ ] Streaming assets +- [ ] Publishing to the wiki +- [ ] Web conference +- [ ] OBS +- [ ] Publishing to the media server +- [ ] Etherpad +- [ ] Streaming +- [ ] Toobnix +- [ ] YouTube + +** WAITING [#A] bbb.emacsverse.org replacement +DEADLINE: <2024-11-15 Fri> +:PROPERTIES: +:CREATED: [2024-11-02 Sat 11:38] +:END: + +- Delegated to Corwin for now, will get back to stressing out about it in a couple of weeks +- May need to spin up a Linode and either pay for it for a few weeks or figure out how to spin it down and up again + - [[#bbb][BigBlueButton replacement]] +- Possibly relevant: dynamic DNS? + https://www.linode.com/community/questions/7945/custom-dynamic-dns + Can also update manually +*** TODO Create meeting rooms for each speaker +SCHEDULED: <2024-11-15 Fri> +:PROPERTIES: +:CREATED: [2024-11-02 Sat 11:50] +:END: +** IRC web client +*** WAITING Ask libera.chat to increase connections allowed from chat.emacsconf.org on Dec 7 and 8 +** IRC announcements +*** DONE Confirm manual IRC announcements +CLOSED: [2024-11-02 Sat 12:05] +*** TODO Confirm automated IRC announcements from res +** Media + +*** TODO Switch public media to unprotected root before the conference +SCHEDULED: <2024-11-29 Fri> +:PROPERTIES: +:CREATED: [2024-11-12 Tue 14:18] +: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 +ansible-playbook -i inventory.yml prod-playbook.yml --tags publish + + + +** TODO Publishing videos to the media server +** Playing videos, switching to windows + +*** TODO Generate test videos for everything +*** TODO Document how to get that set up again +** Etherpad +*** TODO Generate pads for all the talks +*** TODO Generate the main index +** TODO Do a dry run +SCHEDULED: <2024-11-22 Fri> +:PROPERTIES: +:CREATED: [2024-11-02 Sat 11:40] +:END: +*** DONE Generate all the test assets +CLOSED: [2024-11-06 Wed 18:52] +:PROPERTIES: +:Effort: 0:15 +: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] +:END: +* Processes and notes +** ERC + +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 +: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 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, 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 + - *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. + - *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 + +- 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 |