Red Squirrel Reflections
Dave Hoover explores the psychology of software development

Dave Hoover
dave.hoover@gmail.com

Categories
All [Atom]
Craftsmanship [Atom]
Dynamic [Atom]
Intersection [Atom]
Learning [Atom]
Links [Atom]
Polyglot [Atom]
Projects [Atom]
XP [Atom]
Old Blog

Obtivian Blogs

Andy Maleh
Colin Harris
Fred Polgardy
Jim Breen
Kevin Taylor
Todd Webb
Turner King
Tyler Jennings

Archives

March 2009 (1)
January 2009 (1)
December 2008 (1)
October 2008 (3)
September 2008 (1)
June 2008 (4)
April 2008 (3)
March 2008 (1)
February 2008 (1)
August 2007 (1)
July 2007 (1)
June 2007 (1)
May 2007 (4)
April 2007 (3)
March 2007 (5)
February 2007 (6)
January 2007 (6)
December 2006 (10)
November 2006 (5)
October 2006 (8)
September 2006 (8)
August 2006 (5)
July 2006 (12)
June 2006 (7)
May 2006 (5)
April 2006 (5)
March 2006 (4)
February 2006 (2)
January 2006 (5)
December 2005 (5)
November 2005 (3)
October 2005 (3)
September 2005 (6)
August 2005 (4)
July 2005 (7)
June 2005 (14)
May 2005 (6)
April 2005 (8)
March 2005 (9)
February 2005 (11)
January 2005 (16)
Old Archives

 

Sat, 24 Sep 2005

Apprenticeship Patterns in Sydney

Fellow ThoughtWorkers Daragh Farell and Ben Hogan presented the latest (and increasingly in need of an update) apprenticeship patterns at SyXPAC in Australia. Daragh is obviously quite the PowerPoint afficianado (particularly compared to me) and put together a nice slideshow. I'm looking forward to watching the video they took of the event. Thanks guys!

Simon blogged about the experience the next day. Simon referred to our work as behavioral patterns (as opposed to design patterns). I think that is a useful distinction.

[/craftsmanship] permanent link

Constantine on Agility in 1993

I'm slowly working my way through The Peopleware Papers by Larry Constantine. It is a collection of short articles, which makes it ideal for intermittent train reading. I was reading "Chaos Manners" (Software Development, May 1993) when I was surprised to see the following quotes:
"Genuine innovation requires an agility beyond the traditional tactics of top-down management."

...

"The trick is to bring out and capitalize on the inventive energy of independent thinkers, encouraging free exploration and individual initiative, to foster a kind of creative chaos that hovers on the supercharged edge of running completely amok, a sort of controlled insanity that breaks out of accepted modes of thinking and challenges assumptions about limits and possibilities."
I was surprised because Larry was writing this 12 years ago, yet for anyone who has read Highsmith or Hock, Larry's ideas sound very familiar. On further reflection I realized I was being naive. It is not as if the thinking behind XP or any of the agile methodologies spontaneously sprang into existance. These sorts of ideas ripen over time, blossoming in a specific season under the right conditions.

[/xp] permanent link

Sun, 18 Sep 2005

Dabbling in Ajax Form Validation

For the first time in a couple years I'm doing a bit of web development again. It's just an ultra-simple CRUD application. I had a few days to put it together and after spending the first day experimenting with several different J2EE frameworks (constrained to Java, no Rails for me [yet]), I decided to go with the JSTL database tag library. It fell into place very nicely. Once I had a Selenium test suite in place, I refactored the JSPs mercilessly to remove duplication.

When I got around to implementing form validation, I opted for an Ajax approach using Prototype. In the form's onSubmit action, I used Prototype's Form.serialize and Ajax.Request to call a Servlet responsible for validation. The validation Servlet's sole resposibility (actually it delegated to a Validator) was to return error messages (Content-type: text/plain) based on the parameters it was given. If error messages were returned, they were displayed via Ajax.Request's onComplete. If no error messages were returned, the form posted to the URL in its action attribute. Naturally, my Selenium test suite didn't skip a beat because it can handle Javascript like a champ (since it runs in the browser).

Here's the crux of it...
<head>
<script src="prototype.js"/>
<script>
function validate(form) {
    new Ajax.Request('http://foo.bar/ajax/validate',
                     { parameters: Form.serialize(form),
                       onComplete: function(request) {
                           if (request.responseText == "") {
                               form.submit()
                           } else {
                               // defined elsewhere
                               reportErrors(request.responseText)
                           }
                       }
                      }
                     )
    return false
}
</script>
</head>
<body>
<form action="http://foo.bar/process" onSubmit="return validate(this)">
I found Ajax to be an excellent approach for form validation. There's no need to bother with maintaining state in order to reload the form. The validation code is easily test-driven with jMock (to mock out HttpServletRequest). And the whole process feels much faster since the page never reloads.

Note: I didn't have to worry about Javascript being disabled because this was for an internal audience using the latest browsers.

[/projects] permanent link

Fri, 16 Sep 2005

Friday Focus Group (and Saturday) at PLoP 2005

I've been living in a whirlwind since returing from PLoP. Darth Ravi has been overwhelming us with feedback on Craft Over Art and his thoughts on software craftsmanship. It has been extremely valuable, but brought my productivity to a standstill as I sort through it all. Almost a week after our last focus group, I'm finally blogging it in hopes that it will jumpstart my writing muscles...

It was a smaller group on Friday. It turned out to be extremely valuable to have just half a dozen people there the second night, it allowed everyone to provide much more in-depth feedback. I got to watch people digest the patterns first-hand and was excited as I watched a graduate student latch onto the ideas in Expose Your Ignorance. It was great to be able to finally co-present with Ade the ideas we've been writing about remotely for the last few months. I was pleased that the pattern community found our simple pattern format acceptable.

On Saturday, Ralph Johnson (part of the GoF), spoke about the second edition of Design Patterns which will include some long-awaited warnings against Singletonitis and other pattern abuse. Code examples will be exclusively in Java (as the trees weep).

[/craftsmanship] permanent link

Fri, 09 Sep 2005

Thursday Focus Group at PLoP 2005

It turns out we're going to have two opportunities at PLoP 2005 to run focus groups on the apprenticeship patterns. Last night was the first one and we had the dozen or so attendees focus on Be The Worst. As usual, there were no shortage of opinions, which is always encouraging to me. We received suggestions to change the name of the pattern to something more positive (The Lion's Tail being our favorite) alongside feedback to keep the name as is. There were discussions of the dangers of being the worst in a company that fires the bottom performers and the impact of being the worst on your confidence. The feedback helped me bring out the relationships and dependencies that this pattern has on other apprenticeship patterns like Unleash Your Enthusiasm, Find Mentors, and Retreat Into Competence, along with patterns from other languages like Expert In Earshot. I need to make these relationships explicit in the pattern.

Tonight we're going to have a longer focus group session in order to focus on one ore more collections of patterns. We're wondering whether Expose Your Ignorance and Confront Your Ignorance can be renamed into something more positive and combined into one. We don't think The Long Road and Craft Over Art are patterns and we're wondering how to fit them into a pattern language.

After last night's group, I'm no longer nervous. I'm excited for tonight's discussions.

[/craftsmanship] permanent link

Thu, 08 Sep 2005

PLoP 2005 Begins

I arrived at PLoP 2005 early yesterday morning for pattern bootcamp led by Bob Hanmer and Linda Rising. I left Wheaton at 4:30 AM and arrived in Monticello a little after 7:00 AM (I'll leave my average speed as an exercise to the reader). One of the things I was most looking forward to at PLoP was meeting my co-conspirator, Adewale Oshineye. We worked late into the night on our book, tucked away in one of the dark recesses of the house at Allerton Park.

This exposure to the patterns community has been incredible and sometimes overwhelming. I go through periods of excitement when I can see that the apprenticeship patterns are on the right track and there are other times when I get glimpses at how far we have to go if we want these to exhibit the qualities of a pattern language.

This afternoon marked the beginning of the conference in earnest as we began the series of writers workshops. I am excited to be in the same track with Ralph Johnson and Brian Foote. Tonight, Ade and I will be running a focus group on the apprentice patterns. As always, I'm nervous.

[/craftsmanship] permanent link


powered by blosxom