👨‍💻 Wesley Moore


Looking for posts made before 2020? Check out the previous version of my website.

Hide Sign in With Google Pop Up

Inspired by Rach Smith’s post on using userstyles to hide YouTube shorts I came up with some CSS to hide those annoying Sign in with Google pop-ups.

Continue Reading →

divmod, Rust, x86, and Optimisation

While reviewing some Rust code that did something like this:

let a = n / d;
let b = n % d;

I lamented the lack of a divmod method in Rust (that would return both the quotient and remainder). My colleague Brendan pointed out that he actually added it back in 2013 but it was moved out of the standard library before the 1.0 release.

Continue Reading →

Garage Door Monitor Update

The garage door monitor that I built earlier in the year has by all accounts been running perfectly since I installed it. Recently I implemented a couple of new features that I’ve wished for over the last few months.

Continue Reading →

Resuming Read Rust Tweeting

The Read Rust Twitter account crossed over 10K followers in the last few days. Amazingly 4350 of those coming after I stopped regular posting. This got me thinking about the account and how I might be able to use it to benefit the community while avoiding the overhead that led me to winding things down in Sep 2020.

Continue Reading →

Generating RSS Feeds From Web Pages With RSS Please

Sometimes I come across a web page that I’d like to revisit when there’s new content. Typically, I do this by subscribing to the RSS feed in Feedbin. Unfortunately some sites don’t provide an RSS feed, which is why I built RSS Please (rsspls). RSS Please allows you to generate an RSS feed by extracting specific parts of a web page. In this post I give a bit of background on the tool and how I’m running it in my Docker infrastructure.

Continue Reading →

Monitoring My Garage Door With a Raspberry Pi, Rust, and a 13Mb Linux System

I’ve accidentally left our garage door open a few times. To combat this I built a monitor that sends an alert via Mattermost when the door has been left open for more than 5 minutes. This turned out to be a super fun project. I used parts on hand as much as possible, implemented the monitoring application in Rust, and then built a stripped down Linux image to run it.

Continue Reading →

Fixing Monospace Text in Kobo eReaders

After verifying with friends that eBook readers do a decent job of rendering technical content I purchased a Kobo Libra 2 this week. I loaded up some books and started reading… but something was off. Sure enough, after verifying the EPUB with Calibre on my computer I confirmed that the Kobo was not rendering text with CSS rules like font-family: monospace in a monospace font.

Continue Reading →

Alpine Linux and Docker Infrastructure Three Years Later

Three years ago I published, Rebuilding My Personal Infrastructure With Alpine Linux and Docker, in which I described how I was hosting various applications using an Alpine Linux host and Docker on a virtual machine at Vultr. I thought it would be good to write a follow-up on how this worked out.

Continue Reading →

ASCII-centric Usernames

I’m working on a web-based side project in my spare time. The great thing about side projects is you get to make all the choices and question the common wisdom. Recently I’ve been building out the sign-up flow and I started thinking about usernames—specifically the characters that they may be comprised of.

Continue Reading →

RustConf 2021

A few weeks ago I got up at 2:30am and attended virtual RustConf 2021. The pre-recorded talks were live-streamed and there was a dedicated Discord server for discussion and Q&A while the talks ran. It was overall well organised and a good experience. All the talks were interesting and well executed. The Discord chat was fun but I’m not sure it added a lot to the value of my experience.

Continue Reading →

Burning 2.5Tb of Bandwidth Hosting a Nitter Instance

On 24 August I received an email from Vultr saying that my server had used 78% of its 3Tb bandwidth allocation for the month. This was surprising as last time I looked I only used a small fraction of this allocation across the various things I host.

After some investigation I noticed that the Nitter instance I set up six months ago at nitter.decentralised.social seemed to be getting a lot of traffic. In particular it seemed that there were several crawlers including Googlebot and bingbot attempting to index the whole site and all its media.

Continue Reading →

Turning One Hundred Tweets Into a Blog Post

Near the conclusion of my #100binaries Twitter series I started working on the blog post that contained all the tweets. It ended up posing a number of interesting challenges and design decisions, as well as a couple of Rust binaries. Whilst I don’t think the process was optimal I thought I’d share the process to show my approach to solving the problem. Perhaps the tools used and approach taken is interesting to others.

Continue Reading →

One Hundred Rust Binaries

I recently completed a #100binaries series on Twitter wherein I shared one open-source Rust tool or application each day, for one hundred days (Jul—Nov 2020). This post lists binaries 1–50. See page 2 for binaries 51–100.

Continue Reading →

Slowing Down Read Rust Posting

After nearly 3 years and more than 3200 posts I’m going to slow down the posting frequency on Read Rust. I hope this will free up some spare time and make it easier to take breaks from social media. I aim to share all of the #rust2021 posts I can find, but after that I’ll probably only share posts that seem particularly noteworthy or interesting.

Continue Reading →

Working Around GitHub Browser Sniffing to Get Better Emoji on Linux

I have my system configured to use JoyPixels for emoji, which I consider vastly more attractive than Noto Color Emoji. Sadly GitHub uses browser sniffing to detect Linux user-agents and replaces emoji with (badly aligned) images of Noto Color Emoji. They don’t do this on macOS and Windows. In this post I explain how I worked around this.

Continue Reading →

Setting the amdgpu HDMI Pixel Format on Linux

This week I discovered some details of digital display technology that I was previously unaware of: pixel formats. I have two Dell P2415Q displays connected to my computer. One via DisplayPort, the other via HDMI. The HDMI connected one was misbehaving and showing a dull picture. It turned out I needed to force the HDMI port of my RX560 graphics card to use RGB output instead of YCbCr. However, the amdgpu driver does not expose a means to do this. So, I used an EDID hack to make it look like the display only supported RGB.

Continue Reading →

Software Bounties

I don’t have time to build all the things I’d like to build, so I’m offering bounties on the following work.

Continue Reading →

Comparing Alternatives to top Written in Rust

Recently I aliased top to ytop. Then I became aware of bottom, and zenith. These are all terminal based system monitoring tools that you might use instead of top. In this post I set out to compare them.

Screenshot of ytop, bottom, and zenith while building some Rust code
Left to right: ytop, bottom, and zenith.
Continue Reading →

New Design 2020

It’s been more than 10 years since I started working on the previous design for this website 😅. This feels like a good point to come up with a new one!

Continue Reading →