summaryrefslogtreecommitdiffstats
path: root/2023/organizers-notebook/index.org
diff options
context:
space:
mode:
Diffstat (limited to '2023/organizers-notebook/index.org')
-rw-r--r--2023/organizers-notebook/index.org2200
1 files changed, 1795 insertions, 405 deletions
diff --git a/2023/organizers-notebook/index.org b/2023/organizers-notebook/index.org
index 4dbd1dca..dba27d56 100644
--- a/2023/organizers-notebook/index.org
+++ b/2023/organizers-notebook/index.org
@@ -1,4 +1,6 @@
-# [[elisp:(org-md-export-to-markdown)][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))][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
@@ -12,27 +14,49 @@
This file is automatically exported from [/2023/organizers-notebook/index.org](/2023/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/).
#+end_export
-Decisions to make:
-
-#+begin_src emacs-lisp :results value replace :exports results :eval never-export
-(string-join
- (delq nil
- (org-map-entries
- (lambda ()
- (unless (org-entry-is-done-p)
- (format "- %s (by %s)\n"
- (org-link-make-string
- (concat "#" (org-entry-get (point) "CUSTOM_ID"))
- (org-entry-get (point) "ITEM"))
- (replace-regexp-in-string "[<>]" "" (org-entry-get (point) "DEADLINE")))))
- "decision" nil))
+#+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:
+Help wanted:
+
+- [[#audio][Find volunteers for audio processing (normalization, noise reduction) and document the process]]
+- [[#eval-video-sync][Video editing: the eval talk is a little bit out of sync]] (by 2023-11-15 Wed)
+:end:
+
+#+RESULTS:
+:results:
+Help wanted:
+
+- [[#lowres][Figure out a better way to handle 480p stream]]
+:end:
+
+#+CALL: list-headings(heading="Decisions to make", match="decision")
+
#+RESULTS:
:results:
-- [[#three-tracks][Test the idea of three tracks and more aligned times]] (by 2023-10-13 Fri)
-- [[#honorifics][Do we want to use honorifics like Dr.?]] (by 2023-11-14 Tue)
:end:
#+TOC: headlines 2
@@ -45,8 +69,8 @@ Decisions to make:
| CFP | [2023-06-26 Mon] |
| CFP deadline | [2023-09-14 Thu] |
-| *Speaker notifications* | [2023-09-25 Mon] |
-| Publish schedule | [2023-10-30 Mon] |
+| Speaker notifications | [2023-09-25 Mon] |
+| *Publish schedule* | [2023-10-25 Wed] |
| Video submission deadline | [2023-11-04 Sat] |
| EmacsConf | [2023-12-02 Sat], [2023-12-03 Sun] |
@@ -61,6 +85,70 @@ SCHEDULED: <2023-10-28 Sat>
:PROPERTIES:
:CUSTOM_ID: dry-run
:END:
+** TODO Dry run with more volunteers
+SCHEDULED: <2023-11-11 Sat>
+:PROPERTIES:
+:CREATED: [023-10-13 Fri 20:5]
+:CUSTOM_ID: dry-run-2
+:END:
+* 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
+
+Speakers:
+- [X] Send all speakers backstage access and upload instructions
+- [ ] Send all speakers check-in instructions
+
+Volunteers:
+- [X] 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
+** Next emacsconf-org update
+SCHEDULED: <2023-10-21 Sat>
+:PROPERTIES:
+:CUSTOM_ID: emacsconf-org-2023-10-21
+:END:
+
+backstage
+
+volunteers
+
+help wanted:
+
+audio processing
+
+intros
+
+* 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 |
+| Autopilot | offset TRAMP timers | Crontab | Can be toggled |
+| 480p | Someone's computer | Separate node | Ansible setup |
+| Watch instructions | Embed | Reminder to prefer mpv | |
+| Audio | As is | Normalized | Noise reduction |
+| Intros | Standard, recorded | Reviewed by speakers in backstage | More details/context |
+
* Phases
:PROPERTIES:
:CUSTOM_ID: phases
@@ -212,11 +300,12 @@ SCHEDULED: <2023-06-26 Mon>
- Post in Emacs News :sachac:
*** Reminder
-SCHEDULED: <2023-09-01 Fri>
+
** DONE Process submissions
CLOSED: [2023-09-22 Fri 09:50]
:PROPERTIES:
:CUSTOM_ID: submission-process
+:FUNCTION: emacsconf-mail-review
:END:
- Proposal received: sachac adds it to this document with status of PROPOSED
@@ -345,9 +434,22 @@ Sacha
- Displaying the schedule as a list with time constraints made it
easier to verify the time constraints and to see how I can fix
errors.
-- Drafting the schedule in the public organizers notebook was
-
-** Draft schedule
+- Drafting the schedule in the public organizers notebook was nice
+ because I could share that with the speakers and other volunteers.
+*** DONE E-mail the speakers the upload and backstage instructions
+CLOSED: [2023-10-16 Mon 12:47]
+*** Handling a late submission
+
+doc
+
+- [ ] Add talk entry to conf.org
+- [ ] Add talk to schedule in organizers notebook
+- [ ] Add talk to the wiki
+- [ ] Send speaker backstage information, upload information, and schedule
+- [ ] Create BBB room
+- [ ] Record intro
+
+** Draft schedule for EmacsConf 2023
:PROPERTIES:
:CUSTOM_ID: draft-schedule
:END:
@@ -372,70 +474,68 @@ These times are in EST (GMT-5).
(emacsconf-schedule-break-time 10)
(emacsconf-schedule-lunch-time 60)
(emacsconf-use-absolute-url t)
- (emacsconf-schedule-max-time 30)
- (emacsconf-schedule-strategies '(emacsconf-schedule-allocate-buffer-time))
+ (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 2" :start "2023-12-02 09:00")
+ '(("GEN Saturday, Dec 2" :start "2023-12-02 09:00" :set-track "General")
sat-open
adventure
uni
teaching
table
- taming
- one
+ (one :start "11:30")
(lunch :start "12:00")
writing
- nabokov
+ nabokov
collab
- (woof :track "General")
solo
- break
- unentangling
ref
- (devel :track "General")
+ unentangling
+ devel
+ core
(sat-close)
- ("DEV Saturday, Dec 2" :start "2023-12-02 10:00")
- (matplotllm :track "Development")
- (voice :track "Development")
- (llm :track "Development")
+ ("DEV Saturday, Dec 2" :start "2023-12-02 10:00" :set-track "Development")
+ (matplotllm)
+ (voice)
+ (llm)
(lunch :start "12:00")
(overlay)
(eval)
(repl)
- (hyperdrive :track "Development")
- (extending :track "Development")
- ("GEN Sunday, Dec 3" :start "2023-12-03 09:00")
+ doc
+ (windows)
+ ("GEN Sunday, Dec 3" :start "2023-12-03 09:00" :set-track "General")
sun-open
hyperamp
koutline
- (parallel :track "General")
+ (parallel)
eat
poltys
cubing
(lunch :start "12:00")
- (emms :track "General")
- (steno :track "General")
+ (emms)
+ (steno)
mentor
break
- (hn :start "15:00")
web
sharing
- sun-close
- ("DEV Sunday, Dec 3" :start "2023-12-03 10:00")
+ (sun-close :start "16:30")
+ ("DEV Sunday, Dec 3" :start "2023-12-03 10:00" :set-track "Development")
scheme
- test
- (flat :track "Development")
+ (world)
+ (flat)
+ (emacsen)
(lunch :start "12:00")
gc
+ hyperdrive
lspocaml
- (windows :track "Development")
- (emacsconf :track "Development")
- (emacsen :track "Development")
+ test
+ (emacsconf)
))
(setq emacsconf-schedule-draft (emacsconf-schedule-prepare (emacsconf-schedule-inflate-sexp emacsconf-schedule-plan)))
(prog1 (string-join (emacsconf-schedule-validate emacsconf-schedule-draft) "\n")
@@ -453,15 +553,11 @@ These times are in EST (GMT-5).
:results:
:end:
-#+RESULTS:
-:results:
-:end:
+[[my-include:schedule.svg?wrap=export html]]
+
+- Legend: dashed line means non-BBB Q&A; light gray means penciled-in talk; yellow means video already submitted and being processed
-#+begin_comment
-[[file:schedule.svg]]
-#+end_comment
-#+INCLUDE: schedule.svg export html
*** Draft schedule as a list
:PROPERTIES:
:CUSTOM_ID: schedule-list
@@ -475,93 +571,103 @@ These times are in EST (GMT-5).
(replace-regexp-in-string "[<>]" ""
(plist-get o :scheduled))
" "
- (if (string-match "after the event" (or (plist-get o :q-and-a) "")) "- no live Q&A - " "")
- (let ((constraint (emacsconf-schedule-get-time-constraint o)))
- (cond
- ((and (car constraint) (cadr constraint)) (format "- between %s-%s EST - " (car constraint) (cadr constraint)))
- ((car constraint) (format "- after %s EST - " (car constraint)))
- ((cadr constraint) (format "- before %s EST - " (cadr constraint)))
- ((string-match "^(.*?) -- " (or (plist-get o :availability) "")) (match-string 1 (plist-get o :availability)))
- (t "")))
+ (if (string-match "after the event" (or (plist-get o :q-and-a) "")) "- no live Q&A - "
+ (emacsconf-surround "- " (emacsconf-schedule-format-time-constraint o) " - " ""))
(format "[[emacsconf:%s][%s]]: "
(plist-get o :slug)
(plist-get o :slug))
(plist-get o :title)
(emacsconf-surround " ("
(plist-get o :speakers)
- ") " "")
-
- )))
+ ") " ""))))
(sort emacsconf-schedule-draft (lambda (a b) (string< (plist-get a :scheduled) (plist-get b :scheduled))))) "\n")
#+end_src
#+RESULTS: draft-schedule-table
- 2023-12-02 Sat 09:00-09:10 [[emacsconf:sat-open][sat-open]]: Saturday opening remarks
- - 2023-12-02 Sat 09:10-09:20 - before 10:00 EST - [[emacsconf:adventure][adventure]]: An Org-Mode based text adventure game for learning the basics of Emacs, inside Emacs, written in Emacs Lisp (Chung-hong Chan)
- - 2023-12-02 Sat 09:30-09:50 [[emacsconf:uni][uni]]: Authoring and presenting university courses with Emacs and a full libre software stack (James Howell)
- - 2023-12-02 Sat 10:00-10:10 - before 10:30 EST - [[emacsconf:matplotllm][matplotllm]]: MatplotLLM, iterative natural language data visualization in org-babel (Abhinav Tushar)
- - 2023-12-02 Sat 10:05-10:25 [[emacsconf:teaching][teaching]]: Teaching computer and data science with literate programming tools
- - 2023-12-02 Sat 10:20-10:40 [[emacsconf:voice][voice]]: Improving access to AI-assisted literate programming with voice control (Blaine Mooers)
- - 2023-12-02 Sat 10:40-10:50 - before 11:00 EST - [[emacsconf:table][table]]: Who needs Excel? Managing your students qualifications with org-table (Daniel Molina)
- - 2023-12-02 Sat 10:55-11:15 - after 10:00 EST - [[emacsconf:llm][llm]]: LLM clients in Emacs, functionality and standardization (Andrew Hyatt)
- - 2023-12-02 Sat 11:05-11:15 - before 15:00 EST - [[emacsconf:taming][taming]]: Taming things with Org Mode (Gergely Nagy (algernon))
- - 2023-12-02 Sat 11:30-11:50 - before 13:00 EST - [[emacsconf:one][one]]: one.el: the static site generator for Emacs Lisp Programmers (Tony Aldon)
- - 2023-12-02 Sat 13:00-13:10 [[emacsconf:writing][writing]]: Emacs turbo-charges my writing (Jeremy Friesen)
- - 2023-12-02 Sat 13:00-13:20 - after 11:00 EST - [[emacsconf:overlay][overlay]]: Improving compiler diagnostics with Overlays (Jeff Trull)
- - 2023-12-02 Sat 13:25-13:35 [[emacsconf:nabokov][nabokov]]: Why Nabokov would use Org-Mode if he were writing today (Edmund Jorgensen)
- - 2023-12-02 Sat 13:35-13:45 [[emacsconf:eval][eval]]: Editor Integrated REPL Driven Development for all languages (Musa Al-hassy)
- - 2023-12-02 Sat 13:50-14:10 - no live Q&A - [[emacsconf:collab][collab]]: Collaborative data processing and documenting using org-babel (Jonathan Hartman, Lukas C. Bossert)
- - 2023-12-02 Sat 14:00-14:40 [[emacsconf:repl][repl]]: REPLs in strange places: Lua, LaTeX, LPeg, LPegRex, TikZ (Eduardo Ochs)
- - 2023-12-02 Sat 14:20-14:40 - before 15:00 EST - [[emacsconf:woof][woof]]: Watch Over Our Folders (Bastien Guerry)
- - 2023-12-02 Sat 14:50-15:30 - after 11:00 EST - [[emacsconf:hyperdrive][hyperdrive]]: hyperdrive.el: Peer-to-peer filesystem in Emacs (Joseph Turner)
- - 2023-12-02 Sat 14:55-15:15 - after 12:00 EST - [[emacsconf:solo][solo]]: How I play TTRPGs in Emacs (Howard Abrams)
- - 2023-12-02 Sat 15:40-15:50 - between 15:00-16:00 EST - [[emacsconf:unentangling][unentangling]]: (Un)entangling projects and repos (Alexey Bochkarev)
- - 2023-12-02 Sat 15:45-16:05 [[emacsconf:extending][extending]]: GNU Emacs for electronics, note-taking, and as lightweight IDE (Anand Tamariya)
- - 2023-12-02 Sat 16:00-16:20 - after 13:00 EST - [[emacsconf:ref][ref]]: Org-Mode workflow: informal reference tracking (Christopher Howard)
- - 2023-12-02 Sat 16:30-16:40 - no live Q&A - [[emacsconf:devel][devel]]: Emacs development updates (John Wiegley)
- - 2023-12-02 Sat 16:50-17:00 [[emacsconf:sat-close][sat-close]]: Saturday closing remarks
- - 2023-12-03 Sun 09:00-09:05 [[emacsconf:sun-open][sun-open]]: Sunday opening remarks
- - 2023-12-03 Sun 09:05-09:25 - before 12:00 EST - [[emacsconf:hyperamp][hyperamp]]: Top 10 ways Hyperbole amps up Emacs (Robert Weiner)
- - 2023-12-03 Sun 09:40-10:00 [[emacsconf:koutline][koutline]]: Using Koutline for stream of thought journaling (Matthew Jorgensen (PlasmaStrike))
- - 2023-12-03 Sun 10:00-10:20 - before 12:00 EST - [[emacsconf:scheme][scheme]]: Bringing joy to Scheme programming (Andrew Tropin)
- - 2023-12-03 Sun 10:10-10:20 - before 11:00 EST - [[emacsconf:parallel][parallel]]: Parallel Text Replacement: Does P = NP? (Lovro, Valentino Picotti)
- - 2023-12-03 Sun 10:35-10:45 - before 13:00 EST - [[emacsconf:eat][eat]]: Eat and Eat powered Eshell, fast featureful terminal inside Emacs (Akib Azmain Turja)
- - 2023-12-03 Sun 10:35-10:55 - before 12:00 EST - [[emacsconf:test][test]]: What I learned by writing test cases for GNU Hyperbole (Mats Lidell)
- - 2023-12-03 Sun 11:00-11:20 - before 13:00 EST - [[emacsconf:poltys][poltys]]: The browser in a buffer (Michael Bauer)
- - 2023-12-03 Sun 11:10-11:20 - between 11:00-13:00 EST - [[emacsconf:flat][flat]]: A modern Emacs look-and-feel without pain (Pedro A. Aranda)
- - 2023-12-03 Sun 11:35-11:55 - before 17:00 EST - [[emacsconf:cubing][cubing]]: Speedcubing in Emacs (Vasilij "wasamasa" Schneidermann)
- - 2023-12-03 Sun 13:00-13:20 - before 14:00 EST - [[emacsconf:gc][gc]]: emacs-gc-stats: Does garbage collection actually slow down Emacs? (Ihor Radchenko)
- - 2023-12-03 Sun 13:00-13:40 [[emacsconf:emms][emms]]: Emacs MultiMedia System (EMMS) (Yoni Rabkin)
- - 2023-12-03 Sun 13:35-13:45 [[emacsconf:lspocaml][lspocaml]]: Writing a language server in OCaml for Emacs, fun, and profit (Austin Theriault)
- - 2023-12-03 Sun 13:55-14:25 [[emacsconf:steno][steno]]: Programming at 200 wpm (Daniel Alejandro Tapia)
- - 2023-12-03 Sun 14:00-14:40 [[emacsconf:windows][windows]]: Windows into Freedom (Corwin Brust)
- - 2023-12-03 Sun 14:35-14:45 [[emacsconf:mentor][mentor]]: Mentoring VS-Coders as an Emacsian (or How to show not tell people about the wonders of Emacs) (Jeremy Friesen)
- - 2023-12-03 Sun 14:55-15:15 [[emacsconf:emacsconf][emacsconf]]: EmacsConf.org: How we use Org Mode and TRAMP to organize and run a multi-track conference (Sacha Chua)
- - 2023-12-03 Sun 15:00-15:10 - after 15:00 EST - [[emacsconf:hn][hn]]: The many ways to browse Hacker News from Emacs (Mickael Kerjean)
- - 2023-12-03 Sun 15:25-16:05 - after 15:00 EST - [[emacsconf:web][web]]: Emacs saves the Web (Yuchen Pei)
- - 2023-12-03 Sun 15:30-15:50 - no live Q&A - [[emacsconf:emacsen][emacsen]]: The Emacsen family, the design of an Emacs and the importance of Lisp (Fermin)
- - 2023-12-03 Sun 16:20-16:40 [[emacsconf:sharing][sharing]]: Sharing Emacs is Caring Emacs: Emacs education and why I embraced video (Jacob Boxerman)
- - 2023-12-03 Sun 16:55-17:05 [[emacsconf:sun-close][sun-close]]: Sunday closing remarks
+ - 2023-12-02 Sat 09:10-09:20 - <= 10:00 - [[emacsconf:adventure][adventure]]: An Org-Mode based text adventure game for learning the basics of Emacs, inside Emacs, written in Emacs Lisp (Chung-hong Chan)
+ - 2023-12-02 Sat 09:30-09:50 [[emacsconf:uni][uni]]: Authoring and presenting university courses with Emacs and a full libre software stack (James Howell)
+ - 2023-12-02 Sat 10:00-10:10 - <= 10:30 - [[emacsconf:matplotllm][matplotllm]]: MatplotLLM, iterative natural language data visualization in org-babel (Abhinav Tushar)
+ - 2023-12-02 Sat 10:05-10:25 - on 2023-12-02 - [[emacsconf:teaching][teaching]]: Teaching computer and data science with literate programming tools (Marcus Birkenkrahe)
+ - 2023-12-02 Sat 10:20-10:40 [[emacsconf:voice][voice]]: Enhancing productivity with voice computing (Blaine Mooers)
+ - 2023-12-02 Sat 10:40-10:50 - <= 11:00 - [[emacsconf:table][table]]: Who needs Excel? Managing your students qualifications with org-table (Daniel Molina)
+ - 2023-12-02 Sat 10:55-11:15 - >= 10:00 - [[emacsconf:llm][llm]]: LLM clients in Emacs, functionality and standardization (Andrew Hyatt)
+ - 2023-12-02 Sat 11:05-11:15 - <= 15:00 - [[emacsconf:taming][taming]]: Taming things with Org Mode (Gergely Nagy (algernon))
+ - 2023-12-02 Sat 11:30-11:50 - <= 13:00 - [[emacsconf:one][one]]: one.el: the static site generator for Emacs Lisp Programmers (Tony Aldon)
+ - 2023-12-02 Sat 13:00-13:10 [[emacsconf:writing][writing]]: Emacs turbo-charges my writing (Jeremy Friesen)
+ - 2023-12-02 Sat 13:00-13:20 - >= 11:00 - [[emacsconf:overlay][overlay]]: Improving compiler diagnostics with overlays (Jeff Trull)
+ - 2023-12-02 Sat 13:25-13:35 [[emacsconf:nabokov][nabokov]]: Why Nabokov would use Org-Mode if he were writing today (Edmund Jorgensen)
+ - 2023-12-02 Sat 13:35-13:45 [[emacsconf:eval][eval]]: Editor Integrated REPL Driven Development for all languages (Musa Al-hassy)
+ - 2023-12-02 Sat 13:50-14:10 - no live Q&A - [[emacsconf:collab][collab]]: Collaborative data processing and documenting using org-babel (Jonathan Hartman, Lukas C. Bossert)
+ - 2023-12-02 Sat 14:00-15:00 [[emacsconf:repl][repl]]: REPLs in strange places: Lua, LaTeX, LPeg, LPegRex, TikZ (Eduardo Ochs)
+ - 2023-12-02 Sat 14:20-14:40 - >= 12:00 - [[emacsconf:solo][solo]]: How I play TTRPGs in Emacs (Howard Abrams)
+ - 2023-12-02 Sat 14:55-15:15 - >= 13:00 - [[emacsconf:ref][ref]]: Org-Mode workflow: informal reference tracking (Christopher Howard)
+ - 2023-12-02 Sat 15:10-15:50 [[emacsconf:doc][doc]]: Literate Documentation with Emacs and Org Mode (Mike Hamrick)
+ - 2023-12-02 Sat 15:25-15:35 - between 15:00-16:00 - [[emacsconf:unentangling][unentangling]]: (Un)entangling projects and repos (Alexey Bochkarev)
+ - 2023-12-02 Sat 15:45-15:55 - >= 12:00 - [[emacsconf:devel][devel]]: Emacs development updates (John Wiegley)
+ - 2023-12-02 Sat 16:05-16:45 [[emacsconf:windows][windows]]: Windows into Freedom (Corwin Brust)
+ - 2023-12-02 Sat 16:10-16:50 [[emacsconf:core][core]]: Emacs core development: how it works (Stefan Kangas)
+ - 2023-12-02 Sat 17:05-17:15 [[emacsconf:sat-close][sat-close]]: Saturday closing remarks
+ - 2023-12-03 Sun 08:59-09:04 [[emacsconf:sun-open][sun-open]]: Sunday opening remarks
+ - 2023-12-03 Sun 09:05-09:25 - <= 12:00 - [[emacsconf:hyperamp][hyperamp]]: Top 10 ways Hyperbole amps up Emacs (Robert Weiner)
+ - 2023-12-03 Sun 09:40-10:00 [[emacsconf:koutline][koutline]]: Using Koutline for stream of thought journaling (Matthew Jorgensen (PlasmaStrike))
+ - 2023-12-03 Sun 10:00-10:20 - <= 12:00 - [[emacsconf:scheme][scheme]]: Bringing joy to Scheme programming (Andrew Tropin)
+ - 2023-12-03 Sun 10:10-10:25 - <= 11:00 - [[emacsconf:parallel][parallel]]: Parallel text replacement (Lovro, Valentino Picotti)
+ - 2023-12-03 Sun 10:35-10:45 - <= 13:00 - [[emacsconf:eat][eat]]: Eat and Eat powered Eshell, fast featureful terminal inside Emacs (Akib Azmain Turja)
+ - 2023-12-03 Sun 10:35-10:55 - <= 11:30 - [[emacsconf:world][world]]: GNU Emacs: A World of Possibilities (Anand Tamariya)
+ - 2023-12-03 Sun 11:00-11:20 - <= 13:00 - [[emacsconf:poltys][poltys]]: The browser in a buffer (Michael Bauer)
+ - 2023-12-03 Sun 11:10-11:20 - between 11:00-13:00 - [[emacsconf:flat][flat]]: A modern Emacs look-and-feel without pain (Pedro A. Aranda)
+ - 2023-12-03 Sun 11:35-11:55 - <= 17:00 - [[emacsconf:cubing][cubing]]: Speedcubing in Emacs (wasamasa)
+ - 2023-12-03 Sun 11:35-11:55 - <= 13:00 - [[emacsconf:emacsen][emacsen]]: The Emacsen family, the design of an Emacs and the importance of Lisp (Fermin)
+ - 2023-12-03 Sun 13:00-13:35 - <= 14:00 - [[emacsconf:gc][gc]]: emacs-gc-stats: Does garbage collection actually slow down Emacs? (Ihor Radchenko)
+ - 2023-12-03 Sun 13:00-13:40 [[emacsconf:emms][emms]]: Emacs MultiMedia System (EMMS) (Yoni Rabkin)
+ - 2023-12-03 Sun 13:50-14:30 - >= 11:00 - [[emacsconf:hyperdrive][hyperdrive]]: hyperdrive.el: Peer-to-peer filesystem in Emacs (Joseph Turner and Protesilaos Stavrou)
+ - 2023-12-03 Sun 13:55-14:25 [[emacsconf:steno][steno]]: Programming with steno (Daniel Alejandro Tapia)
+ - 2023-12-03 Sun 14:35-14:45 [[emacsconf:mentor][mentor]]: Mentoring VS-Coders as an Emacsian (or How to show not tell people about the wonders of Emacs) (Jeremy Friesen)
+ - 2023-12-03 Sun 14:45-15:00 [[emacsconf:lspocaml][lspocaml]]: Writing a language server in OCaml for Emacs, fun, and profit (Austin Theriault)
+ - 2023-12-03 Sun 15:10-15:40 - >= 15:00 - [[emacsconf:web][web]]: Emacs saves the Web (maybe) (Yuchen Pei)
+ - 2023-12-03 Sun 15:15-15:45 - >= 12:00 - [[emacsconf:test][test]]: What I learned by writing test cases for GNU Hyperbole (Mats Lidell)
+ - 2023-12-03 Sun 15:55-16:15 [[emacsconf:sharing][sharing]]: Sharing Emacs is Caring Emacs: Emacs education and why I embraced video (Jacob Boxerman)
+ - 2023-12-03 Sun 16:00-16:20 [[emacsconf:emacsconf][emacsconf]]: EmacsConf.org: How we use Org Mode and TRAMP to organize and run a multi-track conference (Sacha Chua)
+ - 2023-12-03 Sun 16:30-16:40 [[emacsconf:sun-close][sun-close]]: Sunday closing remarks
+*** Schedule announcements
+:PROPERTIES:
+:CUSTOM_ID: schedule-announcements
+:END:
+
+ - [2023-12-02 Sat] emacsconf:repl needs 60 minutes instead of 40, adjusting doc and windows
+ - [2023-12-01 Fri] emacsconf:gc needs 35 minutes, adjusting later talks (emacsconf:hyperdrive, emacsconf:lspocaml, emacsconf:test, emacsconf:emacsconf)
+ - [2023-12-01 Fri] emacsconf:windows now on Sat afternoon devel track and emacsconf:emacsconf now on Sunday afternoon devel track
+ - [2023-12-01 Fri] Cancelled emacsconf:taming
+ - [2023-11-29 Wed] Changed title for emacsconf:voice, changed emacsconf:table Q&A to after the conference
*** Schedule notes
:PROPERTIES:
:CUSTOM_ID: schedule-notes
:END:
-- Legend: dashed line means non-BBB Q&A; light gray means penciled-in talk
+- *Schedule changes after the schedule FYI email from 2023-10-05*:
+ - [2023-11-29 Wed] Allocated 15 minutes to [[emacsconf:lspocaml]]
+ - [2023-11-23 Thu] Allocated 30 minutes to emacsconf:test
+ - [2023-11-14 Tue] Update emacsconf:steno title; add Prot to emacsconf:hyperdrive
+ - [2023-11-04 Sat] Moved emacsconf:emacsen earlier to accommodate live session, moved emacsconf:test later to accommodate travel
+ - [2023-10-31 Tue] Cancelled hn, added emacsconf:doc before emacsconf:emacsconf
+ - Moved [[emacsconf:hyperdrive][hyperdrive]] talk to general track; removed afternoon break. Changed emacsconf:solo, emacsconf:unentangling, emacsconf:ref, emacsconf:devel, emacsconf:sat-close, emacsconf:overlay, emacsconf:eval, emacsconf:repl, emacsconf:hyperdrive, and emacsconf:world, but none of the talks moved by 2 hours or more, so no extra e-mails needed for now.
+ - [2023-10-08 Sun] Added [[emacsconf:core]]. Moved [[emacsconf:hyperdrive]] to Sun afternoon.
+ - [2023-10-09 Mon] Renamed =extending= to emacsconf:world and moved it to the morning to accommodate IST.
- Saturday on the General track: Org day + misc
- emacsconf:adventure is the first talk because of availability constraints; would be nice to connect it to emacsconf:solo
- emacsconf:uni for teaching, [[emacsconf:teaching]] is also related, and emacsconf:table for grading
- emacsconf:taming and emacsconf:one both deal with exports in some way. emacsconf:unentangling would be nice to add here, but that one needs to be in the afternoon because of availability constraints.
- emacsconf:writing is connected to emacsconf:nabokov (blog posts, novel). It's also a little connected to emacsconf:one (exporting a blog).
- - emacsconf:collab and emacsconf:solo are amusing to pair together, but maybe following emacsconf:collab (coordinating with other people who use Org) with emacsconf:woof (Org development coordination) also makes sense and makes it so that [[emacsconf:woof]] isn't too late (Europe/Paris timezone). I put emacsconf:woof on the general track because it's Org-related and could encourage people to help out. Penciled in because bzg isn't sure he'll make it.
- - [[emacsconf:unentangling]] and emacsconf:ref are also Org-related. emacsconf:ref would be nice to place together with emacsconf:nabokov, but that would move emacsconf:woof and emacsconf:unentangling too late.
+ - emacsconf:collab and emacsconf:solo are amusing to pair together.
+ - [[emacsconf:unentangling]] and emacsconf:ref are also Org-related. emacsconf:ref would be nice to place together with emacsconf:nabokov, but that would move emacsconf:unentangling too late.
- [[emacsconf:devel]] is not Org-related, but probably good to share with everyone.
- Saturday morning Development track: large language models, AI. Has to be morning because of emacsconf:matplotllm. emacsconf:llm is about general interfaces, so we can put that last. Could have a general LLM discussion after the talks. Can't swap it with Sunday morning because [[emacsconf:test]] should stick with [[emacsconf:hyperamp]] and emacsconf:koutline (Hyperbole talks), and the Hyperbole talks won't fit into Saturday morning
- Saturday afternoon, developer track: REPLs, misc talks
- start off with developer tweaks: emacsconf:overlay (compilation), and then emacsconf:eval and emacsconf:repl are paired together
- emacsconf:hyperdrive: adding another file protocol, using HTTP APIs
- - [[emacsconf:extending]] might just be replays of demos + Q&A session if people are interested
+ - [[emacsconf:world]] might be replays of demos + Q&A session if people are interested
- Sunday morning gen: Hyperbole (gen track, then crossing over to dev for testing) + misc talks
- Hyperbole mini-track is in the morning because of [[emacsconf:test]]'s availability constraints; emacsconf:hyperamp and emacsconf:koutline go before it. Try to avoid conflicts so they can attend each other's talks
- Sunday morning after emacsconf:test could be a fun extended "let's write tests together" session if someone wants to lead it
@@ -607,329 +713,655 @@ These times are in EST (GMT-5).
- Sort out access to media.emacsconf.org so that we can get the upload service up and running
- Draft brief intros for talks, keeping in mind that we're going to say them out loud
- Speakers will work on videos, and we can help with nudges/coordination if needed
+*** DONE E-mail all the speakers a link to the draft schedule
+CLOSED: [2023-10-05 Thu 15:38]
+so that they can confirm that I've got their availability correctly coded and ask for any adjustments in case they really want to attend someone else's Q&A session
+*** DONE Announce schedule publicly
+CLOSED: [2023-11-11 Sat 08:38] SCHEDULED: <2023-10-25 Wed>
+*** DONE Incorporate "About the speaker" info on the wiki pages :conforg:
+CLOSED: [2023-10-13 Fri 11:04]
+
+Good idea to include it because that gives people (a) more context on
+where a speaker is coming from, and (b) a feeling for the kinds of
+backgrounds and interests people have.
+*** TODO Follow up with people we haven't heard from in a while
+SCHEDULED: <2023-10-18 Wed>
+:PROPERTIES:
+:CUSTOM_ID: radio-silence
+:END:
-*** TODO Test the idea of three tracks and more aligned times :decision:
-DEADLINE: <2023-10-13 Fri>
+When do we want to do this?
+
+We don't have to worry too much, because we can offer them the option of doing it live,
+and we can have space in the schedule if they cancel last-minute.
+
+** Prepare for the conference
:PROPERTIES:
-:CUSTOM_ID: three-tracks
+:CUSTOM_ID: status
:END:
-Let's see if we can decide on this by [2023-10-13 Fri] so that we can
-e-mail the draft schedules to people.
+#+BEGIN: columnview :id local :match "STATUS={.}" :format "%20ITEM %10TODO %20STATUS"
+| ITEM | TODO | STATUS |
+|-------------------------+------------+----------------------------------------------------------------------------------|
+| Upload | DONE | Ready to go |
+| Prerec | DONE | Ready to go |
+| Captions | INPROGRESS | Ready to go; waiting for videos and captions |
+| Backstage | DONE | Ready to go |
+| Test assets | DONE | test videos generated |
+| BBB | | redirects created, confirmed; next: e-mail speakers testing/checkin instructions |
+| VNC | DONE | confirmed access to emacsconf-gen and emacsconf-dev |
+| OBS | DONE | confirmed that gen and dev can stream |
+| Icecast | DONE | gen and dev confirmed with MPV |
+| MPV | DONE | confirmed that mpv can watch both streams |
+| Watch page | DONE | updated for 2023 |
+| Status page | DONE | ready to go |
+| Public media | DONE | confirmed, set to protected so that we can test publishing live |
+| Mumble | DONE | confirmed gen and dev can connect, receive audio |
+| Etherpad | DONE | Ready to go, pads created |
+| Pad proxy | DONE | Ready to go, pad.emacsconf.org works |
+| Overlays | DONE | generated and uploaded |
+| Intros | INPROGRESS | all intros recorded, should send them to speakers for review |
+| IRC channels | | Not yet started |
+| IRC talk info | | Not yet started |
+| Announcements | | Not yet started |
+| Publishing updates live | | Not yet started |
+| Autopilot | | Not yet started |
+| YouTube | | Not yet started |
+| Peertube | | Not yet started |
+| 480p | | Delegated to corwin |
+| Audio processing | | Help wanted |
+#+END:
+*** Status
+
+#+begin_src emacs-lisp :results silent :exports none
+(let* ((emacsconf-schedule-svg-modify-functions '(emacsconf-schedule-svg-color-by-status))
+ (emacsconf-use-absolute-url t)
+ (img (emacsconf-schedule-svg 800 200 (emacsconf-publish-prepare-for-display (emacsconf-get-talk-info)))))
+ (with-temp-file "schedule.svg"
+ (svg-print img)
+ (buffer-string)))
+#+end_src
-Compared to [[#draft-schedule][two-track schedule]]:
-#+INCLUDE: schedule.svg export html
+[[my-include:schedule.svg]]
-What if we have three tracks instead?
+*** DONE Upload
+:PROPERTIES:
+:STATUS: Ready to go
+:CUSTOM_ID: upload
+:END:
-- Two-track advantages as in EmacsConf 2022:
- - Fewer volunteers needed (host, IRC, pad)
- - Can do with existing computing power (instead of spinning up another node for VNC+OBS)
- - Less fear of missing out for participants
- - votes: zaeph
-- Three-track advantages:
- - More space between talks for streaming the Q&A
- - Easier to explain the schedule
- - More logical grouping
- - Ends earlier, which is easier for participants from Europe
- - votes: max (Three tracks is the best policy if you’re more than 75% sure that you can round up the volunteers)
-- [[#three-tracks-sun-am][Three tracks just for Sunday morning]]:
- - Allows us to have 20 minutes between talks instead of 15
- - Might be easier to test the idea for just one part of the conference
-
-#+begin_src emacs-lisp :exports none
-(defun emacsconf-schedule-copy-previous-track (list)
- (cl-loop
- with track = (plist-get (car list) :track)
- with track-names = (seq-map (lambda (o) (plist-get o :name)) emacsconf-tracks)
- for talk in list
- collect
- (progn
- (when (member (plist-get talk :track) track-names)
- (setq track (plist-get talk :track)))
- (append (list :track track) talk))))
+**** DONE Get access to media.emacsconf.org so that we can set up the upload service and the backstage area
+CLOSED: [2023-10-13 Fri 10:01] SCHEDULED: <2023-10-03 Tue>
+:PROPERTIES:
+:CREATED: [023-09-26 Tue 10:3]
+:CUSTOM_ID: check-media-emacsconf
+:END:
+***** DONE Decide what to do for backstage area and upload service :decision:
+CLOSED: [2023-10-13 Fri 10:00] DEADLINE: <2023-10-13 Fri>
+:PROPERTIES:
+:CUSTOM_ID: res-or-media
+:END:
+
+- [2023-10-13 Fri]: Got access to media.emacsconf.org, set up the backstage area
+
+- res.emacsconf.org
+ - up right away, so people can get started on captions
+ - more memory than media.emacsconf.org - is the upload service thrashing?
+- media.emacsconf.org
+ - does not interfere with res streaming during the conference itself
+ - don't need to send people multiple e-mails, risk confusion/out-of-date info
+ - access to media.emacsconf.org might be sorted out by [2023-10-13 Fri]
+ - not in a big rush yet
+*** DONE Prerec
+CLOSED: [2023-10-17 Tue 09:50]
+:PROPERTIES:
+:CUSTOM_ID: prerec
+:STATUS: Ready to go
+:END:
+***** Set up for the new year
+As orga@res:
+
+- mkdir /data/emacsconf/$year
+- rm ~/current
+- ln -s /data/emacsconf/$year current
+- ln -s /data/emacsconf/$year $year
+
+When we receive files
+
+- change the TODO status to PROCESSING
+- mkdir ~/current/$slug
+- copy the files to there
+- rename-original $slug $file
+- process-prerec $video
+- Copy the files to the res:~/cache, laptop:~/proj/emacsconf/2023/cache, and media:~/backstage
+- emacsconf-cache-all-video-data
+- emacsconf-publish-info-pages
+- emacsconf-publish-backstage-index
+
+
+(check that the reencode.sh process has kicked off; if not, call reencode.sh $video $prefix--reencoded.webm)
+
+*** INPROGRESS Captions
+:PROPERTIES:
+:CUSTOM_ID: captions
+:STATUS: Ready to go; waiting for videos and captions
+:END:
+- OpenAI Whisper SaaS (https://platform.openai.com/docs/guides/speech-to-text/longer-inputs) limits audio files to 25MB, so it's probably easier to do it ourselves
+**** TODO E-mail previous captioning volunteers to see if they're interested in helping out
+SCHEDULED: <2023-11-04 Sat>
+:PROPERTIES:
+:CREATED: [023-10-16 Mon 12:5]
+:END:
+**** DONE E-mail captioning volunteers the backstage instructions
+CLOSED: [2023-10-16 Mon 12:57]
+**** DONE E-mail current caption volunteers backstage information, captioning process, etc.
+CLOSED: [2023-10-17 Tue 09:37] SCHEDULED: <2023-10-17 Tue>
+:PROPERTIES:
+:CREATED: [023-10-13 Fri 10:1]
+:END:
+
+I'll wait a few days for Yoni to get back to us about whether he wants
+to caption his own talk and/or seeing if other speakers will get their
+talks in.
+
+=emacsconf-mail-backstage-info=
+
+
+
+Hi ${name}!
+
+You're getting this e-mail because you have volunteered to help out
+with captions for ${conf-name} ${year}. (Thank you so much!)
+
+I'm so excited! =) We're starting to get recorded talks, which means
+it's time to get captions going. People really appreciate the
+captions, especially when the captions have been lovingly edited by
+volunteers who change things like "Emax" to "Emacs" and "metaX" to
+"M-x".
+
+Just like last year, we're using OpenAI Whisper to give us a
+reasonable starting point for transcripts. If working from scratch
+works better for you, you're welcome to do that too.
+
+We've set up ${backstage} as the backstage area where you can view the
+videos and resources uploaded so far. You can access it with the
+username "${backstage-user}" and the password "${backstage-password}".
+Please keep the backstage password and other speakers' talk resources
+secret. ${backstage-use}
+
+To call dibs on a video to caption, just send a message to me at
+sacha@sachachua.com and I can update the page so that it's assigned to
+you. You can e-mail me the edited captions when you're done. Don't
+worry too much about timestamps; we can re-align the text with the
+audio afterwards. If life gets suddenly busy and you can't see it all
+the way through, no worries. Just e-mail me what you've got and I'll
+put it back in the pool. Every little bit helps!
+
+Thank you!
+
+Sacha Chua
+
+**** TODO E-mail the emacsconf-org mailing list the announcement and the invitation to volunteer
+**** TODO [#C] Try out Deepgram, play around with it for last-minute submissions?
+**** DONE Get the autocaptions for emms up in the backstage area
+CLOSED: [2023-10-13 Fri 10:08] SCHEDULED: <2023-10-08 Sun>
+**** Captions lessons learned :lessons:
+- OpenAI had a breaking API change, need to call =whisper.utils.get_writer=
+ - https://github.com/dmarx/video-killed-the-radio-star/issues/101
+ #+begin_src python :eval no
+ vtt_writer = whisper.utils.get_writer('vtt', os.path.dirname(new_file))
+ txt_writer = whisper.utils.get_writer('txt', os.path.dirname(new_file))
+ vtt_writer(result, work['audio'], {'max_line_width': 60, 'max_line_count': None, 'highlight_words': None})
+ txt_writer(result, work['audio'], {'max_line_width': 60, 'max_line_count': None, 'highlight_words': None})
+ #+end_src
+
+**** Reencoding
+:PROPERTIES:
+:CUSTOM_ID: check-reencoding
+:END:
+*** DONE Backstage
+:PROPERTIES:
+:CUSTOM_ID: backstage
+:STATUS: Ready to go
+:END:
+*** DONE Test assets
+CLOSED: [2023-10-19 Thu 12:23]
+:PROPERTIES:
+:CUSTOM_ID: test
+:STATUS: autopilot tested, seems to work
+:END:
+
+[[/ssh:res:/data/emacsconf/2023/assets/test]]
+
+**** DONE Generate test videos
+CLOSED: [2023-10-19 Thu 12:23]
+**** Try autopilot
+
+#+begin_src emacs-lisp :eval no
+(let* ((offset-seconds 60)
+ (start-time (time-add (current-time) offset-seconds))
+ (emacsconf-schedule-validation-functions nil)
+ (emacsconf-schedule-default-buffer-minutes 1)
+ (emacsconf-schedule-default-buffer-minutes-for-live-q-and-a 1)
+ (emacsconf-schedule-strategies '(emacsconf-schedule-allocate-buffer-time
+ emacsconf-schedule-copy-previous-track))
+ (schedule (emacsconf-schedule-prepare
+ (emacsconf-schedule-inflate-sexp
+ `(("GEN"
+ :start ,(format-time-string "%Y-%m-%d %H:%M" start-time)
+ :set-track "General")
+ (sat-open :time 1)
+ (adventure :time 1) ; pad Q&A
+ (uni :time 1) ; live Q&A
+ (teaching :time 1)
+ (table :time 1)
+ (taming :time 1)
+ (one :time 1)
+ (cubing :time 1) ; IRC
+ ("DEV"
+ :start
+ ,(format-time-string "%Y-%m-%d %H:%M" (time-add start-time 60))
+ :set-track "Development")
+ (matplotllm :time 1)
+ (gc :time 1) ; pad
+ (repl :time 1) ; IRC
+ (voice :time 1)
+ (llm :time 1)
+ (overlay :time 1)
+ (eval :time 1)
+ (emacsconf :time 1))))))
+ (emacsconf-stream-crontabs t schedule))
#+end_src
-#+begin_src emacs-lisp :results value replace :exports results :var filename="schedule-option-aligned-talks.svg" :eval never-export
-(emacsconf-schedule-test
- filename
- (emacsconf-schedule-tracks
- '((:label "Saturday"
- :start "2023-12-02 9:00"
- :end "2023-12-02 18:00"
- :tracks ("A" "B" "C"))
- (:label "Sunday"
- :start "2023-12-03 9:00"
- :end "2023-12-03 18:00"
- :tracks ("A" "B" "C"))))
- (emacsconf-time-constraints '())
- (emacsconf-tracks
- '((:name "A" :id "a")
- (:name "B" :id "b")
- (:name "C" :id "c")))
- (arranged
- (emacsconf-schedule-inflate-sexp
- '(("A Saturday, Dec 2" :start "2023-12-02 09:00" :track "A")
- (sat-open)
- adventure
- (uni :start "9:40")
- (table :start "10:30")
- (teaching :start "11:15")
- (lunch :start "12:00" :time 60)
- collab
- (woof :start nil)
- (solo :start nil)
- (hn :start "15:00")
- (web :start nil)
- sat-close
- ("B Saturday, Dec 2" :start "2023-12-02 09:40" :track "B")
- (one :start nil)
- (poltys :start "10:30")
- (taming :start "11:15")
- (lunch :start "12:00" :time 60)
- writing
- (nabokov :start "13:40")
- (steno :start "14:20")
- (emacsen :start "15:30")
- ("C Saturday, Dec 2" :start "2023-12-02 9:40" :track "C")
- (matplotllm)
- (voice :start "10:30")
- (llm :start "11:15")
- (lunch :start "12:00" :time 60)
- overlay
- eval
- (repl :start "14:20")
- (emacsconf :start "15:30")
- ("A Sunday, Dec 3" :start "2023-12-03 09:00" :track "A")
- (sun-open :time 10)
- hyperamp
- (koutline :start "10:00")
- (test :start "11:00")
- (lunch :start "12:00" :time 60)
- (emms :start nil)
- (devel :start "14:00")
- (mentor :start nil)
- (sharing :start "15:00")
- (sun-close :start "16:00")
- ("B Sunday, Dec 3" :start "2023-12-03 09:10" :track "B")
- (parallel :start "10:00")
- (eat :start "10:30")
+#+begin_src emacs-lisp :eval no
+(let* ((offset-seconds 240)
+ (start-time (time-add (current-time) offset-seconds))
+ (emacsconf-schedule-validation-functions nil)
+ (emacsconf-schedule-default-buffer-minutes 5)
+ (emacsconf-schedule-default-buffer-minutes-for-live-q-and-a 5)
+ (emacsconf-schedule-strategies
+ '(emacsconf-schedule-ignore-fixed
+ emacsconf-schedule-allocate-buffer-time
+ emacsconf-schedule-copy-previous-track))
+ (schedule (emacsconf-schedule-prepare
+ (emacsconf-schedule-inflate-sexp
+ `(("GEN"
+ :start ,(format-time-string "%Y-%m-%d %H:%M" start-time)
+ :set-track "General")
+ (sat-open)
+ (sun-open)
+ ("DEV"
+ :start
+ ,(format-time-string "%Y-%m-%d %H:%M" (time-add start-time 60))
+ :set-track "Development")
+ (emacsconf))))))
+ (emacsconf-stream-crontabs nil schedule))
+#+end_src
- (gc :start "11:00")
- (lunch :start "12:00" :time 60)
- hyperdrive
- (ref :start "14:00")
- (unentangling :start "15:00")
- ("C Sunday, Dec 3" :start "2023-12-03 09:10" :track "C")
+*** BBB
+:PROPERTIES:
+:CUSTOM_ID: bbb
+:STATUS: redirects created, confirmed; next: e-mail speakers testing/checkin instructions
+:END:
- (scheme :start "10:00")
- (lspocaml :start "11:00")
- (flat :start "11:30")
+Generate them for possibly live presentations as well? We'll see.
- (lunch :start "12:00" :time 60)
- (windows :start nil)
- (cubing :start "14:00")
- (extending :start "15:00")
-
+**** DONE Generate redirects
+CLOSED: [2023-10-17 Tue 12:55]
+:PROPERTIES:
+:CUSTOM_ID: generate-redirects
+:Effort: 0:30
+:END:
+:LOGBOOK:
+CLOCK: [2023-10-17 Tue 12:46]--[2023-10-17 Tue 12:55] => 0:09
+:END:
- )))
- (emacsconf-schedule-break-time 10)
- (emacsconf-schedule-lunch-time 60)
- (emacsconf-schedule-default-buffer-minutes 20)
- (emacsconf-schedule-svg-modify-functions '(emacsconf-schedule-svg-color-by-status))
- (emacsconf-schedule-default-buffer-minutes-for-live-q-and-a 20)
- (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))
- (emacsconf-schedule-strategies
- '(emacsconf-schedule-copy-previous-track emacsconf-schedule-allocate-buffer-time)))
+We use redirects for Q&A sessions with BBB web conferences so that people can easily join the web conference.
+
+- elisp:emacsconf-publish-bbb-static-redirects: generate static redirects
+- elisp:emacsconf-publish-bbb-redirect-all
+
+**** DONE Generate BBB rooms
+CLOSED: [2023-10-17 Tue 09:41]
+:PROPERTIES:
+:CUSTOM_ID: generate-bbb
+:END:
+
+BBB name convention from last year
+
+ec22-sat-am-dev Abin Simon (treesitter)
+
+That means things change if I move to a different time or track.
+Other option:
+
+ec23 Speaker Name (talk-ids)
+
+
+Deleting old rooms:
+
+#+begin_src emacs-lisp
+(spookfox-js-injection-eval-in-active-tab "[...document.querySelectorAll('.delete-room')].filter((o) => o.getAttribute('data-name').match(/ec22/))[0].click(); document.querySelector('#delete-confirm').click();" t)
#+end_src
-#+RESULTS:
-:results:
-:end:
+Creating new rooms
-#+begin_comment
-[[file:schedule-option-aligned-talks.svg]]
-#+end_comment
+#+begin_src emacs-lisp
+(defun emacsconf-spookfox-create-bbb (group)
+ "Create a BBB room for this group of talks.
+GROUP is (email . (talk talk talk)).
+Needs a Spookfox connection."
+ (interactive (list (emacsconf-mail-complete-email-group)))
+ (let* ((bbb-name
+ (format "%s (%s) - %s%s"
+ (mapconcat (lambda (o) (plist-get o :slug)) (cdr group) ", ")
+ (plist-get (cadr group) :speakers)
+ emacsconf-id
+ emacsconf-year))
+ path
+ (retrieve-command (format "window.location.origin + [...document.querySelectorAll('h4.room-name-text')].find((o) => o.textContent.trim() == '%s').closest('tr').querySelector('.delete-room').getAttribute('data-path')" bbb-name))
+ (create-command (format "name=\"%s\";
+console.debug(name);
+console.debug(document.querySelector('#create-room-block'));
+document.querySelector('#create-room-block').click();
+console.debug(document.querySelector('#create-room-name'));
+document.querySelector('#create-room-name').value = name;
+document.querySelector('#room_mute_on_join').click();
+document.querySelector('.create-room-button').click();"
+ bbb-name)))
+ (setq path (spookfox-js-injection-eval-in-active-tab retrieve-command t))
+ (unless path
+ (kill-new create-command)
+ (dolist (cmd (split-string create-command ";"))
+ (spookfox-js-injection-eval-in-active-tab cmd t)
+ (sleep-for 2))
+ (sleep-for 2)
+ (setq path (spookfox-js-injection-eval-in-active-tab retrieve-command t)))
+ (when path
+ (dolist (talk (cdr group))
+ (save-window-excursion
+ (emacsconf-with-talk-heading talk
+ (org-entry-put (point) "ROOM" path))))
+ (cons bbb-name path))))
+
+(let ((groups
+ (emacsconf-mail-groups
+ (seq-filter
+ (lambda (o)
+ (and (string-match "live" (or (plist-get o :q-and-a) ""))
+ (not (plist-get o :bbb-room))))
+ (emacsconf-publish-prepare-for-display (emacsconf-get-talk-info))))))
+ (dolist (group groups)
+ (emacsconf-spookfox-create-bbb group)))
+#+end_src
+**** DONE Possibly generate BBB rooms for live presentations?
+CLOSED: [2023-12-01 Fri 14:13] SCHEDULED: <2023-11-10 Fri>
+**** DONE Send testing instructions
+CLOSED: [2023-12-01 Fri 14:13] SCHEDULED: <2023-11-10 Fri>
+*** DONE VNC
+:PROPERTIES:
+:CUSTOM_ID: vnc
+:STATUS: confirmed access to emacsconf-gen and emacsconf-dev
+:END:
+
+We use VNC to connect to the X servers on res.emacsconf.org so that we can stream from it.
+
+Success:
+- [X] Confirm that you can connect to emacsconf-gen via VNC
+- [X] Confirm that you can connect to emacsconf-dev via VNC
-#+INCLUDE: schedule-option-aligned-talks.svg export html
-**** Three tracks for Sunday morning?
+Setting up
+- elisp:emacsconf-publish-res-index
+
+**** Instructions
:PROPERTIES:
-:CUSTOM_ID: three-tracks-sun-am
+:CUSTOM_ID: vnc-instructions
:END:
+NOTE: VNC+OBS doesn't work well if you have a window manager that
+automatically resizes windows, like i3. Please configure your window
+manager so that the VNC window is not resized.
+ 1. Install a VNC viewer on your system (ex: tigervnc-viewer).
-#+begin_src emacs-lisp :results value replace :exports results :var filename="schedule-option-sun-am.svg" :eval never-export
-(emacsconf-schedule-test
- filename
- (emacsconf-schedule-tracks
- '((:label "Saturday"
- :start "2023-12-02 9:00"
- :end "2023-12-02 18:00"
- :tracks ("A" "B" "C"))
- (:label "Sunday"
- :start "2023-12-03 9:00"
- :end "2023-12-03 18:00"
- :tracks ("A" "B" "C"))))
- (emacsconf-time-constraints '())
- (emacsconf-tracks
- '((:name "A" :id "a")
- (:name "B" :id "b")
- (:name "C" :id "c")))
- (arranged
- (emacsconf-schedule-inflate-sexp
- '(("A Saturday, Dec 2" :start "2023-12-02 09:00" :track "A")
- sat-open
- adventure
- uni
- table
- teaching
- writing
- (lunch :start "12:00")
- nabokov
- collab
- (woof)
- solo
- unentangling
- ref
- (devel)
- (sat-close)
- ("DEV Saturday, Dec 2" :start "2023-12-02 10:00" :track "B")
- (matplotllm)
- (voice)
- (llm)
- (lunch :start "12:00")
- (overlay)
- (eval)
- (repl :start "14:00")
- (hyperdrive)
- (extending)
- ("GEN Sunday, Dec 3" :start "2023-12-03 09:00" :track "A")
- sun-open
- hyperamp
- koutline
- one
- cubing
- (lunch :start "12:00" :time 60)
- (emms)
- taming
- mentor
- (hn :start "15:00")
- web
- sharing
- sun-close
- ("DEV Sunday, Dec 3" :start "2023-12-03 10:00" :track "B")
- scheme
- eat
- (flat)
- lspocaml
- (lunch :start "12:15" :time "45")
- gc
- (steno)
- (windows)
- (emacsen)
- (emacsconf)
- ("C Sunday Dec 3" :start "2023-12-03 10:00" :track "C")
- poltys
- (parallel)
- test
- )))
- (emacsconf-schedule-break-time 10)
- (emacsconf-schedule-lunch-time 60)
- (emacsconf-schedule-default-buffer-minutes 20)
- (emacsconf-schedule-svg-modify-functions '(emacsconf-schedule-svg-color-by-status))
- (emacsconf-schedule-default-buffer-minutes-for-live-q-and-a 20)
- (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))
- (emacsconf-schedule-strategies
- '(emacsconf-schedule-copy-previous-track emacsconf-schedule-allocate-buffer-time)))
+ 2. Set up your local environment:
+
+ - gen: export TRACK=gen; export TRACK_PORT=5905; export SSH_PORT=46668
+ - dev: export TRACK=dev; export TRACK_PORT=5906; export SSH_PORT=46668
+
+ 3. Copy the password:
+
+ scp emacsconf-$TRACK@res.emacsconf.org:~/.vnc/passwd vnc-passwd-$TRACK -p $SSH_PORT
+
+ 4. Forward your local ports and connect via VNC viewer to the
+ appropriate forwarded port from your laptop:
+
+ #+begin_example
+ ssh emacsconf-$TRACK@res.emacsconf.org -N -L $TRACK_PORT:127.0.0.1:$TRACK_PORT -p $SSH_PORT &
+ sleep 5 # Give it time to establish the tunnels
+ xvncviewer 127.0.0.1:$TRACK_PORT -shared -geometry 1280x720 -passwd vnc-passwd-$TRACK &
+ #+end_example
+
+If you get the following error:
+
+#+begin_example
+channel 2: open failed: connect failed: Connection refused
+CConn: End of stream
+CConn: The connection was dropped by the server before the session could
+ be established.
+#+end_example
+
+then the VNC server hasn't started yet. You can start it with
+
+#+begin_src sh :eval no
+ssh emacsconf-$TRACK@res.emacsconf.org -p $SSH_PORT /home/emacsconf-$TRACK/bin/track-vnc
#+end_src
-#+RESULTS:
-:results:
-:end:
+and then connect with:
-#+begin_comment
-[[file:schedule-option-sun-am.svg]]
-#+end_comment
+#+begin_src sh :eval no
+xvncviewer 127.0.0.1:$TRACK_PORT -shared -geometry 1280x720 -passwd vnc-passwd-$TRACK &
+#+end_src
-#+INCLUDE: schedule-option-sun-am.svg export html
+**** TODO Ask bandali or zaeph to share their window manager configuration :bandali:zaeph:
-** Prepare infrastructure
+*** DONE OBS
:PROPERTIES:
-:CUSTOM_ID: check-infra
+:CUSTOM_ID: obs
+:STATUS: confirmed that gen and dev can stream
:END:
-*** WAITING Get access to media.emacsconf.org so that we can set up the upload service and the backstage area
-SCHEDULED: <2023-10-03 Tue>
+
+We use OBS to stream to Icecast on live.emacsconf.org.
+
+Success: Confirm that you can stream
+- [X] gen
+- [X] dev
+
+New year: reprovision with
+
+#+begin_src sh :eval no
+ansible-playbook -i inventory.yml prod-playbook.yml --tags obs
+#+end_src
+
+so that the year is updated in the shell scripts.
+
+**** Instructions
:PROPERTIES:
-:CREATED: [023-09-26 Tue 10:3]
-:CUSTOM_ID: check-media-emacsconf
+:CUSTOM_ID: obs-instructions
:END:
-*** TODO Double-check streaming on res
+
+1. [[#vnc-instructions][Connect to the VNC session for the track.]]
+
+2. Start *recording* (not streaming). If you don't see OBS when you connect, it's probably on workspace 2, so you can switch with Alt-2. If you still don't see it there, you can open a terminal with Alt-Enter and then run ~track-obs~. After you start recording, confirm that it is now broadcasting to the stream.
+
+3. Verify with MPV on your local system:
+
+ #+begin_example
+ mpv https://live0.emacsconf.org/$TRACK.webm &
+ #+end_example
+
+**** DONE Double-check OBS setup and streaming on res
+CLOSED: [2023-10-17 Tue 10:22]
:PROPERTIES:
:CUSTOM_ID: check-streaming
:END:
-*** TODO Double-check icecast
+*** DONE Icecast
+CLOSED: [2023-10-17 Tue 10:30]
+:PROPERTIES:
+:CUSTOM_ID: icecast
+:STATUS: gen and dev confirmed with MPV
+:END:
+
+Success: You can use [[#obs-instructions][OBS+VNC to record]], and the results can be viewed by mpv.
+- [X] Gen
+- [X] Dev
+
+New year: reprovision with
+
+#+begin_src sh :eval no
+ansible-playbook -i inventory.yml prod-playbook.yml --tags stream
+#+end_src
+
+so that the year is updated in the configuration.
+
+This is on live.emacsconf.org and can be restarted with =/etc/init.d/emacsconf restart=.
+
+**** DONE Double-check icecast
+CLOSED: [2023-10-17 Tue 10:30]
:PROPERTIES:
:CUSTOM_ID: check-icecast
:END:
-*** TODO Figure out a better way to handle 480p stream
-It kept dropping last year and sachac didn't have the mental bandwidth to figure it out
-*** BLOCKED Create pads for all the talks
+*** DONE MPV
:PROPERTIES:
-:CUSTOM_ID: create-pads
+:CUSTOM_ID: mpv
+:STATUS: confirmed that mpv can watch both streams
+:END:
+*** DONE Watch page
+:PROPERTIES:
+:CUSTOM_ID: watch
+:STATUS: updated for 2023
+:END:
+
+live.emacsconf.org is on the front0.emacsconf.org server.
+
+To set up for the year:
+
+1. Create directories and update the Nginx configuration
+ #+begin_src sh :eval no
+ ansible-playbook -i inventory.yml prod-playbook.yml --tags live
+ #+end_src
+
+2. Generate the pages
+ #+begin_src emacs-lisp :eval no
+ (emacsconf-publish-watch-pages)
+ #+end_src
+
+3. Add the $year/watch to the wiki.
+
+4. Create a $year/watch.md manually.
+
+*** DONE Status page
+:PROPERTIES:
+:CUSTOM_ID: status
+:STATUS: ready to go
:END:
-Because the pads refer to the next and previous talks and include the talk titles, this is best done after the schedule has settled down.
+Manually maintained
+
+/ssh:front0.emacsconf.org:/var/www/status.emacsconf.org/index.html
-*** TODO Doublecheck prerec processing workflow
+*** DONE Public media
:PROPERTIES:
-:CUSTOM_ID: check-prerec
+:CUSTOM_ID: media
+:STATUS: confirmed, set to protected so that we can test publishing live
:END:
-**** Captions
+
+Start of year:
+
+1. Set =media_protect_root= to true in Ansible =group_vars/all.yml=.
+2. =ansible-playbook -i inventory.yml prod-playbook.yml --tags media=
+3. Generate the index with =emacsconf-publish-update-media=
+
+Confirm by setting a submitted talk to =PLAYING= and testing with
+elisp:emacsconf-publish-media-files-on-change . The public media
+directory should have the files and the entry should be in the index.
+Switching it back to =TO_STREAM= and calling
+elisp:emacsconf-publish-media-files-on-change should remove it.
+
+**** TODO Switch public media to unprotected root before the conference
+SCHEDULED: <2023-11-25 Sat>
+
+1. Clear public media directory.
+2. Set =media_protect_root= to false in Ansible =prod-vars.yml=.
+3. =ansible-playbook -i inventory.yml prod-playbook.yml --tags media=
+
+You can generate the index with =emacsconf-publish-update-media=.
+
+*** DONE Mumble
:PROPERTIES:
-:CUSTOM_ID: check-captions
+:CUSTOM_ID: mumble
+:STATUS: confirmed gen and dev can connect, receive audio
:END:
-**** Reencoding
+
+If you see =Server connection rejected: Wrong certificate or password.=, use *Certificate Wizard* to reimport the .p12 file in that user's home directory.
+
+*** DONE Etherpad
:PROPERTIES:
-:CUSTOM_ID: check-reencoding
+:CUSTOM_ID: etherpad
+:STATUS: Ready to go, pads created
:END:
-** Prepare assets
+
+[[elisp:emacsconf-pad-prepopulate-all-talks]]
+
+**** DONE Create pads for all the talks
+CLOSED: [2023-10-17 Tue 09:46] SCHEDULED: <2023-11-05 Sun>
+:PROPERTIES:
+:CUSTOM_ID: create-pads
+:CREATED: [023-10-13 Fri 10:1]
+:END:
+
+Because the pads refer to the next and previous talks and include the talk titles, this is best redone after the schedule has settled down.
+*** DONE Pad proxy
:PROPERTIES:
-:CUSTOM_ID: prepare-assets
+:CUSTOM_ID: proxy
+:STATUS: Ready to go, pad.emacsconf.org works
:END:
-*** TODO Generate intro slides and overlays
+*** DONE Overlays
:PROPERTIES:
-:CUSTOM_ID: generate-intro
+:CUSTOM_ID: overlays
+:STATUS: generated and uploaded
:END:
-We generate intro slides to display in between talks so that people
-can find out information about the previous talk and learn about the
-next talk. It includes talk titles, speaker names, URLs, and Q&A
-methods. The image will also be used for an introduction video if we
-can record one before the conference.
+[[elisp:emacsconf-stream-generate-overlays]]
-We also generate overlays that show talk information during the talk
-itself.
+*** INPROGRESS Intros
+:PROPERTIES:
+:CUSTOM_ID: intros
+:STATUS: all intros recorded, should send them to speakers for review
+:END:
-SVGs don't support line-wrapping, so it helps to do a quick pass to
-make sure all the talks are displayed properly.
+Intro slides
-*** BLOCKED Generate redirects
-:PROPERTIES:
-:CUSTOM_ID: generate-redirects
+elisp:emacsconf-stream-generate-in-between-pages
+elisp:emacsconf-pad-expand-intro
+[[elisp:emacsconf-subed-intro-subtitles][elisp:emacsconf-subed-intro-subtitles]]
+
+http://ipa-reader.xyz/
+
+
+**** DONE Regenerate overlays
+CLOSED: [2023-10-31 Tue 10:36]
+**** TODO Add all intros to the backstage so that people can review them
+:LOGBOOK:
+- State "DONE" from "TODO" [2023-10-31 Tue 10:34]
:END:
-We use redirects for Q&A sessions with BBB web conferences so that people can easily join the web conference. This is blocked while waiting for media.emacsconf.org.
+**** TODO Record intro for Mike Hamrick
-*** TODO Write 1-2 sentence intros for all the talks
+Next, we have "Literate Documentation with Emacs and Org Mode", by Mike Hamrick. He will answer questions via BigBlueButton. You can join using the URL from the talk page or ask questions through Etherpad or IRC.
+
+
+**** CANCELLED Write 1-2 sentence intros for all the talks
+CLOSED: [2023-10-17 Tue 15:03]
:PROPERTIES:
:CUSTOM_ID: write-intros
:END:
@@ -957,12 +1389,32 @@ Actually recording the introductions can wait until closer to the
conference because talk titles and Q&A methods can change. We can
verify speaker name pronunciations at that time.
-**** TODO Do we want to use honorifics like Dr.? :decision:
-DEADLINE: <2023-11-14 Tue>
+Hmm... Actually, we can go ahead and record all of these so that
+speakers can doublecheck pronunciations, and then we'll re-record them
+in case someone wants to get fancier about intros.
+
+***** Intros :levels:
+
+- Good: Use the same template as before: In this talk, SPEAKER shares
+ TITLE OR SUMMARY. Afterwards, PRONOUN will handle questions over Q&A
+ METHOD.
+- Better: Include some more biographical information to give listeners some context.
+
+
+***** DONE Do we want to use honorifics like Dr.? :decision:
+CLOSED: [2023-10-03 Tue 15:38] DEADLINE: <2023-11-14 Tue>
:PROPERTIES:
:CUSTOM_ID: honorifics
:END:
+DECISION: Include in the intro-review email:
+#+begin_quote
+We will usually introduce you by your first name (or handle, if you
+prefer to go by a pseudonym) but if you'd rather be introduced
+differently (for example honorific followed by last-name, or whatever
+you prefer), just let us know.
+#+end_quote
+
Let's see if we can decide on this by [2023-11-04 Fri] so that we can
use it when recording the intros.
@@ -970,7 +1422,7 @@ use it when recording the intros.
speaker-submitted intros (as in previous EmacsConfs)
- Equality
- votes: zaeph
-- OPTION: Asking speakers if they want us to use any honorifics in their intro:
+- CHOSEN: Asking speakers if they want us to use any honorifics in their intro:
- Observes personal preferences
- votes: corwin, max, jc (We can also say that we prefer not to use honorifics (it's not an academic
- Corwin's suggested wording: We will usually introduce you by your first name (or handle, if you prefer to go by a pseudonym) but if you'd rather be introduced
@@ -980,15 +1432,468 @@ use it when recording the intros.
- OPTION: Using honorifics based on e-mail signatures and intros:
- Recognizes credentials
-*** BLOCKED Record intro videos with 1-2 sentence intros for all the talks
+**** DONE Record intro videos with 1-2 sentence intros for all the talks
+CLOSED: [2023-10-19 Thu 12:22] SCHEDULED: <2023-10-18 Wed>
:PROPERTIES:
:CUSTOM_ID: record-intros
:END:
-** Coordinate volunteers
+**** DONE Record the rest of the intros
+CLOSED: [2023-10-19 Thu 12:22]
+:PROPERTIES:
+:CREATED: [2023-10-18 Wed 09:35]
+:END:
+**** DONE Generate intro slides
+CLOSED: [2023-10-18 Wed 09:46]
+:PROPERTIES:
+:CUSTOM_ID: generate-intro
+:END:
+
+We generate intro slides to display in between talks so that people
+can find out information about the previous talk and learn about the
+next talk. It includes talk titles, speaker names, URLs, and Q&A
+methods. The image will also be used for an introduction video if we
+can record one before the conference.
+
+We also generate overlays that show talk information during the talk
+itself.
+
+SVGs don't support line-wrapping, so it helps to do a quick pass to
+make sure all the talks are displayed properly.
+
+Hmm... Maybe I should take the names and pronouns off the video
+overlay? Then there's less worry about wrapping, and people can always
+go to the URL to get more information.
+
+elisp:emacsconf-stream-generate-in-between-pages
+**** TODO Ask speakers to review intros
+SCHEDULED: <2023-11-10 Fri>
+after they've uploaded their videos, since we might be able to check the pronunciation ourselves
+
+*** IRC channels
+:PROPERTIES:
+:CUSTOM_ID: irc
+:STATUS: Not yet started
+:END:
+
+- /opall
+- /conftopic
+- /deopall
+**** TODO Confirm that the emacsconf user can connect
+I think I had that on orga@res.emacsconf.org
+*** IRC talk info
+:PROPERTIES:
+:CUSTOM_ID: irc-talk-info
+:STATUS: Not yet started
+:END:
+*** Announcements
+:PROPERTIES:
+:CUSTOM_ID: announcements
+:STATUS: Not yet started
+:END:
+*** Publishing updates live
+:PROPERTIES:
+:CUSTOM_ID: publish
+:STATUS: Not yet started
+:END:
+*** Autopilot
+:PROPERTIES:
+:CUSTOM_ID: autopilot
+:STATUS: Not yet started
+:END:
+*** YouTube
+:PROPERTIES:
+:CUSTOM_ID: youtube
+:STATUS: Not yet started
+:END:
+*** Peertube
+:PROPERTIES:
+:CUSTOM_ID: peertube
+:STATUS: Not yet started
+:END:
+*** 480p
+:PROPERTIES:
+:STATUS: Delegated to corwin
+:END:
+
+Consider increasing memory/cpu configuration on live?
+
+**** TODO Figure out a better way to handle 480p stream :corwin:
+:PROPERTIES:
+:CUSTOM_ID: lowres
+:END:
+
+It kept dropping last year and sachac didn't have the mental bandwidth to figure it out.
+Might need another node so that we don't risk it getting killed for memory reasons?
+
+Corwin has volunteered to take this on
+*** Audio processing
+:PROPERTIES:
+:CUSTOM_ID: audio-proc
+:STATUS: Help wanted
+:END:
+
+**** TODO Find volunteers for audio processing (normalization, noise reduction) and document the process :helpwanted:
+:PROPERTIES:
+:CUSTOM_ID: audio
+:END:
+
+- audio normalization
+- noise reduction
+*** Other things people can help with
+:PROPERTIES:
+:CUSTOM_ID: other-help
+:END:
+**** TODO Video editing: the eval talk is a little bit out of sync :helpwanted:
+DEADLINE: <2023-11-15 Wed>
+:PROPERTIES:
+:CUSTOM_ID: eval-video-sync
+:END:
+
+The circular video inset into
+https://media.emacsconf.org/2023/backstage/#eval is a little bit out
+of sync with the audio. Not sure if the screenshare is offset as well.
+Maybe just nudging the audio a little bit will be enough to bring
+these in sync? If someone would like to fix this, that would be
+awesome.
+
+*** TODO [#C] Write something for merging in information from previous years if not specified
+:PROPERTIES:
+:CUSTOM_ID: previous-years
+:END:
+- availability
+- timezone
+- name
+- short name
+- pronouns
+** Get ready for production :preflight:
+:PROPERTIES:
+:CUSTOM_ID: go-live
+:END:
+*** A day or two before
+**** DONE Update the variables
+CLOSED: [2023-12-01 Fri 17:34]
+[[emacsconf-ansible:group_vars/all.yml]]:
+
+#+begin_example
+test_mode: false
+media_protect_root: false
+protect_stream_with_password: false
+#+end_example
+
+#+begin_src sh :eval no
+ansible-playbook -i inventory.ml prod-playbook.yml --tags stream
+ansible-playbook -i inventory.ml prod-playbook.yml --tags media
+#+end_src
+**** DONE [#A] Test the 480p!
+CLOSED: [2023-12-01 Fri 20:21]
+**** DONE Resize the nodes :bandali:
+CLOSED: [2023-12-01 Fri 20:21]
+
+2022:
+- Front: 16GB
+- Live: 64GB
+
+**** TODO Update the BigBlueButton rooms so that users are not all moderators
+
+#+begin_src emacs-lisp :eval no
+(require 'emacsconf-spookfox)
+(dolist (talk (emacsconf-publish-prepare-for-display (emacsconf-get-talk-info)))
+ (emacsconf-spookfox-update-bbb-settings
+ talk
+ '(("room_mute_on_join" . "true")
+ ("room_all_join_moderator" . "false")
+ ("room_anyone_can_start" . "true"))
+ ))
+#+end_src
+**** TODO Make sure conf.org and the publishing wiki are up to date
+*** On the day of the conference
+**** TODO Update the emacsconf-tracks status
+** Harvest cool stuff
+
+
+
+*** Harvesting
+
+- download published recordings: [[defun:emacsconf-harvest-download-published-recordings]]
+
+*** TODO Announce that videos have been uploaded :emacsconf:
+SCHEDULED: <2023-12-08 Fri>
+*** When the speaker posts a video to their own channel :process:
+1. Open the video.
+2. Add it to the playlist.
+3. Open the playlist: https://www.youtube.com/playlist?list=PLomc4HLgvuCUdrW3JkugtKv8xPelUoOyP
+4. Move the video to the correct place.
+5. Open the old video.
+6. Remove the old video from the playlist.
+7. Edit the video. Add the link to the new video in the description.
+8. Select *Editor* from the left side. Add an info card and maybe an end screen pointing to the new video.
+9. Update the ~YOUTUBE_URL~ property in the conf.org file. Commit and push.
+
+*** DONE Figure out which published presentations don't have any deskshare, so I can just upload those directly
+CLOSED: [2023-12-07 Thu 14:52]
+:LOGBOOK:
+- State "DONE" from "TODO" [2023-12-07 Thu 14:52]
+:END:
+
+The following talks do not have deskshares and can therefore be published by copying webcams.webm.
+#+begin_src emacs-lisp
+(seq-keep
+ (lambda (o)
+ (when (plist-get o :bbb-meeting-id)
+ (let* ((xml-file
+ (expand-file-name "deskshare.xml"
+ (expand-file-name (plist-get o :bbb-meeting-id) emacsconf-harvest-bbb-published-dir)))
+ (dom (and (file-exists-p xml-file)
+ (xml-parse-file xml-file))))
+ (unless (and dom (dom-by-tag dom 'event))
+ (plist-get o :slug)))))
+ (emacsconf-get-talk-info))
+#+end_src
+
+#+RESULTS:
+:results:
+(uni nabokov solo devel core parallel emms mentor web sharing llm overlay doc hyperdrive lspocaml windows)
+:end:
+
+#+begin_src emacs-lisp
+(defun emacsconf-harvest-bbb-copy-webcams-only-sessions ()
+ "Copy the webcam-only Q&A sessions as --answers.webm in the cache directory."
+ (interactive)
+ (seq-keep
+ (lambda (o)
+ (when (and (plist-get o :bbb-meeting-id)
+ (file-exists-p
+ (expand-file-name "video/webcams.webm"
+ (expand-file-name (plist-get o :bbb-meeting-id) emacsconf-harvest-bbb-published-dir))))
+ (let* ((xml-file
+ (expand-file-name "deskshare.xml"
+ (expand-file-name (plist-get o :bbb-meeting-id) emacsconf-harvest-bbb-published-dir)))
+ (dom (and (file-exists-p xml-file)
+ (xml-parse-file xml-file))))
+ (unless
+ (and dom
+ (dom-by-tag dom 'event))
+ (unless (file-exists-p (expand-file-name
+ (concat (plist-get o :file-prefix) "--answers.webm")
+ emacsconf-cache-dir))
+ (copy-file
+ (expand-file-name "video/webcams.webm"
+ (expand-file-name (plist-get o :bbb-meeting-id) emacsconf-harvest-bbb-published-dir))
+ (expand-file-name (concat (plist-get o :file-prefix) "--answers.webm")
+ emacsconf-cache-dir)))
+ (plist-get o :slug)))))
+ (emacsconf-get-talk-info)))
+#+end_src
+
+#+RESULTS:
+:results:
+emacsconf-harvest-bbb-copy-webcams-only-sessions
+:end:
+
+#+begin_src emacs-lisp
+(emacsconf-harvest-bbb-copy-webcams-only-sessions)
+#+end_src
+
+#+RESULTS:
+:results:
+(uni nabokov solo devel parallel emms mentor web sharing llm overlay doc hyperdrive lspocaml windows)
+:end:
+
+#+begin_src emacs-lisp
+(defun emacsconf-harvest-set-qa-public ()
+ (dolist (talk (emacsconf-publish-prepare-for-display (emacsconf-get-talk-info)))
+ (when (emacsconf-talk-file talk "--answers.webm")
+ (emacsconf-with-talk-heading talk
+ (org-entry-put (point) "QA_PUBLIC" "1")))))
+#+end_src
+
+*** DONE Figure out which talks have screenshares and process them
+CLOSED: [2023-12-07 Thu 14:52]
+:LOGBOOK:
+- State "DONE" from "TODO" [2023-12-07 Thu 14:52]
+:END:
+
+hmm, speed is about the same on my computer?
+
+The following talks have deskshares and need splicing.
+#+begin_src emacs-lisp
+(seq-keep
+ (lambda (o)
+ (when (plist-get o :bbb-meeting-id)
+ (let* ((xml-file
+ (expand-file-name "deskshare.xml"
+ (expand-file-name (plist-get o :bbb-meeting-id) emacsconf-harvest-bbb-published-dir)))
+ (dom (and (file-exists-p xml-file)
+ (xml-parse-file xml-file))))
+ (when (and dom (dom-by-tag dom 'event))
+ (plist-get o :slug)))))
+ (emacsconf-get-talk-info))
+#+end_src
+
+#+RESULTS:
+:results:
+(teaching one writing sat-close hyperamp poltys sun-close voice emacsconf scheme world flat emacsen gc)
+:end:
+
+#+begin_src emacs-lisp :results example
+(emacsconf-extract-replace-strings
+ `((,(expand-file-name emacsconf-extract-bbb-published-dir) . "~/current/bbb-published/")
+ (,(expand-file-name emacsconf-cache-dir) . "~/current/cache"))
+ (mapconcat
+ (lambda (slug)
+ (let ((prefix (plist-get (emacsconf-resolve-talk (symbol-name slug)) :file-prefix)))
+ (format "if [ ! -f ~/current/cache/%s--answers--original.webm ]; then\n %s && cp ~/current/cache/%s--answers.webm ~/current/cache/%s--answers--original.webm\nfi"
+ prefix
+ (emacsconf-get-ffmpeg-to-splice-webcam-and-recording (symbol-name slug))
+ prefix
+ prefix)))
+ '(teaching one writing sat-close hyperamp poltys sun-close voice scheme world flat emacsen gc)
+ "\n"))
+#+end_src
+
+#+RESULTS:
+:results:
+if [ ! -f ~/current/cache/emacsconf-2023-teaching--teaching-computer-and-data-science-with-literate-programming-tools--marcus-birkenkrahe--answers--original.webm ]; then
+ ffmpeg -i ~/current/bbb-published/c7af4fb02c209bbd6864301fdf26dd137916469c-1701529159289/deskshare/deskshare.webm -i ~/current/bbb-published/c7af4fb02c209bbd6864301fdf26dd137916469c-1701529159289/video/webcams.webm -i ~/current/bbb-published/c7af4fb02c209bbd6864301fdf26dd137916469c-1701529159289/deskshare/deskshare.webm -i ~/current/bbb-published/c7af4fb02c209bbd6864301fdf26dd137916469c-1701529159289/video/webcams.webm -i ~/current/bbb-published/c7af4fb02c209bbd6864301fdf26dd137916469c-1701529159289/video/webcams.webm -filter_complex \[0\:v\]select\=\'between\(t\,0.000\,121.900\)\'\,setpts\=PTS-STARTPTS\,scale\[r0\]\;\[1\:v\]select\=\'between\(t\,121.900\,142.100\)\'\,setpts\=PTS-STARTPTS\,scale\=1280\:720\:force_original_aspect_ratio\=decrease\,setsar\=sar\=1\,pad\=1280\:720\:\(ow-iw\)/2\:0\+\(oh-0-ih\)/2\[r1\]\;\[2\:v\]select\=\'between\(t\,142.100\,2483.600\)\'\,setpts\=PTS-STARTPTS\,scale\[r2\]\;\[3\:v\]select\=\'between\(t\,2483.600\,2588.551\)\'\,setpts\=PTS-STARTPTS\,scale\=1280\:720\:force_original_aspect_ratio\=decrease\,setsar\=sar\=1\,pad\=1280\:720\:\(ow-iw\)/2\:0\+\(oh-0-ih\)/2\[r3\]\;\[r0\]\[r1\]\[r2\]\[r3\]concat\=n\=4\:v\=1\:a\=0\[v\]\;\[4\:a\]aselect\=\'between\(t\,0.000\,2588.551\)\'\,asetpts\=\'N/SR/TB\'\[a\] -map\:v \[v\] -map\:a \[a\] -c\:v vp8 -vsync 2 -b\:v 800k -auto-alt-ref 0 -y ~/current/cache/emacsconf-2023-teaching--teaching-computer-and-data-science-with-literate-programming-tools--marcus-birkenkrahe--answers.webm && cp ~/current/cache/emacsconf-2023-teaching--teaching-computer-and-data-science-with-literate-programming-tools--marcus-birkenkrahe--answers.webm ~/current/cache/emacsconf-2023-teaching--teaching-computer-and-data-science-with-literate-programming-tools--marcus-birkenkrahe--answers--original.webm
+fi
+if [ ! -f ~/current/cache/emacsconf-2023-one--oneel-the-static-site-generator-for-emacs-lisp-programmers--tony-aldon--answers--original.webm ]; then
+ ffmpeg -i ~/current/bbb-published/62b4e0d50b581001f2d6526461e9ffb754b38371-1701534084270/deskshare/deskshare.webm -i ~/current/bbb-published/62b4e0d50b581001f2d6526461e9ffb754b38371-1701534084270/video/webcams.webm -filter_complex \[0\:v\]select\=\'between\(t\,0.000\,1658.966\)\'\,setpts\=PTS-STARTPTS\,scale\[r0\]\;\[r0\]concat\=n\=1\:v\=1\:a\=0\[v\]\;\[1\:a\]aselect\=\'between\(t\,0.000\,1658.966\)\'\,asetpts\=\'N/SR/TB\'\[a\] -map\:v \[v\] -map\:a \[a\] -c\:v vp8 -vsync 2 -b\:v 800k -auto-alt-ref 0 -y ~/current/cache/emacsconf-2023-one--oneel-the-static-site-generator-for-emacs-lisp-programmers--tony-aldon--answers.webm && cp ~/current/cache/emacsconf-2023-one--oneel-the-static-site-generator-for-emacs-lisp-programmers--tony-aldon--answers.webm ~/current/cache/emacsconf-2023-one--oneel-the-static-site-generator-for-emacs-lisp-programmers--tony-aldon--answers--original.webm
+fi
+if [ ! -f ~/current/cache/emacsconf-2023-writing--emacs-turbocharges-my-writing--jeremy-friesen--answers--original.webm ]; then
+ ffmpeg -i ~/current/bbb-published/d3faf3bd5abcc5316e6a997b22b29d962480ad5c-1701537771543/deskshare/deskshare.webm -i ~/current/bbb-published/d3faf3bd5abcc5316e6a997b22b29d962480ad5c-1701537771543/video/webcams.webm -i ~/current/bbb-published/d3faf3bd5abcc5316e6a997b22b29d962480ad5c-1701537771543/video/webcams.webm -filter_complex \[0\:v\]select\=\'between\(t\,0.000\,1484.300\)\'\,setpts\=PTS-STARTPTS\,scale\[r0\]\;\[1\:v\]select\=\'between\(t\,1484.300\,1487.132\)\'\,setpts\=PTS-STARTPTS\,scale\=1280\:720\:force_original_aspect_ratio\=decrease\,setsar\=sar\=1\,pad\=1280\:720\:\(ow-iw\)/2\:0\+\(oh-0-ih\)/2\[r1\]\;\[r0\]\[r1\]concat\=n\=2\:v\=1\:a\=0\[v\]\;\[2\:a\]aselect\=\'between\(t\,0.000\,1487.132\)\'\,asetpts\=\'N/SR/TB\'\[a\] -map\:v \[v\] -map\:a \[a\] -c\:v vp8 -vsync 2 -b\:v 800k -auto-alt-ref 0 -y ~/current/cache/emacsconf-2023-writing--emacs-turbocharges-my-writing--jeremy-friesen--answers.webm && cp ~/current/cache/emacsconf-2023-writing--emacs-turbocharges-my-writing--jeremy-friesen--answers.webm ~/current/cache/emacsconf-2023-writing--emacs-turbocharges-my-writing--jeremy-friesen--answers--original.webm
+fi
+if [ ! -f ~/current/cache/emacsconf-2023-sat-close--saturday-closing-remarks--answers--original.webm ]; then
+ ffmpeg -i ~/current/bbb-published/bb384a46db00ac8a0175df0a0668c94a9992b663-1701554802497/video/webcams.webm -i ~/current/bbb-published/bb384a46db00ac8a0175df0a0668c94a9992b663-1701554802497/deskshare/deskshare.webm -i ~/current/bbb-published/bb384a46db00ac8a0175df0a0668c94a9992b663-1701554802497/video/webcams.webm -filter_complex \[0\:v\]select\=\'between\(t\,0.000\,137.800\)\'\,setpts\=PTS-STARTPTS\,scale\=1280\:720\:force_original_aspect_ratio\=decrease\,setsar\=sar\=1\,pad\=1280\:720\:\(ow-iw\)/2\:0\+\(oh-0-ih\)/2\[r0\]\;\[1\:v\]select\=\'between\(t\,137.800\,539.591\)\'\,setpts\=PTS-STARTPTS\,scale\[r1\]\;\[r0\]\[r1\]concat\=n\=2\:v\=1\:a\=0\[v\]\;\[2\:a\]aselect\=\'between\(t\,0.000\,539.591\)\'\,asetpts\=\'N/SR/TB\'\[a\] -map\:v \[v\] -map\:a \[a\] -c\:v vp8 -vsync 2 -b\:v 800k -auto-alt-ref 0 -y ~/current/cache/emacsconf-2023-sat-close--saturday-closing-remarks--answers.webm && cp ~/current/cache/emacsconf-2023-sat-close--saturday-closing-remarks--answers.webm ~/current/cache/emacsconf-2023-sat-close--saturday-closing-remarks--answers--original.webm
+fi
+if [ ! -f ~/current/cache/emacsconf-2023-hyperamp--top-10-ways-hyperbole-amps-up-emacs--robert-weiner--answers--original.webm ]; then
+ ffmpeg -i ~/current/bbb-published/b91c2833d3add0175ea8f55e9026f1ba6e744918-1701610376838/deskshare/deskshare.webm -i ~/current/bbb-published/b91c2833d3add0175ea8f55e9026f1ba6e744918-1701610376838/video/webcams.webm -i ~/current/bbb-published/b91c2833d3add0175ea8f55e9026f1ba6e744918-1701610376838/video/webcams.webm -filter_complex \[0\:v\]select\=\'between\(t\,0.000\,1664.200\)\'\,setpts\=PTS-STARTPTS\,scale\[r0\]\;\[1\:v\]select\=\'between\(t\,1664.200\,8352.632\)\'\,setpts\=PTS-STARTPTS\,scale\=1280\:720\:force_original_aspect_ratio\=decrease\,setsar\=sar\=1\,pad\=1280\:720\:\(ow-iw\)/2\:0\+\(oh-0-ih\)/2\[r1\]\;\[r0\]\[r1\]concat\=n\=2\:v\=1\:a\=0\[v\]\;\[2\:a\]aselect\=\'between\(t\,0.000\,8352.632\)\'\,asetpts\=\'N/SR/TB\'\[a\] -map\:v \[v\] -map\:a \[a\] -c\:v vp8 -vsync 2 -b\:v 800k -auto-alt-ref 0 -y ~/current/cache/emacsconf-2023-hyperamp--top-10-ways-hyperbole-amps-up-emacs--robert-weiner--answers.webm && cp ~/current/cache/emacsconf-2023-hyperamp--top-10-ways-hyperbole-amps-up-emacs--robert-weiner--answers.webm ~/current/cache/emacsconf-2023-hyperamp--top-10-ways-hyperbole-amps-up-emacs--robert-weiner--answers--original.webm
+fi
+if [ ! -f ~/current/cache/emacsconf-2023-poltys--the-browser-in-a-buffer--michael-bauer--answers--original.webm ]; then
+ ffmpeg -i ~/current/bbb-published/823df2a9c2b725271129cfe0301fcc7e631c2e63-1701617796009/deskshare/deskshare.webm -i ~/current/bbb-published/823df2a9c2b725271129cfe0301fcc7e631c2e63-1701617796009/video/webcams.webm -filter_complex \[0\:v\]select\=\'between\(t\,0.000\,2305.799\)\'\,setpts\=PTS-STARTPTS\,scale\[r0\]\;\[r0\]concat\=n\=1\:v\=1\:a\=0\[v\]\;\[1\:a\]aselect\=\'between\(t\,0.000\,2305.799\)\'\,asetpts\=\'N/SR/TB\'\[a\] -map\:v \[v\] -map\:a \[a\] -c\:v vp8 -vsync 2 -b\:v 800k -auto-alt-ref 0 -y ~/current/cache/emacsconf-2023-poltys--the-browser-in-a-buffer--michael-bauer--answers.webm && cp ~/current/cache/emacsconf-2023-poltys--the-browser-in-a-buffer--michael-bauer--answers.webm ~/current/cache/emacsconf-2023-poltys--the-browser-in-a-buffer--michael-bauer--answers--original.webm
+fi
+if [ ! -f ~/current/cache/emacsconf-2023-sun-close--sunday-closing-remarks--answers--original.webm ]; then
+ ffmpeg -i ~/current/bbb-published/5f07e2b967f71ad503ac367ea43866abeaad63b6-1701636099684/video/webcams.webm -i ~/current/bbb-published/5f07e2b967f71ad503ac367ea43866abeaad63b6-1701636099684/deskshare/deskshare.webm -i ~/current/bbb-published/5f07e2b967f71ad503ac367ea43866abeaad63b6-1701636099684/video/webcams.webm -i ~/current/bbb-published/5f07e2b967f71ad503ac367ea43866abeaad63b6-1701636099684/video/webcams.webm -filter_complex \[0\:v\]select\=\'between\(t\,0.000\,17.200\)\'\,setpts\=PTS-STARTPTS\,scale\=1280\:720\:force_original_aspect_ratio\=decrease\,setsar\=sar\=1\,pad\=1280\:720\:\(ow-iw\)/2\:0\+\(oh-0-ih\)/2\[r0\]\;\[1\:v\]select\=\'between\(t\,17.200\,7182.600\)\'\,setpts\=PTS-STARTPTS\,scale\[r1\]\;\[2\:v\]select\=\'between\(t\,7182.600\,7242.892\)\'\,setpts\=PTS-STARTPTS\,scale\=1280\:720\:force_original_aspect_ratio\=decrease\,setsar\=sar\=1\,pad\=1280\:720\:\(ow-iw\)/2\:0\+\(oh-0-ih\)/2\[r2\]\;\[r0\]\[r1\]\[r2\]concat\=n\=3\:v\=1\:a\=0\[v\]\;\[3\:a\]aselect\=\'between\(t\,0.000\,7242.892\)\'\,asetpts\=\'N/SR/TB\'\[a\] -map\:v \[v\] -map\:a \[a\] -c\:v vp8 -vsync 2 -b\:v 800k -auto-alt-ref 0 -y ~/current/cache/emacsconf-2023-sun-close--sunday-closing-remarks--answers.webm && cp ~/current/cache/emacsconf-2023-sun-close--sunday-closing-remarks--answers.webm ~/current/cache/emacsconf-2023-sun-close--sunday-closing-remarks--answers--original.webm
+fi
+if [ ! -f ~/current/cache/emacsconf-2023-voice--enhancing-productivity-with-voice-computing--blaine-mooers--answers--original.webm ]; then
+ ffmpeg -i ~/current/bbb-published/8ddd81ef601d78f7b9ac2093f3700a29b5595ff3-1701529315435/deskshare/deskshare.webm -i ~/current/bbb-published/8ddd81ef601d78f7b9ac2093f3700a29b5595ff3-1701529315435/video/webcams.webm -i ~/current/bbb-published/8ddd81ef601d78f7b9ac2093f3700a29b5595ff3-1701529315435/video/webcams.webm -filter_complex \[0\:v\]select\=\'between\(t\,0.000\,3513.200\)\'\,setpts\=PTS-STARTPTS\,scale\[r0\]\;\[1\:v\]select\=\'between\(t\,3513.200\,4066.716\)\'\,setpts\=PTS-STARTPTS\,scale\=1280\:720\:force_original_aspect_ratio\=decrease\,setsar\=sar\=1\,pad\=1280\:720\:\(ow-iw\)/2\:0\+\(oh-0-ih\)/2\[r1\]\;\[r0\]\[r1\]concat\=n\=2\:v\=1\:a\=0\[v\]\;\[2\:a\]aselect\=\'between\(t\,0.000\,4066.716\)\'\,asetpts\=\'N/SR/TB\'\[a\] -map\:v \[v\] -map\:a \[a\] -c\:v vp8 -vsync 2 -b\:v 800k -auto-alt-ref 0 -y ~/current/cache/emacsconf-2023-voice--enhancing-productivity-with-voice-computing--blaine-mooers--answers.webm && cp ~/current/cache/emacsconf-2023-voice--enhancing-productivity-with-voice-computing--blaine-mooers--answers.webm ~/current/cache/emacsconf-2023-voice--enhancing-productivity-with-voice-computing--blaine-mooers--answers--original.webm
+fi
+if [ ! -f ~/current/cache/emacsconf-2023-scheme--bringing-joy-to-scheme-programming--andrew-tropin--answers--original.webm ]; then
+ ffmpeg -i ~/current/bbb-published/b4a8670e0b530ee32705d58e7f7bcb5ebb49f86a-1701613648364/video/webcams.webm -i ~/current/bbb-published/b4a8670e0b530ee32705d58e7f7bcb5ebb49f86a-1701613648364/deskshare/deskshare.webm -i ~/current/bbb-published/b4a8670e0b530ee32705d58e7f7bcb5ebb49f86a-1701613648364/video/webcams.webm -filter_complex \[0\:v\]select\=\'between\(t\,0.000\,369.300\)\'\,setpts\=PTS-STARTPTS\,scale\=1280\:720\:force_original_aspect_ratio\=decrease\,setsar\=sar\=1\,pad\=1280\:720\:\(ow-iw\)/2\:0\+\(oh-0-ih\)/2\[r0\]\;\[1\:v\]select\=\'between\(t\,369.300\,694.230\)\'\,setpts\=PTS-STARTPTS\,scale\[r1\]\;\[r0\]\[r1\]concat\=n\=2\:v\=1\:a\=0\[v\]\;\[2\:a\]aselect\=\'between\(t\,0.000\,694.230\)\'\,asetpts\=\'N/SR/TB\'\[a\] -map\:v \[v\] -map\:a \[a\] -c\:v vp8 -vsync 2 -b\:v 800k -auto-alt-ref 0 -y ~/current/cache/emacsconf-2023-scheme--bringing-joy-to-scheme-programming--andrew-tropin--answers.webm && cp ~/current/cache/emacsconf-2023-scheme--bringing-joy-to-scheme-programming--andrew-tropin--answers.webm ~/current/cache/emacsconf-2023-scheme--bringing-joy-to-scheme-programming--andrew-tropin--answers--original.webm
+fi
+if [ ! -f ~/current/cache/emacsconf-2023-world--gnu-emacs-a-world-of-possibilities--anand-tamariya--answers--original.webm ]; then
+ ffmpeg -i ~/current/bbb-published/573c5a7321e144f6cd67763c21ed7aea8f1c1497-1701617014361/deskshare/deskshare.webm -i ~/current/bbb-published/573c5a7321e144f6cd67763c21ed7aea8f1c1497-1701617014361/video/webcams.webm -filter_complex \[0\:v\]select\=\'between\(t\,0.000\,1128.799\)\'\,setpts\=PTS-STARTPTS\,scale\[r0\]\;\[r0\]concat\=n\=1\:v\=1\:a\=0\[v\]\;\[1\:a\]aselect\=\'between\(t\,0.000\,1128.799\)\'\,asetpts\=\'N/SR/TB\'\[a\] -map\:v \[v\] -map\:a \[a\] -c\:v vp8 -vsync 2 -b\:v 800k -auto-alt-ref 0 -y ~/current/cache/emacsconf-2023-world--gnu-emacs-a-world-of-possibilities--anand-tamariya--answers.webm && cp ~/current/cache/emacsconf-2023-world--gnu-emacs-a-world-of-possibilities--anand-tamariya--answers.webm ~/current/cache/emacsconf-2023-world--gnu-emacs-a-world-of-possibilities--anand-tamariya--answers--original.webm
+fi
+if [ ! -f ~/current/cache/emacsconf-2023-flat--a-modern-emacs-lookandfeel-without-pain--pedro-a-aranda--answers--original.webm ]; then
+ ffmpeg -i ~/current/bbb-published/865d185560bbda4ee85399dc236c6f7eb2ee635d-1701616925579/deskshare/deskshare.webm -i ~/current/bbb-published/865d185560bbda4ee85399dc236c6f7eb2ee635d-1701616925579/video/webcams.webm -i ~/current/bbb-published/865d185560bbda4ee85399dc236c6f7eb2ee635d-1701616925579/deskshare/deskshare.webm -i ~/current/bbb-published/865d185560bbda4ee85399dc236c6f7eb2ee635d-1701616925579/video/webcams.webm -i ~/current/bbb-published/865d185560bbda4ee85399dc236c6f7eb2ee635d-1701616925579/deskshare/deskshare.webm -i ~/current/bbb-published/865d185560bbda4ee85399dc236c6f7eb2ee635d-1701616925579/video/webcams.webm -i ~/current/bbb-published/865d185560bbda4ee85399dc236c6f7eb2ee635d-1701616925579/deskshare/deskshare.webm -i ~/current/bbb-published/865d185560bbda4ee85399dc236c6f7eb2ee635d-1701616925579/video/webcams.webm -i ~/current/bbb-published/865d185560bbda4ee85399dc236c6f7eb2ee635d-1701616925579/video/webcams.webm -filter_complex \[0\:v\]select\=\'between\(t\,0.000\,170.400\)\'\,setpts\=PTS-STARTPTS\,scale\[r0\]\;\[1\:v\]select\=\'between\(t\,170.400\,183.300\)\'\,setpts\=PTS-STARTPTS\,scale\=1280\:720\:force_original_aspect_ratio\=decrease\,setsar\=sar\=1\,pad\=1280\:720\:\(ow-iw\)/2\:0\+\(oh-0-ih\)/2\[r1\]\;\[2\:v\]select\=\'between\(t\,183.300\,583.900\)\'\,setpts\=PTS-STARTPTS\,scale\[r2\]\;\[3\:v\]select\=\'between\(t\,583.900\,690.100\)\'\,setpts\=PTS-STARTPTS\,scale\=1280\:720\:force_original_aspect_ratio\=decrease\,setsar\=sar\=1\,pad\=1280\:720\:\(ow-iw\)/2\:0\+\(oh-0-ih\)/2\[r3\]\;\[4\:v\]select\=\'between\(t\,690.100\,1074.300\)\'\,setpts\=PTS-STARTPTS\,scale\[r4\]\;\[5\:v\]select\=\'between\(t\,1074.300\,1114.300\)\'\,setpts\=PTS-STARTPTS\,scale\=1280\:720\:force_original_aspect_ratio\=decrease\,setsar\=sar\=1\,pad\=1280\:720\:\(ow-iw\)/2\:0\+\(oh-0-ih\)/2\[r5\]\;\[6\:v\]select\=\'between\(t\,1114.300\,1329.700\)\'\,setpts\=PTS-STARTPTS\,scale\[r6\]\;\[7\:v\]select\=\'between\(t\,1329.700\,1340.418\)\'\,setpts\=PTS-STARTPTS\,scale\=1280\:720\:force_original_aspect_ratio\=decrease\,setsar\=sar\=1\,pad\=1280\:720\:\(ow-iw\)/2\:0\+\(oh-0-ih\)/2\[r7\]\;\[r0\]\[r1\]\[r2\]\[r3\]\[r4\]\[r5\]\[r6\]\[r7\]concat\=n\=8\:v\=1\:a\=0\[v\]\;\[8\:a\]aselect\=\'between\(t\,0.000\,1340.418\)\'\,asetpts\=\'N/SR/TB\'\[a\] -map\:v \[v\] -map\:a \[a\] -c\:v vp8 -vsync 2 -b\:v 800k -auto-alt-ref 0 -y ~/current/cache/emacsconf-2023-flat--a-modern-emacs-lookandfeel-without-pain--pedro-a-aranda--answers.webm && cp ~/current/cache/emacsconf-2023-flat--a-modern-emacs-lookandfeel-without-pain--pedro-a-aranda--answers.webm ~/current/cache/emacsconf-2023-flat--a-modern-emacs-lookandfeel-without-pain--pedro-a-aranda--answers--original.webm
+fi
+if [ ! -f ~/current/cache/emacsconf-2023-emacsen--the-emacsen-family-the-design-of-an-emacs-and-the-importance-of-lisp--fermin--answers--original.webm ]; then
+ ffmpeg -i ~/current/bbb-published/93478b7dbe4fb34ded741ea7c8dfefa78a3ce8fd-1701620297196/deskshare/deskshare.webm -i ~/current/bbb-published/93478b7dbe4fb34ded741ea7c8dfefa78a3ce8fd-1701620297196/video/webcams.webm -i ~/current/bbb-published/93478b7dbe4fb34ded741ea7c8dfefa78a3ce8fd-1701620297196/video/webcams.webm -filter_complex \[0\:v\]select\=\'between\(t\,0.000\,4112.500\)\'\,setpts\=PTS-STARTPTS\,scale\[r0\]\;\[1\:v\]select\=\'between\(t\,4112.500\,4239.101\)\'\,setpts\=PTS-STARTPTS\,scale\=1280\:720\:force_original_aspect_ratio\=decrease\,setsar\=sar\=1\,pad\=1280\:720\:\(ow-iw\)/2\:0\+\(oh-0-ih\)/2\[r1\]\;\[r0\]\[r1\]concat\=n\=2\:v\=1\:a\=0\[v\]\;\[2\:a\]aselect\=\'between\(t\,0.000\,4239.101\)\'\,asetpts\=\'N/SR/TB\'\[a\] -map\:v \[v\] -map\:a \[a\] -c\:v vp8 -vsync 2 -b\:v 800k -auto-alt-ref 0 -y ~/current/cache/emacsconf-2023-emacsen--the-emacsen-family-the-design-of-an-emacs-and-the-importance-of-lisp--fermin--answers.webm && cp ~/current/cache/emacsconf-2023-emacsen--the-emacsen-family-the-design-of-an-emacs-and-the-importance-of-lisp--fermin--answers.webm ~/current/cache/emacsconf-2023-emacsen--the-emacsen-family-the-design-of-an-emacs-and-the-importance-of-lisp--fermin--answers--original.webm
+fi
+if [ ! -f ~/current/cache/emacsconf-2023-gc--emacsgcstats-does-garbage-collection-actually-slow-down-emacs--ihor-radchenko--answers--original.webm ]; then
+ ffmpeg -i ~/current/bbb-published/b0f325d396963155a01854970e055fe7440abf61-1701624602181/video/webcams.webm -i ~/current/bbb-published/b0f325d396963155a01854970e055fe7440abf61-1701624602181/deskshare/deskshare.webm -i ~/current/bbb-published/b0f325d396963155a01854970e055fe7440abf61-1701624602181/video/webcams.webm -i ~/current/bbb-published/b0f325d396963155a01854970e055fe7440abf61-1701624602181/deskshare/deskshare.webm -i ~/current/bbb-published/b0f325d396963155a01854970e055fe7440abf61-1701624602181/video/webcams.webm -i ~/current/bbb-published/b0f325d396963155a01854970e055fe7440abf61-1701624602181/deskshare/deskshare.webm -i ~/current/bbb-published/b0f325d396963155a01854970e055fe7440abf61-1701624602181/video/webcams.webm -i ~/current/bbb-published/b0f325d396963155a01854970e055fe7440abf61-1701624602181/video/webcams.webm -filter_complex \[0\:v\]select\=\'between\(t\,0.000\,149.500\)\'\,setpts\=PTS-STARTPTS\,scale\=1280\:720\:force_original_aspect_ratio\=decrease\,setsar\=sar\=1\,pad\=1280\:720\:\(ow-iw\)/2\:0\+\(oh-0-ih\)/2\[r0\]\;\[1\:v\]select\=\'between\(t\,149.500\,327.200\)\'\,setpts\=PTS-STARTPTS\,scale\[r1\]\;\[2\:v\]select\=\'between\(t\,327.200\,418.200\)\'\,setpts\=PTS-STARTPTS\,scale\=1280\:720\:force_original_aspect_ratio\=decrease\,setsar\=sar\=1\,pad\=1280\:720\:\(ow-iw\)/2\:0\+\(oh-0-ih\)/2\[r2\]\;\[3\:v\]select\=\'between\(t\,418.200\,454.600\)\'\,setpts\=PTS-STARTPTS\,scale\[r3\]\;\[4\:v\]select\=\'between\(t\,454.600\,481.300\)\'\,setpts\=PTS-STARTPTS\,scale\=1280\:720\:force_original_aspect_ratio\=decrease\,setsar\=sar\=1\,pad\=1280\:720\:\(ow-iw\)/2\:0\+\(oh-0-ih\)/2\[r4\]\;\[5\:v\]select\=\'between\(t\,481.300\,598.200\)\'\,setpts\=PTS-STARTPTS\,scale\[r5\]\;\[6\:v\]select\=\'between\(t\,598.200\,1086.757\)\'\,setpts\=PTS-STARTPTS\,scale\=1280\:720\:force_original_aspect_ratio\=decrease\,setsar\=sar\=1\,pad\=1280\:720\:\(ow-iw\)/2\:0\+\(oh-0-ih\)/2\[r6\]\;\[r0\]\[r1\]\[r2\]\[r3\]\[r4\]\[r5\]\[r6\]concat\=n\=7\:v\=1\:a\=0\[v\]\;\[7\:a\]aselect\=\'between\(t\,0.000\,1086.757\)\'\,asetpts\=\'N/SR/TB\'\[a\] -map\:v \[v\] -map\:a \[a\] -c\:v vp8 -vsync 2 -b\:v 800k -auto-alt-ref 0 -y ~/current/cache/emacsconf-2023-gc--emacsgcstats-does-garbage-collection-actually-slow-down-emacs--ihor-radchenko--answers.webm && cp ~/current/cache/emacsconf-2023-gc--emacsgcstats-does-garbage-collection-actually-slow-down-emacs--ihor-radchenko--answers.webm ~/current/cache/emacsconf-2023-gc--emacsgcstats-does-garbage-collection-actually-slow-down-emacs--ihor-radchenko--answers--original.webm
+fi
+:end:
+
+*** SOMEDAY Clean up storage on media :emacsconf:
+:PROPERTIES:
+:CREATED: [2023-12-06 Wed 14:08]
+:END:
+
+*** DONE Move answers to main for live talks
+CLOSED: [2023-12-07 Thu 14:51]
+:LOGBOOK:
+- State "DONE" from "TODO" [2023-12-07 Thu 14:51]
+:END:
+
+#+begin_src emacs-lisp :wrap verbatim
+(mapconcat
+ (lambda (o)
+ (and (null
+ (file-exists-p
+ (expand-file-name (concat (plist-get o :file-prefix) "--main.webm")
+ emacsconf-cache-dir)))
+ (file-exists-p
+ (expand-file-name (concat (plist-get o :file-prefix) "--answers.webm")
+ emacsconf-cache-dir))
+ (format "cp %s %s; ../rm-from-cache %s\n"
+ (concat (plist-get o :file-prefix) "--answers.webm")
+ (concat (plist-get o :file-prefix) "--main.webm")
+ (concat (plist-get o :file-prefix) "--answers.webm")
+ )))
+ (emacsconf-get-talk-info)
+ "")
+#+end_src
+
+#+RESULTS:
+#+begin_verbatim
+cp emacsconf-2023-sat-close--saturday-closing-remarks--answers.webm emacsconf-2023-sat-close--saturday-closing-remarks--main.webm; ../rm-from-cache emacsconf-2023-sat-close--saturday-closing-remarks--answers.webm
+cp emacsconf-2023-hyperamp--top-10-ways-hyperbole-amps-up-emacs--robert-weiner--answers.webm emacsconf-2023-hyperamp--top-10-ways-hyperbole-amps-up-emacs--robert-weiner--main.webm; ../rm-from-cache emacsconf-2023-hyperamp--top-10-ways-hyperbole-amps-up-emacs--robert-weiner--answers.webm
+cp emacsconf-2023-poltys--the-browser-in-a-buffer--michael-bauer--answers.webm emacsconf-2023-poltys--the-browser-in-a-buffer--michael-bauer--main.webm; ../rm-from-cache emacsconf-2023-poltys--the-browser-in-a-buffer--michael-bauer--answers.webm
+cp emacsconf-2023-sun-close--sunday-closing-remarks--answers.webm emacsconf-2023-sun-close--sunday-closing-remarks--main.webm; ../rm-from-cache emacsconf-2023-sun-close--sunday-closing-remarks--answers.webm
+cp emacsconf-2023-flat--a-modern-emacs-lookandfeel-without-pain--pedro-a-aranda--answers.webm emacsconf-2023-flat--a-modern-emacs-lookandfeel-without-pain--pedro-a-aranda--main.webm; ../rm-from-cache emacsconf-2023-flat--a-modern-emacs-lookandfeel-without-pain--pedro-a-aranda--answers.webm
+cp emacsconf-2023-windows--windows-into-freedom--corwin-brust--answers.webm emacsconf-2023-windows--windows-into-freedom--corwin-brust--main.webm; ../rm-from-cache emacsconf-2023-windows--windows-into-freedom--corwin-brust--answers.webm
+#+end_verbatim
+** Make things easier for next year
+*** TODO [#C] Figure out better space usage for backstage vs public on media.emacsconf.org :emacsconf:
+
+Maybe I can use hard links or symbolic links?
+
+*** TODO Update the makefile :emacsconf:
+** Volunteers
:PROPERTIES:
:CUSTOM_ID: coordinate-volunteers
+:STATUS: Need to coordinate people
:END:
-*** TODO Prepare shift calendar
+*** DONE E-mail the list asking people to sign up
+CLOSED: [2023-10-31 Tue 11:12] SCHEDULED: <2023-10-31 Tue>
+
+Hi everyone!
+
+EmacsConf is coming up soon! Here are some roles we need help with
+during the conference:
+
+- Check-in (can handle both tracks):
+ - Keep an eye out for speakers on IRC and in the BigBlueButton room
+ - Give the speaker moderator permissions
+ - https://emacsconf.org/2023/volunteer/checkin/
+- Host (one for each track):
+ - Read out questions (and ask some of their own while waiting for questions to come in)
+ - Remind people how to join
+ - Keep the speaker company
+ - Moderate the Q&A sessions as needed
+ - Let us know when you want the Q&A session to be opened up to everyone
+ - https://emacsconf.org/2023/volunteer/host/
+- Streamer (one for each track):
+ - Manage what happens on the screen
+ - Listen to the audio volume on the stream and adjust as needed, especially for BigBlueButton rooms
+ - https://emacsconf.org/2023/volunteer/stream/
+- Internet Relay Chat scribe (one for each track):
+ - Check the IRC channel for questions and answers and copy them to the talk's Etherpad
+ - https://emacsconf.org/2023/volunteer/irc/
+- Pad scribe (one for each track):
+ - Add notes, questions, and answers to the talk's Etherpad
+ - https://emacsconf.org/2023/volunteer/pad/
+- Other things you might be interested in helping out with - feel free to suggest!
+
+If you let us know which role(s) you're interested in, the track(s)
+you're interested in (general / development) and your availability for
+the conference (ex: Sat AM, Sat PM, Sun AM, Sun PM, or more granular
+as needed), I can make a shift schedule.
+
+If you're new to the role and have questions, we can help you get
+started via e-mail or set up a training meeting. Let me know what you
+want to know and what times what might work for you.
+
+We can also set up a dry run in a couple of weeks so that people can
+try working together. Please let me know your availability for maybe
+Nov 11 or Nov 18 for a dry run.
+
+Looking forward to a nice smooth EmacsConf!
+
+Sacha
+
+*** TODO Prepare shift calendar, ask people to sign up
+SCHEDULED: <2023-11-01 Wed>
:PROPERTIES:
:CUSTOM_ID: shifts
:END:
@@ -1002,22 +1907,22 @@ AM: 9-12 PM EST, PM: 1-5 PM EST (plus a little extra for setup/transition)
Saturday Dec 2 2023
#+NAME: saturday-shifts
-| | [[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 | | sachac | | | | sachac |
-| Gen PM | | sachac | | | | sachac |
-| Dev AM | | sachac | | | | sachac |
-| Dev PM | | sachac | | | | sachac |
+| | [[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 | zaeph | sachac | FlowyCoder | | | sachac |
+| Gen PM | zaeph | sachac | FlowyCoder | | | sachac |
+| Dev AM | bandali | sachac | FlowyCoder | | | sachac |
+| Dev PM | bandali | sachac | FlowyCoder | | | sachac |
Sunday Dec 3 2023
#+NAME: sunday-shifts
-| | [[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 | | sachac | | | | sachac |
-| Gen PM | | sachac | | | | sachac |
-| Dev AM | | sachac | | | | sachac |
-| Dev PM | | sachac | | | | sachac |
+| | [[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 | zaeph | sachac | FlowyCoder | | | sachac |
+| Gen PM | zaeph | sachac | FlowyCoder | | | sachac |
+| Dev AM | bandali | sachac | FlowyCoder | | | sachac |
+| Dev PM | bandali | sachac | FlowyCoder | | | sachac |
Backups:
- dev host/streamer:
@@ -1032,8 +1937,17 @@ Interested in a shift? Please e-mail [[mailto:emacsconf-org-private@gnu.org]] an
,@(apply #'append
(mapcar
(lambda (day)
- (let ((headers (mapcar (lambda (field) (intern (concat ":" (downcase field))))
- (cdr (car (cadr day))))))
+ (let ((headers
+ (mapcar
+ (lambda (field)
+ (intern
+ (concat
+ ":"
+ (downcase
+ (if (string-match org-link-bracket-re field)
+ (match-string 2 field)
+ field)))))
+ (cdr (car (cadr day))))))
(mapcar
(lambda (row)
(apply #'append
@@ -1063,17 +1977,36 @@ Interested in a shift? Please e-mail [[mailto:emacsconf-org-private@gnu.org]] an
(cdr (cadr day)))
))
(list
- (list "sat" sat "2022-12-03")
- (list "sun" sun "2022-12-04"))))))
+ (list "sat" sat "2023-12-02")
+ (list "sun" sun "2023-12-03"))))))
#+end_src
+#+RESULTS:
+:results:
+(setq emacsconf-shifts (list (list :id "sat-am-gen" :track "General" :start "2023-12-02T08:00:00-0500" :end "2023-12-02T12:00:00-0500" :host "zaeph" :streamer "sachac" :checkin "FlowyCoder" :coord "sachac") (list :id "sat-pm-gen" :track "General" :start "2023-12-02T13:00:00-0500" :end "2023-12-02T18:00:00-0500" :host "zaph" :streamer "sachac" :checkin "FlowyCoder" :coord "sachac") (list :id "sat-am-dev" :track "Development" :start "2023-12-02T08:00:00-0500" :end "2023-12-02T12:00:00-0500" :host "bandali" :streamer "sachac" :checkin "FlowyCoder" :coord "sachac") (list :id "sat-pm-dev" :track "Development" :start "2023-12-02T13:00:00-0500" :end "2023-12-02T18:00:00-0500" :host "bandali" :streamer "sachac" :checkin "FlowyCoder" :coord "sachac") (list :id "sun-am-gen" :track "General" :start "2023-12-03T08:00:00-0500" :end "2023-12-03T12:00:00-0500" :host "zaeph" :streamer "sachac" :checkin "FlowyCoder" :coord "sachac") (list :id "sun-pm-gen" :track "General" :start "2023-12-03T13:00:00-0500" :end "2023-12-03T18:00:00-0500" :host "zaeph" :streamer "sachac" :checkin "FlowyCoder" :coord "sachac") (list :id "sun-am-dev" :track "Development" :start "2023-12-03T08:00:00-0500" :end "2023-12-03T12:00:00-0500" :host "bandali" :streamer "sachac" :checkin "FlowyCoder" :coord "sachac") (list :id "sun-pm-dev" :track "Development" :start "2023-12-03T13:00:00-0500" :end "2023-12-03T18:00:00-0500" :host "bandali" :streamer "sachac" :checkin "FlowyCoder" :coord "sachac")))
+:end:
+
*** DONE Document volunteer roles
CLOSED: [2023-09-26 Tue 11:07]
:PROPERTIES:
:CUSTOM_ID: document-volunteer-roles
:END:
Copied it over from the previous year
+** Lessons learned
+- Make sure timezones are on anything that has time (schedule page, watch pages, etc.)
+- Remember to publish the icals and schedule org files: ~emacsconf-update-schedule~. Added to the schedule-details.md.
+- For really late submissions, make sure you also create the pad (~emacsconf-pad-prepopulate-talk-pad~) and the BBB room (~emacsconf-spookfox-create-bbb~).
+- We need to move off the current bbb.emacsverse.org or discuss the future of the current BBB VM.
+- Next year, it might be nice to use the intros and generate title slides in order to add them to the videos.
+- Make recording more prominent for speakers and participants
+ - Add check-in step to remind speakers about recording and oops
+ - Send thanks e-mail when BigBlueButton recordings are available, remind people about oops
+ - Set up backstage for post-conference work
+ - Add recording reminder to BigBlueButton welcome text chat message
+ - Consider turning off recording when the host goes off-stream? Bring it up for discussion.
+ - Trim to host leaving by default, and then add the other stuff as offstream chat
+
* Progress reports
:PROPERTIES:
:CUSTOM_ID: progress
@@ -1163,3 +2096,460 @@ Sacha
:CUSTOM_ID: archive
:END:
+** DONE Check with hyperdrive and core if they're willing to swap :decision:
+DEADLINE: <2023-10-25 Wed>
+:PROPERTIES:
+:CUSTOM_ID: hyperdrive-core
+:END:
+
+DONE [2023-10-08 Sun]: hyperdrive on Sunday afternoon, will keep an eye out for openings on general track and call it out in the opening remarks so people know that it's a general talk.
+
+If Stefan Kangas puts together [[emacsconf:core][Emacs core development: how it works]]
+speaking as a new Emacs maintainer, that might be a good general
+closing talk on the first day because it can encourage people to help
+with Emacs development. We don't have a lot of space on the General
+track, but if we move [[emacsconf:hyperdrive][hyperdrive.el: Peer-to-peer filesystem in Emacs]]
+to the other track, then there's enough space.
+
+It might also be a good idea to move [[emacsconf:devel]] earlier than
+[[emacsconf:unentangling]] in case John Wiegley can have a live Q&A
+session (he might be travelling at that time, so it's unsure), so that
+there's more time for people to ask emacs-devel highlight questions
+and so that John Wiegley and Stefan Kangas can attend each other's
+Q&A.
+
+Joseph Turner wanted to make sure that people don't assume the
+[[emacsconf:hyperdrive]] talk is too technical for them. We can rename the
+tracks (Track A and Track B)? if that helps, so that people don't
+think the other track is exclusively for more technical things.
+
+Thoughts?
+*** Option A: Here's the schedule with emacsconf:hyperdrive in the second track and emacsconf:core in the first track.
+:PROPERTIES:
+:CUSTOM_ID: core-a
+:END:
+
+#+begin_src emacs-lisp :var filename="emacsconf-hyperdrive-core-swap.svg" :results replace :exports results
+(emacsconf-schedule-test
+ filename
+ (emacsconf-time-constraints '())
+ (arranged
+ (emacsconf-schedule-inflate-sexp
+ '(("GEN Saturday, Dec 2" :start "2023-12-02 09:00")
+ sat-open
+ adventure
+ uni
+ teaching
+ table
+ taming
+ one
+ (lunch :start "12:00")
+ writing
+ nabokov
+ collab
+ solo
+ ref
+ (devel :track "General")
+ unentangling
+ (core :track "General")
+ (sat-close)
+ ("DEV Saturday, Dec 2" :start "2023-12-02 10:00")
+ (matplotllm :track "Development")
+ (voice :track "Development")
+ (llm :track "Development")
+ (lunch :start "12:00")
+ (overlay)
+ (eval)
+ (repl)
+ (world :track "Development")
+ (hyperdrive :track "Development")
+ ("GEN Sunday, Dec 3" :start "2023-12-03 09:00")
+ sun-open
+ hyperamp
+ koutline
+ (parallel :track "General")
+ eat
+ poltys
+ cubing
+ (lunch :start "12:00")
+ (emms :track "General")
+ (steno :track "General")
+ mentor
+ break
+ (hn :start "15:00")
+ web
+ sharing
+ sun-close
+ ("DEV Sunday, Dec 3" :start "2023-12-03 10:00")
+ scheme
+ test
+ (flat :track "Development")
+ (lunch :start "12:00")
+ gc
+ lspocaml
+ (windows :track "Development")
+ (emacsconf :track "Development")
+ (emacsen :track "Development")
+ )))
+ (emacsconf-schedule-break-time 10)
+ (emacsconf-schedule-lunch-time 60)
+ (emacsconf-schedule-default-buffer-minutes 10)
+ (emacsconf-schedule-default-buffer-minutes-for-live-q-and-a 15)
+ (emacsconf-schedule-svg-modify-functions '(emacsconf-schedule-svg-color-by-status))
+ (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))
+ (emacsconf-schedule-strategies
+ '(emacsconf-schedule-allocate-buffer-time)))
+#+end_src
+
+#+RESULTS:
+:results:
+- world: Ends at 15:30 after 11:30
+:end:
+
+
+[[my-include:emacsconf-hyperdrive-core-swap.svg?wrap=export html]]
+
+*** Option B: Keep emacsconf:hyperdrive on the first track, and group emacsconf:devel and emacsconf:core on the second track.
+
+We can encourage people to check out the different tracks in the opening remarks.
+
+#+begin_src emacs-lisp :var filename="emacsconf-hyperdrive-core-swap-b.svg" :results replace :exports results
+(emacsconf-schedule-test
+ filename
+ (emacsconf-time-constraints '())
+ (arranged
+ (emacsconf-schedule-inflate-sexp
+ '(("GEN Saturday, Dec 2" :start "2023-12-02 09:00")
+ sat-open
+ adventure
+ uni
+ teaching
+ table
+ taming
+ one
+ (lunch :start "12:00")
+ writing
+ nabokov
+ collab
+ solo
+ ref
+ unentangling
+ (hyperdrive)
+ (sat-close :start "16:40")
+ ("DEV Saturday, Dec 2" :start "2023-12-02 10:00")
+ (matplotllm :track "Development")
+ (voice :track "Development")
+ (llm :track "Development")
+ (lunch :start "12:00")
+ (overlay)
+ (eval)
+ (repl)
+ (world :track "Development")
+ (devel :track "Development")
+ (core :track "Development")
+ ("GEN Sunday, Dec 3" :start "2023-12-03 09:00")
+ sun-open
+ hyperamp
+ koutline
+ (parallel :track "General")
+ eat
+ poltys
+ cubing
+ (lunch :start "12:00")
+ (emms :track "General")
+ (steno :track "General")
+ mentor
+ break
+ (hn :start "15:00")
+ web
+ sharing
+ sun-close
+ ("DEV Sunday, Dec 3" :start "2023-12-03 10:00")
+ scheme
+ test
+ (flat :track "Development")
+ (lunch :start "12:00")
+ gc
+ lspocaml
+ (windows :track "Development")
+ (emacsconf :track "Development")
+ (emacsen :track "Development")
+ )))
+ (emacsconf-schedule-break-time 10)
+ (emacsconf-schedule-lunch-time 60)
+ (emacsconf-schedule-default-buffer-minutes 10)
+ (emacsconf-schedule-default-buffer-minutes-for-live-q-and-a 15)
+ (emacsconf-schedule-svg-modify-functions '(emacsconf-schedule-svg-color-by-status))
+ (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))
+ (emacsconf-schedule-strategies
+ '(emacsconf-schedule-allocate-buffer-time)))
+#+end_src
+
+#+RESULTS:
+:results:
+- world: Ends at 14:55 after 11:30
+:end:
+
+[[my-include:emacsconf-hyperdrive-core-swap-b.svg?wrap=export html]]
+*** Other ideas?
+
+Feel free to suggest something!
+
+Notes:
+
+- emacsconf:sharing is nice to pair with emacsconf:mentor and emacsconf:hn and might be a good general-audience keynote-type thing as well. I don't want to schedule emacsconf:core to compete with it.
+
+
+** DONE Test the idea of three tracks and more aligned times :decision:
+CLOSED: [2023-10-03 Tue 15:35] DEADLINE: <2023-10-13 Fri>
+:PROPERTIES:
+:CUSTOM_ID: three-tracks
+:END:
+
+Decision: We'll stick with the two-track schedule for now because it's
+more likely, and we'll adjust as we get closer to the conference
+depending on speaker submissions and on volunteer availability.
+
+Note: Let's see if we can decide on this by [2023-10-13 Fri] so that we can
+e-mail the draft schedules to people.
+
+Compared to [[#draft-schedule][two-track schedule]]:
+#+INCLUDE: schedule.svg export EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT html
+
+What if we have three tracks instead?
+
+- Two-track advantages as in EmacsConf 2022:
+ - Fewer volunteers needed (host, IRC, pad)
+ - Can do with existing computing power (instead of spinning up another node for VNC+OBS)
+ - Less fear of missing out for participants
+ - votes: zaeph
+- Three-track advantages:
+ - More space between talks for streaming the Q&A
+ - Easier to explain the schedule
+ - More logical grouping
+ - Ends earlier, which is easier for participants from Europe
+ - votes: max (Three tracks is the best policy if you’re more than 75% sure that you can round up the volunteers)
+- [[#three-tracks-sun-am][Three tracks just for Sunday morning]]:
+ - Allows us to have 20 minutes between talks instead of 15
+ - Might be easier to test the idea for just one part of the conference
+
+#+begin_src emacs-lisp :results value replace :exports results :var filename="schedule-option-aligned-talks.svg" :eval never-export
+(emacsconf-schedule-test
+ filename
+ (emacsconf-schedule-tracks
+ '((:label "Saturday"
+ :start "2023-12-02 9:00"
+ :end "2023-12-02 18:00"
+ :tracks ("A" "B" "C"))
+ (:label "Sunday"
+ :start "2023-12-03 9:00"
+ :end "2023-12-03 18:00"
+ :tracks ("A" "B" "C"))))
+ (emacsconf-time-constraints '())
+ (emacsconf-tracks
+ '((:name "A" :id "a")
+ (:name "B" :id "b")
+ (:name "C" :id "c")))
+ (arranged
+ (emacsconf-schedule-inflate-sexp
+ '(("A Saturday, Dec 2" :start "2023-12-02 09:00" :track "A")
+ (sat-open)
+ adventure
+ (uni :start "9:40")
+ (table :start "10:30")
+ (teaching :start "11:15")
+ (lunch :start "12:00" :time 60)
+ collab
+ (solo :start nil)
+ (hn :start "15:00")
+ (web :start nil)
+ sat-close
+ ("B Saturday, Dec 2" :start "2023-12-02 09:40" :track "B")
+ (one :start nil)
+ (poltys :start "10:30")
+ (taming :start "11:15")
+ (lunch :start "12:00" :time 60)
+ writing
+ (nabokov :start "13:40")
+ (steno :start "14:20")
+ (emacsen :start "15:30")
+ ("C Saturday, Dec 2" :start "2023-12-02 9:40" :track "C")
+ (matplotllm)
+ (voice :start "10:30")
+ (llm :start "11:15")
+ (lunch :start "12:00" :time 60)
+ overlay
+ eval
+ (repl :start "14:20")
+ (emacsconf :start "15:30")
+ ("A Sunday, Dec 3" :start "2023-12-03 09:00" :track "A")
+ (sun-open :time 10)
+ hyperamp
+ (koutline :start "10:00")
+ (test :start "11:00")
+ (lunch :start "12:00" :time 60)
+ (emms :start nil)
+ (devel :start "14:00")
+ (mentor :start nil)
+ (sharing :start "15:00")
+ (sun-close :start "16:00")
+ ("B Sunday, Dec 3" :start "2023-12-03 09:10" :track "B")
+ (parallel :start "10:00")
+ (eat :start "10:30")
+
+ (gc :start "11:00")
+ (lunch :start "12:00" :time 60)
+ hyperdrive
+ (ref :start "14:00")
+ (unentangling :start "15:00")
+ ("C Sunday, Dec 3" :start "2023-12-03 09:10" :track "C")
+
+ (scheme :start "10:00")
+ (lspocaml :start "11:00")
+ (flat :start "11:30")
+
+ (lunch :start "12:00" :time 60)
+ (windows :start nil)
+ (cubing :start "14:00")
+ (extending :start "15:00")
+
+
+ )))
+ (emacsconf-schedule-break-time 10)
+ (emacsconf-schedule-lunch-time 60)
+ (emacsconf-schedule-default-buffer-minutes 20)
+ (emacsconf-schedule-svg-modify-functions '(emacsconf-schedule-svg-color-by-status))
+ (emacsconf-schedule-default-buffer-minutes-for-live-q-and-a 20)
+ (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))
+ (emacsconf-schedule-strategies
+ '(emacsconf-schedule-copy-previous-track emacsconf-schedule-allocate-buffer-time)))
+#+end_src
+
+#+RESULTS:
+:results:
+:end:
+
+#+begin_comment
+[[file:schedule-option-aligned-talks.svg]]
+#+end_comment
+
+#+INCLUDE: schedule-option-aligned-talks.svg export EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT html
+*** Three tracks for Sunday morning?
+:PROPERTIES:
+:CUSTOM_ID: three-tracks-sun-am
+:END:
+
+
+
+#+begin_src emacs-lisp :results value replace :exports results :var filename="schedule-option-sun-am.svg" :eval never-export
+(emacsconf-schedule-test
+ filename
+ (emacsconf-schedule-tracks
+ '((:label "Saturday"
+ :start "2023-12-02 9:00"
+ :end "2023-12-02 18:00"
+ :tracks ("A" "B" "C"))
+ (:label "Sunday"
+ :start "2023-12-03 9:00"
+ :end "2023-12-03 18:00"
+ :tracks ("A" "B" "C"))))
+ (emacsconf-time-constraints '())
+ (emacsconf-tracks
+ '((:name "A" :id "a")
+ (:name "B" :id "b")
+ (:name "C" :id "c")))
+ (arranged
+ (emacsconf-schedule-inflate-sexp
+ '(("A Saturday, Dec 2" :start "2023-12-02 09:00" :track "A")
+ sat-open
+ adventure
+ uni
+ table
+ teaching
+ writing
+ (lunch :start "12:00")
+ nabokov
+ collab
+ solo
+ unentangling
+ ref
+ (devel)
+ (sat-close)
+ ("DEV Saturday, Dec 2" :start "2023-12-02 10:00" :track "B")
+ (matplotllm)
+ (voice)
+ (llm)
+ (lunch :start "12:00")
+ (overlay)
+ (eval)
+ (repl :start "14:00")
+ (hyperdrive)
+ (world)
+ ("GEN Sunday, Dec 3" :start "2023-12-03 09:00" :track "A")
+ sun-open
+ hyperamp
+ koutline
+ one
+ cubing
+ (lunch :start "12:00" :time 60)
+ (emms)
+ taming
+ mentor
+ (hn :start "15:00")
+ web
+ sharing
+ sun-close
+ ("DEV Sunday, Dec 3" :start "2023-12-03 10:00" :track "B")
+ scheme
+ eat
+ (flat)
+ lspocaml
+ (lunch :start "12:15" :time "45")
+ gc
+ (steno)
+ (windows)
+ (emacsen)
+ (emacsconf)
+ ("C Sunday Dec 3" :start "2023-12-03 10:00" :track "C")
+ poltys
+ (parallel)
+ test
+ )))
+ (emacsconf-schedule-break-time 10)
+ (emacsconf-schedule-lunch-time 60)
+ (emacsconf-schedule-default-buffer-minutes 20)
+ (emacsconf-schedule-svg-modify-functions '(emacsconf-schedule-svg-color-by-status))
+ (emacsconf-schedule-default-buffer-minutes-for-live-q-and-a 20)
+ (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))
+ (emacsconf-schedule-strategies
+ '(emacsconf-schedule-copy-previous-track emacsconf-schedule-allocate-buffer-time)))
+#+end_src
+
+#+RESULTS:
+:results:
+- unentangling: Starts at 14:35 before 15:00
+- world: Ends at 16:20 after 11:30
+- Missing talks: core
+:end:
+
+#+begin_comment
+[[file:schedule-option-sun-am.svg]]
+#+end_comment
+
+#+INCLUDE: schedule-option-sun-am.svg export EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT html