Contracts and Integration Tests for Component Interfaces
I am mentoring a team that is transitioning to XP, the first team in a planned, corporate-wide transition. Recently we ran into miscommunication problems about an interface we are providing to another...
View ArticleThe Ascendency of Dynamic X vs. Static X, where X = ...
I noticed a curious symmetry the other day. For several values of X, a dynamic approach has been gaining traction over a static approach, in some cases for several years. X = Languages The Ascendency...
View ArticleAlways <tt>close()</tt> in a <tt>finally</tt> block
Here’s one for my fellow Java programmers, but it’s really generally applicable. When you call close() on I/O streams, readers, writers, network sockets, database connections, etc., it’s easy to forgot...
View ArticleThe Seductions of Scala, Part I
(Update 12/23/2008: Thanks to Apostolos Syropoulos for pointing out an earlier reference for the concept of “traits”). Because of all the recent hoo-ha about functional programming (e.g., as a “cure”...
View ArticleThe Seductions of Scala, Part II - Functional Programming
A Functional Programming Language for the JVM In my last blog post, I discussed Scala’s support for OOP and general improvements compared to Java. In this post, which I’m posting from Agile 2008, I...
View ArticleThe Seductions of Scala, Part III - Concurrent Programming
This is my third and last blog entry on The Seductions of Scala, where we’ll look at concurrency using Actors and draw some final conclusions. Writing Robust, Concurrent Programs with Scala The most...
View ArticleTag: How Did I Get Started in Software Development
Micah Martin tagged me a while ago: How old were you when you started programming. I was around 15. How did you get started programming. This was in the mid-70’s. In school, we had access to a...
View ArticleThe Open-Closed Principle for Languages with Open Classes
We’ve been having a discussion inside Object Mentor World Design Headquarters about the meaning of the OCP for dynamic languages, like Ruby, with open classes. For example, in Ruby it’s normal to...
View ArticleThe Liskov Substitution Principle for "Duck-Typed" Languages
OCP and LSP together tell us how to organize similar vs. variant behaviors. I blogged the other day about OCP in the context of languages with open classes (i.e., dynamically-typed languages). Let’s...
View ArticleConfiguration Management Systems, Automated Tests, CI, and Complexity
I’m working with a client that has a very complex branching structure in their commercial CM system, which will remain nameless. Why is it so complex? Because everyone is afraid to merge to the...
View ArticleUser Stories for Cross-Component Teams
I’m working on an Agile Transition for a large organization. They are organized into component teams. They implement features by forming temporary feature teams with representatives from each of the...
View ArticleTraits vs. Aspects in Scala
Scala traits provide a mixin composition mechanism that has been missing in Java. Roughly speaking, you can think of traits as analogous to Java interfaces, but with implementations. Aspects, e.g.,...
View ArticleA Scala-style "with" Construct for Ruby
Scala has a “mixin” construct called traits, which are roughly analogous to Ruby modules. They allow you to create reusable, modular bits of state and behavior and use them to compose classes and other...
View ArticleUpcoming Speaking Engagements
I’m speaking this Friday at RubyConf on Better Ruby Through Functional Programming. I’ll introduce long-overlooked ideas from FP, why they are important for Ruby programmers, and how to use them in...
View ArticleVideo of my RubyConf talk, "Better Ruby through Functional...
Confreaks has started posting the videos from RubyConf. Here’s mine on Better Ruby through Functional Programming. Please ignore the occasional Ruby (and Scala) bugs…
View ArticleAdopting New JVM Languages in the Enterprise (Update)
(Updated to add Groovy, which I should have mentioned the first time. Also mentioned Django under Python.) This is an exciting time to be a Java programmer. The pace of innovation for the Java language...
View ArticleOrganizing a Chicago Area Scala Enthusiasts (CASE) Group
I’m organizing a group in Chicago for people interested in Scala, called the Chicago Area Scala Enthusiasts (CASE). If you’re interested, join the google group for more information.
View Article1st Ever Chicago Area Scala Enthusiasts (CASE) Meeting Tonight
Tonight is our first meeting, at the ThoughtWorks offices in the Aon building downtown. If you’re going and you haven’t RSVP’ed, either send a tweet to @chicagoscala or reply here ASAP! Hope to see you...
View ArticleTighter Ruby Methods with Functional-style Pattern Matching, Using the Case Gem
Ruby doesn’t have overloaded methods, which are methods with the same name, but different signatures when you consider the argument lists and return values. This would be somewhat challenging to...
View ArticlePat Eyler Interviews Dean Wampler and Alex Payne on "Programming...
Pat Eyler posted an interview with Alex Payne and me (Dean Wampler), which we conducted over email. We dish on Scala, Functional Programming, and our forthcoming book Programming Scala.
View Article