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
- SQLite DB Migrations with PRAGMA user_version
- Using cgit
- Lev Lazinskiy
- Convert Markdown to PDF in Sublime Text
- Making cgit Pretty
Recent Favorite Blog Posts
This is a collection of the last 8 posts that I bookmarked.
- AI Mania Is Eviscerating Global Decision-Making from Ludicity
- No-One Escapes the Permanent Underclass from Fernando Borretti
- Is it ethical to use AI? from charity.wtf
- The logical destination of LLMs from Andy Bell
- Revised rules of engineering leadership. from Irrational Exuberance
- The circus freaks of open source from Drew DeVault's blog
- Clanker: A Word For The Machine from Armin Ronacher's Thoughts and Writings
- I ran a half-marathon! from gluecko.se
Articles from blogs I follow around the net
Pluralistic: AI solipsists and AI cynics (24 Jul 2026)
Today's links AI solipsists and AI cynics: You don't have to believe that AI "works" to believe that it's a good investment. Hey look at this: Delights to delectate. Object permanence: Malware v stolen computer; Industrial material made from old coffee and...
via Pluralistic: Daily links from Cory Doctorow July 24, 2026Safari and system design, pt. 2
Around the time I was writing about iPhone’s Safari breaking the expected “tap to jump to the top” gesture, a conversation on social media pointed to yet another thing that this tab control does strangely. A typical use of Safari means two groups of sites:...
via Unsung July 23, 2026Issue 107 – An unserious offer
The crypto industry has spent $200 million to get a bill too corrupt for Democrats to pass and a president too corrupt to sign anything that might meaningfully limit his grift.
via Citation Needed July 23, 2026Generated by openring