CFUnited, CFHibernate, Railo, and Groovy

Better late than never, I wanted to post some quick thoughts on last week's CFUnited conference in Washington D.C. As always, TeraTech put on a great conference.

There were a few issues. The conference center was a good distance (15-20 minute walk) from the conference rooms themselves, which became a bit of a pain if one wanted to return to the hotel for some reason. The lunch food was a mixed bag, and there always seemed to be a shortage, especially if one chose to arrive a bit late to avoid the initial rush. But the rooms were generally large enough to hold the audiences, the projectors and microphones worked fine in every session I attended, and the presentations themselves were all very well done. Since I was the Frameworks Track Chairman, I was happy to hear from many folks that those sessions were particularly well received.

As often seems to be the case with conferences, an equal or greater amount of interesting information arose in the post-conference bar gatherings and at the evening networking events. It's always great to speak at length with folks like Hal Helms, Joe Rinehart, Sean Corfield, Peter Bell, and the members of the Adobe team (I had great conversations with Adam, Jason, and Ben).

I had the chance to meet Gert Franz, the CEO of Railo, and he was a stunningly nice guy. Railo seemed to be present in nearly every conversation, whether it was related to open source, or to ideas in Railo that could be adopted by Adobe, or to the underlying technical implementation of Raio itself. There are some really interesting things going on or coming soon in the Railo engine. The fact that Railo CFCs compile to a single Java class was very foresightful and something I think Adobe may want to look at carefully. Also, the ability to have a CFC extend a Java class seems to have a great deal of potential.

Adobe showed off some of their plans for ColdFusion "Centaur", and it looks very interesting. The integration with Hibernate is something I have lobbied for, and it has the potential to be a huge deal. However, there are some big potential issues with it and it remains to be seen how the Adobe engineers will overcome them. Because CFC creation can get quite slow, particularly in larger numbers, there seems to be a danger that using Hibernate will empower CF developers to generate large arrays of components (Hibernate typically returns arrays of Java objects). To be clear, whether CFHibernate will actually do this remains to be seen since the keynote demo only dealt with one object at a time. But since this is such a core element of Hibernate I would assume that it will be a target feature. But if this does happen, I do hope the wizards on the CF engineering team can address this issue.

Ben and Adam hinted about as vaguely as they could about a possible ColdFusion IDE that may (or may not) be demo'ed at Adobe Max later this year. The lack of a great IDE is another topic that came up in just about every conversation I had, so my fingers are crossed on this one.

Even with all the interesting stuff that Adobe was showing off, that is probably a year or more away from being released. In the meantime, some incredibly interesting stuff is going on right now with regard to things like Groovy. Barney Boisvert has a very cool Groovy scriptlets tag that will allow execution of blocks of Groovy code. Joe Rinehart is working with Hibernate, Railo, and Groovy together. I heard lots of talk about integration with Spring to provide more seamless usage of these underlying Java libraries, as well as leveraging things like Spring's built-in security model. The basic jist is, people are really starting to do some interesting things with the range of Java tools and APIs that we have at our disposal. I have made it a high priority to read up and experiment with Groovy because everything I heard about it at the conference sounded quite amazing.

In any event, hopefully people can see that a lot of very interesting stuff was going on at CFUnited, and not just in the sessions themselves. It's amazing what happens when a bunch of like-minded computer geeks get together and start spinning all their wheels at the same time!

del.ico.us del.icio.us | Digg It! Digg It! | Linking Blogs Linking Blogs | 4087 Views

cf.Objective() 2008 and the Future of ColdFusion

Well the conference has ended and I'm back in Raleigh trying to get back into the groove of work again. ;-) Overall the whole event was excellent, as expected.

I learned a lot at the conference sessions, but also as usual, I think I learned even more sitting at the bar talking for hours with heavy hitters like Chris Scott, Max Porges, Joe Rinehart, Peter Bell, Sean Corfield, Mark Mandel and many others. Some of these guys are just way too smart, but I wouldn't want it any other way.

I feel like my presentations went pretty well and that I'm finally comfortable with public speaking, which is good. I also had a chance to look at the new Swiz Flex framework that Chris created, and it looks really damn good. Hopefully we can move to Swiz from Cairngorm on our current Flex project during a future refactoring, since it is so much easier to deal with.

From talking to other folks in the community, it seems like CF is at something of a crossroads. One thing that kept coming up over and over again was how CF really starts to lose its glamor once you start using it as a back end for Flex. The benefits of CF really shine at the Controller and View layers, but for pure SOA architectures, we really have to jump through a lot of hoops to get true integration with Flex. This is mainly due to the limitations of CFC creation. The autotranslation of CFCs to ActionScript classes looks really sweet...until you have to send 1000 objects across the wire to Flex.

In fact, the dichotomy between the majority of people using CF (the "5 tag crowd", meaning people who just use cfif, cfoutput, cfloop, cfquery, and cfset) and the people who are really pushing the OO envelope became really apparent at the CF9 brainstorm session. Some people were asking for more features, but the core group of "thought leaders" in the CF world are proposing some far more radical changes.

The most compelling to me is the idea of dropping development on CFCs and allowing us to write server-side ActionScript, as well as dropping CFML as it is now and switching to a fully XML compliant markup like MXML. This would allow us to leverage tools like FlexBuilder, which quite frankly are a joy to work in. ActionScript is strongly typed, so this would be a big change, but it has dynamic elements as well such as the ObjectProxy class. And CFML is already nearly XML compliant, so switching over to that kind of synatx would be relatively simple.

Basically, I love all the great and easy features that CF gives us (obviously), but am really starting to hate the verbose syntax needed for CFC development, as well as the lack of proper IDE and tooling support. The built-in services are the reason why I don't "just switch to Java" for the Model. What I want is to be able to leverage all the great stuff CF provides, but do it in a more productive way.

It seems to me that CF9 would be a perfect chance for Adobe to make a clean break and really revolutionize how people use CF, as well as drawing in many new developers who are put off by the current way CFCs are built. There are a large number of odd language idiosyncrasies (arrays passed by value, arrays starting at 1, ListAppend returning the value while ArrayAppend does not, the list goes on) that have built up over the last 8 versions. I'll be blunt and say I think it's time to finally start again.

There is also a massive pool (millions) of people programming in ActionScript and JavaScript, and having a server-side language providing all the great things that CF does would be an extremely compelling draw. I think a bold change could trigger a huge influx of developers.

I realize that a large number of existing CF developers would probably not embrace this, at least not initially. I would argue that for them, they can keep on using CF8 and keep on doing what they are comfortable with. Adobe could offer patches and updates that would port the new AS/MXML features to the old CFML syntax (since the new stuff would be running on Java as well). The question would be whether alienating some of these folks is outweighed by the benefits of such a change and the influx of existing AS/JS developers it would trigger. Being able to use the same language on the client and the server, using a killer IDE, and leveraging a huge array of easy-to-use services would be a ridiculously compelling platform.

I still love CF and I'm only saying this as frank and honest suggestions. Using FlexBuilder really brings home the power of a great IDE. Looking at things like Groovy (with its Spring and Hibernate stack) shows just how easy working in Java has become, and what a difference it makes to really be able to do full-blown OO development instead of worrying about how many CFC instances we're creating.

All that said, I know that the odds are probably close to zero that such a change would actually be made. Still, one never knows. Adobe was listening to us at the conference and I'd like to hope that all options are on the table as they go forward. The fact that they let us talk directly to them and listen to our crazy ideas is one of the things that makes the CF team great. I just want to see CF continue to grow and shine, and as you can probably tell by now, I think a radical idea like this could really shake things up and push ColdFusion to even greater heights.



Comments Comments (52) | del.ico.us del.icio.us | Digg It! Digg It! | Linking Blogs Linking Blogs | 8615 Views

Slides and Code from My Code Generation Presentation

As promised, here are the slides and code from my cf.Objective() 2008 presentation, "Leveraging Code Generation to Jumpstart Your Development". Check the bottom of this entry for the enclosure.

So far the conference has been great. I've learned a lot at several sessions, including Andrew Powell's integration presentation on using Spring and Hibernate as the Java model for an app using CF for Controller and View. Chris Scott's ColdSpring presentation got my wheels turning with regard to custom Proxy Factories. And the announcement of the ColdFusion Open Initiative was most welcome, with a public bug base and more organized enhancement request system.

I'll post more after the conference is over, but so far it's been as good as I expected it to be!

Comments Comments (1) | Download Download | del.ico.us del.icio.us | Digg It! Digg It! | Linking Blogs Linking Blogs | 6623 Views

On the Bandwagon: My cf.Objective() 2008 Schedule

In case anyone wants to meet up in MN, here's my schedule showing where I'll be and when. Hopefully I'll see you there, in the sessions, or at the bar! Or both. ;-)

Download Download | del.ico.us del.icio.us | Digg It! Digg It! | Linking Blogs Linking Blogs | 2960 Views

cf.Objective() 2008 Presenation on Code Generation

I've also been tapped to present at the 2008 cf.Objective() conference. My session is called "Leveraging Code Generation to Jumpstart Your Development".

There are two kinds of coding: fun and boring. We all want to focus on the fun kind, but unfortunately the boring, repetitive kind also has to get done. Luckily, a lot of the boring coding can be generated for us!

The underlying concepts of code generation will be discussed. This will include active and passive generation, along with the benefits and drawbacks of each approach.

I'll also look at using code generation to help you get to the fun stuff more quickly. Topics will touch on the full range of available code generation techniques, including CFEclipse Snippets, ANT build files, scaffolding, ORM frameworks, the Illudium PU-36 generator from Brian Rinaldi, and my UML to CFC Stub Generator. I hope to see you there!

del.ico.us del.icio.us | Digg It! Digg It! | Linking Blogs Linking Blogs | 4354 Views

Previous Entries