Don't miss a post! Subscribe to my mailing list.
![Vintage space orbit display device with a globe and control knobs indicating orbit time, polar alignment, and inclination degrees.](/images/articles/vintage-space-orbit-display-device-69046988.jpg)
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.
...![A caution sign on a wooden bench warning that the bronze may be hot.](/images/articles/caution-bronze-may-be-hot-6db81e4b.jpg)
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...
![Symbol of context](/images/articles/symbol-of-context-e06e0be4.jpg)
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...
![Coordinated](/images/articles/coordinated-bdb5fe25.jpg)
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...
![Subsequently](/images/articles/subsequently-1bcbf54a.jpg)
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...
![Guide](/images/articles/guide-14c04e9a.jpg)
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...
![shadows](/images/articles/shadows-b9939e63.jpg)
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...
![MSZ-008 Z II(rear booster #9)](/images/articles/rear-booster-aa6a30c9.jpg)
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...
![Running test suite on computer screen](/images/articles/tests-b6209b24.jpg)
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...
![5 different coins in 5 different currency units (Japanese yen, Taiwanese dollar, Malaysian ringgit, US cent, Thai baht)](/images/articles/coins-223e5045.jpg)
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...