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

<channel>
	<title>i must be an acrobat &#187; Software Development</title>
	<atom:link href="http://joshuahoover.com/category/software-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://joshuahoover.com</link>
	<description>a blog by joshua hoover</description>
	<lastBuildDate>Sat, 10 Apr 2010 14:56:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/><cloud domain='joshuahoover.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
		<item>
		<title>Cloning VirtualBox images (or how I save hours a day when testing software)</title>
		<link>http://joshuahoover.com/2010/04/01/cloning-virtualbox-images/</link>
		<comments>http://joshuahoover.com/2010/04/01/cloning-virtualbox-images/#comments</comments>
		<pubDate>Thu, 01 Apr 2010 21:15:25 +0000</pubDate>
		<dc:creator>Joshua Hoover</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Ubuntu One]]></category>
		<category><![CDATA[ubuntuone]]></category>

		<guid isPermaLink="false">http://joshuahoover.com/?p=793</guid>
		<description><![CDATA[First things first. If you&#8217;re testing software and you&#8217;re not using some sort of virtualization solution, stop reading this and go install one. My product of choice is VirtualBox. It&#8217;s free (as in no cost and most of it is open source), user friendly, runs on an Ubuntu host computer and I&#8217;m familiar with it. [...]]]></description>
			<content:encoded><![CDATA[<p>First things first. If you&#8217;re testing software and you&#8217;re not using some sort of virtualization solution, stop reading this and go install one. My product of choice is <a href="http://virtualbox.org">VirtualBox</a>. It&#8217;s free (as in no cost and most of it is open source), user friendly, runs on an Ubuntu host computer and I&#8217;m familiar with it.</p>
<p>Lately I&#8217;ve been doing a lot of testing of the <a title="Ubuntu One" href="https://one.ubuntu.com/">Ubuntu One</a> desktop software and I need to be able to quickly get various versions of Ubuntu up and running. Below I outline how I do that on an Ubuntu host computer. My steps assume that you&#8217;re familiar with VirtualBox enough that you know how to setup a virtual machine (VM) already.</p>
<h3>Create a master image</h3>
<p>The <em>master image</em> is the one we&#8217;ll use to clone test images off of. By doing this we can worry about keeping our master image up-to-date and configured the way we need it and then simply clone that image when we have to test.</p>
<ol>
<li>Create a new VM in VirtualBox and install the OS  (see <a title="The Beginner's Guide to Creating Virtual Machines with VirtualBox" href="http://lifehacker.com/5204434/the-beginners-guide-to-creating-virtual-machines-with-virtualbox">Lifehacker&#8217;s guide</a> if you&#8217;re not sure how to do this)</li>
<li>After restarting the VM when the install is done, install all the latest updates on the master image and restart</li>
<li>Install the VirtualBox Guest Additions (allows nice integration with the host computer)</li>
<li>Shutdown the master image</li>
</ol>
<p>Periodically you&#8217;ll want to make sure your master image has all the  latest updates, so just boot it up, install the updates and then shut it  down.</p>
<h3>Clone the master image</h3>
<p>Now we&#8217;re ready to start testing some software. Instead of using the master image we created above, we&#8217;re going to clone that image. This should take less than 5 minutes start to finish.</p>
<ol>
<li>In a terminal session do the following:
<pre>cd ~/.VirtualBox/HardDisks
VBoxManage clonehd master_image.vdi test_image.vdi --format VDI</pre>
</li>
<li>In VirtualBox, create a new VM by clicking the <em>New </em>button</li>
<li>Go through each screen selecting the appropriate values and clicking the <em>Next</em> button until you get to the <em>Virtual Hard Disk</em> part</li>
<li>Select the <em>Use existing hard disk</em> radio button<br />
<img class="size-full wp-image-796 alignnone" title="VirtualBox Hard Disk Setup screenshot" src="http://joshuahoover.com/wp-content/uploads/2010/04/select_use_existing_hard_disk.png" alt="VirtualBox Hard Disk Setup screenshot" width="400" height="301" /></li>
<li>Click on the folder icon next to the pull down menu listing existing VDI files</li>
<li>Click the <em>Add</em> button<br />
<img class="alignnone size-full wp-image-797" title="Add VirtualBox VDI" src="http://joshuahoover.com/wp-content/uploads/2010/04/add_virtualbox_vdi.png" alt="Add VirtualBox VDI screenshot" width="400" height="299" /></li>
<li>Select the image you created (should be in ~/.VirtualBox/HardDisks) to add it to the list of available hard disks</li>
<li>Click on the image you just added and then click the <em>Select</em> button</li>
<li>Click the <em>Next </em>button</li>
<li>Click the <em>Finish</em> button</li>
</ol>
<p>You now have a brand new VM to use for testing. Once you test with this image and decide its usefulness is over you can delete the virtual disk image (VDI) file in ~/.VirtualBox/HardDisks, repeat step 1 above to create a new cloned image, and then edit your cloned VM in VirtualBox to use the new clone image. In other words, you don&#8217;t have to setup a new VM (steps 2-10) every time you want to use another VDI if you don&#8217;t want to.</p>
]]></content:encoded>
			<wfw:commentRss>http://joshuahoover.com/2010/04/01/cloning-virtualbox-images/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Review The Tests, Then The Code</title>
		<link>http://joshuahoover.com/2009/03/01/review-the-tests-then-the-code/</link>
		<comments>http://joshuahoover.com/2009/03/01/review-the-tests-then-the-code/#comments</comments>
		<pubDate>Mon, 02 Mar 2009 02:47:18 +0000</pubDate>
		<dc:creator>Joshua Hoover</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://joshuahoover.com/?p=456</guid>
		<description><![CDATA[Last week I was talking with one of the developers at work and he was telling me about improvements his team was making in regards to (informal/desk check) code reviews. I told him that was great and then followed that up with a recommendation on how to improve even more.  Next time there is a [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-463" title="magnifying-glass" src="http://joshuahoover.com/wp-content/uploads/2009/03/magnifying-glass.png" alt="magnifying-glass" width="200" height="130" /></p>
<p>Last week I was talking with <a title="James Lorenzen's Blog" href="http://jlorenzen.blogspot.com">one of the developers at work</a> and he was telling me about improvements his team was making in regards to (informal/desk check) code reviews. I told him that was great and then followed that up with a recommendation on how to improve even more.  Next time there is a code review, start with the tests. This will do two things: 1) Stress the importance of having tests 2) Make the review go quicker, as the tests will either be there and make the intent of the code clear or they won&#8217;t be there and the review is postponed until tests are in place.</p>
<p>I know <a title="Roy Osherove: Test Reviews Vs. Code Reviews - Some Helpful Tips" href="http://weblogs.asp.net/rosherove/archive/2007/03/13/test-reviews-vs-code-reviews-some-helpful-tips.aspx">I&#8217;m not the first to make this suggestion</a>, but I felt it was worth repeating. <a title="uke Francl - Testing is Overrated" href="http://railspikes.com/2008/7/11/testing-is-overrated">Code reviews do have value</a>, even when you pair program. At least, I think they do. Pair programming provides two sets of eyes on the code at the time of creation, but it&#8217;s surprising what someone who hasn&#8217;t seen the code before will find during a review.</p>
<p>Oh, and if reviewing the tests during a code review doesn&#8217;t make the intent of the code any clearer, then I suggest the team investigate <a title="Wikipedia entry on BDD" href="http://en.wikipedia.org/wiki/Behavior_Driven_Development">behavior driven development</a> (BDD). I&#8217;m becoming quite partial to the <a title="Cucumber on github" href="http://wiki.github.com/aslakhellesoy/cucumber">Cucumber framework</a> for BDD, as I like it&#8217;s emphasis on user stories with acceptance tests/examples written in plain text and backed by executable steps.</p>
]]></content:encoded>
			<wfw:commentRss>http://joshuahoover.com/2009/03/01/review-the-tests-then-the-code/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The Customers Disappear Right Before Our Eyes</title>
		<link>http://joshuahoover.com/2009/02/14/the-customers-disappear-right-before-our-eyes/</link>
		<comments>http://joshuahoover.com/2009/02/14/the-customers-disappear-right-before-our-eyes/#comments</comments>
		<pubDate>Sun, 15 Feb 2009 04:38:09 +0000</pubDate>
		<dc:creator>Joshua Hoover</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://joshuahoover.com/?p=446</guid>
		<description><![CDATA[Tonight I was foolish enough to think my family and I could waltz into a restaurant on Valentine&#8217;s and get a table without much trouble. We were trying a restaurant we hadn&#8217;t been to before and I realized as soon as we pulled into the parking lot this probably wasn&#8217;t the best night to experiment. [...]]]></description>
			<content:encoded><![CDATA[<p>Tonight I was foolish enough to think my family and I could waltz into a restaurant on Valentine&#8217;s and get a table without much trouble. We were trying a restaurant we hadn&#8217;t been to before and I realized as soon as we pulled into the parking lot this probably wasn&#8217;t the best night to experiment. We went inside anyway to see how long the wait was. Much to my surprise, the hostess told us it was only about a 15-20 minute wait. I looked around the restaurant and, while it was full, there wasn&#8217;t a large number of people waiting on tables. We got on the waiting list and then proceeded to wait.</p>
<p>What I saw during the wait was kind of surprising. I noticed that the staff were diligently doing their jobs, quickly moving from one spot to another. I had to be careful not to step too far away from the waiting area or I was sure to bump into one of the busy bee workers. And while the staff was incredibly focused on the operations of the restaurant, I couldn&#8217;t help but notice they were almost oblivious to their customers, whether those customers be waiting for a table, eating their meal, or somewhere in between. I looked around the restaurant of about 40 tables and noticed that at any given moment there were numerous people looking to get the attention of their waitress. Customers coming in through the door were rarely greeted in a timely manner. Those of us waiting for a table were ignored completely, even as our original wait time came and went.</p>
<p>It dawned on me that this situation is not unlike what happens with some software development projects. We get in the groove of producing the software and never take time to make sure we&#8217;re satisfying the customer. Yes, those of us practicing agile have the advantage of delivering in short iterations which, at worst, won&#8217;t allow a project to go too long before the customer is back in the mix. But, even on agile projects, I&#8217;ve seen teams go through an entire iteration without giving much thought to the customer&#8217;s needs beyond the initial planning meeting. We think we understand exactly what the customer wants, can&#8217;t or simply don&#8217;t get continuous feedback from the customer during the iteration, and we develop the functionality. We become like the restaurant&#8217;s staff, who are so busy running the restaurant that they forget about the very people who <strong>really</strong> keep the restaurant running, the customers. Sure, the orders are taken, the food is getting out to people, drinks are refilled, new people are put on the waiting list, etc., but the customers aren&#8217;t satisfied, let alone happy. The software gets designed, written, documented, tested, etc. but the customers aren&#8217;t satisfied, let alone happy. Sound familiar?</p>
<p>Tonight was a good reminder that technical and operational excellence is critical to delivering a good customer experience, but if we lose sight of the customer in that process then we will fail miserably. We need to be diligent about keeping constant contact with the customer and focusing on the value we&#8217;re delivering. We don&#8217;t want our customers to walk away from us like my family and others did on the restaurant we attempted to eat dinner at tonight.</p>
<div style="width:450px;"><object width="450" height="110"><param name="movie" value="http://media.imeem.com/m/nUudkGV3Cm/aus=false/"></param><param name="wmode" value="transparent"></param><embed src="http://media.imeem.com/m/nUudkGV3Cm/aus=false/" type="application/x-shockwave-flash" width="450" height="110" wmode="transparent"></embed></object>
<div style="padding-top:3px;"><a href="http://www.imeem.com/ads/banneradclick.ashx?ep=2&#038;ek=nUudkGV3Cm" rel="nofollow"><img src="http://www.imeem.com/ads/bannerad/154/10/" border="0" /></a><a href="http://www.imeem.com/ads/banneradclick.ashx?ep=3&#038;ek=nUudkGV3Cm" rel="nofollow" ><img src="http://www.imeem.com/ads/bannerad/155/10/nUudkGV3Cm/" border="0" /></a></div>
</div>
<p></p>
]]></content:encoded>
			<wfw:commentRss>http://joshuahoover.com/2009/02/14/the-customers-disappear-right-before-our-eyes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>One Smart Cucumber</title>
		<link>http://joshuahoover.com/2009/01/28/one-smart-cucumber/</link>
		<comments>http://joshuahoover.com/2009/01/28/one-smart-cucumber/#comments</comments>
		<pubDate>Thu, 29 Jan 2009 04:18:02 +0000</pubDate>
		<dc:creator>Joshua Hoover</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://joshuahoover.com/?p=428</guid>
		<description><![CDATA[I was messing around with some Ruby stuff tonight and was reading up on the Cucumber project. Cucumber is a behavior driven development (BDD) testing tool. Anyone who talks to me about user stories knows I&#8217;m kind of a stickler on the value statement.  I think I&#8217;ve found a kindred soul in Aslak Hellesoy, the [...]]]></description>
			<content:encoded><![CDATA[<p>I was messing around with some Ruby stuff tonight and was reading up on the <a title="Cucumber site" href="http://cukes.info/">Cucumber</a> project. Cucumber is a <a title="Dan North's introducing BDD" href="http://dannorth.net/introducing-bdd">behavior driven development (BDD)</a> testing tool.</p>
<p>Anyone who talks to me about user stories knows I&#8217;m kind of a stickler on <a title="My post on the importance of &quot;so that&quot; in user stories" href="/2008/07/12/so-that/">the value statement</a>.  I think I&#8217;ve found a kindred soul in <span class="fn"><a title="Aslak Hellesoy's blog" href="http://blog.aslakhellesoy.com/">Aslak Hellesoy</a>, the creator of Cucumber. The following comes from the <a title="Cucumber documentation on GitHub" href="http://wiki.github.com/aslakhellesoy/cucumber">Cucumber documentation</a>.<br />
</span></p>
<blockquote><p>You should discuss the “In order to” part of the feature and <a href="http://www.theregister.co.uk/2007/06/25/thoughtworks_req_manage/">pop the why stack</a> max 5 times (ask why recursively)  until you end up with one of the following business values:</p>
<ul>
<li>Protect revenue</li>
<li>Increase revenue</li>
<li>Manage cost</li>
</ul>
<p>If you’re about to implement a feature that doesn’t support one of those values, chances are you’re about to implement a non-valuable feature. Consider tossing it altogether or pushing it down in your backlog. Focus on implementing the MMFs (<a href="http://www.softwarebynumbers.org/">Minimum Marketable Features</a>) that will yield the most value.</p>
<p>Here is an example taken from an <span class="caps">IRC</span> chat session in <a href="irc://irc.freenode.net/cucumber">#cucumber</a>:</p>
<pre style="text-align: left;">[5:08pm] Luis_Byclosure: I'm having problems applying the "5 Why" rule, to the feature
                         "login" (imagine an application like youtube)
[5:08pm] Luis_Byclosure: how do you explain the business value of the feature "login"?
[5:09pm] Luis_Byclosure: In order to be recognized among other people, I want to login
                         in the application (?)
[5:09pm] Luis_Byclosure: why do I want to be recognized among other people?
[5:11pm] aslakhellesoy:  Why do people have to log in?
[5:12pm] Luis_Byclosure: I dunno... why?
[5:12pm] aslakhellesoy:  I'm asking you
[5:13pm] aslakhellesoy:  Why have you decided login is needed?
[5:13pm] Luis_Byclosure: identify users
[5:14pm] aslakhellesoy:  Why do you have to identify users?
[5:14pm] Luis_Byclosure: maybe because people like to know who is
                         publishing what
[5:15pm] aslakhellesoy:  Why would anyone want to know who's publishing what?
[5:17pm] Luis_Byclosure: because if people feel that that content belongs
                         to someone, then the content is trustworthy
[5:17pm] aslakhellesoy:  Why does content have to appear trustworthy?
[5:20pm] Luis_Byclosure: Trustworthy makes people interested in the content and
                         consequently in the website
[5:20pm] Luis_Byclosure: Why do I want to get people interested in the website?
[5:20pm] aslakhellesoy:  <img src='http://joshuahoover.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />
[5:21pm] aslakhellesoy:  Are you selling something there? Or is it just for fun?
[5:21pm] Luis_Byclosure: Because more traffic means more money in ads
[5:21pm] aslakhellesoy:  There you go!
[5:22pm] Luis_Byclosure: Why do I want to get more money in ads? Because I want to increase
                         de revenues.
[5:22pm] Luis_Byclosure: And this is the end, right?
[5:23pm] aslakhellesoy:  In order to drive more people to the website and earn more admoney,
                         authors should have to login,
                         so that the content can be displayed with the author and appear
                         more trustworthy.
[5:23pm] aslakhellesoy:  Does that make any sense?
[5:25pm] Luis_Byclosure: Yes, I think so
[5:26pm] aslakhellesoy:  It's easier when you have someone clueless (like me) to ask the
                         stupid why questions
[5:26pm] aslakhellesoy:  Now I know why you want login
[5:26pm] Luis_Byclosure: but it is difficult to find the reason for everything
[5:26pm] aslakhellesoy:  And if I was the customer I am in better shape to prioritise this
                         feature among others
[5:29pm] Luis_Byclosure: true!</pre>
</blockquote>
<p>I was impressed to find that section in the documentation. Not only do the docs detail basic usage but they go into the deeper discussion of how to apply agile principles using Cucumber. The balancing act of teaching principles and practices at the same time is no small feat. To find that in software documentation is pretty amazing.</p>
<p>P.S. One of my worst titles ever, I know. I think I was subconsciously inspired by the Hallmark Movie my wife had on a couple nights ago. I now realize I missed my calling as a greeting card writer.</p>
]]></content:encoded>
			<wfw:commentRss>http://joshuahoover.com/2009/01/28/one-smart-cucumber/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Apache Shindig PHP Setup Problem Solved</title>
		<link>http://joshuahoover.com/2008/09/14/apache-shindig-php-setup-problem-solved/</link>
		<comments>http://joshuahoover.com/2008/09/14/apache-shindig-php-setup-problem-solved/#comments</comments>
		<pubDate>Mon, 15 Sep 2008 04:16:36 +0000</pubDate>
		<dc:creator>Joshua Hoover</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://joshuahoover.com/?p=301</guid>
		<description><![CDATA[First things first. Shindig is an Apache incubator project that serves as an OpenSocial Container and&#8230;I&#8217;m already falling asleep. Too boring. I&#8217;m way behind the curve on all things &#8220;social networking&#8221; but I have an idea for an app that may scratch an itch I have, and it just happens that some of this social [...]]]></description>
			<content:encoded><![CDATA[<p>First things first. <a title="Shindig project site" href="http://incubator.apache.org/shindig/">Shindig</a> is an Apache incubator project that serves as an <a title="OpenSocial Google site" href="http://code.google.com/apis/opensocial/">OpenSocial</a> Container and&#8230;I&#8217;m already falling asleep. Too boring. I&#8217;m way behind the curve on all things &#8220;social networking&#8221; but I have an idea for an app that may scratch an itch I have, and it just happens that some of this social networking stuff might be a good way to jump start the idea. So that means catching up on a couple of years (or more) of stuff that&#8217;s been going in the world of web 2.0, which includes OpenSocial. I wanted a local OpenSocial test sandbox and found Shindig to fit that bill.</p>
<p>Now, onto the problem I was running into and the solution. <strong>Unless you want the long boring details, I can save you the trouble and tell you to make sure you have mod_rewrite enabled in Apache.</strong></p>
<p>If you haven&#8217;t dozed off by now then it probably means you&#8217;re running into issues with the Shindig PHP setup and would like some more details. I followed the directions on <a title="Building and running PHP Shindig Server" href="http://incubator.apache.org/shindig/#php">setting up the PHP Shindig server</a> on my laptop running Kubuntu 08.04 here at home and kept getting a 404 error. I thought that was strange since I could hit other files with my browser that I put in that directory manually for testing but not the Shindig index.php page. Turns out the Shindig index.php page tries to be more &#8220;controller/servlet&#8221; like by sniffing the URI and passing it along to the appropriate handler. If it can&#8217;t find a match, then it gives a custom 404 error. I noticed the test URI (http://shindig/gadgets/ifr?url=http://www.labpixies.com/campaigns/todo/todo.xml) didn&#8217;t have any reference to index.php. Ah yes, the wonders of Apache mod_rewrite! And guess what I didn&#8217;t have enabled? Yep, Apache mod_rewrite. So, below is what I did to get things running on an Ubuntu setup from scratch (meaning no Apache 2, PHP 5 was installed or configured):</p>
<pre>sudo apt-get install apache2 apache2-common apache2-mpm-prefork apache2-utils ssl-cert libapache2-mod-php5 php5-cli php5-common php5-curl php5-mcrypt

svn co http://svn.apache.org/repos/asf/incubator/shindig/trunk/ /home/jhoover/dev/shindig

sudo mv /etc/apache2/mods-available/rewrite.load  /etc/apache2/mods-enabled/

sudo cp /etc/apache2/sites-enabled/000-default /etc/apache2/sites-enabled/shindig

sudo pico /etc/apache2/sites-enabled/shindig</pre>
<p>Stop laughing, I use the Pico text editor. I&#8217;m, as <a href="/category/ec-quotes/">my son</a> would say, &#8220;weak sauce&#8221;. I know. Anyway, here&#8217;s what I have in that virtual host file:</p>
<pre>NameVirtualHost *
&lt;VirtualHost 127.0.0.1:80&gt;
  ServerAdmin webmaster@localhost
  ServerName shindig

  DocumentRoot /home/jhoover/dev/shindig/php
  DirectoryIndex index.html index.php
  &lt;Directory /&gt;
    Options FollowSymLinks
    AllowOverride All
  &lt;/Directory&gt;

  ErrorLog /var/log/apache2/error.log
  LogLevel warn

  CustomLog /var/log/apache2/access.log combined
  ServerSignature On
&lt;/VirtualHost&gt;</pre>
<p>Once we have that in place, we need to edit our host file:</p>
<pre>sudo pico /etc/hosts</pre>
<p>Append the following to the hosts file and save:</p>
<pre>127.0.0.1       shindig</pre>
<p>Time to restart Apache:</p>
<pre>sudo /etc/init.d/apache2 restart</pre>
<p>Now you should be able to go to your web browser of choice and run the demo/test app:</p>
<pre>http://shindig/gadgets/ifr?url=http://www.labpixies.com/campaigns/todo/todo.xml</pre>
<p>If all went well you should see something a little like this:</p>
<p><img class="alignnone size-full wp-image-303" title="shindig_demo_app_screenshot" src="http://joshuahoover.com/wp-content/uploads/2008/09/shindig_demo_app_screenshot.png" alt="" width="354" height="403" /></p>
]]></content:encoded>
			<wfw:commentRss>http://joshuahoover.com/2008/09/14/apache-shindig-php-setup-problem-solved/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>That&#8217;s The Java Way!</title>
		<link>http://joshuahoover.com/2007/12/19/thats-the-java-way/</link>
		<comments>http://joshuahoover.com/2007/12/19/thats-the-java-way/#comments</comments>
		<pubDate>Thu, 20 Dec 2007 02:14:20 +0000</pubDate>
		<dc:creator>Joshua Hoover</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://joshuahoover.com/2007/12/19/thats-the-java-way/</guid>
		<description><![CDATA[A quote from an email I saw come across this evening: Otherwise, what&#8217;s the point? Pile up one xml on top of the other?  I couldn&#8217;t resist.  A cheap shot at Java.  I&#8217;m just bitter after being exposed to one too many Java frameworks in the past that seemed to think that &#8220;you can never [...]]]></description>
			<content:encoded><![CDATA[<p>A quote from an email I saw come across this evening:</p>
<blockquote><p><em>Otherwise, what&#8217;s the point? Pile up one xml on top of the other? </em></p></blockquote>
<p>I couldn&#8217;t resist.  A cheap shot at Java.  I&#8217;m just bitter after being exposed to one too many Java frameworks in the past that seemed to think that &#8220;you can never have too much XML&#8221; was a mantra to proudly live by.</p>
]]></content:encoded>
			<wfw:commentRss>http://joshuahoover.com/2007/12/19/thats-the-java-way/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MSSU Follow Up</title>
		<link>http://joshuahoover.com/2007/10/28/mssu-follow-up/</link>
		<comments>http://joshuahoover.com/2007/10/28/mssu-follow-up/#comments</comments>
		<pubDate>Mon, 29 Oct 2007 03:07:11 +0000</pubDate>
		<dc:creator>Joshua Hoover</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://joshuahoover.com/2007/10/28/mssu-follow-up/</guid>
		<description><![CDATA[On Thursday, October 25th, I spoke to the CIS club at Missouri Southern State University. The presentation won&#8217;t win any awards (no presentation of mine ever will.) I put the Powerpoint up on SlideShare. I promised the students and professors in attendance that I would follow up with a post on my blog with links [...]]]></description>
			<content:encoded><![CDATA[<p>On Thursday, October 25th, I spoke to the CIS club at <a href="http://www.mssu.edu/" title="Missouri Southern State University">Missouri Southern State University</a>.  The presentation won&#8217;t win any awards (no presentation of mine ever will.)  I put <a href="http://www.slideshare.net/jhoover667/mssu-gestalt-presentation-20071025/" title="My Powerpoint from my MSSU CIS 10-25-07 presentation ">the Powerpoint up on SlideShare</a>. I promised the students and professors in attendance that I would follow up with a post on my blog with links and other info that might be helpful.</p>
<p><strong>Internships</strong><br />
If you&#8217;re interested in an internship with Gestalt&#8217;s Joplin office, please send your resume to my email address: <strong>jhoover at gestalt-llc.com</strong>.  I&#8217;ll make sure your resume gets to the right people within Gestalt.</p>
<p><a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2FPragmatic-Unit-Testing-NUnit-2nd%2Fdp%2F0977616673%3Fie%3DUTF8%26s%3Dbooks%26qid%3D1193624368%26sr%3D8-3&amp;tag=imustbeanacro-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=9325" title="Pragmatic Unit Testing in C# with NUnit on Amazon.com"><img src="http://joshuahoover.com/wp-content/uploads/2007/10/pragmatic_unit_testing_in_c_sharp_with_nunit.jpg" alt="Pragmatic Unit Testing in C# with NUnit on Amazon.com" style="padding-left: 10px; padding-top: 10px" align="right" border="0" height="163" width="138" /></a></p>
<p><strong>Agile Software Engineering<br />
</strong>Some of the agile software engineering best practices I mentioned during the presentation were <a href="http://c2.com/cgi/wiki?TestDrivenDevelopment" title="More info on TDD">Test Driven Development (TDD)</a> and <a href="http://martinfowler.com/articles/continuousIntegration.html" title="Martin Fowler's article on CI">Continuous Integration (CI)</a>.  Since MSSU is focused on .NET, here are some links that might be helpful related to TDD and CI:</p>
<ul>
<li><a href="http://www.google.com/url?sa=t&amp;ct=res&amp;cd=1&amp;url=http%3A%2F%2Fwww.nunit.org%2F&amp;ei=QEIlR9uNM4LUerWL-JYO&amp;usg=AFQjCNEEzsRo6CKnpvmFJVtAHLSMYBZV5Q&amp;sig2=KvauJuqcW_VzKY4AuGuhpQ">NUnit &#8211; .NET unit testing framework</a></li>
<li><a href="http://www.google.com/url?sa=t&amp;ct=res&amp;cd=1&amp;url=http%3A%2F%2Fccnet.thoughtworks.com%2F&amp;ei=8EElR8m7NILUeraL-JYO&amp;usg=AFQjCNFpRF_nI9T_orjzZSS0rBvq9-K2wQ&amp;sig2=6Ku9ueqyqqY1Qky-i9OKzA">CruiseControl.NET &#8211; .NET continuous integration server</a></li>
<li><a href="http://weblogs.asp.net/jdanforth/pages/How-to-Hook-Up-a-VS.NET-2005-Solution-With-CruiseControl.NET-in-a-Few-Minutes.aspx">CruiseControl.NET with Visual Studio 2005 project tutorial</a></li>
</ul>
<p><strong>YouTube Videos<br />
</strong>Coco had asked how Gestalt was using YouTube.  I mentioned that we used it as part of a recruiting effort.  We had a contest open to the employees to see who could make the coolest recruiting video on YouTube.  The results of that contest can be found <strong><a href="http://youtube.com/results?search_query=gestalt-llc&amp;search=tag" title="Gestalt, LLC YouTube recruiting videos">here</a></strong>.  The winner (as voted on by Gestalt employees) was <strong><a href="http://youtube.com/watch?v=bfDgRkHthfE" title="PatrolNet Woes on YouTube">John Moffet&#8217;s PatrolNet Woes</a></strong>.  In an act of shameless self-promotion, I&#8217;m embedding my video below.</p>
<p><a href="http://joshuahoover.com/2007/10/28/mssu-follow-up/"><em>Click here to view the embedded video.</em></a></p>
<p>&nbsp;&nbsp;</p>
<p><a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2FJob-Went-India-Pragmatic-Programmers%2Fdp%2F0976694018%3Fie%3DUTF8%26s%3Dbooks%26qid%3D1193621927%26sr%3D8-1&amp;tag=imustbeanacro-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=9325"><img src="http://joshuahoover.com/wp-content/uploads/2007/10/my_job_went_to_india.jpg" alt="My Job Went To India" style="padding-right: 10px" align="right" border="0" /></a><strong>Recommended Read<br />
</strong>A book I&#8217;m in the process of reading that I think would be extremely beneficial for college students to read is <strong><a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2FJob-Went-India-Pragmatic-Programmers%2Fdp%2F0976694018%3Fie%3DUTF8%26s%3Dbooks%26qid%3D1193621927%26sr%3D8-1&amp;tag=imustbeanacro-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=9325">My Job Went To India</a></strong>. I&#8217;m about a third of the way through and the advice is practical and especially relevant for those entering the IT workforce these days.</p>
<p><strong>RSS<br />
</strong><img src="http://joshuahoover.com/wp-content/uploads/2007/10/rss.png" alt="RSS Logo" style="padding-right: 10px; padding-top: 10px" align="left" height="51" width="51" />There were some questions about <a href="http://en.wikipedia.org/wiki/RSS_(file_format)" title="Wikipedia entry on RSS">RSS</a> during the presentation.  May I suggest checking out the <strong><a href="http://pipes.yahoo.com/pipes/pipe.run?_id=lHbPURFn3BGvrQrfouNLYQ&amp;_render=rss">Gestalt Blogs RSS feed</a></strong>? This feed has all the posts from Gestalt bloggers, with quite a few being out of the Joplin office. My personal favorite combo for subscribing to and reading RSS feeds is <a href="http://getfirefox.com/" title="Get Firefox">Firefox</a> and <a href="http://google.com/reader">Google Reader</a>.</p>
<p><strong>Open Source<br />
</strong>Below are the links to all our current Open Source projects:</p>
<ul>
<li><strong>JBI Binding Components</strong>
<ul>
<li><a href="http://rss-bc.dev.java.net/" title="RSS JBI Binding Component">RSS BC</a></li>
<li><a href="http://sip-bc.dev.java.net" title="SIP JBI Binding Component">SIP BC</a></li>
<li><a href="http://uddi-bc.dev.java.net" title="UDDI JBI Binding Component">UDDI BC</a></li>
<li><a href="http://xmpp-bc.dev.java.net" title="XMPP JBI Binding Component">XMPP BC</a></li>
</ul>
</li>
<li><strong> Other Gestalt Open Source Projects</strong>
<ul>
<li><a href="http://www.glassfishwiki.org/jbiwiki/Wiki.jsp?page=EncodingSE" title="JBI Encoding Service Engine">Encoding Service Engine</a></li>
<li><a href="http://www.glassfishwiki.org/jbiwiki/Wiki.jsp?page=JBIMockFramework" title="JBI Mock Framework">JBI Mock Framework</a></li>
<li><a href="https://openfire-packet-listener.dev.java.net/" title="Openfire Packet Listener">Openfire Packet Listener</a></li>
</ul>
</li>
</ul>
<p><a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2FProducing-Open-Source-Software-Successful%2Fdp%2F0596007590%3Fie%3DUTF8%26s%3Dbooks%26qid%3D1193626726%26sr%3D8-1&amp;tag=imustbeanacro-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=9325" redirect.html?ie="UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2FProducing-Open-Source-Software-Successful%2Fdp%2F0596007590%3Fie%3DUTF8%26s%3Dbooks%26qid%3D1193626726%26sr%3D8-1&amp;tag=imustbeanacro-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=9325" title="Producing Open Source Software on Amazon.com"><img src="http://joshuahoover.com/wp-content/uploads/2007/10/producing_open_source_software.jpg" alt="Producing Open Source Software" align="left" border="0" /></a>Remember to look into joining an Open Source project.  While I don&#8217;t have any specific recommendations on projects to join (other than our own!), I can definitely recommend reading the book <a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2FProducing-Open-Source-Software-Successful%2Fdp%2F0596007590%3Fie%3DUTF8%26s%3Dbooks%26qid%3D1193626726%26sr%3D8-1&amp;tag=imustbeanacro-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=9325" redirect.html?ie="UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2FProducing-Open-Source-Software-Successful%2Fdp%2F0596007590%3Fie%3DUTF8%26s%3Dbooks%26qid%3D1193626726%26sr%3D8-1&amp;tag=imustbeanacro-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=9325" title="Producing Open Source Software on Amazon.com">Producing Open Source Software</a>.  You can get<a href="http://producingoss.com/" title="Producing Open Source Software pdf and html versions"> a free PDF and HTML version of the book</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://joshuahoover.com/2007/10/28/mssu-follow-up/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Cathedral and bzr</title>
		<link>http://joshuahoover.com/2007/09/25/the-cathedral-and-bzr/</link>
		<comments>http://joshuahoover.com/2007/09/25/the-cathedral-and-bzr/#comments</comments>
		<pubDate>Wed, 26 Sep 2007 04:13:09 +0000</pubDate>
		<dc:creator>Joshua Hoover</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://joshuahoover.com/2007/09/25/the-cathedral-and-bzr/</guid>
		<description><![CDATA[Horrible title, but I couldn&#8217;t resist. Apparently, I need to get in a time machine and catch up on the latest and greatest in version control systems (VCS). Bazaar (bzr for short) is a distributed version control system along the lines of BitKeeper, git, and a number of others. I&#8217;d be lying if I told [...]]]></description>
			<content:encoded><![CDATA[<p>Horrible title, but I couldn&#8217;t resist.  Apparently, I need to get in a time machine and catch up on the latest and greatest in version control systems (VCS).  <a href="http://bazaar-vcs.org/" title="Bazaar project site">Bazaar</a> (bzr for short) is a distributed version control system along the lines of <a href="http://www.bitkeeper.com/" title="BitKeeper site">BitKeeper</a>, <a href="http://git.or.cz/" title="git project site">git</a>, and <a href="http://en.wikipedia.org/wiki/List_of_revision_control_software#Distributed_model" title="Wikipedia list of distributed version control systems">a number of others</a>.  I&#8217;d be lying if I told you I completely understand the advantages of a distributed version control system over a centralized one like <a href="http://subversion.tigris.org/" title="Subversion project site">Subversion</a>.  But, the cool guys from <a href="http://www.joyent.com/" title="Joyent's site">Joyent</a> seemed pretty hyped up about Bazaar as their VCS of choice in <a href="http://joyeur.com/2007/08/08/ps-pipe-grep-episode-18-trial-and-error" title="ps pipe grep: Episode 18 (Trial and Error)">one of their podcasts</a> I listened to a couple of weeks ago.  Oh, and that little Linux distro uses it too.  What&#8217;s the name again?  <a href="http://ubuntu.com/" title="Ubuntu project site">Ubuntu</a>.  That&#8217;s it!  <a href="https://launchpad.net/ubuntu" title="Ubuntu in Launchpad, bzr hosting">Ubuntu uses Bazaar</a> to manage the complexity of such a large code base.<img src="http://joshuahoover.com/wp-content/uploads/2007/09/cathedral_and_bzr.jpg" alt="The Cathedral and The bzr" style="padding-right: 10px; padding-top: 10px" align="left" /></p>
<p>I started to read a bit more about decentralized VCS; knowing that Linus Torvalds is a HUGE proponent of it I figured I&#8217;d see what he had to say.  I found <a href="http://lwn.net/Articles/246381/" title="Re: clarification on git, central repositories and commit access lists">this crazy long email reply</a> Linus gives about a month ago to Adam Treat of the <a href="http://www.kde.org/" title="KDE project site">KDE</a> dev team, who asked Linus some questions about moving from Subversion to git.  It makes my brain hurt trying to think about version control in the way Linus does.  I&#8217;m not even going to try to summarize his thoughts here because I&#8217;m still processing them.  I hope to come back and elaborate some more if I get the time to check out Bazaar and further investigate if distributed VCS is something that makes sense for a company like <a href="http://www.gestalt-llc.com/" title="Gestalt's site">Gestalt</a> to consider using.</p>
<p>P.S. Knowing version control systems, the important functions they serve and how to properly use them in configuration management is key to being <a href="http://joshuahoover.com/2007/09/04/the-ideal-quality-control-person-for-an-agile-team/" title="The Ideal Quality Control Person for an Agile Team">an ideal QCer on an agile team</a> in my (rarely) humble opinion.</p>
]]></content:encoded>
			<wfw:commentRss>http://joshuahoover.com/2007/09/25/the-cathedral-and-bzr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Twitter Tools WordPress Plugin Fix</title>
		<link>http://joshuahoover.com/2007/09/01/twitter-tools-wordpress-plugin-fix/</link>
		<comments>http://joshuahoover.com/2007/09/01/twitter-tools-wordpress-plugin-fix/#comments</comments>
		<pubDate>Sat, 01 Sep 2007 21:17:57 +0000</pubDate>
		<dc:creator>Joshua Hoover</dc:creator>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://joshuahoover.com/2007/09/01/twitter-tools-wordpress-plugin-fix/</guid>
		<description><![CDATA[After getting an hour or so to focus on coding around the Twitter issue I previously posted about, I think I have a fix. For whatever reason the Twitter API is accepting requests from CURL but not from Twitter Tools use of the PHP library Snoopy. Not all PHP installs have the CURL extension installed, [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://joshuahoover.com/wp-content/uploads/2007/09/warning_scrum_master_coding.png" title="Warning Scrum Master Coding" alt="Warning Scrum Master Coding" align="right" border="0" hspace="5" vspace="5" />After getting an hour or so to focus on coding around <a href="http://joshuahoover.com/2007/09/01/twitter-api-not-exactly-working-right-now/" title="Twitter API Not Exactly Working Right Now">the Twitter issue I previously posted about</a>, I think I have a fix.  For whatever reason the <a href="http://groups.google.com/group/twitter-development-talk/web/api-documentation">Twitter API</a> is accepting requests from CURL but not from Twitter Tools use of the PHP library <a href="http://sourceforge.net/projects/snoopy/" title="Snoopy project on SourceForge.net">Snoopy</a>.  Not all PHP installs have <a href="http://us3.php.net/curl" title="PHP CURL documentation">the CURL extension</a> installed, so my code uses it if it&#8217;s there, otherwise it defaults back to the code <a href="http://alexking.org/">Alex King</a>, the author of Twitter Tools, wrote to use the Twitter API.</p>
<p>I&#8217;m going to leave a comment on Alex&#8217;s site pointing him to this post.  I&#8217;m putting the code here for download if anyone wants it.  I&#8217;m also leaving a patch file here for Alex in case he&#8217;s interested in using it.  I&#8217;m not sure it&#8217;s worth it or not &#8211; not my call.  I&#8217;m just happy I can spam&#8230;errr&#8230;inform those at Gestalt using Twitter when I have a new post on this blog.  Sure, they can do that even better using RSS, but that&#8217;s not as cool as saying you got it off Twitter.  Heh.</p>
<ul>
<li><a href="/downloads/twitter_tools.zip">Twitter Tools plugin (zipped file with my additions)</a></li>
<li><a href="/downloads/twitter_tools_curl_patch_jhoover_2007-09-01.diff">Twitter Tools CURL patch</a></li>
</ul>
<p>This is not an issue in Alex&#8217;s code, as he points out in <a href="http://alexking.org/blog/2007/09/01/twitter-tools-broken" title="Twitter Tools Broken - Alex King's post">a recent blog post</a>.  This is an issue with Twitter&#8217;s infrastructure, which <a href="http://blogsearch.google.com/blogsearch?q=twitter+problems" title="Twitter problems blog search on Google">users are noticing more</a> as the service has grown.  Scaling web apps/services is hard.  I&#8217;ll have a post on that in the not so distant future.</p>
]]></content:encoded>
			<wfw:commentRss>http://joshuahoover.com/2007/09/01/twitter-tools-wordpress-plugin-fix/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
