<?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/"
	>

<channel>
	<title>Cameron Stokes's Blog</title>
	<atom:link href="http://cameronstokes.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://cameronstokes.com</link>
	<description>A blog by Cameron Stokes.</description>
	<pubDate>Sat, 06 Mar 2010 15:35:42 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Beer from afar</title>
		<link>http://cameronstokes.com/2010/03/06/beer-from-afar/</link>
		<comments>http://cameronstokes.com/2010/03/06/beer-from-afar/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 15:35:42 +0000</pubDate>
		<dc:creator>Cameron Stokes</dc:creator>
		
		<category><![CDATA[beer]]></category>

		<guid isPermaLink="false">http://cameronstokes.com/?p=960</guid>
		<description><![CDATA[I&#8217;m a beer lover.  I don&#8217;t hide it, I don&#8217;t deny it, I think and talk way too much about beer.  The other night I had a dream that our Scotch ale (currently in the fermenter) turned out to be the best beer ever.  One of the many  upsides to this obsession is that [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m a beer lover.  I don&#8217;t hide it, I don&#8217;t deny it, I think and talk way too much about beer.  The other night I had a dream that our Scotch ale (currently in the fermenter) turned out to be the best beer ever.  One of the many  upsides to this obsession is that friends and family know how much I love beer and help feed my obsession.  Case in point&#8230;just this week I received two special deliveries!</p>
<p>The first delivery was from a friend who just returned from  California.</p>
<div id="attachment_961" class="wp-caption aligncenter" style="width: 490px"><img class="size-full wp-image-961" title="beer-from-california" src="http://cameronstokes.com/wp-content/uploads/2010/03/beer-from-california.jpg" alt="California Delivery" width="480" height="321" /><p class="wp-caption-text">California Delivery</p></div>
<p>From left to right: Brew Free or Die IPA from <a href="http://www.21st-amendment.com/" onclick="javascript:pageTracker._trackPageview ('/outbound/www.21st-amendment.com');">21st Amendment Brewery</a>, Hitachino Nest White Ale and Hitachino Nest Red Rice Ale from <a href="http://www.kodawari.cc/" onclick="javascript:pageTracker._trackPageview ('/outbound/www.kodawari.cc');">Kiuchi Brewery</a>, and Pliny the Elder from <a href="http://www.russianriverbrewing.com/" onclick="javascript:pageTracker._trackPageview ('/outbound/www.russianriverbrewing.com');">Russian River Brewing Company</a>.</p>
<p>The next delivery came by way of my Grandmother from North Carolina.  There&#8217;s a great little beer store in her town and she&#8217;s recently started going and asking the owner about beers that I might like.</p>
<div id="attachment_962" class="wp-caption aligncenter" style="width: 490px"><img class="size-full wp-image-962" title="beer-from-north-carolina" src="http://cameronstokes.com/wp-content/uploads/2010/03/beer-from-north-carolina.jpg" alt="Beer from North Carolina" width="480" height="283" /><p class="wp-caption-text">North Carolina Delivery</p></div>
<p>From left to right again: Fourteen Ale from <a href="http://www.weyerbacher.com/" onclick="javascript:pageTracker._trackPageview ('/outbound/www.weyerbacher.com');">Wyerbacher</a>, Celebrator Doppelbock from <a href="http://www.ayinger.de/" onclick="javascript:pageTracker._trackPageview ('/outbound/www.ayinger.de');">Ayinger Bier</a>, Dragon&#8217;s Milk from <a href="http://www.newhollandbrew.com/" onclick="javascript:pageTracker._trackPageview ('/outbound/www.newhollandbrew.com');">New Holland Brewing Company</a>, Urthel Samaranth from <a href="http://www.urthel.com/" onclick="javascript:pageTracker._trackPageview ('/outbound/www.urthel.com');">De Leyerth Brouwerijen</a>, and Samichlaus from <a href="http://www.schloss-eggenberg.at/de/" onclick="javascript:pageTracker._trackPageview ('/outbound/www.schloss-eggenberg.at');">Castle Brewery Eggenberg</a>.</p>
<p>Some of these I  could likely find in Georgia but don&#8217;t think I&#8217;ve seen any of them before.  I&#8217;m fairly certain I could find the Hitachino Nest beers locally but I  know for a fact 21st Amendment and Russian River do not distribute to  Georgia, though <a href="http://www.atlantabeermaster.com/?p=976" onclick="javascript:pageTracker._trackPageview ('/outbound/www.atlantabeermaster.com');">I hear</a> 21st  Amendment will be starting soon.  I can&#8217;t wait to try each of these beers but am most excited about Dragon&#8217;s Milk, Pliny the Elder, and Fourteen Ale.</p>
<p>In other beer news, I&#8217;ve posted photos of the <a href="http://www.premiereventslive.com/winterbeercarnival/" onclick="javascript:pageTracker._trackPageview ('/outbound/www.premiereventslive.com');">Winter Beer Carnival</a> Rhonda and I attend last weekend; it was a blast!  Photos are <a href="http://cameronstokes.com/gallery/winter-beer-carnival-february-2010/">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://cameronstokes.com/2010/03/06/beer-from-afar/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Announcing kui!</title>
		<link>http://cameronstokes.com/2010/02/05/announcing-kui/</link>
		<comments>http://cameronstokes.com/2010/02/05/announcing-kui/#comments</comments>
		<pubDate>Sat, 06 Feb 2010 03:50:23 +0000</pubDate>
		<dc:creator>Cameron Stokes</dc:creator>
		
		<category><![CDATA[java]]></category>

		<category><![CDATA[kui]]></category>

		<guid isPermaLink="false">http://cameronstokes.com/?p=937</guid>
		<description><![CDATA[I am excited to announce the initial release of kui!  kui is a modern, browser-based administration tool for Java applications supporting the JMX specification.  While tools already exist to monitor Java applications using JMX, kui takes a different approach to cure your JMX woes!
Key features of kui are:

Browser-based: Once installed, all you need is a [...]]]></description>
			<content:encoded><![CDATA[<p>I am excited to announce the initial release of kui!  kui is a modern, browser-based administration tool for Java applications supporting the <span class="mw-redirect">JMX</span> specification.  While tools already exist to monitor Java applications using JMX, kui takes a different approach to cure your JMX woes!</p>
<p>Key features of kui are:</p>
<ul>
<li><strong>Browser-based</strong>: Once installed, all you need is a browser to access your MBeans.</li>
<li><strong>Easy-to-use interface</strong>: kui provides a familiar and consistent interface for viewing and administering your MBeans.</li>
<li><strong>Standards based</strong>: kui works with a wide variety of application servers and browsers.</li>
<li><strong>Pure Java and JavaScript</strong>: kui is written using Java and JavaScript for easy modifications.</li>
<li><strong>Open source</strong>: kui is distributed under the New BSD License.</li>
</ul>
<p>Head on over to the <a href="http://www.marker55.com/kui/" onclick="javascript:pageTracker._trackPageview ('/outbound/www.marker55.com');">kui website</a> for more information, screenshots, and available downloads.</p>
]]></content:encoded>
			<wfw:commentRss>http://cameronstokes.com/2010/02/05/announcing-kui/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Getting things done with a list</title>
		<link>http://cameronstokes.com/2009/12/30/getting-things-done-with-a-list/</link>
		<comments>http://cameronstokes.com/2009/12/30/getting-things-done-with-a-list/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 23:38:40 +0000</pubDate>
		<dc:creator>Cameron Stokes</dc:creator>
		
		<category><![CDATA[random]]></category>

		<guid isPermaLink="false">http://cameronstokes.com/?p=920</guid>
		<description><![CDATA[I consider myself a very focused and productive person, but over the past couple of weeks I&#8217;ve realized that I am much more productive when working from a task list.  The list keeps my mind from wondering to other tasks and I get a great satisfaction in checking tasks off  and reviewing the list [...]]]></description>
			<content:encoded><![CDATA[<p>I consider myself a very focused and productive person, but over the past couple of weeks I&#8217;ve realized that I am much more productive when working from a task list.  The list keeps my mind from wondering to other tasks and I get a great satisfaction in checking tasks off  and reviewing the list at the end of the day to see what I have accomplished.  I have some ideas on how to improve my list (and digitize it); let&#8217;s see how much more productive I can get!</p>
<p>This week&#8217;s task list:</p>
<div id="attachment_921" class="wp-caption aligncenter" style="width: 490px"><img class="size-full wp-image-921" title="to-do-list" src="http://cameronstokes.com/wp-content/uploads/2009/12/todo-list.jpg" alt="My latest to-do list" width="480" height="360" /><p class="wp-caption-text">This week&#39;s task list</p></div>
]]></content:encoded>
			<wfw:commentRss>http://cameronstokes.com/2009/12/30/getting-things-done-with-a-list/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Intercepting controllers in Spring MVC</title>
		<link>http://cameronstokes.com/2009/12/26/intercepting-controllers-in-spring-mvc/</link>
		<comments>http://cameronstokes.com/2009/12/26/intercepting-controllers-in-spring-mvc/#comments</comments>
		<pubDate>Sun, 27 Dec 2009 02:00:51 +0000</pubDate>
		<dc:creator>Cameron Stokes</dc:creator>
		
		<category><![CDATA[software development]]></category>

		<category><![CDATA[technical]]></category>

		<category><![CDATA[spring]]></category>

		<guid isPermaLink="false">http://cameronstokes.com/?p=886</guid>
		<description><![CDATA[Working on my latest project the past couple days I was trying to figure out a way to enforce authentication for some requests but not others.  I first wrote a Filter but when I started mapping the filter to my specific URLs I realized how tedious this could become.  I then remembered that Spring allowed [...]]]></description>
			<content:encoded><![CDATA[<p>Working on <a href="/2009/10/12/new-project/">my latest project</a> the past couple days I was trying to figure out a way to enforce authentication for some requests but not others.  I first wrote a <a href="http://java.sun.com/products/servlet/Filters.html" onclick="javascript:pageTracker._trackPageview ('/outbound/java.sun.com');">Filter</a> but when I started mapping the filter to my specific URLs I realized how tedious this could become.  I then remembered that <a href="http://www.springsource.org/about" onclick="javascript:pageTracker._trackPageview ('/outbound/www.springsource.org');">Spring</a> allowed for interceptors in its web framework and after a quick glance through their documentation I found <a href="http://static.springsource.org/spring/docs/2.5.x/reference/mvc.html#mvc-handlermapping-interceptor" onclick="javascript:pageTracker._trackPageview ('/outbound/static.springsource.org');">the section I was looking for</a>.  Unfortunately this still wasn&#8217;t exactly what I needed as Spring applies your interceptors to all requests configured in your handler mapping.  Looking at the <a href="http://static.springsource.org/spring/docs/2.5.x/api/index.html" onclick="javascript:pageTracker._trackPageview ('/outbound/static.springsource.org');">HandlerInterceptor API</a> I found I had access to the handler that was being processed and I just needed to decorate my handlers that needed authentication and adjust my interceptor to first check the handler.  I decided to create an empty Interface named <em>AuthenticatedController</em> which my controllers could implement to indicate they needed to be protected from unauthenticated access.  You could also do this using annotations, but here&#8217;s my code:</p>
<p><em>AuthenticatedController.java</em></p>
<pre class="brush: java">public interface AuthenticatedController {
    // This is empty on purpose.
}</pre>
<p><em>SimpleController.java</em></p>
<pre class="brush: java">import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;

public class StateController implements AuthenticatedController {

    public ModelAndView handleRequest( final HttpServletRequest httpServletRequest,
            final HttpServletResponse httpServletResponse ) throws Exception {
        ...
    }

}</pre>
<p><em>AuthenticationInterceptor.java</em></p>
<pre class="brush: java">import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

public class AuthenticationInterceptor extends HandlerInterceptorAdapter {

    public boolean preHandle( HttpServletRequest request, HttpServletResponse response,
            Object handler ) throws Exception {

        if ( !( handler instanceof AuthenticatedController ) ) {
            // Authentication not needed, allow request to continue.
            return true;
        }

        boolean isAuthenticated = checkAuthentication(...);

        if ( !isAuthenticated ) {
            // User is not authenticated, handle response as needed, and halt processing.
            response.setStatus( HttpServletResponse.SC_FORBIDDEN );
            return false;
        }

        // User is authenticated, allow request to continue.
        return true;
    }
}</pre>
<p><em>spring-beans.xml</em></p>
<pre class="brush: xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"&gt;

&lt;bean name="authenticationInterceptor" class="custom.AuthenticationInterceptor" /&gt;

&lt;bean name="urlMapping"
    class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"&gt;
    &lt;property name="interceptors"&gt;
         &lt;list&gt;
	     &lt;ref bean="authenticationInterceptor" /&gt;
	&lt;/list&gt;
    &lt;/property&gt;
    &lt;property name="mappings"&gt;
	&lt;props&gt;
            &lt;prop key="/controller1.json"&gt;controller1&lt;/prop&gt;
            &lt;prop key="/controller2.json"&gt;controller2&lt;/prop&gt;
            &lt;prop key="/controller3.json"&gt;controller3&lt;/prop&gt;
        &lt;/props&gt;
    &lt;/property&gt;
&lt;/bean&gt;

&lt;/beans&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://cameronstokes.com/2009/12/26/intercepting-controllers-in-spring-mvc/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Using svnversion from Ant</title>
		<link>http://cameronstokes.com/2009/12/12/using-svnversion-from-ant/</link>
		<comments>http://cameronstokes.com/2009/12/12/using-svnversion-from-ant/#comments</comments>
		<pubDate>Sat, 12 Dec 2009 15:35:10 +0000</pubDate>
		<dc:creator>Cameron Stokes</dc:creator>
		
		<category><![CDATA[software development]]></category>

		<category><![CDATA[technical]]></category>

		<category><![CDATA[Add new tag]]></category>

		<category><![CDATA[ant maven subversion]]></category>

		<category><![CDATA[code]]></category>

		<guid isPermaLink="false">http://cameronstokes.com/?p=869</guid>
		<description><![CDATA[At work we use a combination of Subversion (svn), Maven, and Ant to build and deploy our applications  and integrate the svn revision number into our deployment packages.  As an example, if we&#8217;re packaging our callcenter application our build scripts will create a callcenter-7175.jar package.  This makes it easy for us to upgrade and [...]]]></description>
			<content:encoded><![CDATA[<p>At work we use a combination of <em><a href="http://en.wikipedia.org/wiki/Subversion_%28software%29" onclick="javascript:pageTracker._trackPageview ('/outbound/en.wikipedia.org');">Subversion (svn)</a></em>, <em><a href="http://en.wikipedia.org/wiki/Apache_Maven" onclick="javascript:pageTracker._trackPageview ('/outbound/en.wikipedia.org');">Maven</a></em>, and <em><a href="http://en.wikipedia.org/wiki/Apache_Ant" onclick="javascript:pageTracker._trackPageview ('/outbound/en.wikipedia.org');">Ant</a></em> to build and deploy our applications  and integrate the <em>svn</em> revision number into our deployment packages.  As an example, if we&#8217;re packaging our <em>callcenter</em> application our build scripts will create a <em>callcenter-7175.jar</em> package.  This makes it easy for us to upgrade and rollback between versions as needed.</p>
<p>The   <em>svnversion</em> program makes it easy to get the revision number of your working copy by simply executing the program:</p>
<pre>macbookpro:rel-091105 stokesc$ svnversion
7175</pre>
<p>To use this from <em>Ant</em> we can use the <a href="http://ant.apache.org/manual/CoreTasks/exec.html" onclick="javascript:pageTracker._trackPageview ('/outbound/ant.apache.org');">exec</a> task.  The example below will execute <em>svnversion</em> and capture its output into the <em>Ant</em> property <em>repository.revision</em> which is used later on in our build script:</p>
<pre class="brush: xml">&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;
&lt;project name="Build Script" default="make" basedir="."&gt;

    &lt;target name="make"&gt;

        &lt;!-- Get current working directory. --&gt;
        &lt;exec executable="pwd" outputproperty="dir.root" /&gt;

        &lt;!-- Get subversion revision number. --&gt;
        &lt;exec executable="svnversion" outputproperty="repository.revision" /&gt;

        &lt;echo message="Repository revision is ${repository.revision}" /&gt;

    &lt;/target&gt;

&lt;/project&gt;</pre>
<p>This worked well for us for a few years but when we needed to build from an older branch the revision number wasn&#8217;t representative of the last revision in the branch.  Looking at the options for <em>svnversion</em> I found passing <em>-c</em> will return the revision number of the last change rather than the current revision which is what we really wanted.</p>
<pre>macbookpro:rel-091105 stokesc$ svnversion -c
1:6985</pre>
<p>You can see the difference in revision numbers from this command versus the one above, but this still isn&#8217;t perfect due to the starting revision number that&#8217;s been added.  A little change to our <em>Ant</em> script can strip this off for us.  Here we use the <a href="http://ant.apache.org/manual/CoreTypes/redirector.html" onclick="javascript:pageTracker._trackPageview ('/outbound/ant.apache.org');">redirector</a> and <a href="http://ant.apache.org/manual/CoreTypes/filterchain.html" onclick="javascript:pageTracker._trackPageview ('/outbound/ant.apache.org');">filterchain</a> types and a <a href="http://en.wikipedia.org/wiki/Regular_expression" onclick="javascript:pageTracker._trackPageview ('/outbound/en.wikipedia.org');">regular expression</a> to modify the output.</p>
<pre class="brush: xml">&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;
&lt;project name="Build Script" default="make" basedir="."&gt;

    &lt;target name="make"&gt;

        &lt;!-- Get current working directory. --&gt;
        &lt;exec executable="pwd" outputproperty="dir.root" /&gt;

        &lt;!-- Get subversion revision number. --&gt;
        &lt;exec executable="svnversion" outputproperty="repository.revision"&gt;
            &lt;!-- Specify '-c' to get last changed rather than current revisions. --&gt;
            &lt;arg value="-c" /&gt;
            &lt;!-- Use redirector/filterchain to parse output.
                 svnversion -c will return output in format [initial]:[current]
                 and we want to strip off [initial]: --&gt;
            &lt;redirector&gt;
                &lt;outputfilterchain&gt;
                    &lt;tokenfilter&gt;
                        &lt;replaceregex pattern="[0-9]+\:" replace="" /&gt;
                    &lt;/tokenfilter&gt;
                &lt;/outputfilterchain&gt;
            &lt;/redirector&gt;
        &lt;/exec&gt;

        &lt;echo message="Repository revision is ${repository.revision}" /&gt;

    &lt;/target&gt;

&lt;/project&gt;</pre>
<p>We&#8217;re now able to go back and package older versions of our application with a true indication of their <em>svn</em> revision.</p>
]]></content:encoded>
			<wfw:commentRss>http://cameronstokes.com/2009/12/12/using-svnversion-from-ant/feed/</wfw:commentRss>
		</item>
		<item>
		<title>A great beer week</title>
		<link>http://cameronstokes.com/2009/12/08/a-great-beer-week/</link>
		<comments>http://cameronstokes.com/2009/12/08/a-great-beer-week/#comments</comments>
		<pubDate>Wed, 09 Dec 2009 03:53:27 +0000</pubDate>
		<dc:creator>Cameron Stokes</dc:creator>
		
		<category><![CDATA[beer]]></category>

		<guid isPermaLink="false">http://cameronstokes.com/?p=863</guid>
		<description><![CDATA[This past week has been a great beer week.  Last Tuesday we had dinner at the Westside location 5 Seasons Brewing Company and enjoyed their beer sampler along with some great food.  Each of their beers was delicious, especially their IPA.  This was only the second time I&#8217;ve been to 5 Seasons; the first being [...]]]></description>
			<content:encoded><![CDATA[<p>This past week has been a great beer week.  Last Tuesday we had dinner at the Westside location <a href="http://www.5seasonsbrewing.com/" onclick="javascript:pageTracker._trackPageview ('/outbound/www.5seasonsbrewing.com');">5 Seasons Brewing Company</a> and enjoyed their beer sampler along with some great food.  Each of their beers was delicious, especially their IPA.  This was only the second time I&#8217;ve been to 5 Seasons; the first being at the Prado location where <span class="BodySubhead">Kevin McNerney brews, of <a href="http://en.wikipedia.org/wiki/Sweetwater_Brewing_Company" onclick="javascript:pageTracker._trackPageview ('/outbound/en.wikipedia.org');">Sweetwater</a> fame.</span></p>
<p><span class="BodySubhead">Last weekend we </span>made our way down to Tampa for the ACC Championship Game (go <a href="http://en.wikipedia.org/wiki/Georgia_Institute_of_Technology" onclick="javascript:pageTracker._trackPageview ('/outbound/en.wikipedia.org');">Tech</a>!) and made sure to take advantage of the beers available in Florida and Tampa specifically that we can&#8217;t get in Georgia.  Friday night, we grabbed dinner at the <a href="http://www.tampabaybrewingcompany.com/" onclick="javascript:pageTracker._trackPageview ('/outbound/www.tampabaybrewingcompany.com');">Tampa Bay Brewing Company</a> and had great beers and great food.  Again I got their beer sampler which included each of their year-round beers and a cask-conditioned Moosekiller Barleywine; all very delicious.  I highly recommend Tampa Bay Brewing Company; in addition to the beer and food, the service was excellent.  Before the game on Saturday we stopped by a Total Wine and stocked up on the infamous <a href="http://en.wikipedia.org/wiki/Dogfish_Head_Brewery" onclick="javascript:pageTracker._trackPageview ('/outbound/en.wikipedia.org');">Dogfish Head</a> 120 Minute IPA as well as Dogfish Head&#8217;s Shelter Pale Ale, Raison d&#8217;Extra, Fort, and Theobroma, <a href="http://www.cigarcitybeer.com/" onclick="javascript:pageTracker._trackPageview ('/outbound/www.cigarcitybeer.com');">Cigar City Brewing&#8217;s</a> General Zhukov&#8217;s Imperial Stout and Improvisacion Ale, and <a href="http://www.lazymagnolia.com/" onclick="javascript:pageTracker._trackPageview ('/outbound/www.lazymagnolia.com');">Lazy Magnolia&#8217;s</a> Southern Pecan and Indian Summer.  I&#8217;ve since tried a 120 Minute IPA but haven&#8217;t made it to the others yet.  I had to reorganize the beer fridge in order to fit everything.  Here&#8217;s the full score from Florida:</p>
<div id="attachment_861" class="wp-caption aligncenter" style="width: 490px"><img class="size-full wp-image-861" title="florida-beers" src="http://cameronstokes.com/wp-content/uploads/2009/12/florida-beers.jpg" alt="Score from Florida" width="480" height="360" /><p class="wp-caption-text">Score from Florida</p></div>
<p>Back in Georgia, <a href="http://en.wikipedia.org/wiki/Terrapin_Beer_Company" onclick="javascript:pageTracker._trackPageview ('/outbound/en.wikipedia.org');">Terrapin</a> has released their Hopsecutioner IPA.  I am a total hophead and this beer does not disappoint.  I&#8217;m actually quite proud of myself as this is the first beer I&#8217;ve successfully identified a hop in the beer by taste alone.  A couple weeks ago I had Rogue&#8217;s <a href="http://www.rogue.com/beers/yellow-snow-ipa.php" onclick="javascript:pageTracker._trackPageview ('/outbound/www.rogue.com');">Yellow Snow IPA</a> and remarked how different the hop profile was from a typical IPA.  I can taste the same hop in the Hopsecutioner: Amarillo.  I&#8217;ve yet to make a homebrew using this hop, but this has moved up the list on things to try.  I love the flavor of this hop.</p>
<p>If only more weeks could be like this&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://cameronstokes.com/2009/12/08/a-great-beer-week/feed/</wfw:commentRss>
		</item>
		<item>
		<title>New Project</title>
		<link>http://cameronstokes.com/2009/10/12/new-project/</link>
		<comments>http://cameronstokes.com/2009/10/12/new-project/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 03:56:07 +0000</pubDate>
		<dc:creator>Cameron Stokes</dc:creator>
		
		<category><![CDATA[project]]></category>

		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://cameronstokes.com/?p=841</guid>
		<description><![CDATA[I&#8217;ve started several development/technology projects over the past few years, none of which have made it to a launch or release.  Many of them were to learn new a new framework, a couple were things I thought I could turn into a full-blown product but for whatever reason didn&#8217;t.
In any case, I have a new [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve started several development/technology projects over the past few years, none of which have made it to a launch or release.  Many of them were to learn new a new framework, a couple were things I thought I could turn into a full-blown product but for whatever reason didn&#8217;t.</p>
<p>In any case, I have a new project I&#8217;ve been working on for the the past 2 weeks that I plan to see all the way through.  I think there&#8217;s a real need for a product like this and can see it having a pretty decent adoption.  Without giving away too many details here&#8217;s a tease:</p>
<p style="text-align: center;"><img class="size-full wp-image-843 aligncenter" title="new-project" src="http://cameronstokes.com/wp-content/uploads/2009/10/new-project.png" alt="New Project" width="480" height="363" /></p>
]]></content:encoded>
			<wfw:commentRss>http://cameronstokes.com/2009/10/12/new-project/feed/</wfw:commentRss>
		</item>
		<item>
		<title>What&#8217;s in a name?</title>
		<link>http://cameronstokes.com/2009/09/27/whats-in-a-name/</link>
		<comments>http://cameronstokes.com/2009/09/27/whats-in-a-name/#comments</comments>
		<pubDate>Sun, 27 Sep 2009 14:19:11 +0000</pubDate>
		<dc:creator>Cameron Stokes</dc:creator>
		
		<category><![CDATA[beer]]></category>

		<category><![CDATA[breweries]]></category>

		<guid isPermaLink="false">http://cameronstokes.com/?p=736</guid>
		<description><![CDATA[I&#8217;ve tried some delicious new beers recently and my list of favorite breweries has grown, specifically Stone Brewing Co., Duck Rabbit Craft Brewery, and New Belgium.  A recent post on Blogfish, the Dogfish Head blog, answered the question of where Dogfish Head conceived their name and since I&#8217;ve always been curious about some of the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve tried some delicious new beers recently and my list of favorite breweries has grown, specifically <a href="http://en.wikipedia.org/wiki/Stone_Brewing_Company" onclick="javascript:pageTracker._trackPageview ('/outbound/en.wikipedia.org');">Stone Brewing Co.</a>, <a href="http://en.wikipedia.org/wiki/Duck-Rabbit_Craft_Brewery" onclick="javascript:pageTracker._trackPageview ('/outbound/en.wikipedia.org');">Duck Rabbit Craft Brewery</a>, and <a href="http://en.wikipedia.org/wiki/New_Belgium_Brewing_Company" onclick="javascript:pageTracker._trackPageview ('/outbound/en.wikipedia.org');">New Belgium</a>.  A <a href="http://www.dogfish.com/community/blogfish/members/sam/vacation.htm" onclick="javascript:pageTracker._trackPageview ('/outbound/www.dogfish.com');">recent post on Blogfish</a>, the <a href="http://www.dogfish.com/" onclick="javascript:pageTracker._trackPageview ('/outbound/www.dogfish.com');">Dogfish Head</a> blog, answered the question of where Dogfish Head conceived their name and since I&#8217;ve always been curious about some of the other breweries and their names, I decided to do some research.  Here&#8217;s what I came up with:</p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Atlanta_Brewing_Company" onclick="javascript:pageTracker._trackPageview ('/outbound/en.wikipedia.org');">Atlanta Brewing Company</a> - Obvious&#8230;</li>
<li>Dogfish Head Craft Brewery - Named after the a cove behind founder Sam Calagione&#8217;s parents&#8217; home in Maine; suggested to Sam by his father. <a href="http://www.dogfish.com/community/blogfish/members/sam/vacation.htm" onclick="javascript:pageTracker._trackPageview ('/outbound/www.dogfish.com');">[1]</a></li>
<li>Duck-Rabbit Craft Brewery - Named after an illustration in <a href="http://en.wikipedia.org/wiki/Philosophical_Investigations" onclick="javascript:pageTracker._trackPageview ('/outbound/en.wikipedia.org');"><em>Philosophical Investigations</em></a> by <a href="http://en.wikipedia.org/wiki/Ludwig_Wittgenstein" onclick="javascript:pageTracker._trackPageview ('/outbound/en.wikipedia.org');">Ludwig Wittgenstein</a>, a throwback to head brewer Paul Philippon&#8217;s previous life as a philosophy teacher. <a href="http://www.duckrabbitbrewery.com/huh.html" onclick="javascript:pageTracker._trackPageview ('/outbound/www.duckrabbitbrewery.com');">[2]</a></li>
<li><a href="http://en.wikipedia.org/wiki/Flying_Dog_Brewery" onclick="javascript:pageTracker._trackPageview ('/outbound/en.wikipedia.org');">Flying Dog Brewery</a> - Named after a painting the founder, George                             Stranahan, saw in Pakistan while attempting to climb K2 in the Himalayas. <a href="http://www.flyingdogales.com/Legend-FlyingDogStory.aspx" onclick="javascript:pageTracker._trackPageview ('/outbound/www.flyingdogales.com');">[3]</a></li>
<li><a href="http://www.lefthandbrewing.com/" onclick="javascript:pageTracker._trackPageview ('/outbound/www.lefthandbrewing.com');">Left Hand Brewing Company</a> - Named after <a href="http://en.wikipedia.org/wiki/Chief_Niwot" onclick="javascript:pageTracker._trackPageview ('/outbound/en.wikipedia.org');">Chief Niwot</a>, a tribal leader of the Southern <a href="http://en.wikipedia.org/wiki/Arapaho" onclick="javascript:pageTracker._trackPageview ('/outbound/en.wikipedia.org');">Arapaho</a> people in Colorado; Niwot is the Arapaho word for left hand.</li>
<li>New Belgium Brewing Company - Presumably after head brewer Jeff Lebesch&#8217;s bike rides through Europe. <a href="http://www.newbelgium.com/our-story" onclick="javascript:pageTracker._trackPageview ('/outbound/www.newbelgium.com');">[4]</a></li>
<li>Stone Brewing Co. - A quick email to the brewery told me Stone was chosen  to elicit thoughts of &#8220;old school European architecture, strength, simplicity and craftsmanship&#8230;the opposite of the plastic and aluminum culture which (regrettably) dominates the beer drinking world of today.&#8221;</li>
<li><a href="http://en.wikipedia.org/wiki/Sweetwater_Brewing_Company" onclick="javascript:pageTracker._trackPageview ('/outbound/en.wikipedia.org');">Sweetwater Brewing Company</a> - Presumably named after <a href="http://en.wikipedia.org/wiki/Sweetwater_Creek_%28Chattahoochee_River%29" onclick="javascript:pageTracker._trackPageview ('/outbound/en.wikipedia.org');">Sweetwater Creek</a> in west Atlanta near their original brewery.</li>
<li><a href="http://en.wikipedia.org/wiki/Terrapin_Beer_Company" onclick="javascript:pageTracker._trackPageview ('/outbound/en.wikipedia.org');">Terrapin Beer Company</a> - Named after the <a href="http://en.wikipedia.org/wiki/Grateful_Dead" onclick="javascript:pageTracker._trackPageview ('/outbound/en.wikipedia.org');">Grateful Dead</a> album <a href="http://en.wikipedia.org/wiki/Terrapin_Station" onclick="javascript:pageTracker._trackPageview ('/outbound/en.wikipedia.org');">Terrapin Station</a>, a favorite of founders  <span class="external text">Brian &#8220;Spike&#8221; Buckowski</span> and <span class="external text">John Cochran. <a href="http://www.terrapinbeer.com/news/details/26/Terrapin-I-know-well-be-there-soon" onclick="javascript:pageTracker._trackPageview ('/outbound/www.terrapinbeer.com');">[5]</a></span></li>
</ul>
<p><span class="external text">This gets me thinking&#8230;if I were to start a brewery what would I name it?<br />
</span></p>
]]></content:encoded>
			<wfw:commentRss>http://cameronstokes.com/2009/09/27/whats-in-a-name/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Hop Growing is a Success</title>
		<link>http://cameronstokes.com/2009/08/24/hop-growing-is-a-success/</link>
		<comments>http://cameronstokes.com/2009/08/24/hop-growing-is-a-success/#comments</comments>
		<pubDate>Tue, 25 Aug 2009 02:55:07 +0000</pubDate>
		<dc:creator>Cameron Stokes</dc:creator>
		
		<category><![CDATA[hops]]></category>

		<guid isPermaLink="false">http://cameronstokes.com/?p=752</guid>
		<description><![CDATA[Since planting the hops back in March we&#8217;ve made numerous trips to Bogart to water, trim, and just overall tend to the hops.  A few of the rhizomes didn&#8217;t make it but of the 23 vines, we ended up with about 18 that took off and have been growing like crazy ever since.
Based on my [...]]]></description>
			<content:encoded><![CDATA[<p>Since planting the hops <a href="http://cameronstokes.com/2009/03/10/bogart-georgia-hop-farm/">back in March</a> we&#8217;ve made numerous trips to Bogart to water, trim, and just overall tend to the hops.  A few of the rhizomes didn&#8217;t make it but of the 23 vines, we ended up with about 18 that took off and have been growing like crazy ever since.</p>
<div id="attachment_786" class="wp-caption aligncenter" style="width: 490px"><img class="size-full wp-image-786" title="hop-cones" src="http://cameronstokes.com/wp-content/uploads/2009/08/hop-cones.jpg" alt="Hop Cones" width="480" height="321" /><p class="wp-caption-text">Hop Cones</p></div>
<p>Based on my research I wasn&#8217;t expecting the plants to actually produce any hops given they&#8217;re in their first year but I&#8217;ve been pleasantly surprised by what they&#8217;ve produced.  Since early July we&#8217;ve had 4 pickings and have over 6 ounces of Cascade and Chinook hops vacuum-packed in the freeze.</p>
<div id="attachment_787" class="wp-caption aligncenter" style="width: 490px"><img class="size-full wp-image-787" title="hops-drying" src="http://cameronstokes.com/wp-content/uploads/2009/08/hops-drying.jpg" alt="Hops Drying" width="480" height="321" /><p class="wp-caption-text">Getting ready to dry.</p></div>
<p>The best part of growing hops is the smell&#8230;they smell incredible.  Being a hop head I can&#8217;t get enough of the smell and dunked my head into our picking bag several times.  Breaking a hop cone open you can see the lovely lupulin glands and imagine the wonderful beer they will produce.</p>
<p>I&#8217;m already thinking to next year about what new varieties to plant and how to expand the hop farm.  All those goes to show you really can grow hops in Georgia.</p>
<p>More photos of the harvest are <a href="http://cameronstokes.com/gallery/hop-harvest-july-2009/">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://cameronstokes.com/2009/08/24/hop-growing-is-a-success/feed/</wfw:commentRss>
		</item>
		<item>
		<title>MySQL Backup Script</title>
		<link>http://cameronstokes.com/2009/08/10/mysql-backup-script/</link>
		<comments>http://cameronstokes.com/2009/08/10/mysql-backup-script/#comments</comments>
		<pubDate>Tue, 11 Aug 2009 03:00:38 +0000</pubDate>
		<dc:creator>Cameron Stokes</dc:creator>
		
		<category><![CDATA[lab]]></category>

		<category><![CDATA[script]]></category>

		<guid isPermaLink="false">http://cameronstokes.com/?p=772</guid>
		<description><![CDATA[I&#8217;ve posted a MySQL backup script to the lab for anyone that is interested.  The script will backup all MySQL databases and allows you to configure the filename and path for backups and how long to keep older backups in number of days.  I have mine set to run via cron every night at midnight [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve posted a <a href="http://en.wikipedia.org/wiki/Mysql" onclick="javascript:pageTracker._trackPageview ('/outbound/en.wikipedia.org');">MySQL</a> backup script to the <a href="http://cameronstokes.com/lab/">lab</a> for anyone that is interested.  The script will backup all MySQL databases and allows you to configure the filename and path for backups and how long to keep older backups in number of days.  I have mine set to run via <a href="http://en.wikipedia.org/wiki/Cron" onclick="javascript:pageTracker._trackPageview ('/outbound/en.wikipedia.org');">cron</a> every night at midnight and to retain 31 days of files so that I can revert to any day within the past month should anything happen.</p>
<p>It&#8217;s a simple script but it gets the job done.  Hope you find it helpful.  You can find the script <a href="http://lab.cameronstokes.com/bash/mysql-backup/">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://cameronstokes.com/2009/08/10/mysql-backup-script/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
