I've almost recovered from this year's cf.Objective()
so I wanted to get my thoughts on paper before the memory blurs too much. As usual, it was an excellent conference with top-quality sessions from top-quality speakers. It's the only conference that I would pay to attend - and would pay out of my own pocket if I had to. I learn plenty of new things at cf.Objective() every year and the networking is phenomenal because it's a relatively small, friendly conference (around 200 attendees this year).The location this year was the Hyatt Regency in downtown Minneapolis which meant plenty of bars and restaurants within easy walking distance which was a big plus. This venue is the first choice for next year's conference and you can help choose the date of the conference
by completing a short survey.
I arrived late on Tuesday night to get a full four days in. Here's how they went...
I'd been promoting Luis Majano's pre-conference ColdBox training course pretty heavily and because he made his quota, he allowed me to sit in and observe (so that I could write up my thoughts by way of recommendation).
As you might expect, the course material is copious, detailed and very professional. Far beyond a set of slides and exercises, attendees get a one inch thick spiral binder more akin to a reference manual for the framework, as well as a big exercise book. The two day course has even more material! The first 90 minutes are extremely intense: a huge
amount of information about the framework concepts and terminology followed by an exercise to see how much of that you absorbed. After that, Luis works through various aspects of the framework, explaining how things work and then setting a class exercise for each area. The course runs 8am to 6pm with several brief breaks and an hour for lunch. If I'd actually been participating and working thru the exercises, I would have been exhausted by the end of the day - but I would have learned an incredible amount about ColdBox!
After watching Luis at work, I can highly recommend him as a trainer! If you're going to CFUnited
and want to learn ColdBox, I strongly recommend taking the one day CBOX-100 training course
offered pre-conference. You won't be disappointed!
You can keep an eye open for more training on the ColdBox blog
I learned a little ColdBox in order to present Comparing Application Frameworks to BACFUG in April. That was the first time I'd really looked at ColdBox, despite having worked so much with Fusebox, Mach-II and Model-Glue. I was extremely impressed with the documentation and the sample applications and, as I began to explore the framework, equally impressed with what Luis has created in terms of code. I think that I would probably recommend ColdBox as my number one choice in frameworks now and I look forward to working on client projects where I can use this impressive framework!
After ColdBox training, it was time for the opening reception for the conference. Blue River were the sponsors, creators of Mura CMS
(formerly known as Sava CMS). They gave a very brief - and very polite - introduction to their company, services and products and then let us get on with eating the food they provided and taking advantage of the cash bar. The local CFUG (TCCFUG)
hosted a meeting immediately prior to the reception (which I missed, unfortunately) where Blue River presented their Mura CMS product.
I've used a number of content management systems over the years. The Fusebox website is powered by FarCry and the cf.Objective() website is powered by Savvy. The Railo Technologies website is powered by Mura CMS. In addition, Broadchoice, my former employer, created a very powerful, easy to use Community Platform content management system (which is really much more than a CMS!). I've used all of these CMS products pretty regularly and I have to say that Mura is far and away my favorite CMS in terms of usability. The Broadchoice Community Platform is more powerful and easier to skin, but Mura is much easier to use for day-to-day content editing. And Mura is free and open source too (and their Express version is powered by Railo)!
Adam Lehman and Terry Ryan gave the opening keynote for Adobe, talking about the (great) State of the ColdFusion Union, the accolades, the press coverage, the increasingly open process (CFML Advisory Committee progress, open bugbase coming with Centaur public beta) and the huge increase in the number of CFML developers since Adobe acquired Macromedia: independent Evans Data Corporation estimates the number of CFML developers has almost doubled since the acquisition to around 780,000!
Then they moved to cover Centaur features and Bolt. They covered the ColdFusion-as-a-Service features, which open up mail, database access, PDF manipulation, image handing etc as a set of AMF and SOAP web services and they showed the ActionScript libraries they are developing. All very impressive. Next they demo'd Bolt, covering the code generation features (which Adam covered later in a full session) and giving chops to Ray Camden for some extensions he is already writing for Bolt! The new functionality previewed at cf.Objective() was the server manager AIR application that allows you to manage a number of ColdFusion installations from your desktop, including the ability to show differences between configuration of servers and to apply common configuration across a number of servers (Railo already has a downloadable server extension for synchronizing configuration across servers so it's good to see we're thinking along the same lines - Adobe's AIR client is very, very nice!). They also mentioned some new caching functionality coming in Centaur. It was a well-received keynote although most of it I had seen at CFUnited and MAX - but of course Adobe always release a little bit more new information at each conference which is great!
My new team at Railo met to discuss business plans so I missed the morning sessions but I was pleasantly surprised by lunch. The conference had to cut back on expenses this year due to the economy but you wouldn't have guessed from the delicious three course seated meal!
After lunch, I went to Mark Mandel's "Rapid OO Development with ColdFusion Frameworks" session. He made a big point of making OO look extremely hard and tedious before he started in showing how frameworks like Transfer ORM and ColdSpring can really minimize the amount of work you need to do. He also showed how judicious use of powerful base components can also reduce boilerplate code, finishing with a very impressive demonstration of onMissingMethod()
- my favorite new feature in ColdFusion 8 - which dramatically reduced the amount of code needed in his application.
My next session was Chris Scott's "Developing Flex Applications with the Swiz Framework". I used Swiz at Broadchoice for six months or so and was very impressed (in fact Chris quotes me in his preso as saying my team evaluated a number of frameworks and preferred Swiz over all of them). Chris did some great audience participation to prove his point about class responsibilities and why dependency injection was so powerful. I learned about new features in later versions of Swiz than we'd been using so it was a great presentation for me. I was disappointed to see how few people attended - the rest of you seriously missed out!
The final session of the day was Adam Haskell's "CFML Portlets". I'd said this was my most anticipated session of the entire conference and I wasn't disappointed! It was absolutely fascinating to see how Adam had solved the problem of integrating CFML with the JSR 168 / JSR 268 portlet standards in such a clean way. He demo'd examples running on JBoss Portal but said that it supports other Java portals as well - and should work on Open BlueDragon, Railo and Adobe ColdFusion. Best of all, the project is free open source - you can read about it here
After the sessions, the Railo team gathered in Brian Meloche's room to record a Railo "Gang of Four" interview
for his CFConversations podcast. Through a Herculean effort, he managed to publish it that night (albeit at 3am!). Thank you to Brian for asking those hard questions that I know are in many people's minds. I hope folks enjoy hearing our answers!
After that "interrogation", the Railo team headed to Fogo de Chao
for meat, meat and more meat. Highly recommended!
I started the day with Peter Farrell's "Mach-II 1.8 Simplicity" presentation. At first I was a bit disappointed by the amount of time dedicated to the 1.6 release feature but it turned out to be a good refresher on just how much the framework has advanced recently. Then Peter moved on to the new features coming in 1.8 and it was clear just how much these add to a developer's toolbox. Mach-II continues to evolve as a very focused, streamlined core MVC framework.
Another Railo team meeting meant that my next session was the tail end of Matt Woodward's "Best of Both Worlds" Java and ColdFusion integration talk. I wish I'd been able to attend more of it because it seemed really good.
After lunch I went to Luis Majano's "ColdBox Platform" session. It covered a lot of what I'd seen in the training, in brief (very brief!), and then previewed a few things from the upcoming 3.0 release which moves ColdBox from a framework to a platform by separating out a number of features and functionality.
Due to a session cancellation, the Railo team had the opportunity to hold a Birds of a Feather session to answer questions from the community. Doug Hughes won the first Railo T shirt for asking the hardest questions - thank you Doug!
I got caught in hallway conversations and missed the much-anticipated Mystery Science 3000 ColdSpring session by Mark Drew and Chris Scott. Apparently it was very good.
After a short break, the main Birds of a Feather sessions kicked off with "Ask the Experts", featuring Mark Drew, Mark Mandel, Phill Nacelli and myself. Things started off a little tentatively but the audience soon got into the swing of it and asked us all sorted of questions about software architecture which we endeavored to answer - I hope we helped folks?
Russ Johnson didn't turn up for the Git BOF so, after some discussion, Simeon Bateman and Peter Bell led the charge on that but I decided I was beat and headed for the bar to have dinner. Sliders. Sorry, I don't get to scratch that itch very often in health-conscious California!
After the BOFs, the CFML Advisory Committee met to resolve some issues where we had failed to reach consensus. Or at least half the committee met. Adam Lehman, Matt Woodward and myself went over some slightly controversial issues and, by some judicial adjustments of our own votes, we reached near unanimous agreement on several issues. We also finalized our choice of the new community member - Peter J. Farrell!
The conference finally got the better of me and I decided to sleep in and miss the first session. I intended to catch Adam Lehman's session on extending Bolt but I got waylaid by Jared and his wife (and their cute little daughter) and only saw the very end of Adam's talk. It seemed well-received.
Next up I had a hard choice to make (well, actually one of many). I originally planned to go to Terry Ryan's "Advanced ORM" talk - which was packed out! - but I'd bumped into Sean McCabe in a hallway conversation at some point and was very intrigued by his talk so I ended up going to that. It wasn't very well attended but it was absolutely one of the gems of the conference! He explained that his company had pursued a mixed language, Java and ColdFusion approach and then he delved into the problems and potential solutions that they had gone through. My favorite quote of the conference came from this talk: "If your code is dirty, putting it in buckets just gives you buckets of dirt!". I felt this was one of the best talks of the conference - I got a huge amount out of this!
After lunch, it was my turn to speak. A lot of people turned up to hear me talk about "Behavior-Driven Development with cfSpec" and this brand new talk ran exactly on time, which was very gratifying for a first time presentation. I'll be giving this talk to BACFUG and SLCFUG in due course (and maybe others?).
My final session of the conference was Andrew Powell's talk about Merapi. Like a couple of the other "best sessions", it was poorly attended but it was an awesome presentation. Andrew gave everyone an RFID tag to showcase one of his examples and everyone "sucked" except for Marc Esher. Then we got the Lego Mindstorm robot controlled by an AIR app, which Andrew invited the audience to come up and play with. This was my second most anticipated session and it didn't disappoint!
And then, after the software raffle, it was all over for another year.
cf.Objective() 2009 was fantastic and I'm looking forward to cf.Objective() 2010. If you can afford only one CF conference a year, this should be your pick. If you think you can't afford any conferences, you're wrong - you can't afford to miss this one. Sell your wife, sell your cat - attend cf.Objective() 2010! It'll be the best thing you ever did for your career.