Sunday, October 21, 2007

Ruby Matters: Unleash the Brainiacs!

ThoughtWorks was early in the game in the Java world. Lots of the standard parts of the Java stack (like CruiseControl, Selenium, etc.) were built by clever ThoughtWorkers from project work (there is a long list here). Working with smart, passionate people who have damn good ideas, coupled with the corporate culture that nurtures open source, is one of the advantages of working at ThoughtWorks.

Fast forward a decade, and the same thing is playing out again. Lots of ThoughtWorkers really like Ruby. And one of the things that I suspected early on was that the combination of ThoughtWorkers and a super powerful language would be a good mix. And I was right.

As we've been doing Ruby projects, ThoughtWorkers have been generating great ideas like mad. Because Ruby is such a rich language, really smart people build really cool things. And, of course, ThoughtWorks likes to open source stuff, which is a good combination. The Ruby part of this equation means that you can build stuff that, while sometimes possible in other languages, is too much trouble, so you just don't do it. Imagine that you were traveling to Chicago a decade ago, and you wondered about the weather forecast. How would you find it? You could call the hotel and trust that someone there knows it. Or you could watch the weather channel and wait for the Chicago forecast to come on. Or you could go to the library and find a Chicago newspaper and look there. All of these were so much trouble that you were likely just to skip it and guess. Now, you can find out in about 10 seconds by using the Internet. Convenience opens possibilities.

Here is a perfect example. Jay Fields, Dan Manges, and David Vollbracht has released a Ruby gem called dust, which makes it easy to do write better test names (and other stuff). Or what about deeptest, which allows you to run unit tests in parallel, written by Manges, Vollbracht, and anonymous z. Or what about Mixology. This is a gem created by Pat Farley, anonymous z, Dan Manges, and Clint Bishop in the Something Nimble crowd that allows you to dynamically change mixins. If you aren't sure what that means, think about the ability to change what interfaces a class implements at runtime, based on some criteria. Not just add new ones, but remove them as well. While not something you do everyday, it does come up and there are good uses for this capability.

As ThoughtWorkers are building Ruby projects, we're helping spawn lots of cool infrastructure (like CruiseControl.rb). Of course, ThoughtWorkers aren't the only ones. But you get a bunch of smart people together combined with a powerful language and good stuff happens.

Check out Something Nimble, a blog maintained by ThoughtWorkers working on Ruby projects, spawning cool stuff left and right.

3 comments:

Nate Austin said...

It looks like Something Nimble moved to www.somethingnimble.com. Your link doesn't appear to work.

Unknown said...

Just wanted to say thanks both taking the additional time to build such tools, and even more so for open sourcing them! I'm a big fan of ThoughtWorks.

Pai Rico said...

It is wonderful to see how powerful languages guides to revolutions in the way we write code. I get really sad when we get comments like this one I read the other day:

"Some new terminology I've been seeing lately:

* "Fluent interface". Each one of your methods only takes one argument
* "Humane interface". You have a bunch of static methods with common English words as names such as 'and', 'with', and you statically import these methods
* "BDD". Unit testing with 'assert' replaced by 'should'."
(http://programming.reddit.com/info/5yp6g/comments/)

But I think that it's probably the same kind of pain that Smalltalkers and Lispers feel for decades. Some technologies and techniques aren't understood until some big three-letter company pack it into a suĂ­te and throws branded giveaways in JavaOne-sized conventions. It has happened to OO, it has happened to Java, it has happened to Linux and it will never (?) stop.

Keep the good work.

http://fragmental.tw/