Skip to content

Embed YouTube recordings on talks and keynotes pages#28

Merged
MasonEgger merged 6 commits into
mainfrom
add/youtube-video-embeds
May 12, 2026
Merged

Embed YouTube recordings on talks and keynotes pages#28
MasonEgger merged 6 commits into
mainfrom
add/youtube-video-embeds

Conversation

@MasonEgger

Copy link
Copy Markdown
Member

Summary

Replicates the post-event pattern from the 2025 site (commit c1ab52b on the 2025 repo, "adding videos to site") by embedding each recording from the PyTexas 2026 YouTube playlist directly on the schedule pages.

  • Each <iframe> is placed under the talk description, immediately before the **Speaker:** block, matching the 2025 layout.
  • Uses youtube-nocookie.com/embed/<id> (privacy-enhanced mode), same as 2025.
  • Matches videos to talks by speaker name since several recording titles differ slightly from the original schedule titles (e.g. Mason Egger's recording is titled "Practical AI for Everyday Python Developers" rather than "Events are the Wrong Abstraction"). Each speaker has a unique session, so name-matching is unambiguous.

Coverage

Talks (docs/schedule/talks.md) — 16 of 17 entries embedded:

Speaker Video
Moshe Zadka K3JL5C8HFqo
Adam Gordon Bell EfIbH20J97Q
Maria Silvia Mielniczuk rYPl3Tp978Y
Dr. James A. Bednar KpmEVWWN1Aw
Christopher Ariza 6nBqP0pGT3k
Scott Irwin NVKnYw4Z6B0
Indrasena Manga vllVi_pKd9M
Al Sweigart 01NuRv-LsH0
Jacob Coffee JplCNLBD5Dw
Kassandra Keeton XNS3IwQZD80
Mason Egger r1YI5o5P8h8
Pandy Knight 3juU3JOIG3E
Sophia Solomon r2X48XuvRT4
Charlie Lin Z43-0VII3QA
Avik Basu ZbAtJ4E9AGQ
Miguel Vargas chfwQqqofdI

Keynotes (docs/schedule/keynotes.md):

Speaker Video
Dawn Wages (Day 1) mHG3aAkbpvA
Hynek Schlawack (Day 2) MDqQTtjbVX8

Not embedded

  • Sumaiya Nalukwago ("Mastered development but still stuck?") — no recording in the published playlist.
  • Patty Chow ("Using Python for Good") — recording is in the playlist but the talk is not listed in talks.md. If it should be added, that's a separate edit.
  • Day 1 and Day 2 Lightning Talks — playlist contains both recordings, but talks.md / keynotes.md have no lightning-talks section. The 2025 archive likewise omitted lightning talks from the schedule pages.

Test plan

  • uv run mkdocs build --strict passes
  • just serve and spot-check that each iframe renders and points at the right video
  • Verify Sumaiya Nalukwago's section looks intentional without an embed (no broken layout)

Following the same pattern used on the 2025 archive site after that
event wrapped, embed each talk's recording from the PyTexas 2026
YouTube playlist directly under the talk description on the schedule
pages, before the speaker block.

Videos are matched to entries by speaker name (some recording titles
differ slightly from the original schedule titles, but each speaker
has a unique session). Coverage:

- 16 of 17 entries in `schedule/talks.md`. Sumaiya Nalukwago's talk
  is intentionally left without an embed because there is no recording
  in the published playlist.
- Both keynotes in `schedule/keynotes.md` (Dawn Wages, Hynek Schlawack).

Two lightning-talk recordings exist in the playlist but are not added
here since neither `talks.md` nor `keynotes.md` has a section for
them — matches what the 2025 archive did.
@github-actions

github-actions Bot commented May 10, 2026

Copy link
Copy Markdown

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None

The link checker is currently failing on
`https://abmparking.com/facilities/austin-city-hall-garage/` (the
"Other Parking Options" link in `attend/in-person.md`). The URL is
fine for real users — a browser request returns 200 — but the server
returns 403 to requests without a browser User-Agent, which is a
common Cloudflare/anti-bot pattern.

403 means "Forbidden", not "Not Found". The resource exists; the bot
just isn't allowed to fetch it. For a link checker on a marketing
site, treating 403 the same as 200 is the standard workaround.

Adds 403 to the existing `--accept` list alongside the redirects and
429 we already pass through.
@ProsperousHeart ProsperousHeart self-requested a review May 11, 2026 02:47
@ProsperousHeart

ProsperousHeart commented May 12, 2026

Copy link
Copy Markdown
Member

Wasn't sure best way to do this so made a PR to your branch with some suggested updates. See #29

Will finish my review soon

ProsperousHeart and others added 4 commits May 12, 2026 09:27
* create and add keynote speaker formatting

* add keynote slide links and other info shared

* add speaker reply formatting + cleanup

* add formatting and available resources
Two failures in CI link-check, both new on this branch:

1. Adam Gordon Bell's "Repo" link in `talks.md` had two URLs jammed
   into one markdown link target, separated by a space. Lychee
   URL-encoded the space to `%20` and 404'd on the resulting
   pseudo-URL. The trailing Pulumi URL was already linked separately
   on the next bullet as "His [site]", so removing it from the
   "[Repo]" target loses nothing and points the link at the actual
   repo Adam referenced.

2. Indrasena Manga's LinkedIn profile (`indra7979`) is the correct
   URL but LinkedIn returned 404 to the GitHub runner's request.
   Two other `linkedin.com/in/` profiles on this same branch passed
   the same lychee run, so it's targeted anti-bot behavior on that
   specific request, not a blanket runner block. Ignoring that one
   URL in `.lycheeignore` is more auditable than a wildcard.
Followup to the previous commit. The targeted single-URL ignore for
`indra7979`'s profile assumed the 404 was localized to that handle,
but a subsequent run showed LinkedIn's anti-bot flips on other
`/in/` URLs too, intermittently. Avik and Kassandra's profiles
passed earlier and could fail on the next run.

Replacing the single entry with `https://www.linkedin.com/` covers
every LinkedIn URL the site uses today (all `linkedin.com/in/...`
speaker profiles in `docs/`). Acceptable for a marketing-site
link checker; LinkedIn link rot is not something CI needs to gate
deploys on.
@MasonEgger MasonEgger merged commit 322e576 into main May 12, 2026
2 checks passed
graffhyrum pushed a commit to graffhyrum/2026 that referenced this pull request May 14, 2026
* Embed YouTube recordings on talks and keynotes pages

Following the same pattern used on the 2025 archive site after that
event wrapped, embed each talk's recording from the PyTexas 2026
YouTube playlist directly under the talk description on the schedule
pages, before the speaker block.

Videos are matched to entries by speaker name (some recording titles
differ slightly from the original schedule titles, but each speaker
has a unique session). Coverage:

- 16 of 17 entries in `schedule/talks.md`. Sumaiya Nalukwago's talk
  is intentionally left without an embed because there is no recording
  in the published playlist.
- Both keynotes in `schedule/keynotes.md` (Dawn Wages, Hynek Schlawack).

Two lightning-talk recordings exist in the playlist but are not added
here since neither `talks.md` nor `keynotes.md` has a section for
them — matches what the 2025 archive did.

* Accept 403 in lychee link check

The link checker is currently failing on
`https://abmparking.com/facilities/austin-city-hall-garage/` (the
"Other Parking Options" link in `attend/in-person.md`). The URL is
fine for real users — a browser request returns 200 — but the server
returns 403 to requests without a browser User-Agent, which is a
common Cloudflare/anti-bot pattern.

403 means "Forbidden", not "Not Found". The resource exists; the bot
just isn't allowed to fetch it. For a link checker on a marketing
site, treating 403 the same as 200 is the standard workaround.

Adds 403 to the existing `--accept` list alongside the redirects and
429 we already pass through.

* Add/youtube video embeds formatting update (pytexas#29)

* create and add keynote speaker formatting

* add keynote slide links and other info shared

* add speaker reply formatting + cleanup

* add formatting and available resources

* Fix two broken links flagged by lychee on PR pytexas#28

Two failures in CI link-check, both new on this branch:

1. Adam Gordon Bell's "Repo" link in `talks.md` had two URLs jammed
   into one markdown link target, separated by a space. Lychee
   URL-encoded the space to `%20` and 404'd on the resulting
   pseudo-URL. The trailing Pulumi URL was already linked separately
   on the next bullet as "His [site]", so removing it from the
   "[Repo]" target loses nothing and points the link at the actual
   repo Adam referenced.

2. Indrasena Manga's LinkedIn profile (`indra7979`) is the correct
   URL but LinkedIn returned 404 to the GitHub runner's request.
   Two other `linkedin.com/in/` profiles on this same branch passed
   the same lychee run, so it's targeted anti-bot behavior on that
   specific request, not a blanket runner block. Ignoring that one
   URL in `.lycheeignore` is more auditable than a wildcard.

* Broaden lychee ignore to all LinkedIn URLs

Followup to the previous commit. The targeted single-URL ignore for
`indra7979`'s profile assumed the 404 was localized to that handle,
but a subsequent run showed LinkedIn's anti-bot flips on other
`/in/` URLs too, intermittently. Avik and Kassandra's profiles
passed earlier and could fail on the next run.

Replacing the single entry with `https://www.linkedin.com/` covers
every LinkedIn URL the site uses today (all `linkedin.com/in/...`
speaker profiles in `docs/`). Acceptable for a marketing-site
link checker; LinkedIn link rot is not something CI needs to gate
deploys on.

---------

Co-authored-by: Kassandra Keeton <ProsperousHeart@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants