Matthew Ernisse

Original: September 18, 2022 @12:19
Edited: September 24, 2022 @16:55

Shortly after leaving Linux for Mac OS X on the desktop many years ago I left Mozilla for Safari. While I still mostly use Safari I do find myself having to keep Firefox around for the occasional site that doesn't seem to work right in Safari, and naturally I use Firefox on my Windows PC. Over the last few years though, the organization behind Firefox continues to make more and more questionable decisions, bloating the browser and making it uglier. I started trying to combat this sad trend by switching to the Extended Support Release channel which worked for a while but with the sunset of version 78 some of the more awful features have finally been forced upon me. This sent me looking for other ways to try to manage the situation that don't require me to screw around in the settings every time the browser updates to make sure it isn't leaking private data to some ad partner, or Google, or Cloudflare. Thankfully there is a mechanism designed for enterprise IT departments that lets you disable some of the more annoying features using a simple JSON file. After a quick read through the documentation I was able to create a policies.json file that I was happy with that works on both my Windows 10 and macOS Catalina systems.

More (66%) …

August 30, 2022 @23:07

My Wyse WY-60 Terminal in GLORIOUS green A long time ago terminals were physical things that only displayed ASCII text and they typically defaulted to 80 columns. This lead a tremendous amount of software and convention forming around line lengths of between 70 and 80 characters. These days the world has moved on and RFC 3676 came around to try to find a way to bridge the gap between those of us who prefer 80 columns and monospaced fonts and those who have never seen, or just don't care about that world.

More (19%) …

August 05, 2022 @19:05

I hate this keyboard with the passion of a thousand suns There was much rejoicing this week as it was time for a new work laptop and that means I was finally able to get rid of one of the worst laptops Apple ever made, the regrettable MacBook Pro 13" with the Magic Keyboard and Touch Bar. I am quite picky about keyboards in general as it is the primary method that I interact with computers. While many people may prefer touch interfaces or gestures I find the keyboard to still be the most efficient and expedient input device we have. I was spoiled, growing up with IBM PC keyboards and then eventually moving to IBM Thinkpads. They really set the bar for keyboards in my life and everything ends up being compared to them. All that is to say that the Magic Keyboard with Touch Bar is the worst keyboard I've ever used. The last 2 years I've been mostly working from home using an Apple USB keyboard and have spared myself the most of the frustration and hatred of the vile thing.

More (17%) …

July 11, 2022 @21:45

Where we started

Tiny Tiny RSS Interface My first RSS feed reader was a custom built Perl / PHP monstrosity back in the early 2000s. I later switched to Google Reader and then upon its inevitable sunset to Vienna. As I found myself reading feeds on multiple devices more I found myself wanting a centralized system with a single repository that I could connect clients to and have feed state synchronized. The server application I settled on at the time was Tiny Tiny RSS. I was able to get a plugin working that provided a compatible API to Reeder, which I used on my iPad and the web interface sufficed on my various desktop and laptop machines.

More (7%) …

Original: July 04, 2022 @20:45
Edited: September 06, 2022 @17:50

I have had several complaints about Mailman 3 being the result of an unfortunate set of decisions that lead to the replacement of Mailman 2.

More (6%) …

April 21, 2022 @12:21

I've been going over the various things that have crept into my day-to-day computing and evaluating them. In some cases I've found things that needed maintenance (perhaps a future post about refactoring my mutt configuration is called for), and in others I've taken the opportunity to evaluate alternatives.

More (4%) …

April 09, 2022 @20:45

Mutt, running inside tmux, somewhere on the Internet I can't imagine it will surprise any regular reader that my preferred MUA is mutt(1), and has been for close to 20 years now. I only switched to using Outlook at my current job a few years ago when they decommissioned the IMAP bridge and forced everyone into it. One of the things I've found myself having to deal with more lately is unsubscribing from marketing e-mails. Typically this was a trivial matter of finding the unsubscribe link and visiting it; however, it seems that lately all links in those e-mails come wrapped in click trackers that are blocked by one or more of my proxy server, DNS configuration, or content filter extensions, making unsubscribing difficult. Luckily RFC 2369 seems very well adhered to by even illegitimate e-mail marketing campaigns so I set out to try to solve the problem in the usual way. Angrily writing software.

More (35%) …

Original: March 30, 2022 @21:58
Edited: April 01, 2022 @23:20

Many years ago I starting building out an extended layer 3 network using IPSec tunnels with GRE tunnels on top of them. As technology moved on I transitioned these from Linux to OpenBSD using isakmpd(8) and then eventually iked(8). I automated the various configuration steps using Puppet and all in all I have been very well served by this over the years. I use IPSec to terminate all of my road warrior client connections as well so it means that the complexity serves several needs. I happened to be upgrading some Mikrotik routers from RouterOS 6 to 7 and noticed they added Wireguard support. I had been hoping Ubiquiti would add Wireguard to the UniFi USG so I could try it out since the version of strongSwan they ship is embarrassingly out of date, but it seems like they have mostly abandoned that product. Armed with an excuse I set out to see what it would take to start up a tunnel.

More (25%) …

March 25, 2022 @19:35

I browse the web a little differently than most. I vastly prefer the experience of reading feeds instead of relying on some algorithm and a pile of notifications to direct my attention. To facilitate this I funnel quite a lot of 'modern' content into an ever-growing pile of rage-written software to turn it into various RSS feeds that I can then plug into my reader ecosystem and enjoy at my leisure. Recently I found a RSS to news gateway from the creator of gmane called Gwene. I spent an evening looking at the list of groups, adding a few of the RSS feeds into my reader but there is no way I can take the time to look at all of them so that brings me to the ask! Below is a list of feeds I'm subscribed to, minus my bespoke Instagram, Twitter, Patreon, Tumblr, and YouTube feeds. If you think you know of some that I might like or that I'm just not subscribed to that you think I should be please let me know.

More (18%) …

March 09, 2022 @13:07

For some reason every single time I go to do any work on my colocated server that requires remote console access I end up having to remember how the silly console redirection works. Presented here in the vain hope that I will find this next time I need it and perhaps that it may help someone else.

More (52%) …

January 12, 2022 @12:20


Starting just before the holidays I found myself back on the kick of working with LEDs. About 7 years ago I started making a little microcontroller based controller to drive LED strips and generate some interesting effects. I've used this in a bunch of situations with WS2812, WS2811 and APA102C based LED strips (Adafruit tends to call these NeoPixel or DotStars) over the years and recently decided to reorganize the code into more generic building blocks. In doing so I moved a bunch of the heavy lifting to a little library which allowed me to step back and do some thinking about how I might want to build up larger effects in the future. Since I do all my microcontroller development in C the natural fit seemed to be to create a sequence of actions as an array of structs. The structs could contain some conditions and a function pointer to be executed. It is also possible to have the condition be a function pointer, enabling the triggerable events so the controller can respond to stimulus or use the random number generator to change up patterns. With this in mind I designed the sequencer. It takes two arrays of structs, one for the sequence and one for the optional events. It turns out that not only was this easy to implement, but there wasn't a tremendous amount of special work needed to support the split memory architecture of the AVR platform. At the time of writing the whole file is right around 100 lines of code.

More (38%) …

January 01, 2022 @22:00

In keeping with last year, here are the 10 most visited posts as tracked by the metric collection system that I wrote in 2018.

More (12%) …

November 03, 2021 @16:53

About 11 months ago I upgraded the main server in my home network and I figured it would be a good time to take a look at look back and gauge if it has been a success. The new system is comprised of the following components.

More (6%) …

October 08, 2021 @14:15

If you follow my thoughts microblog you may have noticed that I finally had to replace my router. The new to me motherboard is a SUPERMICRO X11SDV. I was finishing setup on it and discovered that I do not have the IPMI password. Turns out that getting it may be tricky, especially if you have one of the motherboards that didn't ship with their BMC Unique Password Security Feature, but got it via a firmware update. This means you may not have the default password on a label on your board.

More (37%) …

September 26, 2021 @14:15

When I originally installed the UniFi Video system at the house I was pretty happy with it. While rudimentary it was remarkable in that it was a prosumer grade system that was able to run entirely on premises. I installed the controller application on the same VM that runs the UniFi controller for the networking system and was reasonably happy.

More (27%) …

Subscribe via RSS. Send me a comment.