Announcing: Live From Quarantine Club


Check out!

A project that started as a way to keep up with a daily live show during quarantine, and then morphed into a YouTube player that excels at playlists full of multi-song videos. It lets you shuffle, repeat, set up next songs, and share your currently queue order with friends.

Technically, I had fun building it with @xstate/fsm and TypeScript and trying to keep the size as small as possible. I think the CSS is around 3kb and the JS is 22kb. I originally put it together as some spaghetti-code-script-tag-in-html proof-of-concept in a few hours. And then once I started hitting fun race condition bugs and couldn’t easily implement the features I wanted, I had to rewrite it.

Read more

Playing Around with Unique Random Keys

I had a project recently where I was trying to decide the optimal length for a nice human readable key, while making it unlikely to have collisions while keeping it semi-unguessable.

I wrote the code below so I could play around with different character sets, key lengths, and number of keys while seeing how those affected the timing and likelihood of collisions. The project allowed for retrying in the case of a collision, so this code below allows for those with a random delay to lookup whether a key has been taken already.

Read more

Linode StackScripts

My side project is a mostly static, client heavy webapp, but still requires a few backend pieces to run during its production.

As a primarily frontend developer without a ton of spare time, I try to use as much hosted stuff as possible. I’m currently using a hosted Postgres database at Heroku and a hosted Node.js API at

But it’s always nice to be able to run a VPS for somethings. In the case of, there’s a few watchers to check for entries on Twitter and to get the latest results and save them to the DB. This is something that only needs to happen for a few days at a time and even on those days, the watchers might only need to run for a few hours.

This makes these watchers a perfect candidate for Linode’s hourly pricing. One of the caveats of hourly pricing though is that you are still charged for the instance even if it’s powered off or not in use. So it’s essential to be able to easily and effortlessly spin up and teardown these watcher instances in order to take full advantage of hourly pricing.

Read more

Webtasks as Single Serving Backends

(so you can listen to the same song over and over)


I built the using a webtask as the single serving backend. gives you the ability to run some arbitray code with any HTTP call. One of the features of this that I love is the ability to pass secret parameters to your code, such as auth tokens. In the end this gives you the ability to call authenticated APIs that you couldn’t from your browser without shipping your API client/secret. Think of them as partially applied functions that can be accessed via a simple GET request.

This perfectly fits the bill for any small single page application that has only a few API calls. This is where one of my favorite bands, The National, comes into play.

Read more

Building a Day One Journal as a Static Site


I built metalsmith-dayone to add Day One data to a metalsmith blog.

Over the past year I’ve found that Day One is a great app to keep me “journaling”. It’s easy to use and has a lot of great features that I use to write. It keeps everything private which is what I want most of the time, but I do use it to flesh out ideas for things I might blog or for memories that I might want to share.

This left me wanting to ability easily publish a subset of entries.

Day One does have an export feature, but I found that the publishability of the exports left a lot to be desired. It can do text or HTML, but both of these end up with just one page, even if you export hundreds of entries.

But there’s also a JSON export option! Which meant all I had to do was spend a few nights writing (and rewriting and rewriting) some code, and I’d soon be able to publish a site about all the cute things my daughter does.

Read more