The Year In Review

2007, The Year Of The Scorpio, was a fantastic year to be a ColdFusion developer. The release of ColdFusion 8 marked a new age in web application development, with so many new features and enhancements that should see some truly outstanding next generation applications in the years to come. As a community, the CF crowd has really been flourishing, with new releases in several major frameworks, the introduction of the RIAForge open source repository for Adobe related technologies, widely publicized adjunct technologies like Flex 3 and AIR approaching final release (spawning a new conference in 2008, showcasing all three technologies together), and the premier of our own developer's social networking site, ColdFusion Community. We saw the loss of the CFDJ albatross, while the Fusion Authority Quarterly, introduced at CFUnited 2006, has truly come out as an excellent ColdFusion developer's resource. And we can't forget our very own, ColdFusion specific, blog aggregator, ColdFusion Bloggers, introducing us to so many other great developers willing to share their knowledge and experiences, like the creative, and very colorful, examples provided by Ben Nadel.

I've always felt that a day without learning is a day that your dead from the neck up.I spent quite a bit of time this year learning new things, and sharing most. I've been slowly picking up Flex, put a little research into AIR, adopted JQuery heavily, run series of posts on developing on Apache and utilizing the outstanding components of the ExtJS library (the most trafficed posts on this blog). I tried to share some of the things I had learned about the new functionality of ColdFusion 8, started posting some General Coding Guidelines I've been writing for our company, and even got some first hand experience looking at the Current ColdFusion Job Market.

I look forward to sharing more in the year to come. I always look for, and appreciate, all of the feedback you readers send my way. I think the future for ColdFusion is extremely bright, and I can't wait to see what 2008 holds for us all.

Watch What You Write, Someone Is Reading

Today I received the following comment here, on an older post on Variables and Naming Conventions:

...I wish Adobe would publish and adopt some kind of official naming convention. Sometimes reading sample code written in some other convention can make things harder to follow...
It was almost funny that this comment had come in when it had. Recently I was doing a lot of research for a User Group presentation I just did on the new ColdFusion 8 Ajax Components (have to re-record it before public release). In the process, I spent a great deal of time going over documentation all over the internet, from LiveDocs to countless blogs, absorbing the wealth of information that is already out there. It was outstanding that there were so many resources out there for people to learn from. On the other hand, it was a little sad that so much of the sample code was written in ways that can really start new developers off with some bad habits.

I'm not perfect, by any means, but I try to pay careful attention to the code that I place on this blog for readers to use and learn from. One thing that I attempt to do is pay attention to basic Web Standards, like using XHTML (the current standard) instead of HTML, keeping styles in the stylesheet, and having unobtrusive JavaScript. I don't always do it, sometimes it doesn't make sense for a quick example, but I try, especially within code downloads. I also try to adhere to my own Coding Guidelines, so that code appears to be consistent and easy to read and understand.

Probably the one that bothers me the most, and that I see most prevalent in blogs, documentation, and books, is the lack of proper variable scoping. I know that, often, we're just publishing quick examples, but this can be an extremely detrimental practice. I have worked on some very large enterprise applications, with years of code written by half-a-dozen different developers, most of whom learned their ColdFusion (and development) skills through the docs or a book. Many had actually come up with some very creative and effective algorithms to fix some issue, or create some new whiz bang feature, but their code was so poorly scoped that, after time, it could take down the server. Why? How? Enterprise sites may contain several hundred (or thousand) templates, containing dozens of variables on each page, and can potentially be hit by hundreds (or thousands) of users simultaneously. Multiply the number of variables by the number of pages by the number of users, then imagine ColdFusion doing a ScopeCheck on each one, to figure out which scope each variable requested belongs in. Even if the variable is in the VARIABLES scope, it's still that many times ScopeCheck will be called while rendering a page.

Still not convinced? Go download varScoper, and run it on your project root folder, including your subfolders, and see what it comes up with. Yeah, I'm still in shock. Cleanup on that is easier on a small subproject scale, but it's definitely forced me to think better when I'm writing my code, paying attention as I go, to minimize the performance impact of my applications, no matter how small it may be. I learned my bad habits from the docs, various books, sample code slung around on the CF-Talk list. I've continued to realize that there are better ways of doing things (like OOP and frameworks), and adjust my style and methods, and I think it's important to consider these 'best practices' when contributing. A little more code, but the right thing to do in the end, for you, your app, and your systems.

So, if you own a site of documentation, revise it. If you're writing a book, edit it. If you publish a CF blog, live it. The up-and-coming are reading us all of the time to find out how to use this wonderful language. Let's try to show 'em how to do it the right way. You might not follow any guidelines at all, within your development, but this scoping thing is way too important to gloss over, and will only help everyone in the long run.

Tools Make Life Easier

I am a huge fan of things that make my life easier, and love tools that do just that. It's kind of like moving from writing my thoughts down on paper to using a computer, I still (try to) write quality content, but it's not nearly as time consuming now. I can write, read over, rewrite a piece over and over agian, without wasting a load of paper, correcting seven million spelling mistakes, or emptying a white-out bottle.

Tools are those things that you use to get a job done, and there are almost as many tools as there are jobs. Tools are those wonderful things that separated man from animal. Funny thing about tools, though, not every tool will handle every job. You have to try them out, take 'em for a test spin, work out the kinks, and see what works best for your development style.

Once I got past the learning curve, Model Glue: Unity turned into a natural flow of MVC development, ColdSpring has assisted me immensely in managing my object dependencies, and Reactor's scaffolding has slimmed down the gruntwork of creating my CRUD methods. This is part of the job of frameworks, to make our lives easier. CFLib and the ColdFusion Cookbook are repositories of experienced knowledge, condensed into freely usable bits of logic. RIAForge takes it to a whole other level, by providing us with entire applications. All of these are tools for making our lives easier. (How many times was Ray indirectly referenced there?) But, it's important to not become married to any one toolset, which is why I keep my nose in Mach II and Fusebox, have started checking into Transfer, and really like the simple flexibility of tools like DataMgr and AjaxCFC. You never know what the next project might call for.

The ColdFusion community has progressed leaps and bounds in the seven years I have been a part of it. As a language, CFML has added constructs to utilize object oriented design patterns, create dynamic reports in a variety of distributable formats, and given us the ability to create server event driven functions, just to name a few of the changes. Open Source projects are all over the place, the server is used in a majority of Fortune 100 companies, the government (of all industries) has adopted this 'expensive' platform like gangbusters, and demand for experienced developers is through the roof.

And when Scorpio gets released the 'other guys' won't know what hit 'em.

So, open up CFEclipse, use Subclipse to checkout some of the wild goodness from their respective repositiories, and start exploring. Take a deep look into their core files (but, don't change 'em!) for some insight into the style of some of the masters of our industry, and look forward to a very bright future. ColdFusion has helped take the guess work out of some complex tasks, and it's only getting better. And easier!

Other Thoughts on 9/11

A vibrant discussion is in the ongoing comments to Ray Camden's recent entry on remembering 9/11. Ray makes a great parallel as to how 9/11 is, to our generation, what the Kennedy Assassination was to our parents. He also tells an interesting, and troubling, story of personally experienced (by his wife and son) xenophobic backlash in it's aftermath. 9/11 will be a day remembered for many generations to come, in many different ways by everyone.

Ray and I often share opposing political views, which is one of the fantastic things about living in our great nation - the fact that we have the right to actually have opposing views, much less express them openly (that's one point I think Ray and I can agree on). I want to preface this by saying that I am not posting this in total disagreement with his post, but rather in counterpoint to some of the comments generated from his post (and some content, but hey, we can do that). If you are easily offended then stop reading now, as I have stated before that I am not, nor will I ever be, Politically Correct.

[More]

Can You Believe These Guys?

You know, some things really get to me (I'm watching my language here). Maybe they shouldn't, but they do. Take the following line from a recent posting to a job posting mailing list for ColdFusion professionals:

Bachelor of Science in Computer Science from an accredited University.
Note: Individuals who do not meet this requirement need not apply.

Well, if that isn't an intensely narrow view of 'qualified'. I'm not knocking higher ed, in fact I have a little, but the last time I checked experience is, and always will be, the best teacher.

[More]

BlogCFC v. 5.8.001 was created by Raymond Camden. Layout inspired by bluerobot.com., with some JQuery thrown in for fun.