Sergio and the sigil

Design Patterns in Ruby - book review

Posted by Sergio on 2008-07-22

I have a friend that is very much into Design Patterns and wanted to learn Ruby with a more applied perspective of the language.

I went the exact opposite direction. I know a little bit of Ruby already and I wanted to improve my limited patterns knowledge.

What we had in common is that we both picked up Design Patterns in Ruby by Russ Olsen. The title can be a little deceiving in that you might think it assumes Ruby knowledge, but no, it actually covers the Ruby language at a level that doesn't bore the reader with programming basics. The book assumes you know how to program already but you're new to Ruby.

After an introductory chapter about Ruby basics, the book delves into Design Patterns, their formal definitions, how they look like in Ruby, how to leverage Ruby features to tweak the patterns, and examples of the pattern being used in examples extracted from the Ruby class library or popular components (gems). As the examples and tweaks are being presented, any new Rubyism being applied is explained.

I found this book to be a great way to learn more about the Design Patterns and the proper way to implement them in Ruby. I also learned a little more Ruby and some language features that I did not know how to use yet.

The Great Devlicio.us Giveaway

Posted by Sergio on 2008-06-05

Because there's more than one kind of hero

Update: The contest is now closed. We cannot accept any more entries. Wait for the winner announcement is a few days. Thanks for all the great submissions.

Here's your chance to win a well-deserved prize for being a good developer — and not just any prize. Devlicio.us, with the generous support from Microsoft (via Somasegar) and Addison-Wesley, is proud to present you with a contest that will dump a truckload of goodness at your doorstep. This ultimate prize package contains the following items.

  1. Agile Principles, Patterns, and Practices in C#: Uncle Bob's must-have work. This book needs to be part of your Agile and OOD bookshelf.
  2. Domain-Driven Design: Tackling Complexity in the Heart of Software: Eric Evans describes DDD and how your software design can benefit from it.
  3. Applying Domain-Driven Design and Patterns: Armed with the DDD knowlegde, now it's time to let Jimmy Nilsson show us how to implement solid .NET code.
  4. Patterns of Enterprise Application Architecture: In this classic, Martin Fowler lays down the law on how an enterprise application needs to be designed.
  5. Working Effectively with Legacy Code: We've all been there. It's hard and Michael Feathers does a great job in guiding us through the challenges and techniques to get you out of the quicksand.
  6. Implementing Lean Software Development: This book by Tom and Mary Poppendieck distills practices to optimize the development process.
  7. The Pragmatic Programmer: From Journeyman to Master: No list of this caliber would be complete without Andy Hunt and Dave Thomas' ultimate guide to developer proficiency.
  8. Visual Studio 2008 Team Suite + MSDN Premium: No need for explanations here. A $10K+ retail value item with all you'll ever need in terms of Microsoft technology.



The Contest

I hope the prizes got you excited. I actually envy you because I cannot participate. The contest is pretty simple.

  1. We are looking for success stories. Submit a true story that happened to you or your team where adopting good software development practices rescued a project or even the entire organization. The stories we want to award are the ones that demonstrate a direct relation between good practices or good design (or both) and successful solutions. Examples:
    • Continuous Integration saved my job.
    • DDD made my application survive the test of time.
    • My team went from grumpy to engaged after we introduced collective design ownership.
    • etc...
  2. Submit your stories by email or using the Contact link to any of the Devlicio.us bloggers between today (June 5th 2008) and ~2 weeks from today (June 20th 2008 by 5 PM ET GMT-4:00).
  3. The winner will be chosen by voting among the Devlicio.us bloggers. This might take up to 1 week.
  4. The winner story will be announced on Devlicio.us on or before June 20th and it will become a guest blog post on the blog to which it was submitted (so remember to protect the innocent in your story.)
  5. Shortly after that, the winner will be contacted for mailing address information and the prize will be shipped.
  6. Other stories might be selected to feature as blog posts as well - with or without any prizes.

Restrictions

The stories need to be of your own personal experience, within your team or your organization. Since the story has a chance of being posted in Devlicio.us, make sure the people and organizations mentioned in the story are OK with that or replace their names.

We think we can ship the prize anywhere but if you're not in the U.S. and there's some form of export or import regulation that prohibits the shipment of software or even the books, then we may not be able to send it to you.

Get to the writing already

We are anxious to hear your stories. Prizes like these don't come by often and we really want to reward someone for doing the right thing.

JavaScript: The Good Parts - book review

Posted by Sergio on 2008-05-11

I just finished reading Douglas Crockford's JavaScript: The Good Parts and it only took me a few hours to go through it this weekend. This is a short and delightful read. The book has not been released in print yet and I read it via O'Reilly's Safari Bookshelf, which will be the subject of a future post by itself.

Update: The book became available almost at the same time I posted this review.

In its 170 pages the book describes not only the HOWs but, most importantly, the WHYs of the JavaScript language. Douglas Crockford is known for his great contributions for JavaScript development, including JSON, JSLint. JSMin, and several programming patterns and practices.

In this book, Douglas explains JavaScript and how it differs from other popular object oriented programming language. Special attention is given to JavaScript's inheritance model and scoping rules.

Crockford doesn't limit the coverage to what is considered good in the language design. He also sticks his finger at the problems in the language and what he considers (justifiably) bad language design and missing features. A lot of attention is also given to common sources of bugs and how to avoid them.

This is such an easy and valuable read that I have to recommend it to anyone trying to produce solid and maintainable JavaScript code.