Writing Better Commit Messages with Tmux

I’ve been trying to write more detailed commit messages—breaking down what’s happening in big change sets, explaining problems I encountered and how I solved them, pointing out potential weaknesses in the code or future improvements—but it’s not easy to remember all the particulars while staring at the commit message editor. Fortunately, Tmux can help.

An Introduction to Taxicab Geometry

The narrator of Edwin Abbott’s classic Victorian satire Flatland is a commoner, a simple, two-dimensional square. He lives in a two-dimensional world filled with other flat characters: line segments, triangles, higher-sided polygons, and circles. Circles, in Flatland, constitute the upper classes of society, but if Abbott’s humble narrator had been born in a different flatland, […]

Scripting Vim to Help Run Ember Tests

Years of using the testing framework RSpec has spoiled me. Because you can pass a filename and line number to the RSpec command and it will run only that test, it’s trivial to set up a Vim key binding that runs the test under the cursor. For example, nnoremap <buffer> <LocalLeader>a :exe "!rspec ".expand("%").":".line(".")<CR>nnoremap <buffer> […]

The Practice of Practice

Perhaps the most important ability any person can have is the ability to practice, for by it almost everything else is possible. Since having a daughter, I’ve discovered humans are born with the ability to practice. She practices new skills daily. One day it’s repeating the same sound over and over, another it’s rolling across […]

Implementing the Elm Architecture in ClojureScript

The Elm architecture is a simple and straight-forward alternative to the common model-view-controller architecture, and it’s well suited to functional programming. In brief, the Elm architecture uses a data structure to render a UI, the UI fires actions, and actions are used to update the data structure. This is the same sort of uni-directional flow […]

Getting the Architecture Right

The foundational building blocks of your software determine what’s easy and what’s not. It’s important to know how the choices you make at the lowest level will affect your ability to build features down the road. When your software architecture doesn’t match the problem domain, it feels like walking uphill. When you get it right, […]

Domain-Specific Languages vs. Notation

Programming languages often advertise themselves as being well-suited for writing domain-specific languages (DSLs), languages within the programming language that express the concepts rather than the mechanics of the code. Ruby is probably the most popular such language, but many others—such as Scala, CoffeeScript, and Io—also try to make it easy to write code that’s human-readable. […]