Wednesday, October 5, 2005

My Fusebox 2005 Presentation + Sample App

Rather than take the time to write up documentation on the sample app that accompanied my Head First Mach-II presentation, I thought I'd just make these materials available and deal with any aftermath in due course ;-) So here's the goods! Enjoy!


good presenttaion. you are good presenter and information is complete and useful.

Linux Torvalds on programming"

"The power and flexibility of a programming language is inversely proportional to the number of development frameworks that surround it. Note that in traditional [C/C++] programming, there are almost no extant frameworks, while many of the newer, more stylish languages spawn frameworks in a never-ending stream, hoping to someday overcome the inherent weakness and impotence of the language itself." (From the Helsinki LUG, 08/2004)

'nuff said.

"Linux" (I assume you meant Linus) has also said that he doesn't believe in specs. Do you subscribe to that philosophy as well?

The lady dost protest too loudly. If CF did everything it was supposed to do, you wouldn't need to bolt on a panolpy of ersatz frameworks in a vain struggle to make a weak system ready for prime-time.

'nuff said.

The lady? Interesting. OK, so apparently by your argument (and by extension "Linux's" as well), Java is a weak language and not ready for prime time because many Java developers find a huge amount of value in using something like Spring?

Well, the thing is, the ONLY reason we have CF is for web application development. You don't write standalone apps, embedded apps, desktop GUIs, or distributed enterprise systems in CF.

The main reason CF exists is to provide a tag-based way to program web pages, and if you need to select from a buffet of frameworks to get the job done, that's a defeciency in the language.

Not knocking your frameworks, mind you, but hopefully suggesting that CF has fallen down on the job just a little bit...

Then apparently Java has as well, because many of the Java frameworks are specifically designed for Java web app development. I humbly suggest that you don't understand what frameworks are all about and what problems they solve if this is your opinion of frameworks.

Well, using Java as a point of comparison is unfair to CF, since Java does a heck of a lot more (and in a wider variety of situations) than CF does. If Java needs a X framework to function well in environment Y, so be it.

CF, however, is generally ONLY used for web development applications, and the vast majority of the framework smorgasbord deal with rectifying its shortcomings in that very area--supposedly its area of greatest strength (you said as much yourself, with the key phrase, "what problems they solve.")

With that decided, the question becomes: Why the variety of frameworks? I mean, come on people..."Model Glue?"

First, you clearly don't know much about ColdFusion and the associated frameworks. It's not about rectifying CF's shortcomings (of which it has precious few in the web development arena), it's about ... aw heck, not sure why I'm even bothering. Go back to your framework-free C++ development and feel superior to we lowly web developers if that's what makes you happy. And tell Linux I said hello.

Well, I have to admit I'm a little embarassed. I took some time to read your blog and your comments, and more about some of the great things people are doing with frameworks (including Match-II) and I have to admit I'm impressed.

Sorry for wasting your time--I stand corrected--Carry on!


Matt, I just read through the presentation ppt, and my impression is that you must be an awesome presenter :D

Unfortuneatly distance, time and finances prevents me from attending all the cool conferences over there, but I have a goal to be at Scotch on the Rocks next year, and I will bug Andy about trying to get you there ;)

And I really look forwards to the new m2 release and the new documentation. Knowing you had a hand in it creates expectations.

Keep up the good work.
Regards from Norway.

Thanks Trond--we're looking forward to the Mach-II release as well, which should be VERY soon. I'd love to come to Scotch on the Rocks!


A lot of your previous threads on OO development helped me get started in understanding theories that I later applied to Mach-II and CFC based Fusebox4.1 development. I like your teaching style.

That being said I also wanted to thank you for posting your Fusebox Conf Presentation. Time/Distance/$$ have always prevented me from attending all the various CF conferences and I have always looked forward to viewing the various presentations. I wish many of the other presenters whom I greatly respect would have made the presentations available to those of us that couldn't catch them.

Thanks again!

p.s. What happened to cfopenbb? Is it dead?


I downloaded the sample code you provided, but the app didn't work as-is.

I had to modify the mach-ii.xml, and add the tag, and a closing tag for things to work.

Another thing is that the event-handlers that do 's don't work.

Do I need to install the redirect filter for those to work?


Ali--chances are this is because this was built for Mach-II 1.1.0. Sorry about that. 1.1.0 is scheduled for release later this month.

Thanks Matt.

The only other change I had to make was changing "redirect" to "announce" and then all works perfectly.


Right--redirect is a new feature of 1.1.0. I'll have a lot more to say about that very soon!

Sunday, October 2, 2005

Fusebox and Frameworks 2005 Wrap-Up

The Fusebox and Frameworks 2005 Conference was this past week and as always, Michael and all the folks at TeraTech put on a first class event. It was fantastic to get the opportunity to talk to attendees about Mach-II and the exciting stuff we put in the 1.1.0 release (available very soon!) as well as what we have planned for future releases. There's a ton of very exciting stuff going on with CF frameworks in general so here's my roundup of what I found most interesting at the conference.


Mach-II:I gave my Head First Mach-II presentation twice (PowerPoint and sample app code available soon), led a Mach-II Birds of a Feather session, and Ben Edwards gave a Mach-II Under the Hood presentation, so Mach-II had a strong presence at the conference. I got comments from lots of attendees after my presentation that they were now no longer "afraid" of Mach-II, and current Mach-II users were very excited to see all the activity going on in the Mach-II community these days, so this was fantastic. With the 1.1.0 release we're going to have a lot more and a lot better documentation, and when I have time I'm going to do my presentation as a Captivate demo, so you should have some excellent resources in the very near future.

I think the thing to remember about Mach-II is that if you put in the time to learn OO (which is a MUST these days!) then Mach-II is actually VERY simple to learn. It's based on some very basic principles and once you get the hang of those it's off to the races. Mach-II is a mature, stable framework that's proven itself in numerous very large applications so it's definitely worth a look if you haven't checked it out yet.

Spring, ColdSpring, IoC, and AOP: I know, lots of acronyms in there, and I'll be saying a lot more about all of this in the future. Max Porges gave a GREAT presentation about using Spring with a Java model in ColdFusion applications. At its most basic level, Spring is a framework built on the idea of Inversion of Control (IoC), aka Dependency Injection, and also supports Aspect Oriented Programming (AOP). This is extremely powerful stuff based on the simple idea that your model should be completely unaware of your framework, and also that each object in your model should be as unaware of other objects in your model as possible.

If that sounds great but you'd prefer to build your model in CFCs instead of Java, you'll definitely want to check out Dave Ross's ColdSpring as well as Chris Scott's ColdSpring AOP. Dave and Chris are working together (and quite obsessively, I might add!) on both of these initiatives and coming up with some amazing results. I talked with them pretty extensively at the conference and really like where they're going with things. I'm going to be using ColdSpring on an upcoming project so I'll have a lot more to say about it in the not-too-distant future.

Fusebox: Fusebox is of course alive and kicking, and even though I was never a fan in 3.0 days, Fusebox 4.1 has a lot of nice features and is definitely worth checking out, particularly if you don't have much OO experience. The very cool thing about Fusebox is that you can build extremely well-organized, easy to maintain applications using procedural principles, then move into using an OO model with Fusebox, and at that point if you're looking for something more purely OO, you'll more or less have the skills you need to move into something like Mach-II. I also love all the fantastic tools available for Fusebox, and the fact that you can very easily farm out discrete portions of the application development to people who don't need to have any idea about the application as a whole. This is powerful stuff for team development, particularly for a geographically disbursed team.

Model-Glue: Joe Rinehart gave some great presentations on his Model-Glue framework, which has been described by many people (to me anyway) as a kind of hybrid between Fusebox and Mach-II. It uses many of the same principles as Mach-II but could be a bit more approachable if you're coming from a non-OO background. Model-Glue is getting a ton of attention these days, Joe's an extremely sharp guy who works very hard on it, and given the adoption as of late you'll have plenty of help getting into it. The 1.0 version was just released and is definitely worth a look.

Tartan: Paul Kenney's Tartan Framework is a ColdFusion framework designed around Service Oriented Architecture (SOA). The basic idea between SOA is that components of your applications should be extremely loosely coupled (always a good thing!), and to achieve this SOA is based on a service layer to which your application components make requests and from which your components receive responses. If you're thinking "web services" at this point you're on the right track. Tartan can be an extremely powerful addition to other frameworks such as Mach-II, particularly if you want to do something like create a Mach-II application and put a Flash or Flex front-end on it, which Mach-II wouldn't really be able to accommodate on its own.

The onTap Framework: S. Isaac Dealey's onTap Framework has been around for quite some time, and I had the opportunity to hear him present on it several times back when he was a member of the DFW CFUG. My own take on onTap is that it's based on the idea of automatic execution of filepaths, and it's not entirely dissimilar to the way Fusebox approaches things, albeit with less explicit configuration of things. (Isaac, please correct me if I'm totally off-base here!) The most powerful aspect of onTap is the huge API/function libraries Isaac has included in the framework; think Ruby on Rails for ColdFusion. Automatic database tie-ins, automatic form generation and validation, really slick HTML libraries that make building slick DHTML interfaces dead simple ... there's lots of stuff in here to make your life easier.

Other Frameworks, Methodologies, and "Non-Frameworks": As always conferences get extremely busy, so in some cases I found myself caught up in conversations and missing some presentations I initially wanted to attend. Neil Ross presented on his framework TheHUB but unfortunately I missed that session. John Paul Ashenfelter presented on Ruby on Rails, which was admittedly a bit bizarre given that this was a CF conference. I missed the presentation but from what I heard it was full of the superlatives that seem to be part and parcel of the Rails community. Not that I think Rails is a bad idea necessarily, but it certainly isn't the silver bullet they make it out to be, and regardless of anything else it's still Ruby at a language level which I think would be a hard sell in a corporate environment. (Just my opinion.)

Since it's been discussed to death in other blogs I'll leave my comments about the "non-framework" contingency of one that was at the conference to a minimum. Let's just say I had an Emperor's New Clothes moment or two during discussions and presentations of this ilk.

All in all it was a GREAT conference, and definitely shows that the ColdFusion community is at a tipping point. The days of CFers not knowing what OO is and being aware that they need to gain these skills are coming to a close, and with the wealth of world-class tools that are in the works, we're soon going to have a set of enviable tools at our disposal to build powerful, flexible, maintainable ColdFusion applications in ways we never thought possible even as recently as three years ago. It's an exciting time to be a ColdFusion developer!


(Isaac, please correct me if I'm totally off-base here!)

Nope, you're pretty well on-target. That's the angle I've been promoting for a while now.

Although I do also like to think that there's a measure of flexibility in display, data access (persistence) and in the controller that's not generally available with other frameworks -- i.e. in Mach-II or Fusebox, an event-handler or a fuseaction must be explicitly told about any "plugin" applications which might affect the page-view (or functionality) of that request (xml config).

I guess you could say that the onTap framework uses a form of IOC (because it turns that config on its head/side) -- if a plugin affects views or events (as opposed to simply adding a service), it must be at least moderately aware of the events for which controller code is injected, but not vice-versa. The blog for instance deletes a blog when its owner/author is deleted.