---
title: "Podcasts"
description: "Talks, interviews, and appearances about htmx."
---

import FinderLink from '../../components/FinderLink.astro';
import { formatDate } from '../../lib/utils';

export const podcasts = [
    {name: "ThePrimeTime - So I Talked With Creator HTMX", url: "https://www.youtube.com/watch?v=r8icH07gWBw", date: "2024-06-06"},
    {name: "TKYT", url: "https://www.youtube.com/watch?v=JRfcR3MmxWQ", date: "2024-05-27"},
    {name: "The Collab Lab - Hypermedia - Network Architecture Decoupling", url: "https://www.youtube.com/watch?v=j1XXoeer320", date: "2024-04-13"},
    {name: "PodRocket - htmx v2", url: "https://podrocket.logrocket.com/htmx-v2-carson-gross", date: "2024-03-06"},
    {name: "Syntax - htmx Web Apps", url: "https://syntax.fm/show/734/htmx-web-apps-with-carson-gross", date: "2024-02-23"},
    {name: "ThePrimeTime - Creator of HTMX Talks HTMX", url: "https://www.youtube.com/watch?v=LriHRa9t1fQ", date: "2024-01-17"},
    {name: "Software Unscripted - The Return of Hypermedia", url: "https://shows.acast.com/software-unscripted/episodes/664fde448c77cc0013b3338c", date: "2024-01-15"},
    {name: "Spiro Floropoulos", url: "https://www.youtube.com/watch?v=xdaQ7de3W38", date: "2024-01-10"},
    {name: "JavaScript Jabber - What has Changed with htmx 2.0", url: "https://topenddevs.com/podcasts/javascript-jabber/episodes/what-has-changed-with-htmx-2-0-with-carson-gross-jsj-604", date: "2023-10-24"},
    {name: "Backend Banter - Behind htmx the re-Rise of Hypermedia", url: "https://www.backendbanter.fm/episodes/024-behind-htmx-carson-gross-on-the-re-rise-of-hypermedia", date: "2023-10-22"},
    {name: "airhacks.fm - HATEOAS, Data APIs, Java and How htmx Happened", url: "https://airhacks.fm/#episode_200", date: "2023-10-02"},
    {name: "PodRocket by LogRocket", url: "https://podrocket.logrocket.com/htmx-carson-gross", date: "2023-09-21"},
    {name: "FrontendRheinMain - htmx: Building modern web applications without JS", url: "https://www.youtube.com/watch?v=Jodkvyo5DbA", date: "2023-07-14"},
    {name: "Unfiltered Build - The HOWL stack is your new tech stack", url: "https://podcast.unfilteredbuild.com/episodes/ep24-howl-stack-and-htmx-carson-gross/", date: "2023-07-10"},
    {name: "GitHub - Accelerator: Open Source Demo Day", url: "https://www.youtube.com/watch?v=Gj6Bez2182k&t=1821s", date: "2023-06-28"},
    {name: "Kompilator - Complexity very very bad", url: "https://kompilator.se/067", date: "2023-06-21"},
    {name: "Go Time - Is htmx the way to Go?", url: "https://changelog.com/gotime/266", date: "2023-02-09"},
    {name: "ChariotSolutions - Return To Hypermedia: Solving Javascript Fatigue Using Fundamental Web Architecture", url: "https://www.youtube.com/watch?v=LRrrxQXWdhI", date: "2022-08-01"},
    {name: "Chariot TechCast", url: "https://chariotsolutions.com/podcast/techchat-tuesdays-48-carson-gross-and-htmx/", date: "2022-03-29"},
    {name: "JavaScript Jabber", url: "https://topenddevs.com/podcasts/javascript-jabber/episodes/htmx-and-intercooler-ft-carson-gross-jsj-513", date: "2021-12-14"},
    {name: "devMode.fm - Hype for Hyperscript", url: "https://devmode.fm/episodes/hype-for-hyperscript", date: "2021-12-13"},
    {name: "DjangoConUS - REST, HATEOAS & Django - It's OK to not use JSON... or Javascript", url: "https://www.youtube.com/watch?v=L_UWY-zHlOA", date: "2021-10-23"},
    {name: "JetBrainsTV - htmx: Writing JavaScript to Avoid Writing JavaScript", url: "https://www.youtube.com/watch?v=u2rjnLJ1M98", date: "2021-10-21"},
    {name: "PyCharmIDE - Simple, Fast Frontends With htmx", url: "https://www.youtube.com/watch?v=cBfz4W_KvEI", date: "2021-07-22"},
    {name: ".NET Rocks!", url: "https://www.dotnetrocks.com/?show=1749", date: "2021-07-19"},
    {name: "Django Chat", url: "https://djangochat.com/episodes/htmx-carson-gross", date: "2021-07-07"},
    {name: "HTML All The Things", url: "https://www.htmlallthethings.com/blog-posts/htmx-hyperscript-and-more", date: "2021-06-22"},
    {name: "Talk Python", url: "https://talkpython.fm/episodes/show/321/htmx-clean-dynamic-html-pages", date: "2021-06-19"},
    {name: "JS Party - Less JavaScript more htmx", url: "https://changelog.com/jsparty/171", date: "2021-04-16"},
    {name: "Software Breakthroughs for the 21st Century", url: "https://www.youtube.com/watch?v=O4ZFIx1ckSg", date: "2021-05-24"},
    {name: "devMode.fm - Dynamic HTML with htmx", url: "https://devmode.fm/episodes/dynamic-html-with-htmx", date: "2020-09-07"},
];

export const grouped = (() => {
    const sorted = [...podcasts].sort((a, b) => new Date(b.date) - new Date(a.date));
    const map = new Map();
    for (const p of sorted) {
        const year = new Date(p.date).getFullYear().toString();
        if (!map.has(year)) map.set(year, []);
        map.get(year).push(p);
    }
    return [...map.entries()];
})();

<div class="mt-12 space-y-12">
    {grouped.map(([year, yearPodcasts]) => (
        <section class="not-prose">
            <h2 class="text-sm mb-6">
                {year}
            </h2>
            <div class="flex flex-col gap-1">
                {yearPodcasts.map(p => (
                    <FinderLink href={p.url} target="_blank" rel="noopener noreferrer">
                        <span class="flex-1 min-w-0 flex items-center gap-4">
                            <span class="flex-1 min-w-0 flex items-center gap-2">
                                <span class="text-[13px] sm:text-sm leading-snug truncate">{p.name}</span>
                                <i class="icon-[mdi--open-in-new] size-3 shrink-0 text-neutral-400 group-interact/link:text-blue-200 dark:group-interact/link:text-black" aria-label="External link"></i>
                            </span>
                            <span class="shrink-0 text-[11px] font-mono tabular-nums text-neutral-500 dark:text-neutral-450 group-interact/link:text-blue-200 dark:group-interact/link:text-black sm:w-[12ch] sm:text-right">{formatDate(p.date)}</span>
                        </span>
                    </FinderLink>
                ))}
            </div>
        </section>
    ))}
</div>
