Thank you, we'll be in touch Call us: 01474 704400

CFCamp 2014 Review - Part 2

Continuing our review series of CF Camp 2014, here is part 2, carrying on from part 1.

Best Practices are Best, Except When They’re Not

Perhaps one of the more controversial topics depending on the type of developer you are talking to, Nolan Erck’s talk provided valuable validation that using best practice methods are not always the best solution, nor even necessarily possible.

He explained some of the real world situations he has been in, where client demands and available resources have meant that using best practices would not be possible. He referred to a client who wanted to be able to directly edit the HTML of the main page on the production server via FTP.

Nolan had been using source control to manage the codebase and push changes to test, staging and production servers. Directly editing the files on production was clearly a bad idea as they would be overwritten in any future code pushes. The client refused to work any other way however and eventually, they came to the compromised solution whereby the client would make his changes, upload via ftp and then click a hyperlink. This hyperlink pointed to a CFM page that in turn called cfexecute command that merged those changes into the source control branch.

This was just one of many situations given by Nolan, but the overall message to take-away was that it’s not always possible to use “best practice” but to make sure you try and use good practices, explain the technical debt to the client and by using things such as source control and unit testing, you can help limit the impact and hopefully some day rectify the changes you had to meet the demands at the time.


ContentBox is a CMS written by the ColdBox development team, whose goals were flexibility and scalability. They built it upon their ColdBox framework and made it is easy to setup, connected to ForgeBox and is open source. You can add and remove modules easily and even separate out these modules based on security rules.

For example, you could have the admin module inside your network whilst putting your blog posts out in the DMZ. It supports rewrite rules out of the box and can connect to all the usual data sources. Ortus Solutions provides a number of professional services should you require them and the team sounded more then willing to help out implement custom functionality to extend the CMS.

Two features that caught my eye was the ability to import/export pages as xml or JSON and also the available APIs. This could make it particularly useful for integration with other applications. Jorge Reyes from the ColdBox team was presenter although it did echo a sales pitch. The CMS however, does not currently support multi-sites, and although the front end fully supports language localisation, there are still elements of the admin area being worked on.

It is worth noting however, that multi-sites should be available in a release soon. I think once it does support that, it could be a very strong contender to Mura or PresideCMS.

ECMAScript 6

Matt Bourke, one of the nicest people I met during the conference, gave a great talk on ECMAScript 6. When people are talking about JavaScript, what they are really referring to are dialects of ECMAScript. ECMAScript is the standardised language specified by Ecma International (ECMA-262 and ISO/IEC 16262).

Version 6 introduces a number of new features to the language in order to make it easier to use, more performant and more powerful for use in today's world of web applications. It introduces the variable declarators “let” and “const”, inbuilt modularisation, classes, generators promises and a whole range of other constructs to bring the language up to date.

Matt gave examples of each of the new features in the talk with explanations of where they would be useful. He also provided an example of a feature planned for ECMAScript 7 called observer - that developers are trying to get pulled forward into version 6. The “observe” function is meant to allow objects to listen for changes in a variable and to handle that event as necessary. This feature is so highly called for because of the efficiencies it would bring to libraries such as knockout.js, AngularJS and Ember. Something in the range of 20-30 times the performance.

These features of the language would make many front end tasks a lot faster and easier for the developer to programme but so far are only available in Chrome with the flag for experimental javascript turned on. ECMAScript 6 is something I definitely can’t wait to get to use fully once it is officially supported.

Event Gateways

This talk was perhaps the most advanced session out of all of those at CFCamp and perhaps unsurprising since it was presented by Gert Franz, the CEO of Railo Technologies.

At first glance the talk didn’t sound as though it would be too inspiring but Gert has amazing oratory skills and surprised everyone with the power of event gateways. Event gateways are available to both Adobe ColdFusion users and Railo. However, only in Railo can you write event gateways in CFML. You have to revert to JAVA in Adobe ColdFusion. Essentially event gateways are a mechanism in the CFML engine that enable the server to respond to events outside of the HTTP context.

An example of this can be found in how CommandBox works. CommandBox uses event gateways in order to communicate with the server from the CLI. Without it, CommandBox would not be possible unless it was ported into the engine itself.

During the talk Gert showed us how to create an event gateway and he created one that could communicate using the open source ICQ protocol. This was a very cool demo where he used an ICQ client to communicate with the server, ask how it was doing and get it to return to him a status update. The possibilities of getting Railo to act as an application server outside of HTTP are truly outstanding and although quite an advanced topic I can see some very exciting things coming from this.

Stay tuned for part 3 coming soon...



David Jones, Developer



A note to our visitors
Our website uses cookies so that we can provide a better service. Continue to use the site as normal if you're happy with this, or find out how to manage cookies.