The Wrong Abstraction (2016)

I've been thinking about the consequences of the "wrong abstraction."  My RailsConf 2014 "all the little things" talk included a section where I asserted: > duplication is far cheaper than the wrong abstraction And in the summary, I went on to advise: > | Continue reading


@sandimetz.com | 3 years ago

Second Edition of 99 Bottles of OOP in Ruby, JavaScript and PHP

Continue reading


@sandimetz.com | 3 years ago

The Half-Life of Code

I've been thinking about the half-life of code. In his Software that Fits in Your Head  talk, Dan North defines the half-life of software as (I'm paraphrasing) "the amount of time required for half of an application's code to change so much that it becomes unrecognizable … | Continue reading


@sandimetz.com | 3 years ago

How Shall We Define Design?

I love object-oriented design.  It’s like open source software in general; perfect strangers come up with ideas that can save me time and money and then, out of the goodness of their hearts, go to a fair amount of trouble to pass these ideas on.  I benefit from their ef … | Continue reading


@sandimetz.com | 3 years ago

What Does OO Afford? (2018)

Good Morning, I've been thinking about the affordances  of programming languages. A Little Background In my previous post, Breakin Up the Behemoth , I posited an explanation for why OO apps so often evolve a few, disproportionally large, unmaintainable, condition-filled … | Continue reading


@sandimetz.com | 4 years ago

Duplication is far cheaper than the wrong abstraction

I've been thinking about the consequences of the "wrong abstraction."  My RailsConf 2014 "all the little things" talk included a section where I asserted: > duplication is far cheaper than the wrong abstraction And in the summary, I went on to advise: > | Continue reading


@sandimetz.com | 5 years ago

What Does OO Afford?

Good Morning, I've been thinking about the affordances of programming languages. A Little Background In my previous post, Breakin Up the Behemoth, I posited an explanation for why OO apps so often evolve a few, disproportionally large, unmaintainable, condition-filled classes. Un … | Continue reading


@sandimetz.com | 6 years ago

Breaking Up the Behemoth

I've been thinking about how applications evolve, and what we might do if we're unhappy with the results.  Three apparently unrelated ideas have been percolating in my head.  In this newsletter I'll introduce each one and connect them together, in hopes that understanding these c … | Continue reading


@sandimetz.com | 6 years ago

Why We Argue: Style

I've been thinking about why we argue about code, and how we might transform vehement differences of opinion into active forces for good. My thoughts spring from a very specific context.  Ten or twelve times a year I go to an arbitrary business and spend three or more days teachi … | Continue reading


@sandimetz.com | 6 years ago

Make Everything The Same

As part of my local ruby meetup (#westendruby), I've been dabbling in katas and quizzes.  Having worked several, I can't help but notice that my solutions are sometimes radically different from the others. Hmmm. | Continue reading


@sandimetz.com | 7 years ago

POODNYC 2015 Scholarships have been awarded

Scholarships for the Oct 19-21 Practical Object-Oriented Design Course (POODNYC) in New York City have been awarded!  Winners are listed below, but before I introduce them I'd like to give an overview of the applicant pool and selection process. | Continue reading


@sandimetz.com | 8 years ago

Suspicions of nil

I'm feeling suspicious of nil. What is nil? In a recent newsletter I pondered true and false, and suggested that thinking of them as normal, everyday objects could expand your ideas about OOP. Today I'll continue with this theme by considering nil.  What _is_ nil? A straightforw … | Continue reading


@sandimetz.com | 9 years ago

POODNC Scholarships Have Been Awarded

Scholarships for the Oct 29-31 Practical Object-Oriented Design Course (POODNC) in Durham, NC have been awarded! Winners are listed below, but before I introduce them I'd like to give an overview of the applicant pool and  selection process. I'll be awarding scholarships for futu … | Continue reading


@sandimetz.com | 9 years ago

The Shape at the Bottom of All Things

I've been teaching a fair amount, which means I've been revisiting my 'class problems' regularly. When I chose the problems, I thought that I understood them completely (hubris, I know) but now that I've worked them repeatedly I'm seeing new and surprising things. These new thing … | Continue reading


@sandimetz.com | 9 years ago

Getting It Right By Betting On Wrong

Imagine driving from Denver, Colorado, to Death Valley National Park. You get on I-70 and head west, climb the front range, cross the high peaks of the Rockies, descend Colorado’s western slope into Grand Junction and then make your way across the Utah dessert to Fishlake Nationa … | Continue reading


@sandimetz.com | 9 years ago

Ruby Case Statements and `kind_of?`

You’re an object – Stand up straight and act like one! Imagine you have this code: | Continue reading


@sandimetz.com | 14 years ago

SOLID Design Principles - Dependency Injection

Nothing is more pleasing than beautiful code.  And nothing is more heart-breaking than watching beautiful code get destroyed. Lately, I’ve been paying particular attention to SOLID Object Oriented Design (OOD) principles and their interaction with TDD.  I’m finding that, while TD … | Continue reading


@sandimetz.com | 15 years ago