Part 2 of the a review of CFCamp 2014 held at Stadthalle Germering, Munich in Germany.
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.
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.
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…