Category Archives: Software Architecture

MapReduce talk from Lambda Lounge Presentation

In September I presented on the foundations of MapReduce and MapReduce applications at the St. Louis Lambda Lounge.

It always surprises me how simple the MapReduce algorithm is and how few people really understand it. After the talk I had multiple people approach me and say “I have had elements of MapReduce on my applications for a long time and didn’t know it.”

Continue reading

Which principle was it? Open-closed or dependency inversion?

In my last blog entry I discussed how Test Driven Development (TDD) lead me to a greater understanding of the Open-Closed Principle (OCP). The general feedback from the post was very positive. However, several readers asked a question that I would like to answer. They pointed out that although I was discussing OCP, my example really displayed the Dependency Inversion Principle (DIP). Was my blog post misleading?

Continue reading

How TDD clarified the Open/Closed Principle for me

OpenClosedThe open/closed principle (OCP) (a software concept whose definition I could recite, but whose meaning I hadn’t internalized until recently) simply states:

Software entities should be open for extension, but closed for modification.

Correct application of the open/closed principle results in classes with high reusability, as the classes are built with extension in mind. OCP also provides consistency because established classes do not change after completion. Any developer will agree that reusability is a noble goal, but how do we know when we have achieved it?

Continue reading

Microsoft says you need to change how you are building your applications

Microsoft TechEd 2008 was held in Orlando, Florida the week of June 2nd.  I was fortunate to attend many of the technical sessions.  I was surprised how many speakers were conveying the same message:

Continue reading