Category Archives: Software Development

Managing oss contributions with Git and Ruby Gems

Once you start using opensource at your day job you are going to want to improve it. Many improvements are going to be generally useful and should be contributed back to the community. A few of these changes may be quite specific and of no value to the community at large. Changes that are generally [...]

Why MySQL Isn’t My Favorite RDBMS — Reason #767

Mysql::Error: Specified key was too long; max key length is 767 bytes: CREATE UNIQUE INDEX … Seriously!? ‘Cause no one would ever want a unique constraint on medium sized varchar column.

Things i never thought i would say

it only shaved a second off the response time so i reverted it It is not often that a full one second improvement to the response time of an HTTP request so insignificant that it is not worth committing.

What are links

When designing hypertext formats is it better to provide links for every available action or to provided links to related resources and let the client use the protocol interface to achieve particular actions on those related resources? I have leaned in both directions at various times. I have never fully convinced myself either. To make [...]

Unobtrusive link info

Mr Amundsen’s recent post regarding the design of “semantic machine media types” got me thinking about media type design. One of the commonly encouraged practices, particularly on the REST discuss group, is the use of link elements. I really dislike this idea. It sets my teeth on edge because it treats links – which are [...]

In defense of link storage

It seems that more and more are beginning to grasp the hypermedia constraint of REST. This is an unmitigated Good Thing. However, once you get hypermedia the idea of a client persisting links that it has found starts to seem a little odd. For example, Kirk Wylie describes clients that store links as “not well [...]

Small pieces

The idea of creating a functioning application by loosely connecting many small pieces has been around for a long time. Certainly since early in the development of Unix, and probably even before. It has survived because it is such a powerful approach. This idea is at the very core of the architecture of the web. [...]

Cucumber

I have been working pretty extensively with Cucumber for the last couple of weeks. In short, it is killer. You should be using it. Having just RSpec/unit tests results in a lot of ugly trade offs between verifying the design and implementation of the parts (or units) vs the system as a whole. Using Cucumber [...]

Reverting changes in git

Note to self: If you need to revert commits that have already been pushed, or otherwised merged with any other repo or branch, use git revert. git reset is exclusively for undoing commits in your local working tree that have not seen the light of day. Attempting to use git reset to undo changes that [...]

Push or pull?

The question of how to communicate events often comes up when designing APIs and multi-component systems. The questions basically boils down to this: should events be pushed to interested parties as they occur, or should interested parties poll for new data? The short answer: interested parties should poll for new data. The longer answer is, [...]