<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Self-Hosted on Wɪᴘ In Progress…</title>
    <link>https://wip.tf/tags/self-hosted/</link>
    <description>Recent content in Self-Hosted on Wɪᴘ In Progress…</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Sun, 19 Apr 2026 22:08:21 -0400</lastBuildDate>
    <atom:link href="https://wip.tf/tags/self-hosted/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Turn your favorite RSS feeds into podcasts</title>
      <link>https://wip.tf/posts/turn-your-favorite-rss-feeds-into-podcasts/</link>
      <pubDate>Sun, 19 Apr 2026 22:03:25 -0400</pubDate>
      <guid>https://wip.tf/posts/turn-your-favorite-rss-feeds-into-podcasts/</guid>
      <description>&lt;div class=&#34;text-to-speech-container&#34;&gt;&#xA;    &lt;span class=&#34;text-to-speech-label&#34;&gt;Listen to this post:&lt;/span&gt;&#xA;    &lt;audio class=&#34;text-to-speech-audio&#34; controls&gt;&#xA;      &lt;source src=&#34;https://wip.tf/audio/tts/turn-your-favorite-rss-feeds-into-podcasts.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;    &lt;/audio&gt;&#xA;  &lt;/div&gt;&#xA;  &lt;script&gt;&#xA;    (function() {&#xA;      var a = document.createElement(&#39;audio&#39;);&#xA;      if (a.canPlayType &amp;&amp; a.canPlayType(&#39;audio/wav&#39;)) {&#xA;        var els = document.querySelectorAll(&#39;.text-to-speech-container&#39;);&#xA;        for (var i = 0; i &lt; els.length; i++) els[i].style.display = &#39;flex&#39;;&#xA;      }&#xA;    })();&#xA;  &lt;/script&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://wip.tf/posts/this-blog-is-a-podcast/&#34;&gt;Turning this blog into a podcast&lt;/a&gt; was fun&amp;hellip; But long form articles from other people are actually the ones I want to listen to on my commute.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;images/ars-pod-list.png#hmedium&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;By running &lt;a href=&#34;https://github.com/nbr23/rss2podcast&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;rss2podcast&lt;/a&gt; on a cron, we can get a &lt;a href=&#34;https://wip.tf/tags/tts/&#34;&gt;piper&lt;/a&gt; read podcast out of any RSS feed!&lt;/p&gt;</description>
    </item>
    <item>
      <title>My self-hosted TextToSpeech setup</title>
      <link>https://wip.tf/posts/tts-setup/</link>
      <pubDate>Sun, 13 Apr 2025 20:33:45 -0400</pubDate>
      <guid>https://wip.tf/posts/tts-setup/</guid>
      <description>&lt;div class=&#34;text-to-speech-container&#34;&gt;&#xA;    &lt;span class=&#34;text-to-speech-label&#34;&gt;Listen to this post:&lt;/span&gt;&#xA;    &lt;audio class=&#34;text-to-speech-audio&#34; controls&gt;&#xA;      &lt;source src=&#34;https://wip.tf/audio/tts/tts-setup.mp3&#34; type=&#34;audio/mpeg&#34;&gt;&#xA;    &lt;/audio&gt;&#xA;  &lt;/div&gt;&#xA;  &lt;script&gt;&#xA;    (function() {&#xA;      var a = document.createElement(&#39;audio&#39;);&#xA;      if (a.canPlayType &amp;&amp; a.canPlayType(&#39;audio/wav&#39;)) {&#xA;        var els = document.querySelectorAll(&#39;.text-to-speech-container&#39;);&#xA;        for (var i = 0; i &lt; els.length; i++) els[i].style.display = &#39;flex&#39;;&#xA;      }&#xA;    })();&#xA;  &lt;/script&gt;&#xA;&lt;p&gt;For a while, I had been using a simple keyboard shortcut for &lt;code&gt;xclip -o | espeak-ng&lt;/code&gt; as my TextToSpeech setup. I mostly use it in-browser, highlighting text and using the shortcut to speak the highlighted text.&lt;/p&gt;&#xA;&lt;p&gt;I have been meaning to update it, get more modern voices and make it easier to setup on heterogenous environments (fancy way to say I struggle to have reliable hotkey actions on my work macbook).&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
