summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSacha Chua <sacha@sachachua.com>2021-11-18 20:31:36 -0500
committerSacha Chua <sacha@sachachua.com>2021-11-18 20:31:36 -0500
commita1fdc0a844ea50634b264948a014109f5502f0a3 (patch)
tree62951125ffd44d8f35f05122350122b46ef4df38
parent2c8aede5592773587bf21d269f946cb7c551b3f1 (diff)
downloademacsconf-wiki-a1fdc0a844ea50634b264948a014109f5502f0a3.tar.xz
emacsconf-wiki-a1fdc0a844ea50634b264948a014109f5502f0a3.zip
Add more details, update status for pattern
-rw-r--r--2021/emacsconf-pentabarf.xml2
-rw-r--r--2021/emacsconf.ics212
-rw-r--r--2021/info/pattern-schedule.md2
-rw-r--r--2021/schedule-details.md4
-rw-r--r--playbook.md277
-rw-r--r--playbook.org188
-rw-r--r--playbook/restream-lowres.sh3
-rw-r--r--playbook/restream-youtube.sh3
8 files changed, 489 insertions, 202 deletions
diff --git a/2021/emacsconf-pentabarf.xml b/2021/emacsconf-pentabarf.xml
index 56729128..1cc6db91 100644
--- a/2021/emacsconf-pentabarf.xml
+++ b/2021/emacsconf-pentabarf.xml
@@ -1,4 +1,4 @@
-<schedule><generator name="EmacsConf" version="0.1"></generator><version>20211118162927</version><conference><acronym>emacsconf2021</acronym><title>EmacsConf 2021</title><start>2021-11-27</start><end>2021-11-28</end><time_zone_name>America/Toronto</time_zone_name><base_url>https://emacsconf.org/2021</base_url></conference><day date="2021-11-27" start="2021-11-27T14:00:00Z" end="2021-11-27T22:13:00Z" index="1"><room name="Main"><event id="01" guid="dc07efcd-6d79-cfd4-fed3-59c885fe2922"><date>2021-11-27T14:00:00Z</date><start>09:00</start><language>en</language><room>Main</room><subtitle></subtitle><type>Talk</type><track>Main</track><slug>emacsconf-2021-talk-day1-open</slug><duration>0:05</duration><title>Opening remarks</title><abstract></abstract><description>Times are approximate and will probably change.
+<schedule><generator name="EmacsConf" version="0.1"></generator><version>20211118202851</version><conference><acronym>emacsconf2021</acronym><title>EmacsConf 2021</title><start>2021-11-27</start><end>2021-11-28</end><time_zone_name>America/Toronto</time_zone_name><base_url>https://emacsconf.org/2021</base_url></conference><day date="2021-11-27" start="2021-11-27T14:00:00Z" end="2021-11-27T22:13:00Z" index="1"><room name="Main"><event id="01" guid="dc07efcd-6d79-cfd4-fed3-59c885fe2922"><date>2021-11-27T14:00:00Z</date><start>09:00</start><language>en</language><room>Main</room><subtitle></subtitle><type>Talk</type><track>Main</track><slug>emacsconf-2021-talk-day1-open</slug><duration>0:05</duration><title>Opening remarks</title><abstract></abstract><description>Times are approximate and will probably change.
</description><url>https://emacsconf.org/2021/talks/day1-open</url><persons><person>EmacsConf</person></persons></event><event id="02" guid="393ba3c2-b2a6-6a84-44eb-872aa333d08d"><date>2021-11-27T14:05:00Z</date><start>09:05</start><language>en</language><room>Main</room><subtitle></subtitle><type>Talk</type><track>Main</track><slug>emacsconf-2021-talk-news</slug><duration>0:05</duration><title>Emacs News Highlights</title><abstract></abstract><description>Times are approximate and will probably change.
diff --git a/2021/emacsconf.ics b/2021/emacsconf.ics
index 2bd1d947..76351424 100644
--- a/2021/emacsconf.ics
+++ b/2021/emacsconf.ics
@@ -13,8 +13,8 @@ UID:dc07efcd-6d79-cfd4-fed3-59c885fe2922
URL:https://emacsconf.org/2021/talks/day1-open
DTSTART:20211127T140000Z
DTEND:20211127T140500Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/day1-open\n
END:VEVENT
@@ -26,8 +26,8 @@ UID:393ba3c2-b2a6-6a84-44eb-872aa333d08d
URL:https://emacsconf.org/2021/talks/news
DTSTART:20211127T140500Z
DTEND:20211127T141000Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Sacha Chua":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/news\n
@@ -41,8 +41,8 @@ UID:06df8309-bd04-eb24-d443-a780c56adc0a
URL:https://emacsconf.org/2021/talks/frownies
DTSTART:20211127T141100Z
DTEND:20211127T143100Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Case Duckworth":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/frownies\n
@@ -55,8 +55,8 @@ UID:db4ccb28-867f-df24-c073-eaca6edad438
URL:https://emacsconf.org/2021/talks/omegat
DTSTART:20211127T143400Z
DTEND:20211127T144400Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Jean-Christophe Helary":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/omegat\n
@@ -70,8 +70,8 @@ UID:ea5bab3c-f31e-68a4-fa23-81ca67fa1990
URL:https://emacsconf.org/2021/talks/unix
DTSTART:20211127T144700Z
DTEND:20211127T145400Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Daniel Rose":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/unix\n
@@ -84,8 +84,8 @@ UID:6fccae45-04b5-5524-662b-fdba87754d06
URL:https://emacsconf.org/2021/talks/montessori
DTSTART:20211127T145800Z
DTEND:20211127T150800Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Grant Shangreaux":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/montessori\n
@@ -98,8 +98,8 @@ UID:fe959e43-441b-ed34-854b-87f6f481f55a
URL:https://emacsconf.org/2021/talks/pattern
DTSTART:20211127T151100Z
DTEND:20211127T153500Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Greta Goetz":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/pattern\n
@@ -112,8 +112,8 @@ UID:525d972d-1e34-bcb4-e9c3-861942549357
URL:https://emacsconf.org/2021/talks/nongnu
DTSTART:20211127T153700Z
DTEND:20211127T154400Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Philip Kaludercic":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/nongnu\n
@@ -127,8 +127,8 @@ UID:245a575a-965a-caa4-8d3b-75f8519c2f3e
URL:https://emacsconf.org/2021/talks/borg
DTSTART:20211127T154900Z
DTEND:20211127T155700Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Dhavan (codingquark)":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/borg\n
@@ -141,8 +141,8 @@ UID:86158391-53a2-7cb4-d7d3-020afbf6d8d9
URL:https://emacsconf.org/2021/talks/telega
DTSTART:20211127T160100Z
DTEND:20211127T160900Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Gabriele Bozzola":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/telega\n
@@ -155,8 +155,8 @@ UID:e4bdc2c1-e4b6-67e4-aafb-87ec9aaf846b
URL:https://emacsconf.org/2021/talks/nangulator
DTSTART:20211127T161100Z
DTEND:20211127T162100Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Kevin Haddock":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/nangulator\n
@@ -169,8 +169,8 @@ UID:14ab7a54-d75d-45e4-85ab-8fd2e391ea41
URL:https://emacsconf.org/2021/talks/janitor
DTSTART:20211127T162400Z
DTEND:20211127T165000Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Stefan Monnier":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/janitor\n
@@ -183,8 +183,8 @@ UID:51c360e6-188f-9a34-05bb-0a8d2eb09cdc
URL:https://emacsconf.org/2021/talks/maintainers
DTSTART:20211127T165500Z
DTEND:20211127T170500Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Bastien Guerry":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/maintainers\n
@@ -197,8 +197,8 @@ UID:716d913f-de8b-91a4-5f33-e04ba0905fa5
URL:https://emacsconf.org/2021/talks/gregorian
DTSTART:20211127T170800Z
DTEND:20211127T171800Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Spencer King":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/gregorian\n
@@ -213,8 +213,8 @@ UID:9cee7e43-bcb1-7f64-c40b-5f9ea938d11a
URL:https://emacsconf.org/2021/talks/erg
DTSTART:20211127T180000Z
DTEND:20211127T181100Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Noorah Alhasan":invalid:nomail
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Joe Corneli":invalid:nomail
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Raymond Puzio":invalid:nomail
@@ -230,8 +230,8 @@ UID:0f98a5bb-53ce-fb74-1003-0b1f320d414e
URL:https://emacsconf.org/2021/talks/cs
DTSTART:20211127T181400Z
DTEND:20211127T182400Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Greg Coladonato":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/cs\n
@@ -245,8 +245,8 @@ UID:43cc5db4-e26f-fb44-9aeb-b16c38d8cef3
URL:https://emacsconf.org/2021/talks/professional
DTSTART:20211127T182700Z
DTEND:20211127T183800Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Philip Beadling":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/professional\n
@@ -260,8 +260,8 @@ UID:a10ce62e-6454-d784-21bb-f6a0488e883c
URL:https://emacsconf.org/2021/talks/tech
DTSTART:20211127T184000Z
DTEND:20211127T185100Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Jan Ypma":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/tech\n
@@ -274,8 +274,8 @@ UID:b092bc88-e74c-a9c4-611b-d47c99ef578c
URL:https://emacsconf.org/2021/talks/exec
DTSTART:20211127T185300Z
DTEND:20211127T190100Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Tom Gillespie":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/exec\n
@@ -288,8 +288,8 @@ UID:69763d57-be4e-7e74-509b-92e48a0e7ba6
URL:https://emacsconf.org/2021/talks/org-outside
DTSTART:20211127T190400Z
DTEND:20211127T191700Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Karl Voit":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/org-outside\n
@@ -302,8 +302,8 @@ UID:aed5e190-66a0-3dd4-e5eb-be09be94e6c3
URL:https://emacsconf.org/2021/talks/teach
DTSTART:20211127T191800Z
DTEND:20211127T193900Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Daniel German":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/teach\n
@@ -317,8 +317,8 @@ UID:fd246cee-b5d6-7cc4-2b63-20e87bb7d750
URL:https://emacsconf.org/2021/talks/research
DTSTART:20211127T194300Z
DTEND:20211127T194800Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Ahmed Khaled":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/research\n
@@ -331,8 +331,8 @@ UID:db5821ed-fef4-4934-8fb3-87a0282714de
URL:https://emacsconf.org/2021/talks/babel
DTSTART:20211127T195200Z
DTEND:20211127T200200Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Asilata Bapat":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/babel\n
@@ -345,8 +345,8 @@ UID:1fc4917c-aab4-1924-2983-e78f8bca6af9
URL:https://emacsconf.org/2021/talks/molecular
DTSTART:20211127T200400Z
DTEND:20211127T201300Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Blaine Mooers":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/molecular\n
@@ -360,8 +360,8 @@ UID:c54c7930-51cc-5184-9dfb-5033e577b95e
URL:https://emacsconf.org/2021/talks/project
DTSTART:20211127T201500Z
DTEND:20211127T202500Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Adolfo Villafiorita":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/project\n
@@ -374,8 +374,8 @@ UID:c9870e10-2600-85a4-24fb-793dfc51164e
URL:https://emacsconf.org/2021/talks/invoice
DTSTART:20211127T202800Z
DTEND:20211127T203800Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Bala Ramadurai":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/invoice\n
@@ -388,8 +388,8 @@ UID:e4e995c0-6e06-8544-a8c3-5f9a06c856fb
URL:https://emacsconf.org/2021/talks/dashboard
DTSTART:20211127T204100Z
DTEND:20211127T205000Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Mehmet Tekman":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/dashboard\n
@@ -403,8 +403,8 @@ UID:33776e08-e815-db94-971b-a151236e11be
URL:https://emacsconf.org/2021/talks/nyxt
DTSTART:20211127T205300Z
DTEND:20211127T210200Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Andrea":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/nyxt\n
@@ -417,8 +417,8 @@ UID:86d4470a-8d19-7bd4-0c53-6aba1b49baef
URL:https://emacsconf.org/2021/talks/design
DTSTART:20211127T210500Z
DTEND:20211127T211200Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Nicolas P. Rougier":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/design\n
@@ -431,8 +431,8 @@ UID:59e4daca-1e46-9054-9573-9c91966d6987
URL:https://emacsconf.org/2021/talks/dev-update
DTSTART:20211127T211600Z
DTEND:20211127T212400Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="John Wiegley":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/dev-update\n
@@ -445,8 +445,8 @@ UID:48a8580f-52ce-cc84-6a23-1eddf720ae02
URL:https://emacsconf.org/2021/talks/freedom
DTSTART:20211127T212700Z
DTEND:20211127T220600Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Protesilaos Stavrou":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/freedom\n
@@ -459,8 +459,8 @@ UID:5287b003-f368-36c4-4f9b-8135734cad39
URL:https://emacsconf.org/2021/talks/day1-close
DTSTART:20211127T220800Z
DTEND:20211127T221300Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/day1-close\n
END:VEVENT
@@ -472,8 +472,8 @@ UID:d877a57a-14cf-a194-99c3-a344ecb24acc
URL:https://emacsconf.org/2021/talks/day2-open
DTSTART:20211128T140000Z
DTEND:20211128T140500Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/day2-open\n
END:VEVENT
@@ -485,8 +485,8 @@ UID:35d1d9e4-dfdf-f254-6aab-7a466fbfaf09
URL:https://emacsconf.org/2021/talks/faster
DTSTART:20211128T140500Z
DTEND:20211128T142500Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Dmitry Gutov":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/faster\n
@@ -500,8 +500,8 @@ UID:599ef3fa-4c73-6c94-4953-75bbc7830681
URL:https://emacsconf.org/2021/talks/structural
DTSTART:20211128T143000Z
DTEND:20211128T144100Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Ethan Leba":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/structural\n
@@ -514,8 +514,8 @@ UID:29d45a6f-9425-f5a4-bd23-297292e4ab7a
URL:https://emacsconf.org/2021/talks/dsl
DTSTART:20211128T144300Z
DTEND:20211128T150300Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Psionic":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/dsl\n
@@ -530,8 +530,8 @@ UID:8f62e571-91da-bd14-e7c3-b445c7b19d23
URL:https://emacsconf.org/2021/talks/ui
DTSTART:20211128T150600Z
DTEND:20211128T151600Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Erik Anderson":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/ui\n
@@ -544,8 +544,8 @@ UID:b073d391-6c37-6bf4-7afb-47edc79631a9
URL:https://emacsconf.org/2021/talks/rust
DTSTART:20211128T151900Z
DTEND:20211128T153900Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Tuấn-Anh Nguyễn":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/rust\n
@@ -558,8 +558,8 @@ UID:3364aedb-a496-5c64-5383-b0080afa6d7b
URL:https://emacsconf.org/2021/talks/mold
DTSTART:20211128T154400Z
DTEND:20211128T155400Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Andrea":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/mold\n
@@ -573,8 +573,8 @@ UID:5e1baaaf-56a3-b5b4-31cb-5437cf465cf9
URL:https://emacsconf.org/2021/talks/model
DTSTART:20211128T155800Z
DTEND:20211128T160800Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Laszlo Krajnikovszkij":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/model\n
@@ -588,8 +588,8 @@ UID:4cd6de26-cf48-95c4-9d3b-28895a43ec53
URL:https://emacsconf.org/2021/talks/devel
DTSTART:20211128T161100Z
DTEND:20211128T163100Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Stefan Kangas":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/devel\n
@@ -603,8 +603,8 @@ UID:1ddbe380-b4f3-2b84-3cc3-9e799536db8e
URL:https://emacsconf.org/2021/talks/native
DTSTART:20211128T163600Z
DTEND:20211128T171600Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Andrea Corallo":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/native\n
@@ -617,8 +617,8 @@ UID:5947c3e9-93c1-1014-7ffb-aa0e0097e3e4
URL:https://emacsconf.org/2021/talks/form
DTSTART:20211128T180000Z
DTEND:20211128T182000Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Ian Eure":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/form\n
@@ -631,8 +631,8 @@ UID:49a35f05-b71f-1d14-2343-a6638bec0d08
URL:https://emacsconf.org/2021/talks/bindat
DTSTART:20211128T182400Z
DTEND:20211128T185400Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Stefan Monnier":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/bindat\n
@@ -645,8 +645,8 @@ UID:5e162d34-ea19-8544-b693-dd6da0e885cd
URL:https://emacsconf.org/2021/talks/test
DTSTART:20211128T185900Z
DTEND:20211128T190400Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Eduardo Ochs":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/test\n
@@ -659,8 +659,8 @@ UID:51023225-018f-cf24-9d73-3c267907c13e
URL:https://emacsconf.org/2021/talks/bug
DTSTART:20211128T190700Z
DTEND:20211128T192700Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Bastien Guerry":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/bug\n
@@ -674,8 +674,8 @@ UID:1407591a-29fd-3f64-1beb-01dea6e9d7d2
URL:https://emacsconf.org/2021/talks/bidi
DTSTART:20211128T193400Z
DTEND:20211128T195400Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Mohsen BANAN":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/bidi\n
@@ -688,8 +688,8 @@ UID:e7981936-6d72-93d4-8783-5ac64a0ae5bb
URL:https://emacsconf.org/2021/talks/eaf
DTSTART:20211128T195900Z
DTEND:20211128T200900Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Matthew Zeng":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/eaf\n
@@ -702,8 +702,8 @@ UID:daf3570b-3df3-9db4-a1f3-ce98d9863717
URL:https://emacsconf.org/2021/talks/clede
DTSTART:20211128T201300Z
DTEND:20211128T203300Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Fermin MF":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/clede\n
@@ -716,8 +716,8 @@ UID:f03ae971-4d2b-ccc4-2643-4ae2391ce1ab
URL:https://emacsconf.org/2021/talks/imaginary
DTSTART:20211128T204000Z
DTEND:20211128T205100Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Shane Mulligan":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/imaginary\n
@@ -730,8 +730,8 @@ UID:27595637-b6b9-f764-805b-ff1b7f009006
URL:https://emacsconf.org/2021/talks/build
DTSTART:20211128T205400Z
DTEND:20211128T211400Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Fermin MF":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/build\n
@@ -745,8 +745,8 @@ UID:80d1ad02-5fe4-03b4-c573-17ea6cdb61aa
URL:https://emacsconf.org/2021/talks/forever
DTSTART:20211128T212100Z
DTEND:20211128T214600Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="David Wilson (System Crafters)":invalid:nomail
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/forever\n
@@ -759,8 +759,8 @@ UID:828e7c62-8430-f1a4-431b-63c308d58688
URL:https://emacsconf.org/2021/talks/day2-close
DTSTART:20211128T220600Z
DTEND:20211128T221600Z
-DTSTAMP:20211118T212927Z
-SEQUENCE:20211118T212927Z
+DTSTAMP:20211119T012851Z
+SEQUENCE:20211119T012851Z
DESCRIPTION: Times are approximate and will probably change.\nhttps://emacs
conf.org/2021/talks/day2-close\n
END:VEVENT
diff --git a/2021/info/pattern-schedule.md b/2021/info/pattern-schedule.md
index 10df1803..4bf7abd0 100644
--- a/2021/info/pattern-schedule.md
+++ b/2021/info/pattern-schedule.md
@@ -1,7 +1,7 @@
<!-- Automatically generated by conf-create-info-pages -->
Q&A: IRC
-Status: Captions added to video
+Status: Prerecorded video received, waiting for captions
Duration: 23:42
<div class="times" start="2021-11-27T15:11:00Z" end="2021-11-27T15:35:00Z">Saturday, Nov 27 2021, ~10:11 AM - 10:35 AM EST<br />Saturday, Nov 27 2021, ~ 7:11 AM - 7:35 AM PST<br />Saturday, Nov 27 2021, ~ 3:11 PM - 3:35 PM UTC<br />Saturday, Nov 27 2021, ~ 4:11 PM - 4:35 PM CET<br />Saturday, Nov 27 2021, ~ 8:41 PM - 9:05 PM IST<br />Saturday, Nov 27 2021, ~11:11 PM - 11:35 PM +08<br />Sunday, Nov 28 2021, ~12:11 AM - 12:35 AM JST</div>
[[!inline pages="internal(2021/inline-alternate)" raw="yes"]]
diff --git a/2021/schedule-details.md b/2021/schedule-details.md
index 0b42a7dc..fb6f289e 100644
--- a/2021/schedule-details.md
+++ b/2021/schedule-details.md
@@ -1,4 +1,4 @@
-<div>53 talks total: 22 captioned (273 min), 8 waiting for captions (135 min)</div>
+<div>53 talks total: 21 captioned (249 min), 9 waiting for captions (159 min)</div>
<table width="100%"><tr><th>Status</th><th>Start</th><th>Title</th><th>Speaker(s)</th></tr><tr><td colspan="4"><strong>Saturday morning<strong></td></tr>
<tr><td></td><td width=100>~ 9:00 AM</td><td><a href="/2021/talks/day1-open">Opening remarks</a></td><td></td></tr>
<tr><td>captioned</td><td width=100>~ 9:05 AM</td><td><a href="/2021/talks/news">Emacs News Highlights</a></td><td>Sacha Chua</td></tr>
@@ -6,7 +6,7 @@
<tr><td>received</td><td width=100>~ 9:34 AM</td><td><a href="/2021/talks/omegat">Emacs manuals translation and OmegaT</a></td><td>Jean-Christophe Helary</td></tr>
<tr><td>captioned</td><td width=100>~ 9:47 AM</td><td><a href="/2021/talks/unix">GNU's Not UNIX: Why Emacs Demonstrates The UNIX Philosophy Isn't Always The Only Answer</a></td><td>Daniel Rose</td></tr>
<tr><td></td><td width=100>~ 9:58 AM</td><td><a href="/2021/talks/montessori">Emacs and Montessori Philosophy</a></td><td>Grant Shangreaux</td></tr>
-<tr><td>captioned</td><td width=100>~10:11 AM</td><td><a href="/2021/talks/pattern">Emacs as Design Pattern Learning</a></td><td>Greta Goetz</td></tr>
+<tr><td>received</td><td width=100>~10:11 AM</td><td><a href="/2021/talks/pattern">Emacs as Design Pattern Learning</a></td><td>Greta Goetz</td></tr>
<tr><td>captioned</td><td width=100>~10:37 AM</td><td><a href="/2021/talks/nongnu">NonGNU ELPA Update</a></td><td>Philip Kaludercic</td></tr>
<tr><td>captioned</td><td width=100>~10:49 AM</td><td><a href="/2021/talks/borg">Manual Package Management in The Era of Repositories - Why and How</a></td><td>Dhavan (codingquark)</td></tr>
<tr><td>captioned</td><td width=100>~11:01 AM</td><td><a href="/2021/talks/telega">telega.el and the Emacs community on Telegram</a></td><td>Gabriele Bozzola</td></tr>
diff --git a/playbook.md b/playbook.md
index 04645e33..2ddd0dab 100644
--- a/playbook.md
+++ b/playbook.md
@@ -58,25 +58,50 @@
<td class="org-left">${stream-status}</td>
<td class="org-left"><a href="file://ssh:live:/var/www/html/index.html">file://ssh:live:/var/www/html/index.html</a></td>
</tr>
+
+
+<tr>
+<td class="org-left">${upcoming}</td>
+<td class="org-left">upcoming.org shared over CRDT</td>
+</tr>
+
+
+<tr>
+<td class="org-left">${conf}</td>
+<td class="org-left">conf.org shared over CRDT</td>
+</tr>
+
+
+<tr>
+<td class="org-left">${dump}</td>
+<td class="org-left"><a href="file://ssh:live:/data/">file://ssh:live:/data/</a></td>
+</tr>
+
+
+<tr>
+<td class="org-left">${media}</td>
+<td class="org-left"><a href="file://ssh:front:/var/www/media.emacsconf.org/2021/">file://ssh:front:/var/www/media.emacsconf.org/2021/</a></td>
+</tr>
</tbody>
</table>
# Pre-conference dry run
-- [ ] [Start streaming](#org264efc8)
-- [ ] [Start low-resolution stream](#org46f6925)
-- [ ] [Start Youtube stream](#orgcfa71d3)
-- [ ] Check in a speaker
-- [ ] Try alternate stream
+- [ ] [Start streaming](#org3e15cdd)
+- [ ] [Check in a speaker](#orgd201d88)
+- [ ] Try streaming the organizer room, HOST rehearses opening remarks
+- [ ] Play a prerec
+- [ ] Try switching to talk room and streaming pretend Q&A
+- [ ] Try playing another prerec
- [ ] Try publication process
+- [ ] Start alternate stream and check (?)
- [ ] Review the playbook
-- [ ] Sort out CRDT
# Thursday or Friday before the conference
-- STREAM: Download prerecorded videos from front:/var/www/media.emacsconf.org/2021/protected
+- STREAM: Download prerecorded videos from ${protected}
# On the day of the conference
@@ -85,41 +110,77 @@
## Set up
-<a id="org264efc8"></a>
+### Arrange screens
+
+- CHECK:
+ - Share ${upcoming} and ${conf} via CRDT
+ - Current schedule, filenames/commands for playing, Q&A preference, IRC nick, pronunciation, intro notes, prerec duration, emergency contact information
+ - Have #emacsconf-org and #emacsconf open
+- HOST:
+ - Check OBS scenes for sharing windows/tabs as a virtual camera:
+ - chat.emacsconf.org with #emacsconf
+ - Etherpad
+ - Schedule
+ - next talk page
+ - Clock with current time on screen: `watch TZ=America/Toronto date`
+ - Set up backchannel for easy viewing
+ - ${upcoming}
+ - \#emacsconf-org and #emacsconf channels
+ - Join organizer room S
+- STREAM:
+ - Set up MPV with the profile
+ - Join organizer BBB room
+ - Check OBS scenes
+ - MPV and audio from MPV
+ - Web browser with BBB
+ - Browser window with organizer room, audio from organizer room
+ - Browser window that will have talk room, audio from talk room
+ - Backchannel for easy viewing
+- CHECK:
+ - Start backup process for pad
+
+ while true; do
+ curl https://etherpad.wikimedia.org/p/emacsconf-2021/export/html > emacsconf-$(date +"%Y%m%d-%H%M%S").html
+ sleep 15m
+ end
+
+
+<a id="org3e15cdd"></a>
### Start streaming :stream:
-- Start streaming from OBS to local Icecast, relay to live0 icecast
-- Display current time on screen: `watch TZ=America/Toronto date`
-
-Update <file://ssh:live:/var/www/html/index.html>
-
-
-<a id="org46f6925"></a>
-
-### Start low-resolution stream :check:
-
-Call this on live0 with the password as the first parameter. The Icecast configuration is on `live0` at `/etc/icecast2/icecast.xml`.
-
- while true; do ffmpeg -f webm -reconnect_at_eof 1 -reconnect_streamed 1 -re -i http://localhost:8000/main.webm -vf scale=854:480 -f webm -c:a copy -b:v 500k -maxrate 1M -bufsize 1M -content_type video/webm -c:v libvpx icecast://ec2020main480pmu:${1}:8000/main-480p.webm; done
+- HOST: Display getting-ready message
+- STREAM: Set up BBB view in organizer room to have HOST's webcam maximized
+- STREAM: Start streaming from OBS to local Icecast, relay to live0 icecast
+- CHECK: Confirm that the stream is live at <https://live.emacsconf.org/main.webm>, update <file://ssh:live:/var/www/html/index.html>
+- CHECK: Start low-resolution stream, confirm at <https://live.emacsconf.org/main-480p.webm>
+ Call this on live0 with the password as the first parameter. The Icecast configuration is on `live0` at `/etc/icecast2/icecast.xml`.
+
+ PASS=$1
+ while true; do ffmpeg -f webm -reconnect_at_eof 1 -reconnect_streamed 1 -re -i http://localhost:8000/main.webm -vf scale=854:480 -f webm -c:a copy -b:v 500k -maxrate 1M -bufsize 1M -content_type video/webm -c:v libvpx icecast://ec2020main480pmu:$PASS:8000/main-480p.webm; done
+- CHECK: Start Youtube stream. Call this with the Youtube streaming key as the first parameter.
+
+ KEY=$1
+ while true; do ffmpeg -f webm -reconnect_at_eof 1 -reconnect_streamed 1 -re -i http://localhost:8000/main.webm -f webm -c:a copy -c:v copy rtmp://a.rtmp.youtube.com/live2/$KEY; done
+- CHECK: Try toobnix stream. Call this with the Toobnix streaming key as the first parameter. (key from <https://toobnix.org/videos/upload#go-live>)
+
+ KEY=$1
+ while true; do ffmpeg -f webm -reconnect_at_eof 1 -reconnect_streamed 1 -re -i http://localhost:8000/main.webm -f webm -c:a copy -c:v copy rtmp://toobnix.org:1935/live/$KEY; done
+- CHECK: Verify the load on live0.
+- CHECK: Verify with #emacsconf that the stream is active
-<a id="orgcfa71d3"></a>
-
-### Start Youtube stream :check:
-
-Call this on live0 with the Youtube RTMP streaming key as the first parameter.
+## Talk process
- while true; do ffmpeg -f webm -reconnect_at_eof 1 -reconnect_streamed 1 -re -i http://localhost:8000/main.webm -f webm -c:a copy -c:v copy rtmp://a.rtmp.youtube.com/live2/$1; done
+<a id="orgd201d88"></a>
-## Talk process
+### Check in a speaker
-
-### Check in speaker
+Exception: [CHECK is unavailable](#org7d6c756)
- Speaker checks in on #emacsconf-org via IRC or via e-mail ~30m before
-- CHECK notes IRC nick for speaker. `M-g t <slug> C-. p IRC <nick>` (using Embark and conf-go-to-talk)
+- CHECK notes IRC nick for speaker.
- CHECK confirms Q&A preference: live/IRC/Etherpad, preferred way of getting questions
- [? unknown] How would you like to handle questions today? Live video, #emacsconf, Etherpad?
- [? IRC] You can keep an eye on #emacsconf for questions and discussions related to your talk. Feel free to answer, skip answering, tell people that you'll follow up afterwards, etc. We'll also copy questions from the Etherpad so that you can see them in one place. Let us know if you need help or if you want to get set up for live Q&A! (If the volume gets overwhelming, we can copy questions into #emacsconf-questions for you.)
@@ -144,15 +205,19 @@ Call this on live0 with the Youtube RTMP streaming key as the first parameter.
(otherwise the audio is confusing)
- If the speaker will be giving a live presentation, CHECK
collects emergency contact information (in case of technical
- issues) and /msgs it to HOST
+ issues) and shares it with HOST in the CRDT buffer
- Okay to do other things until the prerec ends
- CHECK notifies STREAM and HOST with link to the talk room and preferences for Q&A-.
-<a id="orgeae9b5c"></a>
+<a id="orgba71285"></a>
### Transition to talk
+- CHECK marks previous talk as done and notes the time finished:
+ - ${conf}
+ - ${upcoming} - remove finished one
+ - wiki
- [? next talk is prerec]
- HOST introduces next talk.
- STREAM switches OBS scene to MPV.
@@ -162,9 +227,8 @@ Call this on live0 with the Youtube RTMP streaming key as the first parameter.
- HOST starts recording or confirms that it's already on.
- STREAM gives the go-ahead.
- HOST introduces next talk.
-- PAD backs up a copy of the pad.
- PAD clears pad colours.
-- Exception: [Speaker does not have a prerec and has not checked in](#org03ea047)
+- Exception: [Speaker does not have a prerec and has not checked in](#org3ea273d)
### Present talk
@@ -172,26 +236,66 @@ Call this on live0 with the Youtube RTMP streaming key as the first parameter.
- [? prerec]
- STREAM and HOST switch to the organizer room in BBB.
- STREAM switches to MPV scene in OBS and plays the video (with captions if available).
- - Exception: [Last-minute prerecording submission](#org1c7436f)
+ - Exception: [Last-minute prerecording submission](#org82b860f)
- CHECK notes the time that the presentation started, recalculates schedule, and publishes it.
- - CHECK publishes the video to media.emacsconf.org
- - CHECK updates the wiki page to include the video and any other published files.
+ - [CHECK publishes information](#org0f20490)
+ - [HOST gets a head start on handling Q&A](#org529029f)
+ - When prerec finishes, [STREAM joins Q&A](#org529029f)
- [? live]
- - Exception: [Speaker does not have a prerec and has not checked in](#org03ea047)
+ - Exception: [Speaker does not have a prerec and has not checked in](#org3ea273d)
- HOST joins the BBB room and double-checks that recording is on
- - STREAM joins the BBB room from the IRC /msg and gives the go-ahead
+ - STREAM joins the BBB room and gives the go-ahead
- CHECK notes that this is a live presentation and that the recording will be posted after the conference.
- CHECK notes the time that the presentation started, recalculates schedule, and publishes it.
- Speaker presents.
+ - Exception: [Technical issues during a live presentation](#org948a020)
- [? talk needs to be wrapped up]
- HOST nudges speaker verbally.
+<a id="org0f20490"></a>
+
+### Publish information
+
+- CHECK updates the schedule in:
+ - ${conf}
+ - ${upcoming}
+ - wiki
+- CHECK publishes the video to media.emacsconf.org
+- CHECK updates the wiki page to include the video and any other published files.
+- CHECK publishes the video on YouTube.
+ - Update description:
+
+ This video is available under the terms of the
+ Creative Commons Attribution-ShareAlike 4.0 International (CC
+ BY-SA 4.0) license.
+
+ You can view it using free and open source software at
+ talk page URL
+
+ description from wiki page
+ - Reupload subtitles.
+ - Mark it as public.
+ - Add it to EmacsConf 2021 playlist.
+- CHECK publishes the video on ToobNix.
+ - Copy title and description.
+ - Mark it as public.
+ - Add it to the EmacsConf 2021 playlist.
+- [? live sections ]
+ - CHECK does a rough-cut of the recording from ${dump} to get the last X minutes or by time range
+ - When there's an opportunity to do so:
+ - CHECK finetunes the rough-cut recording (trim start and end) and posts it to:
+ - media.emacsconf.org/2021
+ - wiki page for talk
+
+
+<a id="org529029f"></a>
+
### Handle Q&A
Exceptions:
-- [Speaker has not checked in](#orgf9944ea)
+- [Speaker has not checked in](#org4002294)
- [? live]
- HOST joins the BBB room
@@ -200,8 +304,12 @@ Exceptions:
- HOST describes how to ask questions
- [? No questions yet]
- HOST thanks speaker, says nice things about talk, and asks a couple of prepared questions
+ - [? Awkward question]
+ - HOST can try rephrasing the question.
+ - HOST adds note to IRC/Etherpad that speakers can answer in any order, skip questions, answer afterwards, etc.
- [? Q&A needs to be wrapped up]
- HOST writes in Etherpad/IRC or nudges speaker verbally.
+ - CHECK notes the time that the live Q&A finished.
- [? IRC/pad]
- HOST and STREAM switch to organizer BBB meeting (room S)
- HOST describes Q&A method and shows it on the screen
@@ -218,25 +326,28 @@ Exceptions:
want to be notified, or subscribe to the emacsconf-org mailing
list to get the announcement. Please feel free to continue
discussing the talk on IRC or the pad.
-- [Transition to talk](#orgeae9b5c)
+- [Transition to next talk](#orgba71285)
+
+
+## End of stream
+
+- CHECK stops ffmpeg process for Youtube
+- CHECK stops ffmpeg process for main-480p
+- STREAM stops streaming
## In case of&#x2026;
-<a id="org1c7436f"></a>
+<a id="org82b860f"></a>
### Last-minute prerecording submission
- CHECK will copy it from the FTP upload server to ${protected} and name it appropriately.
- CHECK will notify STREAM with the scp command and the mpv command so that STREAM can choose.
-- TODO Shortcut for moving things around
-
-- TODO Shortcut for notifying STREAM
-
-<a id="orgf9944ea"></a>
+<a id="org4002294"></a>
### Speaker has not checked in
@@ -247,7 +358,7 @@ Exceptions:
- Can play next prerec a few minutes early
-<a id="org03ea047"></a>
+<a id="org3ea273d"></a>
### Speaker does not have a prerec and has not checked in
@@ -297,6 +408,71 @@ Exceptions:
- PAD reimports the pad from backup
+### CRDT malfunctions
+
+- HOST notifies CHECK and tries reconnecting
+- [? still doesn't work]
+ - Switch to backup Etherpad
+
+
+### Conduct guidelines issue
+
+- HOST addresses it (on-camera if needed) with a reminder
+
+
+<a id="org7d6c756"></a>
+
+### CHECK is unavailable
+
+- HOST does check-ins
+- HOST refers to conf.org for Q&A preference etc.
+- STREAM checks conf.org for prerec filenames etc.
+- Dropped goals:
+ - Publishing recordings ASAP
+ - Updating schedule/wiki on the fly
+
+
+### HOST is unavailable
+
+- Either STREAM or CHECK does hosting
+
+
+<a id="org948a020"></a>
+
+### Technical issues during a live presentation
+
+- HOST tries to contact the speaker
+- [? back on track]
+ - [? can be squeezed into remaining time]: Continue
+ - [? need extra time]: CHECK fiddles with buffer of following talks
+ - [? need too much extra time (ex: 10min)]: HOST acknowledges
+ technical issues and says we may be able to follow up after the
+ conference
+- [? can't resume]: HOST acknowledges technical issues and says we may
+ be able to follow up after the conference
+
+
+### Big technical issues with streaming
+
+- CHECK notifies #emacsconf and #emacsconf-org
+- HOST updates the 2021.md wiki page
+- CHECK publishes prerecordings
+ - media.emacsconf.org
+ - wiki
+ - Toobnix
+ - Peertube
+- STREAM e-mails the mailing list
+
+
+### live0 can't handle the load or is close to network transfer limit
+
+- OR:
+ - Redirect some viewers via asking in #emacsconf:
+ - watch via Toobnix
+ - watch via main-480p
+ - Consider dropping the restream to Toobnix (lower audience?) or to Youtube
+
+
# Before the conference
@@ -333,3 +509,6 @@ Exceptions:
## Review Youtube videos
+
+## TODO STREAM: Scale up the server and doublecheck the setup
+
diff --git a/playbook.org b/playbook.org
index 53fb2bb7..9a0bc829 100644
--- a/playbook.org
+++ b/playbook.org
@@ -13,29 +13,34 @@
| HOST | hosting, intros, reading, moving questions/answers around | zaeph |
| ${protected} | [[/ssh:front:/var/www/media.emacsconf.org/2021/protected/]] |
-| ${stream-status} | [[/ssh:live:/var/www/html/index.html]] |
+| ${stream-status} | [[/ssh:live:/var/www/html/index.html]] |
+| ${upcoming} | upcoming.org shared over CRDT |
+| ${conf} | conf.org shared over CRDT |
+| ${dump} | [[/ssh:live:/data/]] |
+| ${media} | [[/ssh:front:/var/www/media.emacsconf.org/2021/]] |
* Pre-conference dry run
- [ ] [[*Start streaming][Start streaming]]
-- [ ] [[*Start low-resolution stream][Start low-resolution stream]]
-- [ ] [[*Start Youtube stream][Start Youtube stream]]
-- [ ] Check in a speaker
-- [ ] Try alternate stream
+- [ ] [[*Check in a speaker][Check in a speaker]]
+- [ ] Try streaming the organizer room, HOST rehearses opening remarks
+- [ ] Play a prerec
+- [ ] Try switching to talk room and streaming pretend Q&A
+- [ ] Try playing another prerec
- [ ] Try publication process
+- [ ] Start alternate stream and check (?)
- [ ] Review the playbook
-- [ ] Sort out CRDT
* Thursday or Friday before the conference
-- STREAM: Download prerecorded videos from front:/var/www/media.emacsconf.org/2021/protected
+- STREAM: Download prerecorded videos from ${protected}
* On the day of the conference
** Set up
*** Arrange screens
- CHECK:
- - Share "upcoming" buffer with HOST and via CRDT
- - Current schedule, filenames/commands for playing
+ - Share ${upcoming} and ${conf} via CRDT
+ - Current schedule, filenames/commands for playing, Q&A preference, IRC nick, pronunciation, intro notes, prerec duration, emergency contact information
- Have #emacsconf-org and #emacsconf open
- HOST:
- Check OBS scenes for sharing windows/tabs as a virtual camera:
@@ -43,9 +48,10 @@
- Etherpad
- Schedule
- next talk page
+ - Clock with current time on screen: =watch TZ=America/Toronto date=
- Set up backchannel for easy viewing
- - "upcoming" CRDT buffer
- - #emacsconf-org channel
+ - ${upcoming}
+ - #emacsconf-org and #emacsconf channels
- Join organizer room S
- STREAM:
- Set up MPV with the profile
@@ -56,33 +62,47 @@
- Browser window with organizer room, audio from organizer room
- Browser window that will have talk room, audio from talk room
- Backchannel for easy viewing
+- CHECK:
+ - Start backup process for pad
+ #+begin_src sh :eval no :tangle playbook/backup-pad.sh
+ while true; do
+ curl https://etherpad.wikimedia.org/p/emacsconf-2021/export/html > emacsconf-$(date +"%Y%m%d-%H%M%S").html
+ sleep 15m
+ end
+ #+end_src
*** Start streaming :stream:
-- Start streaming from OBS to local Icecast, relay to live0 icecast
-- Display current time on screen: =watch TZ=America/Toronto date=
+- HOST: Display getting-ready message
+- STREAM: Set up BBB view in organizer room to have HOST's webcam maximized
+- STREAM: Start streaming from OBS to local Icecast, relay to live0 icecast
+- CHECK: Confirm that the stream is live at https://live.emacsconf.org/main.webm, update [[/ssh:live:/var/www/html/index.html]]
+- CHECK: Start low-resolution stream, confirm at https://live.emacsconf.org/main-480p.webm
+ Call this on live0 with the password as the first parameter. The Icecast configuration is on =live0= at =/etc/icecast2/icecast.xml=.
+ #+begin_src sh :eval no :tangle "playbook/restream-lowres.sh"
+ PASS=$1
+ while true; do ffmpeg -f webm -reconnect_at_eof 1 -reconnect_streamed 1 -re -i http://localhost:8000/main.webm -vf scale=854:480 -f webm -c:a copy -b:v 500k -maxrate 1M -bufsize 1M -content_type video/webm -c:v libvpx icecast://ec2020main480pmu:$PASS:8000/main-480p.webm; done
+ #+end_src
+- CHECK: Start Youtube stream. Call this with the Youtube streaming key as the first parameter.
+ #+begin_src sh :eval no :tangle "playbook/restream-youtube.sh"
+ KEY=$1
+ while true; do ffmpeg -f webm -reconnect_at_eof 1 -reconnect_streamed 1 -re -i http://localhost:8000/main.webm -f webm -c:a copy -c:v copy rtmp://a.rtmp.youtube.com/live2/$KEY; done
+ #+end_src
+- CHECK: Try toobnix stream. Call this with the Toobnix streaming key as the first parameter. (key from https://toobnix.org/videos/upload#go-live)
+ #+begin_src sh :eval no :tangle "playbook/restream-toobnix.sh"
+ KEY=$1
+ while true; do ffmpeg -f webm -reconnect_at_eof 1 -reconnect_streamed 1 -re -i http://localhost:8000/main.webm -f webm -c:a copy -c:v copy rtmp://toobnix.org:1935/live/$KEY; done
+ #+end_src
+- CHECK: Verify the load on live0.
+- CHECK: Verify with #emacsconf that the stream is active
-Update [[/ssh:live:/var/www/html/index.html]]
-
-*** Start low-resolution stream :check:
-
-Call this on live0 with the password as the first parameter. The Icecast configuration is on =live0= at =/etc/icecast2/icecast.xml=.
-
-#+begin_src sh :eval no :tangle "playbook/restream-lowres.sh"
- while true; do ffmpeg -f webm -reconnect_at_eof 1 -reconnect_streamed 1 -re -i http://localhost:8000/main.webm -vf scale=854:480 -f webm -c:a copy -b:v 500k -maxrate 1M -bufsize 1M -content_type video/webm -c:v libvpx icecast://ec2020main480pmu:${1}:8000/main-480p.webm; done
-#+end_src
-*** Start Youtube stream :check:
-
-Call this on live0 with the Youtube RTMP streaming key as the first parameter.
-
-#+begin_src sh :eval no :tangle "playbook/restream-youtube.sh"
- while true; do ffmpeg -f webm -reconnect_at_eof 1 -reconnect_streamed 1 -re -i http://localhost:8000/main.webm -f webm -c:a copy -c:v copy rtmp://a.rtmp.youtube.com/live2/$1; done
-#+end_src
** Talk process
-*** Check in speaker
+*** Check in a speaker
+
+Exception: [[*CHECK is unavailable][CHECK is unavailable]]
- Speaker checks in on #emacsconf-org via IRC or via e-mail ~30m before
-- CHECK notes IRC nick for speaker. =M-g t <slug> C-. p IRC <nick>= (using Embark and conf-go-to-talk)
+- CHECK notes IRC nick for speaker.
- CHECK confirms Q&A preference: live/IRC/Etherpad, preferred way of getting questions
- [? unknown] How would you like to handle questions today? Live video, #emacsconf, Etherpad?
- [? IRC] You can keep an eye on #emacsconf for questions and discussions related to your talk. Feel free to answer, skip answering, tell people that you'll follow up afterwards, etc. We'll also copy questions from the Etherpad so that you can see them in one place. Let us know if you need help or if you want to get set up for live Q&A! (If the volume gets overwhelming, we can copy questions into #emacsconf-questions for you.)
@@ -113,6 +133,10 @@ Call this on live0 with the Youtube RTMP streaming key as the first parameter.
*** Transition to talk
+- CHECK marks previous talk as done and notes the time finished:
+ - ${conf}
+ - ${upcoming} - remove finished one
+ - wiki
- [? next talk is prerec]
- HOST introduces next talk.
- STREAM switches OBS scene to MPV.
@@ -122,9 +146,8 @@ Call this on live0 with the Youtube RTMP streaming key as the first parameter.
- HOST starts recording or confirms that it's already on.
- STREAM gives the go-ahead.
- HOST introduces next talk.
-- PAD backs up a copy of the pad.
- PAD clears pad colours.
-- Exception: [[*Speaker does not have a prerec and has not checked in][Speaker does not have a prerec and has not checked in]]
+- Exception: [[*Speaker does not have a prerec and has not checked in][Speaker does not have a prerec and has not checked in]]
*** Present talk
@@ -134,6 +157,8 @@ Call this on live0 with the Youtube RTMP streaming key as the first parameter.
- Exception: [[*Last-minute prerecording submission][Last-minute prerecording submission]]
- CHECK notes the time that the presentation started, recalculates schedule, and publishes it.
- [[*Publish information][CHECK publishes information]]
+ - [[*Handle Q&A][HOST gets a head start on handling Q&A]]
+ - When prerec finishes, [[*Handle Q&A][STREAM joins Q&A]]
- [? live]
- Exception: [[*Speaker does not have a prerec and has not checked in][Speaker does not have a prerec and has not checked in]]
- HOST joins the BBB room and double-checks that recording is on
@@ -141,9 +166,44 @@ Call this on live0 with the Youtube RTMP streaming key as the first parameter.
- CHECK notes that this is a live presentation and that the recording will be posted after the conference.
- CHECK notes the time that the presentation started, recalculates schedule, and publishes it.
- Speaker presents.
+ - Exception: [[*Technical issues during a live presentation][Technical issues during a live presentation]]
- [? talk needs to be wrapped up]
- HOST nudges speaker verbally.
+
+*** Publish information
+ - CHECK updates the schedule in:
+ - ${conf}
+ - ${upcoming}
+ - wiki
+ - CHECK publishes the video to media.emacsconf.org
+ - CHECK updates the wiki page to include the video and any other published files.
+ - CHECK publishes the video on YouTube.
+ - Update description:
+ #+begin_example
+ This video is available under the terms of the
+ Creative Commons Attribution-ShareAlike 4.0 International (CC
+ BY-SA 4.0) license.
+
+ You can view it using free and open source software at
+ talk page URL
+
+ description from wiki page
+ #+end_example
+ - Reupload subtitles.
+ - Mark it as public.
+ - Add it to EmacsConf 2021 playlist.
+ - CHECK publishes the video on ToobNix.
+ - Copy title and description.
+ - Mark it as public.
+ - Add it to the EmacsConf 2021 playlist.
+ - [? live sections ]
+ - CHECK does a rough-cut of the recording from ${dump} to get the last X minutes or by time range
+ - When there's an opportunity to do so:
+ - CHECK finetunes the rough-cut recording (trim start and end) and posts it to:
+ - media.emacsconf.org/2021
+ - wiki page for talk
+
*** Handle Q&A
Exceptions:
@@ -161,6 +221,7 @@ Exceptions:
- HOST adds note to IRC/Etherpad that speakers can answer in any order, skip questions, answer afterwards, etc.
- [? Q&A needs to be wrapped up]
- HOST writes in Etherpad/IRC or nudges speaker verbally.
+ - CHECK notes the time that the live Q&A finished.
- [? IRC/pad]
- HOST and STREAM switch to organizer BBB meeting (room S)
- HOST describes Q&A method and shows it on the screen
@@ -177,16 +238,15 @@ Exceptions:
want to be notified, or subscribe to the emacsconf-org mailing
list to get the announcement. Please feel free to continue
discussing the talk on IRC or the pad.
-- [[*Transition to talk][Transition to talk]]
-*** Publish information
- - CHECK updates the schedule on the wiki
- - CHECK publishes the video to media.emacsconf.org
- - CHECK updates the wiki page to include the video and any other published files.
- - CHECK publishes the video on YouTube
- -
+- [[*Transition to talk][Transition to next talk]]
+** End of stream
+- CHECK stops ffmpeg process for Youtube
+- CHECK stops ffmpeg process for main-480p
+- STREAM stops streaming
+
+
** In case of...
-
*** Last-minute prerecording submission
- CHECK will copy it from the FTP upload server to ${protected} and name it appropriately.
@@ -244,6 +304,50 @@ Exceptions:
- HOST addresses it (on-camera if needed) with a reminder
+*** CHECK is unavailable
+
+- HOST does check-ins
+- HOST refers to conf.org for Q&A preference etc.
+- STREAM checks conf.org for prerec filenames etc.
+- Dropped goals:
+ - Publishing recordings ASAP
+ - Updating schedule/wiki on the fly
+
+*** HOST is unavailable
+
+- Either STREAM or CHECK does hosting
+
+*** Technical issues during a live presentation
+
+- HOST tries to contact the speaker
+- [? back on track]
+ - [? can be squeezed into remaining time]: Continue
+ - [? need extra time]: CHECK fiddles with buffer of following talks
+ - [? need too much extra time (ex: 10min)]: HOST acknowledges
+ technical issues and says we may be able to follow up after the
+ conference
+- [? can't resume]: HOST acknowledges technical issues and says we may
+ be able to follow up after the conference
+
+*** Big technical issues with streaming
+
+- CHECK notifies #emacsconf and #emacsconf-org
+- HOST updates the 2021.md wiki page
+- CHECK publishes prerecordings
+ - media.emacsconf.org
+ - wiki
+ - Toobnix
+ - Peertube
+- STREAM e-mails the mailing list
+
+*** live0 can't handle the load or is close to network transfer limit
+
+- OR:
+ - Redirect some viewers via asking in #emacsconf:
+ - watch via Toobnix
+ - watch via main-480p
+ - Consider dropping the restream to Toobnix (lower audience?) or to Youtube
+
* Before the conference
** Help speakers with tech checks
- Explain process
@@ -266,3 +370,5 @@ Exceptions:
- Test stream
** Review Youtube videos
+** TODO STREAM: Scale up the server and doublecheck the setup
+SCHEDULED: <2021-11-26 Fri>
diff --git a/playbook/restream-lowres.sh b/playbook/restream-lowres.sh
index 6312b9eb..3ee7c20d 100644
--- a/playbook/restream-lowres.sh
+++ b/playbook/restream-lowres.sh
@@ -1 +1,2 @@
- while true; do ffmpeg -f webm -reconnect_at_eof 1 -reconnect_streamed 1 -re -i http://localhost:8000/main.webm -vf scale=854:480 -f webm -c:a copy -b:v 500k -maxrate 1M -bufsize 1M -content_type video/webm -c:v libvpx icecast://ec2020main480pmu:${1}:8000/main-480p.webm; done
+ PASS=$1
+ while true; do ffmpeg -f webm -reconnect_at_eof 1 -reconnect_streamed 1 -re -i http://localhost:8000/main.webm -vf scale=854:480 -f webm -c:a copy -b:v 500k -maxrate 1M -bufsize 1M -content_type video/webm -c:v libvpx icecast://ec2020main480pmu:$PASS:8000/main-480p.webm; done
diff --git a/playbook/restream-youtube.sh b/playbook/restream-youtube.sh
index 7609305e..c1fee46c 100644
--- a/playbook/restream-youtube.sh
+++ b/playbook/restream-youtube.sh
@@ -1 +1,2 @@
- while true; do ffmpeg -f webm -reconnect_at_eof 1 -reconnect_streamed 1 -re -i http://localhost:8000/main.webm -f webm -c:a copy -c:v copy rtmp://a.rtmp.youtube.com/live2/$1; done
+ KEY=$1
+ while true; do ffmpeg -f webm -reconnect_at_eof 1 -reconnect_streamed 1 -re -i http://localhost:8000/main.webm -f webm -c:a copy -c:v copy rtmp://a.rtmp.youtube.com/live2/$KEY; done