Last night, I attended the Online ColdFusion Meetup Group. The subject was “CFMX on Unix and Linux” and you can view the archived preso here. Big ups to Stephen Erat from Macromedia for putting this together, it was informative and well done. It’s very convenient to be able to head home and attend this meeting without having to drive somewhere. It also allows me to open my mail and do other things while listening to the preso. Breeze presentations work well for this type of thing. Stephen’s presentation covered a nice combination of beginner and advanced material, and I will definitely attend these meetings in the future.
This week, I have been configuring a new app server, which will be dedicated to running our scoring and syndication efforts. It is also the first server in our farm that is running CFMX 7. So I had just gone through three days of server work on this exact topic prior to the meeting. For a variety of reasons, I had decided that, in addition to going with CFMX 7 for application specific reasons, which I will get into later in this post, we would be better off with the Multiserver configuration of ColdFusion. This will allow us to sandbox apps in various CF instances, which makes good sense in the environment that we are in. The install went pretty well, although the documentation from Macromedia, which I read thoroughly before doing anything, is not very good in my opinion. I found mistakes, which I plan on documenting and getting to Macromedia, and much of the docs assume you are installing the single server configuration. The MultiServer specific documentation is sparse. I’m guessing that I am supposed to consult the JRun documentation for some of this information, but the CFMX documentation should point me in that direction, not assume that I know where to look.
The installer is pretty well written though, and doing the actual installation went very smoothly. In fact, the documentation inside of the installer does a great job of walking you through things. However, once you have installed the Multiserver version, gotten it configured to use whichever Web server you are running, and gotten it running from the command line, you realize that something which is in every other version of ColdFusion is missing if you install with this option. Macromedia supplies no scripts to start JRun and ColdFusion automatically at system startup. I thought to myself yesterday, no problem, there has to be documentation of the best practice way to do this on MM’s site. After about an hour of searching I realized that this was not the case. I made a comment on Stephen Erat’s site, and he pointed me to Greg Stewart’s experimental scripts for doing this. In my opinion, this is not a solution to the problem, I want the vendor to tell me what they recommend. I know I can write my own shell script to start this configuration, but I find the fact that Macromedia didn’t think to supply one of their own, or any guidance for that matter, bothersome. At the very least, there should be a technote. After all, they supply a method of doing this for every other version of their product. I very much would like to see that oversight fixed.
My single biggest issue with CFMX 6.1 has been Query of Queries, and our team had great hopes that the typing issues we had constantly run into with Query of Queries would be fixed in CFMX 7. It seems, based on our testing, that the typing engine itself has not changed, which is to say that if you do not specifically type a column (which is new functionality in CFMX 7), it arbitrarily assigns a type to each column based on some data inspection. This data inspection is not documented anywhere, as far as I can tell. So the Macromedia solution to the issue was not to fix the typing engine, but rather to add the ability to type columns upon query creation. I’m not sure that this is the right solution to the issue. In addition, we have seen behavior where the typing engine assigns a type of “null” to a column. This makes operations involving that column problematic. I would think that the default type would be some sort of string, like a varchar, but this does not seem to be the case. This ends up making Q of Q not nearly as useful as it could be. I know, of course, that there are other, alternate, complex data types that I could use for these operations, but I attempt to map data that fits into query objects to queries.
Even so, we are looking forward to using CFMX 7 moving forward. There is a bunch of new functionality that is a good fit for us in there, and we plan on exploiting it. I figured that I would document the two things I have run into so far for Google and others who might run into them.