Proofing the App

Proofing the App

I wanted to make calzones for dinner last night.  It was getting late, but in my mind I could already see the ricotta and broccoli filling and smell the melted cheese.  I usually buy a blob of dough from one of the local pizza places, but this time I was going to...
Adding Dynamically Named Methods to Python Classes

Adding Dynamically Named Methods to Python Classes

I recently wanted to dynamically add methods to a Python class based on a list of relationships. The model class, Animal, was related to a number of description classes like Color and Sound. For a given animal, I wanted to be able to easily get the values for its...

Upsource: New Code Review Tool

I have a special place in my heart for web apps that make coding management easier.  This week, my crush is Upsource, a new code review tool (and source code repository browser) that’s in a semi-public alpha period....
Factories, not Fixtures

Factories, not Fixtures

For years, the most common way to provide test data for automated tests has been fixtures – hard-coded values, usually stored in text files.  For example, here’s some YAML-formatted data for a city model object: – model: city fields: id: 1 name: Los...
Geopolitical Consequences of SQL Design

Geopolitical Consequences of SQL Design

Or: the consequences of not using many-to-many relationships Is Moroccan food African or Mediterranean?  We designed a simple hierarchical model of cuisines that grouped them by broad geographic area.  The purpose of the model was solely to populate a configurable,...