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.
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
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.
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.
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.
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.
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.
Lightweight, self-hosted task tracking.
A personal knowledge base.
Curated posts from the Rust community (now in maintenance mode).