summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSacha Chua <sacha@sachachua.com>2022-11-28 14:47:23 -0500
committerSacha Chua <sacha@sachachua.com>2022-11-28 14:47:23 -0500
commite74706118c987c43748b6c0a1e4208f1d460c67c (patch)
treefb9360d772c3164d5e94ee283ac86b248c9d73c6
parent4e6de17fbca7861e757fcbf09ee6ea5607101f54 (diff)
downloademacsconf-wiki-e74706118c987c43748b6c0a1e4208f1d460c67c.tar.xz
emacsconf-wiki-e74706118c987c43748b6c0a1e4208f1d460c67c.zip
add reload js for detecting fallback
-rw-r--r--2022/organizers-notebook/index.org59
-rw-r--r--2022/watch/dev.md6
-rw-r--r--2022/watch/gen.md6
-rw-r--r--2022/watch/info.md4
-rw-r--r--templates/page.tmpl17
5 files changed, 71 insertions, 21 deletions
diff --git a/2022/organizers-notebook/index.org b/2022/organizers-notebook/index.org
index 82d5429e..62c4ffd3 100644
--- a/2022/organizers-notebook/index.org
+++ b/2022/organizers-notebook/index.org
@@ -169,18 +169,15 @@ SCHEDULED: <2022-11-28 Mon>
CLOCK: [2022-11-27 Sun 15:30]
:END:
-ffmpeg -y -r 20 -t 3 -i sorry.png -f lavfi -i anullsrc=channel_layout=stereo:sample_rate=48000 -shortest -c:v vp8 -color_primaries 1 -color_trc 1 -colorspace 1 sorry.webm
-
+ffmpeg -y -f lavfi -i anullsrc=channel_layout=stereo:sample_rate=48000 -loop 1 -r 20 -t 10 -i sorry.png -c:v libvpx -c:a libvorbis -color_primaries 1 -color_trc 1 -colorspace 1 -crf 30 -g 120 -minrate 1.5M -b:v 1500 -g 120 -maxrate 1.5M -cluster_time_limit 5100 -shortest sorry.webm
icecast 2.4.4
Stream #0:0: Video: vp8, yuv420p(tv, bt709, progressive), 1280x720, SAR 1:1 DAR 16:9, 20 fps, 20 tbr, 1k tbn, 1k tbc (default)
Stream #0:1: Audio: vorbis, 48000 Hz, stereo, fltp (default)
Okay. I can ffmpeg to /gen-sorry.webm with
- orga@live0:/usr/share/icecast2/web$ ffmpeg -r 20 -re -stream_loop -1 -i gen-fallback.webm -f webm -content_type video/webm -c:a copy -c:v vp8 icecast://emacsconf:$PASSWORD@localhost:8001/gen-sorry.webm
+ orga@live0:/usr/share/icecast2/web$ ffmpeg -r 20 -re -stream_loop -1 -i gen-fallback.webm -f webm -content_type video/webm -c:a copy -c:v copy icecast://emacsconf:$PASSWORD@localhost:8001/gen-sorry.webm
- if I stream to it and not gen, I see sorry using gen's mount
- If I stream to gen, I see gen, but I need to refresh (mpv or Firefox)
***** gen
@@ -209,16 +206,47 @@ Input #0, matroska,webm, from 'http://live0.emacsconf.org:8001/gen.webm':
:LOGBOOK:
- State "DONE" from "TODO" [2022-11-27 Sun 16:25]
:END:
-**** TODO Add more ffmpeg options from the OBS profile to try to get them to match as closely as possible
-SCHEDULED: <2022-11-28 Mon>
-**** TODO Detect fallback and reload the video player
-SCHEDULED: <2022-11-28 Mon>
+**** DONE Add more ffmpeg options from the OBS profile to try to get them to match as closely as possible
+CLOSED: [2022-11-28 Mon 14:24] SCHEDULED: <2022-11-28 Mon>
+:PROPERTIES:
+:Effort: 0:15
+:END:
+:LOGBOOK:
+CLOCK: [2022-11-28 Mon 13:24]--[2022-11-28 Mon 13:41] => 0:17
+:END:
+**** DONE Detect fallback and reload the video player
+CLOSED: [2022-11-28 Mon 14:46] SCHEDULED: <2022-11-28 Mon>
:PROPERTIES:
:CREATED: [2022-11-27 Sun 17:53]
+ :Effort: 0:30
+ :END:
+ :LOGBOOK:
+ CLOCK: [2022-11-28 Mon 14:24]--[2022-11-28 Mon 14:46] => 0:22
:END:
https://stackoverflow.com/questions/36280764/audio-stops-playing-while-moving-to-fallback-mount-using-icecast#36332739
+#+begin_src js :eval no
+ // @license magnet:?xt=urn:btih:90dc5c0be029de84e523b9b3922520e79e0e6f08&dn=cc0.txt txt CC0-1.0
+ // Copyright (c) 2022 Sacha Chua - CC0 Public Domain
+var video = document.querySelector('video.reload');
+if (video) {
+ var myVar = setInterval(reloadAsNeeded, 1000);
+ var oldTime = '';
+ function reloadAsNeeded() {
+ if ((video.paused != true && (video.currentTime - oldTime) == 0 && video.currentTime != 0)) {
+ var source = video.querySelector('source');
+ var oldVideo = source.src;
+ source.src = '';
+ source.src = oldVideo;
+ video.load();
+ video.play();
+ }
+ oldTime = video.currentTime;
+ };
+}
+// @license-end
+#+end_src
*** TODO [#A] Make sure things are okay for me to handle both streams :sachac:
SCHEDULED: <2022-11-29 Tue>
:PROPERTIES:
@@ -226,6 +254,7 @@ SCHEDULED: <2022-11-29 Tue>
:CUSTOM_ID: both
:END:
**** TODO Add autokey shortcuts
+SCHEDULED: <2022-11-30 Wed>
**** TODO figure out left/right to keep track of both streams
SCHEDULED: <2022-11-28 Mon>
:PROPERTIES:
@@ -266,8 +295,8 @@ can paste in https://emacsconf.org/2022/qa/ for tips.
:PROPERTIES:
:CUSTOM_ID: caption
:END:
-*** TODO Nudge volunteers to e-mail me captions by Dec 1 :mail:sachac:
-SCHEDULED: <2022-11-28 Mon>
+*** DONE Nudge volunteers to e-mail me captions by Dec 1 :mail:sachac:
+CLOSED: [2022-11-28 Mon 13:23] SCHEDULED: <2022-11-28 Mon>
*** DONE [#C] Copy chapter headings for mail talk :emacsconf:captions:
CLOSED: [2022-11-28 Mon 00:23]
:PROPERTIES:
@@ -5227,10 +5256,14 @@ CLOSED: [2022-11-21 Mon 13:30]
:PROPERTIES:
:CUSTOM_ID: live-speakers
:END:
-*** TODO [#A] Make sure IRC talks get BBB checkin information if they need to do it live :mail:
-SCHEDULED: <2022-11-28 Mon>
+*** DONE [#A] Make sure IRC talks get BBB checkin information if they need to do it live :mail:
+CLOSED: [2022-11-28 Mon 13:24] SCHEDULED: <2022-11-28 Mon>
:PROPERTIES:
:CREATED: [2022-11-23 Wed 11:24]
+:Effort: 0:15
+:END:
+:LOGBOOK:
+CLOCK: [2022-11-28 Mon 13:23]--[2022-11-28 Mon 13:24] => 0:01
:END:
survey, orgyear, lspbridge, eev, python
diff --git a/2022/watch/dev.md b/2022/watch/dev.md
index 499c10b6..3400a785 100644
--- a/2022/watch/dev.md
+++ b/2022/watch/dev.md
@@ -7,14 +7,14 @@
<hr size="1">
<div><a name="watch"></a><strong>Watch</strong> - <a href="#links">Pad and Q&amp;A links</a> - <a href="#chat">Chat</a> - <a href="#sched">Schedule</a> | Tracks: <a href="/2022/watch/gen/">General</a> - <strong>Development</strong></div>
-<video controls><source src="https://live0.emacsconf.org/dev.webm" type="video/webm" /></video>
+<video controls class="reload"><source src="https://live0.emacsconf.org/dev.webm" type="video/webm" /></video>
<div>Alternatively, load <a href="https://live0.emacsconf.org/dev.webm">https://live0.emacsconf.org/dev.webm</a> or <a href="https://live0.emacsconf.org/dev-480p.webm">https://live0.emacsconf.org/dev-480p.webm</a> (low-res) in a streaming media player such as MPV.</div>
<hr size="1"><div><a name="links"></a><a href="#watch">Watch</a> - <strong>Pad and Q&amp;A links</strong> - <a href="#chat">Chat</a> - <a href="#sched">Schedule</a> | Tracks: <a href="/2022/watch/gen/">General</a> - <strong>Development</strong></div><div><span><a href="https://emacsconf.org/2022/talks/treesitter">treesitter</a> (<a class="pad-link" href="https://pad.emacsconf.org/2022-treesitter">pad</a>, <a href="https://chat.emacsconf.org/?join=emacsconf,emacsconf-dev">#emacsconf-dev, speaker nick: meain</a>)</span> - <span><a href="https://emacsconf.org/2022/talks/lspbridge">lspbridge</a> (<a class="pad-link" href="https://pad.emacsconf.org/2022-lspbridge">pad</a>, <a href="https://chat.emacsconf.org/?join=emacsconf,emacsconf-dev">#emacsconf-dev, speaker nick: manateelazycat</a>)</span> - <span><a href="https://emacsconf.org/2022/talks/asmblox">asmblox</a> (<a class="pad-link" href="https://pad.emacsconf.org/2022-asmblox">pad</a>, <a href="https://emacsconf.org/current/asmblox/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2022/talks/wayland">wayland</a> (<a class="pad-link" href="https://pad.emacsconf.org/2022-wayland">pad</a>, <a href="https://emacsconf.org/current/wayland/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2022/talks/sqlite">sqlite</a> (<a class="pad-link" href="https://pad.emacsconf.org/2022-sqlite">pad</a>, <a href="https://emacsconf.org/current/sqlite/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2022/talks/mail">mail</a> (<a class="pad-link" href="https://pad.emacsconf.org/2022-mail">pad</a>, <a href="https://emacsconf.org/current/mail/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2022/talks/maint">maint</a> (<a class="pad-link" href="https://pad.emacsconf.org/2022-maint">pad</a>, <a href="https://emacsconf.org/current/maint/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2022/talks/eev">eev</a> (<a class="pad-link" href="https://pad.emacsconf.org/2022-eev">pad</a>, <a href="https://chat.emacsconf.org/?join=emacsconf,emacsconf-dev">#emacsconf-dev</a>)</span> - <span><a href="https://emacsconf.org/2022/talks/python">python</a> (<a class="pad-link" href="https://pad.emacsconf.org/2022-python">pad</a>, <a href="https://chat.emacsconf.org/?join=emacsconf,emacsconf-dev">#emacsconf-dev</a>)</span> - <span><a href="https://emacsconf.org/2022/talks/haskell">haskell</a> (<a class="pad-link" href="https://pad.emacsconf.org/2022-haskell">pad</a>, <a href="https://emacsconf.org/current/haskell/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2022/talks/rde">rde</a> (<a class="pad-link" href="https://pad.emacsconf.org/2022-rde">pad</a>, <a href="https://emacsconf.org/current/rde/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2022/talks/justl">justl</a> (<a class="pad-link" href="https://pad.emacsconf.org/2022-justl">pad</a>, <a href="https://chat.emacsconf.org/?join=emacsconf,emacsconf-dev">#emacsconf-dev</a>)</span> - <span><a href="https://emacsconf.org/2022/talks/rms">rms</a> (<a class="pad-link" href="https://pad.emacsconf.org/2022-rms">pad</a>, <a href="https://chat.emacsconf.org/?join=emacsconf,emacsconf-dev">Moderated via Mumble, ask questions via pad or IRC</a>)</span> - <span><a href="https://emacsconf.org/2022/talks/detached">detached</a> (<a class="pad-link" href="https://pad.emacsconf.org/2022-detached">pad</a>, <a href="https://emacsconf.org/current/detached/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2022/talks/eshell">eshell</a> (<a class="pad-link" href="https://pad.emacsconf.org/2022-eshell">pad</a>, <a href="https://emacsconf.org/current/eshell/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2022/talks/async">async</a> (<a class="pad-link" href="https://pad.emacsconf.org/2022-async">pad</a>, <a href="https://emacsconf.org/current/async/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2022/talks/dbus">dbus</a> (<a class="pad-link" href="https://pad.emacsconf.org/2022-dbus">pad</a>, <a href="https://emacsconf.org/current/dbus/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2022/talks/localizing">localizing</a> (<a class="pad-link" href="https://pad.emacsconf.org/2022-localizing">pad</a>, <a href="https://emacsconf.org/current/localizing/room/">BBB</a>)</span></div>
<div class="pad-output"></div>
-<hr size="1"><div><a name="chat"></a><a href="#watch">Watch</a> - <a href="#links">Pad and Q&amp;A links</a> - <strong>Chat</strong> - <a href="#sched">Schedule</a> | Tracks: <a href="/2022/watch/gen/">General</a> - <strong>Development</strong></div><div>Chat: <a href="https://chat.emacsconf.org/?join=emacsconf,emacsconf-dev">emacsconf-dev</a> on libera.chat</div>
+<hr size="1"><div><a name="chat"></a><a href="#watch">Watch</a> - <a href="#links">Pad and Q&amp;A links</a> - <strong>Chat</strong> - <a href="#sched">Schedule</a> | Tracks: <a href="/2022/watch/gen/">General</a> - <strong>Development</strong></div><div>Chat: <a href="${webchat-url}">emacsconf-dev</a> on libera.chat</div>
<div class="chat-iframe" data-track="dev"></div>
-<iframe src="https://chat.emacsconf.org/?join=emacsconf,emacsconf-dev" height="600" width="100%"></iframe>
+<iframe src="${webchat-url}" height="600" width="100%"></iframe>
<hr size="1"><div><a name="sched"></a><a href="#watch">Watch</a> - <a href="#links">Pad and Q&amp;A links</a> - <a href="#chat">Chat</a> - <strong>Schedule</strong> | Tracks: <a href="/2022/watch/gen/">General</a> - <strong>Development</strong></div>
<ul>Legend:
<li>Solid lines: Q&A will be through a BigBlueButton room (you can ask questions there or through IRC/Etherpad)</li>
diff --git a/2022/watch/gen.md b/2022/watch/gen.md
index a46b2550..fc64dac9 100644
--- a/2022/watch/gen.md
+++ b/2022/watch/gen.md
@@ -7,14 +7,14 @@
<hr size="1">
<div><a name="watch"></a><strong>Watch</strong> - <a href="#links">Pad and Q&amp;A links</a> - <a href="#chat">Chat</a> - <a href="#sched">Schedule</a> | Tracks: <strong>General</strong> - <a href="/2022/watch/dev/">Development</a></div>
-<video controls><source src="https://live0.emacsconf.org/gen.webm" type="video/webm" /></video>
+<video controls class="reload"><source src="https://live0.emacsconf.org/gen.webm" type="video/webm" /></video>
<div>Alternatively, load <a href="https://live0.emacsconf.org/gen.webm">https://live0.emacsconf.org/gen.webm</a> or <a href="https://live0.emacsconf.org/gen-480p.webm">https://live0.emacsconf.org/gen-480p.webm</a> (low-res) in a streaming media player such as MPV.</div>
<hr size="1"><div><a name="links"></a><a href="#watch">Watch</a> - <strong>Pad and Q&amp;A links</strong> - <a href="#chat">Chat</a> - <a href="#sched">Schedule</a> | Tracks: <strong>General</strong> - <a href="/2022/watch/dev/">Development</a></div><div><span><a href="https://emacsconf.org/2022/talks/sat-open">sat-open</a> (<a class="pad-link" href="https://pad.emacsconf.org/2022-sat-open">pad</a>, none)</span> - <span><a href="https://emacsconf.org/2022/talks/journalism">journalism</a> (<a class="pad-link" href="https://pad.emacsconf.org/2022-journalism">pad</a>, <a href="https://emacsconf.org/current/journalism/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2022/talks/school">school</a> (<a class="pad-link" href="https://pad.emacsconf.org/2022-school">pad</a>, <a href="https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen">#emacsconf-gen, speaker nick: velocitatem</a>)</span> - <span><a href="https://emacsconf.org/2022/talks/handwritten">handwritten</a> (<a class="pad-link" href="https://pad.emacsconf.org/2022-handwritten">pad</a>, <a href="https://emacsconf.org/current/handwritten/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2022/talks/science">science</a> (<a class="pad-link" href="https://pad.emacsconf.org/2022-science">pad</a>, <a href="https://emacsconf.org/current/science/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2022/talks/buddy">buddy</a> (<a class="pad-link" href="https://pad.emacsconf.org/2022-buddy">pad</a>, <a href="https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen">#emacsconf-gen</a>)</span> - <span><a href="https://emacsconf.org/2022/talks/meetups">meetups</a> (<a class="pad-link" href="https://pad.emacsconf.org/2022-meetups">pad</a>, <a href="https://emacsconf.org/current/meetups/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2022/talks/buttons">buttons</a> (<a class="pad-link" href="https://pad.emacsconf.org/2022-buttons">pad</a>, <a href="https://emacsconf.org/current/buttons/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2022/talks/realestate">realestate</a> (<a class="pad-link" href="https://pad.emacsconf.org/2022-realestate">pad</a>, <a href="nil">Etherpad</a>)</span> - <span><a href="https://emacsconf.org/2022/talks/health">health</a> (<a class="pad-link" href="https://pad.emacsconf.org/2022-health">pad</a>, <a href="https://emacsconf.org/current/health/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2022/talks/jupyter">jupyter</a> (<a class="pad-link" href="https://pad.emacsconf.org/2022-jupyter">pad</a>, <a href="https://emacsconf.org/current/jupyter/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2022/talks/sat-close">sat-close</a> (<a class="pad-link" href="https://pad.emacsconf.org/2022-sat-close">pad</a>, none)</span> - <span><a href="https://emacsconf.org/2022/talks/sun-open">sun-open</a> (<a class="pad-link" href="https://pad.emacsconf.org/2022-sun-open">pad</a>, none)</span> - <span><a href="https://emacsconf.org/2022/talks/survey">survey</a> (<a class="pad-link" href="https://pad.emacsconf.org/2022-survey">pad</a>, <a href="https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen">#emacsconf-gen, speaker nick: tecosaur</a>)</span> - <span><a href="https://emacsconf.org/2022/talks/orgyear">orgyear</a> (<a class="pad-link" href="https://pad.emacsconf.org/2022-orgyear">pad</a>, <a href="https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen">#emacsconf-gen, speaker nick: tecosaur</a>)</span> - <span><a href="https://emacsconf.org/2022/talks/rolodex">rolodex</a> (<a class="pad-link" href="https://pad.emacsconf.org/2022-rolodex">pad</a>, <a href="https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen">#emacsconf-gen</a>)</span> - <span><a href="https://emacsconf.org/2022/talks/orgsuperlinks">orgsuperlinks</a> (<a class="pad-link" href="https://pad.emacsconf.org/2022-orgsuperlinks">pad</a>, <a href="https://emacsconf.org/current/orgsuperlinks/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2022/talks/orgvm">orgvm</a> (<a class="pad-link" href="https://pad.emacsconf.org/2022-orgvm">pad</a>, <a href="https://emacsconf.org/current/orgvm/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2022/talks/hyperorg">hyperorg</a> (<a class="pad-link" href="https://pad.emacsconf.org/2022-hyperorg">pad</a>, <a href="https://emacsconf.org/current/hyperorg/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2022/talks/workflows">workflows</a> (<a class="pad-link" href="https://pad.emacsconf.org/2022-workflows">pad</a>, <a href="https://emacsconf.org/current/workflows/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2022/talks/grail">grail</a> (<a class="pad-link" href="https://pad.emacsconf.org/2022-grail">pad</a>, <a href="https://emacsconf.org/current/grail/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2022/talks/indieweb">indieweb</a> (<a class="pad-link" href="https://pad.emacsconf.org/2022-indieweb">pad</a>, <a href="https://emacsconf.org/current/indieweb/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2022/talks/devel">devel</a> (<a class="pad-link" href="https://pad.emacsconf.org/2022-devel">pad</a>, none)</span> - <span><a href="https://emacsconf.org/2022/talks/fanfare">fanfare</a> (<a class="pad-link" href="https://pad.emacsconf.org/2022-fanfare">pad</a>, <a href="https://emacsconf.org/current/fanfare/room/">BBB</a>)</span> - <span><a href="https://emacsconf.org/2022/talks/sun-close">sun-close</a> (<a class="pad-link" href="https://pad.emacsconf.org/2022-sun-close">pad</a>, none)</span></div>
<div class="pad-output"></div>
-<hr size="1"><div><a name="chat"></a><a href="#watch">Watch</a> - <a href="#links">Pad and Q&amp;A links</a> - <strong>Chat</strong> - <a href="#sched">Schedule</a> | Tracks: <strong>General</strong> - <a href="/2022/watch/dev/">Development</a></div><div>Chat: <a href="https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen">emacsconf-gen</a> on libera.chat</div>
+<hr size="1"><div><a name="chat"></a><a href="#watch">Watch</a> - <a href="#links">Pad and Q&amp;A links</a> - <strong>Chat</strong> - <a href="#sched">Schedule</a> | Tracks: <strong>General</strong> - <a href="/2022/watch/dev/">Development</a></div><div>Chat: <a href="${webchat-url}">emacsconf-gen</a> on libera.chat</div>
<div class="chat-iframe" data-track="gen"></div>
-<iframe src="https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen" height="600" width="100%"></iframe>
+<iframe src="${webchat-url}" height="600" width="100%"></iframe>
<hr size="1"><div><a name="sched"></a><a href="#watch">Watch</a> - <a href="#links">Pad and Q&amp;A links</a> - <a href="#chat">Chat</a> - <strong>Schedule</strong> | Tracks: <strong>General</strong> - <a href="/2022/watch/dev/">Development</a></div>
<ul>Legend:
<li>Solid lines: Q&A will be through a BigBlueButton room (you can ask questions there or through IRC/Etherpad)</li>
diff --git a/2022/watch/info.md b/2022/watch/info.md
index 5528ada5..3a993cf9 100644
--- a/2022/watch/info.md
+++ b/2022/watch/info.md
@@ -1,7 +1,7 @@
[[!sidebar content=""]]<!-- Automatically generated by emacsconf-publish-watch-pages -->
<h1>Tracks</h1><table width="100%"><tr><th>Watch page</th><th>IRC channel (libera.chat)</th><th>Alternative for streaming player</th><th>Low res</th></tr>
-<tr><td><div class="sched-track General"><a href="/2022/watch/gen">General</a></div></td><td><a href="https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen">emacsconf-gen</a></td><td><a href="https://live0.emacsconf.org/gen.webm">https://live0.emacsconf.org/gen.webm</a></td><td><a href="https://live0.emacsconf.org/gen-480p.webm">gen-480p.webm</a></tr>
-<tr><td><div class="sched-track Development"><a href="/2022/watch/dev">Development</a></div></td><td><a href="https://chat.emacsconf.org/?join=emacsconf,emacsconf-dev">emacsconf-dev</a></td><td><a href="https://live0.emacsconf.org/dev.webm">https://live0.emacsconf.org/dev.webm</a></td><td><a href="https://live0.emacsconf.org/dev-480p.webm">dev-480p.webm</a></tr></table>
+<tr><td><div class="sched-track General"><a href="/2022/watch/gen">General</a></div></td><td><a href="${webchat-url}">emacsconf-gen</a></td><td><a href="${stream}">${stream}</a></td><td><a href="${480p}">gen-480p.webm</a></tr>
+<tr><td><div class="sched-track Development"><a href="/2022/watch/dev">Development</a></div></td><td><a href="${webchat-url}">emacsconf-dev</a></td><td><a href="${stream}">${stream}</a></td><td><a href="${480p}">dev-480p.webm</a></tr></table>
<svg width="800" height="300" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Graphical view of the schedule</title> <g transform="translate(0,0)"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="https://emacsconf.org/2022/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:05 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.8" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="https://emacsconf.org/2022/talks/journalism" title="Emacs journalism (or everything's a nail if you hit it with Emacs)" data-slug="journalism"> <title> 9:05- 9:25 Emacs journalism (or everything's a nail if you hit it with Emacs)</title> <rect x="7" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> journalism</text></g></a> <a href="https://emacsconf.org/2022/talks/school" title="Back to school with Emacs" data-slug="school"> <title> 9:45- 9:55 Back to school with Emacs</title> <rect x="70" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(83,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> school</text></g></a> <a href="https://emacsconf.org/2022/talks/handwritten" title="How to incorporate handwritten notes into Emacs Orgmode" data-slug="handwritten"> <title> 10:05-10:15 How to incorporate handwritten notes into Emacs Orgmode</title> <rect x="101" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(114,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> handwritten</text></g></a> <a href="https://emacsconf.org/2022/talks/science" title="Writing and organizing literature notes for scientific writing" data-slug="science"> <title> 10:45-11:05 Writing and organizing literature notes for scientific writing</title> <rect x="164" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(193,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> science</text></g></a> <a href="https://emacsconf.org/2022/talks/buddy" title="The Emacs Buddy initiative" data-slug="buddy"> <title> 11:25-11:35 The Emacs Buddy initiative</title> <rect x="227" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(240,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buddy</text></g></a> <a href="https://emacsconf.org/2022/talks/meetups" title="Attending and organizing Emacs meetups" data-slug="meetups"> <title> 1:00- 1:20 Attending and organizing Emacs meetups</title> <rect x="376" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(405,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> meetups</text></g></a> <a href="https://emacsconf.org/2022/talks/buttons" title="Linking personal info with Hyperbole implicit buttons" data-slug="buttons"> <title> 1:40- 1:55 Linking personal info with Hyperbole implicit buttons</title> <rect x="439" y="15" opacity="0.8" width="23" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(460,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buttons</text></g></a> <a href="https://emacsconf.org/2022/talks/realestate" title="Real estate and Org table formulas" data-slug="realestate"> <title> 2:15- 2:40 Real estate and Org table formulas</title> <rect x="494" y="15" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(531,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> realestate</text></g></a> <a href="https://emacsconf.org/2022/talks/health" title="Health data journaling and visualization with Org Mode and GNUplot" data-slug="health"> <title> 3:00- 3:25 Health data journaling and visualization with Org Mode and GNUplot</title> <rect x="564" y="15" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(601,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> health</text></g></a> <a href="https://emacsconf.org/2022/talks/jupyter" title="Edit live Jupyter notebook cells with Emacs" data-slug="jupyter"> <title> 3:45- 4:05 Edit live Jupyter notebook cells with Emacs</title> <rect x="635" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(664,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> jupyter</text></g></a> <a href="https://emacsconf.org/2022/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 4:50- 4:55 Saturday closing remarks</title> <rect x="737" y="15" opacity="0.8" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(742,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="https://emacsconf.org/2022/talks/treesitter" title="Tree-sitter beyond syntax highlighting" data-slug="treesitter"> <title> 10:00-10:15 Tree-sitter beyond syntax highlighting</title> <rect x="94" y="75" opacity="0.8" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(115,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> treesitter</text></g></a> <a href="https://emacsconf.org/2022/talks/lspbridge" title="lsp-bridge: complete asynchronous LSP client" data-slug="lspbridge"> <title> 10:25-10:45 lsp-bridge: complete asynchronous LSP client</title> <rect x="133" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(162,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspbridge</text></g></a> <a href="https://emacsconf.org/2022/talks/asmblox" title="asm-blox: a game based on WebAssembly that no one asked for" data-slug="asmblox"> <title> 10:55-11:15 asm-blox: a game based on WebAssembly that no one asked for</title> <rect x="180" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> asmblox</text></g></a> <a href="https://emacsconf.org/2022/talks/wayland" title="Emacs should become a Wayland compositor" data-slug="wayland"> <title> 11:25-11:35 Emacs should become a Wayland compositor</title> <rect x="227" y="75" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> wayland</text></g></a> <a href="https://emacsconf.org/2022/talks/sqlite" title="Using SQLite as a data source: a framework and an example" data-slug="sqlite"> <title> 1:00- 1:25 Using SQLite as a data source: a framework and an example</title> <rect x="376" y="75" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(413,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sqlite</text></g></a> <a href="https://emacsconf.org/2022/talks/mail" title="Revisiting the anatomy of Emacs mail user agents" data-slug="mail"> <title> 1:50- 2:30 Revisiting the anatomy of Emacs mail user agents</title> <rect x="454" y="75" opacity="0.8" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(514,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mail</text></g></a> <a href="https://emacsconf.org/2022/talks/maint" title="Maintaining the Maintainers: Attribution as an Economic Model for Open Source" data-slug="maint"> <title> 2:50- 3:10 Maintaining the Maintainers: Attribution as an Economic Model for Open Source</title> <rect x="549" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(578,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> maint</text></g></a> <a href="https://emacsconf.org/2022/talks/eev" title="Bidirectional links with eev" data-slug="eev"> <title> 3:35- 3:40 Bidirectional links with eev</title> <rect x="619" y="75" opacity="0.8" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(624,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eev</text></g></a> <a href="https://emacsconf.org/2022/talks/python" title="Short hyperlinks to Python docs" data-slug="python"> <title> 3:50- 3:55 Short hyperlinks to Python docs</title> <rect x="643" y="75" opacity="0.8" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(648,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <a href="https://emacsconf.org/2022/talks/haskell" title="Haskell code exploration with Emacs" data-slug="haskell"> <title> 4:05- 4:35 Haskell code exploration with Emacs</title> <rect x="666" y="75" opacity="0.8" width="47" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(711,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> haskell</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></g> <g transform="translate(0,150)"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="https://emacsconf.org/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.8" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="https://emacsconf.org/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect x="7" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="https://emacsconf.org/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="https://emacsconf.org/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:55-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="86" y="15" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(123,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="https://emacsconf.org/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="https://emacsconf.org/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect x="203" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="https://emacsconf.org/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.8" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="https://emacsconf.org/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect x="454" y="15" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="https://emacsconf.org/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="525" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="https://emacsconf.org/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect x="603" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="https://emacsconf.org/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect x="666" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="https://emacsconf.org/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect x="698" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="https://emacsconf.org/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="737" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="https://emacsconf.org/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="75" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="https://emacsconf.org/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect x="172" y="75" opacity="0.8" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="https://emacsconf.org/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect x="211" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="https://emacsconf.org/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:15 Getting detached from Emacs</title> <rect x="376" y="75" opacity="0.8" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(397,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="https://emacsconf.org/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect x="439" y="75" opacity="0.8" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="https://emacsconf.org/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect x="501" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="https://emacsconf.org/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect x="588" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="https://emacsconf.org/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect x="658" y="75" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></g></svg> \ No newline at end of file
diff --git a/templates/page.tmpl b/templates/page.tmpl
index dd6ac641..7cf2eb50 100644
--- a/templates/page.tmpl
+++ b/templates/page.tmpl
@@ -391,6 +391,23 @@ transcriptDiv.appendChild(transcriptLink)
document.querySelectorAll('pre.chapters').forEach(displayChapters);
+ var video = document.querySelector('video.reload');
+if (video) {
+ var myVar = setInterval(reloadAsNeeded, 1000);
+ var oldTime = '';
+ function reloadAsNeeded() {
+ if ((video.paused != true && (video.currentTime - oldTime) == 0 && video.currentTime != 0)) {
+ var source = video.querySelector('source');
+ var oldVideo = source.src;
+ source.src = '';
+ source.src = oldVideo;
+ video.load();
+ video.play();
+ }
+ oldTime = video.currentTime;
+ };
+}
+
// @license-end
</script>
</body>