<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-3411034</id><updated>2009-03-25T20:55:20.013-05:00</updated><title type='text'>Stephen's Statements</title><subtitle type='html'>A little bit of everything from Stephen Duncan Jr, a Programmer/Web Geek working in the defense industry</subtitle><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default'/><link rel='alternate' type='text/html' href='http://www.stephenduncanjr.com/default.html'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default?start-index=26&amp;max-results=25'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.stephenduncanjr.com/blog.xml'/><author><name>Stephen</name><uri>http://www.blogger.com/profile/13748251815877457714</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>223</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3411034.post-4996025222974819613</id><published>2009-03-15T20:47:00.002-05:00</published><updated>2009-03-15T21:01:20.578-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><category scheme='http://www.blogger.com/atom/ns#' term='meta'/><title type='text'>JQuery For Archives</title><content type='html'>&lt;p&gt;
Instead of working on the conversion of the blog to &lt;a href="http://webby.rubyforge.org/"&gt;Webby&lt;/a&gt;, I spent much of the day playing with &lt;a href="http://jquery.com/"&gt;jQuery&lt;/a&gt; and JavaScript.  A good portion was mostly wasted time attempting to make the loading of the syntax-highlighting scripts more dynamic.  While this ultimately failed, it did get me to re-learn a lot of JavaScript and jQuery.
&lt;/p&gt;
&lt;p&gt;
Rather than put that time completely to waste, I decided to prettify the archives section.  Without JavaScript enabled, you get a linked list of links for each month of each year that I've published something.  Now, with JavaScript, I transform that list of links into drop-downs for each year, where you can select the month within the year, and it will take you to the archive page for that month.
&lt;/p&gt;
&lt;p&gt;
Now, for the code.  First, on each blog page (via the template), I load my JavaScript file, and I load jQuery via &lt;a href="http://code.google.com/apis/ajaxlibs/"&gt;Google AJAX Libraries API&lt;/a&gt;:
&lt;pre class="brush: xml"&gt;
&amp;lt;script type="text/javascript" src="/js/main.js"&gt;&amp;lt;/script&gt;
&amp;lt;script type="text/javascript" src="http://www.google.com/jsapi"&gt;&amp;lt;/script&gt;
&amp;lt;script type="text/javascript"&gt;
    google.load('jquery', '1.3.2');

    google.setOnLoadCallback(function() {
            prettify_archives();
    });
&amp;lt;/script&gt;
&lt;/pre&gt;
This runs prettify_archives function:
&lt;pre class="brush: javascript"&gt;
function prettify_archives() {
    var years = [];

    $("#archives &gt; ul &gt; li").each(function() {
        var year = new RegExp(/\s(\d{4})/).exec($(this).text())[1];

        if ($.inArray(year, years) == -1) {
            years.push(year);
        }
    });

    years.reverse();

    var html = ['&amp;lt;h4 style="margin:0;"&gt;Archives&amp;lt;/h4&gt;'];

    $(years).each(function() {
        html.push('&amp;lt;select style="width: 11em;" ' +
            'onchange="document.location.href=this.options[this.selectedIndex].value;"&gt;');
        html.push('&amp;lt;option selected="selected"&gt;' + this + '&amp;lt;/option&gt;');
        $("#archives &gt; ul &gt; li:contains('" + this + "') &gt; a").each(function() {
            html.push('&amp;lt;option value="' +
                $(this).attr('href')
                + '"&gt;'
                + $(this).text()
                + '&amp;lt;/option&gt;');
        });

        html.push('&amp;lt;/select&gt;&amp;lt;br /&gt;');
    });

    $('#archives &gt; ul').replaceWith(html.join("\n"));
}
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='http://res1.blogblog.com/tracker/3411034-4996025222974819613?l=www.stephenduncanjr.com%2Fdefault.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/4996025222974819613/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3411034&amp;postID=4996025222974819613' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/4996025222974819613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/4996025222974819613'/><link rel='alternate' type='text/html' href='http://www.stephenduncanjr.com/2009/03/jquery-for-archives.html' title='JQuery For Archives'/><author><name>Stephen</name><uri>http://www.blogger.com/profile/13748251815877457714</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3411034.post-6821589411172759141</id><published>2009-03-15T09:18:00.003-05:00</published><updated>2009-03-15T09:32:53.152-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><category scheme='http://www.blogger.com/atom/ns#' term='meta'/><title type='text'>Minor Website Updates</title><content type='html'>&lt;p&gt;
So, I stayed up &lt;em&gt;way&lt;/em&gt; too late last night uploading version after version of this website.  I updated the version of the &lt;a href="http://alexgorbatchev.com/wiki/SyntaxHighlighter"&gt;syntax-highlighter&lt;/a&gt; I used on the one code sample I've posted.  Nothing special there, but the fall-back when Javascript isn't enabled is nicer, as it's a pre-tag, instead of a text-area like before.
&lt;/p&gt;
&lt;p&gt;
I fixed all the pages to have the extension .html instead of .shtml.  The .shtml was leftover from when I used to use server-side-includes instead of a combination of &lt;a href="http://www.blogger.com"&gt;Blogger&lt;/a&gt; templates &amp; &lt;a href="http://webby.rubyforge.org/"&gt;Webby&lt;/a&gt; layouts to handle common layout issues.  Here's the content of the .htaccess file I used to make sure old links are given a permanent (301) redirect to the new extension:
&lt;pre class="brush: plain"&gt;
RewriteEngine On
RewriteBase /
RewriteRule ^(.*)\.shtml$ /$1.html [R=301,L]
&lt;/pre&gt;
&lt;/p&gt;
&lt;p&gt;
During the process, I noticed that Blogger wasn't producing an archive index page anymore.  So I added archives to the sidebar for each blog.  I made my css rules a bit more generic by making sidebar sections a class, instead of duplicating rules for different ids.
&lt;/p&gt;
&lt;p&gt;
All of this took a bit longer than it should because any changes on the Blogger side required republishing the whole site (actually twice, once for the main blog, once for the politics blog).  Whereas, for the non-blog content, I could run Webby locally, rsync it to my VirtualBox Ubuntu Server VM, and test it locally.  So my next task is to figure out how to turn an export of this blog into Webby source files so that I can manage the whole process locally (and get my blog posts into version control as a bonus).
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='http://res1.blogblog.com/tracker/3411034-6821589411172759141?l=www.stephenduncanjr.com%2Fdefault.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/6821589411172759141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3411034&amp;postID=6821589411172759141' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/6821589411172759141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/6821589411172759141'/><link rel='alternate' type='text/html' href='http://www.stephenduncanjr.com/2009/03/minor-website-updates.html' title='Minor Website Updates'/><author><name>Stephen</name><uri>http://www.blogger.com/profile/13748251815877457714</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3411034.post-572325758441494047</id><published>2008-10-16T21:27:00.003-05:00</published><updated>2009-03-15T09:42:58.217-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web'/><category scheme='http://www.blogger.com/atom/ns#' term='meta'/><title type='text'>Twitter</title><content type='html'>&lt;p&gt;
Despite the utter wasteland that is this blog, I've decided to start posting to yet another place on the internet: &lt;a href="https://twitter.com/jrduncans"&gt;Twitter&lt;/a&gt;.  The theory goes that if you're interested in knowing the minutiae of my life, you can follow me on Twitter (or subscribe to my Twitter feed or what have you).  I, knowing that everyone looking at my Twitter posts has implicitly consented to being bombarded with inane details about my day, can safely post such details with the concern of them being "blog-worthy", or even "Facebook-status-worthy".
&lt;/p&gt;
&lt;p&gt;
Now, if only I can do something &lt;em&gt;interesting&lt;/em&gt;, I may have a reason to post something to my blog again...
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='http://res1.blogblog.com/tracker/3411034-572325758441494047?l=www.stephenduncanjr.com%2Fdefault.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/572325758441494047/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3411034&amp;postID=572325758441494047' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/572325758441494047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/572325758441494047'/><link rel='alternate' type='text/html' href='http://www.stephenduncanjr.com/2008/10/twitter.html' title='Twitter'/><author><name>Stephen</name><uri>http://www.blogger.com/profile/13748251815877457714</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3411034.post-8574957445872079778</id><published>2008-06-19T19:23:00.003-05:00</published><updated>2008-06-19T20:32:51.191-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>Unmaintained Web Applications</title><content type='html'>&lt;p&gt;
This week I'm having to finally end my use of two web applications from major vendors.  &lt;a href="http://www.bloglines.com"&gt;Bloglines&lt;/a&gt; had several of my feeds not update properly from June 3 through June 17th.  I still haven't received any follow-up e-mail regarding the issue.  Besides, for a feed-reading application, you'd think Bloglines could manage to communicate to its users through, I don't know, some kind of syndicated XML feed?  On the 16th I was fed up with the lack of a fix, and the lack of a response, so I switched over to Google Reader.  Sure, on the 17th Bloglines finally fixed the issue, but it was way too late by then.  Getting my 309 feeds into Google Reader went fairly smoothly; a few folders weren't created so I had make the folders and place the feeds back into them.  I'll miss Bloglines true "keep unread" or "pinning" feature, as well as the ability to group posts by the feed when reading a folder.  But I'll get used to Google Reader's way of doing things if it means a reliable service that doesn't feel abandoned, despite its ownership by Ask.com.  Plus I'll also get a better feed sharing mechanism, and finally have a Feed Search that works (despite Bloglines being owned by a search company, there's was never helpful).
&lt;/p&gt;
&lt;p&gt;
The same basic experience repeated itself this week, this time from Yahoo.  While the majority of people use &lt;a href="http://del.icio.us"&gt;del.icio.us&lt;/a&gt; for online bookmarking, I'd jumped on Yahoo's other service: &lt;a href="http://myweb2.search.yahoo.com/"&gt;My Web&lt;/a&gt;, mostly because it saved the page contents for you to search through in addition to the page title and tagging.  However, a month or so ago, the RSS feed for my public bookmarks started showing junk.  That was fixed within a week, but it started happening again this week.  Now I can't even log in to the site.  I filled out some tech support form I found on Yahoo (not that easy to find), but I've gotten no response.  I've been able to access the bookmarks through another view (Yahoo's "My Bookmarks"), exported them, and am now importing them to del.icio.us.  Hopefully Yahoo will maintain that a little better.
&lt;/p&gt;
&lt;p&gt;
I guess in once sense this is same feeling everyone who bet on one of several competing technologies and lost feels. There were real benefits that led me to pick the apps I did, but the world didn't agree, and now I've paid the price for sticking with losers too long.  Luckily some level of data portability has made that price a lot lower than it could have been.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Update&lt;/strong&gt;: There are two new feeds you might want to track due to this change:
&lt;ol&gt;
&lt;li&gt;&lt;a href="http://feeds.delicious.com/rss/jrduncans"&gt;My del.icio.us bookmarks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.google.com/reader/public/atom/user/04495378980343823701/state/com.google/broadcast"&gt;My  Google Reader shared items&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
You can also get these changes automatically using my &lt;a href="http://pipes.yahoo.com/pipes/pipe.run?_id=kvDiT_652xGFI58ljwtvUw&amp;_render=rss"&gt;all-in-one Yahoo Pipes feed&lt;/a&gt;.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='http://res1.blogblog.com/tracker/3411034-8574957445872079778?l=www.stephenduncanjr.com%2Fdefault.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/8574957445872079778/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3411034&amp;postID=8574957445872079778' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/8574957445872079778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/8574957445872079778'/><link rel='alternate' type='text/html' href='http://www.stephenduncanjr.com/2008/06/unmaintained-web-applications.html' title='Unmaintained Web Applications'/><author><name>Stephen</name><uri>http://www.blogger.com/profile/13748251815877457714</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3411034.post-4788299812978485094</id><published>2008-02-23T10:33:00.002-05:00</published><updated>2008-02-23T10:37:25.658-05:00</updated><title type='text'>Job Change</title><content type='html'>&lt;p&gt;
You know my blog's neglected when I don't even think to announce a change of job until the weekend after starting at the new place.  On Monday I started working at &lt;a href="http://www.cormineid.com/"&gt;Cormine Intelligent Data&lt;/a&gt;.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='http://res1.blogblog.com/tracker/3411034-4788299812978485094?l=www.stephenduncanjr.com%2Fdefault.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/4788299812978485094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3411034&amp;postID=4788299812978485094' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/4788299812978485094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/4788299812978485094'/><link rel='alternate' type='text/html' href='http://www.stephenduncanjr.com/2008/02/job-change.html' title='Job Change'/><author><name>Stephen</name><uri>http://www.blogger.com/profile/13748251815877457714</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3411034.post-8929134795238931571</id><published>2008-02-14T19:15:00.002-05:00</published><updated>2008-02-14T19:26:10.450-05:00</updated><title type='text'>Definitely, Maybe</title><content type='html'>&lt;p&gt;
I just watched &lt;a href="http://www.imdb.com/title/tt0832266/"&gt;Definitely, Maybe&lt;/a&gt; with Diane as our Valentine's day thing.  It was fantastically cute and sweet.  Ryan Reynolds was funny and charming, as usual.  Isla Fischer was very likeable and adorable.  Abigail Breslin, however, stole the show as the precocious and completely sweet daughter.  I found the movie very enjoyable, though I am a total sucker for all forms of romantic comedies.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='http://res1.blogblog.com/tracker/3411034-8929134795238931571?l=www.stephenduncanjr.com%2Fdefault.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/8929134795238931571/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3411034&amp;postID=8929134795238931571' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/8929134795238931571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/8929134795238931571'/><link rel='alternate' type='text/html' href='http://www.stephenduncanjr.com/2008/02/definitely-maybe.html' title='Definitely, Maybe'/><author><name>Stephen</name><uri>http://www.blogger.com/profile/13748251815877457714</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3411034.post-1910564373022249021</id><published>2007-04-22T13:17:00.000-05:00</published><updated>2007-04-22T14:00:20.029-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>EasyMock-PropertyUtils 1.1 Released</title><content type='html'>I have released &lt;a class="internal" href="http://www.stephenduncanjr.com/projects/easymock-propertyutils/index.html"&gt;EasyMock-PropertyUtils 1.1&lt;/a&gt;, and it's available &lt;a href="http://repo1.maven.org/maven2/com/stephenduncanjr/easymock-propertyutils/1.1/"&gt;in the Maven repository&lt;/a&gt; or for &lt;a href="http://jrduncans.googlecode.com/files/easymock-propertyutils-1.1.zip"&gt;download directly&lt;/a&gt;.  If you have issues, &lt;a href="http://code.google.com/p/jrduncans/issues/list"&gt;post them at the Google Code site&lt;/a&gt;, or ask at the &lt;a href="http://groups.google.com/group/easymock-propertyutils"&gt;Google Group/Mailing List&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
The main changes from 1.0 are:
&lt;ul&gt;
&lt;li&gt;Ability to match against an object&lt;/li&gt;
&lt;li&gt;Static matcher methods are renamed to &lt;code&gt;propEq&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='http://res1.blogblog.com/tracker/3411034-1910564373022249021?l=www.stephenduncanjr.com%2Fdefault.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/1910564373022249021/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3411034&amp;postID=1910564373022249021' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/1910564373022249021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/1910564373022249021'/><link rel='alternate' type='text/html' href='http://www.stephenduncanjr.com/2007/04/easymock-propertyutils-11-released.html' title='EasyMock-PropertyUtils 1.1 Released'/><author><name>Stephen</name><uri>http://www.blogger.com/profile/13748251815877457714</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3411034.post-5462489817226787387</id><published>2007-04-01T09:51:00.000-05:00</published><updated>2007-04-01T09:58:45.906-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='humor'/><title type='text'>April Fool's Day Banned</title><content type='html'>&lt;p&gt;
Due to significant decreases in productivity, the United Nations announced today that it was banning April Fool's Day.  They also cited human rights violations, stating that the shame felt by those who were fooled infringed upon the inherent dignity of all human beings.  A follow-up proposal to categorize all practical jokes as torture under the Geneva Convention is still under deliberation.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='http://res1.blogblog.com/tracker/3411034-5462489817226787387?l=www.stephenduncanjr.com%2Fdefault.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/5462489817226787387/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3411034&amp;postID=5462489817226787387' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/5462489817226787387'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/5462489817226787387'/><link rel='alternate' type='text/html' href='http://www.stephenduncanjr.com/2007/04/april-fools-day-banned.html' title='April Fool&apos;s Day Banned'/><author><name>Stephen</name><uri>http://www.blogger.com/profile/13748251815877457714</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3411034.post-116368250347533351</id><published>2006-11-16T08:04:00.000-05:00</published><updated>2006-11-16T08:11:18.313-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>EasyMock-PropertyUtils 1.0 Released</title><content type='html'>&lt;p&gt;
I've released &lt;a href="http://www.stephenduncanjr.com/projects/easymock-propertyutils/index.html"&gt;EasyMock-PropertyUtils 1.0&lt;/a&gt;, and it's available &lt;a href="http://repo1.maven.org/maven2/com/stephenduncanjr/easymock-propertyutils/1.0/"&gt;in the Maven repository&lt;/a&gt;.  If you have issues, &lt;a href="http://code.google.com/p/jrduncans/issues/list"&gt;post them at the Google Code site&lt;/a&gt;.  If you use it, just post a comment here to let me know.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='http://res1.blogblog.com/tracker/3411034-116368250347533351?l=www.stephenduncanjr.com%2Fdefault.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/116368250347533351/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3411034&amp;postID=116368250347533351' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/116368250347533351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/116368250347533351'/><link rel='alternate' type='text/html' href='http://www.stephenduncanjr.com/2006/11/easymock-propertyutils-10-released.html' title='EasyMock-PropertyUtils 1.0 Released'/><author><name>Stephen</name><uri>http://www.blogger.com/profile/13748251815877457714</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3411034.post-116166126340346484</id><published>2006-10-23T22:37:00.000-05:00</published><updated>2006-10-23T23:24:26.086-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sports'/><title type='text'>Tony Romo</title><content type='html'>&lt;p&gt;
While I've been frustrated by Bledsoe's consistency, I was never among the Dallas Cowboy fans that was calling for Tony Romo to replace Bledsoe.  I didn't think an unproven quarterback could make much difference.  But the drive I just watched Tony Romo lead was very impressive.  No matter how tonight's game finishes, I see Romo as the quarterback for the Cowboys for the rest of the season.  The biggest benefit: it looks like Dallas games will be more exciting on the offensive end.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Update&lt;/strong&gt;: Well, Romo made enough mistakes to make my prediction that he will be the QB the rest of the season questionable.  I think I'd still prefer Romo, but I'm not sure if Bill Parcells will agree.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='http://res1.blogblog.com/tracker/3411034-116166126340346484?l=www.stephenduncanjr.com%2Fdefault.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/116166126340346484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3411034&amp;postID=116166126340346484' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/116166126340346484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/116166126340346484'/><link rel='alternate' type='text/html' href='http://www.stephenduncanjr.com/2006/10/tony-romo.html' title='Tony Romo'/><author><name>Stephen</name><uri>http://www.blogger.com/profile/13748251815877457714</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3411034.post-116145438434308001</id><published>2006-10-21T12:56:00.001-05:00</published><updated>2009-03-15T00:40:17.296-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Steve Yegge: On Programming Better</title><content type='html'>&lt;p&gt;
I've recently finished reading all of &lt;a href="http://steve.yegge.googlepages.com/blog-rants"&gt;Steve Yegge's blog-rants&lt;/a&gt;.  The overarching theme is Steve searching for ways to do better at software development.  For instance, &lt;a href="http://steve.yegge.googlepages.com/being-the-averagest"&gt;Being the Averagest&lt;/a&gt; on why many programmers aren't trying to get better, and &lt;a href="http://steve.yegge.googlepages.com/practicing-programming"&gt;Practicing Programming&lt;/a&gt; on how to get better for those who listened and decided they want to try.  He also chronicles his search for a &lt;a href="http://steve.yegge.googlepages.com/language-grubbing"&gt;better&lt;/a&gt; &lt;a href="http://steve.yegge.googlepages.com/tour-de-babel"&gt;programming&lt;/a&gt; &lt;a href="http://steve.yegge.googlepages.com/language-trickery-and-ejb"&gt;language&lt;/a&gt;.  I suggest reading all of the essays; hopefully they'll inspire you to be a better programmer, and you can take advantage of the work "Stevey" has done to guide you down the path of improvement.  Stevey wrote all these articles while working at Amazon; make sure to also check out his &lt;a href="http://steve-yegge.blogspot.com"&gt;current blog&lt;/a&gt; now that he works at Google.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='http://res1.blogblog.com/tracker/3411034-116145438434308001?l=www.stephenduncanjr.com%2Fdefault.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/116145438434308001/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3411034&amp;postID=116145438434308001' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/116145438434308001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/116145438434308001'/><link rel='alternate' type='text/html' href='http://www.stephenduncanjr.com/2006/10/steve-yegge-on-programming-better.html' title='Steve Yegge: On Programming Better'/><author><name>Stephen</name><uri>http://www.blogger.com/profile/13748251815877457714</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3411034.post-115965267889118677</id><published>2006-09-30T16:43:00.000-05:00</published><updated>2006-09-30T16:44:38.906-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><category scheme='http://www.blogger.com/atom/ns#' term='pictures'/><title type='text'>Scott and Dana's Wedding</title><content type='html'>&lt;p&gt;
My brother, Scott, just &lt;a href="http://flickr.com/photos/stephenduncanjr/sets/72157594305381367/"&gt;got married last night&lt;/a&gt;.  Congratulations Scott and Dana!
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='http://res1.blogblog.com/tracker/3411034-115965267889118677?l=www.stephenduncanjr.com%2Fdefault.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/115965267889118677/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3411034&amp;postID=115965267889118677' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/115965267889118677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/115965267889118677'/><link rel='alternate' type='text/html' href='http://www.stephenduncanjr.com/2006/09/scott-and-danas-wedding.html' title='Scott and Dana&apos;s Wedding'/><author><name>Stephen</name><uri>http://www.blogger.com/profile/13748251815877457714</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3411034.post-115895716286365958</id><published>2006-09-22T15:26:00.000-05:00</published><updated>2006-09-22T15:32:42.876-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Announcing: XPath-Replacement Maven Plugin</title><content type='html'>&lt;p&gt;
I'm looking for feedback on my &lt;a class="internal" href="/projects/xpathreplacement-maven-plugin/index.html"&gt;XPath Replacement Maven Plugin&lt;/a&gt;.  It's barebones right now; please send me any ideas you have on how to make it better, or just let me know if you'r even interested in it.  The goal of the plugin is to allow you to do configuration (similar to normal Ant/Maven filtering), but without requiring placeholders so that your source version has a valid value that let's a developer get going straight from source.
&lt;/p&gt;
&lt;p&gt;
I also updated the &lt;a class="internal" href="/projects/easymock-propertyutils/index.html"&gt;EasyMock Property Utilities&lt;/a&gt; site to include the example posted here on the blog.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='http://res1.blogblog.com/tracker/3411034-115895716286365958?l=www.stephenduncanjr.com%2Fdefault.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/115895716286365958/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3411034&amp;postID=115895716286365958' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/115895716286365958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/115895716286365958'/><link rel='alternate' type='text/html' href='http://www.stephenduncanjr.com/2006/09/announcing-xpath-replacement-maven.html' title='Announcing: XPath-Replacement Maven Plugin'/><author><name>Stephen</name><uri>http://www.blogger.com/profile/13748251815877457714</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3411034.post-115852519263683365</id><published>2006-09-17T15:26:00.001-05:00</published><updated>2009-03-14T23:07:23.713-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>EasyMock-PropertyUtils Example</title><content type='html'>&lt;p&gt;
Here's the promised example of how to use my &lt;a class="internal" href="/projects/easymock-propertyutils/index.html"&gt;EasyMock-PropertyUtils &lt;/a&gt;library.  It's a TestNG test class with two test methods.  The first, &lt;code&gt;testSayHelloTo()&lt;/code&gt; uses the single-property matcher test.  The second, &lt;code&gt;testSay()&lt;/code&gt; uses the multiple-property matcher test by supplying a &lt;code&gt;Map&lt;/code&gt; of property names to property values.  If you haven't used EasyMock before, this should also serve as an example of how EasyMock can allow you to unit test in isolation a method that interacts with another class.  Check out the &lt;a href="http://easymock.org/EasyMock2_2_Documentation.html"&gt;EasyMock Documentation&lt;/a&gt; for more information.
&lt;/p&gt;
&lt;pre class="brush: java"&gt;
package test;

import static com.stephenduncanjr.easymock.EasyMockPropertyUtils.propertiesEq;
import static com.stephenduncanjr.easymock.EasyMockPropertyUtils.propertyEq;
import static org.easymock.EasyMock.createMock;
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.verify;

import java.util.HashMap;
import java.util.Map;

import org.testng.annotations.Test;

/**
 * Test the Service class.
 */
public class ServiceTest
{
    /**
     * Test the sayHelloTo method.
     */
    @Test
    public void testSayHelloTo()
    {
        String address = "someone@example.com";
        MessagingService messagingService = createMock(MessagingService.class);
        messagingService.sendMessage(propertyEq(Message.class, "address", address));
        replay(messagingService);

        Service service = new Service();
        service.setMessagingService(messagingService);
        service.sayHelloTo(address);

        verify(messagingService);
    }

    /**
     * Test the say method.
     */
    @Test
    public void testSay()
    {
        String address = "someone@example.com";
        String text = "some text";

        Map&amp;lt;String, Object&amp;gt; properties = new HashMap&amp;lt;String, Object&amp;gt;();
        properties.put("address", address);
        properties.put("message", text);

        MessagingService messagingService = createMock(MessagingService.class);
        messagingService.sendMessage(propertiesEq(Message.class, properties));
        replay(messagingService);

        Service service = new Service();
        service.setMessagingService(messagingService);
        service.say(address, text);

        verify(messagingService);
    }
}
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='http://res1.blogblog.com/tracker/3411034-115852519263683365?l=www.stephenduncanjr.com%2Fdefault.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/115852519263683365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3411034&amp;postID=115852519263683365' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/115852519263683365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/115852519263683365'/><link rel='alternate' type='text/html' href='http://www.stephenduncanjr.com/2006/09/easymock-propertyutils-example.html' title='EasyMock-PropertyUtils Example'/><author><name>Stephen</name><uri>http://www.blogger.com/profile/13748251815877457714</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3411034.post-115847071961648131</id><published>2006-09-17T00:10:00.000-05:00</published><updated>2006-09-17T15:48:20.293-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Announcing: EasyMock-PropertyUtils</title><content type='html'>&lt;p&gt;
I've created a new open-source project: &lt;a class="internal" href="/projects/easymock-propertyutils/index.html"&gt;EasyMock-PropertyUtils&lt;/a&gt;.  Basically, this library allows you to use JavaBeans-style property matching for arguments when using &lt;a href="http://easymock.org"&gt;EasyMock&lt;/a&gt;.  I plan to add some end-user documentation and blog some more about both EasyMock and this project soon.  This is being done separately from EasyMock because it's use of non-refactoring safe strings doesn't fit the philosophy of EasyMock.  The project is quite small, and I have no idea what the interest-level will be, so I'm just hosting it alongside the rest of &lt;a href="http://code.google.com/p/jrduncans/"&gt;my personal projects&lt;/a&gt; on my &lt;a href="http://code.google.com/hosting/"&gt;Google Code Hosting&lt;/a&gt; site.  Hopefully there isn't something like this already out there that I missed.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='http://res1.blogblog.com/tracker/3411034-115847071961648131?l=www.stephenduncanjr.com%2Fdefault.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/115847071961648131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3411034&amp;postID=115847071961648131' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/115847071961648131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/115847071961648131'/><link rel='alternate' type='text/html' href='http://www.stephenduncanjr.com/2006/09/announcing-easymock-propertyutils.html' title='Announcing: EasyMock-PropertyUtils'/><author><name>Stephen</name><uri>http://www.blogger.com/profile/13748251815877457714</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3411034.post-115676180733142386</id><published>2006-08-28T05:33:00.000-05:00</published><updated>2006-08-28T05:43:27.346-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>Michael J. Totten in Israel</title><content type='html'>&lt;p&gt;
&lt;a href="http://www.michaeltotten.com/"&gt;Michael J. Totten&lt;/a&gt; is a fantastic independent journalist.  He's currently in Isreal.  Check out his &lt;a href="http://www.michaeltotten.com/archives/001251.html"&gt;latest piece on Gaza&lt;/a&gt;.  Or &lt;a href="http://www.michaeltotten.com/archives/001238.html"&gt;this piece from the Israel-Lebanon border&lt;/a&gt;.  Hopefully from there you'll want to read everything he's been writing.  If, like me, you find that Michael is providing valuable information in a direct fashion you can't get elsewhere, then make sure to donate some money to him so he can keep reporting from the Middle East.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='http://res1.blogblog.com/tracker/3411034-115676180733142386?l=www.stephenduncanjr.com%2Fdefault.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/115676180733142386/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3411034&amp;postID=115676180733142386' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/115676180733142386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/115676180733142386'/><link rel='alternate' type='text/html' href='http://www.stephenduncanjr.com/2006/08/michael-j-totten-in-israel.html' title='Michael J. Totten in Israel'/><author><name>Stephen</name><uri>http://www.blogger.com/profile/13748251815877457714</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3411034.post-115560504896761281</id><published>2006-08-14T20:18:00.000-05:00</published><updated>2006-08-14T20:42:02.626-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blogger'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>New Blogger Features</title><content type='html'>&lt;p&gt;
A &lt;a href="http://buzz.blogger.com/2006/08/blogger-in-beta.html"&gt;new version&lt;/a&gt; of &lt;a href="http://www.blogger.com"&gt;Blogger&lt;/a&gt; is in beta now that appears to have the &lt;a href="http://www.stephenduncanjr.com/2006/06/atom-10-and-blogger.shtml"&gt;features&lt;/a&gt; I've been wanting.  Now if only I could get in on the beta...
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Update&lt;/strong&gt;: How will the &lt;a href="http://evhead.com/2006/08/new-blogger-embarking.asp"&gt;new dynamic architecture&lt;/a&gt; impact those of us using the static FTP-to-my-server functionality?
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='http://res1.blogblog.com/tracker/3411034-115560504896761281?l=www.stephenduncanjr.com%2Fdefault.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/115560504896761281/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3411034&amp;postID=115560504896761281' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/115560504896761281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/115560504896761281'/><link rel='alternate' type='text/html' href='http://www.stephenduncanjr.com/2006/08/new-blogger-features.html' title='New Blogger Features'/><author><name>Stephen</name><uri>http://www.blogger.com/profile/13748251815877457714</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3411034.post-115457150153007046</id><published>2006-08-02T21:08:00.000-05:00</published><updated>2006-08-02T21:18:21.540-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>My Google Code Hosted Project</title><content type='html'>&lt;p&gt;
I've &lt;a href="http://code.google.com/p/jrduncans/"&gt;created a project&lt;/a&gt; on &lt;a href="http://code.google.com/hosting/"&gt;Google Code Hosting&lt;/a&gt;.  It's really just a place for me to put code I'm playing with so that it's version-controlled and accessible anywhere.  Right now it has a simple command-line draw-the-high-card game that I'm using to try to learn &lt;a href="http://www.ruby-lang.org/en/"&gt;Ruby&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
While there may be &lt;a href="http://jroller.com/page/fate?entry=another_googleturd"&gt;valid reasons&lt;/a&gt; that Google Code Hosting isn't good enough to really compete for hosting real open-source projects, for my needs nothing beats the no-barrier-to-entry factor here.  If nothing else, it's nice to have a proper SVN repository available to me for free.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='http://res1.blogblog.com/tracker/3411034-115457150153007046?l=www.stephenduncanjr.com%2Fdefault.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/115457150153007046/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3411034&amp;postID=115457150153007046' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/115457150153007046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/115457150153007046'/><link rel='alternate' type='text/html' href='http://www.stephenduncanjr.com/2006/08/my-google-code-hosted-project.html' title='My Google Code Hosted Project'/><author><name>Stephen</name><uri>http://www.blogger.com/profile/13748251815877457714</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3411034.post-115247681839595074</id><published>2006-07-09T15:23:00.000-05:00</published><updated>2006-07-09T18:03:41.580-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sports'/><title type='text'>No Story-Book Ending for Zidane</title><content type='html'>&lt;p&gt;
Rather than a story-book ending for Zinedine Zidane, he's sent off after being red-carded for a totally classless move: head-butting an Italian player in the chest.  Whether his team will also lose the World Cup final remains to be seen...
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Update&lt;/strong&gt;: Zidane's team, France, do lose.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Update 2&lt;/strong&gt;: &lt;a href="http://www.youtube.com/watch?v=zoADvPC7IvI"&gt;Video of the incident&lt;/a&gt;.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='http://res1.blogblog.com/tracker/3411034-115247681839595074?l=www.stephenduncanjr.com%2Fdefault.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/115247681839595074/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3411034&amp;postID=115247681839595074' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/115247681839595074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/115247681839595074'/><link rel='alternate' type='text/html' href='http://www.stephenduncanjr.com/2006/07/no-story-book-ending-for-zidane.html' title='No Story-Book Ending for Zidane'/><author><name>Stephen</name><uri>http://www.blogger.com/profile/13748251815877457714</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3411034.post-115180230372133629</id><published>2006-07-01T20:03:00.000-05:00</published><updated>2006-08-14T20:18:35.926-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='atom'/><category scheme='http://www.blogger.com/atom/ns#' term='blogger'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>Atom 1.0 Switch Trend</title><content type='html'>&lt;p&gt;
&lt;a href="http://www.niallkennedy.com/blog/archives/2006/07/atom-10-now-def.html"&gt;Niall Kennedy made the switch&lt;/a&gt;.  Now will &lt;a href="http://www.blogger.com"&gt;Blogger&lt;/a&gt; step up?
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='http://res1.blogblog.com/tracker/3411034-115180230372133629?l=www.stephenduncanjr.com%2Fdefault.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/115180230372133629/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3411034&amp;postID=115180230372133629' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/115180230372133629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/115180230372133629'/><link rel='alternate' type='text/html' href='http://www.stephenduncanjr.com/2006/07/atom-10-switch-trend.html' title='Atom 1.0 Switch Trend'/><author><name>Stephen</name><uri>http://www.blogger.com/profile/13748251815877457714</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3411034.post-115102858088163279</id><published>2006-06-22T20:57:00.000-05:00</published><updated>2006-06-22T21:09:40.883-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='atom'/><category scheme='http://www.blogger.com/atom/ns#' term='blogger'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>Atom 1.0 and Blogger</title><content type='html'>&lt;p&gt;
Bloglines now has Atom 1.0 support, and though there are &lt;a href="http://www.intertwingly.net/blog/2006/06/21/Forward-Motion"&gt;some problems&lt;/a&gt; there still, it's time for a new target.  I'm sure it's clear from all my posts that I'm a big proponent of Atom 1.0.  However, I probably appeared to be a bit of a hypocrite, using an aggregator that didn't support it, and only providing a deprecated Atom 0.3 feed.  It's true, I'm also lazy and picky, and haven't wanted to make a change in software over these issues.  It's so much more satisfying to simply complain and wait for the software to change so that I don't have to.
&lt;/p&gt;
&lt;p&gt;
To continue that trend: What's up with &lt;a href="http://blogger.com"&gt;Blogger&lt;/a&gt; still producing Atom 0.3 feeds?  Initially, it seemed &lt;a href="http://www.google.com"&gt;Google&lt;/a&gt; gave the Atom movement a big boost by supporting it in Blogger.  But now the Atom 1.0 specificiation has been out for quite some time, and usage of Atom 0.3 is discouraged.  Hopefully the reason for not changing yet was fear about support in aggregators, and with &lt;a href="http://bloglines.com"&gt;Bloglines&lt;/a&gt; probably being the biggest (most users) holdout, maybe now is the time to start seeing Blogger produce Atom 1.0.  A geek can dream...
&lt;/p&gt;
&lt;p&gt;
So, who are the bloggers with clout or at least information about Blogger?  I had been trying to read the blogs of several Blogger engineers, but they mostly moved on, I believe.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='http://res1.blogblog.com/tracker/3411034-115102858088163279?l=www.stephenduncanjr.com%2Fdefault.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/115102858088163279/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3411034&amp;postID=115102858088163279' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/115102858088163279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/115102858088163279'/><link rel='alternate' type='text/html' href='http://www.stephenduncanjr.com/2006/06/atom-10-and-blogger.html' title='Atom 1.0 and Blogger'/><author><name>Stephen</name><uri>http://www.blogger.com/profile/13748251815877457714</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3411034.post-115102771195819079</id><published>2006-06-22T20:41:00.000-05:00</published><updated>2006-06-22T20:55:11.993-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Abdera Project</title><content type='html'>&lt;p&gt;
The &lt;a href="http://incubator.apache.org/abdera/"&gt;Abdera&lt;/a&gt; Apache Incubator project is now up and running.  The project is to provide tools for &lt;a href="http://www.ietf.org/rfc/rfc4287.txt"&gt;The Atom Syndication Format&lt;/a&gt; and &lt;a href="http://www.ietf.org/internet-drafts/draft-ietf-atompub-protocol-08.txt"&gt;The Atom Publishing Protocol&lt;/a&gt;.  Right now I'm mostly contributing by maintaining the &lt;a href="http://maven.apache.org"&gt;Maven&lt;/a&gt; build configuration for the Java implementation.  I hope to be able to do a little more later (especially once the World Cup is over...)
&lt;/p&gt;
&lt;p&gt;
I'm convinced that there's a lot of potential for uses of these two standards (well, soon-to-be-standard in the case of the publishing protocol), beyond blogs &amp;amp; aggregators.  Having a good Java library for working with this stuff is going to enable a lot of applications, and save a lot of time and money for tools and products built on Atom.  Open source projects succeed based on participation, so if you might need to use Atom, then please, come join in.  It's just getting started, so it's a good time to get yourself familiar with the code and get your ideas into the mix.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='http://res1.blogblog.com/tracker/3411034-115102771195819079?l=www.stephenduncanjr.com%2Fdefault.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/115102771195819079/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3411034&amp;postID=115102771195819079' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/115102771195819079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/115102771195819079'/><link rel='alternate' type='text/html' href='http://www.stephenduncanjr.com/2006/06/abdera-project.html' title='Abdera Project'/><author><name>Stephen</name><uri>http://www.blogger.com/profile/13748251815877457714</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3411034.post-115089381801565131</id><published>2006-06-21T07:42:00.000-05:00</published><updated>2006-06-21T07:43:38.026-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='atom'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>Bloglines and Atom: Beginning</title><content type='html'>&lt;p&gt;
&lt;a href="http://www.bloglines.com/about/news#106"&gt;Bloglines has begun adding suport for Atom 1.0&lt;/a&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='http://res1.blogblog.com/tracker/3411034-115089381801565131?l=www.stephenduncanjr.com%2Fdefault.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/115089381801565131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3411034&amp;postID=115089381801565131' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/115089381801565131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/115089381801565131'/><link rel='alternate' type='text/html' href='http://www.stephenduncanjr.com/2006/06/bloglines-and-atom-beginning.html' title='Bloglines and Atom: Beginning'/><author><name>Stephen</name><uri>http://www.blogger.com/profile/13748251815877457714</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3411034.post-114937352811589606</id><published>2006-06-03T17:14:00.000-05:00</published><updated>2006-06-05T17:07:11.773-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Abdera Maven 2 Build</title><content type='html'>&lt;p&gt;
I attempted to make a &lt;a href="http://maven.apache.org"&gt;Maven 2&lt;/a&gt; build for the proposed &lt;a href="http://wiki.apache.org/incubator/AbderaProposal"&gt;Abdera project&lt;/a&gt;.  I've never made a patch before, so I attempted it by checking in the contents of the &lt;a href="http://www.snellspace.com/public/abdera.tar.gz"&gt;original tar&lt;/a&gt; into my local-file-system SVN repository, and then made my changes against that, and finally &lt;a class="internal" href="/files/abdera-maven2-patch.txt"&gt;generated a patch&lt;/a&gt; using the &lt;a href="http://subclipse.tigris.org/"&gt;Subclipse tools&lt;/a&gt;. In case that isn't good enough, I'm also providing &lt;a class="internal" href="/files/abdera-maven2.tar.gz"&gt;the resulting tar&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
The most important thing to note is that when I switched it from Ant to Maven, one unit test now fails that passed before.  The resulting XML that is supposed to be checked contains some unexpected spaces.  This is probably due to some dependency version difference.  The dependencies will need to be looked at and worked on; I just specified enough to get the projects to compile for the most part.
&lt;/p&gt;
&lt;p&gt;
I did update the Ant build file, so that still works.  The security and examples modules also build now in Maven (but I did not add them to the Ant build).  There's plenty of stuff to be improved/changed.  The test module should probably go away, and the tests should be moved into the module that is being tested.  The "bin" folders shoud go away.  The .project files should go away in my opinion (they are assumably broken right now, as I didn't update them).
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='http://res1.blogblog.com/tracker/3411034-114937352811589606?l=www.stephenduncanjr.com%2Fdefault.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/114937352811589606/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3411034&amp;postID=114937352811589606' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/114937352811589606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/114937352811589606'/><link rel='alternate' type='text/html' href='http://www.stephenduncanjr.com/2006/06/abdera-maven-2-build.html' title='Abdera Maven 2 Build'/><author><name>Stephen</name><uri>http://www.blogger.com/profile/13748251815877457714</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3411034.post-114740157658322814</id><published>2006-05-11T21:34:00.000-05:00</published><updated>2006-05-11T21:40:25.476-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='atom'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>Bloglines Switcharoo</title><content type='html'>&lt;p&gt;
It's odd.  Suddenly &lt;a href="http://www.tbray.org/ongoing"&gt;Tim Bray's ongoing&lt;/a&gt; feed was &lt;a href="http://www.bloglines.com/preview?siteid=1071"&gt;working correctly&lt;/a&gt; in &lt;a href="http://www.bloglines.com"&gt;Bloglines&lt;/a&gt;.  Wow!  Atom 1.0 support, finally?  But no, they've just automatically &lt;a href="http://www.bloglines.com/sub/http://www.tbray.org/ongoing/ongoing.atom"&gt;switched over his Atom feed to his RSS feed&lt;/a&gt;.  I guess that's one way to get rid of complaints...
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='http://res1.blogblog.com/tracker/3411034-114740157658322814?l=www.stephenduncanjr.com%2Fdefault.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/114740157658322814/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3411034&amp;postID=114740157658322814' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/114740157658322814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3411034/posts/default/114740157658322814'/><link rel='alternate' type='text/html' href='http://www.stephenduncanjr.com/2006/05/bloglines-switcharoo.html' title='Bloglines Switcharoo'/><author><name>Stephen</name><uri>http://www.blogger.com/profile/13748251815877457714</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>