Back in 2021 I was eagerly awaiting the final episodes of Arcane to finish airing on Netflix. On November 20th the last 3 episodes came out and I had plans that night to watch it that night with a few friends. Unfortunately I made the mistake of using YouTube that morning and in my feed I was greeted with a thumbnail that spoiled a major event in this week’s episodes.

    I was pissed.

    It was insane to me a show that had been out for less than 10 hours was already being spoiled by YouTube’s feed algorithm. So I took an oath to stop using YouTube and did so by using the RSS reader Newsboat. I installed Newsboat, and it did help me avoid scrolling through YouTube and seeing videos I didn’t want to see, but I thought I could take this a step further. If I could keep all the site’s content that I cared about offline for my RSS reader I wouldn’t have to visit the site at all when opening the link on Newsboat.

    And thus, Newsdock was born.

newsdock logo

What is Newsdock?

    Newsdock is a mechanism I wrote for caching and opening Newsboat feed items locally. If the content has been cached by Newsdock and exists on your computer it will be opened with your OS’s default programs, otherwise it will take you to the site it is sourced from.

demo

    So when I start my computer I’ll kick off newsdock update (through my systems startup scripts and when I open feed items from Newsboat that include videos I can just watch it on my preferred video player, MPV, as opposed to the browser defined by Newsboat. If the feed item is a textual document I can read it using a version of the webpage cached by Newsdock. It’s a pretty simple tool, but I am pretty happy with it.

    For more on how to configure and use it, check out the project’s README.

Why Newsdock?

    In recent years I’ve been getting more frustrated with the way platforms encourage us to consume massive amounts of low effort content. A lot of video media is just someone clipping a longer movie or show into a 30s clip, cropping it, then and then uploading 50 of these a day Platforms like YouTube and Instagram and Facebook promote this by shoving as much of it in front of an audience as they can on the home or discovery pages. It’s easy to fall down a hole of just mindlessly scrolling and watching bottom of the barrel videos and memes because it’s just always in front of us. That’s not to say social media is bad, but the way it is curated, I believe, is predatory.

    With RSS readers like Newsboat we can curate our feeds a little better so as not to fall into ruts of constant consumption. I just wanted to go further with this idea with Newsdock. By keeping certain media on my device I wont even have to tempt myself with the internet.

Where does Newsdock go from here?

    Newsdock has hit it’s 0.1-alpha2 release. Anyone who wants to use it should have a minimally working experience. There are a handful of issues left to improve the project’s efficiency (such as correctly implementing async code), features (like supporting a Newsdock config file), and code quality (like writing tests). I’ll tackle these as I feel like it, and if this project get’s any real traction I’ll put more focus on them than I previously planned. Of course I will review any pull requests that come my way, so if any reader here wants to contribute then I welcome you to do so. For the near term though, I’m satisfied letting this sit in an alpha release since it does what I need it to. In the more distant future I would like to move to a beta and a real first release and if it needs to become a little more serious than just a personal project that is cool with me.

    I’ll be ready for it.

The below are my personal feelings following the project. So if you were just here to figure out what Newsdock is then feel no need to read further.

What I’ve learned from Newsdock:

    Newsdock is the second major project I’ve written in Rust. R-Todo was my first and it was deeply flawed. I had picked up R-Todo as a project to really learn the language instead of just writing tiny single file tools, so when I was developing it I made a huge number of bad assumptions, and just sort of designed it as I was coding it. I tried to improve on my development patterns in Newsdock so I came in with a design, a little more knowledge, and a stronger desire to solve a problem that bothered me a lot.

    Having read a few more books on Rust coming into Newsdock I thought that I was in a much better place to make it presentable, but I’m not as seasoned as I would like to be. I did my best with what I thought was a sensible design or pattern but I for sure made a lot of mistakes that a stronger engineer would cringe at. In any case this was a marked improvement from R-Todo, so I’ll take that little win for now. I’ll just make sure to keep educating myself so I can write better software as I continue down this career path.

    I’ll be honest, this project took a lot out of me. I’ve been working on it since the end of December on top of my full time job, a side job, and preparing for interviews so my mental bandwidth over the last couple of months has been at it’s limit. I thought this project would be easy and wouldn’t take as long as it did, but other obligations slowed it down, and I did not think I would hit nearly as many corner cases as I did on this project. Thankfully, Rust does a good job of forcing me to handle those oddball cases sooner, otherwise I would have had to spend significantly more time debugging, testing, and coding. I honestly don’t know how much longer this would have taken had I chosen to develop this in Python or something else. In any case, this whole project has been a good learning experience so hopefully the next thing I do can move a little quicker.