Skip to content

Category Archives: Uncategorized

Rock’em Sock’em Ockham

Inspired by this talk by Jim Weirich:

Image by scottfeldstein, some rights reserved.

(For the shaving nerds, this poster features the Merkur Hefty Classic, a razor I recently acquired and am so far pretty happy with.)

On Beauty in Code

I was thinking about the topic of beautiful code this morning. There’s a lot of disagreement about what constitutes beauty in code. I’ve watched Marcel Molina Jr. talk about Plato and Pythagoras. O’Reilly has published a whole book on the subject. On the other hand, Jeff Atwood thinks that there’s no such thing.. […]

Sustainable Development in Ruby, Part 3: Delegation

In our last episode we were augmenting FMTP::Message classes to deal with messages split across multiple packets. As is often the case, fixing one problem revlealed another. What with the unstable weather patterns in Oz – you never know when a spacetime-ripping tornado will appear out of nowhere – our flying monkeys sometimes get […]

Why Your Social Website Should Support OpenID

On Twitter I bitched about GitHub not supporting OpenID, and both Chris Wanstrath and Giles Bowkett chided me for not making an better argument for it than “it makes my life easier”.  The benefits of OpenID seem self-evident to me; but if I have to spell it out, here goes.
When I go to a site […]

Announcing Ninja-Patching!

Sure, monkey patching is great and all. That period of disbelief, followed by increasing exasperation as the victim maintenance programmer discovers that an object is behaving differently than it’s source code says it should, is satisfying. But sooner or later he or she wises up and greps through the codebase, discovers where you […]

Sustainable Development in Ruby, Part 2: Method Injection

Sometimes you have a need for an object method which the class author did not foresee. For instance, in our previous installment, we used the following code to accumulate packets until an ending packet was found:

class BufferedConnection < FMTP::Connection def receive buffer = "" […]

Sustainable Development in Ruby, Part 1: Good Old-Fashioned Inheritance

The first technique we’ll look at in this series is something so basic it may not even seem worth spelling out. But sometimes old-school techniques are overlooked in the excitement of a young language.

Let’s use as our example a hypothetical communications protocol, Flying Monkey Transport Protocol (FMTP). Flying Monkey Transport Protocol is a packet-based […]

The Pipe Cleaner Gang

My stepson is a budding artist, and pipe cleaners are his medium of choice these days.  I recently changed seats at work, and the new location is more conducive to displaying the creations he has entrusted to me.  So I give you my new silent audience:

From left to right: Godzilla; Trogdor the Burninator, Strong Bad, […]

Sustainable Development in Ruby: Introduction

This is the beginning of a series of posts on sustainable development in Ruby. No, I’m not talking about writing code on wind-powered laptops while sipping fair-trade coffee. But the sustainable development movement has a fairly direct analog in software development. As programmers, we work within a code ecosystem. The ease […]

Doctor, it hurts when you say that

In your response, for instance, you say “I prefer thinking before writing code.” Well, so do I, but the fact of the matter is some people don’t and some people make mistakes based on inexperience or ignorance even when they do prefer to think before they code.

— Michael Feathers

A standard response in our office, whenever […]