Part 1 of the a review of CFCamp 2014 held at Stadthalle Germering, Munich in Germany.
Held on the 20th and 21st of October, I was given the opportunity of attending CF Camp 2014. Along with Andrew, our technical director, we flew to Munich and joined the conference held in Stadthalle Germering, just west of Munich. Couple of hiccups along the way (wrong turn on the autobahn!) but we got there.
The venue itself had a large hall with a small exhibitors’ room for sponsors with a second track of the schedule presented on another floor in a smaller room.
I took a Dell laptop running Linux Mint, this proved really useful during the conferences and I had no problems following along with what the presenters were doing on stage.
CommandBox is a tool for CFML developers aimed to make it easier to get a project up and running quickly – so they can get to work sooner. The talk demonstrated the power of using it to manage the downloading and installation of dependencies for a project, very similar to the node package manager.
It highlighted how CommandBox can be used and extended to make your own commands whilst all being written in CFML. The example command they created was a command called norris that echoed out chuck norris anecdotes. Whilst amusing, it effectively displayed how easy it was to develop your own custom commands.
I can forsee using CommandBox to help set up projects on a dev machine, or perhaps even in production. The developers of the Preside CMS for example have written their own command to install their CMS. Mura is working on their own command as well.
This was a great introductory talk by American Kris Korsmo, a professional pilot, flying 737s for Alaska Airlines. With a history in software development, he is a certified Adobe ColdFusion expert and has spoken at previous conferences.
This talk focused on what object orientated programming is, why it is important and was very good at explaining what many of the terms used in OO are. What particularly impressed me was his knowledge of design patterns – something I would like to see more of in the CFML world as I feel they are under used. Unfortunately, his slot was only an hour long…
This talk followed directly after the OO talk and was presented by Chris Schmitz, focusing on dependency injection. DI/1 is a dependency injection framework included within FW/1, the most popular CFML framework. Essentially DI/1 is used to manage the dependencies within your class hierarchy.
I must confess my understanding of dependency injection varies to what was described in the talk. I thought that it was a pattern used in OO where you passed the method doing what you want to do into the function you are calling. For example, if you have a function called send message, you would pass it the message you want to send and an object that will actually send it. So your sendMessage() function could take an EmailService object and send your message as an email, or it might take an IMService message and send it as an instant message.
During the talk, they used the framework to load the dependencies of your object’s class hierarchy without calling them explicitly. This is something that I will look into further and will need to do some experimenting with in DI/1.
This talk in particular would probably have the most immediate effect on my day to day work. Presented by Gerry Gurevich, we looked at some of the tools available to us as developers that we don’t really think too much about.
The two points that I found particularly useful were, the cfdump and cftrace tag arguments and how to output these to the console or even a file.
There have been a number of instances where I have wanted to see the output of a dump but not wanted to interrupt the flow of the application. Gerry demonstrated how by starting CF from the command line and adding an argument to the cfdump tag we can get information dumped from the server straight into the terminal without affecting the output html or having to use a cfabort.
At first glance this seems like quite a small thing but in day to day use this proves very useful in the debugging process. The other point was that it is possible in both Adobe ColdFusion and Railo to customise the debug information written out at the end of a request when robust debugging is turned on in the CF Administrator. This template is managed by a CFM file within your WEB-INF directory. You can use it to completely change what is output by the debugger, allowing you to do things like group specifics bits of information together, make them collapsable, and a whole number of other things.
There are many examples online to be found which you can utilise or you could roll your own. Definitely something I shall be using and adapting to each project as required.
Continue reading with part 2.