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

<channel>
	<title>Kris Neuharth's Blog</title>
	<atom:link href="http://www.krisneuharth.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.krisneuharth.com</link>
	<description>musings, code, and adventure</description>
	<pubDate>Mon, 08 Sep 2008 20:05:00 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Meet Lucy</title>
		<link>http://www.krisneuharth.com/2008/09/06/meet-lucy/</link>
		<comments>http://www.krisneuharth.com/2008/09/06/meet-lucy/#comments</comments>
		<pubDate>Sun, 07 Sep 2008 00:00:52 +0000</pubDate>
		<dc:creator>Kris Neuharth</dc:creator>
		
		<category><![CDATA[dog]]></category>

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

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

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

		<guid isPermaLink="false">http://www.krisneuharth.com/?p=21</guid>
		<description><![CDATA[This post is a little late, but getting a new puppy is a big undertaking and I have not had the time to post pictures of her yet except to Flickr.
Two weeks ago we decided that now is a good time to rescue a dog because Christine is not yet working and has time to [...]]]></description>
			<content:encoded><![CDATA[<p>This post is a little late, but getting a new puppy is a big undertaking and I have not had the time to post pictures of her yet except to Flickr.</p>
<p>Two weeks ago we decided that now is a good time to rescue a dog because Christine is not yet working and has time to help out. We initially went to a shelter looking for a lab puppy that was advertised on their website but instead we fell in love with this face:</p>
<p><img class="aligncenter" src="http://farm4.static.flickr.com/3102/2803068571_55b5c5270e.jpg" alt="Lucy and Christine" /></p>
<p>She is a yellow Labrador Retriever mix of some sort and approximately 6 months old and 35 pounds. She was perfect! We were told that we would be second on the waiting list for her and to come the very next day at 10am and if the other family wasn&#8217;t there on time, that she would be ours. We came back the next day and she was ours, but we had to wait a few days for her to get spayed and checked out by the vet. We spent the rest of the weekend running around town buying things we would need for the new member of the family.</p>
<p><img class="aligncenter" src="http://farm4.static.flickr.com/3153/2824322946_2b1af8de44.jpg" alt="Lucy in her bed" /></p>
<p>We nervously waited the next few days until we could go pick her up and bring her home with us. With such a sweet face and mellow disposition, we decided to call her Lucy since we didn&#8217;t know her first name. When we brought her home the first night, we slept on the floor with her in the living room since the crate we bought for her wasn&#8217;t quite big enough. After the first day she did not seem like she was feeling too well and began to exhibit some strange behaviors, namely deep sleeping and shallow breathing, and a terrible runny nose and cough. We took her to an emergency vet and they told us that we was running a high fever and had a sinus infection, pneumonia, and possible complications with her spay surgery. Yikes!</p>
<p><img class="aligncenter" src="http://farm4.static.flickr.com/3014/2803916002_188c56581e.jpg" alt="Lucy and Christine on a walk" /></p>
<p>They admitted her to the animal hospital and kept her for the Labor Day weekend and put her on an IV for antibiotics to help with her infections. She came home Tuesday evening and looked a lot better but still had the runny nose, but a much wagglier tail. She has been a pretty good dog so far, she loves her new people and has learned a lot already. We think that she has had some training because she is housebroken and understands some basic commands. She hates her new, larger crate and cries and barks when we put her in it for the night. She is still adjusting to being home we think and has some separation anxiety when she is left alone.</p>
<p><img class="aligncenter" src="http://farm4.static.flickr.com/3187/2803916078_867989e749.jpg" alt="Me and Lucy" /></p>
<p>She is learning how to play with her various toys, it seems like her previous owner did not play with her much at all. She is learning how to be a Labrador and is catching on to playing fetch and tug-o-war nicely. Soon we hope to be able to work up to frisbee.</p>
<p><img class="aligncenter" src="http://farm4.static.flickr.com/3040/2824322874_e1c4ce827b.jpg" alt="Lucy gnawing on her bone" /></p>
<p>We are very excited about having her in the family and we hope you can all meet her &#8220;in the fur&#8221; sometime soon!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.krisneuharth.com/2008/09/06/meet-lucy/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Trappist Westvleteren 8</title>
		<link>http://www.krisneuharth.com/2008/07/13/trappist-westvleteren-8/</link>
		<comments>http://www.krisneuharth.com/2008/07/13/trappist-westvleteren-8/#comments</comments>
		<pubDate>Mon, 14 Jul 2008 01:44:24 +0000</pubDate>
		<dc:creator>Kris Neuharth</dc:creator>
		
		<category><![CDATA[beer]]></category>

		<guid isPermaLink="false">http://www.krisneuharth.com/?p=20</guid>
		<description><![CDATA[
I have to give a huge shout out to my friend The Hooch for hooking this beer snob up with what could possibly be the best beer I have ever had. While on a recent jaunt across Europe in his European Pickup Volvo, he found his way into Belgium where he picked up a case [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter" src="http://farm4.static.flickr.com/3042/2665580653_509331a287.jpg" alt="Trappist Westvleteren Beers" /></p>
<p>I have to give a huge shout out to my friend The Hooch for hooking this beer snob up with what could possibly be the best beer I have ever had. While on a recent jaunt across Europe in his European Pickup Volvo, he found his way into Belgium where he picked up a case of the famous <a title="Beer Advocate Review" href="http://beeradvocate.com/beer/profile/313/857" target="_blank">Trappist Westvleteren 8</a> beer direct from the <a title="www.sintsixtus.be" href="http://www.sintsixtus.be/eng/home.htm" target="_blank">abbey</a> itself and smuggled it back home and thought it (foolishly) appropriate to share.</p>
<p>The beer itself comes in an unassuming unlabeled brown bottle with only the signature blue cap as the sole indicator that what you are about to consume is special. It pours thick, I had to wipe a little yeast residue off the lip of the bottle before pouring, with a nutty, malty, and slightly spicy aroma. Its complexity is what interested me most about this beer. A lot of Belgians tend to have a very strong alcohol taste and a lightness about them. This particular gem tends toward a very smooth and mellow flavor that only develops as it warms a little in the glass. Its mouth feel is very smooth and almost creamy, coating the palate with its goodness at every sip.</p>
<p>Also impressive about the beer is the process required to get it. From this site:</p>
<blockquote><p>The Westvleteren &#8220;<a href="http://www.sintsixtus.be/eng/woorden.html#trappist" target="_blank">Trappist</a>&#8221;                    is exclusively sold in the abbey. The &#8216;Trappist Westvleteren&#8217;                    can from now on only be purchased after reservation (+32 (0)70/21.00.45).                  <a name="biertelefoon"></a></p>
<p>How to make reservations?</p>
<ol>
<li>You call the beer phone (+32 (0)70/21.00.45) to know when, how                  much and which beer can be reserved at that time or click <a href="http://www.sintsixtus.be/eng/brouwerijactueel.htm" target="_blank">here</a>.</li>
<li>You call back at the indicated time.</li>
<li>You make an appointment with the operator (date and time) and                  you give the licence plate number of the car that will collect                  the order.</li>
</ol>
<p>The beer is always sold per kind and in limited quantities. Since                we would like to reach as many customers as possible, orders will                henceforth be limited to one order per customer per month.</p>
<p>Please consider the fact that our telephone lines can have very                long queues and that you can therefore get the busy tone. The use                of anonymous numbers is not longer possible. We would like to thank                you in advance for your understanding and your patience.</p></blockquote>
<p>The best things in life ought to be hard to get. While considering a career change to become a Trappist Monk I perused the abbey site some and ran across this daily schedule:</p>
<blockquote><p>The monk is continually called. Whatever he is busy with, he is reminded on fixed times that he is not in the monastery to be absolutely absorbed in his daily work, but in order to devote himself to God. He is expected in church seven times:</p>
<ul>
<li>3.30: vigils</li>
<li>7.00: lauds</li>
<li>8.30: terce and mass(*)</li>
<li>12.15: sext</li>
<li>14.15: none</li>
<li>17.15: vespers(*)</li>
<li>19.30: compline</li>
</ul>
<p>This may seem a hard programme for an outsider, but this fixed pattern is an aid for the monk in his search for God.</p></blockquote>
<p>While extreme by most standards, it would be a small price to pay for the privilege of enjoying this delicacy on a regular basis. While apparently closed for the next several years for renovations, the <a title="Guest House" href="http://www.sintsixtus.be/eng/gastenhuis.htm" target="_blank">Guest House</a> option of living with the monks would be awesome. The prospect of no computer, good food, good beer, and simplicity is wildly appealing in this hectic life I have going lately.</p>
<p>I am usually a glass is half empty kind of guy anyways, but in this case, the glass is definitely empty and I am left to ponder life and yearn for another bottle.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.krisneuharth.com/2008/07/13/trappist-westvleteren-8/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Wubi and Ubuntu For Me</title>
		<link>http://www.krisneuharth.com/2008/07/12/wubi-and-ubuntu-for-me/</link>
		<comments>http://www.krisneuharth.com/2008/07/12/wubi-and-ubuntu-for-me/#comments</comments>
		<pubDate>Sat, 12 Jul 2008 04:20:06 +0000</pubDate>
		<dc:creator>Kris Neuharth</dc:creator>
		
		<category><![CDATA[java]]></category>

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

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

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

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

		<guid isPermaLink="false">http://www.krisneuharth.com/?p=19</guid>
		<description><![CDATA[
For a project at work we have the requirement to make one of our Java programs run on Ubuntu Linux and sure enough we didn&#8217;t have a box setup for that. I was tasked with doing this setup on one of our monster server machines. I have had something of a mixed relationship with Linux [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone" src="http://wubi-installer.org/images/wubi_logo.gif" alt="Wubi Installer" /></p>
<p>For a project at work we have the requirement to make one of our Java programs run on <a title="Official Ubuntu Site" href="http://www.ubuntu.com/" target="_blank">Ubuntu Linux</a> and sure enough we didn&#8217;t have a box setup for that. I was tasked with doing this setup on one of our monster server machines. I have had something of a mixed relationship with Linux over the years so I was not terribly excited about this. The list is long and distinguished and recalling it makes me even feel a little dated: Red Hat (now Fedora), Mandrake (now Mandriva), Slackware (still Slackware)&#8230; I always considered myself lucky if I got through an install without fouling up my hard disk boot sectors, getting the dual boot right with Windows, configuring X, getting video and network drivers to work correctly, etc. This isn&#8217;t a unique story and has long been the bane of mainstream Linux adoption by the masses.</p>
<p>As the years went on, and installers became more automated and friendly, things got better but I haven&#8217;t really had the time or patience in recent years to care. The new kid on the scene, Ubuntu Linux, has set out to change all of this. I first tried it out from a live CD distribution I picked up at Chicago BARcamp last summer and thought it was neat but didn&#8217;t want to go through the hassle of partitioning my laptop.</p>
<p>So back to my task&#8230; I wasn&#8217;t thrilled for about 5 seconds because I remembered that I ran across this new thing called <a title="Wubi Installer" href="http://wubi-installer.org/" target="_blank">Wubi</a> on <a title="Reddit Articles" href="http://www.reddit.com/search?q=wubi&amp;x=0&amp;y=0" target="_blank">Reddit</a> recently. Its site claims:</p>
<blockquote><p>&#8220;Wubi is an officially supported Ubuntu installer for Windows users that can bring you to the Linux world with a single click. Wubi allows you to install and uninstall Ubuntu as any other Windows application, in a simple and safe way. Are you curious about Linux and Ubuntu? Trying them out has never been easier!&#8221;</p></blockquote>
<p>It sounded too good to be true! I promptly downloaded the meager installer and away it went. I was skeptical that this was going to work and through each step of the install process I expected something to go wrong&#8230; 64-bit architecture incompatibilities, server hardware and video card driver conflicts, something&#8230; but alas it never did. After downloading all of the install, a reboot brought me to the dual-boot screen and I found myself whisked away into Linux land. Everything worked the first time, right out of the box - I was stunned.</p>
<p>It is no secret why Ubuntu calls its default theme &#8220;Human&#8221; - everything about the OS is down right human friendly. This is leaps and bounds beyond the usual paradigm of &#8220;developed by programmers for programmers.&#8221; My non-programmer albeit geek friend Matt didn&#8217;t believe my tale about a painless Linux install and promptly found out for himself how easy it was. He played with it for the afternoon and uninstalled it through the Windows Add/Remove Programs dialog without a hitch, just as promised.</p>
<p>In summary: Wubi is awesome for enabling people to get introduced to Linux in a low-risk, painless way and Ubuntu is awesome for being the Linux experience everyone has always dreamed of.</p>
<p>Ubuntu is definitely going on my laptop just as soon as I finally get a new hard drive for it, I&#8217;m a little cramped on space at the moment.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.krisneuharth.com/2008/07/12/wubi-and-ubuntu-for-me/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Null and Neutral</title>
		<link>http://www.krisneuharth.com/2008/07/01/null-and-neutral/</link>
		<comments>http://www.krisneuharth.com/2008/07/01/null-and-neutral/#comments</comments>
		<pubDate>Wed, 02 Jul 2008 01:05:22 +0000</pubDate>
		<dc:creator>Kris Neuharth</dc:creator>
		
		<category><![CDATA[programming]]></category>

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

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

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

		<guid isPermaLink="false">http://www.krisneuharth.com/?p=18</guid>
		<description><![CDATA[
What&#8217;s next? Void and placated? Who uses Myspace anymore anyways? I am actually surprised I still even have an account after long ago moving on to the improved user experience and generally more adult crowd at Facebook. At first I resisted, and my good friend Lauren made me an account while taking over my office [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter" src="http://farm4.static.flickr.com/3262/2629804522_bab4e19ee9_o.png" alt="Kris: Null and Neutral" /></p>
<p>What&#8217;s next? Void and placated? Who uses Myspace anymore anyways? I am actually surprised I still even have an account after long ago moving on to the improved user experience and generally more adult crowd at Facebook. At first I resisted, and my good friend Lauren made me an account while taking over my office during her intern summer at one of the companies I worked at in San Diego. The account sat idle for a long time before somehow I rediscovered it and have never looked back.</p>
<p>This is not a dramatic cry for help requiring a peer intervention, but I have become terribly addicted to <a title="Scrabulous" href="http://www.scrabulous.com/" target="_blank">Scrabulous</a>. However, if someone makes a <a title="Tetris" href="http://en.wikipedia.org/wiki/Tetris" target="_blank">Tetris</a> Facebook application, we may have something new to talk about&#8230; We shall cross that blocky-bridge if and when we get to it.</p>
<p>I still find Myspace marginally useful for listening to new bands and tracking down shows. This is the one thing they got right. Beyond that, I deem it worthless. Especially detestable is the latest version they recently released which only injected more crap into an already abyssmal layout and also therein lies the bug which makes me all cold and null on the inside.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.krisneuharth.com/2008/07/01/null-and-neutral/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The Scoop</title>
		<link>http://www.krisneuharth.com/2008/06/30/the-scoop/</link>
		<comments>http://www.krisneuharth.com/2008/06/30/the-scoop/#comments</comments>
		<pubDate>Mon, 30 Jun 2008 04:31:18 +0000</pubDate>
		<dc:creator>Kris Neuharth</dc:creator>
		
		<category><![CDATA[news]]></category>

		<guid isPermaLink="false">http://www.krisneuharth.com/?p=17</guid>
		<description><![CDATA[The few of you that actually check up on me from time to time may have noticed that I have been absent in posting lately. I would love that be able to say that this is because I have had better things to do than endulge in this narcissistic undertaking. This is of course not [...]]]></description>
			<content:encoded><![CDATA[<p>The few of you that actually check up on me from time to time may have noticed that I have been absent in posting lately. I would love that be able to say that this is because I have had better things to do than endulge in this narcissistic undertaking. This is of course not the case. While it is true that I&#8217;ve been busy with other things like wedding planning, the day job, enjoying summer, and redoing the entire blog setup because of shoddy hosting, all the while I have been yearning to post something. Now with a new host, new setup, and a case of boredom this summer, expect the unexpected.</p>
<p>I can now in good faith announce officially that Christine and I are moving back to California in August putting an end to our stint in the great state of Michigan. She will take the California Bar exam in July and start work in September and it is looking like I will be remaining employed at my current job working remotely. Very exciting times, especially since our wedding is two months away and we can also put an end to this engaged business and get onto the real deal. This has already been a very busy year but now it really kicks into high gear as we proceed to relocate all of our stuff across the country again, move into the new place in Irvine, get settled back into the California lifestyle, put the finishing touches on the wedding, get married, go on a mini-honeymoon to the wine country, finish up plans for the real honeymoon trip to Argentina, holidays, Argentina&#8230; You get the point. We are already starting to fill up weekends next year. What an exciting time with no end in sight!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.krisneuharth.com/2008/06/30/the-scoop/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Finding Combinations Using Java</title>
		<link>http://www.krisneuharth.com/2008/01/13/java-combinations/</link>
		<comments>http://www.krisneuharth.com/2008/01/13/java-combinations/#comments</comments>
		<pubDate>Sun, 13 Jan 2008 14:04:19 +0000</pubDate>
		<dc:creator>Kris Neuharth</dc:creator>
		
		<category><![CDATA[java]]></category>

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

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

		<guid isPermaLink="false">http://www.krisneuharth.com/?p=14</guid>
		<description><![CDATA[For a recent project at work I needed to generate all of the possible combinations of config parameters to be used in a parameter sweeping tool. We are using this tool to tune our software. When I first wrote the tool, the number of parameters was not changing so I could use the standard nested [...]]]></description>
			<content:encoded><![CDATA[<p>For a recent project at work I needed to generate all of the possible combinations of config parameters to be used in a parameter sweeping tool. We are using this tool to tune our software. When I first wrote the tool, the number of parameters was not changing so I could use the standard nested for-loop approach to iterate through all the lists of sweepable parameters and obtain all of the possible combinations easily.</p>
<p>In an effort to make the tool more flexible I needed to find a more dynamic way to iterate through all of the lists without the hard coded for-loops. I made some effort on my own but couldn&#8217;t produce the desired results fast enough. This seemed like a common enough problem that someone in the Java community may have already solved and published a solution for. Countless Google searches turned up only posts to development forums seeking the same answer I was.</p>
<p>Since I have been experimenting with Python off and on for the last year I decided to broaden my search to include the Python community. I quickly came across this <a href="http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/84739"> example. </a> The original author and commenters on that article present several approaches that leverage Python&#8217;s functional programming features which Java is begrudgedly unable to replicate. There was an example that looked like it could be ported to meet my needs because it was more straight forward and didn&#8217;t make use of Python&#8217;s bells and whistles.</p>
<p>Python code:</p>
<pre name="code" class="python">#!/usr/bin/env python

#Title: N-dimensional loop iterator
#Submitter: Philip Nunez
#Last Updated: 2001/11/01

#Description:
#Do nested for loops on an arbitrary list of iterable things.
#Found at: http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/84739
class nloop:
    def __init__(self,*varg):
        self.list = list(varg)
        self.iter_list = []

        self.memo = [None] * len(self.list)
        if len(self.list):
            self.n_iter(0, self.list)

    def __getitem__(self,index):
        return self.iter_list[index]

    def n_iter(self,index,stack):
        x = stack[index]
        for i in x:
            self.memo[index] = i
            if index == len(stack) - 1:
                self.iter_list.append(tuple(self.memo))
            else:
                self.n_iter(index + 1, stack)

if __name__ == &#8216;__main__&#8217;:
    for tup in nloop(list(&#8221;abc&#8221;),
                     list(range(1,5)),
                     list(&#8221;def&#8221;),
                     list(range(5,10)),
                     list(&#8221;xyz&#8221;)):
        print tup</pre>
<p>While Java doesn&#8217;t natively support the Python tuple data type, it looked easy enough to port to Java and begin using in my application. Without much trouble I was able to get a version working in Java that accomplished exactly what I needed to. I wrote it in a very generic way that attempted to mimic the Python code as closely as possible.</p>
<p>It is important to mention that I was generating the combinations from lists containing only strings. In order to use this code with other data types more work will probably need to be done. This code is obviously not the best and uses untyped collections but it was good enough for me for this particular tool.</p>
<p>Java code:</p>
<pre name="code" class="java">package com.krisneuharth.examples;

import java.util.ArrayList;
import java.util.List;

@SuppressWarnings("unchecked")

// Author: Kris Neuharth
// Ported directly from Python source found at:
// http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/84739
// Tried to keep it as close to the original and generic as possible
public class LoopIterator
{
	// Initialize generic lists
	List list;
	List iter_list;
	List memo;

	// Constructor
	public LoopIterator(List lol)
	{
		// Initialize lists
		this.list = lol;
		this.iter_list = new ArrayList();

		// Find number of expected values
		int expected = 1;
		for(Object list : this.list)
			expected *= ((List)list).size();

		// Test
		if(false)
		{
			System.out.println("\n-- Loop Iterator --");
			System.out.println("Size: " + this.list.size());
			System.out.println("Contents: " + this.list.toString());
			System.out.println("Expected Combinations: " + expected + "\n");
		}

		// Create buffer as big as list of lists, init elements to null
		this.memo = new ArrayList();
		for(int ii = 0; ii &lt; this.list.size(); ii++)
			this.memo.add(ii, null);

		// If the list of lists has more than one list,
		// process it
		if(this.list.size() &gt; 0)
			n_iter(0, this.list);
	}

	// Recursive method to generate combinations from all lists
	public void n_iter(int index, List&gt; stack)
	{
		List x = stack.get(index);

		for(String i : x)
		{
			this.memo.set(index, i);
			if(index == stack.size() - 1)
				this.iter_list.add(new ArrayList(this.memo));
			else
				this.n_iter(index + 1, stack);
		}
	}

	// Utility method to display the combinations
	public void display()
	{
		int ii = 1;
		for(Object str : this.iter_list)
		{
			System.out.println((ii++) + "\t" +  str.toString());
		}
	}

        // Utility method to get the list of combinations for further
	// processing
	public List getCombinations()
	{
		return this.iter_list;
	}

	// Driver
	public static void main(String[] args)
	{
		// Create data
		List list1 = new ArrayList();
		list1.add(&#8221;a&#8221;);
		list1.add(&#8221;b&#8221;);
		list1.add(&#8221;c&#8221;);

		List list2 = new ArrayList();
		list2.add(&#8221;1&#8243;);
		list2.add(&#8221;2&#8243;);
		list2.add(&#8221;3&#8243;);

		List list3 = new ArrayList();
		list3.add(&#8221;w&#8221;);
		list3.add(&#8221;x&#8221;);
		list3.add(&#8221;y&#8221;);

		List list4 = new ArrayList();
		list4.add(&#8221;4&#8243;);
		list4.add(&#8221;5&#8243;);
		list4.add(&#8221;6&#8243;);

		// Create list of lists
		List lol = new ArrayList();
		lol.add(list1);
		lol.add(list2);
		lol.add(list3);
		lol.add(list4);

		// Create loop iterator
		LoopIterator li = new LoopIterator(lol);

		// Display results
		for(Object obj : li.getCombinations())
		{
			for(Object oj : (ArrayList)obj)
				System.out.print(oj + &#8221; &#8220;);
			System.out.println();
		}
	}
}</pre>
<p>I hope this was helpful to anyone else looking for a way to do this.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.krisneuharth.com/2008/01/13/java-combinations/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Bat Country</title>
		<link>http://www.krisneuharth.com/2007/11/11/bat-country/</link>
		<comments>http://www.krisneuharth.com/2007/11/11/bat-country/#comments</comments>
		<pubDate>Sun, 11 Nov 2007 15:22:21 +0000</pubDate>
		<dc:creator>Kris Neuharth</dc:creator>
		
		<category><![CDATA[pictures]]></category>

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

		<guid isPermaLink="false">http://www.krisneuharth.com/?p=13</guid>
		<description><![CDATA[

Halloween came and went in a flash of rabbit ears and gonzo. Check out the Flickr photoset for all of the action:
Halloween 2007
]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="alignnone aligncenter" src="http://farm3.static.flickr.com/2102/1927043891_69c72cb03f.jpg?v=0" alt="Dr. Gonzo and Ms. Rabbit" /></p>
<p style="text-align: center;"><img class="alignnone aligncenter" src="http://farm3.static.flickr.com/2174/1927873402_8097e1e3b4.jpg?v=0" alt="Dr. Gonzo" /></p>
<p>Halloween came and went in a flash of rabbit ears and gonzo. Check out the Flickr photoset for all of the action:</p>
<p><a href="http://www.flickr.com/photos/krisneuharth/sets/72157603027020381/">Halloween 2007</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.krisneuharth.com/2007/11/11/bat-country/feed/</wfw:commentRss>
		</item>
		<item>
		<title>BARcamp Chicago 2007</title>
		<link>http://www.krisneuharth.com/2007/06/28/barcamp-chicago-2007/</link>
		<comments>http://www.krisneuharth.com/2007/06/28/barcamp-chicago-2007/#comments</comments>
		<pubDate>Thu, 28 Jun 2007 05:04:28 +0000</pubDate>
		<dc:creator>Kris Neuharth</dc:creator>
		
		<category><![CDATA[programming]]></category>

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

		<guid isPermaLink="false">http://www.krisneuharth.com/?p=15</guid>
		<description><![CDATA[So I&#8217;ve only just today recovered enough to write about all that went on this past weekend. After a rough Thursday and Friday, fresh from my flight from New Jersey I decided to stick to the plan and take the train down to Chicago for my first BARcamp.
For those not in the know, BARcamp is:
A [...]]]></description>
			<content:encoded><![CDATA[<p>So I&#8217;ve only just today recovered enough to write about all that went on this past weekend. After a rough Thursday and Friday, fresh from my flight from New Jersey I decided to stick to the plan and take the train down to Chicago for my first BARcamp.</p>
<p>For those not in the know, <a href="http://barcamp.org/">BARcamp</a> is:</p>
<blockquote><p>A BARcamp is an ad-hoc gathering born from the desire for people to share and learn in an open environment. It is an intense event with discussions, demos, and interaction from participants. The name BARcamp was inspired as a complement to FOOcamp, a private tech gathering run by Tim OReilly.</p></blockquote>
<p>What it amounts to is all the free beer, Mountain Dew, Red Bull, and pizza I could consume for two days straight. Don&#8217;t worry, I pitched in too.</p>
<p>Let&#8217;s begin in the beginning and end in the end&#8230; I hopped on the train at 8am across the street at the Amtrak station and rode pleasantly on over to the Central time zone. I have to take this opportunity to mention that the train is far superior to any plane, they have bigger seats and power outlets. Wow. I was able to re-learn Javascript before we de-trained in Union Station.</p>
<p>So it goes without reason that I didn&#8217;t do much logistical planning before leaving for a city I&#8217;ve only been to once. I assumed that since Chicago has trains for public transit that they would all leave from Union Station in the Loop. Nope. After waiting in line for what I thought was the right train ticket I was politely told to go outside and walk a few blocks.</p>
<p>I walked outside and realized that the ticket person wasn&#8217;t clear which way South was. I found a city map and tried to get oriented when I was approached by a friendly local bum. He asked me where I was going so I said &#8220;Blue Line.&#8221; He told me that it was real easy, just to walk straight down the road I was on and I&#8217;d run right into it. I was jazzed with directions and gave him a few bucks and set about on my hike.</p>
<p>More on this &#8220;planning&#8221; thing&#8230; I was wearing shorts and sandals. It was cold and raining. Sub-optimal attire.</p>
<p>After walking a few blocks I realized that I had gotten some &#8220;bum directions&#8221; after having crossed the 94 highway. I asked another guy totally decked out in Cubs regalia on the corner where the Blue Line train station was. It may be important to note that I was rocking my Padres hat and that they trounced the Cubs last weekend, and to make matters worse, there was a bench clearing brawl over a stray pitch.</p>
<p>It was at this point that I realized I&#8217;d better play this cool, lest I arouse contempt in this man&#8217;s baseball-loving, possibly grudge-holding heart. He directed me &#8220;left for a few blocks&#8221; which I followed into Greek town. Very nice.</p>
<p style="text-align: center;"><img class="alignnone aligncenter" src="http://farm4.static.flickr.com/3194/2578038397_4ca35a37c5_o.jpg" alt="Padres Hat" /></p>
<p>I finally came across a train station and felt relieved. I knew my stop was Damen but I wasn&#8217;t clear as to what direction that was. I can&#8217;t say that the map was the best but it&#8217;s probably more that I am very unfamiliar with mass public transit. A train arrived and I got on and sat down. All of a sudden I felt this wave of uncertainty wash over me and I stepped of, based on the map the train was headed in the wrong direction.</p>
<p>So I waited for the next train going the other way, got on and realized that the first train was actually what I wanted because it goes around the Loop and doesn&#8217;t just end there as the narrowing lines in the Loop vicinity would lead you to believe. Much time passed whilst awaiting my next train and taking in a bit of the urban culture.</p>
<p>I got on the train upon arrival and things were going well until for no explained reason the train stopped in the subway portion of my ride - for nearly 20 minutes. It was humid as could be on the already packed train full of sweaty, foul smelling people out and about for the day. At this point it became clear that I could never live in a big city that depended on mass transit like Chicago does, I lack the patience.</p>
<p>My stop came and I wandered around the Wicker Park area until I found my final destination. While ringing the doorbell to be let in, I was yelled at by a man in a cab who called me over to help him carry bagels and supplies for BARcamp. I promptly helped him with all of that and realized the true spirit of the event: totally community participation and commitment. This is the word made flesh of the Free / Open Source software movement, geek culture, and all the things I read about daily on Slashdot and Reddit. A true sense of belonging and that what I was a part of that weekend, and any other day, was important and exciting. All that from bagels, remarkable.</p>
<p>I got the lay of the land in this abandoned loft office building and plopped my stuff down, grabbed my computer and mingled around. I saw a version of the <a href="http://en.wikipedia.org/wiki/OLPC">One Laptop Per Child</a> machine which is a really cool project. Everyone who gathered around to hear the guy talk about it kept asking when they can buy one. Once released to the world I&#8217;m sure we will see all kinds of crazy applications of the machine for those of us not starving in a Third World country.</p>
<p>I spent all afternoon listening to presentations and wandering around to the various small meetings going on and taking in the culture. It&#8217;s not often I get to so deeply immerse myself with my own people. Work comes nowhere close.</p>
<p>The beer was free, courtesy of recent Google acquisition <a href="http://www.feedburner.com/fb/a/home">FeedBurner</a>. Thanks guys! The beer was also very good with several kegs and a kiddie pool full of really good top-shelf micro-brews. My favorites were the <a href="http://www.shmaltz.com/">Hebrew</a> and the <a href="http://www.flyingdogales.com/">Flying Dog</a> offerings.</p>
<p>It felt like pizza and provisions were arriving every several hours to keep pace with all of the arrivals. At peak capacity there were probably 150-200 people crammed into that place.</p>
<p>Into the night&#8230; the talks died down and the beer flowed freely. I worked on a pet side project of mine for a while and watched the DJ spin house music. After a very long day, and too much beer it became clear that I was in it for the long haul. As long as the music thumped there was no chance of much needed sleep. The crowd dissipated and I was one of the 20 or so people who stayed the night. For nostalgia&#8217;s sake the move <a href="http://en.wikipedia.org/wiki/Tron_%28film%29">Tron</a> was projected onto the wall. When the music stopped at 4am I found a lonely corner on the decaying hardwood floor and crashed.</p>
<p>In the morning I awoke to the same scene and much of the same crowd as the day before. I listened to a very good talk on venture capital and took part in an entrepreneurial discussion. After more pizza and a few Mountain Dew&#8217;s I packed my things and strolled back to the train station full well knowing that the party would keep going well into the night again.</p>
<p>All in all, a great time. Next year I think I need to go with someone else and have something more to work on or get more involved with some of the ad-hoc projects going on throughout the weekend. The spirit of community, shared information and support, and unbridled passion all were very strong motivators. I learned a lot and probably most importantly, I didn&#8217;t win the &#8220;I puked first at BARcamp&#8221; t-shirt at 3am.</p>
<p style="text-align: center;"><img class="alignnone aligncenter" src="http://farm4.static.flickr.com/3179/2578875852_b8478d2bfb.jpg" alt="I Puked First" /></p>
<p>It would be awesome if the technology community in Ann Arbor / Detroit put on our own BARcamp in the near future. There are more than enough people in the area, especially now with Google in town. They are springing up in all the major cities across the world, why not here? I&#8217;d be down to help organize when the time comes.</p>
<p><strong>Update:</strong> <a href="http://flickr.com/search/?q=barcamp+chicago+2007">Official Flickr photoset</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.krisneuharth.com/2007/06/28/barcamp-chicago-2007/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Another Cracker Barrel?</title>
		<link>http://www.krisneuharth.com/2007/06/17/another-cracker-barrel/</link>
		<comments>http://www.krisneuharth.com/2007/06/17/another-cracker-barrel/#comments</comments>
		<pubDate>Sun, 17 Jun 2007 21:29:52 +0000</pubDate>
		<dc:creator>Kris Neuharth</dc:creator>
		
		<category><![CDATA[random]]></category>

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

		<guid isPermaLink="false">http://www.krisneuharth.com/?p=16</guid>
		<description><![CDATA[During a recent 3 day all out high speed burn from Michigan to California we passed the time counting Cracker Barrel restaurants along the highways. We ended up with 16 between Ann Arbor, MI and St. George, UT. Our less than scientific analysis concluded that Cracker Barrels are very evenly distributed about every 50 to [...]]]></description>
			<content:encoded><![CDATA[<p>During a recent 3 day all out high speed burn from Michigan to California we passed the time counting <a href="http://en.wikipedia.org/wiki/Cracker_Barrel">Cracker Barrel</a> restaurants along the highways. We ended up with 16 between Ann Arbor, MI and St. George, UT. Our less than scientific analysis concluded that Cracker Barrels are very evenly distributed about every 50 to 100 miles in the Midwest, except in the state of Wyoming where there is very little of anything.</p>
<p><strong>Our list:</strong><br />
Jackson, MI<br />
Battle Creek, MI<br />
Kalamazoo, MI<br />
St. Joseph, MI<br />
Gary, IN<br />
Calumet City, IL<br />
Joliet, IL<br />
Ottawa, IL<br />
Davenport, IA<br />
Des Moines, IA<br />
Council Bluffs, IA<br />
Omaha, NE<br />
Lincoln, NE<br />
(Dry spell)<br />
Provo, UT<br />
Cedar City, UT<br />
St. George, UT</p>
<p>After browsing around the official Cracker Barrel site I found this <a href="http://direct.where2getit.com/cwc/apps/w2gi.php?template=searchatw&amp;client=cracker3">trip planner</a>. Forget about AAA, Google Maps, etc.</p>
<p>Related news article from The Onion that got me started on all this today:</p>
<div class="onion_embed headline"><a class="img" href="http://www.theonion.com/content/news/cracker_barrel_announces_plans_to?utm_source=Distributed&amp;utm_medium=Embedded%2BHTML&amp;utm_campaign=Widgets" target="theonion"></a></p>
<h3 style="font-size:14px!important;line-height:13px!important;"><a href="http://www.theonion.com/content/news/cracker_barrel_announces_plans_to?utm_source=Distributed&amp;utm_medium=Embedded%2BHTML&amp;utm_campaign=Widgets" target="theonion">Cracker Barrel Announces Plans To Build Another One Out By The Highway</a></h3>
</div>
<p><img style="display:none;" src="http://statistics.theonion.com/b/ss/theonionprod/1/H.6--NS/1234567?pe=lnk_d&amp;pev2=Cracker%20Barrel%20Announces%20Plans%20To%20Build%20Another%20One%20Out%20By%20The%20Highway&amp;pev1=http%3A%2F%2Fwww.theonion.com%2Fcontent%2Fnews%2Fcracker_barrel_announces_plans_to%3Futm_source%3DDistributed%26utm_medium%3DEmbedded%252BHTML%26utm_campaign%3DWidgets" alt="" width="1" height="1" /></p>
<p>It&#8217;s only funny because it is true.</p>
<p>On the next trip in August I think we are going to count Starbucks, fireworks stands, and also investigate the puzzling close proximity of adult video stores to churches. Or is it the other way around? Only in the Midwest&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.krisneuharth.com/2007/06/17/another-cracker-barrel/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
