Pony Podcast Programming by Corpulent Brony (#PonyDev @ BronyCon 2018)

Pony Podcast Programming by Corpulent Brony (#PonyDev @ BronyCon 2018)

A 10 minute lightning talk at BronyCon 2018's Pony Programming panel. Find more slides at http://developer.horse

Presented by Corpulent Brony

D6e6de8a5d1bd38cb31b668209d956ce?s=128

Inky Collective

July 28, 2018
Tweet

Transcript

  1. None
  2. •Data Developer for 20 years •Pony Podcast Producer for 4

    years • Formerly: PFC, Pony Tonite, Equestria Now • Currently: /mlp/odcast • Occasionally makes YouTube videos and writes for an infamous fandom news site
  3. •Hosted on Amazon Web Services (AWS) Elastic Compute Cloud (EC2)

    instance running Amazon Linux AMI •Episode MP3 files hosted on AWS Simple Cloud Storage Service (S3) •nginx Web server •PHP generated RSS feed •MySQL for episode metadata
  4. •Distribute episodes via iTunes, Google Play, Google Podcasts, etc. •RSS

    – an XML-based feed format •Client applications can subscribe to the feed and poll for updates • Web browsers, iTunes Podcast Connect, Google Play Podcasts, etc.
  5. •Wanted to create podcast Web site: https://mlp.one •Create new PHP

    interface to serve up same data in RSS feed? •Piggyback on existing RSS feed instead?
  6. • XSLT – XML-based transformations • Change any XML document

    into anything else • Turing-complete language • Transformed RSS feed into HTML
  7. • XSLT applied at browser or at server • Browser

    implementations vary considerably • Opted for nginx-based XSLT using the built-in module
  8. • RSS results from PHP cached on server • XSLT

    transformations cached on server • HTML transform included virtually using Server Side Includes (SSI) • FAST LOAD TIME
  9. • RSS feed leveraged with XSLT to create a schema.org

    compliant JSON-LD document describing podcast episodes • Used XSLT to modify RSS feed slightly to make it compatible with Google sitemaps
  10. • Donut Steel Public License: https://donutsteel.pl • Leveraged XSLT to

    transform XML document that defines license into: • HTML to display the license on the Web site • Markdown and Text formats for download
  11. None