Code, and Process, and Frameworks, Oh My!

Wow, I can't believe it's been two weeks! I am sorry, dear readers, but I've been fairly busy. Our office is migrating into an enterprise development team, instituting new (as a team) tools and processes within our development environment. So, upcoming (yes, I'm committing to this) posts will include topics like setting up multi-instance ColdFusion (7 or 8) on Apache, using Windows UNC paths in an Apache VirtualHost configuration, Apache + SSL (once I get around my JRun errors), and Subversion + Ant for deployment. This should be interesting, as I compiled everything from dozens of blog posts, dev center and trade mag articles, and a ton of trial and error. Stay tuned for that.

I also wanted to give a big shout out to the ColdFusion Weekly Podcast. Catching up the other day I was listening to their 2.20 episode, which reminded me that I should check out Brian Rinaldi's Illudium PU-36 Code Generator. Brian's tool, crafted over years of work and refinement, is a truly class act tool for any developer's toolbox. By introspecting your datasource tables, the generator can automagically create a complete set of basic object persistence 'objects', to include Bean/DAO/Gateway cfc's, coldspring config xml, and a lot more. And, it's configurable and extendable. Very sweet, and can save hours and hours of tedious repitition.

An additional shout to Matt and Peter for bringing up the LitePost project (and kudos to Chris Scott for his work on the project as well). For anyone diving into Object Oriented CF and frameworks, this little blog project is a great study. The core library of objects and services are written in such a way that they can be used by any of the major frameworks, with the only differences being at the view and controller layers (and their differences are pretty minimal). A must look sample project, and totally undocumented, that you must download from the Subversion repository, reviewing each of the individual layers can really put some pictures together for you. It's also a good study in building upon the different frameworks (Fusebox, Mach II, and Model Glue) as well, though the code does pre-date all of the recent update releases.

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!

Making The View: Part 7

OK, so let's get interesting. We've covered creating a base template in XHTML, properly divided our display declarations from our content by using Cascading Style Sheets, and pinpointed some areas within the base template which should be dynamic. Finally, in our previous tutorial, we brought all of this together in a reusable template, which we demonstrated by using it as a custom tag. Now we're going to really start having some fun, by redefining our view within some frameworks. Now, I'm no expert. There are probably a few dozen ways to properly handle the view within the different frameworks, so any other suggestions are welcome as always. We're going to start off with Model Glue:Unity, while I catch up on the changes to Mach II and Fusebox.


NCFUG Model Glue:Unity Preso

So tonight I did a presentation for the Nashville ColdFusion User Group on Object Oriented Development with Model Glue:Unity. This was a preso I was supposed to do last month, but some minor confusion with a new location (and the happy birth of a child a few days prior) had me standing in front of an audience of one. This actually worked out great, because it gave me an extra month to prepare, and allowed Aaron time to figure out the best way to record the presentation via Breeze (or 'Adobe Acrobat Connect Professional', as it is now called.)

This preso covered some "Why should I?" type questions, basic setup of the Unity frameworks and sample application template, as well as a hands on demo of using Reactor to do the grunt work. I need to give a big shout out to Aaron for picking up a really nice Logitech USB Headset w/ Mic the day before, as well as a thanks to all of those who attended either live or via the breeze session.

Once again, you can view the recording that Aaron put together during the presentation, or just go to the Nashville ColdFusion User Group's website. I'm including a FlashPaper copy of the slides with this post (the Download link below), but the hands on demo is in the presentation.