<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Mark Farnsworth</title>
	<atom:link href="http://markfarnsworth.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://markfarnsworth.wordpress.com</link>
	<description>Software Developer, Raleigh NC</description>
	<lastBuildDate>Fri, 05 Aug 2011 12:56:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='markfarnsworth.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Mark Farnsworth</title>
		<link>http://markfarnsworth.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://markfarnsworth.wordpress.com/osd.xml" title="Mark Farnsworth" />
	<atom:link rel='hub' href='http://markfarnsworth.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Solitaire in GWT</title>
		<link>http://markfarnsworth.wordpress.com/2010/03/16/solitaire-in-gwt/</link>
		<comments>http://markfarnsworth.wordpress.com/2010/03/16/solitaire-in-gwt/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 21:10:34 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://markfarnsworth.wordpress.com/?p=309</guid>
		<description><![CDATA[I recently tried my hand at building a Solitaire game using GWT.   This game gave me a chance to work with the drag and drop as I continue to explore the GWT framework.  The game still has a couple of small bugs in it but the basics are in place. Checkout the game at the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=markfarnsworth.wordpress.com&amp;blog=3988897&amp;post=309&amp;subd=markfarnsworth&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I recently tried my hand at building a Solitaire game using GWT.   This game gave me a chance to work with the drag and drop as I continue to explore the GWT framework.  The game still has a couple of small bugs in it but the basics are in place.</p>
<p>Checkout the game at the following URL:<br />
<a title="http://markfarnsworth-dev.appspot.com" href="http://markfarnsworth-dev.appspot.com">http://markfarnsworth-dev.appspot.com</a></p>
<p>The code is on my git hub space.</p>
<p>http://github.com/farnsworth2008/Webitaire</p>
<p>Let me know what you think.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/markfarnsworth.wordpress.com/309/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/markfarnsworth.wordpress.com/309/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/markfarnsworth.wordpress.com/309/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/markfarnsworth.wordpress.com/309/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/markfarnsworth.wordpress.com/309/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/markfarnsworth.wordpress.com/309/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/markfarnsworth.wordpress.com/309/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/markfarnsworth.wordpress.com/309/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/markfarnsworth.wordpress.com/309/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/markfarnsworth.wordpress.com/309/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/markfarnsworth.wordpress.com/309/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/markfarnsworth.wordpress.com/309/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/markfarnsworth.wordpress.com/309/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/markfarnsworth.wordpress.com/309/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=markfarnsworth.wordpress.com&amp;blog=3988897&amp;post=309&amp;subd=markfarnsworth&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://markfarnsworth.wordpress.com/2010/03/16/solitaire-in-gwt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/04c08739d027e90d0003372dfc2f2d8a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gatorback</media:title>
		</media:content>
	</item>
		<item>
		<title>app engine goes clunk</title>
		<link>http://markfarnsworth.wordpress.com/2010/02/24/app-engine-goes-clunk/</link>
		<comments>http://markfarnsworth.wordpress.com/2010/02/24/app-engine-goes-clunk/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 17:22:07 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://markfarnsworth.wordpress.com/?p=307</guid>
		<description><![CDATA[Today the Google AppEngine went offline for an extended period of time. I am sure the problem will be quickly resolved but thinking long term there is a big risk for the internet if the trend towards &#8220;Cloud&#8221; solutions drives organizations to replace their own data center&#8217;s with virtual solutions driven by a small number [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=markfarnsworth.wordpress.com&amp;blog=3988897&amp;post=307&amp;subd=markfarnsworth&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Today the Google AppEngine went offline for an extended period of time.</p>
<p>I am sure the problem will be quickly resolved but thinking long term there is a big risk for the internet if the trend towards &#8220;Cloud&#8221; solutions drives organizations to replace their own data center&#8217;s with virtual solutions driven by a small number of big vendors (i.e. Google, Amazon, Rackspace, etc).   Having a large amount of the internet served by a single organization has a real risk that a attack and/or accident will have a very wide impact.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/markfarnsworth.wordpress.com/307/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/markfarnsworth.wordpress.com/307/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/markfarnsworth.wordpress.com/307/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/markfarnsworth.wordpress.com/307/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/markfarnsworth.wordpress.com/307/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/markfarnsworth.wordpress.com/307/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/markfarnsworth.wordpress.com/307/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/markfarnsworth.wordpress.com/307/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/markfarnsworth.wordpress.com/307/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/markfarnsworth.wordpress.com/307/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/markfarnsworth.wordpress.com/307/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/markfarnsworth.wordpress.com/307/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/markfarnsworth.wordpress.com/307/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/markfarnsworth.wordpress.com/307/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=markfarnsworth.wordpress.com&amp;blog=3988897&amp;post=307&amp;subd=markfarnsworth&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://markfarnsworth.wordpress.com/2010/02/24/app-engine-goes-clunk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/04c08739d027e90d0003372dfc2f2d8a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gatorback</media:title>
		</media:content>
	</item>
		<item>
		<title>GitLink Plugin for Eclipse</title>
		<link>http://markfarnsworth.wordpress.com/2010/02/20/gitlink-plugin-for-eclipse/</link>
		<comments>http://markfarnsworth.wordpress.com/2010/02/20/gitlink-plugin-for-eclipse/#comments</comments>
		<pubDate>Sat, 20 Feb 2010 00:04:20 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://markfarnsworth.wordpress.com/?p=295</guid>
		<description><![CDATA[I have been using GIT for a while now and really enjoy the way the tool works. My one area of frustration is the lack of a good plug-in for Eclipse.  The EGIT and Gitclipse projects are great in concept but for my needs these plug-ins are not yet usable.  I expect that in a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=markfarnsworth.wordpress.com&amp;blog=3988897&amp;post=295&amp;subd=markfarnsworth&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I have been using GIT for a while now and really enjoy the way the tool works.</p>
<p>My one area of frustration is the lack of a good plug-in for Eclipse.  The EGIT and Gitclipse projects are great in concept but for my needs these plug-ins are not yet usable.  I expect that in a few months the projects will be better but for now, all I want is a very simple tool that does one thing well.</p>
<p>I decided to solve my frustration by creating a simple plug-in to show git status in an eclipse view.  This plug-in is useful because it allows you to quickly monitor the status of your repositories without leaving the IDE.  The plug-in&#8217;s <strong>ONLY</strong> feature is showing current GIT status.  If you want to add, commit, branch, clone, checkout, push, pull or perform any of the MANY git commands you will use the standard GIT tools.    For me this plug-in supports the model of work that I prefer since I personally like the command line and using the standard GIT tools for most operations.</p>
<p>The &#8220;GitLink&#8221; plug-in that I created does try to act as a &#8220;Eclipse team provider&#8221; and does not provide advanced features.  The implementation runs git-status as an external process and then parses the result to populate a view.  The plug-in also provides some icon and menu options to launch the standard git-gui and gitk tools.  The plug-in runs git status automatically when resources change and as such generally will provide an up to date view of the system status.   A simple refresh button is also available if the user wishes to manually trigger a run.</p>
<p><img src="http://markfarnsworth.files.wordpress.com/2010/02/gitlinkwithborder.png" alt="" /></p>
<p>Source code for my plug-in is on git hub:<br />
<a href="http://github.com/farnsworth2008/GitLink">http://github.com/farnsworth2008/GitLink</a></p>
<p>You can also use the update site to install the plug-in in eclipse:</p>
<p>http://markfarnsworth-dev.appspot.com/update</p>
<p>If you try out the plug-in please send me a note to let me know how it works for you and if you think it needs any features.  I have been using the plug-in for a couple of days on my Debian/Linux system and tested an earlier version of the concept on a windows box that was running <a href="http://code.google.com/p/msysgit/">msysgit</a>.</p>
<p>To use the plug-in, setup the Git repo under your project folder using the standard Git tools for your platform.   Make sure the git tools are in the system path and if you are running windows make sure you have mysysgit under your system path.</p>
<p>The git status view provided by the plug-in can be activated in Eclipse via the windows view menu.</p>
<p><b><br />
UPDATE: i have decided not to complete work on this because frankly the approach does not work well on the Windows OS and for an eclipse plug-in a solution that is not pure java is likely more trouble then it is worth.</b></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/markfarnsworth.wordpress.com/295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/markfarnsworth.wordpress.com/295/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/markfarnsworth.wordpress.com/295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/markfarnsworth.wordpress.com/295/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/markfarnsworth.wordpress.com/295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/markfarnsworth.wordpress.com/295/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/markfarnsworth.wordpress.com/295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/markfarnsworth.wordpress.com/295/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/markfarnsworth.wordpress.com/295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/markfarnsworth.wordpress.com/295/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/markfarnsworth.wordpress.com/295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/markfarnsworth.wordpress.com/295/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/markfarnsworth.wordpress.com/295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/markfarnsworth.wordpress.com/295/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=markfarnsworth.wordpress.com&amp;blog=3988897&amp;post=295&amp;subd=markfarnsworth&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://markfarnsworth.wordpress.com/2010/02/20/gitlink-plugin-for-eclipse/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/04c08739d027e90d0003372dfc2f2d8a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gatorback</media:title>
		</media:content>

		<media:content url="http://markfarnsworth.files.wordpress.com/2010/02/gitlinkwithborder.png" medium="image" />
	</item>
		<item>
		<title>Looking at NetBeans</title>
		<link>http://markfarnsworth.wordpress.com/2009/07/24/looking-at-netbeans/</link>
		<comments>http://markfarnsworth.wordpress.com/2009/07/24/looking-at-netbeans/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 14:11:10 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://markfarnsworth.wordpress.com/?p=262</guid>
		<description><![CDATA[I spent a few hours yesterday with NetBeans. My primary IDE for Java development has been Eclipse and prior to that I worked with Eclipse&#8217;s predecessor (IBM Visual Age). When I first started working with Visual Age in 1998 or 1999 I was very impressed and each release has been better then the one before. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=markfarnsworth.wordpress.com&amp;blog=3988897&amp;post=262&amp;subd=markfarnsworth&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I spent a few hours yesterday with NetBeans.</p>
<p>My primary IDE for Java development has been Eclipse and prior to that I worked with Eclipse&#8217;s predecessor (IBM Visual Age).   When I first started working with Visual Age in 1998 or 1999 I was very impressed and each release has been better then the one before.  Visual Age was rebranded as Eclipse; the pace of improvement has increased in recent years via the power of the Open Source community.   Eclipse continues to be the leader in Java IDEs but at the same time the other players have been improving their offerings.  InteliJ IDEA, JDeveloper, and NetBeans are well designed systems and I am sure that in some usage examples thes environments are better then the status quo functionality provided by Eclipse.</p>
<p>The last time I looked at NetBeans was several years ago.  A lot has happened since my previous look.   Spending time yesterday with NetBeans showed me that the project is alive and well and includes many innovative features.  I enjoyed seeing how the tool has grown and see a lot of potential.  Compared with my last look the tool is much more polished and given the improved speed of modern hardware performance was not an issue.  The UI for NetBeans is still not quite up to the Eclipse standard but it is much better then it was in prior releases.   There are pros and cons to the Swing vs. SWT approach and for the most part the Eclipse environment rendering is better due to the native widget approach that SWT uses but the gap is much more narrow then it was in the past.</p>
<p>I configured several of my projects for development in the NetBeans tool and created a few test projects from scratch to get a feel for the process.  In addition I installed plug-ins for working with GWT, JIndent, Jython, and a couple of other community features.   Overall I found that NetBeans continues to be a strong player in the IDE marketplace.  Right now I still prefer Eclipse but over the next few weeks, I plan to play with NetBeans a bit more in order to fully evaluate the feature set.</p>
<p>Since my GarinDriver project works with any IDE I also decided it was a good time to put together a <a href="http://markfarnsworth-dev.appspot.com/slides/garinAndNetBeans/garinDriverWithNetBeans.pdf">quick slide show to provide an overview of using GarinDriver</a> with NetBeans.</p>
<p>I am not sure how much I will use NetBeans in the future.  I may decide to stick with Eclipse but even if that is the case spending a little bit of time every few months to look at other options is a good thing.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/markfarnsworth.wordpress.com/262/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/markfarnsworth.wordpress.com/262/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/markfarnsworth.wordpress.com/262/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/markfarnsworth.wordpress.com/262/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/markfarnsworth.wordpress.com/262/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/markfarnsworth.wordpress.com/262/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/markfarnsworth.wordpress.com/262/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/markfarnsworth.wordpress.com/262/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/markfarnsworth.wordpress.com/262/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/markfarnsworth.wordpress.com/262/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/markfarnsworth.wordpress.com/262/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/markfarnsworth.wordpress.com/262/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/markfarnsworth.wordpress.com/262/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/markfarnsworth.wordpress.com/262/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=markfarnsworth.wordpress.com&amp;blog=3988897&amp;post=262&amp;subd=markfarnsworth&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://markfarnsworth.wordpress.com/2009/07/24/looking-at-netbeans/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/04c08739d027e90d0003372dfc2f2d8a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gatorback</media:title>
		</media:content>
	</item>
		<item>
		<title>Playing with GWT</title>
		<link>http://markfarnsworth.wordpress.com/2009/07/20/playing-with-gwt/</link>
		<comments>http://markfarnsworth.wordpress.com/2009/07/20/playing-with-gwt/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 23:17:19 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[GWT]]></category>

		<guid isPermaLink="false">http://markfarnsworth.wordpress.com/?p=255</guid>
		<description><![CDATA[My wife and I find it is much easier to remember a phone number if you create words out of the letters. A while ago, she asked me to create an application to help with the process of figuring out what words you can make out of a given phone number. Since I had some [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=markfarnsworth.wordpress.com&amp;blog=3988897&amp;post=255&amp;subd=markfarnsworth&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>My wife and I find it is much easier to remember a phone number if you create words out of the letters.</p>
<p>A while ago, she asked me to create an application to help with the process of figuring out what words you can make out of a given phone number.  </p>
<p>Since I had some free time today, I created the <a href="http://markfarnsworth-dev.appspot.com/phoneWords.html">Phone Words App</a> using GWT.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/markfarnsworth.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/markfarnsworth.wordpress.com/255/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/markfarnsworth.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/markfarnsworth.wordpress.com/255/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/markfarnsworth.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/markfarnsworth.wordpress.com/255/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/markfarnsworth.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/markfarnsworth.wordpress.com/255/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/markfarnsworth.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/markfarnsworth.wordpress.com/255/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/markfarnsworth.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/markfarnsworth.wordpress.com/255/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/markfarnsworth.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/markfarnsworth.wordpress.com/255/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=markfarnsworth.wordpress.com&amp;blog=3988897&amp;post=255&amp;subd=markfarnsworth&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://markfarnsworth.wordpress.com/2009/07/20/playing-with-gwt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/04c08739d027e90d0003372dfc2f2d8a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gatorback</media:title>
		</media:content>
	</item>
		<item>
		<title>Web Frameworks, AJAX, and GWT</title>
		<link>http://markfarnsworth.wordpress.com/2009/07/19/web-frameworks-ajax-and-gwt/</link>
		<comments>http://markfarnsworth.wordpress.com/2009/07/19/web-frameworks-ajax-and-gwt/#comments</comments>
		<pubDate>Sun, 19 Jul 2009 00:59:59 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://markfarnsworth.wordpress.com/?p=248</guid>
		<description><![CDATA[Over the years, I have worked with ALOT of web frameworks in various environments. The web was origionally designed around a document sharing paradigm.  User intractivity in the web started with CGI requests and basic HMTL forms.  The early CGI mode was very lacking in terms of application interactivity due to the long request and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=markfarnsworth.wordpress.com&amp;blog=3988897&amp;post=248&amp;subd=markfarnsworth&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Over the years, I have worked with ALOT of web frameworks in various environments.</p>
<p>The web was origionally designed around a document sharing paradigm.  User intractivity in the web started with CGI requests and basic HMTL forms.  The early CGI mode was very lacking in terms of application interactivity due to the long request and respone cycle and the lack of state management.   Basically CGI is not much more then what you have with a command line text interaction and in some ways the CGI model is more restrictive.  Compared to the C++ GUI frameworks I worked with in the early 90&#8242;s the move to web based CGI was a big step backwards as far as design goes but the push to the web required a move away from abstract widget based approaches.  Java Servlets improved the CGI by making the interactions faster and providing a crude session management system but at the it&#8217;s core the Servlet model of request response leaves the same fundemental problem present in CGI.   The session is also bad since state management is on the server and as such can be lost and can come out of sync with the user&#8217;s activity fairly easy.   This lack of a true component and widget oriented model is a big problem for complex applications.</p>
<p>The solution to the request/response problem is AJAX.  Using AJAX lets applications in browsers act like traditional client server systems.  With AJAX you can keep per user state on the client, perform background server communications with overlapping transactions, control the user&#8217;s experiance and generally produce a better applicaiton experiance.  That said, it is not magic and the cost is that the browsers for AJAXs must do more work vs. the dumb term type interactions of the pure HTML3.2 model.  With AJAX you need at minimum a browser with script support and the ability to perform background communications (i.e. hidden iframes).  The browser also must be able to dynamically control all rendered content (i.e. DOM/DHMTL).   The requirement for a rich browser makes AJAX heavier then the old school flat html model.   It also makes development of AJAX more complex but thankfully frameworks like GWT go a long way towards containing the complexity.</p>
<p>The GWT framework addresses the issue by packaging features as widgets and using AJAX RPC behind the scenes for background comunications.    With GWT you get support for the various browsers for free and if properly designed a GWT application.  State for the application can be properly maintained at the browser level in the widget context and as such the server can be a true stateless environment.  GWT and systems like it with a AJAX and/or future RPC techniques allow for much richer web applications.</p>
<p>I recently put out a GWT version of my SQL color coding demo application.  With the GWT framework adding support for a new features is much easier and the end user has a much better experiance.  The SQL color coding demo is very small and simple but it is fun to use and shows the basics of the GWT model.  You can try out the GWT version of the SQL Format app <a href="http://markfarnsworth-dev.appspot.com/Markfarnsworth_dev.html">here</a>.  This is a very simple bit of GWT but it shows how AJAX interactions work and provides a taste of the programming model for GWT.   The <a href="http://code.google.com/p/markfarnsworth-dev/source/browse/trunk/markfarnsworth-dev/src/maf/client/SqlRenderPanelBuilder.java">source code is available here</a>.</p>
<p>A slightly more complex example of GWT is something I put together to help my wife and I make words out of phone numbers.<br />
<a href="http://markfarnsworth-dev.appspot.com/phoneWords.html">http://markfarnsworth-dev.appspot.com/phoneWords.html</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/markfarnsworth.wordpress.com/248/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/markfarnsworth.wordpress.com/248/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/markfarnsworth.wordpress.com/248/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/markfarnsworth.wordpress.com/248/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/markfarnsworth.wordpress.com/248/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/markfarnsworth.wordpress.com/248/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/markfarnsworth.wordpress.com/248/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/markfarnsworth.wordpress.com/248/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/markfarnsworth.wordpress.com/248/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/markfarnsworth.wordpress.com/248/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/markfarnsworth.wordpress.com/248/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/markfarnsworth.wordpress.com/248/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/markfarnsworth.wordpress.com/248/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/markfarnsworth.wordpress.com/248/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=markfarnsworth.wordpress.com&amp;blog=3988897&amp;post=248&amp;subd=markfarnsworth&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://markfarnsworth.wordpress.com/2009/07/19/web-frameworks-ajax-and-gwt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/04c08739d027e90d0003372dfc2f2d8a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gatorback</media:title>
		</media:content>
	</item>
		<item>
		<title>SQL Formatter and Pretty Printer</title>
		<link>http://markfarnsworth.wordpress.com/2009/07/13/sql/</link>
		<comments>http://markfarnsworth.wordpress.com/2009/07/13/sql/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 01:01:39 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Garin]]></category>
		<category><![CDATA[HSQL]]></category>
		<category><![CDATA[HSQLDB]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[MySql]]></category>
		<category><![CDATA[Parser]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://markfarnsworth.wordpress.com/?p=232</guid>
		<description><![CDATA[A couple of weeks ago I started work to build a universal parser for SQL.  The work started with a basic need I had for minimal parsing of SQL statements in the GarinDriver JDBC project.  I was unable to find any open source parser code that would fully support the basic structure used by MySQL, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=markfarnsworth.wordpress.com&amp;blog=3988897&amp;post=232&amp;subd=markfarnsworth&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A couple of weeks ago I started work to build a universal parser for SQL.  The work started with a basic need I had for minimal parsing of SQL statements in the GarinDriver JDBC project.  I was unable to find any open source parser code that would fully support the basic structure used by MySQL, PostgreSQL, Oracle, and other similar systems.   In particular, I wanted support for q&#8217;&lt;&gt;&#8217; used by Oracle in addition to the SQL standard string encoding, MySQL&#8217;s use of C style string escaping, and $tag$ style strings for PostgreSQL and H2.  Conceptually I wanted to build ONE parser that could be configured to properly parse ANY dialect and that would support a framework for adding additional exceptions in the future.</p>
<p>The basics of my parser framework is now complete. It is smart enough to parse MySQL, H2, HSQLDB, Oracle, PostgreSQL, and ISO SQL2003 variants. The shallow parsing framework uses a base Token class and a range of subclasses to describe the most basic elements of the SQL grammar. The parser identifies the core keywords, statement boundaries, string, comment, and identifier limits but does not look into deeper language issues like statement structure.   One benifit of the shallow parsing is that it allows for flexibiltiy and does not require a complete BNF style grammar.  Even with only this basic level, it is possible to leverage this code for useful stuff beyond the GarinDriver, LiquiBase data migration solution.</p>
<p>The following bare bones test page demonstrates how the parser can be used to format and add color to SQL batches.  The code would also be useful for someone building a universal SQL editor.<br />
<a style="text-decoration:none;" href="http://markfarnsworth-dev.appspot.com/RenderSql">http://markfarnsworth-dev.appspot.com/RenderSql</a></p>
<p>Overall, I am happy with the approach and while I plan to use a more established framework like ANTLR or XTEXT for future deep parsing efforts I feel my homegrown framework provides a better approach for shallow parsing vs. the larger and more complex language tools that I have reviewed.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/markfarnsworth.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/markfarnsworth.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/markfarnsworth.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/markfarnsworth.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/markfarnsworth.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/markfarnsworth.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/markfarnsworth.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/markfarnsworth.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/markfarnsworth.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/markfarnsworth.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/markfarnsworth.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/markfarnsworth.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/markfarnsworth.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/markfarnsworth.wordpress.com/232/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=markfarnsworth.wordpress.com&amp;blog=3988897&amp;post=232&amp;subd=markfarnsworth&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://markfarnsworth.wordpress.com/2009/07/13/sql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/04c08739d027e90d0003372dfc2f2d8a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gatorback</media:title>
		</media:content>
	</item>
		<item>
		<title>A Universal Parser for SQL</title>
		<link>http://markfarnsworth.wordpress.com/2009/07/08/parse/</link>
		<comments>http://markfarnsworth.wordpress.com/2009/07/08/parse/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 03:11:24 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Garin]]></category>
		<category><![CDATA[HSQL]]></category>
		<category><![CDATA[HSQLDB]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[LiquiBase]]></category>
		<category><![CDATA[MySql]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Parser]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://markfarnsworth.wordpress.com/?p=210</guid>
		<description><![CDATA[The basics of my parser are complete and it is smart enough to parse MySQL, H2, HSQLDB, Oracle, PostgreSQL, and ISO SQL2003 variants.  I put up a VERY bare bones test page so you can play with it.
http://markfarnsworth-dev.appspot.com/RenderSql
<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=markfarnsworth.wordpress.com&amp;blog=3988897&amp;post=210&amp;subd=markfarnsworth&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I recently completed some work on the GarinDriver to research a more flexible model for database schema change management.   This work gave me a chance to dig a little deeper into the nuts and bolts of Java database interactions.  Working to track schema changes and support a wide range of databases increased my appreciating for powerful open source database platforms available today.  In particular, working with H2 Database gave me a chance to explore what I now think is one of the hidden treasures of the open source DB marketplace.  Overall it was a fun bit of hobby coding and I believe it will be useful in future real world projects.</p>
<p>Working on the driver, one challenge that went beyond my expectation was parsing the various dialects of SQL.   In a review of current open source projects, I did not find any public license parsers that can parse statements from ALL database systems.  In a sense, we are supposed to have a standard but it is really well followed by the vendors and as such writing a universal parse is a bit difficult.   I had some free time this weekend so I took on the challenge since it is an area where the open source community really does not currently have a good solution.  For example the tools that ship with Eclipse can not parse the $tag$ style strings from PostgreSQL or the q&#8217;[O'Brian]&#8216; style supported by Oracle.   In any case,  I had some free time and interest so I decided to build my own parser.  Without such a parser it would be impossible to provide full support for the statement execution model needed to support the GarinDriver desgin.  Workarounds were possible but a proper parser felt like the best approach.</p>
<p>Building a parser is complex and often involves specialized tools (i.e. ANTLR, BISON, JAVACC, FLEX, LEX, YACC, etc).  There are benefits and drawbacks to the traditional grammar definition and parser generator approach.   My initial review it seemed that supporting the often contradictory approaches used by different systems would be quite difficult with these tools.</p>
<p>Since all that I needed for the GarinDriver/LiquiBase project was &#8220;shallow parsing&#8221; my approach was to use a small framework of Java classes.  The use of my own framework allows me to share logic across the SQL dialects and provided a chance to explore idea for a more dynamic approach to &#8220;shallow parsing&#8221;.   So far the approach seems to be working out nicely although I am considering building a deep parser at some point later on with the Eclipse <a href="http://www.eclipse.org/Xtext/">XTEXT</a> project but for now the flexiiblity of a home grown hand coded parser has proved to be a viable approach for &#8220;shallow parsing&#8221;.</p>
<p><strong>Parser Fun:</strong></p>
<ul>
<li>Standard SQL comments have EOL style (&#8211;) and the block style (/* */).</li>
<li>Block style comments nest within each other so parser must count the nesting levels.</li>
<li>MySQL supports pound sign comments in addition to the standard forms.</li>
<li>HSQLDB supports // style comments in addition to the standard forms.</li>
<li>Standard SQL uses double quotes for identifiers and single quotes for text strings.</li>
<li>The parser must support both including quote symbol doubling for escapes (i.e. O&#8221;Brian or My &#8220;&#8221;big&#8221;" table.</li>
<li>Oracle supports q&#8217;[O'Brian]&#8216; in addition to the standard style.</li>
<li>MySQL uses C style string encoding (i.e. &#8216;O\&#8217;Brian&#8217; ).</li>
<li>PostgreSQL supports $tag$O&#8217;Brian$tag$ style in addition to the standard forms AND the mysql format.</li>
</ul>
<p>My parser uses object oriented techniques to define a base token concept, extend the base concept for SqlStatements, and then extend the SqlStatements to define the dialect variants in what I hope will be an extendable framework.  This approach provides more flexibility for future growth vs. more static models and parser generator tools.  In any case the approach seems to work and the ability to use object orientation to extend the parser in new directions seems like a good thing.</p>
<p>As with other hobby projects, my work in this area is EPL and hosted on Google code.  The documentation is sparse but if you are looking for SQL parser code you may find that this code can help you develop new and interesting tools for working with SQL systems.</p>
<p><a href="http://code.google.com/p/garinparser/">http://code.google.com/p/garinparser/</a></p>
<p>If you decide to use the parser please let me know.  Also, if you can define a legal SQL statement that does not parse correctly with my parser let me know since I like to eat tasty bugs.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/markfarnsworth.wordpress.com/210/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/markfarnsworth.wordpress.com/210/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/markfarnsworth.wordpress.com/210/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/markfarnsworth.wordpress.com/210/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/markfarnsworth.wordpress.com/210/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/markfarnsworth.wordpress.com/210/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/markfarnsworth.wordpress.com/210/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/markfarnsworth.wordpress.com/210/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/markfarnsworth.wordpress.com/210/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/markfarnsworth.wordpress.com/210/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/markfarnsworth.wordpress.com/210/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/markfarnsworth.wordpress.com/210/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/markfarnsworth.wordpress.com/210/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/markfarnsworth.wordpress.com/210/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=markfarnsworth.wordpress.com&amp;blog=3988897&amp;post=210&amp;subd=markfarnsworth&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://markfarnsworth.wordpress.com/2009/07/08/parse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/04c08739d027e90d0003372dfc2f2d8a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gatorback</media:title>
		</media:content>
	</item>
		<item>
		<title>GarinDriver plus LiquiBase</title>
		<link>http://markfarnsworth.wordpress.com/2009/06/27/garin/</link>
		<comments>http://markfarnsworth.wordpress.com/2009/06/27/garin/#comments</comments>
		<pubDate>Sat, 27 Jun 2009 17:48:02 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[DDL]]></category>
		<category><![CDATA[DML]]></category>
		<category><![CDATA[Garin]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JDBC]]></category>
		<category><![CDATA[JUNIT]]></category>
		<category><![CDATA[LiquiBase]]></category>
		<category><![CDATA[MySql]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://markfarnsworth.wordpress.com/?p=104</guid>
		<description><![CDATA[LiquiBaseSchema Manager GarinDriverwith EnhancedSchema Manager DistributedLocking Model YES YES Multiple ContextStreams YES YES MySQL DB YES YES Oracle DB YES YES PostgreSQL YES YES HSQLDB YES YES H2 YES YES Liquibase XML Change Set YES YES Vendor SQL (i.e. ENGINE=InnoDB) PARTIAL YES Complex SQL batches (i.e. from mysqldump style tools) NO YES SQL/DML Recording (record [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=markfarnsworth.wordpress.com&amp;blog=3988897&amp;post=104&amp;subd=markfarnsworth&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<table border="0">
<tbody>
<tr>
<td class="maf" style="vertical-align:top;" valign="top">
<table border="1">
<tbody>
<tr>
<th></th>
<th nowrap="1" valign="top">LiquiBase<br />Schema Manager</th>
<th nowrap="1" valign="top">GarinDriver<br />with Enhanced<br />Schema Manager</th>
</tr>
<tr>
<th align="RIGHT">Distributed<br />Locking Model</th>
<td class="maf" style="vertical-align:top;" valign="top">YES</td>
<td class="maf" style="vertical-align:top;" valign="top">YES</td>
</tr>
<tr>
<th align="RIGHT">Multiple Context<br />Streams</th>
<td class="maf" style="vertical-align:top;" valign="top">YES</td>
<td class="maf" style="vertical-align:top;" valign="top">YES</td>
</tr>
<tr>
<th align="RIGHT">MySQL DB</th>
<td class="maf" style="vertical-align:top;" valign="top">YES</td>
<td class="maf" style="vertical-align:top;" valign="top">YES</td>
</tr>
<tr>
<th align="RIGHT">Oracle DB</th>
<td class="maf" style="vertical-align:top;" valign="top">YES</td>
<td class="maf" style="vertical-align:top;" valign="top">YES</td>
</tr>
<tr>
<th align="RIGHT">PostgreSQL</th>
<td class="maf" style="vertical-align:top;" valign="top">YES</td>
<td class="maf" style="vertical-align:top;" valign="top">YES</td>
</tr>
<tr>
<th align="RIGHT">HSQLDB</th>
<td class="maf" style="vertical-align:top;" valign="top">YES</td>
<td class="maf" style="vertical-align:top;" valign="top">YES</td>
</tr>
<tr>
<th align="RIGHT">H2</th>
<td class="maf" style="vertical-align:top;" valign="top">YES</td>
<td class="maf" style="vertical-align:top;" valign="top">YES</td>
</tr>
<tr>
<th align="RIGHT">Liquibase XML Change Set</th>
<td class="maf" style="vertical-align:top;" valign="top">YES</td>
<td class="maf" style="vertical-align:top;" valign="top">YES</td>
</tr>
<tr>
<th align="RIGHT">Vendor SQL<br />
(i.e. ENGINE=InnoDB)</th>
<td class="maf" style="vertical-align:top;" valign="top">PARTIAL</td>
<td class="maf" style="vertical-align:top;" valign="top" bgcolor='LIGHTYELLOW'><b>YES</b></td>
</tr>
<tr>
<th align="RIGHT">Complex SQL batches<br />
(i.e. from mysqldump style tools)</th>
<td class="maf" style="vertical-align:top;" valign="top">NO</td>
<td class="maf" style="vertical-align:top;" valign="top" bgcolor='LIGHTYELLOW'><b>YES</b></td>
</tr>
<tr>
<th align="RIGHT">SQL/DML Recording<br />
(record from any JDBC tool)</th>
<td class="maf" style="vertical-align:top;" valign="top">NO</td>
<td class="maf" style="vertical-align:top;" valign="top" bgcolor='LIGHTYELLOW'><b>YES</b></td>
</tr>
<tr>
<th align="RIGHT">Manual, FAQ, etc.</th>
<td class="maf" style="vertical-align:top;" valign="top" bgcolor='LIGHTYELLOW'><b>YES</b></td>
<td class="maf" style="vertical-align:top;" valign="top">PENDING</td>
</tr>
</tbody>
</table>
</td>
<td></td>
<td class="maf" style="vertical-align:top;" valign="top">GarinDriver is an JDBC driver and schema manager that I created to supports a schema deployment. The driver wraps your backend driver and provides a framework for SQL/DML script recording and playback to streamline distribution of changes across environments.<br />
<br />
The driver can also be configured to run with the enhanced schema manager or use the standard LiquiBase SchemaManager via an option in it&#8217;s JDBC URL.  With both models, GarinDriver ensures that schema changes are automatically deployed BEFORE client code connects to the system.<br />
<br />
With the enhanced manager, the schema change stream is defined as a &#8220;stack&#8221; of numbered SQL and/or XML files.  This model works well with mysqldump, Toad, SQLPlus, and similar tools.  Tools like mysqldump are especially useful for creating a complete system script in one simple step.  Subsequent scripts can also be written as general SQL standard files and/or use the full flexibility and power of the native dialect.  The driver level DML recording feature provides an option to record DML statements you issue in your JDBC based tools and automatically add them to the schema stack.  This option means that you can configure ANY schema tool that uses JDBC and automatically captured the numbered series of scripts to build your schema distribution table.  In addition at any point you can place LiquiBase XML files in the stack to provide flexibility for vendor neutrality while also having an option for running the vendor specific scripts when and where they make the most sense.<br />
<br />
The combination of GarinDriver and LiquiBase provides a lot of power and flexibility for complex envirionments.<br />
<br />
For more information about GarinDriver please visit the main project site.<br />
<br />
<a style="font-weight:bold;text-decoration:none;color:#0a8fbc;" rel="#someid6" href="http://code.google.com/p/garindriver/">http://code.google.com/p/garindriver/</a><br />
<br />
We will be providing additional documentation in our wiki in the coming weeks.
</td>
</tr>
</tbody>
</table>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/markfarnsworth.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/markfarnsworth.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/markfarnsworth.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/markfarnsworth.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/markfarnsworth.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/markfarnsworth.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/markfarnsworth.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/markfarnsworth.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/markfarnsworth.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/markfarnsworth.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/markfarnsworth.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/markfarnsworth.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/markfarnsworth.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/markfarnsworth.wordpress.com/104/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=markfarnsworth.wordpress.com&amp;blog=3988897&amp;post=104&amp;subd=markfarnsworth&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://markfarnsworth.wordpress.com/2009/06/27/garin/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/04c08739d027e90d0003372dfc2f2d8a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gatorback</media:title>
		</media:content>
	</item>
		<item>
		<title>GarinDriver</title>
		<link>http://markfarnsworth.wordpress.com/2009/06/23/garindriver/</link>
		<comments>http://markfarnsworth.wordpress.com/2009/06/23/garindriver/#comments</comments>
		<pubDate>Tue, 23 Jun 2009 02:16:08 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[DDL]]></category>
		<category><![CDATA[Garin]]></category>
		<category><![CDATA[JDBC]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://markfarnsworth.wordpress.com/?p=90</guid>
		<description><![CDATA[By working this logic into the JDBC driver layer it is really very easy to add the capability to exiting projects.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=markfarnsworth.wordpress.com&amp;blog=3988897&amp;post=90&amp;subd=markfarnsworth&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I recently released the GarinDriver as an open source project published on google hosting.<br />
<a href="http://code.google.com/p/garindriver/">http://code.google.com/p/garindriver/</a></p>
<p>The GarinDriver is a JDBC driver that includes the ability to run a stack of scripts for initial creation of a database schema and incremental updates to that schema.</p>
<p>By working this logic into the JDBC driver layer, it is really very easy to add the capability to exiting projects.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/markfarnsworth.wordpress.com/90/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/markfarnsworth.wordpress.com/90/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/markfarnsworth.wordpress.com/90/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/markfarnsworth.wordpress.com/90/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/markfarnsworth.wordpress.com/90/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/markfarnsworth.wordpress.com/90/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/markfarnsworth.wordpress.com/90/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/markfarnsworth.wordpress.com/90/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/markfarnsworth.wordpress.com/90/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/markfarnsworth.wordpress.com/90/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/markfarnsworth.wordpress.com/90/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/markfarnsworth.wordpress.com/90/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/markfarnsworth.wordpress.com/90/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/markfarnsworth.wordpress.com/90/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=markfarnsworth.wordpress.com&amp;blog=3988897&amp;post=90&amp;subd=markfarnsworth&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://markfarnsworth.wordpress.com/2009/06/23/garindriver/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/04c08739d027e90d0003372dfc2f2d8a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gatorback</media:title>
		</media:content>
	</item>
	</channel>
</rss>
