<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:wfw="http://wellformedweb.org/CommentAPI/">
  <channel>
    <title>Bruce Grant's Tech Blog</title>
    <link>http://www.bxgrant.com/blog/1</link>
    <description>Bruce Grant's technical blog</description>
    <language>en</language>
    <image>
      <url>http://www.bxgrant.com/static/images/BxLaf/logo.png</url>
      <title>Bruce Grant's Tech Blog</title>
      <link>http://www.bxgrant.com/blog/1</link>
      <width>93</width>
      <height>93</height>
    </image>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>BX Blog Engine 1.0</generator>
    <managingEditor>bxgrant@yahoo.com</managingEditor>
    <webMaster>Bruce Grant</webMaster>
    <pubDate>Tue, 16 Mar 2010 18:56:07 -0700</pubDate>
    <item>
      <title>Building a Jar  and Including Classes from Dependencies using Maven</title>
      <link>http://www.bxgrant.com/entry/88</link>

      

      <description>&lt;div class=&quot;bxWikiDocBody&quot;&gt;I finally figured out how to build a jar file using Maven that will include the class files from dependent jars in the resulting jar I build.&lt;br /&gt;
&lt;br /&gt;
There's a Maven plugin named shade that will include all the classes from all dependent jar files by default.&lt;br /&gt;
&lt;br /&gt;
Here's my pom.xml file that makes it happen.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;bxWikiCalloutCode&quot;&gt;&lt;div class=&quot;codeBody&quot;&gt;&lt;div class=&quot;calloutText&quot; style=&quot;&quot;&gt;&lt;a name=&quot;shade&quot; name=&quot;pom.xml1Link&quot; /&gt;&lt;span class=&quot;rowNum&quot;&gt;&amp;nbsp;1&lt;/span&gt;&lt;span id=&quot;shade&quot; name=&quot;pom.xml1&quot;&gt;&amp;lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; &lt;/span&gt;
&lt;a name=&quot;shade&quot; name=&quot;pom.xml2Link&quot; /&gt;&lt;span class=&quot;rowNum&quot;&gt;&amp;nbsp;2&lt;/span&gt;&lt;span id=&quot;shade&quot; name=&quot;pom.xml2&quot;&gt;xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&lt;/span&gt;
&lt;a name=&quot;shade&quot; name=&quot;pom.xml3Link&quot; /&gt;&lt;span class=&quot;rowNum&quot;&gt;&amp;nbsp;3&lt;/span&gt;&lt;span id=&quot;shade&quot; name=&quot;pom.xml3&quot;&gt;  xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 &lt;/span&gt;
&lt;a name=&quot;shade&quot; name=&quot;pom.xml4Link&quot; /&gt;&lt;span class=&quot;rowNum&quot;&gt;&amp;nbsp;4&lt;/span&gt;&lt;span id=&quot;shade&quot; name=&quot;pom.xml4&quot;&gt;             http://maven.apache.org/maven-v4_0_0.xsd&quot;&amp;gt;&lt;/span&gt;
&lt;a name=&quot;shade&quot; name=&quot;pom.xml5Link&quot; /&gt;&lt;span class=&quot;rowNum&quot;&gt;&amp;nbsp;5&lt;/span&gt;&lt;span id=&quot;shade&quot; name=&quot;pom.xml5&quot;&gt;  &amp;lt;modelVersion&amp;gt;4.0.0&amp;lt;/modelVersion&amp;gt;&lt;/span&gt;
&lt;a name=&quot;shade&quot; name=&quot;pom.xml6Link&quot; /&gt;&lt;span class=&quot;rowNum&quot;&gt;&amp;nbsp;6&lt;/span&gt;&lt;span id=&quot;shade&quot; name=&quot;pom.xml6&quot;&gt;  &amp;lt;groupId&amp;gt;mygroupname&amp;lt;/groupId&amp;gt;&lt;/span&gt;
&lt;a name=&quot;shade&quot; name=&quot;pom.xml7Link&quot; /&gt;&lt;span class=&quot;rowNum&quot;&gt;&amp;nbsp;7&lt;/span&gt;&lt;span id=&quot;shade&quot; name=&quot;pom.xml7&quot;&gt;  &amp;lt;artifactId&amp;gt;myartifactname&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
&lt;a name=&quot;shade&quot; name=&quot;pom.xml8Link&quot; /&gt;&lt;span class=&quot;rowNum&quot;&gt;&amp;nbsp;8&lt;/span&gt;&lt;span id=&quot;shade&quot; name=&quot;pom.xml8&quot;&gt;  &amp;lt;version&amp;gt;1.0&amp;lt;/version&amp;gt;&lt;/span&gt;
&lt;a name=&quot;shade&quot; name=&quot;pom.xml9Link&quot; /&gt;&lt;span class=&quot;rowNum&quot;&gt;&amp;nbsp;9&lt;/span&gt;&lt;span id=&quot;shade&quot; name=&quot;pom.xml9&quot;&gt;&lt;/span&gt;
&lt;a name=&quot;shade&quot; name=&quot;pom.xml10Link&quot; /&gt;&lt;span class=&quot;rowNum&quot;&gt;10&lt;/span&gt;&lt;span id=&quot;shade&quot; name=&quot;pom.xml10&quot;&gt;  &amp;lt;properties&amp;gt;&lt;/span&gt;
&lt;a name=&quot;shade&quot; name=&quot;pom.xml11Link&quot; /&gt;&lt;span class=&quot;rowNum&quot;&gt;11&lt;/span&gt;&lt;span id=&quot;shade&quot; name=&quot;pom.xml11&quot;&gt;    &amp;lt;final.jar.name&amp;gt;myjarfilename&amp;lt;/final.jar.name&amp;gt;&lt;/span&gt;
&lt;a name=&quot;shade&quot; name=&quot;pom.xml12Link&quot; /&gt;&lt;span class=&quot;rowNum&quot;&gt;12&lt;/span&gt;&lt;span id=&quot;shade&quot; name=&quot;pom.xml12&quot;&gt;  &amp;lt;/properties&amp;gt;&lt;/span&gt;
&lt;a name=&quot;shade&quot; name=&quot;pom.xml13Link&quot; /&gt;&lt;span class=&quot;rowNum&quot;&gt;13&lt;/span&gt;&lt;span id=&quot;shade&quot; name=&quot;pom.xml13&quot;&gt;&lt;/span&gt;
&lt;a name=&quot;shade&quot; name=&quot;pom.xml14Link&quot; /&gt;&lt;span class=&quot;rowNum&quot;&gt;14&lt;/span&gt;&lt;span id=&quot;shade&quot; name=&quot;pom.xml14&quot;&gt;  &amp;lt;build&amp;gt;&lt;/span&gt;
&lt;a name=&quot;shade&quot; name=&quot;pom.xml15Link&quot; /&gt;&lt;span class=&quot;rowNum&quot;&gt;15&lt;/span&gt;&lt;span id=&quot;shade&quot; name=&quot;pom.xml15&quot;&gt;    &amp;lt;plugins&amp;gt;&lt;/span&gt;
&lt;a name=&quot;shade&quot; name=&quot;pom.xml16Link&quot; /&gt;&lt;span class=&quot;rowNum&quot;&gt;16&lt;/span&gt;&lt;span id=&quot;shade&quot; name=&quot;pom.xml16&quot;&gt;      &amp;lt;plugin&amp;gt;&lt;/span&gt;
&lt;a name=&quot;shade&quot; name=&quot;pom.xml17Link&quot; /&gt;&lt;span class=&quot;rowNum&quot;&gt;17&lt;/span&gt;&lt;span id=&quot;shade&quot; name=&quot;pom.xml17&quot;&gt;        &amp;lt;groupId&amp;gt;org.apache.maven.plugins&amp;lt;/groupId&amp;gt;&lt;/span&gt;
&lt;a name=&quot;shade&quot; name=&quot;pom.xml18Link&quot; /&gt;&lt;span class=&quot;rowNum&quot;&gt;18&lt;/span&gt;&lt;span id=&quot;shade&quot; name=&quot;pom.xml18&quot;&gt;        &amp;lt;artifactId&amp;gt;maven-shade-plugin&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
&lt;a name=&quot;shade&quot; name=&quot;pom.xml19Link&quot; /&gt;&lt;span class=&quot;rowNum&quot;&gt;19&lt;/span&gt;&lt;span id=&quot;shade&quot; name=&quot;pom.xml19&quot;&gt;        &amp;lt;version&amp;gt;1.3.1&amp;lt;/version&amp;gt;&lt;/span&gt;
&lt;a name=&quot;shade&quot; name=&quot;pom.xml20Link&quot; /&gt;&lt;span class=&quot;rowNum&quot;&gt;20&lt;/span&gt;&lt;span id=&quot;shade&quot; name=&quot;pom.xml20&quot;&gt;        &amp;lt;executions&amp;gt;&lt;/span&gt;
&lt;a name=&quot;shade&quot; name=&quot;pom.xml21Link&quot; /&gt;&lt;span class=&quot;rowNum&quot;&gt;21&lt;/span&gt;&lt;span id=&quot;shade&quot; name=&quot;pom.xml21&quot;&gt;          &amp;lt;execution&amp;gt;&lt;/span&gt;
&lt;a name=&quot;shade&quot; name=&quot;pom.xml22Link&quot; /&gt;&lt;span class=&quot;rowNum&quot;&gt;22&lt;/span&gt;&lt;span id=&quot;shade&quot; name=&quot;pom.xml22&quot;&gt;            &amp;lt;phase&amp;gt;package&amp;lt;/phase&amp;gt;&lt;/span&gt;
&lt;a name=&quot;shade&quot; name=&quot;pom.xml23Link&quot; /&gt;&lt;span class=&quot;rowNum&quot;&gt;23&lt;/span&gt;&lt;span id=&quot;shade&quot; name=&quot;pom.xml23&quot;&gt;            &amp;lt;goals&amp;gt;&lt;/span&gt;
&lt;a name=&quot;shade&quot; name=&quot;pom.xml24Link&quot; /&gt;&lt;span class=&quot;rowNum&quot;&gt;24&lt;/span&gt;&lt;span id=&quot;shade&quot; name=&quot;pom.xml24&quot;&gt;              &amp;lt;goal&amp;gt;shade&amp;lt;/goal&amp;gt;&lt;/span&gt;
&lt;a name=&quot;shade&quot; name=&quot;pom.xml25Link&quot; /&gt;&lt;span class=&quot;rowNum&quot;&gt;25&lt;/span&gt;&lt;span id=&quot;shade&quot; name=&quot;pom.xml25&quot;&gt;            &amp;lt;/goals&amp;gt;&lt;/span&gt;
&lt;a name=&quot;shade&quot; name=&quot;pom.xml26Link&quot; /&gt;&lt;span class=&quot;rowNum&quot;&gt;26&lt;/span&gt;&lt;span id=&quot;shade&quot; name=&quot;pom.xml26&quot;&gt;            &amp;lt;configuration&amp;gt;&lt;/span&gt;
&lt;a name=&quot;shade&quot; name=&quot;pom.xml27Link&quot; /&gt;&lt;span class=&quot;rowNum&quot;&gt;27&lt;/span&gt;&lt;span id=&quot;shade&quot; name=&quot;pom.xml27&quot;&gt;              &amp;lt;finalName&amp;gt;${final.jar.name}&amp;lt;/finalName&amp;gt;&lt;/span&gt;
&lt;a name=&quot;shade&quot; name=&quot;pom.xml28Link&quot; /&gt;&lt;span class=&quot;rowNum&quot;&gt;28&lt;/span&gt;&lt;span id=&quot;shade&quot; name=&quot;pom.xml28&quot;&gt;              &amp;lt;artifactSet&amp;gt;&lt;/span&gt;
&lt;a name=&quot;shade&quot; name=&quot;pom.xml29Link&quot; /&gt;&lt;span class=&quot;rowNum&quot;&gt;29&lt;/span&gt;&lt;span id=&quot;shade&quot; name=&quot;pom.xml29&quot;&gt;                &amp;lt;excludes&amp;gt;&lt;/span&gt;
&lt;a name=&quot;shade&quot; name=&quot;pom.xml30Link&quot; /&gt;&lt;span class=&quot;rowNum&quot;&gt;30&lt;/span&gt;&lt;span id=&quot;shade&quot; name=&quot;pom.xml30&quot;&gt;                  &amp;lt;exclude&amp;gt;server.policy&amp;lt;/exclude&amp;gt;&lt;/span&gt;
&lt;a name=&quot;shade&quot; name=&quot;pom.xml31Link&quot; /&gt;&lt;span class=&quot;rowNum&quot;&gt;31&lt;/span&gt;&lt;span id=&quot;shade&quot; name=&quot;pom.xml31&quot;&gt;                &amp;lt;/excludes&amp;gt;&lt;/span&gt;
&lt;a name=&quot;shade&quot; name=&quot;pom.xml32Link&quot; /&gt;&lt;span class=&quot;rowNum&quot;&gt;32&lt;/span&gt;&lt;span id=&quot;shade&quot; name=&quot;pom.xml32&quot;&gt;              &amp;lt;/artifactSet&amp;gt;&lt;/span&gt;
&lt;a name=&quot;shade&quot; name=&quot;pom.xml33Link&quot; /&gt;&lt;span class=&quot;rowNum&quot;&gt;33&lt;/span&gt;&lt;span id=&quot;shade&quot; name=&quot;pom.xml33&quot;&gt;            &amp;lt;/configuration&amp;gt;&lt;/span&gt;
&lt;a name=&quot;shade&quot; name=&quot;pom.xml34Link&quot; /&gt;&lt;span class=&quot;rowNum&quot;&gt;34&lt;/span&gt;&lt;span id=&quot;shade&quot; name=&quot;pom.xml34&quot;&gt;          &amp;lt;/execution&amp;gt;&lt;/span&gt;
&lt;a name=&quot;shade&quot; name=&quot;pom.xml35Link&quot; /&gt;&lt;span class=&quot;rowNum&quot;&gt;35&lt;/span&gt;&lt;span id=&quot;shade&quot; name=&quot;pom.xml35&quot;&gt;        &amp;lt;/executions&amp;gt;&lt;/span&gt;
&lt;a name=&quot;shade&quot; name=&quot;pom.xml36Link&quot; /&gt;&lt;span class=&quot;rowNum&quot;&gt;36&lt;/span&gt;&lt;span id=&quot;shade&quot; name=&quot;pom.xml36&quot;&gt;      &amp;lt;/plugin&amp;gt;&lt;/span&gt;
&lt;a name=&quot;shade&quot; name=&quot;pom.xml37Link&quot; /&gt;&lt;span class=&quot;rowNum&quot;&gt;37&lt;/span&gt;&lt;span id=&quot;shade&quot; name=&quot;pom.xml37&quot;&gt;    &amp;lt;/plugins&amp;gt;&lt;/span&gt;
&lt;a name=&quot;shade&quot; name=&quot;pom.xml38Link&quot; /&gt;&lt;span class=&quot;rowNum&quot;&gt;38&lt;/span&gt;&lt;span id=&quot;shade&quot; name=&quot;pom.xml38&quot;&gt;  &amp;lt;/build&amp;gt;&lt;/span&gt;
&lt;a name=&quot;shade&quot; name=&quot;pom.xml39Link&quot; /&gt;&lt;span class=&quot;rowNum&quot;&gt;39&lt;/span&gt;&lt;span id=&quot;shade&quot; name=&quot;pom.xml39&quot;&gt;&amp;lt;/project&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div id=&quot;shade&quot; name=&quot;pom.xmlCopy&quot; style=&quot;display:none&quot;&gt;&amp;lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; 
xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
  xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 
             http://maven.apache.org/maven-v4_0_0.xsd&quot;&amp;gt;
  &amp;lt;modelVersion&amp;gt;4.0.0&amp;lt;/modelVersion&amp;gt;
  &amp;lt;groupId&amp;gt;mygroupname&amp;lt;/groupId&amp;gt;
  &amp;lt;artifactId&amp;gt;myartifactname&amp;lt;/artifactId&amp;gt;
  &amp;lt;version&amp;gt;1.0&amp;lt;/version&amp;gt;

  &amp;lt;properties&amp;gt;
    &amp;lt;final.jar.name&amp;gt;myjarfilename&amp;lt;/final.jar.name&amp;gt;
  &amp;lt;/properties&amp;gt;

  &amp;lt;build&amp;gt;
    &amp;lt;plugins&amp;gt;
      &amp;lt;plugin&amp;gt;
        &amp;lt;groupId&amp;gt;org.apache.maven.plugins&amp;lt;/groupId&amp;gt;
        &amp;lt;artifactId&amp;gt;maven-shade-plugin&amp;lt;/artifactId&amp;gt;
        &amp;lt;version&amp;gt;1.3.1&amp;lt;/version&amp;gt;
        &amp;lt;executions&amp;gt;
          &amp;lt;execution&amp;gt;
            &amp;lt;phase&amp;gt;package&amp;lt;/phase&amp;gt;
            &amp;lt;goals&amp;gt;
              &amp;lt;goal&amp;gt;shade&amp;lt;/goal&amp;gt;
            &amp;lt;/goals&amp;gt;
            &amp;lt;configuration&amp;gt;
              &amp;lt;finalName&amp;gt;${final.jar.name}&amp;lt;/finalName&amp;gt;
              &amp;lt;artifactSet&amp;gt;
                &amp;lt;excludes&amp;gt;
                  &amp;lt;exclude&amp;gt;server.policy&amp;lt;/exclude&amp;gt;
                &amp;lt;/excludes&amp;gt;
              &amp;lt;/artifactSet&amp;gt;
            &amp;lt;/configuration&amp;gt;
          &amp;lt;/execution&amp;gt;
        &amp;lt;/executions&amp;gt;
      &amp;lt;/plugin&amp;gt;
    &amp;lt;/plugins&amp;gt;
  &amp;lt;/build&amp;gt;
&amp;lt;/project&amp;gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;copyCalloutCode&quot;&gt;&lt;a href=&quot;javascript:BxUtil.copyToClipboard('shade&quot; name=&quot;pom.xmlCopy')&quot; style=&quot;color:#21206b&quot;&gt;Copy&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;clear:both&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;clear:both&quot;&gt;&lt;/div&gt;&lt;script type=&quot;text/javascript&quot;&gt;var _shade&quot; name=&quot;pom.xmlRow;&lt;/script&gt;&lt;/div&gt; 	      &lt;p&gt;&lt;b&gt;Tags: &lt;/b&gt; 
	  	    &lt;a href=&quot;/tag/1/java&quot; rel=&quot;tag&quot;&gt;java&lt;/a&gt;&amp;nbsp;      
	  	    &lt;a href=&quot;/tag/1/Maven&quot; rel=&quot;tag&quot;&gt;Maven&lt;/a&gt;&amp;nbsp;      
	  	    &lt;a href=&quot;/tag/1/jar&quot; rel=&quot;tag&quot;&gt;jar&lt;/a&gt;      
	      &lt;/p&gt;
</description>
      <guid>http://www.bxgrant.com/entry/88</guid>
      <pubDate>Wed, 24 Feb 2010 11:09:08 -0700</pubDate>
      <category>http://www.bxgrant.com/category/1</category>
    </item>
    <item>
      <title>Old World and New World Web Apps</title>
      <link>http://www.bxgrant.com/entry/87</link>

      

      <description>&lt;div class=&quot;bxWikiDocBody&quot;&gt;A veritable cornucopia of web application approaches and frameworks, some old school and some new school, confuse even the most experienced.  This article attempts to delineate the most popular of the approaches and the reasons why one would adopt one over another for a project.&lt;/div&gt; 	      &lt;p&gt;&lt;b&gt;Tags: &lt;/b&gt; 
	  	    &lt;a href=&quot;/tag/1/java&quot; rel=&quot;tag&quot;&gt;java&lt;/a&gt;&amp;nbsp;      
	  	    &lt;a href=&quot;/tag/1/web+application&quot; rel=&quot;tag&quot;&gt;web application&lt;/a&gt;&amp;nbsp;      
	  	    &lt;a href=&quot;/tag/1/python&quot; rel=&quot;tag&quot;&gt;python&lt;/a&gt;&amp;nbsp;      
	  	    &lt;a href=&quot;/tag/1/ruby&quot; rel=&quot;tag&quot;&gt;ruby&lt;/a&gt;&amp;nbsp;      
	  	    &lt;a href=&quot;/tag/1/MS+ASP&quot; rel=&quot;tag&quot;&gt;MS ASP&lt;/a&gt;      
	      &lt;/p&gt;
</description>
      <guid>http://www.bxgrant.com/entry/87</guid>
      <pubDate>Thu, 18 Feb 2010 10:18:43 -0700</pubDate>
      <category>http://www.bxgrant.com/category/1</category>
    </item>
    <item>
      <title>Adopting JPA, JSF and JBoss Richfaces</title>
      <link>http://www.bxgrant.com/entry/86</link>

      

      <description>&lt;div class=&quot;bxWikiDocBody&quot;&gt;It's time to move bxgrant.com forward in time with JPA, JSF and JBoss Rich Faces.  This article explains how I've begun the effort by migrating to JPA from iBatis and highlites the benefit of clean, simple, enterprise architectures which make doing this piece-meal update possible.  Look for future articles on JSF and Richfaces&lt;/div&gt; 	      &lt;p&gt;&lt;b&gt;Tags: &lt;/b&gt; 
	  	    &lt;a href=&quot;/tag/1/ORM&quot; rel=&quot;tag&quot;&gt;ORM&lt;/a&gt;&amp;nbsp;      
	  	    &lt;a href=&quot;/tag/1/JPA&quot; rel=&quot;tag&quot;&gt;JPA&lt;/a&gt;&amp;nbsp;      
	  	    &lt;a href=&quot;/tag/1/Richfaces&quot; rel=&quot;tag&quot;&gt;Richfaces&lt;/a&gt;&amp;nbsp;      
	  	    &lt;a href=&quot;/tag/1/JSF&quot; rel=&quot;tag&quot;&gt;JSF&lt;/a&gt;&amp;nbsp;      
	  	    &lt;a href=&quot;/tag/1/Open+JPA&quot; rel=&quot;tag&quot;&gt;Open JPA&lt;/a&gt;      
	      &lt;/p&gt;
</description>
      <guid>http://www.bxgrant.com/entry/86</guid>
      <pubDate>Sat, 13 Feb 2010 09:25:30 -0700</pubDate>
      <category>http://www.bxgrant.com/category/1</category>
    </item>
    <item>
      <title>Simplified Enterprise Java Web Site</title>
      <link>http://www.bxgrant.com/entry/85</link>

      

      <description>&lt;div class=&quot;bxWikiDocBody&quot;&gt;I've been meaning for years to document how I created my web site using enterprise Java tools and design patters but still kept things simple and fast to develop.  This article describes the approach I've taken to solving common problems of persistence, separation of cross-cutting concerns, scalability and UI.&lt;/div&gt; 	      &lt;p&gt;&lt;b&gt;Tags: &lt;/b&gt; 
	  	    &lt;a href=&quot;/tag/1/java&quot; rel=&quot;tag&quot;&gt;java&lt;/a&gt;&amp;nbsp;      
	  	    &lt;a href=&quot;/tag/1/application+server&quot; rel=&quot;tag&quot;&gt;application server&lt;/a&gt;&amp;nbsp;      
	  	    &lt;a href=&quot;/tag/1/architecture&quot; rel=&quot;tag&quot;&gt;architecture&lt;/a&gt;&amp;nbsp;      
	  	    &lt;a href=&quot;/tag/1/web+site&quot; rel=&quot;tag&quot;&gt;web site&lt;/a&gt;&amp;nbsp;      
	  	    &lt;a href=&quot;/tag/1/database&quot; rel=&quot;tag&quot;&gt;database&lt;/a&gt;&amp;nbsp;      
	  	    &lt;a href=&quot;/tag/1/ORM&quot; rel=&quot;tag&quot;&gt;ORM&lt;/a&gt;&amp;nbsp;      
	  	    &lt;a href=&quot;/tag/1/DAO&quot; rel=&quot;tag&quot;&gt;DAO&lt;/a&gt;&amp;nbsp;      
	  	    &lt;a href=&quot;/tag/1/Spring&quot; rel=&quot;tag&quot;&gt;Spring&lt;/a&gt;&amp;nbsp;      
	  	    &lt;a href=&quot;/tag/1/iBatis&quot; rel=&quot;tag&quot;&gt;iBatis&lt;/a&gt;      
	      &lt;/p&gt;
</description>
      <guid>http://www.bxgrant.com/entry/85</guid>
      <pubDate>Mon, 18 Jan 2010 18:02:02 -0700</pubDate>
      <category>http://www.bxgrant.com/category/1</category>
    </item>
    <item>
      <title>Java UI Frameworks</title>
      <link>http://www.bxgrant.com/entry/84</link>

      

      <description>&lt;div class=&quot;bxWikiDocBody&quot;&gt;This article provides a high-level review of three  Java UI frameworks I've used and explains the basic approach, positive and negative qualities of each - Apache Tapestry, Apache Velocity and Sun Java Server Faces.&lt;/div&gt; 	      &lt;p&gt;&lt;b&gt;Tags: &lt;/b&gt; 
	  	    &lt;a href=&quot;/tag/1/java&quot; rel=&quot;tag&quot;&gt;java&lt;/a&gt;&amp;nbsp;      
	  	    &lt;a href=&quot;/tag/1/UI+Framework&quot; rel=&quot;tag&quot;&gt;UI Framework&lt;/a&gt;      
	      &lt;/p&gt;
</description>
      <guid>http://www.bxgrant.com/entry/84</guid>
      <pubDate>Sat, 2 Jan 2010 12:03:27 -0700</pubDate>
      <category>http://www.bxgrant.com/category/1</category>
    </item>
    <item>
      <title>The Last Mile of Software Delivery</title>
      <link>http://www.bxgrant.com/entry/51</link>

      

      <description>&lt;div class=&quot;bxWikiDocBody&quot;&gt;This article delineates the many tasks necessary for releasing a high-quality software product that are often overlooked during software planning phases.&lt;/div&gt; 	      &lt;p&gt;&lt;b&gt;Tags: &lt;/b&gt; 
	  	    &lt;a href=&quot;/tag/1/software+methodology&quot; rel=&quot;tag&quot;&gt;software methodology&lt;/a&gt;&amp;nbsp;      
	  	    &lt;a href=&quot;/tag/1/process+engineering&quot; rel=&quot;tag&quot;&gt;process engineering&lt;/a&gt;&amp;nbsp;      
	  	    &lt;a href=&quot;/tag/1/software+development&quot; rel=&quot;tag&quot;&gt;software development&lt;/a&gt;      
	      &lt;/p&gt;
</description>
      <guid>http://www.bxgrant.com/entry/51</guid>
      <pubDate>Sun, 8 Nov 2009 09:40:47 -0700</pubDate>
      <category>http://www.bxgrant.com/category/1</category>
    </item>
    <item>
      <title>Adding Discipline to Scripting Languages</title>
      <link>http://www.bxgrant.com/entry/17</link>

      

      <description>&lt;div class=&quot;bxWikiDocBody&quot;&gt;The power, flexibility and development velocity of modern scripting languages makes them attractive to software engineering managers everywhere.  If your project only lives a few years then very little if any discipline is really needed.  However, if your product is successful and you have not instituted sound engineering practices from the get-go you may find yourself in a world of hurt with code that is brittle, difficult to maintain and that actually impedes your ability to make quick changes.  This article provides a few simple tips based on my experience creating two large, enterprise-scale systems using two very different scripting languages: JavaScript and Lua.&lt;/div&gt; 	      &lt;p&gt;&lt;b&gt;Tags: &lt;/b&gt; 
	  	    &lt;a href=&quot;/tag/1/scripting+languages&quot; rel=&quot;tag&quot;&gt;scripting languages&lt;/a&gt;&amp;nbsp;      
	  	    &lt;a href=&quot;/tag/1/lua&quot; rel=&quot;tag&quot;&gt;lua&lt;/a&gt;&amp;nbsp;      
	  	    &lt;a href=&quot;/tag/1/javascript&quot; rel=&quot;tag&quot;&gt;javascript&lt;/a&gt;      
	      &lt;/p&gt;
</description>
      <guid>http://www.bxgrant.com/entry/17</guid>
      <pubDate>Fri, 13 Mar 2009 17:10:22 -0700</pubDate>
      <category>http://www.bxgrant.com/category/1</category>
    </item>
    <item>
      <title>Reviewing the Accurev Source Code Management System</title>
      <link>http://www.bxgrant.com/entry/14</link>

      

      <description>&lt;div class=&quot;bxWikiDocBody&quot;&gt;This article reviews the Accurev Source Code Management system, comparing it to the more well known Subversion product.  It explores how a commercial product such as Accurev can remain viable in a version control world largely dominated by open source products.&lt;/div&gt; 	      &lt;p&gt;&lt;b&gt;Tags: &lt;/b&gt; 
	  	    &lt;a href=&quot;/tag/1/source+code+management&quot; rel=&quot;tag&quot;&gt;source code management&lt;/a&gt;&amp;nbsp;      
	  	    &lt;a href=&quot;/tag/1/subversion&quot; rel=&quot;tag&quot;&gt;subversion&lt;/a&gt;&amp;nbsp;      
	  	    &lt;a href=&quot;/tag/1/accurev&quot; rel=&quot;tag&quot;&gt;accurev&lt;/a&gt;&amp;nbsp;      
	  	    &lt;a href=&quot;/tag/1/review&quot; rel=&quot;tag&quot;&gt;review&lt;/a&gt;&amp;nbsp;      
	  	    &lt;a href=&quot;/tag/1/comparison&quot; rel=&quot;tag&quot;&gt;comparison&lt;/a&gt;      
	      &lt;/p&gt;
</description>
      <guid>http://www.bxgrant.com/entry/14</guid>
      <pubDate>Fri, 9 May 2008 09:00:50 -0600</pubDate>
      <category>http://www.bxgrant.com/category/1</category>
    </item>
    <item>
      <title>Forwarding a Remote Port to a Local Port using SSH</title>
      <link>http://www.bxgrant.com/entry/12</link>

      

      <description>&lt;div class=&quot;bxWikiDocBody&quot;&gt;This article provides a simple example of using SSH to forward web content from a port on a remote server to a port on a local computer and view the content in the local web browser.  It's not meant to be a comprehensive guide on ssh or port forwarding.  Instead, it's meant for the relative Linux novice who needs to figure out how to do simple port forwarding.  A basic knowledge of using ssh to log into a server is required.&lt;/div&gt; 	      &lt;p&gt;&lt;b&gt;Tags: &lt;/b&gt; 
	  	    &lt;a href=&quot;/tag/1/linux&quot; rel=&quot;tag&quot;&gt;linux&lt;/a&gt;&amp;nbsp;      
	  	    &lt;a href=&quot;/tag/1/ssh&quot; rel=&quot;tag&quot;&gt;ssh&lt;/a&gt;&amp;nbsp;      
	  	    &lt;a href=&quot;/tag/1/port+forwarding&quot; rel=&quot;tag&quot;&gt;port forwarding&lt;/a&gt;      
	      &lt;/p&gt;
</description>
      <guid>http://www.bxgrant.com/entry/12</guid>
      <pubDate>Wed, 7 May 2008 10:35:38 -0600</pubDate>
      <category>http://www.bxgrant.com/category/1</category>
    </item>
    <item>
      <title>Toward the Singularity - Welcome the Memristor</title>
      <link>http://www.bxgrant.com/entry/10</link>

      

      <description>&lt;div class=&quot;bxWikiDocBody&quot;&gt;HP has created what some believe to be the fourth fundamental electrical circuit element called a &lt;a href=&quot;http://www.nytimes.com/2008/05/01/technology/01chip.html?em&amp;ex=1209787200&amp;en=c4345e5bcda95925&amp;ei=5087%0A&quot;&gt;memristor&lt;/a&gt;. Whether you believe we're headed toward the &lt;a href=&quot;http://en.wikipedia.org/wiki/Technological_singularity&quot;&gt;Singularity&lt;/a&gt; or not, advancements such as these at the nano level continue to support Moore's Law and the idea of &lt;a href=&quot;http://en.wikipedia.org/wiki/Accelerating_change&quot;&gt;accelerating change&lt;/a&gt;.  The memristor HP created is only fifteen nanometers wide and could get as small as four nanometers.  &lt;br /&gt;
&lt;br /&gt;
The memristor works like this:  flow charge in one direction across the memristor and resistance increases and then flow charge in the other direction and it decreases.  The amount of increase or decrease is proportional to how much charge flows across it.  Why is that so amazing and what does it let us do?  What's so cool is that after the charge is applied to the memristor the amount of resistance left tells us how much charge flowed across it: that's persistent memory in case you haven't figured it out yet.  What that lets us do is create computers that have memory that persists like human memory persists.  Again, one step closer to the Singularity?&lt;/div&gt; 	      &lt;p&gt;&lt;b&gt;Tags: &lt;/b&gt; 
	  	    &lt;a href=&quot;/tag/1/memristor&quot; rel=&quot;tag&quot;&gt;memristor&lt;/a&gt;&amp;nbsp;      
	  	    &lt;a href=&quot;/tag/1/accelerating+change&quot; rel=&quot;tag&quot;&gt;accelerating change&lt;/a&gt;&amp;nbsp;      
	  	    &lt;a href=&quot;/tag/1/technological+singularity&quot; rel=&quot;tag&quot;&gt;technological singularity&lt;/a&gt;&amp;nbsp;      
	  	    &lt;a href=&quot;/tag/1/moore's+law&quot; rel=&quot;tag&quot;&gt;moore's law&lt;/a&gt;&amp;nbsp;      
	  	    &lt;a href=&quot;/tag/1/integrated+circuits&quot; rel=&quot;tag&quot;&gt;integrated circuits&lt;/a&gt;      
	      &lt;/p&gt;
</description>
      <guid>http://www.bxgrant.com/entry/10</guid>
      <pubDate>Thu, 1 May 2008 15:58:34 -0600</pubDate>
      <category>http://www.bxgrant.com/category/1</category>
    </item>
    </channel>
</rss>
