<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.1.3" -->
<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/"
	>

<channel>
	<title>Talk Nerdy To Me - Java, C#, .Net</title>
	<link>http://www.gavaghan.org/blog</link>
	<description>Mike Gavaghan blogs on Java, C#, .Net, and the software industry</description>
	<pubDate>Wed, 11 Jun 2008 19:27:43 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.1.3</generator>
	<language>en</language>
			<item>
		<title>Kill Spam With Real-Time DNS Blacklists</title>
		<link>http://www.gavaghan.org/blog/2008/06/11/kill-spam-with-real-time-dns-blacklists/</link>
		<comments>http://www.gavaghan.org/blog/2008/06/11/kill-spam-with-real-time-dns-blacklists/#comments</comments>
		<pubDate>Wed, 11 Jun 2008 19:27:43 +0000</pubDate>
		<dc:creator>Mike Gavaghan</dc:creator>
		
		<category><![CDATA[Technical Articles]]></category>

		<guid isPermaLink="false">http://www.gavaghan.org/blog/2008/06/11/kill-spam-with-real-time-dns-blacklists/</guid>
		<description><![CDATA[A great Open Source project for gaining understanding about e-mail systems, including an in-depth look at SMTP and POP3, is the Java-based Apache JAMES Project.  Although JAMES has the unfortunate shortcoming of being built around the now defunct and unsupported Apache Avalon Framework, it’s still a fantastic learning tool for understanding email protocols, mail delivery, and spam filtering.  Not only that, it’s a fully functional, enterprise-ready mail server that can be up and running with minimal configuration.

One technology implemented by JAMES for spam filtering is real-time DNS blacklists.  DNSBLs identify the IP addresses of potential spam sources or machines known to be delivering spam (as determined by the sometimes controversial policies of the list owner).  Spam blacklists date back to 1996 with Paul Vixie’s Mail Abuse Prevention System, and are now used by ISPs and corporate mail systems around the world.  Countless organizations maintain blacklists, and Web sites like MX Toolbox permit ad hoc queries of IP addresses against dozens of published lists.]]></description>
		<wfw:commentRss>http://www.gavaghan.org/blog/2008/06/11/kill-spam-with-real-time-dns-blacklists/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Got Requirements?  If Not, You&#8217;re Doomed</title>
		<link>http://www.gavaghan.org/blog/2008/03/31/got-requirements-if-not-youre-doomed/</link>
		<comments>http://www.gavaghan.org/blog/2008/03/31/got-requirements-if-not-youre-doomed/#comments</comments>
		<pubDate>Mon, 31 Mar 2008 11:31:07 +0000</pubDate>
		<dc:creator>Mike Gavaghan</dc:creator>
		
		<category><![CDATA[Commentary]]></category>

		<guid isPermaLink="false">http://www.gavaghan.org/blog/2008/03/31/got-requirements-if-not-youre-doomed/</guid>
		<description><![CDATA[Yet another software development disaster is headed for the digital trash heap of failed projects.  This time, the casualty is software funded by the U. S. Census Bureau.  The Associated Press reports failure to deliver usable software to census enumerators could add as much as $2 billion to the 2010 census. Worse, the AP reports "census officials are considering a return to using paper and pencil to count every man, woman and child in the nation."

This is a spectacular train wreck that had doom written all over it from Day One.  It’s a familiar, predictable pattern constantly repeated since the first clueless manager commanded "just make it user friendly".]]></description>
		<wfw:commentRss>http://www.gavaghan.org/blog/2008/03/31/got-requirements-if-not-youre-doomed/feed/</wfw:commentRss>
		</item>
		<item>
		<title>JUnit Factory Part 3: Improving Code Coverage</title>
		<link>http://www.gavaghan.org/blog/2008/02/10/junit-factory-part-3-improving-code-coverage/</link>
		<comments>http://www.gavaghan.org/blog/2008/02/10/junit-factory-part-3-improving-code-coverage/#comments</comments>
		<pubDate>Mon, 11 Feb 2008 03:49:47 +0000</pubDate>
		<dc:creator>Mike Gavaghan</dc:creator>
		
		<category><![CDATA[Technical Articles]]></category>

		<guid isPermaLink="false">http://www.gavaghan.org/blog/2008/02/10/junit-factory-part-3-improving-code-coverage/</guid>
		<description><![CDATA[JUnit Factory is rather clever how it analyzes and executes your code to generate characterization tests. However, legacy Java code was generally not written with testability in mind. This sometimes makes it difficult for JUnit Factory to attain complete coverage of your code due to the need for objects to exist in a complex state or the need to interact with an external resource such as a database.

JUnit Factory is often able to generate mock instances automatically  for problematic classes. When automocking fails, the developer can improve coverage by either extracting behaviors into private methods or by providing hints to JUnit Factory in the form of test data helpers.]]></description>
		<wfw:commentRss>http://www.gavaghan.org/blog/2008/02/10/junit-factory-part-3-improving-code-coverage/feed/</wfw:commentRss>
		</item>
		<item>
		<title>JUnit Factory Part 2: Finding Regressions</title>
		<link>http://www.gavaghan.org/blog/2008/01/24/junit-factory-part-2-finding-regressions/</link>
		<comments>http://www.gavaghan.org/blog/2008/01/24/junit-factory-part-2-finding-regressions/#comments</comments>
		<pubDate>Fri, 25 Jan 2008 02:59:34 +0000</pubDate>
		<dc:creator>Mike Gavaghan</dc:creator>
		
		<category><![CDATA[Technical Articles]]></category>

		<guid isPermaLink="false">http://www.gavaghan.org/blog/2008/01/24/junit-factory-part-2-finding-regressions/</guid>
		<description><![CDATA[Characterization tests provide a safety net for your legacy Java code by helping identify unintended changes in software behavior caused by code maintenance.  JUnit Factory (http://www.junitfactory.com) from Agitar Software (http://www.agitar.com) may be used to automatically generate these tests for you.  In this post, we’ll take a look at what happens to these characterization tests when a simple code change is made.]]></description>
		<wfw:commentRss>http://www.gavaghan.org/blog/2008/01/24/junit-factory-part-2-finding-regressions/feed/</wfw:commentRss>
		</item>
		<item>
		<title>JUnit Factory Part 1: Generating Tests</title>
		<link>http://www.gavaghan.org/blog/2008/01/15/junit-factory-part-1-generating-tests/</link>
		<comments>http://www.gavaghan.org/blog/2008/01/15/junit-factory-part-1-generating-tests/#comments</comments>
		<pubDate>Tue, 15 Jan 2008 17:03:28 +0000</pubDate>
		<dc:creator>Mike Gavaghan</dc:creator>
		
		<category><![CDATA[Technical Articles]]></category>

		<guid isPermaLink="false">http://www.gavaghan.org/blog/2008/01/15/junit-factory-part-1-generating-tests/</guid>
		<description><![CDATA[JUnit Factory ( http://www.junitfactory.com/ ) is a free Eclipse plug-in from Agitar Software ( http://www.agitar.com/ ) that generates characterization tests for your Java code. For more background on what characterizations tests are, and how you use them, you’ll want read my post “Characterization Tests: How To Deal With Legacy Java Code”.

This article describes how to generate tests for a simple Java class and how to read the tests. Not all of your real code will be this simple, and not all generated tests will be this simple, either. But, bear with me as we start small and work our way up.]]></description>
		<wfw:commentRss>http://www.gavaghan.org/blog/2008/01/15/junit-factory-part-1-generating-tests/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Characterization Tests: How To Deal With Legacy Java Code</title>
		<link>http://www.gavaghan.org/blog/2008/01/04/characterization-tests-how-to-deal-with-legacy-java-code/</link>
		<comments>http://www.gavaghan.org/blog/2008/01/04/characterization-tests-how-to-deal-with-legacy-java-code/#comments</comments>
		<pubDate>Sat, 05 Jan 2008 02:59:26 +0000</pubDate>
		<dc:creator>Mike Gavaghan</dc:creator>
		
		<category><![CDATA[Technical Articles]]></category>

		<guid isPermaLink="false">http://www.gavaghan.org/blog/2008/01/04/characterization-tests-how-to-deal-with-legacy-java-code/</guid>
		<description><![CDATA[Companies have invested billions of dollars over the last decade building components and applications based on the Java framework. This work represents a wealth of expertise and collective knowledge that firms must protect and maintain. Unfortunately, in the dynamic field of software development where programmers change jobs, on average, every 18 months, the original developers on these past projects probably aren’t around anymore.

As a result, Java developers seldom have the luxury of working on true greenfield projects. Instead, they are faced with adding enhancements and fixing bugs on projects built upon a code base they didn’t write and don’t fully understand. How can developers safely make changes to legacy code without accidentally breaking something unrelated?

Characterization tests provide a safety net – a change detection engine – that identifies behavioral changes in legacy code in order to remedy regressions early in the development process.  Fixing regressions early shortens development timelines, increases code quality, and allows a team to become more agile. You can automatically generate characterization tests using the free JUnit Factory for Java (http://www.junitfactory.com) from Agitar Software.]]></description>
		<wfw:commentRss>http://www.gavaghan.org/blog/2008/01/04/characterization-tests-how-to-deal-with-legacy-java-code/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Whatever Happened to the &#8220;Old School&#8221; Programmers?</title>
		<link>http://www.gavaghan.org/blog/2007/11/26/what-ever-happened-to-the-old-school-programmers/</link>
		<comments>http://www.gavaghan.org/blog/2007/11/26/what-ever-happened-to-the-old-school-programmers/#comments</comments>
		<pubDate>Mon, 26 Nov 2007 05:25:38 +0000</pubDate>
		<dc:creator>Mike Gavaghan</dc:creator>
		
		<category><![CDATA[Commentary]]></category>

		<guid isPermaLink="false">http://www.gavaghan.org/blog/2007/11/26/what-ever-happened-to-the-old-school-programmers/</guid>
		<description><![CDATA[Uh, oh. I think I'm way too young to sound like such a curmudgeon, but I just can't help myself. Before my recent move to a post-sales role, I spent 15 years writing software professionally. I thought at this point in my career I'd qualify as "the wise elder" - instead, I guess I'm just "the crazy old man who mumbles to himself."

Remember the days of eagerly poring over core dumps to quash that nasty bug? The fascination of learning something new? The determination to write code properly so it could be maintained and easily understood by others? Remember when "so what? it works" just wouldn't cut it for maintainable design?

I loved it. So, what is it with kids these days?]]></description>
		<wfw:commentRss>http://www.gavaghan.org/blog/2007/11/26/what-ever-happened-to-the-old-school-programmers/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Java, GPS Receivers, and Geocaching: Vincenty’s Formula</title>
		<link>http://www.gavaghan.org/blog/2007/11/16/java-gps-receivers-and-geocaching-vincentys-formula/</link>
		<comments>http://www.gavaghan.org/blog/2007/11/16/java-gps-receivers-and-geocaching-vincentys-formula/#comments</comments>
		<pubDate>Fri, 16 Nov 2007 18:48:43 +0000</pubDate>
		<dc:creator>Mike Gavaghan</dc:creator>
		
		<category><![CDATA[Technical Articles]]></category>

		<guid isPermaLink="false">http://www.gavaghan.org/blog/2007/11/16/java-gps-receivers-and-geocaching-vincenty%e2%80%99s-formula/</guid>
		<description><![CDATA[Vincenty's Formula is an iterative solution for calculating the distance and direction between two points along the surface of Earth. For clarity, I've stripped out portions of the code I've put up for discussion, but you can download the entire Java source code from here. If you prefer C#, please see the C# version of this discussion.

Several years ago, I stumbled on a great pastime called "geocaching." It's a worldwide treasure hunting game where participants use handheld GPS receivers to find hidden "caches" - small boxes filled with prizes, trinkets, and "travel bugs". The caches are hidden by other participants who post nothing more than the latitude and longitude on a website like Geocaching.com. My children and I have had a blast. It's a great way for a grown man to justify playing in the woods (and buying an expensive gadget!) under the pretense of "playing with the kids." With over 420,000 caches in 222 countries on all continents (including Antarctica!) there are bound to be several near you.]]></description>
		<wfw:commentRss>http://www.gavaghan.org/blog/2007/11/16/java-gps-receivers-and-geocaching-vincentys-formula/feed/</wfw:commentRss>
<enclosure url='http://www.gavaghan.org/blog/uploads/geocaching/Geocaching.mpg' length='8263872' type='video/mpeg'/>
		</item>
	</channel>
</rss>
