• An immutable version of MobX: SoloX

    In this post, we’re going to develop a state management library for React, which is similar in many ways to the popular MobX library, but which uses immutable data structures. The upside is that this library is increadibly small and easy to use, and you don’t need to worry about wrapping your React components with observer higher-order components. The biggest downside is that you need to be a bit more explicit about when you want to update state, but thanks to the immer library, updates will still be done as if the state is a regular mutable javascript object.

  • Organizing music with Musicbrainz Picard

    I’ve spent some time playing with a couple of different tools for organizing my MP3 collection. If you have a large music collection, you probably have some old songs in there you ripped from CDs, and they might have some metadata that’s not quite up-to-snuff. There’s probably some spelling mistakes in there, and maybe you have some files where the artist is “Blink 182” and some are “blink-182” - things like this. What we want is some automated way of fixing all this metadata, and sorting files into the correct folder based on their metadata. Beets is very popular program for this, but it’s not being actively maintained. MusicBrainz Picard has a nice UI and is pretty easy to use.

  • Setting up HTTPS on a Synology with Let's Encrypt and Route 53

    The Synology now comes with a built in “Let’s Encrypt” client, but unforunately it only supports HTTP-01 challenge, which means if you want to use it you need to open up your Synology to the Internet. The Internet is a scary place, so we’re going to use the DNS-01 challenge to validate we own our domain name.

  • Ubuntu - Wake from bluetooth keyboard

    I recently installed Ubuntu on an old Mac Mini, and I ran into a problem where I couldn’t get a bluetooth keyboard to wake the device (actually a Harmony Hub remote, but it presents itself as a bluetooth keyboard). I did some digging and found this offline page which describes a method for enabling wake-from-suspend for USB devices. This is an attempt at slightly simplifying this.

  • Setting up Jest unit tests in a React + Typescript project

    Here’s what I do when I want to set up a Jest on a React project.

subscribe via RSS