summaryrefslogtreecommitdiffstats
path: root/2022
diff options
context:
space:
mode:
authorSacha Chua <sacha@sachachua.com>2022-12-18 00:55:52 -0500
committerSacha Chua <sacha@sachachua.com>2022-12-18 00:55:52 -0500
commit73284abb6f3f17d80d468de5555c98987052e1bc (patch)
tree82adf8a921aefad63edb5d573ec0da30380d8325 /2022
parentc9a3ac84195af83f6479f2c3a6b72a53b091bde0 (diff)
downloademacsconf-wiki-73284abb6f3f17d80d468de5555c98987052e1bc.tar.xz
emacsconf-wiki-73284abb6f3f17d80d468de5555c98987052e1bc.zip
Automated commit
Diffstat (limited to '2022')
-rw-r--r--2022/info/journalism-before.md16
-rw-r--r--2022/organizers-notebook/index.org181
2 files changed, 193 insertions, 4 deletions
diff --git a/2022/info/journalism-before.md b/2022/info/journalism-before.md
index c56096d4..e627d7d4 100644
--- a/2022/info/journalism-before.md
+++ b/2022/info/journalism-before.md
@@ -1,4 +1,18 @@
<!-- Automatically generated by emacsconf-publish-before-page -->
+
+The following image shows where the talk is in the schedule for Sat 2022-12-03. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="journalism">
+<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <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="/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.5" 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="/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 stroke-width="3" x="7" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> journalism</text></g></a> <a href="/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.5" 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="/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.5" 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="/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.5" 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="/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.5" 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="/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.5" 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="/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.5" 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="/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.5" 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="/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.5" 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="/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.5" 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="/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.5" 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="/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.5" 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="/2022/talks/lspbridge" title="lsp-bridge: a smooth-as-butter asynchronous LSP client" data-slug="lspbridge"> <title> 10:25-10:45 lsp-bridge: a smooth-as-butter asynchronous LSP client</title> <rect x="133" y="75" opacity="0.5" 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="/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.5" 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="/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.5" 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="/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.5" 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="/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.5" 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="/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.5" 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="/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.5" 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="/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.5" 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></svg>
+</div>
+
+[[!toc ]]
+Format: 17-min talk followed by live Q&A (done)
+Etherpad: <https://pad.emacsconf.org/2022-journalism>
+Discuss on IRC: [#emacsconf-gen](https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen)
+Status: TO_INDEX_QA
+<div>Times in different timezones:</div><div class="times" start="2022-12-03T14:05:00Z" end="2022-12-03T14:25:00Z"><div class="conf-time">Saturday, Dec 3 2022, ~9:05 AM - 9:25 AM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Saturday, Dec 3 2022, ~8:05 AM - 8:25 AM CST (US/Central)<br />Saturday, Dec 3 2022, ~7:05 AM - 7:25 AM MST (US/Mountain)<br />Saturday, Dec 3 2022, ~6:05 AM - 6:25 AM PST (US/Pacific)<br />Saturday, Dec 3 2022, ~2:05 PM - 2:25 PM UTC <br />Saturday, Dec 3 2022, ~3:05 PM - 3:25 PM CET (Europe/Paris)<br />Saturday, Dec 3 2022, ~4:05 PM - 4:25 PM EET (Europe/Athens)<br />Saturday, Dec 3 2022, ~7:35 PM - 7:55 PM IST (Asia/Kolkata)<br />Saturday, Dec 3 2022, ~10:05 PM - 10:25 PM +08 (Asia/Singapore)<br />Saturday, Dec 3 2022, ~11:05 PM - 11:25 PM JST (Asia/Tokyo)</div></div><div><a href="/2022/watch/gen/">Find out how to watch and participate</a></div>
+
+
+
# Talk
<div class="vid"><video controls preload="none" id="journalism-mainVideo"><source src="https://media.emacsconf.org/2022/emacsconf-2022-journalism--emacs-journalism-or-everythings-a-nail-if-you-hit-it-with-emacs--alfred-zanini--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2022/captions/emacsconf-2022-journalism--emacs-journalism-or-everythings-a-nail-if-you-hit-it-with-emacs--alfred-zanini--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2022/captions/emacsconf-2022-journalism--emacs-journalism-or-everythings-a-nail-if-you-hit-it-with-emacs--alfred-zanini--main--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="journalism-mainVideo" data="""
@@ -16,6 +30,6 @@
# Q&A
-<div class="vid"><video controls preload="none" id="journalism-qanda"><source src="https://media.emacsconf.org/2022/emacsconf-2022-journalism--emacs-journalism-or-everythings-a-nail-if-you-hit-it-with-emacs--alfred-zanini--answers.webm" />${captions}<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div>Listen to just the audio:<br /><audio controls preload="none" id="journalism-qanda-audio" src="https://media.emacsconf.org/2022/emacsconf-2022-journalism--emacs-journalism-or-everythings-a-nail-if-you-hit-it-with-emacs--alfred-zanini--answers.opus"></audio></div><div></div><div class="files resources"><ul><li><a href="https://media.emacsconf.org/2022/emacsconf-2022-journalism--emacs-journalism-or-everythings-a-nail-if-you-hit-it-with-emacs--alfred-zanini--answers.webm">Download --answers.webm (118MB)</a></li><li><a href="https://media.emacsconf.org/2022/emacsconf-2022-journalism--emacs-journalism-or-everythings-a-nail-if-you-hit-it-with-emacs--alfred-zanini--answers.vtt">Download --answers.vtt</a></li><li><a href="https://media.emacsconf.org/2022/emacsconf-2022-journalism--emacs-journalism-or-everythings-a-nail-if-you-hit-it-with-emacs--alfred-zanini--answers.opus">Download --answers.opus (9.6MB)</a></li></ul></div></div>
+<div class="vid"><video controls preload="none" id="journalism-qanda"><source src="https://media.emacsconf.org/2022/emacsconf-2022-journalism--emacs-journalism-or-everythings-a-nail-if-you-hit-it-with-emacs--alfred-zanini--answers.webm" />${captions}<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div>Listen to just the audio:<br /><audio controls preload="none" id="journalism-qanda-audio" src="https://media.emacsconf.org/2022/emacsconf-2022-journalism--emacs-journalism-or-everythings-a-nail-if-you-hit-it-with-emacs--alfred-zanini--answers.opus"></audio></div><div></div><div class="files resources"><ul><li><a href="https://media.emacsconf.org/2022/emacsconf-2022-journalism--emacs-journalism-or-everythings-a-nail-if-you-hit-it-with-emacs--alfred-zanini--answers.webm">Download --answers.webm (114MB)</a></li><li><a href="https://media.emacsconf.org/2022/emacsconf-2022-journalism--emacs-journalism-or-everythings-a-nail-if-you-hit-it-with-emacs--alfred-zanini--answers.vtt">Download --answers.vtt</a></li><li><a href="https://media.emacsconf.org/2022/emacsconf-2022-journalism--emacs-journalism-or-everythings-a-nail-if-you-hit-it-with-emacs--alfred-zanini--answers.opus">Download --answers.opus (8.7MB)</a></li></ul></div></div>
# Description
<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2022/organizers-notebook/index.org b/2022/organizers-notebook/index.org
index 29e3ee36..58820930 100644
--- a/2022/organizers-notebook/index.org
+++ b/2022/organizers-notebook/index.org
@@ -714,8 +714,7 @@ https://medium.com/@npolovinkin/how-to-chunk-text-into-paragraphs-using-python-8
:PROPERTIES:
:CREATED: [2022-12-13 Tue 16:37]
:END:
-
-The challenge: make it easier to make sense of an IRC log considering the speaker is responding to lots of people.
+ssh
Possible: thread speaker messages?
Manual:
- search backward to find the lines, put something under
@@ -728,6 +727,182 @@ Manual:
:PROPERTIES:
:CREATED: [2022-12-15 Thu 16:52]
:END:
+*** CANCELLED Trim grail if needed
+CLOSED: [2022-12-16 Fri 21:35]
+:PROPERTIES:
+:CREATED: [2022-12-15 Thu 22:24]
+:END:
+*** DONE I uploaded the Q&A sessions to Toobnix. :sachac:
+CLOSED: [2022-12-16 Fri 13:53]
+:LOGBOOK:
+- State "DONE" from "TODO" [2022-12-16 Fri 13:53]
+:END:
+
+Least extra work if I do it after chapter markers, but I can just do them now and then update them later
+
+#+begin_src emacs-lisp :eval no
+(mapc (lambda (o)
+ (let ((default-directory "~/vendor/PeerTube/"))
+ (when (emacsconf-publish-upload-answers o 'toobnix)
+ (emacsconf-go-to-talk o)
+ (shell-command "xdotool mousemove 1782 370 click 1 sleep 1 key Ctrl+r sleep 4 mousemove 1584 546 click 3 sleep 1 mousemove 1664 746 click 1 mousemove 1584 546 sleep 1 key Alt+Tab sleep 1")
+ (org-entry-put
+ (point) "QA_TOOBNIX"
+ (read-string (format "URL for %s: "
+ (org-entry-get (point) "SLUG")))))))
+ (seq-remove
+ (lambda (o)
+ (or (null (emacsconf-talk-file o "--answers.webm"))
+ (plist-get o :qa-toobnix)))
+ (emacsconf-prepare-for-display (emacsconf-get-talk-info))))
+#+end_src
+*** DONE Upload answers to Youtube :sachac:
+CLOSED: [2022-12-16 Fri 21:35] SCHEDULED: <2022-12-17 Sat>
+:PROPERTIES:
+:CREATED: [2022-12-16 Fri 08:01]
+:header-args: :eval no
+:END:
+:LOGBOOK:
+- State "WAITING" from "SOMEDAY" [2022-12-16 Fri 12:58] \\
+ quota
+:END:
+
+Set eval to yes and work carefully.
+
+#+NAME: not-done
+#+begin_src emacs-lisp
+(defun emacsconf-publish-answers-python (talk)
+ (interactive)
+ (concat "filename = \"\"\"" (emacsconf-talk-file talk "--answers.webm") "\"\"\"\n"
+ "title = \"\"\"" (emacsconf-publish-answers-title talk 100) "\"\"\"\n"
+ "description = \"\"\"" (emacsconf-publish-answers-description talk 'youtube) "\"\"\"\n"))
+(plist-get
+ (seq-find (lambda (talk)
+ (not (or (null (emacsconf-talk-file talk "--answers.webm"))
+ (plist-get talk :qa-youtube))))
+ (emacsconf-prepare-for-display (emacsconf-get-talk-info)))
+ :slug)
+
+
+#+end_src
+
+#+RESULTS: not-done
+:results:
+nil
+:end:
+:end:
+
+quota, continue tomorrow
+**** Setup
+#+begin_src python :dir "/home/sacha/proj/plays" :session plays
+from playwright.sync_api import Playwright, sync_playwright, expect
+from pathlib import Path
+import json
+
+playwright = sync_playwright().start()
+browser = playwright.firefox.launch(headless=False)
+context = browser.new_context()
+page = context.new_page()
+context.add_cookies(json.loads(Path("cookies.json").read_text()))
+page.goto("https://studio.youtube.com/")
+#+end_src
+
+Save the cookies after it's all set up
+
+#+begin_src python :dir "/home/sacha/proj/plays" :session plays
+Path("cookies.json").write_text(json.dumps(cookies))
+#+end_src
+
+#+begin_src python :dir "/home/sacha/proj/plays" :session plays
+context.add_cookies(json.loads(Path("cookies.json").read_text()))
+page.goto("https://studio.youtube.com/channel/UCwuyodzTl_KdEKNuJmeo99A")
+#+end_src
+
+
+#+RESULTS:
+:results:
+:end:
+
+1. Upload the file
+
+#+NAME: create
+#+begin_src python :dir "/home/sacha/proj/plays" :session plays :noweb yes :results silent
+#page.get_by_role("dialog", name="Video processing").get_by_role("button", name="Close").click()
+page.locator("#create-icon").click()
+page.get_by_text("Upload videos").click()
+page.get_by_role("button", name="Select files").click()
+<<talk()>>
+#+end_src
+
+2. Set the talk details and copy the URL.
+
+#+begin_src emacs-lisp :var slug=not-done :var url=set_details :results silent
+(save-window-excursion
+ (emacsconf-go-to-talk (emacsconf-resolve-talk slug))
+ (org-entry-put (point) "QA_YOUTUBE" url))
+#+end_src
+***** Background code
+#+NAME: talk
+#+begin_src emacs-lisp :var slug=not-done :noweb yes
+(let ((talk (emacsconf-resolve-talk slug)))
+ (kill-new (emacsconf-talk-file talk "--answers.webm"))
+ (emacsconf-publish-answers-python talk))
+#+end_src
+
+#+RESULTS: talk
+:results:
+filename = """/home/sacha/proj/emacsconf/cache/emacsconf-2022-health--health-data-journaling-and-visualization-with-org-mode-and-gnuplot--david-otoole--answers.webm"""
+title = """EmacsConf 2022 Q&A: Health data journaling and visualization with Org Mode and gnuplot"""
+description = """David O'Toole (he/him)
+
+This is the Q&A for the talk at https://youtu.be/YmQ1CYMz-OY .
+
+You can view this and other resources using free/libre software at https://emacsconf.org/2022/talks/health .
+This video is available under the terms of the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.
+"""
+:end:
+
+#+NAME: set_details
+#+begin_src python :dir "/home/sacha/proj/plays" :session plays :results output :noweb yes
+<<talk()>>
+page.locator("#title-textarea").click()
+page.keyboard.press("Control+KeyA")
+page.keyboard.press("Delete")
+page.keyboard.type(title)
+page.locator("#description-textarea #textbox").fill(description)
+page.locator('ytcp-video-metadata-playlists .dropdown-trigger-text').click()
+page.get_by_role("dialog", name="Choose playlists").get_by_text("EmacsConf 2022").click()
+page.get_by_role("button", name="Done").click()
+page.get_by_role("button", name="Show more").click()
+page.get_by_placeholder("Add tag").fill("emacs, emacsconf, answers")
+page.get_by_placeholder("Add tag").click()
+href = page.locator('a.ytcp-video-info').get_attribute('href')
+page.locator("#step-badge-3").click()
+page.locator(".ytcp-video-visibility-select[name=PUBLIC]").click()
+page.get_by_role("button", name="PUBLISH").click()
+print(href)
+#+end_src
+
+#+RESULTS: set_details
+:results:
+https://youtu.be/XTDpzx9QHSI
+:end:
+
+#+RESULTS:
+:results:
+https://youtu.be/Q453L_whGEc
+:end:
+
+*** TODO Add links to Q&A to Youtube video descriptions
+:PROPERTIES:
+:CREATED: [2022-12-16 Fri 14:12]
+:END:
+
+*** SOMEDAY Make a podcast feed of the talks
+:PROPERTIES:
+:CREATED: [2022-12-17 Sat 14:26]
+:END:
+
** TODO Send thanks
:PROPERTIES:
:CUSTOM_ID: thanks
@@ -1501,7 +1676,7 @@ CLOCK: [2022-11-23 Wed 21:52]--[2022-11-23 Wed 22:57] => 1:05
(concat (plist-get o :video-slug) "--main.webm")
emacsconf-cache-dir))
(null (plist-get o :toobnix-url)))
- (format "node dist/server/tools/peertube.js upload -f %s -n %s -l 2 -c 15 -P 2 -t emacs,emacsconf -L en -C emacsconf -d %s"
+ (format "cd ~/vendor/PeerTube; node dist/server/tools/peertube.js upload -f %s -n %s -l 2 -c 15 -P 2 -t emacs,emacsconf -L en -C emacsconf -d %s"
(expand-file-name
(concat (plist-get o :video-slug) "--main.webm")
emacsconf-cache-dir)