cf.Subjective() 2012

I’ve heard cf.Objective() called “the [CFML] community’s con­fer­ence.” Adobe’s MAX is all bom­bast and big bud­get, but cf.Objective() is where peo­ple go to learn, grow, and net­work. I can safely say, dur­ing my first expe­ri­ence at this con­fer­ence, that rep­u­ta­tion shone brightly through.

This year’s CF Objec­tive (can I spell it this way, for now?) was held mid-May in Min­neapo­lis, MN, but it con­nected CFML pro­gram­mers and enthu­si­asts from across the globe. Speak­ers came from all sorts of back­grounds and orga­ni­za­tions, includ­ing some from Google and a nice show­ing from Adobe. Some talked about tech­nolo­gies they use, some about tech­nolo­gies they’ve built, and some just shared their expe­ri­ences in this crazy world of web development.

The con­fer­ence kicked off with Adobe employ­ees giv­ing the keynote. Coin­ci­den­tally (or was it?), Cold­Fu­sion 10 was newly released, and the focus of the keynote was to show off and expound on all the cool new fea­tures that were avail­able. While it was a well exe­cuted plug for the brand new ver­sion of their prod­uct, it did intro­duce me to some fea­tures I wasn’t aware of; in par­tic­u­lar, Adobe Cold­Fu­sion 10 has taken a strong stance in sup­port­ing HTML 5 technologies.

Nearly every ses­sion I attended felt worth­while, inter­est­ing, and use­ful. One of my favorite speak­ers was Nathan Strutz, whose first pre­sen­ta­tion was tech­ni­cally dis­as­trous but whose later pre­sen­ta­tion was awe­some. LESS CSS, Meet Cold­Fu­sion fired me up about this pop­u­lar CSS pre­proces­sor. I had tried it sev­eral ver­sions back, and his talk inspired me to play with it again. As much as I love pure CSS, I def­i­nitely began to see how using a pre-processor could increase my pro­duc­tiv­ity. I even had a chance to talk to him in per­son, after the talk, and we dis­cussed our equal frus­tra­tion with the way Chrome han­dles load­ing local­host JavaScript files.

Pete Fre­itag is a guy who has Cold­Fu­sion secu­rity on his mind all the time. Maybe that’s over­stat­ing a lit­tle, but his com­pany and web tools, like Hack My CF, are built around the mantra of “secure your stuff”. I knew he had a strong focus on CF secu­rity, but his talk really did out­line how much he knows and thinks about this stuff. “Writ­ing Secure CFML” was a great sum­mary of secu­rity tips for all CFML writ­ing and some of the new secu­rity fea­tures in Cold­Fu­sion 10.

New to CF Objec­tive this year was a JavaScript devel­op­ment track. I’m unique in that I play pretty equally in the CFML arena and the HTML/CSS/JS arena, and I for­got that a lot of (most of?) the CFML world has no idea what’s on the other side of the fence. That said, the JavaScript talks I went to were far from ele­men­tary. Jason Kadr­mas had a great talk on build­ing HTML 5 games with Phone­Gap, Steve Stroz also gave Phone­Gap some love, and Elliott Sprehn dis­cussed Angu­larJS. Elliott’s talk got me excited about Angu­larJS – and I imme­di­ately ran to go play with it – but the JavaScript talk I enjoyed the most was Simeon Bate­man’s “Node.js And You”. What I liked about it was that he gave the stan­dard “build a web server” demo, and then told us, “But that sucks. Who wants to build their own web server?” I’ve played with Node.js and worked through the stan­dard demos, but he built on all that and showed some of the really cool things you can do with it.

My favorite talk was also one of the longest; it was “Run­ning CFML on Apache Tom­cat: Deep Dive” by Matt Wood­ward. I first became aware of Matt’s exper­tise thanks to the pod­cast he used to do, Cold­Fu­sion Weekly. This ses­sion was one of the best at bal­anc­ing the lec­ture and the lab. We got a lot of hands-on time, but we weren’t just thrown to the wolves. In the end, I learned a lot and had some­thing to show for it.

Long story short, it was a great con­fer­ence. There are fan­tas­tic speak­ers and ses­sions; there is a strong com­mu­nity show­ing; and (for me, at least) there is a con­ve­nient loca­tion. For any CFML devel­oper won­der­ing, I absolutely rec­om­mend cf.Objective().