I'm several days behind in posting this, traveling and lack of sleep has worn me out. Here's a recap of day 3 of CFUnited 2006
Mindmapping for Better Programs with Michael Smith
I started off the day with Michael Smith's talk on Mindmapping. Mindmapping is a very simple concept that, in my opinion, is brainstorming wrapped in a new definition. Michael defined mindmapping as organizing ideas in a visual, web-like structure. You start by placing an idea in the center of a page and then expand the idea with related topics that further define an application, a process, a Web site or anything really.
For instance, you could put the phrase "Redesign Web site" in the center of the page and then branch off that idea with further ideas like "Login," "Registration," "Schedule" etc. Within each of these three new branches you would expand them further with new ideas. The goal is to use short keywords to generate ideas, connect ideas to one another, and use the right brain to visually "map" the topic. Mindmapping can be accomplished with a pen and paper or you can use software to make it easier to move ideas around, add helper icons, and organize the information. You can check out Mindmapper or Freemind (I've tried this one) if you are interested. Uses of mindmapping for developers include requirements gathering, brainstorming, testing and debugging, project management and more.
Heresy! Embracing Duck Typing in CF with Sean Corfield
Once again Sean delivered an amazing presentation. Anyone wanting to learn how to deliver better presentations needs only to look at Sean Corfield, Hal Helms, and Ray Camden. These guys know how it's done. Sean's talk focused on Duck Typing which just means not specifying a variable type in tags like CFPARAM, CFARGUMENT, CFFUNCTION, CFINVOKE, and CFOBJECT. While ColdFusion compiles to Java it is not Java. Java is a strongly typed language and ColdFusion is not. Another difference between these two languages is in what actually has "type." In Java variables have types whereas in ColdFusion variable values have type. When you specify types in ColdFusion you instruct CF - at runtime - to check the value of a variable to determine if it is of the specified type. If the variable's value is NOT of the specified type CF throws an exception. The idea of Duck Typing is that you speed up your CF by not specifying types while also giving your code a little more flexibility. I have not personally run any speed tests but Sean mentioned how Fusebox 5 became 2-3 times faster when using Duck Typing in key areas. Joe Rinehart was in the audience and mentioned how Unity, the latest version of Model-Glue, became about 2.5 times faster when implementing Duck Typing in several areas. This to me is pretty compelling evidence that you can achieve greater speed when not specifying variable types.
Are there any drawbacks to Duck Typing? Sure. If argument types are removed you must be more thorough in your testing at runtime. Web Services require argument types, so Duck Typing can't be used (you could write a facade CFC though). Also, if you plan to consume your functions from Flex you must specify argument types.
Secrets of Top-Notch Dev Teams with Maxim Porges
Maxim's presentation was easily one of the best I attended the entire conference. Switching between a developer role and a manager role I found lots of value in Maxim's ideas and experience. In fact, so much information was covered it would be impossible to mention all the good tidbits but, I will mention a few. Maxim defined great software teams as having an open forum, collaborative, academic environment, a high level professional respect between team members, evenly distributed work load, and clear well-documented expectations. He went on to say great development teams place high value on community decision making, peer reviews, new ideas, and appropriate down-time. The presentation also focused on how to appropriately manage technical people giving them enough resources to do their job, but while staying out of their way and not over-managing them. At the end of the presentation Maxim spent some time talking about interviewing/hiring practices that he's found useful. These included a 20 minute phone interview, 30 minute technical screening exercise, and 1 hour in-person interview.
Flex 2.0 and CF Integration with Mike Nimer
Mike's talk was pretty good, focusing on details related to CFMX 7.0.2 and Flex 2 integration. He provided some advanced details on the use of RemoteObjects in exchanging data between CF and Flex. He also demonstrated use of a command-line window to introspect ALL the data being passed between ColdFusion and Flex. He showed a few demo's on how to wire ColdFusion to Flex, and get Flex to manage all the data synchronization in a multi-user application. For instance, instead of ColdFusion keeping track of all the data from a database, ColdFusion asks Flex for the data and Flex asks the database for that data. In this scenario Flex serves as a data delegate managing data synchronization between the client and server. Flex 2 is pretty powerful and with CF mixed in as middleware it's an amazing combination.
This day of the conference was the best by far. I took something away from every session and thoroughly enjoyed hanging out with Mark Drew, Emmet McGovern, and Cutter Blades. Also, a big thanks to Josh Adams of New Atlanta for taking Cutter and I out to eat after the conference and for all the swag he sent back to our user group.