Well, I've finally decided to start presenting at my local ColdFusion User Group, and then eventually on the CFMeetup and at conferences in the future. My first presentation is titled Installing multiple versions of ColdFusion together. I will be sharing my experience in setting up my laptop with both CF8 & CF9. It will be a hands-on session so people can follow along. This will be my first presentation so wish me luck!
From Scopes to Structures
As I think about my transition to Object Oriented Programming, I have to reflect on my 'ah-hah' moments when things started to make sense. I thought this next post was going to be about my first experiences with CFCs, but in analyzing what drove me to them I realized that my understanding of structures was an important step in the transition to OO thinking.
I was introduced to structures while consulting for a large corporation in one of their small Competitive Intelligence (CI) divisions. (CI = Think business domain specific library services) At one point in my time with them, we hosted their site on their internal shared ColdFusion host. To host a CF site with them, our site's code had to comply with their best practice guidelines. The one rule that has stuck with me all these years is: Avoid CFQUERY within a loop (CFLOOP or CFOUTPUT with the query attribute)
Note: This is the actual rule from that time period. Notice the capital tag names. I still have old sites with all their tags capitalized. (shutter) That's why I still have HomeSite installed, to use the tag case conversion tool. I'm just saying.
Prior to learning these techniques, I had only used simple variables and had never used structures or arrays. I had also used the session and application scopes extensively. My big 'ah-hah' moment came when I realized that scopes are just persistent structures. The concept of structures is a big stepping point in understanding the caching capabilities in ColdFusion and in CFCs.
Read more...
Most of my object oriented (OO) knowledge up to this point has been purely theoretical. A few years ago I decided to go to grad school to get a double masters in Information Systems and Library Science. Unfortunately I haven't completed it yet because I found a FT job, but I fully intend to complete my degree.
I signed up for my first quarter of classes late and ended up taking an advanced class called 'Information Systems Analysis & Design'. From the description, I could not tell what the class was about. It turned out to be a UML (Unified Modeling Language) modeling class. This was the textbook:
When I first looked at the book I had no idea what UML or Patterns were and no idea why neither of the pictures on the cover are not sailboats. The class and the text assumed I had basic knowledge of OO and Java. Needless to say, the text was difficult to get through sometimes.
One evening as I was feeling particuarly lost with the reading assignment, I came upon p. 237.

I had to do a double-take! Did my homework really just tell me to drink beer? Yes, yes it did. Best. Class. Ever.
Well, to make a long story short, things started to click and my final project was to model a shopping cart for a music store. Seeing as I've re-written my spagetti code shopping cart/CMS system around 4 times by this point, I passed the class with flying colors.
But what did I really learn from the class? I came out with a basic understanding of what an object is and how to make pretty pictures to represent them in UML. I also am now a big fan of the Use Case and iterative design.
What I didn't have any idea about was how to apply these diagrams to ColdFusion. I was not yet using CFCs so the connection between components and objects wasn't there. I also had no idea what a pattern was. Which I find funny seeing how the book title has the word 'Patterns' in it. That would come later, and is the subject of a future blog post.