<?xml version="1.0" encoding="utf-8"?>
			
			<rss version="2.0" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cc="http://web.resource.org/cc/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd">

			<channel>
			<title>Jeffry Houser&apos;s Blog - ColdFusion</title>
			<link>http://www.jeffryhouser.com/index.cfm</link>
			<description>Jeffry Houser&apos;s Blog</description>
			<language>en-us</language>
			<pubDate>Thu, 09 Sep 2010 09:47:44 -0400</pubDate>
			<lastBuildDate>Tue, 29 Jun 2010 18:34:00 -0400</lastBuildDate>
			<generator>BlogCFC</generator>
			<docs>http://blogs.law.harvard.edu/tech/rss</docs>
			
			<managingEditor>&#106;&#104;&#98;&#108;&#111;&#103;&#64;&#102;&#97;&#114;&#99;&#114;&#121;&#102;&#108;&#121;&#46;&#99;&#111;&#109;</managingEditor>
			<webMaster>&#106;&#104;&#98;&#108;&#111;&#103;&#64;&#102;&#97;&#114;&#99;&#114;&#121;&#102;&#108;&#121;&#46;&#99;&#111;&#109;</webMaster>
			<itunes:subtitle></itunes:subtitle>
			<itunes:summary></itunes:summary>
			<itunes:category text="Technology" />
			<itunes:category text="Technology">
				<itunes:category text="Podcasting" />
			</itunes:category>
			<itunes:category text="Technology">
				<itunes:category text="Tech News" />
			</itunes:category>
			<itunes:keywords></itunes:keywords>
			<itunes:author>Jeffry Houser</itunes:author>
			<itunes:owner>
				<itunes:email>jhblog@farcryfly.com</itunes:email>
				<itunes:name>Jeffry Houser</itunes:name>
			</itunes:owner>
			<itunes:image href="" />
			<image>
				<url></url>
				<title>Jeffry Houser&apos;s Blog</title>
				<link>http://www.jeffryhouser.com/index.cfm</link>
			</image>
			<itunes:explicit>no</itunes:explicit>
			
			<item>
				<title>Do ColdFusion and Flex really place nice together?</title>
				<link>http://www.jeffryhouser.com/index.cfm/2010/6/29/Do-ColdFusion-and-Flex-really-place-nice-together</link>
				<description>
				
				A &lt;a href=&quot;http://www.jeffryhouser.com/index.cfm/2007/10/9/Why-does-ColdFusion-return-a-CFC-to-Flex-as-a-generic-object#c3DA333C4-5056-1830-B043C772D5F4E0A8&quot;&gt;comment came in on one of my earlier blog posts; and I thought the conversation was interesting enough that I&apos;m promoting it to a post.  

 The &lt;A href=&quot;http://www.jeffryhouser.com/index.cfm/2007/10/9/Why-does-ColdFusion-return-a-CFC-to-Flex-as-a-generic-object&quot;&gt;original blog post&lt;/a&gt; was about getting ColdFusion and Flex to share objects (CFC and ActionSCript Classes) back and forth.  There is a cool automatic conversion from CFCs to ActionScript objects provided by the built-in ColdFusion AMF Gateway.  

 To make this work you have to specify the properties in the CFC, and the ActionScript object in the same order, using the same case sensitivity, and with the same data type.  This is where Ionectu drops in:

&lt;blockquote&gt;
&quot;Adobe has gone through a lot of trouble to make sure that ColdFusion and Flex play really nice together&quot;

Translation : `Adobe` is retarded and here`s why, it`s quite simple.

With compilable languages, It`s a must to at least pretend to be able to create it once and leave it alone. It`s OOP not HTML ... amf remoting is `dependency central`. NORMAL people need to be able to change one end and not scrue up the entire thing, this is what development is about (in part), continuity, to have a flow that can be easily redirected.

Amf remoting remindes me of something along the lines of

if(this.file == &quot;index&quot;)
   displayPage(1);
else if(this.file == &quot;page2&quot;)
   displayPage(2);
else if(this.file == &quot;page3&quot;)
   displayPage(3);
else if(this.file == &quot;page4&quot;)
   displayPage(4);
else
   buy a hamster and teach it oop, it`s gonna come up with something better than Adobe did


The hell ?! Are all Adobe employees Google or Microsoft &quot;rejects&quot; ? (that`s not a nice thing to say, I know and I`m sorry, I`m just really pissed off, it just rubs me wrong.)

&lt;/blockquote&gt;

I, personally, think it is a big leap to call Adobe retarded for the Flex Remoting implementation in ColdFusion.  It seems reasonable to me that when two completely separate systems have any similar objects used for the purpose of communicating between these two systems that when you change something on one system a similar change will have to made in the second.  

As one example, If you change a database table, you may also have to change a Gateway Object or Data Access Object that relates to that table.  

The sole purposes of Value Objects / Data Transfer Objects is to share data between two systems, in our case CF and Flex.  IF you make changes to one side of the equation, it makes sense to me that you have to make changes to the other side.  

 Yes, the exchange is finicky in the order of properties on the objects, the data types of said properties, and the case sensitivity of the property names.  CF is not case sensitive--most of the time--but Flex and most programming languages are.  I accept the case sensitivity requirement without complaint.  

 I don&apos;t understand Ionectu comparison to the &quot;If&quot; condition.  At the end of the day most development is some kind of if condition, isn&apos;t it?

I, basically, told that to the commenter, and he followed up:

&lt;blockquote&gt;
In, Adobe`s making sure that CF and Flex play nice together they kind of forgot to teach them, how to understand and help each other.
At the moment all that they can do is copy values from point a to point b (if you have points defined) (If you don`t you`re better off using wsdl btw).
They don`t play nice togheter.. they just copy values from point a to point 1 from point b to point 2, the concept is the simplest I`ve ever seen .... this value goes here, this one here, and .... hm.. yep yep this goes here. Yeah that it. Client.as ....

And if that took them year(s).. well then that`s just sad. They could have spend some time &quot;implementing&quot; some &quot;usability&quot;

How can they as a company think that it`s a success ...
&quot;Ok we did it!&quot; .. &quot;To use it you just have to set the same name, set the same position, set an id, on both ends ... and that might do it, I think that`s all&quot;. &quot;We`ll call this a ... bridge? no , no, that`s not FLASHy enough.. we`ll call it a protocol.. yeah protocol&quot; ... How can they call that a protocol :wallbash: when clearly it can`t even stand on it`s own &quot;two&quot; feet. 
&lt;/blockquote&gt;

I believe there are huge benefits to using AMF, such as performance and packet size; so I don&apos;t agree that we&apos;d be better off using WSDL. 

The real question I have is, how else would you implement it?  I&apos;m not quite sure.  

I can respect that it&apos;d be nice if Flex and CF were a bit more aware of each other.  

Why do the properties have to be defined in the same order?  Why can&apos;t the AMF Gateway use the alias properties in CF and Flex to associate the CFC to the Class and then do some magic to match up properties and data types?

What are your thoughts on this issue?

Want to discuss this in person?  Come visit the &lt;a href=&quot;http://www.flextras.com&quot;&gt;Flextras&lt;/a&gt; booth at &lt;A href=&quot;http://www.eventbrite.com/event/680816340/360flexhelpsell/235431565&quot;&gt;360|Flex in DC&lt;/a&gt; this September. 
				</description>
				
				<category>Flex</category>				
				
				<category>Professional</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Tue, 29 Jun 2010 18:34:00 -0400</pubDate>
				<guid>http://www.jeffryhouser.com/index.cfm/2010/6/29/Do-ColdFusion-and-Flex-really-place-nice-together</guid>
				<author>info@theflexshow.com (Jeffry Houser and John Wilker)</author>
				
				
			</item>
			
			<item>
				<title>How do I convert a URLpath to SysFilePath if I have the file&apos;s URL?</title>
				<link>http://www.jeffryhouser.com/index.cfm/2009/10/8/How-do-I-convert-a-URLpath-to-SysFilePath-if-I-have-the-files-URL</link>
				<description>
				
				I&apos;m in a writing mood, so decided to tackle this question:

&lt;blockquote&gt;
One of your pages talks about how to get a/the filepath from a URL path; so if I know the URL where a file is, can I obtain the (absolute) path, on the server, where this file is? I will gladly supply more details, I just now would like to know if this is doable, in general. thanx!!
&lt;/blockquote&gt;

 This is a hard question to address.  First, I don&apos;t intimately remember all my 560 blog posts, and the user did not let me know which one he was referring to.  Second, I am not aware which technology the user is referring to.  Does he want an answer for Flex?  Or AIR?  Or ColdFusion?

 I decided to tackle answers in all three technologies.  Assuming you have a URL, how do you get the system path to the file?  

 In CF, I believe &lt;a href=&quot;http://www.cfquickdocs.com/?sourceid=cfQDSearch1.03&amp;getDoc=expandpath#ExpandPath&quot;&gt;expandPath&lt;/a&gt; should give you the absolute file path.  Just strip out the domain name of the URL before calling it.
 
 In Flex I do not believe you can access the file path of the server, nor the client.  The security sandbox prevents such access.  

 In AIR, a URL to a local file is also the absolute path; but you wouldn&apos;t have access to the absolute path on the server.

 So, in summary, for ColdFusion use the expandPath function. In Flex or AIR, you need a convoluted work around, such as a server side service or a desktop server piece like Merapi.

 You can always ask me your question &lt;A href=&quot;http://www.jeffryhouser.com/contact.cfm&quot;&gt;here&lt;/a&gt;, or stop by a &lt;A href=&quot;http://www.flextras.com/blog/index.cfm/Flextras-Friday-Lunch&quot;&gt;Flextras Friday Lunch session&lt;/a&gt; and ask me in person. 
				</description>
				
				<category>AIR</category>				
				
				<category>Flex</category>				
				
				<category>Professional</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Thu, 08 Oct 2009 09:00:00 -0400</pubDate>
				<guid>http://www.jeffryhouser.com/index.cfm/2009/10/8/How-do-I-convert-a-URLpath-to-SysFilePath-if-I-have-the-files-URL</guid>
				<author>info@theflexshow.com (Jeffry Houser and John Wilker)</author>
				
				
			</item>
			
			<item>
				<title>What are the differences between OOP in Java vs OOP in ColdFusion?</title>
				<link>http://www.jeffryhouser.com/index.cfm/2009/7/16/What-are-the-differences-between-OOP-in-Java-vs-OOP-in-ColdFusion</link>
				<description>
				
				The short answer to my subject&apos;s title is there are no differences between OOP in Java and OOP in ColdFusion.  For a longer answer, and some background, we need to step back 12 short hours ago...

 I saw a tweet roll by my twitter stream today right before I was leaving for the &lt;a href=&quot;http://www.ctcfug.com&quot;&gt;Hartford User Group meeting&lt;/a&gt;.  I remember the tweet saying something about there needing to be a difference between Java-OOP and CF-OOP.  I suspect &lt;a href=&quot;http://twitter.com/sosensible/status/2658847737&quot;&gt;this is the tweet&lt;/a&gt;, although I remember it slightly differently in my head:

&lt;blockquote&gt;
CF-OOP ( &quot;Not your JAVA&apos;s OOP&quot; ) ... and that is good!
&lt;/blockquote&gt;

 I translated that tweet to mean that there should be different versions of Object Oriented programming based on the language you are using.  

 For some reason, perhaps my imagination, it seems to me that every time SoSensible and I have twitter words they are slightly combative.  I&apos;m not sure if this is intentional or if we just like to disagree in 140 characters.  I, perhaps foolishly responded &lt;a href=&quot;http://twitter.com/reboog711/status/2659010226&quot;&gt;like this&lt;/a&gt;.

&lt;blockquote&gt;
@sosensible OOP is one approach to software architecture. It is language agnostic. If Java-OOP &amp; CF-OOP are different, you&apos;re doing it wrong
&lt;/blockquote&gt;

 The reason my response may have been foolish is that it is not sensible [no pun intended] to start religious wars and then run away.  In my version of the world, my tweet makes perfect sense.   

 Object Oriented Programming is just one a way of approaching a problem we are trying to solve.  Object Oriented Programming tries to mimic entities in the real world (Objects) and define their actions (methods) and interactions.  An object oriented architecture should be completely language, or platform, independent because the way that real world entities interact with each other is completely independent of a specific computer language or platform.  

 Procedural programming on the other hand focuses on how the computer will compute tasks.  The whole purposes is to break things up so that the computer will process the tasks and solve your problem in the most efficient way possible.

 As a side note, computers are fast enough these days that I&apos;d expect performance issues between an Object Oriented Designs and Procedural Designs to be negligible.  

 The difference between Object Oriented Programming and Procedural Programming is all about how you model your entities and how those entities interact with each other.  In OOP you create objects, which represent real world entities and you focus on the actions (methods) that those real world entities perform.  In Procedural Programming, you create Abstract Data Types, which is like your own data type and the functionality that operates on that data.


 Feel free to take a moment to think about your own development.  Are you focusing on mimicking the real world, or are you focused on modeling your data?  

 For all intents and purpose, Objects and Abstract Data Types are the same.  The type of objects you decide to implement and the way that they interact together is what makes a design lean more towards OO or Procedural.

 When I was in college, I seem to remember a lot of examples regarding flower shops, so let&apos;s assume you live in Connecticut and want to send flowers to a friend in Virginia.

 In an OO Style Approach:

 You call a CT flower shop and place your order. 
 That CT flower shop processes the order by finding a Virginia Flower Shop and passes it the order.
 The Virginia Flower Shop processes the order by putting the flowers together and delivering them to your Virginia friend.  

 So, two different flower shops are handling order processing completely differently based on the flower destination.


 In a Procedural Style Approach, this may happen:

 You create the order and send it to Flower Shop  
 Flower Shop, process the order by putting the flowers together and delivering them.

 So, in this situation, you are creating the order; not passing the data to the Flower Shop.  And the Flower shop just knows how to handle it.

 Both approaches can use a relational database in the backend to store data; and he &quot;processing&quot; done at the database level will probably consist of modifying the stock count.

 Before ColdFusion 6--AKA CFMX--ColdFusion did not provide a facility to create either Objects or Abstract Data Types.  A lot of folks claim that development in CF5 or below was in the procedural style.  In most cases, it wasn&apos;t.  It used a top down approach with minimal thought to encapsulation.  Yes it had custom tags and includes and eventually functions, but neither were used consistently.  And there was no way to encapsulate data.  This was a serious problem for anyone who wanted to implement procedural (or Object Oriented) architecture in their code.  It just wasn&apos;t feasible.

 I got two responses to my tweet.  One from &lt;a href=&quot;http://twitter.com/sosensible/status/2659074596&quot;&gt;John&lt;/a&gt;

&lt;blockquote&gt;
OOP means programing with objects. Are you saying that I should require strong typed CFC arguments or I am doing it wrong?
&lt;/blockquote&gt;

 I don&apos;t fully understand John&apos;s rebuttal, probably because he didn&apos;t fully understand my original statement.  I was speaking about design principles, and I believe he responded with implementation specifics.  OOP means that you model the real world.  That has nothing to do with strong or loose typing.  

 The best response I can give to John is that If you think you&apos;re Object architecture should be different based on the language you are using, then you aren&apos;t properly modeling your real world entities and how they interact with each other.  Those objects and the interactions do not change with your language.  

 The other response I Got came from &lt;A href=&quot;http://twitter.com/kylerow/status/2659047911&quot;&gt;kylerow&lt;/a&gt;.  Gotta love Twitter, I have no idea who Kyle Row is; I wasn&apos;t even following him before now.  Maybe he is following me.

&lt;blockquote&gt;
language devices make a difference how you do OOP - ex: C++&apos;s multi-inheritance vs. C#/Java single-inheritance ..
&lt;/blockquote&gt;  

Once again, I&apos;d tell KyleRow that he is talking about implementation details.  Your model of the real world needs to be independent of the implementation details.  So, in C# / Java you use interfaces, whereas in C++ you use Multiple Inheritance.  That&apos;s fine, but does not really change your underlying object design now how your real world objects interact with each other.

 I know that OO and Frameworks have been a bit hotbed in the ColdFusion community lately.  My preaching on this topic has come up a few times in the &lt;a href=&quot;http://www.flextras.com/blog/index.cfm/Flextras-Friday-Lunch&quot;&gt;Flextras Friday Lunch&lt;/a&gt;.

 I think the discussion of Object Oriented vs Procedural Design is a fascinating academic discussion.  But, for all intents and purposes, it doesn&apos;t matter to us folks doing development on a daily basis.  Most people are using a hybrid approach, at best, and calling it Object Oriented.  

 I believe the real secret to successful application development is to focus on encapsulating your code so that it can be reused easily.  For some reason, &lt;a href=&quot;http://en.wikipedia.org/wiki/Strategy_Pattern&quot;&gt;the strategy pattern&lt;/a&gt; comes to mind.  I once heard it described as &quot;Separate out what changes from that which stays the same.&quot;  That is a great, important, concept which has nothing to do with your approach to architecture.  

 So, where am I wrong?  Be prepared to explain what piece of the real world system Data Transfer Objects and Table Gateways represent.

 Maybe next I&apos;ll tackle methods that return nothing. 
				</description>
				
				<category>Professional</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Thu, 16 Jul 2009 07:00:00 -0400</pubDate>
				<guid>http://www.jeffryhouser.com/index.cfm/2009/7/16/What-are-the-differences-between-OOP-in-Java-vs-OOP-in-ColdFusion</guid>
				<author>info@theflexshow.com (Jeffry Houser and John Wilker)</author>
				
				
			</item>
			
			<item>
				<title>Flex and CF gave me this error: flex.data.adapters.ChangeObjectImpl / java.lang.NoClassDefFoundError</title>
				<link>http://www.jeffryhouser.com/index.cfm/2009/6/23/Flex-and-CF-gave-me-this-error-flexdataadaptersChangeObjectImpl--javalangNoClassDefFoundError</link>
				<description>
				
				Over at &lt;a href=&quot;http://www.flextras.com/&quot;&gt;Flextras.com&lt;/a&gt; I created an &lt;A href=&quot;http://www.flextras.com/?event=ProductHome&amp;productID=10&quot;&gt;AutoCompleteComboBox Flex Component&lt;/a&gt;.  One of the major benefits of the AutoCompleteComboBox over other options is the ability to pull data from a database.  I have it working, it went through our beta testers, and was released over a month ago.

 But, no demo for this functionality exists on the site, yet.  How come?  Because I couldn&apos;t get Flex Remoting to work with ColdFusion on the production site.  Everything worked fine on my local dev box.  Everything worked fie on my development / staging server.  I kept getting this error when trying to do anything on the production box:

&lt;code&gt;
Message: flex.data.adapters.ChangeObjectImpl
Type: java.lang.NoClassDefFoundError
&lt;/code&gt;

 This error was being e-mailed to be via the error handler in the Application.cfc.  
 There was also a stack trace as part of the error e-mail, along with other information such as session information and cgi variables.  None of it was any help in diagnosing the error.  

 I believe this is what was happening:

&lt;ol&gt;
&lt;li&gt;Flex App makes remote call&lt;/li&gt;
&lt;li&gt;ColdFusion throws error because it has no idea how to translate CFs array of CFCs into the Flash Player&apos;s array of AS Objects.&lt;/li&gt;
&lt;li&gt;Error handler e-mailed me the error.  The error handler ran succesfully, but returns no value.&lt;/li&gt;
&lt;li&gt;Because the error was caught, The Flash Player sees that the remote call has run succesfully.  It executes the result handler, with a null result.&lt;/li&gt;
&lt;/ol&gt;
 
 But, I still had no idea what was causing the error.  Googling around offered very little help.  Looking at packets with ServiceCapture was no help.  All it would tell me was that nothing was being returned from the method call.  It was registering as a successful call, so the result handler was being fired not the fault handler.  

After some trial and error I discovered a few things, in no particular order:

&lt;ul&gt;
&lt;li&gt;If the remote method returned a simple value, such as a string, it worked without an issue.&lt;/li&gt;
&lt;li&gt;If the remote method returned a query object, it worked without an issue.&lt;/li&gt;
&lt;li&gt;If the remote method returned a mapped object, it caused the &quot;ChangeObjectImpl&quot; &quot;NoClassDefFoundError&quot; error.&lt;/li&gt;
&lt;/ul&gt;

 So, why was this error happening?  After Googling some more, &lt;a href=&quot;http://groups.google.com/group/conduit-dev/browse_thread/thread/0d8a5ecfad3fb5e3/93b0f1fac507dc1d?#93b0f1fac507dc1d&quot;&gt;I came across this link&lt;/a&gt;.  It appears that someone fixed a similar error by moving cfgatewayadapter.jar and concurrent.jar from flex/jars to Coldfusion/lib/ . 

 I let my host know; he move the files, restarted the server, and bam!  Everything started working.  Huh?  Why?  Does anyone have any idea?  Why wasn&apos;t this stuff configured from the start?  Why did moving these files address the issue? 

 I&apos;m glad it&apos;s done and I can finally post up the sample for all to see.  But, now I&apos;m having issues with the case sensitivity of a CF Mapping.  It was originally set up in all lower case, not mixed case like my dev machine.  ColdFusion doesn&apos;t care, but Flex does.  The host told me they changed the case on the server.  I Restarted the machine.  Remoting is st ill returning the CFC w/ the mapping in all lowercase.  Any ideas on that one? 

 I know I&apos;ve been light at blogging on this blog, and I apologize for that.  Most of my &quot;Creative&quot; energies for blogging are being sapped by the &lt;a href=&quot;http://www.flextras.com/blog/index.cfm/Flextras-Friday-Lunch&quot;&gt;Flextras Friday Lunch weekly Q&amp;A session&lt;/a&gt;, &lt;A href=&quot;http://www.theflexshow.com&quot;&gt;The Flex Show&lt;/a&gt;, and creating demos for Flextras. 
				</description>
				
				<category>Flex</category>				
				
				<category>Professional</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Tue, 23 Jun 2009 09:00:00 -0400</pubDate>
				<guid>http://www.jeffryhouser.com/index.cfm/2009/6/23/Flex-and-CF-gave-me-this-error-flexdataadaptersChangeObjectImpl--javalangNoClassDefFoundError</guid>
				<author>info@theflexshow.com (Jeffry Houser and John Wilker)</author>
				
				
			</item>
			
			<item>
				<title>How do I pass data to a Remote Service?</title>
				<link>http://www.jeffryhouser.com/index.cfm/2009/1/15/How-do-I-pass-data-to-a-Remote-Service</link>
				<description>
				
				This question came up twice on the same day; once via personal e-mail and once via the &lt;A href=&quot;http://www.houseoffusion.com/groups/flex/thread.cfm/threadid:1816#5666&quot;&gt;House of Fusion Flex&lt;/a&gt; list.  The question, from the House of Fusion list is this:

&lt;code&gt;
How do I submit data to the ColdFusion component from the Flex interface? 
&lt;/code&gt;

Using &lt;A href=&quot;http://livedocs.adobe.com/flex/3/langref/mx/rpc/remoting/mxml/RemoteObject.html&quot;&gt;RemoteObject&lt;/a&gt; in Flex, you can submit data like his:

&lt;code&gt;
RemoteObject.methodName(data);
&lt;/code&gt;

Basically, you pass data to a remote method the same exact way you pass it to a local method. The same approach is used if you use the &lt;a href=&quot;http://livedocs.adobe.com/flex/3/langref/mx/rpc/soap/mxml/WebService.html&quot;&gt;WebService&lt;/a&gt; or &lt;A href=&quot;http://livedocs.adobe.com/flex/3/langref/mx/rpc/http/mxml/HTTPService.html&quot;&gt;HTTPService&lt;/a&gt; objects.  

 Both people who asked this question were asking in relation to ColdFusion; however the same principles apply no matter what middleware you are using.  From the perspective of Flex/Flash it&apos;s just a consistent interface for accessing remote services.

 I love the questions that are easy to answer.  &lt;A href=&quot;http://www.jeffryhouser.com/contact.cfm&quot;&gt;Do you have one to ask me?&lt;/a&gt; 
				</description>
				
				<category>Flex</category>				
				
				<category>Professional</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Thu, 15 Jan 2009 11:00:00 -0400</pubDate>
				<guid>http://www.jeffryhouser.com/index.cfm/2009/1/15/How-do-I-pass-data-to-a-Remote-Service</guid>
				<author>info@theflexshow.com (Jeffry Houser and John Wilker)</author>
				
				
			</item>
			
			<item>
				<title>Running ColdFusion in the Cloud?  I don&apos;t get it!</title>
				<link>http://www.jeffryhouser.com/index.cfm/2008/12/8/Running-ColdFusion-in-the-Cloud--I-dont-get-it</link>
				<description>
				
				I started this a a response to a post on &lt;a href=&quot;http://corfield.org/blog/index.cfm/do/blog.entry/entry/CFML_in_the_Cloud&quot;&gt;Sean Corfield&apos;s blog&lt;/a&gt;; but decided the topic was worthy enough to write my own post about.

 I&apos;ve heard people speak about wanting to run an application server in the cloud.  I gotta admit; I just don&apos;t get it.

 How would one run an application server in the cloud?  Why would one want to run an application server in the cloud?  Perhaps better a question is how do we define &apos;cloud&apos;?  

 When we talk about storage in the cloud--such as &lt;a href=&quot;http://aws.amazon.com/s3/&quot;&gt;Amazon.com S3&lt;/a&gt;--the files are still sitting on some storage device that is remote to me.  I can use APIs or [more commonly I suspect] a program to access that data.

 How exactly does an application server fit into that model?  My web server is a physical machine somewhere on the west coast.  It routinely backs itself up to the development server in my office; a physical machine on the east coast.  Does that make my dev server a part of the cloud?  

 It seems to me that any instance of ColdFusion running a CFC w/ a remote method call could be construed as part of the cloud.  But, that instance of CF is still running on some physical server somewhere.  Why should this have/need different licensing rules? 

 Can someone enlighten me to what people want exactly?  What exactly is the use case for something like this; and how is it different than the &apos;traditional&apos; hosting model which includes renting server space? 
				</description>
				
				<category>Professional</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Mon, 08 Dec 2008 13:26:00 -0400</pubDate>
				<guid>http://www.jeffryhouser.com/index.cfm/2008/12/8/Running-ColdFusion-in-the-Cloud--I-dont-get-it</guid>
				<author>info@theflexshow.com (Jeffry Houser and John Wilker)</author>
				
				
			</item>
			
			<item>
				<title>Save 10% off a Flex Authority Subscription</title>
				<link>http://www.jeffryhouser.com/index.cfm/2008/9/24/Save-10-off-a-Flex-Authority-Subscription</link>
				<description>
				
				You all knew I was the editor in chief of &lt;A href=&quot;http://www.flex-authority.com&quot;&gt;Flex Authority&lt;/a&gt;, right?  Flex Authority is a quarterly Flex journal bringing you high quality content for Flex Programmers.  

 I pulled a few strings and eventually some gifts fell from the tree of plenty.  I have a discount code that, if you subscribe, will get you a 10% off a magazine subscription.  Each issue has around 14 articles, so that is like getting five articles a year completely free.

 The discount code is:

&lt;code&gt;
FlexEditor.11.1
&lt;/code&gt;

 &lt;a href=&quot;https://secure.houseoffusion.com/flex-authority-subscriptions.cfm&quot;&gt;Subscribe today&lt;/a&gt;.

 I&apos;m told this coupon code should work for any order $49.95 or above; so if you wanted to buy Issue 1, plus a 4 issue subscription, you can do that and still receive 10% off the full order.  If you want to combo up with a subscription to FAQU, you can do that too.

 And for those that want to meet up with me in person, I will be at 360FlexCamp in New Jersey this Friday / Saturday.  I have a discount code for that too, but you have to contact me directly. 
				</description>
				
				<category>Flex</category>				
				
				<category>Professional</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Wed, 24 Sep 2008 11:00:00 -0400</pubDate>
				<guid>http://www.jeffryhouser.com/index.cfm/2008/9/24/Save-10-off-a-Flex-Authority-Subscription</guid>
				<author>info@theflexshow.com (Jeffry Houser and John Wilker)</author>
				
				
			</item>
			
			<item>
				<title>Why won&apos;t Flex Remoting work with ColdFusion?</title>
				<link>http://www.jeffryhouser.com/index.cfm/2008/6/10/Why-wont-Flex-Remoting-work-with-ColdFusion</link>
				<description>
				
				This question comes in from a reader:

&lt;blockquote&gt;
I&apos;m trying to become familiar with Flex remoting and tie to a CFC on the back end. 

When I run the flex code and press the button I receive the following error: 
[RPC Fault faultString=&quot;[MessagingError message=&apos;Destination &apos;ColdFusion&apos; either does not exist or the destination has no channels defined (and the application does not define any default channels.)&apos;]&quot; faultCode=&quot;InvokeFailed&quot; faultDetail=&quot;Couldn&apos;t establish a connection to &apos;ColdFusion&apos;&quot;]
&lt;/blockquote&gt;

 I&apos;m not quite sure what the problem is, it could be any number of things.  Here are some things I suggested that he take a look a:

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Services Config&lt;/strong&gt;: Did he add the services-config file to your Flex Builder project as command line argument?  Bring up project properties and select Flex Compiler.  The argument should be something like this:

&lt;code&gt;
-services c:/CFusionMX7/wwwroot/weborb30/WEB-INF/flex/services-config.xml
&lt;/code&gt;

If not, you&apos;ll want to add it.
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Check Flex Remoting Setup&lt;/strong&gt;:  There could be a problem with the Flex Remoting setup.  CAn you load localhost/flex2gateway?  If you see a blank page, you&apos;re all set.  If you see a 404 error, then that is the problem.  Is Flash Remoting support enabled from the ColdFusion administrator?  Check under Data and Services --&gt; Flex Integration.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Code&lt;/strong&gt;: Check your CFC code.  Will it work locally, being invoked from a cfm template?  Can you generate a WSDL by loading the CFC in the browser with a ?wsdl argument?  Although when using Flash Remoting, the WSDL is not needed, loading the WSDL in the browser will make you aware of potential errors w/ remote access.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Paths&lt;/strong&gt;: Check the case sensitivity of your paths. If the case is wrong, the Flash Player won&apos;t find the CFC.&lt;/li&gt; 
&lt;/ul&gt;

 I&apos;ve run into all sorts of these problems when trying to get this stuff working the first time.  However once I made it over that initial hump I never had to look back.

 Hey, did you know over at The Flex Show we&apos;re giving away a &lt;A href=&quot;http://www.theflexshow.com/survey/&quot;&gt;Nintendo Wii Bundle&lt;/a&gt;?  CT is in the middle of a heat wave, so I&apos;m gonna get out of the non-air-conditioned office and try to    find some cooler places to program at. 
				</description>
				
				<category>Flex</category>				
				
				<category>Professional</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Tue, 10 Jun 2008 11:00:00 -0400</pubDate>
				<guid>http://www.jeffryhouser.com/index.cfm/2008/6/10/Why-wont-Flex-Remoting-work-with-ColdFusion</guid>
				<author>info@theflexshow.com (Jeffry Houser and John Wilker)</author>
				
				
			</item>
			
			<item>
				<title>Why use WebORB?</title>
				<link>http://www.jeffryhouser.com/index.cfm/2008/5/27/Why-use-WebORB</link>
				<description>
				
				This comes in from a reader Kai who asked why I use WebORB over the LCDS built with ColdFusion.  This was Kai&apos;s question:

&lt;code&gt;
I am a long-term passive ColdFusion/onTap community member. Currently I try to figure out if to use WebORB, BlazeDS/LCDS or something else ... onTap does NOT run on BlueDragon so it will not be usable with WebORB, I guess ... My question is: - Do You prefer WebORB over LCDS and if yes, why ? - Is WebORB only recommendable for Flash/Flex clients, or for Ajax clients, too ? I know that LCDS comes with those Ajax Data Services and WebORB with the Rich Client System; both do NOT support Ajax as fully as Flash/Flex. Do You have an insight if using AMF for Ajax is advantageous at all ? Or if one is better off using a realtime data exchange engine (Comet) targeted at Ajax natively - like LightStreamer, for example ... If You can give some hints out of the top of Your head, that would be great :-) 
&lt;/code&gt;
 
 Lots of stuff to cover in here, and he did ask for off the top of my head.  

 For those readers who don&apos;t know, when Kai says &quot;onTap&quot; I suspect he is referring to Isaac Dealey&apos;s &lt;a href=&quot;http://ontap.riaforge.org/&quot;&gt;onTap framework&lt;/a&gt; for ColdFusion.  When he talks about BlueDragon, he is referring to the &lt;A href=&quot;http://www.newatlanta.com/products/bluedragon/index.cfm&quot;&gt;CFML server from New Atlanta&lt;/a&gt;.  BlueDragon will be released &lt;A href=&quot;http://openbluedragon.org/&quot;&gt;open source&lt;/a&gt; under a &lt;A href=&quot;http://en.wikipedia.org/wiki/Dual_License&quot;&gt;dual licensing model&lt;/a&gt;.  The latest release of &lt;a href=&quot;http://blog.themidnightcoders.com/2008/05/weborb-for-net-35-is-available.html&quot;&gt;WebORB &lt;/a&gt; supports CFC translation between BlueDragon and the Flash Player, a feature that exists natively in ColdFusion.  You could use WebORB and BlueDragon as an alternative to CF and LiveCycle.  

 Do I prefer one over the other?  No, I don&apos;t.  I&apos;ve use WebORB when dealing with .NET development and the CF Server (Which has LCDS under the hood) for dealing with web applications.  

 The benefit to AMF over XML is that the data passed back and forth is smaller, leading to less bandwidth and quicker load times.  However,I haven&apos;t done any serious AJAX Development.  I do know that WebORB has AJAX support.  I was aware of &lt;A href=&quot;http://labs.adobe.com/wiki/index.php/Ajax_Data_Services&quot;&gt;AJAX Data Services&lt;/a&gt;, but never used that either.  I am not aware of any AJAX AMF implementations, so I thought that both WebORB and AJAX Data Services used different protocols for non-Flash player communications.  

 In terms of Comet or Lightstreamer; I never heard of them before now so cannot comment.  Anyone out there want to add their two cents? 

 A quick reminder to everyone, I love answering people&apos;s questions (even though I get busy sometime).  &lt;a href=&quot;http://www.jeffryhouser.com/contact.cfm&quot;&gt;Feel free to ask one&lt;/a&gt;! 
				</description>
				
				<category>Flex</category>				
				
				<category>Professional</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Tue, 27 May 2008 14:01:00 -0400</pubDate>
				<guid>http://www.jeffryhouser.com/index.cfm/2008/5/27/Why-use-WebORB</guid>
				<author>info@theflexshow.com (Jeffry Houser and John Wilker)</author>
				
				
			</item>
			
			<item>
				<title>Using ColdFusion to create an Encryption / Decryption Key from Plain Text</title>
				<link>http://www.jeffryhouser.com/index.cfm/2008/5/13/Using-ColdFusion-to-create-an-Encryption--Decryption-Key-from-Plain-Text</link>
				<description>
				
				I have been doing work with Encrypting something in ColdFusion and decrypting it in ColdFusion.  &lt;A href=&quot;http://www.jeffryhouser.com/index.cfm/2007/12/6/Encrypt-in-Flex-and-Decrypt-in-ColdFusion&quot;&gt;I&apos;ve wrote about these experiments before&lt;/a&gt;.  I&apos;ve been trying to figure out the best way to create a key.  

 In ColdFusion I could easily use the &lt;A href=&quot;http://www.cfquickdocs.com/?getDoc=GenerateSecretKey&quot;&gt; GenerateSecretKey&lt;/a&gt; function.  However, if I do that, how would I pass that key to Flex?  It would have to be hard coded in some manner into the Flex Component that needed the encryption algorithm. 

 What I wanted was a way to generate the key on the fly. Flex and ColdFusion could both use the same algorithm for generating the key, and as long as I passed it appropriate parameters it would generate the same key, thus allowing Flex to decrypt something that was encrypted in ColdFusion.

 So, how do you do it?

 A 128 bit key is needed.  This turns into 16 text characters.  So, I started like this:

&lt;code&gt;
&lt;cffunction name=&quot;generateEncryptionKey&quot; access=&quot;private&quot; output=&quot;true&quot; returntype=&quot;string&quot;&gt;
 &lt;cfset var HexKey = &quot;&quot;&gt;
 &lt;cfset var Filler = &quot;abcdefghijklmnop&quot;&gt;
 &lt;cfset var keyInText = &quot;&quot;&gt;

&lt;/code&gt;

 This is a function definition.  It defines 3 local variables, one is HexKey.  This will be the key, in hex, that we return from the function.  The next variable is filler.  If our algorithm generates a key that is less than 16 characters, we&apos;ll want to pad it.  The final local variable is the keyInText.  This will be the text representation of the key.

&lt;code&gt;
 Write some algorithm to generate a key here.
&lt;/code&gt;

 It wouldn&apos;t be appropriate for me to share the algorithm we are using for key generation.  But, the next chunk of code would generate it based on some factors that can be determined on the server in CF and on the Flex client.

&lt;code&gt;
&lt;cfif len(keyInText) LT 16&gt;
 &lt;cfset keyInText = keyInText &amp; Filler&gt;
&lt;/cfif&gt;

&lt;cfset keyInText = left(keyInText,16)&gt;

&lt;/code&gt; 

 IF the key is less than 16 characters, it adds in the filler.  Then it truncates the key, removing all but the first 16 characters.  We now have a 16 character key, no matter what the results of our &quot;dynamically generate a key&quot; algorithm.

&lt;code&gt;
 &lt;cfset HexKey = stringToHex(keyInText)&gt;
&lt;/code&gt; 

 Next we turn the text key into Hex.  I&apos;m using the &lt;A href=&quot;http://www.cflib.org/udf.cfm?id=1424&quot;&gt;stringToHex&lt;/a&gt; function from cflib to do this.  

&lt;code&gt;
 &lt;cfreturn ToBase64(BinaryDecode(HexKey, &quot;Hex&quot;))&gt;
&lt;/cffunction&gt;
&lt;/code&gt;
 
 And finally, we decode the key, base64 it, and pass it out of the function, ready to be used with ColdFusion&apos;s &lt;A href=&quot;http://www.cfquickdocs.com/?getDoc=Encrypt&quot;&gt;Encrypt&lt;/a&gt; or &lt;A href=&quot;http://www.cfquickdocs.com/?getDoc=Decrypt&quot;&gt;Decrypt&lt;/a&gt; functions.

 I&apos;m undecided on the wisdom in an approach like this.  When sharing between systems in the past, I have used a hard-coded key that was pre-generated for the purposes of sharing.  Is a &quot;semi-random&quot; key generator more or less secure than a hard coded key that was randomly generated?  

 Discuss amongst yourselves! 
				</description>
				
				<category>Flex</category>				
				
				<category>Professional</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Tue, 13 May 2008 11:00:00 -0400</pubDate>
				<guid>http://www.jeffryhouser.com/index.cfm/2008/5/13/Using-ColdFusion-to-create-an-Encryption--Decryption-Key-from-Plain-Text</guid>
				<author>info@theflexshow.com (Jeffry Houser and John Wilker)</author>
				
				
			</item>
			
			<item>
				<title>Variable Modifiers in Flex vs ColdFusion CFC Scopes</title>
				<link>http://www.jeffryhouser.com/index.cfm/2008/4/3/Variable-Modifiers-in-Flex-vs-ColdFusion-CFC-Scopes</link>
				<description>
				
				Coming from ColdFusion, it can take a while to get your head around the different variable modifiers in Flex and what you use them for.  I thought I&apos;d devote some time to explaining them in relation to CFCs.

 Here are the most common ones that you use:

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;A href=&quot;http://livedocs.adobe.com/flex/201/langref/statements.html#public&quot;&gt;Public&lt;/a&gt;&lt;/strong&gt;: A public variable, or method is one that can be accessed by any class using this one.  In a CFC, this would be equivalent to the &apos;this&apos; scope.  For CFC methods, public is the default setting.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;A href=&quot;http://livedocs.adobe.com/flex/201/langref/statements.html#protected&quot;&gt;Protected&lt;/a&gt;&lt;/strong&gt;: Protected variables or methods in AS3 are only available within the class or in classes that extend from this one.  In a CFC, this would be equivalent to the variables scope.  For CFC Methods you can set the access to private.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;A href=&quot;http://livedocs.adobe.com/flex/201/langref/statements.html#private&quot;&gt;Private&lt;/a&gt;&lt;/strong&gt;: Private variables, or methods, are only available in the class that defines it.  Nothing from the outside, or a class that extends this one can access or change this variable.  There is no parallel to this in ColdFusion CFCs.  If you truly need something private, most people use the &quot;this&quot; Scope for variables or &apos;private&apos; for methods.  Is it 
confusing that CFC &quot;Private&quot; is really AS3 &quot;Protected&quot;?  It might be.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;A href=&quot;http://livedocs.adobe.com/flex/201/langref/statements.html#internal&quot;&gt;Internal&lt;/a&gt;&lt;/strong&gt;: I&apos;ll admit these aren&apos;t all that common, but since there was an easy parallel  I put it in the common list.  In AS3, internal methods are accessible in the class and in other classes in the package.  A package is just a bunch of classes in the same directory.  My memory is that internal classes are available to subclasses too, although the documentation does not state that.  I spoke about Internal methods in &lt;A href=&quot;http://www.jeffryhouser.com/index.cfm/2007/11/6/How-do-I-create-Package-Methods-in-Flex&quot;&gt;another post&lt;/a&gt;.  In ColdFusion, you should use 
&quot;access=package&quot; For methods; however there is no parallel for variables; you&apos;re stuck with the this scope.&lt;/li&gt;
&lt;/ul&gt;

 There are other access modifiers that you can use, but most of them don&apos;t have a parallel between ColdFusion and Flex.  Let&apos;s talk about them:

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Remote&lt;/strong&gt;: Remote is a ColdFusion method modifier.  IT makes the method available for remote access, such as via a Web Service.  This just doesn&apos;t apply to Flex code, because you won&apos;t be using AS3 to write an API for consumption by some remote consumer.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;A href=&quot;http://livedocs.adobe.com/flex/201/langref/statements.html#static&quot;&gt;static&lt;/a&gt;&lt;/strong&gt;: Static variables or methods belong to the class. You call them on the class, not on an instance of the class.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;A href=&quot;http://livedocs.adobe.com/flex/201/langref/statements.html#final&quot;&gt;Final&lt;/a&gt;&lt;/strong&gt;: Final tells you that a method cannot be overriden by subclasses.  It is a &quot;Buck stops here&quot; command, so to speak.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;A href=&quot;http://livedocs.adobe.com/flex/201/langref/statements.html#override&quot;&gt;override&lt;/a&gt;&lt;/strong&gt;: The override qualifer is used only in subclasses, and only for methods. It tells you Flex that this method is a replacement for the one in a parent class. &lt;/li&gt;
&lt;/ul&gt;

 ColdFusion doesn&apos;t support any CFC level modifiers, but AS3 does support one, the &lt;A href=&quot;http://livedocs.adobe.com/flex/201/langref/statements.html#dynamic&quot;&gt;dynamic attribute&lt;/a&gt;.  You&apos;ll use dynamic if you want to add properties to the class at runtime.  To be honest, I&apos;ve never had the need for this in a production environment; 
can anyone expand on the use case for this?

 I feel like I&apos;ve been doing a lot of &quot;list&quot; posts lately, so next time I resolve to get back to code!

 Also a quick reminder, there are only a few more days to apply for the DotComIt focus group.  You can read more about it &lt;A href=&quot;http://www.jeffryhouser.com/index.cfm/2008/3/26/Join-a-DotComIt-Focus-Group-Get-50&quot;&gt;here&lt;/a&gt; or just jump right to the &lt;a href=&quot;http://www.dot-com-it.com/survey&quot;&gt;survey here&lt;/a&gt;. 
				</description>
				
				<category>Flex</category>				
				
				<category>Professional</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Thu, 03 Apr 2008 11:00:00 -0400</pubDate>
				<guid>http://www.jeffryhouser.com/index.cfm/2008/4/3/Variable-Modifiers-in-Flex-vs-ColdFusion-CFC-Scopes</guid>
				<author>info@theflexshow.com (Jeffry Houser and John Wilker)</author>
				
				
			</item>
			
			<item>
				<title>How do you find me on the Internet?</title>
				<link>http://www.jeffryhouser.com/index.cfm/2008/2/14/How-do-you-find-me-on-the-Internet</link>
				<description>
				
				&lt;b&gt;Note&lt;/b&gt;: Update 1/15/2010 

If you want to stay on top of what I&apos;m currently doing or if you ever need to contact me, here are a few ways that you can do it:

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;My Personal Blog&lt;/strong&gt;: If you&apos;re reading this, then you probably know about &lt;A href=&quot;http://www.jeffryhouser.com&quot;&gt;my blog&lt;/a&gt;.  Various categories of the blog are syndicated to &lt;a href=&quot;http://syndicated.livejournal.com/jeffhouser/&quot;&gt;LiveJournal&lt;/a&gt; (Just my personal Feed), &lt;a href=&quot;http://weblogs.macromedia.com/&quot;&gt;MXNA&lt;/a&gt; (Flex and ColdFusion feeds), &lt;a href=&quot;http://www.fullasagoog.com/&quot;&gt;FullAsAGoog&lt;/a&gt; (Flex and ColdFusion Feeds), &lt;a href=&quot;http://www.coldfusionbloggers.org/&quot;&gt;ColdFusion Bloggers&lt;/a&gt; (ColdFusion Feed), &lt;a href=&quot;http://www.feed-squirrel.com/&quot;&gt;Feed Squirrel&lt;/a&gt; (Flex and ColdFusion Feeds), and &lt;a href=&quot;http://www.allyourflexarebelongtous.com/&quot;&gt;All Your Flex Are Belong to US&lt;/a&gt; (Flex Feed).  My feed on Adobe AIR could be syndicated at some of these places, but my memory is hazy on such issues.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Flex Show&lt;/strong&gt; I produce a podcast focused on Adobe Flex called &lt;A href=&quot;http://www.theflexshow.com&quot;&gt;The Flex Show&lt;/a&gt;.  My co-host is &lt;A href=&quot;http://www.johnwilker.com&quot;&gt;John Wilker&lt;/a&gt; of &lt;A href=&quot;http://www.360flex.org&quot;&gt;360Flex fame&lt;/a&gt;.  We interview people in the Flex Developer community and sometimes run down a list of interesting news items.  
&lt;br/&gt;
&lt;b&gt;Update&lt;/b&gt;: The Flex Show has a &lt;A href=&quot;http://www.twitter.com/theflexshow&quot;&gt;twitter account here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Twitter&lt;/strong&gt;: Mini Blogging for the Web 2.0 age.  You can find my &lt;A href=&quot;http://www.twitter.com/reboog711&quot;&gt;twitter account here&lt;/a&gt;.    &lt;strike&gt;I use the IM client which has been real flakey these days, so most of my twittering is to complain about it.&lt;/strike&gt;. 
&lt;br/&gt;
&lt;b&gt;Update&lt;/b&gt;: I use twitter all the time&lt;br /&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strike&gt;&lt;strong&gt;ColdFusion Community&lt;/strong&gt;: A Social networking site for ColdFusion Developers, created using the &lt;A href=&quot;http://www.ning.com&quot;&gt;Ning network&lt;/a&gt;. &lt;A href=&quot;http://www.coldfusioncommunity.org/profile/JeffryHouser&quot;&gt;Find my page here&lt;/a&gt;&lt;/strike&gt;
&lt;br /&gt;&lt;b&gt;Update&lt;/b&gt;: I rarely use this site.&lt;br /&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strike&gt;&lt;strong&gt;Flexcursion&lt;/strong&gt; FlexCursion is another ning network designed for Flex Developers.  &lt;A href=&quot;http://flexcursion.ning.com/profile/JeffryHouser&quot;&gt;Here is my account&lt;/a&gt;&lt;/strike&gt;
&lt;br /&gt;&lt;b&gt;Update&lt;/b&gt;: I rarely use this site.&lt;br /&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DotComIt&lt;/strong&gt;: I own a Premium Adobe Solutions parter named &lt;A href=&quot;http://www.dot-com-it.com&quot;&gt;DotComIt&lt;/a&gt;.  We specialize in RIA Development with Flex and ColdFusion and have been in business for  10 years and counting.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Update&lt;/b&gt;:  &lt;br/&gt; 
&lt;strong&gt;Flextras&lt;/strong&gt;: DotComIt launched a line of &lt;a href=&quot;http://www.flextras.com&quot;&gt;user interface Flex Components&lt;/a&gt; under the name of Flextras.  It is our main focus moving into 2010.  Check them out or follow us &lt;a href=&quot;http://www.twitter.com/flextras/&quot;&gt;on twitter&lt;/a&gt; or on &lt;a href=&quot;http://www.meetup.com/flextras/&quot;&gt;meetup.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt; &lt;/li&gt;
&lt;li&gt;&lt;b&gt;Update&lt;/b&gt;:  &lt;br/&gt; 
&lt;strong&gt;Facebook&lt;/strong&gt;: I finally joined &lt;A href=&quot;http://www.facebook.com/reboog711&quot;&gt;Facebook&lt;/a&gt;, and am consistently 30-50 friends behind my wife; so feel free to connect with me.&lt;br /&gt;&lt;br /&gt; &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IM Accounts&lt;/strong&gt;:  It&apos;s not uncommon for people to contact me for questions via Instant Messaging.  I&apos;m Reboog711 on AIM, Gtalk, &lt;strike&gt;and Yahoo.  I don&apos;t use Yahoo any more because of so much IM Spam, though.&lt;/strike&gt;  I don&apos;t mind the questions, but please respect my time.
&lt;br/&gt; &lt;b&gt;Update&lt;/b&gt;: I don&apos;t use Yahoo Messenger at all. &lt;br /&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Adobe Community Expert&lt;/strong&gt;: &lt;a href=&quot;http://groups.adobe.com/people/bff098a4aa&quot;&gt;My Bio&lt;/a&gt; is finally up on the Adobe Community Expert Site.  &lt;strike&gt;Reading it in retrospect, I think I need to make some minor modifications for consistency.  Sometimes I listed links with &apos;http&apos; other times I don&apos;t.&lt;/strike&gt;
&lt;br/&gt; &lt;b&gt;Update&lt;/b&gt;: Lots of weird styles and html in that bio; I wonder if that is my fault or due to Adobe Groups. &lt;br /&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strike&gt;&lt;strong&gt;Pownce&lt;/strong&gt;: You can find me on pownce &lt;A href=&quot;http://pownce.com/reboog711/&quot;&gt;over here&lt;/a&gt;.  I rarely use the account, though.&lt;/strike&gt;
&lt;Br /&gt;&lt;b&gt;Update&lt;/b&gt;: Pownce was shut down.&lt;br /&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LinkedIn&lt;/strong&gt;: I have a &lt;a href=&quot;http://www.linkedin.com/in/jeffryhouser&quot;&gt;LinkedIn account&lt;/a&gt;.  LinkedIn is a professional networking site.  I&apos;m very protective of my LinkedIn network, so do not try to add me unless we have a previous relationship of some sort.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;E-mail&lt;/strong&gt;:  I&apos;m not foolish enough to post my e-mail address directly to a web page, but you can contact me through the contact forms on my various web sites &lt;a href=&quot;http://www.jeffryhouser.com/contact.cfm&quot;&gt;here&lt;/a&gt;, or &lt;A href=&quot;http://www.dot-com-it.com/contacti.cfm&quot;&gt;here&lt;/a&gt;, or &lt;A href=&quot;http://www.theflexshow.com/contact/contact.cfm&quot;&gt;here&lt;/a&gt;.  I love to blog about questions that you have, so I encourage you to contact me and ask.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;

 And there you have it.  I wasn&apos;t sure where to categorize this post, but decided to select the syndication categories. 
				</description>
				
				<category>Personal</category>				
				
				<category>Flex</category>				
				
				<category>Jeff Stuff</category>				
				
				<category>Professional</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Thu, 14 Feb 2008 10:35:00 -0400</pubDate>
				<guid>http://www.jeffryhouser.com/index.cfm/2008/2/14/How-do-you-find-me-on-the-Internet</guid>
				<author>info@theflexshow.com (Jeffry Houser and John Wilker)</author>
				
				
			</item>
			
			<item>
				<title>Why can&apos;t I access ColdFusion session variables in the Missing Template Handler?</title>
				<link>http://www.jeffryhouser.com/index.cfm/2008/1/24/Why-cant-I-access-ColdFusion-session-variables-in-the-Missing-Template-Handler</link>
				<description>
				
				This question comes from Sean, and is about ColdFusion.  I spend so much time in Flex, these questions have .

&lt;code&gt;
Is it possible to access Session variables from within the Missing Template Handler (404) ColdFusion page?
&lt;/code&gt;

In true spirit of questions, Sean found the answer before I even read his original question

&lt;code&gt;
I had to place a &lt;cfinclude template=&quot;/Application.cfm&quot;&gt; at the top of the missing template handler to include the Application.cfm for the domain... once I did this, everything started working.
&lt;/code&gt;

 My explanation of this is that session variables are tied to the application name.  The application name is defined using the cfapplication tag or as an instance variable in the Application.cfc.  Without the cfapplication letting the request know which application the request has access to and whether or not session variables are enabled; you can&apos;t access the session scope.  

 I&apos;m not sure why the missing template handler doesn&apos;t automatically run the Application.cfm (or cfc), though.  Can anyone elaborate on that one?  

 Thanks for Sean to inadvertently reminding me to Blog today. 
				</description>
				
				<category>Professional</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Thu, 24 Jan 2008 13:44:00 -0400</pubDate>
				<guid>http://www.jeffryhouser.com/index.cfm/2008/1/24/Why-cant-I-access-ColdFusion-session-variables-in-the-Missing-Template-Handler</guid>
				<author>info@theflexshow.com (Jeffry Houser and John Wilker)</author>
				
				
			</item>
			
			<item>
				<title>Filtering a Soundings Survey Part 2</title>
				<link>http://www.jeffryhouser.com/index.cfm/2008/1/22/Filtering-a-Soundings-Survey-Part-2</link>
				<description>
				
				&lt;A href=&quot;http://www.dot-com-it.com&quot;&gt;DotComIt&lt;/a&gt;, my company, was a sponsor at &lt;a href=&quot;http://www.flexcampboston.com&quot;&gt;Flex Camp Boston&lt;/a&gt; last month and collected a bunch of &quot;market research&quot; type of data.  To collect the data I used &lt;A href=&quot;http://soundings.riaforge.org/&quot;&gt;Soundings&lt;/a&gt;, a free open source survey utility from ColdFusion&apos;s open source guru, &lt;a href=&quot;http://www.coldfusionjedi.com/projects/projects.cfm&quot;&gt;Ray Camden&lt;/a&gt;.  

 After entering all the data (not a fun job), I realized that Soundings was lacking in the reporting area, so I set out to expand the reporting capabilities of the project.  You can read my first &lt;a hyref=&quot;http://www.jeffryhouser.com/index.cfm?mode=entry&amp;entry=D39412D7-65B3-D59C-436E7AA7AA995986&quot;&gt;entry here&lt;/a&gt; where I create a template designed for collecting the information we wanted to use to filter the survey.  

 The form is passing a form field named &quot;QuestionXX&quot; and the value is the AnswerID.  We are also passing the question type in a form field named &quot;QuestionTypeXX&quot;.  We need to take that data and turn it into a list of users who gave that answer.  I wrote a UDF to do just that and put my UDF into the &quot;includes/udf.cfm&quot; file.  Let&apos;s look at that UDF:

&lt;code&gt;
&lt;cffunction name=&quot;getOwnerIDs&quot; returntype=&quot;String&quot; description=&quot;I figure out which OwnerIDs fit the selected filter criteria&quot;&gt;
 &lt;cfset var qGetOwnerIDs = &quot;&quot;&gt;
 &lt;Cfset var tempListIndex = &quot;&quot;&gt;
 &lt;cfset var MyResults = &quot;&quot;&gt;

 &lt;cfset var finalresults = &quot;&quot;&gt;
 &lt;cfset var questiontype = &quot;&quot;&gt;
 &lt;cfset var YesNoList = &quot;&quot;&gt;
 &lt;cfset var YesNoListItem = &quot;&quot;&gt;

&lt;/code&gt;

 The preceding segment is the function header, and a bunch of local variables are defined.  Pretty boring.

&lt;code&gt;
&lt;cfloop list=&quot;#form.fieldnames#&quot; index=&quot;tempListIndex&quot;&gt;
 &lt;cfif Left(tempListIndex,len(tempListIndex)-2) is &quot;question&quot;&gt;
&lt;/code&gt;

 This segment loops over all the form fields.  If the form field is named questionXX then we want to process it.  In retrospect, I guess this won&apos;t work if you number your questions using single digits, or triple digits.  

&lt;code&gt;
&lt;cfset questiontype = form[&quot;questiontype#right(tempListIndex,2)#&quot;]&gt;
 &lt;cfswitch expression=&quot;#questiontype#&quot;&gt;
				
  &lt;cfcase value=&quot;multiplechoice,multiplechoicemulti,multiplechoicemultiother,multiplechoiceother&quot;&gt;

&lt;/code&gt;

We found a question, so let&apos;s get the ownerIDs.  But, the way we get ownerIDs is different depending on the type of question, so we enter into a case statement based on the question type:

&lt;code&gt;
&lt;cfquery name=&quot;qGetOwnerIDs&quot; datasource=&quot;#application.settings.dsn#&quot; result=&quot;MyResults&quot;&gt;
 select distinct #application.settings.tableprefix#survey_results.ownerid 
 from #application.settings.tableprefix#survey_results join #application.settings.tableprefix#results on 
(#application.settings.tableprefix#survey_results.ownerid = #application.settings.tableprefix#results.owneridfk ) 
 join #application.settings.tableprefix#questions on (#application.settings.tableprefix#results.questionidfk = #application.settings.tableprefix#questions.id)
 where 
(#application.settings.tableprefix#questions.rank = #right(tempListIndex,2)# and 
#application.settings.tableprefix#results.answeridfk in (#ListQualify(form[tempListIndex],&quot;&apos;&quot;)#) )
&lt;/cfquery&gt;
&lt;/cfcase&gt;
&lt;/cfswitch&gt;
&lt;/code&gt;

Complicated looking query, I know.  You&apos;ll have to believe me when I say it works. :-)  I created a case entry, and query, for each question type I cared about filtering; but I&apos;ll keep this blog post to that one.  This finishes off the function:

&lt;code&gt;
&lt;cfif finalresults neq &quot;&quot;&gt;
 &lt;cfset finalresults = ListInCommon(finalresults,ValueList(qGetOwnerIDs.ownerid))&gt;
&lt;cfelse&gt;
 &lt;cfset finalresults = ValueList(qGetOwnerIDs.ownerid)&gt;
&lt;/cfif&gt;	
&lt;/cfif&gt;

&lt;/cfloop&gt;
	
&lt;cfreturn finalresults&gt;

&lt;/cffunction&gt;

&lt;/code&gt;

 If this is the first result set, we take it.  If we already had a result set, we use the &lt;a href=&quot;http://www.cflib.org/udf.cfm?ID=169&quot;&gt;ListInCommon function&lt;/a&gt; to remove items that were not in both result sets.  This, in effect, forces our filtered results to always use the &quot;AND&quot; operator; which was fine for my purposes.  

 Then we end the loop, return the results, and end the function.  Simple enough, right?

Back to the main stats page, first call the function to get the IDs, like this:
&lt;code&gt;
&lt;cfset filterIDs = getOwnerIDs()&gt;
&lt;/code&gt;

When we run the stats for each question type, we need to pass in those IDs:

&lt;code&gt;
&lt;cfmodule template=&quot;../handlers/#handlerRoot#/stats.cfm&quot; 
 surveyidfk=&quot;#form.surveyidfk#&quot;
 questionidfk=&quot;#id#&quot;
 r_data=&quot;data&quot; 
 ownerIDs=&quot;#filterIDs#&quot;
/&gt;
&lt;/code&gt;

HandlerRoot is part of the question and tells us where to go to find that questions individual handlers.  I modified each relevant stats.cfm.  I&apos;ll take a look at the multiplechoices/stats.cfm; which is called as a custom tag:

&lt;Code&gt;
&lt;cfparam name=&quot;attributes.questionidfk&quot;&gt;
&lt;cfparam name=&quot;attributes.r_data&quot; type=&quot;variablename&quot;&gt;
&lt;cfparam name=&quot;attributes.other&quot; default=&quot;false&quot;&gt;
&lt;cfparam name=&quot;attributes.getother&quot; default=&quot;false&quot;&gt;
&lt;cfparam name=&quot;attributes.ownerIDs&quot; default=&quot;&quot;&gt;
&lt;/code&gt;
 These are all the default arguments; I only added the new ownerID attribute.

&lt;code&gt;
&lt;cfif not attributes.getother&gt;

 &lt;cfset data = structNew()&gt;
	
 &lt;!--- get my answer data ---&gt;
 &lt;cfset answers = application.question.getAnswers(attributes.questionidfk)&gt;
&lt;/code&gt;

I made no changes here; this just checks to see if we want to get the &apos;other&apos; responses [or not] and then retrieves the possible answers.  

&lt;code&gt;
&lt;cfquery name=&quot;getcount&quot; datasource=&quot;#application.settings.dsn#&quot;&gt;
 select	count(answeridfk) as total
 from	#application.settings.tableprefix#results
 where	answeridfk = &lt;cfqueryparam cfsqltype=&quot;CF_SQL_VARCHAR&quot; maxlength=&quot;35&quot; value=&quot;#id#&quot;&gt;
 &lt;cfif attributes.ownerIDs neq &quot;&quot;&gt;
  and owneridfk in (#ListQualify(attributes.ownerIDs,&quot;&apos;&quot;)#)
 &lt;/cfif&gt;
&lt;/cfquery&gt;
&lt;/code&gt;

This is the query.  I added the condition.  If we passed in ownerIDs, then we use them to filter the query results.  Otherwise, we keep things as they were.  

&lt;code&gt;
&lt;cfif getcount.recordCount&gt;	
 &lt;cfset data[id] = getcount.total&gt;
&lt;cfelse&gt;
 &lt;cfset data[id] = 0&gt;
&lt;/cfif&gt;
&lt;/cfloop&gt;
&lt;/code&gt;

This saves the totals, if anything was returned.  

&lt;code&gt;
&lt;cfif attributes.other&gt;
	
 &lt;cfquery name=&quot;getother&quot; datasource=&quot;#application.settings.dsn#&quot;&gt;
  select 	count(other) as totalother
  from	#application.settings.tableprefix#results
  where	questionidfk = &lt;cfqueryparam cfsqltype=&quot;CF_SQL_VARCHAR&quot; maxlength=&quot;35&quot; value=&quot;#attributes.questionidfk#&quot;&gt;
  and		answeridfk is null
  &lt;cfif attributes.ownerIDs neq &quot;&quot;&gt;
   and owneridfk in (#ListQualify(attributes.ownerIDs,&quot;&apos;&quot;)#)
  &lt;/cfif&gt;
 &lt;/cfquery&gt;

 &lt;cfif getother.recordCount&gt;
  &lt;cfset data.other = getother.totalother&gt;
 &lt;cfelse&gt;
  &lt;cfset data.other = 0&gt;
 &lt;/cfif&gt;	
	
&lt;/cfif&gt;
&lt;/code&gt;

Then we grab the number of other values.  It&apos;s another query with the same ownerID filtering code.

&lt;code&gt;
&lt;cfelse&gt;
 &lt;cfquery name=&quot;data&quot; datasource=&quot;#application.settings.dsn#&quot;&gt;
 select	other
 from	#application.settings.tableprefix#results
 where	questionidfk = &lt;cfqueryparam cfsqltype=&quot;CF_SQL_VARCHAR&quot; maxlength=&quot;35&quot; value=&quot;#attributes.questionidfk#&quot;&gt;
 and answeridfk is null
 &lt;cfif attributes.ownerIDs neq &quot;&quot;&gt;
  and owneridfk in (#ListQualify(attributes.ownerIDs,&quot;&apos;&quot;)#)
 &lt;/cfif&gt;
&lt;/cfquery&gt;
	
&lt;/cfif&gt;
&lt;/code&gt;

This ends of the first if statement.  If we dont&apos; care about getting the other data, then we run the query without it.  This query has the same ownerID filtering change.  

&lt;code&gt;
&lt;cfset caller[attributes.r_data] = data&gt;				
&lt;cfsetting enablecfoutputonly=false&gt;

&lt;cfexit method=&quot;exittag&quot;&gt;
&lt;/code&gt;

Finally, we pass the data back out of the tag and exit.  It works well.  I modified all the individual stat files to do, in essence, the same exact thing.  Once you modify the results, the display code doesn&apos;t need any changes.  

 And that&apos;s how I did it! 
				</description>
				
				<category>Professional</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Tue, 22 Jan 2008 12:58:00 -0400</pubDate>
				<guid>http://www.jeffryhouser.com/index.cfm/2008/1/22/Filtering-a-Soundings-Survey-Part-2</guid>
				<author>info@theflexshow.com (Jeffry Houser and John Wilker)</author>
				
				
			</item>
			
			<item>
				<title>CF101 Archive: July 2004 What&apos;s the Best Approach to Software Development</title>
				<link>http://www.jeffryhouser.com/index.cfm/2007/12/14/CF101-Archive-July-2004-Whats-the-Best-Approach-to-Software-Development</link>
				<description>
				
				&lt;b&gt;Disclaimer&lt;/b&gt;: This article is being reposted in accordance to my contract with sys-con.  I had them change the default contract so that I could post articles on my personal site.

 This is the sixth article I wrote for my beginner&apos;s column in the ColdFusion Developer&apos;s Journal.  I&apos;m not quite sure if the title is mine, or something sys-con created.  The focus is really a high level overview of different software development life cycles and talks about my approach.  These days, I often push a &quot;rapid prototype&quot; into the requirements phase, instead of in a design phase.  I can tell based on my writing that I had my college text books open while I wrote the first half of the article.

 In this article I talk about putting a lot of code in a single template vs separating them out.  From page 3 of the PDF:
&lt;code&gt;
I&apos;ve worked on sites that have tried to put a lot of the functionality into a single template, such as create, edit, and delete. I&apos;ve had much better luck maintaining templates that don&apos;t do everything in a single template. There&apos;s also less processing because you don&apos;t have to figure out which &quot;actions&apos; of the template you&apos;re supposed to be executing. Using this method can make code less portable than having everything in a single template. If consistent naming conventions are used, this is rarely a problem.
&lt;/code&gt;

 This is really a good description of how I view software development, and is one of the reasons I&apos;ve never been an avid fan of Fusebox or Model Glue.  I prefer many short &quot;to the point&quot; templates over a single big all encompassing one.

 I&apos;ll be releasing articles, once a week, on Friday around noon until I&apos;m out of articles.  It should take 30 weeks or so, and make for good lunch time reading at the end of the week.  By my count, I have 29 articles remaining to post. 
				</description>
				
				<category>Writing and Presenting</category>				
				
				<category>Professional</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Fri, 14 Dec 2007 14:01:00 -0400</pubDate>
				<guid>http://www.jeffryhouser.com/index.cfm/2007/12/14/CF101-Archive-July-2004-Whats-the-Best-Approach-to-Software-Development</guid>
				<author>info@theflexshow.com (Jeffry Houser and John Wilker)</author>
				
				
				<enclosure url="http://www.jeffryhouser.com/download.cfm/id/D910A7D7-65B3-D59C-417B76FD4B9063FB/2004 07 The Best Approach to Software Development.pdf" length="154092" type="application/pdf"/>
				
			</item>
			</channel></rss>