Blog

Thoughts and musings, code samples and technical information, and generally whatever else I find hard to find on the internet.

Running one-off tools from docker compose profiles

Your development tools deserve to be versioned, easily installed, and quickly run from docker — and using docker compose with profiles enabled can make your team happier and more productive.

Configuring DNS to send secure email in 2021

Even if you use a third-party email service like Mailchimp, Sendgrid, or AWS Simple Email Service, the security and deliverability of your emails depends on a set of DNS records on your domain.

The Cynefin decision-making framework

The appropriate way to lead a group changes based on the situation you find yourself in — is it right to command people without listening to their input? This framework for thinking can help make that choice.

Migrating from .dev to .localhost with puma-dev

I’ve been a long-time user of Pow, but with Google’s purchase of the .dev top-level domain, I’m in search of a new way of running Rack-compatible local applications. I’ve found puma-dev to work well over the new top-level domain of .localhost.

Get in loser, we’re going agritouring

Operating a business transparently can sometimes feel like you’ve got too many cooks in the kitchen — and design by committee rarely results in quality. There’s a big difference between being interested in something and being involved in something — and walking that line can result in openness without a loss in focus.

Hacking WMATA SmarTrip cards

An overview of the technical details of Washington DC’s transit cards, including which off-the-shelf RFID readers were able to read card data.

NPM install ignores the --production flag

When running npm install with the –production flag, the presence of a shrinkwrap file can cause it to install packages not listed as production dependencies.

Understanding D3 selection operations

Selection operations in D3 (a library designed to help transform DOM elements in response to data sets) can be a bit tricky without understanding how D3 keeps track of your data.

IE 11: hidden inputs in labels

Internet Explorer and Edge do not always focus inputs within label elements when the label is clicked and a hidden input is present.