Exemplary documentation: size and purpose

There's a lot to say about programmer-focused software documentation. It's more crucial than many developers think, so it is often neglected. Even when its not neglected, it's often an after-thought. I've noticed there are three kinds of documentation I'm interested in. When I first come across some software, I want short and focused examples of … Continue reading Exemplary documentation: size and purpose

The Third Shift

In the days of industrial labor, many factories ran three shifts per day. Three eight-hour shifts per day keeps a factory fully utilized and some business major's spreadsheets happy. Luckily, for many of us, knowledge/thinking oriented businesses don't usually follow this paradigm. We're not (often) pressured to pick up a double shift, possibly freeing time … Continue reading The Third Shift

Lessons from premature design

Lessons from Premature Abstractions Illustrated. I've run afoul of all three of these: Make sure you have someone on the team or externally available that will keep the critical, outside look at the project, ready to scream and shout if things turn bad. Don’t let your technical solution influence your design decisions. It’s the tool … Continue reading Lessons from premature design


People argue about words all the time. In the past two weeks, I've participated and watched as nerds unproductively tried to convince each other that they are incorrectly using the words bijection, hypermedia, and dependency injection. Nerds easily fall into this trap because many of us are fascinated by knowledge, sharing that knowledge, and teaching … Continue reading Semantics/Empathy

Design for test vs. design for API

How many design considerations are there in an almost trivial method? Let's look at two of them. Consider this code: def publish! self.update_attributes(created_at: Time.now) end If you've been studying OO design and the SOLID principles, using TDD as a practice to guide you towards those ideas, there's a missing piece here. The reference to Time … Continue reading Design for test vs. design for API

Intermediate variables, organizing OO, meeting Grinders half way

I work with Dave Copeland at LivingSocial, but not on the same team. Maybe someday I’ll fix that, but for now I learn a lot from his writings. Herein, a few things worth checking out yourself. If you ever need to read my code, you’ll eventually come to suspect I have a particular dislike for … Continue reading Intermediate variables, organizing OO, meeting Grinders half way

Why I’m down on hypermedia containers

In response to my hypermedia opinions, Mike Kelly said: These two seem to conflict: “In my opinion, abstract container formats aren’t useful.” and “Just use JSON”. People normally talk about “generic” media types, but they don’t have to a “container” at all, they can simply add conventions for linking. Having conventions for this stuff is … Continue reading Why I’m down on hypermedia containers