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.
Hi I’m Wes 👋. I like warm weather and tinkering with computers; ranging from small microcontrollers, up to large servers and the operating systems that run upon them. I’m a Rustacean with a fondness for mechanical keyboards. I work at YesLogic on the Prince HTML to PDF converter. Read more on the about page →
Recent Posts Follow @wezm
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.
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.
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.
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.
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.
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.
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.
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.
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.
A selection of projects I've built or contributed to:
Generate RSS feeds from web pages.
Font parser, shaping engine, and subsetter implemented in Rust.
View a 7-day dewpoint forecast for a selected location.
Clone a git repository into a standard location organised by domain and path.
A blog about operating system exploration.
A personal knowledge base.