Wednesday, June 30, 2004

Getting Back Into Music

Well, I finally broke down and bought a pretty cool m-audio MIDI controller tonight. This all started when I got asked to sub on a gig for my friend's band by starlight and I realized I didn't even own a decent keyboard anymore. Being a full-fledged geek now I decided to go the MIDI controller and software synth route, which should be pretty sweet once I get the B4 and Elektrik Piano sounds from Native Instruments. AMAZING sounds and with the controller I got you can pretty much do anything with these sounds. Who needs tons of gear to lug around? The controller and my PowerBook are all I need!

Monday, June 28, 2004

BlueDragon 6.1 Released!

The other cool announcement at CFUN was that BlueDragon 6.1 has officially been released. You're probably getting sick of me talking about it, but it's an alternative CFML engine, it's virtually 100% CFMX compatible, and they have a version that you can use free in production. I think making CFML less proprietary is a great, great thing, so check it out when you have a chance!


So how does BD compare in pricing. I agree that the less proprietary, the better. ASP (in my opinion) is only the size it is because the server engine is built into the Windows servers.

Well, the free version is of course free (yes, that's free for production), and it's really only lacking a few features that most people don't need (e.g. ability to include JSPs in your CFML pages, some of the tags New Atlanta added to the language like cfforward, cfimage, etc.). The JX version has great Java interoperability and a few nice new tags added by new Atlanta, and it's $899. Their J2EE version is far better in terms of deloyment size (9 MB vs. 77 MB for CFMX) as well as ease of deployment on J2EE servers, and it starts at $2499 per CPU. BD really got J2EE deployment right. It's still a pain on CFMX (but this will change with Blackstone). If you're curious, definitely download an eval version from and check things out. The free version is extremely capable, and hey, it's free! New Atlanta also has excellent compatibility documentation that spells out very clearly the few things that are different between CFMX and BlueDragon.

CFUN 6: XSLT for Data Manipulation

April Fleming (of the Department of Defense I believe) gave this presentation, and I was glad (albeit a bit surprised) to see a packed house for this session. She had some really good tips for those unfamiliar with XSLT and I got the sense that a lot of people left the session anxious to try this stuff out on their own.


For those of you not aware, XSLT provides an extremely powerful and flexible way to manipulate XML data, not only by taking the data and transforming it into the data structure you actually want, but XSLT can be used to transform data for display on CFML pages as well. I'm working on a project right now that uses a lot of XML data, and even though I had worked a bit with XSLT before, I was reminded through this project of just how powerful (and fast!) working with XSLT really is.

Although the information April presented was great, I was a bit surprised that she was using Microsoft's XML Parser as opposed to using the tools built into CFMX (BlueDragon has great XML/XSL support as well). She created COM objects in CF and used those to do her XML/XSL processing. I think she said she's on CF5, so I was guilty of using MSXML when I was on CF 5 as well.

CFUN 2: Deploying CFML on J2EE - Opportunities and Challenges

This session was given by Charlie Arehart of New Atlanta, makers of Blue Dragon, which if you aren't aware is an alternative engine for running CFML. It's largely CFMX compatible and they have an extremely capable free version for use in production (YES, YOU READ THAT RIGHT!!), so you really should check it out. I tested the betas of both the free and JX versions pretty extensively, and the folks from New Atlanta offered fantastic support throughout the beta. The final version was announced at CFUN so go download it! (It runs on Windows, Linux, and Mac OS X, and they also have a J2EE version.)


Although I had investigated and done some experimentation with deploying CFML apps on J2EE before, Charlie's talk reminded me why I need to revisit this experimentation and probably put it into practice. First and foremost, if your company is mandating that you need to move to J2EE (or .NET for that matter--there will soon be a version of BlueDragon that will allow for CFML apps to be deployed on .NET), you don't have to throw out your CFML code or your CF development skills. Converting applications and retraining people can have a huge cost associated with it, and Charlie's overriding point was that you don't need to do this. Your CFML applications can run perfectly on J2EE and can easily be deployed on J2EE. (This process is quite a bit simpler with BlueDragon than with CFMX, but you can do it with either.)

Even if you *aren't* being forced to move to J2EE or .NET, running CFML applications on J2EE can still provide tremendous benefits due to the ability to isolate your applications from one another by running separate instances. At i2 we just went from running only on our web servers to running the i2 User Group site on those servers as well. I was so used to not being concerned about multiple applications that Charlie's discussion of using multiple instances for isolation purposes really hit home, and I'm going to revisit this when i get back home. There are a ton of other benefits for session management, clustering, integration with JSPs, Servlets, EJBs, etc.--the list goes on and on. (Get me talking about this at a UG meeting and I'll probably never shut up!) At any rate, this is definitely worth taking a look at if you haven't already.

CFUN 1: Forta on Blackstone

I wound up with a HUGE document when I summarized most of the sessions I attended at CFUN, so rather than having one large post that no one will read, I'll have several large posts that no one will read! ;-) Some very cool stuff about Blackstone was covered by Ben Forta at CFUN this year, so read on for more ...


nce it sounds like we aren't going to be doing the Breeze presentation of Ben Forta's Blackstone (CF 7) tour on 7/8, I thought I'd take a moment and summarize the new features he revealed today at his keynote presentation. Some were things we already knew about but he gave a lot more detail, and one item was revealed for the first time at CFUN and won't be discussed during the rest of his UG tour (although he specifically said we were allowed to spread the word). I know there were a couple of other guys from our UG at CFUN so I'm sure they or I will be happy to discuss more details at our next meeting. (I also ran into a couple of folks from Dallas who didn't even know there *was* a DFW CFUG, so I encouraged them to start attending!)

GENERAL DISCLAIMER: All this information is subject to change and may or may not be included in the final Blackstone release.

The first thing that was revealed about Blackstone was a bit more specific timeline. Right now it's in a very limited alpha. Later this summer or early Fall, an updater for CFMX 6.1 will be released. The updater will basically be a roll-up of all the hotfixes that have been released for CFMX 6.1 as well as some significantly improved database drivers. According to Ben Forta this isn't even a recommended release, but they found great improvements in the database drivers for Blackstone so they'll be releasing them for use with CFMX 6.1.

In Fall 2004 there will be a relatively open beta that will start out with a small number of people but quickly grow to a large number. He said they were already very pleased with the alpha so everyone at MM is feeling great about the product. Then sometime in the December/January/February timeframe they'll likely ship the product.

As for goals for Blackstone, one of the things he emphasized is that this is the first true benefit in CF of the Allaire/Macromedia marriage. When the merger first happened CF5 was just about to ship, and MX was of course a largely architectural release to get CF on the Java platform, but with all that work behind them they're now able to focus on fantastic new features that incorporate the strengths of CF as a server-side technology with the strength of Flash as a presentation layer technology.

Specific goals for Blackstone that he mentioned:
1. Make new users more successful: new users of CF is currently the most significant area of growth in the CF community. (This is great news!) He didn't get into many specifics but mentioned better installation, wizards, etc.

2. Give existing developers features they can really use.

3. Help us as programmers make our users happier with our applications (this gets into the user experience as well as the new output options we heard about at the world-wide user group conference presentation).

4. Improve deployment options as well as reliability.

New features--we heard about many of these, but to recap:
1. Significant data entry enhancements: skinnable forms will be supported using XForms, which is an XML/XSL-based way of building HTML forms. XForms as a technology has been around for a while, but as with everything CF makes it extremely easy to implement. The quick example he showed used cfinput tags and the attributes format="xml" and skin="#someXslFile#" in the cfform tag. By simply changing the XSL, the look and even the position and order of the form elements can be changed instantly without rearranging any of your cfinput tags.

Basic XSL files for creating forms using XForms will supposedly ship with Blackstone. You can also extend cfinput by creating your own cfinput types (he mentioned a "dual select" as one possible example), so the possibilities here seem very cool.

2. Extending the forms/data entry improvements are the Flash forms we saw in the WWUG presentation. Nothing really new here other than a VERY impressive example in which he basically recreated the entire MS Outlook scheduling forms with a few simple cfform/cfinput tags. I was also reminded of all the fantastic form element interactivity (e.g. binding form elements to one another) and validation that will be possible with Flash forms. The tab and accordion elements of the Flash forms should also enable a much better user experience for complex data entry.

3. Printing and Reporting. We already heard about cfdocument for outputting PDF and FlashPaper documents. What I don't think we heard about at the WWUG meeting was the reporting tools. The cfreport tag will generate more complex PDF or FlashPaper reports using CFR templates, and the report data can be generated using a query, web service, or whatever else you want to use to provide the data to the report. A CFR template is an XML file, and they are also releasing with Blackstone (licensing, versioning, etc. is "to be determined") a new tool called ColdFusion Report Builder. This is a visual tool for building reports, handling headers, footers, etc., that is apparently based on some features they previously had in CF Studio, but the big advantage here over other reporting engines/tools is that the query data isn't contained in the reporting tool/templates themselves, but instead the query data is bound to the report at runtime. You will also be able to use CF expressions within your reports very easily, so the flexibility should be quite nice.

4. Deployment Options. Blackstone will offer the ability to distribute compiled code (Java bytecode) that will contain no CF code whatsoever, and the packaging of CF apps as a standard WAR or EAR file for direct deployment on a J2EE server will also be supported. For each CF app deployed this way you will be able to choose whether or not to deploy it with the CF administrator, whether or not certain features are enabled, etc. You can of course currently deploy CF apps on J2EE, but it is decidedly non-trivial. (As an aside, I went to a BlueDragon presentation and on BlueDragon it is INCREDIBLY easy, so it's nice to see CF keeping up and realizing they needed to improve this area.) The benefits of running CF apps on J2EE are pretty numerous so I won't go into them here, but I'd be happy to elaborate at a meeting.

5. Vast improvement in the ability to run multiple virtual instances of CF. (Again, I'll leave out the details but we can certainly discuss in person.) This is also something you *can* do currently but it's a bit of a pain (and again here is very easy in BlueDragon). One of the things that just changed last week is from the CF administrator you will be able to deploy an instance *remotely* which is very cool for a multiple production server environment.

6. This was the CFUN-only announcement. The slide in the presentation was entitled "Beyond HTTP", and while it took a moment for this to sink in for me, I think the implications are pretty profound. The way he introduced this concept was to explain that while we think of CF as a way to build web apps (which it is, of course), there's nothing that ties CF specifically to web applications. It's running on the server and has traditionally been used more or less only for web apps, but there's nothing to say that it can't do a whole lot more.

Basically they have developed a way to provide gateway access to the CF server that can respond to any request over any protocol. No longer will we be limited to HTTP, but things like sockets and asynchronous events will be wide open to CF. Specifically, gateways will be created in Java, and these gateway instances are associated with CFC methods to respond to events. What this means is that it will be much, much more possible to write interfaces in CF that can interact with any network system in pretty much any way you can imagine.

The specific quick example he used reminded me a lot of the Unix queueing systems we built when I was at Neiman Marcus. Basically he showed a page with a list of names on it, and he then dropped a comma-delimited text file containing an additional name into a directory on his machine. This fired off an event that told CF that a file had been dropped in the directory, so that file was grabbed and parsed by a CFC and the additional name was inserted into the database. Within a few seconds he hit refresh and the name was displayed on the CF page.

That may sound like a "so what" example, but as I said, I think as we consider the implications of opening up CF to be able to talk to any system in more or less any way, the possibilities become nearly endless. I think it will still take a while for the ideas about this to sink in, but I've already thought of several things that weren't possible with CF in the past that will certainly be possible now.

I'll quit rambling now--I just wanted to let everyone know what "the man himself" had to say about Blackstone. I also want to let everyone know what a GREAT conference CFUN was this year and encourage you all to come next year. It's absolutely fantastic to meet with other CFers and see how passionate everyone is about what they're doing with CF.

I'm really energized after this conference and very excited about the possibilities of CF for the future. I took copious notes on many of the presentations and will be happy to share, present, or do whatever I can to get the information out.

CFUN 04: If You Weren't Here, You Shoulda Been!

CFUN 04 ended today and as usual it was a FANTASTIC conference. I'm really invigorated after hearing so many great presentations and interacting with so many other passionate CFers. I'll post more later about specific sessions, but I took tons of notes and I'm happy to share those as well as information/thoughts about the conference and the topics covered. If you didn't make it this year, you absolutely need to make plans now to go next year. The conference jumped from about 350 people last year to about 570 this year, but it still had a nice small, tightly-knit feeling and everyone was extremely willing to talk and share ideas (as well as free beer--thanks Room 140!). This is by far the most CF information you can get in one weekend and the best place to network with other CFers. I can't recommend it enough!