<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: kristjan</title><link>https://news.ycombinator.com/user?id=kristjan</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Mon, 13 Apr 2026 13:44:59 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=kristjan" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[Show HN: RSS tool to remix feeds, build from webpages, and skip podcast reruns]]></title><description><![CDATA[
<p>It's been nice seeing some RSS projects pop up lately, so here's mine and the scope creep that led to it.<p>I wanted to read a couple feeds from their beginnings, something RSS doesn't particularly do and nobody particularly uses it for. But I've done the keep-a-tab-open-for-8-months thing more than once to work through an archive, and I don't fancy doing it again. As I worked through the steps and showed it to friends, we accumulated some other quality-of-life use cases that fit well enough into "just filter some XML" that they glommed on.<p>So, Sponder can:<p>- Run basic filtering on RSS feeds, either by keywords or regular expressions.<p>- Parse any webpage into an RSS feed, including autodetection of title/image/link/etc elements, following page links back through history, and coming back for new items later.<p>- Control the pace of that full historical feed to serve you an article per week, or 12 per day, whatever pace you like.<p>- Automatically detect and filter rerun episodes from a podcast feed.<p>- Be configured either by UI or typing some YAML.<p>It does not:<p>- Replace your RSS or podcast client, it's middleware that publishes a modified feed for you.<p>- Replace every one of your feeds, just the ones you wish were different. Though you can important and export OPMLs if you wish a lot were different.<p>- Run content through LLMs, though I'm considering it for rerun detection since metadata similarity only gets so far.<p>I'd love to hear from you fine folks:<p>- What bugs you about your feeds<p>- How configuring a flow goes</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47387480">https://news.ycombinator.com/item?id=47387480</a></p>
<p>Points: 4</p>
<p># Comments: 0</p>
]]></description><pubDate>Sun, 15 Mar 2026 14:02:05 +0000</pubDate><link>https://sponder.app</link><dc:creator>kristjan</dc:creator><comments>https://news.ycombinator.com/item?id=47387480</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47387480</guid></item><item><title><![CDATA[New comment by kristjan in "Okmain: How to pick an OK main colour of an image"]]></title><description><![CDATA[
<p>I've been doing something similar! I've got a Home Assistant dashboard on my desk and wanted the media controls to match the current album art. I need three colors: background, foreground, and something vibrant to set my desk lamp to [1].<p>The SpotifyPlus HA integration [2] was near at hand and does a reasonably good job clustering with a version of ColorThief [3] under the hood. It has the same two problems you started with though: muddying when there's lots of gradation, even within a cluster; and no semantic understanding when the cover has something resembling a frame. A bit swapped from okmain's goal, but I can invert with the best of them and will give it a shot next time I fiddle. Thanks for posting!<p>[1] <a href="https://gist.github.com/kristjan/b305b83b0eb4455ee8455be108a0f703" rel="nofollow">https://gist.github.com/kristjan/b305b83b0eb4455ee8455be108a...</a>
[2] <a href="https://github.com/thlucas1/homeassistantcomponent_spotifyplus" rel="nofollow">https://github.com/thlucas1/homeassistantcomponent_spotifypl...</a>
[3] <a href="https://github.com/thlucas1/SpotifyWebApiPython/blob/master/spotifywebapipython/vibrant/colorthieffast.py" rel="nofollow">https://github.com/thlucas1/SpotifyWebApiPython/blob/master/...</a></p>
]]></description><pubDate>Fri, 13 Mar 2026 16:20:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=47366447</link><dc:creator>kristjan</dc:creator><comments>https://news.ycombinator.com/item?id=47366447</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47366447</guid></item><item><title><![CDATA[New comment by kristjan in "Ask HN: What Are You Working On? (March 2026)"]]></title><description><![CDATA[
<p>I've wanted to read some long-form RSS feeds from the beginning, and friends had use cases for feed filtering, so I built <a href="https://sponder.app" rel="nofollow">https://sponder.app</a>.<p>The filtering was easy, but RSS doesn't do "from the beginning" (RFC 5005 exists, but is mostly unused), so scope crept into a webpage-to-RSS tool that lets me convert favorite.site/s/archive - autodetection of the article structure was a fun side quest.<p>The whole thing is a little function engine (Yahoo Pipes called), so the final goal is `merge(archive, live_feed) | drip(N items per D days)` to have the archive transition seamlessly into current content. I expect I can push that live tomorrow or so.<p>And of course Podcasts are just RSS, so hey, let's skip reruns. That's doable with filters on the episode description, but with history in place I'll add title similarity checking. I'm trying to think how to recognize cross-promoted episodes too, without having to crawl every podcast.<p>Importantly, Sponder's _not_ a client. There are enough clients, any many are great. Each implements some subset of features, so Sponder's an intermediary that consumes and publishes pure RSS for us to use anywhere we want.<p>Project two started over the weekend and is the NYTimes' Pips, but colors. You're building a stained glass window with regional constraints, and the big difference from using dominos is colors can mix. Also, triangles! The engine works, and I'm designing the tutorial and first handful of puzzles now.</p>
]]></description><pubDate>Mon, 09 Mar 2026 16:10:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=47310967</link><dc:creator>kristjan</dc:creator><comments>https://news.ycombinator.com/item?id=47310967</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47310967</guid></item><item><title><![CDATA[New comment by kristjan in "Ask HN: What are you working on? (February 2026)"]]></title><description><![CDATA[
<p>Sponder - Filter and transform RSS feeds or Podcasts (<a href="https://sponder.app" rel="nofollow">https://sponder.app</a>)<p>Different RSS clients provide different filtering options, and lots of them limit you to a few keywords and/or put them behind a $7-12/mo subscription. I'm building Sponder so you can curate what you see, and it just presents another RSS feed, so you can keep using your favorite client but fill in the feature gaps.<p>Right now it can merge and filter by string or regex, and next I'm building (because it's what I want) history replay and smarter podcast rerun detection. it's new and I'm very open to feedback and feature requests.</p>
]]></description><pubDate>Mon, 09 Feb 2026 19:55:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=46950218</link><dc:creator>kristjan</dc:creator><comments>https://news.ycombinator.com/item?id=46950218</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46950218</guid></item><item><title><![CDATA[New comment by kristjan in "Ask HN: What language-agnostic programming books should I read?"]]></title><description><![CDATA[
<p>Correction: Jon Bentley<p><a href="https://en.wikipedia.org/wiki/Jon_Bentley_(computer_scientist)" rel="nofollow">https://en.wikipedia.org/wiki/Jon_Bentley_(computer_scientis...</a></p>
]]></description><pubDate>Mon, 05 Jun 2017 16:13:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=14488744</link><dc:creator>kristjan</dc:creator><comments>https://news.ycombinator.com/item?id=14488744</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=14488744</guid></item><item><title><![CDATA[New comment by kristjan in "KeepassXC – A cross-platform community fork of KeepassX"]]></title><description><![CDATA[
<p>You may also dig <a href="https://www.passwordstore.org/" rel="nofollow">https://www.passwordstore.org/</a></p>
]]></description><pubDate>Tue, 24 Jan 2017 20:52:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=13475337</link><dc:creator>kristjan</dc:creator><comments>https://news.ycombinator.com/item?id=13475337</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=13475337</guid></item><item><title><![CDATA[New comment by kristjan in "Show HN: Git alias commands and shortcuts"]]></title><description><![CDATA[
<p>Certainly everything in moderation - I only give letters to commands I literally type hundreds of times daily. Over the past 10 years, I've accumulated 5:<p><pre><code>    b=`bundle exec`, though this is becoming less often used and I may remove it
    d=dotenv to easily wrap a command in environment variables 
        (https://github.com/bkeepers/dotenv)
    g=git
    h=hub (GitHub's extensions to Git)
    j=autojump to move to common directories using just a few characters
        from their name (https://github.com/wting/autojump)</code></pre></p>
]]></description><pubDate>Sat, 18 Jun 2016 16:22:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=11929231</link><dc:creator>kristjan</dc:creator><comments>https://news.ycombinator.com/item?id=11929231</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=11929231</guid></item><item><title><![CDATA[New comment by kristjan in "Show HN: Git alias commands and shortcuts"]]></title><description><![CDATA[
<p>But you're still typing `git` every time!<p><pre><code>    alias g=git
</code></pre>
I've got my Git configs up at <a href="https://github.com/kristjan/.dotfiles/blob/master/.gitconfig" rel="nofollow">https://github.com/kristjan/.dotfiles/blob/master/.gitconfig</a> if you'd like to sift through them. The very most common, like `git status`, get their own Bash aliases too (<a href="https://github.com/kristjan/.dotfiles/blob/master/.aliases#L37-L52" rel="nofollow">https://github.com/kristjan/.dotfiles/blob/master/.aliases#L...</a>). Who can be bothered to type a space?</p>
]]></description><pubDate>Sat, 18 Jun 2016 16:11:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=11929185</link><dc:creator>kristjan</dc:creator><comments>https://news.ycombinator.com/item?id=11929185</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=11929185</guid></item><item><title><![CDATA[New comment by kristjan in "Amazon Web Services terms of use: run far away, run fast"]]></title><description><![CDATA[
<p><a href="https://tosdr.org/" rel="nofollow">https://tosdr.org/</a></p>
]]></description><pubDate>Sun, 12 Jun 2016 18:07:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=11889367</link><dc:creator>kristjan</dc:creator><comments>https://news.ycombinator.com/item?id=11889367</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=11889367</guid></item><item><title><![CDATA[New comment by kristjan in "Ask HN: How to Be a Good Technical Lead?"]]></title><description><![CDATA[
<p>There's some amount of zen to it. Your job is no longer to be the best coder yourself, it's to make everyone else the best coders they can be. I don't have kids yet, but I can imagine some similarities.<p>On the other hand, once a month or so I hide from the office for an afternoon/night and replace some infrastructure or build an internal tool that's never going to get prioritized. Everyone's happy about it, and you get to feel like a bit of a hero :)</p>
]]></description><pubDate>Fri, 16 Oct 2015 00:00:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=10396757</link><dc:creator>kristjan</dc:creator><comments>https://news.ycombinator.com/item?id=10396757</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=10396757</guid></item><item><title><![CDATA[New comment by kristjan in "Complexity theory isn’t required to be a programmer"]]></title><description><![CDATA[
<p>Complexity theory had been explored, if not deeply, somewhat before what we'd consider "typical days of programming": <a href="https://en.wikipedia.org/wiki/Computational_complexity_theory#History" rel="nofollow">https://en.wikipedia.org/wiki/Computational_complexity_theor...</a></p>
]]></description><pubDate>Tue, 24 Mar 2015 19:04:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=9258706</link><dc:creator>kristjan</dc:creator><comments>https://news.ycombinator.com/item?id=9258706</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=9258706</guid></item><item><title><![CDATA[Voyager Spacecraft: Did you know?]]></title><description><![CDATA[
<p>Article URL: <a href="http://voyager.jpl.nasa.gov/mission/didyouknow.html">http://voyager.jpl.nasa.gov/mission/didyouknow.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=9257271">https://news.ycombinator.com/item?id=9257271</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 24 Mar 2015 15:41:01 +0000</pubDate><link>http://voyager.jpl.nasa.gov/mission/didyouknow.html</link><dc:creator>kristjan</dc:creator><comments>https://news.ycombinator.com/item?id=9257271</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=9257271</guid></item><item><title><![CDATA[New comment by kristjan in "Ask HN: What Android Wear apps would you like to see?"]]></title><description><![CDATA[
<p>Google Authenticator voice action to display the current 2FA code for some account</p>
]]></description><pubDate>Thu, 14 Aug 2014 17:13:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=8178477</link><dc:creator>kristjan</dc:creator><comments>https://news.ycombinator.com/item?id=8178477</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=8178477</guid></item><item><title><![CDATA[New comment by kristjan in "Ask HN: What Android Wear apps would you like to see?"]]></title><description><![CDATA[
<p>Tag song button for Soundhound/Shazaam/GooglePlay/etc. Use the watch microphone.</p>
]]></description><pubDate>Thu, 14 Aug 2014 17:12:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=8178468</link><dc:creator>kristjan</dc:creator><comments>https://news.ycombinator.com/item?id=8178468</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=8178468</guid></item><item><title><![CDATA[New comment by kristjan in "A "Hacker's" Guide to the Bay Area"]]></title><description><![CDATA[
<p>On housing, I'm happy to report that Craigslist isn't the only option. <a href="http://apartmentlist.com" rel="nofollow">http://apartmentlist.com</a> is somewhat more pleasant to use and less full of duplicates / other nonsense.<p>Disclosure: I work at Apartment List. Since someone already mentioned LiveLovely, I suppose I'll recognize them too :-D</p>
]]></description><pubDate>Sun, 06 Oct 2013 04:47:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=6503168</link><dc:creator>kristjan</dc:creator><comments>https://news.ycombinator.com/item?id=6503168</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=6503168</guid></item><item><title><![CDATA[New comment by kristjan in "Registration for Google I/O 2013 will open on March 13, 2013 at 7:00 AM PDT"]]></title><description><![CDATA[
<p>Opening google.com/+ shows the cookie is still intact. There's also a ping every 30 seconds to <a href="https://developers.google.com/events/register/waitlist/status/googleio2013_general/" rel="nofollow">https://developers.google.com/events/register/waitlist/statu...</a> that returns {"status":"waiting"}. Trying that URL from a remote console returns {"status":"reregister"}, so the Sign In header appears spurious.</p>
]]></description><pubDate>Wed, 13 Mar 2013 14:09:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=5368435</link><dc:creator>kristjan</dc:creator><comments>https://news.ycombinator.com/item?id=5368435</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=5368435</guid></item><item><title><![CDATA[New comment by kristjan in "Causes Acquires Votizen To Democratize Democracy"]]></title><description><![CDATA[
<p>[Former Causes employee]<p>I always liked the term not-just-for-profit.<p>Congrats on the merge, guys!</p>
]]></description><pubDate>Thu, 10 Jan 2013 19:33:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=5039195</link><dc:creator>kristjan</dc:creator><comments>https://news.ycombinator.com/item?id=5039195</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=5039195</guid></item><item><title><![CDATA[New comment by kristjan in "Review my startup idea: One API to rule them all."]]></title><description><![CDATA[
<p>Singly's working on this, especially as it applies to personal and social data: <a href="http://singly.com" rel="nofollow">http://singly.com</a>.<p>[Disclosure: I work at Singly]</p>
]]></description><pubDate>Wed, 02 Jan 2013 22:31:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=4999727</link><dc:creator>kristjan</dc:creator><comments>https://news.ycombinator.com/item?id=4999727</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=4999727</guid></item><item><title><![CDATA[2.3MM people sign Sandy Hook sympathy card]]></title><description><![CDATA[
<p>Article URL: <a href="http://www.causes.com/sandyhookcard">http://www.causes.com/sandyhookcard</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=4951742">https://news.ycombinator.com/item?id=4951742</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Fri, 21 Dec 2012 06:23:57 +0000</pubDate><link>http://www.causes.com/sandyhookcard</link><dc:creator>kristjan</dc:creator><comments>https://news.ycombinator.com/item?id=4951742</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=4951742</guid></item><item><title><![CDATA[New comment by kristjan in "Singly Launches “App Fabric” Platform For Developers"]]></title><description><![CDATA[
<p>Hours?! I want that to be minutes. Lemme know anything that could be smoother at k@singly.com :)</p>
]]></description><pubDate>Tue, 11 Dec 2012 08:00:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=4903600</link><dc:creator>kristjan</dc:creator><comments>https://news.ycombinator.com/item?id=4903600</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=4903600</guid></item></channel></rss>