<?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>willcodeforcoffee.com &#187; Software Development</title>
	<atom:link href="http://willcodeforcoffee.com/category/software-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://willcodeforcoffee.com</link>
	<description>The personal programming blog of Eric Hoff.</description>
	<lastBuildDate>Tue, 02 Mar 2010 17:06:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>NoSQL and the End of Object Relational Models</title>
		<link>http://willcodeforcoffee.com/2010/03/02/nosql-and-the-end-of-object-relational-models/</link>
		<comments>http://willcodeforcoffee.com/2010/03/02/nosql-and-the-end-of-object-relational-models/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 17:06:24 +0000</pubDate>
		<dc:creator>eric</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[My Two Cents]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[The Cloud]]></category>

		<guid isPermaLink="false">http://willcodeforcoffee.com/?p=121</guid>
		<description><![CDATA[I think the biggest driver in changing from relational to non-relational databases will be The Cloud. Once enterprises start moving into the Cloud and onto Cloud services I think we will see more architects evaluating and pushing for NoSQL.]]></description>
			<content:encoded><![CDATA[<p>There is a lot of buzz on the <a href="http://en.wikipedia.org/wiki/NoSQL" target="_blank">NoSQL</a> track these days, and it is gaining a lot of traction in the blogger world. But in the old school world of big business and big government there isn&#8217;t much movement, at least not that I&#8217;ve seen. In these industries there is still a lot of entrenchment with database companies like Oracle and Microsoft. These companies have invested a lot of money into their relational database infrastructure.</p>
<p>Its hard to see the &#8220;death&#8221; of the relational database right now. I don&#8217;t think a switch-over from relational databases to non-relational databases is coming &#8211; but there <em>is </em>a game changer coming; another new technology getting a lot of buzz and traction in the blog world: Cloud Computing. I think the biggest driver in changing from relational to non-relational databases will be The Cloud.</p>
<p><span id="more-121"></span>Microsoft, Oracle, Google, Amazon, RedHat, JBoss, Ubuntu, Rackspace and many others are starting to provide cloud computing hardware, operating systems and hosting services. Cloud computing provides cost effective scalability and resource sharing for web applications. Looking at three of the main cloud contenders out there, Amazon Web Services, Google AppEngine and Microsoft Azure you see three common components:</p>
<ol>
<li>Scalable Computing / Web Hosting computing</li>
<li>Scalable File Storage</li>
<li>Scalable Database Storage</li>
</ol>
<p>The first two are pretty obvious and typically similar to traditional architectures, or not that different &#8211; however the Database storage is where things change: all three (Amazon, Google, Microsoft) have non-relational engines! While Amazon and Microsoft <em>also</em> have a cloud relational database, each comes at a different cost.</p>
<p>I see Amazon SimpleDB, Google&#8217;s BigTable, Windows Azure Storage Tables and others being a big NoSQL driver because of their price and scalability features. Once enterprises start moving into the Cloud and onto Cloud services I think we will see more architects evaluating and pushing for NoSQL.</p>
]]></content:encoded>
			<wfw:commentRss>http://willcodeforcoffee.com/2010/03/02/nosql-and-the-end-of-object-relational-models/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Oh Unit Tests? Wherefore Art Thou, Unit Tests?</title>
		<link>http://willcodeforcoffee.com/2010/02/26/oh-unit-tests-wherefore-art-thou-unit-tests/</link>
		<comments>http://willcodeforcoffee.com/2010/02/26/oh-unit-tests-wherefore-art-thou-unit-tests/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 18:07:05 +0000</pubDate>
		<dc:creator>eric</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[My Two Cents]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://willcodeforcoffee.com/?p=119</guid>
		<description><![CDATA[The first red flag was that this was a Visual Studio 2005 project and I was using Visual Studio 2008; the second was the five projects that couldn't be found in VSS - each one ending with .Test...]]></description>
			<content:encoded><![CDATA[<p>There are few things that help a developer maintain an application better than Unit Tests. There are a few things that make me nervous when I open a solution from VSS, but nothing makes me more nervous than a lack of unit tests projects.</p>
<p>I know the Unit Testing drum has been beaten for years, so instead of getting on a soap box and berating the Internet for not Unit Testing, I&#8217;m going to give you a story about a recent project I worked on, and how unit testing helped me succeed.</p>
<p><span id="more-119"></span>It all started last fall when I started work at a new client&#8217;s office. I opened the project from VSS and red flags started popping up. The first red flag was that this was a Visual Studio 2005 project and I was using Visual Studio 2008 (they did not install VS2005 on my computer), but this wasn&#8217;t really a problem &#8211; I was <em>assured </em>that they had standardized on Visual Studio 2008 now and the .NET Framework 3.5. The second red flag was the five projects in the Solution that couldn&#8217;t be found in VSS &#8211; each one ending with .Tests. I still don&#8217;t know why they were removed &#8211; but my guess is that they were removed because they didn&#8217;t pass.</p>
<p>The first thing I did was create a new Unit Test project. After examining source code thoroughly I created a test harness of unit tests of the existing functionality of the project. This is a very difficult and risky task since these tests are built under the assumption the current code works correctly! This is <strong>not</strong> a safe assumption when projects are missing from the solution. However, the fewer behavior changes I introduced to a program already in production use the better.</p>
<p>During this period (probably one week) I uncovered and fixed many bugs. I re-factored a lot of code. I did more testing.</p>
<p>Then I added my new functionality, retested and it worked.</p>
<p>I added more tests. They went from red to green.</p>
<p>My confidence grew with each little green light.</p>
<p>I added integration tests to the unit tests. These all passed.</p>
<p>Eventually the program was ready for deployment to the testing server (UAT &#8211; User Acceptance Testing) &#8211; a model of the production environment. And I was confident! My tests were passing!</p>
<p>This is when everything went wrong.</p>
<p>The Problem? Updating to the .NET Framework 3.5. Of course I had been misled when they assured me that they standardized on 3.5 &#8211; the production environment was still very much in 2.0 (and I was <em>strongly</em> assured they would not upgrade &#8211; even though I hadn&#8217;t asked).</p>
<p>The Solution? Unit Testing! I had extensively used the new productivity features of 3.5 like LINQ and Extension Methods. It took some rewriting and work but I was able to revert and rewrite everything back to 2.0 compatibility in one afternoon! The <strong>only </strong>reason I could do it so quickly was the unit tests I wrote that told me the functionality was still there and working in the old Framework. It took more time to find another computer with Visual Studio 2005 and the .NET Framework 2.0 installed (and not the 3.5 installed at all) than it took to rewrite the app to the older framework version.</p>
<p>There were more problems that were solved with more testing, but Unit Tests saved me a lot of time and guessing. There were some other things that could have made the project more successful such as better communication with other developers and the production team. Those issues were beyond my control. But I was so glad I had those unit tests, they saved my bacon. They gave me confidence in the completed software. The Unit Tests were also something I could show my client, the maintenance teams, and the testing teams in terms of functionality assurance for them.</p>
<p>Ah success! A new project! Another Solution! &#8230;and guess what? No unit tests. *sigh* Here we go again! <img src='http://willcodeforcoffee.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://willcodeforcoffee.com/2010/02/26/oh-unit-tests-wherefore-art-thou-unit-tests/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Chrome OS / Microsoft Bing</title>
		<link>http://willcodeforcoffee.com/2009/07/11/google-chrome-os-microsoft-bing/</link>
		<comments>http://willcodeforcoffee.com/2009/07/11/google-chrome-os-microsoft-bing/#comments</comments>
		<pubDate>Sat, 11 Jul 2009 04:24:09 +0000</pubDate>
		<dc:creator>eric</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Microsoft Bing Google Chrome OS]]></category>

		<guid isPermaLink="false">http://willcodeforcoffee.com/?p=92</guid>
		<description><![CDATA[Google and Microsoft are starting a real &#8220;battle&#8221; of the titans, with Microsoft releasing a new search engine (Bing) and Google announcing Chrome OS. The thing is, why are these two competing?  They both have their own monopolies in their own right, Google is now a verb meaning to search the web, and Microsoft Windows [...]]]></description>
			<content:encoded><![CDATA[<p>Google and Microsoft are starting a real &#8220;battle&#8221; of the titans, with Microsoft releasing a new search engine (<a title="Microsoft Bing" href="http://www.bing.com/" target="_blank">Bing</a>) and Google <a title="Introducing Google Chrome OS" href="http://googleblog.blogspot.com/2009/07/introducing-google-chrome-os.html" target="_blank">announcing Chrome OS</a>.</p>
<p>The thing is, why are these two competing?  They both have their own monopolies in their own right, Google is now a verb meaning to search the web, and Microsoft Windows is the nearly ubiquitous operating system, even on netbooks.</p>
<p>The biggest problem I have with Google&#8217;s Chrome OS is that Microsoft is on the verge of releasing Windows 7, which according to many reviewers will be the best version of Windows yet &#8211; and it runs well on current Netbooks.  Chrome OS is going to be a &#8216;lightweight&#8217; OS designed for running a web browser and web-based content.  This will mean that Netbooks based on Chrome OS can only run apps like Google Docs online instead of Microsoft Office, YouTube instead of Windows Media player.</p>
<p>I see the same problem with Microsoft&#8217;s Bing.  It doesn&#8217;t do anything I&#8217;m not already getting from Google search.  It just does the same thing, in the same way.  There is nothing really to help me do more, or bring me better quality search results than I&#8217;m already getting.</p>
<p><span id="more-92"></span>To promote Chrome OS Google is probably going to provide incentives to both hardware manufacturers, maybe it will run on cheaper hardware?  But it&#8217;s not like current Linux and Windows powered netbooks are that expensive.  In typical Microsoft fashion Bing has a huge focus on Developer <a title="Steve Balmer Developers Remix" href="http://www.youtube.com/watch?v=hadxBZWxNrs" target="_blank"><em>(developers! developers!)</em></a> APIs hoping that someone else will make a killer app for them.  Microsoft is a Platform company after all, and Google is a Search company.</p>
<p>We&#8217;ll see what happens in the end, but it&#8217;s pretty difficult for these companies to switch their identity with consumers.</p>
]]></content:encoded>
			<wfw:commentRss>http://willcodeforcoffee.com/2009/07/11/google-chrome-os-microsoft-bing/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
