Photo from Chile

cf.Objective() 2011 - Call For Speakers

The Call for Speakers for next year's cf.Objective() is now officially open. We'll be using our fancy new Engage app (the same one that's being used for collecting topic suggestions) to accept proposals to speak.

The Topic Suggestion Survey will continue to run during the Call for Speakers, so feel free to add new topics, and please visit often and cast your votes for newly added topics. After the Call for Speakers closes we will be using your feedback from the survey to help us program the best possible conference for you.

Please note that in order to be considered as a speaker for a session you must submit a proposal for that session, along with a detailed description, so even if you've suggested a topic via the survey you must submit a proposal for the topic to be considered.

The deadline to submit proposals to speak at the conference is January 9th, 2011, so start thinking about what you'd like to share with the ColdFusion community, and go submit some proposals.

A Cool jQuery Plugin - FastConfirm

I was working on the Engage app for cf.Objective() and I wanted to quickly add a confirmation dialog to the delete link for proposals. Now I'm not a particularly advanced jQuery developer, but I do know that there are a lot of people out there who are, and many of them have written plugins to help us lazier folks get things done. Through the power of Google I found a jQuery Plugins Page that lists all plugins that have been tagged with the term confirm. Wanting something quick and easy, I was drawn to one called Fast Confirm.

I checked out the demo and read through the docs, then saw some comments on the bottom of the docs page that suggested precisely how to implement the plugin for my exact use case. Within 10 minutes I had my confirmation dialog up and running! Here's the code:

view plain print about
1<link type="text/css" href="/css/jquery.fastconfirm.css" rel="stylesheet" />
2<script type="text/javascript" src="/js/jquery.fastconfirm.js"></script>
3<script type="text/javascript">
4    $(function(){
5        $(".confirm").click(function() {
6            $(this).fastConfirm({
7                position: "right",
8                onProceed: function(trigger) {
9                    window.location.href=$(trigger).attr("href");
10                },
11                onCancel: function(trigger) {
12                }
13            });
14            return false;
15        });
16    });

With the above script on my page, all I have to do is add a class of confirm to any anchor tag and I'll get a confirmation dialog whenever the anchor is clicked.

The plugin does allow you to change the question asked in the dialog, as well as a number of other options, but I was happy to accept the default of "Are you sure?". I think this is a great, simple plugin. Kudos to Pierre-Jean Parra for writing it and contributing it to the community.

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!

Faking ColdFusion Component Types (and a Quick Way to Confuse ColdFusion)

MightyMock (MM) is a mocking framework for ColdFusion that is bundled with MXUnit. It allows you to create mocks, which are fake instances of ColdFusion components, for use in unit tests. More information on what MightyMock is and how you can use it to create awesome unit tests can be found on the MXUnit Wiki.

One thing that MM allows you to do is to create typesafe mocks, which are mock objects that ColdFusion will recognize as being of a specific type. Why might you need to do that? Let's say you have a setter defined in a component into which you want to pass your mock object, and that setter expects an argument of a certain type. For example, consider this setter in a Customer.cfc component:

view plain print about
1<cffunction name="setValidator" access="public" returntype="void">
2    <cfargument name="validator" type="model.util.validator" />
3    <cfset variables.validator = arguments.validator />

If we want to create a mock object and pass it into that method, it needs to have a type of model.util.validator or ColdFusion will throw an error as soon as we call setValidator(). MM allows us to create such a mock using the optional second parameter of the mock() method that is available in MXUnit. The code to create a test for our Customer component using a typesafe Validator mock would look something like this:


Previous Entries / More Entries