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

Iceberg Classes and Inheritance
Better developers than I have written about iceberg classes and why they are a code smell. I’d like to talk about a specific kind of iceberg class I’ve recently come across. This type involves inheritance. Here’s an example of what I mean.
class Job

Database Tests with Rollbacks in Clojure
I recently purchased a beta version of Eric Normand’s Intro to clojure.test screencast. In it, he demonstrates how to use the use-fixtures
function to set up and tear down state for tests. The function can be used for :each
test run, or :once
. For...

Hoboken: A Sinatra Project Generator
I'm a huge fan of the Ruby web library, Sinatra. I think its biggest strength is that it allows me to structure my applications to fit the problem at hand, instead of trying to shoehorn my problem to fit a pre-determined structure.
A couple of years...

Setting Up Middleman with Jasmine
Currently, my favorite tool for generating static websites is Middleman. I recently wrote my version of the TodoMVC app using Middleman and KnockoutJS. I wanted to use Jasmine for my unit tests and had a little trouble setting it up. Here are the steps...

GitScore Parts 2 & 3
Here are parts 2 & 3 to the GitScore project. They are a follow-up to an earlier post. I originally intended the screencast to be two parts, but I had to split up part two so that I would be under the allowed YouTube length. I've also put the example...

Delegation in Python
At my current client, we use Python. The other day I needed to wrap a class from the requests library, specifically a response object. I wanted to add a couple of custom methods to the class and have the other methods delegate to the original object...

GitScore Part 1
UPDATE: Parts 2 & 3 are now done.
Recently I've been playing around with Screenflow, creating screencasts illustrating how I build Sinatra applications in Ruby. My goal was to create a few well-polished screencasts, but finding the time is hard. In...

How to Conduct an Iteration Planning Meeting
A couple of weeks ago I wrote an article about how to conduct a Release Planning meeting. This is the follow-up to that piece.
The purpose of an Iteration Planning Meeting is to break down a list of User Stories into tasks to be completed for the...

Pester
A few days ago a colleague and I were having a discussion. We work for Cyrus, an Agile consulting company. Another co-worker of ours is (among a myriad of other things) in charge of making sure our clients are billed correctly. As part of that job...

How to Conduct a Release Planning Meeting
The purpose of a Release Planning meeting is to have a team commit to a release goal in a set of iterations. The output of the meeting will be a tentative release date, a roadmap of time-boxed iterations with User Stories, and a rough estimate for...