An Architect's View

CFML, Clojure, Software Design, Frameworks and more...

An Architect's View

cf.Objective() 2013 - What I Learned

May 19, 2013 ·

It's Sunday afternoon after the best cf.Objective() ever and I'm looking over my notes to offer some thoughts on the last three days.

Before I get to the content, I first want to call out the location as being awesome! The brand new Radisson Blu had some of the friendliest and more helpful staff I've encountered at a hotel. The food for the conference was amazing: terrific hot breakfast every morning and a delicious lunch buffet too. Possibly the best conference food I've ever had. In the evenings, my wife and I dined in the Fire Lake restaurant at the hotel - the food was so good, we didn't want to go anywhere else! Great selection of local beer on tap too. The hotel itself has a very nice modern feel to it, with excellent facilities and big, well-equipped room. I hope everything works out behind the scenes so that this is a candidate location for next year.

A few weeks back, I blogged about the sessions I expected to attend and noted it was mostly going to be about JavaScript. In the end, I made a couple of changes to my planned schedule but still ended up going to a session in almost every single slot. This is rather unusual for me: at past CFML events I've often skipped a lot of sessions and just hung out chatting in the hallways. Last year, I manned the Railo booth and did not attend a single session (which was a little extreme) but normally I only attend one or two sessions a day. Here's out it played out this year...


Despite my enthusiasm about the keynote, I got caught up in a post-breakfast conversation and by the time I got to the ballroom, the keynote was nearly over. Everyone I spoke to raved about how great it was and the TL;DR takeaway was: JavaScript is ubiquitous and you need to know it to build today's web apps.

Next up was my polyglot session where I showed prototype objects, callbacks and closures from JavaScript - and how to do that in CFML - then a little Groovy with code blocks - and how to do that in CFML - then a little Clojure with (infinite) lazy sequences and map, filter, reduce - and how to do that in CFML! My point was that now we have closures in ColdFusion 10 and Railo 4, we have access to these very powerful and expressive techniques we see in other languages, and we should leverage those concepts in CFML to create simpler, more maintainable - and more powerful - software.

Next was Ryan Anklam's "The Art Of JavaScript" presentation. He started out fairly gently showing some basic recommendations for safer code and then moved into some of the more subtle gotchas and traps for those of us new to JavaScript. I'd seen most of the points at some point in the past, spread across various blog posts and presentations I'd found online, but it all sunk in a little more this time and Ryan's presentation is an excellent collection of best practice "pro tips" that I'll bookmark and refer to often as I start to do more JavaScript.

After lunch, I skipped Adobe's general session and just hung out chatting with folks in the sponsor / vendor area. There seemed to be a steady stream of people leaving the general session and joining the throng in the hallway which didn't really bode well. Pretty much everyone I spoke to said that Adobe's presentation was aimed at IT managers, not developers, and there was a general sense of disappointment with the content. So, as expected, it was a marketing spiel and not a very exciting one at that, it seems.

Then I decided to go to Mark's "Top 10 Developer Features" in Railo. We're still on 3.3 at World Singles and this talk just made me more excited about upgrading to 4.1! Railo really are working hard to improve the language and make developers more productive.

My second session was well-attended, covering how Object-Relational Mapping breaks down because of a fundamental impedance mismatch between the object model and the relational model. I offerred that a document-based store, such as MongoDB, alleviates the mapping problems (and of course introduces other tradeoffs). I had a minor demo fail (and jokingly blamed it on Windows... when I later rebooted, the demo worked just fine without any other changes... no comment!). I was pleased to get so many questions from the audience and continued Q&A in the hallway after the talk for almost an hour and a half, missing the next session!


Kurt Wiersma's two hour deep dive into AngularJS and Bootstrap was excellent! The high point of the conference for me. Kurt maintained a great pace and flow through the material and AngularJS itself is very slick. If you missed his talk, make sure you track down his slide deck after the conference! Highlights for me included dependency injection, two-way data binding, built-in support for testing / testability, and directives (UI components that are invoked like custom tags).

Scott Stroz entertained us immensely with a look at Groovy and Grails and what he likes about it, as well as how it's made him a better CFML developer (because now he has been exposed to more advanced techniques from another language). Rakshith from Adobe was in the front row and Scott ragged on him quite a bit when he was comparing feature after feature to ColdFusion and showing where Groovy was better. It wasn't helped by some people in the audience (yes, including me) pointing out that Railo already has some of these features from Groovy, that ColdFusion is missing!

After lunch, I attended Railo's general session and ended sat between Rakshith and a very sickly-sounding Dave Ferguson (there seemed to be a lot of illness in the attendees this year - including Elliott Sprehn losing his voice so badly he had to cancel his talk). Again, a barrage of great CFML language features (making me even more determined to upgrade!), as well as a sneak peek at a new monitoring tool (from one of Railo's investors) that will show cflock times / failures, mails sent, query information etc all down to the page template, tag, line number. There will be both a free version and a commercial version. Sean Shroeder from Blue River / Mura CMS took the stage to talk about the Open CFML Foundation which is working to spread the word about CFML and some of its open source projects outside the CFML community, as well as working on an "academy" for teaching new developers about CFML. It all looked very exciting and I think a lot of attendees will be taking a serious look at Railo after this.

I decided to attend Dave Ferguson's SQL skills / performance talk which covered some ground I already knew and a lot of ground that I wasn't aware of, including a lot of the internal machinery around query plans and how they are cached and reused. Great material!

Finally it was my Humongous MongoDB session where I showed how to set up a replica set live and how to create a sharded cluster live. I also covered the concepts of write concern and read preference, and touched on both map/reduce and the built-in aggregation framework as examples of dealing with complex queries on very large data sets. The talk ran long but almost everyone stayed to the end, with plenty of questions about MongoDB at scale in production.

Due to the fabulous food at the Fire Lake restaurant, I lost track of time and was late to the BOF I was supposed to be hosting. Luckily Kris Korsmo had stepped up a while back to co-host and was holding down the fort until I arrived. Great discussions about test-driven development, continuous integration, Git workflows, deployment strategies, automation, bug tracking and so on. I got the impression that the biggest obstacle for most CFML developers is some mentoring on how to get started down this path. One problem is that a lot of this material is extremely well-documented but CFML developers often don't seem comfortable reading outside their community and want a CF-specific version created (which I find very frustrating - stop being afraid of looking at other language websites!)


Brad Wood kicked off the day with a talk about Backbone.js and Underscore for templating. After Kurt's AngularJS talk, I found this a bit scrappy and the code examples looked rather disorganized and hackish - but it was pointed out to me by several people that Backbone is "just" a library and doesn't set up a framework of best practices in the way that AngularJS does.

I took a break from sessions to meet with a couple of attendees to talk in more depth about MongoDB and I rejoined the sessions shortly into Tony Garcia's coverage of the D3 visualization library for JavaScript. It's a very impressive piece of technology and some of the examples really wowed the audience. It's always educational to see just what can be accomplished in the browser with JavaScript!

Brad Wood's second talk of the day with about the benefits of Agile software lifecycles. I think he did an excellent job contrasting traditional software development with Scrum and Kanban and explaining the principles behind high-quality, iterative software delivery. One of the best talks of the conference!

Closing out the conference was Ryan Anklam, covering AMD and RequireJS which was something I'd never heard of before but turned out to be a very interesting way to tackle large project development in JavaScript and how to manage reusability and dependency management. He also showed us a little of what's coming in this area in the next version of JavaScript (Harmony).

And then Jared was thanking everyone for attending, speaking, sponsoring and organizing, and it was all over until 2014!

If you were there and we got to hang out, it was great to see you! If you were there and we didn't get to hang out, sorry, it's always difficult to make contact with everyone. If you weren't there, well you missed out on a great conference and a lot of terrific content...

Tags: cfobjective · coldfusion · javascript · mongodb

5 responses

  • 1 Rakshith // May 19, 2013 at 5:39 PM

    @Sean I have some points on a couple of observations in your post.

    Are you sure you saw a steady stream of people leaving the Adobe general session? I hear from many that it wasn't true and there were a few people in the hallway right from the beginning who continued to be around. Curious to know what made you say there seemed to be a stream of people leaving the session.

    Moving on Scott's session.

    It wasn't helped by some people in the audience (yes, including me) pointing out that Railo already has some of these features from Groovy, that ColdFusion is missing!

    This comment of yours surprises me. It was only you and no else in the audience who spoke about Railo's support and you pointed just once that Railo ignores the semicolon at the end of the statement. Thats about it.
  • 2 Gavin // May 19, 2013 at 6:20 PM

    It was a great conference... And I think it shows it strength when even you attended most sessions.
    I am not a regular conference attendee (that is changing) but I liked almost every session and every session had 2 sessions I really wanted to attend... But I am happy with my choices. I just need to chase down a lot of slide decks.

    It was great to meet you, and a lot of other great people... Cannot wait for the next one :)
  • 3 Sean Corfield // May 20, 2013 at 12:07 PM


    The "steady stream" comment was initially made to me by someone I spoke to in the hallway who'd been there for some time by the time I arrived from lunch. In the next 20 minutes that I stood there I also saw people continue to leave in ones and twos. Given the disappointment that many people expressed to me about Adobe's general session, I felt it was reasonable "color commentary" in the blog post.

    As for Scott's session, the initial "Railo implements that" comments were coming from people behind me (and at least one person across the center aisle, but much further away). When Scott initially brought up the semicolon issue, I didn't make a public comment (although I did whisper it to someone nearby). When he went back to the semicolon issue in a later slide and was so enthusiastic about Groovy because of it, I made the public mention of it. When Scott first showed the elvis operator, it was someone else - not me - who said out loud that Railo implemented it. It was only when Scott asked about what the equivalent of his Groovy example would look like that I volunteered the equivalent CFML (that would work under Railo).

    Since you were sat right in the front row, perhaps you couldn't tell where the comments were coming from behind you and maybe you just didn't hear the other comments?
  • 4 Adam Cameron // May 20, 2013 at 5:40 PM

    Sean / Rakshith:
    I didn't notice the ppl leaving the Adobe presentation... I'm not saying they weren't (or were!), just that I didn't notice one way or the other. Personally, I only stayed out of courtesy because as a presentation, it really wasn't aimed at me - a developer - it was more like a marketing presentation.

    But I can confirm it was more than just Sean pointing out that Railo already did some of the stuff Scott mentioned, whereas CF does not. That said... so what who said what? The point is Railo covers some of these interesting coding techniques / capabilities already, and CF does not. There was no instance where someone piped in with "well *ColdFusion* does that" [with the inference being Railo not doing so]. And had I spotted anything like that, I would have made the point of putting my oar in (as, I'm sure, would other people there).

    That aside, thanks for your hard work at the conference Sean, I really enjoyed all your presentations. And it was good to have a catch-up, albeit only briefly.

  • 5 Tim Cunningham // May 21, 2013 at 11:37 AM


    Speaker Slides can be found at this central Dropbox

    It was an excellent conference