Categories
Contact Doug!
Learn About Doug!
View Doug Boude's online resume
updated 11/18/2009

View Doug Boude's profile on LinkedIn
Link to me!

Follow Doug Boude on Twitter
Follow me!

Be Doug's friend on Facebook
Befriend me!
(I promise not to follow you home)
OO Lexicon
Chat with Doug!
Recent Entries
You may also be interested in...
Web Hosting

<< January, 2009 >>
SMTWTFS
123
45678910
11121314151617
18192021222324
25262728293031
Search Blog

Recent Comments
Re: Basic Ajax Select List Filter in PHP (by good at 2/04 5:26 AM)
Re: Family Law: The Weapon of Choice for Woman Scorned (by swalker at 2/03 2:15 AM)
Re: Approaches to Building Strings: The Imploding Array (by bantal silikon at 2/01 9:44 PM)
Re: Disappearing IE Popup Window During Save/Open Dialog (by AddisonDean at 1/15 9:59 AM)
Re: My Top 20 Life Lessons for Boys and Young Men (by Alex at 1/13 8:45 PM)
Re: Array Loop Modifications in CFSCRIPT (by Alex at 11/25 11:18 AM)
Re: Array Loop Modifications in CFSCRIPT (by Abram at 11/14 11:32 PM)
Re: Recursive Functions in ColdFusion (by Dwayne at 10/25 3:47 PM)
Re: Porting Coldfusion Code to Mura (by dh at 10/16 10:14 AM)
Re: Viewing Option Text (in IE7) that's Wider than the Select List (by Devil May Cry at 9/26 1:38 AM)
Re: Why I Hate ORMs (a solicited rant) (by guideX at 9/12 11:38 PM)
Re: Recursive Functions in ColdFusion (by KP at 8/08 7:13 PM)
Re: American Airlines, YOU SUCK! (by Alison at 7/23 4:48 PM)
Re: SQL Forward Engineering with Visio 2003 Professional (by Harshad at 7/11 9:17 AM)
Re: Disappearing IE Popup Window During Save/Open Dialog (by LZ at 4/20 7:58 AM)
Re: Create Dynamic WHERE Clauses in PHP (by pooja at 3/20 7:29 AM)
Re: Just What IS a 'Service Layer', Anyway? (by EugenK at 3/07 7:56 PM)
Re: Using Google as your CF Mail Server (by 5starwebteam.com at 2/25 1:27 AM)
Re: Why Provide for Service layer objects in CFWheels? (by Steven Benjamin at 1/25 11:43 AM)
Re: What is an 'Advanced' Coldfusion Developer? (by ColdFusion Developer at 12/24 5:14 AM)
Archives
Photo Albums
Funnies (5)
Family (3)
RSS

Powered by
BlogCFM v1.11

28 January 2009
First Meeting of the San Antonio RIA User Group Rocked!

Last night (Tuesday, January 27th, 2009) marked the birth of the San Antonio RIA User Group. We met in a large, rustic room on the first floor of JungleTech's office building. A large two story adobe-style hacienda complete with ancient oaks, hand-tiled covered patios, and a pool with a waterfall, the accommodations provided to the group lent a personable ambiance to the meeting that, in my opinion, enhanced the learning experience. Josh Helpert, the group manager, mingled comfortably among the guests before the meeting started, getting to know a little about their backgrounds and their interest in the topic of the evening: Introduction to ActionScript 3. Then, with snack plates and drinks in hand, everyone took their place in one of the leather and wrought-iron chairs arranged in a large semi-circle around the projection screen and gave their attention and minds to the presenter.

Only one other individual in the meeting besides Josh had any background in ActionScript at all, but by the end of the presentation every one of us had an excellent grasp on the subject. Josh's background as a formal instructor combined with his solid experience, knowledge, and passion for Flash and ActionScript ensured that every individual received exactly the delivery, analogies, and verbage that helped him or her assimilate the information at hand. It was both brilliant and considerate on Josh's part, as well as a joy to partake of, as he took into account the background information he had gleaned during the initial social interactions and wove in terminology that he knew certain individuals could relate to in order to "connect the dots" for them between their world and the one being introduced to us. In addition, Josh made sure and not bore his audience by reading powerpoint slides, but rather did a LOT of coding as we watched, sometimes pausing during the process to ask US, his audience, what he should do, how he should do it, and why. He included everyone in the process, made it not simply a lecture, but a complete audience participation project from which we all learned mightily.

The outline of items covered included a brief history of the evolution of ActionScript and a bullet point comparison of differences between versions 1 and 2 and the paradigm shift that occurred in version 3. We then discussed what an .fla file is, where ActionScript code lives, tools to use to write AS3 code, and how to connect it all together. A solid exploration of basic syntax and data types followed, all topped off by all of us building a simple SWF that utilized ActionScript event dispatchers and listeners.

As I said, Josh's style, knowledge, and obvious passion for sharing knowledge made this initial meeting a complete success and laid the foundation for a group that holds a lot of promise and purpose for anyone in the San Antonio area interested in the topic of Rich Internet Applications. Upcoming potential topics such as using ColdFusion to build backend systems, exploring Ajax and some of the Javascript libraries used for that purpose, and Flex were mentioned. With a casual but serious smile, Josh gave me the "heads up" that I might be tapped to present on one of these in the future, as his vision for this group is that everybody in it take some ownership of it. If you have even the remotest interest in this topic, you really need to make it a point to attend. The meetings are scheduled for the third Tuesday of each month. Details can be found at http://riausergroupsa.wordpress.com/

I'll conclude my review by saying that this group was actually born about two months later than it should have been, due to the inordinately lengthy process that Adobe has instituted in order for a group to become sanctioned (or perhaps it's simply a matter of they not supplying enough manpower to meet the needs at hand, I'm not sure which). In the end, after having applied and our application "lost", we were told that in the meantime someone else in the area had applied to be a sanctioned Flex user group, so we would have to "work it out amongst ourselves". Rather than delay any longer the official formation of the group, we simply opted to be non-sanctioned, and so when you come to our meetings you should NOT expect to hear any Adobe propoganda or receive yet another handful of Adobe logo-fied swag. What you CAN expect, however, is to be immersed in an atmosphere of learning, teaching, passion, and experience that promises to ensure the one thing all professional say they want: growth.

Posted by dougboude at 7:15 AM | PRINT THIS POST! | Link | 0 comments



22 January 2009
Special Character/Unicode Issue in Ajax Data Retrieval

My most recent project has caused me to have to be "unicode aware" at times (something I've never had to do before), and so I am learning a lot about encoding and display of special characters as I go along. My latest challenge related to this topic involved a User Manager section I created, wherein the users could very well have names that contain special characters (foreign names). This particular section performs its updates, deletes, and inserts via Ajax calls and client-side JS manipulation of a JSON data set. My Ajax is performed via the Prototype library, my code is all ColdFusion living within the Coldbox framework, I'm using Coldspring to manage my object relationships, Transfer is my ORM, and my backend database is MSSQL 2005.

The Challenge: Data that contained special characters was being successfully inserted/updated via my Ajax calls, but the JSON data set returned via those calls did NOT contain those special characters (or contained an incorrect interpretation of them, like numbers, question marks, etc.). A quick check of the database verified that the data was indeed stored in the tables properly.

Setting the Stage
At this stage in the game for me, the smorgasbord of terms, acronyms, and concepts revolving around properly handling unicode is a bit foggy for me. (On a side note, I WISH someone who has the full understanding would put together a simple "checklist" of "Things you need to do in order to handle special characters in ColdFusion"!) From what I currently understand, the physical template you write has to be "encoded" properly (set within the IDE you are using); The database you are using has to have the proper encoding(called Collation in MSSQL 2005); The fields in your table have to be of the proper type to store unicode text(ie: 'nVarchar' instead of 'Varchar', etc.); your browser has to have the proper languages associated in order to display certain sets of special characters(Tools/Internet Options/Languages in IE); your JS functions, if living in a separate file, must have the page encoded properly(again, via your IDE); your ColdFusion datasource has to have the checkbox for "Enable High ASCII characters and Unicode for data sources configured for non-Latin characters " checked; and to top it all off, after having handled all of that, your JS functionality still yet needs to have ITS encoding types set in the proper place.

That sounds like a LOT of fiery hoops just to be able to deal with special characters, right? Well I'm with ya...it's on the verge of being a nightmare for someone who's never had to deal with it. And I do realize that for some of you reading this, the first time YOU tried to deal with special characters, everything just frickin "worked right out of the box" and you probably didn't have to do but one or two of those things, at the most. I say that you got lucky that things were configured just so for the particular character set you were dealing with, and even though from your perspective it didn't seem like that big of a deal, the fact is having an understanding of what's going on behind the scenes can be pretty doggone important anyway, just in case you suddenly get the directive to start storing characters from some other encoding scheme that you AREN'T prepared for out of the box.

Okay, so back to my challenge. Here's the nutshell of how my process flows:

My initial page load is provided with a query of all of the users in the system. That query is then translated to a JS object using a line in my template like the following:

<script>
 //make our initial data set available to JS...
 var objUsers = <cfoutput>#serializeJSON(qryUsers,true)#</cfoutput>;
....

When a user is chosen for edit, I load up the values for that user from the client-side data set into form fields, allow them to be edited, then submit the form values back to Coldbox via an Ajax call where the record gets updated. After the update occurs, my event grabs a fresh copy of the user query (which now contains the updated record), serializes it, and returns it as a JSON string to the Ajax call. Here's the line of JS that performs the Ajax call:

new Ajax.Request(saveURL,{parameters: myparams, method:'post',onCreate:showWorking,onComplete:postSave});

Here is the line in my handler(controller) that returns the data to the call:

<!--- grab a fresh copy of the users to pass back as json to the call, sans a view --->
<cfset arguments.event.renderData(type="plain",data=serializeJSON(variables.userService.getAllUsers(activeOnly=false),true),contentType="application/json) />

 

Bear in mind that the "getAllUsers" method call you see is the exact same method call being used during the initial page load to retrieve the data, which DOES contain the special characters as it should.

So here is where the problem manifests itself. The JSON string that the "postSave" method is provided with has the special characters stripped out! Poof, they are just gone. Okay, so let me go and investigate some of the optional parameters that Prototype provides for its Ajax.Request method and see if any of them might apply in this situation....  Ah, here are a few! 'encoding', 'evalJSON', 'sanitizeJSON'. Well, playing with all three of these resulted in zero changes to the symptoms. Sheesh, I've encoded everything I can possibly think to encode...what else is there? After a lot of google time, skimming page after page of semi-related (but not directly relevant) info, I came across a tiny little tweek to the contentType being returned that I tried, and lo and behold it frickin worked! Here is the new line that returns a CORRECT data set to my Ajax call:

<cfset arguments.event.renderData(type="plain",data=serializeJSON(variables.userService.getAllUsers(activeOnly=false),true),contentType="application/json; charset=UTF-8") />

The difference: adding in "charset=UTF-8" to the contentType of the data being returned. Apparently THAT'S what JS was looking for all along.

I hope this helps someone else avoid a huge loss of time. And again, for those of you out there who know this stuff inside and out and can actually visualize how it all works in your head, it sure would be an assett to the community if you could put that info into a kind of "checklist" a person could use to make sure they have all of their Unicode ducks in a row when trying to deal with special characters! Pretty please?

Doug out.

Posted by dougboude at 10:54 PM | PRINT THIS POST! | Link | 6 comments
15 January 2009
My Yoke is Easy and My Burden is Light
I think I understand it now

For twelve years I dedicated myself to Christianity. Not the casual, “add it to your collection of good things you lay claim to” style of Christianity; I rather gave myself to it, immersed myself in it, surrounded myself with it, and spent every waking moment working hard in one fashion or another trying desperately to achieve my understanding of what it meant to “become a new man”. When the Book said that I was supposed to become like Christ, I left nothing out of that definition and sought for all those years to rid myself of every dark feeling, every lascivious tendency, and every desire for the things I had learned were not to be desired. I studied my Bible almost daily, and when I wasn’t studying it I was meditating in its precepts, searching for the understanding of them and their application in my own life, certain that if I could only bridge that gap between the words on those pages and the heart that beat inside of me, I would be able to escape the bondage of this flesh and transcend my own weaknesses, flaws, and ignorance.

 

To some, what I describe as the mission I dedicated myself to may sound fanatical. To others it may sound like precisely the thing we should all be engaged in. Whatever end of the spectrum one might see it at, one thing I’m sure all would agree on: what I describe must have been a heavy, heavy burden for a young man to bear. After all, what I was trying to accomplish goes against everything that human beings are, and my “from the heart” dedication to this ideal and these goals would not allow me to give less than my all to achieve it. It was a burden, however; a heavy one, filled with discouragement at my own failings and with fear of what those others who I supposed held to the same standards and ideals would think of me if I could not carry it. Because “my” Christianity was so heavy to me, one precept that I always struggled to understand and could not manage to fit in with everything else I knew were the words of Christ in Matthew 11:30 when he told us that “his yoke is easy and his burden is light”. Nothing could have been farther from the truth for me, nothing, and I never understood how he could say such a thing and what he could have possibly meant by it. Until yesterday.

 

In 2001, the discouragement of continually failing to achieve the unachievable took its toll and I abandoned my quest altogether. Of course, in the years between then and now I have found my way back to a more proper median and have returned to the process of self-improvement of my inner man. The faith I held to for all those years: it was as real as the day. It did not allow me to rest on my laurels, but rather moved me to once again  seek for the truth I know must exist, and I have attended classes and worships here and there, read a few books on subjects that can be so abstract sometimes, and I have returned to my own personal study of the book as well. I have not drawn any conclusions on any subject as of yet, but put my efforts into keeping my mind wide open and the information flowing in. I also put my efforts into practicing those things I know to be good and right, which brings me to yesterday.

 

The recent death of a dear uncle of mine shed a whole new perspective on time and life for me. Being at a place that must surely be near the halfway point in my own lifespan, I cannot but be constantly and keenly aware of the brevity of it all and of those things that matter and those that do not. My own grandparents, whom I love dearly, are well into their 80s, and so I purposed that I would spend more time with them. This can be a challenging thing to do when you work all the time to support a boatload of children and when so many other souls look to you for support, love, and attention. But, I came up with the perfect plan, and so packed up my laptop yesterday morning and headed for the Silver Tree nursing home where my grandma stays. Every day my grandpa goes up there and spends several hours in the middle of the day with her, so since Silver Tree has wireless internet, I decided that I could just work from there and be able to spend time with the both of them. It was as I was driving to the nursing home yesterday, thinking about how well the whole thing was working out, feeling really happy in anticipation of seeing them, being so glad that I was going to be spending time with my beloved grandparents on a weekly basis, that a thought occurred to me: “You know, it really is not hard at all to do good.” And that is when the words of Christ came back to me, too: “my yoke is easy and my burden is light”.

 

I could be way off on my understanding; but then again, I could be spot on, too. It makes perfect sense to me, and I do believe that NOW I understand what he was talking about. Doing good, giving of yourself, loving one another...it is SO easy to do! It’s also well worth the investment of time and energy, and the rewards that come from it...immeasurable. In the whole process of just doing what you know is right, you not only give and receive, but man, you change just a little bit, too. Do it often enough and consistently enough, and the good deeds you do will become who you are. Want to be a good man or woman? Want to truly become a new creature, or put on Christ, or any other phrasing that means the same thing? It’s your actions on the outside that have the ability to change who you are on the inside. Knowledge is a first prerequisite, but the doing of it is what actually accomplishes true change. Like the weather can carve stone, doing well will carve a new man, one grain at a time. And the beauty of it: it’s not a hard thing to do at all. It’s easy, and the yoke, it really is a light one to bear.

 

Just my take.

 

Doug

Posted by dougboude at 8:03 AM | PRINT THIS POST! | Link | 7 comments