Of all the sessions I took yesterday two stood out from the crowd, John Paul Ashenfelter's Agile ColdFusion and Sean Corfield's Managing CF Components with Factories.
Agile ColdFusion with John Paul Ashenfelter
Ashenfelter's presentation was on the theory or paradigm of Agile development, specifically the Agile Manifesto. I was not too familiar with this idea before the presentation and it really hit home for me. The Agile Manifesto focuses on individuals and interactions over processes and tools. It's about working software, customer collaboration, and responding to change over contract negotiation and following a plan. While Agile is apparently not about tools, you do use tools to become an Agile developer or an Agile team. Much of John Paul's discussion surrounded using source control systems, frameworks, testing and automation tools, bug tracking and project management tools. It was really good stuff.
Managing CFC's with Factories
Sean's talk focused on using factories to help model your CF applications and CF objects. He described two basic kinds of objects those that deal with people, places, and things and those that deal with services and infrastructure. The first type of objects (people, etc) tend to be used more than once in an application and are often created per session or per user. Services and infrastructure objects on the other hand are typically instantiated once, cached, and used throughout an entire services architecture. What Factories do is make objects. They know about object dependencies and they address three basic problems when dealing with objects. First, the problem of hard-coded paths in application code. Second, the negative impacts or effects of moving CFC's within an application. And third, Factories handle some object initialization for you. I'm still learning, but from what Sean was saying Factories use a configuration file in an effort to understand CFC pathnames, type names, initialization requirements (arguments, constructors, etc.) and through the config file they understand each objects dependencies and each of the dependencies of those objects and so forth. It sounds like pretty powerful stuff. The configuration files can be created to setup how the application and it's objects should be created on different environments, like a staging environment or a production environment. From this, there are no changes needed to your application in order to deploy it in different environments. Each configuration file directs your application accordingly. I'll be looking into Factories much more.
There were definitely some "bummer" sessions, but overall it was a productive day.
A big thanks to Emmet McGovern for hooking me up with his sprint connection so I could get this posted. The conference wireless is horrific this year.