Don't miss a post! Subscribe to my mailing list.

Why I Use Test Driven Development
I first heard about Test Driven Development (TDD) in 2003. I have been using it ever since. People ask me from time to time about TDD and why I find it useful. This post is an attempt to answer that question that I can point to when someone asks.
...
One Tip for Writing Better Git Commit Messages
Want to improve the quality of your Git commit messages? Here's a quick tip: don't rely on the -m
flag when writing the message.
Over the years I've noticed something about the people I worked with that wrote great commit messages. None of them relied...

The Most Important Question A Commit Message Should Answer
(Note: I previously wrote this article for a blog that no longer exists, so I'm re-posting it here. I've updated a couple of the examples to use more recent ones.)
Many people have written about various guidelines for writing a good commit message...

What's the Point of having a Stand-up Meeting?
Over the years I've participated my fair share of daily stand-up meetings. The ones I hate the most are where someone (usually a manager) reads a list of tasks, asking about each one. These type of stand-up meetings tend to drag on for an hour or more...

Workflow for Using Ruby Bumpversion
A few years ago while working on a Python project for a client, I came across a tool called bumpversion. It was written in Python and was used to modify the version of a package before publishing. It used semver language, so the command bumpversion...

Guidelines for Writing Commit Messages
Many developers take the skill of writing a good commit messages for granted. It is an essential skill that requires discipline. While there are a variety of guidelines and opinions about writing them, I'm going to share my current preferences. These...

Middleman, Shadow-CLJS and React
A few months ago I wrote about integrating Middleman with Shadow-CLJS. Today I'm going to expand on that by showing you how to add React to the mix by making a simple BMI calculator from scratch. I'm not going to spend too much time explaining the...

Middleman Shadow-CLJS Project Template
Awhile ago I wrote about how to set up Shadow-CLJS with Middleman. I finally got around to making a Middleman project template to ease the process of setting up Shadow-CLJS. The source is available on GitHub.
To use the template, you'll need to have...

Write the Assertion First
When writing automated tests (whether in a TDD fashion or otherwise) I find it helpful to write the assertion first, before any setup code. There are two main reasons I think it is helpful.
One, I think it's useful to begin with the end in mind. Writing...

Formatting Currency in JavaScript
The other day I needed to format some currency values in JavaScript. I remembered coming across Intl.NumberFormat a long time ago on another project, but browser support was sketchy. I looked up the most recent info on caniuse and thankfully almost...