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

<channel>
	<title>Innovation On The Run &#187; Software Development</title>
	<atom:link href="http://www.innovationontherun.com/tag/swdev/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.innovationontherun.com</link>
	<description>Ruminations about innovation and software by Rob Di Marco</description>
	<lastBuildDate>Sun, 25 Oct 2009 14:44:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Respect the Silent Evidence</title>
		<link>http://www.innovationontherun.com/respect-the-silent-evidence/</link>
		<comments>http://www.innovationontherun.com/respect-the-silent-evidence/#comments</comments>
		<pubDate>Thu, 30 Oct 2008 01:16:59 +0000</pubDate>
		<dc:creator>Rob Di Marco</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.innovationontherun.com/?p=67</guid>
		<description><![CDATA[I have been reading The Black Swan : The Impact of the Highly Improbable by Nassim Nicholas Taleb (a.k.a. NNT) and been thinking about its impact on some of the assumptions that I have made.&#160; One of the main points is how often accept as proven fact theories which ignore silent evidence.&#160; Software professionals fall [...]]]></description>
			<content:encoded><![CDATA[<p>I have been reading <a href="http://www.amazon.com/gp/product/1400063515?ie=UTF8&amp;tag=innoontherun-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1400063515">The Black Swan : The Impact of the Highly Improbable</a> by <span> <a href="http://www.fooledbyrandomness.com/">Nassim Nicholas Taleb</a> </span>(a.k.a. NNT) and been thinking about its impact on some of the assumptions that I have made.&nbsp; One of the main points is how often accept as proven fact theories which ignore silent evidence.&nbsp; Software professionals fall for this kind of logical failure all the time.</p>
<p>Let&#8217;s consider a theory that ignores silent evidence.&nbsp; I plan on voting for Barack Obama for president.&nbsp; If you were to make conclusions from a poll that consisted ONLY of asking me who I would vote for, it would be logical for you to conclude that Obama is going to overwhelmingly win both Pennsylvania and the national popular vote. These predictions may very well prove to be accurate and you might be hailed as a tremendous prognosticaltor.&nbsp; But <a href="http://realclearpolitics.com">most</a> <a href="http://fivethirtyeight.com">serious</a> <a href="http://pollster.com">analysts</a> would mock you.&nbsp; They would be correct to do it.&nbsp; Because of the miniscule sample size, your poll does not accurately reflect the size of the entire population that will be participating in the election.&nbsp; The &quot;silent evidence&quot; are the opinions of all the voters who have NOT been polled.&nbsp; A good pollster mitigates ignoring the silent evidence by trying to come up with a representative sample; the idea being that if you can get a large enough sample broken down by representative demographics, you can make a reasonable prediction.</p>
<p>So what&rsquo;s the point?&nbsp; Let&rsquo;s consider another example.&nbsp; In a famous essay, <a href="http://www.paulgraham.com/">Paul Graham</a> talks about the <a href="http://www.paulgraham.com/avg.html">advantage of using functional programming languages when creating your startup</a>.&nbsp; If you haven&rsquo;t read the post, I highly recommend it, it is well written and thought provoken.&nbsp; However, it clearly ignores the silent evidence.&nbsp; Graham takes his singular experience and makes a conclusion based off it.&nbsp; But consider the silent evidence:</p>
<ul>
<li>How successful of functional language based software startups versus all software startups.</li>
</ul>
<p>or a slightly different cohort</p>
<p>&nbsp;</p>
<ul>
<li>How successful were functional language startups during 1995 (when ViaWeb was started) versus all software startups founded during that year.</li>
</ul>
<p>With both these cohorts, we should probably include in the sample those kitchen table companies that started but never shipped a product.&nbsp; Maybe many functional language startups fizzle quickly out and only the ones with really great ideas survive.</p>
<p>Of course, I could just as easily make the argument that statups that have two really, really smart co-founders who have impressive technical and business savvy and are starting their company in an exploding market have a much better probability of success than companies without those advantages.&nbsp; My theory is no more right or wrong than the one posited above, we both are ignoring the silent evidence in positing our </p>
<p>My point is not to say Paul Graham is wrong about startups and functional languages.&nbsp; He is a smart guy and has accomplished much more than I.&nbsp; The Beating the Averages post was just the first one to popped into my mind while reading Black Swan, I&#8217;m sure I can find countless other technical articles.&nbsp; But I do want to introduce some skepticism into the reading of his post and many other software legends.&nbsp; When critically reading a book, article, blog posting, consider the silent evidence before making judgement on the theory.</p>
<img src="http://www.innovationontherun.com/?ak_action=api_record_view&id=67&type=feed" alt="" /><!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a title="Click me to see the sites." href="#" onclick="$$('div.d67').each( function(e) { e.visualEffect('slide_down',{duration:2.5}) }); return false;"><strong><em>Bookmark to:</em></strong></a>
<br />
<div class="d67" style="overflow:hidden">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http%3A%2F%2Fwww.innovationontherun.com%2Frespect-the-silent-evidence%2F&amp;title=Respect+the+Silent+Evidence" rel="nofollow" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.innovationontherun.com%2Frespect-the-silent-evidence%2F&amp;title=Respect+the+Silent+Evidence" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dzone.com/links/add.html?description=Respect+the+Silent+Evidence&amp;url=http%3A%2F%2Fwww.innovationontherun.com%2Frespect-the-silent-evidence%2F&amp;title=Respect+the+Silent+Evidence" rel="nofollow" title="Add to&nbsp;DZone"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/dzone.png" title="Add to&nbsp;DZone" alt="Add to&nbsp;DZone" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fwww.innovationontherun.com%2Frespect-the-silent-evidence%2F" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fwww.innovationontherun.com%2Frespect-the-silent-evidence%2F&amp;title=Respect+the+Silent+Evidence" rel="nofollow" title="Add to&nbsp;Google Bookmarks"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/google.png" title="Add to&nbsp;Google Bookmarks" alt="Add to&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http%3A%2F%2Fwww.innovationontherun.com%2Frespect-the-silent-evidence%2F&amp;title=Respect+the+Silent+Evidence" rel="nofollow" title="Add to&nbsp;reddit"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&nbsp;reddit" alt="Add to&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://slashdot.org/bookmark.pl?url=http%3A%2F%2Fwww.innovationontherun.com%2Frespect-the-silent-evidence%2F&amp;title=Respect+the+Silent+Evidence" rel="nofollow" title="Add to&nbsp;Slashdot"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/slashdot.png" title="Add to&nbsp;Slashdot" alt="Add to&nbsp;Slashdot" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.innovationontherun.com%2Frespect-the-silent-evidence%2F&amp;title=Respect+the+Silent+Evidence" rel="nofollow" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.squidoo.com/lensmaster/bookmark?http%3A%2F%2Fwww.innovationontherun.com%2Frespect-the-silent-evidence%2F" rel="nofollow" title="Add to&nbsp;Squidoo"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/squidoo.png" title="Add to&nbsp;Squidoo" alt="Add to&nbsp;Squidoo" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.spurl.net/spurl.php?url=http%3A%2F%2Fwww.innovationontherun.com%2Frespect-the-silent-evidence%2F&amp;title=Respect+the+Silent+Evidence" rel="nofollow" title="Add to&nbsp;Spurl"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/spurl.png" title="Add to&nbsp;Spurl" alt="Add to&nbsp;Spurl" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http%3A%2F%2Fwww.innovationontherun.com%2Frespect-the-silent-evidence%2F" rel="nofollow" title="Add to&nbsp;Technorati"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/technorati.png" title="Add to&nbsp;Technorati" alt="Add to&nbsp;Technorati" /></a>
<br />
<a style="font-size:90%;text-align: right; " title="Click me to hide the sites." href="#" onclick="$$('div.d67').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); return false;">Hide Sites</a>
</div>
</div>
<!-- Social Bookmarks END -->
<script type="text/javascript">$$('div.d67').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); </script>]]></content:encoded>
			<wfw:commentRss>http://www.innovationontherun.com/respect-the-silent-evidence/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating a Build Number With Ant and Subversion</title>
		<link>http://www.innovationontherun.com/creating-a-build-number-with-ant-and-subversion/</link>
		<comments>http://www.innovationontherun.com/creating-a-build-number-with-ant-and-subversion/#comments</comments>
		<pubDate>Sat, 26 Jan 2008 05:44:25 +0000</pubDate>
		<dc:creator>Rob Di Marco</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.innovationontherun.com/creating-a-build-number-with-ant-and-subversion/</guid>
		<description><![CDATA[I&#8217;m on a hot streak tonight&#8230; Another comon problem that I have had to solve recently is how to attach a build number to files that are being generated out of an Ant build script. We have developed a versioning scheme (inspired by http://geekswithblogs.net/emanish/archive/2006/09/25/92219.aspx) for our releases where our release are named &#60;major&#62;.&#60;minor&#62;.&#60;revision&#62;.&#60;build&#62;. So a [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m on a hot streak tonight&#8230; Another comon problem that I have had to solve recently is how to attach a build number to files that are being generated out of an <a href="http://ant.apache.org">Ant</a> build script.</p>
<p align="left">We have developed a versioning scheme (inspired by http://geekswithblogs.net/emanish/archive/2006/09/25/92219.aspx) for our releases where our release are named &lt;major&gt;.&lt;minor&gt;.&lt;revision&gt;.&lt;build&gt;. So a valid build number might be 1.18.2.1077. This means it belongs to the first major release of the software, the eighteenth minor version, it is the second attempt at a release for this minor version (usually bug fixes), and it is related to the SVN revision number 1077. Any time we are doing a build we are tagging in our Subversion repository to keep the build number tied to the tag. When I build a release, I want my artifacts to look like to look like this: app-1.18.2.1077.ear.</p>
<p align="left">There are a few ways to do this, One way that I considered was to just include a property or Subversion tag in the build.properties file. But I did not want to maintain it and I have always loathed the auto tags that were available in CVS.</p>
<p align="left">My second option was to use the &lt;svn&gt; Ant task. While this will probably work, I have varying degrees of success using the Java SVN library, especially when connecting to Subversion over SSH as we are doing for this application.</p>
<p align="left">So, I decided to go with using the task in conjunction with <em> svn info</em> and <em>svnversion</em> to set the full.build.version property to the current release number.  This assumes that the repository checked out is of the format <em>svn://REPO_NAME/tags/&lt;MAJOR&gt;.&lt;MINOR&gt;.&lt;REVISION&gt;</p>
<pre>
&lt;exec outputproperty=&quot;build.current.revision&quot; executable=&quot;svnversion&quot;&gt;
         &lt;arg line="-n -c" /&gt;
         &lt;redirector&gt;
           &lt;outputfilterchain&gt;
             &lt;tokenfilter&gt;
                 &lt;replaceregex pattern="^[0-9]*:?" replace="" flags="g"/&gt;
             &lt;/tokenfilter&gt;
          &lt;/outputfilterchain&gt;
        &lt;/redirector>
&lt;/exec&gt;
&lt;exec outputproperty=&quot;build.current.version&quot; executable=&quot;svn&quot;&gt;
  &lt;arg line=&quot;info&quot; /&gt;
  &lt;redirector&gt;
  &lt;outputfilterchain&gt;
  &lt;linecontainsregexp&gt;&lt;regexp pattern=&quot;^URL:&quot; /&gt;&lt;/linecontainsregexp&gt;
   &lt;tokenfilter&gt;
     &lt;replaceregex pattern=&quot;.*\/([^\/]+)$&quot; replace=&quot;\1&quot; flags=&quot;g&quot;/&gt;
   &lt;/tokenfilter&gt;
  &lt;/outputfilterchain&gt;
&lt;/redirector&gt;
&lt;/exec&gt;

&lt;property name=&quot;full.build.version&quot; value=&quot;${build.current.version}.${build.current.revision}&quot; /&gt;</pre>
<p>I&#8217;m sure that I could have gotten the revision from the svn info rather than svnversion, saving a command, but I wasn&#8217;t inspired enough to do it.  Maybe when I have more time.</p>
<img src="http://www.innovationontherun.com/?ak_action=api_record_view&id=45&type=feed" alt="" /><!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a title="Click me to see the sites." href="#" onclick="$$('div.d45').each( function(e) { e.visualEffect('slide_down',{duration:2.5}) }); return false;"><strong><em>Bookmark to:</em></strong></a>
<br />
<div class="d45" style="overflow:hidden">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http%3A%2F%2Fwww.innovationontherun.com%2Fcreating-a-build-number-with-ant-and-subversion%2F&amp;title=Creating+a+Build+Number+With+Ant+and+Subversion" rel="nofollow" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.innovationontherun.com%2Fcreating-a-build-number-with-ant-and-subversion%2F&amp;title=Creating+a+Build+Number+With+Ant+and+Subversion" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dzone.com/links/add.html?description=Creating+a+Build+Number+With+Ant+and+Subversion&amp;url=http%3A%2F%2Fwww.innovationontherun.com%2Fcreating-a-build-number-with-ant-and-subversion%2F&amp;title=Creating+a+Build+Number+With+Ant+and+Subversion" rel="nofollow" title="Add to&nbsp;DZone"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/dzone.png" title="Add to&nbsp;DZone" alt="Add to&nbsp;DZone" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fwww.innovationontherun.com%2Fcreating-a-build-number-with-ant-and-subversion%2F" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fwww.innovationontherun.com%2Fcreating-a-build-number-with-ant-and-subversion%2F&amp;title=Creating+a+Build+Number+With+Ant+and+Subversion" rel="nofollow" title="Add to&nbsp;Google Bookmarks"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/google.png" title="Add to&nbsp;Google Bookmarks" alt="Add to&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http%3A%2F%2Fwww.innovationontherun.com%2Fcreating-a-build-number-with-ant-and-subversion%2F&amp;title=Creating+a+Build+Number+With+Ant+and+Subversion" rel="nofollow" title="Add to&nbsp;reddit"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&nbsp;reddit" alt="Add to&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://slashdot.org/bookmark.pl?url=http%3A%2F%2Fwww.innovationontherun.com%2Fcreating-a-build-number-with-ant-and-subversion%2F&amp;title=Creating+a+Build+Number+With+Ant+and+Subversion" rel="nofollow" title="Add to&nbsp;Slashdot"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/slashdot.png" title="Add to&nbsp;Slashdot" alt="Add to&nbsp;Slashdot" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.innovationontherun.com%2Fcreating-a-build-number-with-ant-and-subversion%2F&amp;title=Creating+a+Build+Number+With+Ant+and+Subversion" rel="nofollow" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.squidoo.com/lensmaster/bookmark?http%3A%2F%2Fwww.innovationontherun.com%2Fcreating-a-build-number-with-ant-and-subversion%2F" rel="nofollow" title="Add to&nbsp;Squidoo"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/squidoo.png" title="Add to&nbsp;Squidoo" alt="Add to&nbsp;Squidoo" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.spurl.net/spurl.php?url=http%3A%2F%2Fwww.innovationontherun.com%2Fcreating-a-build-number-with-ant-and-subversion%2F&amp;title=Creating+a+Build+Number+With+Ant+and+Subversion" rel="nofollow" title="Add to&nbsp;Spurl"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/spurl.png" title="Add to&nbsp;Spurl" alt="Add to&nbsp;Spurl" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http%3A%2F%2Fwww.innovationontherun.com%2Fcreating-a-build-number-with-ant-and-subversion%2F" rel="nofollow" title="Add to&nbsp;Technorati"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/technorati.png" title="Add to&nbsp;Technorati" alt="Add to&nbsp;Technorati" /></a>
<br />
<a style="font-size:90%;text-align: right; " title="Click me to hide the sites." href="#" onclick="$$('div.d45').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); return false;">Hide Sites</a>
</div>
</div>
<!-- Social Bookmarks END -->
<script type="text/javascript">$$('div.d45').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); </script>]]></content:encoded>
			<wfw:commentRss>http://www.innovationontherun.com/creating-a-build-number-with-ant-and-subversion/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>Integrating Cached Content with Apache and JBoss</title>
		<link>http://www.innovationontherun.com/integrating-cached-content-with-apache-and-jboss/</link>
		<comments>http://www.innovationontherun.com/integrating-cached-content-with-apache-and-jboss/#comments</comments>
		<pubDate>Sat, 26 Jan 2008 05:25:50 +0000</pubDate>
		<dc:creator>Rob Di Marco</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.innovationontherun.com/integrating-cached-content-with-apache-and-jboss/</guid>
		<description><![CDATA[One of my clients is a large e-commerce company (&#62;$500MMin annual revenuse through their website). They use Akamai for caching some of their image data, but some of the other images are served off of their server. They are trying to minimize the load on their JBoss instances and wanted to have Apache serve the [...]]]></description>
			<content:encoded><![CDATA[<p align="left">One of my clients is a large e-commerce company (&gt;$500MMin annual revenuse through their website). They use Akamai for caching some of their image data, but some of the other images are served off of their server. They are trying to minimize the load on their JBoss instances and wanted to have Apache serve the static content when possible while JBoss handled the dynamic content. Both Apache and JBoss were running on the same Linux server.</p>
<p align="left">This is a problem that I have faced a couple of times and every time I spend a few hours futzing with Apache configurations trying to get this to work. So I figure I should post the basic solution and never have to look hard for it again. Also, if someone has better suggestions, let me know.</p>
<p align="left">
<h1>Step 1: Activate the Requisite Modules</h1>
<p align="left">I use four modules for getting this to work</p>
<ul>
<li><a href="http://httpd.apache.org/docs/2.0/mod/mod_alias.html">mod_alias</a></li>
<li><a href="http://httpd.apache.org/docs/2.0/mod/mod_proxy.html">mod_proxy</a></li>
<li><a href="http://httpd.apache.org/docs/2.0/mod/mod_proxy_http.html">mod_proxy_http</a></li>
<li><a href="http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html">mod_rewrite</a></li>
</ul>
<p>Make sure these are activated in your configuration<br />
<h1>Step 2: Setting Up The Static Content</h1>
<p align="left">First step is to set up a directory location that will ahve the content. In my example, I am dealing with an exploded EAR in the Jboss home directory. This results in a configuration like</p>
<pre>
#
# Configure the static content directory and alias.  This is pointing at the cache
# file directory
# 

Alias /static-content/ &quot;/usr/local/jboss/cache/app&quot; 

#
# Do not allow any overriding from within the cache directory. #
&lt;directory /usr/local/jboss/cache/app&quot; &gt;
  Options None
  AllowOverride None
  Order allow,deny
  Allow from all
&lt;/directory&gt;
</pre>
<p align="left">Step 3: Set up the rewrite rules</p>
<p align="left">
<pre>
#
#  Rewrite all static content  to be served from the
#  static content directory
#
&lt;IfModule mod_rewrite.c&lt;
    RewriteEngine on 

    #
    # Setup the static content rule.  Any file that comes in that# we have on the filesystem, we should serve from there.
    #
    # We want this to be the last rule processed if we meet the conditions
    # and we need to pass through so that the static-content alias works.
    #
    RewriteCond /usr/local/jboss/cache/app/%{REQUEST_FILENAME} -f
    RewriteRule ^/?(.*)$ /static-content/$1 [L,PT]
&lt;/IfModule&gt; 

&lt;IfModule mod_proxy.c&gt;

# No need to forward proxy
ProxyRequests Off 

# Make sure we clean up the headers
# you may also wish to use the mod_proxy_ajp to proxy
# over the ajp protocol

  ProxyPassReverse / http://localhost:8080/ 

# Needed to maintain proper host information
  ProxyPreserveHost On
&lt;/IfModule&gt; </pre>
<img src="http://www.innovationontherun.com/?ak_action=api_record_view&id=44&type=feed" alt="" /><!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a title="Click me to see the sites." href="#" onclick="$$('div.d44').each( function(e) { e.visualEffect('slide_down',{duration:2.5}) }); return false;"><strong><em>Bookmark to:</em></strong></a>
<br />
<div class="d44" style="overflow:hidden">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http%3A%2F%2Fwww.innovationontherun.com%2Fintegrating-cached-content-with-apache-and-jboss%2F&amp;title=Integrating+Cached+Content+with+Apache+and+JBoss" rel="nofollow" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.innovationontherun.com%2Fintegrating-cached-content-with-apache-and-jboss%2F&amp;title=Integrating+Cached+Content+with+Apache+and+JBoss" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dzone.com/links/add.html?description=Integrating+Cached+Content+with+Apache+and+JBoss&amp;url=http%3A%2F%2Fwww.innovationontherun.com%2Fintegrating-cached-content-with-apache-and-jboss%2F&amp;title=Integrating+Cached+Content+with+Apache+and+JBoss" rel="nofollow" title="Add to&nbsp;DZone"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/dzone.png" title="Add to&nbsp;DZone" alt="Add to&nbsp;DZone" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fwww.innovationontherun.com%2Fintegrating-cached-content-with-apache-and-jboss%2F" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fwww.innovationontherun.com%2Fintegrating-cached-content-with-apache-and-jboss%2F&amp;title=Integrating+Cached+Content+with+Apache+and+JBoss" rel="nofollow" title="Add to&nbsp;Google Bookmarks"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/google.png" title="Add to&nbsp;Google Bookmarks" alt="Add to&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http%3A%2F%2Fwww.innovationontherun.com%2Fintegrating-cached-content-with-apache-and-jboss%2F&amp;title=Integrating+Cached+Content+with+Apache+and+JBoss" rel="nofollow" title="Add to&nbsp;reddit"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&nbsp;reddit" alt="Add to&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://slashdot.org/bookmark.pl?url=http%3A%2F%2Fwww.innovationontherun.com%2Fintegrating-cached-content-with-apache-and-jboss%2F&amp;title=Integrating+Cached+Content+with+Apache+and+JBoss" rel="nofollow" title="Add to&nbsp;Slashdot"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/slashdot.png" title="Add to&nbsp;Slashdot" alt="Add to&nbsp;Slashdot" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.innovationontherun.com%2Fintegrating-cached-content-with-apache-and-jboss%2F&amp;title=Integrating+Cached+Content+with+Apache+and+JBoss" rel="nofollow" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.squidoo.com/lensmaster/bookmark?http%3A%2F%2Fwww.innovationontherun.com%2Fintegrating-cached-content-with-apache-and-jboss%2F" rel="nofollow" title="Add to&nbsp;Squidoo"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/squidoo.png" title="Add to&nbsp;Squidoo" alt="Add to&nbsp;Squidoo" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.spurl.net/spurl.php?url=http%3A%2F%2Fwww.innovationontherun.com%2Fintegrating-cached-content-with-apache-and-jboss%2F&amp;title=Integrating+Cached+Content+with+Apache+and+JBoss" rel="nofollow" title="Add to&nbsp;Spurl"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/spurl.png" title="Add to&nbsp;Spurl" alt="Add to&nbsp;Spurl" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http%3A%2F%2Fwww.innovationontherun.com%2Fintegrating-cached-content-with-apache-and-jboss%2F" rel="nofollow" title="Add to&nbsp;Technorati"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/technorati.png" title="Add to&nbsp;Technorati" alt="Add to&nbsp;Technorati" /></a>
<br />
<a style="font-size:90%;text-align: right; " title="Click me to hide the sites." href="#" onclick="$$('div.d44').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); return false;">Hide Sites</a>
</div>
</div>
<!-- Social Bookmarks END -->
<script type="text/javascript">$$('div.d44').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); </script>]]></content:encoded>
			<wfw:commentRss>http://www.innovationontherun.com/integrating-cached-content-with-apache-and-jboss/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Latest Job Title</title>
		<link>http://www.innovationontherun.com/my-latest-job-title/</link>
		<comments>http://www.innovationontherun.com/my-latest-job-title/#comments</comments>
		<pubDate>Sat, 26 Jan 2008 02:53:26 +0000</pubDate>
		<dc:creator>Rob Di Marco</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.innovationontherun.com/my-latest-job-title/</guid>
		<description><![CDATA[Recently I&#8217;ve been doing a lot of different jobs: President of my own company, 416 Software Adjunct Professor for Penn State Interim VP of Engineering for an unnamed startup doing cool things with email Build/Release/JBoss Expert General Software Consultant but for my latest title&#8230;. Management Consultant. Good to know someone takes my ranting seriously! Bookmark [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I&#8217;ve been doing a lot of different jobs:</p>
<ul>
<li>President of my own company, 416 Software</li>
<li>Adjunct Professor for Penn State</li>
<li>Interim VP of Engineering for an unnamed startup doing cool things with email</li>
<li>Build/Release/JBoss Expert</li>
<li>General Software Consultant</li>
</ul>
<p>but for my latest title&#8230;.</p>
<p><a href="http://hrdailyadvisor.blr.com/archive/2008/01/23/Ruining_Morale_HR_Anti_Patterns_Retention_Management.aspx">Management Consultant</a>.</p>
<p>Good to know someone takes my ranting seriously!</p>
<img src="http://www.innovationontherun.com/?ak_action=api_record_view&id=43&type=feed" alt="" /><!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a title="Click me to see the sites." href="#" onclick="$$('div.d43').each( function(e) { e.visualEffect('slide_down',{duration:2.5}) }); return false;"><strong><em>Bookmark to:</em></strong></a>
<br />
<div class="d43" style="overflow:hidden">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http%3A%2F%2Fwww.innovationontherun.com%2Fmy-latest-job-title%2F&amp;title=My+Latest+Job+Title" rel="nofollow" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.innovationontherun.com%2Fmy-latest-job-title%2F&amp;title=My+Latest+Job+Title" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dzone.com/links/add.html?description=My+Latest+Job+Title&amp;url=http%3A%2F%2Fwww.innovationontherun.com%2Fmy-latest-job-title%2F&amp;title=My+Latest+Job+Title" rel="nofollow" title="Add to&nbsp;DZone"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/dzone.png" title="Add to&nbsp;DZone" alt="Add to&nbsp;DZone" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fwww.innovationontherun.com%2Fmy-latest-job-title%2F" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fwww.innovationontherun.com%2Fmy-latest-job-title%2F&amp;title=My+Latest+Job+Title" rel="nofollow" title="Add to&nbsp;Google Bookmarks"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/google.png" title="Add to&nbsp;Google Bookmarks" alt="Add to&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http%3A%2F%2Fwww.innovationontherun.com%2Fmy-latest-job-title%2F&amp;title=My+Latest+Job+Title" rel="nofollow" title="Add to&nbsp;reddit"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&nbsp;reddit" alt="Add to&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://slashdot.org/bookmark.pl?url=http%3A%2F%2Fwww.innovationontherun.com%2Fmy-latest-job-title%2F&amp;title=My+Latest+Job+Title" rel="nofollow" title="Add to&nbsp;Slashdot"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/slashdot.png" title="Add to&nbsp;Slashdot" alt="Add to&nbsp;Slashdot" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.innovationontherun.com%2Fmy-latest-job-title%2F&amp;title=My+Latest+Job+Title" rel="nofollow" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.squidoo.com/lensmaster/bookmark?http%3A%2F%2Fwww.innovationontherun.com%2Fmy-latest-job-title%2F" rel="nofollow" title="Add to&nbsp;Squidoo"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/squidoo.png" title="Add to&nbsp;Squidoo" alt="Add to&nbsp;Squidoo" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.spurl.net/spurl.php?url=http%3A%2F%2Fwww.innovationontherun.com%2Fmy-latest-job-title%2F&amp;title=My+Latest+Job+Title" rel="nofollow" title="Add to&nbsp;Spurl"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/spurl.png" title="Add to&nbsp;Spurl" alt="Add to&nbsp;Spurl" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http%3A%2F%2Fwww.innovationontherun.com%2Fmy-latest-job-title%2F" rel="nofollow" title="Add to&nbsp;Technorati"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/technorati.png" title="Add to&nbsp;Technorati" alt="Add to&nbsp;Technorati" /></a>
<br />
<a style="font-size:90%;text-align: right; " title="Click me to hide the sites." href="#" onclick="$$('div.d43').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); return false;">Hide Sites</a>
</div>
</div>
<!-- Social Bookmarks END -->
<script type="text/javascript">$$('div.d43').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); </script>]]></content:encoded>
			<wfw:commentRss>http://www.innovationontherun.com/my-latest-job-title/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Philly JUG Presentation on Using JRuby</title>
		<link>http://www.innovationontherun.com/philly-jug-presentation-on-using-jruby/</link>
		<comments>http://www.innovationontherun.com/philly-jug-presentation-on-using-jruby/#comments</comments>
		<pubDate>Wed, 24 Oct 2007 10:43:45 +0000</pubDate>
		<dc:creator>Rob Di Marco</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.innovationontherun.com/philly-jug-presentation-on-using-jruby/</guid>
		<description><![CDATA[Last night I presented an Introduction to JRuby at the Philadelphia Java Users Group.&#160; My goal was to introduce Java programmers to Ruby and&#160;get them to how features of the language allowed for functionality and code structure that is not possible in Java alone.&#160; While I did talk about Rails at the end, my point [...]]]></description>
			<content:encoded><![CDATA[<p>Last night I presented an Introduction to JRuby at the <a href="http://phillyjug.jsync.com">Philadelphia Java Users Group</a>.&nbsp; My goal was to introduce Java programmers to Ruby and&nbsp;get them to how features of the language allowed for functionality and code structure that is not possible in Java alone.&nbsp; While I did talk about Rails at the end, my point was to get the developers to understand that the meta-programming functionality in Ruby allows for both plugin develeropers and users of Rails to extend and improve the base platform in many interesting ways.
<p>Probably my favorite example was an expansion on a previous blog post about using <a href="/scraping-dynamic-websites-using-jruby-and-htmlunit/">JRuby and HtmlUnit</a>.&nbsp; In the presentation, I created a simple Domain Specific Language on top of the great HtmlUnit library to allow for simple parsing of pages with content in JavaScript.&nbsp; This was a great example of how JRuby can be used to take advantage of both Java and Ruby
<p>The presentation is available at <a href="http://www.innovationontherun.com/presentation-files/Introduction%20to%20JRuby-10-23-2007.pdf">http://www.innovationontherun.com/presentation-files/Introduction%20to%20JRuby-10-23-2007.pdf</a>&nbsp;and the associated source code can be found at <a href="http://www.innovationontherun.com/presentation-files/JRuby-JUG.zip">http://www.innovationontherun.com/presentation-files/JRuby-JUG.zip</a>.&nbsp; If you are looking at the source code, start with the file ABOUT.txt.&nbsp; It describes the prerequisites needed to get the code to run and the order of the listed files follows the order that they were used in the presentation.
<p>If you have questions or comments, feel free to <a href="http://www.innovationontherun.com/contact/">send me an email</a>.</p>
<img src="http://www.innovationontherun.com/?ak_action=api_record_view&id=42&type=feed" alt="" /><!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a title="Click me to see the sites." href="#" onclick="$$('div.d42').each( function(e) { e.visualEffect('slide_down',{duration:2.5}) }); return false;"><strong><em>Bookmark to:</em></strong></a>
<br />
<div class="d42" style="overflow:hidden">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http%3A%2F%2Fwww.innovationontherun.com%2Fphilly-jug-presentation-on-using-jruby%2F&amp;title=Philly+JUG+Presentation+on+Using+JRuby" rel="nofollow" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.innovationontherun.com%2Fphilly-jug-presentation-on-using-jruby%2F&amp;title=Philly+JUG+Presentation+on+Using+JRuby" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dzone.com/links/add.html?description=Philly+JUG+Presentation+on+Using+JRuby&amp;url=http%3A%2F%2Fwww.innovationontherun.com%2Fphilly-jug-presentation-on-using-jruby%2F&amp;title=Philly+JUG+Presentation+on+Using+JRuby" rel="nofollow" title="Add to&nbsp;DZone"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/dzone.png" title="Add to&nbsp;DZone" alt="Add to&nbsp;DZone" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fwww.innovationontherun.com%2Fphilly-jug-presentation-on-using-jruby%2F" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fwww.innovationontherun.com%2Fphilly-jug-presentation-on-using-jruby%2F&amp;title=Philly+JUG+Presentation+on+Using+JRuby" rel="nofollow" title="Add to&nbsp;Google Bookmarks"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/google.png" title="Add to&nbsp;Google Bookmarks" alt="Add to&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http%3A%2F%2Fwww.innovationontherun.com%2Fphilly-jug-presentation-on-using-jruby%2F&amp;title=Philly+JUG+Presentation+on+Using+JRuby" rel="nofollow" title="Add to&nbsp;reddit"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&nbsp;reddit" alt="Add to&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://slashdot.org/bookmark.pl?url=http%3A%2F%2Fwww.innovationontherun.com%2Fphilly-jug-presentation-on-using-jruby%2F&amp;title=Philly+JUG+Presentation+on+Using+JRuby" rel="nofollow" title="Add to&nbsp;Slashdot"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/slashdot.png" title="Add to&nbsp;Slashdot" alt="Add to&nbsp;Slashdot" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.innovationontherun.com%2Fphilly-jug-presentation-on-using-jruby%2F&amp;title=Philly+JUG+Presentation+on+Using+JRuby" rel="nofollow" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.squidoo.com/lensmaster/bookmark?http%3A%2F%2Fwww.innovationontherun.com%2Fphilly-jug-presentation-on-using-jruby%2F" rel="nofollow" title="Add to&nbsp;Squidoo"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/squidoo.png" title="Add to&nbsp;Squidoo" alt="Add to&nbsp;Squidoo" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.spurl.net/spurl.php?url=http%3A%2F%2Fwww.innovationontherun.com%2Fphilly-jug-presentation-on-using-jruby%2F&amp;title=Philly+JUG+Presentation+on+Using+JRuby" rel="nofollow" title="Add to&nbsp;Spurl"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/spurl.png" title="Add to&nbsp;Spurl" alt="Add to&nbsp;Spurl" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http%3A%2F%2Fwww.innovationontherun.com%2Fphilly-jug-presentation-on-using-jruby%2F" rel="nofollow" title="Add to&nbsp;Technorati"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/technorati.png" title="Add to&nbsp;Technorati" alt="Add to&nbsp;Technorati" /></a>
<br />
<a style="font-size:90%;text-align: right; " title="Click me to hide the sites." href="#" onclick="$$('div.d42').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); return false;">Hide Sites</a>
</div>
</div>
<!-- Social Bookmarks END -->
<script type="text/javascript">$$('div.d42').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); </script>]]></content:encoded>
			<wfw:commentRss>http://www.innovationontherun.com/philly-jug-presentation-on-using-jruby/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Presentation on Using the Embedded JBoss Container</title>
		<link>http://www.innovationontherun.com/presentation-on-using-the-embedded-jboss-container/</link>
		<comments>http://www.innovationontherun.com/presentation-on-using-the-embedded-jboss-container/#comments</comments>
		<pubDate>Wed, 19 Sep 2007 02:37:52 +0000</pubDate>
		<dc:creator>Rob Di Marco</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://www.innovationontherun.com/presentation-on-using-the-embedded-jboss-container/</guid>
		<description><![CDATA[Gave a presentation tonight to the Philly JBoss Users Group about using Embedded JBoss. For the unaware, Embedded JBoss allows a developer to embed much of the functionality of the JBoss application server (EJB, Messaging, JNDI, Security, Transactions) in another application.&#160; A great use for the technology is in the creation of unit tests that [...]]]></description>
			<content:encoded><![CDATA[<p>Gave a presentation tonight to the <a href="http://www.pjbug.com">Philly JBoss Users Group</a> about using <a href="http://wiki.jboss.org/wiki/Wiki.jsp?page=EmbeddedJBoss">Embedded JBoss</a>. </p>
<p>For the unaware, Embedded JBoss allows a developer to embed much of the functionality of the JBoss application server (EJB, Messaging, JNDI, Security, Transactions) in another application.&nbsp; A great use for the technology is in the creation of unit tests that can actually test Session, Entity, and Message Driven Beans.&nbsp; At <a href="http://www.healthmarketscience.com">Health Market Science</a>, we heavily used the Embedded EJB container (a predecessor to Embedded JBoss) connecting to a in-memory Hypersonic DB for improving out unit tests.&nbsp; It made developing and debugging significantly easier and all of the developers loved doing it.&nbsp; I highly encourage any developer that is developing using EJB3, and especially anyone using JBoss, to use the combination of Embedded JBoss.</p>
<p>Full Presentation can be found at <a title="http://www.innovationontherun.com/presentation-files/Intro%20to%20Embedded%20JBoss.pdf" href="http://www.innovationontherun.com/presentation-files/Intro%20to%20Embedded%20JBoss.pdf">http://www.innovationontherun.com/presentation-files/Intro%20to%20Embedded%20JBoss.pdf</a></p>
<img src="http://www.innovationontherun.com/?ak_action=api_record_view&id=40&type=feed" alt="" /><!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a title="Click me to see the sites." href="#" onclick="$$('div.d40').each( function(e) { e.visualEffect('slide_down',{duration:2.5}) }); return false;"><strong><em>Bookmark to:</em></strong></a>
<br />
<div class="d40" style="overflow:hidden">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http%3A%2F%2Fwww.innovationontherun.com%2Fpresentation-on-using-the-embedded-jboss-container%2F&amp;title=Presentation+on+Using+the+Embedded+JBoss+Container" rel="nofollow" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.innovationontherun.com%2Fpresentation-on-using-the-embedded-jboss-container%2F&amp;title=Presentation+on+Using+the+Embedded+JBoss+Container" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dzone.com/links/add.html?description=Presentation+on+Using+the+Embedded+JBoss+Container&amp;url=http%3A%2F%2Fwww.innovationontherun.com%2Fpresentation-on-using-the-embedded-jboss-container%2F&amp;title=Presentation+on+Using+the+Embedded+JBoss+Container" rel="nofollow" title="Add to&nbsp;DZone"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/dzone.png" title="Add to&nbsp;DZone" alt="Add to&nbsp;DZone" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fwww.innovationontherun.com%2Fpresentation-on-using-the-embedded-jboss-container%2F" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fwww.innovationontherun.com%2Fpresentation-on-using-the-embedded-jboss-container%2F&amp;title=Presentation+on+Using+the+Embedded+JBoss+Container" rel="nofollow" title="Add to&nbsp;Google Bookmarks"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/google.png" title="Add to&nbsp;Google Bookmarks" alt="Add to&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http%3A%2F%2Fwww.innovationontherun.com%2Fpresentation-on-using-the-embedded-jboss-container%2F&amp;title=Presentation+on+Using+the+Embedded+JBoss+Container" rel="nofollow" title="Add to&nbsp;reddit"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&nbsp;reddit" alt="Add to&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://slashdot.org/bookmark.pl?url=http%3A%2F%2Fwww.innovationontherun.com%2Fpresentation-on-using-the-embedded-jboss-container%2F&amp;title=Presentation+on+Using+the+Embedded+JBoss+Container" rel="nofollow" title="Add to&nbsp;Slashdot"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/slashdot.png" title="Add to&nbsp;Slashdot" alt="Add to&nbsp;Slashdot" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.innovationontherun.com%2Fpresentation-on-using-the-embedded-jboss-container%2F&amp;title=Presentation+on+Using+the+Embedded+JBoss+Container" rel="nofollow" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.squidoo.com/lensmaster/bookmark?http%3A%2F%2Fwww.innovationontherun.com%2Fpresentation-on-using-the-embedded-jboss-container%2F" rel="nofollow" title="Add to&nbsp;Squidoo"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/squidoo.png" title="Add to&nbsp;Squidoo" alt="Add to&nbsp;Squidoo" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.spurl.net/spurl.php?url=http%3A%2F%2Fwww.innovationontherun.com%2Fpresentation-on-using-the-embedded-jboss-container%2F&amp;title=Presentation+on+Using+the+Embedded+JBoss+Container" rel="nofollow" title="Add to&nbsp;Spurl"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/spurl.png" title="Add to&nbsp;Spurl" alt="Add to&nbsp;Spurl" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http%3A%2F%2Fwww.innovationontherun.com%2Fpresentation-on-using-the-embedded-jboss-container%2F" rel="nofollow" title="Add to&nbsp;Technorati"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/technorati.png" title="Add to&nbsp;Technorati" alt="Add to&nbsp;Technorati" /></a>
<br />
<a style="font-size:90%;text-align: right; " title="Click me to hide the sites." href="#" onclick="$$('div.d40').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); return false;">Hide Sites</a>
</div>
</div>
<!-- Social Bookmarks END -->
<script type="text/javascript">$$('div.d40').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); </script>]]></content:encoded>
			<wfw:commentRss>http://www.innovationontherun.com/presentation-on-using-the-embedded-jboss-container/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Frustrating Bugs Robbing Me of My Weekend</title>
		<link>http://www.innovationontherun.com/frustrating-bugs-robbing-me-of-my-weekend/</link>
		<comments>http://www.innovationontherun.com/frustrating-bugs-robbing-me-of-my-weekend/#comments</comments>
		<pubDate>Sun, 16 Sep 2007 21:06:10 +0000</pubDate>
		<dc:creator>Rob Di Marco</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.innovationontherun.com/frustrating-bugs-robbing-me-of-my-weekend/</guid>
		<description><![CDATA[This Tuesday, I am presenting at the Philadelphia JBoss Users Group on using Embedded JBoss, a very cool way that allows you to do things like test EJBs using JUnit without having to install an application server.&#160; The slides are ready but I wanted to make sure my demos are running.&#160; So I go to [...]]]></description>
			<content:encoded><![CDATA[<p>This Tuesday, I am <a href="/presentations/">presenting</a> at the <a href="http://www.pjbug.com">Philadelphia JBoss Users Group</a> on using <a href="http://blogs.jboss.com/blog/bburke/2007/04/17/Embedded_JBoss_JBoss_without_the_Application_SErver.txt">Embedded JBoss</a>, a very cool way that allows you to do things like test EJBs using JUnit without having to install an application server.&nbsp; The slides are ready but I wanted to make sure my demos are running.&nbsp; So I go to run the tests and my first error is:</p>
<p><em>Class not found: [Ljava.lang.String;</em></p>
<p>What the hell?&nbsp; Of course I initially assume it is something I did wrong, then that it is something in the JBoss configuration.&nbsp; After much anguish and googling, it turns out there is an <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6434149">awesome bug/feature in Java 1.6</a> where the&nbsp;following code (which&nbsp;worked in Java 1.5)&nbsp;throws&nbsp;a ClassNotFoundException in Java 1.6.</p>
<p>&nbsp; public class test {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static void main(String[] args) throws Exception {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String[] s = new String[] { &#8220;123&#8243; };<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String clName = s.getClass().getName();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; test.class.getClassLoader().loadClass(clName);&nbsp; // throws exception in JDK 1.6!<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp; }</p>
<p>But the lameness did not stop there.&nbsp; The next issue that popped up was a NullPointerException when trying to read a file.&nbsp; Turns out there is a bug on Windows XP with directory names involving spaces.&nbsp; I was running it off of my desktop, c:\Documents and Settings\rdimarco\Desktop.&nbsp; Moving the application to the c:\jboss directory solved my problems.&nbsp; I&#8217;m not sure if it is a JDK or JBoss bug, but at this point I&#8217;m just frustrated.</p>
<img src="http://www.innovationontherun.com/?ak_action=api_record_view&id=39&type=feed" alt="" /><!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a title="Click me to see the sites." href="#" onclick="$$('div.d39').each( function(e) { e.visualEffect('slide_down',{duration:2.5}) }); return false;"><strong><em>Bookmark to:</em></strong></a>
<br />
<div class="d39" style="overflow:hidden">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http%3A%2F%2Fwww.innovationontherun.com%2Ffrustrating-bugs-robbing-me-of-my-weekend%2F&amp;title=Frustrating+Bugs+Robbing+Me+of+My+Weekend" rel="nofollow" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.innovationontherun.com%2Ffrustrating-bugs-robbing-me-of-my-weekend%2F&amp;title=Frustrating+Bugs+Robbing+Me+of+My+Weekend" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dzone.com/links/add.html?description=Frustrating+Bugs+Robbing+Me+of+My+Weekend&amp;url=http%3A%2F%2Fwww.innovationontherun.com%2Ffrustrating-bugs-robbing-me-of-my-weekend%2F&amp;title=Frustrating+Bugs+Robbing+Me+of+My+Weekend" rel="nofollow" title="Add to&nbsp;DZone"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/dzone.png" title="Add to&nbsp;DZone" alt="Add to&nbsp;DZone" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fwww.innovationontherun.com%2Ffrustrating-bugs-robbing-me-of-my-weekend%2F" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fwww.innovationontherun.com%2Ffrustrating-bugs-robbing-me-of-my-weekend%2F&amp;title=Frustrating+Bugs+Robbing+Me+of+My+Weekend" rel="nofollow" title="Add to&nbsp;Google Bookmarks"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/google.png" title="Add to&nbsp;Google Bookmarks" alt="Add to&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http%3A%2F%2Fwww.innovationontherun.com%2Ffrustrating-bugs-robbing-me-of-my-weekend%2F&amp;title=Frustrating+Bugs+Robbing+Me+of+My+Weekend" rel="nofollow" title="Add to&nbsp;reddit"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&nbsp;reddit" alt="Add to&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://slashdot.org/bookmark.pl?url=http%3A%2F%2Fwww.innovationontherun.com%2Ffrustrating-bugs-robbing-me-of-my-weekend%2F&amp;title=Frustrating+Bugs+Robbing+Me+of+My+Weekend" rel="nofollow" title="Add to&nbsp;Slashdot"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/slashdot.png" title="Add to&nbsp;Slashdot" alt="Add to&nbsp;Slashdot" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.innovationontherun.com%2Ffrustrating-bugs-robbing-me-of-my-weekend%2F&amp;title=Frustrating+Bugs+Robbing+Me+of+My+Weekend" rel="nofollow" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.squidoo.com/lensmaster/bookmark?http%3A%2F%2Fwww.innovationontherun.com%2Ffrustrating-bugs-robbing-me-of-my-weekend%2F" rel="nofollow" title="Add to&nbsp;Squidoo"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/squidoo.png" title="Add to&nbsp;Squidoo" alt="Add to&nbsp;Squidoo" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.spurl.net/spurl.php?url=http%3A%2F%2Fwww.innovationontherun.com%2Ffrustrating-bugs-robbing-me-of-my-weekend%2F&amp;title=Frustrating+Bugs+Robbing+Me+of+My+Weekend" rel="nofollow" title="Add to&nbsp;Spurl"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/spurl.png" title="Add to&nbsp;Spurl" alt="Add to&nbsp;Spurl" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http%3A%2F%2Fwww.innovationontherun.com%2Ffrustrating-bugs-robbing-me-of-my-weekend%2F" rel="nofollow" title="Add to&nbsp;Technorati"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/technorati.png" title="Add to&nbsp;Technorati" alt="Add to&nbsp;Technorati" /></a>
<br />
<a style="font-size:90%;text-align: right; " title="Click me to hide the sites." href="#" onclick="$$('div.d39').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); return false;">Hide Sites</a>
</div>
</div>
<!-- Social Bookmarks END -->
<script type="text/javascript">$$('div.d39').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); </script>]]></content:encoded>
			<wfw:commentRss>http://www.innovationontherun.com/frustrating-bugs-robbing-me-of-my-weekend/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java Native Access (JNA): What JNI should have been</title>
		<link>http://www.innovationontherun.com/java-native-access-jna-what-jni-should-have-been/</link>
		<comments>http://www.innovationontherun.com/java-native-access-jna-what-jni-should-have-been/#comments</comments>
		<pubDate>Wed, 05 Sep 2007 13:51:45 +0000</pubDate>
		<dc:creator>Rob Di Marco</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.innovationontherun.com/java-native-access-jna-what-jni-should-have-been/</guid>
		<description><![CDATA[Just saw the release of the Java Native Access (JNA)&#160;library that allows easier access to native shared access.&#160; Instead of annoying JNI adapter code to integrate the libraries, you can now just define an interface and use the JNA classes to manage the translation between the Java and the native code.&#160; It&#8217;s easy to use [...]]]></description>
			<content:encoded><![CDATA[<p>Just saw the release of the <a href="https://jna.dev.java.net/">Java Native Access (JNA)</a>&nbsp;library that allows easier access to native shared access.&nbsp; Instead of annoying JNI adapter code to integrate the libraries, you can now just define an interface and use the JNA classes to manage the translation between the Java and the native code.&nbsp; It&#8217;s easy to use and really makes it easier to both build and deploy your application.&nbsp; Instead of complicated Ant scripts to auto-generate and compile JNI code, you can just define your interfaces and build normally.&nbsp; It&#8217;s amazing it took so long for such a library to come out.</p>
<img src="http://www.innovationontherun.com/?ak_action=api_record_view&id=34&type=feed" alt="" /><!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a title="Click me to see the sites." href="#" onclick="$$('div.d34').each( function(e) { e.visualEffect('slide_down',{duration:2.5}) }); return false;"><strong><em>Bookmark to:</em></strong></a>
<br />
<div class="d34" style="overflow:hidden">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http%3A%2F%2Fwww.innovationontherun.com%2Fjava-native-access-jna-what-jni-should-have-been%2F&amp;title=Java+Native+Access+%28JNA%29%3A+What+JNI+should+have+been" rel="nofollow" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.innovationontherun.com%2Fjava-native-access-jna-what-jni-should-have-been%2F&amp;title=Java+Native+Access+%28JNA%29%3A+What+JNI+should+have+been" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dzone.com/links/add.html?description=Java+Native+Access+%28JNA%29%3A+What+JNI+should+have+been&amp;url=http%3A%2F%2Fwww.innovationontherun.com%2Fjava-native-access-jna-what-jni-should-have-been%2F&amp;title=Java+Native+Access+%28JNA%29%3A+What+JNI+should+have+been" rel="nofollow" title="Add to&nbsp;DZone"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/dzone.png" title="Add to&nbsp;DZone" alt="Add to&nbsp;DZone" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fwww.innovationontherun.com%2Fjava-native-access-jna-what-jni-should-have-been%2F" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fwww.innovationontherun.com%2Fjava-native-access-jna-what-jni-should-have-been%2F&amp;title=Java+Native+Access+%28JNA%29%3A+What+JNI+should+have+been" rel="nofollow" title="Add to&nbsp;Google Bookmarks"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/google.png" title="Add to&nbsp;Google Bookmarks" alt="Add to&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http%3A%2F%2Fwww.innovationontherun.com%2Fjava-native-access-jna-what-jni-should-have-been%2F&amp;title=Java+Native+Access+%28JNA%29%3A+What+JNI+should+have+been" rel="nofollow" title="Add to&nbsp;reddit"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&nbsp;reddit" alt="Add to&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://slashdot.org/bookmark.pl?url=http%3A%2F%2Fwww.innovationontherun.com%2Fjava-native-access-jna-what-jni-should-have-been%2F&amp;title=Java+Native+Access+%28JNA%29%3A+What+JNI+should+have+been" rel="nofollow" title="Add to&nbsp;Slashdot"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/slashdot.png" title="Add to&nbsp;Slashdot" alt="Add to&nbsp;Slashdot" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.innovationontherun.com%2Fjava-native-access-jna-what-jni-should-have-been%2F&amp;title=Java+Native+Access+%28JNA%29%3A+What+JNI+should+have+been" rel="nofollow" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.squidoo.com/lensmaster/bookmark?http%3A%2F%2Fwww.innovationontherun.com%2Fjava-native-access-jna-what-jni-should-have-been%2F" rel="nofollow" title="Add to&nbsp;Squidoo"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/squidoo.png" title="Add to&nbsp;Squidoo" alt="Add to&nbsp;Squidoo" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.spurl.net/spurl.php?url=http%3A%2F%2Fwww.innovationontherun.com%2Fjava-native-access-jna-what-jni-should-have-been%2F&amp;title=Java+Native+Access+%28JNA%29%3A+What+JNI+should+have+been" rel="nofollow" title="Add to&nbsp;Spurl"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/spurl.png" title="Add to&nbsp;Spurl" alt="Add to&nbsp;Spurl" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http%3A%2F%2Fwww.innovationontherun.com%2Fjava-native-access-jna-what-jni-should-have-been%2F" rel="nofollow" title="Add to&nbsp;Technorati"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/technorati.png" title="Add to&nbsp;Technorati" alt="Add to&nbsp;Technorati" /></a>
<br />
<a style="font-size:90%;text-align: right; " title="Click me to hide the sites." href="#" onclick="$$('div.d34').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); return false;">Hide Sites</a>
</div>
</div>
<!-- Social Bookmarks END -->
<script type="text/javascript">$$('div.d34').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); </script>]]></content:encoded>
			<wfw:commentRss>http://www.innovationontherun.com/java-native-access-jna-what-jni-should-have-been/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Onward and Upward. Taking Control of Your Career By Being Your Own CEO</title>
		<link>http://www.innovationontherun.com/onward-and-upward-taking-control-of-your-career-by-being-your-own-ceo/</link>
		<comments>http://www.innovationontherun.com/onward-and-upward-taking-control-of-your-career-by-being-your-own-ceo/#comments</comments>
		<pubDate>Sat, 25 Aug 2007 16:16:40 +0000</pubDate>
		<dc:creator>Rob Di Marco</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Technology Business]]></category>

		<guid isPermaLink="false">http://www.innovationontherun.com/onward-and-upward-taking-control-of-your-career-by-being-your-own-ceo/</guid>
		<description><![CDATA[Nowadays, I spend so much time online, that I have little time to do real reading.&#160; But after missing my flight to Boston yesterday, I found myself with a few hours to burn and could actually put a dent in my backlog of Harvard Business Reviews that I had been meaning to get to for [...]]]></description>
			<content:encoded><![CDATA[<p>Nowadays, I spend so much time online, that I have little time to do real reading.&nbsp; But after missing my flight to Boston yesterday, I found myself with a few hours to burn and could actually put a dent in my backlog of Harvard Business Reviews that I had been meaning to get to for a while.&nbsp; I wound up reading a great article, an excerpt from <a href="http://www.amazon.com/Management-Challenges-Century-Peter-Drucker/dp/0887309984">Management Challenges for the 21st Century</a>&nbsp;by the late management guru <a href="http://en.wikipedia.org/wiki/Peter_Drucker">Peter Drucker</a>.&nbsp; The thesis is that knowledge workers must take responsibility for their career path and act as their own personal CEO.&nbsp; No one other than you is looking out for your career.&nbsp; You will have a working life span of 40-50 years and it is up to you to make sure that you are both productive in and satisfied with your job.&nbsp; If your expertise is Java today, it better not be your expertise in thirty years.&nbsp; You had better adapt.</p>
<p>So how should a developer operate as a CEO?&nbsp; What do they need to think about.&nbsp; What questions do they need to have answered?&nbsp; Let&#8217;s discuss a couple required characteristics of a good CEO and then apply them to your career path.</p>
<blockquote>
<p>SIDENOTE: Often, when we think of career growth, we equate growth to earning more money or a getting a better title.&nbsp; These may be&nbsp;evidence of growth, but are not requirements.&nbsp; Career growth may&nbsp;also involve trying new technologies, changing roles, or changing industries.&nbsp; It may mean getting out of technology</p>
</blockquote>
<h2>Taking Responsibility</h2>
<p>You, and only you,&nbsp;are responsible for your career path.&nbsp; Accept this.&nbsp; It is not your boss&#8217;s job to get you trained on new technologies, it is your responsibility to make this happen.&nbsp; Figure out what you would like to learn and then ask your boss to help you make it happen.&nbsp; If you do not take responsibility for asking, it is very unlikely that you will get what you want.&nbsp; Regardless of whether your employer will pay for your education, do it anyhow.&nbsp; Learn a new language (programming or foreign).&nbsp; Read books and then apply them to your work.&nbsp; Go to an interesting conference.&nbsp; While it is definitely preferred for your boss to play a part in what languages you learn or what books you read, it is your responsibility not your boss&#8217;s to make it happen.</p>
<h2>Determine Strengths</h2>
<p>What are you good at doing?&nbsp; Drucker posits that the only way to figure this out is by using feedback analysis.&nbsp; He suggests that after every key decision or action that you make, write down what you expect the result to be and then review it in 9 to 12 months.&nbsp; See if there are patterns between where you anticipated the results and where you did not.&nbsp; From this feedback, figure out what you are good at and&nbsp;what you need to improve.&nbsp; In addition, you may see things that you have no business doing.&nbsp; For example, software developers often make atrocious project managers.&nbsp; For some, this may because they lack training in the area; for others it may be that they lack the ability to develop an effective plan.&nbsp; By looking at how you have done, you can see if consistent lack of planning is a problem and try to figure out if you can improve it or if you need others to help you with it.</p>
<p>In addition, look at how you operate outside of just writing code.&nbsp; Take the opportunity to learn about things that extend outside your area of expertise.&nbsp; Read books on marketing principles, go out on sales calls, take a basic class on accounting.&nbsp; Improving yourself in non-technical areas will help you better understand demands on your co-workers and you may find that you have strengths in areas you never anticipated.</p>
<h2>Know Your Core Values</h2>
<p>Core values are the things that you feel are truly important to you; they are different than ethics.&nbsp; Ethics relates to doing what is right.&nbsp; Values relate to doing what you believe in.&nbsp; For example, one of my key values is that I feel you should only hire the very best technical resources, that these resources should have problems explained to them and then should be empowered to make decisions as to how to best solve the problems.&nbsp; The corporation I was working for decided to take a different philosophy where the business users were more responsible for deciding how to solve the problem.&nbsp; That may be the right decision for the organization, but it violated my personal values.&nbsp; Other examples of value decisions a company will need to&nbsp;make may include:</p>
<ul>
<li>The level of R&amp;D investment to make
<li>Use and contribution to open source software
<li>Whether people should be compensated by stock options or by cash
<li>What accounting rules to use to recognize revenue
<li>Support for telecommuting</li>
</ul>
<p>Just because you may disagree with a company&#8217;s values does not mean it is a &#8220;bad&#8221; company.&nbsp; But trying to stay in an organization that has values that conflict with your values will only lead to frustration.</p>
<h2>Planning for the Future</h2>
<p>Take some time to think about what you where you want to be in five years.&nbsp; Figure out what skills and experiences you will need to achieve this goal.&nbsp; Write down what it will take and review the list regularly.&nbsp; Another great suggestion that Drucker has is to have a hobby.&nbsp; You never know if that hobby will lead to a second career.&nbsp; After twenty years working with technology, you may lose your passion and you may be prefer a change in career direction.&nbsp; By encouraging other interests, you may find that your desired career path is no longer in technology but is in another area </p>
<img src="http://www.innovationontherun.com/?ak_action=api_record_view&id=33&type=feed" alt="" /><!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a title="Click me to see the sites." href="#" onclick="$$('div.d33').each( function(e) { e.visualEffect('slide_down',{duration:2.5}) }); return false;"><strong><em>Bookmark to:</em></strong></a>
<br />
<div class="d33" style="overflow:hidden">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http%3A%2F%2Fwww.innovationontherun.com%2Fonward-and-upward-taking-control-of-your-career-by-being-your-own-ceo%2F&amp;title=Onward+and+Upward.+Taking+Control+of+Your+Career+By+Being+Your+Own+CEO" rel="nofollow" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.innovationontherun.com%2Fonward-and-upward-taking-control-of-your-career-by-being-your-own-ceo%2F&amp;title=Onward+and+Upward.+Taking+Control+of+Your+Career+By+Being+Your+Own+CEO" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dzone.com/links/add.html?description=Onward+and+Upward.+Taking+Control+of+Your+Career+By+Being+Your+Own+CEO&amp;url=http%3A%2F%2Fwww.innovationontherun.com%2Fonward-and-upward-taking-control-of-your-career-by-being-your-own-ceo%2F&amp;title=Onward+and+Upward.+Taking+Control+of+Your+Career+By+Being+Your+Own+CEO" rel="nofollow" title="Add to&nbsp;DZone"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/dzone.png" title="Add to&nbsp;DZone" alt="Add to&nbsp;DZone" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fwww.innovationontherun.com%2Fonward-and-upward-taking-control-of-your-career-by-being-your-own-ceo%2F" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fwww.innovationontherun.com%2Fonward-and-upward-taking-control-of-your-career-by-being-your-own-ceo%2F&amp;title=Onward+and+Upward.+Taking+Control+of+Your+Career+By+Being+Your+Own+CEO" rel="nofollow" title="Add to&nbsp;Google Bookmarks"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/google.png" title="Add to&nbsp;Google Bookmarks" alt="Add to&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http%3A%2F%2Fwww.innovationontherun.com%2Fonward-and-upward-taking-control-of-your-career-by-being-your-own-ceo%2F&amp;title=Onward+and+Upward.+Taking+Control+of+Your+Career+By+Being+Your+Own+CEO" rel="nofollow" title="Add to&nbsp;reddit"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&nbsp;reddit" alt="Add to&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://slashdot.org/bookmark.pl?url=http%3A%2F%2Fwww.innovationontherun.com%2Fonward-and-upward-taking-control-of-your-career-by-being-your-own-ceo%2F&amp;title=Onward+and+Upward.+Taking+Control+of+Your+Career+By+Being+Your+Own+CEO" rel="nofollow" title="Add to&nbsp;Slashdot"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/slashdot.png" title="Add to&nbsp;Slashdot" alt="Add to&nbsp;Slashdot" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.innovationontherun.com%2Fonward-and-upward-taking-control-of-your-career-by-being-your-own-ceo%2F&amp;title=Onward+and+Upward.+Taking+Control+of+Your+Career+By+Being+Your+Own+CEO" rel="nofollow" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.squidoo.com/lensmaster/bookmark?http%3A%2F%2Fwww.innovationontherun.com%2Fonward-and-upward-taking-control-of-your-career-by-being-your-own-ceo%2F" rel="nofollow" title="Add to&nbsp;Squidoo"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/squidoo.png" title="Add to&nbsp;Squidoo" alt="Add to&nbsp;Squidoo" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.spurl.net/spurl.php?url=http%3A%2F%2Fwww.innovationontherun.com%2Fonward-and-upward-taking-control-of-your-career-by-being-your-own-ceo%2F&amp;title=Onward+and+Upward.+Taking+Control+of+Your+Career+By+Being+Your+Own+CEO" rel="nofollow" title="Add to&nbsp;Spurl"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/spurl.png" title="Add to&nbsp;Spurl" alt="Add to&nbsp;Spurl" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http%3A%2F%2Fwww.innovationontherun.com%2Fonward-and-upward-taking-control-of-your-career-by-being-your-own-ceo%2F" rel="nofollow" title="Add to&nbsp;Technorati"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/technorati.png" title="Add to&nbsp;Technorati" alt="Add to&nbsp;Technorati" /></a>
<br />
<a style="font-size:90%;text-align: right; " title="Click me to hide the sites." href="#" onclick="$$('div.d33').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); return false;">Hide Sites</a>
</div>
</div>
<!-- Social Bookmarks END -->
<script type="text/javascript">$$('div.d33').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); </script>]]></content:encoded>
			<wfw:commentRss>http://www.innovationontherun.com/onward-and-upward-taking-control-of-your-career-by-being-your-own-ceo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Debugging JavaScript Executing in Java with HtmlUnit</title>
		<link>http://www.innovationontherun.com/debugging-javascript-executing-in-java-with-htmlunit/</link>
		<comments>http://www.innovationontherun.com/debugging-javascript-executing-in-java-with-htmlunit/#comments</comments>
		<pubDate>Mon, 20 Aug 2007 21:05:54 +0000</pubDate>
		<dc:creator>Rob Di Marco</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://www.innovationontherun.com/debugging-javascript-executing-in-java-with-htmlunit/</guid>
		<description><![CDATA[For the past few days, I have been doing a little work with embedded JavaScript within the HtmlUnit&#160;project.&#160; HtmlUnit is a really cool project that is a headless web browser written in Java that is really useful if you are trying to do automated testing or web scraping and want to simulate how a real [...]]]></description>
			<content:encoded><![CDATA[<p>For the past few days, I have been doing a little work with embedded JavaScript within the <a href="http://htmlunit.sourceforge.net">HtmlUnit</a>&nbsp;project.&nbsp; HtmlUnit is a really cool project that is a headless web browser written in Java that is really useful if you are trying to do automated testing or web scraping and want to simulate how a real browser works.&nbsp; One of the neat features is that it supports JavaScript execution within the HTML page so scripts that modify the DOM can be supported.&nbsp; One site that I was trying to automate a script for uses the <a href="http://developer.yahoo.com/yui/">YUI</a> JavaScript libraries and I was having some problems with HtmlUnit, so I volunteered to have a shot at trying to get all of the unit tests to pass.</p>
<p>The hardest part of the development has been trying to debug why the hell all of the scripts have been failing.&nbsp; Most of the problems seem to fall into one or more of a few categories:</p>
<ul>
<li>Hacks in the YUI libraries to deal with the fact that IE and Firefox both operate differently and NEITHER is fully compliant with the DOM specification.&nbsp; That has made for lots of fun times.&nbsp; I have found a certain irony that I am cursing the Yahoo developers for the hacks that they wrote while probably cursing </li>
<li>Bugs with the <a href="http://developer.mozilla.org/en/docs/Rhino">Rhino JavaScript</a> libraries.&nbsp; For example, I could not even start the YUI tests until I upgraded to 1.6R6.&nbsp; Also, I&nbsp;think I found a&nbsp;subtle bug&nbsp;that is causing one of the unit tests to fail related to the&nbsp;<em>for&#8230;in</em> syntax, but it has been a bitch to reproduce.</li>
<li>No integrated debugging of the JavaScript code.&nbsp; The only way I can diagnose what is really breaking is by liberal use of the alert() method and then a review of the output.&nbsp; Hopefully this will change in <a href="http://developer.mozilla.org/en/docs/New_in_Rhino_1.7R1">Rhino 1.7</a>.&nbsp; Huge problem.</li>
<li>Unhelpful error messages.&nbsp; For example, I was getting a NullPointerException being thrown from SOMEWHERE in a script, but the stack trace was lost when it was transformed to a ScriptException.&nbsp; The only way I was able to debug the problem was to put a breakpoint on the constructor for NullPointerException and then look at the runtime stack when it was thrown, then grep through the Yahoo JavaScript to try to figure out where the problem could possibly be.</li>
</ul>
<p>So if you ever having to work with the implementation</p>
<ul>
<li>Make sure you are using a good IDE with a debugger.&nbsp; I cannot stress this enough.&nbsp; I have had to put breakpoints all over the damn place.&nbsp; And integrate as much of the source code around as you can and integrate it with the debugger.</li>
<li>If you are using Java 6, I would STRONGLY RECOMMEND NOT USING THE DEFAULT SCRIPTING IMPLEMENTATIONS!!!&nbsp; I have now worked with both the JRuby and JavaScript libraries.&nbsp; It is way easier to upgrade versions of your libraries to work around bugs if you are using the standalone implementations rather than the versions built into the JVMs.&nbsp; By the way, how much fun will it be when a later version of Java comes out with new scripting libraries that I am sure will not be 100% backwards compatible.</li>
<li>Take Mozilla, MSDN, and especially W3C reference documents with a grain of salt.&nbsp; They may not fully describe the behavior that you are seeing in the browser.</li>
</ul>
<img src="http://www.innovationontherun.com/?ak_action=api_record_view&id=31&type=feed" alt="" /><!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a title="Click me to see the sites." href="#" onclick="$$('div.d31').each( function(e) { e.visualEffect('slide_down',{duration:2.5}) }); return false;"><strong><em>Bookmark to:</em></strong></a>
<br />
<div class="d31" style="overflow:hidden">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http%3A%2F%2Fwww.innovationontherun.com%2Fdebugging-javascript-executing-in-java-with-htmlunit%2F&amp;title=Debugging+JavaScript+Executing+in+Java+with+HtmlUnit" rel="nofollow" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.innovationontherun.com%2Fdebugging-javascript-executing-in-java-with-htmlunit%2F&amp;title=Debugging+JavaScript+Executing+in+Java+with+HtmlUnit" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dzone.com/links/add.html?description=Debugging+JavaScript+Executing+in+Java+with+HtmlUnit&amp;url=http%3A%2F%2Fwww.innovationontherun.com%2Fdebugging-javascript-executing-in-java-with-htmlunit%2F&amp;title=Debugging+JavaScript+Executing+in+Java+with+HtmlUnit" rel="nofollow" title="Add to&nbsp;DZone"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/dzone.png" title="Add to&nbsp;DZone" alt="Add to&nbsp;DZone" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fwww.innovationontherun.com%2Fdebugging-javascript-executing-in-java-with-htmlunit%2F" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fwww.innovationontherun.com%2Fdebugging-javascript-executing-in-java-with-htmlunit%2F&amp;title=Debugging+JavaScript+Executing+in+Java+with+HtmlUnit" rel="nofollow" title="Add to&nbsp;Google Bookmarks"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/google.png" title="Add to&nbsp;Google Bookmarks" alt="Add to&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http%3A%2F%2Fwww.innovationontherun.com%2Fdebugging-javascript-executing-in-java-with-htmlunit%2F&amp;title=Debugging+JavaScript+Executing+in+Java+with+HtmlUnit" rel="nofollow" title="Add to&nbsp;reddit"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&nbsp;reddit" alt="Add to&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://slashdot.org/bookmark.pl?url=http%3A%2F%2Fwww.innovationontherun.com%2Fdebugging-javascript-executing-in-java-with-htmlunit%2F&amp;title=Debugging+JavaScript+Executing+in+Java+with+HtmlUnit" rel="nofollow" title="Add to&nbsp;Slashdot"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/slashdot.png" title="Add to&nbsp;Slashdot" alt="Add to&nbsp;Slashdot" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.innovationontherun.com%2Fdebugging-javascript-executing-in-java-with-htmlunit%2F&amp;title=Debugging+JavaScript+Executing+in+Java+with+HtmlUnit" rel="nofollow" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.squidoo.com/lensmaster/bookmark?http%3A%2F%2Fwww.innovationontherun.com%2Fdebugging-javascript-executing-in-java-with-htmlunit%2F" rel="nofollow" title="Add to&nbsp;Squidoo"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/squidoo.png" title="Add to&nbsp;Squidoo" alt="Add to&nbsp;Squidoo" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.spurl.net/spurl.php?url=http%3A%2F%2Fwww.innovationontherun.com%2Fdebugging-javascript-executing-in-java-with-htmlunit%2F&amp;title=Debugging+JavaScript+Executing+in+Java+with+HtmlUnit" rel="nofollow" title="Add to&nbsp;Spurl"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/spurl.png" title="Add to&nbsp;Spurl" alt="Add to&nbsp;Spurl" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http%3A%2F%2Fwww.innovationontherun.com%2Fdebugging-javascript-executing-in-java-with-htmlunit%2F" rel="nofollow" title="Add to&nbsp;Technorati"><img class="social_img" src="http://www.innovationontherun.com/wp-content/plugins/social-bookmarks/images/technorati.png" title="Add to&nbsp;Technorati" alt="Add to&nbsp;Technorati" /></a>
<br />
<a style="font-size:90%;text-align: right; " title="Click me to hide the sites." href="#" onclick="$$('div.d31').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); return false;">Hide Sites</a>
</div>
</div>
<!-- Social Bookmarks END -->
<script type="text/javascript">$$('div.d31').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); </script>]]></content:encoded>
			<wfw:commentRss>http://www.innovationontherun.com/debugging-javascript-executing-in-java-with-htmlunit/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
