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

<channel>
	<title>Headspring &#187; Kevin Hurwitz</title>
	<atom:link href="http://www.headspring.com/author/khurwitz/feed" rel="self" type="application/rss+xml" />
	<link>http://www.headspring.com</link>
	<description>Custom software... Done right the first time.</description>
	<lastBuildDate>Wed, 16 May 2012 18:27:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2</generator>
	<copyright>Copyright © Headspring 2012 </copyright>
	<managingEditor>marketing@headspring.com (Jeffrey Palermo and Kevin Hurwitz)</managingEditor>
	<webMaster>marketing@headspring.com (Jeffrey Palermo and Kevin Hurwitz)</webMaster>
	<ttl>1440</ttl>
	<image>
		<url>http://www.headspring.com/wp-content/uploads/2012/05/HeadspringFlair144.jpg</url>
		<title>Headspring</title>
		<link>http://www.headspring.com</link>
		<width>144</width>
		<height>144</height>
	</image>
	<itunes:subtitle>We believe there is a better way</itunes:subtitle>
	<itunes:summary>Are you a lifelong learner?  Are you always searching for better ways to develop and maintain software?  So are we!  A passion for learning and growth is a core value at Headspring.  In this podcast, Headspring consultants, programmers, software developers, managers, and executives share the skills, techniques, patterns, and tools that have proven effective on clients&#039; consulting projects.  Headspring is a software consulting company in Austin, TX and has been recognized on the Inc 500 list and the Austin Business Journal&#039;s Best Place to Work award.</itunes:summary>
	<itunes:keywords>headspring, software, line, business, enterprise, applications, custom, MVC, Net, C, database, SQL</itunes:keywords>
	<itunes:category text="Technology" />
	<itunes:category text="Business" />
	<itunes:category text="Education">
		<itunes:category text="Training" />
	</itunes:category>
	<itunes:author>Jeffrey Palermo and Kevin Hurwitz</itunes:author>
	<itunes:owner>
		<itunes:name>Jeffrey Palermo and Kevin Hurwitz</itunes:name>
		<itunes:email>marketing@headspring.com</itunes:email>
	</itunes:owner>
	<itunes:block>no</itunes:block>
	<itunes:explicit>no</itunes:explicit>
	<itunes:image href="http://www.headspring.com/wp-content/uploads/2012/05/HeadspringFlair600.jpg" />
		<item>
		<title>The Secret Sauce of Business Intelligence: OLAP vs Relational Schemas</title>
		<link>http://www.headspring.com/2011/07/the-secret-sauce-of-business-intelligence-olap-vs-relational-schemas</link>
		<comments>http://www.headspring.com/2011/07/the-secret-sauce-of-business-intelligence-olap-vs-relational-schemas#comments</comments>
		<pubDate>Fri, 29 Jul 2011 20:33:08 +0000</pubDate>
		<dc:creator>Kevin Hurwitz</dc:creator>
				<category><![CDATA[Bonus!]]></category>
		<category><![CDATA[Developer Deep Dive]]></category>

		<guid isPermaLink="false">http://www.headspring.com/?p=979</guid>
		<description><![CDATA[Ever heard the terms star schema, OLAP, fact table, dimension, or business ...]]></description>
			<content:encoded><![CDATA[<p>Ever heard the terms <em>star schema, OLAP, fact table, dimension, </em>or<em> business intelligence</em> and wondered what they meant and/or why you should care?  I learned what these terms meant five years ago, and I have found powerful usages for these concepts ever since.</p>
<p>Imagine your business owner is a restaurant manager.  You&#8217;ve built a point of sale system that records what customers have ordered.  Begrudgingly, you have also built some canned reports to list out sales transactions within a user-entered date range.  The restaurant manager could browse the transaction history for a particular month to learn<span id="more-979"></span> which menu items customers seem to like and at what times they tend to eat.  However, it will be difficult to really quantify those trends.  Are sales for the Caesar Salad going up or down?  How many more Caesar Salads were ordered than House Salads?  What was the most popular hour of the day to dine during weekdays?  On the weekends?  Inevitably, your business owner will get tired of trekking down to your desk to ask you those questions, and you will get tired of creating a seemingly endless set of &#8220;canned&#8221; reports.</p>
<p>Wouldn&#8217;t it be great if your client could answer those questions herself?  She can &#8211; she just needs a business intelligence solution!</p>
<p>First, design a star schema.  A star schema is a special type of relational database schema that has at least one <em>fact table</em> and zero to many <em>dimension tables</em>.  The dimension tables are optional, so let&#8217;s focus on the fact table.  A fact table has two types of columns, dimensions and facts.  <em>Dimension columns</em> for our sales fact table would include Hour of Day, Date, Month, Quarter, Year, Day Type (Weekday, Weekend), Product Category (Salad, Appetizer, Main Course, etc.), and Product.  Notice, although all of the date-related fields could be inferred from a transaction time-stamp, all of the columns are broken out individually.  This is an example of the secret sauce of business intelligence &#8211; <em>denormalization</em>. Also, the Hour of Day column should have user-readable values such as &#8220;3:00 PM &#8211; 4:00 PM&#8221;, not 15 or 15:00.  Our fact table could only have a single <em>fact column, </em>amount.</p>
<p>Second, build an ETL (Extract, Transform, Load) process.  This process should run every night and import new records from the transactional point of sales system (OLTP) database into your star schema.  In some cases, it might just be easier to replace all of the data in your star schema on a nightly basis &#8211; it just depends on how much data you have.</p>
<p>Third, use Excel&#8217;s ability to connect to a database server and add PivotTable functionality on top of your sales fact table.  Before you know it, your business user will be answering all of the questions I raised before, and a thousand others &#8211; without having to hound you for new canned reports!</p>
<p>p.s.  OLAP is a different kind of data structure that can be built directly from your star schema.  It&#8217;s important when you have an enormous amount of data that must be sliced and diced quickly.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.headspring.com/2011/07/the-secret-sauce-of-business-intelligence-olap-vs-relational-schemas/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Test-driven development</title>
		<link>http://www.headspring.com/2011/07/test-driven-development</link>
		<comments>http://www.headspring.com/2011/07/test-driven-development#comments</comments>
		<pubDate>Fri, 15 Jul 2011 02:10:18 +0000</pubDate>
		<dc:creator>Kevin Hurwitz</dc:creator>
				<category><![CDATA[Developer Deep Dive]]></category>
		<category><![CDATA[duo]]></category>
		<category><![CDATA[featured]]></category>

		<guid isPermaLink="false">http://www.headspring.com/?p=425</guid>
		<description><![CDATA[TDD is an excellent safeguard against bugs. Why is test-driven development specifically ...]]></description>
			<content:encoded><![CDATA[<div id="attachment_426" class="wp-caption alignright" style="width: 310px"><img class="size-medium wp-image-426" title="RubeGoldberg" src="http://www.headspring.com/wp-content/uploads/2011/07/RubeGoldberg-300x184.gif" alt="" width="300" height="184" /><p class="wp-caption-text">A as you raise spoon of soup to your mouth B it pulls the string C thereby jerking the ladle D which throws the cracker E past the parrot which jumps F causing the perch to tilt G upsetting seeds H into the pail I adding the extra weight to pull the cord J which opens and lights the automatic cigar lighter K setting off the rocket L which causes the sickle M to cut the string allowing the napkin to swing wiping off your chin</p></div>
<p>TDD is an excellent safeguard against bugs. Why is test-driven development specifically vital in Agile development?</p>
<p>The hardest part of implementing a new feature is keeping all of the existing features working.</p>
<p>Software can be very complicated, and if you were trying to visualize it, although I don&#8217;t like to compare the software we build to a Rube Goldberg machine, you might be able to think of it in those terms, in that if you have a device which works in just such a way and then you add to it there is a good chance that it will no longer continue to work like it did.<span id="more-425"></span></p>
<p>What <a href="http://blogs.headspring.com/ct.ashx?id=ddf45824-0a82-45ef-9f06-92561d41a5f0&amp;url=http%3a%2f%2fwww.headspringsystems.com%2fagile-development%2ftest-driven-development%2f" target="_blank">test-driven development</a> allows you to do is to essentially lock into place the features that you&#8217;ve built that you know were working, so that in the future if anything you change would affect the functionality of those features you&#8217;ll get a report on that within an hour or two at the most. Then you can take corrective action without having to do exhaustive testing on the system, which, when a system becomes significant, can actually become almost impossible to do by humans.</p>
<p>I think anyone that&#8217;s been in software development, who has done a software project, either internally or with a partner, has probably experienced bugs and defects. Typically you&#8217;ll see those when you add a feature and a couple of things break that used to work. That happens a lot. It is a trapping of development.</p>
<p>Whether it is in Agile development methodology or whether it&#8217;s in something else it is critical to make sure the software quality is present as one works into the future in enhancing or adding to the system.</p>
<p>Typically, a lot of the systems that we see are pretty critical to running a client&#8217;s business or to executing projects. They are something that helps businesses, from a technology side, have an advantage over their competition or deliver their services faster or better or in a more streamlined manner. When you have a system like that, that is that critical, you can&#8217;t afford to have downtime. You can&#8217;t afford to add a feature and then have ten things that used to work break, and so test-driven development is important because it helps mitigate the risk and helps issues come to the surface much more quickly before they&#8217;ve reached production or affected customer service negatively.</p>
<p>Specifically with regards to Agile, test-driven development allows you to change the system which is the whole basis for Agile development in the first place. (Without going into the long explanation of Agile essentially it means that instead of waiting for a year to release the software you&#8217;ll wait a month with the expectation that you&#8217;ll change it again each month and release it again. Because you&#8217;re iterating on functionality development, you&#8217;re going to be changing existing functionality over and over again until you get to your ultimate goals.) Having a system that you can change quickly is critical to Agile development.</p>
<h2>The Gotcha Question (and its answer)</h2>
<p>Given the protections of TDD, why should stakeholders feel the need to manually test or demo code or to kick the tires at any level whatsoever?</p>
<p>One of the misperceptions about test-driven development is that it results in 100% defect-free software, and that&#8217;s actually not the case, because the software you write is only as good as the ways you think to test it. You might think of the same thing for perhaps a building in that a building&#8217;s strength is only as good as the weight against it, testing it, and if you don&#8217;t plan for a certain type of event, like an earthquake or a strong wind from a certain angle, then the building could potentially fail because the tests the building was put through did not account for the scenario. It is the same with software.</p>
<ul>
<li>The advantage of TDD is that when you do discover that defect, you can write a test to expose the defect, correct the defect, and never see it again.</li>
<li>The introduction of defects is actually not the biggest problem. The biggest problem is the introduction of defects over and over again as you maintain the software that can really kill the software&#8217;s budget and thus the effectiveness of an organization&#8217;s operations.</li>
</ul>
<p>I think there are certain things that tests can&#8217;t account for and it deals with the user interaction side of applications. It&#8217;s important for clients to test the system or use it just to make sure that it functions how they thought it would. Chances are really good that when a client conceives of a new piece of functionality, or a new idea, that they see it working in their head one way, but once they actually use it they realize they&#8217;ve learned new things that they didn&#8217;t know before and that they&#8217;ll want to implement some changes to that end. So, while the software can work exactly as it was designed to work, it might not be quite right for the business goals or the goals of the client, and so, just from that standpoint alone, making sure that the software is aligned with business goals and not with mean functional specifications is really important.</p>
<p>A test does not guarantee that there are zero defects. It just guarantees that there are no defects in the, in the ways the system is being tested. But, as the system matures and is tested and put through more and more rigorous paces, TDD essentially just cuts out a lot of wasted time that you might have otherwise accrued. Without getting too philosophical, because humans create software and humans are flawed, software, in a sense, will always be somewhat flawed, but that doesn’t mean you shouldn&#8217;t enforce strict engineering principles to try to improve the quality of what you create.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.headspring.com/2011/07/test-driven-development/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Served from: www.headspring.com @ 2012-05-18 12:47:10 -->
