Photo from Chile

My Adobe ColdFusion Developer Week Session on ORM

I was very pleased that my CF Dev Week presentation was so well attended and received. I am attaching a PDF of the presentation materials to this post. Once the recording is available, you'll be able to find it at

CFSelenium Now Supports ColdFusion 7 and 8

Just a quick note to let you know that Brian Swartzfager has added support for ColdFusion 7 and 8 to the CFSelenium project by adding a tag-based cfc. This is now included in the latest version (1.2), which can be downloaded from the CFSelenium RIAForge page.

Brian, who will be maintaining the tag-based version, has written up a blog post about this addition to the CFSelenium project.

Why Contribute to Open Source Projects?

I was listening to show 83 of the CFHour podcast the other day and Dave asked the question of Kurt and Jason, "Why should someone contribute to an open source project?" Kurt had some very good answers which got me thinking about the question as well. Specifically, why do I contribute to open source software (OSS) projects? In this post I'll attempt to answer that question, as well as give some other reasons why one might choose to contribute to an OSS project. I hope that this post may motivate some others to contribute to OSS projects as well.

To Give Something Back

I have been a user of ColdFusion OSS for over a decade. I used Fusebox to create my first real CF web application and I've never looked back. OSS developer tools including Fusebox, Transfer, ColdSpring, Illudium, Model-Glue, Reactor, cfUniform, MXUnit, ValidateThis, ColdDoc, Lightwire and VarScoper have all helped me develop applications faster and better. OSS Solutions such as BlogCFC, Mura CMS and Codex Wiki have also been part of my career as a web developer. Although it doesn't really fall into the category of OSS, the content of many developers' blogs have also been a continual source of knowledge and inspiration.

These are all products of the ColdFusion Community, from which I have reaped tremendous benefit, so it seems only appropriate that I try to give something back. I stared that effort by creating a blog (around three years ago) and doing my best to blog regularly about whatever I am learning. Since then I've had the opportunity to release my own OSS as well as contribute to a number of existing projects including cfUniform, MXUnit and Model-Glue.

To Get to Collaborate with Really Smart People

How else would someone like me get a chance to work with the likes of Adam Drew, Adam Haskell, Bill Shelton, Chris Blackwell, Dan Skaggs, Dan Wilson, Dennis Clark, Ezra Parker, Jamie Krug, John Whish, Marc Esher, Matt Quackenbush, Mike Henke, Mike Rankin, Patrick McElhaney, Randy Merril, and TJ Downes? I mean seriously folks, it doesn't get much better than that.

Anyone would be keen to work with these smart and, for the most part, congenial folks, but for me it's extra special because I am a sole developer. I work out of my home in snowy Toronto, and have little interaction with other developers on my daily development work. Some of you may be in the same boat as me, and others may be part of a team, but if you're one of the senior developers on that team you may still get little opportunity to collaborate with other advanced developers. Contributing to an OSS project is an excellent way to do so.

It's Interesting and Challenging

Sometimes the work we have to do to bring home the bacon can be less than interesting and challenging. If we're lucky that's the minority of our daily tasks, but for some of us we're just not as challenged as we'd like to be in our regular job.

Writing OSS can introduce a lot of challenges, many of which you may never have had to face before. It is very different writing software that has to be generic enough to be useful to the masses. We cannot rely on conventions that work for one specific project or use case, and we have to be able to imagine our software being used in ways that we might not have originally envisioned. It's a very interesting perspective to take, and I find it to be particularly challenging.

It's Fun!

Not only is the work interesting and challenging, but it can be great fun too. How often in your job do you get to choose exactly what you want to work on? How often do you get an idea for a feature or enhancement but are told it's not a high enough priority? If you're working on an OSS project you can experiment as much as you like, and you can choose which features or enhancements you want to work on.

It's a Great Opportunity to Learn Something New

You will encounter problems when working on OSS that you likely have not encountered before, which present excellent learning opportunities. You can try out new tools and techniques on an OSS project. For example, if you've never done any unit testing, and cannot get permission from your boss to do so in your regular job, writing some code for an OSS project would be an excellent place to try it out. As another example, most OSS projects use source control so if you're not yet familiar with Subversion or Git contributing to a project that uses one of those would present an opportunity to learn about that tool.

Of course there's also the fact that you can learn a ton from the smart dudes already on the project, and even just learn by looking at the existing codebase.

It Looks Good on a Resume

More and more employers of developers are looking at community contributions. They like to see that you're blogging and contributing to mailing lists, and they really like to see you listed as a committer on an OSS project. It can also help with the work experience section of your resume. If your current development job only has you working in a limited number of areas you can flesh out your resume by doing something different on an OSS project.

It Doesn't Have to Be Code

Other than the Giving Something Back item, most of what I've discussed above is about what you can get out of contributing to the development of OSS, but if that's something you don't want to do (ask yourself why, first), then there are other ways to help too. Here are some ideas:

  • Write some documentation.
    Almost every OSS project could use more and/or better documentation, and I can pretty much guarantee that the author(s) would be pleased to have you volunteer.
  • Do a blog post.
    OSS projects thrive on users. The more people who use the software the better it can become, so let folks know about your favourite piece of OSS by blogging about it. If you don't have your own blog most projects and/or authors do, and they'd likely be glad to host a post of yours on their blog.
  • Give a presentation.
    User groups are always looking for presenters, and there's also the Online ColdFusion User Group. Get the word out on an OSS project by presenting on it.
  • Participate in the mailing list.
    Many OSS projects have their own mailing list to which users submit questions. Get involved by answering questions or contributing to the discussion in some way.

What Are You Waiting For?

So, what are you waiting for? Get out there and contribute. Choose a project that you're already using and see how you can get involved. Maybe there's a feature that you've always wanted. Maybe you've noticed a gap in the documentation. Maybe you've figured out how to do something cool with the project and can share it with others via a blog post. Whatever you choose I'm confident that it will be a rewarding process both for the project and for you.

What's New in ValidateThis 0.98 - Part I

As a follow-up to my post announcing the availability of version 0.98 of ValidateThis, which just included a brief summary of the new features, this post will describe some of those features in more detail.

defaultFailureMessagePrefix Configuration Option

When a validation fails the framework adds a failure message to the Result object that is returned to you. Each validation type has a default failure message, and you also have the option of overriding the default failure message using the failureMessage attribute of the rule element. The default messaged generated by VT are customized based on the type of failure and any parameters that were in place for the rule. For example, if a rule of type email which is defined on the emailAddress property of your object fails, the message will read "The Email Address must be a valid email address." If you've defined a rule of type rangeLength with a minLength of 5 and a maxLength of 20 on the password property of your object, the default failure message will read "The Password must be between 5 and 20 characters.


ValidateThis 0.98 - A Ton of New Stuff, and Two Important Changes

I've just released version 0.98 of ValidateThis, my validation framework ColdFusion. This update has been long in the making, and has been contributed to significantly by a number of folks including Adam Drew, Marc Esher, Chris Blackwell and John Whish. As always, the latest version can be downloaded from the ValidateThis RIAForge site. There are so many new features and enhancements that I'm going to divide them up into a number of posts, so this post will just include a summary, as well as a discussion of a couple of important changes that will impact all existing users. I'm going to start with a discussion of these changes.

The Folder Structure of the Distribution has Changed

A big thanks to Adam Drew for reorganizing the code repository and the distribution for the framework. This change won't impact any of your code, but it does mean that what you do with the download, in terms of which folders go where, has changed. The framework itself is now contained in the root of the distribution, whereas before it was in a folder called ValidateThis. This means that you can simply unzip the entire zip file into your local /ValidateThis folder. The sample applications are now contained in a folder called /samples, so if you don't want to include these in your project, simply delete this /samples folder after unzipping, or move it elsewhere.

A Change to Metadata that Needs Your Attention

In order to add a cool new enhancement (dynamic parameters) I've had to revisit the way that metadata for parameters was being specified. This examination led me to change the format of the param element. Because of this format change, any rules that you may currently have defined that use parameters will need to be changed as well, in order to use this and all future releases of the framework.

The good news is that the change is simple and easy, and Marc Esher has even contributed a regular expression that can be used to automatically update all of your xml files via Eclipse. The truth is that the previous format was actually flawed, so not only will this new format enable this cool new feature, but it will also position the framework better for future enhancement.


New Features Added to the cf.Objective() Topic Suggestion Survey

Matt Woodward and I have been working on enhancing the cf.Objective() Topic Suggestion Survey to both capture more information on what's important to you, and to add some social networking capabilities. Here's what's new:

Tell us Your Top Pick

You can now specify your absolute top pick out of all of the topic suggestions while voting. Marc Esher suggesting collecting this additional metric and we're interested to see what information it yields. If you voted before you may want to visit again and let us know what your top pick is.

Twitter Integration

If you've accessed the survey using your Twitter account, you now have the option of tweeting directly from the app after adding new topics and after voting. Please note that this is entirely optional, and you will be given an opportunity to edit the text of the tweet before you decide to send it. We hope that people will make use of this feature to encourage others to visit the survey, and to remind people to come back and vote, as new topics are being added continually.

Facebook Integration

If you've accessed the survey using your Facebook account, you will have the same option of adding a wall post directly from the app after adding new topics and after voting. We've also added Facebook Like buttons in a number of places in the app, including on each topic's detail page. You can use these to tell your Facebook friends which topics you are particularly fond of.

Remember, the results of the survey, and hence your input into the content of the conference, will only be as good as the information that we receive, so please do use the new Twitter and Facebook integrations to help us promote the survey, and also feel free to blog, tweet and use any other means at your disposal to let people know about the survey.

Vote Early and Often

In case I haven't made it clear thus far, we want to hear from you! Go suggest a topic or cast your votes now, and don't forget to return to the survey later to cast votes on any new topics that interest you.

cf.Objective() 2011 - The Wheels are in Motion

Although it's still 2010, we are already hard at work creating a cf.Objective() for 2011 which I'm confident will be the best ever. Why am I so confident? As Sean Corfield recently announced on his blog, I have the honour of taking on the role of Content Chair for next year's conference and I've formed a Content Advisory Board (CAB) with some of the best, and most innovative, minds in the CF community. They are:

  • Barney Boisvert
  • Dan Wilson
  • Emily Christiansen
  • Jason Dean
  • Kurt Wiersma
  • Marc Esher

We're going to do our darnedest to bring you the content you want, from the top names in the CF community and also from some really smart folks with whose names you may not be familiar.

Topic Suggestion Survey

One of the first things we want to do is ask you, the community, just what it is you'd like to learn about at next year's conference. To that end we've put together a simple survey which will give you the opportunity to suggest topics of interest to you, and to vote on topics suggested by others. The results of this survey will be just one of many forms of input that we'll be using to determine which topics to feature at next year's conference, so while it will not be determining the full list of sessions, we are very keen to hear from you about what you'd like to see. So go suggest a topic or vote on some now.

A big thank you goes out to Matt Woodward for the app that we're using to collect topic suggestions.

New Content

Of course every year cf.Objective() is chock full of new content, but we're going to be looking at zeroing in on some new areas in 2011. Some examples include:

  • Front-End Development - In addition to the usual Flex, AIR and Ajax talks look for talks on advanced JavaScript, CSS, HTML5, and, of course, Mobile Development.
  • Deep Dives - These talks will go deep into one specific aspect of a technology or technique, designed to teach you something new about a familiar topic.
  • Pushing the Envelope - These mind-expanding talks will introduce you to ideas and technologies that many CF developers have never been exposed to.

Pecha Kucha and Lightning Talks

Those who were lucky enough to attend last year's Pecha Kucha will tell you it was an awesome experience; both educational and entertaining. This year we'll be holding an official Pecha Kucha which will not be running opposite any BoFs, so the whole community can come together and cheer on our brave PKers.

We're also planning on having a series of lightning talks, which will also be limited to six minutes and forty seconds apiece, but won't have the strict rule of 20 slides for 20 seconds. This will allow people to do code talks and demos of interesting technologies and solutions. We'll be looking to you, the community, to present at both of these sessions. Stay tuned for more info on how to propose a talk.

Just the Beginning

We're only just getting started, so now is the ideal time to have your voice heard. Visit the Topic Suggestion Survey, leave a comment below, or feel free to contact me personally with any ideas or suggestions that you have. Next year's cf.Objective() is going to be the best not because of us, but because of you!

More Entries