Jul
2

CFUnited Day 3 Session Recap

Posted by Aaron West at 10:51 PM in ColdFusion, Flex, CFUnited 2006

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.

Aaron West's Gravatar
About this post:

This entry was posted by Aaron West on July 2, 2006 at 10:51 PM. It was filed in the following categories: ColdFusion, Flex, CFUnited 2006. It has been viewed 10321 times and has 5 comments.

5 Responses to CFUnited Day 3 Session Recap

  1. Peter Bell

    Hey Aaron,

    Nice round up. I must mention, though, that as Sean is busy telling everyone, the main benefit of Duck typing is NOT performance.

    Duck typing allows us to get away without interfaces and nulls, it means we don't have to do dirty hacks to stub out components for testing by making them inherit from the components they are stubbing, and it means we can do interesting things like mixins.

    Perhaps most interestingly, methods are first order variables in cf. I can take myUser.Save() and just copy that method right across to myTeacher, I can rename myUser.Save() as myUser.whatever() dynamically as it is just another variable!!!

    I would have posted on this, but I still can't figure out what to use it for - only that it could be both very powerful and very dangerous. It's like AOP - it takes a while to get your head around.

    Best Wishes,
    Peter

  2. Sean Corfield

    Yeah, I have to say it's very frustrating that with all the slides about dynamic vs static typing, the only thing people seem to have heard in the presentation is "performance". I have posted some more entries on my blog that try to address this.

  3. I can't speak for everyone else, but for me speaking about potential performance gains is the easiest to communicate and likely the one most people will be interested in hearing about. Considering the weight being placed on how Model-Glue and FB5 were sped up due to Duck Typing, that only helps to propagate the speed discussion.

    I didn't mention anything regarding how Duck Typing helps in writing stub methods used for testing or how not specifying an argument type (when passing a full CFC as an argument) creates greater flexibility simply because I didn't want to type something incorrect. I'm still looking into this idea and I want to have my facts straight before I mention more.

    That said, I do agree wholeheartily that there are certainly more benefits to Duck Typing than just speed.

  4. Sean Corfield

    I think it's one of the dangers when presenting a new type of topic like that...

    What I said: "... mock objects for unit testing ... programming to an interface ... performance improvements ... looking outside the Java box ..."

    What people heard: "blah, blah, performance, blah"

    The talk had 40 slides. Just three of them mentioned performance. Four covered testing. Most all of the rest discussed the differences between the Java and ColdFusion type systems and the fact that duck typing provides us (CFers) with options that they (Java developers) don't have.

  5. Peter Bell

    Hi Aaron,

    I know EXACTLY how you feel about not wanting to blog about the rest of the stuff - I'm also still trying to get my head around it as well.

    However as one of the people who'd blogged on the fact that Duck typing CAN be used to get performance benefits in certain specific situations I felt I should do some pennance by making sure there was at least one comment re-iterating the range of other things it can be used for :->

    I think I'm just going to post something wild on using this for AOP and then I'll let some people smarter than me figure out whether it's a worthwhile use or not.

    Love the blog!

    Best Wishes,
    Peter