Monday, November 19, 2007

GLSEC was awesome...

The Great Lakes Software Excellence Conference was great!!! I had a chance to meet some of the technical talent here in West Michigan (and beyond), and learn a lot of new and interesting things regarding technology and Project Management.

One of the greatest parts of the conference was listening to Bob Martin speak. I have never heard him speak before, and he is great. He is very passionate about software development. I took away many of nuggets of wisdom from his talk titled Clean Code, and I will plan to share some of them in future posts.

Overall, I think that my talk, Classical vs. Mockist Test Driven Development was well received. I was definitely nervous, especially since I had to follow Bob Martin's Clean Code talk. In the end, however, it is very natural to talk about a topic that you enjoy - in this case Test Driven Development.

I also attended the first day of tutorials offered at the event. I spent the day with Chad Fowler, learning Ruby and Ruby on Rails. I was really impressed with what is capable with Ruby on Rails. To be able to whip out web applications so fast with such little effort, is definitely enticing. If you are a Java Developer, I highly recommend you taking the time to look at this language. I believe that in the future, dynamic languages on the JVM is going to become more and more popular, and it will be important to know these concepts in the future.

Standing ovation to all of the people who dedicated so much time to the GLSEC making this event the success that it was. I am definitely looking forward to it next year.

Wednesday, October 24, 2007

Presenting at GLSEC

Great news!!! Yours truly was selected to present at this year's Great Lakes Excellence Software Conference to be held November 7th and 8th in Grand Rapids, Michigan. I will be presenting on the topic of Classicist or Mockist Test Driven Developer - a continuation / explanation of my original blog post of the same name.

Although I have spoken many times at different local user groups, this will be the first time that I have submitted and been selected to speak at a conference. I have found the whole experience to be quite rewarding thus far - submitting the talk to the council, receiving the acceptance letter /email, and preparing for the presentation.

In addition to being excited about speaking at the conference, I am also excited about meeting and networking with so many wonderful technology professionals. Some of the people you may recognize that are going to be at this event include Bob Martin, of Object Mentor and Chad Fowler the Ruby Maestro. Chad Fowler wrote a very interesting book titled My Job Went to India: 52 Ways to Save Your Job. I have not had a chance to pick up my copy yet, but I did get a chance to listen to a podcast where he was interviewed about his book, and was very impressed with his thoughts and ideas.

I hope that you are all able to go to the conference. I am sure that it will be a great time.

Friday, September 7, 2007

Object Oriented or Still Procedural Driven?

Well, according to Chris Richardson, I am not the Object Oriented Developer that I thought I was. In his talk at SpringOne 2007, he challenged his audience to question whether they are actually doing OOD (Design / Development) or if they have carried over the habits of Procedural Programming into the Java language.

I must admit, he has made me think. Many of the points in his article reflect the types of projects that I have been on - heavy service objects full of business logic while the domain objects are basically reduced to Value Objects / Entities to persist without any business logic being in them. His argument is that this is fundamentally procedural programming brought into an Object Oriented programming language. Instead, we should have the business logic contained within the domain model (which includes both business logic and state) and the service objects that use them are a thin layer around the domain model that clients delegate to.

Overall, I think that this may be a "purist" position on OOD, and I am suspect of the claims of ease of maintainability and supportability are really true. Of course, I am speaking from the position of not having any experience with this style of programming - but I am very curious about it. Ultimately, I do believe that he is promoting the Domain Driven Design approach to software. Does anyone have any experience with Domain Driven Design? Can anyone vouch for this style of programming?

Tuesday, August 21, 2007

iTunes, you are working my nerve...

I don't know if you have experienced this or not, but lately, I have been hammered with so many updates to Apple's iTunes product. Funny how all of these updates coincided with the release of the iPhone. My thought is that they are using these releases of iTunes in order to patch the iPhone. I don't have an iPhone, nor do I plan on getting one. I use iTunes and Quicktime for it's original intent, playing music and watching video.

Is Apple trying to accomplish too much with iTunes? Is it time for them to develop a more modular product that will offer consumers exactly what they need and ignore the rest? If I was at Apple, I would definitely suggest a move like this in their product development. The alternative is to have disgruntle consumers who through the countless number of patches will either lose faith in the product's stability, or simply become annoyed to the point of considering alternatives. Speaking of alternatives, does anyone have any?

Thursday, August 9, 2007

SpringFramework Nugget...

Recently we were dealing with an issue in a Spring based application that was causing us some real problems. We had an integration test that we were using to perform some black box testing. Unfortunately, we were getting test failures because the unexpected state of the springletons (not true singletons, but through the use of spring, they act as singletons). When running a subset of our tests individually, they had no problem. However, when ran in a suite, those same tests that succeeded on their own, now failed.

After some digging, we found that a test that was running earlier was putting the springletons, in an unexpected state, affecting the remaining tests. In order to resolve this issue, we used the setDirty() (See section 8.3.1) on our integration tests to make sure that Spring would reload the objects anew.

I hope this little nugget of information helps someone else out there...

Saturday, July 21, 2007

Barcamp Grand Rapids Returns!!!


We are in the final sessions of the 2nd Annual BarCamp Grand Rapids 2007. Last year was fun, but this year was a blast. Kyle Adams and Dave Brondsema really put a lot of effort into making this year's unconference a success.

Two Google employees, a Senior Technical Recruiter and a Linux System Administrator, made the event this year, with plenty of swag. They gave away T-shirts, notebooks, pens and one lucky guy walked away with an iPod. Envoi Solutions, funded the party. There was great food and great drinks. Some of the interesting talks and Lightning Talks (LT) included:

Package Management for Ubuntu - Matt Alexander of Google
Design Eye for the IT Guy - Kyle Adams
Interaction Based Testing - Matt Heusser and Sean McMillan
(LT) :- SOA and Transactions
(LT) :- Re-inventing the Wheel

The presentations and the content were great, but the best part of the unconference was the people. At this type of event, it is the people that make the conference what it is. Since there was such a great group of people, I think that is what made this years event absolutely great. Looking forward to it next year.

Thursday, July 5, 2007

Model View Presenter

For those of you that did not come to the last Perl User Group meeting, you missed a great presentation which prompted a wonderful discussion on the Model-View-Presenter Pattern (MVP). Primarily being a J2EE developer and with many years of experience with the Struts Framework, I am very familiar with the Model-View-Controller (MVC). I was very interested, however, in this MVP pattern. This is mostly due to the thick client application development that I have been doing lately.

During the meeting, a lot of questions were raised regarding this pattern, and Jason Porrit was very patient with all of us (touche'). After the meeting, I decided to do a little more investigation, and found the following:

Martin Fowler Retires Model View Presenter Pattern

Yes. Believe it or not, this pattern has been retired by Martin Fowler. Well, I don't know if retired is the correct 'r'-word. Maybe it should say 'R'efactored instead. He has split up the pattern into the Supervising Controller and the Passive View. After reading both of the patterns, they sound very similar in detail and in practice. In the Passive View you put all of the widget population logic into the Presenter. All logic is pushed on the Presenter including the population of text fields or any other widgets available on the View. In the Supervising Controller, you push most of the logic onto the Presenter, but leave some of the logic of populating widgets in the View. Martin states:

"...the essence of a good Supervising Controller is to do as little as possible. Let the view handle as much as possible and only step in when there's more complex logic involved."

Atomic Object Presenter First
On a related note, Atomic Object also has their own variation of the MVP Design pattern called Presenter First (PF). After reading an article from Better Software magazine (referenced from their PF resources), I find this design pattern very attractive as well. What most attracts me is the concept of linking different PF triads in order to orchestrate behavior and a process. Please refer tot he Better Software article for more information on this.

Overall, I owe a big thanks to Jason for inspiring me to learn more about this design pattern. I look forward to hearing him present in the future.