<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Carfey Software Blog</title>
	<atom:link href="http://www.obsidianscheduler.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.obsidianscheduler.com/blog</link>
	<description>The official Carfey Software Blog</description>
	<lastBuildDate>Fri, 15 Mar 2013 02:21:56 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Reusable Jobs with Obsidian Chaining</title>
		<link>http://www.obsidianscheduler.com/blog/reusable-jobs-with-obsidian-chaining/</link>
		<comments>http://www.obsidianscheduler.com/blog/reusable-jobs-with-obsidian-chaining/#comments</comments>
		<pubDate>Fri, 15 Mar 2013 02:21:56 +0000</pubDate>
		<dc:creator>carey</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.obsidianscheduler.com/blog/?p=209</guid>
		<description><![CDATA[A lot of Obsidian users write custom jobs in Java and leverage their existing codebase to performs things like file archive or file transfer right inside the job. While it&#8217;s great to reuse that existing code you have, sometimes users &#8230; <a href="http://www.obsidianscheduler.com/blog/reusable-jobs-with-obsidian-chaining/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
		<wfw:commentRss>http://www.obsidianscheduler.com/blog/reusable-jobs-with-obsidian-chaining/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using Obsidian Maintenance Jobs</title>
		<link>http://www.obsidianscheduler.com/blog/using-obsidian-maintenance-jobs/</link>
		<comments>http://www.obsidianscheduler.com/blog/using-obsidian-maintenance-jobs/#comments</comments>
		<pubDate>Tue, 12 Mar 2013 11:24:27 +0000</pubDate>
		<dc:creator>craig</dc:creator>
				<category><![CDATA[Automation]]></category>
		<category><![CDATA[Carfey Software]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[obsidian]]></category>
		<category><![CDATA[scheduler]]></category>

		<guid isPermaLink="false">http://www.obsidianscheduler.com/blog/?p=203</guid>
		<description><![CDATA[When we began development on Obsidian Scheduler, one of its key objectives was transparency. Quoting my own post, transparent means letting us know what is going on. We want to have available to us information such as when was the &#8230; <a href="http://www.obsidianscheduler.com/blog/using-obsidian-maintenance-jobs/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
		<wfw:commentRss>http://www.obsidianscheduler.com/blog/using-obsidian-maintenance-jobs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Job Chaining in Quartz and Obsidian Scheduler</title>
		<link>http://www.obsidianscheduler.com/blog/job-chaining-in-quartz-and-obsidian-scheduler/</link>
		<comments>http://www.obsidianscheduler.com/blog/job-chaining-in-quartz-and-obsidian-scheduler/#comments</comments>
		<pubDate>Sun, 03 Mar 2013 00:25:58 +0000</pubDate>
		<dc:creator>carey</dc:creator>
				<category><![CDATA[Automation]]></category>
		<category><![CDATA[Carfey Software]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Scheduler]]></category>
		<category><![CDATA[Workflow]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[obsidian]]></category>
		<category><![CDATA[quartz]]></category>
		<category><![CDATA[scheduler]]></category>

		<guid isPermaLink="false">http://www.obsidianscheduler.com/blog/?p=200</guid>
		<description><![CDATA[In this post I&#8217;m going to cover how to do job chaining in Quartz versus Obsidian Scheduler. Both are Java job schedulers, but they have different approaches so I thought I&#8217;d highlight them here and give some guidance to users &#8230; <a href="http://www.obsidianscheduler.com/blog/job-chaining-in-quartz-and-obsidian-scheduler/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
		<wfw:commentRss>http://www.obsidianscheduler.com/blog/job-chaining-in-quartz-and-obsidian-scheduler/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comparing Job Development in Quartz and Obsidian</title>
		<link>http://www.obsidianscheduler.com/blog/comparing-job-development-in-quartz-and-obsidian/</link>
		<comments>http://www.obsidianscheduler.com/blog/comparing-job-development-in-quartz-and-obsidian/#comments</comments>
		<pubDate>Mon, 11 Feb 2013 03:58:33 +0000</pubDate>
		<dc:creator>craig</dc:creator>
				<category><![CDATA[Automation]]></category>
		<category><![CDATA[Carfey Software]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Scheduler]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[obsidian]]></category>
		<category><![CDATA[quartz]]></category>
		<category><![CDATA[scheduler]]></category>

		<guid isPermaLink="false">http://www.carfey.com/blog/?p=195</guid>
		<description><![CDATA[Getting your program code to the point that it satisfies the functional requirements provided is a milestone for developers, one that hopefully brings satisfaction and a sense of accomplishment. If that code must be executed on a schedule perhaps for &#8230; <a href="http://www.obsidianscheduler.com/blog/comparing-job-development-in-quartz-and-obsidian/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
		<wfw:commentRss>http://www.obsidianscheduler.com/blog/comparing-job-development-in-quartz-and-obsidian/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configuring Clustering in Quartz and Obsidian Schedulers</title>
		<link>http://www.obsidianscheduler.com/blog/configuring-clustering-in-quartz-and-obsidian-schedulers/</link>
		<comments>http://www.obsidianscheduler.com/blog/configuring-clustering-in-quartz-and-obsidian-schedulers/#comments</comments>
		<pubDate>Sun, 03 Feb 2013 21:27:32 +0000</pubDate>
		<dc:creator>carey</dc:creator>
				<category><![CDATA[Automation]]></category>
		<category><![CDATA[Carfey Software]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Scheduler]]></category>
		<category><![CDATA[cluster]]></category>
		<category><![CDATA[obsidian]]></category>
		<category><![CDATA[quartz]]></category>
		<category><![CDATA[scheduler]]></category>

		<guid isPermaLink="false">http://www.carfey.com/blog/?p=192</guid>
		<description><![CDATA[Job scheduling is used on many software projects to enable both internal jobs and third-party integration. Clustering can provide a huge boost to reliability by providing fail-over and load-sharing. I believe that clustering should be implemented for reliability on just &#8230; <a href="http://www.obsidianscheduler.com/blog/configuring-clustering-in-quartz-and-obsidian-schedulers/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
		<wfw:commentRss>http://www.obsidianscheduler.com/blog/configuring-clustering-in-quartz-and-obsidian-schedulers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Feature Comparison of Java Job Schedulers</title>
		<link>http://www.obsidianscheduler.com/blog/feature-comparison-of-java-schedulers/</link>
		<comments>http://www.obsidianscheduler.com/blog/feature-comparison-of-java-schedulers/#comments</comments>
		<pubDate>Sun, 27 Jan 2013 01:36:00 +0000</pubDate>
		<dc:creator>craig</dc:creator>
				<category><![CDATA[Carfey Software]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Scheduler]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[cron4j]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[obsidian]]></category>
		<category><![CDATA[quartz]]></category>
		<category><![CDATA[scheduler]]></category>

		<guid isPermaLink="false">http://www.carfey.com/blog/?p=186</guid>
		<description><![CDATA[At Carfey Software, we love our flagship product, Obsidian Scheduler. We believe that Obsidian is the best choice for most scheduling needs. Why? Because Obsidian is carefully designed to meet both simple and complex requirements. We think it stacks up &#8230; <a href="http://www.obsidianscheduler.com/blog/feature-comparison-of-java-schedulers/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
		<wfw:commentRss>http://www.obsidianscheduler.com/blog/feature-comparison-of-java-schedulers/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Why Developers Keep Making Bad Technology Choices</title>
		<link>http://www.obsidianscheduler.com/blog/why-developers-keep-making-bad-technology-choices/</link>
		<comments>http://www.obsidianscheduler.com/blog/why-developers-keep-making-bad-technology-choices/#comments</comments>
		<pubDate>Sun, 22 Apr 2012 22:52:51 +0000</pubDate>
		<dc:creator>carey</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.carfey.com/blog/?p=180</guid>
		<description><![CDATA[Today, software developers are faced with a great abundance of options when choosing how to design and implement systems. We are constantly bombarded with choice and are used to dealing with buzzwords like NoSQL, the cloud, REST, Map-Reduce and so &#8230; <a href="http://www.obsidianscheduler.com/blog/why-developers-keep-making-bad-technology-choices/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
		<wfw:commentRss>http://www.obsidianscheduler.com/blog/why-developers-keep-making-bad-technology-choices/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Null and 3-Dimensional Ordering Helpers in Java</title>
		<link>http://www.obsidianscheduler.com/blog/null-3-dimensional-ordering-helpers-java/</link>
		<comments>http://www.obsidianscheduler.com/blog/null-3-dimensional-ordering-helpers-java/#comments</comments>
		<pubDate>Fri, 30 Mar 2012 15:01:38 +0000</pubDate>
		<dc:creator>craig</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[collection]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[orm]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://www.carfey.com/blog/?p=178</guid>
		<description><![CDATA[When dealing with data sets retrieved from a database, if we want them ordered, we usually will want to order them right in the SQL, rather than order them after retrieval. Our database will typically be more efficient due to &#8230; <a href="http://www.obsidianscheduler.com/blog/null-3-dimensional-ordering-helpers-java/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
		<wfw:commentRss>http://www.obsidianscheduler.com/blog/null-3-dimensional-ordering-helpers-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Computing Common and Unique Elements In Multiple Collections &#8211; Java</title>
		<link>http://www.obsidianscheduler.com/blog/computing-common-and-unique-elements-in-multiple-collections-java/</link>
		<comments>http://www.obsidianscheduler.com/blog/computing-common-and-unique-elements-in-multiple-collections-java/#comments</comments>
		<pubDate>Sun, 18 Mar 2012 01:12:01 +0000</pubDate>
		<dc:creator>carey</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[collections]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://www.carfey.com/blog/?p=172</guid>
		<description><![CDATA[This week, we&#8217;ll take a break from higher level problems and technology posts to deal with just a little code problem that a lot of us have probably faced. It&#8217;s nothing fancy or too hard, but it may save one &#8230; <a href="http://www.obsidianscheduler.com/blog/computing-common-and-unique-elements-in-multiple-collections-java/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
		<wfw:commentRss>http://www.obsidianscheduler.com/blog/computing-common-and-unique-elements-in-multiple-collections-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Obsidian Scheduler 1.3 Released!</title>
		<link>http://www.obsidianscheduler.com/blog/obsidian-scheduler-1-3-released/</link>
		<comments>http://www.obsidianscheduler.com/blog/obsidian-scheduler-1-3-released/#comments</comments>
		<pubDate>Wed, 29 Feb 2012 18:28:23 +0000</pubDate>
		<dc:creator>craig</dc:creator>
				<category><![CDATA[Carfey Software]]></category>
		<category><![CDATA[Scheduler]]></category>

		<guid isPermaLink="false">http://www.carfey.com/blog/?p=171</guid>
		<description><![CDATA[We&#8217;ve completed an incremental release for Obsidian Scheduler. Version 1.3 is now available here. Some of the highlights: Sent notifications view Free groovy job for reflectively calling existing code &#8211; New jobs without builds! Annotation for class/method of job Bug &#8230; <a href="http://www.obsidianscheduler.com/blog/obsidian-scheduler-1-3-released/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
		<wfw:commentRss>http://www.obsidianscheduler.com/blog/obsidian-scheduler-1-3-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Files and Directories in the JDK</title>
		<link>http://www.obsidianscheduler.com/blog/files-and-directories-in-the-jdk/</link>
		<comments>http://www.obsidianscheduler.com/blog/files-and-directories-in-the-jdk/#comments</comments>
		<pubDate>Tue, 28 Feb 2012 03:25:13 +0000</pubDate>
		<dc:creator>craig</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.carfey.com/blog/?p=161</guid>
		<description><![CDATA[In Java, java.io.File is one of the more frequently used low-level API objects. It also happens to be lacking in some basic functionality that we&#8217;ve all needed at some point, doesn&#8217;t provide different representations/API for files and directories and doesn&#8217;t &#8230; <a href="http://www.obsidianscheduler.com/blog/files-and-directories-in-the-jdk/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
		<wfw:commentRss>http://www.obsidianscheduler.com/blog/files-and-directories-in-the-jdk/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Problems with ORMs Part 2 &#8211; Queries</title>
		<link>http://www.obsidianscheduler.com/blog/problems-with-orms-part-2-queries/</link>
		<comments>http://www.obsidianscheduler.com/blog/problems-with-orms-part-2-queries/#comments</comments>
		<pubDate>Wed, 08 Feb 2012 05:53:38 +0000</pubDate>
		<dc:creator>carey</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[orm]]></category>

		<guid isPermaLink="false">http://www.carfey.com/blog/?p=158</guid>
		<description><![CDATA[In my previous post on Object-Relational Mapping tools (ORMs), I discussed various issues that I&#8217;ve faced dealing with the common ORMs out there today, including Hibernate. This included issues related to generating a schema from POJOs, real-world performance and maintenance &#8230; <a href="http://www.obsidianscheduler.com/blog/problems-with-orms-part-2-queries/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
		<wfw:commentRss>http://www.obsidianscheduler.com/blog/problems-with-orms-part-2-queries/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Why you shouldn&#8217;t use Quartz Scheduler</title>
		<link>http://www.obsidianscheduler.com/blog/why-you-shouldnt-use-quartz-scheduler/</link>
		<comments>http://www.obsidianscheduler.com/blog/why-you-shouldnt-use-quartz-scheduler/#comments</comments>
		<pubDate>Fri, 13 Jan 2012 23:37:03 +0000</pubDate>
		<dc:creator>craig</dc:creator>
				<category><![CDATA[Automation]]></category>
		<category><![CDATA[Carfey Software]]></category>
		<category><![CDATA[Scheduler]]></category>
		<category><![CDATA[quartz scheduler obsidian]]></category>

		<guid isPermaLink="false">http://www.carfey.com/blog/?p=155</guid>
		<description><![CDATA[If you need to schedule jobs in Java, it is fairly common in the industry to use Quartz directly or via Spring integration. Quartz&#8217; home page at the time of writing claims that using quartz is a simple 3-step process: &#8230; <a href="http://www.obsidianscheduler.com/blog/why-you-shouldnt-use-quartz-scheduler/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
		<wfw:commentRss>http://www.obsidianscheduler.com/blog/why-you-shouldnt-use-quartz-scheduler/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Easy Deep Cloning of Serializable and Non-Serializable Objects in Java</title>
		<link>http://www.obsidianscheduler.com/blog/easy-deep-cloning-of-serializable-and-non-serializable-objects-in-java/</link>
		<comments>http://www.obsidianscheduler.com/blog/easy-deep-cloning-of-serializable-and-non-serializable-objects-in-java/#comments</comments>
		<pubDate>Mon, 12 Dec 2011 01:15:36 +0000</pubDate>
		<dc:creator>carey</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[clone]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[serializable]]></category>

		<guid isPermaLink="false">http://www.carfey.com/blog/?p=150</guid>
		<description><![CDATA[Frequently developers rely on 3d party libraries to avoid reinventing the wheel, particularly in the Java world, with projects like Apache and Spring so prevalent. When dealing with these frameworks, we often have little or no control of the behaviour &#8230; <a href="http://www.obsidianscheduler.com/blog/easy-deep-cloning-of-serializable-and-non-serializable-objects-in-java/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
		<wfw:commentRss>http://www.obsidianscheduler.com/blog/easy-deep-cloning-of-serializable-and-non-serializable-objects-in-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ignoring Self-Signed Certificates in Java</title>
		<link>http://www.obsidianscheduler.com/blog/ignoring-self-signed-certificates-in-java/</link>
		<comments>http://www.obsidianscheduler.com/blog/ignoring-self-signed-certificates-in-java/#comments</comments>
		<pubDate>Thu, 01 Dec 2011 04:43:18 +0000</pubDate>
		<dc:creator>carey</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[ssl]]></category>

		<guid isPermaLink="false">http://www.carfey.com/blog/?p=149</guid>
		<description><![CDATA[A problem that I&#8217;ve hit a few times in my career is that we sometimes want to allow self-signed certificates for development or testing purposes. A quick Google search shows the trouble that countless Java developers have run into over &#8230; <a href="http://www.obsidianscheduler.com/blog/ignoring-self-signed-certificates-in-java/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
		<wfw:commentRss>http://www.obsidianscheduler.com/blog/ignoring-self-signed-certificates-in-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java 7 &#8211; Project Coin Feature Overview</title>
		<link>http://www.obsidianscheduler.com/blog/java-7-project-coin-feature-overview/</link>
		<comments>http://www.obsidianscheduler.com/blog/java-7-project-coin-feature-overview/#comments</comments>
		<pubDate>Wed, 16 Nov 2011 23:00:09 +0000</pubDate>
		<dc:creator>craig</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[java 7]]></category>

		<guid isPermaLink="false">http://www.carfey.com/blog/?p=145</guid>
		<description><![CDATA[We discussed previously everything that didn&#8217;t make it into Java 7 and then reviewed the useful Fork/Join Framework that did make it in. Today&#8217;s post will take us through each of the Project Coin features &#8211; a collection of small &#8230; <a href="http://www.obsidianscheduler.com/blog/java-7-project-coin-feature-overview/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
		<wfw:commentRss>http://www.obsidianscheduler.com/blog/java-7-project-coin-feature-overview/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Testing GWT Apps with Selenium or WebDriver</title>
		<link>http://www.obsidianscheduler.com/blog/testing-gwt-apps-with-selenium-or-webdriver/</link>
		<comments>http://www.obsidianscheduler.com/blog/testing-gwt-apps-with-selenium-or-webdriver/#comments</comments>
		<pubDate>Thu, 27 Oct 2011 04:42:26 +0000</pubDate>
		<dc:creator>carey</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jUnit]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://www.carfey.com/blog/?p=142</guid>
		<description><![CDATA[Good functional testing is one of the most difficult tasks for web application developers and their teams. It is a challenge to develop tests that are cheap to maintain and yet provide good test coverage, which helps reduce QA costs &#8230; <a href="http://www.obsidianscheduler.com/blog/testing-gwt-apps-with-selenium-or-webdriver/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
		<wfw:commentRss>http://www.obsidianscheduler.com/blog/testing-gwt-apps-with-selenium-or-webdriver/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Using mockFor() and HQL</title>
		<link>http://www.obsidianscheduler.com/blog/using-mockfor-and-hql/</link>
		<comments>http://www.obsidianscheduler.com/blog/using-mockfor-and-hql/#comments</comments>
		<pubDate>Thu, 29 Sep 2011 15:53:38 +0000</pubDate>
		<dc:creator>craig</dc:creator>
				<category><![CDATA[Grails]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[grails]]></category>
		<category><![CDATA[groovy]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://www.carfey.com/blog/?p=138</guid>
		<description><![CDATA[In a previous post, we discussed how to actually go about combining mockFor() and mockDomain() when it comes to unit test support for .withCriteria. If your code uses the Gorm.createCriteria(), you&#8217;ll likely want to switch to .withCriteria to make it &#8230; <a href="http://www.obsidianscheduler.com/blog/using-mockfor-and-hql/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
		<wfw:commentRss>http://www.obsidianscheduler.com/blog/using-mockfor-and-hql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Swapping out Spring Bean Configuration at Runtime</title>
		<link>http://www.obsidianscheduler.com/blog/swapping-out-spring-bean-configuration-at-runtime/</link>
		<comments>http://www.obsidianscheduler.com/blog/swapping-out-spring-bean-configuration-at-runtime/#comments</comments>
		<pubDate>Mon, 19 Sep 2011 02:29:57 +0000</pubDate>
		<dc:creator>carey</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[spring]]></category>

		<guid isPermaLink="false">http://www.carfey.com/blog/?p=135</guid>
		<description><![CDATA[Most Java developers these days deal with Spring on a regular basis and there are lots of us out there that have become familiar with its abilities as well as its limitations. I recently came across a problem that I &#8230; <a href="http://www.obsidianscheduler.com/blog/swapping-out-spring-bean-configuration-at-runtime/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
		<wfw:commentRss>http://www.obsidianscheduler.com/blog/swapping-out-spring-bean-configuration-at-runtime/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Evolving Document Structures with Morphia and MongoDB</title>
		<link>http://www.obsidianscheduler.com/blog/evolving-document-structures-with-morphia-and-mongodb/</link>
		<comments>http://www.obsidianscheduler.com/blog/evolving-document-structures-with-morphia-and-mongodb/#comments</comments>
		<pubDate>Thu, 08 Sep 2011 03:30:36 +0000</pubDate>
		<dc:creator>carey</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[mongodb]]></category>
		<category><![CDATA[morphia]]></category>
		<category><![CDATA[nosql]]></category>

		<guid isPermaLink="false">http://www.carfey.com/blog/?p=133</guid>
		<description><![CDATA[In my previous post on Morphia, I went through some typical usages and mentioned some caveats and workarounds for known problems. I showed how easy it is to work with Morphia and how cleanly it interacts with the Java world. &#8230; <a href="http://www.obsidianscheduler.com/blog/evolving-document-structures-with-morphia-and-mongodb/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
		<wfw:commentRss>http://www.obsidianscheduler.com/blog/evolving-document-structures-with-morphia-and-mongodb/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Combining mockDomain() and mockFor() in Grails</title>
		<link>http://www.obsidianscheduler.com/blog/combining-mockdomain-and-mockfor-in-grails/</link>
		<comments>http://www.obsidianscheduler.com/blog/combining-mockdomain-and-mockfor-in-grails/#comments</comments>
		<pubDate>Sat, 03 Sep 2011 03:44:33 +0000</pubDate>
		<dc:creator>craig</dc:creator>
				<category><![CDATA[Grails]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[grails]]></category>
		<category><![CDATA[groovy]]></category>
		<category><![CDATA[jUnit]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://www.carfey.com/blog/?p=131</guid>
		<description><![CDATA[As we&#8217;ve mentioned before, anything you can do to make automated testing easier in your Grails project will help you achieve one of the primary goals of the platform &#8211; high productivity. Since you&#8217;ve chosen the Grails platform, you&#8217;re likely &#8230; <a href="http://www.obsidianscheduler.com/blog/combining-mockdomain-and-mockfor-in-grails/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
		<wfw:commentRss>http://www.obsidianscheduler.com/blog/combining-mockdomain-and-mockfor-in-grails/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Java 7 &#8211; Fork/Join</title>
		<link>http://www.obsidianscheduler.com/blog/java-7-forkjoin/</link>
		<comments>http://www.obsidianscheduler.com/blog/java-7-forkjoin/#comments</comments>
		<pubDate>Wed, 24 Aug 2011 04:43:46 +0000</pubDate>
		<dc:creator>craig</dc:creator>
				<category><![CDATA[Concurrency]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[concurrency]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[java 7]]></category>

		<guid isPermaLink="false">http://www.carfey.com/blog/?p=127</guid>
		<description><![CDATA[While we lamented how feature-poor Java 7 turned out to be, one thing that made it that turns out to be a boon to high-performance concurrent development is the new Fork/Join framework. This framework is targeted at multi-processor systems (really &#8230; <a href="http://www.obsidianscheduler.com/blog/java-7-forkjoin/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
		<wfw:commentRss>http://www.obsidianscheduler.com/blog/java-7-forkjoin/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Java Concurrency Part 6 – CountDownLatch</title>
		<link>http://www.obsidianscheduler.com/blog/java-concurrency-part-5-%e2%80%93-countdownlatch/</link>
		<comments>http://www.obsidianscheduler.com/blog/java-concurrency-part-5-%e2%80%93-countdownlatch/#comments</comments>
		<pubDate>Wed, 20 Jul 2011 03:59:26 +0000</pubDate>
		<dc:creator>carey</dc:creator>
				<category><![CDATA[Concurrency]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[concurrency]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://www.carfey.com/blog/?p=124</guid>
		<description><![CDATA[Some concurrency utilities in Java naturally get more attention than others just because they serve general purpose problems instead of more specific ones. Most of us encounter things like executor services and concurrent collections fairly often. Other utilities are less &#8230; <a href="http://www.obsidianscheduler.com/blog/java-concurrency-part-5-%e2%80%93-countdownlatch/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
		<wfw:commentRss>http://www.obsidianscheduler.com/blog/java-concurrency-part-5-%e2%80%93-countdownlatch/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Testing in Grails &#8211; Common base class for Unit/Integration/Functional Tests</title>
		<link>http://www.obsidianscheduler.com/blog/testing-in-grails-common-base-class-for-unit-integration-functional-tests/</link>
		<comments>http://www.obsidianscheduler.com/blog/testing-in-grails-common-base-class-for-unit-integration-functional-tests/#comments</comments>
		<pubDate>Mon, 11 Jul 2011 06:00:13 +0000</pubDate>
		<dc:creator>craig</dc:creator>
				<category><![CDATA[Grails]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[grails]]></category>
		<category><![CDATA[groovy]]></category>
		<category><![CDATA[m jUnit]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://www.carfey.com/blog/?p=108</guid>
		<description><![CDATA[Groovy and even more so, Grails, demands automated testing. In fact, extensive coverage is a must to have confidence that we are not regressing or introducing runtime resolution issues with a single errant keystroke. Grails expects you to write tests &#8230; <a href="http://www.obsidianscheduler.com/blog/testing-in-grails-common-base-class-for-unit-integration-functional-tests/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
		<wfw:commentRss>http://www.obsidianscheduler.com/blog/testing-in-grails-common-base-class-for-unit-integration-functional-tests/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Testing Failure Cases in jUnit in Java &amp; Groovy</title>
		<link>http://www.obsidianscheduler.com/blog/testing-failure-cases-in-junit-in-java-groovy/</link>
		<comments>http://www.obsidianscheduler.com/blog/testing-failure-cases-in-junit-in-java-groovy/#comments</comments>
		<pubDate>Thu, 07 Jul 2011 02:31:09 +0000</pubDate>
		<dc:creator>craig</dc:creator>
				<category><![CDATA[Groovy]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[groovy]]></category>
		<category><![CDATA[jUnit]]></category>
		<category><![CDATA[unit test]]></category>

		<guid isPermaLink="false">http://www.carfey.com/blog/?p=112</guid>
		<description><![CDATA[Unit testing expected failure cases is just as important as testing expected positive behaviour. In fact, you could argue that ensuring all failures are happening as expected is more important since it&#8217;s one of your best defenses against bad data. &#8230; <a href="http://www.obsidianscheduler.com/blog/testing-failure-cases-in-junit-in-java-groovy/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
		<wfw:commentRss>http://www.obsidianscheduler.com/blog/testing-failure-cases-in-junit-in-java-groovy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eclipse and Memory Analyzer (MAT)</title>
		<link>http://www.obsidianscheduler.com/blog/eclipse-and-memory-analyzer-mat/</link>
		<comments>http://www.obsidianscheduler.com/blog/eclipse-and-memory-analyzer-mat/#comments</comments>
		<pubDate>Wed, 22 Jun 2011 03:31:24 +0000</pubDate>
		<dc:creator>craig</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[memory]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://www.carfey.com/blog/?p=100</guid>
		<description><![CDATA[In times past, when it came to tracking down sporadic memory problems in a complex Java application, it required using a commercial product such as JProbe or a lot of painful and inefficient attempts to recreate the issue. Even if &#8230; <a href="http://www.obsidianscheduler.com/blog/eclipse-and-memory-analyzer-mat/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
		<wfw:commentRss>http://www.obsidianscheduler.com/blog/eclipse-and-memory-analyzer-mat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Problems with ORMs</title>
		<link>http://www.obsidianscheduler.com/blog/problems-with-orms/</link>
		<comments>http://www.obsidianscheduler.com/blog/problems-with-orms/#comments</comments>
		<pubDate>Wed, 01 Jun 2011 04:27:16 +0000</pubDate>
		<dc:creator>carey</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[orm]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://www.carfey.com/blog/?p=93</guid>
		<description><![CDATA[Object Relational Mapping tools like Hibernate have helped developers make huge productivity gains in dealing with relational databases in the past several years. ORMs free developers to focus on application logic and avoid writing a lot of boilerplate SQL for &#8230; <a href="http://www.obsidianscheduler.com/blog/problems-with-orms/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
		<wfw:commentRss>http://www.obsidianscheduler.com/blog/problems-with-orms/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Groovy for Scheduling</title>
		<link>http://www.obsidianscheduler.com/blog/groovy-for-scheduling/</link>
		<comments>http://www.obsidianscheduler.com/blog/groovy-for-scheduling/#comments</comments>
		<pubDate>Sat, 21 May 2011 02:02:45 +0000</pubDate>
		<dc:creator>craig</dc:creator>
				<category><![CDATA[Groovy]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Scheduler]]></category>
		<category><![CDATA[groovy]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[scheduler]]></category>

		<guid isPermaLink="false">http://www.carfey.com/blog/?p=90</guid>
		<description><![CDATA[While we&#8217;ve already written a post on our scripting support in Obsidian, this post will focus specifically on our Groovy support, what we use it for and what it makes possible for you. Given that Groovy is built for the &#8230; <a href="http://www.obsidianscheduler.com/blog/groovy-for-scheduling/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
		<wfw:commentRss>http://www.obsidianscheduler.com/blog/groovy-for-scheduling/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java 7 is Pathetic</title>
		<link>http://www.obsidianscheduler.com/blog/java-7-is-pathetic/</link>
		<comments>http://www.obsidianscheduler.com/blog/java-7-is-pathetic/#comments</comments>
		<pubDate>Thu, 12 May 2011 02:46:33 +0000</pubDate>
		<dc:creator>carey</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[java7]]></category>

		<guid isPermaLink="false">http://www.carfey.com/blog/?p=88</guid>
		<description><![CDATA[Java 7 is finally nearing general release, but I have to say that I&#8217;m fairly unimpressed by the features being delivered considering Java 6 was released 4 1/2 years ago. It&#8217;s already been delayed for years, and what is there &#8230; <a href="http://www.obsidianscheduler.com/blog/java-7-is-pathetic/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
		<wfw:commentRss>http://www.obsidianscheduler.com/blog/java-7-is-pathetic/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Scheduler Monitoring Done Right</title>
		<link>http://www.obsidianscheduler.com/blog/scheduler-monitoring-done-right/</link>
		<comments>http://www.obsidianscheduler.com/blog/scheduler-monitoring-done-right/#comments</comments>
		<pubDate>Sat, 07 May 2011 02:15:51 +0000</pubDate>
		<dc:creator>carey</dc:creator>
				<category><![CDATA[Automation]]></category>
		<category><![CDATA[Carfey Software]]></category>
		<category><![CDATA[administration monitoring logging]]></category>

		<guid isPermaLink="false">http://www.carfey.com/blog/?p=84</guid>
		<description><![CDATA[One of the most important features of Obsidian is the ability to be notified of application events and also quickly locate and correct any issues that arise. While products like Quartz and cron4j give us the basic scheduling, we have &#8230; <a href="http://www.obsidianscheduler.com/blog/scheduler-monitoring-done-right/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
		<wfw:commentRss>http://www.obsidianscheduler.com/blog/scheduler-monitoring-done-right/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
