<?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 &#187; Software Development</title>
	<atom:link href="http://www.newmedialabs.co.za/category/software_development/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>0</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>“When Clever Gets Stupid” or “Not Understanding How the Advertising World Works” or “WTF is a BOT?“ or “Make Sure You Have a Revenue Model!” or &#8220;If You Don&#8217;t Do It Anyway&#8221;</title>
		<link>http://www.newmedialabs.co.za/software_development/%e2%80%9cwhen-clever-gets-stupid%e2%80%9d-or-%e2%80%9cnot-understanding-how-advertising-works%e2%80%9d-or-%e2%80%9cwtf-is-a-bot%e2%80%9c-or-%e2%80%9cmake-sure-you-have-a-revenue-model%e2%80%9d</link>
		<comments>http://www.newmedialabs.co.za/software_development/%e2%80%9cwhen-clever-gets-stupid%e2%80%9d-or-%e2%80%9cnot-understanding-how-advertising-works%e2%80%9d-or-%e2%80%9cwtf-is-a-bot%e2%80%9c-or-%e2%80%9cmake-sure-you-have-a-revenue-model%e2%80%9d#comments</comments>
		<pubDate>Sun, 29 Nov 2009 19:56:25 +0000</pubDate>
		<dc:creator>Paul Cartmel</dc:creator>
				<category><![CDATA[New Media Labs]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.newmedialabs.co.za/?p=825</guid>
		<description><![CDATA[In 2007 when facebook was huge (well it is still huge, but 2007 was a time when we talked about our Crackbook Addictions and we got a huge kick out of getting wallposts and we were as proud of our facebook &#8220;friends&#8221; count and our wallpost count as some twits are about the number of [...]]]></description>
			<content:encoded><![CDATA[<p>In 2007 when facebook was huge (well it is still huge, but 2007 was a time when we talked about our Crackbook Addictions and we got a huge kick out of getting wallposts and we were as proud of our facebook &#8220;friends&#8221; count and our wallpost count as some twits are about the number of twitter followers they have now days [I'm one of them!]) Vodaspam hadn&#8217;t smelt SMS integration into Facebook and I figured it would be an awesome idea to build and application that would send your wallpost to you as an sms.</p>
<p>Realisation 1 &#8211; facebook API didn&#8217;t expose the wallpost (obviously this was what got people coming back to facebook)</p>
<p>I&#8217;m determined and so we (Willem Odendaal and I) resorted to an old favourite technique of mine &#8211; Screen scraping or Indexing as google call it. Basically we made what is called &#8220;A Bot&#8221;.</p>
<p>Realisation 2 &#8211; you can only see the wall if you&#8217;re someone&#8217;s friend. No worries the Bot would be a Facebook user &#8211; enter Peter Lear (who Leared at your wall).</p>
<p>Peter (The Bot) had to login to facebook, check all his friends walls and screen scrape the html, check if there was a new post (the old highest value post was already loaded in the Database) pick up the new post and then bang it out to the &#8220;friend&#8221; as an SMS. The idea was that this would be about as prolific as Please Call Me&#8217;s &#8211; adverts [possibly contextual] would be attached and I would make lots of money. Boom.</p>
<p>Easier said than done. Attached is some of the code. The app worked a treat and within a week Peter had lots of friends - problem.</p>
<p>Realisation 3 &#8211; this could cost me a lot of money in SMSes (sent from a clickatell account) as some &#8220;friends&#8221; were getting 10 posts a day&#8230;</p>
<p>And so I tried to find an agency that would like to use it. But advertising doesn&#8217;t work like that. It is much slower and less dynamic than you may realise. Advertisers are often scared to try something new. If it isn&#8217;t in the strategy that was set x months ago - they won&#8217;t touch it was the message I got back. And so it wasted me money for a couple of months and I took it offline&#8230; only to see Vodacom integrated the wall into facebook 18 months later. Hmmm maybe I just didn&#8217;t sell it well enough or maybe it just wasn&#8217;t such a great idea.</p>
<p>Of course Peter Lear is still on facebook, he only has 17 friends, he plays Farmville now (Frances &#8211; my daughter &#8211; begged me) and when facebook is feeling kind they recommend that I make facebook better for him. Please write on his wall &#8211; http://www.facebook.com/profile.php?id=534167080</p>
<p>Attached is some of the code from Peter &#8220;The Bot&#8221; Lear. The login, the scrap, the send&#8230;</p>
<p>Interesting aside though &#8211; it was one of the things I showed Jon Jacobson that made him believe that he should invest in my company &#8220;New Media Labs&#8221; and that my ideas would slot into their marketing automation engine &#8211; Adora. And so it goes&#8230; everything for a reason &#8211; just do it.</p>
<p> ps. Warning. The hot girl that&#8217;s following you on twitter and spamming naked pictures of herself at you &#8211; this is what she looks like! She also beats you at poker, chess, etc. She&#8217;s also tried to login to this wordpress site and take control if it over a thousand times. &#8230; just a thought.</p>
<p>pps. This is what geeks do for fun.</p>
<div id="attachment_826" class="wp-caption alignnone" style="width: 513px"><img class="size-full wp-image-826  " title="Get a list of his friends..." src="http://www.newmedialabs.co.za/wp-content/uploads/2009/11/z1.png" alt="Get a list of his friends..." width="503" height="226" /><p class="wp-caption-text">Get a list of his friends...</p></div>
<div id="attachment_827" class="wp-caption alignnone" style="width: 516px"><img class="size-full wp-image-827 " src="http://www.newmedialabs.co.za/wp-content/uploads/2009/11/z2.png" alt="Login..push. " width="506" height="195" /><p class="wp-caption-text">Login..push. </p></div>
<div id="attachment_828" class="wp-caption alignnone" style="width: 523px"><img class="size-full wp-image-828  " title="Scrape...aka Index" src="http://www.newmedialabs.co.za/wp-content/uploads/2009/11/z3.png" alt="SMS Send" width="513" height="451" /><p class="wp-caption-text">Scrape...aka Index</p></div>
<div id="attachment_829" class="wp-caption alignnone" style="width: 528px"><img class="size-full wp-image-829 " title="SMS Send" src="http://www.newmedialabs.co.za/wp-content/uploads/2009/11/z4.png" alt="SMS Send" width="518" height="435" /><p class="wp-caption-text">SMS Send</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.newmedialabs.co.za/software_development/%e2%80%9cwhen-clever-gets-stupid%e2%80%9d-or-%e2%80%9cnot-understanding-how-advertising-works%e2%80%9d-or-%e2%80%9cwtf-is-a-bot%e2%80%9c-or-%e2%80%9cmake-sure-you-have-a-revenue-model%e2%80%9d/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Aurecon &#8211; Emergency Response and Incident Management Application</title>
		<link>http://www.newmedialabs.co.za/mapping/aurecon-emergency-response-and-incident-management-application</link>
		<comments>http://www.newmedialabs.co.za/mapping/aurecon-emergency-response-and-incident-management-application#comments</comments>
		<pubDate>Tue, 03 Nov 2009 15:28:44 +0000</pubDate>
		<dc:creator>Rogan Flitton</dc:creator>
				<category><![CDATA[Custom Development]]></category>
		<category><![CDATA[Mapping]]></category>
		<category><![CDATA[New Media Labs]]></category>
		<category><![CDATA[Rich Internet Applications]]></category>
		<category><![CDATA[SCRUM]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Software Architecture]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.newmedialabs.co.za/?p=694</guid>
		<description><![CDATA[Aurecon is a new, innovative, global group created by the recent coming together of 3 world-class companies - Africon, Connel Wagner and Ninham Shand.  They focus on providing professional technical services across a broad spectrum of proficiencies from engineering to information technology.
Aurecon is developing a whole suite of new Incident Management/Emergency Response Software for clients in [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><img class="alignleft size-full wp-image-707" title="aurecon" src="http://www.newmedialabs.co.za/wp-content/uploads/2009/11/aurecon.png" alt="aurecon" width="210" height="57" /><strong><a href="http://www.aurecongroup.com/" target="_blank">Aurecon</a></strong> is a new, innovative, global group created by the recent coming together of 3 world-class companies - Africon, Connel Wagner and Ninham Shand.  They focus on providing professional technical services across a broad spectrum of proficiencies from engineering to information technology.</p>
<p style="text-align: justify;">Aurecon is developing a whole suite of new Incident Management/Emergency Response Software for clients in areas such as Emergency Services, Disaster Management and Policing.</p>
<p style="text-align: justify;"><strong><span style="text-decoration: underline;">The Problem</span></strong></p>
<p style="text-align: justify;">New Media Labs came on board specifically to design, develop and implement a system that:</p>
<ul style="text-align: justify;">
<li>can capture all the necessary information needed by an emergency response unit in order to respond to an incident more quickly and efficiently.<img class="alignright size-medium wp-image-755" title="homer" src="http://www.newmedialabs.co.za/wp-content/uploads/2009/11/homer-300x225.png" alt="homer" width="240" height="180" /></li>
<li>has an easy to understand and operatable Graphical User Interface.  The more “Minority Report” it looked the better, and as the client once put it, &#8220;<em>if we had to put <strong>Homer Simpson</strong> in front of it, he’d know how to operate it.</em>&#8220;</li>
<li>is GIS enabled, so that operators can pinpoint locations easily and relay co-ordinates to responding units.</li>
<li>is easily deployed across various control stations across the country, and ultimately the world.</li>
</ul>
<p style="text-align: justify;">It just so happened that one of Aurecon’s existing clients operates a large CCTV control centre in the City of Cape Town and was in the market for such an application.</p>
<p style="text-align: justify;"><strong><span style="text-decoration: underline;">The Solution</span></strong></p>
<p style="text-align: justify;">Designed for a call centre/control station environment, our system presents the user with a graphically rich, simple and easy to use User Interface.  Aurecon was adamant that not only should the system work well, but it should also look great, as this would be a large selling point over competing systems.</p>
<p style="text-align: justify;">We implemented a container based UI where functionality is broken up and grouped into several independent, movable, expandable containers/panels.  These panels allow the user to view and work on multiple aspects at once, as well as the ability to drill into one specific section and focus all their attention on that one task.</p>
<p style="text-align: justify;"><object width="560" height="340" data="http://www.youtube.com/v/GNlcMcGbnXE&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/GNlcMcGbnXE&amp;hl=en&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /></object></p>
<p style="text-align: justify;">One of the key aspects to the system is a map - the map gives the user the ability to quickly navigate to a street, intersection, and popular landmark or CCTV camera location.  Designed specifically for a CCTV control station, the system contains a list of hundreds of operational CCTV cameras in and around the City of Cape Town region.  If an operator identifies something on one of their camera monitors, they then pinpoint the location on the map and capture necessary information about the incident so units can be dispatched accordingly.  Ultimately, the information captured in the system is also reported on.  Existing incidents are indicated by a coloured dot on the map depending on the priority of the incident.  CCTV cameras are marked by camera icons.</p>
<p style="text-align: justify;"><object width="560" height="340" data="http://www.youtube.com/v/chYwEgx2O20&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/chYwEgx2O20&amp;hl=en&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /></object><strong></strong></p>
<p style="text-align: justify;"><strong><span style="text-decoration: underline;">How did we do it?</span></strong></p>
<p style="text-align: justify;">In a nut shell, <strong>Start Lite</strong>, as the system is called, has a 3 tier architecture comprising of:</p>
<ul style="text-align: justify;">
<li>a SQL Server 2008 backend</li>
<li>WCF SOA middle tier</li>
<li>Silverlight UI</li>
</ul>
<p style="text-align: justify;"><img class="alignright size-medium wp-image-709" title="scrum" src="http://www.newmedialabs.co.za/wp-content/uploads/2009/11/scrum-269x300.jpg" alt="scrum" width="129" height="144" />Working closely with a newly established Aurecon Development Team, we were on site full time for the duration of the project.  We introduced their team to the <strong>SCRUM</strong> methodology and went from initially running all morning stand ups and sprints to SCRUM being fully integrated into the Aurecon staff and their project management processes.  With SCRUM, New Media Labs were able to keep up with the demanding deadlines of the project and finish Start Light on time and successfully.</p>
<p style="text-align: justify;"><strong><span style="text-decoration: underline;">Database and Web services</span></strong></p>
<p style="text-align: justify;">At New Media Labs, we believe that applying tried and tested patterns and practices is key when building software.  Not only does this accelerate design and development, but it reduces potential risk by ensuring that you’re applying industry standards that other software developers out there are doing as well.</p>
<p style="text-align: justify;">On this particular project we decided to use 2 Microsoft Patterns and Practices: <strong><a title="Repository Factory" href="http://www.codeplex.com/RepositoryFactory" target="_blank">Repository Factory</a></strong> and Web Service <strong><a title="Web Service Software Factory" href="http://www.codeplex.com/servicefactory" target="_blank">Software Factory Modeling Edition</a></strong>.</p>
<p style="text-align: justify;">The Repository Factory is a guidance package that automates creation of entity classes that map to database tables and repository classes to read and write those entity classes.  With it we were able to quickly build our data access and business logic layers.  The Repository Factory creates Business Entity classes from your database schema, generates CRUD (Create, Read, Update and Delete) stored procedures, and ultimately links the two together into ode that is easy to understand and maintain.</p>
<p style="text-align: justify;">With the Web Services Software Factory Modeling Edition, we were able to sit with the project owner and business analysts and graphically model the web services in full view with the use of a projector.  These sessions added incredible value as the whole team (not only developers) was involved and we could brainstorm and discuss more freely.  Once Modeled, the service contracts, message contracts and data contracts are all generated into code that is easily understandable.</p>
<div class="mceTemp" style="text-align: justify;">
<dl id="attachment_759" class="wp-caption alignnone" style="width: 160px;">
<dt class="wp-caption-dt"><a href="http://www.newmedialabs.co.za/wp-content/uploads/2009/11/datacontracts.png" rel="lightbox[694]"><img class="size-thumbnail wp-image-759 " title="datacontracts" src="http://www.newmedialabs.co.za/wp-content/uploads/2009/11/datacontracts-150x150.png" alt="Modelling data contracts for a web service" width="150" height="150" /></a></dt>
<dd class="wp-caption-dd">Modelling data contracts for a web service</dd>
</dl>
</div>
<p style="text-align: justify;">With the Repository Factory and Web Service Software Factory, New Media Labs were able to maintain a high project velocity whilst simultaneously getting the Aurecon Development Team up to speed with the architecture, patterns and practices.  Using the tools is trivial and the resulting code clear and understandable.</p>
<div class="mceTemp" style="text-align: justify;">
<dl id="attachment_760" class="wp-caption alignnone" style="width: 160px;">
<dt class="wp-caption-dt"><a href="http://www.newmedialabs.co.za/wp-content/uploads/2009/11/servicecontracts.png" rel="lightbox[694]"><img class="size-thumbnail wp-image-760 " title="servicecontracts" src="http://www.newmedialabs.co.za/wp-content/uploads/2009/11/servicecontracts-150x150.png" alt="Modelling a web service" width="150" height="150" /></a></dt>
<dd class="wp-caption-dd">Modelling a web service</dd>
</dl>
</div>
<p style="text-align: justify;"><strong><span style="text-decoration: underline;">User Interface</span></strong> <img class="size-medium wp-image-719 alignright" title="microsoft-silverlight1" src="http://www.newmedialabs.co.za/wp-content/uploads/2009/11/microsoft-silverlight1-300x225.jpg" alt="microsoft-silverlight1" width="180" height="135" /></p>
<p style="text-align: justify;">Why Silverlight?</p>
<ul style="text-align: justify;">
<li>Silverlight is a cross-browser, cross-platform and cross-device web technology, perfect for Aurecon’s need for a system that is quickly, easily and cheaply deployed.</li>
<li>Deployed on an IIS 7 web server - all the client needs to do is download the Silverlight plugin and start using the system.  It’s that simple!</li>
<li>With Silverlight, we were able to rapidly develop a visually rich user interface and experience.</li>
</ul>
<p style="text-align: justify;">Yes, ok but why not Adobe Flash?</p>
<ul style="text-align: justify;">
<li>Aurecon are already heavily Microsoft with various systems and backend processes already built on Microsoft platforms.  With Silverlight leveraging the .NET framework, we were able to create a system that can wield a rich user experience as well as support and easily integrate with other Microsoft back ends.</li>
</ul>
<p style="text-align: justify;"><img class="alignleft size-full wp-image-724" title="esri_logo_large" src="http://www.newmedialabs.co.za/wp-content/uploads/2009/11/esri_logo_large.jpg" alt="esri_logo_large" width="72" height="86" />As for the Mapping functionality, we used the ESRI ARC GIS API for Silverlight component on top of Aurecon’s very own ESRI Arc GIS Server.  To avoid taking credit where it’s not due, Aurecon own and manage their own GIS data, New Media Labs just got the map to do all the funky things with the data we wanted it to do on screen.</p>
<p style="text-align: justify;"><strong><span style="text-decoration: underline;">Worth Mentioning</span></strong></p>
<p style="text-align: justify;">- <strong><a href="http://blogs.msdn.com/brada/archive/2008/05/03/accessing-the-asp-net-authentication-profile-and-role-service-in-silverlight.aspx" target="_blank">Login with ASP.NET Authentication Services</a></strong></p>
<p style="text-align: justify;"><strong><a href="http://blogs.msdn.com/brada/archive/2008/05/03/accessing-the-asp-net-authentication-profile-and-role-service-in-silverlight.aspx" target="_blank"></a></strong><object width="560" height="340" data="http://www.youtube.com/v/VTQhYG_f_UQ&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/VTQhYG_f_UQ&amp;hl=en&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /></object></p>
<ul style="text-align: justify;">
<li>ASP.NET already comes with a huge array of out-the-box Membership, Role and Profile functionality, so why recreate the wheel?  Start Lite leverages this Membership and Role Functionality.  One can simply expose the ASP.NET Authentication system as a WCF web service with a few configuration settings.</li>
</ul>
<p style="text-align: justify;">- <strong><a href="http://www.codeplex.com/blacklight" target="_blank">Blacklight</a></strong></p>
<table style="text-align: justify;" border="0">
<tbody>
<tr>
<td>
<div id="attachment_742" class="wp-caption alignnone" style="width: 250px"><a href="http://www.newmedialabs.co.za/wp-content/uploads/2009/11/2009-07-03_133625-1024x635.jpg" rel="lightbox[694]"><strong><strong><img class="size-medium wp-image-742 " title="2009-07-03_133625" src="http://www.newmedialabs.co.za/wp-content/uploads/2009/11/2009-07-03_133625-300x186.jpg" alt="Multiple Panels Open" width="240" height="149" /></strong></strong></a><p class="wp-caption-text">Multiple Panels Open</p></div></td>
<td>
<p><div id="attachment_743" class="wp-caption alignnone" style="width: 250px"><a href="http://www.newmedialabs.co.za/wp-content/uploads/2009/11/2009-07-03_133644-1024x635.jpg" rel="lightbox[694]"><strong><strong><img class="size-medium wp-image-743 " title="2009-07-03_133644" src="http://www.newmedialabs.co.za/wp-content/uploads/2009/11/2009-07-03_133644-300x186.jpg" alt="One Panel Open" width="240" height="149" /></strong></strong></a><p class="wp-caption-text">One Panel Open</p></div></td>
</tr>
</tbody>
</table>
<ul style="text-align: justify;">
<li>For draggable collapsable panelscontainers we utilized the open source Codeplex Blacklight Control suite and customized some of their controls to suit our needs better.</li>
</ul>
<p style="text-align: justify;">- <strong><a href="http://blog.ningzhang.org/2008/11/viewbox-control-in-silverlight-toolkit.html" target="_blank">ViewBox Control</a></strong></p>
<ul style="text-align: justify;">
<li>We decided to use the <strong><a href="http://blog.ningzhang.org/2008/11/viewbox-control-in-silverlight-toolkit.html" target="_blank">ViewBox Control</a></strong> which comes with the <strong><a href="http://silverlight.codeplex.com" target="_blank">Silverlight Toolkit</a></strong> to handle the resizing of our various panel and container contents.  Manually resizing each UI element within a panel’s content when the panel is either maximized or minimized would have been cumbersome to do, and this handy control saved us a lot of time and effort.  It works wonders!</li>
</ul>
<p style="text-align: justify;">- <strong>Announcement and Notifications Engine</strong> <strong></strong></p>
<p style="text-align: justify;">
<p><div id="attachment_731" class="wp-caption aligncenter" style="width: 310px"><strong><a href="http://www.newmedialabs.co.za/wp-content/uploads/2009/11/announcement-1024x518.png" rel="lightbox[694]"><img class="size-medium wp-image-731 " title="announcement" src="http://www.newmedialabs.co.za/wp-content/uploads/2009/11/announcement-300x151.png" alt="Announcement Functionality" width="300" height="151" /></a></strong><p class="wp-caption-text">Announcement Functionality</p></div>
<ul style="text-align: justify;">
<li>It wouldn’t be New Media Labs style without a social media element to it - we custom built an announcements and notifications engine.  Announcements let a user post important messages for others to see, whilst notifications get fired when important things happen within the system such as the creation of an incident.</li>
</ul>
<p>- <strong><a href="http://silverlight.codeplex.com/wikipage?title=Silverlight%20Toolkit%20Overview%20Part%201&amp;referringTitle=Home&amp;ANCHOR#AutoCompleteBox" target="_blank">AutoCompleteBox Control</a></strong></p>
<ul style="text-align: justify;">
<li>In Start Lite, we tried to guide the user as much as possible when entering information. The <strong><a href="http://silverlight.codeplex.com/wikipage?title=Silverlight%20Toolkit%20Overview%20Part%201&amp;referringTitle=Home&amp;ANCHOR#AutoCompleteBox" target="_blank">AutoCompleteBox</a></strong> control is another cool control that comes with the Silverlight Toolkit (http://silverlight.codeplex.com/).  For Example, when searching for an address, the AutoCompleteBox keeps presenting the user with options based on what they’ve typed in thus far.</li>
</ul>
<p>- <strong>Embedding PDF in Silverlight</strong></p>
<p><strong></strong><object width="560" height="340" data="http://www.youtube.com/v/pRObQbQmy7E&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/pRObQbQmy7E&amp;hl=en&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /></object></p>
<ul style="text-align: justify;">
<li>In Start Lite we implemented some magic to embed a PDF document within the Silverlight.  What&#8217;s actually happening though is with java script, we&#8217;ve actually placed a div tag on top of our Silverlight object and that div tag contains the PDF viewer control.</li>
</ul>
<p><strong><span style="text-decoration: underline;">What is next?</span></strong></p>
<p style="text-align: justify;">As they often say, there is no rest for the wicked, and at New Media Labs, building “wicked” software means once we’re finished with one, we’re onto another!</p>
<p style="text-align: justify;">Utilizing elements and components from Start Lite, we helped Aurecon develop a Back Office Incident Logging System, to be utilized by patrol officers and units, who while on patrol and by their own intervention identify or become involved in emergencies and incidents and ultimately resolve the issue then and there.  Upon their return to the station after duty, they can “back” capture such incidents for reference and reporting.</p>
<p style="text-align: justify;">As with all systems, there is always a phase 2 and with Start Lite we’d like to focus more on modularity and being able to plug in or unplug functionality based purely on a particular clients requirement.  Silverlight is always evolving and with the release of Silverlight 3 there are some awesome new technology advancements we’ll be taking into account, specifically:</p>
<p>- <strong><a href="http://msdn.microsoft.com/en-us/magazine/dd458800.aspx" target="_blank">MVVM</a></strong></p>
<ul style="text-align: justify;">
<li>In the case of Slverlight, you run the risk of ending up with code behind mixed with XAML in varying degrees and ultimately a solution which is difficult to maintain, refactor and test.  As with any large application, it is always a good idea to structure ones User Interface into its own subset of layers.  <strong><a href="http://msdn.microsoft.com/en-us/magazine/dd458800.aspx" target="_blank">MVVM</a></strong> (Model-View-View Model) is a Silverlight specific pattern much like MVC or MVP which separates data (the Model) from the UI (the View), and presents the data in a bindable way for the UI (the View Model).</li>
</ul>
<p>- <strong><a href="http://silverlight.net/learn/videos/silverlight-videos/net-ria-services-intro/" target="_blank">RIA</a></strong></p>
<ul style="text-align: justify;">
<li><strong><a href="http://silverlight.net/learn/videos/silverlight-videos/net-ria-services-intro/" target="_blank">Microsoft .NET RIA Services</a></strong> simplifies the traditional n-tier application pattern by bringing together the ASP.NET and Silverlight platforms.  RIA Services provides a pattern to write application logic that runs on the mid-tier and controls access to data for queries, changes and custom operations.  In a nutshell, with RIA Services, we wouldn’t need to build a WCF layer.</li>
</ul>
<p>- <strong><a href="http://www.codeplex.com/CompositeWPF" target="_blank">PRISM</a></strong></p>
<ul style="text-align: justify;">
<li>Ever heard of a Composite Application Block, well that is what <strong><a href="http://www.codeplex.com/CompositeWPF" target="_blank">PRISM</a></strong> is, a Composite Application Guidance Block specifically for Silverlight and WPF which allows one to modularize the UI and build it in such a way so that one can easily load or unload modules at choice.  Ideal for large, ever changing and ever growing applications.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.newmedialabs.co.za/mapping/aurecon-emergency-response-and-incident-management-application/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Life at Aurecon</title>
		<link>http://www.newmedialabs.co.za/mapping/life-at-aurecon</link>
		<comments>http://www.newmedialabs.co.za/mapping/life-at-aurecon#comments</comments>
		<pubDate>Tue, 20 Oct 2009 09:03:11 +0000</pubDate>
		<dc:creator>Rogan Flitton</dc:creator>
				<category><![CDATA[Mapping]]></category>
		<category><![CDATA[New Media Labs]]></category>
		<category><![CDATA[Rich Internet Applications]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Emergency Service Software]]></category>
		<category><![CDATA[EMS]]></category>
		<category><![CDATA[ESRI]]></category>

		<guid isPermaLink="false">http://www.newmedialabs.co.za/?p=438</guid>
		<description><![CDATA[Since April ‘09, Christian and I have been based full time at Aurecon. It is about time for the long overdue update.  Here it is!
In a nutshell, the past few months can be summed up as 2 kick ass applications down and more to come!
Aurecon saw the need to develop a whole suite of new [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Since April ‘09, Christian and I have been based full time at <a href="http://www.aurecongroup.com/" target="_blank"><strong>Aurecon</strong></a>. It is about time for the long overdue update.  Here it is!</p>
<p style="text-align: justify;">In a nutshell, the past few months can be summed up as 2 kick ass applications down and more to come!</p>
<p style="text-align: justify;">Aurecon saw the need to develop a whole suite of new Incident Management Software for existing clients in areas such as Emergency Services, Disaster Management and Policing. Once they decided that immersive, graphical user interfaces were a must and Silverlight was to be at the forefront of delivering such an experience to their clients, it was only a matter of time before New Media Labs’ and Aurecon’s paths would cross.</p>
<p style="text-align: justify;">You’re probably wondering what Incident Management has to do with New Media, well for example, imagine the possibilities of an Incident Management system leveraging off of something as simple as geoRSS.  Suddenly your system can subscribe to hundreds of different feed streams giving an Emergency Services Operation Center a wealth of valuable, visual information on a Map type interface. This opens up the possibilities of police officers, firemen, paramedics or even members of the public to be able to publish incident related information from their mobile phones and ultimately a whole range of operating centers can then subscribe to this real time information aiding them to overcome even the most disastrous of emergencies. This is where Incident Management and Social Media meet and ultimately, it is where New Media Labs can build a long term partnership with an awesome company, and use our knowledge and expertise in web technologies to help build awesome software.</p>
<p style="text-align: justify;"><strong>Start Lite</strong> is the first system we helped develop. Without going into too much detail now, and rather saving more techno talk for the official showcase still to come, a high level definition for Start Lite is a lite, easy to use system that can quickly and effectively capture and initiate the start of an incident. It allows the user to pin point an incident on a fully interactive GIS enabled Map, specify the various details about the incident and manage any people or units that have been dispatched to the incident. Designed, developed and rolled out at a CCTV control centre in Cape Town, Start Lite is primarily (as the name says) a “lite” version of Aurecon’s next planned product called Start, which will cater more fully for other industries and clients in the Incident Management and Emergency Services fields.</p>
<p style="text-align: justify;">Next we developed <strong>Back Office</strong>. Often police officers will be out on patrol and come across incidents that weren’t necessarily initiated by dispatch or a control centre, and therefore there is no digital record of such an occurrence and the resolution of it. Back Office caters for this. It allows the user to capture such incidents once they have finished their patrol and can get back to the station.</p>
<p style="text-align: justify;">Both Systems are web based and were built with Silverlight 2 on top of WCF web services and a SQL 2008 Database. Not only are the systems easily deployed to multiple users, they run in a web browser and also look great!  Some of the components we used on both projects were:</p>
<ul style="text-align: justify;" type="disc">
<li>Draggable collapsible panels/containers. We utilized the open source Codeplex Blacklight Control suite and customized some of their controls to suit our needs better.<a href="http://www.codeplex.com/blacklight" target="_blank"> http://www.codeplex.com/blacklight</a></li>
<li>ESRI Silverlight Map Control, GEO Spatial capabilities of SQL Server and the ESRI Server web services. <a href="http://www.esri.com/silverlight" target="_blank">http://www.esri.com/silverlight</a></li>
<li>Repositoy Factory. <a href="http://www.codeplex.com/RepositoryFactory" target="_blank">http://www.codeplex.com/RepositoryFactory</a></li>
<li>Web Service Software Factory Modeling Edition. <a href="http://www.codeplex.com/servicefactory" target="_blank">http://www.codeplex.com/servicefactory</a></li>
</ul>
<p style="text-align: justify;">Kobus Meyer and the rest of the guys at Aurecon have been extremely kind and accommodating in taking us in and making us feel like members of their team. Chris and I both have enjoyed every minute working with them and have also enjoyed enduring the everyday challenges faced when developing cutting edge Incident Management software. I look forward to the future of this ever growing partnership between Aurecon and New Media Labs.</p>
<p style="text-align: justify;">Check out this awesome video by ESRI on leveraging ArcGIS, geoRSS to create situational awareness.<br />
<object width="425" height="344" data="http://www.youtube.com/v/FdKOxZIIKmQ&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/FdKOxZIIKmQ&amp;hl=en&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.newmedialabs.co.za/mapping/life-at-aurecon/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nedgroup Investments goes live</title>
		<link>http://www.newmedialabs.co.za/software_development/nedgroup-investments-goes-live</link>
		<comments>http://www.newmedialabs.co.za/software_development/nedgroup-investments-goes-live#comments</comments>
		<pubDate>Tue, 01 Sep 2009 12:01:44 +0000</pubDate>
		<dc:creator>Debbie Derman</dc:creator>
				<category><![CDATA[Content Management Systems]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[New Media Labs]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.newmedialabs.co.za/?p=400</guid>
		<description><![CDATA[Working in conjunction with Stonewall+ (design) and Global Vision (project management), but against the clock, NML&#8217;s development duo of Debbie and Andrei managed to beat the tight deadline and release the new Nedgroup Investments site AND content management system in time for their roadshow in early September.
Both the site and content management system were developed [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Working in conjunction with <a title="Stonewall" href="http://www.stonewall.co.za" target="_blank">Stonewall+</a> (design) and <a title="Gloviz" href="http://www.globalvision.co.za/" target="_blank" class="broken_link">Global Vision</a> (project management), but against the clock, NML&#8217;s development duo of Debbie and Andrei managed to beat the tight deadline and release the new <a title="Nedgroup Investments" href="http://www.nedgroupinvestments.co.za/" target="_blank">Nedgroup Investments site</a> AND content management system in time for their roadshow in early September.</p>
<p style="text-align: justify;">Both the site and content management system were developed using <a title="ASP .NET MVC" href="http://www.asp.net/mvc/" target="_blank">ASP .NET MVC 1.0.</a> The CMS incorporated a workflow system, ensuring that all content follows an approval process before being published. Notifications are sent during the lifecycle of the content so that the role users (creator, approver, publisher) can easily navigate directly to the content item needing action.</p>
<p style="text-align: justify;">The site itself has a simple yet slick design, and is also pleasingly fast. <a title="Nedgroup Investments" href="http://www.nedgroupinvestments.co.za/" target="_blank"></a></p>
<div class="mceTemp" style="text-align: justify;">
<dl id="attachment_405" class="wp-caption alignleft" style="width: 210px;">
<dt class="wp-caption-dt"><a href="http://www.newmedialabs.co.za/wp-content/uploads/2009/09/home1.png" rel="lightbox[400]"><img class="size-full wp-image-405" title="Nedgroup Investments Home" src="http://www.newmedialabs.co.za/wp-content/uploads/2009/09/home.png" alt="Nedgroup Investments Home" width="200" height="156" /></a></dt>
<dd class="wp-caption-dd">Nedgroup Investments Home</dd>
</dl>
</div>
<div class="mceTemp" style="text-align: justify;">
<dl id="attachment_402" class="wp-caption alignright" style="width: 210px;">
<dt class="wp-caption-dt"><a href="http://www.newmedialabs.co.za/wp-content/uploads/2009/09/execcomm1.png" rel="lightbox[400]"><img class="size-full wp-image-402" title="Executive Committee" src="http://www.newmedialabs.co.za/wp-content/uploads/2009/09/execcomm.png" alt="Executive Committee" width="200" height="293" /></a></dt>
<dd class="wp-caption-dd">Executive Committee</dd>
</dl>
</div>
<div class="mceTemp" style="text-align: justify;">
<dl id="attachment_401" class="wp-caption alignleft" style="width: 210px;">
<dt class="wp-caption-dt"><a href="http://www.newmedialabs.co.za/wp-content/uploads/2009/09/domestic1.png" rel="lightbox[400]"><img class="size-full wp-image-401" title="Domestic Funds" src="http://www.newmedialabs.co.za/wp-content/uploads/2009/09/domestic.png" alt="Domestic Funds" width="200" height="185" /></a></dt>
<dd class="wp-caption-dd">Domestic Funds</dd>
</dl>
</div>
<div class="mceTemp" style="text-align: justify;">
<dl id="attachment_406" class="wp-caption alignright" style="width: 210px;">
<dt class="wp-caption-dt"><a href="http://www.newmedialabs.co.za/wp-content/uploads/2009/09/investmentconsulting1.png" rel="lightbox[400]"><img class="size-full wp-image-406" title="Investment Consulting" src="http://www.newmedialabs.co.za/wp-content/uploads/2009/09/investmentconsulting.png" alt="Investment Consulting" width="200" height="156" /></a></dt>
<dd class="wp-caption-dd">Investment Consulting</dd>
</dl>
</div>
<div class="mceTemp" style="text-align: justify;">
<dl id="attachment_404" class="wp-caption alignleft" style="width: 210px;">
<dt class="wp-caption-dt"><a href="http://www.newmedialabs.co.za/wp-content/uploads/2009/09/fundscomplete1.png" rel="lightbox[400]"><img class="size-full wp-image-404" title="Complete Funds List" src="http://www.newmedialabs.co.za/wp-content/uploads/2009/09/fundscomplete.png" alt="Complete Funds List" width="200" height="311" /></a></dt>
<dd class="wp-caption-dd">Complete Funds List</dd>
</dl>
</div>
<div class="mceTemp" style="text-align: justify;">
<dl id="attachment_403" class="wp-caption alignright" style="width: 210px; text-align: justify;">
<dt class="wp-caption-dt"><a href="http://www.newmedialabs.co.za/wp-content/uploads/2009/09/funddetails1.png" rel="lightbox[400]"><img class="size-full wp-image-403" title="Fund Details" src="http://www.newmedialabs.co.za/wp-content/uploads/2009/09/funddetails.png" alt="Fund Details" width="200" height="261" /></a></dt>
<dd class="wp-caption-dd">Fund Details</dd>
</dl>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.newmedialabs.co.za/software_development/nedgroup-investments-goes-live/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>New Media Labs to build Online Auction System</title>
		<link>http://www.newmedialabs.co.za/software_architecture/online-auction-system</link>
		<comments>http://www.newmedialabs.co.za/software_architecture/online-auction-system#comments</comments>
		<pubDate>Tue, 24 Feb 2009 10:36:38 +0000</pubDate>
		<dc:creator>Paul Cartmel</dc:creator>
				<category><![CDATA[Agile Development]]></category>
		<category><![CDATA[Custom Development]]></category>
		<category><![CDATA[New Media Labs]]></category>
		<category><![CDATA[SCRUM]]></category>
		<category><![CDATA[Software Architecture]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[auction]]></category>
		<category><![CDATA[online]]></category>
		<category><![CDATA[system]]></category>

		<guid isPermaLink="false">http://www.welove.co.za/?p=163</guid>
		<description><![CDATA[New Media Labs has commenced development of an Online Auction system for an existing client. Originally an eBay mashup was considered but the business case to build an in house auction system was stronger than the case for a mashup. The notification systems, rules engine and content management system to load the auction items is [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">New Media Labs has commenced development of an Online Auction system for an existing client. Originally an eBay mashup was considered but the business case to build an in house auction system was stronger than the case for a mashup. The notification systems, rules engine and content management system to load the auction items is going to make this a fun development exercise.</p>
<p style="text-align: justify;">Repeat orders from existing clients, proving once again that NML is more than a supplier they are a partner that delivers.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.newmedialabs.co.za/software_architecture/online-auction-system/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Media Labs wins pitch to develop a new content management system for Nedgroup Investments</title>
		<link>http://www.newmedialabs.co.za/rich_internet_applications/new-media-labs-wins-pitch-to-develop-a-new-content-management-system-for-nedgroup-investments</link>
		<comments>http://www.newmedialabs.co.za/rich_internet_applications/new-media-labs-wins-pitch-to-develop-a-new-content-management-system-for-nedgroup-investments#comments</comments>
		<pubDate>Wed, 10 Dec 2008 11:14:23 +0000</pubDate>
		<dc:creator>Paul Cartmel</dc:creator>
				<category><![CDATA[Agile Development]]></category>
		<category><![CDATA[Content Management Systems]]></category>
		<category><![CDATA[Custom Development]]></category>
		<category><![CDATA[New Media Labs]]></category>
		<category><![CDATA[Niche Social Networks]]></category>
		<category><![CDATA[Rich Internet Applications]]></category>
		<category><![CDATA[SCRUM]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.welove.co.za/?p=110</guid>
		<description><![CDATA[New Media Labs in collaboration with Global Vision and Stonewall+ won the bid to redevelop the Nedgroup Investments Content Management System. The creative pitch from Stonewall+ was excellent, this coupled with our technology pitch made the decision to go Stonewall+/NML/GV a no brainer. NML will be doing the dev, GV will be providing Business Analysis, [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">New Media Labs in collaboration with Global Vision and Stonewall+ won the bid to redevelop the Nedgroup Investments Content Management System. The creative pitch from Stonewall+ was excellent, this coupled with our technology pitch made the decision to go Stonewall+/NML/GV a no brainer. NML will be doing the dev, GV will be providing Business Analysis, Project Management and Testing services.</p>
<p style="text-align: justify;">Our base layer CMS was used for the development. Often when you tell clients you own a CMS they are skeptical – “why would you want to own or build a CMS when there are so many out there”. The reality is, a site like this is not only managing textual content it is managing the business content too. In other words you have to manage the data for each investment fund, the allocations of the fund and price performance over time. These are the kinds of systems NML has become experts in developing.</p>
<p style="text-align: justify;">NML do not claim to own a packaged CMS or CMS framework. Packaged and Framework are words we’ve become skeptical of. We have a base layer of CMS code , that has been designed with integration in mind, to tie the company’s business model into the content management system. Our CMS allows for the usual features such as adding pages, changing navigation and publishing workflow.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.newmedialabs.co.za/rich_internet_applications/new-media-labs-wins-pitch-to-develop-a-new-content-management-system-for-nedgroup-investments/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Media Labs win pitch to Develop the Niche Social Network for a South African Bank</title>
		<link>http://www.newmedialabs.co.za/silverlight/new-media-labs-in-pitch-to-develop-the-niche-social-network-for-a-south-african-bank</link>
		<comments>http://www.newmedialabs.co.za/silverlight/new-media-labs-in-pitch-to-develop-the-niche-social-network-for-a-south-african-bank#comments</comments>
		<pubDate>Thu, 14 Aug 2008 10:50:10 +0000</pubDate>
		<dc:creator>Paul Cartmel</dc:creator>
				<category><![CDATA[Agile Development]]></category>
		<category><![CDATA[Content Management Systems]]></category>
		<category><![CDATA[New Media Labs]]></category>
		<category><![CDATA[Niche Social Networks]]></category>
		<category><![CDATA[Rich Internet Applications]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Software Architecture]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.welove.co.za/?p=101</guid>
		<description><![CDATA[New Media Labs has won a pitch to develop a large niche social network for a South African bank. The project will be developed in conjunction with Stonewall+. Stonewall+ will develop the front end flat designs and NML will convert these flats into Silverlight XAML. Silverlight Rich Internet Application presentation layer was a prerequisite of [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">New Media Labs has won a pitch to develop a large niche social network for a South African bank. The project will be developed in conjunction with <a href="http://www.stonewall.co.za/">Stonewall+</a>. <a href="http://www.stonewall.co.za">Stonewall+</a> will develop the front end flat designs and NML will convert these flats into Silverlight XAML. Silverlight Rich Internet Application presentation layer was a prerequisite of the bank.</p>
<p style="text-align: justify;">The social elements are tied into the business model of this division of the bank, making this a complex development and integration exercise.</p>
<p style="text-align: justify;">This will be NML’s second large Silverlight implementation and is being touted by Microsoft as the largest implementation in the EMEA region. Even thought this project is in the early stages it is being looked at closely as a case study by Microsoft.</p>
<p style="text-align: justify;">Given the number of databases and stored procedures the system has to tie into Microsoft Repository Factory was the natural choice for Middle Tier. The service layer was developed using the Web Service Software Factory and the WCF .NET3.5 implementation technology.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.newmedialabs.co.za/silverlight/new-media-labs-in-pitch-to-develop-the-niche-social-network-for-a-south-african-bank/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

