Stephen’s Statements A little bit of everything from Stephen Duncan Jr, a Software Developer in Portland, Oregon

Wednesday, August 31, 2005

Spurs Sign Finley

According to Mark Stein, Michael Finley has decided to sign with the San Antonio Spurs! This follows the signing of Nick Van Exel earlier this week. Both players decided to play for the defending champs to in order to help them repeat as NBA Champions. It seems that winning it all, but needing seven games to do it, is helping to attract free agents better than the six-game win in 2003 did:

Asked why he picked the Spurs, Finley said: "In a nutshell, they're already a championship team but they have room for improvement. And I feel my game can help them in the areas where they need improvement."

Monday, August 29, 2005

More on Laura Walker

Searching around to find more information on Laura's death, because obsessively seeking knowledge is how I cope with grief, I found the following article that Laura wrote a few weeks ago about her mission in Afghanistan: The Route to Democracy. Also a tribute post from the Ezine blog after finding out that Laura died.

Sad News: SHAPE Classmate Dies in Afghanistan

Laura Walker, a friend and classmate of mine from the class of 1999 at S.H.A.P.E. American High School, was killed in Afghanistan on August 18th. Laura was a terrific person who I wish I'd gotten to know better. My thoughts are with those whose loss is greatest: her family and all those who loved her.

Friday, August 26, 2005

Comedy Night

Last night Diane and I went out to a comedy club with Jessica Kaizar, a good friend from high school who's been stationed here. It was an amateur comedian contest, and then some pros trying out some new material and getting warmed up for the weekend, so the quality of the material varied quite a bit. But it was a lot of fun.

Thursday, August 25, 2005

My Web Saved Pages Feed

My Web has made more of their pages public. That includes the ability to get RSS feeds! So, here's my feed for my public saved pages. Think of it like a second linkblog, but less focused on timeliness, and more focused on usefulness.

Tuesday, August 23, 2005

SHAPE High School Reunion Pictures

Ryan Spanier has pictures up from his trip to the joint AFCENT/SHAPE reunion that was held in Las Vegas. The only people I recognize are Jared Whitney, Kori Whitney (on the left), and Kristen Martin, who looks prettier when she's smiling :) (Ryan's on the far right).

Pandora: Music Discovery

Want help finding music that you'll like? Pandora is a system for doing that based on musical analysis of songs. You put in an artist or song, and it creates a "station" based on that artist or song, playing similar songs. For now it's free during preview, so sign up to try it out.

Wednesday, August 17, 2005

Common Custom Taglib Problem

I just found this bug today in EXO's portlet taglib implementation. I also hit the same problem when developing custom tags for the first time. So, I thought I'd discuss, and hope that people having problems might stumble across this post.

The hardest part is recognizing the problem. As a consumer of the taglib, I spent several hours trying to figure out the source of the problem by analyzing what my code was doing, and by trying to create a simple test case, and was nowhere close to solving the problem. Only when I looked at the source code (thank goodness for open-source software!) did I realize the source of the problem.

The symptoms of the problem are that the results of using the taglib appear to include attributes and nested parameters that you didn't specify. These mystery attributes are actually coming from another usage of the tag somewhere else (another page, another portlet, etc.).

The problem is the taglib specification allows for implementers, such as Tomcat, to pool instances of the tag. This means that if you use the same tag twice, with the same attributes, the same instance of the tag object will be used. The problem tends to come in when you have nested tags. Such as <portlet:param> tags inside a <portlet:actionURL> tag. The <portlet:actionURL> tag object is reused. If the portlet:param values are stored in a Map instance variable, then parameters from the first usage of the tag will still be around in the second instance of the tag, even if you're specifying different parameters.

The fix is easy. You need to reset any instance variables whose values may vary even when the outer tag's attributes are the same. In this case, the parameters Map needs to be emptied, or simple reset to be a new HashMap. Because you cannot guarantee that the doEndTag method will be called (in the case of an exception occurring), you should play it safe, and reset your instance variables in the doStartTag method.