Recently Written · git

recentlywritten

my writings (done recently)

git clone https://github.com/equwal/recentlywritten

Log | Files | Refs


commit eaeef4a0eddff47f354464427971b46f081dc747
equwal <13551856+equwal@users.noreply.github.com>
2026-09-26 12:53:36 -0700

Add a podcast feed with the episodes from YouTube

build.sh writes podcast.xml from the new file podcast.tsv. It also puts
the episode list on the new page polyglot-podcast.html. The YouTube
descriptions of the episodes link to equwal.com/polyglot-podcast.html,
which redirects to that page. Before this change, that page gave 404.

The audio of episodes 5-18 was lost. Their YouTube videos have the same
recordings, so the audio comes from YouTube as AAC (.m4a), with no new
encode. Apple Podcasts and Spotify do not accept Opus. The three new
episodes are the talking-head videos of @muhlanguages. Episodes 1-4 are
not on YouTube, so they stay missing.

The audio stays out of git. A protect rule in the rsync deploy keeps
the server copy when a working tree has no audio.

feed_date now keeps the time of day. A post has only a date, so the
blog feed does not change.

 .gitignore                                         |   6 +
 MISSING-ASSETS.md                                  |  16 +-
 build.sh                                           |  91 ++++++++++-
 pages/polyglot-podcast.md                          |  16 ++
 podcast.tsv                                        |  17 +++
 ...-about-polyglot-language-learning-LISTEN-NOW.md |  30 ++--
 ...bout-polyglot-language-learning-LISTEN-NOW.html |  35 ++---
 site/index.html                                    |   1 +
 site/podcast.xml                                   | 170 +++++++++++++++++++++
 site/polyglot-podcast.html                         |  75 +++++++++
 ...bout-polyglot-language-learning-LISTEN-NOW.html |  30 ++--
 site/static/podcast.png                            | Bin 0 -> 63696 bytes
 static/podcast.png                                 | Bin 0 -> 63696 bytes
 13 files changed, 423 insertions(+), 64 deletions(-)
diff --git a/.gitignore b/.gitignore
index 53991d8..6293587 100755
--- a/.gitignore
+++ b/.gitignore
@@ -8,6 +8,12 @@
 /static/book/
 /site/static/book/
 
+# Podcast audio. It is too large for git. build.sh deploys it from the
+# working tree, and its rsync rule keeps the server copy. podcast.tsv gives
+# the YouTube video of each episode, so a lost file can be downloaded again.
+/static/language-podcast/
+/site/static/language-podcast/
+
 # Build output and local settings of the accounts service.
 /accounts/accounts
 /accounts/accounts.exe
diff --git a/MISSING-ASSETS.md b/MISSING-ASSETS.md
index ebd2f65..35f9c1c 100755
--- a/MISSING-ASSETS.md
+++ b/MISSING-ASSETS.md
@@ -23,7 +23,7 @@ No copy of these survives online. Re-create each as `pages/<name>.md`.
 - intervjuoj-de-aejk.html
 - noveloj-de-la-ondo.html
 
-## Attachments referenced by the posts and pages (123)
+## Attachments referenced by the posts and pages (109)
 
 - 25-noveloj/25-noveloj.epub  — used by 25-noveloj.html
 - 25-noveloj/25-noveloj.mobi  — used by 25-noveloj.html
@@ -106,23 +106,9 @@ No copy of these survives online. Re-create each as `pages/<name>.md`.
 - static/kanji-radicals.apkg  — used by Learn-Kanji-in-a-Fortnight.html
 - static/kern-punkto-walnut.png  — used by esperantaj-audoj.html
 - static/language-podcast/1 ALATT Path And C1 Polyglot To C2.opus  — used by New-podcast-about-polyglot-language-learning-LISTEN-NOW.html
-- static/language-podcast/10-what-is-a-good-language-learning-method.opus  — used by New-podcast-about-polyglot-language-learning-LISTEN-NOW.html
-- static/language-podcast/11-you-need-to-know-how-they-learn-japanese.opus  — used by New-podcast-about-polyglot-language-learning-LISTEN-NOW.html
-- static/language-podcast/12-why-do-we-learn-languages.opus  — used by New-podcast-about-polyglot-language-learning-LISTEN-NOW.html
-- static/language-podcast/13-so-you-want-to-learn-latin.opus  — used by New-podcast-about-polyglot-language-learning-LISTEN-NOW.html
-- static/language-podcast/14-learn-how-to-learn-how-to-learn-languages.opus  — used by New-podcast-about-polyglot-language-learning-LISTEN-NOW.html
 - static/language-podcast/2 LR is Mandatory For Literate Polyglots.opus  — used by New-podcast-about-polyglot-language-learning-LISTEN-NOW.html
 - static/language-podcast/3 Six Part Learner Model.opus  — used by New-podcast-about-polyglot-language-learning-LISTEN-NOW.html
 - static/language-podcast/4 There Are Higher Levels To Aquisition.opus  — used by New-podcast-about-polyglot-language-learning-LISTEN-NOW.html
-- static/language-podcast/5-so-you-want-to-learn-some-languages-what-do-you-do.opus  — used by New-podcast-about-polyglot-language-learning-LISTEN-NOW.html
-- static/language-podcast/6-need-to-listen-to-conversations-to-speak.opus  — used by New-podcast-about-polyglot-language-learning-LISTEN-NOW.html
-- static/language-podcast/7-listening-reading.opus  — used by New-podcast-about-polyglot-language-learning-LISTEN-NOW.html
-- static/language-podcast/8-how-to-get-and-consume-media-climbing-a-mountain.opus  — used by New-podcast-about-polyglot-language-learning-LISTEN-NOW.html
-- static/language-podcast/9-learn-five-languages-from-zero.opus  — used by New-podcast-about-polyglot-language-learning-LISTEN-NOW.html
-- static/language-podcast/Audacity Shadowing Without Shadowing.opus  — used by New-podcast-about-polyglot-language-learning-LISTEN-NOW.html
-- static/language-podcast/BUYNOW.opus  — used by New-podcast-about-polyglot-language-learning-LISTEN-NOW.html
-- static/language-podcast/How to Use the Internet Library Only.opus  — used by New-podcast-about-polyglot-language-learning-LISTEN-NOW.html
-- static/language-podcast/Quixotic Self-Awareness.opus  — used by New-podcast-about-polyglot-language-learning-LISTEN-NOW.html
 - static/norda-naturo/norda-naturo.epub  — used by norda-naturo.html
 - static/norda-naturo/norda-naturo.mobi  — used by norda-naturo.html
 - static/norda-naturo/norda-naturo.txt  — used by norda-naturo.html
diff --git a/build.sh b/build.sh
index 00187f1..6f6ebdf 100755
--- a/build.sh
+++ b/build.sh
@@ -191,9 +191,10 @@ awk -v postfile="$WORK/post-items.html" -v pagefile="$WORK/page-items.html" '
 
 # RFC 822, as RSS requires. The C locale matters: without it the day and
 # month names come out in the system language. `date -d` is GNU; where it is
-# missing the item simply goes out without a pubDate.
+# missing the item simply goes out without a pubDate. A post has only a
+# date, so its time is midnight; a podcast episode has an exact time.
 feed_date() {
-    LC_ALL=C date -u -d "$1" '+%a, %d %b %Y 00:00:00 +0000' 2>/dev/null
+    LC_ALL=C date -u -d "$1" '+%a, %d %b %Y %H:%M:%S +0000' 2>/dev/null
 }
 
 # A feed reader shows the HTML away from the site, so links relative to it
@@ -237,6 +238,84 @@ absolute() {
     printf '</channel>\n</rss>\n'
 } > "$SITE_DIR/rss.xml"
 
+# ── podcast ──────────────────────────────────────────────────
+# podcast.tsv lists the podcast episodes, newest first, one on each line:
+#   date <TAB> file <TAB> bytes <TAB> seconds <TAB> youtube <TAB> title
+# date is the UTC time of the upload in ISO 8601. file is the name of the
+# audio in static/language-podcast/. The audio stays out of git (see
+# .gitignore), so its size and length, which the feed must give, are kept
+# here. youtube is the ID of the same episode on YouTube, or "-" if none.
+# Every field needs a value, because read merges empty tab-separated fields.
+PODCAST_PAGE="polyglot-podcast.html"
+AUDIO_DIR="static/language-podcast"
+
+youtube_url() {
+    printf 'https://www.youtube.com/watch?v=%s' "$1"
+}
+
+{
+    printf '<?xml version="1.0" encoding="UTF-8"?>\n'
+    printf '<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"'
+    printf ' xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"'
+    printf ' xmlns:podcast="https://podcastindex.org/namespace/1.0">\n<channel>\n'
+    printf '  <title>Polyglot Podcast</title>\n'
+    printf '  <link>%s/%s</link>\n' "$SITE_URL" "$PODCAST_PAGE"
+    printf '  <description>Spenser Truex talks about how to learn languages, and about AI.</description>\n'
+    printf '  <language>en-us</language>\n'
+    printf '  <atom:link href="%s/podcast.xml" rel="self" type="application/rss+xml" />\n' "$SITE_URL"
+    printf '  <itunes:author>Spenser Truex</itunes:author>\n'
+    printf '  <itunes:image href="%s/static/podcast.png" />\n' "$SITE_URL"
+    printf '  <itunes:category text="Education">\n'
+    printf '    <itunes:category text="Language Learning" />\n'
+    printf '  </itunes:category>\n'
+    printf '  <itunes:explicit>false</itunes:explicit>\n'
+    printf '  <podcast:funding url="https://ko-fi.com/truex">Support the podcast</podcast:funding>\n'
+    while IFS="$TAB" read -r date file bytes seconds youtube title; do
+        [ -z "$date" ] && continue
+        case $file in
+            *.m4a) type=audio/x-m4a ;;
+            *.mp3) type=audio/mpeg ;;
+            *) echo "podcast.tsv: no MIME type for $file" >&2; exit 1 ;;
+        esac
+        url="$SITE_URL/$AUDIO_DIR/$file"
+        printf '  <item>\n'
+        printf '    <title>%s</title>\n' "$(printf '%s' "$title" | esc)"
+        printf '    <enclosure url="%s" length="%s" type="%s" />\n' "$url" "$bytes" "$type"
+        printf '    <guid isPermaLink="false">%s</guid>\n' "$url"
+        pub=$(feed_date "$date") && [ -n "$pub" ] &&
+            printf '    <pubDate>%s</pubDate>\n' "$pub"
+        printf '    <itunes:duration>%s</itunes:duration>\n' "$seconds"
+        if [ "$youtube" != - ]; then
+            printf '    <link>%s</link>\n' "$(youtube_url "$youtube")"
+            printf '    <description>Video: %s</description>\n' "$(youtube_url "$youtube")"
+        fi
+        printf '  </item>\n'
+    done < podcast.tsv
+    printf '</channel>\n</rss>\n'
+} > "$SITE_DIR/podcast.xml"
+
+# The podcast page lists the same episodes. The list goes in place of the
+# comment <!-- EPISODE_LIST --> in pages/polyglot-podcast.md.
+while IFS="$TAB" read -r date file bytes seconds youtube title; do
+    [ -z "$date" ] && continue
+    printf '<li><a href="%s/%s">%s</a>' "$AUDIO_DIR" "$file" \
+        "$(printf '%s' "$title" | esc)"
+    [ "$youtube" = - ] ||
+        printf ' (<a href="%s">video</a>)' "$(youtube_url "$youtube")"
+    printf '</li>\n'
+done < podcast.tsv > "$WORK/episode-items.html"
+awk -v listfile="$WORK/episode-items.html" '
+    /<!-- EPISODE_LIST -->/ {
+        print "<ul>"
+        while ((getline line < listfile) > 0) print line
+        close(listfile)
+        print "</ul>"
+        next
+    }
+    { print }
+' "$SITE_DIR/$PODCAST_PAGE" > "$WORK/podcast-page.html"
+cp "$WORK/podcast-page.html" "$SITE_DIR/$PODCAST_PAGE"
+
 # ── post data for the accounts service ──────────────────────
 # accounts/ reads these files to send email about new posts and to make
 # the private feed of each user. index.tsv has one line for each post,
@@ -251,7 +330,7 @@ while IFS="$TAB" read -r order date slug title; do
 done < "$WORK/sorted.tsv" > "$SITE_DIR/postdata/index.tsv"
 
 echo "Built $(ls "$SITE_DIR"/*.html | wc -l | tr -d ' ') pages → $SITE_DIR/"
-echo "  posts: $(wc -l < "$WORK/posts.tsv" | tr -d ' ')   pages: $(wc -l < "$WORK/pages.tsv" | tr -d ' ')   feed: $(grep -c '<item>' "$SITE_DIR/rss.xml") items"
+echo "  posts: $(wc -l < "$WORK/posts.tsv" | tr -d ' ')   pages: $(wc -l < "$WORK/pages.tsv" | tr -d ' ')   feed: $(grep -c '<item>' "$SITE_DIR/rss.xml") items   podcast: $(grep -c '<item>' "$SITE_DIR/podcast.xml") episodes"
 
 # ── deploy ───────────────────────────────────────────────────
 # git/ and git.html share this web root but are published by deploy-git.sh,
@@ -259,9 +338,13 @@ echo "  posts: $(wc -l < "$WORK/posts.tsv" | tr -d ' ')   pages: $(wc -l < "$WOR
 # rsync never deletes an excluded path on the receiving side.
 # static/book/ holds book files that stay out of the repo (see .gitignore).
 # They exist only on the server, so the same rule protects them.
+# static/language-podcast/ holds the podcast audio, which also stays out of
+# the repo. The P (protect) rule stops --delete from removing the server
+# copy when the working tree has no audio, but the audio that the working
+# tree has still uploads.
 if [ "$DEPLOY" = yes ]; then
     rsync -avzP --delete --exclude=/git/ --exclude=/git.html \
-        --exclude=/static/book/ \
+        --exclude=/static/book/ --filter='P /static/language-podcast/***' \
         "$SITE_DIR/" "$DEPLOY_HOST:$DEPLOY_PATH"
     ssh "$DEPLOY_HOST" "chmod -R a+rX $DEPLOY_PATH"
 fi
diff --git a/pages/polyglot-podcast.md b/pages/polyglot-podcast.md
new file mode 100644
index 0000000..3494856
--- /dev/null
+++ b/pages/polyglot-podcast.md
@@ -0,0 +1,16 @@
+---
+title: Polyglot Podcast
+links:
+- '[New podcast about polyglot language learning (LISTEN NOW!)](New-podcast-about-polyglot-language-learning-LISTEN-NOW.html)'
+- '[YouTube](youtube.html)'
+- '[Donate](donate.html)'
+---
+
+How to learn languages, and some AI.
+
+Subscribe in a podcast app with the RSS feed:
+<https://recentlywritten.com/podcast.xml>
+
+Support the podcast on [ko-fi](https://ko-fi.com/truex).
+
+<!-- EPISODE_LIST -->
diff --git a/podcast.tsv b/podcast.tsv
new file mode 100644
index 0000000..d21cd2d
--- /dev/null
+++ b/podcast.tsv
@@ -0,0 +1,17 @@
+2026-08-10T00:11:38Z	stop-ai-with-this-one-weird-trick.m4a	9597391	593	T34-trDek-4	We're all going to die by AI unless this one thing happens: stop AI with this one weird trick
+2026-08-09T20:23:39Z	test-your-vibe-code.m4a	8016382	496	CsJuUGQEBrU	Secret way to test your FREAKING VIBE CODE or it will never work ever
+2026-08-08T12:50:23Z	our-ai-is-totally-fine.m4a	29439885	1820	B0rAEuhcjGQ	Our "AI" is totally fine according to Bostrom's Superintelligence, 2014
+2025-08-13T04:00:16Z	buy-now.m4a	2368880	146	76ktbgBj4zU	BUY NOW (book announcement)
+2025-08-11T04:01:10Z	quixotic-self-awareness.m4a	2851798	176	vzz8c7KJVpc	Quixotic Self-Awareness
+2025-08-11T04:00:24Z	how-to-use-the-internet-library-only.m4a	5629562	348	UMQLpgeylbg	How to Use the Internet Library Only
+2025-08-10T07:01:00Z	audacity-shadowing-without-shadowing.m4a	3354271	207	pfViqMW0pVY	Audacity Shadowing Without Shadowing
+2025-08-09T08:00:06Z	14-learn-how-to-learn-how-to-learn-languages.m4a	19577187	1210	tC1Snqa1eVo	Learn how to learn how to learn languages
+2025-08-08T04:54:02Z	13-so-you-want-to-learn-latin.m4a	10041166	621	kXEtMn0NU-w	So you want to learn Latin
+2025-08-08T04:00:09Z	12-why-do-we-learn-languages.m4a	7337416	454	2xWWsZ1667Q	Why do we learn languages (for the middle path)
+2025-08-08T03:59:48Z	11-you-need-to-know-how-they-learn-japanese.m4a	3898023	241	5xthTMBcjZI	YOU need to know how they learn Japanese
+2025-08-08T03:11:17Z	10-what-is-a-good-language-learning-method.m4a	12724687	787	sSVpwxwtkH8	What is a good language learning method
+2025-08-08T02:51:30Z	9-learn-five-languages-from-zero.m4a	15157261	937	Twyfq_ETzZ0	Learn five languages from zero
+2025-08-08T02:21:41Z	8-how-to-get-and-consume-media-climbing-a-mountain.m4a	6495865	402	FeGQw-z8Kg0	How to get and consume media climbing a mountain
+2025-08-08T01:47:11Z	7-listening-reading.m4a	7453807	461	KhUxlT_ThxQ	Listening reading (L/R)
+2025-08-08T01:01:46Z	6-need-to-listen-to-conversations-to-speak.m4a	3324956	206	_lSYnoMqPQk	Need to listen to conversations to speak
+2025-08-08T00:21:00Z	5-so-you-want-to-learn-some-languages-what-do-you-do.m4a	5946500	368	6SwJj6-gWtI	So you want to learn some languages, what do you do?
diff --git a/posts/New-podcast-about-polyglot-language-learning-LISTEN-NOW.md b/posts/New-podcast-about-polyglot-language-learning-LISTEN-NOW.md
index d9ad385..638cefa 100755
--- a/posts/New-podcast-about-polyglot-language-learning-LISTEN-NOW.md
+++ b/posts/New-podcast-about-polyglot-language-learning-LISTEN-NOW.md
@@ -15,23 +15,25 @@ links:
 - '[How to Learn a Language According to The Internet](How-to-Learn-a-Language-According-to-The-Internet.html)'
 ---
 
+Update: the podcast now has a page and an RSS feed: [Polyglot Podcast](polyglot-podcast.html).
+
 Right now it isn't syndicated anywhere, but you can download them directly from these links:
 
 - [1 ALATT path and C1 polyglot to C2](static/language-podcast/1%20ALATT%20Path%20And%20C1%20Polyglot%20To%20C2.opus)
 - [2 LR is mandatory for literate polyglots](static/language-podcast/2%20LR%20is%20Mandatory%20For%20Literate%20Polyglots.opus)
 - [3 Six part learner model](static/language-podcast/3%20Six%20Part%20Learner%20Model.opus)
 - [4 There are higher levels to aquisition](static/language-podcast/4%20There%20Are%20Higher%20Levels%20To%20Aquisition.opus)
-- [5 So you want to learn some languages, what do you do?](static/language-podcast/5-so-you-want-to-learn-some-languages-what-do-you-do.opus)
-- [6 Need to listen to conversations to speak](static/language-podcast/6-need-to-listen-to-conversations-to-speak.opus)
-- [7 Listening reading (L/R)](static/language-podcast/7-listening-reading.opus)
-- [8 How to get and consume media climbing a mountain](static/language-podcast/8-how-to-get-and-consume-media-climbing-a-mountain.opus)
-- [9 Learn five languages from zero](static/language-podcast/9-learn-five-languages-from-zero.opus)
-- [10 What is a good language learning method](static/language-podcast/10-what-is-a-good-language-learning-method.opus)
-- [11 YOU need to know how they learn Japanese](static/language-podcast/11-you-need-to-know-how-they-learn-japanese.opus)
-- [12 Why do we learn languages (for the middle path)](static/language-podcast/12-why-do-we-learn-languages.opus)
-- [13 So you want to learn Latin](static/language-podcast/13-so-you-want-to-learn-latin.opus)
-- [14 Learn how to learn how to learn languages](static/language-podcast/14-learn-how-to-learn-how-to-learn-languages.opus)
-- [15 Audacity Shadowing Without Shadowing](static/language-podcast/Audacity%20Shadowing%20Without%20Shadowing.opus)
-- [16 BUY NOW (book announcement)](static/language-podcast/BUYNOW.opus)
-- [17 How to Use the Internet Library Only](static/language-podcast/How%20to%20Use%20the%20Internet%20Library%20Only.opus)
-- [18 Quixotic Self-Awareness](static/language-podcast/Quixotic%20Self-Awareness.opus)
+- [5 So you want to learn some languages, what do you do?](static/language-podcast/5-so-you-want-to-learn-some-languages-what-do-you-do.m4a)
+- [6 Need to listen to conversations to speak](static/language-podcast/6-need-to-listen-to-conversations-to-speak.m4a)
+- [7 Listening reading (L/R)](static/language-podcast/7-listening-reading.m4a)
+- [8 How to get and consume media climbing a mountain](static/language-podcast/8-how-to-get-and-consume-media-climbing-a-mountain.m4a)
+- [9 Learn five languages from zero](static/language-podcast/9-learn-five-languages-from-zero.m4a)
+- [10 What is a good language learning method](static/language-podcast/10-what-is-a-good-language-learning-method.m4a)
+- [11 YOU need to know how they learn Japanese](static/language-podcast/11-you-need-to-know-how-they-learn-japanese.m4a)
+- [12 Why do we learn languages (for the middle path)](static/language-podcast/12-why-do-we-learn-languages.m4a)
+- [13 So you want to learn Latin](static/language-podcast/13-so-you-want-to-learn-latin.m4a)
+- [14 Learn how to learn how to learn languages](static/language-podcast/14-learn-how-to-learn-how-to-learn-languages.m4a)
+- [15 Audacity Shadowing Without Shadowing](static/language-podcast/audacity-shadowing-without-shadowing.m4a)
+- [16 BUY NOW (book announcement)](static/language-podcast/buy-now.m4a)
+- [17 How to Use the Internet Library Only](static/language-podcast/how-to-use-the-internet-library-only.m4a)
+- [18 Quixotic Self-Awareness](static/language-podcast/quixotic-self-awareness.m4a)
diff --git a/site/New-podcast-about-polyglot-language-learning-LISTEN-NOW.html b/site/New-podcast-about-polyglot-language-learning-LISTEN-NOW.html
index 9202576..dac96b5 100755
--- a/site/New-podcast-about-polyglot-language-learning-LISTEN-NOW.html
+++ b/site/New-podcast-about-polyglot-language-learning-LISTEN-NOW.html
@@ -37,6 +37,8 @@ learning (LISTEN NOW!)" />
   <h1 class="post-title">New podcast about polyglot language learning
 (LISTEN NOW!)</h1>
 
+  <p>Update: the podcast now has a page and an RSS feed: <a
+  href="polyglot-podcast.html">Polyglot Podcast</a>.</p>
   <p>Right now it isn’t syndicated anywhere, but you can download them
   directly from these links:</p>
   <ul>
@@ -53,44 +55,43 @@ learning (LISTEN NOW!)" />
   href="static/language-podcast/4%20There%20Are%20Higher%20Levels%20To%20Aquisition.opus">4
   There are higher levels to aquisition</a></li>
   <li><a
-  href="static/language-podcast/5-so-you-want-to-learn-some-languages-what-do-you-do.opus">5
+  href="static/language-podcast/5-so-you-want-to-learn-some-languages-what-do-you-do.m4a">5
   So you want to learn some languages, what do you do?</a></li>
   <li><a
-  href="static/language-podcast/6-need-to-listen-to-conversations-to-speak.opus">6
+  href="static/language-podcast/6-need-to-listen-to-conversations-to-speak.m4a">6
   Need to listen to conversations to speak</a></li>
-  <li><a href="static/language-podcast/7-listening-reading.opus">7
+  <li><a href="static/language-podcast/7-listening-reading.m4a">7
   Listening reading (L/R)</a></li>
   <li><a
-  href="static/language-podcast/8-how-to-get-and-consume-media-climbing-a-mountain.opus">8
+  href="static/language-podcast/8-how-to-get-and-consume-media-climbing-a-mountain.m4a">8
   How to get and consume media climbing a mountain</a></li>
   <li><a
-  href="static/language-podcast/9-learn-five-languages-from-zero.opus">9
+  href="static/language-podcast/9-learn-five-languages-from-zero.m4a">9
   Learn five languages from zero</a></li>
   <li><a
-  href="static/language-podcast/10-what-is-a-good-language-learning-method.opus">10
+  href="static/language-podcast/10-what-is-a-good-language-learning-method.m4a">10
   What is a good language learning method</a></li>
   <li><a
-  href="static/language-podcast/11-you-need-to-know-how-they-learn-japanese.opus">11
+  href="static/language-podcast/11-you-need-to-know-how-they-learn-japanese.m4a">11
   YOU need to know how they learn Japanese</a></li>
   <li><a
-  href="static/language-podcast/12-why-do-we-learn-languages.opus">12
-  Why do we learn languages (for the middle path)</a></li>
+  href="static/language-podcast/12-why-do-we-learn-languages.m4a">12 Why
+  do we learn languages (for the middle path)</a></li>
   <li><a
-  href="static/language-podcast/13-so-you-want-to-learn-latin.opus">13
-  So you want to learn Latin</a></li>
+  href="static/language-podcast/13-so-you-want-to-learn-latin.m4a">13 So
+  you want to learn Latin</a></li>
   <li><a
-  href="static/language-podcast/14-learn-how-to-learn-how-to-learn-languages.opus">14
+  href="static/language-podcast/14-learn-how-to-learn-how-to-learn-languages.m4a">14
   Learn how to learn how to learn languages</a></li>
   <li><a
-  href="static/language-podcast/Audacity%20Shadowing%20Without%20Shadowing.opus">15
+  href="static/language-podcast/audacity-shadowing-without-shadowing.m4a">15
   Audacity Shadowing Without Shadowing</a></li>
-  <li><a href="static/language-podcast/BUYNOW.opus">16 BUY NOW (book
+  <li><a href="static/language-podcast/buy-now.m4a">16 BUY NOW (book
   announcement)</a></li>
   <li><a
-  href="static/language-podcast/How%20to%20Use%20the%20Internet%20Library%20Only.opus">17
+  href="static/language-podcast/how-to-use-the-internet-library-only.m4a">17
   How to Use the Internet Library Only</a></li>
-  <li><a
-  href="static/language-podcast/Quixotic%20Self-Awareness.opus">18
+  <li><a href="static/language-podcast/quixotic-self-awareness.m4a">18
   Quixotic Self-Awareness</a></li>
   </ul>
 
diff --git a/site/index.html b/site/index.html
index 0a4e8cc..e59ff6b 100644
--- a/site/index.html
+++ b/site/index.html
@@ -129,6 +129,7 @@
 <li><a href="meti-limon.html">meti limon</a></li>
 <li><a href="newport-reference-manual.html">Newport Reference Manual</a></li>
 <li><a href="norda-naturo.html">norda naturo</a></li>
+<li><a href="polyglot-podcast.html">Polyglot Podcast</a></li>
 <li><a href="projects.html">Projects</a></li>
 <li><a href="release.html">release</a></li>
 <li><a href="rut.html">rut</a></li>
diff --git a/site/podcast.xml b/site/podcast.xml
new file mode 100644
index 0000000..c0c10de
--- /dev/null
+++ b/site/podcast.xml
@@ -0,0 +1,170 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:podcast="https://podcastindex.org/namespace/1.0">
+<channel>
+  <title>Polyglot Podcast</title>
+  <link>https://recentlywritten.com/polyglot-podcast.html</link>
+  <description>Spenser Truex talks about how to learn languages, and about AI.</description>
+  <language>en-us</language>
+  <atom:link href="https://recentlywritten.com/podcast.xml" rel="self" type="application/rss+xml" />
+  <itunes:author>Spenser Truex</itunes:author>
+  <itunes:image href="https://recentlywritten.com/static/podcast.png" />
+  <itunes:category text="Education">
+    <itunes:category text="Language Learning" />
+  </itunes:category>
+  <itunes:explicit>false</itunes:explicit>
+  <podcast:funding url="https://ko-fi.com/truex">Support the podcast</podcast:funding>
+  <item>
+    <title>We're all going to die by AI unless this one thing happens: stop AI with this one weird trick</title>
+    <enclosure url="https://recentlywritten.com/static/language-podcast/stop-ai-with-this-one-weird-trick.m4a" length="9597391" type="audio/x-m4a" />
+    <guid isPermaLink="false">https://recentlywritten.com/static/language-podcast/stop-ai-with-this-one-weird-trick.m4a</guid>
+    <pubDate>Mon, 10 Aug 2026 00:11:38 +0000</pubDate>
+    <itunes:duration>593</itunes:duration>
+    <link>https://www.youtube.com/watch?v=T34-trDek-4</link>
+    <description>Video: https://www.youtube.com/watch?v=T34-trDek-4</description>
+  </item>
+  <item>
+    <title>Secret way to test your FREAKING VIBE CODE or it will never work ever</title>
+    <enclosure url="https://recentlywritten.com/static/language-podcast/test-your-vibe-code.m4a" length="8016382" type="audio/x-m4a" />
+    <guid isPermaLink="false">https://recentlywritten.com/static/language-podcast/test-your-vibe-code.m4a</guid>
+    <pubDate>Sun, 09 Aug 2026 20:23:39 +0000</pubDate>
+    <itunes:duration>496</itunes:duration>
+    <link>https://www.youtube.com/watch?v=CsJuUGQEBrU</link>
+    <description>Video: https://www.youtube.com/watch?v=CsJuUGQEBrU</description>
+  </item>
+  <item>
+    <title>Our "AI" is totally fine according to Bostrom's Superintelligence, 2014</title>
+    <enclosure url="https://recentlywritten.com/static/language-podcast/our-ai-is-totally-fine.m4a" length="29439885" type="audio/x-m4a" />
+    <guid isPermaLink="false">https://recentlywritten.com/static/language-podcast/our-ai-is-totally-fine.m4a</guid>
+    <pubDate>Sat, 08 Aug 2026 12:50:23 +0000</pubDate>
+    <itunes:duration>1820</itunes:duration>
+    <link>https://www.youtube.com/watch?v=B0rAEuhcjGQ</link>
+    <description>Video: https://www.youtube.com/watch?v=B0rAEuhcjGQ</description>
+  </item>
+  <item>
+    <title>BUY NOW (book announcement)</title>
+    <enclosure url="https://recentlywritten.com/static/language-podcast/buy-now.m4a" length="2368880" type="audio/x-m4a" />
+    <guid isPermaLink="false">https://recentlywritten.com/static/language-podcast/buy-now.m4a</guid>
+    <pubDate>Wed, 13 Aug 2025 04:00:16 +0000</pubDate>
+    <itunes:duration>146</itunes:duration>
+    <link>https://www.youtube.com/watch?v=76ktbgBj4zU</link>
+    <description>Video: https://www.youtube.com/watch?v=76ktbgBj4zU</description>
+  </item>
+  <item>
+    <title>Quixotic Self-Awareness</title>
+    <enclosure url="https://recentlywritten.com/static/language-podcast/quixotic-self-awareness.m4a" length="2851798" type="audio/x-m4a" />
+    <guid isPermaLink="false">https://recentlywritten.com/static/language-podcast/quixotic-self-awareness.m4a</guid>
+    <pubDate>Mon, 11 Aug 2025 04:01:10 +0000</pubDate>
+    <itunes:duration>176</itunes:duration>
+    <link>https://www.youtube.com/watch?v=vzz8c7KJVpc</link>
+    <description>Video: https://www.youtube.com/watch?v=vzz8c7KJVpc</description>
+  </item>
+  <item>
+    <title>How to Use the Internet Library Only</title>
+    <enclosure url="https://recentlywritten.com/static/language-podcast/how-to-use-the-internet-library-only.m4a" length="5629562" type="audio/x-m4a" />
+    <guid isPermaLink="false">https://recentlywritten.com/static/language-podcast/how-to-use-the-internet-library-only.m4a</guid>
+    <pubDate>Mon, 11 Aug 2025 04:00:24 +0000</pubDate>
+    <itunes:duration>348</itunes:duration>
+    <link>https://www.youtube.com/watch?v=UMQLpgeylbg</link>
+    <description>Video: https://www.youtube.com/watch?v=UMQLpgeylbg</description>
+  </item>
+  <item>
+    <title>Audacity Shadowing Without Shadowing</title>
+    <enclosure url="https://recentlywritten.com/static/language-podcast/audacity-shadowing-without-shadowing.m4a" length="3354271" type="audio/x-m4a" />
+    <guid isPermaLink="false">https://recentlywritten.com/static/language-podcast/audacity-shadowing-without-shadowing.m4a</guid>
+    <pubDate>Sun, 10 Aug 2025 07:01:00 +0000</pubDate>
+    <itunes:duration>207</itunes:duration>
+    <link>https://www.youtube.com/watch?v=pfViqMW0pVY</link>
+    <description>Video: https://www.youtube.com/watch?v=pfViqMW0pVY</description>
+  </item>
+  <item>
+    <title>Learn how to learn how to learn languages</title>
+    <enclosure url="https://recentlywritten.com/static/language-podcast/14-learn-how-to-learn-how-to-learn-languages.m4a" length="19577187" type="audio/x-m4a" />
+    <guid isPermaLink="false">https://recentlywritten.com/static/language-podcast/14-learn-how-to-learn-how-to-learn-languages.m4a</guid>
+    <pubDate>Sat, 09 Aug 2025 08:00:06 +0000</pubDate>
+    <itunes:duration>1210</itunes:duration>
+    <link>https://www.youtube.com/watch?v=tC1Snqa1eVo</link>
+    <description>Video: https://www.youtube.com/watch?v=tC1Snqa1eVo</description>
+  </item>
+  <item>
+    <title>So you want to learn Latin</title>
+    <enclosure url="https://recentlywritten.com/static/language-podcast/13-so-you-want-to-learn-latin.m4a" length="10041166" type="audio/x-m4a" />
+    <guid isPermaLink="false">https://recentlywritten.com/static/language-podcast/13-so-you-want-to-learn-latin.m4a</guid>
+    <pubDate>Fri, 08 Aug 2025 04:54:02 +0000</pubDate>
+    <itunes:duration>621</itunes:duration>
+    <link>https://www.youtube.com/watch?v=kXEtMn0NU-w</link>
+    <description>Video: https://www.youtube.com/watch?v=kXEtMn0NU-w</description>
+  </item>
+  <item>
+    <title>Why do we learn languages (for the middle path)</title>
+    <enclosure url="https://recentlywritten.com/static/language-podcast/12-why-do-we-learn-languages.m4a" length="7337416" type="audio/x-m4a" />
+    <guid isPermaLink="false">https://recentlywritten.com/static/language-podcast/12-why-do-we-learn-languages.m4a</guid>
+    <pubDate>Fri, 08 Aug 2025 04:00:09 +0000</pubDate>
+    <itunes:duration>454</itunes:duration>
+    <link>https://www.youtube.com/watch?v=2xWWsZ1667Q</link>
+    <description>Video: https://www.youtube.com/watch?v=2xWWsZ1667Q</description>
+  </item>
+  <item>
+    <title>YOU need to know how they learn Japanese</title>
+    <enclosure url="https://recentlywritten.com/static/language-podcast/11-you-need-to-know-how-they-learn-japanese.m4a" length="3898023" type="audio/x-m4a" />
+    <guid isPermaLink="false">https://recentlywritten.com/static/language-podcast/11-you-need-to-know-how-they-learn-japanese.m4a</guid>
+    <pubDate>Fri, 08 Aug 2025 03:59:48 +0000</pubDate>
+    <itunes:duration>241</itunes:duration>
+    <link>https://www.youtube.com/watch?v=5xthTMBcjZI</link>
+    <description>Video: https://www.youtube.com/watch?v=5xthTMBcjZI</description>
+  </item>
+  <item>
+    <title>What is a good language learning method</title>
+    <enclosure url="https://recentlywritten.com/static/language-podcast/10-what-is-a-good-language-learning-method.m4a" length="12724687" type="audio/x-m4a" />
+    <guid isPermaLink="false">https://recentlywritten.com/static/language-podcast/10-what-is-a-good-language-learning-method.m4a</guid>
+    <pubDate>Fri, 08 Aug 2025 03:11:17 +0000</pubDate>
+    <itunes:duration>787</itunes:duration>
+    <link>https://www.youtube.com/watch?v=sSVpwxwtkH8</link>
+    <description>Video: https://www.youtube.com/watch?v=sSVpwxwtkH8</description>
+  </item>
+  <item>
+    <title>Learn five languages from zero</title>
+    <enclosure url="https://recentlywritten.com/static/language-podcast/9-learn-five-languages-from-zero.m4a" length="15157261" type="audio/x-m4a" />
+    <guid isPermaLink="false">https://recentlywritten.com/static/language-podcast/9-learn-five-languages-from-zero.m4a</guid>
+    <pubDate>Fri, 08 Aug 2025 02:51:30 +0000</pubDate>
+    <itunes:duration>937</itunes:duration>
+    <link>https://www.youtube.com/watch?v=Twyfq_ETzZ0</link>
+    <description>Video: https://www.youtube.com/watch?v=Twyfq_ETzZ0</description>
+  </item>
+  <item>
+    <title>How to get and consume media climbing a mountain</title>
+    <enclosure url="https://recentlywritten.com/static/language-podcast/8-how-to-get-and-consume-media-climbing-a-mountain.m4a" length="6495865" type="audio/x-m4a" />
+    <guid isPermaLink="false">https://recentlywritten.com/static/language-podcast/8-how-to-get-and-consume-media-climbing-a-mountain.m4a</guid>
+    <pubDate>Fri, 08 Aug 2025 02:21:41 +0000</pubDate>
+    <itunes:duration>402</itunes:duration>
+    <link>https://www.youtube.com/watch?v=FeGQw-z8Kg0</link>
+    <description>Video: https://www.youtube.com/watch?v=FeGQw-z8Kg0</description>
+  </item>
+  <item>
+    <title>Listening reading (L/R)</title>
+    <enclosure url="https://recentlywritten.com/static/language-podcast/7-listening-reading.m4a" length="7453807" type="audio/x-m4a" />
+    <guid isPermaLink="false">https://recentlywritten.com/static/language-podcast/7-listening-reading.m4a</guid>
+    <pubDate>Fri, 08 Aug 2025 01:47:11 +0000</pubDate>
+    <itunes:duration>461</itunes:duration>
+    <link>https://www.youtube.com/watch?v=KhUxlT_ThxQ</link>
+    <description>Video: https://www.youtube.com/watch?v=KhUxlT_ThxQ</description>
+  </item>
+  <item>
+    <title>Need to listen to conversations to speak</title>
+    <enclosure url="https://recentlywritten.com/static/language-podcast/6-need-to-listen-to-conversations-to-speak.m4a" length="3324956" type="audio/x-m4a" />
+    <guid isPermaLink="false">https://recentlywritten.com/static/language-podcast/6-need-to-listen-to-conversations-to-speak.m4a</guid>
+    <pubDate>Fri, 08 Aug 2025 01:01:46 +0000</pubDate>
+    <itunes:duration>206</itunes:duration>
+    <link>https://www.youtube.com/watch?v=_lSYnoMqPQk</link>
+    <description>Video: https://www.youtube.com/watch?v=_lSYnoMqPQk</description>
+  </item>
+  <item>
+    <title>So you want to learn some languages, what do you do?</title>
+    <enclosure url="https://recentlywritten.com/static/language-podcast/5-so-you-want-to-learn-some-languages-what-do-you-do.m4a" length="5946500" type="audio/x-m4a" />
+    <guid isPermaLink="false">https://recentlywritten.com/static/language-podcast/5-so-you-want-to-learn-some-languages-what-do-you-do.m4a</guid>
+    <pubDate>Fri, 08 Aug 2025 00:21:00 +0000</pubDate>
+    <itunes:duration>368</itunes:duration>
+    <link>https://www.youtube.com/watch?v=6SwJj6-gWtI</link>
+    <description>Video: https://www.youtube.com/watch?v=6SwJj6-gWtI</description>
+  </item>
+</channel>
+</rss>
diff --git a/site/polyglot-podcast.html b/site/polyglot-podcast.html
new file mode 100644
index 0000000..d6dd387
--- /dev/null
+++ b/site/polyglot-podcast.html
@@ -0,0 +1,75 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta name="viewport" content="width=device-width, initial-scale=1" />
+  <title>Polyglot Podcast — Recently Written</title>
+  <meta property="og:type" content="article" />
+  <meta property="og:site_name" content="Recently Written" />
+  <meta property="og:title" content="Polyglot Podcast" />
+  <meta property="og:url" content="https://recentlywritten.com/polyglot-podcast.html" />
+  <meta property="og:image" content="https://recentlywritten.com/static/og.png" />
+  <meta name="twitter:card" content="summary_large_image" />
+  <link rel="stylesheet" href="style.css" />
+  <link rel="alternate" type="application/rss+xml" title="Recently Written" href="rss.xml" />
+</head>
+<body>
+<div id="container">
+
+  <div id="top">
+    <a class="site-title" href="index.html">Recently Written</a>
+    <nav>
+      <a href="index.html">Home</a>
+      <a href="about.html">about</a>
+      <a href="lair.html">code</a>
+      <a href="git/index.html">git</a>
+      <a href="links.html">links</a>
+      <a href="youtube.html">youtube</a>
+      <a href="esperanto.html">esperanto</a>
+      <a href="call.html">contact</a>
+      <a href="rss.xml">rss</a>
+      <a href="account/">subscribe</a>
+    </nav>
+  </div>
+
+  <h1 class="post-title">Polyglot Podcast</h1>
+
+  <p>How to learn languages, and some AI.</p>
+  <p>Subscribe in a podcast app with the RSS feed: <a
+  href="https://recentlywritten.com/podcast.xml"
+  class="uri">https://recentlywritten.com/podcast.xml</a></p>
+  <p>Support the podcast on <a
+  href="https://ko-fi.com/truex">ko-fi</a>.</p>
+<ul>
+<li><a href="static/language-podcast/stop-ai-with-this-one-weird-trick.m4a">We're all going to die by AI unless this one thing happens: stop AI with this one weird trick</a> (<a href="https://www.youtube.com/watch?v=T34-trDek-4">video</a>)</li>
+<li><a href="static/language-podcast/test-your-vibe-code.m4a">Secret way to test your FREAKING VIBE CODE or it will never work ever</a> (<a href="https://www.youtube.com/watch?v=CsJuUGQEBrU">video</a>)</li>
+<li><a href="static/language-podcast/our-ai-is-totally-fine.m4a">Our "AI" is totally fine according to Bostrom's Superintelligence, 2014</a> (<a href="https://www.youtube.com/watch?v=B0rAEuhcjGQ">video</a>)</li>
+<li><a href="static/language-podcast/buy-now.m4a">BUY NOW (book announcement)</a> (<a href="https://www.youtube.com/watch?v=76ktbgBj4zU">video</a>)</li>
+<li><a href="static/language-podcast/quixotic-self-awareness.m4a">Quixotic Self-Awareness</a> (<a href="https://www.youtube.com/watch?v=vzz8c7KJVpc">video</a>)</li>
+<li><a href="static/language-podcast/how-to-use-the-internet-library-only.m4a">How to Use the Internet Library Only</a> (<a href="https://www.youtube.com/watch?v=UMQLpgeylbg">video</a>)</li>
+<li><a href="static/language-podcast/audacity-shadowing-without-shadowing.m4a">Audacity Shadowing Without Shadowing</a> (<a href="https://www.youtube.com/watch?v=pfViqMW0pVY">video</a>)</li>
+<li><a href="static/language-podcast/14-learn-how-to-learn-how-to-learn-languages.m4a">Learn how to learn how to learn languages</a> (<a href="https://www.youtube.com/watch?v=tC1Snqa1eVo">video</a>)</li>
+<li><a href="static/language-podcast/13-so-you-want-to-learn-latin.m4a">So you want to learn Latin</a> (<a href="https://www.youtube.com/watch?v=kXEtMn0NU-w">video</a>)</li>
+<li><a href="static/language-podcast/12-why-do-we-learn-languages.m4a">Why do we learn languages (for the middle path)</a> (<a href="https://www.youtube.com/watch?v=2xWWsZ1667Q">video</a>)</li>
+<li><a href="static/language-podcast/11-you-need-to-know-how-they-learn-japanese.m4a">YOU need to know how they learn Japanese</a> (<a href="https://www.youtube.com/watch?v=5xthTMBcjZI">video</a>)</li>
+<li><a href="static/language-podcast/10-what-is-a-good-language-learning-method.m4a">What is a good language learning method</a> (<a href="https://www.youtube.com/watch?v=sSVpwxwtkH8">video</a>)</li>
+<li><a href="static/language-podcast/9-learn-five-languages-from-zero.m4a">Learn five languages from zero</a> (<a href="https://www.youtube.com/watch?v=Twyfq_ETzZ0">video</a>)</li>
+<li><a href="static/language-podcast/8-how-to-get-and-consume-media-climbing-a-mountain.m4a">How to get and consume media climbing a mountain</a> (<a href="https://www.youtube.com/watch?v=FeGQw-z8Kg0">video</a>)</li>
+<li><a href="static/language-podcast/7-listening-reading.m4a">Listening reading (L/R)</a> (<a href="https://www.youtube.com/watch?v=KhUxlT_ThxQ">video</a>)</li>
+<li><a href="static/language-podcast/6-need-to-listen-to-conversations-to-speak.m4a">Need to listen to conversations to speak</a> (<a href="https://www.youtube.com/watch?v=_lSYnoMqPQk">video</a>)</li>
+<li><a href="static/language-podcast/5-so-you-want-to-learn-some-languages-what-do-you-do.m4a">So you want to learn some languages, what do you do?</a> (<a href="https://www.youtube.com/watch?v=6SwJj6-gWtI">video</a>)</li>
+</ul>
+
+  <p class="links"><a
+href="New-podcast-about-polyglot-language-learning-LISTEN-NOW.html">New
+podcast about polyglot language learning (LISTEN NOW!)</a> · <a
+href="youtube.html">YouTube</a> · <a href="donate.html">Donate</a></p>
+
+  <div id="footer">
+    <a href="index.html">← Home</a> ·
+    <a href="https://github.com/equwal">Github</a>
+  </div>
+
+</div>
+</body>
+</html>
diff --git a/site/postdata/New-podcast-about-polyglot-language-learning-LISTEN-NOW.html b/site/postdata/New-podcast-about-polyglot-language-learning-LISTEN-NOW.html
index fe0241c..0234ff8 100644
--- a/site/postdata/New-podcast-about-polyglot-language-learning-LISTEN-NOW.html
+++ b/site/postdata/New-podcast-about-polyglot-language-learning-LISTEN-NOW.html
@@ -1,3 +1,5 @@
+<p>Update: the podcast now has a page and an RSS feed: <a
+href="https://recentlywritten.com/polyglot-podcast.html">Polyglot Podcast</a>.</p>
 <p>Right now it isn’t syndicated anywhere, but you can download them
 directly from these links:</p>
 <ul>
@@ -14,42 +16,42 @@ Six part learner model</a></li>
 href="https://recentlywritten.com/static/language-podcast/4%20There%20Are%20Higher%20Levels%20To%20Aquisition.opus">4
 There are higher levels to aquisition</a></li>
 <li><a
-href="https://recentlywritten.com/static/language-podcast/5-so-you-want-to-learn-some-languages-what-do-you-do.opus">5
+href="https://recentlywritten.com/static/language-podcast/5-so-you-want-to-learn-some-languages-what-do-you-do.m4a">5
 So you want to learn some languages, what do you do?</a></li>
 <li><a
-href="https://recentlywritten.com/static/language-podcast/6-need-to-listen-to-conversations-to-speak.opus">6
+href="https://recentlywritten.com/static/language-podcast/6-need-to-listen-to-conversations-to-speak.m4a">6
 Need to listen to conversations to speak</a></li>
-<li><a href="https://recentlywritten.com/static/language-podcast/7-listening-reading.opus">7
+<li><a href="https://recentlywritten.com/static/language-podcast/7-listening-reading.m4a">7
 Listening reading (L/R)</a></li>
 <li><a
-href="https://recentlywritten.com/static/language-podcast/8-how-to-get-and-consume-media-climbing-a-mountain.opus">8
+href="https://recentlywritten.com/static/language-podcast/8-how-to-get-and-consume-media-climbing-a-mountain.m4a">8
 How to get and consume media climbing a mountain</a></li>
 <li><a
-href="https://recentlywritten.com/static/language-podcast/9-learn-five-languages-from-zero.opus">9
+href="https://recentlywritten.com/static/language-podcast/9-learn-five-languages-from-zero.m4a">9
 Learn five languages from zero</a></li>
 <li><a
-href="https://recentlywritten.com/static/language-podcast/10-what-is-a-good-language-learning-method.opus">10
+href="https://recentlywritten.com/static/language-podcast/10-what-is-a-good-language-learning-method.m4a">10
 What is a good language learning method</a></li>
 <li><a
-href="https://recentlywritten.com/static/language-podcast/11-you-need-to-know-how-they-learn-japanese.opus">11
+href="https://recentlywritten.com/static/language-podcast/11-you-need-to-know-how-they-learn-japanese.m4a">11
 YOU need to know how they learn Japanese</a></li>
 <li><a
-href="https://recentlywritten.com/static/language-podcast/12-why-do-we-learn-languages.opus">12 Why
+href="https://recentlywritten.com/static/language-podcast/12-why-do-we-learn-languages.m4a">12 Why
 do we learn languages (for the middle path)</a></li>
 <li><a
-href="https://recentlywritten.com/static/language-podcast/13-so-you-want-to-learn-latin.opus">13 So
+href="https://recentlywritten.com/static/language-podcast/13-so-you-want-to-learn-latin.m4a">13 So
 you want to learn Latin</a></li>
 <li><a
-href="https://recentlywritten.com/static/language-podcast/14-learn-how-to-learn-how-to-learn-languages.opus">14
+href="https://recentlywritten.com/static/language-podcast/14-learn-how-to-learn-how-to-learn-languages.m4a">14
 Learn how to learn how to learn languages</a></li>
 <li><a
-href="https://recentlywritten.com/static/language-podcast/Audacity%20Shadowing%20Without%20Shadowing.opus">15
+href="https://recentlywritten.com/static/language-podcast/audacity-shadowing-without-shadowing.m4a">15
 Audacity Shadowing Without Shadowing</a></li>
-<li><a href="https://recentlywritten.com/static/language-podcast/BUYNOW.opus">16 BUY NOW (book
+<li><a href="https://recentlywritten.com/static/language-podcast/buy-now.m4a">16 BUY NOW (book
 announcement)</a></li>
 <li><a
-href="https://recentlywritten.com/static/language-podcast/How%20to%20Use%20the%20Internet%20Library%20Only.opus">17
+href="https://recentlywritten.com/static/language-podcast/how-to-use-the-internet-library-only.m4a">17
 How to Use the Internet Library Only</a></li>
-<li><a href="https://recentlywritten.com/static/language-podcast/Quixotic%20Self-Awareness.opus">18
+<li><a href="https://recentlywritten.com/static/language-podcast/quixotic-self-awareness.m4a">18
 Quixotic Self-Awareness</a></li>
 </ul>
diff --git a/site/static/podcast.png b/site/static/podcast.png
new file mode 100644
index 0000000..6d34967
Binary files /dev/null and b/site/static/podcast.png differ
diff --git a/static/podcast.png b/static/podcast.png
new file mode 100644
index 0000000..6d34967
Binary files /dev/null and b/static/podcast.png differ