<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Software on probonas.net</title><link>https://yannis.probonas.net/categories/software/</link><description>Recent content in Software on probonas.net</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sat, 13 Jun 2026 15:48:00 +0300</lastBuildDate><atom:link href="https://yannis.probonas.net/categories/software/index.xml" rel="self" type="application/rss+xml"/><item><title>AI News Briefing: a Glance extension that curates your RSS feeds</title><link>https://yannis.probonas.net/blog/ai-news-briefing-glance/</link><pubDate>Sat, 13 Jun 2026 00:00:00 +0000</pubDate><guid>https://yannis.probonas.net/blog/ai-news-briefing-glance/</guid><description>&lt;script src="https://code.jquery.com/jquery-1.12.4.min.js" integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous">&lt;/script>
&lt;script src=https://yannis.probonas.net/js/load-photoswipe.js>&lt;/script>


&lt;link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.1/photoswipe.min.css" integrity="sha256-sCl5PUOGMLfFYctzDW3MtRib0ctyUvI9Qsmq2wXOeBY=" crossorigin="anonymous" />
&lt;link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.1/default-skin/default-skin.min.css" integrity="sha256-BFeI1V+Vh1Rk37wswuOYn5lsTcaU96hGaI7OUVCLjPc=" crossorigin="anonymous" />
&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.1/photoswipe.min.js" integrity="sha256-UplRCs9v4KXVJvVY+p+RSo5Q4ilAUXh7kpjyIP5odyc=" crossorigin="anonymous">&lt;/script>
&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.1/photoswipe-ui-default.min.js" integrity="sha256-PWHOlUzc96pMc8ThwRIXPn8yH4NOLu42RQ0b9SpnpFk=" crossorigin="anonymous">&lt;/script>


&lt;div class="pswp" tabindex="-1" role="dialog" aria-hidden="true">

&lt;div class="pswp__bg">&lt;/div>

&lt;div class="pswp__scroll-wrap">
 
 &lt;div class="pswp__container">
 &lt;div class="pswp__item">&lt;/div>
 &lt;div class="pswp__item">&lt;/div>
 &lt;div class="pswp__item">&lt;/div>
 &lt;/div>
 
 &lt;div class="pswp__ui pswp__ui--hidden">
 &lt;div class="pswp__top-bar">
 
 &lt;div class="pswp__counter">&lt;/div>
 &lt;button class="pswp__button pswp__button--close" title="Close (Esc)">&lt;/button>
 &lt;button class="pswp__button pswp__button--share" title="Share">&lt;/button>
 &lt;button class="pswp__button pswp__button--fs" title="Toggle fullscreen">&lt;/button>
 &lt;button class="pswp__button pswp__button--zoom" title="Zoom in/out">&lt;/button>
 
 
 &lt;div class="pswp__preloader">
 &lt;div class="pswp__preloader__icn">
 &lt;div class="pswp__preloader__cut">
 &lt;div class="pswp__preloader__donut">&lt;/div>
 &lt;/div>
 &lt;/div>
 &lt;/div>
 &lt;/div>
 &lt;div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap">
 &lt;div class="pswp__share-tooltip">&lt;/div>
 &lt;/div>
 &lt;button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)">
 &lt;/button>
 &lt;button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)">
 &lt;/button>
 &lt;div class="pswp__caption">
 &lt;div class="pswp__caption__center">&lt;/div>
 &lt;/div>
 &lt;/div>
 &lt;/div>
&lt;/div>

&lt;p>I built a small &lt;a href="https://github.com/glanceapp/glance">Glance&lt;/a> extension that uses AI to curate news from your RSS feeds. It&amp;rsquo;s called &lt;a href="https://github.com/probonas/glance-ai-briefing">AI News Briefing&lt;/a>, and it solves a simple problem: my RSS feeds produce too many headlines, and I only want to see the ones that matter.&lt;/p>

&lt;link rel="stylesheet" href=https://yannis.probonas.net/css/hugo-easy-gallery.css />
&lt;div class="box" >
 &lt;figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject">
 &lt;div class="img">
 &lt;img itemprop="thumbnail" src="https://yannis.probonas.net/blog/ai-news-briefing-glance/screenshot-home-full.png" />
 &lt;/div>
 &lt;a href="https://yannis.probonas.net/blog/ai-news-briefing-glance/screenshot-home-full.png" itemprop="contentUrl">&lt;/a>
 &lt;figcaption>&lt;h4>The briefing widget on my Glance dashboard&lt;/h4>
 &lt;/figcaption>
 &lt;/figure>
&lt;/div>

&lt;h2 id="how-it-works">How it works&lt;/h2>
&lt;p>The extension runs as a tiny HTTP server that Glance calls on its refresh cycle. On each request, it reads the RSS feeds from your Glance configuration, fetches the latest headlines, and sends them to an LLM (DeepSeek is for now the only provider supported) with a prompt asking it to pick the most significant stories. The LLM returns a ranked list with short summaries, and the extension renders them as styled HTML. Results are cached between refresh cycles so repeated dashboard loads don&amp;rsquo;t trigger unnecessary API calls — the LLM is only queried when the cache expires, keeping things fast and cost-effective.&lt;/p></description></item><item><title>AI-infused software is eating up the world</title><link>https://yannis.probonas.net/blog/ai-infused-software/</link><pubDate>Sat, 06 Jun 2026 00:00:00 +0000</pubDate><guid>https://yannis.probonas.net/blog/ai-infused-software/</guid><description>&lt;p class="indent">Ever since Marc Andreessen coined the now-famous quote in 2011, millions of software companies have been established. Low interest rates led to an excess of available capital, and the relatively low cost of building software compared with most other industries drove that growth for the most part. But what enabled this growth in the first place was the fact that computing was, at its core, cheap and that costs were predictable. With AI, this has changed.&lt;/p></description></item></channel></rss>