<?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:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Business Savvy Software</title>
	<atom:link href="http://businesssavvysoftware.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://businesssavvysoftware.com</link>
	<description>The crossover between business and software</description>
	<lastBuildDate>Wed, 01 Feb 2012 11:40:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='businesssavvysoftware.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Business Savvy Software</title>
		<link>http://businesssavvysoftware.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://businesssavvysoftware.com/osd.xml" title="Business Savvy Software" />
	<atom:link rel='hub' href='http://businesssavvysoftware.com/?pushpress=hub'/>
		<item>
		<title>Dream big in 2011</title>
		<link>http://businesssavvysoftware.com/2010/12/23/dream-big-in-2011/</link>
		<comments>http://businesssavvysoftware.com/2010/12/23/dream-big-in-2011/#comments</comments>
		<pubDate>Thu, 23 Dec 2010 08:23:20 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Vision]]></category>

		<guid isPermaLink="false">http://businesssavvysoftware.com/?p=507</guid>
		<description><![CDATA[The EndGame Moleskine Nothing shows potential like a blank piece of paper. It can hold words, thoughts, sketches, eureka moments, hard won conclusions.  Given the right treatment it can even fly across the room. So &#8230; what could happen if you filled the blank pages in this journal with your words, thoughts and sketches?  If [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=businesssavvysoftware.com&amp;blog=1101230&amp;post=507&amp;subd=businesssavvysoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong>The EndGame Moleskine</strong></p>
<p><a href="http://businesssavvysoftware.files.wordpress.com/2010/12/img_07881.jpg"><img class="aligncenter size-full wp-image-509" title="IMG_0788" src="http://businesssavvysoftware.files.wordpress.com/2010/12/img_07881.jpg?w=450&#038;h=336" alt="" width="450" height="336" /></a></p>
<p>Nothing shows potential like a blank piece of paper.</p>
<p>It can hold words, thoughts, sketches, eureka moments, hard won conclusions.  Given the right treatment it can even fly across the room.</p>
<p>So &#8230; what could happen if you filled the blank pages in this journal with your words, thoughts and sketches?  If you dreamed for a bit, then picked up a pencil, what could you design?  What is waiting to be built?  What investment could lead to something great?</p>
<p>Dream big in 2011, then design well, build well, invest well.</p>
<p>Happy Christmas and God bless.</p>
<p>Andrew, Jamie and Simon.</p>
<p><a href="http://www.end-game.com" target="_blank">www.end-game.com</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/businesssavvysoftware.wordpress.com/507/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/businesssavvysoftware.wordpress.com/507/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/businesssavvysoftware.wordpress.com/507/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/businesssavvysoftware.wordpress.com/507/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/businesssavvysoftware.wordpress.com/507/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/businesssavvysoftware.wordpress.com/507/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/businesssavvysoftware.wordpress.com/507/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/businesssavvysoftware.wordpress.com/507/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/businesssavvysoftware.wordpress.com/507/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/businesssavvysoftware.wordpress.com/507/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/businesssavvysoftware.wordpress.com/507/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/businesssavvysoftware.wordpress.com/507/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/businesssavvysoftware.wordpress.com/507/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/businesssavvysoftware.wordpress.com/507/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=businesssavvysoftware.com&amp;blog=1101230&amp;post=507&amp;subd=businesssavvysoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://businesssavvysoftware.com/2010/12/23/dream-big-in-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/379a7f89d14bbbd8296df15f2d1678bb?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Andrew</media:title>
		</media:content>

		<media:content url="http://businesssavvysoftware.files.wordpress.com/2010/12/img_07881.jpg" medium="image">
			<media:title type="html">IMG_0788</media:title>
		</media:content>
	</item>
		<item>
		<title>SCM with Accurev</title>
		<link>http://businesssavvysoftware.com/2010/11/03/scm-with-accurev/</link>
		<comments>http://businesssavvysoftware.com/2010/11/03/scm-with-accurev/#comments</comments>
		<pubDate>Wed, 03 Nov 2010 09:49:30 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://businesssavvysoftware.com/?p=487</guid>
		<description><![CDATA[Starting a new software project (or company!) gives you the opportunity to have a clean slate with the tools and processes you&#8217;ll use. Starting EndGame &#8211; I figured that to be genuinly agile, we needed to have agile tools, not just agile ideals. I adpoted the YAGNI policy when it came to tools and our [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=businesssavvysoftware.com&amp;blog=1101230&amp;post=487&amp;subd=businesssavvysoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Starting a new software project (or company!) gives you the opportunity to have a clean slate with the tools and processes you&#8217;ll use.  Starting <a href="http://www.end-game.com" target="_blank">EndGame</a> &#8211; I figured that to be genuinly agile, we needed to have agile tools, not just agile ideals.  I adpoted the YAGNI policy when it came to tools and our development environment and only introduced a tool when we absolutely needed it.  It took us 5 months before we needed an issue tracker &#8211; until then, google docs did the trick.</p>
<p>One thing we did implement on day 1 was <a href="http://www.accurev.com" target="_blank">AccuRev</a>, and its changed the way we build and deploy software.  AccuRev is a software configuration management&#8221; system that allows an agile approach to development and lies at the heart of our entire development process.  I&#8217;m going to describe how we&#8217;ve deployed AccuRev across the 10 or so projects we&#8217;ve worked on this year, but first &#8211; a few definitions for the pre-AccuRev readers:</p>
<p><strong>Depot</strong>: a depot is like a repository and we have one per product/client.  A depot represents a walled development environment &#8211; allowing product and client work to be kept separate from other depots.</p>
<p><strong>Stream</strong>: Accurev has streams instead of branches.  Streams represent your work environment, with stage downstream from production and development downstream from stage. To push a change package to stage, you drag it from the development stream to the stage stream, and like-wise to push it live.  All changes flow automatically downstream, so its like an automated merge between branches everytime you promote.</p>
<p><strong>Promote</strong>: like doing a check-in, promoting pushes your source code upstream.  In the first instance, you promote to the development stream you&#8217;re working in, and from there we promote to a staging stream, then to production.</p>
<p><strong>Change package</strong>: a set of source code files that have been changed due to a work issue.</p>
<p>Here&#8217;s how we&#8217;ve got it working for us:</p>
<p><strong>1. The roadmap<br />
</strong>Everything starts on a whiteboard or with user feedback and makes its way into a backlog.  From there, we plan out our time across various projects and clients using <a href="http://www.tryhive.com" target="_blank">Hive</a> &#8211; the project scheduling tool we&#8217;ve been developing this year.  Hive allows us to plan out milestones and high level goals and make sure we&#8217;re not over-resourcing.</p>
<p><a href="http://businesssavvysoftware.files.wordpress.com/2010/11/hive.png"><img class="aligncenter size-full wp-image-488" title="hive" src="http://businesssavvysoftware.files.wordpress.com/2010/11/hive.png?w=450&#038;h=320" alt="" width="450" height="320" /></a></p>
<p>Using the Hive API, we then pull out the milestones to provide a high level roadmap on our project dashboard.</p>
<p><strong>2. Work and Issues<br />
</strong>Once we&#8217;ve decided on high level goals of the next cycle(s), we convert it to work/enhancement/defect issues using AccuRev&#8217;s built in issue tracker &#8211; AccuWork.  We looked at whether to use a third party issue tracker and integrate it, but Accuwork is quite a powerful system and is fully integrated with AccuRev.  To provide an integrated project dashboard, we built a UI over Accuwork so that work issues can be linked to hive milestones and hooked into project documentation.  It also allows our project dashboard to track progress in a cycle of work done vs budget.</p>
<p><a href="http://businesssavvysoftware.files.wordpress.com/2010/11/accuwork.jpg"><img class="aligncenter size-full wp-image-492" title="Accuwork" src="http://businesssavvysoftware.files.wordpress.com/2010/11/accuwork.jpg?w=450&#038;h=217" alt="" width="450" height="217" /></a></p>
<p><strong>3. Documentation<br />
</strong>We&#8217;re pretty light on documentation &#8211; most revolves around  a whiteboard and visual designs, however there&#8217;s always need for some level of written requirements and specifications. Within our project dashboard, each work issue can be linked to a page in our Wiki, so the spec is only one click away.  The flip side is that when viewing a page in the wiki &#8211; all related issues can be listed. Once in the wiki, each page is has a variety of related pages, so its easy to jump between related specs. Our wiki uses Zoho docs and spreadsheet editors inline to provide an OK rich editor.</p>
<p><a href="http://businesssavvysoftware.files.wordpress.com/2010/11/screen-shot-2010-11-03-at-10-11-16-pm.png"><img class="aligncenter size-full wp-image-493" title="Screen shot 2010-11-03 at 10.11.16 PM" src="http://businesssavvysoftware.files.wordpress.com/2010/11/screen-shot-2010-11-03-at-10-11-16-pm.png?w=450&#038;h=241" alt="" width="450" height="241" /></a></p>
<p><strong>4. Accurev streams<br />
</strong>Streams are where Accurev really stands out.  For each product, we setup a new depot and create streams for production, stage and dev.  Because we&#8217;re a small team we usually only need one dev stream, but Accurev supports multiple downstream and parallel streams.  Development happens in personal workspaces and work is promoted against an issue number in to the dev stream.  From there, we can promote issues to stage and from stage to live.  By promoting an issue, it pulls all source changes with it.  This allows us shift a change package associated with a single issue from stream to stream just with a simple drag and drop.  We may have 10 change packages on stage and pull just 5 to our release candidate site.  After another check of the RC, those five issues can be drag-and-dropped to the production site to deploy them.</p>
<p><a href="http://businesssavvysoftware.files.wordpress.com/2010/11/accurevstreams.jpg"><img class="aligncenter size-full wp-image-494" title="AccurevStreams" src="http://businesssavvysoftware.files.wordpress.com/2010/11/accurevstreams.jpg?w=450&#038;h=201" alt="" width="450" height="201" /></a></p>
<p><strong>5. Promote triggers<br />
</strong>When we promote to dev, stage, or live &#8211; an Accurev trigger fires automatically and updates the status of all issues that have been promoted.  When promoting to stage or live, release notes are created with a list of issues and promote comments (and posted automatically to our Yammer feed and project dashboard).  This keeps the issues up to date and also provides a record of what we&#8217;re working on &#8211; again, giving customers more visibility of progress on their project.</p>
<p><a href="http://businesssavvysoftware.files.wordpress.com/2010/11/screen-shot-2010-11-03-at-10-20-33-pm.png"><img class="aligncenter size-full wp-image-495" title="Screen shot 2010-11-03 at 10.20.33 PM" src="http://businesssavvysoftware.files.wordpress.com/2010/11/screen-shot-2010-11-03-at-10-20-33-pm.png?w=450" alt=""   /></a></p>
<p><strong>6. Automated build and deployment</strong><br />
Automating builds and deployments changes the way you work.  We use CruiseControl.NET to deploy to our stage and live sites and it works beautifully with AccuRev.  Because of AccuRev&#8217;s streams, CC.NET is only deploying the change packages in a stream.  So, where you typically might have an integration branch that you&#8217;re developing into, rolling to stage and eventually rolling to live &#8211; in AccuRev you&#8217;d have three streams instead.  The live site is built and deployed against the live stream, so will only include change packages that have been promoted to live.  Same for stage.  So, building and deploying a site is now independent of what developers are checking in &#8211; its all about what is being promoted upstream (and sometimes demoted again!).  For a small dev team, we&#8217;d never go to the effort of separating all these steps into separate branches, so AccuRev gives us a process that is incredibly robust without massive overheads.</p>
<p><strong>7. The project dashboard</strong><br />
I&#8217;ve mentioned a few times about the project dashboard.  This is a web app that we&#8217;ve built that pulls everything together and gives visibility to the team and the customer.  It includes:</p>
<p>- Trackers of cost vs budget, pulled live from our time tracker (Freckle)<br />
- Trackers of work completed, pulled live from AccuWork<br />
- Trackers of google analytics, twitter, sales metrics and usage metrics for each app<br />
- Summary of the roadmap, pulled live from Hive<br />
- Work issues, pulled live from Accuwork<br />
- Wiki<br />
- Status updates</p>
<p>Providing some confidence around price and a roadmap can be hard with an agile process.  At the beginning of a project, or a cycle, the client usually wants a price and we plan it to the best of our foresight.  The question then becomes whether this is a fixed price or an estimate of time &amp; materials.  We work with a mixture of both &#8211; typically a fixed price for a small project that is a single dev cycle or a license and estimates for the larger projects.  This raises the issue of how does the customer have some confidence that they&#8217;re going to get what they are paying for.  An approach of &#8220;we&#8217;ll work down the prioritised list until we run out of budget&#8221; is fairly risky and relies on trust.  This is where our project dashboard comes in as an attempt to give the client full visibility of what&#8217;s happening in the project &#8211; in realtime.</p>
<p><a href="http://businesssavvysoftware.files.wordpress.com/2010/11/projectdash.jpg"><img class="aligncenter size-full wp-image-502" title="ProjectDash" src="http://businesssavvysoftware.files.wordpress.com/2010/11/projectdash.jpg?w=450" alt=""   /></a></p>
<p>&nbsp;</p>
<p>That&#8217;s a snapshot of how we do SCM as of 3 November 2010.  I&#8217;m sure it will be improved by the beginning of 2011, if not by next week.  If you haven&#8217;t used a system like Accurev before, I can recommend joining one of their webinars and seeing just how important it is to have agile tools as well as agile intentions.  <a href="http://www.accurev.com" target="_blank">www.accurev.com</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/businesssavvysoftware.wordpress.com/487/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/businesssavvysoftware.wordpress.com/487/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/businesssavvysoftware.wordpress.com/487/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/businesssavvysoftware.wordpress.com/487/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/businesssavvysoftware.wordpress.com/487/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/businesssavvysoftware.wordpress.com/487/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/businesssavvysoftware.wordpress.com/487/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/businesssavvysoftware.wordpress.com/487/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/businesssavvysoftware.wordpress.com/487/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/businesssavvysoftware.wordpress.com/487/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/businesssavvysoftware.wordpress.com/487/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/businesssavvysoftware.wordpress.com/487/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/businesssavvysoftware.wordpress.com/487/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/businesssavvysoftware.wordpress.com/487/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=businesssavvysoftware.com&amp;blog=1101230&amp;post=487&amp;subd=businesssavvysoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://businesssavvysoftware.com/2010/11/03/scm-with-accurev/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/379a7f89d14bbbd8296df15f2d1678bb?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Andrew</media:title>
		</media:content>

		<media:content url="http://businesssavvysoftware.files.wordpress.com/2010/11/hive.png" medium="image">
			<media:title type="html">hive</media:title>
		</media:content>

		<media:content url="http://businesssavvysoftware.files.wordpress.com/2010/11/accuwork.jpg" medium="image">
			<media:title type="html">Accuwork</media:title>
		</media:content>

		<media:content url="http://businesssavvysoftware.files.wordpress.com/2010/11/screen-shot-2010-11-03-at-10-11-16-pm.png" medium="image">
			<media:title type="html">Screen shot 2010-11-03 at 10.11.16 PM</media:title>
		</media:content>

		<media:content url="http://businesssavvysoftware.files.wordpress.com/2010/11/accurevstreams.jpg" medium="image">
			<media:title type="html">AccurevStreams</media:title>
		</media:content>

		<media:content url="http://businesssavvysoftware.files.wordpress.com/2010/11/screen-shot-2010-11-03-at-10-20-33-pm.png" medium="image">
			<media:title type="html">Screen shot 2010-11-03 at 10.20.33 PM</media:title>
		</media:content>

		<media:content url="http://businesssavvysoftware.files.wordpress.com/2010/11/projectdash.jpg" medium="image">
			<media:title type="html">ProjectDash</media:title>
		</media:content>
	</item>
		<item>
		<title>What we&#8217;ve been up to this year</title>
		<link>http://businesssavvysoftware.com/2010/10/14/what-weve-been-up-to-this-year/</link>
		<comments>http://businesssavvysoftware.com/2010/10/14/what-weve-been-up-to-this-year/#comments</comments>
		<pubDate>Thu, 14 Oct 2010 07:47:28 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://businesssavvysoftware.com/?p=477</guid>
		<description><![CDATA[I haven&#8217;t talked much about the projects we&#8217;ve had and have on the go this year &#8211; but I intend to! In the meantime, we&#8217;ve finally got ourselves a simple website (minty!) that highlights a few of the projects we&#8217;ve done this year. If you&#8217;re interested, have a look here: http://www.end-game.com.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=businesssavvysoftware.com&amp;blog=1101230&amp;post=477&amp;subd=businesssavvysoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I haven&#8217;t talked much about the projects we&#8217;ve had and have on the go this year &#8211; but I intend to!</p>
<p>In the meantime, we&#8217;ve finally got ourselves a simple website (minty!) that highlights a few of the projects we&#8217;ve done this year. If you&#8217;re interested, have a look here: <a href="http://www.end-game.com" target="_blank">http://www.end-game.com</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/businesssavvysoftware.wordpress.com/477/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/businesssavvysoftware.wordpress.com/477/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/businesssavvysoftware.wordpress.com/477/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/businesssavvysoftware.wordpress.com/477/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/businesssavvysoftware.wordpress.com/477/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/businesssavvysoftware.wordpress.com/477/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/businesssavvysoftware.wordpress.com/477/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/businesssavvysoftware.wordpress.com/477/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/businesssavvysoftware.wordpress.com/477/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/businesssavvysoftware.wordpress.com/477/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/businesssavvysoftware.wordpress.com/477/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/businesssavvysoftware.wordpress.com/477/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/businesssavvysoftware.wordpress.com/477/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/businesssavvysoftware.wordpress.com/477/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=businesssavvysoftware.com&amp;blog=1101230&amp;post=477&amp;subd=businesssavvysoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://businesssavvysoftware.com/2010/10/14/what-weve-been-up-to-this-year/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/379a7f89d14bbbd8296df15f2d1678bb?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Andrew</media:title>
		</media:content>
	</item>
		<item>
		<title>Managing Javascript &amp; CSS source files</title>
		<link>http://businesssavvysoftware.com/2010/09/03/managing-javascript-css-source-files/</link>
		<comments>http://businesssavvysoftware.com/2010/09/03/managing-javascript-css-source-files/#comments</comments>
		<pubDate>Fri, 03 Sep 2010 05:12:47 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[SaaS]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://businesssavvysoftware.com/?p=466</guid>
		<description><![CDATA[Early on in the development of Hive, we realised we needed a better way to manage javascript and CSS. As the javascript files got bigger we started having source code merges (shudder) and we occasionally would ship a version with debug code still in it. There are some really good systems out there for optimising [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=businesssavvysoftware.com&amp;blog=1101230&amp;post=466&amp;subd=businesssavvysoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste">Early on in the development of Hive, we realised we needed a better way to manage javascript and CSS.  As the javascript files got bigger we started having source code merges (shudder) and we occasionally would ship a version with debug code still in it.</div>
<p>There are some really good systems out there for optimising javascript &amp; CSS, but we thought we&#8217;d start simple and see how it went.  We&#8217;ve now rolled this system out over four applications and its working great.</p>
<p>To avoid source code merges, small and frequent check-ins are good, so using a source control system like Accurev where each developer has their own workspace is perfect.  Its also easier to maintain code and avoid merges if you can have one javascript class per file &#8211; but you end up with lots more files, which can make loading a page slower.</p>
<p>To solve this, we create as many javascript and CSS files as we need, then merge them on the fly.  This allows a single url <em>/scripts?version=x</em> to download all required scripts and an XML file manages which scripts will be merged and returned.  We also threw the Yahoo YUI library in there to minimize the javascript and CSS and reduce the overall size.</p>
<p>The other issue we were having was with debug code, swapping between debug and production libraries and remembering to remove console.log commands.  To solve this our XML file specifies a target, so the web.config can control which javascript files will get included.  We also use some REs to strip out debug commands on the fly.</p>
<p>Overall, a dead simple solution to solve 5 problems:</p>
<p>1. More files means easier to maintain and fewer source control merges<br />
2. On-the-fly merging means only one javascript &amp; one CSS per page, resulting in faster page loads<br />
3. Minifying the code means smaller javascript and CSS<br />
4. Stripping out console.log and other debug code means we can leave it in and not worry about it in production<br />
5. Swapping between debug and production versions of libraries is automatic</p>
<p>We can highly recommend the <a href="http://yuicompressor.codeplex.com/" target="_blank">YUI compressor for .NET</a> &#8211; which we use in this code snippit:</p>
<pre>public string GetJavascript()
{
    try
    {
        // Get the files from the XML index
        List&lt;string&gt; scriptFiles = GetJavascriptFiles();

        // Load the contents and put into a string
        var javascript = MergeFiles(scriptFiles);

        // Optimise
        if (_Target.ToLower() == "live")
        {
            // Strip out console.log, etc
            javascript = RemoveDebugCode(javascript);

            // Minimise using Yahoo YUI
            javascript = JavaScriptCompressor.Compress(javascript);
        }

        // return the result
        return javascript;
    }
    catch (Exception e)
    {
        return e.Message;
    }
}</pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/businesssavvysoftware.wordpress.com/466/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/businesssavvysoftware.wordpress.com/466/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/businesssavvysoftware.wordpress.com/466/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/businesssavvysoftware.wordpress.com/466/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/businesssavvysoftware.wordpress.com/466/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/businesssavvysoftware.wordpress.com/466/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/businesssavvysoftware.wordpress.com/466/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/businesssavvysoftware.wordpress.com/466/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/businesssavvysoftware.wordpress.com/466/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/businesssavvysoftware.wordpress.com/466/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/businesssavvysoftware.wordpress.com/466/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/businesssavvysoftware.wordpress.com/466/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/businesssavvysoftware.wordpress.com/466/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/businesssavvysoftware.wordpress.com/466/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=businesssavvysoftware.com&amp;blog=1101230&amp;post=466&amp;subd=businesssavvysoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://businesssavvysoftware.com/2010/09/03/managing-javascript-css-source-files/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/379a7f89d14bbbd8296df15f2d1678bb?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Andrew</media:title>
		</media:content>
	</item>
		<item>
		<title>Business Cards!</title>
		<link>http://businesssavvysoftware.com/2010/09/01/business-cards/</link>
		<comments>http://businesssavvysoftware.com/2010/09/01/business-cards/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 04:28:29 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[SVG]]></category>

		<guid isPermaLink="false">http://businesssavvysoftware.com/?p=458</guid>
		<description><![CDATA[We&#8217;ve been in business for 7 months so its about time we got some business cards printed, especially since we&#8217;ve finally settled on a logo! The company is called EndGame, so for a bit of fun we thought we&#8217;d put a maze on the back of the card.  The point of a maze is to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=businesssavvysoftware.com&amp;blog=1101230&amp;post=458&amp;subd=businesssavvysoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve been in business for 7 months so its about time we got some business cards printed, especially since we&#8217;ve finally settled on a logo!</p>
<p>The company is called EndGame, so for a bit of fun we thought we&#8217;d put a maze on the back of the card.  The point of a maze is to get to the end, ie that&#8217;s your EndGame.  Beautiful.  The logo is sort of half isometric, so we figured the maze needed to be isometric so that it could join up with the logo as the finish point.</p>
<p>Anyway, one thing led to another and soon I&#8217;m playing with a depth-first algorithm to create the maze, a winding number algorithm to keep the maze inside the right space and drawing lines at 30 degrees in SVG.</p>
<p>But that wasn&#8217;t enough, if we can draw one maze, then why not draw 1,000 mazes, so every card can have a unique solvable maze.  Everyone&#8217;s EndGame in life is different, so this seemed like a good idea.  To quote our printer, &#8220;that is out there and very different haha &#8220;awesome&#8221; and no -one has ever done this in my 20 + years of printing so your a first &#8230; &#8221;.</p>
<p>That&#8217;s it.  If we&#8217;re the first, then there&#8217;s no going back.</p>
<p><a href="http://businesssavvysoftware.files.wordpress.com/2010/08/businesscards.png"><img class="aligncenter size-full wp-image-459" title="BusinessCards" src="http://businesssavvysoftware.files.wordpress.com/2010/08/businesscards.png?w=450&#038;h=672" alt="" width="450" height="672" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/businesssavvysoftware.wordpress.com/458/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/businesssavvysoftware.wordpress.com/458/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/businesssavvysoftware.wordpress.com/458/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/businesssavvysoftware.wordpress.com/458/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/businesssavvysoftware.wordpress.com/458/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/businesssavvysoftware.wordpress.com/458/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/businesssavvysoftware.wordpress.com/458/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/businesssavvysoftware.wordpress.com/458/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/businesssavvysoftware.wordpress.com/458/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/businesssavvysoftware.wordpress.com/458/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/businesssavvysoftware.wordpress.com/458/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/businesssavvysoftware.wordpress.com/458/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/businesssavvysoftware.wordpress.com/458/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/businesssavvysoftware.wordpress.com/458/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=businesssavvysoftware.com&amp;blog=1101230&amp;post=458&amp;subd=businesssavvysoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://businesssavvysoftware.com/2010/09/01/business-cards/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/379a7f89d14bbbd8296df15f2d1678bb?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Andrew</media:title>
		</media:content>

		<media:content url="http://businesssavvysoftware.files.wordpress.com/2010/08/businesscards.png" medium="image">
			<media:title type="html">BusinessCards</media:title>
		</media:content>
	</item>
		<item>
		<title>Hive in BETA</title>
		<link>http://businesssavvysoftware.com/2010/08/26/hive-in-beta/</link>
		<comments>http://businesssavvysoftware.com/2010/08/26/hive-in-beta/#comments</comments>
		<pubDate>Thu, 26 Aug 2010 04:17:19 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[Fun]]></category>
		<category><![CDATA[Hive]]></category>
		<category><![CDATA[SaaS]]></category>
		<category><![CDATA[SVG]]></category>

		<guid isPermaLink="false">http://businesssavvysoftware.com/?p=450</guid>
		<description><![CDATA[Its a relief to see Hive finally out there in BETA and to see the feedback starting to flow in.  Hive is a project we&#8217;ve been working on this year and has been a lot of fun. Hive is a SaaS app for scheduling projects and people.  Its perfect for people with a team and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=businesssavvysoftware.com&amp;blog=1101230&amp;post=450&amp;subd=businesssavvysoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Its a relief to see <a href="http://www.tryhive.com">Hive</a> finally out there in BETA and to see the feedback starting to flow in.  Hive is a project we&#8217;ve been working on this year and has been a lot of fun.</p>
<p>Hive is a SaaS app for scheduling projects and people.  Its perfect for people with a team and a bunch of projects to manage.  Its based on the premise that most people hate project management and hate project management tools even more.  Hive lets you do in a visual, fun and collaborative way what people revert to spreadsheets for &#8211; to get visibility of what projects are on the go, who is working on them and to make sure you&#8217;re not over (or under!) capacity.</p>
<p>Hive is built as a one page web app and its always fun to run it in full screen mode and have people not believe its a web application.  We&#8217;ve had a lot of fun working with Darryl Gray who designed this stunning application.  Its been nice to have a project where we can make use of  the shiniest new CSS and javascript techniques with lots of drag-drop and animations, integrating SVG and wiring it all up to give a seamless user experience.  Seamless except for the bugs of course &#8211; but that&#8217;s what a BETA version is for!</p>
<p>As far as features go &#8211; the best of Hive is still to come.  Under the hood we&#8217;ve implemented live collaboration and its quite fun watching another user&#8217;s changes animate on your screen (this isn&#8217;t available in the current version).  We toyed with allowing viewstate changes to be sync&#8217;ed across users too &#8211; which is fun, but I&#8217;m not sure if its that useful.  Because Hive is based on an event model, we&#8217;ll be adding undo and redo support soon, but I&#8217;ll have to save details of that for another blog post.</p>
<p>We&#8217;ve also got some great reports, sharing, publishing and integrations planned, but the most important features to add going forward will be the ones asked for by users, so make sure you sign up at <a href="http://www.tryhive.com" target="_blank">www.tryhive.com</a>, have a play and send us your feedback.</p>
<p><a href="http://businesssavvysoftware.files.wordpress.com/2010/08/hive.png"><img class="aligncenter size-full wp-image-451" title="hive" src="http://businesssavvysoftware.files.wordpress.com/2010/08/hive.png?w=450&#038;h=320" alt="" width="450" height="320" /></a></p>
<p>p.s. The screenshot above features a slightly older version of the UI.  The latest version is even nicer.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/businesssavvysoftware.wordpress.com/450/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/businesssavvysoftware.wordpress.com/450/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/businesssavvysoftware.wordpress.com/450/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/businesssavvysoftware.wordpress.com/450/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/businesssavvysoftware.wordpress.com/450/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/businesssavvysoftware.wordpress.com/450/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/businesssavvysoftware.wordpress.com/450/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/businesssavvysoftware.wordpress.com/450/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/businesssavvysoftware.wordpress.com/450/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/businesssavvysoftware.wordpress.com/450/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/businesssavvysoftware.wordpress.com/450/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/businesssavvysoftware.wordpress.com/450/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/businesssavvysoftware.wordpress.com/450/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/businesssavvysoftware.wordpress.com/450/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=businesssavvysoftware.com&amp;blog=1101230&amp;post=450&amp;subd=businesssavvysoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://businesssavvysoftware.com/2010/08/26/hive-in-beta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/379a7f89d14bbbd8296df15f2d1678bb?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Andrew</media:title>
		</media:content>

		<media:content url="http://businesssavvysoftware.files.wordpress.com/2010/08/hive.png" medium="image">
			<media:title type="html">hive</media:title>
		</media:content>
	</item>
		<item>
		<title>Finishing &#8211; part 2</title>
		<link>http://businesssavvysoftware.com/2010/08/11/finishing-part-2/</link>
		<comments>http://businesssavvysoftware.com/2010/08/11/finishing-part-2/#comments</comments>
		<pubDate>Wed, 11 Aug 2010 09:59:22 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://businesssavvysoftware.com/?p=439</guid>
		<description><![CDATA[&#8220;The end of a thing is better than its beginning, and patience is better than pride.&#8221; Put another way, finishing is better than starting. So true and yet so hard.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=businesssavvysoftware.com&amp;blog=1101230&amp;post=439&amp;subd=businesssavvysoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>&#8220;The end of a thing is better than its beginning, and patience is better than pride.&#8221;</p>
<p>Put another way, <a href="http://businesssavvysoftware.com/2010/07/28/finishing/">finishing</a> is better than starting.</p>
<p>So true and yet so hard.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/businesssavvysoftware.wordpress.com/439/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/businesssavvysoftware.wordpress.com/439/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/businesssavvysoftware.wordpress.com/439/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/businesssavvysoftware.wordpress.com/439/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/businesssavvysoftware.wordpress.com/439/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/businesssavvysoftware.wordpress.com/439/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/businesssavvysoftware.wordpress.com/439/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/businesssavvysoftware.wordpress.com/439/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/businesssavvysoftware.wordpress.com/439/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/businesssavvysoftware.wordpress.com/439/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/businesssavvysoftware.wordpress.com/439/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/businesssavvysoftware.wordpress.com/439/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/businesssavvysoftware.wordpress.com/439/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/businesssavvysoftware.wordpress.com/439/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=businesssavvysoftware.com&amp;blog=1101230&amp;post=439&amp;subd=businesssavvysoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://businesssavvysoftware.com/2010/08/11/finishing-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/379a7f89d14bbbd8296df15f2d1678bb?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Andrew</media:title>
		</media:content>
	</item>
		<item>
		<title>Charts: buy, build or borrow?</title>
		<link>http://businesssavvysoftware.com/2010/08/06/charts-buy-build-or-borrow/</link>
		<comments>http://businesssavvysoftware.com/2010/08/06/charts-buy-build-or-borrow/#comments</comments>
		<pubDate>Fri, 06 Aug 2010 10:05:56 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[SaaS]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[SVG]]></category>

		<guid isPermaLink="false">http://businesssavvysoftware.com/?p=428</guid>
		<description><![CDATA[Its the same old question everytime you need some software. Do I buy it, build it myself, or find someone who&#8217;s already got it and convince them to share it? Like any software developer, my first instinct is to build it &#8211; but then the business side of my brain kicks in and I start [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=businesssavvysoftware.com&amp;blog=1101230&amp;post=428&amp;subd=businesssavvysoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Its the same old question everytime you need some software.  Do I buy it, build it myself, or find someone who&#8217;s already got it and convince them to share it?</p>
<p>Like any software developer, my first instinct is to build it &#8211; but then the business side of my brain kicks in and I start thinking about stuff like opportunity cost and cost/benefit.</p>
<p>We had this choice to make recently with charts and the answer was obviously to use one of the many great solutions out there. But, in the end it didn&#8217;t stack up and I was surprised that the right choice was just to build our own.</p>
<p>We were looking for something that &#8230;</p>
<p>- Could render to HTML, PDF, iPhone, iPad (rules out the great looking flash and javascript options)<br />
- Could get 20 charts in a PDF with high enough resolution to show each chart full screen and without blowing out the size of the PDF (rules out using images)<br />
- Would give us complete control over styling including being able to change style mid-series (rules out half the options)<br />
- Is configurable via an XML template (rules out the other half of the options)</p>
<p>Actually, configuring any chart from XML is pretty standard when it comes to presentation, but not when it comes to the data.  Charting solutions are generally not aware of the context of the report &#8211; they are only aware of the data values being plotted.  We wanted a solution that could be aware of the full report, so that we could quickly change the data being charted.  Like in Excel &#8211; when you have the data in one sheet and you can pivot/sum/group/etc and chart whatever you like.</p>
<p>So, our solution was to build a .NET SVG charting library that is report aware. SVG gives us full control over the style of each chart, series and data point.  Instead of just outputting SVG, every aspect of the chart can be styled using SVG.  It also allows us to render numerous scaleable charts to HTML and PDF without blowing out the file size.  Most importantly though, the charts are aware of the report context &#8211; so a chart no longer plots points &#8211; it plots a formula over the data.  For example, to show a conversion rate, the formula &#8220;SALES / VISITS&#8221; could be used in the chart (where sales and visits are two predefined metrics).  This gives us a few advantages:</p>
<p>1. The chart can be customised via XML or a UI to show any visualisation of the available data.  A quick update and we&#8217;re now showing SALES and VISITS as separate series and comparing them to last year, or filtering by region.</p>
<p>2. Charts can be synchronised across a report, ensuring a consistent use of colour and allowing some smarts for visualising the data best.</p>
<p>3. Charts can be interactive on the web.  A user can drill into the conversion rate to see how it was calculated, or highlight an area of interest, or filter the report by a particular region, or pivot the chart. We borrowed the dimension/metric/date model from Google Analytics to give data as many dimensions and metrics as we needed and introduced a hierarchal subject, allowing data to be easily rolled up and summerised.</p>
<p>It turns out that drawing the charts is the easy bit and managing the styles and data behind the charts is the high value bit that is sorely lacking.  The false ecomony in our case would have been to buy the bit that draws the charts and then to have our options severly limited for managing the styles and data.</p>
<p>We&#8217;ve already deployed these charts over three projects with more to come, so the investment is paying back fast too.</p>
<p><a href="http://businesssavvysoftware.files.wordpress.com/2010/08/charts.png"><img class="aligncenter size-full wp-image-429" title="Charts" src="http://businesssavvysoftware.files.wordpress.com/2010/08/charts.png?w=450&#038;h=435" alt="" width="450" height="435" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/businesssavvysoftware.wordpress.com/428/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/businesssavvysoftware.wordpress.com/428/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/businesssavvysoftware.wordpress.com/428/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/businesssavvysoftware.wordpress.com/428/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/businesssavvysoftware.wordpress.com/428/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/businesssavvysoftware.wordpress.com/428/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/businesssavvysoftware.wordpress.com/428/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/businesssavvysoftware.wordpress.com/428/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/businesssavvysoftware.wordpress.com/428/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/businesssavvysoftware.wordpress.com/428/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/businesssavvysoftware.wordpress.com/428/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/businesssavvysoftware.wordpress.com/428/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/businesssavvysoftware.wordpress.com/428/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/businesssavvysoftware.wordpress.com/428/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=businesssavvysoftware.com&amp;blog=1101230&amp;post=428&amp;subd=businesssavvysoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://businesssavvysoftware.com/2010/08/06/charts-buy-build-or-borrow/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/379a7f89d14bbbd8296df15f2d1678bb?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Andrew</media:title>
		</media:content>

		<media:content url="http://businesssavvysoftware.files.wordpress.com/2010/08/charts.png" medium="image">
			<media:title type="html">Charts</media:title>
		</media:content>
	</item>
		<item>
		<title>Finishing</title>
		<link>http://businesssavvysoftware.com/2010/07/28/finishing/</link>
		<comments>http://businesssavvysoftware.com/2010/07/28/finishing/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 10:08:50 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[SaaS]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://businesssavvysoftware.com/?p=420</guid>
		<description><![CDATA[We&#8217;re in the middle of the &#8220;finishing&#8221; phase of three v1 projects right now, and since my software lifecycle on this blog is sorely missing any comment on finishing, I thought I should share a few thoughts. Firstly, what is finishing? Its what used to be called QA or testing, where the developers hand over [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=businesssavvysoftware.com&amp;blog=1101230&amp;post=420&amp;subd=businesssavvysoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>We&#8217;re in the middle of the &#8220;finishing&#8221; phase of three v1 projects right now, and since my software lifecycle on this blog is sorely missing any comment on finishing, I thought I should share a few thoughts.</p>
<p>Firstly, what is finishing?  Its what used to be called QA or testing, where the developers hand over to the test team and then retrospectively update the specification to match what&#8217;s been built.</p>
<p>I&#8217;m not that fond of the QA at the end of a project approach.  If you look at risk based testing, then you identify risks up front and work throughout all stages of the project to mitigate the risks.  When you get to the end of the project, there shouldn&#8217;t be that much QA left to do &#8211; just finishing.  We all know that the last 5% of a project takes far longer than 5% of the time and this is a really important time where hundreds of small decisions are made.</p>
<p>The other thing I&#8217;m not fond of is this tension between QA being at the end of the cycle so there&#8217;s always time pressure, but also the idea that developers should hand over completed bug-free code.  I tried that once and all it meant was that I had to go through the entire QA process myself (which I&#8217;m really bad at) &#8211; just to hand it over to be QA&#8217;ed again.</p>
<p>Finishing is about shipping working software.  Its when the feature development is complete (or when you hit the 80/90% mark in your cycle or budget) and when developers, testers, BAs and everyone else involved start to focus on shipping instead of building.  There will be bugs to fix, there will be missing functionality to build, there will be enhancements, there will be style changes, there will be a lot going on and its not all QA.  The goal is to turn a feature-complete project into a quality shippable project and it doesn&#8217;t rest on the shoulders of the test team while the developers move onto the next project.</p>
<p>So, finishing is actually quite fun, I just wish we stopped setting up our projects to converge like this!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/businesssavvysoftware.wordpress.com/420/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/businesssavvysoftware.wordpress.com/420/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/businesssavvysoftware.wordpress.com/420/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/businesssavvysoftware.wordpress.com/420/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/businesssavvysoftware.wordpress.com/420/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/businesssavvysoftware.wordpress.com/420/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/businesssavvysoftware.wordpress.com/420/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/businesssavvysoftware.wordpress.com/420/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/businesssavvysoftware.wordpress.com/420/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/businesssavvysoftware.wordpress.com/420/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/businesssavvysoftware.wordpress.com/420/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/businesssavvysoftware.wordpress.com/420/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/businesssavvysoftware.wordpress.com/420/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/businesssavvysoftware.wordpress.com/420/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=businesssavvysoftware.com&amp;blog=1101230&amp;post=420&amp;subd=businesssavvysoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://businesssavvysoftware.com/2010/07/28/finishing/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/379a7f89d14bbbd8296df15f2d1678bb?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Andrew</media:title>
		</media:content>
	</item>
		<item>
		<title>Search</title>
		<link>http://businesssavvysoftware.com/2010/07/22/search/</link>
		<comments>http://businesssavvysoftware.com/2010/07/22/search/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 19:31:15 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Marketing]]></category>
		<category><![CDATA[Wellington]]></category>

		<guid isPermaLink="false">http://businesssavvysoftware.com/?p=406</guid>
		<description><![CDATA[We needed a site search in a website we built recently, so we tried out Google Site Search and its great.  Using the $US100 per year plan, we&#8217;re able to have a fully integrated search with about 24 hour turnaround on indexing. Google site search looks at the XML sitemap (http://www.tribedesign.co.nz/sitemap) to get a list [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=businesssavvysoftware.com&amp;blog=1101230&amp;post=406&amp;subd=businesssavvysoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>We needed a site search in a website we built recently, so we tried out <a href="http://www.google.com/sitesearch/" target="_blank">Google Site Search</a> and its great.  Using the $US100 per year plan, we&#8217;re able to have a fully integrated search with about 24 hour turnaround on indexing.</p>
<p><a href="http://businesssavvysoftware.files.wordpress.com/2010/07/screen-shot-2010-07-22-at-7-26-52-am.png"><img class="aligncenter size-full wp-image-412" title="Screen shot 2010-07-22 at 7.26.52 AM" src="http://businesssavvysoftware.files.wordpress.com/2010/07/screen-shot-2010-07-22-at-7-26-52-am.png?w=450&#038;h=53" alt="" width="450" height="53" /></a></p>
<p>Google site search looks at the XML sitemap (<a href="http://www.tribedesign.co.nz/sitemap" target="_blank">http://www.tribedesign.co.nz/sitemap</a>) to get a list of pages to index and the priority of each page.</p>
<p>One of the main pages on the site is the <a href="http://www.tribedesign.co.nz/portfolio" target="_blank">portfolio</a>, which is a dynamic page using ajax to load products.  To make each product searchable we created a unique url for each product that includes the product details in the html then listed these with higher priority in the sitemap.  We also took the FAQs and &#8216;Making it easy&#8217; pages, which are full of rich text and split them into one page per FAQ/section to make the search results even more relevant.</p>
<p>It works very nicely with the search results embedded in the site and you wouldn&#8217;t even know it was powered by google, except by noticing the quality of the search results.</p>
<p><a href="http://businesssavvysoftware.files.wordpress.com/2010/07/screen-shot-2010-07-22-at-7-27-07-am.png"><img class="aligncenter size-full wp-image-413" title="Screen shot 2010-07-22 at 7.27.07 AM" src="http://businesssavvysoftware.files.wordpress.com/2010/07/screen-shot-2010-07-22-at-7-27-07-am.png?w=450&#038;h=324" alt="" width="450" height="324" /></a></p>
<p><strong>About TRIBE Design</strong></p>
<p>Great things formed in metal begin with great design.  And, making the best of design means being a trusted expert of the craft.  Tribe is a design-led maker of metal products that touch an amazingly diverse range of people and purposes.  From military metalwear to motoring memorabilia, fashion accessories to film props, competition medals to corporate gifts, it all starts and finishes in one place, right here in New Zealand.</p>
<p><a href="http://www.tribedesign.co.nz" target="_self">http://www.tribedesign.co.nz</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/businesssavvysoftware.wordpress.com/406/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/businesssavvysoftware.wordpress.com/406/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/businesssavvysoftware.wordpress.com/406/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/businesssavvysoftware.wordpress.com/406/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/businesssavvysoftware.wordpress.com/406/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/businesssavvysoftware.wordpress.com/406/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/businesssavvysoftware.wordpress.com/406/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/businesssavvysoftware.wordpress.com/406/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/businesssavvysoftware.wordpress.com/406/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/businesssavvysoftware.wordpress.com/406/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/businesssavvysoftware.wordpress.com/406/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/businesssavvysoftware.wordpress.com/406/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/businesssavvysoftware.wordpress.com/406/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/businesssavvysoftware.wordpress.com/406/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=businesssavvysoftware.com&amp;blog=1101230&amp;post=406&amp;subd=businesssavvysoftware&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://businesssavvysoftware.com/2010/07/22/search/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/379a7f89d14bbbd8296df15f2d1678bb?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Andrew</media:title>
		</media:content>

		<media:content url="http://businesssavvysoftware.files.wordpress.com/2010/07/screen-shot-2010-07-22-at-7-26-52-am.png" medium="image">
			<media:title type="html">Screen shot 2010-07-22 at 7.26.52 AM</media:title>
		</media:content>

		<media:content url="http://businesssavvysoftware.files.wordpress.com/2010/07/screen-shot-2010-07-22-at-7-27-07-am.png" medium="image">
			<media:title type="html">Screen shot 2010-07-22 at 7.27.07 AM</media:title>
		</media:content>
	</item>
	</channel>
</rss>
