An Architect's View

CFML, Clojure, Software Design, Frameworks and more...

An Architect's View

Entries for month: July 2006

Where is Fusebox 5?

July 29, 2006 ·

Updated 7/29 - Fusebox 5 just made its general release.
Fusebox 5 was scheduled to have its general release in mid-July so where is it? Well, first off we uncovered an interesting edge case bug that could cause corrupted parsed/ files (even in production mode) if a server was hit with a lot of traffic as it was starting up. That was a subtle thread safety issue and I think I have that fixed. My blog has been running "GR0" - General Release candidate zero - for a couple of weeks now without seeing the problem reoccur (prior to that, several folks had alerted me to corrupted parsed/ files on my blog after server restarts).
7/29: Definitely seems to be fixed so the release has begun.
Second, there turns out to be more involved with an official release than I'd originally planned for. Quite a bit of the content on the Fusebox web site needs some degree of tweaking and we have to figure out how to avoid confusing Fusebox users who opt to stay on Fusebox 4: if we update the documentation, where do they find their answers - if we don't update the documentation, what happens for people who do upgrade to Fusebox 5? I did a review of the site and opened about two dozen tickets covering changes to the web site - some of them, quite broad changes.
7/29: the core files and skeleton app are on the site now - the changes to the site will happen over the next couple of weeks.
Third, there are some philosophical issues to address about where Fusebox is and where it is going. There have been a number of different "committees" in charge of Fusebox over the years with varying degrees of success. In fact, Fusebox politics seems to be responsible for driving a number of people away from the community and even the framework itself.
7/29: we're still working through these...
Fusebox 5 has been developed in a much more public, much more community-focused way than any previous release. It's an experiment that has been very successful, in my opinion, helping to create a release that addresses genuine needs that the Fusebox developer community have. The Fusebox web site went through a major overhaul (last year or perhaps in 2004) but still has some major holes in the content. I think we need more community involvement in contributing content but in order for that to happen, we need a more open approach to developing that content. Using SVN and Trac, hosted by Simeon Bateman, has allowed Fusebox 5's development process to be much more transparent. Team Fusebox is having discussions about how to build on this transparency and engage the community more, going forward, but ultimately - for now, at least - the final decisions are made by The Fusebox Corporation (Hal Helms and John Quarto-vonTivadar). I'm posting this to let folks know where things stand because whilst discussions were moving forward quite well a few weeks ago, things have gone rather quiet again.

Tags: coldfusion · fusebox

More with Skype

July 29, 2006 ·

I've had a Skype account (seancorfield) for quite a while and my blog has had a Skype drop-down to make it easy to contact me, leave me voicemail etc. For a while I've been tempted to get SkypeIn (a phone number that routes to Skype on my desktop wherever I am) and SkypeOut (the ability to call any phone number from Skype on my desktop and pay only two cents a minute worldwide). I finally decided to take the plunge this weekend and add those services. On Jared's recommendation, I also bought an Altec Lancing AHS302usb headset / microphone ($38 including delivery from Amazon, due to arrive some time next week). I generally don't like the phone and avoid calls in favor of chat or email but having started to use a headset on my desk phone at work, I'm finding the phone less intrusive so adding phone services to Skype seems like a good idea now.

Tags: personal

Google Project Hosting

July 27, 2006 ·

Google is moving into the SourceForge / Tigris business: Google Code - Project Hosting. As an experiment to see how it works, I've moved my Concurrency project to Google - check out the updated link in the 'software' pod on my blog.

Tags: oss · coldfusion

Automated Testing with cfcUnit

July 27, 2006 ·

Paul Kenney will soon (hopefully) make available a new version of cfcUnit with ant integration so that you can automatically run your unit tests as part of your build process. He let me have a preview copy and it works really well. Since a couple of folks have heard me talk about this and asked me to blog the 'how to' I figured that even in advance of Paul officially releasing this, I'd go ahead and explain what you can do with it and how easy it is to set it all up.

[Read more →]

Tags: coldfusion · tdd · cfeclipse

Turn off your mind, relax and float downstream

July 25, 2006 ·

Every now and then I just stumble across a favorite album on iTunes. Tonight is one of those nights: 801 Live featuring Phil Manzanera and Brian Eno. The best version of Tomorrow Never Knows. Ever. And a kickass version of You Really Got Me, as well as some classic Manzanera / Eno stuff (Baby's On Fire, Diamond Head, Third Uncle). Spoil yourself! Oh, and while you're on iTunes, check out 808 State - another favorite band I only just figured out was on iTunes... 808:88:98 is their best of and a great starting point!

Tags: personal

ColdFusion and Smalltalk

July 25, 2006 ·

With all the talk on various blogs about the Java-like OO features people seem to want to add to ColdFusion, I thought it might be instructive for folks to learn a little more about Smalltalk - a language with which I think ColdFusion actually has more in common than Java. Here's a good article on the pros of Smalltalk: Have You Considered Smalltalk? by Jeffry D. Panici. In particular - in light of calls for constructors and interfaces in ColdFusion - I think the following quote from the above article is very telling:
An interesting difference between Smalltalk and Java/C++ is that the class side is responsible for instantiating the instance side of a class. Therefore Smalltalk has no official constructor syntax like Java or C++. The Named Constructor Idiom is the closest equivalent in the Java and C++ world to the way a Smalltalk programmer would instantiate a class instance. In practice, Smalltalk's classes have so few restrictions on them that they're much more powerful and robust than their Java or C++ counterparts. Since Smalltalk is dynamically typed it is easy to treat the class hierarchy as a kind of super-schema that can be modified in real-time. While most Smalltalk's don't directly support multiple inheritance, many do support adding the functionality if desired. Java does not support multiple implementation inheritance, and multiple interface inheritance has many drawbacks. It's important to remember that there is no arbitrary limitation on implementation inheritance within Smalltalk like there is in Java. If you want to change String or inherit from it, you're more than welcome.
Two things here probably need some clarification: 1. Smalltalk does not have constructors in the Java/C++ sense. Instead, each Smalltalk class (the type of an object - actually an instance of a metaclass object, similar to Java's Class class) understands the message code which returns a new instance of the class. You typically have named methods that return new instances appropriately initialized. The closest equivalent in Java/C++ is a static factory method (with the actual default constructor being private or protected). 2. Smalltalk supports adding functionality at runtime. This is just like ColdFusion's CFCs: you can add (and delete) methods after creating the instance. Methods (functions) are first class objects you can pass around and assign to variables, shuffling them between CFC instances. Read over the quoted section again: "[Smalltalk's] classes have so few restrictions on them that they're much more powerful and robust than their Java or C++ counterparts." The same can be said of ColdFusion Components - but you have to think outside the Java box to realize that.

Tags: coldfusion

What is in your wish list?

July 24, 2006 ·

All of a sudden, we've had a flurry of ColdFusion wishlists appearing: I started to pick apart Simon's list item by item (because I think he's fairly wildly off-base with several of his wishes) but decided that given three fairly extensive lists from three different people, it would be more productive to just comment overall on what I like and what I don't and let folks dig into the individual issues themselves... So, first up, despite being a huge advocate in the past for adding Java-like features to ColdFusion, I want to go on record as saying that I do not think ColdFusion needs interfaces or constructors or null or method overloading (heaven help us!) or any number of other Java-like features. We have full integration with Java and we can drop into Java whenever we want and use Java if we're so attached to those features. If anything, I think ColdFusion would benefit more from taking cues from other dynamic languages such as Smalltalk and, yes, Ruby. Brandon's list is mostly focused on enabling ColdFusion to play better in the enterprise space from a pragmatic, management and administration point of view and I like his list. Brian's list isn't very specific but I like his thinking: the Java-like stuff would get used, true, but would mostly benefit a small core of OO developers whereas the vast majority of ColdFusion developers would benefit far more from having the effort and resources expended on things that solve general real-world problems, which are mostly user interface and integration issues. Feel free to comment here on on Simon's, Brian's or Brandon's blogs. I'm sure we'll all watching all those comments now.

Tags: coldfusion

Apple Benefits From Intel Chips

July 21, 2006 ·

Great to see how well Apple is doing on the back of switching from PowerPC to Intel chips.

Tags: osx

Amazon Queuing Service

July 20, 2006 ·

Here's some serious "thinking outside the box" as regards to Software-as-a-Service: a hosted data queuing service. Amazon's Simple Queue Service lets you publish messages and consume them later, possibly via another application. Cost: one dime per thousand messages, a message is anything up to 256Kb. It will be very interesting to see what people do with this...

Tags: saas

Scratch That Itch

July 20, 2006 ·

Catching up with podcasts, I was listening to Helms and Peters Out Loud (episode 26, "Groupthink") tonight on the way home and in amongst Hal's ranting about everyone following the herd, a real nugget stood out... I'd never thought of blogging it before because, well, I just assumed everyone did this... Jeff Peters said he has a "test" directory in his local development environmnt that he uses to test... no, not code... hypotheses, ideas, concepts. He was talking about how everyone should do this and be able to go "Hmm, I wonder what would happen if I did X?" and actually trying it out (instead of perhaps just asking a mailing list). Since he highlighted this, I figured that maybe not everyone actually does do this and therefore it's worth mentioning. Seriously, create a "test" or "scratch" directory in your local development environment. Any time you find yourself wondering "what would happen if...?" or "can I do Y?" or "how does framework Z behave if I do this?", just write some code and try it out! Before you post to a mailing list, before you just simply give up because you "don't know the answer". Just. Try. It! You'll be amazed: you'll find out the answer on your own and you'll be able to post to a mailing list and tell other people what you learned. I'm not going to pick on anyone by name but I will say this post is actually inspired by a recent raft of posts on some mailing lists asking questions - and often sending somewhat irate follow-up posts a few hours later because no one responded - when a five minute test would have answered the question. As a community we need to stop being so lazy. If you don't know how something works, don't just fire off a lame question to a mailing list! Those hundreds of other folks are busy with real work too - they're not there to do your job for you! Try it out for yourself. If it works, post the question and the answer. If it doesn't work, then post the question - along with all the details about what you've tried that didn't work. I really (really!) don't like seeing follow up posts complaining that no one has answered a post when a simple bit of personal detective work could have answered the question in far less time that was spent waiting for an answer.

Tags: personal