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.



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!

Want Free Subversion, Trac, Mylyn, and More? Of course you do.

If the idea of 500 Mb of free Subversion, Trac (with XML-RPC access for things like Mylyn), Wiki, and a whole lot more sounds like a good thing to you, check out Assembla.com. I signed up last night and am really quite floored.

This thing has virtually everything one could want in a project management, source code, ticket tracking, and team collaboration setup. And again, it's free for up to 500 Mb of stuff. And after that it is a paltry $12.50 per month for 5 Gb of storage, plus a few extras like https access.

I've been hosting my own SVN locally but have increasingly been thinking about moving it to an external service so that I can get to it from anywhere. This seals the deal. So far, Assembla has been very impressive, and if it keeps up, I'll be springing for the $12 commercial account and be done with it.

Have a look if you have been thinking about jumping on the Subversion or Trac bandwagon but don't have the time or inclination to set up your own server. And if anyone else has been using Assembla, please share! Thanks.

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. ;-)

Development Tip: Change Your Coding Font

Just posting a quick tip about a topic that most people would probably not consider: changing your font in your IDE. I highly recommend Consolas on Windows, and the very similar Inconsolata on the Mac, which are by far the best fonts I've found for coding. It sounds a bit crazy, but a little thing like this can make a big difference in your productivity, especially when you're literally staring at it all day! Check it out compared to Courier New, a common default font:

Consolas / Inconsolata:




Now Courier New:




To me, the difference in sharpness and clarity is quite significant! Give it a try and see what you think.


More Entries

BlogCFC was created by Raymond Camden. This blog is running version 5.9. Contact Blog Owner