Terminal RSS Reader With Nom
I stumbled across nom today, which is a lightweight TUI application written in go that allows you to read RSS feeds in your terminal.
It seems that every few years I get so tired of the bullshit that I decide to get back into using terminal apps. Working in a terminal allows me to pretend that I live in one of those fallout vaults and keep a diary in the black and green terminal that you find next to the stimpacks and radroaches sometimes. I somehow always find my way back to regular applications for one reason or another, but for now I am going to enjoy the comfort and simplicity of the terminal while it lasts.
Of course, this comfort and simplicity comes at a price. Namely, it is uncomfortable and complicated.
Out of the gate I ran into issues. I am not sure if me and every blog I read is doing it wrong, or if this particular app has its schema messed up, but nom looks for content in an xml field called <encoded> and if it does not find it, then it will fall back and show you a link that you need to open in a browser. A lot of the blogs that I read do not use this field at all and instead put the content of the post in the <description> xml tag.
I patched nom to show me the link and the description instead and things seem to be working how I expect them to now. If you are running into a similar issue you can apply the patch below.
diff --git a/internal/commands/commands.go b/internal/commands/commands.go
index 54af59e..2b5dcaf 100644
--- a/internal/commands/commands.go
+++ b/internal/commands/commands.go
@@ -365,6 +365,8 @@ func glamouriseItem(item store.Item) (string, error) {
mdown += "\n"
mdown += item.PublishedAt.String()
mdown += "\n\n"
+ mdown += item.Link
+ mdown += "\n\n"
mdown += htmlToMd(item.Content)
out, err := glamour.Render(mdown, "dark")
diff --git a/internal/rss/rss.go b/internal/rss/rss.go
index 1628b27..87cf395 100644
--- a/internal/rss/rss.go
+++ b/internal/rss/rss.go
@@ -65,7 +65,7 @@ func feedToRSS(f config.Feed, feed *gofeed.Feed) RSS {
if it.Content == "" {
// If there's no content (as is the case for YouTube RSS items), fallback
// to the link.
- ni.Content = it.Link
+ ni.Content = it.Description
} else {
ni.Content = it.Content
}
Thank you for reading! Share your thoughts with me on bluesky, mastodon, or via email.
Check out some more stuff to read down below.
Most popular posts this month
- 2025 Reading Log
- 3 packs
- Growing the CircleCI Community with Discourse
- My Custom Miniflux CSS Theme
- Sacramento Then and Now
Recent Favorite Blog Posts
This is a collection of the last 8 posts that I bookmarked.
- Grow, Like a Tree Not a Cancer from Jim Nielsen’s Blog
- Pluralistic: All the books I reviewed in 2025 (02 Dec 2025) from Pluralistic: Daily links from Cory Doctorow
- DEP-18: A proposal for Git-based collaboration in Debian from Optimized by Otto
- [RIDGELINE] No Phones in The Ten-don Shop from Craig Mod — Writer + Photographer
- My next chapter with Mastodon from Mastodon Blog
- How many pillars of observability can you fit on the head of a pin? from charity.wtf
- The Software Essays that Shaped Me from Refactoring English
- Give Your Spouse the Gift of a Couple's Email Domain from mtlynch.io
Articles from blogs I follow around the net
Hunting for the Hottest Pink Ink
I bought a boatload of pink and pink-adjacent inks to find the hottest one
via Robb Knight • Posts • Atom Feed December 4, 2025The Future of the PostgreSQL Hacking Workshop
The PostgreSQL Hacking Workshop will be taking a well-earned Christmas break in December of 2025. The future of the workshop is a little bit unclear, because I'm continuing to have a bit of trouble finding enough good talks online to justify doing one…
via Robert Haas December 4, 2025Midori MD Notebooks
Over the past months, I gathered all sorts of notebooks. Not all notebooks are meant to be used for the same task. Some are for scratching random bits, some are good for journaling, and some are nice for sketching. For example, I use the Plotter system ex…
via Fatih Arslan December 4, 2025Generated by openring