I already know that this post won’t be popular with my close friends, but I think it needs to be said anyway… Don’t worry, this isn’t a “ColdFusion is dead” article.
I was recently asked to sit down for lunch with two computer science professors from two different schools in my area. For the most part, I was in “a fly on the wall” mode as these professors talked about various things such as how they catch people copying code, to how they teach good memory use, etc. This wasn’t a formal meeting by any sense, but rather just a meeting of two friends who happen to work in the same profession.
About half-way through lunch, I decided to ask about using a more stable language, like ColdFusion (CFML) to teach web programming. Currently one of the schools teach Python (and considering Ruby) and the other teaches PHP for their courseware. After both chuckled at me, I dove into my Adobe taught ColdFusion isn’t dead, ColdFusion has a growing population, ColdFusion has some open-source alternatives, etc. Both sat there and soaked in my sales pitch. One of the two even used to use ColdFusion on some side work in the past.
“It’s not about the servers — it’s truly about the language.” spoke the gent from the larger school. “For a formal, introductory computer science class, ColdFusion [CFML] really doesn’t offer us anything that another language does. And it adds in a lot of complexities and guessing that make other languages easier to teach in the classroom“
As he explained his position, it started to soak in to me — ColdFusion while really easy to pick up and learn teaches some really god-awful practices. And if you take a look at the ColdFusion community at large, it seems to be a real mess. Some of the great points from his argument :
- CFML is not a typeful language. For the end user to not be able to specify to the language/compiler that you want to store a String vs. a Number can be troublesome and confusing to both sides. What is often worse is that to force ColdFusion to choose a particular variable type is very awkward and more-or-less a hack.
- There is no good CFML debugger. If you do your work in the current Official CFML editor by Adobe (Dreamweaver) there is no debugger. You have to install another, 3rd party application (Eclipse) to do your debugging. Even then, it is cumbersome, and not really feature complete. How much memory is this CFC using? Why am I getting this response from the Query? These are the questions that the debugger still fails to answer properly.
- The documentation is poor. The LiveDocs, while OK, are very un-organized and seem to be very short on examples. The community is good at sharing examples, if you can find them. The Adobe search engine is a joke on their site. There are only 4 current books, by two authors (although, one plus to this is they both live in Michigan).
- CFML, by its design will fight you in implementing the most common design patterns. Lets face it, most of the MVC frameworks are a hack. In fact, when you take a look at it, most frameworks that exist for ColdFusion — even Adobe’s own Model-Glue are exceedingly complex because they have to implement so many workarounds to get their pattern to work.
- Available Open Source / Free / Alternative engines are not 100% compatible. Even BlueDragon, the engine that has implemented the most compatibility, is only about 90% there. This is a huge disadvantage if you use the “there are other engines out there” argument — most, if not all, examples and documentation are written for the Adobe engine.
- Some features are just some “black box”. This is one item that raised a huge concern, while being a huge advantage for the regular business community. Programmers, specifically students want to know how things work. They want to know the nuances of why FTP would be a sessionful protocol, rather than something like LDAP. These tags/engines are essentially black boxes with ColdFusion, with very limited visibility as to what is happening on the back end — all we know is that they ‘work’, and get the job done.
Some of these things are changing in future versions of ColdFusion, I’m sure. Others are just breed from the history of ColdFusion, and for the regular community, that’s not a bad thing. For example, does a web / CFML programmer really want to know how the POP protocol works? No! That’s why they use ColdFusion!
So parting from my experience, I do ask the question — where SHOULD CFML be learned? That is a really tacky question, one that is really hard to answer. From the above, CFML shouldn’t be chosen to be taught in a formal programming class, but how about in a web programming class? Rather than teach HTML, how about HTML and CFML? Should CFML be taught at a community college? How about at the high-school level where programming theory is not nearly as important? What are your thoughts?
At a recent conference I was at, I got in a rather lengthy conversation about Cloud Computing, and its effects on both society and computing. My thoughts were in the minority, but I guess I come from a unique position.
This past Wednesday, I did a presentation at 360|Flex in Indy. My presentation was on Flex, LCDS (LiveCycle Data Services), and ColdFusion, and how they all work together. It was a lot of fun to talk about this topic that is so near and dear to my heart. Because it was the last session of the day, I was asked by many of the participants to record it so that they could listen to it later 
So, another conference has come and gone… But as usual,
You heard me right… Lansing, Michigan will be holding our first Ignite event on April 17th, 2009! For those of you who don’t know what Ignite is,
On April 9th, 2009 Ryan Stewart an Evanglist from Adobe, will be visiting us at the Michigan Flex Users Group on the campus of Michigan State University. Ryan will be talking to us about Flash Catalyst, a new, unreleased product from Adobe that will be used to prototype Flex and RIAs. Don’t worry, he will talk about all sorts of cool stuff that is happening in the Flex and Flash Platform world.
How do you enable it? That’s pretty simple too! All you have to do is right click on your Flex Builder project, and go to the properties menu option. Click on the Flex Build Path node, and then the Library Path tab. Change the Framework Linkage from "Merged" to "RSL". If you don’t want to customize your deployment, that should be all you have to do.
In my own setup I did run into one issue when I was moving my app into production. Apparently recent versions of IIS won’t serve files that don’t have MIME-Types associated with them. After deploying my app to the server, I was getting RSL Digest Error displayed in the the browser when I was deploying. The problem was I was not the one seeing these errors, but rather my customers. Because IIS didn’t have a mime-type setup, it would give 404 errors for the SWZ files for those people who hadn’t downloaded those files. To fix the issue, add a new mime-type of x-shockwave-flash associated with the .swz file extension. Things should work then.
Well, after a long wait, issue 2 of the 
