Wednesday, September 27, 2006

Firefox 2.0 RC1 released

The next version of Firefox has reached RC1.

Download your copy here.

Two minor things that I find handy:

1. Close buttons on the tabs instead of all the way to the right.
2. Integrated spell check for textareas.

Monday, September 25, 2006


I just stumbled across this page about anti-patterns on wikipedia. I find it helpful to read about worst practices almost as much as best practices. I think I've mentioned before how much I enjoy the Unmaintainable Code site. You can learn a lot by finding out what not to do.

As usual, I find that I'm guilty of some of the issues mentioned. In the case of the anti-patterns, I tend to use the "BaseBean" anti-pattern a lot. While I always found that putting it in my UML diagrams really confuses things (so I generally just omit it completely), I found that the ease with which the utility methods can be called to be quite elegant. Calling myObj.dump() to get a listing of my private variables seemed to work really nicely.

Now I find out that this is considered bad practice because the nature of the relationship between the base object and it's children doesn't make a lot of logical sense.

So now the trick is to change the nature of the relationship between these classes such that the utility object winds up being delegated to instead of inherited from. It's going to require a bit of refactoring to shuffle things about and I hope I can keep the syntax almost as simple as the anti-pattern method. I don't think it will be too bad, but I'd like to hear if you've built utility delegates and if you've run into any issues I should be aware of.

I'm guessing I'll be reworking my cfcBlaster as well. Luckily, I've always got so much free time to do little projects like this (just kidding!).

Tuesday, September 19, 2006

Practical Database Design

Practical Database Design, Part 1; Keys and DataTypes
Practical Database Design, Part 2; Normalization, History, and Event Logging

This is a must read for cf developers of all types. The two, short articles present the fundamentals of building databases that are maintainable and flexible. Guidance is provided to help you avoid those nasty design problems that create difficult data anomalies once your db is in production and collecting data.

One of the best aspects of this pair of papers is that the author has a knack for making complex ideas (like 4th and 5th normal forms) understandable.

You want to pay particular attention to the end of the second paper where the discussion turns to premature optimization. I've heard seasoned db designers state that they don't bother with trying to get past 3NF since it is just premature optimization. Being assigned to take over an application built by one of these types of designers can make you fill your trousers.

The author, Philipp Janert, makes the argument that deviating from 5NF is the premature optimization. I whole-heartedly agree.

A few extra files for cfcBlaster

If you recently pulled down cfcBlaster and were thinking of giving it a try, you may have noticed that most of the files generated extend another class. These classes are primarily supporting functions and a little common functionality that I use across components.

Again, it's easy enough to strip out or change the extension markup to suit your own needs, but just in case somebody wants to see the components I use, I posted them up with the rest of the code as a separate download.

It's the same procedure as before, download the file, knock off the .txt extension and then unzip the contents. These components like to live in the same directory you put your generated cfcs.


Thursday, September 14, 2006

CFCBlaster - Simple code generator

I thought I would throw this out there just in case it can help somebody. This is a little tool I use to bootstrap a lot of my simple table driven cfcs.

It's not built with any framework in mind, but you are more than welcome to hack the code to suit your needs. I imagine that a lot of people will need to strip out my vss header, but that should be relatively trivial.

Also, it's built with MSSQL as the db, so if you are using some other db, you're probably going to have to do some hacking.

Let me know if you are able to make use of it at all!

Download CFCBlaster

Tuesday, September 05, 2006

OT:The FIXX rocks the Ram's Head

OMG these guys haven't missed a beat. An AMAZING show at the Ram's Head in Annapolis. No opening act allowed them to get more material in. They even played three new songs that have yet to be recored. The show lasted 1:24:14. How do I know the length of the concert so precisely? It's because when you left, you had the opportunity to pick up a little USB drive with an mp3 of the entire concert stored on it. They copied the file for you while you waited. Freakin' fantastic use of technology.

If you've ever been even a passing FIXX fan, you owe it to yourself to see them live. You won't be sorry you did.