mht.wtf

Computer science, programming, and whatnot.

rss

April 19, 2025 back to posts

rss is the latest installment in my series of small bespoke services I have written for myself. It looks like this:

rss is a list of recent feed items.

The front page shows the 20 most recent items from ~70 feeds. Items are marked as read/unread shown by the blue dot to the left. This is clickable, and toggles between the two states.

The feed title is also clickable which takes you to the feed detail view. This lists recent items for that feed, and it shows some data for the feed, like the URL. I can also set an alias for the feed, which is then used instead of the feed title; for instance, the title of Chris Wellon's feed is "null program", and I aliased it to "Chris Wellons".

The stack is the same as always: htmx for interactivity, maud for templating, and sqlite for storage. Built and deployed in docker.

I started fetching real feeds early on, and almost immediately I got 429'd by rachelbythebay's feed. I was kinda aware of her writing on shitty RSS feed bot behavior, and all of a sudden I was part of the problem. Sorry, Rachel! (and others, whose bandwidth I wasted) Now I send both ETags and If-Modified-Sinces, and poll once a day at a random time in between 01:00 and 07:00. Well, that was my intention anyways, but seems I got tricked by timezones, so the polling times is in UTC, whereas I probably wanted the times to be local time, since I'm usually asleep then, but probably awake before 09:00.

I have not changed the User-Agent, so whatever ureq does by default is what I'm sending. I assume I'm supposed to set some kind of unique name for the reader and some contact info, but am not sure of exactly what the format is like. MDN contains this example:

Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)

I assume there's some common format for this, but haven't looked more into it yet.

Some things that need improvement:

Like with ppl I'm happy with the result, and unlike ppl, I use rss basically every day. It's fun using something you've made yourself, for yourself!

This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License