Thursday, June 30, 2005

CFUnited Roundup #2: Miscellaneous Wednesday Sessions

Rather than give blow-by-blow summaries of some of the excellent sessions I've attended thus far, I thought I'd give a brief roundup and I'll dig in deeper on some of these topics after the conference. (I'll say again, if you're a CF developer you NEED to make plans to be here next year!)


Verity for Fast Text Searching: Ray Camden

Members of my CFUG will know from my recent presentation and my inability to shut up about it that I'm a huge (and relatively recently converted) fan of Verity, particularly with all the slick new features in CFMX 7, which was an upgrade from Verity 2.6.2 to Verity 5.5. Ray Camden gave a great talk on not only the new features of Verity, but why you would want to use it, even for database content. Verity can go a long, long way towards making your searching better and faster for your users, and can GREATLY simplify your development efforts in the search arena as well. If you deal with searching at all you owe it to yourself and your users to check out Verity.

Joel on Software Live: Joel Spolsky

This keynote alone was worth the effort to make it to CFUnited. Joel Spolsky gave a great, great, GREAT talk about Angelina Jolie, Brad Pitt, Jennifer Aniston, Keanu Reeves, and many other important aspects of software development. If you're saying "HUH?" at this point, it's a bit hard to explain in writing, but Joel managed to weave all this and more into his presentation in a fantastically witty way so you knew EXACTLY what he meant without him getting into boring and obvious specifics like "make good software for your users." I left this presentation with more of a strong feeling about what I needed to do than specifics, and that feeling will carry over into my projects without me even thinking about it. Joel is a very sharp guy and a fantastic presenter.

Undocumented CFMX: Nate Nelson

Great stuff about how to tap into more of the available-yet-undocumented functionality in CFMX now that it's on the Java platform. I personally use the string and query functionality that's been exposed as well as many of the other things Nate discussed pretty extensively, so I'll probably give additional notes/thoughts on this stuff later. Weird multi-step hacks that may be necessary in pure CF are dead simple to get around with simple calls to Java methods right from within CF, often right from your CF variables.

Advanced SQL: Selene Bainum

Selene REALLY knows SQL Server. I mean REALLY. In my own application development I tend to do more in CF and less in the database for portability reasons, but I'm starting to become a believer in offloading more work to the database even if it means a bit of rework later. Particularly if you know (as I do at my current job, which I'll be at for another two weeks) that your apps will always live on a specific database like SQL Server, use the database as much as is humanly possible. It makes your CF code simpler and cleaner, and performance can improve exponentially for certain operations.

LAMBDA Boxes: ColdFusion Apps on the Cheap

David Epler gave an excellent presentation on running BlueDragon on Linux for extremely cheap/free CF application deployment. I'm doing this with some sites on my own variant of LAMBDA called MAMBO and this is a great way to get around the "but it's free!" argument we as CF developers often face. David is neck-deep in BlueDragon on Linux so it was great to hear a lot of from-the-trenches information, gotchas (of which there are very few), and general thoughts on this environment and how it relates to Macromedia's ColdFusion engine.

As an aside, New Atlanta announced here at CFUnited that, by far the most heavily trafficked ColdFusion site on the web and the number 5 site overall on the internet in terms of traffic (yes, you read that right, the number 5 most heavily trafficked site on the internet was built in ColdFusion) has switched to BlueDragon. I think this bodes EXTREMELY well for the ColdFusion community since this makes it very clear that there are two extremely capable, proven ColdFusion engines from which we as developers can choose.

CFMX 7 Reporting and Rich Document Creation: Dean Harmon

Dean Harmon is the engineer on the CF team that created the new CFMX 7 report builder, so "from the horse's mouth" stuff is always great. There wasn't a huge amount of new information in this one for me, but I will be digging into the reporting capabilities a great deal more for a project I have coming up so it was very informative to see the person who built the application using it and talking about it. If you need to do reporting at all, I think the report builder and new reporting functionality in CFMX 7 is one of these numerous "hidden gems" in CFMX 7 that a lot of people just haven't used yet. It's powerful, powerful stuff and is far easier than integrating with any third-party reporting tool.

Exhibitor-Sponsored Open Bar Event

I shot down five CF gurus with a nerf gun, but after that it gets really hazy for me ... ;-)

More later ...

CFUnited Roundup #1: Wednesday Keynote

Hello to all from CFUnited! As many other bloggers have done and will do, I'll provide some wrap-ups and summaries for those of you who aren't here (shame on you) as well as more details thoughts and discussions after I get back. That way I'll have time to process the information and provide more than simply a high-level overview, particularly with some of the more thought-provoking sessions that have yet to come.

Wednesday Morning Keynote

Ben Forta and Tim Buntel from Macromedia shared how well CF is doing (and to paraphrase Ben yet again, anyone who says CF isn't doing well doesn't know what they're talking about) as well as some limited information (limited as in Tim was reading from a script approved by legal :-)) about where CF is going. All CFers will be happy to know that CF 8 is already in the planning stages.

The first big news is that there is a CFMX 7 updater called "Merrimack" due shortly (no details on exactly when other than "beta coming later this year") that will include the following:

  • Native Mac OS X installer (YES!)

  • Additional Linux platform support

  • Websphere Network Deployment

  • Oracle Application Server support

  • CFC Proxy, which allows calling CFCs from Java (my brain is already working overtime with all the possibilities here)

Cool, exciting stuff, and in particular the ability to call CFCs from Java may be a boon to the semi-stalled CFHibernate project.

Next big news was that Macromedia is going to "support" (no specifics on the hows and whens) the CFEclipse project. This is great, great news, so congratulations go out to Simeon Bateman, Spike, and the rest of the CFEclipse team for working so diligently on such a fantastic IDE tool for code-centric CF developers. Macromedia did say that they will "support and contribute to" the CFEclipse project, but CFEclipse will continue as an independent entity. The site is also new so check that out.

A very brief slide also announced a very limited amount of information concerning "Scorpio" which is the next version of ColdFusion. It's in the planning stages but they did announce two broad areas of interest:

  1. Continued innovation in the area of presentation-layer features and functionality

  2. Additional tools to better monitor and have access to server internals

How these areas pan out will be exciting to watch. I'm thinking this means an expansion of the Flex-like functionality already rolled into ColdFusion with Flash forms as well as an expansion of the Administrator API and server management and deployment options, both of which I'll love to see.

That about covers the Wednesday keynote--the other general comment I'd like to make is YOU SHOULD ALL BE HERE! It is SO fantastic to see nearly 1000 enthusastic CF developers all in one place, and meeting and talking with all these people I've only worked with via email and IM is great as well. They're already making plans for CFUnited 2006, so you should too.

More summaries and thoughts shortly ...

Monday, June 27, 2005

CFMX 7 IM Gateway Tutorial

IM gateway + administrator API = very cool stuff. Check out my IM gateway tutorial on and learn how you can create datasources on your CF server via IM! No foolin'!

And greetings from CFUnited, by the way. Had dinner at a great vegetarian restaurant that's literally right next to the hotel tonight, tomorrow is the CFUG manager meeting, and then Wednesday the real insanity starts. I'll probably blog lots after I get back.


Matt -

Great tutorial!

I have played with the IM Gateways in CFMX7, but th eonly idea I came up with was a 'Magic 8-Ball'-like application, and a basic phonebook that I use at home. I type in a name and I get a list of people that match the name.

Sunday, June 26, 2005

Asynchronous CFML Gateway Article Online

My article for the ColdFusion Developer's Journal on the new asynchronous CFML gateway is now available online. If you're using CFMX 7 Enterprise and haven't dug into the asynchronous gateway yet, you'll definitely want to check out this article!

Saturday, June 25, 2005

The Rumors of Mach-II's Death Have Been Greatly Exaggerated

... with apologies to Paul McCartney. Another relevant tidbit that comes to mind is the great scene from Monty Python and the Holy Grail (which also inspired a nice beer called "Holy Grale Porter" by the way) in which the Dead Collector is gathering up dead bodies, one of which has something to say about it. (Scroll down about half way or do a find for "the dead body that claims it isn't").

Anyhow, to get back on track here, Doug Hughes has a nice checklist and discussion concerning whether or not Mach-II is actually dead. I'm totally with Doug on this one as you may have gathered from my previous post about this.

Furthermore, even as those declaring Mach-II to be dead have pointed out, there's nothing prohibiting someone from picking up Mach-II and running with it; apparently the only prohbition in the Mach-II license is that you can't use the name. If there's a group of folks who see it as unresurrectably dead, then pick up the Mach-II codebase, think of a catchy name, and go for it. Nothing's stopping you!

Thursday, June 23, 2005

Frameworks: Let's All Take a Deep Breath ...

The recent discussions around ColdFusion frameworks, specifically the Mach-II vs. Model-Glue debate is, in my opinion, getting a bit overly frenetic and verging on just plain silly. Recent posts on CF blogs such as Mach-II is Dead! and Is Mach-II an Ex-Framework? (which is admittedly just a link over to the "Mach-II is Dead!" entry but certainly adds fuel to the fire) have the tone of a bad disaster movie from the 70s. The plane's not crashing into the ocean, the skyscraper isn't burning down, there's no earthquake that's going to make half of the United States fall into the ocean. Take a deep breath, relax, and let's discuss all of this rationally for a moment.

Don't get me wrong, I'm a big framework proponent, I like Mach-II, I like Model-Glue, and I think there are great benefits to developing with frameworks. Joe Rinehart, Hal Helms, Ben Edwards, and everyone else who contributes in one way or another to this aspect of the CF community all deserve a round of applause in my book. Where I think the recent discussions have jumped the shark a bit is because they're beginning to ignore why we use frameworks: to build applications. When you spend more time thinking about frameworks than you do using them to build applications, something's a bit out of whack in my mind.

Mach-II is a great framework. Yes, it's stagnated a bit compared to Model-Glue (which is younger, therefore you'd expect more activity surrounding it and more frequent updates), but it's not as if it's going anywhere. Mach-II isn't suddenly going to evaporate and render all Mach-II apps null and void. If you like Mach-II then by all means use it. The framework code doesn't die or go bad like that stuff in the back of your fridge that you forgot about. It will continue to work for a long time to come. There is of course the issue with finding someone with Mach-II skills if they have to take over an application written with Mach-II, but it's not as if a competent CF programmer with OO skills won't be able to figure out Mach-II if they have to.

Model-Glue is also a great framework, it has some nice features Mach-II doesn't have, it eliminates some of the complexity of Mach-II, and I like it a lot from what I've done with it so far. Phrases associated with it like "wildly popular" tend to be a bit skewed in my mind, however. Reading blogs tends to provide a skewed perspective on the world anyway, and nowhere in the CF world has this been more true recently than the framework frenzy. Let's try to keep this all in perspective.

The other thing these sorts of discussions do is make people scared to jump in and work with frameworks because they're afraid they will make a "wrong" choice. I can just hear people saying, "Phew! Thank god I didn't waste my time with Mach-II! It's DEAD!" Utter nonsense. Whether or not you choose to write a particular application using a given framework is something you have to ponder a bit of course, but this whole discussion is just getting blown WAY out of proportion in my opinion.

I understand the point of view that Mach-II's future is a bit in question, but it's a solid framework that has a lot of great benefits, and until a new version of CF breaks it (which it may or may not), it's going to work fine. If you think Mach-II has stagnated too much then don't use it, or take the ball and run with it (meaning pick up where you see Mach-II as having "left off" and roll your own version).

I also applaud Joe Rinehart for his attention to the small-but-growing (again, keeping this all in perspective) Model-Glue community, and I greatly appreciate the framework itself and his responsiveness to its users. ColdFusion needs as many people like Joe in the community as we can get, and Model-Glue is admittedly becoming my framework of choice these days. My point is that I'm not trying to bolster Mach-II or take away from Model-Glue; I've just been laughing out loud when I've read some of the blogging about all of this lately.

I've written a lot of Mach-II applications since it came out. Am I going to worry about them breaking because Mach-II is "dead" or feel that I need to rebuild them all in something else? Of course not. They run great, they're easy to maintain, and they'll continue to run great until some fundamental change in CF breaks Mach-II (which it can potentially do to ANY framework remember), which may or may not even happen.

Will I write more Mach-II applications in the future? Maybe, maybe not. The jury's out on that one. I'm still getting up to speed with Model-Glue and I like it a lot, and given the tremendous support Joe's giving to it it's definitely an attractive framework, particularly for people with Mach-II and OO experience. However, if in some particular case Mach-II seems to be a better fit for one reason or another, I'm not going to avoid it just because it's falling out of favor with some folks. If I was worried about using the most popular framework in CF, I'd use Fusebox exclusively (and as an aside I've been spending a significant amount of my spare time learning FB 4.1 lately).

So the bottom line in my mind is that everyone needs to take a deep breath, step away from the computer for a bit, and come back to all of this with a bit more rational head. Your server's not going to start on fire if you choose the "wrong" framework, and you aren't permanently sealing your fate by choosing one over another. Remember: this is all about building great applications, it's not about becoming a framework junkie (fun as that is) just for the sake of becoming a framework junkie. Learn and use as many frameworks as make sense for you to learn and use, observe the progression among the various frameworks, and by all means take all of the blogging about this (mine included) with a grain of salt.

It's interesting and entertaining to watch all of this unfold, but at the same time I think the mob mentality going on may be causing people to lose sight of the end goal, which is building better, more solid, more easily maintainable applications, and frameworks go a long way toward reaching these goals. I'm just glad that as CFers we finally have multiple great frameworks from which to choose.


"Yay, the snow has melted and we can all go outside now.....err...i dunno, i don't like the looks of those teenagers, back inside everyone!" - grandpa simpson.

Point is, we can piss and moan all we like about various frameworks but the point is "what works, whats easy to implement and how can it improve my coding-lifestyle without impeding my development".

So, Mr Matt, i freeeeeeeeeeakin agree 110% by the way i am making a framework called FuseMachGlueTartanBatFinkMonkeyLuvingPooPa... basically how you implement it is connect some wire-based nodes to thine skull and simply think the application, the rest is done for you.

Nice post Matt - couldn't agree more.

I think that you have made some very interesting points. However I must digress on your thoughts about Mach-II. The problem with a framework such as Mach-II with no roadmap, very few updates, bad documentation, etc is that if it is marketed correctly then some corporations will jump on board and being using it for application development. The problem with this is that once it dies, and I believe that it will, then developers that have to support and provide incremental development to these sites will not have a platform to learn the basics to help there corporation. But I truly believe that if a framework is not an extraction of a product being developed then it needs a huge following to truly mature to the level necessary to add real value. Once again CF'ers hurting themselves all over again.

This has become my default comment as of late. Everyone is thinking "dead" as the opposite of "alive", but "dead" can also mean "having grown cold" or "lacking elasticity or bounce" [just check the dictionary]. I could have used the word "stalled" but the title "Mach-II is/has Stalled" just does not have that zing to get people to actually read the entry. Sometimes bold statements make people think.

In the end, all I wanted is to get the community to respond and respond they did. I've felt that too many focused on the word "dead" instead of what can be done to move Mach-II along. I didn't want Mach-II to become Rascal-II [as seen on TV]. However, Matt you've made a good post. You're I stirred the pot, but I never intended for the CF community to put the pot over the fire and stoke it.

I am happy that progress is coming and a new version is being planned. I hope to have some involvement.

Thursday, June 2, 2005

ColdFusion and Java Integration: Use It!

One of the things that I personally have been looking more and more at lately is leveraging existing Java code in ColdFusion. This started with my interest in utilizing Hibernate with ColdFusion (more on that later this summer, I swear!), but then I started being reminded of the huge wealth of Java code that's out there, ripe for the taking, and oh-so-easy to use with ColdFusion.

Based on the discussions I read and the projects I see Java integration is the single most underutilized capability of ColdFusion. Yes, as I've said before we have a serious need for more open source projects in ColdFusion (more from me on that later this summer too), but if you need some functionality in CF that isn't there natively and you don't have the time or desire to write it yourself, don't limit your searching to only CF code. There's a huge chance someone's tackled your problem in Java and don't be scared--you absolutely don't need to know Java to leverage Java code in CF.

Case in point is a recent blog post by Andrew Muller that demonstrates leveraging an existing Java NNTP library (specifically from the Jakarta Commons Net Project) in ColdFusion. Download the code and check it out--it's dead simple stuff and if you haven't tried using Java from CF before, I bet you'll be amazed at just how easy it is, not to mention the huge libraries of Java code available for our use.


Thanks Matt

Matt: I've gotta agree. Just yesterday, I was hunting around for a native-CF solution to a rather basic problem I was having... everything I found was either broken, expensive, or both.

So on a lark, I started hunting around for something Java-based. Within minutes, I found a promising little jar and set to work. Given my deep ignorance of Java, it took me an hour of experimenting to produce results, but produce I did... the experience gave me a whole new respect for CFMX's trasition to Java.