Monthly Archives: September 2006

Insightful drawing

Today my folks spent some time with my son, as they often do (gladly). During this time, he drew the following picture and proceeded to tell my folks all about it:

Insightful drawing

This is me as a big boy. (pointing to the largest face)
Do you know what these are? (pointing to the little marks around the head)
They’re ideas running around my head! (pause)
Sometimes I run out!

As my Mom recalls, the largest face and body is my son as a big boy. The dots around his head are ideas going around in his head. The little person inside the big boy is my son as a baby. The boy in the top right hand corner is my son feeling sad because he was left out.

Needless to say, my son is very social. :-)


It’s good to finally see “Smart Clients: Essential Requirements and Candidate Services” published on MSDN.

This article was something I helped craft when the Microsoft Architect Advisory Board was active. As the article states, MAAB has been retired and many, if not all, MAAB members are now Solution Architect MVPs.

One important name not listed in the acknowledgements is Jon Tobey. Jon took the collaborative work of a group of architects and clarified it into something more publicly consumable. As you might imagine, this was not an easy job–my colleague Greg Poirier characterized it as follows: “herding us like a bunch of alley cats to the finish line.” Thanks, Jon.

And thanks to all my fellow Smart Client Architecture Working Group teammates. Cheers!

The Messenger

While there are distinct differences between a vacation and a paternity leave–I’ve been on the latter for the past four weeks–my time off did afford me the chance to enjoy reading some fiction. My Dad was kind enough to lend me his hardback copy of The Messenger by Daniel Silva, his latest book in the Gabriel Allon series.

This tale made more cursory references to preview tales than in past books. I believe that one could read Silva for the first time in the form of The Messenger without confusion; however, reading each of the previous tales in their own right is recommended. Without giving anything away, this is especially true where this tale is concerned since there is a bit of a changing of the guard underway.

Update 12/1/2008: For more of my book reviews and to see what else is in my book library (i.e. just the business-related or software-related non-fiction therein), please visit my Books page.

From Java to Ruby

As author Bruce Tate says in his work, “[From Java to Ruby: Things Every Manager Should Know (Pragmatic Programmers)] is about moving minds … about risks worth taking.” As I mentioned before, this book was the latest influence in a series of influences that has caused me to develop personal competence with Ruby.

When Bruce talks up front about calling his own significant investment in Java into question–eventually retooling his consulting practice–his candor resonated with me. He wasn’t just talking about Ruby; he was walking the talk in a business-changing manner. As I began this read (completed in the same day), I came to it with a similar sense of skepticism (e.g. about touted productivity gains). That this was shared by the author was refreshingly real.

Thus far in my career one could say that I’ve played it somewhat safe where languages and frameworks are concerned. I develop in both Java and .NET (C#)–typically thinking about programming problems in C#. These communities are large, well-established and active. With the advent of blogs, there is no shortage of seasoned, sound advice to read.

I’ve established thought leadership in both communities, too, by working on expert groups, advisory boards and councils, and through professional recognition for work accomplished. This has come both through years of hard work and also in relationship with others in community–who you know and what you know has certainly proven to be true in my career.

Prior to C# and Java (as well as XML, XML Schema and XHTML), my language of choice was C++, which I still find occasion to leverage. Before C++ (and the transition to object orientation) I developed in C and FORTRAN. My first programming was in Pascal on a Commodore 64. :-) I’ve also dabbled in JavaScript, PHP (mostly to tweak my WordPress setup), and Perl (scripting only).

At this point in time, I have no idea where Ruby will take me and have no plans to drop C# or Java any time soon. I see enough promise in Ruby that the time has come for me to invest some time and energy toward its proper use now.

I choose to focus on the following statements in From Java to Ruby: Things Every Manager Should Know (Pragmatic Programmers):

  • Popular decisions may be safe but that doesn’t guarantee their correctness.
  • As Dave Thomas exhorted, learn how to program better by learning alternative languages such as Ruby.
  • “Value productivity more and inertia less.” Familiarity can breed productivity but it can also breed complacency and even contempt.
  • Unproductive >> cost ineffective >> vulnerable
  • “All things being equal, the more productive language is much less risky…Risk increases with time. Think of time as the perfect medium for disease. Time lets problems fester and grow. Longer cycles increase doubt and decrease morale. When you take too long, you overspend and open the window for scope creep, forcing even more cost overruns and new requirements. Time also opens windows for competition. All of these diseases take time to grow.”

Ruby gives me some pause (e.g. [1], [2]) though too:

  • Ruby has no specification. Its (C-based) implementation is its specification. Charles Nutter of the JRuby project has started a spec-oriented wiki, RubySpec, but it’s too early to tell if this will indeed become a spec or not.
  • Certainly JRuby represents another implementation of Ruby to consider as does RubyCLR et al. Given past history concerning Microsoft and Java, though, I find it ironic and am somewhat anxious to see Tim Bray of Sun say (emphasis mine), “[Sun would] like to ensure that the Ruby programming language, in its JRuby form, is available to the community of Java developers.”
  • Current lack of advanced XML support (e.g. Schemas, Namespaces)
  • Current lack of full WS-* support (e.g. Rails prefers REST as Rails is generally biased toward simplicity)
  • Performance issues that occur more naturally in dynamic languages than static ones

So, I continue my Ruby adventure with eyes wide open.

Update 12/1/2008: For more of my book reviews and to see what else is in my book library (i.e. just the business-related or software-related non-fiction therein), please visit my Books page.