<?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>New Media Labs</title>
	<atom:link href="http://www.newmedialabs.co.za/feed" rel="self" type="application/rss+xml" />
	<link>http://www.newmedialabs.co.za</link>
	<description></description>
	<lastBuildDate>Thu, 19 Jan 2012 06:00:31 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>How using an Agile process combats the common project pitfalls</title>
		<link>http://www.newmedialabs.co.za/agile_development/how-using-an-agile-process-combats-the-common-project-pitfalls</link>
		<comments>http://www.newmedialabs.co.za/agile_development/how-using-an-agile-process-combats-the-common-project-pitfalls#comments</comments>
		<pubDate>Thu, 19 Jan 2012 06:00:31 +0000</pubDate>
		<dc:creator>WillemO</dc:creator>
				<category><![CDATA[Agile Development]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.newmedialabs.co.za/?p=1590</guid>
		<description><![CDATA[Software projects are  packed chock-full of Risk. It's important to acknowledge the risks and to mitigate them. How you address the risks depends on which type of "project process" you are following. The two types of project processes that I have experienced are Agile-type and Waterfall-type projects. In this post I list some of the common ways to mitigate well-known risks for both these project types.]]></description>
			<content:encoded><![CDATA[<p>Software projects are  packed chock-full of Risk. It&#8217;s important to acknowledge the risks and to mitigate them. How you address the risks depends on which type of &#8220;project process&#8221; you are following. The two types of project processes that I have experienced are Agile-type and Waterfall-type projects. In this post I list some of the common ways to mitigate well-known risks for both these project types.</p>
<p>When given a choice we prefer to adopt an Agile approach. We believe that following an Agile approach leads to a far superior final product. We also believe that Agile is much less risky. So this post is unashamedly biased in favor of Agile.</p>
<p>First, a brief description of the two types of projects:</p>
<p>﻿</p>
<h2>Waterfall-type project:</h2>
<p><a href="http://www.newmedialabs.co.za/wp-content/uploads/2012/01/waterfall.png" rel="lightbox[1590]"></a></p>
<p><a href="http://www.newmedialabs.co.za/wp-content/uploads/2012/01/waterfall.png" rel="lightbox[1590]"></a><a href="http://www.newmedialabs.co.za/wp-content/uploads/2012/01/waterfall_600px.png" rel="lightbox[1590]"><img class="alignnone size-full wp-image-1597" title="waterfall" src="http://www.newmedialabs.co.za/wp-content/uploads/2012/01/waterfall_600px.png" alt="" width="600" height="319" /></a></p>
<p><a href="http://www.newmedialabs.co.za/wp-content/uploads/2012/01/waterfall_600px.png" rel="lightbox[1590]"></a>A waterfall project typically has a set deadline for set functionality.  Many businesses like this type of project because it seems predictable and makes it easy to get a budget approved for the project.</p>
<p>Process: Plan, Build, Test, Done.</p>
<p>Problems:</p>
<ul type="circle">
<li>Trying to predict accurately      while software development is very unpredictable.</li>
<li>User Requirements      Specifications are usually insufficient and open to interpretation, which      leads to errors.</li>
<li>Scope Creep is time-consuming      to manage and often &#8220;sneaks&#8221; in due to unclear specifications.      This puts pressure on the development team to deliver more functionality      in the same amount of time.</li>
</ul>
<h2></h2>
<h2>Agile-type project:</h2>
<p><a href="http://www.newmedialabs.co.za/wp-content/uploads/2012/01/agile_600px.png" rel="lightbox[1590]"><img class="alignnone size-full wp-image-1598" title="agile" src="http://www.newmedialabs.co.za/wp-content/uploads/2012/01/agile_600px.png" alt="" width="600" height="407" /></a></p>
<p><a href="http://www.newmedialabs.co.za/wp-content/uploads/2012/01/agile.png" rel="lightbox[1590]"></a>An agile project is typically seen as a recurring monthly expense instead of a big capital expense. Features are delivered frequently  (typically every two weeks) and the project carries on for as long as it is delivering useful functionality.</p>
<p>Process: Plan, Build, Test, *Repeat Repeat Repeat</p>
<p>Problems:</p>
<ul type="circle">
<li>Unable to promise specific      features at a specific deadline far in the future.</li>
<li>Difficult to work with      businesses with a &#8220;waterfall&#8221; mindset (most big old businesses).</li>
<li>Difficult to get project      approval when hard-and-fast promises can&#8217;t be made.</li>
</ul>
<p>Advantages:</p>
<ul type="circle">
<li>Deliver what&#8217;s useful, not      &#8220;what the spec said&#8221;.</li>
<li>Deliver useful features      early.</li>
<li>Detect problems early.</li>
<li>Embraces change.</li>
</ul>
<h1></h1>
<h1>Why Projects Fail</h1>
<p>Projects can be considered failures for many reasons. The most common reasons that I have observed are:</p>
<ol type="1">
<li>Budget Overruns and Late Delivery &#8211; these      two usually go hand-in-hand.</li>
<li>Incorrect      Functionality delivered &#8211; the client expected one thing and the      programmers built something else.</li>
<li>Technical      Problems &#8211; for example: the system is too slow to use, or it      doesn&#8217;t integrate with another critical system in the software ecosystem.</li>
</ol>
<p>Below is a list of ways to combat these three problems in either a Waterfall or Agile project.</p>
<h2></h2>
<h2>Problem 1: Budget Overrun/ Late Delivery</h2>
<p>Waterfall:</p>
<ul type="disc">
<li>Add extra time to mitigate      risk. For example: estimate 13 hours for a 10 hour task. Not optimal.      Expensive.</li>
</ul>
<ul type="disc">
<li>Track progress against      milestones to ensure the project is progressing on schedule. (The problem      with milestones is that they can give a false sense of security. When you      think something is &#8220;Done&#8221; it might not really be. &#8220;It&#8217;s      done! (except for the styling, or integration with external system      X)&#8221;)</li>
<li>Work overtime if needed to      catch-up.</li>
</ul>
<p>Agile:</p>
<ul type="disc">
<li>Frequent delivery means most      important features get delivered early.</li>
</ul>
<ul type="disc">
<li>If less important features      are late it is not such a big deal. The system is constantly improving and      maturing.</li>
</ul>
<h2></h2>
<h2>Problem 2: Technical Problems</h2>
<p>Waterfall:</p>
<ul type="disc">
<li>Do lots of prototyping in the      first stage of the project to try and spot technical challenges.</li>
</ul>
<ul type="disc">
<li><span style="color: #ff0000;">If caught late it      may be too late to do anything about it. Major losses.</span></li>
</ul>
<p>Agile:</p>
<ul type="disc">
<li>Will be picked up early due      to continuous early delivery. Project can then go a different direction,      or cancel project if absolutely necessary (at least it will be early).</li>
</ul>
<h2></h2>
<h2>Problem 3: Wrong Functionality (incorrect assumptions)</h2>
<p>Waterfall:</p>
<ul type="disc">
<li>Write very detailed user      requirements specification. (The problem with User Requirements      is that they give a false sense of security. Now matter how explicitly      they are written, they are still open to individual interpretation and      interpretation may not be what the author intended.)</li>
<li><span style="color: #ff0000;">If caught late it      may be too late to do anything about it. Major losses.</span></li>
</ul>
<p>Agile:</p>
<ul type="disc">
<li>Agile embraces change.      Frequent delivery ensures that the correct functionality is delivered and      any &#8220;mistakes&#8221; are detected early. The client is continually      evaluating the system and can change direction as required.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.newmedialabs.co.za/agile_development/how-using-an-agile-process-combats-the-common-project-pitfalls/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>New Media Labs End of Year Function</title>
		<link>http://www.newmedialabs.co.za/uncategorized/new-media-labs-end-of-year-function</link>
		<comments>http://www.newmedialabs.co.za/uncategorized/new-media-labs-end-of-year-function#comments</comments>
		<pubDate>Wed, 21 Dec 2011 14:45:17 +0000</pubDate>
		<dc:creator>andrew</dc:creator>
				<category><![CDATA[New Media Labs]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.newmedialabs.co.za/?p=1576</guid>
		<description><![CDATA[Thanks to all our clients, friends and partners, you&#8217;ve made 2011 a fantastic year.

Enjoy the holidays and we&#8217;ll see you all in 2012.
]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;">Thanks to all our clients, friends and partners, you&#8217;ve made 2011 a fantastic year.</p>
<p style="text-align: center;"><a href="http://www.newmedialabs.co.za/wp-content/uploads/2011/12/nml-end-of-year-function.jpg" rel="lightbox[1576]"><img class="aligncenter size-large wp-image-1577" title="nml-end-of-year-function" src="http://www.newmedialabs.co.za/wp-content/uploads/2011/12/nml-end-of-year-function-1024x724.jpg" alt="New Media Labs 2011" width="645" height="456" /></a></p>
<p style="text-align: center;">Enjoy the holidays and we&#8217;ll see you all in 2012.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.newmedialabs.co.za/uncategorized/new-media-labs-end-of-year-function/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building a Relational City Suburb Database for South Africa (and why I wouldn’t trust Yahoo WOEIDs)</title>
		<link>http://www.newmedialabs.co.za/mapping/building-a-relational-city-suburb-database-for-south-africa-and-why-i-wouldn%e2%80%99t-trust-yahoo-woeids</link>
		<comments>http://www.newmedialabs.co.za/mapping/building-a-relational-city-suburb-database-for-south-africa-and-why-i-wouldn%e2%80%99t-trust-yahoo-woeids#comments</comments>
		<pubDate>Mon, 28 Nov 2011 13:18:58 +0000</pubDate>
		<dc:creator>Paul Cartmel</dc:creator>
				<category><![CDATA[Custom Development]]></category>
		<category><![CDATA[Mapping]]></category>
		<category><![CDATA[Building relational City Suburb database]]></category>
		<category><![CDATA[Geo-spacial polygons]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL Server Geography]]></category>
		<category><![CDATA[WOEID]]></category>
		<category><![CDATA[Yahoo]]></category>
		<category><![CDATA[Yahoo Query Language]]></category>
		<category><![CDATA[YQL]]></category>

		<guid isPermaLink="false">http://www.newmedialabs.co.za/?p=1534</guid>
		<description><![CDATA[I’m coding something at the moment and I can honestly say it is the most fun I’ve had at work the whole year (and I generally love what I do). Doing this has reminded how I ended up in computer science and how much I used to love being paid to essentially solve puzzles all [...]]]></description>
			<content:encoded><![CDATA[<p>I’m coding something at the moment and I can honestly say it is the most fun I’ve had at work the whole year (and I generally love what I do). Doing this has reminded how I ended up in computer science and how much I used to love being paid to essentially solve puzzles all day. Anyway, I came across this YQL “bug” (Yahoo Query Language) and I thought I’d share it with you, or whoever googles this topic, and save someone a bit of pain.</p>
<p>My aim is to load a good clean database of South African cities linked to suburbs (I’ll write another post about that later) something a lot of people seem to want but no one seems to be doing very well, and those that have very clean data don’t open it up. I also wanted a relational table with SQL Server Geography datatypes, simplegeo or openstreetmap aren’t close to a perfect dataset. Ideally I wanted to load the geographic polygons that define the cities and the suburbs, I also want to load the bounding boxes, centroids and radius that encapsulate the suburbs.</p>
<p>I know there is some open street map data out there but Shaun Trennery, who I trust implicitly and is the tech brain behind <a href="http://www.safindit.co.za/" target="_blank">safindit.com</a> pointed me at <a href="http://developer.yahoo.com/yql/" target="_blank">YQL</a>. Yahoo’s data seemed the cleanest and I decided to use their data to load the suburbs. (By the way, YQL is amazing: you can perform crazy queries like find all sushi restaurants in San Francisco “select * from local.search where query=&#8221;sushi&#8221; and location=&#8221;san francisco, ca&#8221; and Rating.AverageRating=&#8221;4.5”” awesome hey?) I have a JSON file of WOEIDs (Where on Earth ID) that define South Africa, this can be retrieved with a simple YQL query or download it here: <a href="http://www.newmedialabs.co.za/wp-content/uploads/2011/11/LocationsZA.json_.zip">LocationsZA.json</a>. I wrote some code to parse these and load them into a SQL Server table that I’d designed (again – that post to follow).</p>
<p>I was having a problem loading Yahoo WOEID polygons as Microsoft.SqlServer.Types.SqlGeography objects in SqlServer2008. This fails on insert for certain polygons with “24200: The specified input does not represent a valid geography instance” exception which, typical of Microsoft, will take you <a href="http://social.msdn.microsoft.com/search/en-US/search/default.aspx?query=System.ArgumentException" target="_blank">here</a>, and well, that doesn’t tell you anything you don’t’ already know (a side note, System.Data.SqlClient does not support the Geography type so you have to make a reference to Microsoft.SqlServer.Types).</p>
<p>I wanted to investigate if these polygons were in fact polygons. I also want to visualise the other elements of the WOEID (centroid, bounding box, radius etc) so I wrote the following ugly web form (let me reiterate I hate web forms and NML only build ASP.NET MVC but this was a quick prototype to see what the polygons looked like on google maps mostly <a href="http://www.codeproject.com/KB/aspnet/plotpath_gps.aspx?msg=3917337" target="_blank">taken from this post</a>).</p>
<p style="text-align: center;">
<p>Figure 1 as you can see only slightly adapted from the codeproject. (click to enlarge)</p>
<p><a href="http://www.newmedialabs.co.za/wp-content/uploads/2011/11/why-I-wouldnt-trust-Yahoo-WOEIDs-lrg.jpg" rel="lightbox[1534]"><img class="aligncenter size-full wp-image-1568" title="why-I-wouldnt-trust-Yahoo-WOEIDs-sml" src="http://www.newmedialabs.co.za/wp-content/uploads/2011/11/why-I-wouldnt-trust-Yahoo-WOEIDs-sml1.jpg" alt="why-I-wouldnt-trust-Yahoo-WOEIDs-sml" width="500" height="610" /></a></p>
<p style="text-align: center;">
<p style="text-align: center;">
<p>The following image illustrates Yahoo’s idea of the Constantia WOEID Polygon.</p>
<p><a href="http://www.newmedialabs.co.za/wp-content/uploads/2011/11/Polygone-image2.jpg" rel="lightbox[1534]"><img class="aligncenter size-full wp-image-1552" title="Polygone-image2" src="http://www.newmedialabs.co.za/wp-content/uploads/2011/11/Polygone-image2.jpg" alt="Building a relational City Suburb database for South Africa" width="450" height="410" /></a></p>
<p style="text-align: center;">
<p style="text-align: left;">As you can see it’s pretty obvious why the polygons won’t load, they aren’t true polygons. So that’s my warning <strong>don’t use yahoo polygons for suburbs rather uses bounding boxes </strong><span style="text-align: -webkit-auto;">where you can be sure that your geospatial queries will return trustworthy results. I’ve also noticed that in some instances Yahoo doesn’t even store the polygon.</span></p>
<p>So I had another chat to Shaun Trennery and we are keen to open this data up, and possibly build a geographic wiki app that allows anyone to modify the polygons, the administrators will have the final say. This will allow us to add suburbs yahoo isn’t aware of like those being defined by the <a href="http://nameyourhood.co.za/ " target="_blank">Name Your Hood</a> guys (if you know how much I initially disliked the Name Your Hood project you’ll find this ironic) and also define parent suburbs, for example Constantia is the parent suburb Bel Ombre, Nova Constantia, Constania Hills, Klein Constantia , Rust en Vrede and Alphen for example.</p>
<p><strong>I’d be interested to get feedback from the GIS gurus on the best sources of Country/Region/City/Suburb/ information. Please also let me know if you are keen to collaborate on this mini project.</strong></p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Enhanced by Zemanta" href="http://www.zemanta.com/"><img class="zemanta-pixie-img" style="border: none; float: right;" src="http://img.zemanta.com/zemified_e.png?x-id=20938379-fae9-444f-bfba-feea58a81412" alt="Enhanced by Zemanta" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.newmedialabs.co.za/mapping/building-a-relational-city-suburb-database-for-south-africa-and-why-i-wouldn%e2%80%99t-trust-yahoo-woeids/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Do you trust your software development partner?  You do consider them to be a partner don&#8217;t you?</title>
		<link>http://www.newmedialabs.co.za/software_development/do-you-trust-your-software-developer</link>
		<comments>http://www.newmedialabs.co.za/software_development/do-you-trust-your-software-developer#comments</comments>
		<pubDate>Sat, 15 Oct 2011 12:00:45 +0000</pubDate>
		<dc:creator>Paul Cartmel</dc:creator>
				<category><![CDATA[New Media Labs]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[business partners]]></category>
		<category><![CDATA[Business Services]]></category>
		<category><![CDATA[bytes technology group]]></category>
		<category><![CDATA[Clients]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[trust]]></category>

		<guid isPermaLink="false">http://www.newmedialabs.co.za/?p=1511</guid>
		<description><![CDATA[I had a shocking start to my Monday. I received a phone call from Tracy saying that our fingerprint recognition system was down and the team couldn’t get into the NML office.
When we relocated from the Upper East Side’s ground floor to the 6th floor our finger print recognition system had journeyed sans the override [...]]]></description>
			<content:encoded><![CDATA[<p>I had a shocking start to my Monday. I received a phone call from Tracy saying that our fingerprint recognition system was down and the team couldn’t get into the NML office.</p>
<p>When we relocated from the Upper East Side’s ground floor to the 6th floor our finger print recognition system had journeyed sans the override switch, an oversight on the suppliers part, but I’d signed off on the job so I must accept the blame for this.</p>
<p>I arrived at our offices, my mind spinning dollar signs as lost development time mounted. The team were without access to their workstations or wifi, at least they’d located coffee in the shape of Vida’s Upper East Side store. Fortunately we can all work remotely, so I sent everyone home and we successfully conducted a virtual stand-up, I can’t fault my staff’s diligence and we ultimately had quite a productive day.</p>
<p>After discussing the system fault with manager of Bytes Technology Group who installed the system, I was told that they would cover the bill to remove the glass from our front door. Tracy sourced a glazer to remove the glass pane from the door, and Bytes sent over a technician to fix the system and add a manual override switch. The Bytes technician spent most of the day installing the switch. When I returned from lunch I caught the technician at the bottom of the lift, “Are you going to show me what you’ve done?”</p>
<p>Exhibit A:</p>
<p><a href="http://www.newmedialabs.co.za/wp-content/uploads/2011/10/bytes-technology-group1.jpg" rel="lightbox[1511]"><img class="aligncenter size-full wp-image-1513" title="bytes technology group1" src="http://www.newmedialabs.co.za/wp-content/uploads/2011/10/bytes-technology-group1.jpg" alt="Bytes Technology Group finger print security system installation" width="556" height="576" /></a></p>
<p>Me: “You’ve used 20mm screws that can easily be ripped out?”</p>
<p>Technician: “Yes, that’s a problem.”</p>
<p>Me: “But I wouldn’t bother ripping the screws out as I can just cut and short that exposed wire.” [Shorting the circuit is all the wire does.]</p>
<p>Technician: “You’re right, that would be a problem.”</p>
<p>What baffles me is that this supplier, and the unsupervised technician, expect me nonchalantly place the security of all our hardware, servers, mail servers, backups and data into the inert hands of an inexperienced technician. I was horrified! What would happen if I didn’t know any better? (An MSc ought to do it, but not everyone installing a finger print recognition security system has a basic knowledge of electronics.) I requested that he reinstall the system, “I want the screws to go through the door and be fastened on the inside of the door and I absolutely don’t want any wires visible”</p>
<p>And then I was presented with this.</p>
<p>Exhibit B:</p>
<p><a href="http://www.newmedialabs.co.za/wp-content/uploads/2011/10/bytes-technology-group2.jpg" rel="lightbox[1511]"><img class="aligncenter size-full wp-image-1514" title="bytes technology group2" src="http://www.newmedialabs.co.za/wp-content/uploads/2011/10/bytes-technology-group2.jpg" alt="Bytes Technology Group Review of Workmanship" width="558" height="418" /></a></p>
<p>Me: “But it isn’t attached to the door.”</p>
<p>Technician: “Didn’t think it had to be.”</p>
<p>Me: “And you’ve used the same 20mm wall plugs.”</p>
<p>Technician: “Yip.”</p>
<p>Me: “The same plugs that are easily ripped out! And if I don’t rip them out I can just unscrew the screws.&#8221; (normal bi-directional screws)</p>
<p>Technician: “Hmmm, ja that would be a problem.”</p>
<p>#FFS</p>
<p>It dawned on me, software is no different, in fact it’s more critical, you often can’t see what is being delivered. The client may not even completely understand what it is they are buying. They test the application visually but often don’t know what is happening under the hood, and yet they have to trust the development company with their entire business. What’s crazy about that is not the trust that is required but the fact that often clients will treat suppliers like second-class citizens and not as partners. I’m glad I can call all of my current clients, partners and not just clients and I think they would do the same.</p>
<p>Trust is a key aspect of any relationship, from personal to commercial, and it is something that is established, not immediately assumed. Trust, certainly on an industrial level, starts with communication, reputation and diligence and builds from there. It’s not something I take lightly, it is intrinsic to my working relationships at NML, beginning on interpersonal levels and extending to our clients, I believe we as a company exude this culture of trust to our partners.</p>
<p>As Gary Vannerchuck said in his SxSW keynote speech: “no matter what business you’re in, you’re also in the business of customer service,” and all businesses need to start “giving a solid f#$&amp;” or else they’re going to lose.</p>
<p><iframe width="600" height="335" src="http://www.youtube.com/embed/BEYjvifUdeM" frameborder="0" allowfullscreen></iframe></p>
<p>Ps. As an aside, the technician once worked for me as an intern graphic designer, bizarre I know – but it is true. Yes he’s gone from being a one-time aspiring graphic designer to security system installer – it’s obvious why he did such a shitty job, his current job isn’t his calling. He probably doesn’t enjoy it, and can’t wait to get off site. Follow your calling people, find what you love doing and do it well. A lack of passion shows.</p>
<p>Pps. To make matters more awesome, on Friday I sent the bill to Bytes for the glazer and the managers’ boss sent it back saying he never authorised the R695 payment to the glazer – talk about disconnect.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.newmedialabs.co.za/software_development/do-you-trust-your-software-developer/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why We Do Unit Testing</title>
		<link>http://www.newmedialabs.co.za/agile_development/why-we-do-unit-testing</link>
		<comments>http://www.newmedialabs.co.za/agile_development/why-we-do-unit-testing#comments</comments>
		<pubDate>Thu, 06 Oct 2011 06:12:50 +0000</pubDate>
		<dc:creator>WillemO</dc:creator>
				<category><![CDATA[Agile Development]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Test-driven development]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Business logic layer]]></category>
		<category><![CDATA[Microsoft Visual Studio]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[Software testing]]></category>
		<category><![CDATA[Typemock]]></category>
		<category><![CDATA[Unit testing]]></category>

		<guid isPermaLink="false">http://www.newmedialabs.co.za/?p=1485</guid>
		<description><![CDATA[At New Media Labs we strive to be awesome. We want to deliver great solutions to our clients and have fun doing so. 
In the dynamic software development industry you need to experiment, adapt and find out how to be super-efficient without sacrificing quality. It&#8217;s a challenge.
In this series of blog posts I will describe [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-weight: normal;">At New Media Labs we strive to be awesome. We want to deliver great solutions to our clients and have fun doing so. </span></p>
<p>In the dynamic software development industry you need to experiment, adapt and find out how to be super-efficient without sacrificing quality. It&#8217;s a challenge.</p>
<p>In this series of blog posts I will describe in detail the things we do and why those things work so well.</p>
<h4><strong>Problem Nr1: Broken Code</strong></h4>
<p>Any reasonably sized software application (or website) is essentially a complicated machine composed of inter-related components. A large part of a software engineer&#8217;s job is to simplify that complexity by compartmentalizing  parts of the system and writing code that does what it&#8217;s supposed to but is also <strong>understandable</strong> . After all &#8211; how can someone maintain your code if they struggle to figure out what it does?</p>
<p>Yet, despite all our best efforts Errors still creep into the application. For example: I may innocently make a small change to how a financial calculation is done, and unwittingly break several other web pages that I did not realize would be influenced by my change. And the breakage may only be noticed several days later, making it very difficult to try and determine <strong>why</strong> the pages broke.</p>
<p>Unfortunately this is just the nature of software development: &#8220;Bugs Happen&#8221;.</p>
<p>Wouldn&#8217;t it be great if there was a way to protect against breaking code? And to detect bugs as soon as possible?</p>
<h4><strong>Problem Nr2: Being afraid to change code</strong></h4>
<p>The world is moving at a rapid pace. Businesses change and need to adapt to be able to take advantage of gaps in the market.</p>
<p>Nobody understands this better than a software developer who has had to <strong>change</strong> how a system worked even before they were done implementing it completely first time &#8217;round.</p>
<p style="text-align: center;"><a href="http://www.newmedialabs.co.za/wp-content/uploads/2011/10/why-we-unit-test1.jpg" rel="lightbox[1485]"><img class="aligncenter size-full wp-image-1486" title="why-we-unit-test1" src="http://www.newmedialabs.co.za/wp-content/uploads/2011/10/why-we-unit-test1.jpg" alt="Why we unit test" width="479" height="296" /></a></p>
<p>Unfortunately changing code can be scary, because your change may break existing features without you realizing it. So often developers try to make changes in a way that is unlikely to break something else by &#8220;sticking&#8221; the code on the side of the system where it interacts with as little other code as possible. This obviously results in a poorly integrated solution that is difficult to maintain. It results in bad code.</p>
<p>Wouldn&#8217;t it be great if existing code were easy to change? That developers could respond rapidly to business demands and fearlessly change the entire solution to better fit the business requirements?</p>
<h4><strong>The Solution: Unit Tests</strong></h4>
<p>We believe <strong>Automated Unit Tests</strong> help alleviate the problems mentioned above<strong>. </strong>Automated Unit Tests promote developer confidence and helps protect against bugs.</p>
<p>When we code a new feature, we write two types of code:</p>
<ol>
<li><strong>Feature Code</strong>: Code that is the feature requested by our customer.</li>
<li><strong>Automated Test Code</strong>: Code that tests the Feature code.</li>
</ol>
<p style="text-align: center;"><a href="http://www.newmedialabs.co.za/wp-content/uploads/2011/10/why-we-unit-test2.jpg" rel="lightbox[1485]"><img class="aligncenter size-full wp-image-1487" title="why-we-unit-test2" src="http://www.newmedialabs.co.za/wp-content/uploads/2011/10/why-we-unit-test2.jpg" alt="Why we unit test New Media Labs" width="432" height="199" /></a></p>
<p>A single website that we  build will be covered by hundreds of unit tests. We run these tests several times a day while we are busy extending or modifying the client&#8217;s code. We use a test runner developed by <a href="http://www.jetbrains.com/">JetBrains</a>. Its output looks as follows:</p>
<p style="text-align: center;"><a href="http://www.newmedialabs.co.za/wp-content/uploads/2011/10/why-we-unit-test31.jpg" rel="lightbox[1485]"><img class="aligncenter size-full wp-image-1489" title="why-we-unit-test3" src="http://www.newmedialabs.co.za/wp-content/uploads/2011/10/why-we-unit-test31.jpg" alt="unit testing test runner output" width="581" height="342" /></a></p>
<p>Have a look at the output of the test run above:</p>
<ul>
<li>For the client project we ran 534 tests. It took less than a minute to run all the tests.</li>
<li>Tests are nested underneath each other. Different sets of tests test different parts of the system.</li>
<li>1 test failed and the message at the bottom describes why. When a problem like this is detected it has to be fixed immediately.</li>
</ul>
<p>The important thing to note here is that we <strong>always</strong> run <strong>all</strong> the unit tests, as opposed to only testing the small part of the system that the programmer is busy changing. This means that the entire system is tested several times a day for defects.</p>
<h4><strong>What we test</strong></h4>
<p>A software solution is made up of layers where top layers depend on bottom layers. For example (this is simplified):</p>
<ul>
<li>The <strong>User Interface layer</strong> displays web pages to the user. It relies on&#8230;</li>
<li>The <strong>Business Logic layer</strong> that knows about business entities and how they behave. It relies on&#8230;</li>
<li>The <strong>Data Access</strong> <strong>layer</strong> that knows how to interact with a database to save and load data.</li>
</ul>
<p>One way to test would be to test the User Interface Layer and let it interact with the layers below it.</p>
<p style="text-align: center;"><a href="http://www.newmedialabs.co.za/wp-content/uploads/2011/10/why-we-unit-test4.jpg" rel="lightbox[1485]"><img class="aligncenter size-full wp-image-1491" title="why-we-unit-test4" src="http://www.newmedialabs.co.za/wp-content/uploads/2011/10/why-we-unit-test4.jpg" alt="New Media Labs Why We Unit Test" width="117" height="268" /></a></p>
<p style="text-align: center;">
<p>We do <strong>not</strong> test this way. Testing all the layers together leads to slow tests that are brittle and hard to configure. It also means that the causes of failures are difficult to track down because the bug could be anywhere in numerous layers.</p>
<p>We prefer to test layers and individual components <strong>in isolation</strong>. We do this by supplying fake implementations of the layers on which the code depends. For example:</p>
<p style="text-align: center;"><a href="http://www.newmedialabs.co.za/wp-content/uploads/2011/10/why-we-unit-test5.jpg" rel="lightbox[1485]"><img class="aligncenter size-full wp-image-1492" title="why-we-unit-test5" src="http://www.newmedialabs.co.za/wp-content/uploads/2011/10/why-we-unit-test5.jpg" alt="Unit testing New Media Labs" width="382" height="194" /></a></p>
<p>Testing layers individually means our tests execute quickly and errors are very easy to pinpoint. We prefer writing lots of little tests as opposed to a few big ones.</p>
<p>A single &#8220;Business Logic&#8221; test may do the following things:</p>
<ol>
<li>Configure &#8220;Fake Data Access&#8221; to return certain data when called &#8211; For example: return a fake Person when called.</li>
<li>Call a &#8220;Business Logic&#8221; operation &#8211; For example: calculate investment income for a Person.</li>
<li>Check result of the operation &#8211; was a calculation done correctly?<br />
3a.  Flag the test as &#8220;Failed&#8221; if the calculation did not yield the expected result.</li>
</ol>
<h4><strong>Conclusion</strong></h4>
<p>We believe in writing unit tests because:</p>
<ul>
<li>Unit tests are much faster than manual testing. The entire system can be tested several times a day.  (although we obviously still do lots of manual testing to pick up issues that unit tests can&#8217;t detect)</li>
<li>Unit tests give developers confidence to make changes and keep the system clean and easy to maintain.</li>
<li>Unit tests save time (it&#8217;s very time consuming to find and fix broken features once the code has gone &#8220;Live&#8221;).</li>
<li>Unit tests make everyone sleep better at night.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.newmedialabs.co.za/agile_development/why-we-do-unit-testing/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Work Life at New Media Labs</title>
		<link>http://www.newmedialabs.co.za/new-media-labs/work-life-at-new-media-labs</link>
		<comments>http://www.newmedialabs.co.za/new-media-labs/work-life-at-new-media-labs#comments</comments>
		<pubDate>Fri, 30 Sep 2011 12:24:10 +0000</pubDate>
		<dc:creator>Tracy</dc:creator>
				<category><![CDATA[New Media Labs]]></category>
		<category><![CDATA[Braai]]></category>
		<category><![CDATA[NML]]></category>
		<category><![CDATA[Upper East Side]]></category>
		<category><![CDATA[working environments]]></category>

		<guid isPermaLink="false">http://www.newmedialabs.co.za/?p=1468</guid>
		<description><![CDATA[It’s 6.45am and I’m standing on NML’s main balcony at Upper East Side watching as the sun rises from behind the mountains.  As a homecomer who spent 12 years in London, I never take for granted just how truly blessed I am to live in such a beautiful part of the world.  This morning the [...]]]></description>
			<content:encoded><![CDATA[<p>It’s 6.45am and I’m standing on NML’s main balcony at Upper East Side watching as the sun rises from behind the mountains.  As a homecomer who spent 12 years in London, I never take for granted just how truly blessed I am to live in such a beautiful part of the world.  This morning the sunrise is a particularly spectacular one, turning the sky into hues of red and orange.  I try to capture it using the camera on my cellphone, it doesn’t come close to doing it justice but I upload it to Facebook anyway much to the annoyance of some of my homesick London-based SA friends.</p>
<p style="text-align: center;"><a href="http://www.newmedialabs.co.za/wp-content/uploads/2011/09/sunrise-NML.jpg" rel="lightbox[1468]"><img class="size-full wp-image-1472 aligncenter" title="New Media Labs View" src="http://www.newmedialabs.co.za/wp-content/uploads/2011/09/sunrise-NML.jpg" alt="" width="500" height="333" /></a></p>
<p>As the Mother City stirs into action below me, I make my way down to the gym for my morning workout.  It’s one of the (many) perks working at NML and, not only is the gym conveniently located for a pre‑work workout, but NML subsidises our membership fee too.</p>
<p>Paul has set himself the challenge of making NML the best possible environment for the team to work from and there is a strong focus on work/life balance here.  Our office space plays a big role in this regard.  A converted residential loft space in the Upper East Side, it creates a relaxed and informal working environment that benefits from incredible views over the City, the harbour and the mountains.</p>
<p><a href="http://www.newmedialabs.co.za/wp-content/uploads/2011/09/office-space.jpg" rel="lightbox[1468]"><img class="aligncenter size-full wp-image-1471" title="office-space" src="http://www.newmedialabs.co.za/wp-content/uploads/2011/09/office-space.jpg" alt="New Media Labs Upper East Side office space" width="496" height="365" /></a></p>
<p>Work/life balance is a key element in NML’s work ethic.  There is a degree of flexi-time to our working hours, so long as we’re all in by 9.30am, and Paul encourages not working more than 40 hours a week as anything over that leads to burnout &#8211; I&#8217;m told it&#8217;s one of the key tenants of The Agile Manifesto.</p>
<p>Our office is based in Woodstock meaning we don’t have to commute all the way to Town and a couple of us carpool in to work together from Tokai making the commute easier and more social.  There is a finacial incentive not to use a parking bay. Most of the team are members of the gym downstairs and the residential layout of the office means you can go downstairs, have a great workout, come back to shower (or even have a bath if you want!) and eat lunch (NML has a steady supply of sandwich ingredients, bread, various condiments and a snackwicher!) before getting back into the ‘work’ zone.</p>
<p><a href="http://www.newmedialabs.co.za/wp-content/uploads/2011/09/office-space-2.jpg" rel="lightbox[1468]"><img class="aligncenter size-full wp-image-1470" title="office-space-2" src="http://www.newmedialabs.co.za/wp-content/uploads/2011/09/office-space-2.jpg" alt="New Media Labs Office Space" width="442" height="373" /></a></p>
<p>I use the term ‘work’ here, but really, each member of the team is so passionate about what they do, that it doesn’t really feel like work.  The developers get to while away their days coding, fixing bugs, testing new technology and creating new techie stuff, Andrew gets to do his copywriting, Raoul manages the team and makes sure the clients are happy, Paul gets to focus on the next innovative growth steps, reading, meeting and general plotting and planning and I get to spend my days ensuring that life in the office runs smoothly (each to their own!).  More often than not, the team have their headphones on to help them stay focused and in the ‘creation zone’.  Although we have an informal policy of ‘Do not disturb when the headphones are on’, it doesn’t mean there is any disconnect in the team.  Truth be told, NML’s team is one of the most functional teams I’ve worked in.  Every morning we do &#8217;standup&#8217; where we each recap the previous day’s tasks and what we plan to accomplish today – it provides a chance to report our progress, raise challenges in projects we&#8217;re working on, ask for help where we need it and just generally ensure the whole NML team is up-to-date on what&#8217;s going on.</p>
<p>The standup exercise is just one of the tools we use for staying connected as a team – we have others too: the Braai (weather permitting, the team downs tools at 4pm on Fridays and we head to the main balcony for beer and burgers).  Then there is the much loved Coffee Pot (fresh brewed coffee is a staple part of the NML diet!).  That’s not to say we don’t do the usual ‘team building’ type of events.  I recently survived my first game of action cricket as the only girl on the team and the guys were really sweet about the fact that I actually lost runs!!</p>
<p><a href="http://www.newmedialabs.co.za/wp-content/uploads/2011/09/NML-action-cricket2.jpg" rel="lightbox[1468]"><img class="aligncenter size-full wp-image-1480" title="NML-action-cricket" src="http://www.newmedialabs.co.za/wp-content/uploads/2011/09/NML-action-cricket2.jpg" alt="New Media Labs Team Building" width="600" height="337" /></a></p>
<p>All in all, life at NML is pretty darn good and I can honestly say, I’ve found exactly the type of job and working environment I was looking for and in the country that I love to boot!</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Enhanced by Zemanta" href="http://www.zemanta.com/"><img class="zemanta-pixie-img" style="border: none; float: right;" src="http://img.zemanta.com/zemified_e.png?x-id=b39ed029-a384-4108-bc80-2d4ca819323f" alt="Enhanced by Zemanta" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.newmedialabs.co.za/new-media-labs/work-life-at-new-media-labs/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Last night a twitpic changed my life… well, sort of</title>
		<link>http://www.newmedialabs.co.za/uncategorized/last-night-a-twitpic-changed-my-life</link>
		<comments>http://www.newmedialabs.co.za/uncategorized/last-night-a-twitpic-changed-my-life#comments</comments>
		<pubDate>Tue, 12 Jul 2011 14:41:41 +0000</pubDate>
		<dc:creator>andrew</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Furniture]]></category>
		<category><![CDATA[Kastner & Partners]]></category>
		<category><![CDATA[Keyboards]]></category>
		<category><![CDATA[Niels Diffrient]]></category>
		<category><![CDATA[Office Products]]></category>
		<category><![CDATA[Product placement]]></category>

		<guid isPermaLink="false">http://www.newmedialabs.co.za/?p=1409</guid>
		<description><![CDATA[It’s no secret (judging by the barrage of pictures myself and the team keep posting) NML have just moved offices.
I’m doing my utmost to create the best possible environment for a small, skilled development team to work from. This part of the recipe is simple, create a beautiful, stimulating and relaxing environment to work from. [...]]]></description>
			<content:encoded><![CDATA[<p>It’s no secret (judging by the barrage of pictures myself and the team keep posting) NML have just moved offices.</p>
<p>I’m doing my utmost to create the best possible environment for a small, skilled development team to work from. This part of the recipe is simple, create a beautiful, stimulating and relaxing environment to work from. This helps maintain our great team, and attract new members.  In turn, this leads to great quality software for our clients, and happy clients means plenty of on-going work.</p>
<p>Some time ago, after almost completing the move, I posted this picture on twitpic :</p>
<p><a href="http://www.newmedialabs.co.za/wp-content/uploads/2011/07/twitpic.jpg" rel="lightbox[1409]"><img class="aligncenter size-medium wp-image-1439" title="twitpic" src="http://www.newmedialabs.co.za/wp-content/uploads/2011/07/twitpic-300x224.jpg" alt="nml twitpic" width="300" height="224" /></a></p>
<p><a href="http://twitpic.com/53pgjh">http://twitpic.com/53pgjh</a>.</p>
<p>To the untrained eye there doesn’t seem to be much amiss in this image, besides being out of focus and slightly under-exposed, but to the trained agency eye of a brand manager who happens to see that picture, and also happens to have the account for the most ergonomic chair out there, this image is crippling. A blue plastic chair from Makro just doesn’t cut the mustard in my new office, and doesn’t do my back any favours. By the same token, a R100 black plastic in/out tray functioning as a monitor stand borders on crude.</p>
<p>Fortunately, <a href="http://kastnerandpartners.com/capetown/" target="_blank">Kastner &amp; Partners</a> and <a href="http://www.formfunc.co.za" target="_blank">FormFunc</a> were on the other end of that twitpic, and before I could say chiropractor they’d sent over two of their Liberty Chairs, and M2 Monitor Arm and a Freedom Chair, which is honestly one of the sexiest inanimate objects I’ve ever seen.</p>
<p><a href="http://www.newmedialabs.co.za/wp-content/uploads/2011/07/pc-freedom-chair-s.jpg" rel="lightbox[1409]"><img class="aligncenter size-full wp-image-1445" title="pc-freedom-chair-s" src="http://www.newmedialabs.co.za/wp-content/uploads/2011/07/pc-freedom-chair-s.jpg" alt="New Media Labs office space" width="350" height="468" /></a></p>
<p>The monitor arm itself is a revelation. I have a passionate dislike for cables, I honestly believe they contribute to our stress levels by their very presence. With my cordless keyboard and mouse this monitor arm allows me to remove all cables from my desk, as the cables run inside the arm to the underside of the desk.</p>
<p><a href="http://www.newmedialabs.co.za/wp-content/uploads/2011/07/nml-new-office-space.jpg" rel="lightbox[1409]"><img class="aligncenter size-full wp-image-1447" title="nml-new-office-space" src="http://www.newmedialabs.co.za/wp-content/uploads/2011/07/nml-new-office-space.jpg" alt="New media labs office space" width="500" height="373" /></a></p>
<p>The monitor arm also allows me to move my keyboard past my screen, and get my screen up in line with my eye. In the 20 years I’ve spent behind computer screens I’ve never felt so comfortable looking at my screen.</p>
<p style="text-align: center;"><a href="http://www.newmedialabs.co.za/wp-content/uploads/2011/07/wire-free-desktop1.jpg" rel="lightbox[1409]"><img class="aligncenter size-full wp-image-1450" title="wire-free-desktop" src="http://www.newmedialabs.co.za/wp-content/uploads/2011/07/wire-free-desktop1.jpg" alt="new media labs office space" width="500" height="669" /></a>Given that we spend a good 8 hours a day behind our screens, this arm is well worth every cent. It seems manufacturers of monitors with the fixed base have forgotten that humans are all different.</p>
<p><img class="size-full wp-image-1411 alignleft" title="Freedom-chair" src="http://www.newmedialabs.co.za/wp-content/uploads/2011/07/Freedom-chair.jpg" alt="Freedom-chair new media labs" width="233" height="300" /></p>
<p><img class="size-full wp-image-1412 alignright" title="libert-chair" src="http://www.newmedialabs.co.za/wp-content/uploads/2011/07/libert-chair.jpg" alt="liberty chair new media labs" width="200" height="300" /></p>
<p>Besides its sleek lines, the Freedom Chair’s simplicity is ingenious, with three inconspicuous controls my the chair can be perfectly adjusted to perfectly support my back. Echoing the designers Niels Diffrient’s motto “Comfort is the lack of stress”.</p>
<p>And if this seems like one of those terrible product placement blog posts, that’s because it is. The difference here is that I wholeheartedly endorse this brand and their products, that and my computer science antics aren’t extreme enough for Kastner and Partners&#8217; other brand – Redbull.</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Enhanced by Zemanta" href="http://www.zemanta.com/"><img class="zemanta-pixie-img" style="border: none; float: right;" src="http://img.zemanta.com/zemified_e.png?x-id=f25b166e-8b5c-4525-a931-612ca9fcf537" alt="Enhanced by Zemanta" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.newmedialabs.co.za/uncategorized/last-night-a-twitpic-changed-my-life/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Why I’m Not Looking for VC &amp; Coming to Terms with Being a Services Business</title>
		<link>http://www.newmedialabs.co.za/new-media-labs/why-i%e2%80%99m-not-looking-for-vc-coming-to-terms-with-being-a-services-business</link>
		<comments>http://www.newmedialabs.co.za/new-media-labs/why-i%e2%80%99m-not-looking-for-vc-coming-to-terms-with-being-a-services-business#comments</comments>
		<pubDate>Tue, 07 Jun 2011 12:42:38 +0000</pubDate>
		<dc:creator>Paul Cartmel</dc:creator>
				<category><![CDATA[New Media Labs]]></category>
		<category><![CDATA[Product Business]]></category>
		<category><![CDATA[Service Business]]></category>
		<category><![CDATA[Techcrunch]]></category>
		<category><![CDATA[Venture Capital]]></category>

		<guid isPermaLink="false">http://www.newmedialabs.co.za/?p=1377</guid>
		<description><![CDATA[Last week I sat on a panel with Patrick Kayton (Cognician), Vincent Maher (Motribe), Daniel Guasco (Groupon SA) and Daniel Schwartzkopff (FSMS) at the Social Media World Forum. One of the topics that came up was that of venture capital (VC). I mentioned that I didn’t particularly like VC, and given that I only had [...]]]></description>
			<content:encoded><![CDATA[<p>Last week I sat on a panel with Patrick Kayton (Cognician), Vincent Maher (Motribe), Daniel Guasco (Groupon SA) and Daniel Schwartzkopff (FSMS) at the Social Media World Forum. One of the topics that came up was that of venture capital (VC). I mentioned that I didn’t particularly like VC, and given that I only had about 1 minute to answer, my justification was that it would put me on a growth path that I wouldn’t feel comfortable with. As I understand it, VCs want an order of magnitude payback within 4 to 5 years and I felt that this was so often unachievable, frequently leading to a crash and burn scenario. If the VC backs ten players and gets an order of magnitude return out of two of them, and the remaining eight crash, they still have a 1200% return. While they would love all of their ventures to succeed, they know that it is unlikely. VC investment becomes a statistical game, one that I’m not willing to play.</p>
<p>There are two instances I should expound, my minute of airtime on the panel precluded these:</p>
<p>1) Immediately after starting New Media Labs I sold a 40% share to Global Vision for a significant sum, technically share capital, or maybe an angel investment, as opposed to VC, but that could be construed as semantics</p>
<p>2) Nearly two years later I “bought” back that share in a debt/equity swap after Global Vision owed me nearly the equivalent amount of money. The reason I don’t see that as receiving VC, while others might, is that Global Vision bought into a partnership with a services business in order to establish an affiliation with New Media Labs and have access to the skills I had already brought to the company. Venture capitalists almost always buy into product companies as opposed to service companies.</p>
<p>I know that as a service company New Media Labs is very unlikely to receive venture capital, we’ve developed quite a number of products over the last four years but it is very hard to sell the idea of a service company becoming a product company to VC and this article below explains why. It also explains what most service companies that are profitable, and have a good client base, should do about finding venture capital. With respect to New Media Labs, no article has resonated for me more in the past year than this one, even the numbers resonate, albeit in rands rather than dollars. Below is an essay that could only come from experience. Have a read, tell me what you think (<span style="color: #ff0000;">my take homes in red</span>).</p>
<p><a href="http://www.newmedialabs.co.za/wp-content/uploads/2011/06/media_350x3501.jpg" rel="lightbox[1377]"><img class="aligncenter size-full wp-image-1385" title="media_350x350" src="http://www.newmedialabs.co.za/wp-content/uploads/2011/06/media_350x3501.jpg" alt="social media world forum africa" width="349" height="235" /></a><br />
</br></p>
<h3>What Should You Do With Your Crappy Little Services Business?</h3>
<p><em>(This post <a href="http://techcrunch.com/2011/04/24/what-should-you-do-with-your-crappy-little-services-business/" target="_blank">originally appeared on TechCrunch</a>)</em></p>
<p>There’s a line of thinking in Silicon Valley that you should build product businesses rather than services businesses. This thinking is largely driven by the venture capital industry (and a</p>
<p>It’s nearly impossible to get a services company financed by VCs. You’re a small fish.</p>
<p>So pervasive has this thinking become that on several occasions startup companies with profitable &amp; fast growing services businesses have come to me wanting to show me the product businesses they created internally to see whether they would be financeable or whether they might be able to create “spin outs” that could be financed.</p>
<p>A great recent example of this was a successful group of entrepreneurs who had created a company that will do $10-12 million in revenue at their system integration business (read: services business) in 2011 after having done $5 million or so in 2010 and $2-3 million in 2009. They feel very confident they can hit $18 – 20 million in 2012.</p>
<p>They have created two internal technology “products” and wanted to figure out how they could turn their services business into a product business that could be financed. This team is talented. They wanted advice. And probably some money. I gave them advice I don’t think they were expecting from a VC,</p>
<p><span style="color: #ff0000;"><em>“Don’t raise venture capital for this business. Ever. And stop effing around trying to create a product company.”</em></span></p>
<p>It is advice I give entrepreneurs often as I have written here on <a href="http://www.bothsidesofthetable.com/2009/07/22/do-you-really-even-need-vc/" target="_blank">why most businesses should never raise VC</a>.</p>
<p><strong>Why Shouldn’t Most Services Businesses Raise VC?</strong></p>
<p>Well, let’s look at this exact situation:</p>
<ul>
<li> I don’t have access to their actual financial statements but let me make some reasonable assumptions. It would not be a big stretch to image a well run service business like this making 15-25% net profit margins. Early in a services business there is usually no profits as the company reinvests in hiring people to grow, but by $20 million in sales the company should at least be pulling in 10% profits (if not more) depending on how much is reinvested.</li>
</ul>
<ul>
<li> So assume that in 2012 the company would do $20 million in sales and $2 million in profits (10%) and 2013 they would do sales of $25 million and $4 million in profit (16% net margin) and then slow growth in 2014 to $30 million and $6 million in profit (20% profit). That is $12 million in profits over 3 years.</li>
</ul>
<ul>
<li><span style="color: #ff0000;">The founders could reinvest this in growth (0% tax, focus on future equity growth) or take the profits of $12 million and divide amongst the founding partners. Assuming there are 3 founders and they own an equal amount (33%) then they’ve just taken $4 million each in profits and note that this is at <a href="http://en.wikipedia.org/wiki/Dividend_tax" target="_blank">a qualified dividend tax rate</a> (currently 15%) versus an income tax rate (35%). True, the 15% rates will likely go up in the future, but I doubt they will approach the income tax percentage level.</span></li>
</ul>
<ul>
<li> The thing is – even if your services business is a smaller scale than this – you have complete control over the decisions about where to take the business. There is no shame in making a few million dollars in profit and paying yourself dividends while still owning a large percentage (if not all) of your business. It’s how things are done across the country outside of Silicon Valley.</li>
<li>The minute you raise VC you have one option – grow &amp; try to become big. No VC is interested in dividends – they want growth. That’s the right answer for VCs.  It may be the right answer for you. But it might not.</li>
</ul>
<ul>
<li><span style="color: #ff0000;">Trying to turn a successful services business into a product business is getting the cart before the horse. If you really want to do a product business then hire a professional manager for your services company, quit that job and focus 100% on your product company.</span></li>
</ul>
<p><strong>Why Build a Services Business in the First Place?</strong><br />
There are at least two types of tech services businesses in my mind:</p>
<p><em>1. Service as a bridge to a product business </em>- One of the best ways for young startups to finance their business without any dilution is what I call “customer financing,” which is mostly only possible in businesses that target businesses rather than consumers. Customer financing often comes in the form of your company agreeing to build a product with a “sponsor” customer or two and helping them with the rollout / implementation. Often in this strategy you end up giving them the product for free and bill them only services fees. You own the IP you create.</p>
<p>The benefits for the customer are: a mostly custom-built product addressing one of their internal needs, the focus of a very talented young startup focusing on their business need &amp; free product – potentially for life.</p>
<p>The benefits for you are even more clear: you get to build a product raising significantly less external money (if any at all) and therefore no dilution, you get a customer who will help you figure out the real requirements for your business and you have your first real reference client lined up, which should help with future funding and with future sales.</p>
<p>If you set out to build this kind of business you just need to be sure you don’t become a permanent consulting business by default. The “customer-financed” type of tech service business is never frowned upon by VCs – unless you’ve been doing it for 2-3 years with no product business to show for it, by which point they assume you’re the second type of services business.</p>
<p><em>2. Services for services sake -</em> The type of business that is generally shunned in Silicon Valley is the “pure services” business like consulting, system integration, value-added resellers (VARs), customer support businesses, outsourcing companies, etc.  I have already outlined some of the economic reasons these can be good businesses as well as the one of the most important – retaining full control in your business.</p>
<p>But the broader reason that I often suggest them to entrepreneurs is that they’re much easier to build than product businesses even though they’ll never become Google, Twitter or Facebook. Trust me – it is far easier to persuade a business to pay you for your services (a concept they readily understand) than it is to persuade them to buy a totally new product concept and pay for that product.</p>
<p><em><span style="color: #ff0000;">“How much is that software really worth? Who else is using it? How much did they pay? Wait, I’m only paying “X” for my Salesforce.com licenses – and you want me to pay “Y” for your product? Who are your competitors – how much do they charge?”</span></em></p>
<p><span style="color: #ff0000;">I could go on-and-on with all of the sales-blocking messages you will hear when you try to charge for a product. I’ll repeat: everybody understands paying for services. It’s pure irony. At my first company we would have a product sale of $80,000 where the customer would grind us to get the fee down to $70,000 but would readily pay $25,000 extra for “implementation &amp; post-sales support.”</span></p>
<p>We were building a VC backed software business so I had to focus on the product business. But this lesson in business was never lost on me. And some of my former teammates are now building really awesome services businesses in the exact same field and they own 100% of their companies.</p>
<p>Even tech blogs know this. You struggle to get advertisers to pay your CPM rates and get your page clicks up in a business where you become a near commodity to ever other website out there. Yet you can run a conference and mint money. If it’s well run, people readily pay for conferences and sponsors readily pay to become platinum, gold or silver sponsors. Tech blogs can theoretically scale, tech conferences are pure service businesses.</p>
<p><strong>But How Do Service Businesses Grow?</strong><br />
I’m not saying the scaling a services business is easy – it’s not. One big challenge is how to grow the company. You end up needing to add staff and take on more risk without knowing what your future demand will be. There are a couple of ways to think about this growth.</p>
<p>1. Start with a network of independent contractors (<a href="http://www.wisegeek.com/what-is-a-1099-contractor.htm" target="_blank">1099′s</a>)- When you’re a young company with 3-4 people and you land work that requires 7-8 it can be daunting. You don’t necessarily want to take on the extra employees and risks. I recommend that you establish a network of contractors who want to do similar work to you but don’t know how to sell projects or to build a company. They’ll be glad for the occasional extra work.</p>
<p>2. Vendor financing – When you start to win business – let’s say as an implementation arm for tech / business products or as an ad sales team for large tech / media businesses – you can often get financed in a small way by your vendors who are all to happy to have a bigger ecosystem of implementation houses. They won’t do this before you prove yourself but once you hit a minimum scale this is always an option.</p>
<p>3. Angel financing – just because VCs won’t back this kind of business doesn’t mean angels won’t. If you can show a few million in sales and the ability to return dividends in the near-term there are always smart businesses professionals who will consider financing this. What are there other choices these days – money in a bank at 0.5% interest?</p>
<p>4. Bank financing – OK, so this isn’t immediately likely to come from Wells Fargo, but there are tech banks like <a href="http://www.svb.com/" target="_blank">Silicon Valley Bank</a> or <a href="https://www.square1financial.com/bank/" target="_blank">Square1 Bank</a> that are in the business of financing startups. If you can show regular cashflow and are willing to put your profits into their bank you can often fund expansion this way.</p>
<p>Final message on financing – just be careful not to let your fixed costs get too high as a young services business. In a booming tech market like 2011 it’s easy to think your business will always expand. The problem with service businesses is that when the economy turns revenue &amp; profits take a really big and quick hit. Those companies that have a largely variable cost base and make the tough decisions survive for the next boom.</p>
<p><strong>Why Shouldn’t Service Businesses Become Product Businesses?</strong><br />
If you build a true “technology services for services sake” business at some point you’ll likely build technology products as part of your projects where you either own the IP or you own in jointly with your customer or business partner.</p>
<p>This is where many service businesses make mistakes and go <a href="http://www.urbandictionary.com/define.php?term=gone%20pear-shaped" target="_blank">pear shaped</a>. They get “product business envy” because they read too much TechCrunch about their product brethren raising money at crazy valuations and getting sold at even crazier ones. So they set out to build a product business within a services company.</p>
<p><span style="color: #ff0000;">A few problems arise. Firstly, they don’t realize how hard product businesses are. They mistake their successes in selling services as a competency in selling products. This is a huge mistake. Secondly, they often ramp up their cost base to accommodate these costs, which when a down market hits they are more effed than those that stay focused. Finally, the focus on the product (envy) means that they take their eye off of their core business, which is services. So the core business suffers.</span></p>
<p>I saw this first hand. My first career was at Andersen Consulting (one of the largest services businesses in the world). We built a hugely successful global services business yet we never got over our product envy from watching our tech clients. So we created internal software projects and all of the internal consultants on those projects became blowhards who thought they knew how to create software product businesses.</p>
<p>We stunk at every product we ever created. We had no sense for gathering real customer requirements. We over-spec’d products. We built for our over-intellectual selves. I can’t think of any great software tools ever created internally by Andersen Consulting. We were a great services business. Period.</p>
<p><strong>What Should Services Businesses do with Their Product Businesses?</strong><br />
So back to my advice to the company I recently spoke to about spinning out their tech business or raising VC. My advice wasn’t to shut down all product / IP initiatives but rather to be clear on their purpose and how to monetize them.</p>
<p><em>1. Products as a service sales machine</em> – My dear friend <a href="http://fr.linkedin.com/in/fmeudec" target="_blank">Franck Meudec</a> in Paris knows this best. He has built some internal technology products to support his services business. They are “loss leaders” for his core business. In stead of going in and trying to hold the line on how much to charge for these products he can tell customers, <span style="color: #ff0000;">“Sure, we’ll give you our planning software at cost if you decide to work with us.”</span></p>
<p>His business is booming. These products help him win his core sales. He is not confused about which is the horse &amp; which is the cart. He is building a services business. Instead of owning 1% in options to join a startup tech company he created his own tech services business. He is the majority owner. Higher risk, higher reward than joining as a junior employee somewhere else.</p>
<p><em>2. Products as a key differentiator</em> – Another important reason for having internal IP in your services business is as a key differentiator against other services businesses. If a customer is faced with two equal choices for companies who can implement Salesforce.com – how do they choose one other than references &amp; price? Imagine if you had built a few modules on top of Salesforce.com that made that product more effective? Even if you didn’t charge for these it would sure increase your sales hit rate.</p>
<p>Tech services business in booming markets are mostly about how fast you can sell, implement, manage quality, hire and sell some more. In a down market IP can become a huge differentiator.</p>
<p><em>3. Products as a gross margin bump </em>- Finally, it should be said that in a services business often your implementation rate becomes a commodity relative to others in the market. If you can make an extra 10% on each sale by selling your “ad on” products that are at 90% gross margins not only will you increase your win rates but you’ll also add valuable profits to your bottom line.</p>
<p><strong>In summary:</strong> I’m not advocating that companies are crazy to try and be product companies. In fact, that’s all that I fund as a VC. But I don’t want the narrow world of venture-backed companies and the trade rags that report on them to dissuade the overwhelming masses of potential entrepreneurs from building meaningful businesses that are both fun and economically rewarding.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.newmedialabs.co.za/new-media-labs/why-i%e2%80%99m-not-looking-for-vc-coming-to-terms-with-being-a-services-business/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Showcase – Esri Sample Silverlight Viewer</title>
		<link>http://www.newmedialabs.co.za/mapping/showcase-%e2%80%93-esri-sample-silverlight-viewer</link>
		<comments>http://www.newmedialabs.co.za/mapping/showcase-%e2%80%93-esri-sample-silverlight-viewer#comments</comments>
		<pubDate>Mon, 21 Feb 2011 16:34:08 +0000</pubDate>
		<dc:creator>Rogan Flitton</dc:creator>
				<category><![CDATA[Mapping]]></category>
		<category><![CDATA[Showcase]]></category>

		<guid isPermaLink="false">http://www.newmedialabs.co.za/?p=1293</guid>
		<description><![CDATA[For those of you who have read my showcase on the Transport Operations Centre Information Hub, mention was made on how we used the Sample Flex Viewer to deliver an interactive mapping interface or Common Operational Picture (COP in short). A fundamental element to note here is the word &#8216;Flex&#8217; commonly known as &#8216;Adobe Flex&#8217; [...]]]></description>
			<content:encoded><![CDATA[<p>For those of you who have read my showcase on the <a href="http://www.newmedialabs.co.za/mapping/showcase-%E2%80%93-transport-operations-centre-information-hub" target="_blank">Transport Operations Centre Information Hub</a>, mention was made on how we used the <a href="http://help.arcgis.com/en/webapps/flexviewer/" target="_blank">Sample Flex Viewer</a> to deliver an interactive mapping interface or Common Operational Picture (COP in short). A fundamental element to note here is the word &#8216;Flex&#8217; commonly known as &#8216;Adobe Flex&#8217; or &#8216;Adobe Flash&#8217;, something I like to think of as &#8216;a programming language I&#8217;m not too clued up in&#8217;. Yes, the Sample Flex Viewer was built in Flex by ESRI, and even though the source code for it and the various widgets out there are readily available and I made some custom modifications during the Transport Operations Centre Information Hub project myself, at the end of the day I&#8217;m a software developer that is more comfortable within the Microsoft spectrum, fundamentally because thats what I&#8217;ve been playing with since I started programming and its been paying the bills ever since.</p>
<p>With that said, recently I had the opportunity to port what we had there to a Silverlight version and therefore happily jumped onto the task.</p>
<p>I&#8217;m proud to introduce the <a href="http://www.newmedialabs.co.za/silverlightcop/" target="_blank">Silverlight COP</a>!</p>
<div id="attachment_1270" class="wp-caption alignright" style="width: 310px"><a href="http://www.newmedialabs.co.za/wp-content/uploads/2011/02/ESRI-Silverlight-Viewer.png" rel="lightbox[1293]"><img class="size-medium wp-image-1270 " title="ESRI Silverlight Viewer" src="http://www.newmedialabs.co.za/wp-content/uploads/2011/02/ESRI-Silverlight-Viewer-300x207.png" alt="ESRI Silverlight Viewer" width="300" height="207" /></a><p class="wp-caption-text">ESRI Silverlight Viewer</p></div>
<p>I cannot take too much credit. It must be known that the ArcGIs Silverlight API is very easy to dive into due to ESRI&#8217;s excellent online samples (http://help.arcgis.com/en/webapi/silverlight/samples/start.htm). I also had some initial help when I found a post online where a guy by the name of diligentpig had already started such a port (for the love of me I can&#8217;t find that original post, so if he&#8217;s out there and stumbles upon this post, I&#8217;m apologizing). None the less, his version was in chinese and VS2008, which I upgraded to english, VS2010 and Silverlight 4.</p>
<p>Functionality that my version includes:</p>
<ul>
<li> Your standard navigation commands of Zoom In, Zoom Out, Full Extent and Re-center Map.</li>
<li> Layers widget with the ability to set the ArcGIS Dynamic Layers you want to suscribe to in a configuration file. My demo is pointing to the following sample ESRI dynamic services:  Census USA Info (<a href="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer" target="_blank">http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer</a>) and Cool stuff in California (<a href="http://serverapps.esri.com/ArcGIS/rest/services/California/MapServer" target="_blank">http://serverapps.esri.com/ArcGIS/rest/services/California/MapServer</a>)</li>
<li> Overview Map, Bookmark widget</li>
<li> The Standard ESRI Navigation Control in the bottom left</li>
<li> GEO RSS Feed widget and the ability to set which Geo RSS Feeds you want to display via the configuration file</li>
<li> Ability to Switch between a street map, topography map or imagery map and also the ability to set their services in the configuration code. My demo is point to the following sampe ESRI services:   Streets &#8211; <a href="http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer" target="_blank">http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer</a> Topography -<a href="http://services.arcgisonline.com/ArcGIS/rest/services/ESRI_ShadedRelief_World_2D/MapServer" target="_blank"> http://services.arcgisonline.com/ArcGIS/rest/services/ESRI_ShadedRelief_World_2D/MapServer</a> Imagery &#8211; <a href="http://services.arcgisonline.com/ArcGIS/rest/services/ESRI_Imagery_World_2D/MapServer" target="_blank">http://services.arcgisonline.com/ArcGIS/rest/services/ESRI_Imagery_World_2D/MapServer</a></li>
</ul>
<p>If you are interested in seeing the source code, please don&#8217;t hesitate to <a href="mailto:info@newmedialabs.co.za" target="_blank">contact us at NML</a>.</p>
<p>Lastly, for a bit of fun,  click the links below and have a look at the original flash version of the &#8216;pulsating red ring&#8217; and my silverlight version. Which do you prefer?</p>
<div id="attachment_1278" class="wp-caption alignright" style="width: 160px"><a href="http://www.newmedialabs.co.za/wp-content/uploads/2011/02/Reg_glow.png" rel="lightbox[1293]"><img class="size-thumbnail wp-image-1278 " title="Reg_glow" src="http://www.newmedialabs.co.za/wp-content/uploads/2011/02/Reg_glow-150x150.png" alt="Silverlight Red Glow" width="150" height="150" /></a><p class="wp-caption-text">Silverlight Red Glow</p></div>
<p><a href="http://www.newmedialabs.co.za/silverlightcop/red_glow.swf" target="_blank">Flash Version</a></p>
<p>or</p>
<p><a href="http://www.newmedialabs.co.za/silverlightcop/red_glow.html" target="_blank">Silverlight Version</a></p>
<p>The cool thing about this is it was all done in Expression Blend 4 using story boards and animations. Click the code snippet below to see how it was done.</p>
<div id="attachment_1280" class="wp-caption alignnone" style="width: 310px"><a href="http://www.newmedialabs.co.za/wp-content/uploads/2011/02/Code1.png" rel="lightbox[1293]"><img class="size-medium wp-image-1280 " title="Red Glow Expression Blend Code" src="http://www.newmedialabs.co.za/wp-content/uploads/2011/02/Code1-300x263.png" alt="Red Glow Expression Blend Code" width="300" height="263" /></a><p class="wp-caption-text">Red Glow Expression Blend XAML Code</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.newmedialabs.co.za/mapping/showcase-%e2%80%93-esri-sample-silverlight-viewer/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Showcase – Transport Operations Centre Information Hub</title>
		<link>http://www.newmedialabs.co.za/mapping/showcase-%e2%80%93-transport-operations-centre-information-hub</link>
		<comments>http://www.newmedialabs.co.za/mapping/showcase-%e2%80%93-transport-operations-centre-information-hub#comments</comments>
		<pubDate>Fri, 10 Dec 2010 11:47:49 +0000</pubDate>
		<dc:creator>Rogan Flitton</dc:creator>
				<category><![CDATA[Mapping]]></category>
		<category><![CDATA[Sharepoint 2010]]></category>
		<category><![CDATA[Showcase]]></category>

		<guid isPermaLink="false">http://www.newmedialabs.co.za/?p=1208</guid>
		<description><![CDATA[With South Africa being the host for the FIFA World Cup, 2010 proved  to be an epic year. Not only did the tournament provide opportunities in  abundance for South African individuals to shine, but South African  businesses as well.
New Media Labs were privileged enough to be offered the opportunity  to make [...]]]></description>
			<content:encoded><![CDATA[<p>With South Africa being the host for the FIFA World Cup, 2010 proved  to be an epic year. Not only did the tournament provide opportunities in  abundance for South African individuals to shine, but South African  businesses as well.</p>
<p>New Media Labs were privileged enough to be offered the opportunity  to make their mark on the success of the 2010 FIFA World Cup when we  were hired by Aurecon to architect and develop an Information Portal to be used by a  Transport Operations Centre (TOC).</p>
<p>The purpose of the TOC was to provide the public with information  about any public transport mechanism at any time leading up to and  during the running of the 2010 FIFA World Cup. Secondary to this, the  TOC was to monitor all public transportation issues that may have arisen  and feed notifications of these issues to the relevant authorities.</p>
<p><a href="../wp-content/uploads/2010/12/TOC1.png" rel="lightbox[1208]"><img class="alignnone size-medium wp-image-1223" title="TOC" src="http://www.newmedialabs.co.za/wp-content/uploads/2010/12/TOC1-300x224.png" alt="" width="300" height="224" /></a></p>

<table id="wp-table-reloaded-id-1-no-1" class="wp-table-reloaded wp-table-reloaded-id-1">
<thead>
	<tr class="row-1 odd">
		<th class="column-1"></th><th class="column-2">Provide information access</th><th class="column-3">Provide monitoring and notification capacity</th><th class="column-4">Provide complaint channel</th>
	</tr>
</thead>
<tbody>
	<tr class="row-2 even">
		<td class="column-1">Day-to-day</td><td class="column-2">- Public in general<br />
- Public transport customers<br />
- Public transport operators<br />
- commerce &amp; Industry<br />
- Law Enforcement / Safety &amp; Security<br />
- Emergency Services<br />
- Municipality<br />
</td><td class="column-3">- Commerce &amp; Industry<br />
- Law Enforcement / Safety &amp; Security<br />
- Emergency Services<br />
- Municipality</td><td class="column-4">- Public transport customers<br />
- Public transport operators<br />
- Municipality</td>
	</tr>
	<tr class="row-3 odd">
		<td class="column-1">Planned Events</td><td class="column-2">As above, plus:<br />
- Event Organisers<br />
- Controlling Body (e.g. 2010 FIFA World Cup LOC)</td><td class="column-3">As above, plus:<br />
- Event Organisers<br />
- Controlling Body (e.g. 2010 FIFA World Cup LOC)</td><td class="column-4">As above, plus:<br />
- Event Organisers<br />
- Controlling Body (e.g. 2010 FIFA World Cup LOC)</td>
	</tr>
	<tr class="row-4 even">
		<td class="column-1">Emergencies</td><td class="column-2">- Emergency Services<br />
- Law Enforcement / Safety &amp; Security</td><td class="column-3">- Emergency Services<br />
- Law Enforcement / Safety &amp; Security</td><td class="column-4">- Emergency Services<br />
- Law Enforcement / Safety &amp; Security</td>
	</tr>
</tbody>
</table>

<p>Central to the management of this information was the Information Hub  component of the TOC. We envision this as being served by a Microsoft  SharePoint 2010 (MOSS) installation, allowing for a rapid deployment  given the timeframe of the project.</p>
<p>Aurecon was briefed to develop the simplest possible solution that  utilised off-the-shelf products as far as possible so as to minimise the  risk and lengthy time frames implied by custom development. New Media  Labs were happy to provide their knowledge and expertise in web  technologies, SharePoint 2010 and Rapid Application Development.</p>
<p>The Information HUB provided the following key functional components to the TOC:<br />
•	Information Wiki<br />
•	Call Logging<br />
•	Information Request<br />
•	Status Updates of Facilities<br />
•	Complaint Reporting<br />
•	Incident Reporting</p>
<p>In addition to the above, the HUB also provided:<br />
•	Functionality and responsibility split between various roles and groups, e.g. Call takers and Supervisors<br />
•	Workflow<br />
•	Spatial Awareness via interactive ArcGis Maps<br />
•	Connectivity in the form of RSS and GeoRSS Feeds</p>
<p><strong>Information Wiki</strong><br />
The wiki was used to provide information to the Call Takers, other role  players within the TOC and the general public in a structured, logical  and consistent manner. The information presented by the wiki component  of the Information Hub was a mixture of “traditional” wiki-style static  information and “dynamic” information, presented by web-parts provided  by MOSS.</p>
<p>By utilizing Wiki Pages provided by Sharepoint 2010, we were able to  quickly and effectively build a wiki for the TOC which was also easily  updatable by members of the TOC during the tournament.</p>
<p><a href="../wp-content/uploads/2010/12/Wiki1.png" rel="lightbox[1208]"><img class="alignnone size-medium wp-image-1225" title="Wiki" src="http://www.newmedialabs.co.za/wp-content/uploads/2010/12/Wiki1-300x187.png" alt="" width="300" height="187" /></a><br />
Fig 1: Information Wiki</p>
<p><strong>Call Logging</strong><br />
The starting point for interactions with the Information Hub by Call  Takers was a wizard-based dialog. This dialog was the starting point to  kick off the various required workflows and also acts as guidance for  the Call Takers, whilst logging the calls answered.</p>
<p><a href="../wp-content/uploads/2010/12/LandingPage1.png" rel="lightbox[1208]"><img class="alignnone size-medium wp-image-1219" title="LandingPage" src="http://www.newmedialabs.co.za/wp-content/uploads/2010/12/LandingPage1-300x187.png" alt="" width="300" height="187" /></a><br />
Fig 2: Call Logging – Landing Page as seen by a call taker</p>
<p><a href="../wp-content/uploads/2010/12/AnswerCall21.png" rel="lightbox[1208]"><img class="alignnone size-medium wp-image-1212" title="AnswerCall2" src="http://www.newmedialabs.co.za/wp-content/uploads/2010/12/AnswerCall21-300x187.png" alt="" width="300" height="187" /></a><br />
Fig 3: Call Logging &#8211;  Answering a call as seen by a Call taker.</p>
<p><strong>Information Request</strong><br />
One of the primary functions of the TOC was to handle incoming calls  from the public and answer any questions that they may have.  Call  takers could utilize the Wiki to locate the information required to  answer any questions. At the end of the call, the system would allow for  the call taker to capture the details of the question, if they were  able to answer it, and if they need to respond to the caller once an  answer has been found. If an answer was not given, then this would  initiate a system workflow, which ultimately would generate tasks to  supervisors indicating that the information was not available and the  wiki needed updating which they could then do.</p>
<p><a href="../wp-content/uploads/2010/12/RequestInfo1.png" rel="lightbox[1208]"><img class="alignnone size-medium wp-image-1220" title="RequestInfo" src="http://www.newmedialabs.co.za/wp-content/uploads/2010/12/RequestInfo1-300x187.png" alt="" width="300" height="187" /></a><br />
Fig 4: Information Request – Capturing question details and if it was answered.</p>
<p><strong>Status Updates of Facilities</strong><br />
A status update is linked to some physical entity and reflects a  property of that entity that may change over time. Two examples include a  measurement of how full a parking lot is, or how congested a segment of  road is.</p>
<p>We utilised the SharePoint 2010 ArcGIS map web part to graphically  represent the various FIFA 2010 World Cup Transport related facilities  for Port Elizabeth, and stored the facilities status values in an  underlying SharePoint list.</p>
<p><a href="../wp-content/uploads/2010/12/StatusUpdate1.png" rel="lightbox[1208]"><img class="alignnone size-medium wp-image-1221" title="StatusUpdate" src="http://www.newmedialabs.co.za/wp-content/uploads/2010/12/StatusUpdate1-300x187.png" alt="" width="300" height="187" /></a><br />
Fig 5: Status Update via SharePoint 2010 ArcGIS map web part.</p>
<p><strong>Complaint Reporting</strong><br />
Monitoring complaints from the public by the TOC allowed for rapid  notification to the relevant Stakeholder or Representative of the issue  at hand. Workflow was incorporated to provide feedback to the reporting  individual and inform them that the issue has been reported to the  relevant authority.</p>
<p><a href="../wp-content/uploads/2010/12/Complaint1.png" rel="lightbox[1208]"><img class="alignnone size-medium wp-image-1213" title="Complaint" src="http://www.newmedialabs.co.za/wp-content/uploads/2010/12/Complaint1-300x187.png" alt="" width="300" height="187" /></a><br />
Fig 6: Complaint Reporting – Capturing of the complaint details by a call taker.</p>
<p><strong>Incident Reporting</strong><br />
Incidents are events that have taken place that may or may not require  some sort of action by a role player who is either internal or external  to TOC. Whilst some notifications may have emergency aspects to them the  TOC’s role (and the Information Hub) was one of information sharing,  and thus, the design of the system was to allow the relevant parties to  be alerted to an incident, to monitor the progress of the incident and  to track when the incident was resolved.</p>
<p><a href="../wp-content/uploads/2010/12/Incident1.png" rel="lightbox[1208]"><img class="alignnone size-medium wp-image-1218" title="Incident" src="http://www.newmedialabs.co.za/wp-content/uploads/2010/12/Incident1-300x187.png" alt="" width="300" height="187" /></a><br />
Fig 7: Incident Reporting – Capturing of an incident by a call taker.</p>
<p><strong>Roles and Workflow</strong><br />
Within the TOC were several different roles and group, each having their  own responsibilities and actions within the TOC. We leveraged off of  SharePoint’s role based functionality and utilized the built in workflow  engine to quickly implement the require business processes.</p>
<p>Below is an example of such a process.<br />

<table id="wp-table-reloaded-id-2-no-1" class="wp-table-reloaded wp-table-reloaded-id-2">
<thead>
	<tr class="row-1 odd">
		<th class="column-1">Input State</th><th class="column-2">Action Required</th><th class="column-3">Role</th><th class="column-4">Next State</th>
	</tr>
</thead>
<tbody>
	<tr class="row-2 even">
		<td class="column-1">Open</td><td class="column-2">Action to relevant party</td><td class="column-3">Supervisor</td><td class="column-4">Actioned</td>
	</tr>
	<tr class="row-3 odd">
		<td class="column-1">Actioned</td><td class="column-2">Must be resolved or re-assigned to a party who can resolve</td><td class="column-3">-Technical Manager<br />
-Representative<br />
-Stakeholder<br />
-External</td><td class="column-4">Closed</td>
	</tr>
	<tr class="row-4 even">
		<td class="column-1">Escalated</td><td class="column-2">Immediate resolution action required</td><td class="column-3">Supervisor</td><td class="column-4">Closed</td>
	</tr>
	<tr class="row-5 odd">
		<td class="column-1">Closed</td><td class="column-2">None</td><td class="column-3"></td><td class="column-4">-</td>
	</tr>
	<tr class="row-6 even">
		<td class="column-1">No Action closed</td><td class="column-2">None</td><td class="column-3"></td><td class="column-4">-</td>
	</tr>
</tbody>
</table>
</p>
<p><a href="../wp-content/uploads/2010/12/Tasks1.png" rel="lightbox[1208]"><img class="alignnone size-medium wp-image-1222" title="Tasks" src="http://www.newmedialabs.co.za/wp-content/uploads/2010/12/Tasks1-300x187.png" alt="" width="300" height="187" /></a><br />
Fig 8: Tasks generated by workflows within SharePoint, assigned to the Supervisors group.</p>
<p><strong>Spatial Awareness and GEORSS</strong><br />
Within the TOC were several wallboards mounted across the centre. A  wallboard is defined as being any large-format display screen that is  placed in a location such that it is visible and easy to read for two or  more role players.</p>
<p>One of the primary wallboards was the Common Operational Picture  (COP). This wallboard was primarily used by the Supervisors, but was  visible so that any person within the TOC is able to quickly and easily  get an overview of the current operational situation. A COP is a map  representation of the area in question with various icons and  indicators.</p>
<p><a href="../wp-content/uploads/2010/12/Vehicle-Tracking1.png" rel="lightbox[1208]"><img class="alignnone size-medium wp-image-1224" title="Vehicle Tracking" src="http://www.newmedialabs.co.za/wp-content/uploads/2010/12/Vehicle-Tracking1-300x224.png" alt="" width="300" height="224" /></a></p>
<p>We utilized the Sample Flex Viewer supplied by ESRI and implemented  various widgets within it provided functionality such as displaying  various ArcGIS layers such as bus routes and facilities, Incidents  captured within Information Hub via GEORSS feeds, real time vehicle  locations and vehicle tracking,  and Status Updates from the Information  Hub.</p>
<p><a href="../wp-content/uploads/2010/12/COPIncidents1.png" rel="lightbox[1208]"><img class="alignnone size-medium wp-image-1214" title="COPIncidents" src="http://www.newmedialabs.co.za/wp-content/uploads/2010/12/COPIncidents1-300x187.png" alt="" width="300" height="187" /></a><br />
Fig 9 : Incidents on the COP via a GEORSS Feed.</p>
<p><a href="../wp-content/uploads/2010/12/COPLayers1.png" rel="lightbox[1208]"><img class="alignnone size-medium wp-image-1216" title="COPLayers" src="http://www.newmedialabs.co.za/wp-content/uploads/2010/12/COPLayers1-300x187.png" alt="" width="300" height="187" /></a><br />
Fig 10 : ArcGIS Layers depicting a Bus Route on the COP</p>
<p><strong>Summary</strong><br />
By utilizing the power of SharePoint Server 2010, workflow, roles and  leveraging tools from ESRI ArcGIS server, New Media Labs and Aurecon  were able to quickly implement a system which aided in the effective  management of transport for the 2010 FIFA World Cup in Port Elizabeth.<br />
We look forward to working closely with Aurecon again on any more future opportunities and projects.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.newmedialabs.co.za/mapping/showcase-%e2%80%93-transport-operations-centre-information-hub/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

