<?xml version="1.0" encoding="utf-8"?>
			
			<rss version="2.0">
			<channel>
			<title>Best Served Cold</title>
			<link>http://www.pjk.us/paul/index.cfm</link>
			<description>Place where I talk.</description>
			<language>en-us</language>
			<pubDate>Thu, 09 Sep 2010 10:05:45 -0700</pubDate>
			<lastBuildDate>Wed, 11 Apr 2007 14:11:00 -0700</lastBuildDate>
			<generator>BlogCFC</generator>
			<docs>http://blogs.law.harvard.edu/tech/rss</docs>
			<managingEditor>paul@pjk.us</managingEditor>
			<webMaster>paul@pjk.us</webMaster>
			
			
			
			
			
			<item>
				<title>Why do you use CFCs?</title>
				<link>http://www.pjk.us/paul/index.cfm/2007/4/11/Why-do-you-use-CFCs</link>
				<description>
				
				&lt;a href=&quot;http://www.derekperez.com/blog/?p=72&quot;&gt;Derek Perez has a bit of a dilemma&lt;/a&gt;, and its one I am rather familiar with. His problem is that he likes to use CFCs, and has been using them for quite a while now. Actually, that&apos;s not really the problem. Really, his dilemma is trying to convince other experienced ColdFusion developers that they are not simply an over-complicated alternative to things such as custom tags and includes, and actually present any opportunities not really visible when using these more primitive forms of encapsulation.  Things work just fine the way they are, so why ruin a good thing, right?

I have also been faced with this very problem in the past, and  it can be incredibly frustrating. Generally, there can be all sorts of reasons not to use any new functionality, but usually there is one you can always rely on to deliver: &quot;It ain&apos;t broke, so why fix it?&quot;

But I digress.

When entering these sorts of discussions, I want to talk about things like encapsulation, extensibility, polymorphism, inheritance, and separation of concerns.  You know, object oriented programming, concepts that many other modern languages have seemed to embrace with relish. However, while I hold these values close to my little programmer&apos;s heart, it is not the same for the others who have not acquainted them selves with OOP. These words do not hold the same (if any) meaning to them, and simply make the whole endeavor seem like a lot of work for nothing but something that sounds bloated and academic.

I know this happens quite a bit, and many times everyone just agrees to disagree and move on without ever really resolving it. However, I also know a lot of people have also been able to bridge this great divide and moved their development team forward into the modern age.

If you use CFCs as a matter of course, do you know why you use them? Can you articulate those reasons? 

Go give Derek a hand.
				
				</description>
						
				
				<category>CFCs</category>				
				
				<pubDate>Wed, 11 Apr 2007 14:11:00 -0700</pubDate>
				<guid>http://www.pjk.us/paul/index.cfm/2007/4/11/Why-do-you-use-CFCs</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>cfcUnit Site Unavailable</title>
				<link>http://www.pjk.us/paul/index.cfm/2007/3/13/cfcUnit-Site-Unavailable</link>
				<description>
				
				So, it seems that there was a problem with DNS for the cfcuit.org domain, and the cfcUnit website is currently down.  Go ahead and try it, I swear it doesn&apos;t work. I checked. Anyhow, I fixed the problem with the registrar, but as with anything involving DNS registars, its just a matter of propagation (read lots of waiting around). Give it a day or so and it should be back up.


[1:45pm - Follow up]
Well, it seems to be back up. Much more quickly than I expected.
				
				</description>
						
				
				<category>cfcUnit</category>				
				
				<pubDate>Tue, 13 Mar 2007 11:36:00 -0700</pubDate>
				<guid>http://www.pjk.us/paul/index.cfm/2007/3/13/cfcUnit-Site-Unavailable</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Lots of great ideas</title>
				<link>http://www.pjk.us/paul/index.cfm/2007/3/10/Lots-of-great-ideas</link>
				<description>
				
				I would like to thank everyone that offered suggestions for what they would like to see in the next version of cfcUnit. Many of these are great ideas, and some will certainly be added to the core framework. They have given me something to focus on and a bit more future food for thought.

Something else that is made much clearer is that more documentation, tutorials and examples are needed to get people started more quickly. I will be addressing that.

I would also like to remind folks that there is a cfcUnit mailing list (link below). If you have any ideas or questions about how things work, it is a good way of getting some help.
				
				</description>
						
				
				<category>unit testing</category>				
				
				<category>ColdFusion</category>				
				
				<category>cfcUnit</category>				
				
				<pubDate>Sat, 10 Mar 2007 23:12:00 -0700</pubDate>
				<guid>http://www.pjk.us/paul/index.cfm/2007/3/10/Lots-of-great-ideas</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Your thoughts on unit testing</title>
				<link>http://www.pjk.us/paul/index.cfm/2007/3/2/Your-thoughts-on-unit-testing</link>
				<description>
				
				I have spent these last few months working on the next release of &lt;a href=&quot;http://www.cfcunit.org/cfcunit&quot;&gt;cfcUnit&lt;/a&gt; 1.2, so it has been on my mind quite a bit. While I add important functionality to the framework like a remote service for Flash Remoting and a rather robust Ant task and fix some long-standing issues, I can&apos;t help wonder if there is something else I need to add. So I pose this question to you: What do you want to see in the next release of cfcUnit?

If you already using cfcUnit for your unit testing needs, what would could be done to make your experience that much better? If you are not writing unit tests right now, what would it take to change your mind?
				
				</description>
						
				
				<category>unit testing</category>				
				
				<category>cfcUnit</category>				
				
				<pubDate>Fri, 02 Mar 2007 01:15:00 -0700</pubDate>
				<guid>http://www.pjk.us/paul/index.cfm/2007/3/2/Your-thoughts-on-unit-testing</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>You want it, you got it!</title>
				<link>http://www.pjk.us/paul/index.cfm/2007/2/2/You_want_it,_you_got_it!</link>
				<description>
				
				&lt;p&gt;Ok, so I have finally gone and done it. A number of people have been giving me a bit of grief over this, and while the cfcUnit site hasn&apos;t yet been updated, I have gone ahead and made available for download cfcUnit&apos;s next release, 1.2 Beta 1.&lt;/p&gt;

&lt;p&gt;The major enhancement brought forth in this release is the inclusion of a rather versatile Ant task, so now tests can be run from within Eclipse without much trouble or as part of any build/deployment process that employs Ant.&lt;/p&gt;

&lt;p&gt;I will post more about this and update the &lt;a href=&quot;http://www.cfcunit.org/cfcunit&quot;&gt;cfcUnit site&lt;/a&gt; later on today, but the link below will take you to the download page:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://sourceforge.net/project/showfiles.php?group_id=100854&amp;package_id=126568&amp;release_id=483297&quot;&gt;http://sourceforge.net/project/showfiles.php?group_id=100854&amp;package_id=126568&amp;release_id=483297&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Let me know how it goes. I look forward to any feedback.&lt;/p&gt;
				
				</description>
						
				
				<category>ColdFusion</category>				
				
				<category>cfcUnit</category>				
				
				<pubDate>Fri, 02 Feb 2007 01:34:47 -0700</pubDate>
				<guid>http://www.pjk.us/paul/index.cfm/2007/2/2/You_want_it,_you_got_it!</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>All this talk of cfcUnit is making me nervous...</title>
				<link>http://www.pjk.us/paul/index.cfm/2006/7/31/All_this_talk_of_cfcUnit_is_making_me_nervous...</link>
				<description>
				
				&lt;p&gt;There are a number of people writing of the improvements in the 
latest version of cfcUnit, and I have not been one of them. So, you 
might be wondering why. Well, this last month since CFUnited, I have 
been busy making cfcUnit 1.1 ready for full release. That means fixing 
some bugs, adding some new assertions, and most importantly making sure 
that there is some better documentation available. On top of all that, 
though, I have been very busy making sure that you can run cfcUnit from 
everyone&apos;s favorite build tool, Ant.&lt;/p&gt;

&lt;p&gt;Apparently, the absence of a cfcUnit Ant task and the existence of 
one for CFUnit has been a critical distinction between the two CF testing 
frameworks, giving people a reason not to use cfcUnit. Well, at CFUnited
John Paul Ashenfelter took the initial stab at this elusive feature to
show that it could be done without &lt;em&gt;too&lt;/em&gt; much effort using the
existing test runner that produces its results in WDDX.&lt;/p&gt;

&lt;p&gt;There were a couple of problems with the first implementation, first
among them that &lt;a href=&quot;http://www.jdom.org&quot;&gt;JDOM&lt;/a&gt; was used to process 
the XML document. This meant that when using the cfcUnit Ant task, you 
had to first download and install the JDOM libaray (and any of its
subsequent dependencies) somewhere in the Ant classpath. A number of
people discovered just how difficult (and not to say tedious) this process
was for them just to get going.&lt;/p&gt;

&lt;p&gt;Another problem was that the data format produced by the test runner was 
WDDX, a format that isn&apos;t very friendly to someone trying to read using
XPath expressions since it really conveys no meaning at all to anything
besides another WDDX parser.&lt;/p&gt;

&lt;p&gt;So, what did I do about this?&lt;/p&gt;

&lt;p&gt;Well, the first thing I did was come up with a new XML grammar that
better describes the test results in a much more concise way. Once the
format was in nailed down, I wrote a test runner to produce that XML. Once
that was done, I needed to fix the problem posed by JDOM and its numerous
dependencies.&lt;/p&gt;

&lt;p&gt;One thing that is nice about Ant is that it is configured using XML. In 
fact, it uses &lt;a href=&quot;http://xerces.apache.org/xerces2-j/&quot;&gt;Xerces&lt;/a&gt; and &lt;a href=&quot;http://xml.apache.org/xalan-j/&quot;&gt;Xalan&lt;/a&gt; to process build configuration files, and I
figured the cfcUnit task could take advantage of the fact that by running
inside Ant it already has access to these libraries. So, after a bit of
work, the cfcUnit Ant task is now a lot easier to install without any
external libraries.&lt;/p&gt;

&lt;p&gt;Now, some people might be wondering why I have gone to all this trouble
of producing XML in the test runner and parsing it in the Ant task. Why not
just format the text in ColdFusion and just display it in the console? Well,
there is a good reason for this, and its pretty simple really. By sending
raw data to the client, I can give the cfcUnit task a lot of options in
how it handles errors and failures in both the individual tests and in the
test runner itself. It can be configured to halt a build when something fails
or to keep going, or show a full formatted stacktrace generated by an error 
inside a test.&lt;/p&gt;

&lt;p&gt;Anyhow, after working with Ant for a little bit and seeing how Eclipse
can automatically run cfcUnit whenever a file is changed, I can see why
some people have gotten all bent out of shape because cfcUnit did not have
an Ant task, but I&apos;m sure that will all change soon.&lt;/p&gt;

&lt;p&gt;Anyhow, here are some of the things others have been saying about cfcUnit lately:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://corfield.org/blog/index.cfm/do/blog.entry/entry/Unit_Testing_Love_Affair&quot;&gt;Unit Testing Love Affair&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.markdrew.co.uk/blog/index.cfm/2006/7/26/CFCUnit-Assertions&quot;&gt;CFCUnit Assertions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.corfield.org/blog/index.cfm/do/blog.entry/entry/Automated_Testing_with_cfcUnit&quot;&gt;Automated Testing with cfcUnit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://cdscott.blogspot.com/2006/07/thank-you-paul-and-john-paul.html&quot;&gt; Thank you Paul and John Paul!&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
				
				</description>
						
				
				<category>unit testing</category>				
				
				<category>ant</category>				
				
				<category>cfcUnit</category>				
				
				<pubDate>Mon, 31 Jul 2006 19:58:00 -0700</pubDate>
				<guid>http://www.pjk.us/paul/index.cfm/2006/7/31/All_this_talk_of_cfcUnit_is_making_me_nervous...</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>cfcUnit at CFUnited</title>
				<link>http://www.pjk.us/paul/index.cfm/2006/6/29/cfcUnit_at_CFUnited</link>
				<description>
				
				&lt;p&gt;There has been a lot more attention paid to testing CFCs this year at CFUnited, and cfcUnit is right there at the front when discussing unit testing one&apos;s CFML. Perhaps the biggest proponent of unit testing has been John Paul Ashenfelter and his talks on Agile Development and Testing ColdFusion. Additionally, I have seen demos of unit testing by &lt;a href=&quot;http://cdscott.blogspot.com/&quot;&gt;Chris Scott&lt;/a&gt; when showing off different functionality of the ColdSpring framework.&lt;/p&gt;
&lt;p&gt;A side effect of this attention has been that there will soon be a new Ant task written by John Paul that will allow cfcUnit to be run as a part of  an automated build, but it could also be run from within Eclipse just as other unit testing frameworks do now.&lt;/p&gt;
				
				</description>
						
				
				<category>unit testing</category>				
				
				<category>CFCs</category>				
				
				<category>ColdFusion</category>				
				
				<category>cfcUnit</category>				
				
				<category>cfunited</category>				
				
				<pubDate>Thu, 29 Jun 2006 13:50:00 -0700</pubDate>
				<guid>http://www.pjk.us/paul/index.cfm/2006/6/29/cfcUnit_at_CFUnited</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Are you a nerd?</title>
				<link>http://www.pjk.us/paul/index.cfm/2006/4/14/Are_you_a_nerd?</link>
				<description>
				
				&lt;p&gt;&lt;a href=&quot;http://www.nerdtests.com/ft_nq.php?im&quot;&gt;&lt;img src=&quot;http://www.nerdtests.com/images/ft/nq.php?val=2732&quot; alt=&quot;I am nerdier than 77% of all people. Are you nerdier? Click here to find out!&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Its not as high as others, but I&apos;ve got more time to make up the difference!&lt;/p&gt;
				
				</description>
						
				
				<category>General</category>				
				
				<pubDate>Fri, 14 Apr 2006 20:31:07 -0700</pubDate>
				<guid>http://www.pjk.us/paul/index.cfm/2006/4/14/Are_you_a_nerd?</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>How To Write Unmaintainable Code</title>
				<link>http://www.pjk.us/paul/index.cfm/2005/11/23/How_To_Write_Unmaintainable_Code</link>
				<description>
				
				&lt;p&gt;Do you write maintainable code? I&apos;ll bet you think so, but some might not agree...&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://thc.org/root/phun/unmaintain.html&quot;&gt;How to Write Unmaintainable Code&lt;/a&gt;&lt;/p&gt;
				
				</description>
						
				
				<category>General</category>				
				
				<pubDate>Wed, 23 Nov 2005 10:24:44 -0700</pubDate>
				<guid>http://www.pjk.us/paul/index.cfm/2005/11/23/How_To_Write_Unmaintainable_Code</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Tartan 1.0.5 Preview coming soon</title>
				<link>http://www.pjk.us/paul/index.cfm/2005/11/21/Tartan_1.0.5_Preview_coming_soon</link>
				<description>
				
				&lt;p&gt;For those who are interested, the next version of Tartan (1.0.5) is  coming soon. In the last couple of months I have gone ahead and made a  number of changes, and I figured this would be a good time to introduce  them.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Property Manager&lt;/strong&gt; - tartan.core.PropertyManager&lt;/p&gt;
&lt;p&gt; This has been added to address the need to have access to service-level  properties from the LocalService class and any Command defined for that  service. This enables command handlers to access service data without  having to explicitly pass it around through command arguments.   Before, if two or more commands needed to access the same model, it was  the responsiblity of the calling service class to make sure it passed  it in. Now properties can be declared in the configuration XML, set by  service methods, and inside commands. The PropertyManager class has a  number of methods that give it the general behavior of a struct/map.  These include methods such as getProperty(), setProperty(),  getProperties().&lt;/p&gt;
&lt;p&gt; Here is an idea of how it looks in the XML configuration:&lt;/p&gt;
&lt;pre&gt;
&amp;lt;service name=&amp;quot;SERVICENAME&amp;quot; class=&amp;quot;CLASSNAME&amp;quot;&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;properties&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name=&amp;quot;prop1&amp;quot; value=&amp;quot;value1&amp;quot;/&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name=&amp;quot;prop2&amp;quot; value=&amp;quot;value2&amp;quot;/&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/properties&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;...
&amp;lt;/service&amp;gt;
&lt;/pre&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ServiceContext&lt;/strong&gt; - tartan.context.ServiceContext&lt;/p&gt;
&lt;p&gt;This class was created to consolidate the management of the various  factories that are used with a service and made available to command  handlers. The CommandContext used to be initialized with the factories  themselves, and the it accessed them directly. Now the CommandContext  is initialized with the ServiceContext and all access to the factories  is done through it. Additionaly, the PropertyManager is also accessible  only through the ServiceContext.&lt;/p&gt;
&lt;p&gt;There is a one-to-one relationship between service objects and  ServiceContext objects. It is planned for the near future that all  access to a service object will be through its ServiceContext. This  includes remote calls, local proxies and even between individual  services. This will enable finer-grained control over the lifecycle of  the service, including how it is called.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;User-defined Factories&lt;/strong&gt; - tartan.core.Factory (abstract base class)&lt;/p&gt;
&lt;p&gt;One of the limitations placed upon Tartan users was that all  objects/factories had to be those provided by the framework. Existing  classes did not fit cleanly into the services since it was up to the  LocalService class itself to create and manage the creation of those  classes/objects. With the addition of user-defined factories, a user of  the framework can create a simple wrapper for their own factory classes  and declare it for the service. One example of this is the wrapper for  a ColdSpring bean factory which can be found at  &amp;quot;tartan.contrib.ColdSpringBeanFactory&amp;quot;.&lt;/p&gt;
&lt;p&gt;The only requirement is that the wrapper class extends the class  &amp;quot;tartan.core.Factory&amp;quot; and it implements the &amp;quot;getObject()&amp;quot; and  &amp;quot;getObjectNames()&amp;quot; methods. It can create any type of object that  ColdFusion can work with. The factory is available via the  ServiceContext object&apos;s &amp;quot;getObject()&amp;quot; method.&lt;/p&gt;
&lt;p&gt;Here is an idea of how it looks in the XML configuration:&lt;/p&gt;
&lt;pre&gt;
&amp;lt;service name=&amp;quot;SERVICENAME&amp;quot; class=&amp;quot;CLASSNAME&amp;quot;&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;...
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;factory name=&amp;quot;FACTORYNAME&amp;quot; class=&amp;quot;CLASSNAME&amp;quot;&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;parameters&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;parameter name=&amp;quot;param1&amp;quot; value=&amp;quot;value1&amp;quot;/&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;parameter name=&amp;quot;param2&amp;quot; value=&amp;quot;value2&amp;quot;/&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/parameters&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/factory&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;...
&amp;lt;/service&amp;gt;&lt;/pre&gt;
&lt;/pre&gt;

&lt;p&gt;A number of changes have also been made to some of the existing classes  as well, a couple of which have been renamed for greater clarity.  First, the class &amp;quot;tartan.command.Event&amp;quot; was renamed to  &amp;quot;tartan.context.Command&amp;quot;, and the class &amp;quot;tartan.command.Command&amp;quot; was  renamed to &amp;quot;tartan.command.CommandHandler&amp;quot;. Basically, a Command is a  logical name with a set of named values, and a CommandHandler is  responsible for processing that command object. For me, the Event class  never really fit since in the context of commands. For backwards  compatibility the old classes will work the same as before, however,  any new code should use the new classes.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;configure() method&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Additionally, the method &amp;quot;configure()&amp;quot; has been added to the following classes:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;tartan.service.LocalService&lt;/li&gt;
	&lt;li&gt;tartan.command.CommandHandler&lt;/li&gt;
	&lt;li&gt;tartan.data.DAO&lt;/li&gt;
	&lt;li&gt;tartan.vo.ValueObject&lt;/li&gt;
	&lt;li&gt;tartan.exception.ExceptionHandler&lt;/li&gt;
	&lt;li&gt;tartan.core.Factory&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This method is a place for user-defined initialization. Before, the  only place for this was in the &amp;quot;init()&amp;quot; method and then it was up to  the user to call &amp;quot;super.init()&amp;quot; which is less ideal and places an  unneeded dependence on the implementation of the underlying abstract  class.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Flash Remoting&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;There have also been some fixes for Flash Remoting as well. It  seems that before service method arguments were not being properly  converted from ASObjects to CFCs. Additionaly, arrays of CFCs/ASObjects  are now properly handled in the conversion process.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;XmlReaders/Builders&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The various dynamic factory classes have handled the reading and  interpretation of the Xml configuration. One of the changes I have made  for this release is to separate the Xml configuration from the  construction of the factory classes. Now, the reading of XML  configuration has been delegated to the classes in the  &amp;quot;tartan.xml.readers.*&amp;quot; package, and they produce an intermediate  configuration. Also, the creation of the various factories has been  moved into the classes in the &amp;quot;tartan.builders.*&amp;quot; package. The  configuration generated by the XmlReaders can be fed into the Builder  classes to produce the objects needed for each service. One of the  benefits of doing this is that the dynamic factories are now simpler  since they no longer deal with reading of XML. Additionally, it should  make it easier to add different sources for the service configuration.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sample Applications&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;There have been a couple of sample applications added to show some of the newer functionality. They are listed below:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Contact Manager (MachII, Flex)&lt;/li&gt;
	&lt;li&gt;Task Manager (Fusebox)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The other sample apps have also been updated.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Anyhow, these are most of the changes in this release candidate. I am interested to hear what you have to say.&lt;/p&gt;
&lt;p&gt;Until I get the code in a single download, you can download the  framework from the project&apos;s CVS repository. If you are interested in  checking it out, you can find it here:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CVSROOT&lt;/strong&gt;&lt;br /&gt;
:pserver:anonymous@cvs.sourceforge.net/cvsroot/openxcf&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;MODULE&lt;/strong&gt;&lt;br /&gt;
tartan_framework&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;TAG&lt;/strong&gt;&lt;br /&gt;
Tartan-Framework-1_0_5-RC1
&lt;/p&gt;
				
				</description>
						
				
				<category>tartan</category>				
				
				<pubDate>Mon, 21 Nov 2005 01:00:50 -0700</pubDate>
				<guid>http://www.pjk.us/paul/index.cfm/2005/11/21/Tartan_1.0.5_Preview_coming_soon</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Dave Ross and ColdSpring at the Fusebox Conference</title>
				<link>http://www.pjk.us/paul/index.cfm/2005/8/15/Dave_Ross_and_ColdSpring_at_the_Fusebox_Conference</link>
				<description>
				
				Dave Ross has been asked by numerous people to speak about ColdSpring at the Fusebox Conference this year, but needs interested people to justify attending. If you are interested in learning more about ColdSpring and how it fits with the other frameworks, &lt;a href=&quot;http://www.d-ross.org/index.cfm?objectid=BB56A2D4-F2EA-5E2E-C8B13A6A60A57C1F&quot;&gt;let him know&lt;/a&gt;.
				
				</description>
						
				
				<category>Fusebox 2005</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Mon, 15 Aug 2005 16:20:25 -0700</pubDate>
				<guid>http://www.pjk.us/paul/index.cfm/2005/8/15/Dave_Ross_and_ColdSpring_at_the_Fusebox_Conference</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Tartan at Fusebox and Frameworks 2005 Conference</title>
				<link>http://www.pjk.us/paul/index.cfm/2005/8/15/Tartan_at_Fusebox_and_Frameworks_2005_Conference</link>
				<description>
				
				&lt;p&gt;
Well, I have been invited to speak at the &lt;a href=&quot;http://www.cfconf.org/fusebox2005/&quot;&gt;Fusebox Conference this year&lt;/a&gt; on Tartan. I will be giving an overview of the idea of service oriented architecture and how Tartan fits into the landscape of ColdFusion frameworks including Fusebox, MachII and ModelGlue. If you currently use one of these frameworks or you build RIAs with ColdFusion backends and you are planning on attending the conference this year, then I recommend you check it out.
&lt;/p&gt;
				
				</description>
						
				
				<category>Fusebox 2005</category>				
				
				<category>tartan</category>				
				
				<pubDate>Mon, 15 Aug 2005 16:15:21 -0700</pubDate>
				<guid>http://www.pjk.us/paul/index.cfm/2005/8/15/Tartan_at_Fusebox_and_Frameworks_2005_Conference</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Some time to reflect...</title>
				<link>http://www.pjk.us/paul/index.cfm/2005/7/3/Some_time_to_reflect...</link>
				<description>
				
				&lt;p&gt;Well, with CFUnited over and done with, there are quite a few things to reflect on. I don&apos;t think I am ready to say anything yet, but I think tomorrow I will be able to share my thoughts. Stay tuned...&lt;/p&gt;
				
				</description>
						
				
				<category>cfunited</category>				
				
				<pubDate>Sun, 03 Jul 2005 18:36:12 -0700</pubDate>
				<guid>http://www.pjk.us/paul/index.cfm/2005/7/3/Some_time_to_reflect...</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>New Tartan presentation available via Breeze</title>
				<link>http://www.pjk.us/paul/index.cfm/2005/5/18/New_Tartan_presentation_available_via_Breeze</link>
				<description>
				
				&lt;p&gt;A couple of hours ago I gave a presentation introducting Tartan via Breeze. If you weren&apos;t able to watch it live, &lt;a href=&quot;http://macromedia.breezecentral.com/p37163469/&quot;&gt;you can watch a recording.&lt;/a&gt;&lt;/p&gt;
				
				</description>
						
				
				<category>tartan</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Wed, 18 May 2005 16:34:12 -0700</pubDate>
				<guid>http://www.pjk.us/paul/index.cfm/2005/5/18/New_Tartan_presentation_available_via_Breeze</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Unit tests to the rescue!</title>
				<link>http://www.pjk.us/paul/index.cfm/2005/5/17/Unit_tests_to_the_rescue!</link>
				<description>
				
				&lt;p&gt;It&apos;s amazing what you discover about your code when you try to write unit tests for it after the fact. When I was developing &lt;a href=&quot;http://www.tartanframework.org/tartan&quot;&gt;Tartan&lt;/a&gt; some months ago, all the testing I did was manual. I just checked that it acted the way I wanted to under certain configurations, but as I moved forward, some tests would no longer work since the code they were testing no longer existed or worked in a different manner. Really, I was testing the code to validate ideas and ways of doing things.&lt;/p&gt;

&lt;p&gt;The biggest problem, though, was that I was not really testing small units of functionality like method calls, but in larger units of general behavior. How then would I know if something broke as I made changes to the core framework code?    The simple answer is that it would throw some exception someplace and I might know how to fix it. But really, I wouldn&apos;t know since I had nothing in place to do any sort of regression testing. So far, that has worked.&lt;/p&gt;

&lt;p&gt;A couple of weeks ago, I decided that this needed to change. As Tartan has moved forward, I have gotten a lot of requests for changes, bug fixes, and enhancements. Many of these changes aren&apos;t so simple and require a good idea of how things are put together. Some people have sent me code that makes some of these changes, but it is really difficult to see how these changes affect the rest of the code.&lt;/p&gt;

&lt;p&gt;So, I decided that before any important changes were made to the framework, there would be unit tests to verify all of the current code. It was a tough decision since there is so much code to test and there are a lot of things I would like to do with the framework. There are several things that guided my decision. First, I really need to know exactly what the code is doing and how it can break. The only way to do this is through specific and repeatable tests. Second, as more people use the framework and the code evolves backwards-compatibilty becomes more important that ever. The only way to track this is to have tests that guarantee pre-existing interfaces and behavior. Third, I am not the only person that would like to make contributions to the codebase. As I stated earler, several people have expressed interest in improving the code and have submitted code highlighting these changes. Without any formal unit tests in place, it is more difficult for anyone involved (even me) to know if the change interferes with anything else or just doesn&apos;t work. Additionally, any new code would be given its own set of tests that run with all the others.&lt;/p&gt;

&lt;p&gt;So far, I have written about 45 tests  using &lt;a href=&quot;http://www.cfcunit.org/cfcunit&quot;&gt;cfcUnit&lt;/a&gt;, and I am not even half way yet. I have however learned quite a bit about some of the current weaknesses that exist in my code, and I have even discovered some rather subtle bugs that I didn&apos;t really see in my earlier testing. I have written tests for these and fixed them. I also see a lot of things I really want to change, and that has been the hardest part in a way.  Part of me just wants to go ahead and introduce new features and move things forward, but I realize that in order to move forward I have to know where I stand. I can&apos;t do that without the tests. So, I make a list and move on to writing more tests.
&lt;/p&gt;

&lt;p&gt;I have been asked when the next release of Tartan will be coming out, and my answer is after these tests are written. It is an investment in the future of the framework and the community of people use it and want to contribute to it.&lt;/p&gt;
				
				</description>
						
				
				<category>unit testing</category>				
				
				<category>tartan</category>				
				
				<category>cfcUnit</category>				
				
				<pubDate>Tue, 17 May 2005 13:49:00 -0700</pubDate>
				<guid>http://www.pjk.us/paul/index.cfm/2005/5/17/Unit_tests_to_the_rescue!</guid>
				
			</item>
			
		 	
			</channel></rss>