<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:planet="http://planet.intertwingly.net/" xmlns:indexing="urn:atom-extension:indexing" indexing:index="no"><access:restriction xmlns:access="http://www.bloglines.com/about/specs/fac-1.0" relationship="deny"/>
  <title>Planet TW - Alumni</title>
  <updated>2008-05-13T05:07:41Z</updated>
  <generator uri="http://intertwingly.net/code/venus/">Venus</generator>
  <author>
    <name>Test</name>
    <email>test@example.com</email>
  </author>
  <id>http://blogs.thoughtworks.com/alumni/atom.xml</id>
  <link href="http://blogs.thoughtworks.com/alumni/atom.xml" rel="self" type="application/atom+xml"/>
  <link href="http://blogs.thoughtworks.com/alumni/" rel="alternate"/>

  <entry>
    <id>http://del.icio.us/www_build_doctor_com#2008-05-12</id>
    <link href="http://feeds.feedburner.com/~r/TheBuildDoctor/~3/289187937/www_build_doctor_com" rel="alternate" type="text/html"/>
    <title>Links for 2008-05-12 [del.icio.us]</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><ul>
<li><a href="http://www.thecrumb.com/wiki/Ant">ant [thecrumb wiki]</a><br/>
Jim Priest's collection of Ant resources, including his own blog posts.</li>
</ul></div>
    </summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><ul>
<li><a href="http://www.thecrumb.com/wiki/Ant">ant [thecrumb wiki]</a><br/>
Jim Priest's collection of Ant resources, including his own blog posts.</li>
</ul></div>
    </content>
    <updated>2008-05-13T05:00:00Z</updated><feedburner:origlink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://del.icio.us/www_build_doctor_com#2008-05-12</feedburner:origlink>
    <source>
      <id>tag:blogger.com,1999:blog-6500374844252313496</id>
      <logo>http://creativecommons.org/images/public/somerights20.gif</logo>
      <author>
        <name>Julian</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/06148753904642162513</uri>
      </author>
      <link href="http://www.build-doctor.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6500374844252313496/posts/default?start-index=26&amp;max-results=25&amp;redirect=false" rel="next" type="application/atom+xml"/>
      <link href="http://www.build-doctor.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://feeds.feedburner.com/TheBuildDoctor" rel="self" type="application/atom+xml"/>
      <title>The Build Doctor</title>
      <updated>2008-05-13T05:00:00Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://del.icio.us/gcaprio#2008-05-12</id>
    <link href="http://feeds.feedburner.com/~r/MemoirsOfABystander/~3/289184508/gcaprio" rel="alternate" type="text/html"/>
    <title>Links for 2008-05-12 [del.icio.us]</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><ul>
<li><a href="http://thinkexist.com/quotation/nothing_in_this_world_can_take_the_place_of/201002.html">Calvin Coolidge quotes</a></li>
<li><a href="http://www.glennjones.net/Post/836/Microformatstest-suiteconcept.htm">Microformats test-suite concept</a><br/>
Interesting.</li>
<li><a href="http://sonivis.org/">Home</a><br/>
KM Tools</li>
<li><a href="http://www.crayonroom.com/moody">Moody - Mac OS X / Windows app to mood tag your music in iTunes</a></li>
<li><a href="http://esw.w3.org/topic/Rdb2RdfXG/StateOfTheArt">Rdb2RdfXG/StateOfTheArt - ESW Wiki</a><br/>
State of RDF &lt;-&gt; Relational mapping.</li>
<li><a href="http://www.langdale.com.au/GraphPath/">GraphPath Language</a><br/>
Graphing processing language</li>
<li><a href="http://sw.joanneum.at/scovo/schema.html">Describing statistical data on the Web - The Statistical Core Vocabulary (scovo)</a></li>
<li><a href="http://www.flickr.com/photos/factoryjoe/2464790975/">Twitterverse Quartz Composer on Flickr - Photo Sharing!</a></li>
<li><a href="http://dotnethitman.spaces.live.com/blog/cns!E149A8B1E1C25B14!131.entry">.NET HITMAN: Exception Handling - Do's and Dont's</a><br/>
Nice list of exception best practices.</li>
<li><a href="http://www.smashingmagazine.com/2008/04/24/5-more-principles-of-effective-web-design/">Five More Principles Of Effective Web Design | How-To | Smashing Magazine</a></li>
<li><a href="http://www.smashingmagazine.com/2008/01/31/10-principles-of-effective-web-design/">10 Principles Of Effective Web Design | How-To | Smashing Magazine</a></li>
<li><a href="http://preseason.stassen.com/">College Football Preseason Magazines</a><br/>
TONS of machine ready stats.</li>
<li><a href="http://www.xml.com/pub/a/2008/05/07/under-the-hood-oracle-berkeley-db-xml.html">XML.com: Under the Hood: Oracle Berkeley DB XML</a></li>
<li><a href="http://blog.sontek.net/2008/05/11/python-with-a-modular-ide-vim/">sontek ( John M. Anderson ) » Python with a modular IDE (Vim)</a></li>
</ul></div>
    </summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><ul>
<li><a href="http://thinkexist.com/quotation/nothing_in_this_world_can_take_the_place_of/201002.html">Calvin Coolidge quotes</a></li>
<li><a href="http://www.glennjones.net/Post/836/Microformatstest-suiteconcept.htm">Microformats test-suite concept</a><br/>
Interesting.</li>
<li><a href="http://sonivis.org/">Home</a><br/>
KM Tools</li>
<li><a href="http://www.crayonroom.com/moody">Moody - Mac OS X / Windows app to mood tag your music in iTunes</a></li>
<li><a href="http://esw.w3.org/topic/Rdb2RdfXG/StateOfTheArt">Rdb2RdfXG/StateOfTheArt - ESW Wiki</a><br/>
State of RDF &lt;-&gt; Relational mapping.</li>
<li><a href="http://www.langdale.com.au/GraphPath/">GraphPath Language</a><br/>
Graphing processing language</li>
<li><a href="http://sw.joanneum.at/scovo/schema.html">Describing statistical data on the Web - The Statistical Core Vocabulary (scovo)</a></li>
<li><a href="http://www.flickr.com/photos/factoryjoe/2464790975/">Twitterverse Quartz Composer on Flickr - Photo Sharing!</a></li>
<li><a href="http://dotnethitman.spaces.live.com/blog/cns!E149A8B1E1C25B14!131.entry">.NET HITMAN: Exception Handling - Do's and Dont's</a><br/>
Nice list of exception best practices.</li>
<li><a href="http://www.smashingmagazine.com/2008/04/24/5-more-principles-of-effective-web-design/">Five More Principles Of Effective Web Design | How-To | Smashing Magazine</a></li>
<li><a href="http://www.smashingmagazine.com/2008/01/31/10-principles-of-effective-web-design/">10 Principles Of Effective Web Design | How-To | Smashing Magazine</a></li>
<li><a href="http://preseason.stassen.com/">College Football Preseason Magazines</a><br/>
TONS of machine ready stats.</li>
<li><a href="http://www.xml.com/pub/a/2008/05/07/under-the-hood-oracle-berkeley-db-xml.html">XML.com: Under the Hood: Oracle Berkeley DB XML</a></li>
<li><a href="http://blog.sontek.net/2008/05/11/python-with-a-modular-ide-vim/">sontek ( John M. Anderson ) » Python with a modular IDE (Vim)</a></li>
</ul><img height="1" src="http://feeds.feedburner.com/~r/MemoirsOfABystander/~4/289184508" width="1"/></div>
    </content>
    <updated>2008-05-13T05:00:00Z</updated><feedburner:origlink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://del.icio.us/gcaprio#2008-05-12</feedburner:origlink>
    <source>
      <id>tag:typepad.com,2003:weblog-491339</id>
      <author>
        <name>Griffin Caprio</name>
      </author>
      <link href="http://blog.1530technologies.com/" rel="alternate" type="text/html"/>
      <link href="http://feeds.feedburner.com/MemoirsOfABystander" rel="self" type="application/atom+xml"/>
      <subtitle>A blog mostly about technology and how it affects everday life.  And some software development posts....</subtitle>
      <title>Memoirs of a Bystander</title>
      <updated>2008-05-13T05:00:00Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-US">
    <id>http://cleveralias.blogs.com/thought_spearmints/2008/05/props-for-jopts.html</id>
    <link href="http://cleveralias.blogs.com/thought_spearmints/2008/05/props-for-jopts.html" rel="alternate" type="text/html"/>
    <title>Props for JOptSimple</title>
    <summary>Yay!</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://novelang.blogspot.com/2008/05/command-line-arguments.html">Yay</a>!</p></div>
    </content>
    <updated>2008-05-12T23:21:38Z</updated>
    <category term="Programming"/>
    <author>
      <name>Pholser</name>
    </author>
    <source>
      <id>http://cleveralias.blogs.com/thought_spearmints/</id>
      <link href="http://cleveralias.blogs.com/thought_spearmints/" rel="alternate" type="text/html"/>
      <link href="http://cleveralias.blogs.com/thought_spearmints/index.rdf" rel="self" type="application/rdf+xml"/>
      <subtitle>On the brink of going awry.</subtitle>
      <title>Thought Spearmints</title>
      <updated>2008-05-12T23:21:38Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-US">
    <id>http://cleveralias.blogs.com/thought_spearmints/2008/05/javaone-2008--2.html</id>
    <link href="http://cleveralias.blogs.com/thought_spearmints/2008/05/javaone-2008--2.html" rel="alternate" type="text/html"/>
    <title>JavaOne 2008, Day 4</title>
    <summary>"The Layperson's Guide to Building a Better User Experience" -- in short, you are a user experience designer; take interaction design, user experience, and user personae seriously; and read up. "Semantic Web for the Working Ontologist" -- Interesting discussion from...</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>"The Layperson's Guide to Building a Better User Experience" -- in short, you are a user experience designer; take interaction design, user experience, and user personae seriously; and read up.</p>

<p>"Semantic Web for the Working Ontologist" -- Interesting discussion from the chief scientist of TopQuadrant.  Interesting mention of D2RQ, a library to expose relational stores as stores of RDF triples; though to hear Dean Allemang tell it, there isn't much of a community forming around D2RQ.</p>

<p>Neat presentation from two Jython commiters about the challenges involved in compiling Jython code down to JVM bytecode.</p>

<p>Two Selenium cognoscenti, Dan Fabulich and Patrick Lightbody, gave a decent account of Selenium for web testing.  Apparently the XPath support library that Selenium uses has been tuned quite a bit and should be faster in the new 1.0 beta.  Still holding out hope that it can handle non-trivial (and even some trivial) XPath expressions on IE.</p></div>
    </content>
    <updated>2008-05-12T23:19:36Z</updated>
    <category term="Programming"/>
    <author>
      <name>Pholser</name>
    </author>
    <source>
      <id>http://cleveralias.blogs.com/thought_spearmints/</id>
      <link href="http://cleveralias.blogs.com/thought_spearmints/" rel="alternate" type="text/html"/>
      <link href="http://cleveralias.blogs.com/thought_spearmints/index.rdf" rel="self" type="application/rdf+xml"/>
      <subtitle>On the brink of going awry.</subtitle>
      <title>Thought Spearmints</title>
      <updated>2008-05-12T23:21:38Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6500374844252313496.post-9093523526769747588</id>
    <link href="http://feeds.feedburner.com/~r/TheBuildDoctor/~3/263366059/ant-best-practices-series.html" rel="alternate" type="text/html"/>
    <link href="http://www.blogger.com/comment.g?blogID=6500374844252313496&amp;postID=9093523526769747588" rel="replies" type="text/html"/>
    <link href="http://www.build-doctor.com/feeds/9093523526769747588/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6500374844252313496/posts/default/9093523526769747588" rel="self" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6500374844252313496/posts/default/9093523526769747588" rel="edit" type="application/atom+xml"/>
    <link href="http://creativecommons.org/licenses/by-nc-sa/3.0/" rel="license" type="text/html"/>
    <title>The Ant Best Practices Series</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://bp0.blogger.com/_-rlZcQ-7nAM/R_Pzf4PocoI/AAAAAAAAADA/fhvzKclQbyM/s1600-h/16449595_361f189688.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5184755325033017986" src="http://bp0.blogger.com/_-rlZcQ-7nAM/R_Pzf4PocoI/AAAAAAAAADA/fhvzKclQbyM/s320/16449595_361f189688.jpg" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;"/></a><br/><div style="text-align: center;"><span style="font-size: 85%;">(Photo taken from <a href="http://flickr.com/photos/33mhz/">33mhz's photostream</a>)</span><br/></div><br/>In 2003, Eric M. Burke published an article at <a href="http://www.onjava.com/">OnJava</a> called <a href="http://www.onjava.com/pub/a/onjava/2003/12/17/ant_bestpractices.html">Top 15 Ant Best Practices</a>. Are the practices still relevant?  What has changed in the last 4 years?  In this series I'll be reviewing each one and trying to find out.<br/><br/><a href="http://www.build-doctor.com/2008/03/ant-best-practices-adopt-consistent.html">1 of 15: Adopt consistent style</a><br/><a href="http://www.build-doctor.com/2008/02/put-build-file-at-root-of-your-project.html">2 of 15: Put the build file at the root of your project</a><br/><a href="http://www.build-doctor.com/2008/03/ant-best-practices-prefer-single.html">3 of 15: Prefer a single buildfile</a><a href="http://www.build-doctor.com/2008/03/ant-best-practices-provide-good-help.html"><br/>4 of 15: Provide good help</a><br/><a href="http://www.build-doctor.com/2008/04/ant-best-practices-provide-clean-target.html">5 of 15: Provide a clean target</a><br/><a href="http://www.build-doctor.com/2008/04/ant-best-practices-manage-dependencies.html">6 of 15: Manage dependencies with Ant</a><br/><a href="http://www.build-doctor.com/2008/05/ant-best-practices-define-and-reuse.html">7 of 15: Define and reuse paths</a><br/><a href="http://www.build-doctor.com/2008/05/ant-best-practices-define-proper-target.html">8 of 15: Define Proper Target Dependencies</a><br/><br/>This page is updated every time there's a new article.</div>
    </content>
    <updated>2008-05-12T22:12:06Z</updated>
    <published>2008-04-02T20:32:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="best practices"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="build"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="ant"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="apache"/><feedburner:origlink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://www.build-doctor.com/2008/04/ant-best-practices-series.html</feedburner:origlink>
    <author>
      <name>Julian</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/06148753904642162513</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6500374844252313496</id>
      <logo>http://creativecommons.org/images/public/somerights20.gif</logo>
      <author>
        <name>Julian</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/06148753904642162513</uri>
      </author>
      <link href="http://www.build-doctor.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6500374844252313496/posts/default?start-index=26&amp;max-results=25&amp;redirect=false" rel="next" type="application/atom+xml"/>
      <link href="http://www.build-doctor.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://feeds.feedburner.com/TheBuildDoctor" rel="self" type="application/atom+xml"/>
      <title>The Build Doctor</title>
      <updated>2008-05-13T05:00:00Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6500374844252313496.post-535294612067962429</id>
    <link href="http://feeds.feedburner.com/~r/TheBuildDoctor/~3/288993275/ant-best-practices-define-proper-target.html" rel="alternate" type="text/html"/>
    <link href="http://www.blogger.com/comment.g?blogID=6500374844252313496&amp;postID=535294612067962429" rel="replies" type="text/html"/>
    <link href="http://www.build-doctor.com/feeds/535294612067962429/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6500374844252313496/posts/default/535294612067962429" rel="self" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6500374844252313496/posts/default/535294612067962429" rel="edit" type="application/atom+xml"/>
    <link href="http://creativecommons.org/licenses/by-nc-sa/3.0/" rel="license" type="text/html"/>
    <title>Ant Best Practices: Define Proper Target Dependencies</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://bp0.blogger.com/_-rlZcQ-7nAM/SCi_WtXoo4I/AAAAAAAAAEA/cdu6IrGdfDA/s1600-h/280662707_5d335ac808.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5199616166655992706" src="http://bp0.blogger.com/_-rlZcQ-7nAM/SCi_WtXoo4I/AAAAAAAAAEA/cdu6IrGdfDA/s320/280662707_5d335ac808.jpg" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;"/></a><br/><div style="text-align: center;"><span style="font-size: 85%;">(Image taken from <a href="http://flickr.com/photos/nicksieger/">Nick Sieger's Photostream</a>)</span><br/></div>Wondering what this post is about?  Have a look <a href="http://www.build-doctor.com/2008/04/ant-best-practices-series.html">here</a>.<br/><br/>Last time I wrote, it was about <a href="http://www.build-doctor.com/2008/05/ant-best-practices-define-and-reuse.html">reusing paths</a>.  Tonight, it's about the dependency graph. My <a href="http://www.build-doctor.com/2008/02/antcall-is-evil.html">[N]Antcall is evil</a> post goes into some detail about dependency graphs.  Let's just agree here that Ant targets tend to accumulate dependencies.  The point that Eric makes is that the dependency graph (otherwise known as the dependency tree) grows over time as you add targets.  Being a thing that accumulates over time, the graph can get crufty.  That target that was just a short term thing while Bob worked on a refactoring exercise (oh, the irony) is now central to your build.  So from time to time you need to clean the dependencies out, like that burned cheese that melts off of pizzas and sticks to the bottom of the oven.<br/><br/>Some projects seem to run into trouble and throw dependencies out completely.  Umm, good luck with that.  Eric suggests a half-way house approach: a few well known targets that contain dependencies on lesser known but functional targets for the more experienced to use at their own risk.  I can go along with that.<br/><br/>My last thought is this: your default build should never depend on a <a href="http://www.build-doctor.com/2008/04/ant-best-practices-provide-clean-target.html">clean target</a>.  Leave it to the compiler to have a go at working out what it should do.  If you use Continuous Integration, you can make a little target that depends on clean just for that case.  Your fellow developers will thank you.</div>
    </content>
    <updated>2008-05-12T22:10:00Z</updated>
    <published>2008-05-12T21:59:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="best practices"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="dependencies"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="build"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="ant"/><feedburner:origlink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://www.build-doctor.com/2008/05/ant-best-practices-define-proper-target.html</feedburner:origlink>
    <author>
      <name>Julian</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/06148753904642162513</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6500374844252313496</id>
      <logo>http://creativecommons.org/images/public/somerights20.gif</logo>
      <author>
        <name>Julian</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/06148753904642162513</uri>
      </author>
      <link href="http://www.build-doctor.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6500374844252313496/posts/default?start-index=26&amp;max-results=25&amp;redirect=false" rel="next" type="application/atom+xml"/>
      <link href="http://www.build-doctor.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://feeds.feedburner.com/TheBuildDoctor" rel="self" type="application/atom+xml"/>
      <title>The Build Doctor</title>
      <updated>2008-05-13T05:00:00Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:typepad.com,2003:post-49714772</id>
    <link href="http://feeds.feedburner.com/~r/MemoirsOfABystander/~3/288445833/persistence.html" rel="alternate" type="text/html"/>
    <link href="http://blog.1530technologies.com/2008/05/persistence.html" rel="replies" type="text/html"/>
    <link href="http://creativecommons.org/licenses/by-nd/2.0/" rel="license" type="text/html"/>
    <title>Persistence</title>
    <summary>Whew....I'm going to start off my first blog post in 7.5 months with a quote from Calvin Coolidge: “Nothing in this world can take the place of persistence. Talent will not; nothing is more common than unsuccessful people with talent....</summary>
    <content type="xhtml" xml:lang="en-US"><div xmlns="http://www.w3.org/1999/xhtml"><p>Whew....I'm going to start off my first blog post in 7.5 months with a quote from Calvin Coolidge:</p>
<blockquote>
  <p>“Nothing in this world can take the place of persistence. Talent will not; nothing is more common than unsuccessful people with talent. Genius will not; unrewarded genius is almost a proverb. Education will not; the world is full of educated derelicts. Persistence and determination alone are omnipotent. The slogan "press on" has solved and always will solve the problems of the human race"</p>
</blockquote>
<p>It's with that that I explain my absence a bit. About 2 years ago, when I first started working for <a href="http://corp.trackabout.com/index.aspx" title="TrackAbout">TrackAbout</a>, I made the decision that I would use the opportunity of working from home to the fullest extent. That meant I would go back to school and finish the bachelors that I had been working on for the better part of a decade. My new bosses were on board with the idea, as long as it didn't hamper my ability to deliver at work. After transferring from <a href="http://www.aurora.edu/" title="Aurora University">Aurora University</a>, where I was double majoring in Mathematics and Computer science, in the spring of 2001, I enrolled at the <a href="http://tigger.uic.edu/index.html/" title="University of Illinois at Chicago">University of Illinois at Chicago</a> ( UIC ), with a declared major of Statistics and Operations Research. I spent a year at UIC, going to school full time. In the Summer of '02, I decided that I would work full-time instead of going back to school. I made the decision that I wanted experience over education. Over the next few years, I took a class here and there, but nothing major.</p>
<p>Finally, after leaving Mobitrac and starting at TrackAbout, my decision was made. I was going back. I decided I would get it done as quickly as I could, while still fulfilling my duties at TrackAbout. Since I had ~30 hours left, that meant taking ~10 a semester for 3 semesters. Because of a scheduling goof, I actually didn't enroll in classes until the Spring of '07.</p>
<p>When explaining my decision to people, they often ask "Why go back?". After all, I have a good job &amp; a pretty successful career which hasn't been hindered by a lack of a degree. So why do it? Well, I bounced things around in my head until I came to this final conclusion:</p>
<p><strong>In the end, the degree was something big in my life that I started and I wanted to finish it.</strong></p>
<p>That's not to say that every person needs to get a degree to be successful. Far from it. If I never started college, I doubt I would have gone through it all. I know several very successful people who are 10x smarter than some college graduates I know. Life is all about what you make of it and a college degree is just one optional component. In the end, I didn't want to look back at my life and see something I quit at. Especially something so big. That's why I went back.</p>
<p>Well, after 1.5 years of intense studying, I am happy to say that I am now a <strong>college graduate</strong>.</p>
<p>That's where the quote comes in.</p>
<p>Going back to school while maintaining a normal, 50-hr a week full time job was going to be tough. Unfortunately, around Nov '07, the TrackAbout engineering team lost a team member and our head count went from 4 down to 3. As if that wasn't bad enough, we were staring down the barrel of a Jan 1st deadline for not one but TWO very large, company changing projects. They were:</p>
<ol>
  <li>The roll out of a new order integration system for one of pilot customers. This is an end-to-end, completely paperless system of placing and delivering orders.</li>

  <li>The first customer of our brand new <a href="http://corp.trackabout.com/partners.aspx" title="TrackAbout TECSYS partnership">partnership</a> with <a href="http://www.tecsys.com/" title="TECSYS Supply Chain Management ">TECSYS</a>, a supply chain management software company, was going live on Jan 1st. They were going live with our standard tracking solution, rental bill generation module and the TECSYS EliteSeries Distribution Management Systems (DMS) offering. We, TrackAbout and TECSYS, were completely replacing their exiting system(s). Needless to say, a sizable chunk of our targeted vertical was going to be watching the rollout and we needed to impress.</li>
</ol>
<p>Whew....there was a lot to do and I had to balance work and a school <span>curriculum</span> that included classes like:</p>
<ol>
  <li>Applied Statistics for Engineers</li>

  <li>Intro to Mathematical Probability<br/></li>

  <li>Nonparametric Statistical Methods</li>
</ol>
<p>Needless to say, I felt like quitting SEVERAL times. I tried to come up with every excuse I could think of. "I didn't need the degree", "I could finish up next semester", "I can go back another time", etc....</p>
<p>But I didn't quit. I sucked it up, quit my whining and pushed through. Which brings me to the quote I started this post with. Looking back at the past 5-10 years of my life, the one thing I can point to that made me successful isn't intelligence, upbringing, luck or chance.</p>
<p>It's <strong>perseverance</strong>.</p>
<p>I succeeded simply because I didn't let myself fail. Initiative and hard work will get you ahead of 70% of the people out there. A lot of people are plagued by procrastination, laziness or simply a reluctance to sacrifice. I meet lots of people in my life who think I'm lucky or that I am in a good field and being in computers makes it easy to be successful. However, people don't see the hard work that goes into being employed in the tech industry. Sure, they see the cool toys or the nice paycheck, but they don't see the support phone that you have to sometimes carry. Nor do they when you have to cancel plans because of some problem with work. Or how about the difficulty in scheduling a vacation? People don't realize that when tech people go on vacation or take days off, our work doesn't go away. It's there for us when we get back. Only now, we've shortened the time we have to get it done :)</p>
<p>In the end, I'm extremely happy I went back and finished. I'm also extremely happy I am done now. I now have free time again and just in time for the summer. Especially since I hear the Cubs are <a href="http://sports.espn.go.com/mlb/news/story?id=3244658">winning</a> the <a href="http://thebiglead.com/?p=5613">world</a> <a href="http://www.suntimes.com/sports/baseball/cubs/921638,sicover042908.article">series</a> :)</p>
<p>Well, I can dream, can't I ?</p>
<img height="1" src="http://feeds.feedburner.com/~r/MemoirsOfABystander/~4/288445833" width="1"/></div>
    </content>
    <updated>2008-05-12T16:29:32Z</updated>
    <published>2008-05-12T00:14:07Z</published>
    <category scheme="http://www.sixapart.com/ns/types#category" term="Current Affairs"/>
    <category scheme="http://www.sixapart.com/ns/types#category" term="Musings"/>
    <category scheme="http://www.sixapart.com/ns/types#category" term="Quotes"/><feedburner:origlink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blog.1530technologies.com/2008/05/persistence.html</feedburner:origlink>
    <author>
      <name>Griff</name>
    </author>
    <source>
      <id>tag:typepad.com,2003:weblog-491339</id>
      <author>
        <name>Griffin Caprio</name>
      </author>
      <link href="http://blog.1530technologies.com/" rel="alternate" type="text/html"/>
      <link href="http://feeds.feedburner.com/MemoirsOfABystander" rel="self" type="application/atom+xml"/>
      <subtitle>A blog mostly about technology and how it affects everday life.  And some software development posts....</subtitle>
      <title>Memoirs of a Bystander</title>
      <updated>2008-05-13T05:00:00Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-20165167.post-7534737865675859069</id>
    <link href="http://chrismcmahonsblog.blogspot.com/2008/05/software-artists-introduction.html" rel="alternate" type="text/html"/>
    <link href="http://www.blogger.com/comment.g?blogID=20165167&amp;postID=7534737865675859069" rel="replies" type="text/html"/>
    <link href="http://chrismcmahonsblog.blogspot.com/feeds/7534737865675859069/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://chrismcmahonsblog.blogspot.com/feeds/posts/default/7534737865675859069" rel="self" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/20165167/posts/default/7534737865675859069" rel="edit" type="application/atom+xml"/>
    <title>The Software Artists:  Introduction</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">The people who create software are not factory workers.  Nor are they engineers, in the sense that engineering is the “practical application of the knowledge of pure sciences, as physics or chemistry”.  But the software industry continues to treat software workers as if they were factory workers or construction workers.  The software industry also attempts to value software as if it were a manufactured product. <br/><br/>But making software is a fundamentally creative process, more similar to performance than to manufacturing.  Like art and music, software has an audience that is involved in a personal way with the software.  And the people who create software are much more like performers than they are like construction workers. <br/><br/>If it is true that software is much more like art than it is like manufacturing, then the tools of artistic criticism should be useful for evaluating software.  <br/><br/>It should also be possible to apply successful approaches to art or music pedagogy to software pedagogy. <br/><br/>Furthermore, it should be possible to manage software projects in the same way that artists manage performances, with better results than if the software projects were managed like manufacturing or engineering projects.</div>
    </content>
    <updated>2008-05-11T22:08:00Z</updated>
    <published>2008-05-11T22:06:00Z</published>
    <author>
      <name>Chris McMahon</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/16339861008904941703</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-20165167</id>
      <author>
        <name>Chris McMahon</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/16339861008904941703</uri>
      </author>
      <link href="http://chrismcmahonsblog.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://chrismcmahonsblog.blogspot.com/feeds/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <link href="http://chrismcmahonsblog.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://chrismcmahonsblog.blogspot.com/feeds/posts/default" rel="self" type="application/atom+xml"/>
      <title>Chris McMahon's Blog</title>
      <updated>2008-05-12T17:02:44Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-20165167.post-3646838273792138490</id>
    <link href="http://chrismcmahonsblog.blogspot.com/2008/05/software-artists-explanation.html" rel="alternate" type="text/html"/>
    <link href="http://www.blogger.com/comment.g?blogID=20165167&amp;postID=3646838273792138490" rel="replies" type="text/html"/>
    <link href="http://chrismcmahonsblog.blogspot.com/feeds/3646838273792138490/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://chrismcmahonsblog.blogspot.com/feeds/posts/default/3646838273792138490" rel="self" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/20165167/posts/default/3646838273792138490" rel="edit" type="application/atom+xml"/>
    <title>The Software Artists: Explanation</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">I wrote a paper some time ago to submit to the <a href="http://www.associationforsoftwaretesting.org/drupal/CAST2008">Conference of the Association for Software Testing</a>, but the paper was not accepted for the program.  I'm on the waiting list if another presenter drops out, which seems unlikely at this point. <br/><br/>I think it is likely that my paper was not accepted at CAST was because it is somewhat similar to a <a href="http://www.associationforsoftwaretesting.org/drupal/cast2008/Program/TrackSessions#bolton">presentation</a> from <a href="http://www.kohl.ca/">Jonathan Kohl</a> and <a href="http://developsense.com/">Michael Bolton</a>, two of the best testers in the universe.   I intend to publish my paper here on my blog in the hopes that Jonathan and Michael and other Software Artists will have access to as much relevant information as possible to support their position.   <br/><br/>I think that one enormous reason that few people take software-as-artistic-practice seriously is because of a perceived lack of practical application:  manufacturing and engineering provide venerable examples of measurement tools, education curricula, and market strategy-- assuming that you believe that software is an engineered and manufactured product.  Those of us who believe that software is an artistic process have failed to provide compelling alternatives to the tools provided by engineering and manufacturing.  <br/><br/>I set out to start to remedy that situation with this paper. <br/><br/>It is a long piece, so I'll publish it in several sections in the coming days, as I have time to get it right and looking good.  I have extensive references also.  My plan is to publish references as separate blog posts after each section, so that people who don't care can skip them and people who do care can relate them to recent posts.</div>
    </content>
    <updated>2008-05-11T22:05:35Z</updated>
    <published>2008-05-11T21:33:00Z</published>
    <author>
      <name>Chris McMahon</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/16339861008904941703</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-20165167</id>
      <author>
        <name>Chris McMahon</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/16339861008904941703</uri>
      </author>
      <link href="http://chrismcmahonsblog.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://chrismcmahonsblog.blogspot.com/feeds/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <link href="http://chrismcmahonsblog.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://chrismcmahonsblog.blogspot.com/feeds/posts/default" rel="self" type="application/atom+xml"/>
      <title>Chris McMahon's Blog</title>
      <updated>2008-05-12T17:02:44Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-US">
    <id>http://cleveralias.blogs.com/thought_spearmints/2008/05/javaone-2008--1.html</id>
    <link href="http://cleveralias.blogs.com/thought_spearmints/2008/05/javaone-2008--1.html" rel="alternate" type="text/html"/>
    <title>JavaOne 2008, Day 3</title>
    <summary>"Using FindBugs in Anger", with the great Bill Pugh -- nice summary of a great tool. I liked the slide listing some common (but incorrect) wisdom about bugs and static analysis: programmers are smart, and smart programmers don't make dumb...</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>"Using FindBugs in Anger", with the great Bill Pugh -- nice summary of a great tool.  I liked the slide listing some common (but incorrect) wisdom about bugs and static analysis: programmers are smart, and smart programmers don't make dumb mistakes.  We all make dumb mistakes.  I really like FindBugs, and use it on my open-source projects.  Interesting to learn that there is commercial support for it via Fortify Software.  Pugh described how large organizations such as Google use FindBugs on large code bases, strategies for prioritizing resolutions to issues FindBugs detects, tracking issues historically over time and adding issues to bug databases, etc.</p>

<p>This is the second time this conference I've seen or heard "Q &amp; A" and QA (as in quality assurance) confused.  Hm.</p>

<p>"Writing Your Own JSR-Compliant Scripting Language" was a good overview of the new Java 6 API for launching scripts that can interact with the calling Java program.</p>

<p>"Pimp My Build" offered some very Ant-specific hints for maintaining build scripts -- it all pretty much boiled down to refactoring out common bits and treating your build scripting with the same refactoring and coding care you would afford your production code.</p>

<p>"The Future of Guice" from "Crazy Bob" Lee and a couple of other Googlers -- "Types are the currency of Java" -- nice mantra, and it clearly informs the decisions the Guice crew made regarding how to indicated injections, etc.  Came with a promo code for an ebook version of the aPress title on Guice.  Bonus!</p></div>
    </content>
    <updated>2008-05-11T18:22:49Z</updated>
    <category term="Programming"/>
    <author>
      <name>Pholser</name>
    </author>
    <source>
      <id>http://cleveralias.blogs.com/thought_spearmints/</id>
      <link href="http://cleveralias.blogs.com/thought_spearmints/" rel="alternate" type="text/html"/>
      <link href="http://cleveralias.blogs.com/thought_spearmints/index.rdf" rel="self" type="application/rdf+xml"/>
      <subtitle>On the brink of going awry.</subtitle>
      <title>Thought Spearmints</title>
      <updated>2008-05-12T23:21:38Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://del.icio.us/www_build_doctor_com#2008-05-10</id>
    <link href="http://feeds.feedburner.com/~r/TheBuildDoctor/~3/287870592/www_build_doctor_com" rel="alternate" type="text/html"/>
    <title>Links for 2008-05-10 [del.icio.us]</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><ul>
<li><a href="http://testerbydaydeveloperbynight.blogspot.com/2008/05/automated-deployment-why-it-is-good.html">I've come up with a quick test you can do to see if you should automate your deployment process.</a><br/>
Cautionary tales</li>
</ul></div>
    </summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><ul>
<li><a href="http://testerbydaydeveloperbynight.blogspot.com/2008/05/automated-deployment-why-it-is-good.html">I've come up with a quick test you can do to see if you should automate your deployment process.</a><br/>
Cautionary tales</li>
</ul></div>
    </content>
    <updated>2008-05-11T05:00:00Z</updated><feedburner:origlink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://del.icio.us/www_build_doctor_com#2008-05-10</feedburner:origlink>
    <source>
      <id>tag:blogger.com,1999:blog-6500374844252313496</id>
      <logo>http://creativecommons.org/images/public/somerights20.gif</logo>
      <author>
        <name>Julian</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/06148753904642162513</uri>
      </author>
      <link href="http://www.build-doctor.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6500374844252313496/posts/default?start-index=26&amp;max-results=25&amp;redirect=false" rel="next" type="application/atom+xml"/>
      <link href="http://www.build-doctor.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://feeds.feedburner.com/TheBuildDoctor" rel="self" type="application/atom+xml"/>
      <title>The Build Doctor</title>
      <updated>2008-05-13T05:00:00Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://del.icio.us/www_build_doctor_com#2008-05-09</id>
    <link href="http://feeds.feedburner.com/~r/TheBuildDoctor/~3/287298244/www_build_doctor_com" rel="alternate" type="text/html"/>
    <title>Links for 2008-05-09 [del.icio.us]</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><ul>
<li><a href="http://modrails.com/">Phusion Passenger (a.k.a. mod_rails) - apache module for rails</a><br/>
When did this arrive?  Being able to roll out apaches that just know how to talk to rails could be the thing. This could be huge.</li>
<li><a href="http://www.testearly.com/2007/06/20/running-mstest-against-net-20-on-cruisecontrolnet/">Test Early » Running MSTest against .NET 2.0 on CruiseControl.NET</a><br/>
This does point to the fact that you either need to install the whole MS toolchain on your build server, or spend a day cheerfully sticking dependencies in the GAC or on Program Files dir. Eeek.</li>
<li><a href="http://codebetter.com/blogs/jeremy.miller/archive/2007/04/26/get-a-build-server-and-keep-it-clean.aspx">Get a Build Server and Keep it Clean - Jeremy D. Miller -- The Shade Tree Developer</a><br/>
sadly this may no longer be feasible.</li>
<li><a href="http://www-128.ibm.com/developerworks/java/library/j-ap09056/index.html">Automation for the people: Choosing a Continuous Integration server</a><br/>
Paul Duvall article on choosing a CI server.  How far things have come in 2 years....</li>
</ul></div>
    </summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><ul>
<li><a href="http://modrails.com/">Phusion Passenger (a.k.a. mod_rails) - apache module for rails</a><br/>
When did this arrive?  Being able to roll out apaches that just know how to talk to rails could be the thing. This could be huge.</li>
<li><a href="http://www.testearly.com/2007/06/20/running-mstest-against-net-20-on-cruisecontrolnet/">Test Early » Running MSTest against .NET 2.0 on CruiseControl.NET</a><br/>
This does point to the fact that you either need to install the whole MS toolchain on your build server, or spend a day cheerfully sticking dependencies in the GAC or on Program Files dir. Eeek.</li>
<li><a href="http://codebetter.com/blogs/jeremy.miller/archive/2007/04/26/get-a-build-server-and-keep-it-clean.aspx">Get a Build Server and Keep it Clean - Jeremy D. Miller -- The Shade Tree Developer</a><br/>
sadly this may no longer be feasible.</li>
<li><a href="http://www-128.ibm.com/developerworks/java/library/j-ap09056/index.html">Automation for the people: Choosing a Continuous Integration server</a><br/>
Paul Duvall article on choosing a CI server.  How far things have come in 2 years....</li>
</ul></div>
    </content>
    <updated>2008-05-10T05:00:00Z</updated><feedburner:origlink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://del.icio.us/www_build_doctor_com#2008-05-09</feedburner:origlink>
    <source>
      <id>tag:blogger.com,1999:blog-6500374844252313496</id>
      <logo>http://creativecommons.org/images/public/somerights20.gif</logo>
      <author>
        <name>Julian</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/06148753904642162513</uri>
      </author>
      <link href="http://www.build-doctor.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6500374844252313496/posts/default?start-index=26&amp;max-results=25&amp;redirect=false" rel="next" type="application/atom+xml"/>
      <link href="http://www.build-doctor.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://feeds.feedburner.com/TheBuildDoctor" rel="self" type="application/atom+xml"/>
      <title>The Build Doctor</title>
      <updated>2008-05-13T05:00:00Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://del.icio.us/gcaprio#2008-05-09</id>
    <link href="http://feeds.feedburner.com/~r/MemoirsOfABystander/~3/287299738/gcaprio" rel="alternate" type="text/html"/>
    <title>Links for 2008-05-09 [del.icio.us]</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><ul>
<li><a href="http://flimflan.com/blog/ReadableRegularExpressions.aspx">Joshua Flanagan - Readable Regular Expressions</a></li>
<li><a href="http://weblogs.asp.net/rosherove/archive/2008/05/06/introducing-linq-to-regex.aspx">Introducing LINQ To Regex - ISerializable - Roy Osherove's Blog</a></li>
<li><a href="http://www.useit.com/">useit.com: Jakob Nielsen on Usability and Web Design</a></li>
<li><a href="http://www.tuaw.com/2008/05/07/indigo-3-0-increased-geekiness-for-your-home/">Indigo 3.0, increased geekiness for your home - The Unofficial Apple Weblog (TUAW)</a><br/>
The new ParentDish: helping raise kids of all ages

TUAW PHOTO GALLERY
ENGADGETDOWNLOAD SQUADJOYSTIQBLOGGINGSTOCKSGREENDAILY

TUAWWEB

SEND US TIPSRSS FEEDSMACWORLD COVERAGE 
Indigo 3.0, increased geekiness for your home
Posted May 7th 2008 6:00PM by Bret</li>
</ul></div>
    </summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><ul>
<li><a href="http://flimflan.com/blog/ReadableRegularExpressions.aspx">Joshua Flanagan - Readable Regular Expressions</a></li>
<li><a href="http://weblogs.asp.net/rosherove/archive/2008/05/06/introducing-linq-to-regex.aspx">Introducing LINQ To Regex - ISerializable - Roy Osherove's Blog</a></li>
<li><a href="http://www.useit.com/">useit.com: Jakob Nielsen on Usability and Web Design</a></li>
<li><a href="http://www.tuaw.com/2008/05/07/indigo-3-0-increased-geekiness-for-your-home/">Indigo 3.0, increased geekiness for your home - The Unofficial Apple Weblog (TUAW)</a><br/>
The new ParentDish: helping raise kids of all ages

TUAW PHOTO GALLERY
ENGADGETDOWNLOAD SQUADJOYSTIQBLOGGINGSTOCKSGREENDAILY

TUAWWEB

SEND US TIPSRSS FEEDSMACWORLD COVERAGE 
Indigo 3.0, increased geekiness for your home
Posted May 7th 2008 6:00PM by Bret</li>
</ul><img height="1" src="http://feeds.feedburner.com/~r/MemoirsOfABystander/~4/287299738" width="1"/></div>
    </content>
    <updated>2008-05-10T05:00:00Z</updated><feedburner:origlink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://del.icio.us/gcaprio#2008-05-09</feedburner:origlink>
    <source>
      <id>tag:typepad.com,2003:weblog-491339</id>
      <author>
        <name>Griffin Caprio</name>
      </author>
      <link href="http://blog.1530technologies.com/" rel="alternate" type="text/html"/>
      <link href="http://feeds.feedburner.com/MemoirsOfABystander" rel="self" type="application/atom+xml"/>
      <subtitle>A blog mostly about technology and how it affects everday life.  And some software development posts....</subtitle>
      <title>Memoirs of a Bystander</title>
      <updated>2008-05-13T05:00:00Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.m3p.co.uk/blog/2008/05/09/glass-virtuoso-remarkable/</id>
    <link href="http://www.m3p.co.uk/blog/2008/05/09/glass-virtuoso-remarkable/" rel="alternate" type="text/html"/>
    <title>Glass Virtuoso, remarkable</title>
    <summary>Wait for a minute in. 



This requires a lot of practice.


via http://centripetalnotion.com/</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Wait for a minute in. </p>

<p/>

<p>This requires a <em>lot</em> of practice.</p>


<p><em>via <a href="http://centripetalnotion.com/">http://centripetalnotion.com/</a></em></p></div>
    </content>
    <updated>2008-05-09T22:49:08Z</updated>
    <category term="Cool sites"/>
    <author>
      <name>steve.freeman</name>
    </author>
    <source>
      <id>http://www.m3p.co.uk</id>
      <link href="http://www.m3p.co.uk" rel="alternate" type="text/html"/>
      <link href="http://www.m3p.co.uk/blog/feed" rel="self" type="application/rss+xml"/>
      <subtitle>Working software daily</subtitle>
      <title>Steve Freeman</title>
      <updated>2008-05-09T22:49:08Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://del.icio.us/www_build_doctor_com#2008-05-08</id>
    <link href="http://feeds.feedburner.com/~r/TheBuildDoctor/~3/286579035/www_build_doctor_com" rel="alternate" type="text/html"/>
    <title>Links for 2008-05-08 [del.icio.us]</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><ul>
<li><a href="http://open.controltier.com/">Open Source Tools for IT Automation</a><br/>
Anyone ever tried this?</li>
</ul></div>
    </summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><ul>
<li><a href="http://open.controltier.com/">Open Source Tools for IT Automation</a><br/>
Anyone ever tried this?</li>
</ul></div>
    </content>
    <updated>2008-05-09T05:00:00Z</updated><feedburner:origlink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://del.icio.us/www_build_doctor_com#2008-05-08</feedburner:origlink>
    <source>
      <id>tag:blogger.com,1999:blog-6500374844252313496</id>
      <logo>http://creativecommons.org/images/public/somerights20.gif</logo>
      <author>
        <name>Julian</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/06148753904642162513</uri>
      </author>
      <link href="http://www.build-doctor.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6500374844252313496/posts/default?start-index=26&amp;max-results=25&amp;redirect=false" rel="next" type="application/atom+xml"/>
      <link href="http://www.build-doctor.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://feeds.feedburner.com/TheBuildDoctor" rel="self" type="application/atom+xml"/>
      <title>The Build Doctor</title>
      <updated>2008-05-13T05:00:00Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://del.icio.us/gcaprio#2008-05-08</id>
    <link href="http://feeds.feedburner.com/~r/MemoirsOfABystander/~3/286580595/gcaprio" rel="alternate" type="text/html"/>
    <title>Links for 2008-05-08 [del.icio.us]</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><ul>
<li><a href="http://www.mygnu.com/julius/index1.html">Julius Eckert - Projects</a><br/>
Nice set of UIs for QS.</li>
</ul></div>
    </summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><ul>
<li><a href="http://www.mygnu.com/julius/index1.html">Julius Eckert - Projects</a><br/>
Nice set of UIs for QS.</li>
</ul><img height="1" src="http://feeds.feedburner.com/~r/MemoirsOfABystander/~4/286580595" width="1"/></div>
    </content>
    <updated>2008-05-09T05:00:00Z</updated><feedburner:origlink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://del.icio.us/gcaprio#2008-05-08</feedburner:origlink>
    <source>
      <id>tag:typepad.com,2003:weblog-491339</id>
      <author>
        <name>Griffin Caprio</name>
      </author>
      <link href="http://blog.1530technologies.com/" rel="alternate" type="text/html"/>
      <link href="http://feeds.feedburner.com/MemoirsOfABystander" rel="self" type="application/atom+xml"/>
      <subtitle>A blog mostly about technology and how it affects everday life.  And some software development posts....</subtitle>
      <title>Memoirs of a Bystander</title>
      <updated>2008-05-13T05:00:00Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-US">
    <id>http://cleveralias.blogs.com/thought_spearmints/2008/05/javaone-2008-da.html</id>
    <link href="http://cleveralias.blogs.com/thought_spearmints/2008/05/javaone-2008-da.html" rel="alternate" type="text/html"/>
    <title>JavaOne 2008, Day 2</title>
    <summary>On Day One, I picked Josh Bloch's brain for a bit about whether the BGGA closures proposal was redeemable if the gnarlier bits might be removed, leaving it basically with function types. It was cool to mingle with the Java...</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>On Day One, I picked Josh Bloch's brain for a bit about whether the BGGA closures proposal was redeemable if the gnarlier bits might be removed, leaving it basically with function types.  It was cool to mingle with the Java "rock stars", if only for a moment.</p>

<p>I enjoyed Neal Gafter's Day Two talk "Closures Cookbook" immensely.  He gave a very clear exposition of the BGGA proposal and the use cases propelling it.</p>

<p>Right out of the gate, he started with a disclaimer: Google is open to multiple parallel investigations of closures but is not currently prepared to commit to any particular proposal.</p>

<p>The cool bit is that closure literals can be used as instances of one-method interface types whose method parms and return type are compatible with those of the closure:</p>



<pre><code>
    Runnable r = { =&gt; doWhatever(); }
    r.run();

    Callable&lt;String&gt; cs = { =&gt; "result"; }

    Comparator&lt;String&gt; reverse = { String s1, String s2 =&gt; s2.compareTo(s1); }

    ItemSelectable is = ...;<br/>    is.addItemListener( { ItemEvent ev =&gt; doSomething(ev, is); } );<br/></code></pre>

<p>

Apparently there are technical reasons why this couldn't be done for abstract classes with one abstract method, didn't quite get the picture...

</p>

<p>Also considered were aggregrate operations,  <a href="http://jaggregate.sourceforge.net">near and dear to my heart</a>:</p>

<pre><code>
double highestGPA = Double.MIN_VALUE;
for (Student s: students) {
  if ( s.graduationYear == THIS_YEAR ) {
     int gpa = s.getGPA();
     if ( highestGPA &lt; gpa )
       highestGPA = gpa;
  }
}

double highestGPA =
    students.filter( { Student s =&gt; s.graduationYear == THIS_YEAR } )
            .map( { Student s =&gt; s.getGPA(); } )
            .max();
</code></pre>

<p>I just love how the second reads -- nothing like method names to make intent clearer.</p>

<p>An extended example involving an API for timing units of code:</p>

<pre><code>
interface Block&lt;R, throws X&gt; {
    R execute() throws X;
}
</code></pre>

<pre><code>
public &lt;R, throws X&gt; R time(String opName, Block&lt;R, X&gt; block) throws X {
  long startTime = System.nanoTime();
  boolean success = true;
  try {
    return block.execute();
  }
  catch (final Throwable ex) {
    success = false;
    throw ex;
  }
  finally {
    recordTiming(opName, System.nanoTime() - startTime, success);
  }
}

int f() {
  time( "opName", { =&gt; someStatements } );
  time( "opName", { =&gt; return computeResult; } )
}
</code></pre>

<p>Yowza.  Nice how it genericizes over whatever exceptions the block may raise (including none), and whatever the block might return (including nothing).  Note the use of "safe re-throw" by marking a catch parameter final (proposed for JDK7).</p>

<p>Alex Buckley and Stanley Ho gave a nice summary of the first-class language and tooling support for modularity in Java (JSR 277).  Seems a JAM module would be able to leverage OSGi bundles and repositories?  Nice.</p>

<p>The Java Persistence API 2.0 talk was packed.  Ridiculously packed.  Fire marshal, anyone?  People continued to stream in well into the presentation.  One guy ended up accidentally kicking separating my MacBook power supply from the pluggable portion of it.  Not so much as a "sorry, my bad" -- never looked back.  I understand there's a certain amount of Asperger-style intense focus at a geeky conference, but come on.  Sorry if I seemed a bit peevish, but several hot buttons were hit in this one: overcrowded room, disregard for personal space, cell phones ringing after several admonishments to silence them, relatively shrill speaker a bit trigger-happy on the slide flipper ... I guess my bitching about it was way more annoying to the guy in front of me, as when I uttered the line, "As a courtesy to others, please silence your cell phones", he shot back with the timeless classic, "Why don't you silence yourself, dude?"  Cue the slow clap.</p>

<p>Anyway, I didn't get that much out of the JPA talk.  I'm not doing much RDBMS work these days, but at least I have a sense of where to look for JPA info.</p>

<p>I bailed out of the talk "Unit Testing DB Operations with DBUnit" a shade early to catch a power nap -- I had no idea how exhausted I'd be after 1.5 days at the conference.  That said, I scheduled a number of sessions and BOFs -- perhaps next time I'll pace myself a bit better.  Besides, I've used DBUnit before, and it it quite nice -- not much new ground covered for me.</p>

<p>"Boldly Go Where the Java Programming Language Has Never Gone Before" -- Geert Bevin's talk's premise was that "You don't have to master new languages, tools, or libraries to deliver applications that go much further than what the standard Java platform provides."  He gave compelling demonstrations of Terracotta, an OSS clustering solution for the Java platform; RIFE, a component-based web framework featuring continuations; GWT; and Google Android.  Very nice stuff!</p>

<p>"Building RESTful Clients with JavaScript, Ruby, and JavaFX" -- not much here you couldn't get from an introductory article on REST.</p>

<p>Ola Bini of ThoughtWorks gave a talk about TW's use of JRuby.  As an ex-ThoughtWorker I was eager to hear about what TW's been up to in the Ruby world -- clearly, quite a lot.  I left TW just as it was beginning to pursue and land Ruby/Rails work.  Right now, 40% of its US revenue comes form Ruby/Rails work.  Surprising to learn that test suites run more slowly often in JRuby than in MRI -- less opportunity for JIT leverage, it seems.  Often they run test suites in MRI pre-commit, then with JRuby in CI build.</p>

<p>"Cooking Your Own Groovy Builder: A Step Forward into Domain-Specific Languages" -- nice exposition of the Builder support for languages that describe hierarchical structures such as XML documents and Swing widgetry.</p></div>
    </content>
    <updated>2008-05-08T22:27:17Z</updated>
    <category term="Programming"/>
    <author>
      <name>Pholser</name>
    </author>
    <source>
      <id>http://cleveralias.blogs.com/thought_spearmints/</id>
      <link href="http://cleveralias.blogs.com/thought_spearmints/" rel="alternate" type="text/html"/>
      <link href="http://cleveralias.blogs.com/thought_spearmints/index.rdf" rel="self" type="application/rdf+xml"/>
      <subtitle>On the brink of going awry.</subtitle>
      <title>Thought Spearmints</title>
      <updated>2008-05-12T23:21:38Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-30889085.post-5468118384769189747</id>
    <link href="http://www.juliansimpson.org/2008/05/last-chance-to-sponsor-us-before-woking.html" rel="alternate" type="text/html"/>
    <link href="http://www.blogger.com/comment.g?blogID=30889085&amp;postID=5468118384769189747" rel="replies" type="text/html"/>
    <link href="http://www.juliansimpson.org/feeds/5468118384769189747/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://www.juliansimpson.org/feeds/posts/default/5468118384769189747" rel="self" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/30889085/posts/default/5468118384769189747" rel="edit" type="application/atom+xml"/>
    <title>Last chance to sponsor us before the Woking bikeathon.</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><span style="font-size: small;"><b/></span>Leukemia is horrid.  Riding bikes is good.  That's why we are riding in the 2008 Woking Bikeathon for Leukaemia Research.  More info: <a href="http://justgiving.com/lesleyandjules">Link</a></div>
    </content>
    <updated>2008-05-08T21:46:29Z</updated>
    <published>2008-05-08T21:42:00Z</published>
    <author>
      <name>Julian</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/06148753904642162513</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-30889085</id>
      <author>
        <name>Julian</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/06148753904642162513</uri>
      </author>
      <link href="http://www.juliansimpson.org/" rel="alternate" type="text/html"/>
      <link href="http://www.juliansimpson.org/feeds/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <link href="http://www.juliansimpson.org/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://www.juliansimpson.org/feeds/posts/default" rel="self" type="application/atom+xml"/>
      <title>juliansimpson.org</title>
      <updated>2008-05-09T08:05:14Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-US">
    <id>http://cleveralias.blogs.com/thought_spearmints/2008/05/javaone-2008-mo.html</id>
    <link href="http://cleveralias.blogs.com/thought_spearmints/2008/05/javaone-2008-mo.html" rel="alternate" type="text/html"/>
    <title>JavaOne 2008: more from Day 1</title>
    <summary>Some random thoughts from Day 1 of JavaOne 2008 (belated): Wi-Fi connections spotty at best. Kind of disappointing they couldn't handle the traffic they could have reasonably expected. "JRuby: What, Why, How...Do It Now!" -- Nice JRuby overview. An admonishment...</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Some random thoughts from Day 1 of JavaOne 2008 (belated):</p>

<p>Wi-Fi connections spotty at best.  Kind of disappointing they couldn't handle the traffic they could have reasonably expected.</p>

<p>"JRuby: What, Why, How...Do It Now!" -- Nice JRuby overview.  An admonishment not to be scared to let go of static types -- nice.  Interesting how Groovy lets you go either way, sticking with the manifest typing of Java or introducing latent types as you please.  </p>

<p>Demonstrated blocks for deferred invocation, and their uses in internal collection iteration and encapsulating transactional code -- important use cases for their potential inclusion (closures) in the Java core language.  I wonder if such language features are better left to the other JVM-based languages that are sporting them already, rather than over-complicating what started out as a simple language.  Josh Bloch speaks often of a "complexity budget" for a language, and that perhaps Java is overspent.</p>

<p>Much of Rails code is created on startup.  Interesting.  Cool that Ruby allows you to define classes and methods at runtime, and to open up classes for such additions.  Cooler still that in JRuby, core JDK classes become open (even those that are final).  Apparently the term for opening up and tweaking core classes in this way is "monkey patching" -- derogatory term in the Python world, celebrated in the Ruby world.</p>

<p>JRuby leverages native threading of the JVM for better performance, as opposed to the "green threading" of the MRI.  There is a jirb analogue to irb in JRuby -- nice.</p>

<p>"require 'java'" to use JDK classes in JRuby code.</p>

<p>"require 'irb/completion'" in jirb to enable auto-completion in the console.  Sweet.</p>

<p>Java methods can be invoked in their regularCamelCaseWay or via_lower_case_underscored_names.</p>

<p>Plenty of help for building Swing apps in JRuby -- Cheri::Swing, Profligacy, MonkeyBars</p>

<p>"More Effective Java" -- New edition of Bloch's "Effective Java" is out -- covers new ground of generics, annotations, enums, concurrency libs, etc.</p>

<p>Use wildcard types, bounded or otherwise, generally only as method parms, not as return types.</p>

<p>'PECS' -- Producer extends, Consumer produces -- mnemonic for remembering when to use ? extends X versus ? super X.  If a method is both a producer and consumer of X, no wildcards needed on the generic type.  Users should not have to think about wildcards to use your API.</p>

<p>Enums -- do not rely on ordinal() for business logic, if you need to use an integer distinguisher as a field for each enum, use a constructor with an integer parm.  Don't depend on which ordinal() integer is assigned to each member of the enum.  Good discussion of EnumSet and EnumMap.  Bit fields are obsolete in Java.</p>

<p>The power of readResolve() to enforce singularity of singleton Serializables has been oversold -- readResolve() works only if all fields of the Serializable are transient.</p>

<p>Enums are inextensible, but can implement interfaces and each member of the enum can supply an implementation.</p>

<p>Good discussion of various lazy-init techniques.</p>

<p>Java 5 memory model enhancements apparently make double-check locking idiom work now.</p>

<p>"Upcoming Java Programming Language Features" -- Alex Buckley, spec lead for JDK 7 JSR, speaks of stewarding the "moral and technical integrity" of Java.</p>

<p>"A good application is rich; a good language is pure." Gosling, about adding features to a language: "Just say no, until threatened with bodily harm".  Tougher to add language features due to the explosion of interaction between the features.  In an app, features relatively rarely interact, and more is considered better.  Not so with language features.  With a language, fewer, more regular features are better.</p>

<p>"Respect the past": new keywords shouldn't break existing code (a la 'assert', 'enum').<br/>"Respect the future": allow room for syntax to breathe.  Syntax/semantics of a feature should not conflict with those of existing or potential features (quite a tall order!)<br/>"Respect the model": every language reflects a model of computation.  Java's model: general-purpose, class-based, OO, concurrent, civilized relationship to APIs, aligned with JVM.  When evolving a language with features, have those features enable more regular and abstract programs.</p>

<p>Principles that recognize the Java model:</p>

<ul><li>Encourage high-level practices -- do the right thing<ul><li>A program's meaning is hidden by accidental complexity (Fred Brooks)</li></ul></li>

<li>Covet clarity -- do the thing right<ul><li>A program is read far more often than written/modified</li>

<li>Language abstractions are the primary enabler of clear code</li></ul></li>

<li>Prefer static typing -- stay safe<ul><li>Proves absence of some bugs at compile time</li>

<li>Most Java keywords are about static typing</li></ul></li>

<li>Isolate the language from the APIs -- stay abstract<ul><li>A language is more widespread than its APIs</li>

<li>APIs come and go, language remains</li>

<li>Language compromised by linkage to a deprecated API.</li>

<li>JLS used to define java.lang.</li></ul></li></ul>

<p>Under consideration:</p>

<ul><li>Disjunctive exception types in catch statements (yay!)</li>

<li>Safe re-throw of exceptions in catch blocks when exception var is marked final</li>

<li>First-class modularity support in the language and tooling</li>

<li>JSR-308 using annotations to effectively introduce pluggable type systems into language -- for enforcing things like @NonNull, @Readonly, @Immutable, etc.</li></ul>

<p>Not of interest:</p>

<ul><li>User-defined operator overloading</li>

<li>Multi-methods</li>

<li>Macros</li>

<li>Dynamic typing (latent typing)</li></ul>

<p>"GUI Testing Made Easy" was a nice introduction to the FEST library by former ThoughtWorker Alex Ruiz.</p>

<p>"Practical Applications of Static Bytecode Analysis and Transformation for the Java Platform" -- great demonstrations of tools that use libraries like ASM for tweaking bytecode in interesting ways:</p>

<ul><li>Cobertura for instrumenting bytecode to be executed by tests, and measuring coverage of that code when tests are executed against it</li>

<li>Google Singleton Detector</li>

<li>Google Testability Explorer</li></ul>

<p>"Tips and Tricks for Using Language Features in API Design" -- lots of material to cover in a very short time.  I felt the speaker just ripped right through some topics that to me were non-obvious.  Slow down!  Interesting to learn a potential good use for wildcarded generic return types: return of an internal collection without having to copy it (callers won't be able to add/modify).</p>

<p>Be wary of interface covariant returns -- great for concrete impl classes, but in branching interface hierarchy, watch out.</p>

<p>If you're going to add an exception type, maybe make it carry more info other than just a new name?  Cause?  How to recover?  Also, in libraries, do take care to add serialVersionUIDs to your exception classes -- Exceptions are Serializable.</p></div>
    </content>
    <updated>2008-05-08T18:56:57Z</updated>
    <category term="Programming"/>
    <author>
      <name>Pholser</name>
    </author>
    <source>
      <id>http://cleveralias.blogs.com/thought_spearmints/</id>
      <link href="http://cleveralias.blogs.com/thought_spearmints/" rel="alternate" type="text/html"/>
      <link href="http://cleveralias.blogs.com/thought_spearmints/index.rdf" rel="self" type="application/rdf+xml"/>
      <subtitle>On the brink of going awry.</subtitle>
      <title>Thought Spearmints</title>
      <updated>2008-05-12T23:21:38Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:pubbitch.org,2008:entry,121026381315452</id>
    <link href="http://www.pubbitch.org/blog/2008/05/08/bananas" rel="alternate" type="text/html"/>
    <title>Bananas</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Who'd have thought it? <a href="http://www.earthclinic.com/Remedies/bananapeel.html">Bananas kill warts</a>. 
</p><p>
Sometimes, I wonder if I should just devote this blog to something other than "mainly tech" :)</p></div>
    </content>
    <updated>2008-05-08T16:23:58Z</updated>
    <source>
      <id>http://www.pubbitch.org/blog/index.atom</id>
      <author>
        <name>Simon Stewart</name>
      </author>
      <link href="http://www.pubbitch.org/blog/index.atom" rel="self" type="application/atom+xml"/>
      <link href="http://www.pubbitch.org/blog/index.html" rel="alternate" type="text/html"/>
      <title>Blogging Pubbitch</title>
      <updated>2008-05-13T05:07:37Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5638372.post-4675213843132939051</id>
    <link href="http://binkley.blogspot.com/2008/05/bad-concurrency-advice-interned-strings.html" rel="alternate" type="text/html"/>
    <title>Bad concurrency advice: interned Strings</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>I just read <a href="http://tutorials.jenkov.com/java-concurrency/thread-signaling.html" title="Thread Signaling"><cite>Thread Signaling</cite></a> from Jacob Jenkov.  It is fine as far as it goes to introduce the reader to <a href="http://java.sun.com/javase/6/docs/api/java/lang/Object.html#wait()"><code>Object.wait()</code></a> and <a href="http://java.sun.com/javase/6/docs/api/java/lang/Object.html#notify()"><code>Object.notify()</code></a>.</p> <p>But it has one fatal flaw: it uses a literal <a href="http://java.sun.com/javase/6/docs/api/java/lang/String.html"><code>java.lang.String</code></a> for coordinating between threads.  Why is this wrong?</p> <p>Strings are interned by the compiler.  To quote <a href="http://java.sun.com/javase/6/docs/api/java/lang/String.html#intern()">the javadocs</a>: <cite>All literal strings and string-valued constant expressions are interned.</cite>  Using a literal string means that any other code anywhere in the JVM, even in other libraries, which use the same <em>String literal value</em> all share the same object for <code>wait()</code> and <code>notify()</code>.  This code:</p> <pre class="code">public void dastardly() {
    "".notify();  
}</pre> <p>will wake up a thread waiting on empty string, including one in utterly unrelated code.</p> <p>Don't do that.  Instead, create a fresh <code>Object</code> for coordinating threads.  This age-worn advice for lock objects (<code>synchronize(lock)</code>) applies just as much to objects used to coordinate threads.</p></div>
    </summary>
    <updated>2008-05-08T15:10:00Z</updated>
    <category scheme="http://www.blogger.com/atom/ns#" term="java"/>
    <author>
      <name>binkley</name>
      <email>noreply@blogger.com</email>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5638372</id>
      <author>
        <name>binkley</name>
        <email>noreply@blogger.com</email>
      </author>
      <link href="http://binkley.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://binkley.blogspot.com/rss/binkley.xml" rel="self" type="application/atom+xml"/>
      <title>binkley's BLOG</title>
      <updated>2008-05-13T05:06:25Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://del.icio.us/www_build_doctor_com#2008-05-07</id>
    <link href="http://feeds.feedburner.com/~r/TheBuildDoctor/~3/285842660/www_build_doctor_com" rel="alternate" type="text/html"/>
    <title>Links for 2008-05-07 [del.icio.us]</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><ul>
<li><a href="http://blog.perfectapi.com/2008/05/how-building-bridge-is-same-as-building.html">Thoughts in the Wilderness: How building a bridge is the same as building software</a><br/>
I was about to scream: "the civil engineering metaphor is not appropriate for software engineering"!. But that would just make me sound shrill, and the man does have a point about the deployment being where the rubber hits the road.</li>
<li><a href="http://www.build-doctor.com/2008/05/git-coming-to-windows-computer-near-you.html">Git - coming to a Windows computer near you?</a><br/>
The skinny is that there's a Google Summer of Code project to implement (i read that this meant, not port) Git to C# to support windows and mono. sweet.</li>
</ul></div>
    </summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><ul>
<li><a href="http://blog.perfectapi.com/2008/05/how-building-bridge-is-same-as-building.html">Thoughts in the Wilderness: How building a bridge is the same as building software</a><br/>
I was about to scream: "the civil engineering metaphor is not appropriate for software engineering"!. But that would just make me sound shrill, and the man does have a point about the deployment being where the rubber hits the road.</li>
<li><a href="http://www.build-doctor.com/2008/05/git-coming-to-windows-computer-near-you.html">Git - coming to a Windows computer near you?</a><br/>
The skinny is that there's a Google Summer of Code project to implement (i read that this meant, not port) Git to C# to support windows and mono. sweet.</li>
</ul></div>
    </content>
    <updated>2008-05-08T05:00:00Z</updated><feedburner:origlink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://del.icio.us/www_build_doctor_com#2008-05-07</feedburner:origlink>
    <source>
      <id>tag:blogger.com,1999:blog-6500374844252313496</id>
      <logo>http://creativecommons.org/images/public/somerights20.gif</logo>
      <author>
        <name>Julian</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/06148753904642162513</uri>
      </author>
      <link href="http://www.build-doctor.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6500374844252313496/posts/default?start-index=26&amp;max-results=25&amp;redirect=false" rel="next" type="application/atom+xml"/>
      <link href="http://www.build-doctor.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://feeds.feedburner.com/TheBuildDoctor" rel="self" type="application/atom+xml"/>
      <title>The Build Doctor</title>
      <updated>2008-05-13T05:00:00Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://del.icio.us/gcaprio#2008-05-07</id>
    <link href="http://feeds.feedburner.com/~r/MemoirsOfABystander/~3/285842560/gcaprio" rel="alternate" type="text/html"/>
    <title>Links for 2008-05-07 [del.icio.us]</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><ul>
<li><a href="http://www.dev102.com/2008/05/06/11-more-visual-studio-shortcuts-you-should-know/">11 MORE VISUAL STUDIO SHORTCUTS YOU SHOULD KNOW | Dev102.com</a></li>
<li><a href="http://www.eagle-of-liberty.com/logicielmacupdate/">LogicielMac Update</a><br/>
Nice auto-update mac app</li>
</ul></div>
    </summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><ul>
<li><a href="http://www.dev102.com/2008/05/06/11-more-visual-studio-shortcuts-you-should-know/">11 MORE VISUAL STUDIO SHORTCUTS YOU SHOULD KNOW | Dev102.com</a></li>
<li><a href="http://www.eagle-of-liberty.com/logicielmacupdate/">LogicielMac Update</a><br/>
Nice auto-update mac app</li>
</ul><img height="1" src="http://feeds.feedburner.com/~r/MemoirsOfABystander/~4/285842560" width="1"/></div>
    </content>
    <updated>2008-05-08T05:00:00Z</updated><feedburner:origlink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://del.icio.us/gcaprio#2008-05-07</feedburner:origlink>
    <source>
      <id>tag:typepad.com,2003:weblog-491339</id>
      <author>
        <name>Griffin Caprio</name>
      </author>
      <link href="http://blog.1530technologies.com/" rel="alternate" type="text/html"/>
      <link href="http://feeds.feedburner.com/MemoirsOfABystander" rel="self" type="application/atom+xml"/>
      <subtitle>A blog mostly about technology and how it affects everday life.  And some software development posts....</subtitle>
      <title>Memoirs of a Bystander</title>
      <updated>2008-05-13T05:00:00Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5638372.post-2170265259781700049</id>
    <link href="http://binkley.blogspot.com/2008/05/jvm-hints-from-dautelle.html" rel="alternate" type="text/html"/>
    <title>JVM hints from Dautelle</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Jean-Marie Dautelle on <a href="http://www.javaworld.com/javaworld/jw-04-2008/jw-04-realtime.html"><cite>Realistically real-time</cite></a>, or getting real-time-like behavior from the non-real-time JVM.</p></div>
    </summary>
    <updated>2008-05-08T02:12:00Z</updated>
    <category scheme="http://www.blogger.com/atom/ns#" term="java"/>
    <author>
      <name>binkley</name>
      <email>noreply@blogger.com</email>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5638372</id>
      <author>
        <name>binkley</name>
        <email>noreply@blogger.com</email>
      </author>
      <link href="http://binkley.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://binkley.blogspot.com/rss/binkley.xml" rel="self" type="application/atom+xml"/>
      <title>binkley's BLOG</title>
      <updated>2008-05-13T05:06:25Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6500374844252313496.post-2448701593626971550</id>
    <link href="http://feeds.feedburner.com/~r/TheBuildDoctor/~3/285229261/git-coming-to-windows-computer-near-you.html" rel="alternate" type="text/html"/>
    <link href="http://www.blogger.com/comment.g?blogID=6500374844252313496&amp;postID=2448701593626971550" rel="replies" type="text/html"/>
    <link href="http://www.build-doctor.com/feeds/2448701593626971550/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6500374844252313496/posts/default/2448701593626971550" rel="self" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6500374844252313496/posts/default/2448701593626971550" rel="edit" type="application/atom+xml"/>
    <link href="http://creativecommons.org/licenses/by-nc-sa/3.0/" rel="license" type="text/html"/>
    <title>Git - coming to a Windows computer near you?</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://www.mono-project.com/">Mono</a> founder Miguel de Icaza just <a href="http://twitter.com/migueldeicaza/statuses/805262145">twittered</a> about a Google <a href="http://code.google.com/soc/2008/">Summer of Code</a> project called Git# - implemented in C#, with no platform dependencies.  Git is a powerful <a href="http://en.wikipedia.org/wiki/Distributed_revision_control">Distributed Version Control</a> system that came from <a href="http://kerneltrap.org/node/4982">Linus Torvalds</a>.  While you can convince it to run on Windows, it has dependencies on the Unix toolchain.  This project could change all that.</div>
    </content>
    <updated>2008-05-07T08:33:51Z</updated>
    <published>2008-05-07T08:27:00Z</published><feedburner:origlink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://www.build-doctor.com/2008/05/git-coming-to-windows-computer-near-you.html</feedburner:origlink>
    <author>
      <name>Julian</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/06148753904642162513</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6500374844252313496</id>
      <logo>http://creativecommons.org/images/public/somerights20.gif</logo>
      <author>
        <name>Julian</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/06148753904642162513</uri>
      </author>
      <link href="http://www.build-doctor.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6500374844252313496/posts/default?start-index=26&amp;max-results=25&amp;redirect=false" rel="next" type="application/atom+xml"/>
      <link href="http://www.build-doctor.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://feeds.feedburner.com/TheBuildDoctor" rel="self" type="application/atom+xml"/>
      <title>The Build Doctor</title>
      <updated>2008-05-13T05:00:00Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://del.icio.us/www_build_doctor_com#2008-05-06</id>
    <link href="http://feeds.feedburner.com/~r/TheBuildDoctor/~3/285118940/www_build_doctor_com" rel="alternate" type="text/html"/>
    <title>Links for 2008-05-06 [del.icio.us]</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><ul>
<li><a href="http://gojko.net/fitnesse/dbfit/">Gojko Adzic » DbFit: Test-driven database development</a><br/>
Got a testing framework that's all row and column oriented?  Got sprocs that are hard to test? You need this.</li>
<li><a href="http://tsqlunit.sourceforge.net/">TSQLUnit testing framework</a><br/>
How to unit tests sprocs in SQL Server.</li>
</ul></div>
    </summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><ul>
<li><a href="http://gojko.net/fitnesse/dbfit/">Gojko Adzic » DbFit: Test-driven database development</a><br/>
Got a testing framework that's all row and column oriented?  Got sprocs that are hard to test? You need this.</li>
<li><a href="http://tsqlunit.sourceforge.net/">TSQLUnit testing framework</a><br/>
How to unit tests sprocs in SQL Server.</li>
</ul></div>
    </content>
    <updated>2008-05-07T05:00:00Z</updated><feedburner:origlink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://del.icio.us/www_build_doctor_com#2008-05-06</feedburner:origlink>
    <source>
      <id>tag:blogger.com,1999:blog-6500374844252313496</id>
      <logo>http://creativecommons.org/images/public/somerights20.gif</logo>
      <author>
        <name>Julian</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/06148753904642162513</uri>
      </author>
      <link href="http://www.build-doctor.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6500374844252313496/posts/default?start-index=26&amp;max-results=25&amp;redirect=false" rel="next" type="application/atom+xml"/>
      <link href="http://www.build-doctor.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://feeds.feedburner.com/TheBuildDoctor" rel="self" type="application/atom+xml"/>
      <title>The Build Doctor</title>
      <updated>2008-05-13T05:00:00Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://del.icio.us/gcaprio#2008-05-06</id>
    <link href="http://feeds.feedburner.com/~r/MemoirsOfABystander/~3/285121281/gcaprio" rel="alternate" type="text/html"/>
    <title>Links for 2008-05-06 [del.icio.us]</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><ul>
<li><a href="http://www.tuaw.com/2008/05/06/mac-101-use-a-tab-to-navigate-dialogs/">Mac 101: use a tab to navigate dialogs - The Unofficial Apple Weblog (TUAW)</a><br/>
GREAT tip!  Been looking for this for a long time.</li>
<li><a href="http://niceone.org/infodesign/">Information Design Patterns</a></li>
</ul></div>
    </summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><ul>
<li><a href="http://www.tuaw.com/2008/05/06/mac-101-use-a-tab-to-navigate-dialogs/">Mac 101: use a tab to navigate dialogs - The Unofficial Apple Weblog (TUAW)</a><br/>
GREAT tip!  Been looking for this for a long time.</li>
<li><a href="http://niceone.org/infodesign/">Information Design Patterns</a></li>
</ul><img height="1" src="http://feeds.feedburner.com/~r/MemoirsOfABystander/~4/285121281" width="1"/></div>
    </content>
    <updated>2008-05-07T05:00:00Z</updated><feedburner:origlink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://del.icio.us/gcaprio#2008-05-06</feedburner:origlink>
    <source>
      <id>tag:typepad.com,2003:weblog-491339</id>
      <author>
        <name>Griffin Caprio</name>
      </author>
      <link href="http://blog.1530technologies.com/" rel="alternate" type="text/html"/>
      <link href="http://feeds.feedburner.com/MemoirsOfABystander" rel="self" type="application/atom+xml"/>
      <subtitle>A blog mostly about technology and how it affects everday life.  And some software development posts....</subtitle>
      <title>Memoirs of a Bystander</title>
      <updated>2008-05-13T05:00:00Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>tag:gregluck.com,2008:/blog/1.149</id>
    <link href="http://gregluck.com/blog/archives/2008/05/cvs_unknown_hos.html" rel="alternate" type="text/html"/>
    <title xml:lang="en">cvs unknown host error</title>
    <summary xml:lang="en">I am getting a but rusty on cvs. I went to run cvs up on a project and got "unknown host error". A google search did not yield anything useful. Playing around with it, my problem was that the host...</summary>
    <content xml:lang="en">I am getting a but rusty on cvs. I went to run cvs up on a project and got "unknown host error".

A google search did not yield anything useful.

Playing around with it, my problem was that the host was not added to ssh's known hosts. I sshed to the host and accepted it into known hosts. 

Then cvs worked fine.</content>
    <updated>2008-05-06T23:16:27Z</updated>
    <published>2008-05-06T23:14:27Z</published>
    <category term="Open Source"/>
    <author>
      <name>gluck</name>
      <email>gluck@gregluck.com</email>
    </author>
    <source>
      <id>tag:gregluck.com,2008:/blog/1</id>
      <link href="http://gregluck.com/blog/" rel="alternate" type="text/html"/>
      <link href="http://gregluck.com/blog/atom.xml" rel="self" type="application/atom+xml"/>
      <rights xml:lang="en">Copyright (c) 2008, gluck</rights>
      <subtitle xml:lang="en">The opinions expressed here are those of the author, not of my employer or clients.</subtitle>
      <title xml:lang="en">Greg Luck's WebLog</title>
      <updated>2008-05-06T23:16:27Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-US">
    <id>http://cleveralias.blogs.com/thought_spearmints/2008/05/javaone-2008--.html</id>
    <link href="http://cleveralias.blogs.com/thought_spearmints/2008/05/javaone-2008--.html" rel="alternate" type="text/html"/>
    <title>JavaOne 2008 -- Day 1 preview</title>
    <summary>I'm at JavaOne this year, my first trip to the big dance. Based on the rock-concert lines forming for the first General Session, I'd say the conference is doing pretty damn well. Flight into SFO from DFW last night was...</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>I'm at <a href="http://java.sun.com/javaone/sf/index.jsp">JavaOne</a> this year, my first trip to the big dance.  Based on the rock-concert lines forming for the first General Session, I'd say the conference is doing pretty damn well.</p>

<p>Flight into SFO from DFW last night was without incident.  It was remarkably easy to get to my hotel downtown, about six blocks away from the Moscone Center -- hopped the AirTrain to the BART Station, quickly purchased a ticket to the Powell station, hopped on, and twenty minutes or so I was five blocks away from my hotel.  Great success!</p>

<p>I'm registered for the following Day 1 technical sessions/BOFs:</p>

<ul><li> "<a href="http://jruby.codehaus.org">JRuby</a>: Why, What, How...Do It Now", featuring the great <a href="http://headius.blogspot.com">Charles Nutter</a> </li>

<li>"More <a href="http://java.sun.com/docs/books/effective/">Effective Java</a>" from Mr. <a href="http://java.sun.com/docs/books/effective/">Effective Java</a> himself, Joshua Bloch</li>

<li>"Upcoming Java Programming Language Changes", featuring <a href="http://gafter.blogspot.com">Neal Gafter</a>, he of all things Java-compiler-related</li>

<li>"Practical Applications of Static Java Technology-Based Bytecode Analysis and Transformation"</li>

<li>"Tips and Tricks for Using Language Features in API Design and Implementation" -- perhaps some good thoughts there about fluent interfaces</li>

<li>"Migrating to <a href="http://maven.apache.org">Maven 2</a> Demystified".  I am in the midst of doing this for my <a href="http://jopt-simple.sourceforge.net">Java open</a> <a href="http://jaggregate.sourceforge.net">source projects</a>, so perhaps I can pick up some tips.</li>

<li>"GUI Testing Made Easy", with <a href="http://www.jroller.com/alexRuiz/">Alex Ruiz</a> and Yvonne Price of <a href="http://code.google.com/p/fest/">FEST</a>.  Alex and I met each other briefly while both at <a href="http://www.thoughtworks.com">ThoughtWorks</a> -- it'll be good to see what he's been up to.</li></ul>

<p>More updates as the talks warrant.</p></div>
    </content>
    <updated>2008-05-06T15:39:36Z</updated>
    <category term="Programming"/>
    <author>
      <name>Pholser</name>
    </author>
    <source>
      <id>http://cleveralias.blogs.com/thought_spearmints/</id>
      <link href="http://cleveralias.blogs.com/thought_spearmints/" rel="alternate" type="text/html"/>
      <link href="http://cleveralias.blogs.com/thought_spearmints/index.rdf" rel="self" type="application/rdf+xml"/>
      <subtitle>On the brink of going awry.</subtitle>
      <title>Thought Spearmints</title>
      <updated>2008-05-12T23:21:38Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://rasmusson.wordpress.com/?p=62</id>
    <link href="http://rasmusson.wordpress.com/2008/05/06/the-best-time-to-post-on-your-blog/" rel="alternate" type="text/html"/>
    <link href="http://rasmusson.wordpress.com/2008/05/06/the-best-time-to-post-on-your-blog/#comments" rel="replies" type="text/html"/>
    <link href="http://rasmusson.wordpress.com/2008/05/06/the-best-time-to-post-on-your-blog/feed/atom/" rel="replies" type="application/atom+xml"/>
    <title xml:lang="en">The best time to post on your blog</title>
    <summary xml:lang="en">For all you bloggers out there, here is an interesting post from ReadWriteWeb reporting the best time to post to your blog.
Best time : 1pm - 3pm and 5pm - 7pm (PST) on Thursdays.
Worst time : Between 3 - 5 pm PST on weekends.
This seems to make sense as there are far fewer readers on [...]</summary>
    <updated>2008-05-06T13:00:39Z</updated>
    <published>2008-05-06T13:00:39Z</published>
    <category scheme="http://rasmusson.wordpress.com" term="General"/>
    <category scheme="http://rasmusson.wordpress.com" term="blog"/>
    <category scheme="http://rasmusson.wordpress.com" term="blogging"/>
    <author>
      <name>JR</name>
    </author>
    <source>
      <id>http://rasmusson.wordpress.com/feed/atom/</id>
      <link href="http://rasmusson.wordpress.com" rel="alternate" type="text/html"/>
      <link href="http://rasmusson.wordpress.com/feed/atom/" rel="self" type="application/atom+xml"/>
      <subtitle xml:lang="en">Share Learn And Grow</subtitle>
      <title xml:lang="en">Rasmusson Software Consulting</title>
      <updated>2008-05-06T13:00:39Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://del.icio.us/www_build_doctor_com#2008-05-05</id>
    <link href="http://feeds.feedburner.com/~r/TheBuildDoctor/~3/284398723/www_build_doctor_com" rel="alternate" type="text/html"/>
    <title>Links for 2008-05-05 [del.icio.us]</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><ul>
<li><a href="http://www.build-doctor.com/2008/05/ant-best-practices-define-and-reuse.html">Ant Best Practices: Define and Reuse Paths</a><br/>
#7 of 15.  Kinda what it says on the tin.</li>
</ul></div>
    </summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><ul>
<li><a href="http://www.build-doctor.com/2008/05/ant-best-practices-define-and-reuse.html">Ant Best Practices: Define and Reuse Paths</a><br/>
#7 of 15.  Kinda what it says on the tin.</li>
</ul></div>
    </content>
    <updated>2008-05-06T05:00:00Z</updated><feedburner:origlink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://del.icio.us/www_build_doctor_com#2008-05-05</feedburner:origlink>
    <source>
      <id>tag:blogger.com,1999:blog-6500374844252313496</id>
      <logo>http://creativecommons.org/images/public/somerights20.gif</logo>
      <author>
        <name>Julian</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/06148753904642162513</uri>
      </author>
      <link href="http://www.build-doctor.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6500374844252313496/posts/default?start-index=26&amp;max-results=25&amp;redirect=false" rel="next" type="application/atom+xml"/>
      <link href="http://www.build-doctor.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://feeds.feedburner.com/TheBuildDoctor" rel="self" type="application/atom+xml"/>
      <title>The Build Doctor</title>
      <updated>2008-05-13T05:00:00Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://del.icio.us/gcaprio#2008-05-05</id>
    <link href="http://feeds.feedburner.com/~r/MemoirsOfABystander/~3/284397217/gcaprio" rel="alternate" type="text/html"/>
    <title>Links for 2008-05-05 [del.icio.us]</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><ul>
<li><a href="http://abbottanalytics.blogspot.com/2008/04/data-mining-data-sets.html">Data Mining and Predictive Analytics: Data Mining Data Sets</a></li>
<li><a href="http://www.statsoft.com/textbook/stathome.html">StatSoft Electronic Textbook</a></li>
</ul></div>
    </summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><ul>
<li><a href="http://abbottanalytics.blogspot.com/2008/04/data-mining-data-sets.html">Data Mining and Predictive Analytics: Data Mining Data Sets</a></li>
<li><a href="http://www.statsoft.com/textbook/stathome.html">StatSoft Electronic Textbook</a></li>
</ul><img height="1" src="http://feeds.feedburner.com/~r/MemoirsOfABystander/~4/284397217" width="1"/></div>
    </content>
    <updated>2008-05-06T05:00:00Z</updated><feedburner:origlink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://del.icio.us/gcaprio#2008-05-05</feedburner:origlink>
    <source>
      <id>tag:typepad.com,2003:weblog-491339</id>
      <author>
        <name>Griffin Caprio</name>
      </author>
      <link href="http://blog.1530technologies.com/" rel="alternate" type="text/html"/>
      <link href="http://feeds.feedburner.com/MemoirsOfABystander" rel="self" type="application/atom+xml"/>
      <subtitle>A blog mostly about technology and how it affects everday life.  And some software development posts....</subtitle>
      <title>Memoirs of a Bystander</title>
      <updated>2008-05-13T05:00:00Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6500374844252313496.post-7055857001074514735</id>
    <link href="http://feeds.feedburner.com/~r/TheBuildDoctor/~3/284203067/ant-best-practices-define-and-reuse.html" rel="alternate" type="text/html"/>
    <link href="http://www.blogger.com/comment.g?blogID=6500374844252313496&amp;postID=7055857001074514735" rel="replies" type="text/html"/>
    <link href="http://www.build-doctor.com/feeds/7055857001074514735/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6500374844252313496/posts/default/7055857001074514735" rel="self" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6500374844252313496/posts/default/7055857001074514735" rel="edit" type="application/atom+xml"/>
    <link href="http://creativecommons.org/licenses/by-nc-sa/3.0/" rel="license" type="text/html"/>
    <title>Ant Best Practices: Define and Reuse Paths</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><div style="text-align: center;"><a href="http://bp2.blogger.com/_-rlZcQ-7nAM/SB99L3DartI/AAAAAAAAAD4/eTVVT0jBpWo/s1600-h/839051567_dd38dc0fb3.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5197010137719156434" src="http://bp2.blogger.com/_-rlZcQ-7nAM/SB99L3DartI/AAAAAAAAAD4/eTVVT0jBpWo/s320/839051567_dd38dc0fb3.jpg" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;"/></a><span style="font-size: 85%;">(image taken from <a href="http://www.flickr.com/photos/10483052@N00/">justpic's photostream</a>)<br/><br/></span></div><a href="http://www.build-doctor.com/2008/04/ant-best-practices-manage-dependencies.html">Last time</a>, we discussed dependencies.  Today's installment of <a href="http://www.build-doctor.com/2008/04/ant-best-practices-series.html">Ant Best Practices</a> is purportedly about resusing filesets by reference ID, but it's really another way to avoid duplication.  The title of Eric's original article is 'Define and Reuse Paths'.  The same advice works for paths, filesets, and filtersets.  Here's an example:<br/> <pre><span class="punct">&lt;</span><span class="tag">project</span> <span class="attribute">name</span><span class="punct">="</span>OnceAndOnlyOnce<span class="punct">"&gt;</span><br/> <br/> <span class="punct">&lt;</span><span class="tag">fileset</span> <span class="attribute">id</span><span class="punct">="</span><span class="string">output_files</span><span class="punct">"</span> <span class="attribute">dir</span><span class="punct">="</span><span class="string">${build.dir}</span><span class="punct">"&gt;</span><br/>  <span class="punct">&lt;</span><span class="tag">include</span> <span class="attribute">name</span><span class="punct">="</span><span class="string">duplicato-*.jar</span><span class="punct">"</span> <span class="punct">/&gt;</span><br/> <span class="punct">&lt;/</span><span class="tag">fileset</span><span class="punct">&gt;</span><br/> <br/> <span class="punct">&lt;</span><span class="tag">target</span> <span class="attribute">name</span><span class="punct">="</span><span class="string">copy_stuff</span><span class="punct">"&gt;</span><br/>  <span class="punct">&lt;</span><span class="tag">copy</span> <span class="attribute">todir</span><span class="punct">="</span><span class="string">${special.shiny.dir}</span><span class="punct">"&gt;</span><br/>   <span class="punct">&lt;</span><span class="tag">fileset</span> <span class="attribute">refid</span><span class="punct">="</span><span class="string">output_files</span><span class="punct">"</span> <span class="punct">/&gt;</span><br/>  <span class="punct">&lt;/</span><span class="tag">copy</span><span class="punct">&gt;</span><br/> <span class="punct">&lt;/</span><span class="tag">target</span><span class="punct">&gt;</span><br/> <br/><span class="punct">&lt;/</span><span class="tag">project</span><span class="punct">&gt;</span></pre> You can see that any other use of the fileset will be able to refer to it by ID, rather than explicitly declare it again.  One of the scariest builds that I ever saw was 4,000 lines of XML in a single file.  One of my erstwhile colleagues spent a morning going through it and replacing filterset declarations with references to one filterset.  It's such a useful feature to have in a build tool, and a fine piece of advice to give to someone who just started out writing build scripts.<br/><br/>The other point from the original article is that you need to use this technique alongside some modular approach to handling paths.  You just can't really get away with having a path named '<span style="font-weight: bold;">standard.jars.classpath.without.selenium</span>' (and yes, that's almost directly lifted from the build of a large Java project).  You're much better off trying to split things like classpaths into categories like build-time and runtime.  That's something I touched on in my article for the ThoughtWorks Anthology.  I'm thinking of expanding on it in a future post.  You like that idea?  <a href="http://www.build-doctor.com/2008/04/how-to-get-repeat-prescriptions-from.html">Let me know</a>.</div>
    </content>
    <updated>2008-05-05T21:35:10Z</updated>
    <published>2008-05-05T21:15:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="paths"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="best practices"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="build"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="ant"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="fileset"/><feedburner:origlink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://www.build-doctor.com/2008/05/ant-best-practices-define-and-reuse.html</feedburner:origlink>
    <author>
      <name>Julian</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/06148753904642162513</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6500374844252313496</id>
      <logo>http://creativecommons.org/images/public/somerights20.gif</logo>
      <author>
        <name>Julian</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/06148753904642162513</uri>
      </author>
      <link href="http://www.build-doctor.com/" rel="alternate" type="text/html"/>
      <link href="http://www.blogger.com/feeds/6500374844252313496/posts/default?start-index=26&amp;max-results=25&amp;redirect=false" rel="next" type="application/atom+xml"/>
      <link href="http://www.build-doctor.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://feeds.feedburner.com/TheBuildDoctor" rel="self" type="application/atom+xml"/>
      <title>The Build Doctor</title>
      <updated>2008-05-13T05:00:00Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://www.darrenhobbs.com/archives/2008/05/swinghelper.html</id>
    <link href="http://www.darrenhobbs.com/archives/2008/05/swinghelper.html" rel="alternate" type="text/html"/>
    <title>SwingHelper</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>One of the most common causes of sporadic bugs in swing applications is doing things on the wrong thread. Most common of these is when a thread that is not the Event Dispatch Thread does something that updates the gui. Its very easy to do accidentally as seemingly innocent operations done on a background thread can fire off event listeners and end up inside code it shouldn't as a result. </p>

<p><a href="http://weblogs.java.net/blog/alexfromsun/archive/2006/02/debugging_swing.html">CheckThreadViolationRepaintManager</a> from the <a href="https://swinghelper.dev.java.net/">SwingHelper</a> project is a very useful class that can be easily plumbed into a Swing application to report any wayward threads getting into gui code.</p>

<p>Also from the same stable is the <a href="http://weblogs.java.net/blog/alexfromsun/archive/2006/06/swing_testing_a.html">EventDispatchThreadHangMonitor</a> which can report when the Event Dispatch Thread spends too long outside its main loop (which will result in a sluggish and unresponsive gui).</p></div>
    </summary>
    <updated>2008-05-05T17:50:12Z</updated>
    <source>
      <id>http://www.darrenhobbs.com/</id>
      <author>
        <name>Darren Hobbs</name>
      </author>
      <link href="http://www.darrenhobbs.com/" rel="alternate" type="text/html"/>
      <link href="http://www.darrenhobbs.com/index.xml" rel="self" type="application/rss+xml"/>
      <subtitle>Darren's take on open source, agile methods, technology and anything else that springs to mind.</subtitle>
      <title>Darren Hobbs</title>
      <updated>2008-05-05T17:50:12Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://www.darrenhobbs.com/archives/2008/03/wordpress_fail.html</id>
    <link href="http://www.darrenhobbs.com/archives/2008/03/wordpress_fail.html" rel="alternate" type="text/html"/>
    <title>Wordpress Fail</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>So I was all fired up about migrating to wordpress, due to the rot this blog has suffered over time. (The category links have been broken for nearly 2 years now I think). I got as far as the following line in the (ahem) 5 minute install guide:</p>

<blockquote>
Create a database for WordPress on your web server, as well as a MySQL user who has all privileges for accessing and modifying it.
</blockquote>

<p>And now it all seems like way too much effort. I'm <b>incredibly</b> lazy when it comes to blog tools. Gone are the days when I would happily spend half a day tinkering with the tool prior to writing a 10 minute post. And I'm sick of blasted relational databases. A blog is just a bunch of text snippets with a few bits of metadata around the edges. Why not use a perfectly good filesystem for storing what is so easily represented as a bunch of files? It might even stand a chance of holding my attention long enough for me to finish installing it.</p>

<p>I really want to blog more, but I need the feedback of comments to help keep me going. Every time I've tried tinkering with movable type comments to allow me to turn them back on its been buried in spam within seconds, and I can't be bothered figuring out which magic combination of plugins, captchas, blacklists and runic inscriptions I need to make it work.</p>

<p>I'm off to find some incredibly tedious housework to do that might make farting about with MySql seem like a reward and a treat.</p></div>
    </summary>
    <updated>2008-05-05T17:50:12Z</updated>
    <source>
      <id>http://www.darrenhobbs.com/</id>
      <author>
        <name>Darren Hobbs</name>
      </author>
      <link href="http://www.darrenhobbs.com/" rel="alternate" type="text/html"/>
      <link href="http://www.darrenhobbs.com/index.xml" rel="self" type="application/rss+xml"/>
      <subtitle>Darren's take on open source, agile methods, technology and anything else that springs to mind.</subtitle>
      <title>Darren Hobbs</title>
      <updated>2008-05-05T17:50:12Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://www.darrenhobbs.com/archives/2008/01/java_guid_uuid.html</id>
    <link href="http://www.darrenhobbs.com/archives/2008/01/java_guid_uuid.html" rel="alternate" type="text/html"/>
    <title>Java GUID / UUID Update</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>One of my most visited posts is <a href="http://www.darrenhobbs.com/archives/2003/08/java_has_guids.html">this one</a> written in 2003 about a couple of little known classes in the JDK for generating unique identifiers, also known as GUID's or UUID's. Java 5 and later now also has the <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/UUID.html">UUID class</a>. Universally unique identifiers for everyone!</p></div>
    </summary>
    <updated>2008-05-05T17:50:12Z</updated>
    <source>
      <id>http://www.darrenhobbs.com/</id>
      <author>
        <name>Darren Hobbs</name>
      </author>
      <link href="http://www.darrenhobbs.com/" rel="alternate" type="text/html"/>
      <link href="http://www.darrenhobbs.com/index.xml" rel="self" type="application/rss+xml"/>
      <subtitle>Darren's take on open source, agile methods, technology and anything else that springs to mind.</subtitle>
      <title>Darren Hobbs</title>
      <updated>2008-05-05T17:50:12Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://www.darrenhobbs.com/archives/2007/11/change_the_word.html</id>
    <link href="http://www.darrenhobbs.com/archives/2007/11/change_the_word.html" rel="alternate" type="text/html"/>
    <title>Change the Words</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Agile is dead. The word is too easy to slap onto any old thing in an attempt to jazz it up. It's also pretty easy to use as a pejorative term by those who have no interest in improving.  Let's take a typical interaction:</p>

<blockquote>"We're doing agile development. By using agile techniques we can work more effectively and our software is easier to change, with fewer bugs. The agile approach lets our customers steer the project while it's running to maximise return on investment."

<p>"Agile techniques? I've heard about them. Isn't agile software development just an excuse not to spend time doing design and analysis? How can you run a project without nailing down all the requirements and design in advance? Agile approach? No thanks!"</p></blockquote>

<p>In my head, I like to replace the word 'agile' with 'professional' and 'modern'. To me the above conversation thus sounds a bit like this:</p>

<blockquote>"We're doing professional development. By using modern techniques we can work more effectively and our software is easier to change, with fewer bugs. The professional approach lets our customers steer the project while it's running to maximise return on investment."

<p>"Modern techniques? I've heard about them. Isn't professional software development just an excuse not to spend time doing design and analysis? How can you run a project without nailing down all the requirements and design in advance? Professional approach? No thanks!"</p></blockquote>

<p>It also works when talking about software frameworks.</p>

<blockquote>"We've built a software framework to enforce a standard approach to all applications and maximise reuse of common components. All a project team has to do is work to the common interface and conform their design to the framework. Sharing common software components maximises standardisation between projects."</blockquote>

<p>I hear:</p>

<blockquote>"We've built a software nightmare to enforce a mediocre approach to all applications and maximise reuse of inappropriate components. All a project team has to do is work to an inappropriate interface and conform their design to the nightmare. Sharing inappropriate software components maximises mediocrity between projects."</blockquote>

<p>(Just to clarify, I'm a big fan of libraries. A library is something that you use. java.util.collections for example. A framework is something that (ab)uses you.)</p></div>
    </summary>
    <updated>2008-05-05T17:50:12Z</updated>
    <source>
      <id>http://www.darrenhobbs.com/</id>
      <author>
        <name>Darren Hobbs</name>
      </author>
      <link href="http://www.darrenhobbs.com/" rel="alternate" type="text/html"/>
      <link href="http://www.darrenhobbs.com/index.xml" rel="self" type="application/rss+xml"/>
      <subtitle>Darren's take on open source, agile methods, technology and anything else that springs to mind.</subtitle>
      <title>Darren Hobbs</title>
      <updated>2008-05-05T17:50:12Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://www.darrenhobbs.com/archives/2007/08/alumnus.html</id>
    <link href="http://www.darrenhobbs.com/archives/2007/08/alumnus.html" rel="alternate" type="text/html"/>
    <title>Alumnus</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>After almost 5 years, I find myself no longer working for ThoughtWorks. Moving on was a hard decision but it was time for a change. I'm looking forward to my new job, but I'll miss being '@thoughtworks.com'.</p>

<p>I won't miss Lotus Notes.</p></div>
    </summary>
    <updated>2008-05-05T17:50:12Z</updated>
    <source>
      <id>http://www.darrenhobbs.com/</id>
      <author>
        <name>Darren Hobbs</name>
      </author>
      <link href="http://www.darrenhobbs.com/" rel="alternate" type="text/html"/>
      <link href="http://www.darrenhobbs.com/index.xml" rel="self" type="application/rss+xml"/>
      <subtitle>Darren's take on open source, agile methods, technology and anything else that springs to mind.</subtitle>
      <title>Darren Hobbs</title>
      <updated>2008-05-05T17:50:12Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://www.darrenhobbs.com/archives/2007/07/the_next_langua.html</id>
    <link href="http://www.darrenhobbs.com/archives/2007/07/the_next_langua.html" rel="alternate" type="text/html"/>
    <title>The Next Language for Startups?</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Nobody who can spell HTML would be surprised if you launched  a Web 2.0 company and chose to use Rails to build your site.  On the other hand, one of the ways startups beat the competition is by taking the road less travelled, by using a language considered wierd or niche by everyone else. Success can lead to the language being noticed and becoming more widely accepted.</p>

<p>I was pleased to discover that <a href="http://www.slideaware.com/">Slideaware</a> have <a href="http://slideaware.typepad.com/slideaware/2007/04/from_python_to_.html">migrated from Rails</a> to <a href="http://slideaware.typepad.com/slideaware/2007/05/there_is_a_worl.html">Erlang</a> for their online powerpoint collaboration application. Not because I don't like Rails, but because I really like <a href="http://www.erlang.org">Erlang</a>.</p></div>
    </summary>
    <updated>2008-05-05T17:50:12Z</updated>
    <source>
      <id>http://www.darrenhobbs.com/</id>
      <author>
        <name>Darren Hobbs</name>
      </author>
      <link href="http://www.darrenhobbs.com/" rel="alternate" type="text/html"/>
      <link href="http://www.darrenhobbs.com/index.xml" rel="self" type="application/rss+xml"/>
      <subtitle>Darren's take on open source, agile methods, technology and anything else that springs to mind.</subtitle>
      <title>Darren Hobbs</title>
      <updated>2008-05-05T17:50:12Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://www.darrenhobbs.com/archives/2007/05/paypal.html</id>
    <link href="http://www.darrenhobbs.com/archives/2007/05/paypal.html" rel="alternate" type="text/html"/>
    <title>Paypal</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>It's not friendly and it makes it really hard to pay for stuff.</p>

<p>Has anyone ever actually had a smooth user experience with Paypal? Every single time I've tried to use it I've had problems.</p>

<p>The new credit card loop of death. A particular favourite. This is where paypal keeps insisting that 'this card has already been registered' while steadfastly refusing to let me actually use it to pay for stuff, eventually looping back to the 'add card' screen for another fun go around.</p>

<p>Amnesia. Several times paypal has let me go all the way through adding a new card, accepted it and then just forgotten all about it, forcing me to add the card again. Often leads to another free trip to the loop of death above.</p>

<p>Insisting that a payment has already been made (for an item on ebay) and refusing to let me continue, despite ebay having precisely the opposite opinion. Makes the whole cute 'an ebay company' logo look like some kind of ironic joke.</p>

<p>Workflow bugs in little-used ancillary features are one thing but... this is paypal. One might consider the workflow around, you know, 'paying for stuff' to be something of a core function?</p></div>
    </summary>
    <updated>2008-05-05T17:50:12Z</updated>
    <source>
      <id>http://www.darrenhobbs.com/</id>
      <author>
        <name>Darren Hobbs</name>
      </author>
      <link href="http://www.darrenhobbs.com/" rel="alternate" type="text/html"/>
      <link href="http://www.darrenhobbs.com/index.xml" rel="self" type="application/rss+xml"/>
      <subtitle>Darren's take on open source, agile methods, technology and anything else that springs to mind.</subtitle>
      <title>Darren Hobbs</title>
      <updated>2008-05-05T17:50:12Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://www.darrenhobbs.com/archives/2007/04/strong_typing_a.html</id>
    <link href="http://www.darrenhobbs.com/archives/2007/04/strong_typing_a.html" rel="alternate" type="text/html"/>
    <title>Tiny Types</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>There's a pattern I've used with great success a couple of times now that tends to provoke strong reactions in developers when they first see it. I've had comments along the lines of "that's horrible!", "ugh" and "that's way too much work".  The pattern is this: the encapsulation of simple built-in types within domain specific classes. Sounds simple and it is.</p>
<p>
Lets take a concrete example:
</p>
<pre>public class Customer {
    private final String firstName;
    private final String familyName;
    private final int ageInYears;
    private final int heightInCentimetres;

    public Customer(String firstName, String familyName, int ageInYears, int heightInCentimetres) {
        this.firstName = firstName;
        this.familyName = familyName;
        this.ageInYears = ageInYears;
        this.heightInCentimetres = heightInCentimetres;
    }
}
</pre>

<p>
Fairly standard stuff. But note the constructor signature: string, string, int, int. Not really very expressive and exceedingly easy to get the parameters out of order. But who would get someone's first and last names mixed up? Ask any Chinese person how often that happens. They place their family name before their given name. Also, strings and integers are not usually domain concepts unless you are writing a compiler. Someone's first name is not interchangeable with their last name the way two strings are. So how about this:
</p>
<pre>public class Customer {
    private final FirstName firstName;
    private final FamilyName familyName;
    private final Age age;
    private final Height height;

    public Customer(FirstName firstName, FamilyName familyName, Age age, Height height) {
        this.familyName = familyName;
        this.firstName = firstName;
        this.age = age;
        this.height = height;
    }
}
</pre>
<p>
It is at this point that most developers recoil. No way do I have time to add an entire class just to wrap a string! Or two entire classes in this case! Actually, it's four new classes. All of which I wrote while writing this post. There is a reasonable amount of boilerplate. Including toString, equals, hashCode and a getter makes for about 40 lines per tiny type, almost all of which can be condensed into an IDEA template. And most systems have a finite number of domain concepts so the rate of adding these tiny types isn't very high and drops off fairly quickly.</p>
<p>
But why do this? I consider it playing to the strengths of a statically typed language. Java will never be as Ruby as Ruby, but it can be much more Java than Ruby ever will. All sorts of useful things start to happen when the library types and primitives have been banished from your api. Now the compiler can spot transposition errors. Equals and hashCode can be implemented with domain specific semantics. It's much harder to accidentally pass dollars into a method that was expecting pounds sterling (but actually took a double so it could have been anything). Readability is greatly improved. Automated refactoring, code completion and code navigation all gain a new level of power. 'Find usages' on the FirstName class produces far more useful results than doing it on the String class.
</p>
<p>
You probably still don't fully believe me if you haven't tried it, but this is one of those times where cognitive dissonance has got it wrong. It really is an exceedingly useful approach.</p></div>
    </summary>
    <updated>2008-05-05T17:50:12Z</updated>
    <source>
      <id>http://www.darrenhobbs.com/</id>
      <author>
        <name>Darren Hobbs</name>
      </author>
      <link href="http://www.darrenhobbs.com/" rel="alternate" type="text/html"/>
      <link href="http://www.darrenhobbs.com/index.xml" rel="self" type="application/rss+xml"/>
      <subtitle>Darren's take on open source, agile methods, technology and anything else that springs to mind.</subtitle>
      <title>Darren Hobbs</title>
      <updated>2008-05-05T17:50:12Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://www.darrenhobbs.com/archives/2007/04/mistakes_you_wi.html</id>
    <link href="http://www.darrenhobbs.com/archives/2007/04/mistakes_you_wi.html" rel="alternate" type="text/html"/>
    <title>Mistakes you will make in software</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Almost without fail I see certain errors repeated on every single software project I come across. The projects that successfully dodge these pitfalls almost always do so because someone on the team fell into them once before and swore they wouldn't do so again.  Those of you who haven't yet been burned by this class of error will almost certainly protest about complexity or wierd design choices in the code made by those who have.</p>

<p>Who are these heinous kingpins of crime in the bug ghettos of the software world? Its a work in progress, but the initial contenders are:</p>

<ul>
<li>Dates and times</li>
<li>Money</li>
<li>Concatenated strings as identifiers</li>
</ul>

<p>Those of you who've been beset in the past are nodding right now, those who haven't are probably saying, "they don't seem very complicated."</p>

<p>Which is exactly why they'll get you sooner or later. Then you'll remember this post, and you'll nod.</p></div>
    </summary>
    <updated>2008-05-05T17:50:12Z</updated>
    <source>
      <id>http://www.darrenhobbs.com/</id>
      <author>
        <name>Darren Hobbs</name>
      </author>
      <link href="http://www.darrenhobbs.com/" rel="alternate" type="text/html"/>
      <link href="http://www.darrenhobbs.com/index.xml" rel="self" type="application/rss+xml"/>
      <subtitle>Darren's take on open source, agile methods, technology and anything else that springs to mind.</subtitle>
      <title>Darren Hobbs</title>
      <updated>2008-05-05T17:50:12Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://www.darrenhobbs.com/archives/2007/04/feed_me.html</id>
    <link href="http://www.darrenhobbs.com/archives/2007/04/feed_me.html" rel="alternate" type="text/html"/>
    <title>Feed me</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>It's been kindly pointed out that my feeds and half my category links are broken and have been for a while. Probably nobody is left who still actually uses a browser to read blogs, but, as this dovetails rather precisely with my assumptions about readership size; and faffing with moveable type templates rates somewhat lower than not, it may take a while before it all gets sorted. Apologies to anyone who's still committed enough to make the effort, I'll try and get round to sorting it.</p></div>
    </summary>
    <updated>2008-05-05T17:50:12Z</updated>
    <source>
      <id>http://www.darrenhobbs.com/</id>
      <author>
        <name>Darren Hobbs</name>
      </author>
      <link href="http://www.darrenhobbs.com/" rel="alternate" type="text/html"/>
      <link href="http://www.darrenhobbs.com/index.xml" rel="self" type="application/rss+xml"/>
      <subtitle>Darren's take on open source, agile methods, technology and anything else that springs to mind.</subtitle>
      <title>Darren Hobbs</title>
      <updated>2008-05-05T17:50:12Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://www.darrenhobbs.com/archives/2007/01/happy_2007.html</id>
    <link href="http://www.darrenhobbs.com/archives/2007/01/happy_2007.html" rel="alternate" type="text/html"/>
    <title>Happy 2007</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>The sounds of New Years in London: 10 minutes of fireworks, followed by several hours of sirens.  Have a safe celebration everyone.</p></div>
    </summary>
    <updated>2008-05-05T17:50:12Z</updated>
    <source>
      <id>http://www.darrenhobbs.com/</id>
      <author>
        <name>Darren Hobbs</name>
      </author>
      <link href="http://www.darrenhobbs.com/" rel="alternate" type="text/html"/>
      <link href="http://www.darrenhobbs.com/index.xml" rel="self" type="application/rss+xml"/>
      <subtitle>Darren's take on open source, agile methods, technology and anything else that springs to mind.</subtitle>
      <title>Darren Hobbs</title>
      <updated>2008-05-05T17:50:12Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://www.darrenhobbs.com/archives/2006/12/tools_matter.html</id>
    <link href="http://www.darrenhobbs.com/archives/2006/12/tools_matter.html" rel="alternate" type="text/html"/>
    <title>Tools Matter</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>During a recent discussion with some colleagues about which technology to choose for a project I mentioned the importance of tool support, particularly around the IDE.  I found myself surprised by the wide range of opinions about the importance of tools.  Not about the specifics of whether IDEA was better than Eclipse or VS2005 with Resharper, but about how much importance should be given to tool consideration when choosing a development technology.</p>

<p>Let's say the team has free reign about language choice and has narrowed the decision to Java or Ruby. Both languages are known to the majority of the team.  At this point, for a modern project process (lightweight / agile)  I would factor in the team size and strongly advocate Java if the team had more than about 3 to 4 developers, justified purely by the superior team support capabilities of IntelliJ IDEA and Eclipse. By which I mean their code exploration and refactoring capabilities.</p>

<p>This is where the arguments start. Er. This is where this <em>particular</em> argument starts.</p>

<p>A typical response might be, "as an experienced developer, while I find automated refactorings useful, I don't <em>need</em> them and certainly wouldn't let my technology decision be swayed by whether a flashy IDE exists. That's just laziness. Developers were refactoring by hand years before refactoring IDEs existed. The improved productivity and less lines of code required with Ruby outweighs any time saved from a few keyboard shortcuts."</p>

<p>This isn't a bad counter-argument. For an <em>individual developer</em> working alone.</p>

<p>With sole access to a codebase that I wrote entirely myself, I'd generally agree.  I might disagree with the implication that the time saved by the keyboard shortcuts isn't that significant. I'd love to see a study done where a team had to refactor a codebase and add a feature with a modern IDE compared to another team doing the same thing with Emacs. Moving on - the point that this response misses is that there is a team working on the code not just one developer. I believe the value of automated code modification and exploration increases as a function of team size.</p>

<p>Why should this be?  With increasing team size there is an increase in communication overhead and achieving a shared understanding becomes harder and takes longer. Each new member added to a team has an exponential effect on the number of lines of communication. </p>

<p>What does this mean?  It becomes increasingly likely that decisions and assumptions made in the early stages will be found to be sub-optimal as the project progresses and the team learns. Code won't be in quite the right shape or quite the right place. The domain model will need to evolve 