<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~files/feed-premium.xsl"?>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" xmlns:feedpress="https://feed.press/xmlns" xmlns:podcast="https://podcastindex.org/namespace/1.0" version="2.0">
  <channel>
    <feedpress:locale>en</feedpress:locale>
    <atom:link rel="hub" href="https://feedpress.superfeedr.com/"/>
    <title>BirchTree</title>
    <description>Tech, games, and goodies since 2010 by Matt Birchler</description>
    <link>https://birchtree.me</link>
    <image>
      <url>https://birchtree.me/favicon.png</url>
      <title>Birchtree</title>
      <link>https://birchtree.me/</link>
    </image>
    <generator>Ghost 6.68</generator>
    <lastBuildDate>Mon, 05 Oct 2026 13:48:20 GMT</lastBuildDate>
    <atom:link href="https://feedpress.me/birchtree" rel="self" type="application/rss+xml"/>
    <ttl>60</ttl>
    <item>
      <title><![CDATA[Say hello to "Parakeet Turbo"]]></title>
      <description><![CDATA[<p>Parakeet has long been a fan favorite local transcription model in <a href="https://apps.apple.com/us/app/quick-subtitles/id6747410609?ref=birchtree.me" rel="noopener noreferrer">Quick Subtitles</a>. Apple&apos;s is slower and not as accurate, while Whisper is a little bit more accurate, but is way slower. With the combination of high accuracy and massively better speed, why go with anything else, right?</p>]]></description>
      <link>https://birchtree.me/blog/say-hello-to-parakeet-turbo/</link>
      <guid isPermaLink="false">6ac3a9ce3c6e9c0001764346</guid>
      <dc:creator><![CDATA[Matt Birchler]]></dc:creator>
      <pubDate>Mon, 05 Oct 2026 13:48:18 GMT</pubDate>
      <media:content url="https://storage.ghost.io/c/25/31/25312b2a-2d5b-4d01-ba92-e6755efc202c/content/images/2026/10/CleanShot-2026-10-05-at-6.37.01-AM@2x.png" medium="image">
        <media:description type="plain">Say hello to "Parakeet Turbo"</media:description>
      </media:content>
      <content:encoded><![CDATA[<img src="https://storage.ghost.io/c/25/31/25312b2a-2d5b-4d01-ba92-e6755efc202c/content/images/2026/10/CleanShot-2026-10-05-at-6.37.01-AM@2x.png" alt="Say hello to &quot;Parakeet Turbo&quot;"><p>Parakeet has long been a fan favorite local transcription model in <a href="https://apps.apple.com/us/app/quick-subtitles/id6747410609?ref=birchtree.me" rel="noopener noreferrer">Quick Subtitles</a>. Apple&apos;s is slower and not as accurate, while Whisper is a little bit more accurate, but is way slower. With the combination of high accuracy and massively better speed, why go with anything else, right?</p><p>Well, what if we could take Parakeet&apos;s already outstanding performance and accuracy, and make it faster? A lot faster&#x2026;</p><p><strong>TLDR: I&apos;ve multi-threaded Parakeet in the </strong><a href="https://github.com/mattbirchler/quicksubs?ref=birchtree.me" rel="noopener noreferrer"><strong>Quick Subtitles CLI</strong></a><strong> so it runs about 3x as fast as before, and is available now.</strong> The main app will get this in a few weeks, and is currently available in beta for More Birchtree subscribers.</p><h2 id="the-results">The results</h2><p>I threw the model at the latest episode of Comfort Zone, which is 102 minutes long. Using the updated version of the CLI transcribed it in 12 seconds on the M4 Pro and 8 seconds on the M6.</p><p>Eight. Seconds.</p><figure class="kg-card kg-image-card"><img src="https://storage.ghost.io/c/25/31/25312b2a-2d5b-4d01-ba92-e6755efc202c/content/images/2026/10/CleanShot-2026-10-05-at-6.54.38-AM@2x.png" class="kg-image" alt="Say hello to &quot;Parakeet Turbo&quot;" loading="lazy" width="1912" height="868" srcset="https://storage.ghost.io/c/25/31/25312b2a-2d5b-4d01-ba92-e6755efc202c/content/images/size/w600/2026/10/CleanShot-2026-10-05-at-6.54.38-AM@2x.png 600w, https://storage.ghost.io/c/25/31/25312b2a-2d5b-4d01-ba92-e6755efc202c/content/images/size/w1000/2026/10/CleanShot-2026-10-05-at-6.54.38-AM@2x.png 1000w, https://storage.ghost.io/c/25/31/25312b2a-2d5b-4d01-ba92-e6755efc202c/content/images/size/w1600/2026/10/CleanShot-2026-10-05-at-6.54.38-AM@2x.png 1600w, https://storage.ghost.io/c/25/31/25312b2a-2d5b-4d01-ba92-e6755efc202c/content/images/2026/10/CleanShot-2026-10-05-at-6.54.38-AM@2x.png 1912w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://storage.ghost.io/c/25/31/25312b2a-2d5b-4d01-ba92-e6755efc202c/content/images/2026/10/m6-mini.jpg" class="kg-image" alt="Say hello to &quot;Parakeet Turbo&quot;" loading="lazy" width="1808" height="880" srcset="https://storage.ghost.io/c/25/31/25312b2a-2d5b-4d01-ba92-e6755efc202c/content/images/size/w600/2026/10/m6-mini.jpg 600w, https://storage.ghost.io/c/25/31/25312b2a-2d5b-4d01-ba92-e6755efc202c/content/images/size/w1000/2026/10/m6-mini.jpg 1000w, https://storage.ghost.io/c/25/31/25312b2a-2d5b-4d01-ba92-e6755efc202c/content/images/size/w1600/2026/10/m6-mini.jpg 1600w, https://storage.ghost.io/c/25/31/25312b2a-2d5b-4d01-ba92-e6755efc202c/content/images/2026/10/m6-mini.jpg 1808w" sizes="(min-width: 720px) 720px"></figure><p>These numbers are clearly outrageous, so how did we get here?</p><h2 id="transcription-is-single-threaded">Transcription is single-threaded</h2><figure class="kg-card kg-image-card"><img src="https://storage.ghost.io/c/25/31/25312b2a-2d5b-4d01-ba92-e6755efc202c/content/images/2026/10/CleanShot-2026-10-04-at-12.55.38-PM@2x.png" class="kg-image" alt="Say hello to &quot;Parakeet Turbo&quot;" loading="lazy" width="1908" height="512" srcset="https://storage.ghost.io/c/25/31/25312b2a-2d5b-4d01-ba92-e6755efc202c/content/images/size/w600/2026/10/CleanShot-2026-10-04-at-12.55.38-PM@2x.png 600w, https://storage.ghost.io/c/25/31/25312b2a-2d5b-4d01-ba92-e6755efc202c/content/images/size/w1000/2026/10/CleanShot-2026-10-04-at-12.55.38-PM@2x.png 1000w, https://storage.ghost.io/c/25/31/25312b2a-2d5b-4d01-ba92-e6755efc202c/content/images/size/w1600/2026/10/CleanShot-2026-10-04-at-12.55.38-PM@2x.png 1600w, https://storage.ghost.io/c/25/31/25312b2a-2d5b-4d01-ba92-e6755efc202c/content/images/2026/10/CleanShot-2026-10-04-at-12.55.38-PM@2x.png 1908w" sizes="(min-width: 720px) 720px"></figure><p>I was doing some investigation into how the three transcription models I use scale. It turns out Apple&apos;s model does almost all of its work on the CPU and will utilize one performance core. Parakeet behaves very similarly, also limiting itself to whatever your fastest core can do. Whisper is a bit different, doing almost all of its work on the neural engine. This is shown in the chart above, which shows power consumption over a run of transcriptions using each model.</p><p>In terms of opportunity to speed things up, I only had options on one of these. Apple doesn&apos;t allow developers to choose how many cores their transcription model runs on, so there&apos;s nothing I can do there. Whisper is powered mostly by the neural engine, which is already multi-threaded and is doing all it can. See below for what happens to transcription speed when on the Mac you force Parakeet and Whisper to run only on an efficiency core.</p><figure class="kg-card kg-image-card"><img src="https://storage.ghost.io/c/25/31/25312b2a-2d5b-4d01-ba92-e6755efc202c/content/images/2026/10/CleanShot-2026-10-04-at-12.50.10-PM@2x.png" class="kg-image" alt="Say hello to &quot;Parakeet Turbo&quot;" loading="lazy" width="1826" height="722" srcset="https://storage.ghost.io/c/25/31/25312b2a-2d5b-4d01-ba92-e6755efc202c/content/images/size/w600/2026/10/CleanShot-2026-10-04-at-12.50.10-PM@2x.png 600w, https://storage.ghost.io/c/25/31/25312b2a-2d5b-4d01-ba92-e6755efc202c/content/images/size/w1000/2026/10/CleanShot-2026-10-04-at-12.50.10-PM@2x.png 1000w, https://storage.ghost.io/c/25/31/25312b2a-2d5b-4d01-ba92-e6755efc202c/content/images/size/w1600/2026/10/CleanShot-2026-10-04-at-12.50.10-PM@2x.png 1600w, https://storage.ghost.io/c/25/31/25312b2a-2d5b-4d01-ba92-e6755efc202c/content/images/2026/10/CleanShot-2026-10-04-at-12.50.10-PM@2x.png 1826w" sizes="(min-width: 720px) 720px"></figure><p>Parakeet is mostly powered by the CPU, though, so if I could get that running on multiple cores, we might see better speeds. I dug deeper into how Parakeet works (via <a href="https://github.com/FluidInference/FluidAudio?ref=birchtree.me" rel="noopener noreferrer">FluidAudio</a>), and actually, it&apos;s already cutting up files into 15-second chunks and transcribing each chunk sequentially. By assigning each chunk to a different core, I&apos;m able to get through the file quicker.</p><p>However, as it goes with computers, once you unlock one bottleneck, the next one appears, and that&apos;s the neural engine. While the neural engine is not the main contributor in this process, it is part of the process, and I found in my testing that once you get past 4 cores giving data to the neural engine, it can&apos;t keep up and you stop getting meaningful benefits after that.</p><p>What&#x2019;s interesting is that I do my development on an M4 Pro Mac and I know the M6 has a new neural engine with twice as many cores, so I wondered if this would be improved on that device. I did the exact same test and surprisingly the answer is no. Here are the performance numbers when using 1-8 cores on each device.</p><figure class="kg-card kg-image-card"><img src="https://storage.ghost.io/c/25/31/25312b2a-2d5b-4d01-ba92-e6755efc202c/content/images/2026/10/CleanShot-2026-10-05-at-8.14.47-AM@2x.png" class="kg-image" alt="Say hello to &quot;Parakeet Turbo&quot;" loading="lazy" width="2000" height="1637" srcset="https://storage.ghost.io/c/25/31/25312b2a-2d5b-4d01-ba92-e6755efc202c/content/images/size/w600/2026/10/CleanShot-2026-10-05-at-8.14.47-AM@2x.png 600w, https://storage.ghost.io/c/25/31/25312b2a-2d5b-4d01-ba92-e6755efc202c/content/images/size/w1000/2026/10/CleanShot-2026-10-05-at-8.14.47-AM@2x.png 1000w, https://storage.ghost.io/c/25/31/25312b2a-2d5b-4d01-ba92-e6755efc202c/content/images/size/w1600/2026/10/CleanShot-2026-10-05-at-8.14.47-AM@2x.png 1600w, https://storage.ghost.io/c/25/31/25312b2a-2d5b-4d01-ba92-e6755efc202c/content/images/2026/10/CleanShot-2026-10-05-at-8.14.47-AM@2x.png 2048w" sizes="(min-width: 720px) 720px"></figure><p>Improvements decrease with each new core, and once you get to 4 cores, you&apos;re basically capped out, as the CPU simply builds up a queue elsewhere in the system, which as far as I can tell can not presently be increased. Although let&apos;s put this into perspective, on a base M6 processor, we&apos;re transcribing up to 12 minutes of audio per second&#x2026;that&apos;s pretty damn good.</p><h2 id="availability">Availability</h2><p>I&apos;ve done quite a bit of A/B testing and the results are exactly the same, so going forward, this is just how Parakeet will work in Quick Subtitles. There&apos;s no need to select a &quot;Turbo&quot; option, it&apos;ll just be the fastest damn version of Parakeet you can get anywhere.</p><p>It is available now in the <a href="https://github.com/mattbirchler/quicksubs?ref=birchtree.me" rel="noopener noreferrer">Quick Subs CLI</a> which you can install with&#x2026;</p><pre><code>brew install mattbirchler/tap/quicksubs
</code></pre><p>&#x2026;or by upgrading if you already have it.</p><p>Those using the app will get this in the next update, which is coming in the next few weeks.</p>]]></content:encoded>
    </item>
    <item>
      <title><![CDATA[The party of making things worse]]></title>
      <description><![CDATA[<p>Justine Calma: <a href="https://www.theverge.com/news/1001610/trump-weakens-fuel-efficiency-standards?ref=birchtree.me" rel="noopener noreferrer">Trump finalizes rule to make cars less fuel efficient</a></p><blockquote>The US Department of Transportation finalized its plans today to weaken fuel efficiency standards, calling it &#x201c;among the largest deregulatory actions under the second Trump Administration.&#x201d;</blockquote><p>I just think there&apos;s something wild about Republicans in</p>]]></description>
      <link>https://birchtree.me/blog/the-party-of-making-things-worse/</link>
      <guid isPermaLink="false">6ac251daf5520e00011bd6aa</guid>
      <category><![CDATA[Links]]></category>
      <dc:creator><![CDATA[Matt Birchler]]></dc:creator>
      <pubDate>Sun, 04 Oct 2026 17:00:00 GMT</pubDate>
      <content:encoded><![CDATA[<p>Justine Calma: <a href="https://www.theverge.com/news/1001610/trump-weakens-fuel-efficiency-standards?ref=birchtree.me" rel="noopener noreferrer">Trump finalizes rule to make cars less fuel efficient</a></p><blockquote>The US Department of Transportation finalized its plans today to weaken fuel efficiency standards, calling it &#x201c;among the largest deregulatory actions under the second Trump Administration.&#x201d;</blockquote><p>I just think there&apos;s something wild about Republicans in the US constantly advocating for things to get objectively worse. You want cheaper, cleaner energy? Nah, let&apos;s boost dirty, expensive energy production! You want better gas milage in your car? Nah, let&apos;s make sure car makers can make it worse. The vast majority of people want more restrictions on data centers? Nope, how about we make it easier for them to be built where people don&apos;t want them and also ensure they can be as dirty as possible.</p>]]></content:encoded>
    </item>
    <item>
      <title><![CDATA[Fetishizing something most people don't care about]]></title>
      <description><![CDATA[<p>Brent Simmons: <a href="https://inessential.com/2026/09/22/that-about-wraps-it-up-for.html?ref=birchtree.me" rel="noopener noreferrer">That About Wraps It Up for Stock Mac UI</a></p><blockquote>Users have shown &#x2014; again, I don&#x2019;t need to prove this &#x2014; that they don&#x2019;t think about a stock Mac app vs. custom. Do they dislike Things for not having a toolbar at the top</blockquote>]]></description>
      <link>https://birchtree.me/blog/fetishizing-something-most-people-dont-care-about/</link>
      <guid isPermaLink="false">6ac24ff1f5520e00011bd6a5</guid>
      <category><![CDATA[Links]]></category>
      <dc:creator><![CDATA[Matt Birchler]]></dc:creator>
      <pubDate>Sun, 04 Oct 2026 14:00:00 GMT</pubDate>
      <content:encoded><![CDATA[<p>Brent Simmons: <a href="https://inessential.com/2026/09/22/that-about-wraps-it-up-for.html?ref=birchtree.me" rel="noopener noreferrer">That About Wraps It Up for Stock Mac UI</a></p><blockquote>Users have shown &#x2014; again, I don&#x2019;t need to prove this &#x2014; that they don&#x2019;t think about a stock Mac app vs. custom. Do they dislike Things for not having a toolbar at the top of the window that they can customize in the usual way? No. (The only people who think that way are longtime Mac developers like me.)</blockquote>]]></content:encoded>
    </item>
    <item>
      <title><![CDATA[+ Gone too far]]></title>
      <description><![CDATA[There's a chance, slim as it might be, that things won't go the way the've gone the last 30 years with digitization the moving to rental models for everyhing.]]></description>
      <link>https://birchtree.me/blog/gone-too-far/</link>
      <guid isPermaLink="false">6ac24e59f5520e00011bd69c</guid>
      <category><![CDATA[Members]]></category>
      <dc:creator><![CDATA[Matt Birchler]]></dc:creator>
      <pubDate>Sun, 04 Oct 2026 13:30:52 GMT</pubDate>
      <content:encoded><![CDATA[]]></content:encoded>
    </item>
    <item>
      <title><![CDATA[Birchfeed can forward newsletters to your inbox]]></title>
      <description><![CDATA[<p><a href="https://birchfeed.app/?ref=birchtree.me" rel="noopener noreferrer">Birchfeed</a> allows you to set up an email address to receive newsletters which appear as feeds in the app. However, some people (including me) would actually like to see these in their email inbox as well. Now you can enable this in the <a href="https://birchfeed.app/settings/newsletters?ref=birchtree.me" rel="noopener noreferrer">Newsletters settings in the app</a>.</p><p>For spam</p>]]></description>
      <link>https://birchtree.me/blog/birchfeed-can-forward-newsletters-to-your-inbox/</link>
      <guid isPermaLink="false">6abd8a38897892000135d97f</guid>
      <dc:creator><![CDATA[Matt Birchler]]></dc:creator>
      <pubDate>Wed, 30 Sep 2026 22:16:24 GMT</pubDate>
      <media:content url="https://storage.ghost.io/c/25/31/25312b2a-2d5b-4d01-ba92-e6755efc202c/content/images/2026/09/CleanShot-2026-09-30-at-5.12.28-PM@2x.png" medium="image">
        <media:description type="plain">Birchfeed can forward newsletters to your inbox</media:description>
      </media:content>
      <content:encoded><![CDATA[<img src="https://storage.ghost.io/c/25/31/25312b2a-2d5b-4d01-ba92-e6755efc202c/content/images/2026/09/CleanShot-2026-09-30-at-5.12.28-PM@2x.png" alt="Birchfeed can forward newsletters to your inbox"><p><a href="https://birchfeed.app/?ref=birchtree.me" rel="noopener noreferrer">Birchfeed</a> allows you to set up an email address to receive newsletters which appear as feeds in the app. However, some people (including me) would actually like to see these in their email inbox as well. Now you can enable this in the <a href="https://birchfeed.app/settings/newsletters?ref=birchtree.me" rel="noopener noreferrer">Newsletters settings in the app</a>.</p><p>For spam reasons, you can&apos;t just forward these emails anywhere, so they go to your account&apos;s email by default, and you can change it to something else, but you need to verify ownership of that email as well.</p>]]></content:encoded>
    </item>
    <item>
      <title><![CDATA[Birchfeed can be your front page of the internet]]></title>
      <description><![CDATA[<p><a href="https://birchfeed.app/?ref=birchtree.me" rel="noopener noreferrer">Birchfeed</a> is fundamentally a backend service that you will mostly use through a third-party client, such as Unread, Reader Classic, or NetNewswire. I always want that primary use case to be really solid, and I think it is right now.</p><p>However, one of the reasons I wanted to build</p>]]></description>
      <link>https://birchtree.me/blog/birchfeed-can-be-your-front-page-of-the-internet/</link>
      <guid isPermaLink="false">6abd26968434210001128920</guid>
      <dc:creator><![CDATA[Matt Birchler]]></dc:creator>
      <pubDate>Wed, 30 Sep 2026 15:11:18 GMT</pubDate>
      <media:content url="https://storage.ghost.io/c/25/31/25312b2a-2d5b-4d01-ba92-e6755efc202c/content/images/2026/09/CleanShot-2026-09-30-at-8.58.30-AM@2x.png" medium="image">
        <media:description type="plain">Birchfeed can be your front page of the internet</media:description>
      </media:content>
      <content:encoded><![CDATA[<img src="https://storage.ghost.io/c/25/31/25312b2a-2d5b-4d01-ba92-e6755efc202c/content/images/2026/09/CleanShot-2026-09-30-at-8.58.30-AM@2x.png" alt="Birchfeed can be your front page of the internet"><p><a href="https://birchfeed.app/?ref=birchtree.me" rel="noopener noreferrer">Birchfeed</a> is fundamentally a backend service that you will mostly use through a third-party client, such as Unread, Reader Classic, or NetNewswire. I always want that primary use case to be really solid, and I think it is right now.</p><p>However, one of the reasons I wanted to build an RSS sync service was that I thought there was more I could do to help people have a better experience. Since launch, the most popular feature outside of the core sync functionality has been the daily briefing, which most users have enabled. This sends you a daily email with the most notable stories across your feeds, as well as a few highlights I think are worth checking out. Maybe you don&apos;t have time to go through the hundreds of posts that have come in today, but you can see the big headlines in 15 seconds.</p><h2 id="catch-up">Catch up</h2><p>Today, I&apos;ve launched a new feature aimed at getting you caught up, which is called &quot;catch up&quot;. This will appear when you have over 100 unread items, and it will try to find stories and individual articles that stand out from everything else and presents it in a landing page format. If Reddit&apos;s old slogan was &quot;the front page of the internet&quot;, Birchfeed&apos;s can be &quot;<strong>your</strong> front page of the internet&quot;.</p><h2 id="how-it-technically-works">How it technically works</h2><p>Similar to yesterday&apos;s update to Best-o-Masto, this uses Jev to rank the interest of hundreds of recent articles. Then GPT-6 Luna groups them and writes quick summaries.</p><h2 id="availability">Availability</h2><p>The catch-up feature is available for all users on a free trial or paid subscription. For now, I&apos;m limiting this feature to two runs every 24 hours while I monitor costs, and will loosen it up if it makes sense to.</p>]]></content:encoded>
    </item>
    <item>
      <title><![CDATA[App review needs a reboot]]></title>
      <description><![CDATA[<p>Lex Friedman: <a href="https://lexontech.org/the-app-store-review-process-needs-fixing?ref=birchtree.me" rel="noopener noreferrer">The App Store review process needs fixing</a></p><blockquote>Every single app and app update released in the App Store goes through this review process, and the review process is largely a black box. Developers submit, and then wait. They are given no specific timeline or indication of how long</blockquote>]]></description>
      <link>https://birchtree.me/blog/app-review-needs-a-reboot/</link>
      <guid isPermaLink="false">6abc1d5cb92bbc00015e781d</guid>
      <category><![CDATA[Links]]></category>
      <dc:creator><![CDATA[Matt Birchler]]></dc:creator>
      <pubDate>Wed, 30 Sep 2026 00:00:00 GMT</pubDate>
      <content:encoded><![CDATA[<p>Lex Friedman: <a href="https://lexontech.org/the-app-store-review-process-needs-fixing?ref=birchtree.me" rel="noopener noreferrer">The App Store review process needs fixing</a></p><blockquote>Every single app and app update released in the App Store goes through this review process, and the review process is largely a black box. Developers submit, and then wait. They are given no specific timeline or indication of how long the review will take, and it&#x2019;s inconsistent. Some reviews happen in hours. Some take days. When you&#x2019;re rejected, you can reply to Apple, make fixes and resubmit, or appeal &#x2014; and whichever path you pick, you&#x2019;re waiting again, with no specific timelines provided from Apple.</blockquote><p>The unpredictability of app review is definitely one of the core annoyances with it. I never know how long a review is going to take. Sometimes it&apos;s a couple hours, sometimes it&apos;s a couple weeks. Sometimes an app will be stuck in review for several days, and I wonder if something&apos;s gone wrong or if it&apos;s just taking a long time or if the reviewer has simply forgotten to drag their ticket to done yet. It&apos;s impossible to tell. The one thing you&apos;re definitely feeling is that no matter how long it&apos;s stuck in there, you don&apos;t necessarily want to cancel it and start over because you might have to go through this whole wait again.</p>]]></content:encoded>
    </item>
    <item>
      <title><![CDATA[Becoming worthless (in a good way)]]></title>
      <description><![CDATA[<p>Cory Dransfeldt: <a href="https://www.coryd.dev/posts/2026/become-worthless-to-tech-companies?ref=birchtree.me" rel="noopener noreferrer">Become worthless (to tech companies)</a></p><blockquote>I&apos;m not arguing for boycotts, I know that people are bound to different platforms for different, compelling reasons. What I am arguing for is that, given the opportunity, you try and reduce the value they can extract from you. That&apos;</blockquote>]]></description>
      <link>https://birchtree.me/blog/becoming-worthless-in-a-good-way/</link>
      <guid isPermaLink="false">6abc1a79b92bbc00015e7818</guid>
      <category><![CDATA[Links]]></category>
      <dc:creator><![CDATA[Matt Birchler]]></dc:creator>
      <pubDate>Tue, 29 Sep 2026 22:00:00 GMT</pubDate>
      <content:encoded><![CDATA[<p>Cory Dransfeldt: <a href="https://www.coryd.dev/posts/2026/become-worthless-to-tech-companies?ref=birchtree.me" rel="noopener noreferrer">Become worthless (to tech companies)</a></p><blockquote>I&apos;m not arguing for boycotts, I know that people are bound to different platforms for different, compelling reasons. What I am arguing for is that, given the opportunity, you try and reduce the value they can extract from you. That&apos;s very often your data, but it can also be a direct financial relationship.</blockquote><p>Be the guy who only buys the loss-leaders.</p>]]></content:encoded>
    </item>
    <item>
      <title><![CDATA[The Quick Reads CLI]]></title>
      <description><![CDATA[<p>As of today, you nerds who like to read later can do so from your terminal with the <a href="https://github.com/mattbirchler/quickreads-cli?ref=birchtree.me" rel="noopener noreferrer">Quick Reads CLI</a>. Install it with:</p><pre><code>brew install mattbirchler/tap/quickreads
</code></pre><p>And from then on, it will update with <code>brew upgrade</code> like everything else.</p><h2 id="okay-what-does-it-do">Okay, what does it do?</h2><p>It does a</p>]]></description>
      <link>https://birchtree.me/blog/the-quick-reads-cli/</link>
      <guid isPermaLink="false">6abc2162b92bbc00015e7822</guid>
      <dc:creator><![CDATA[Matt Birchler]]></dc:creator>
      <pubDate>Tue, 29 Sep 2026 20:36:50 GMT</pubDate>
      <media:content url="https://storage.ghost.io/c/25/31/25312b2a-2d5b-4d01-ba92-e6755efc202c/content/images/2026/09/CleanShot-2026-09-29-at-11.34.11-AM@2x.png" medium="image">
        <media:description type="plain">The Quick Reads CLI</media:description>
      </media:content>
      <content:encoded><![CDATA[<img src="https://storage.ghost.io/c/25/31/25312b2a-2d5b-4d01-ba92-e6755efc202c/content/images/2026/09/CleanShot-2026-09-29-at-11.34.11-AM@2x.png" alt="The Quick Reads CLI"><p>As of today, you nerds who like to read later can do so from your terminal with the <a href="https://github.com/mattbirchler/quickreads-cli?ref=birchtree.me" rel="noopener noreferrer">Quick Reads CLI</a>. Install it with:</p><pre><code>brew install mattbirchler/tap/quickreads
</code></pre><p>And from then on, it will update with <code>brew upgrade</code> like everything else.</p><h2 id="okay-what-does-it-do">Okay, what does it do?</h2><p>It does a lot, actually. When you run it, it opens straight to your reading queue, just like the app and the web do. You can read whatever you want. You can add highlights. You&apos;ll see highlights already added. You can look at your to-do list and archive. You can search across your entire account. Most of the things you can do on the app/web are here.</p><figure class="kg-card kg-image-card"><img src="https://storage.ghost.io/c/25/31/25312b2a-2d5b-4d01-ba92-e6755efc202c/content/images/2026/09/CleanShot-2026-09-29-at-12.15.27-PM@2x.png" class="kg-image" alt="The Quick Reads CLI" loading="lazy"></figure><h2 id="but-why">But why?</h2><p>I don&apos;t pretend to think that this will be the most common way people interact with <a href="https://quickreads.app/?ref=birchtree.me" rel="noopener noreferrer">Quick Reads</a>. Clearly not. However, there are times where it is useful to have a command line interface. Quick Reads aims to be the most flexible and developer-friendly read-later service out there, and that means meeting people where they are, even if they&apos;re in a niche. With this update, you are able to interact with the service through the iOS app, on the web via Apple Shortcuts, directly with a fully functional API, an MCP server, or now, a CLI. That&apos;s something simply nobody else in this space can match.</p>]]></content:encoded>
    </item>
    <item>
      <title><![CDATA[Hidden gems comes to Best-o-Masto on the web]]></title>
      <description><![CDATA[<p><a href="https://bestomasto.com/?ref=birchtree.me" rel="noopener noreferrer">Best-o-Masto</a> is my website for finding the best stuff from your Mastodon and Bluesky feeds quickly. It&apos;s not an algorithmic feed like you&apos;d see on something like X or Threads. It&apos;s a very simple thing that finds the post getting the most</p>]]></description>
      <link>https://birchtree.me/blog/hidden-gems-comes-to-best-o-masto-on-the-web/</link>
      <guid isPermaLink="false">6abc16c4b92bbc00015e7814</guid>
      <dc:creator><![CDATA[Matt Birchler]]></dc:creator>
      <pubDate>Tue, 29 Sep 2026 19:51:32 GMT</pubDate>
      <media:content url="https://storage.ghost.io/c/25/31/25312b2a-2d5b-4d01-ba92-e6755efc202c/content/images/2026/09/CleanShot-2026-09-29-at-1.12.01-PM@2x.png" medium="image">
        <media:description type="plain">Hidden gems comes to Best-o-Masto on the web</media:description>
      </media:content>
      <content:encoded><![CDATA[<img src="https://storage.ghost.io/c/25/31/25312b2a-2d5b-4d01-ba92-e6755efc202c/content/images/2026/09/CleanShot-2026-09-29-at-1.12.01-PM@2x.png" alt="Hidden gems comes to Best-o-Masto on the web"><p><a href="https://bestomasto.com/?ref=birchtree.me" rel="noopener noreferrer">Best-o-Masto</a> is my website for finding the best stuff from your Mastodon and Bluesky feeds quickly. It&apos;s not an algorithmic feed like you&apos;d see on something like X or Threads. It&apos;s a very simple thing that finds the post getting the most engagement in your feed and serves those first.</p><p>The iOS app has had a feature since launch called &quot;hidden gems&quot;, and the idea of Hidden Gems is that not all of the posts you might want to see are going to get the most boosts and favorites. Hidden Gems attempts to surface these interesting posts that maybe didn&apos;t get as many engagements, but you still probably want to see. That feature has been powered by Gemini since launch, and it works fine, but it&apos;s slow and costs real money to run. As such, I&apos;ve always made it available exclusively as a bring your own API key situation rather than something just built into the app.</p><p>But recently, a new model came out called <a href="https://typesafe.ai/blog/introducing-system-one-models-and-jev?ref=birchtree.me" rel="noopener noreferrer">Jev</a>, which is not a language model &#x2013; it&apos;s effectively a decision engine which can (relatively) intelligently classify things for you. It&apos;s also incredibly fast and incredibly cheap. The metrics vary by what exactly you&apos;re doing, but we&apos;re talking in the order of being 200x faster and 400x cheaper in some cases.</p><p>Of note, this feature is completely opt-in for users, so if you have no interest in this sort of feature, just don&apos;t use it.</p><p>The feature is in beta as I monitor costs/reliability.</p><h2 id="how-it-actually-works">How it actually works</h2><p>This might be interesting because it is different from other LLMs. In a way, integrating to a large language model is the simplest API you&apos;ve ever used because you just kind of toss in whatever text you want and it figures it out, giving you text back.</p><p>We&apos;re about to get into the weeds, but I think showing actual code is going to be helpful here to understand how this works. Using some completely made up posts, here&apos;s an example of what the request looks like when I look for hidden gems.</p><pre><code class="language-json">{
  &quot;model&quot;: &quot;typesafe/jev-1.13&quot;,
  &quot;state&quot;: &quot;POST 1\nFinally finished the quilt I started in 2019. Four moves and one pandemic later.\n[2 images, alt: A blue and white patchwork quilt draped over a chair]\n\nPOST 2\ngood morning everyone&quot;,
  &quot;questions&quot;: {
    &quot;p1&quot;: {
      &quot;type&quot;: &quot;score&quot;,
      &quot;instructions&quot;: &quot;Consider POST 1 only. How interesting would this social media post be to a reader who follows the author, ignoring how popular it is?&quot;,
      &quot;criteria&quot;: [
        &quot;Mundane, low-effort, a bare link, a greeting, or a reply that needs missing context&quot;,
        &quot;Mildly interesting but forgettable&quot;,
        &quot;Worth reading: a good joke, real insight, personal story, life event, or creative work&quot;,
        &quot;A standout the reader would be sorry to have missed&quot;
      ]
    },
    &quot;p2&quot;: {
      &quot;type&quot;: &quot;score&quot;,
      &quot;instructions&quot;: &quot;Consider POST 2 only. How interesting would this social media post be to a reader who follows the author, ignoring how popular it is?&quot;,
      &quot;criteria&quot;: [
        &quot;Mundane, low-effort, a bare link, a greeting, or a reply that needs missing context&quot;,
        &quot;Mildly interesting but forgettable&quot;,
        &quot;Worth reading: a good joke, real insight, personal story, life event, or creative work&quot;,
        &quot;A standout the reader would be sorry to have missed&quot;
      ]
    }
  },
  &quot;provider&quot;: {
    &quot;data_collection&quot;: &quot;deny&quot;,
    &quot;zdr&quot;: true
  }
}
</code></pre><p>This sample only sends two posts, but in reality I pass in the text of several hundred posts in the <code>state</code> variable, then I pass questions where it looks at specific posts in the <code>state</code>, and it determines a score for each one. Each post can get a score from 0-3, with 3 being the most likely hidden gem. Because Jev is not a language model, it doesn&apos;t generate text in its response. All it does is take a look at the <code>state</code>, the <code>instructions</code>, and decides which <code>criteria</code> it meets. It does that across every single question provided.</p><p>Here&apos;s an example response:</p><pre><code class="language-json">{
  &quot;model&quot;: &quot;typesafe/jev-1.13-20260917&quot;,
  &quot;answers&quot;: {
    &quot;p1&quot;: {
      &quot;type&quot;: &quot;score&quot;,
      &quot;score&quot;: 2,
      &quot;legend&quot;: {
        &quot;0&quot;: &quot;Mundane, low-effort, a bare link, a greeting, or a reply that needs missing context&quot;,
        &quot;1&quot;: &quot;Mildly interesting but forgettable&quot;,
        &quot;2&quot;: &quot;Worth reading: a good joke, real insight, personal story, life event, or creative work&quot;,
        &quot;3&quot;: &quot;A standout the reader would be sorry to have missed&quot;
      },
      &quot;probabilities&quot;: { &quot;0&quot;: 0, &quot;1&quot;: 0.01, &quot;2&quot;: 0.98, &quot;3&quot;: 0.01 },
      &quot;confidence&quot;: 0.98
    },
    &quot;p2&quot;: {
      &quot;type&quot;: &quot;score&quot;,
      &quot;score&quot;: 0,
      &quot;legend&quot;: { &quot;...same four lines...&quot; },
      &quot;probabilities&quot;: { &quot;0&quot;: 1, &quot;1&quot;: 0, &quot;2&quot;: 0, &quot;3&quot;: 0 },
      &quot;confidence&quot;: 1
    }
  },
  &quot;usage&quot;: {
    &quot;input_tokens&quot;: 555,
    &quot;output_tokens&quot;: 32,
    &quot;cost&quot;: 0.00002331
  },
  &quot;id&quot;: &quot;gen-dec-1790707300-J2N6sJCCxL9IWgYlVnr5&quot;,
  &quot;provider&quot;: &quot;TypeSafe&quot;
}
</code></pre><p>Here in the response, we can see that each question was scored. The first was scored a two, the second scored zero.</p><p>You can also see that there are probabilities assigned to each score, giving you an idea for what the odds are it falls into each category. There&apos;s also a confidence score of how confident it is in its assessment. Both of these were pretty straightforward, but as you get more complex content, the answers may be a bit fuzzier.</p><p>As a developer, the next step is pretty darn easy. Now I have a list of posts with scores attached to them, and I can just sort from biggest to smallest, displaying the 3s, then the 2s, and the 1s. The idea of this product is not to show you every single post in your feed, so it cuts off after the first 15.</p><h2 id="future-plans">Future Plans</h2><p>I&apos;ve always really enjoyed the feature in concept on iOS, although I&apos;ve always felt a little bit disappointed by it in execution, largely because I require users to bring their own API key since I&apos;m not able to absorb the costs, and it&apos;s just fundamentally slow because you&apos;re passing a lot of information into a language model and waiting for it to generate a full response with the post IDs it thinks are interesting. This has led to me personally not using this feature much.</p><p>This new implementation is really interesting because the results seem quite good in my testing so far, the performance is radically better, and the cost is seemingly negligible. I&apos;ll be closely monitoring my spending to make sure it doesn&apos;t get out of control, but it looks like this is something I can just offer for free on the web. If it stays okay, it&apos;ll be something I bring to the iOS app as well.</p>]]></content:encoded>
    </item>
  </channel>
</rss>
