<?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>Brian Kotek: Inversion of Control - ColdFusion</title>
			<link>http://www.briankotek.com/blog/index.cfm</link>
			<description>Brian Kotek on ColdFusion, Flex, AIR, Java, Groovy, Design Patterns, and Object-Oriented Programming</description>
			<language>en-us</language>
			<pubDate>Tue, 07 Sep 2010 10:54:36 -0700</pubDate>
			<lastBuildDate>Mon, 01 Mar 2010 11:25:00 -0700</lastBuildDate>
			<generator>BlogCFC</generator>
			<docs>http://blogs.law.harvard.edu/tech/rss</docs>
			<managingEditor>brian428@briankotek.com</managingEditor>
			<webMaster>brian428@briankotek.com</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></itunes:author>
			<itunes:owner>
				<itunes:email>brian428@briankotek.com</itunes:email>
				<itunes:name></itunes:name>
			</itunes:owner>
			
			<itunes:explicit>no</itunes:explicit>
			
			
			
			
			
			<item>
				<title>ColdFusion 9 Article at Techrepublic.com</title>
				<link>http://www.briankotek.com/blog/index.cfm/2010/3/1/ColdFusion-9-Article-at-Techrepubliccom</link>
				<description>
				
				Just a quick note that I&apos;ve had an &lt;a href=&quot;http://blogs.techrepublic.com.com/programming-and-development/?p=2291&quot; target=&quot;_blank&quot;&gt;article on ColdFusion 9&lt;/a&gt; published over at CNET TechRepublic.com. It probably won&apos;t tell anyone who reads my blog much that they don&apos;t already know, but I hope that it attracts the attention of those outside of the core CF community!
				
				</description>
				
				
				<category>ColdFusion</category>
				
				<pubDate>Mon, 01 Mar 2010 11:25:00 -0700</pubDate>
				<guid>http://www.briankotek.com/blog/index.cfm/2010/3/1/ColdFusion-9-Article-at-Techrepubliccom</guid>
				
				
			</item>
			
		 	
			
			
			<item>
				<title>More on CF9 ORM Relationships</title>
				<link>http://www.briankotek.com/blog/index.cfm/2009/12/21/More-on-CF9-ORM-Relationships</link>
				<description>
				
				My entry late last week on &lt;a href=&quot;http://www.briankotek.com/blog/index.cfm/2009/12/16/Bidirectional-Association-Management-in-ColdFusion-9-ORM&quot; target=&quot;_blank&quot;&gt;association management methods&lt;/a&gt; prompted a number of comments. I was going to add another comment but this became quite long so instead I&apos;m adding another blog entry.

The point of my last post was to talk about bidirectional relationships, particularly a one-to-many/many-to-one between two entities. Hibernate (and, thus, the CF9 ORM) has the ability to specify an &quot;inverse&quot; attribute on your relationship. To better show why you usually want to do this, let&apos;s look at an example.
				 [More]
				</description>
				
				
				<category>ColdFusion</category>
				
				<category>OOP CF</category>
				
				<category>Object-Relational Mapping</category>
				
				<pubDate>Mon, 21 Dec 2009 13:07:00 -0700</pubDate>
				<guid>http://www.briankotek.com/blog/index.cfm/2009/12/21/More-on-CF9-ORM-Relationships</guid>
				
				
			</item>
			
		 	
			
			
			<item>
				<title>Bidirectional Association Management in ColdFusion 9 ORM</title>
				<link>http://www.briankotek.com/blog/index.cfm/2009/12/16/Bidirectional-Association-Management-in-ColdFusion-9-ORM</link>
				<description>
				
				And to follow up on my recent pledge to start blogging further about ORM, lets jump right into a recent topic. A thread on the CF-ORM mailing list brought up the topic of &lt;a href=&quot;http://groups.google.com/group/cf-orm-dev/browse_thread/thread/4320cc207bc8df53?hl=en&quot; target=&quot;_blank&quot;&gt;dealing with a bidirectional relationship&lt;/a&gt;.
				 [More]
				</description>
				
				
				<category>ColdFusion</category>
				
				<category>OOP CF</category>
				
				<category>Object-Relational Mapping</category>
				
				<pubDate>Wed, 16 Dec 2009 10:36:00 -0700</pubDate>
				<guid>http://www.briankotek.com/blog/index.cfm/2009/12/16/Bidirectional-Association-Management-in-ColdFusion-9-ORM</guid>
				
				
			</item>
			
		 	
			
			
			<item>
				<title>Iterator on RIAForge, and Updates to FormUtils and ColdSpring Utils</title>
				<link>http://www.briankotek.com/blog/index.cfm/2009/12/16/Iterator-on-RIAForge-and-Updates-to-FormUtils-and-ColdSpring-Uti</link>
				<description>
				
				The blog has been quiet lately, but that should be changing now that I&apos;m finally doing some real work with ColdFusion 9! In the meantime, I&apos;ve committed a few minor updates to some RIAForge projects, and added a new one.

The new project is &lt;a href=&quot;http://collectioniterator.riaforge.org/&quot; target=&quot;_blank&quot;&gt;Collection Iterator&lt;/a&gt;. This is simply a CFC that allows you to iterate the same way over queries, lists, structures, or arrays. The syntax is simple:

&lt;code&gt;
var array = [&apos;foo&apos;, &apos;boo&apos;, &apos;zoo&apos;];
var iterator = new Iterator( array );
var counter = 0;

while( iterator.hasNext() )
{
    counter++;
    var thisRow = iterator.next();
    assertTrue( array[counter] == thisRow, &quot;Array element not found.&quot; );    
}

assertTrue( counter == 3, &quot;Iterator did not loop the correct number of times.&quot; );    
&lt;/code&gt;

The obvious benefit is that it lets you handle all four collection types in a standard way. This is a CF9-only component, as it is written using the new script-only CFC syntax (which I LOVE, but will be talking about further in future entries).

As for updates, I fixed a bug in the DynamicXMLBeanFactory, which is part of the &lt;a href=&quot;http://coldspringutils.riaforge.org/&quot; target=&quot;_blank&quot;&gt;ColdSpring Bean Utilities library&lt;/a&gt;. There was an issue when using ColdSpring configuration files that imported multiple other config files. The CFC was also modified to only attempt to do an ExpandPath() on the configuration file location if a file doesn&apos;t exist using the value supplied by the developer. I also updated the &lt;a href=&quot;http://formutils.riaforge.org/&quot; target=&quot;_blank&quot;&gt;FormUtils CFC&lt;/a&gt; to make the constructor arguments optional, to make it easier to configure and use.

So, that&apos;s all for now, but look for some entries on CF9 ORM tips and techniques, as well as a full reboot of my earlier series on the Swiz framework for Flex. &lt;a href=&quot;http://swizframework.org/2009/12/swiz-1-0-0-alpha-released/&quot; target=&quot;_blank&quot;&gt;Swiz 1.0 alpha was just released&lt;/a&gt;, and as the finishing touches are added I plan to be blogging about all the excellent new capabilities that have been added by the Swiz team!
				
				</description>
				
				
				<category>ColdFusion</category>
				
				<category>ColdSpring</category>
				
				<category>FormUtilities CFC</category>
				
				<pubDate>Wed, 16 Dec 2009 09:49:00 -0700</pubDate>
				<guid>http://www.briankotek.com/blog/index.cfm/2009/12/16/Iterator-on-RIAForge-and-Updates-to-FormUtils-and-ColdSpring-Uti</guid>
				
				
			</item>
			
		 	
			
			
			<item>
				<title>My CFinNC Presentations at SlideSix</title>
				<link>http://www.briankotek.com/blog/index.cfm/2009/10/22/My-CFinNC-Presentations-at-SlideSix</link>
				<description>
				
				I&apos;ve uploaded my &lt;a href=&quot;http://www.cfinnc.com&quot; target=&quot;_blank&quot;&gt;CFinNC&lt;/a&gt; presentations to SlideSix for anyone who&apos;s interested:

&lt;a href=&quot;http://slidesix.com/view/Brian-Kotek--CFinNC--OO-Design-Principles-Final&quot; target=&quot;_blank&quot;&gt;Object-Oriented Design Principles&lt;/a&gt;

&lt;a href=&quot;http://slidesix.com/view/Swiz--Brian-Kotek--CFinNC&quot; target=&quot;_blank&quot;&gt;Introduction to Swiz&lt;/a&gt;

Overall, CFinNC was great. I actually had to work for a large chunk of the weekend so aside from presenting and mingling with folks later in the evening, I didn&apos;t get to attend many other sessions. That said, everything looked top-notch while I was there. The conference unfolded very smoothly and all of the attendees seemed very engaged. Hats off to Dan Wilson and the entire volunteer team for pulling this off! This conference definitely held its own against the other CF conferences I&apos;ve attended. It was very difficult to tell that it was completely free. Hopefully we can do it again next year!
				
				</description>
				
				
				<category>Development</category>
				
				<category>ColdFusion</category>
				
				<category>OOP CF</category>
				
				<category>Flex</category>
				
				<category>Conferences</category>
				
				<category>Presentations</category>
				
				<category>Swiz</category>
				
				<pubDate>Thu, 22 Oct 2009 12:02:00 -0700</pubDate>
				<guid>http://www.briankotek.com/blog/index.cfm/2009/10/22/My-CFinNC-Presentations-at-SlideSix</guid>
				
				
			</item>
			
		 	
			
			
			<item>
				<title>On the CFPanel Podcast with Mark Mandel and Barney Boisvert</title>
				<link>http://www.briankotek.com/blog/index.cfm/2009/9/4/On-the-CFPanel-Podcast-with-Mark-Mandel-and-Barney-Boisvert</link>
				<description>
				
				I&apos;m happy to say I&apos;ll be participating in the &lt;a href=&quot;http://cfpanel.com/index.cfm/2009/9/3/Episode-5--ColdFusion-and-Java-Integration&quot; target=&quot;_blank&quot;&gt;CFPanel Podcast&lt;/a&gt; on September 8 at 8 PM EST. We&apos;ll be discussing ColdFusion and Java integration. I hope to add some helpful substance to the conversation, but I&apos;m really looking forward to hearing what Mark (who created JavaLoader) and Barney (who created CFGroovy) have to say.

Listen in if you can, or check out the Connect recording afterwards. Thanks!
				
				</description>
				
				
				<category>Development</category>
				
				<category>ColdFusion</category>
				
				<category>Java</category>
				
				<category>Groovy</category>
				
				<category>Presentations</category>
				
				<pubDate>Fri, 04 Sep 2009 12:11:00 -0700</pubDate>
				<guid>http://www.briankotek.com/blog/index.cfm/2009/9/4/On-the-CFPanel-Podcast-with-Mark-Mandel-and-Barney-Boisvert</guid>
				
				
			</item>
			
		 	
			
			
			<item>
				<title>I&apos;m Speaking at the CFinNC Conference...See You There?</title>
				<link>http://www.briankotek.com/blog/index.cfm/2009/9/4/Im-Speaking-at-the-CFinNC-ConferenceSee-You-There</link>
				<description>
				
				Just a quick note that I&apos;ll be speaking at the &lt;a href=&quot;http://www.cfinnc.com/&quot; target=&quot;_blank&quot;&gt;CFinNC&lt;/a&gt; conference on October 17-18th here in Raleigh, NC. My topics are Object-oriented Design Principles and The Swiz Framework for Flex. 

The conference is FREE and the lineup is very impressive, so if you can attend, please register! And if you register, please actually show up! The danger with a free conference is that it&apos;s easy for folks to back out at the last minute, since they lose nothing. But for the organizers, it makes estimating actual attendance difficult. So if you sign up, please do your best to make it. :-)

I&apos;m looking forward to seeing some folks that I normally have to wait until MAX or next year&apos;s CFObjective or CFUnited conferences to see. And I hope to meet a lot of new people as well. See you in Raleigh!
				
				</description>
				
				
				<category>ColdFusion</category>
				
				<category>OOP CF</category>
				
				<category>Flex</category>
				
				<category>Conferences</category>
				
				<category>Swiz</category>
				
				<pubDate>Fri, 04 Sep 2009 12:00:00 -0700</pubDate>
				<guid>http://www.briankotek.com/blog/index.cfm/2009/9/4/Im-Speaking-at-the-CFinNC-ConferenceSee-You-There</guid>
				
				
			</item>
			
		 	
			
			
			<item>
				<title>Final Prep for CFUnited!</title>
				<link>http://www.briankotek.com/blog/index.cfm/2009/8/10/Final-Prep-for-CFUnited</link>
				<description>
				
				It&apos;s been a while since I&apos;ve blogged, as you might guess I&apos;ve been really busy. I do plan to dive back into blogging again after the conference, both here and at the &lt;a href=&quot;http://www.alagad.com/go/blog&quot; target=&quot;_blank&quot;&gt;Alagad blog&lt;/a&gt;. But right now my focus is on wrapping up some tasks so that my time at &lt;a href=&quot;http://cfunited.com/2009/&quot; target=&quot;_blank&quot;&gt;CFUnited&lt;/a&gt; is used to it&apos;s full potential!

I&apos;m presenting on Friday on Introduction to Object-Oriented Modeling and Design. I&apos;ve tweaked the presentation a bit since I gave it last, based partly on the &lt;a href=&quot;http://www.briankotek.com/blog/index.cfm/2009/7/14/ColdFusion-and-OOP--Match-Made-in-Heaven-or-Long-Road-to-Hell&quot;&gt;podcast&lt;/a&gt; that Hal, Ben Nadel and I did a few weeks ago. If you&apos;re interested in what helps make &quot;good&quot; OO design, I hope the presentation will be helpful. Again, let me point out that the presentation isn&apos;t an introduction to OO, I&apos;m assuming attendees already understand what a class is, what an object is, etc. This presentation is talking about OO at a more general level, in terms of how sets of objects actually work together.

My tentative schedule for the conference is attached to this entry, so if you&apos;d like to chat about OO, CF, Flex, Groovy, or just about anything else, feel free to catch up with me. I&apos;ll also most likely be a regular at any evening gatherings at the hotel bar. ;-)

Anyway, I hope to see you this week in DC! Until then!
				
				</description>
				
				
				<category>ColdFusion</category>
				
				<category>OOP CF</category>
				
				<category>Conferences</category>
				
				<category>Presentations</category>
				
				<category>Personal</category>
				
				<pubDate>Mon, 10 Aug 2009 13:07:00 -0700</pubDate>
				<guid>http://www.briankotek.com/blog/index.cfm/2009/8/10/Final-Prep-for-CFUnited</guid>
				
				
			</item>
			
		 	
			
			
			<item>
				<title>ColdFusion and OOP - Match Made in Heaven, or Long Road to Hell?</title>
				<link>http://www.briankotek.com/blog/index.cfm/2009/7/14/ColdFusion-and-OOP--Match-Made-in-Heaven-or-Long-Road-to-Hell</link>
				<description>
				
				Hal Helms, Ben Nadel and I recorded a conversation over the weekend on the subject of OO in CF. I&apos;m supporting the position that OO is still a good thing in CF, Hal disagrees, and Ben is undecided. As you might expect, Hal is left a trembling husk as the weight of my arguments unmercifully crushes him. You know those scenes in superhero movies where someone gets punched so hard they end up in a crater in the ground? It&apos;s like that. Only worse.

In all seriousness though, it was a very fun talk and I think there are some solid points made from all involved, but I&apos;ll let you, gentle reader, be the judge. &lt;a href=&quot;http://epicenter-public.s3.amazonaws.com/ColdFusion-and-OOP--Match-Made-in-Heaven-or-Long-Road-to-Hell.mp3&quot; target=&quot;_blank&quot;&gt;You can download the recording here&lt;/a&gt;.

In the interest of keeping any discussion on this topic from fragmenting, we&apos;ve decided to disable comments on our respective blog entries and instead created a &lt;a href=&quot;http://groups.google.com/group/coldfusionoo&quot; target=&quot;_blank&quot;&gt;Google Group&lt;/a&gt; to act as a central sounding board. Hopefully this isn&apos;t too inconvenient, I realize it&apos;s something of a departure from the norm, but let&apos;s see how that works.

I&apos;m not sure yet whether this will turn into any kind of regular discussion, but I suppose it could. We&apos;ll just have to see what folks think! Thanks.
				
				</description>
				
				
				<category>Development</category>
				
				<category>ColdFusion</category>
				
				<category>OOP CF</category>
				
				<pubDate>Tue, 14 Jul 2009 06:29:00 -0700</pubDate>
				<guid>http://www.briankotek.com/blog/index.cfm/2009/7/14/ColdFusion-and-OOP--Match-Made-in-Heaven-or-Long-Road-to-Hell</guid>
				
				
			</item>
			
		 	
			
			
			<item>
				<title>OO Can&apos;t Ruin Businesses, but People Can</title>
				<link>http://www.briankotek.com/blog/index.cfm/2009/5/26/OO-Cant-Ruin-Businesses-but-People-Can</link>
				<description>
				
				Blogging newcomer Marc Funaro made a provocative first post over the weekend with his entry &lt;a href=&quot;http://www.advantexllc.com/blog/post.cfm/how-oo-almost-destroyed-my-business&quot; target=&quot;_blank&quot;&gt;How OO Almost Destroyed My Business&lt;/a&gt;. It has gotten a lot of comments, some supporting him, and some taking issue with his conclusions. I started to comment but decided it would be better to generate a secondary discussion rather than add onto the already long thread.

Marc says he picked up ColdFusion as a non-programmer, and had good success with it until fairly recently. With the movement toward object-oriented development that is happening in the ColdFusion world, he ran into trouble. He read some books, some blogs, and took a class on Java development. And he ended up overwhelming himself with unnecessary complexity in terms of frameworks, design patterns, and OO architecture. He sums up the result of doing this pretty nicely:

&lt;blockquote&gt;&quot;The bottom line is, when you NEED to use some OO concept, YOU&apos;LL KNOW.  *That&apos;s* the time to start writing OO-style code, and only then... not everywhere else.&quot;&lt;/blockquote&gt;

Which is pretty good advice. It&apos;s something that any knowledgeable proponent of OO will tell you. I&apos;m sorry that it took him a good amount of time and frustration to reach that conclusion, but I&apos;m glad he finally did.

Where he goes wrong, though, starts right in the title of his entry. OO can&apos;t ruin anything, but people making bad decisions absolutely can. And what Marc did was make some bad decisions, because he was new to OO, confused, and, as he says, &quot;downloading one framework after another, piling them all into an application&quot;. This is like reading a book on construction, and then going out and trying to build the Taj Mahal when all that was needed was a garage.

Bad decisions don&apos;t mean a person is stupid or foolish. Smart people make bad decisions all the time (I&apos;m not conceited enough to call myself a smart person, but I definitely have made some bad decisions). Usually, it&apos;s simply a lack of knowledge or experience, or a failure to understand the implications of the choices you&apos;re making. But even that is OK, because when someone makes a bad decision, it can still have a positive outcome if it results in learning something. OO does not equate to using a framework, and it does not require the application of every design pattern under the sun. It&apos;s simply a way to organize code, manage complexity, and accommodate change. Sometimes, that is best served by using a framework like ColdSpring or Spring. Sometimes, design patterns can offer solutions to encapsulate variations in a system and cope with change. One of the key things anyone using OO must understand is that there are pros and cons to every decision, and multiple solutions to a given problem. The only way to learn how to assess these trade offs is through experience.

The reality is that a lot of ColdFusion applications don&apos;t require a massive OO system to power them. Many of the small- or medium-sized applications don&apos;t need an n-tier architecture loaded with abstractions and design patterns. But that doesn&apos;t mean that some of the good ideas of OO, like encapsulation, can&apos;t be used with big benefits. One doesn&apos;t need to turn every query into an array of objects. Just creating well-defined interfaces to expose behavior to the rest of an application will get you a long way. Once something is encapsulated, it&apos;s much easier to change it later if you need to. It might be just a few CFCs to wrap up the bulk of the logic and hide the implementation. That might be all that will ever be needed. But if (and, more likely, when) things get more complex and it comes time to start adopting a broader set of OO principles, you&apos;ll be in a much better position to do so.

However, there is another reality that can&apos;t be denied: in the debate between procedural and OO development, OO has won. It won many years ago. ColdFusion is one of the few languages left that supports procedural development to a large degree. If you want to keep being a software developer, or ever want to move to a language like ActionScript, C#, Java, Groovy, or Ruby, you&apos;re going to have to know OO. That&apos;s just how it is. And as Marc points out, even within the CF world, OO is taking over, and the number of jobs available to people without OO experience are going to keep getting smaller and smaller. Some folks may not like this and may attempt to rebel against the trend, but you can&apos;t stop the tide. OO is not going away, in fact, it&apos;s only going to get ever more ubiquitous. So it&apos;s probably in your best interest to learn about it. One doesn&apos;t have to use it on every project, nor does one have to use it to create a complex, over-engineered mess. But  experience is the best teacher, both in terms of learning OO and increasing your demand in the marketplace.

So, with respect to Marc, don&apos;t do what he did. Don&apos;t try to swallow the entire OO buffet in one bite. If you try, you&apos;ll fail. You&apos;ll get frustrated. And in that red haze, you&apos;ll probably miss the simple benefits of OO. Instead, learn what you can and take time to digest the information. Experiment with it, but don&apos;t get carried away. Apply what makes sense to you where you can, in small bits. Remember that the goal is to learn, but it is also to help you do what works for you and build applications that satisfy customers.

I suppose the bottom line is: Don&apos;t be afraid of OO. Be afraid of anyone who says that OO is the only way to build an application, and be just as afraid of anyone who blasts OO because they got carried away with it and got burned.
				
				</description>
				
				
				<category>Development</category>
				
				<category>ColdFusion</category>
				
				<category>OOP CF</category>
				
				<pubDate>Tue, 26 May 2009 10:32:00 -0700</pubDate>
				<guid>http://www.briankotek.com/blog/index.cfm/2009/5/26/OO-Cant-Ruin-Businesses-but-People-Can</guid>
				
				
			</item>
			
		 	
			
			
			<item>
				<title>Is the ColdFusion Community&apos;s Generosity Encouraging Laziness?</title>
				<link>http://www.briankotek.com/blog/index.cfm/2009/3/27/Is-the-ColdFusion-Communitys-Generosity-Encouraging-Laziness</link>
				<description>
				
				I&apos;ve been using ColdFusion for a long time. When I started back in late 1997, I was a very novice programmer. There wasn&apos;t much in the way of mailing lists, online forums, or books. There was no Google, and there were no blogs. As a result, I developed what I&apos;d consider a pretty self-reliant nature on the subject of programming. I had to read the documentation, experiment, and try things out. And doing this, I was able to solve my problems.

I am a member of a number of public discussion forums and mailing lists, and have been for many years. I moderate several forums and lists. Over the years, I&apos;ve tried to help others by answering questions or pointing them in the right direction to solve their problems. I&apos;d like to hope that I&apos;ve helped save some people some of the pain and time that I had to go through when I was learning ColdFusion.

Lately I&apos;ve been seeing a disturbing trend: a rapidly increasing number of what I will call &quot;lazy questioners&quot;. Sure, some of these folks have always been around. But in the last six to twelve months it seems like the number of these people has been making a rapid upturn.

On the one hand, this might be good news: it seems to indicate that more new people are coming into the community. I think that&apos;s great. However, what I don&apos;t think is great is their approach to asking questions.

If you are also a member of one or more forums or mailing lists, have you also noticed the increasing number of questions like these?

&lt;ul&gt;&lt;li&gt;How do I invoke a trigger from ColdFusion?&lt;/li&gt;
&lt;li&gt;Why doesn&apos;t this work: &amp;lt;cfif IsDefined(&quot;#url.id#&quot;)&amp;gt;...&lt;/li&gt;
&lt;li&gt;Why does my if block always run: &amp;lt;cfparam name=&quot;url.id&quot; default=&quot;0&quot; /&amp;gt; &amp;lt;cfif IsDefined(&apos;url.id&apos;)&amp;gt;...&lt;/li&gt;
&lt;li&gt;How do I zip something in ColdFusion?&lt;/li&gt;
&lt;li&gt;What is wrong with my query? [paste SQL]&lt;/li&gt;
&lt;li&gt;This doesn&apos;t work please help me. [paste 300 lines of code]&lt;/li&gt;
&lt;li&gt;Why doesn&apos;t this work? #XMLParse( [string with invalid xml characters in it] )#&lt;/li&gt;
&lt;li&gt;Will this work? [paste code]
&lt;/li&gt;&lt;/ul&gt;

The list really goes on and on, these are just a few of the ones I recall seeing recently. If you&apos;re asking yourself &quot;what&apos;s wrong with those questions?&quot;, I&apos;ll tell you: either they&apos;re horribly presented questions or they could be solved in 30 seconds just by doing a Google search or actually looking at the documentation.

So what&apos;s the problem? The next response is probably &quot;just ignore the question if you don&apos;t have anything nice to say.&quot; That&apos;s a valid response. And it would work, provided that everyone else also followed it. But they don&apos;t. When questions like these come up (daily at this point), at least one good-natured person decides to try and help. They politely provide a useful answer. Which is admirable. I often do this myself. But after thinking about the overall situation, I&apos;ve come to the conclusion that it&apos;s actually a harmful choice. Here are some of the reasons why:

First, all this does is encourage the questioner&apos;s laziness. In fact, it encourages laziness for anyone asking a question. Why would someone bother to find an answer on their own when they see they can just ask someone else and know they&apos;ll get an answer?

It also means the person probably hasn&apos;t really learned much. They certainly haven&apos;t learned how to find the solution to a similar problem when (not if) they encounter one. The old adage &quot;Give a man a fish, feed him for a day. Teach a man to fish, feed him for a lifetime.&quot; has never been more applicable. Answering a lazy question almost guarantees more lazy questions in the future. The questioner is banking on the generosity of others, and allowing them to shift the time and effort onto a bunch of other people. And, unfortunately, it works.

Which leads directly into the next negative result, which is an overall decrease in the usefulness of the list or forum. Lazy questions decrease the signal to noise ratio of a resource. They take time and attention away from valid and well presented questions. And it&apos;s not just the initial answer. Often, when a lazy question is answered, it triggers a long exchange where the questioner says &quot;that still doesn&apos;t work&quot; or &quot;what about this variation&quot;. In response, the kind folks answering keep feeding into it, many times offering additional information that the questioner would have discovered themselves if they had put even minimal effort into solving their problem through Google or the documentation.

In essence, I think the ColdFusion community is too forgiving of lazy questions. I might get flak for saying this, but it&apos;s true: we&apos;re too nice when it comes to this issue.

Now to be clear, I&apos;m not saying we should be mean, or that we should stop answering questions. We should absolutely keep answering questions. I certainly will keep trying to help people. But anyone asking a question should understand that there is a certain minimum level of effort that should be met before you ask. To me, the minimum level of effort is:

&lt;ul&gt;&lt;li&gt;Have you actually tried to run the code? What was the result?&lt;/li&gt;
&lt;li&gt;If there is an error, be able to provide the exact error to the best of your ability&lt;/li&gt;
&lt;li&gt;Have you read the documentation?&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;Have you searched Google?&lt;/li&gt;
&lt;li&gt;Have you searched the past threads/messages?&lt;/li&gt;
&lt;li&gt;If the problem is SQL-related, have you run the query directly against the database, outside of CF?&lt;/li&gt;
&lt;li&gt;If you plan to paste code, have you eliminated all extraneous code and limited the code to only what is involved in the problem?&lt;/li&gt;
&lt;li&gt;Have you attempted minimal debugging with cfdump, cfabort, or cftrace?
&lt;/li&gt;&lt;/ul&gt;

This is not a lot to ask. In fact, this should be done out of common sense and common courtesy. If someone chooses not to meet this minimum level of effort, they should be met with a terse, blunt response, and NOT the answer to their question. There is a much more general and lengthy resource on this subject at &lt;a href=&quot;http://www.catb.org/~esr/faqs/smart-questions.html&quot; target=&quot;_blank&quot;&gt;the Smart Questions FAQ&lt;/a&gt;.

Here are a few situations where I say the questioner&apos;s laziness should be called out:

&lt;ul&gt;&lt;li&gt;The answer could be found by simply reading the documentation on the tag or function, and it is obvious that they have not&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;The answer could be found with a 30 second Google search&lt;/li&gt;
&lt;li&gt;The questioner is asking an advanced question on a complex subject when it is clear they have limited understanding of the subject or what they&apos;re even asking about, and they&apos;re expecting a free class on the subject (i.e. &quot;I don&apos;t know much SQL, but how do I write this complicated query&quot;)&lt;/li&gt;
&lt;li&gt;The questioner is asking if something will work when they haven&apos;t even tried to run it&lt;/li&gt;
&lt;li&gt;The questioner is asking others to write their code for them&lt;/li&gt;
&lt;li&gt;The questioner is pasting huge amounts of code and expecting others to sift through it
&lt;/li&gt;&lt;/ul&gt;

In many other communities, lazy questions are met with harsh responses that range from &quot;RTFM&quot; to &quot;JFGI&quot; to derisive abuse. I&apos;m not asking the community to go down that road. I love the fact that for the most part, the CF community is a very open and encouraging place. I just think that a small but growning number of people are taking advantage of that generous spirit. It&apos;s time to impose some minimal expectations on those who would ask for our time and assistance.

I&apos;m expecting this to trigger some interesting feedback (hopefully nothing too rough, but if you disagree and can point out some flaw with my logic here, by all means go for it). What do folks think about this issue, and what is the best way to deal with it?
				
				</description>
				
				
				<category>Development</category>
				
				<category>ColdFusion</category>
				
				<category>General</category>
				
				<category>Personal</category>
				
				<pubDate>Fri, 27 Mar 2009 15:10:00 -0700</pubDate>
				<guid>http://www.briankotek.com/blog/index.cfm/2009/3/27/Is-the-ColdFusion-Communitys-Generosity-Encouraging-Laziness</guid>
				
				
			</item>
			
		 	
			
			
			<item>
				<title>Groovy: The Invasion Begins</title>
				<link>http://www.briankotek.com/blog/index.cfm/2009/3/25/Groovy-The-Invasion-Begins</link>
				<description>
				
				Past readers have probably seen some of my posts that include references to the Groovy programming language. At Broadchoice we chose Groovy for the entire server-side object model for our Workspace AIR application. In other words, I&apos;ve been using Groovy for a while now. And I&apos;ve been, and continue to be, extremely impressed with it.

If you&apos;re a ColdFusion developer, you may want to give Groovy a test drive. Because Groovy is a dynamic language, it plays almost perfectly with CF. You can kiss all those JavaCast() function calls goodbye when your CFML interacts with Groovy objects. Since Groovy runs in the JVM and compiles to bytecode just like CFML (and straight Java for that matter), you can reap its benefits at very little cost in terms of setup. 

Further, to those with any familiarity with Java at all, the learning curve with Groovy is really short. Another of the many really cool things about Groovy is that it gives you a very wide spectrum of coding syntax: 

On one side, almost any native Java code can be pasted into a Groovy class and it will run fine with no modifications. So any examples, libraries, or legacy code can literally be copied, pasted, and forgotten about, if you want. 

But on the other side, Groovy adds a ton of convenience features on top of the core Java language. It takes things that require long, boring, boilerplate Java and incorporates it into the language in a way that just works. And you&apos;re free to take advantage of these great time-saving capabilities anywhere you choose to. That&apos;s what&apos;s so cool: you get to choose! Want or need &quot;normal&quot; Java. Fine. Want tight, terse Groovy? Fine. Want any combination of those? Fine. That&apos;s just really damn sweet.

Yesterday, one of the resident mad geniuses of the ColdFusion community, Barney Boisvert, released &lt;a href=&quot;http://www.barneyb.com/barneyblog/2009/03/23/cfgroovy-1-0/&quot; target=&quot;_blank&quot;&gt;version 1.0 of his CFGroovy library&lt;/a&gt; that makes integrating Groovy (and Hibernate) into CF applications a snap. He also has a very nice post on &lt;a href=&quot;http://www.barneyb.com/barneyblog/2009/03/24/why-you-should-care-about-groovy/&quot; target=&quot;_blank&quot;&gt;why you should care about Groovy&lt;/a&gt;.

Because it is so seamless to use with CF, so powerful, and so easy to use, I really think we&apos;re going to start seeing a lot about Groovy. Add to that the fact that Groovy&apos;s object creation speeds, while slower than Java, are far beyond CFCs, and we have a candidate for really robust, large-scale object models while still being able to leverage CF anywhere else in the controller, model, or view that makes sense. So if you like to tinker, learn something new, or do large-scale OO, I&apos;d urge you to check out Groovy and Barney&apos;s CFGroovy library.
				
				</description>
				
				
				<category>Development</category>
				
				<category>ColdFusion</category>
				
				<category>OOP CF</category>
				
				<category>Groovy</category>
				
				<pubDate>Wed, 25 Mar 2009 09:29:00 -0700</pubDate>
				<guid>http://www.briankotek.com/blog/index.cfm/2009/3/25/Groovy-The-Invasion-Begins</guid>
				
				
			</item>
			
		 	
			
			
			<item>
				<title>Finally Using CFFormProtect, And Getting Zero Spam</title>
				<link>http://www.briankotek.com/blog/index.cfm/2009/3/20/Finally-Using-CFFormProtect-And-Getting-Zero-Spam</link>
				<description>
				
				I&apos;m probably the last person on earth to do this, but I recently added Jake Munson&apos;s &lt;a href=&quot;http://cfformprotect.riaforge.org/&quot; target=&quot;_blank&quot;&gt;CFFormProtect&lt;/a&gt; library to my blog. Why oh why didn&apos;t I do this six months ago? Oh yeah, because I&apos;m really busy heh. But better late than never, especially when the result is ZERO blog spam!

I normally got between 5 and 10 comment spam notifications a day. Which I immediately deleted, but it forced me to enable comment moderation on the blog. Well, moderation is off now, and I&apos;m thrilled to say no spam has come in yet. I absolutely love the idea of some person wasting time trying to spam my comments and failing every time. It brings a smile to my face. An evil smile.

Anyway, in case I am NOT the last person on earth to do this, and YOU are, then update your blog to include it. As a bonus, if you&apos;re on BlogCFC, the latest version includes it for you. One of these days I need to get back to the latest build of BlogCFC (right now mine has a number of tweaks, like using the Google SyntaxHighlighter).
				
				</description>
				
				
				<category>Development</category>
				
				<category>ColdFusion</category>
				
				<category>General</category>
				
				<pubDate>Fri, 20 Mar 2009 09:49:00 -0700</pubDate>
				<guid>http://www.briankotek.com/blog/index.cfm/2009/3/20/Finally-Using-CFFormProtect-And-Getting-Zero-Spam</guid>
				
				
			</item>
			
		 	
			
			
			<item>
				<title>Results of the ColdFusion OOP Survey</title>
				<link>http://www.briankotek.com/blog/index.cfm/2009/2/26/Results-of-the-ColdFusion-OOP-Survey</link>
				<description>
				
				A couple of weeks ago I put up a survey to get some data on how current ColdFusion developers are (or aren&apos;t) using object-oriented programming (OOP) techniques. In all, 176 people took the survey, so thanks to everyone who took the time to go through it! As promised, I&apos;ve done some number crunching on the results and am posting them for folks to see and comment on.
				 [More]
				</description>
				
				
				<category>Development</category>
				
				<category>ColdFusion</category>
				
				<category>OOP CF</category>
				
				<pubDate>Thu, 26 Feb 2009 11:39:00 -0700</pubDate>
				<guid>http://www.briankotek.com/blog/index.cfm/2009/2/26/Results-of-the-ColdFusion-OOP-Survey</guid>
				
				
			</item>
			
		 	
			
			
			<item>
				<title>Very Short ColdFusion OOP Survey</title>
				<link>http://www.briankotek.com/blog/index.cfm/2009/2/9/Very-Short-ColdFusion-OOP-Survey</link>
				<description>
				
				Last week I posted a quick entry about my presentation at cf.Objective() 2009 on &lt;a href=&quot;http://www.briankotek.com/blog/index.cfm/2009/2/3/Speaking-at-cfObjective-on-OO-Design-and-Modeling&quot;&gt;Object-Oriented Design and Modeling&lt;/a&gt;. Whether you&apos;re planning to attend the conference or not, please spend a minute or two and answer my very short survey on how CF developers view and use OOP:

&lt;a href=&quot;http://www.briankotek.com/soundings/survey.cfm?id=4D35E129-3048-C277-11DE83FCB7651107&quot; target=&quot;_blank&quot;&gt;ColdFusion Developer OOP Survey&lt;/a&gt;

Feel free to forward the link around, I&apos;d really like to try and get a wide cross section of people to take it. My hope is to use the results to tailor my presentation, but I&apos;ll also post the results online in a week or two for anyone who&apos;s interested. Thanks in advance for your help!
				
				</description>
				
				
				<category>ColdFusion</category>
				
				<category>OOP CF</category>
				
				<category>Conferences</category>
				
				<pubDate>Mon, 09 Feb 2009 09:42:00 -0700</pubDate>
				<guid>http://www.briankotek.com/blog/index.cfm/2009/2/9/Very-Short-ColdFusion-OOP-Survey</guid>
				
				
			</item>
			
		 	
			</channel></rss>