Friday, September 26, 2003

George Plimpton

Of all the celebritry deaths of the season, last nights passing of the writer George Plimpton came as the biggest shock. Not because I'm a big fan or because he wasn't very old, but because to me he was timeless. This man has been present at the edge of my awareness for my entire life. He wasn't larger than life, he was just a regular man always doing interesting things. Of his life Plimpton said, "There are people who would perhaps call me a dilettante, because it looks as though I'm having too much fun. I have never been convinced there's anything inherently wrong in having fun.". The world needs more people who think like this. Its a shame we just lost one.

Thursday, September 25, 2003

Missle Train

My Godson loves trains and I've been thinking about building him a train set. I guess that thought process fired off some dusty neurons from my childhood. It made me recall this wicked cool missle train my big brother had. I figured it was just a product of the times (late 50s, early 60s) but I guess it remains popular today. Not only can you buy the train you can buy a set that contains a missle carrying freight car, helicopter car and a military caboose.

As an aside, I didn't realize how expensive Lionel trains had become. You can spend a fortune on these things.


Roxes a company in Erfurt Germany has released some free Ant tasks that make building a distributable Java application a lot simpler. They call these Roxes Ant Tasks or RAT. There is a task called sfx that creates self extracting executables out of a ZIP file, one called jstub that creates a native executable from a JAR file and one called jnlp that simplifies the creation of JNLP files for Java Web Start.

Wednesday, September 24, 2003

Afternoon with Irish Cows

I was reading the Billy Collins poem Afternoon with Irish Cows last night and for some reason it made me think of blogging. In the poem the person who is the voice of the poem hears a cow bleating or mooing as if in pain. When he goes to look the cow fine but just seems to be anouncing the undeniable cowness of itself. That made me think of blogging. When blogging we are announcing the programmerness or whateverness of ourselves.

Tuesday, September 23, 2003

See a New Sun

Starting a charity isn't easy. I've spent the last year working with a great group of people to start an organization dedicated to suicide prevention. Our mission is to raise money to fund suicide awareness programs for students and teachers. We just got the news today that the IRS has approved our tax exempt status so we can start our fund raising in earnest. It was a big hurdle that I wish I could take more credit for.

One thing I can take a lot of credit for is our organizations name - See a New Sun Foundation or SANS Foundation for short. This name came to me during my drive to work one morning. My wife Jayne had mentioned the word Sun in one of the previous brainstorming sessions and it had stuck in my mind. We wanted a name that offered hope. I thought See a new Sun did that. It spoke to the goals of the organization to help people live another day, fight the darkness of depression and see a new sun. But the clincher for me was when I realized the acronym spoke to the pain that drove the board members and volunteers who would make the organization. We all had lost someone dear to suicide - we were sans someone - without someone. The board was quick and nearly unanimous in adopting the name.

It's was a small contribution but I'm proud of it.

Monday, September 22, 2003

Configuration Source

Dealing with configuration is such a large part of software development, why don't developers don't talk more about it. Is it just too mundane?

Is everyone working in Java so enamored of the Bean style setter pattern? Personally, I think it stinks. The Bean pattern creates a lot of surface area on the class. All those setters often obscure the functional API. A problem that is even worse is the issues related to state transition. Because the setting of the configuration isn't atomic, the object is left in an odd state while the setters are being called. Not good.

One alternative technique I've seen employed is the use of a sibling configuration interface that defines a class’s configuration requirement. Something like:

interface MyConfig {
int getPort();
String getUserName();
double getFraction();

This solves the surface area problem and the state issues but it has its own problems. Problems start to creep in with this pattern as you use the object within another object with its own configuration needs. You could have the containing object's configuration object inherit the interfaces of the contained objects but that's an implementation detail better left hidden. That leaves you needing to provide a proxy for your contained objects configuration needs. This is a maintenance problem. Every time your contained object's configuration changes, you need to change your configuration proxy too.

I pondered these issues and can up with a simple solution to deal with configuration in my latest project. I don't know if the pattern has an official name, but I call it 'Key Based Configuration'. The core of it looks like:

* Supply configuration
interface Configurations {
Object get(String key)
* Consume configuration
public interface Configurable {
void configure(ConfigurationSource configSource);

The very loose coupling between the configuration source and the consumer allows a single configuration instance to be reused between many object. In the most simple case, a system class that manages the overall configuration persistence can just implement the configuration source interface and be passed around.

The pattern is not without flaws, but the following examples show how I deal with some basic problems.

1. The interface is not type safe. Personally, I don't think this is a big issue. I've seen the arguments. Configuration parsing is most often done early and any class cast type exceptions between the producer and consumer will usually show up at startup. If your concern is usability, a simple helper class that adds type semantics can be used to wrap the core configuration source..

public class TypedConfigurationSource {
private ConfigurationSource root;
public TypedConfigurationSource( ConfigurationSource root) {
this.root = root;
public String getString(String key)
return root.get(key).toString();
public integer getInt(String key)
return Integer.parseInt(root.get(key).toString());

2. Namespace issues with reused objects. Sure there can be namespace issues related to multiple instance of the same class with different configuration needs, but these can be handled via a simple namespace wrapper.

public class NamespaceConfigurationSource implements ConfigurationSource {
private String namespace;
private ConfigurationSource root;
public NamespaceConfigurationSource(String namespace, ConfigurationSource root) {
this.namespace = namespace;
this.root = root;
public Object get(String key) {
return root.get(namespace + "." + key);

So far this technique has really worked great. So great in fact I have other thoughts on this topic. But, I will save those for another day.

Friday, September 19, 2003

I'm reminded of a scene from Steve Martin's movie The Jerk. The one where he gets a new phone book and is so excited to find he's been listed: 'The new phonebook is here!, the new phonebook is here!' We'll, today I too am a somebody. I have been spidered by Google and now show up when you run a search for DevelopingStorm.

I guess that means I need to get my comment system finished so I can interact with my reader(s) - hi Bob.
This poster kills me.

Thursday, September 18, 2003

What's your political compass? Mines:

Economic Left/Right: -6.25
Libertarian/Authoritarian: -1.33

According to the map of plotted well-knowns I'm somewhere between Pope John Paul II, Jean Chretien and Nelson Mandela.

I just added a download page for my little editor PE. I also upped my hip factor by creating a 'powered by' style button for it:

Wednesday, September 17, 2003

I like to check the science news every once in while to see what's new in the world. Usually the headlines are not quite as colorful as this honest to goodness headline from Reuters. There's got to be a kilt joke in there somewhere.
Super hero or performance artist, you decide.

Tuesday, September 16, 2003

Surfs up in the Carolinas. I just checked NDBC's bouy 41002 that's about 250 miles off the Carolina coast. At 1pm 9/16/2003 its reporting modest winds of 17.5 knots and gusts up to 23 knots - on the Beaufort Wind Scale that's a 'Fresh Breeze'. Under normal conditions the probable wave height accompanying these winds would be around 6 feet but already there are monsterous 22 foot seas at the bouy. Here comes Isabel.

Monday, September 15, 2003

When I was just a young boy, growing up in Marblehead MA, one of the cool things to do was to make signs up with nautical signal flags. Now you can do the same via this web site.

Example 1

Example 2

Sunday, September 14, 2003

The Far Side pf the Galaxy

I've been a fan of Patrick O'Brians Jack Aubrey series for a few years now. (Not so much a fan as to have made it all the way through the series, but I have read on average two of the books a year for past few years.) So I was a both delighted and bit surprised when I stumbled upon the news that a movie is comming out in November based on the series.
I couldn't tell much from the trailer except that the productions values look fantastic. The director Peter Weir looks to have done a great job with the locations, sets and costumes.

Given the title: Master and Commander - The Far Side of the World, Its hard to say what book (if any) it will follow. The question arises because these are titles from two different books in the series. Its possible that they just chose Master and Commander as the hook onto which possible sequels could be hung and that the plot follows that of The Far Side of the World.
I've speculated with other fans in the past about who might play in a movie version of the book and the names that came up where, Brian Dennehy for Aubrey and F. Murray Abraham as Maturin. They may have been able to pull it off in the 80s but given the passing of time, I think the choice of Russel Crowe and Paul Bettany is inspired. Its also interesting that this is a A Beautiful Mind reunion for the two.

Saturday, September 13, 2003

My friend Don turned me onto Pocket Tanks a small but very addictive artillery game available for both the PC and Mac. The graphics and sounds are simple but very nice. The fun derives from the strategy needed to use the various weapons available. Once you shell out (pun) the 15 bucks for the full version you can spend more money buying additional weapon packs with more fun explosions.

Friday, September 12, 2003

I have a fascination with the ocean and ocean storms, and I find it fun to check out the various bouy weather stations available on the web. While looking over the list of bouys maintained by the National Data Bouy Center I found one that really sparked my imagination. Bouy 51028 off
Christmas Island in the Indian Ocean. You may not have heard much about Christmas Island given its remote location and distance from the US, but its home to a very cool yearly event - Red Crab Migration.

Red crabs crossing the road

I'm a big fan of the Ruby language. I don't use it as much as I could but of all the scripting languages I've studied (Perl, Python and Ruby) I like its syntax the best.
But there's another reason I like Ruby. Simply put, I'm an infracaninophile. Ruby has such a tiny following compared to its peers and the community that surrounds it lacks the polish I see with the other languages. That appeals to me. Case in point - Hal Fulton, author or a really great book called The Ruby Way. He has a web site called Ruby Hacker dedicated to Ruby. The best thing on the site is the set of Ruby limericks. This is not because the limericks are good, only because its such a fun, weird and off-beat thing.
Have you ever wondered what going to church at the Old North Church in Boston is like? Well turns out there a gentleman who goes around reviewing churches and their services. He calls himself The Mystery Worshiper and writes reviews of churches across the country.

Thursday, September 11, 2003

I just read an interesting article in Technology Review about micropayments. Seems that there's a mini resurgence afoot. The article focuses a lot of attention on a company called: BitPass. They supposedly have technology that allows them to keep a very low cost for each transaction. They are only in BETA stage with very few clients of suspicious value. One did catch my eye however: Flying Pig. Flying Pig sells directions for making paper toys for 99 cents. The toys look like a lot of fun. I might just buy one.

Tuesday, September 09, 2003

While looking for web commentary on a very strange movie I saw last night (Begotten) I stumbled upon a rather cool association mapping web site. I initially noticed its interesting UI for displaying movies you might also be interested in. In the case of Begotten it suggests some obvious links like: Eraserhead but other less obvious like: Requiem for a Dream, Memento, American History X, Being John Malchovich, The Holy Grail and Snatch - all movies I like a lot. But what they have to do with Begotten was beyond me. I dug a little deeper and found that the engine of this cool UI is in fact an experimental AI engine called GNOD and not only does it associate movies but it also does it for books, music and websites.

Wednesday, September 03, 2003

Q.) What do the movies

Holy Grail
Sexy Beast
Donnie Darko

all have in common?

A.) Menacing rabbits.

Extra credit it you knew it was 'the rabbit of Caerbannog' in the Holy Grail.

If you've never seen Sexy Beast or Donnie Darko you're missing out. Sexy Beast contains a awesome performance by Ben Kingsley playing a most un-Gandhi like gangster. Donnie Darko is a strange coming of age/time-travel/philosophical/horror/psychological thriller movie - with a big scary rabbit.
I'm sick of frameworks. A classic case of too much of a good thing. When I look over recent release lists on Artima or Java Lobby my mind swims. Folks are trying to build frameworks for just about everything. People have even started to prefix their frameworks with Yet Another, as in YACO' - Yet Another Collaboration Framework
Framework wars have become the OS wars of the 21st century.
The Out Campaign: Scarlet Letter of Atheism