NO MORE CAREER
POLITICIANS!
Get Out Of Our House: Replacing congress with TRUE citizens!
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

best web hosting - top web hosting sites, thetop10bestwebhosting.com

Czech your Page Rank!
Check Page Rank of any web site pages instantly:
This free page rank checking tool is powered by Page Rank Checker service
Surf's Up!
Visit Egosurf.org and massage YOUR web ego!
My Score: 9,001
Doug's Books

Read (and recommend)

  • Men are from Mars, Women are from Venus
  • The Wisdom of Crowds: Why the Many Are Smarter Than the Few and How Collective Wisdom Shapes Business, Economies, Societies and Nations
  • Blink: The Power of Thinking Without Thinking
  • Head First Design Patterns
  • Transact-SQL Programming
  • What's So Amazing About Grace?
  • Just So Stories (Rudyard Kipling collection)

Reading

  • Prayer: Does it Make Any Difference?
  • Data Mining (Practical Machine Learning Tools and Techniques)
<< February, 2008 >>
SMTWTFS
12
3456789
10111213141516
17181920212223
242526272829
Search Blog

Recent Comments
Re: Railo 3.1 on Windows Server 2008 and IIS7 - Part 3 of 3 (by Jon at 8/27 2:04 PM)
Re: Hosts File Changes Not Acknowledged on Vista 64 (by Spacy at 8/24 3:46 PM)
Re: THE DAY CFUNITED DIED (by ComboFusion at 8/23 10:50 AM)
Re: My Grandpa (by Tasha at 8/10 4:29 PM)
Re: Just What IS a 'Service Layer', Anyway? (by dougboude at 8/02 10:10 AM)
Re: Just What IS a 'Service Layer', Anyway? (by Isaac at 8/02 2:25 AM)
Re: PayPal IPN Coldfusion CFC (by Soyestudiambre at 7/25 6:12 PM)
Re: PHP vs COLDFUSION (by Tony Garcia at 7/17 11:24 AM)
Re: PHP vs COLDFUSION (by dougboude at 7/14 8:45 AM)
Re: PHP vs COLDFUSION (by Lola LB at 7/14 5:51 AM)
Categories
Archives
Photo Albums
Funnies (5)
Family (3)
RSS

Powered by
BlogCFM v1.11

26 February 2008
Making Your Home a Pleasant Place to Be: Project Birdbath
My lovely lady and I love to nest. That is, we are always looking for ways to make our home our favorite place to be. Lately, (since we south Texans are privileged to an early onset of GORGEOUS weather), our attention has been on the backyard. We have several projects in the works, all of them on a shoestring budget, so I thought I'd share one with you all in the hope that it will inspire you, too; a little bit of effort goes a long way to making your little piece of the world an enjoyable, relaxing place to be.

Okay, so I already had a bird feeder on the back porch hanging on a plant hanger. The other day I saw our first visitor in a long time: a male house finch (looks like a sparrow, but his head and chest are red). "Well, if I'm feeding him", I said to myself, "I ought to be watering him, too", so I set myself on getting a birdbath. Unfortunately, I also have a strong frugality about me, and could NOT bring myself to pay the price for any of those offered by home depot. Instead, my lady and I made our own! It was simple, cheap, and turned out better than those we saw for sale. Here's what you do:

Go to Walmart and head toward the garden center. You're looking for sets of cheap, plastic pots with matching designs and varying in diameter. Grab one of each size, and then grab the largest matching pan they have. Next, head over to the hardware section and grab a tube of some sort of glue (Gorilla Glue, Rhino Glue...anything that looks like it'll be strong and withstand the elements). Here's what we bought:

bird bath parts

I'll just show you the finished product...I think assembly instructions will be self-explanatory. :)

completed bird bath

There you have it, a gorgeous, ECONOMICAL, and perfectly functional bird bath. Oh, and since it's hollow, I think I may put some sort of nice looking rock in the very center on top to help hold it down. In addition, I'm going to dig a hole at the base of the bottom pot once I have it out in the yard so that the toads can find a safe haven there. You want toads in your yard as they do consume a LOT of unwanted pests at night.

Happy nesting!


Doug  :0)
Posted by dougboude at 1:11 PM | PRINT THIS POST! | Link | 3 comments



21 February 2008
Finding 'Fat Finger' errors in Modelglue.xml
Ever felt so confident in your skills and ability to code an entire model glue event from the xml to the controller, model, and view that you decided to go ahead and do two or three entire events before you actually attempted to run your code, only to find out that SOMEWHERE along the lines you fat fingered your xml, and for the LIFE of you can't see it? All Model-Glue is going to tell you is that your XML is invalid, but it's up to you to find the change in case, missing slash, misspelling, or mis-nesting. ONCE IN A GREAT WHILE this happens to me (  ) , so I thought I'd share a handy little tool I use to save myself a lot of time and grief.

http://www.w3schools.com/dom/dom_validate.asp

Just paste your modelglue xml content into the little window and hit validate. In a jiffy your type-o will be staring you in the face!
Posted by dougboude at 12:31 PM | PRINT THIS POST! | Link | 2 comments
06 February 2008
JSON.CFC, MAYBE CF8 DIDN'T MAKE YOU OBSOLETE AFTER ALL!

Back in July I shared the results of my personal forray into JSON as a blog post, comparing it to XML as a means of returning Ajax data. In order to conduct my experiments, I had utilized an open source CFC called JSON.CFC in order to do the conversion from CF data types to JSON and vica versa. After the post, one individual made the comment that once CF 8 came out, there wouldn't be a need for JSON.CFC anymore. Well, until today, I would have agreed, but now I'm not so sure.

I'm working on a project where I want to retrieve some data sets and keep them client side for fast lookups, so my approach was to return the data to my template as a JSON string, and then just 'pop' it into Javascript, like so:

<script>
 var seriesgroups = <cfoutput>#seriesgroups#</cfoutput>;
</script>

FYI, the my data has these fields:  SERIESGROUPID,NAME

What I expected was that, once I did this, I would be able to access my values in JS like this:

<input type="button" value="test" onClick="alert(seriesgroups.data.name[0]);" />

...


My data was converted from a query to JSON using CF8's new "serializeJSON()" function. But to my mild irritation, I was not able to access the data as expected. I thought to myself, "self, this is an odd thing, because when I performed the same task using the JSON component a few months ago, it worked fine". Just to double check myself, I re-read my blog post on JSON and decided to use JSON.CFC to see if the results were the same. Using JSON.CFC, I was able to get the expected results.

So here's the thing, then: JSON.CFC, MAYBE YOU'RE NOT SO OBSOLETE AFTER ALL!

Or, it could also be that I am just not adept enough at reading JSON strings and can't figure out the appropriate way to access my JS object in such a way that I could easily loop over it looking for specific values. If anyone knows how one SHOULD go about accessing data that was serialized using "serializeJSON" in a JS context, I would love to see an example! I could probably figure it out if I had the luxury of time, but alas, I do not.

Okay, just to top things off with a side by side comparison (which I love doing), here are the results of the CF 8 and JSON.CFC conversions:

Method JSON String
JSON.CFC {"recordcount":1,"columnlist":"name,seriesgroupid","data":{"name":["Exports"],"seriesgroupid":[1]}}
serializeJSON() {"COLUMNS":["SERIESGROUPID","NAME"],"DATA":[[1,"Exports"]]}


JSON.CFC dump serializeJSON dump
dump of cfjson results dump of the serializeJSON results
Posted by dougboude at 4:20 PM | PRINT THIS POST! | Link | 8 comments
05 February 2008
Deaf and Hard of Hearing Friendliness in Branson: Let Your Opinion Count
(OT to the technical aggregators)

As some of you may have read in my previous post on the efforts being made in Branson, Missouri to make that city the country's first "Certified Deaf and Hard of Hearing Friendly" vacation destination, Signed Entertainment Enterprises is doing a marvelous job at raising awareness and encouraging the businesses there to hop on board. Already Randy (the President of S.E.E.) has certified several venues, opened the city's one and only "Everyone's Welcome" center (itself deaf and hard of hearing friendly), has held press conferences, provided complimentary tours, conducted radio and newspaper interviews, and is now in communication with Missouri's Governor Blunt regarding S.E.E.'s mission.

Every voice counts, however, and so I'm asking those who will to visit the S.E.E. site and, from this page, send each of the Theaters or Shows a pre-written email letting them know that you completely concur with S.E.E.'s mission to see them become Deaf and Hard of Hearing Friendly.

Thank you for taking a few minutes to do this, and please do pass the link along to friends and family who may be supportive of this endeavor as well.

Link to the personal petition page:  http://www.see-entertainment.com/certified.php

Doug  :0)
Posted by dougboude at 11:19 AM | PRINT THIS POST! | Link | 0 comments
04 February 2008
Using Google as your CF Mail Server
Ah, sounds like a no brainer, right? Why even do a blog post on such a thing, right? Because Google requires that an SMTP connection be encrypted...something that CFMX7 just doesn't do all by its lonesome. I need to vent a little, so here's my story followed by some useful info....

It's extremely late on a Sunday night and you're in the final final stages of a site migration for a client. Their "under construction" sign says that everything will be back online and kosher at 7 am Monday morning, so you're addressing one of the last things on your list: setting up the client's email hosting server.

It made it to the end of the list because of the fact that they're using a third party to relay their mail: Google. Now everybody knows Google's reputation for being logical and actually making sense most of the time, so how hard can it be to make sure that Coldfusion is pointing to the client's Google SMTP, especially when the client said it was a piece of cake when they set it up the first time? You figure out later that the person who told you that wasn't actually the person who set it up to begin with, as the passing time turns into a couple of hours and you still haven't sent a successful email.

(Here comes the venting part I mentioned...) You know what chaps my hide, grinds my gears, gets my goat (I wonder where that one evolved from), et al? It's the same thing that gets my goat most of the time, the incredibly cryptic nature of some things that ought to be simple and all of the other people out there on the net who managed to get it to work but insist on only sharing yet more cryptic or worse yet, elusive, information on how they did it (if they share any of the "hows" at all!). I want to share with you my journey, at 2 am on a Sunday night, to learning how to set up a secure tunnel to an smtp server for the purpose of using Google's smtp server for sending email. I want to do this, ALL IN ONE BLOG POST, just in case anybody else out there EVER finds themselves in the position I was...I wouldn't wish such a frustrating, elusive game of Clue on any other person.

CUTTIN' TO THE CHASE, if you're trying to use Google's smtp server to send mail and you're seeing errors like this one
coldfusion email error log

in your mail log file, it's telling you that Google requires you to authenticate to its smtp server via an SSL connection, and any Coldfusion version below 8 (I read a short post saying that version 8 could handle such things, but the poster FAILED to give any other clues as to how to implement it...sheesh) can't do that all by its lonesome. So, we need an intercessor, a little service running on the web server that will intercept requests to ports internally then reroute the request to an outward-facing port using a secure connection. That intercessor is called 'STunnel' (though there were a couple of other equal products I came across). In a numbered list then, here are the steps a body needs to do in order to make it work:

1. Make sure you have a Google email account.
My client is signed up to use Google Apps, which includes an email server. Here's a starter link for you: https://www.google.com/a/help/intl/en/admins/editions.html

2. Make sure you know the username and password for the Google email account

3. Download and install a program called STUNNEL (latest windows exe can be found on this page: http://www.stunnel.org/download/binaries.html)

4. Edit Stunnel's configuration file (the default config file is in the stunnel directory, and is called "stunnel.conf").

5. Empty out the config file and paste  in the following values:
client = yes
debug = debug
[pop3s]
accept = 127.0.0.1:1109
connect = pop.gmail.com:995

[smtps]
accept = 127.0.0.1:259
connect = smtp.gmail.com:465


6. Go into your CF Administrator, to the mail settings, and enter the appropriate values according to the illustration and your own username and password

coldfusion mail server settings

(note: 127.0.0.1 is not a placeholder value in this blog post: use that value! Also, notice the port number used, 259; it's the same number in the stunnel.conf file for accepting SMTP mail.)

7. Go to the stunnel directory under Programs and choose to install it as a service, then run it as a service.

8. Go to your services list and make sure stunnel is running.

9. Just for fun, restart the CF service

10. Execute a template you made that has a cfmail tag set up similar to the following:

    <CFMAIL
            TO="dougboude@gmail.com"
            FROM="admin@myclient.com"
            SUBJECT="test email from server"
            TYPE="HTML">
    testing
    </CFMAIL>

11. Log in to your google mail and look in your sent items folder. The email you sent should appear there tout suite. (Google apps allows you to point a subdomain to their email server...my client's is similar to "mailbox.clientdomain.com", fyi)

12. if you don't see the email in the sent items folder, check CF's mail log and make sure it didn't generate a STARTTLS error

If you do all of this and it still doesn't work, I'm afraid I have no more information for you. BUT, if you run into additional issues and DO manage to fix them, please post that info back to the comments area of this post for the benefit of others!

Okay, I feel better now. Being forced to invest SO much time and energy, at 2 am, and then finding nothing but a few nearly useless clues here and there to go on can really drain a person emotionally, ya know? :)

Doug out.
Posted by dougboude at 12:13 PM | PRINT THIS POST! | Link | 11 comments
01 February 2008
Diary of a 'Work From Home' Man - Part I
Okay, it's been exactly 14 business days since I became a free agent, and by my estimation, I have officially been working ten times harder than I ever did at a "real" job...at least it feels like that. For some reason I had it in my head that I would have eight hours a day now to purely dedicate to coding; my bubble has been burst, however, as I find that, unless I'm willing to put in extra hours in the evening as well (which I am and have been doing), I really only have about four hours of coding time, at best, during the day. Of course, every day is different, and there have been a few where the phone was quiet, I was disciplined enough to stay logged out of Meebo and gmail, a nearby relative who equates working from home with not having a job didn't try to hit me up for a ride, and I actually got FIVE hours of work done. But typically, it's four or less.

I do realize that there's always going to be a "settling in" phase where I get into a routine, learn my way around a self-employed day...stuff like that. But man, I've got to tell ya, at this point I find myself LONGING for a regular day job again! Ah, the comforts of being salaried! The peace of earning money even while "seeing a man about a horse" (colorful metaphor my ex coworker used when referring to quality restroom time)! These days the old truism "if a man will not work, neither shall he eat" holds absolutely valid, as my livelihood is dependent on precisely how many billable hours I can churn out in a day. But no matter how hard I try, it seems I always come up just a bit shy of what I hope to accomplish. I am not discouraged, however, and have been consistently improving on when I begin my daily commute up the stairs, when to pencil in nature's call, and how to organize my tasks. Eventually I'll have it all down pat, but for now I feel like I'm just working constantly. I have even started to DREAM about my projects! (consequently, I'm considering billing for a portion of my REM time as well as any other miscellaneous technical meditations).

So, working for myself so far isn't the life of luxury and ease I thought it would be. On the other hand, however, I do get to choose which robe I will wear to work on a given day and shaving is an option (as long as I do it before Jen gets home).
Posted by dougboude at 8:45 PM | PRINT THIS POST! | Link | 6 comments