Static Site Generators and Podcasting
Publishing podcasts the hard way.
Presently, I publish both Winning Slowly and New Rustacean1 using what is admittedly a bit of a quirky approach. It works well for me, and I think itâs worth documenting for other nerdy types out there, but if youâre just getting going with podcasting and youâre looking for the easy way to do it, let me warn you: this isnât it. Something like SoundCloud and a blog for show notes, or WordPress with Blubrry PowerPress is what you want instead. This approach works extremely well for statically-generated sites, however, and I imagine a few people out there might find it useful.
The short version
- Generate the feeds with Feeder.
- Generate the site statically with something else (and it really doesnât matter what).
- Copy the feed into the generated site.
The long version
I generate the sites themselves with Pelican and cargo doc
, respectively. I was already comfortable with Pelican because itâs what I use to generate this site (with a few tweaks to the standard configuration, especially using Pandoc rather than the Python Markdown implementation), so I ran with it for building the Winning Slowly site, and it has worked quite well for building the site itself. It just gets built locally and deployed via GitHub Pages.
However, it does not have built-in support for generating podcast feeds, even just the general case with enclosures. iTunes podcast support would have taken a lot of work to add.2 Instead, I chose to build the RSS feed semi-manually. Semi-manually, because doing it totally manually is a recipe for making mistakes. XML is many things, but âeasy to write correctly by handâ is not one of them. I use Feeder to manage the feeds, and it makes sure that the enclosure and iTunes elements are set correctly.
The biggest upside to this is that I can use Pelican without modification to how it generates feeds (apart from optionally turning them off entirely). It just copies the feed I generate to the output file during its normal build process. As suggested above, I also donât generate the other feeds which Pelican supports, as we have no need for them; we only care about the podcast feed.
This process works equally well, with very little modification, for New Rustacean. In that case, Iâm generating the content by running Rustâs documentation tool, cargo doc
3 to render the âAPI docsâ which serve as show notes. Notice the family resemblance between my âshow notesâ and, say, the Diesel docs, which are both generated the same way. This is not a normal way of building a podcast website; you can hear me explain why I did it this way in New Rustacean e001: Document all the things! In any case, I just take the show note-relevant parts of the documentation and put it in Feeder, generate the feed, and copy that as part of the build process.
Thatâs it!
If I stick with Pelican long-term, I might look into adding it anyway, but honestly, I donât love Pelican. The reasons have little to do with Pelican for itself, and a lot more to do with my particular and somewhat peculiar needs. Thatâs a post for another day. In any case, Iâm likelier to use another generatorâeven one I write myself!âthan to do the work to make Pelican do what I want.â©
Technically, Rustâs documentation tool is
rustdoc
, whichcargo doc
wraps around. I never actually userustdoc
directly, though.â©