Feed Canary

December 22, 2023 3 min read

Nearly learning in public.

Even with automated tests, I still manage to break my RSS feed sometimes without knowing. This is a bummer, of course.

I scratched an itch and made a simple feed-checking app, and in an unusual-for-me step I’ve made it something you can use too: feedcanary.com.

How it Works

You submit a valid RSS feed along with an email address, confirm with an emailed link, and Feed Canary perpetually checks that feed and sends you an email if it disappears or fails to validate.

Every email has a link back to feedcanary.com where you can see the feed URL with its status, and delete the monitor.

Checks run about every ten minutes. I’m not sure I need them more than once a day, but that’s extremely unsatisfying to test and to fix. (If the feed fails, Feed Canary will also email you again if it notices it’s fixed.)

Under the Hood

It’s a Laravel app running on a tiny VPS, which I could upgrade easily enough if this is useful to more than a handful of people.

I haven’t worked with Laravel in a while, and part of this is easing back in and getting comfortable with the lay of the land.

Everything depends on the scheduler and the queue worker: scheduler routinely deciding which feeds should be checked and pruned (if unconfirmed after a few days), queue worker diligently running the checks.

I’ve got exception handling and performance traces going to Sentry, since the checks themselves are expensive and network-dependent and I’ll want to keep a close eye on anything that might hurt reliability since it’s the whole point of the app. (What happens if the feed itself and the feed-checking app are down? Who monitors for that?!)

Unfinished

I’ve got some real barebones, uncomfortable CSS, an honor system that doesn’t stop you from submitting the same details several times, and emails that distinctly lack joy.

The queue also stopped working once and logged mismatched PHP version errors that don’t make much sense as I’m explicitly running the same PHP version for every web and console request. I restarted the queue and it was fine. But I expect I have something else to learn there. Tidy, performant queue operations are critical here.

The whole thing will probably melt if throngs of people add feeds, but that’d be a nice problem to have since I’d be thrilled if this was actually useful for someone other than me.

I don’t want you to see whatever mistakes I make with it, but I admire people that share what they’ve made and how they make it so this is my quiet little attempt to do that.

The server it runs on is inexpensive, and I’d like to keep this a free thing that doesn’t cost much to maintain. If that becomes a burden, I’ll probably ask for donations or think through paid features that might help it break even. (These basic checks will always be free though—that was the whole point!)

So anyway if you’ve got a feed or two you want to monitor, pop it in there and follow along! I’ll do my best to keep Feed Canary chirping when it’s supposed to.