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

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...

Command Pattern for Sinatra Handlers
One useful pattern I've found when writing Sinatra applications is the command pattern. For those that are not familiar with it, here is a simple example to start with:
class MyCommand
def initialize
# initialize some stuff
end
def call

The Rule of Three
If you're not familiar with it, the "Rule of Three" (aka "Three strikes and you refactor") is a guideline attributed to Don Roberts. I first ran across it a few years ago while reading Martin Fowler's Refactoring. Here's the full quote from the book...

Driving Technical Change
I purchased Driving Technical Change by Terrence Ryan as part of a Pragmatic Bookshelf sale a few months ago. Overall I thought it was a good book, though a bit basic. One handy tool I got out of it was the "Skeptic / Technique Matrix". In the book...

Heroku Slug Compiler Optimizations
Using .slugignore
to reduce your slug size
This may be old news to some, but I recently learned about a cool Heroku feature: the .slugignore
file.
What is it?
A .slugignore
is like a .gitignore
file for your app. It is used to reduce the size of...

RubyMotion: Clearing Out motion-stump Mocks
Update: The pull request mentioned below has been merged and motion-stump
clears mocks automatically now, so this after
block is no longer necessary.
This one had me "stumped" for awhile. When using motion-stump mocks, you need to clear them in an...