<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Shouvik Palit</title>
    <description>The latest articles on DEV Community by Shouvik Palit (@shouvik12).</description>
    <link>https://dev.to/shouvik12</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3890793%2Fc3274ea7-2b55-4b67-9d70-2f3c08b63374.png</url>
      <title>DEV Community: Shouvik Palit</title>
      <link>https://dev.to/shouvik12</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shouvik12"/>
    <language>en</language>
    <item>
      <title>First HackerTube, then HackerBooks, now HackerTools</title>
      <dc:creator>Shouvik Palit</dc:creator>
      <pubDate>Sun, 01 Nov 2026 18:28:38 +0000</pubDate>
      <link>https://dev.to/shouvik12/first-hackertube-then-hackerbooks-now-hackertools-1c9m</link>
      <guid>https://dev.to/shouvik12/first-hackertube-then-hackerbooks-now-hackertools-1c9m</guid>
      <description>&lt;p&gt;Hacker News has a hidden superpower, and it isn't the front page. It's the comments.&lt;/p&gt;

&lt;p&gt;That's where people quietly say &lt;em&gt;"you have to watch this"&lt;/em&gt;, &lt;em&gt;"read this book"&lt;/em&gt;, &lt;em&gt;"just use this tool"&lt;/em&gt;. Then the thread sinks and the advice gets buried.&lt;/p&gt;

&lt;p&gt;This week, three projects dug it back up.&lt;/p&gt;

&lt;h2&gt;
  
  
  📺 First: HackerTube
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://x.com/karpathy" rel="noopener noreferrer"&gt;@karpathy&lt;/a&gt; built HackerTube: the videos HN commenters recommend to each other.&lt;/p&gt;

&lt;p&gt;I liked it so much I turned the idea into a channel on &lt;a href="https://shouvik12.github.io/devtv" rel="noopener noreferrer"&gt;DEV·TV&lt;/a&gt;, my retro TV for developers. Channel &lt;strong&gt;15 HN PICKS&lt;/strong&gt; now plays HN-recommended videos, each showing how many users recommended it.&lt;/p&gt;

&lt;h2&gt;
  
  
  📚 Then: HackerBooks
&lt;/h2&gt;

&lt;p&gt;A day later, &lt;a href="https://hackerbooks.org" rel="noopener noreferrer"&gt;HackerBooks&lt;/a&gt; hit the HN front page: ~16.5k books that HN commenters brought up, from 2007 till now.&lt;/p&gt;

&lt;p&gt;Same idea, new shelf.&lt;/p&gt;

&lt;h2&gt;
  
  
  🛠️ Now: HackerTools
&lt;/h2&gt;

&lt;p&gt;Videos and books were covered. But the question developers ask HN most is &lt;em&gt;"what tool should I use?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;&lt;a href="https://shouvik12.github.io/hackertools" rel="noopener noreferrer"&gt;HackerTools&lt;/a&gt;&lt;/strong&gt;, soon to be part of DEV·TV.&lt;/p&gt;

&lt;p&gt;It ranks ~116 developer tools by how many &lt;strong&gt;different HN commenters&lt;/strong&gt; recommended them: editors, terminals, git clients, databases, infra, self-hosted apps and productivity tools. Every tool links back to the real comments, so you can read &lt;em&gt;why&lt;/em&gt; people love it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem with counting mentions
&lt;/h2&gt;

&lt;p&gt;The obvious approach is to count how often a tool's name appears. But mentions are noisy:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"I switched to Neovim and never looked back" ✅&lt;/li&gt;
&lt;li&gt;"Neovim crashed on me again" ❌&lt;/li&gt;
&lt;li&gt;"Alfred Bester was his favourite role" ❌ (a real false match from my first run)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So HackerTools only counts a comment when a &lt;strong&gt;recommendation phrase sits close to the tool name&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;STRONG&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;compile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="sa"&gt;r&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;\b(i use|been using|switched to|highly recommend|&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="sa"&gt;r&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;daily driver|my go-?to|can&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;t live without|swear by)\b&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;I&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;WINDOW&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;120&lt;/span&gt;  &lt;span class="c1"&gt;# characters either side of the tool name
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It also:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;counts people, not comments&lt;/strong&gt;, so one person praising tmux 20 times is one vote&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;skips job posts&lt;/strong&gt;, since "Who is hiring" threads list stacks, not recommendations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;matches ambiguous names strictly&lt;/strong&gt;: Zed, Warp and Bun are case-sensitive, and Alfred only counts as "Alfred app" or "Alfred workflow"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;picks the best quote&lt;/strong&gt; for each tool, scoring first-person comments with a close cue higher&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's still a signal, not a verdict. But it reads like recommendations, not noise.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it's built: zero servers, zero cost
&lt;/h2&gt;

</description>
      <category>showdev</category>
      <category>opensource</category>
      <category>python</category>
      <category>webdev</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Shouvik Palit</dc:creator>
      <pubDate>Sun, 01 Nov 2026 14:39:28 +0000</pubDate>
      <link>https://dev.to/shouvik12/-380f</link>
      <guid>https://dev.to/shouvik12/-380f</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/shouvik12/i-turned-all-14-of-my-github-repos-into-tv-channels-naa" class="crayons-story__hidden-navigation-link"&gt;I turned all 14 of my GitHub repos into TV channels&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/shouvik12" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3890793%2Fc3274ea7-2b55-4b67-9d70-2f3c08b63374.png" alt="shouvik12 profile" class="crayons-avatar__image" width="96" height="96"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/shouvik12" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Shouvik Palit
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Shouvik Palit
                
                
              
              &lt;div id="story-author-preview-content-4955659" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/shouvik12" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3890793%2Fc3274ea7-2b55-4b67-9d70-2f3c08b63374.png" class="crayons-avatar__image" alt="" width="96" height="96"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Shouvik Palit&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/shouvik12/i-turned-all-14-of-my-github-repos-into-tv-channels-naa" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Nov 1&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/shouvik12/i-turned-all-14-of-my-github-repos-into-tv-channels-naa" id="article-link-4955659"&gt;
          I turned all 14 of my GitHub repos into TV channels
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag crayons-tag--filled  " href="/t/showdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;showdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/github"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;github&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/opensource"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;opensource&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/shouvik12/i-turned-all-14-of-my-github-repos-into-tv-channels-naa" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt;&amp;nbsp;reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/shouvik12/i-turned-all-14-of-my-github-repos-into-tv-channels-naa#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            2 min read
          &lt;/small&gt;
          
          &lt;div class="only-sidebar-menu-item trusted-visible-block print-hidden align-center"&gt;
                
                    
                
          &lt;/div&gt;

        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
    </item>
    <item>
      <title>I turned all 14 of my GitHub repos into TV channels</title>
      <dc:creator>Shouvik Palit</dc:creator>
      <pubDate>Sun, 01 Nov 2026 03:22:02 +0000</pubDate>
      <link>https://dev.to/shouvik12/i-turned-all-14-of-my-github-repos-into-tv-channels-naa</link>
      <guid>https://dev.to/shouvik12/i-turned-all-14-of-my-github-repos-into-tv-channels-naa</guid>
      <description>&lt;p&gt;I have 14 public repos. On my GitHub profile they were just names, and nobody clicks a name they don't understand.&lt;/p&gt;

&lt;p&gt;So I pointed my own Claude skill, &lt;a href="https://github.com/shouvik12/living-canvas" rel="noopener noreferrer"&gt;living-canvas&lt;/a&gt;, at my profile and asked it to show what every repo actually does.&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/fPGSpbHMw4I" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Every repo became a TV channel with the same three-panel story: &lt;strong&gt;the problem → what the tool does → the result.&lt;/strong&gt; Every example comes from the repo's own README.&lt;/p&gt;

&lt;h2&gt;
  
  
  The channels
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Channel&lt;/th&gt;
&lt;th&gt;Repo&lt;/th&gt;
&lt;th&gt;What goes in → what comes out&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;📺 See it&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/shouvik12/devtv" rel="noopener noreferrer"&gt;devtv&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;13 dev feeds → one TV page, no backend&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/shouvik12/living-canvas" rel="noopener noreferrer"&gt;living-canvas&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;any repo → animated SVG banner, ~7 KB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/shouvik12/gitcomics" rel="noopener noreferrer"&gt;gitcomics&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;any repo → 8-panel comic from real code&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;📖 Read less&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/shouvik12/leantext" rel="noopener noreferrer"&gt;leantext&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;92,348 tokens → &lt;strong&gt;755&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/shouvik12/tokslayer" rel="noopener noreferrer"&gt;tokslayer&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;noisy README → just the product&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/shouvik12/delta" rel="noopener noreferrer"&gt;delta&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;41-token prompt → &lt;strong&gt;12&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/shouvik12/context-squirrel" rel="noopener noreferrer"&gt;context-squirrel&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;3,150-token history → &lt;strong&gt;147&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;💰 Spend less&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/shouvik12/token-sensei" rel="noopener noreferrer"&gt;token-sensei&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;task + budget → checkpoint: done / left&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/shouvik12/sir-shortoken" rel="noopener noreferrer"&gt;sir-shortoken&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;1,500 words → the right 300&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/shouvik12/tactical" rel="noopener noreferrer"&gt;tactical&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;rambling incident reply → SITREP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;✅ Trust it&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/shouvik12/implementation-scout" rel="noopener noreferrer"&gt;implementation-scout&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;question → VERIFIED / NOT VERIFIED sources&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/shouvik12/ship-happens" rel="noopener noreferrer"&gt;ship-happens&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;YAML → tested on a real cluster first&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/shouvik12/trooper" rel="noopener noreferrer"&gt;trooper&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Claude fails → run continues on Ollama&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  How it was made
&lt;/h2&gt;

&lt;p&gt;living-canvas read every README, picked one story and one real number per repo, and drew it as a canvas page. I recorded it frame by frame in headless Chromium and encoded it with ffmpeg.&lt;/p&gt;

&lt;p&gt;Its one rule: &lt;strong&gt;if someone saw a single screenshot, could they tell what the project does?&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it on yours
&lt;/h2&gt;

&lt;p&gt;living-canvas is open source: &lt;a href="https://github.com/shouvik12/living-canvas" rel="noopener noreferrer"&gt;github.com/shouvik12/living-canvas&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Drop your GitHub handle in the comments, and I'll run it on a few profiles and post the results.&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>ai</category>
      <category>github</category>
      <category>opensource</category>
    </item>
    <item>
      <title>I added a LOCAL MODELS channel to my retro dev TV, and Ollama has no API for it</title>
      <dc:creator>Shouvik Palit</dc:creator>
      <pubDate>Sat, 31 Oct 2026 15:36:25 +0000</pubDate>
      <link>https://dev.to/shouvik12/i-added-a-local-models-channel-to-my-retro-dev-tv-and-ollama-has-no-api-for-it-d58</link>
      <guid>https://dev.to/shouvik12/i-added-a-local-models-channel-to-my-retro-dev-tv-and-ollama-has-no-api-for-it-d58</guid>
      <description>&lt;p&gt;DEV·TV is a retro TV for developers: one &lt;code&gt;index.html&lt;/code&gt; on GitHub Pages, no backend, no accounts. You flip channels instead of tabs. GitHub, Hacker News, AI papers, CVEs, and since this week, &lt;strong&gt;LOCAL MODELS&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;👉 Live: &lt;a href="https://shouvik12.github.io/devtv" rel="noopener noreferrer"&gt;shouvik12.github.io/devtv&lt;/a&gt; (channel 14)&lt;/p&gt;

&lt;h2&gt;
  
  
  Why a local models channel?
&lt;/h2&gt;

&lt;p&gt;DEV·TV already had a channel for the newest models on OpenRouter. It pulls OpenRouter's public catalog live, newest first, and shows each model's price and context window. I renamed it &lt;strong&gt;CLOUD MODELS&lt;/strong&gt; this week, because it now has a twin.&lt;/p&gt;

&lt;p&gt;The question I kept asking myself was the other half: &lt;em&gt;what's new that I can run on my own machine?&lt;/em&gt; That's what LOCAL MODELS answers. Flip between channel 11 and 14 and you see what's new to rent next to what's new to run yourself.&lt;/p&gt;

&lt;h2&gt;
  
  
  What each slide shows
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Release date&lt;/strong&gt;, like "updated Oct 29, 2026"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sizes&lt;/strong&gt;: 1.7b, 2b, 9b, 27b…&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What it can do&lt;/strong&gt;: tools, vision, thinking, audio&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Download count&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A short description&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Click through and the reader gives you the &lt;code&gt;ollama run&lt;/code&gt; command, already set to the smallest size so it fits most machines.&lt;/p&gt;

&lt;p&gt;Cloud-only models are filtered out. If it's on this channel, you can run it locally.&lt;/p&gt;

&lt;h2&gt;
  
  
  The catch: Ollama has no public feed for its library
&lt;/h2&gt;

&lt;p&gt;OpenRouter makes this easy: one GET request, JSON back, done. Ollama's library doesn't have an equivalent public JSON feed. The newest-first list lives on a web page, and a static site on GitHub Pages can't read another site's HTML from the browser.&lt;/p&gt;

&lt;p&gt;So I kept the zero-backend rule and moved the work to a schedule:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A small Python script (standard library only) reads Ollama's newest-models page.&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;GitHub Action&lt;/strong&gt; runs it once a day, for free.&lt;/li&gt;
&lt;li&gt;It saves &lt;code&gt;local-models.json&lt;/code&gt; into the repo.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;index.html&lt;/code&gt; reads that file, the same way the Spotlight channel reads &lt;code&gt;spotlight.json&lt;/code&gt;.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GitHub Action (daily) → local_models.py → local-models.json → DEV·TV
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No server, no database, no API keys. GitHub does the scraping, GitHub Pages serves the result.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three bugs worth sharing
&lt;/h2&gt;

&lt;p&gt;Scraping a page you don't control means your first guess about its structure is probably wrong. Mine was, three times:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. The page didn't look like I expected.&lt;/strong&gt; My first parser relied on test attributes in the markup that weren't there anymore. The fix was to stop depending on markup details at all: find every &lt;code&gt;/library/&amp;lt;name&amp;gt;&lt;/code&gt; link and read the card's text from there.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Download counts showed up as model sizes.&lt;/strong&gt; A slide offered me &lt;code&gt;ollama run d1-omni:17.9K&lt;/code&gt;. Nobody wants a 17.9-thousand-parameter-size model. The fix turned out to be case: sizes are lowercase (&lt;code&gt;1.7b&lt;/code&gt;, &lt;code&gt;600m&lt;/code&gt;), download counts are uppercase (&lt;code&gt;17.9K&lt;/code&gt;, &lt;code&gt;1.2M&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Release dates were missing.&lt;/strong&gt; Each card links to its model twice, and the date sat after the second link. My parser stopped at the first one. Once it read to the next &lt;em&gt;different&lt;/em&gt; model, the dates appeared. They live in a tooltip: &lt;code&gt;title="Updated October 29, 2026"&lt;/code&gt;. That same trick gave me exact download counts for brand-new models, too.&lt;/p&gt;

&lt;p&gt;The script also fails loudly if it ever finds zero models. A layout change on Ollama's side keeps yesterday's list on air instead of showing a blank channel.&lt;/p&gt;

&lt;h2&gt;
  
  
  On air right now
&lt;/h2&gt;

&lt;p&gt;The channel is mostly the new &lt;strong&gt;LFM3&lt;/strong&gt; family (lfm3, lfm3-audio, lfm3-omni, lfm3-vl), &lt;strong&gt;d3&lt;/strong&gt; in four sizes, and &lt;strong&gt;phonon&lt;/strong&gt;, a text-to-speech model for adding a voice to local apps.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;📺 &lt;a href="https://shouvik12.github.io/devtv" rel="noopener noreferrer"&gt;shouvik12.github.io/devtv&lt;/a&gt;: LOCAL MODELS is channel 14, CLOUD MODELS 11, MODEL FACE-OFF 13. Works on your phone too.&lt;/p&gt;

&lt;p&gt;⭐ Code: &lt;a href="https://github.com/shouvik12/devtv" rel="noopener noreferrer"&gt;github.com/shouvik12/devtv&lt;/a&gt;. A star helps other devs find it.&lt;/p&gt;

&lt;p&gt;Next on my list is a &lt;strong&gt;"will it run on my machine?"&lt;/strong&gt; badge for each local model. Would you use that? Tell me in the comments.&lt;/p&gt;

</description>
      <category>ollama</category>
      <category>localllm</category>
      <category>opensource</category>
      <category>javascript</category>
    </item>
    <item>
      <title>NVIDIA Just Dropped an Open-Weight Speech Model. I Caught It on My Retro TV 1 Hour Later.</title>
      <dc:creator>Shouvik Palit</dc:creator>
      <pubDate>Thu, 29 Oct 2026 03:17:13 +0000</pubDate>
      <link>https://dev.to/shouvik12/nvidia-just-dropped-an-open-weight-speech-model-i-caught-it-on-my-retro-tv-1-hour-later-od1</link>
      <guid>https://dev.to/shouvik12/nvidia-just-dropped-an-open-weight-speech-model-i-caught-it-on-my-retro-tv-1-hour-later-od1</guid>
      <description>&lt;p&gt;I wasn't looking for it. I was just having my morning coffee with DEV·TV running on the side.&lt;/p&gt;

&lt;p&gt;Then channel 11 flipped to a new bulletin:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NVIDIA: Nemotron 3.5 Transcribe. Added 1 hour ago.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;![DEV·TV showing Nemotron 3.5 Transcribe on the NEW MODELS channel]&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjnlyh3bpndj65vy6v4gl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjnlyh3bpndj65vy6v4gl.png" alt="NVIDIA" width="800" height="816"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What NVIDIA released
&lt;/h2&gt;

&lt;p&gt;Nemotron 3.5 Transcribe is NVIDIA's new speech recognition model, and the specs are worth a look:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🔓 &lt;strong&gt;Open-weight.&lt;/strong&gt; You can download it and run it yourself.&lt;/li&gt;
&lt;li&gt;🧠 &lt;strong&gt;30B mixture-of-experts, with only ~4B active parameters.&lt;/strong&gt; That gives you the knowledge of a big model at roughly the running cost of a small one.&lt;/li&gt;
&lt;li&gt;⏱️ &lt;strong&gt;Transcribes recordings up to an hour long.&lt;/strong&gt; That covers full meetings, podcasts and lectures in one pass.&lt;/li&gt;
&lt;li&gt;🌍 &lt;strong&gt;Supports 40 languages.&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why this one matters
&lt;/h2&gt;

&lt;p&gt;Speech-to-text has mostly meant two choices: pay for a closed API, or settle for a smaller open model. An open-weight, mixture-of-experts transcriber from NVIDIA changes that.&lt;/p&gt;

&lt;p&gt;With only ~4B parameters active at a time, it should be far cheaper to run than its 30B size suggests. If you're building meeting notes, podcast search, captioning or voice agents, put this on your shortlist.&lt;/p&gt;

&lt;h2&gt;
  
  
  And it wasn't alone
&lt;/h2&gt;

&lt;p&gt;Right after it, DEV·TV queued up two more audio-related releases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;NEXT:&lt;/strong&gt; AssemblyAI TTS 1&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LATER:&lt;/strong&gt; Particle AI Particle-1&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Three fresh models, back to back, without me refreshing a single page.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I caught it so fast
&lt;/h2&gt;

&lt;p&gt;I built &lt;strong&gt;DEV·TV&lt;/strong&gt;, a retro TV for developers that runs in your browser. Its &lt;strong&gt;NEW MODELS&lt;/strong&gt; channel pulls fresh listings from OpenRouter and airs them like a live news bulletin.&lt;/p&gt;

&lt;p&gt;Most model launches happen quietly. A listing appears, a few people notice, and by the time it trends the first wave is over. With DEV·TV on my second monitor, the new models come to me.&lt;/p&gt;

&lt;p&gt;It also has:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🥊 &lt;strong&gt;MODEL FACE-OFF:&lt;/strong&gt; New models compared head to head&lt;/li&gt;
&lt;li&gt;🛠️ &lt;strong&gt;AGENT SKILLS:&lt;/strong&gt; Trending Claude skill repos from GitHub&lt;/li&gt;
&lt;li&gt;🌟 &lt;strong&gt;SPOTLIGHT:&lt;/strong&gt; Indie dev projects, free to submit from the app&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The entire app is one HTML file with zero infrastructure, and it's open source. It's been &lt;strong&gt;#5 Product of the Day on Product Hunt&lt;/strong&gt; and &lt;strong&gt;#1 on IndieNeed&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tune in
&lt;/h2&gt;

&lt;p&gt;Want to catch the next big model drop the hour it lands?&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://shouvik12.github.io/devtv" rel="noopener noreferrer"&gt;shouvik12.github.io/devtv&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you try Nemotron 3.5 Transcribe, tell me in the comments how it handles your audio. 🎙️&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Animated cover GIF made with &lt;a href="https://github.com/shouvik12/living-canvas" rel="noopener noreferrer"&gt;living-canvas&lt;/a&gt;. Turn any repo or idea into an animated banner.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>nvidia</category>
      <category>opensource</category>
      <category>showdev</category>
    </item>
    <item>
      <title>I pointed my Claude skill at 3 famous repos, and it animated their READMEs 🎨</title>
      <dc:creator>Shouvik Palit</dc:creator>
      <pubDate>Wed, 28 Oct 2026 13:26:09 +0000</pubDate>
      <link>https://dev.to/shouvik12/i-pointed-my-claude-skill-at-3-famous-repos-and-it-animated-their-readmes-3i9p</link>
      <guid>https://dev.to/shouvik12/i-pointed-my-claude-skill-at-3-famous-repos-and-it-animated-their-readmes-3i9p</guid>
      <description>&lt;p&gt;A README has about two seconds to tell a stranger what a project does. Most banners spend those two seconds on a logo and a gradient. 🫠&lt;/p&gt;

&lt;p&gt;I built &lt;a href="https://github.com/shouvik12/living-canvas" rel="noopener noreferrer"&gt;living-canvas&lt;/a&gt; to do better: it's a Claude skill that reads a repo's README, finds the one idea at its heart, and turns it into a short animated story, left to right: &lt;strong&gt;the problem → what the project does → the result.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To see if it holds up, I pointed it at three projects I love. 👇&lt;/p&gt;

&lt;h2&gt;
  
  
  🐴 Ponytail: the lazy senior dev
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/DietrichGebert/ponytail" rel="noopener noreferrer"&gt;Ponytail&lt;/a&gt; by &lt;a href="https://github.com/DietrichGebert" rel="noopener noreferrer"&gt;Dietrich Gebert&lt;/a&gt; is a skill that makes your AI coding agent think like the laziest senior dev in the room, so it writes less code.&lt;/p&gt;

&lt;p&gt;The story comes straight from Ponytail's README. You ask for a date picker. Without Ponytail, the agent builds a whole calendar by hand: &lt;strong&gt;335 lines&lt;/strong&gt;. Ponytail first climbs its ladder of checks (does this need to exist? is it already in the codebase? the standard library? a native platform feature?) and finds that every browser already has a date picker. Result: &lt;strong&gt;10 lines&lt;/strong&gt;. 🪶&lt;/p&gt;

&lt;h2&gt;
  
  
  🦙 Ollama: open models on your machine
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/ollama/ollama" rel="noopener noreferrer"&gt;Ollama&lt;/a&gt; lets you run open models locally, with complete privacy.&lt;/p&gt;

&lt;p&gt;On the left, every prompt (and your data) goes to someone else's cloud, with an API key and a meter running. In the middle, one command: &lt;code&gt;ollama run gemma4&lt;/code&gt;. On the right, the model answers on your own machine at &lt;code&gt;localhost:11434&lt;/code&gt;. No key, no cloud, and it works offline. 🔒&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flhopibigs58x221nvemz.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flhopibigs58x221nvemz.gif" alt="Ollama" width="720" height="240"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  ⚡ uv: one tool, 10–100x faster
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/astral-sh/uv" rel="noopener noreferrer"&gt;uv&lt;/a&gt; by &lt;a href="https://astral.sh" rel="noopener noreferrer"&gt;Astral&lt;/a&gt; is an extremely fast Python package and project manager, written in Rust.&lt;/p&gt;

&lt;p&gt;Six tools for one Python project (pip, pip-tools, pipx, poetry, pyenv, virtualenv) become one binary. &lt;code&gt;uv add ruff&lt;/code&gt; resolves and installs in a blink, and the speed bars show uv's 10–100x lead over pip. 🏎️&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhzipvkbx5opuuao32ubb.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhzipvkbx5opuuao32ubb.gif" alt="uv" width="720" height="240"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🧩 How it works
&lt;/h2&gt;

&lt;p&gt;Every banner follows the same rules:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🖼️ &lt;strong&gt;One self-contained SVG&lt;/strong&gt;, around 8 KB each for these three&lt;/li&gt;
&lt;li&gt;🚫 &lt;strong&gt;No JavaScript, no external fonts or images&lt;/strong&gt;, so it renders right inside a GitHub README&lt;/li&gt;
&lt;li&gt;🏷️ &lt;strong&gt;Every stage is labeled&lt;/strong&gt; in plain words, so a single screenshot tells the whole story&lt;/li&gt;
&lt;li&gt;📖 &lt;strong&gt;Real numbers from the README&lt;/strong&gt;, never invented ones&lt;/li&gt;
&lt;li&gt;♿ &lt;strong&gt;Respects reduced motion&lt;/strong&gt;: viewers who turn animation off see all three stages at once&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🚀 Try it on your repo
&lt;/h2&gt;

&lt;p&gt;In Claude Code:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone https://github.com/shouvik12/living-canvas ~/.claude/skills/living-canvas
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Then ask:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/living-canvas https://github.com/you/your-repo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Commit the SVG it gives you and add one line to the top of your README:&lt;/p&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;p align="center"&amp;gt;&amp;lt;img src="assets/your-banner.svg" alt="Your project" width="100%"&amp;gt;&amp;lt;/p&amp;gt;&lt;br&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
&lt;br&gt;
  &lt;br&gt;
  &lt;br&gt;
  🔗 Links&lt;br&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🎨 &lt;strong&gt;living-canvas&lt;/strong&gt;: &lt;a href="https://github.com/shouvik12/living-canvas" rel="noopener noreferrer"&gt;github.com/shouvik12/living-canvas&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📺 &lt;strong&gt;DEV·TV&lt;/strong&gt;, where living-canvas is currently running in the commercial breaks: &lt;a href="https://shouvik12.github.io/devtv/" rel="noopener noreferrer"&gt;shouvik12.github.io/devtv&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🐴 &lt;a href="https://github.com/DietrichGebert/ponytail" rel="noopener noreferrer"&gt;Ponytail&lt;/a&gt; · 🦙 &lt;a href="https://github.com/ollama/ollama" rel="noopener noreferrer"&gt;Ollama&lt;/a&gt; · ⚡ &lt;a href="https://github.com/astral-sh/uv" rel="noopener noreferrer"&gt;uv&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you maintain one of these and want the SVG for your README, it's yours. Just say the word. 🙌&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>opensource</category>
      <category>ai</category>
      <category>github</category>
    </item>
    <item>
      <title>DEV·TV's second real ad is live, and the next one could be yours 📺</title>
      <dc:creator>Shouvik Palit</dc:creator>
      <pubDate>Tue, 27 Oct 2026 17:29:09 +0000</pubDate>
      <link>https://dev.to/shouvik12/devtvs-second-real-ad-is-live-and-the-next-one-could-be-yours-5he8</link>
      <guid>https://dev.to/shouvik12/devtvs-second-real-ad-is-live-and-the-next-one-could-be-yours-5he8</guid>
      <description>&lt;p&gt;A few days ago, &lt;a href="https://shouvik12.github.io/devtv/" rel="noopener noreferrer"&gt;DEV·TV&lt;/a&gt; ran its first real ad. Until then, every commercial break was a joke: &lt;br&gt;
Off-By-One Pizza 🍕, &lt;br&gt;
Rollback Airlines ✈️, &lt;br&gt;
node_modules Self Storage 📦. &lt;br&gt;
Then &lt;a href="https://github.com/shouvik12/leantext" rel="noopener noreferrer"&gt;leantext&lt;/a&gt; took the first real slot.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsccxm4ph4j77car23sdn.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsccxm4ph4j77car23sdn.gif" alt="Animated DEV·TV banner: five half-read browser tabs, then a retro TV flipping through developer channels, then an editor with a small TV glanced at on a second monitor" width="600" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Today there's a second one. 🎉&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr8x9z0zu5m2kjqpd15kq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr8x9z0zu5m2kjqpd15kq.png" alt="The living-canvas ad playing in a DEV·TV commercial break: a violet screen with a pink palette logo, the slogan " width="800" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🎨 Meet living-canvas
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/shouvik12/living-canvas" rel="noopener noreferrer"&gt;living-canvas&lt;/a&gt; is a Claude skill that turns any repo, doc or idea into an animated README banner. Point it at a GitHub URL and it reads the project, finds the one idea at its heart, and turns it into motion: one self-contained SVG, no JavaScript, usually under 10 KB. ✨&lt;/p&gt;

&lt;p&gt;It's built for the top of a README, where a stranger decides in two seconds whether to keep reading. Instead of a generic gradient, the banner tells the project's actual story, left to right: the problem, what the project does, and the result.&lt;/p&gt;

&lt;p&gt;To try it in Claude Code:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone https://github.com/shouvik12/living-canvas ~/.claude/skills/living-canvas
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Then ask for &lt;code&gt;/living-canvas https://github.com/you/your-repo&lt;/code&gt;. 🚀&lt;/p&gt;

&lt;h2&gt;
  
  
  📣 Two ads from the maker. The rest are yours.
&lt;/h2&gt;

&lt;p&gt;Every TV network runs promos for its own shows, and DEV·TV has now run two. That's enough of me. 😄&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The next ad slots are open to the community, for free.&lt;/strong&gt; 🙌&lt;/p&gt;

&lt;p&gt;If you've built a developer tool, a library, an app or a side project, it can run in DEV·TV's commercial breaks just like leantext and living-canvas do: a full-screen ad card with your name, a one-line pitch, your colors and a button that links straight to your project. No fake disclaimer, because it's a real ad.&lt;/p&gt;

&lt;p&gt;To get one:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🖱️ Open &lt;a href="https://shouvik12.github.io/devtv/" rel="noopener noreferrer"&gt;DEV·TV&lt;/a&gt; and hit &lt;strong&gt;Submit your project&lt;/strong&gt;, or&lt;/li&gt;
&lt;li&gt;✉️ Email &lt;strong&gt;&lt;a href="mailto:devtv.developers@gmail.com"&gt;devtv.developers@gmail.com&lt;/a&gt;&lt;/strong&gt; with your project name, a one-line pitch and a link.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I screen every submission myself, the same way I do for the Spotlight channel. 🔦&lt;/p&gt;

&lt;h2&gt;
  
  
  🔗 The links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;📺 &lt;strong&gt;DEV·TV&lt;/strong&gt;, a retro TV for the developer internet: &lt;a href="https://shouvik12.github.io/devtv/" rel="noopener noreferrer"&gt;shouvik12.github.io/devtv&lt;/a&gt; · &lt;a href="https://github.com/shouvik12/devtv" rel="noopener noreferrer"&gt;source&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📄 &lt;strong&gt;leantext&lt;/strong&gt;, lean Markdown for your coding agent, up to 99% fewer tokens: &lt;a href="https://github.com/shouvik12/leantext" rel="noopener noreferrer"&gt;github.com/shouvik12/leantext&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🎨 &lt;strong&gt;living-canvas&lt;/strong&gt;, animated README banners from any repo: &lt;a href="https://github.com/shouvik12/living-canvas" rel="noopener noreferrer"&gt;github.com/shouvik12/living-canvas&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Leave DEV·TV running on a second monitor. 🖥️ Sooner or later, a break comes up, and maybe your project is the one on screen. 👀&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>webdev</category>
      <category>opensource</category>
      <category>ai</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Shouvik Palit</dc:creator>
      <pubDate>Tue, 27 Oct 2026 02:30:52 +0000</pubDate>
      <link>https://dev.to/shouvik12/-255c</link>
      <guid>https://dev.to/shouvik12/-255c</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/shouvik12/i-built-a-token-killer-for-ai-agents-heres-what-it-didnt-kill-12o5" class="crayons-story__hidden-navigation-link"&gt;I built a token killer for AI agents. Here's what it didn't kill.&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/shouvik12" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3890793%2Fc3274ea7-2b55-4b67-9d70-2f3c08b63374.png" alt="shouvik12 profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/shouvik12" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Shouvik Palit
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Shouvik Palit
                
                
              
              &lt;div id="story-author-preview-content-4923474" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/shouvik12" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3890793%2Fc3274ea7-2b55-4b67-9d70-2f3c08b63374.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Shouvik Palit&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/shouvik12/i-built-a-token-killer-for-ai-agents-heres-what-it-didnt-kill-12o5" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Oct 26&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/shouvik12/i-built-a-token-killer-for-ai-agents-heres-what-it-didnt-kill-12o5" id="article-link-4923474"&gt;
          I built a token killer for AI agents. Here's what it didn't kill.
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/llm"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;llm&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/python"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;python&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/opensource"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;opensource&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/shouvik12/i-built-a-token-killer-for-ai-agents-heres-what-it-didnt-kill-12o5" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt;&amp;nbsp;reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/shouvik12/i-built-a-token-killer-for-ai-agents-heres-what-it-didnt-kill-12o5#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            4 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
    </item>
    <item>
      <title>🥊 GPT-6.1 Terra vs Kimi K3.1 Pro: DEV·TV Called It 3–1</title>
      <dc:creator>Shouvik Palit</dc:creator>
      <pubDate>Tue, 27 Oct 2026 00:37:20 +0000</pubDate>
      <link>https://dev.to/shouvik12/gpt-61-terra-vs-kimi-k31-pro-devtv-called-it-3-1-18in</link>
      <guid>https://dev.to/shouvik12/gpt-61-terra-vs-kimi-k31-pro-devtv-called-it-3-1-18in</guid>
      <description>&lt;p&gt;Two new models hit OpenRouter this week: &lt;strong&gt;OpenAI's GPT-6.1 Terra&lt;/strong&gt; and &lt;strong&gt;MoonshotAI's Kimi K3.1 Pro&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Before I'd even had my morning chai, DEV·TV's channel 13, &lt;strong&gt;MODEL FACE-OFF&lt;/strong&gt;, had already put them in the ring.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frk7li50tvf27ago52zck.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frk7li50tvf27ago52zck.png" alt="Model faceoff" width="800" height="815"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F23l53b1kr1uqdnyc971r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F23l53b1kr1uqdnyc971r.png" alt="Bout results" width="800" height="852"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🏆 The result: Terra wins on specs, 3–1
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Stat&lt;/th&gt;
&lt;th&gt;GPT-6.1 Terra&lt;/th&gt;
&lt;th&gt;Kimi K3.1 Pro&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Input price (per 1M)&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;$1&lt;/strong&gt; ✅&lt;/td&gt;
&lt;td&gt;$2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Output price (per 1M)&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;$5&lt;/strong&gt; ✅&lt;/td&gt;
&lt;td&gt;$10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Context&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;1.1M&lt;/strong&gt; ✅&lt;/td&gt;
&lt;td&gt;1M&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Max output&lt;/td&gt;
&lt;td&gt;128K&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;944K&lt;/strong&gt; ✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Inputs&lt;/td&gt;
&lt;td&gt;file + image + text&lt;/td&gt;
&lt;td&gt;text + image + video&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Points&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;3&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  💡 What stands out
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Terra is half the price.&lt;/strong&gt; $1/$5 vs $2/$10 adds up fast at scale.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Terra edges context&lt;/strong&gt; at 1.1M vs 1M.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kimi's big win is max output.&lt;/strong&gt; 944K tokens vs 128K is a huge gap if you generate long docs, codebases or reports in one go.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kimi takes video input&lt;/strong&gt;, while Terra takes files. Pick based on what you feed it.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ⚖️ How MODEL FACE-OFF scores
&lt;/h2&gt;

&lt;p&gt;Each row is worth 1 point. A tie scores nothing, and a row is skipped if a stat is missing. Specs and prices come straight from OpenRouter's catalog.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This measures specs, not quality.&lt;/strong&gt; It tells you what you get for your money, not which model writes better code. That's still on you to test.&lt;/p&gt;

&lt;h2&gt;
  
  
  📺 What's next on the channel
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;NEXT:&lt;/strong&gt; Voxtral Mini Transcribe 3 vs Voxtral Small Transcribe 3&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LATER:&lt;/strong&gt; Nemotron 3.5 Embed 1B vs Nemotron 3.5 Embed 8B&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;New models get matched against others of the same type, so you're always comparing apples to apples.&lt;/p&gt;

&lt;h2&gt;
  
  
  🛠️ About DEV·TV
&lt;/h2&gt;

&lt;p&gt;DEV·TV is a retro TV for developers with 14 channels: GitHub, Hacker News, Hugging Face, AI Papers, CVE, New Models, Model Face-Off, Spotlight and more. It's a single HTML file with zero infrastructure.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;#5 Product of the Day on Product Hunt&lt;/li&gt;
&lt;li&gt;#1 Product on IndieLink&lt;/li&gt;
&lt;li&gt;Open source, Apache-2.0&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Built something? Submit it to Spotlight right from the app, for free.&lt;/p&gt;




&lt;p&gt;📺 &lt;strong&gt;Watch:&lt;/strong&gt; &lt;a href="https://shouvik12.github.io/devtv" rel="noopener noreferrer"&gt;https://shouvik12.github.io/devtv&lt;/a&gt;&lt;br&gt;
⭐ &lt;strong&gt;Star:&lt;/strong&gt; &lt;a href="https://github.com/shouvik12/devtv" rel="noopener noreferrer"&gt;https://github.com/shouvik12/devtv&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Would you pay 2× for Kimi's 944K output, or is Terra the smart pick?&lt;/strong&gt; Tell me in the comments 👇&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>opensource</category>
      <category>webdev</category>
    </item>
    <item>
      <title>GPT-6.1 Terra is on DEV·TV</title>
      <dc:creator>Shouvik Palit</dc:creator>
      <pubDate>Tue, 27 Oct 2026 00:26:04 +0000</pubDate>
      <link>https://dev.to/shouvik12/gpt-61-terra-is-on-devtv-bf</link>
      <guid>https://dev.to/shouvik12/gpt-61-terra-is-on-devtv-bf</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb5z0ipzdolv1accwhlqm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb5z0ipzdolv1accwhlqm.png" alt="GPT-6.1" width="800" height="814"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At 5:51 this morning, DEV·TV was on channel 11, &lt;strong&gt;NEW MODELS&lt;/strong&gt;, showing &lt;strong&gt;OpenAI: GPT-6.1 Terra&lt;/strong&gt;. It had landed on OpenRouter 6 hours earlier.&lt;/p&gt;

&lt;p&gt;Everything was on one screen:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;1.1M&lt;/strong&gt; token context&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;$1 in / $5 out&lt;/strong&gt; per 1M tokens&lt;/li&gt;
&lt;li&gt;The mid-tier model in the GPT-6.1 series, priced below GPT-6.1 Sol and built for everyday agentic, coding and writing work&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Up next were HeyGen Voice Turbo and MoonshotAI's Kimi K3.1 Pro.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why DEV·TV
&lt;/h2&gt;

&lt;p&gt;I was tired of checking ten dev sites every morning, so I built a retro TV for developers. It has 14 channels: GitHub, Hacker News, DEV, Hugging Face, Releases, AI Papers, Latest Papers, CVE, HN Video, AI Video, New Models, Agent Skills, Model Face-Off and Spotlight.&lt;/p&gt;

&lt;p&gt;It's a single HTML file with zero infrastructure. You flip channels instead of tabs.&lt;/p&gt;

&lt;h2&gt;
  
  
  How NEW MODELS stays fresh
&lt;/h2&gt;

&lt;p&gt;The channel pulls live listings from OpenRouter using a rolling 24-hour window. If you want to see how a new model stacks up, channel 13, &lt;strong&gt;MODEL FACE-OFF&lt;/strong&gt;, puts it head to head against models of the same type.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get on the Spotlight
&lt;/h2&gt;

&lt;p&gt;Built something? You can submit it to the Spotlight channel right from the app, for free.&lt;/p&gt;




&lt;p&gt;📜 Open source, Apache-2.0&lt;/p&gt;

&lt;p&gt;📺 &lt;strong&gt;Watch:&lt;/strong&gt; &lt;a href="https://shouvik12.github.io/devtv" rel="noopener noreferrer"&gt;https://shouvik12.github.io/devtv&lt;/a&gt;&lt;br&gt;
⭐ &lt;strong&gt;Star:&lt;/strong&gt; &lt;a href="https://github.com/shouvik12/devtv" rel="noopener noreferrer"&gt;https://github.com/shouvik12/devtv&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What channel should I add next? Tell me in the comments 👇&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>opensource</category>
      <category>webdev</category>
    </item>
    <item>
      <title>I built a token killer for AI agents. Here's what it didn't kill.</title>
      <dc:creator>Shouvik Palit</dc:creator>
      <pubDate>Mon, 26 Oct 2026 17:41:48 +0000</pubDate>
      <link>https://dev.to/shouvik12/i-built-a-token-killer-for-ai-agents-heres-what-it-didnt-kill-12o5</link>
      <guid>https://dev.to/shouvik12/i-built-a-token-killer-for-ai-agents-heres-what-it-didnt-kill-12o5</guid>
      <description>&lt;h1&gt;
  
  
  🔪 I built a token killer for AI agents. Here's what it didn't kill.
&lt;/h1&gt;

&lt;p&gt;When an agent reads a web page, it pays for the whole page.&lt;/p&gt;

&lt;p&gt;On GitHub's page for psf/requests, that's 123,176 tokens. Only 519 of them are the README. 🤯 The rest is navigation menus, sign-in banners, file lists and scripts.&lt;/p&gt;

&lt;p&gt;leantext is an open-source tool (Apache-2.0) that turns what an agent reads into lean Markdown. It strips page chrome, keeps the content, checks the result against the source, and reports tokens before and after. It handles HTML pages, Word, Excel and PowerPoint files, and PDFs, including scanned ones via OCR.&lt;/p&gt;

&lt;p&gt;I benchmarked it on well-known pages, then checked line by line what it threw away. Both results are below, including where it still loses data. 👇&lt;/p&gt;

&lt;h2&gt;
  
  
  📉 The benchmark: 82% fewer tokens
&lt;/h2&gt;

&lt;p&gt;Across 7 well-known pages and PDFs: 611,978 → 112,181 tokens. Counts from tiktoken, run on a MacBook on 26 Oct 2026, leantext 0.2.0.&lt;/p&gt;

&lt;p&gt;GitHub: psf/requests: 123,176 → 519 (99.6% saved) 🔥&lt;br&gt;
PyPI: requests: 88,741 → 519 (99.4% saved) 🔥&lt;br&gt;
Kubernetes docs: Overview: 129,405 → 8,271 (94% saved)&lt;br&gt;
Python docs: Data Structures: 33,914 → 8,423 (75% saved)&lt;br&gt;
Python docs: os: 221,301 → 79,578 (64% saved)&lt;br&gt;
PDF: Bitcoin whitepaper: 5,273 → 5,033 (5% saved)&lt;br&gt;
PDF: Attention Is All You Need: 10,168 → 9,838 (3% saved)&lt;/p&gt;

&lt;p&gt;Total: 611,978 → 112,181 tokens. 82% saved. 🏆&lt;/p&gt;

&lt;p&gt;The spread is the point. Pages that wrap a short README in a big site template save 99%. Docs pages are mostly code and tables, which leantext keeps, so they save 64–94%. Text PDFs are already lean; a scanned invoice dropped from 2,318 tokens as a page image to 52 as OCR text (98%).&lt;/p&gt;

&lt;p&gt;The run also tried 7 more pages. PyPI's numpy and fastapi pages and Wikipedia served bot checks, and GPT-3's PDF, npm and MDN were flagged as suspicious. leantext refused those 6 instead of passing off a partial page. react.dev served plain text, so there was nothing to strip. None of the 7 is in the table.&lt;/p&gt;

&lt;h2&gt;
  
  
  🔍 Did it lose anything?
&lt;/h2&gt;

&lt;p&gt;On 3 of 5 web pages, leantext dropped nothing but page chrome, and it kept every code block on all of them. ✅&lt;/p&gt;

&lt;p&gt;Token savings mean nothing if the answer gets thrown away, so I checked. The check takes each original page, pulls out every line of 40+ characters, and looks for it in the lean output. Then I read every missing line by hand.&lt;/p&gt;

&lt;p&gt;Kubernetes: Overview: 100% of lines found. Nothing missing.&lt;br&gt;
PyPI: requests: 31% found. Only chrome: file hashes, provenance notes, the security disclaimer, the trademark footer. Every README line is there.&lt;br&gt;
GitHub: psf/requests: 41% found. Only chrome: Copilot and Enterprise menus, "You signed in with another tab" banners, the star button, the file list. Every README line is there.&lt;br&gt;
Python docs: Data Structures: 97% found. 1 footnote, plus the copyright footer.&lt;br&gt;
Python docs: os: 98.7% found. About 20 short API descriptions, plus the footer.&lt;/p&gt;

&lt;p&gt;The low raw scores on PyPI and GitHub are the checker counting the whole page. leantext drops that material on purpose. The README is short, so a few dozen lines of chrome swing the percentage. For an agent, both pages are complete.&lt;/p&gt;

&lt;h2&gt;
  
  
  🐛 Where it still drops data
&lt;/h2&gt;

&lt;p&gt;On Python's API reference, leantext loses short definitions, and its own checks don't catch it. Both Python pages passed strict mode.&lt;/p&gt;

&lt;p&gt;Missing from the os page:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;os.fdopen(): its whole description, though other entries still link to it&lt;/li&gt;
&lt;li&gt;os.error: "An alias for the built-in OSError exception"&lt;/li&gt;
&lt;li&gt;os.PathLike.&lt;strong&gt;fspath&lt;/strong&gt;, os.terminal_size and its columns and lines fields&lt;/li&gt;
&lt;li&gt;os.RWF_DSYNC, os.RWF_SYNC, some statx and statvfs fields, and the setns() and unshare flags&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The pattern: Sphinx wraps each API entry in a &lt;/p&gt;
&lt;dl&gt;. When the &lt;dd&gt; description is only a line or two, the extractor treats it as clutter. Footnotes sit in  tags and go the same way. In a separate run over all of the Python 3.15 docs, the data model page also lost a whole subsection (3.2.9.1, import-related attributes on module objects).

&lt;p&gt;That matters most for docs, because "what does X do?" is exactly what agents ask. Two fixes are next for leantext:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A text-coverage check in strict mode, so a page below about 98% falls back to the original instead of passing.&lt;/li&gt;
&lt;li&gt;Keep Sphinx definition blocks and footnotes during extraction.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The code-block count is also a weaker check than it looks. On the os page it went from 16 to 21, because leantext turns some inline code into fenced blocks. "Code in is at most code out" passes even when prose is missing.&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀 Try it
&lt;/h2&gt;

&lt;p&gt;Install with uv (or pip with the same argument):&lt;/p&gt;

&lt;p&gt;uv tool install "leantext[tokens,office] @ git+&lt;a href="https://github.com/shouvik12/leantext" rel="noopener noreferrer"&gt;https://github.com/shouvik12/leantext&lt;/a&gt;"&lt;/p&gt;

&lt;p&gt;Convert a page and see the report:&lt;/p&gt;

&lt;p&gt;leantext &lt;a href="https://pypi.org/project/requests/" rel="noopener noreferrer"&gt;https://pypi.org/project/requests/&lt;/a&gt; --strict --report &amp;gt; requests.md&lt;/p&gt;

&lt;p&gt;The report prints tokens before and after on stderr. With --strict, a page that looks wrong exits with an error instead of handing you a partial result, so your agent can fall back to the original.&lt;/p&gt;

&lt;p&gt;Run it on the pages your agent reads most, and tell me what it drops. ⭐ Issues and PRs welcome: github.com/shouvik12/leantext&lt;/p&gt;


&lt;/dd&gt;
&lt;/dl&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>python</category>
      <category>opensource</category>
    </item>
    <item>
      <title>leantext's first small win: 49 clones in two days</title>
      <dc:creator>Shouvik Palit</dc:creator>
      <pubDate>Sun, 25 Oct 2026 18:41:27 +0000</pubDate>
      <link>https://dev.to/shouvik12/leantexts-first-small-win-49-clones-in-two-days-2bg5</link>
      <guid>https://dev.to/shouvik12/leantexts-first-small-win-49-clones-in-two-days-2bg5</guid>
      <description>&lt;p&gt;A few days ago I wrote here about leantext, my free, open-source tool that turns web pages, PDFs, screenshots and Office files into lean Markdown before your coding agent reads them.&lt;/p&gt;

&lt;p&gt;Here's what happened next, and it's a small win I wanted to share with this community first.&lt;/p&gt;

&lt;h2&gt;
  
  
  The numbers so far
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;49 git clones&lt;/strong&gt; from &lt;strong&gt;26 unique cloners&lt;/strong&gt; in the first two days&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Graduated to the Products tab on 42Loop&lt;/strong&gt; after the community upvoted it in&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Picked up and translated by an Albanian news site&lt;/strong&gt;, straight from my DEV post 😄&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The fun detail: clones are outpacing page visits. It looks like many of you copied the &lt;code&gt;git clone&lt;/code&gt; line straight from the article and ran it. Someone even opened &lt;code&gt;install.sh&lt;/code&gt; to read it first, which is exactly what you should do with any installer.&lt;/p&gt;

&lt;h2&gt;
  
  
  A quick recap, if you missed it
&lt;/h2&gt;

&lt;p&gt;Your agent pays for every token it reads, including menus, scripts and footers it never needed.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The NumPy page on PyPI: &lt;strong&gt;92,348 tokens raw, 755 through leantext&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;21 out of 21&lt;/strong&gt; tasks correct in my Claude Code tests&lt;/li&gt;
&lt;li&gt;If a conversion looks wrong, the agent gets &lt;strong&gt;the original&lt;/strong&gt; instead, so you save tokens without losing accuracy&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  📺 Meanwhile, on DEV·TV...
&lt;/h2&gt;

&lt;p&gt;leantext also got something no other product has had: its own TV commercial.&lt;/p&gt;

&lt;p&gt;If you haven't seen it, DEV·TV is my free browser TV for developer content. You flip through channels like it's the 90s: GitHub, Hacker News, Hugging Face, AI Papers, CVEs, New Models, Agent Skills, Spotlight, and yes, a &lt;strong&gt;DEV channel&lt;/strong&gt;, so posts from this very community play on it. Hit the &lt;strong&gt;GUIDE&lt;/strong&gt; button to see what's on every channel right now, or swap TV skins if you're feeling nostalgic.&lt;/p&gt;

&lt;p&gt;Until now, the commercial breaks were all joke ads and station announcements. leantext is the first real product to get airtime, and it's clearly marked as coming from the maker of DEV·TV, so you always know what's a gag and what's real.&lt;/p&gt;

&lt;p&gt;Breaks roll roughly every five minutes in auto mode. Not a fan of ads? Switch them off in settings. No login, no backend, no tracking, just one HTML file.&lt;/p&gt;

&lt;p&gt;👉 Tune in: &lt;a href="https://shouvik12.github.io/devtv/" rel="noopener noreferrer"&gt;shouvik12.github.io/devtv&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Want your own project on air? The &lt;strong&gt;Spotlight&lt;/strong&gt; channel takes submissions right from the TV.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I need from you
&lt;/h2&gt;

&lt;p&gt;Try leantext on your own agent's reads and tell me where it breaks. A page that converts badly, a PDF that loses a table, a screenshot OCR misreads: those failures are what make the fallback smarter. Open an issue or drop it in the comments.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://github.com/shouvik12/leantext" rel="noopener noreferrer"&gt;github.com/shouvik12/leantext&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Free, open source, Apache-2.0. Thanks to everyone who cloned, starred or voted. 🙏&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>productivity</category>
      <category>llm</category>
    </item>
  </channel>
</rss>
