My Son the Blackbelt

I don't think I have ever used my blog for personal stuff. So if you will indulge me just this once.

Yesterday my son, Bryce, tested and received his 1st Degree Blackbelt in Taekwondo. He started just before he turned 4 and is now 8. Some might say it is a little young but if you knew the dedication and training he has done you would know different.

So, congrats to my son, may this be just the start of your journey.

CFSummit - Ask a speaker

The CFSummit is just a round the corner. Well, a long slow bending corner maybe. The speakers are hard at working trying to bring the best possible content they can to the conference.

The conference organizers have been doing a tremendous job putting everything together. The Trillo board has been used to organize the sessions and session info with great success.

Just recently the board has been updated to allow for public comments on sessions. This will allow you to ask the speaker questions before the conference. You can even suggest they talk about a subject that interests you.

Till next time...


ColdFusion 10 websocket security issue fixed

Updater 11 for ColdFusion 10 has been released today. This updater fixes a number of issues. You can read all about the fixes here, ColdFusion 10 Update 11.

Most importantly, is the fix that will prevent websockets from invoking non-remote methods in components.

There is also a hotfix release for ColdFusion 9 to correct a security issue.

If you are running ColdFusion 9 or 10 I strongly suggest that you apply this patch.

Till next time,


Have a say in the content for the ColdFusion Summit

Help decide on what the content for the Official Adobe ColdFusion Summit this year October 24, 25 in Las Vegas. You can get all the details and how you can help here...

On a side note.. the site pretty slick use of

Till next time,


Registration open for ColdFusion Summit 2013

In case you missed the announcement at cf.Objective(), there is a new ColdFusion conference coming later this year. This one is being put on by Adobe and will be held in Las Vegas, NV on October 23-24 2013.

Event registration is now open and you can register here. The coolest part of the registration is that it includes a license for ColdFusion Builder. Also, if you register now, the registration cost is less than the cost of Builder. So, it is like getting builder at a discount and then attending a conference for free.

Till next time,


Slides from cf.Objective() 2013

Slides from my 2 cf.Objective() presentations can be found here... You will not only find my sides but slides from other presenters there as well.

The file names for my slides start with "dferguson_".

The slides from the presentation I did for Ray Camden will be posted by him (if he posts them).

Till next time...


Combining query results using QofQ

I have a process that processes an xml document. For each node in the xml a stored proc is called to update data. What I wanted to do was combine all the results into a single query return. I did some digging and found an old blog post - Ben Nadel that showed how to do it. However, that post was a bit old so I figured there must be a better way by now.

I asked a friend and he suggested to try using query of queries with a union to combine them. This seemed intriguing but there was an issue with this. The code I was working with was all in cfscript. I remembered that dealing with queries of queries in cfscript is, well, challenging. I dug up a ColdFusion Cookbook entry on using QofQ in cfscript.

Using this I was able to fashion together a function to combine two queries into one. I am not sure how will this would work if the queries had different columns. Now, instead of dealing with about 100 independent queries, I can deal with just one.

view plain print about
1private any function combineQuery(qA, qB)
2 {
3 var qry1Result = arguments.qA;
4 var qry2Result = arguments.qB;
5 var qoqResult = '';
7 // create new query object
8 var qoq = new Query();
10 // set attribute of new query object to be a query result with arbortrary name
12 qoq.setAttributes(QoQsrcTableA = qry1Result);
13 qoq.setAttributes(QoQsrcTableB = qry2Result);
15 // use previously set attribute as table name for QoQ andset dbtype = query
16 qoqResult = qoq.execute(sql="select * from QoQsrcTableA union select * from QoQsrcTableB", dbtype="query");
18 // return result
19 return qoqResult.getResult();
21 }

Till next time...


The road to my first commercial app

I have been wanting to build an actual app for such a long time. But, I wanted to build something that was not out there yet. Everything I thought of there was at least 2 of in every app store. I just needed to find that one thing that didn't exist yet. Then I finally figured it out.

My family is very active in Taekwondo. My son will be a black belt soon and he is only 7. We were at a tournament a while ago and I noticed that people always wrote down scores on paper. This is because the judges give a score and write it down on their official paperwork but it is not displayed anywhere. It is up to the spectators to keep track of scores as they deem fit. After watching people fumble around doing this I knew there had to be a better way.

I did some investigation and discovered there was no app to do this. This is when I knew I found the app to build.

I then spent about 3 months building a prototype. I showed it a few people and they were very excited about it. I showed it the school owner and he said he had never seen anything like it. I knew at that point that I was on the right track.

With a working (mostly) prototype I went to a tournament to test it out. I ran into a ton of usability issues that made me rethink how the app should work. I also showed it to a few people and the basic reaction was "Where do I get that?".

The next 2 months were spent rebuilding the app from scratch. I started completely over and redesigned about 90% of it. I needed to make the app faster and cleaner to use. After some more feedback and user testing, the app was complete.

Then, I gave it to my 7yr old son. He played with the app for about 10 minutes and found a very critical bug in the app. I managed to use the app in a way that I never intended or foresaw happening. I made the necessary adjustments to the app and then finalized the rest of it.

My initial intent was to just build it for Android. However, my wife convinced me that I really needed to create it for iOS as well. This process was something I was not looking forward to. But I did it anyways. The process was made much easer as I was using PhoneGap and PhoneGap Build to create the app.

I had to make a few changes to the app so it would work correctly and look right on iOS but it was all minor. If I recall it only took a day to make the adjustments. In the end I was glad that the wife pushed me to do it.

Ultimately I have my first comercial app on the app stores. I think my son is more excited then I am.

You can check it out here...

iOS: Tournament Scorecard

Google Play: Tournament Scorecard

Amazon: Tournament Scorecard

Till next time,


Speaking at cf.Objective() 2013

I honored once again to be speaking at cf.Objective(). This year I am privileged enough to have two proposals selected. The ones selected are...

  • My SQL Skills Killed the Server .. This session is all about writing better SQL.
  • Fuse All the Greatness - Combining Charts, Websockets, and Scheduled Tasks to Present Realtime Data .. Long title that pretty much says it all.

I look forward to seeing you all the conference.

Till next time,


ColdFusion Platform Survey

Take a quick moment out of your day and fill out this survey. Let Adobe know what production platforms you are running ColdFusion on.

Till next time...


More Entries