Reclaiming My Media Diet with RRSS - A Custom RSS Reader
As I transition to a career in climate tech business operations I wanted to read more about the climate tech landscape. Like many 30 year olds, I entertain myself by scrolling on my phone. Lots of people scroll social media, but I scroll something far more addictive: Hacker News (HN). The site is a list of tech news articles that entertains me while also letting me pretend I'm doing professional development.
I love the format of Hacker News, so I wrote a private news aggregator that has a similar interface for content that I curated.
I eventually came up with this, my custom RSS reader:

screenshot of RRSS, the tool I built
Why I love Hacker News
Jump to section titled: Why I love Hacker NewsThis new tool will replace HN in my flow, so I started by thinking about why I spend so much time there. For reference, here is how it looks in 2025:

For starters, I like the content on the site. It is:
- relevant for my professional skills - In addition to being fun, it's helped me think and talk about the tech landscape more broadly.
- apolitical(ish) - The political sphere is always important, but keeping up with the latest political outrage is exhausting. The articles on HN tend to focus on the impact to business or people (e.g. "Google Maps now shows the ‘Gulf of America’"), not the outrage ("Almost Nobody Wants to Call It the ‘Gulf of America’")
I also like the HN user interface. It is:
- fast - Typing a quick
ne
is enough for my browser to know where I want to go. The site loads quickly--at less than 1 second it's easily the fastest site I use. - information dense - The visual design emphasizes the article's title. The lack of other visual features like pictures put a lot of articles on the screen and make it very easy to skim. Supplementary details are carefully chosen and provide additional context. For example, it's helpful to the article's website because my expectations are different for an article on ieee.org, twitter.com/benswerd, and deepmind.google).
However, it has a few downsides:
- never ending - I've decided that reading to the 300th entry is enough, but there's no satisfying way to be "finished" reading HN.
- inflexible - I want to read more of the premium publications I pay for as well as climate tech industry news. There's no good way for me to add that content without influencing the HN hive-mind which submits and votes for which articles receive visual prominence.
What to read instead
Jump to section titled: What to read insteadI had an exciting opportunity to think about what I want to read.
I wanted content that was:
- interdisciplinary - My interests include tech, startups, established businesses, climate, energy, industry, information security, and the world around me. I want to read about all of them.
- global - The world is a big place, the American media landscape has problems, and I can get around some of that by reading international publications.
I talked with a lot of people in climate tech about how they keep up with the space. People recommended environmental coverage in regular news outlets like FT, The Economist, and Bloomberg. They also suggest a few specialized climate news outlets like Canary Media, and Latitude Media.
Designing a replacement
Jump to section titled: Designing a replacementI considered a few different solutions, namely newsletters and news apps themselves (see rant in appendix), but found they didn't hack my brain in the way HN does. I set out to build a replacement.
User interface goals
Jump to section titled: User interface goalsThe user interface goals mostly amount to "copy the good parts of HN". I want the UI to be:
- fast - It should load quickly enough to be habit forming
- skimmable - I should be able to scroll it faster than a Facebook feed
- finishable - On a slow news day, I should be able to feel like I've read all there is to read and can put the phone down.
Getting the news via RSS
Jump to section titled: Getting the news via RSSHN solves the problem of "what to read" by asking its users to submit articles. My tool will only have one user, so I needed another source.
A classic solution to aggregating different news sources is RSS. In addition to their front pages, most news organizations (and many blogs) also provide a data feed of the news in a machine-readable format. Here is an example of the RSS from the local SF Gate. Anyone can collect these data feeds from around the internet and present them in any way they'd like -- it's their benefit to users and threat to web conglomerates.
RSS's heyday was in the 2000s and its decline was cemented with the 2013 sunsetting of Google Reader, widely recognized as the class-leading way to consume RSS feeds. As a result, not all publishers always provide RSS feeds, but many of the reputable ones still do, and there are some workarounds to get feeds for the publishers who no longer appear to provide them.
Designing and Building the RRSS Application
Jump to section titled: Designing and Building the RRSS ApplicationWith my goals in mind, I could design the application. I wanted to iterate quickly using a tech stack that was easy to deploy. Here were the parts:
index.html
would be my feed reader with a layout that accomplishes my UI goals. JavaScript in that file would grab a JSON blob, do any final adjustments, and then present it to the userload.php
would loop through the RSS feeds I wanted to aggregate, tease apart the XML, and write new entries into my SQLite database. I chose PHP because the code shouldn't be very hard, my Mac already runs a PHP development server, and I have terrible memories from deploying Python applications.rrss.db
would be an SQLite database that keeps state. I prefer SQLite over other file schemes like JSON because I find SQL data manipulation easy and universal. I decided to keep all the data in one table that has a few columns:url
(the primary key, to prevent duplicates),publish_timestamp
(what we sort on), andtxt
(a JSON blob that represents the article as it appeared in the RSS feed).rrss.php
would grab relevant articles fromrrss.db
and serve them as JSON toindex.html
rrss.json
a later creation, but simply the output ofrrss.php
written to a static file
All things considered, the application was pretty easy to develop. I used the standard PHP XML library and wrote some custom logic to ensure most of my RSS feeds parsed successfully.
Deploying RRSS on a Free PHP Host
Jump to section titled: Deploying RRSS on a Free PHP HostI chose PHP because it's often super easy to deploy (drag files to server, be done). However, finding a free spot on the internet turned out to be the most challenging piece of this project. I wanted to visit example.com/rrss from any browser and see my feed!
I can easily host on GitHub Pages or Cloudflare Pages for free, but that only works for static sites. I wanted to refresh my RSS feeds periodically (I eventually decided on every 5 minutes), and that usually requires a more expensive host.
I hosted it for a few months with InfinityFree in 2024, but stopped when their service stopped including Cron (a way to automatically run my update code every 5 minutes). I tried again in 2025 thinking that I could have one of my other computers run cron and simply curl load.php
, but I discovered that InfinityFree actively stops requests from Curl.
I stumbled on Oracle Cloud and set up their free hosting. It was more challenging than I'd have expected - I wrote a small guide to help others. Once I figured out Oracle's networking, I then had problems running my application code:
- I needed to install PHP extensions for features I thought were built in like XML and SQLite.
- PHP had trouble reading/writing to the sqlite file when it was called via Apache. To get around that, I wrote another script that runs via a PHP command line and writes the output of
rrss.php
torrss.json
so that it can avoid the Apache -> PHP -> SQLite sequence. - Then I tried to handle all the PHP execution via Cron instead and found that I needed to more completely reference the path to my database file (
PDO("sqlite:".__DIR__."/rrss.db");
was successful;PDO("sqlite:rrss.db");
was not). - I changed from doing the HTTP request with
file_get_contents()
tocurl_exec()
becausefile_get_contents()
on Oracle could not successfully get the feed from Financial Times even though it worked on my Mac.
Compared to the simple experience I've had running simple PHP scripts on my development environment and shared hosts like InfinityFree, I was surprised at how much I had to configure the Oracle VPS.
But that's finished now, the code is a bit more robust, and for now I have a working product! Check it out (for now) at cloud.srcramer.com/rrss.
Run it yourself!
Jump to section titled: Run it yourself!You can download the code on GitHub
Appendix: Finding RSS feeds
Jump to section titled: Appendix: Finding RSS feedsAnother roadblock was finding RSS feeds. Back in the heyday of RSS a browser button surfaced RSS feeds, but that no longer happens. Here are some places to look:
- the website footer - look for it next to the social media icons or in a link called "feed"
- Search - Googling "{org} RSS" is likely to turn up an ancient page listing where the feeds used to be, like the BBC's documentation from 2011
- Reddit - Some sites like NPR have feeds, but the documentation is a Reddit post
- add
/feed
- platforms like Wordpress or Substack have feeds, but you need to guess the pattern. Likeconstruction-physics.com
->construction-physics.com/feed
. - Google News - formats search results as an RSS feed when the URL parameters are like
https://news.google.com/rss/search?q="cleantech"
Appendix: Why I dislike the alternatives
Jump to section titled: Appendix: Why I dislike the alternativesBuilding tools is a fun way to get exactly what I want while learning something new, but it often takes longer than I'd expect. Here are some alternative ways I considered to meet my same need.
Newsletters are hard to skim
Jump to section titled: Newsletters are hard to skimI think there are two main categories of newsletters. Those that contain:
- one piece of original content, like the one from Bits About Money or Doomburg. It's not reheated, it's not published anywhere else, and I can tell from the subject line whether I want to read it.
- "curated" links from around the internet
I love the ones with one piece of original content. The subject line works like an article title (because, often, it is). The first words tell me what it's about. The entire thing is designed for skimming.
I have trouble with the other type. I find it too hard to skim. For example, which would you rather read: this synopsis of a news article buried in an otherwise great newsletter...
🌊 London-based geospatial analytics startup Ocean Ledger raised €900,000 pre-seed funding to scale its AI-powered coastal risk forecasting solutions, which use satellite imagery and machine learning to help engineering firms, municipalities, and insurers manage climate-driven shoreline threats.
...or the title of the news article itself from its publisher...
Ocean Ledger secures €900k to increase accuracy of coastal risk management
I'd rather read the title of the news article. Or, ideally, both: one piece of information with the succinct title and Climate Hack's keyword-stuffed description. Typically, just reading the headline will give me enough info to decide if I want to read the article.
Many of the newsletters with one piece of original content already have an RSS feed to integrate into my RSS tool. Since a lot of good climate links are shared via "curated" link newsletters, I’d like to build a scraping tool that will extract links from "curated" link newsletters for data sources that do not have an RSS feed.
Newsletters arrive on the wrong cadence
Jump to section titled: Newsletters arrive on the wrong cadenceA newsletter makes sense when it's something that I want to commit myself to reading. But it doesn't do well for that awkward gap of "I'm bored this second, help me find something informative and useful right now". Instead they're mixed in with all the other work I want to not think about in my inbox.
To make matters worse, the curated links newsletters suffer from their delay in publishing: the author needs to read the article, wait for the next newsletter, and then send it in the next newsletter.
Too many publisher apps
Jump to section titled: Too many publisher appsI could also simply visit all of the sites that contain content I find interesting. But there's simply too many to remember.
One of the exciting parts of my professional skill set is that it's really broad. I want to keep up on the latest developments in programming, information technology, business, geopolitics, energy, and cleaner ways to make physical products. The best nuggets are buried in the pages of technical publications, not on the headlines.
Also, a polling strategy could over-poll top-of-mind news outlets (like NYTimes) but leave me forgetting about other useful perspectives (like Der Spiegel).
Other RSS readers don't work for me
Jump to section titled: Other RSS readers don't work for meI didn't do an extensive review of the RSS reader ecosystem, but I tended to find them annoying:
- The apps take a while to load.
- The web apps need you to log in with an account. I often use a stateless web browser so logging in is annoying.
- The display is often more picture-forward, or show snippets at the wrong density.
- The best features aren't always free. I don't begrudge news organizations charging for their services but it's frustrating to pay for something that's so simple.
Social Media is miserable
Jump to section titled: Social Media is miserableI could have taken out a Blue Sky account and found the content that's there. But I want to own my experience.
Read a physical newspaper
Jump to section titled: Read a physical newspaperOh that would be great. I need something a bit more addictive, though, to compete with Hacker News.