Apr 12, 2022

Designing a split keyboard: the egg58

Late last year, I was finally exposed to the comfort of the Ergodox – a staggered-column, split keyboard. However, having been using 60% keyboards for the previous decade, I felt like it had too many keys. While some minimalist split ortho options did exist, I found many of them too minimal or too diverged from the Ergodox design, which I did like in theory.

Like any sane person, I proceeded to learn an entirely new skill in order to fulfill my need for a keyboard that was kinda like an Ergodox but with fewer keys.

Feb 20, 2022

A demonstration of TDOA multilateration

Yesterday, a thread popped up on r/Albuquerque where users attempted to identify the source of a loud explosion in the early morning. A few individuals provided their locations and timestamps at which their surveillance cameras detected the sound. I thought I could use this information to pinpoint its source using multilateration.

Feb 5, 2022

How not to build a gaming PC

Over the past month and a half, I’ve been battling the various ghosts and demons that have apparently taken residence in the ancient server chassis that I am now using as a backend for a Steam Link. Since I doubt anyone else on the Internet is insane enough to do this, I suppose I am mostly making this post for myself to refer back to when it inevitably breaks. If, by chance, you do find this useful, then that is merely a coincidence.

Dec 11, 2021

Revised smart doorbell adapter circuit

In a previous post, I described issues encountered when integrating the Unifi G4 Doorbell with a digital chimebox. I designed an adapter circuit, and it worked for a few months; however, eventually I started encountering problems and upon further investigation discovered that some of the assumptions I made about the behavior of the Unifi chime adapter module were incorrect. With this new information, I designed a new circuit which is actually simpler and should be more reliable.

Jun 25, 2021

Pulseaudio configuration for soundboard routing

Pulseaudio has been the default audio engine in Ubuntu for several years now, and fortunately it has a very flexible module system that lets you route and mix audio. Today, we’ll be looking at how we can set it up to mix mic and soundboard inputs into a virtual source.

Jun 19, 2021

Adapting a smart doorbell to an incompatible digital chime

Update (2021-12-11): It turns out some of the assumptions I initially made were incorrect, and the adapter circuit described within eventually stopped working. After further investigation, I have made a revised circuit. Refer to the new post

For a few months, I’ve been using an Ubiquiti G4 Doorbell, but recently chose to upgrade my mechanical chimebox to a digital one. Though The Ubiquiti store lists the NuTone LA600WH as compatible, it turns out there are some caveats which I managed to overcome by conjuring up an adapter from parts I had lying around. This technique can likely be adapted to work with other doorbells or chimeboxes that don’t play nice with each other, and avoids spending money on a commercially-available adapter.

Jun 14, 2021

Dependency and build management for sourcemod with sourceknight

Though I haven’t been playing with it for long, I’ve found that compiling plugins for sourcemod is a huge hassle, mostly due to how dependencies are managed – that is, they really aren’t.

For those who don’t know what sourcemod is, you probably have no interest in reading this article. But, if for whatever reason you want to read it anyway, sourcemod is a mod for Source engine game servers that provides support for custom scripts and plugins.

The Source engine is fairly old, dating back to Half-Life 2, but many games based on it such as Team Fortress 2 and Counter-Strike: Global Offensive still have a thriving community with active custom servers. Many of these community servers rely on sourcemod to provide various features as well as support for custom game modes.

Unfortunately, the state of sourcemod plugin development is largely “download a bunch of files, put them somewhere, hopefully have them organized correctly, and pray.” I aimed to fix that through the creation of the tool I’m writing about today: sourceknight.

Nov 19, 2020

Tools to check for compromised Keepass passwords

It’s 2020, and by now everyone should know the basics of password hygiene: use strong passwords, don’t reuse them across sites, etc. A password manager such as Keepass is an essential tool for keeping track of all the passwords you inevitably end up with under this set of rules.

Unfortunately, no matter how good your passwords are, there’s always a chance that they’ll get compromised. For example, a website might have a breach and someone can obtain your password regardless of how hard it would have been to guess. In cases like these, services like Have I Been Pwned can let you know this has happened. However, if your password is leaked in something like a large credential-stuffing dump, it might not be obvious which sites you may need to change your password on.

Mar 28, 2020

A highly customizable RGB controller implementation for Arduino

I recently decided that I needed to add some color to my workspace, but didn’t want to just use any off-the-shelf RGB controller. My first thought was to use an Arduino to control some RGB strips, but I didn’t want to have to to open the Arduino IDE and modify the firmware every time I wanted to change the program.

This desire eventually escalated to implementing a virtual machine on top of the Arduino with an application-specific instruction set designed to easily manipulate LEDs.

Mar 8, 2020

Timelapses from Landsat data

I thought it would be cool to extend the scripts I posted about yesterday with the ability to create a timelapse.