<?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>Damian Brady&#039;s Blog</title>
	<atom:link href="http://blog.damianbrady.com.au/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.damianbrady.com.au</link>
	<description>ramblings of an early-30s IT professional / volleyball junkie / semi-professional drinker</description>
	<lastBuildDate>Tue, 13 Mar 2012 23:26:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Nokia Lumia 800 &#8211; Initial Impressions</title>
		<link>http://blog.damianbrady.com.au/2012/03/14/nokia-lumia-800-initial-impressions/</link>
		<comments>http://blog.damianbrady.com.au/2012/03/14/nokia-lumia-800-initial-impressions/#comments</comments>
		<pubDate>Tue, 13 Mar 2012 23:01:36 +0000</pubDate>
		<dc:creator>Damian Brady</dc:creator>
				<category><![CDATA[Devices]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[devices]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://blog.damianbrady.com.au/?p=535</guid>
		<description><![CDATA[Yesterday, I visited a Telstra store to pick up a shiny new Nokia Lumia 800. After the OS on my trusty HTC Desire once again catastrophically failed, causing me to wipe it and reflash, it was time for a change. In the past, I&#8217;ve had several Nokia phones running Symbian, a Sony Ericsson or two, [...]]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_539" class="wp-caption alignright" style="width: 310px"><a href="http://blog.damianbrady.com.au/wp-content/uploads/2012/03/Front.png" rel="lightbox[535]" title="Nokia Lumia 800 - Front"><img class="size-medium wp-image-539" title="Nokia Lumia 800 - Front" src="http://blog.damianbrady.com.au/wp-content/uploads/2012/03/Front-300x200.png" alt="Nokia Lumia 800 - Front" width="300" height="200" /></a><p class="wp-caption-text">Nokia Lumia 800 - Front</p></div></p>
<p>Yesterday, I visited a Telstra store to pick up a shiny new Nokia Lumia 800. After the OS on my trusty HTC Desire once again catastrophically failed, causing me to wipe it and reflash, it was time for a change.</p>
<p>In the past, I&#8217;ve had several Nokia phones running Symbian, a Sony Ericsson or two, one iPhone 3G, and most recently my Android running Froyo then Gingerbread. I&#8217;ve never had a Windows phone, and I&#8217;ve heard great things about Windows Phone 7.5, so I thought it was time to give it a try.</p>
<p>I&#8217;ve had the phone for about 24 hours now, and my impressions have been good for the most part. There are some incredibly impressive aspects to the phone and OS, but there are also a couple of fairly significant flaws with the blame shared between Nokia, Microsoft, and Telstra.</p>
<h3>The Good</h3>
<p>My first impression upon opening the box was, &#8220;This is a very good looking phone.&#8221;  It&#8217;s sleek and black and feels incredibly well put-together.  Of particular note is the &#8220;Clear Black&#8221; AMOLED screen.  When on, the blacks are so impressively black that it&#8217;s impossible to tell where the screen ends and the black surround starts.  It really helps bind the OS and the device together. Rather than feeling like a hand-held display with software on it, it feels like an integrated device.</p>
<p><div id="attachment_538" class="wp-caption alignright" style="width: 310px"><a href="http://blog.damianbrady.com.au/wp-content/uploads/2012/03/Back.png" rel="lightbox[535]" title="Nokia Lumia 800 - Back"><img class="size-medium wp-image-538" title="Nokia Lumia 800 - Back" src="http://blog.damianbrady.com.au/wp-content/uploads/2012/03/Back-300x200.png" alt="Nokia Lumia 800 - Back" width="300" height="200" /></a><p class="wp-caption-text">Nokia Lumia 800 - Back</p></div></p>
<p>The speed of the device is a welcome change as well.  My HTC Desire took minutes from power-button-push to a usable phone; the Lumia takes less than 25 seconds.  Screen transitions and apps are very responsive and there&#8217;s no perceivable lag with touches or swipes.  Network connectivity seemed faster as well (even on the same network as the Android), probably due to some combination of the operating system and the hardware.  By the time I walked the device out of the store, I&#8217;d already connected the phone to my Google, Facebook, and Twitter accounts, and all my contacts were on the phone.  I had big issues connecting to my work&#8217;s Exchange server, but more on that later.</p>
<p>I was initially skeptical of the integrated &#8220;People&#8221; function on the phone that combines a contact&#8217;s details into a single &#8220;Person&#8221; complete with their Facebook, Twitter, and other accounts.  I had a similar function on my Android and I found it useful, but a bit clunky to operate.</p>
<p>Impressively, the phone identified and correctly linked about 90% of the contacts I had from Google, Facebook, and Twitter.  Almost all contacts had automatically been merged and the decisions around what were the primary details were very sensible.  Each person had an up-to-date profile picture from Facebook as well as all their contact details. In all cases, the correct name was shown (no &#8220;John Smith1&#8243; or &#8220;johnsmith&#8221;).  Linking the few contacts that weren&#8217;t automatically merged was extremely fast. By the time I&#8217;d done three, I was taking less than 5 seconds to join two contacts together.  This short learning-curve was something that was visible throughout the first 24 hours and reflects very well on the WP7 operating system.</p>
<p>GPS location was impressively fast.  I had been used to a minimum 10 second delay on my android, but the Lumia found me on Bing Maps in a fraction of that time.</p>
<p><div id="attachment_544" class="wp-caption alignright" style="width: 210px"><a href="http://blog.damianbrady.com.au/wp-content/uploads/2012/03/Lock1.png" rel="lightbox[535]" title="Nokia Lumia 800 - Lock Screen"><img class="size-medium wp-image-544" title="Nokia Lumia 800 - Lock Screen" src="http://blog.damianbrady.com.au/wp-content/uploads/2012/03/Lock1-200x300.png" alt="Nokia Lumia 800 - Lock Screen" width="200" height="300" /></a><p class="wp-caption-text">Nokia Lumia 800 - Lock Screen</p></div></p>
<p>I was also particularly impressed when I bought an app from the marketplace.  After agreeing to purchase, a message popped up telling me it&#8217;d be on my Telstra bill.  This is hands down the most convenient way to purchase an app. No need for another party to be involved when I&#8217;m purchasing things for my phone.</p>
<h3>The Bad</h3>
<p>Exchange.  This one baffles me.  I simply could not connect to our workplace Exchange Server (2010 SP1).  Not for lack of trying, either.  I scoured the web for solutions, spoke at length to our SysAdmins, and installed certificates left, right, and centre.  All to no avail.  I&#8217;ve never had this problem in the past; my Android spoke to Exchange like they were best buddies.  I find it inexplicable that Microsoft made the only device that can&#8217;t talk to our Microsoft mail server.  It&#8217;s a ridiculous situation.</p>
<p>Before you put pen to paper, yes, if you have a Windows Phone 7 (including the Lumia 800), there&#8217;s a good chance you have successfully connected to your Exchange server.  I have heard a number of people say they had no problem.  It seems hosted Exchange servers (e.g. Office 365) work fine, and there are workarounds for self-signed certificates.  Our server, however, uses a certificate from a CA (which should be trusted out of the box) and the phone just doesn&#8217;t seem to like that.  I&#8217;ll keep searching for a solution, but for the moment I&#8217;m assuming I just won&#8217;t be able to sync with my Exchange account.</p>
<p>Data on the phone has caused me some consternation as well.  While the speeds seem fine, the phone only reports 3G as its maximum network speed.  My Android happily showed an &#8220;H&#8221; symbol about 90% of the time at home, so I know I&#8217;m in an area with HSDPA service, but the Lumia refuses to recognise that it can run anything but 3G or Edge.  I&#8217;ve been passed between Telstra and Nokia support quite a few times at this point and nobody can give me an answer.  The phone is definitely the correct variant for Telstra, and the Lumia is capable of showing an &#8220;H&#8221;, so HSDPA speeds should be possible.</p>
<p>Tethering, while it has been supported by WP 7.5 for some time, has not been enabled on this phone.  Telstra offers nothing but a, &#8220;sorry, maybe soon&#8221; and no indication of an ETA.  This is a big deal for me. When travelling, my phone is my primary Internet device.  I&#8217;ve never bothered with a USB mobile device before and I don&#8217;t want to start now.  Telstra have other Windows phones that support tethering, so there&#8217;s obviously no technical reason it has to be disabled. They need to sort this out quickly.</p>
<p><div id="attachment_543" class="wp-caption alignright" style="width: 210px"><a href="http://blog.damianbrady.com.au/wp-content/uploads/2012/03/Home1.png" rel="lightbox[535]" title="Nokia Lumia 800 - Home Screen"><img class="size-medium wp-image-543" title="Nokia Lumia 800 - Home Screen" src="http://blog.damianbrady.com.au/wp-content/uploads/2012/03/Home1-200x300.png" alt="Nokia Lumia 800 - Home Screen" width="200" height="300" /></a><p class="wp-caption-text">Nokia Lumia 800 - Home Screen</p></div></p>
<p><strong>The Too Early to Tell</strong></p>
<p>The UI is something I&#8217;m still getting used to, but I don&#8217;t think it&#8217;ll take long before it&#8217;s natural.  As I mentioned, the learning curve for performing operations seems short and the OS is consistent throughout.  It&#8217;s already growing on me.</p>
<p>I haven&#8217;t installed too many apps at this point, but the ones I have installed seem pretty good.  In particular, <a title="mobilewares.net - AU Weather Pro" href="http://mobilewares.net/AUWeatherPro-WP7.aspx">AU Weather Pro</a> and <a title="mobilewares.net - AFL Season 2012" href="http://mobilewares.net/Sports2012AFL-WP7.aspx">AFL Season 2012</a> are fantastic apps.  I haven&#8217;t had the opportunity to use Nokia Drive yet, but I&#8217;m looking forward to it.</p>
<p>The pre-installed Foxtel Guide app required an update before it would show me any information, and I had to actively search for that update.  I assume other apps will let me know when there is a new version, but it was a bit off-putting.</p>
<p>The battery life seems OK.  It was at about 25% when I unboxed it, so I kept it on charge for most of the day.  At 5pm it was at about 80% and by 10pm it was giving me low battery warnings which seems like a bad sign until you consider I was playing with it almost non-stop.  It&#8217;ll be interesting to see how it performs when I lapse into normal use.</p>
<h3>Summary</h3>
<p>In short, it&#8217;s a great phone.  It&#8217;s beautiful, fast, and has many impressive features.  Nokia has a fantastic device here, and Microsoft has obviously put a lot of thought and good engineering into WP7.</p>
<p>However the combination of no Exchange and no Tethering is very disappointing.  To be honest, if I&#8217;d known about these two issues before I got the phone, I probably would have waited.  Either for them to be resolved, or even for the Lumia 900.</p>
<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
<li class="shr-comfeed">
			<a href="http://blog.damianbrady.com.au/2012/03/14/nokia-lumia-800-initial-impressions/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
<li class="shr-twitter">
			<a href="http://www.shareaholic.com/api/share/?title=Nokia+Lumia+800+-+Initial+Impressions&amp;link=http://blog.damianbrady.com.au/2012/03/14/nokia-lumia-800-initial-impressions/&amp;notes=%0D%0A%0D%0AYesterday%2C%20I%20visited%20a%20Telstra%20store%20to%20pick%20up%20a%20shiny%20new%20Nokia%20Lumia%20800.%20After%20the%20OS%20on%20my%20trusty%20HTC%20Desire%20once%20again%20catastrophically%20failed%2C%20causing%20me%20to%20wipe%20it%20and%20reflash%2C%20it%20was%20time%20for%20a%20change.%0D%0A%0D%0AIn%20the%20past%2C%20I%27ve%20had%20several%20Nokia%20phones%20running%20Symbian%2C%20a%20Sony%20Ericsson%20or%20two&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=%2524%257Btitle%257D%2B-%2B%2524%257Bshort_link%257D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
<li class="shr-facebook">
			<a href="http://www.shareaholic.com/api/share/?title=Nokia+Lumia+800+-+Initial+Impressions&amp;link=http://blog.damianbrady.com.au/2012/03/14/nokia-lumia-800-initial-impressions/&amp;notes=%0D%0A%0D%0AYesterday%2C%20I%20visited%20a%20Telstra%20store%20to%20pick%20up%20a%20shiny%20new%20Nokia%20Lumia%20800.%20After%20the%20OS%20on%20my%20trusty%20HTC%20Desire%20once%20again%20catastrophically%20failed%2C%20causing%20me%20to%20wipe%20it%20and%20reflash%2C%20it%20was%20time%20for%20a%20change.%0D%0A%0D%0AIn%20the%20past%2C%20I%27ve%20had%20several%20Nokia%20phones%20running%20Symbian%2C%20a%20Sony%20Ericsson%20or%20two&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=5&amp;tags=&amp;ctype=" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a>
		</li>
<li class="shr-linkedin">
			<a href="http://www.shareaholic.com/api/share/?title=Nokia+Lumia+800+-+Initial+Impressions&amp;link=http://blog.damianbrady.com.au/2012/03/14/nokia-lumia-800-initial-impressions/&amp;notes=%0D%0A%0D%0AYesterday%2C%20I%20visited%20a%20Telstra%20store%20to%20pick%20up%20a%20shiny%20new%20Nokia%20Lumia%20800.%20After%20the%20OS%20on%20my%20trusty%20HTC%20Desire%20once%20again%20catastrophically%20failed%2C%20causing%20me%20to%20wipe%20it%20and%20reflash%2C%20it%20was%20time%20for%20a%20change.%0D%0A%0D%0AIn%20the%20past%2C%20I%27ve%20had%20several%20Nokia%20phones%20running%20Symbian%2C%20a%20Sony%20Ericsson%20or%20two&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=88&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
<li class="shr-reddit">
			<a href="http://www.shareaholic.com/api/share/?title=Nokia+Lumia+800+-+Initial+Impressions&amp;link=http://blog.damianbrady.com.au/2012/03/14/nokia-lumia-800-initial-impressions/&amp;notes=%0D%0A%0D%0AYesterday%2C%20I%20visited%20a%20Telstra%20store%20to%20pick%20up%20a%20shiny%20new%20Nokia%20Lumia%20800.%20After%20the%20OS%20on%20my%20trusty%20HTC%20Desire%20once%20again%20catastrophically%20failed%2C%20causing%20me%20to%20wipe%20it%20and%20reflash%2C%20it%20was%20time%20for%20a%20change.%0D%0A%0D%0AIn%20the%20past%2C%20I%27ve%20had%20several%20Nokia%20phones%20running%20Symbian%2C%20a%20Sony%20Ericsson%20or%20two&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
<li class="shr-hackernews">
			<a href="http://www.shareaholic.com/api/share/?title=Nokia+Lumia+800+-+Initial+Impressions&amp;link=http://blog.damianbrady.com.au/2012/03/14/nokia-lumia-800-initial-impressions/&amp;notes=%0D%0A%0D%0AYesterday%2C%20I%20visited%20a%20Telstra%20store%20to%20pick%20up%20a%20shiny%20new%20Nokia%20Lumia%20800.%20After%20the%20OS%20on%20my%20trusty%20HTC%20Desire%20once%20again%20catastrophically%20failed%2C%20causing%20me%20to%20wipe%20it%20and%20reflash%2C%20it%20was%20time%20for%20a%20change.%0D%0A%0D%0AIn%20the%20past%2C%20I%27ve%20had%20several%20Nokia%20phones%20running%20Symbian%2C%20a%20Sony%20Ericsson%20or%20two&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=202&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Submit this to Hacker News">Submit this to Hacker News</a>
		</li>
<li class="shr-gmail">
			<a href="http://www.shareaholic.com/api/share/?title=Nokia+Lumia+800+-+Initial+Impressions&amp;link=http://blog.damianbrady.com.au/2012/03/14/nokia-lumia-800-initial-impressions/&amp;notes=%0D%0A%0D%0AYesterday%2C%20I%20visited%20a%20Telstra%20store%20to%20pick%20up%20a%20shiny%20new%20Nokia%20Lumia%20800.%20After%20the%20OS%20on%20my%20trusty%20HTC%20Desire%20once%20again%20catastrophically%20failed%2C%20causing%20me%20to%20wipe%20it%20and%20reflash%2C%20it%20was%20time%20for%20a%20change.%0D%0A%0D%0AIn%20the%20past%2C%20I%27ve%20had%20several%20Nokia%20phones%20running%20Symbian%2C%20a%20Sony%20Ericsson%20or%20two&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=52&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Email this via Gmail">Email this via Gmail</a>
		</li>
</ul>
<div style="clear: both;"></div>
<div class="shr-getshr" style="visibility:hidden;font-size:10px !important"><a target="_blank" href="http://www.shareaholic.com/?src=pub">Get Shareaholic</a></div>
<div style="clear: both;"></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.damianbrady.com.au/2012/03/14/nokia-lumia-800-initial-impressions/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>A Generic CRUD Repository for Entity Framework</title>
		<link>http://blog.damianbrady.com.au/2012/03/07/a-generic-crud-repository-for-entity-framework/</link>
		<comments>http://blog.damianbrady.com.au/2012/03/07/a-generic-crud-repository-for-entity-framework/#comments</comments>
		<pubDate>Wed, 07 Mar 2012 07:24:32 +0000</pubDate>
		<dc:creator>Damian Brady</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[EF]]></category>
		<category><![CDATA[entity framework]]></category>
		<category><![CDATA[generics]]></category>

		<guid isPermaLink="false">http://blog.damianbrady.com.au/?p=502</guid>
		<description><![CDATA[I wrote a post a while ago about using Generics for lookup tables in Entity Framework and I suggested that the idea could be extended to include all objects and CRUD operations. Well, I&#8217;ve put together a generic Repository that can be used in your project to give you a consistent base class for all [...]]]></description>
			<content:encoded><![CDATA[<p>I wrote a post a while ago about using <a title="Using Generics for Lookup Tables in Entity Framework" href="http://blog.damianbrady.com.au/2011/08/16/using-generics-for-lookup-tables-in-entity-framework/">Generics for lookup tables in Entity Framework</a> and I suggested that the idea could be extended to include all objects and CRUD operations.</p>
<p>Well, I&#8217;ve put together a generic Repository that can be used in your project to give you a consistent base class for all your repositories. It&#8217;s quite long, so sorry about that.</p>
<pre class="brush: csharp; title: ; notranslate">
public class DataRepository&lt;TContext&gt; : IDataRepository&lt;TContext&gt; where TContext : ObjectContext
{
    // Cached ObjectSets so changes persist
    protected Dictionary&lt;string, object&gt; CachedObjects = new Dictionary&lt;string, object&gt;();
    protected ObjectSet&lt;TEntity&gt; GetObjectSet&lt;TEntity&gt;() where TEntity : EntityObject
    {
        var fulltypename = typeof (TEntity).AssemblyQualifiedName;
        if (fulltypename == null)
            throw new ArgumentException(&quot;Invalid Type passed to GetObjectSet!&quot;);
        if (!CachedObjects.ContainsKey(fulltypename))
        {
            var objectset = _context.CreateObjectSet&lt;TEntity&gt;();
            CachedObjects.Add(fulltypename, objectset);
        }
        return CachedObjects[fulltypename] as ObjectSet&lt;TEntity&gt;;
    }

    protected TContext _context;
    /// &lt;summary&gt;
    /// Constructor that takes a context
    /// &lt;/summary&gt;
    /// &lt;param name=&quot;context&quot;&gt;An established data context&lt;/param&gt;
    public DataRepository(TContext context)
    {
        _context = context;
    }

    /// &lt;summary&gt;
    /// Constructor that takes a connection string and an EDMX name
    /// &lt;/summary&gt;
    /// &lt;param name=&quot;connectionString&quot;&gt;The connection string&lt;/param&gt;
    /// &lt;param name=&quot;edmxName&quot;&gt;The name of the EDMX so we can build an Entity Connection string&lt;/param&gt;
    public DataRepository(string connectionString, string edmxName)
    {
        var entityConnection =
            String.Format(
                &quot;metadata=res://*/{0}.csdl|res://*/{0}.ssdl|res://*/{0}.msl;provider=System.Data.SqlClient;provider connection string=&quot;,
                edmxName);

        // append the database connection string and save
        entityConnection = entityConnection + &quot;\&quot;&quot; + connectionString + &quot;\&quot;&quot;;
        var targetType = typeof (TContext);
        var ctx = Activator.CreateInstance(targetType, entityConnection);
        _context = (TContext) ctx;
    }

    public IQueryable&lt;TEntity&gt; Fetch&lt;TEntity&gt;() where TEntity : EntityObject
    {
        return GetObjectSet&lt;TEntity&gt;();
    }

    public IEnumerable&lt;TEntity&gt; GetAll&lt;TEntity&gt;() where TEntity : EntityObject
    {

        return GetObjectSet&lt;TEntity&gt;().AsEnumerable();
    }

    public IEnumerable&lt;TEntity&gt; Find&lt;TEntity&gt;(Func&lt;TEntity, bool&gt; predicate) where TEntity : EntityObject
    {
        return GetObjectSet&lt;TEntity&gt;().Where(predicate);
    }

    public TEntity GetSingle&lt;TEntity&gt;(Func&lt;TEntity, bool&gt; predicate) where TEntity : EntityObject
    {
        return GetObjectSet&lt;TEntity&gt;().Single(predicate);
    }

    public TEntity GetFirst&lt;TEntity&gt;(Func&lt;TEntity, bool&gt; predicate) where TEntity : EntityObject
    {
        return GetObjectSet&lt;TEntity&gt;().First(predicate);
    }

    public IEnumerable&lt;TEntity&gt; GetLookup&lt;TEntity&gt;() where TEntity : EntityObject
    {
        return GetObjectSet&lt;TEntity&gt;().ToList();
    }

    public void Add&lt;TEntity&gt;(TEntity entity) where TEntity : EntityObject
    {
        if (entity == null)
            throw new ArgumentException(&quot;Cannot add a null entity&quot;);

        GetObjectSet&lt;TEntity&gt;().AddObject(entity);
    }

    public void Delete&lt;TEntity&gt;(TEntity entity) where TEntity : EntityObject
    {
        if (entity == null)
            throw new ArgumentException(&quot;Cannot delete a null entity&quot;);

        GetObjectSet&lt;TEntity&gt;().DeleteObject(entity);
    }

    public void Attach&lt;TEntity&gt;(TEntity entity) where TEntity : EntityObject
    {
        if (entity == null)
            throw new ArgumentException(&quot;Cannot attach a null entity&quot;);

        GetObjectSet&lt;TEntity&gt;().Attach(entity);
    }

    public void SaveChanges()
    {
        SaveChanges(SaveOptions.None);
    }

    public void SaveChanges(SaveOptions options)
    {
        _context.SaveChanges(options);
    }

    public void Refresh&lt;TEntity&gt;(TEntity entity) where TEntity : EntityObject
    {
        _context.Refresh(RefreshMode.StoreWins, entity);
    }

    public void Refresh&lt;TEntity&gt;(IEnumerable&lt;TEntity&gt; entities) where TEntity : EntityObject
    {
        _context.Refresh(RefreshMode.StoreWins, entities);
    }

    #region IDisposable implementation
    private bool disposedValue;
    protected void Dispose(bool disposing)
    {
        if (!this.disposedValue)
        {
            if (disposing)
            {
                // dispose managed state here if required
            }
            // dispose unmanaged objects and set large fields to null
        }
        this.disposedValue = true;
    }

    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }
    #endregion
}
</pre>
<p>A lot of code to be sure, but you only need one of these. After that, whenever you create a new EDMX, you can create a Repository that inherits from this base repository.</p>
<p>Let&#8217;s look at using it for the same AdventureWorks repository I used last time:</p>
<p><div id="attachment_466" class="wp-caption aligncenter" style="width: 610px"><a href="http://blog.damianbrady.com.au/wp-content/uploads/2011/08/EF_AdventureWorks.png" rel="lightbox[502]" title="An Adventure Works Entity Model"><img class="size-full wp-image-466 " title="An Adventure Works Entity Model" src="http://blog.damianbrady.com.au/wp-content/uploads/2011/08/EF_AdventureWorks.png" alt="An Adventure Works Entity Model" width="600" /></a><p class="wp-caption-text">An Adventure Works Entity Model</p></div></p>
<p>Here&#8217;s how you might implement a repository for this data model:</p>
<pre class="brush: csharp; title: ; notranslate">
public class AdventureWorksRepository : DataRepository
{
    public AdventureWorksRepository(string connectionString) : base(connectionString, &quot;AdventureWorksEntities&quot;) { }
}
</pre>
<p>Yep, seriously. That&#8217;s it. Now you have access to all your common CRUD operations (as well as Linq queries) and can do things like this:</p>
<pre class="brush: csharp; title: ; notranslate">
var repository = new AdventureWorksRepository(MyConnectionString);

// return all states and provinces
var states = repository.GetAll&lt;StateProvince&gt;();

// get states and provinces with a three letter code
var threeLetterStates = repository.Fetch&lt;StateProvince&gt;()
                                  .Where(s =&gt; s.StateProvinceCode.Length == 3)

// get a customer
var cust = repository.GetSingle&lt;Customer&gt;(c =&gt; c.CustomerID == 1);

// delete that customer
repository.Delete(cust);

// get a contact
var contact = repository.GetSingle&lt;Contact&gt;(c =&gt; c.ContactID == 1);

// edit some properties
contact.Title = &quot;Mr&quot;;
contact.Phone = &quot;61 411 111 111&quot;;

// save all the changes (this will save the customer deletion and the updated contact)
repository.SaveChanges();
</pre>
<p>So just by inheriting a base repository class, you can get some really powerful behaviour which is specific to your data model.</p>
<p>I&#8217;d be interested to hear your thoughts on this technique, particularly if you try it in your own project.</p>
<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
<li class="shr-comfeed">
			<a href="http://blog.damianbrady.com.au/2012/03/07/a-generic-crud-repository-for-entity-framework/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
<li class="shr-twitter">
			<a href="http://www.shareaholic.com/api/share/?title=A+Generic+CRUD+Repository+for+Entity+Framework&amp;link=http://blog.damianbrady.com.au/2012/03/07/a-generic-crud-repository-for-entity-framework/&amp;notes=I%20wrote%20a%20post%20a%20while%20ago%20about%20using%20Generics%20for%20lookup%20tables%20in%20Entity%20Framework%20and%20I%20suggested%20that%20the%20idea%20could%20be%20extended%20to%20include%20all%20objects%20and%20CRUD%20operations.%0D%0A%0D%0AWell%2C%20I%27ve%20put%20together%20a%20generic%20Repository%20that%20can%20be%20used%20in%20your%20project%20to%20give%20you%20a%20consistent%20base%20class%20for%20a&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=%2524%257Btitle%257D%2B-%2B%2524%257Bshort_link%257D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
<li class="shr-facebook">
			<a href="http://www.shareaholic.com/api/share/?title=A+Generic+CRUD+Repository+for+Entity+Framework&amp;link=http://blog.damianbrady.com.au/2012/03/07/a-generic-crud-repository-for-entity-framework/&amp;notes=I%20wrote%20a%20post%20a%20while%20ago%20about%20using%20Generics%20for%20lookup%20tables%20in%20Entity%20Framework%20and%20I%20suggested%20that%20the%20idea%20could%20be%20extended%20to%20include%20all%20objects%20and%20CRUD%20operations.%0D%0A%0D%0AWell%2C%20I%27ve%20put%20together%20a%20generic%20Repository%20that%20can%20be%20used%20in%20your%20project%20to%20give%20you%20a%20consistent%20base%20class%20for%20a&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=5&amp;tags=&amp;ctype=" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a>
		</li>
<li class="shr-linkedin">
			<a href="http://www.shareaholic.com/api/share/?title=A+Generic+CRUD+Repository+for+Entity+Framework&amp;link=http://blog.damianbrady.com.au/2012/03/07/a-generic-crud-repository-for-entity-framework/&amp;notes=I%20wrote%20a%20post%20a%20while%20ago%20about%20using%20Generics%20for%20lookup%20tables%20in%20Entity%20Framework%20and%20I%20suggested%20that%20the%20idea%20could%20be%20extended%20to%20include%20all%20objects%20and%20CRUD%20operations.%0D%0A%0D%0AWell%2C%20I%27ve%20put%20together%20a%20generic%20Repository%20that%20can%20be%20used%20in%20your%20project%20to%20give%20you%20a%20consistent%20base%20class%20for%20a&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=88&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
<li class="shr-reddit">
			<a href="http://www.shareaholic.com/api/share/?title=A+Generic+CRUD+Repository+for+Entity+Framework&amp;link=http://blog.damianbrady.com.au/2012/03/07/a-generic-crud-repository-for-entity-framework/&amp;notes=I%20wrote%20a%20post%20a%20while%20ago%20about%20using%20Generics%20for%20lookup%20tables%20in%20Entity%20Framework%20and%20I%20suggested%20that%20the%20idea%20could%20be%20extended%20to%20include%20all%20objects%20and%20CRUD%20operations.%0D%0A%0D%0AWell%2C%20I%27ve%20put%20together%20a%20generic%20Repository%20that%20can%20be%20used%20in%20your%20project%20to%20give%20you%20a%20consistent%20base%20class%20for%20a&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
<li class="shr-hackernews">
			<a href="http://www.shareaholic.com/api/share/?title=A+Generic+CRUD+Repository+for+Entity+Framework&amp;link=http://blog.damianbrady.com.au/2012/03/07/a-generic-crud-repository-for-entity-framework/&amp;notes=I%20wrote%20a%20post%20a%20while%20ago%20about%20using%20Generics%20for%20lookup%20tables%20in%20Entity%20Framework%20and%20I%20suggested%20that%20the%20idea%20could%20be%20extended%20to%20include%20all%20objects%20and%20CRUD%20operations.%0D%0A%0D%0AWell%2C%20I%27ve%20put%20together%20a%20generic%20Repository%20that%20can%20be%20used%20in%20your%20project%20to%20give%20you%20a%20consistent%20base%20class%20for%20a&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=202&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Submit this to Hacker News">Submit this to Hacker News</a>
		</li>
<li class="shr-gmail">
			<a href="http://www.shareaholic.com/api/share/?title=A+Generic+CRUD+Repository+for+Entity+Framework&amp;link=http://blog.damianbrady.com.au/2012/03/07/a-generic-crud-repository-for-entity-framework/&amp;notes=I%20wrote%20a%20post%20a%20while%20ago%20about%20using%20Generics%20for%20lookup%20tables%20in%20Entity%20Framework%20and%20I%20suggested%20that%20the%20idea%20could%20be%20extended%20to%20include%20all%20objects%20and%20CRUD%20operations.%0D%0A%0D%0AWell%2C%20I%27ve%20put%20together%20a%20generic%20Repository%20that%20can%20be%20used%20in%20your%20project%20to%20give%20you%20a%20consistent%20base%20class%20for%20a&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=52&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Email this via Gmail">Email this via Gmail</a>
		</li>
</ul>
<div style="clear: both;"></div>
<div class="shr-getshr" style="visibility:hidden;font-size:10px !important"><a target="_blank" href="http://www.shareaholic.com/?src=pub">Get Shareaholic</a></div>
<div style="clear: both;"></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.damianbrady.com.au/2012/03/07/a-generic-crud-repository-for-entity-framework/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Speaking at QMSDNUG on Tuesday 21st Feb</title>
		<link>http://blog.damianbrady.com.au/2012/02/17/speaking-at-qmsdnug-on-tuesday-21st-fe/</link>
		<comments>http://blog.damianbrady.com.au/2012/02/17/speaking-at-qmsdnug-on-tuesday-21st-fe/#comments</comments>
		<pubDate>Fri, 17 Feb 2012 01:54:04 +0000</pubDate>
		<dc:creator>Damian Brady</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Presentations]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Training]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://blog.damianbrady.com.au/?p=510</guid>
		<description><![CDATA[Just a quick post to let you know I&#8217;ll be presenting my &#8220;Building Mobile Websites with ASP.NET MVC 3 and 4&#8243; talk at the Qld MSDN User Group meeting on Tuesday the 21st. Previous versions of this talk have focused mainly on MVC 3 with a nod towards MVC 4. Now that the ASP.Net team [...]]]></description>
			<content:encoded><![CDATA[<p>Just a quick post to let you know I&#8217;ll be presenting my &#8220;Building Mobile Websites with ASP.NET MVC 3 and 4&#8243; talk at the Qld MSDN User Group meeting on Tuesday the 21st.</p>
<p><a title="Speaking at the Vic.Net User Group" href="http://blog.damianbrady.com.au/2012/01/17/speaking-at-the-vic-net-user-group/">Previous versions of this talk</a> have focused mainly on MVC 3 with a nod towards MVC 4. Now that the ASP.Net team have <a title="Jon Galloway - ASP.NET MVC 4 Beta Released!" href="http://weblogs.asp.net/jgalloway/archive/2012/02/16/asp-net-4-beta-released.aspx" target="_blank">officially launched the beta</a> of <a title="ASP.NET MVC 4 Beta" href="http://www.asp.net/mvc/mvc4" target="_blank">ASP.NET MVC 4</a>, I&#8217;ll be shifting the focus to the new version.  Out with the old and in with the new!</p>
<p>If you saw the version of this talk I gave at <a title="DDD Brisbane" href="http://www.dddbrisbane.com" target="_blank">DDD Brisbane</a> last year, don&#8217;t be scared off &#8211; it&#8217;s gone through many, many iterations since then based on the feedback I&#8217;ve received.</p>
<p>So if you&#8217;re in Brisbane, I&#8217;d love for you to come along.  Just <a title="EventBrite - QMSDNUG Feb 2012" href="http://qmsdnugfeb2012.eventbrite.com/" target="_blank">RSVP on EventBrite</a> and I&#8217;ll see you there!</p>
<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
<li class="shr-comfeed">
			<a href="http://blog.damianbrady.com.au/2012/02/17/speaking-at-qmsdnug-on-tuesday-21st-fe/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
<li class="shr-twitter">
			<a href="http://www.shareaholic.com/api/share/?title=Speaking+at+QMSDNUG+on+Tuesday+21st+Feb&amp;link=http://blog.damianbrady.com.au/2012/02/17/speaking-at-qmsdnug-on-tuesday-21st-fe/&amp;notes=Just%20a%20quick%20post%20to%20let%20you%20know%20I%27ll%20be%20presenting%20my%20%22Building%20Mobile%20Websites%20with%20ASP.NET%20MVC%203%20and%204%22%20talk%20at%20the%20Qld%20MSDN%20User%20Group%20meeting%20on%20Tuesday%20the%2021st.%0D%0A%0D%0APrevious%20versions%20of%20this%20talk%20have%20focused%20mainly%20on%20MVC%203%20with%20a%20nod%20towards%20MVC%204.%20Now%20that%20the%20ASP.Net%20team%20have%20officially%20&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=%2524%257Btitle%257D%2B-%2B%2524%257Bshort_link%257D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
<li class="shr-facebook">
			<a href="http://www.shareaholic.com/api/share/?title=Speaking+at+QMSDNUG+on+Tuesday+21st+Feb&amp;link=http://blog.damianbrady.com.au/2012/02/17/speaking-at-qmsdnug-on-tuesday-21st-fe/&amp;notes=Just%20a%20quick%20post%20to%20let%20you%20know%20I%27ll%20be%20presenting%20my%20%22Building%20Mobile%20Websites%20with%20ASP.NET%20MVC%203%20and%204%22%20talk%20at%20the%20Qld%20MSDN%20User%20Group%20meeting%20on%20Tuesday%20the%2021st.%0D%0A%0D%0APrevious%20versions%20of%20this%20talk%20have%20focused%20mainly%20on%20MVC%203%20with%20a%20nod%20towards%20MVC%204.%20Now%20that%20the%20ASP.Net%20team%20have%20officially%20&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=5&amp;tags=&amp;ctype=" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a>
		</li>
<li class="shr-linkedin">
			<a href="http://www.shareaholic.com/api/share/?title=Speaking+at+QMSDNUG+on+Tuesday+21st+Feb&amp;link=http://blog.damianbrady.com.au/2012/02/17/speaking-at-qmsdnug-on-tuesday-21st-fe/&amp;notes=Just%20a%20quick%20post%20to%20let%20you%20know%20I%27ll%20be%20presenting%20my%20%22Building%20Mobile%20Websites%20with%20ASP.NET%20MVC%203%20and%204%22%20talk%20at%20the%20Qld%20MSDN%20User%20Group%20meeting%20on%20Tuesday%20the%2021st.%0D%0A%0D%0APrevious%20versions%20of%20this%20talk%20have%20focused%20mainly%20on%20MVC%203%20with%20a%20nod%20towards%20MVC%204.%20Now%20that%20the%20ASP.Net%20team%20have%20officially%20&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=88&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
<li class="shr-reddit">
			<a href="http://www.shareaholic.com/api/share/?title=Speaking+at+QMSDNUG+on+Tuesday+21st+Feb&amp;link=http://blog.damianbrady.com.au/2012/02/17/speaking-at-qmsdnug-on-tuesday-21st-fe/&amp;notes=Just%20a%20quick%20post%20to%20let%20you%20know%20I%27ll%20be%20presenting%20my%20%22Building%20Mobile%20Websites%20with%20ASP.NET%20MVC%203%20and%204%22%20talk%20at%20the%20Qld%20MSDN%20User%20Group%20meeting%20on%20Tuesday%20the%2021st.%0D%0A%0D%0APrevious%20versions%20of%20this%20talk%20have%20focused%20mainly%20on%20MVC%203%20with%20a%20nod%20towards%20MVC%204.%20Now%20that%20the%20ASP.Net%20team%20have%20officially%20&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
<li class="shr-hackernews">
			<a href="http://www.shareaholic.com/api/share/?title=Speaking+at+QMSDNUG+on+Tuesday+21st+Feb&amp;link=http://blog.damianbrady.com.au/2012/02/17/speaking-at-qmsdnug-on-tuesday-21st-fe/&amp;notes=Just%20a%20quick%20post%20to%20let%20you%20know%20I%27ll%20be%20presenting%20my%20%22Building%20Mobile%20Websites%20with%20ASP.NET%20MVC%203%20and%204%22%20talk%20at%20the%20Qld%20MSDN%20User%20Group%20meeting%20on%20Tuesday%20the%2021st.%0D%0A%0D%0APrevious%20versions%20of%20this%20talk%20have%20focused%20mainly%20on%20MVC%203%20with%20a%20nod%20towards%20MVC%204.%20Now%20that%20the%20ASP.Net%20team%20have%20officially%20&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=202&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Submit this to Hacker News">Submit this to Hacker News</a>
		</li>
<li class="shr-gmail">
			<a href="http://www.shareaholic.com/api/share/?title=Speaking+at+QMSDNUG+on+Tuesday+21st+Feb&amp;link=http://blog.damianbrady.com.au/2012/02/17/speaking-at-qmsdnug-on-tuesday-21st-fe/&amp;notes=Just%20a%20quick%20post%20to%20let%20you%20know%20I%27ll%20be%20presenting%20my%20%22Building%20Mobile%20Websites%20with%20ASP.NET%20MVC%203%20and%204%22%20talk%20at%20the%20Qld%20MSDN%20User%20Group%20meeting%20on%20Tuesday%20the%2021st.%0D%0A%0D%0APrevious%20versions%20of%20this%20talk%20have%20focused%20mainly%20on%20MVC%203%20with%20a%20nod%20towards%20MVC%204.%20Now%20that%20the%20ASP.Net%20team%20have%20officially%20&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=52&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Email this via Gmail">Email this via Gmail</a>
		</li>
</ul>
<div style="clear: both;"></div>
<div class="shr-getshr" style="visibility:hidden;font-size:10px !important"><a target="_blank" href="http://www.shareaholic.com/?src=pub">Get Shareaholic</a></div>
<div style="clear: both;"></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.damianbrady.com.au/2012/02/17/speaking-at-qmsdnug-on-tuesday-21st-fe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Speaking at the Vic.Net User Group</title>
		<link>http://blog.damianbrady.com.au/2012/01/17/speaking-at-the-vic-net-user-group/</link>
		<comments>http://blog.damianbrady.com.au/2012/01/17/speaking-at-the-vic-net-user-group/#comments</comments>
		<pubDate>Tue, 17 Jan 2012 04:41:28 +0000</pubDate>
		<dc:creator>Damian Brady</dc:creator>
				<category><![CDATA[Devices]]></category>
		<category><![CDATA[Presentations]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://blog.damianbrady.com.au/?p=505</guid>
		<description><![CDATA[I&#8217;ll be speaking at the Vic.Net User Group on Monday 23rd January. What about? Glad you asked.  The title is &#8220;Building Mobile Websites with ASP.NET MVC 3 and 4&#8220;. It sounds fairly self-explanatory, but I&#8217;ll be covering more than just the obvious in this talk.  In addition to actually showing how to write mobile-targeted sites in [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ll be speaking at the <a title="EventBrite - Vic .Net Dev SIG" href="http://vicnet-jan12-eorg.eventbrite.com/">Vic.Net User Group on Monday 23rd January</a>.</p>
<p>What about? Glad you asked.  The title is &#8220;<strong>Building Mobile Websites with ASP.NET MVC 3 and 4</strong>&#8220;.</p>
<p>It sounds fairly self-explanatory, but I&#8217;ll be covering more than just the obvious in this talk.  In addition to actually showing how to write mobile-targeted sites in MVC 3 and 4, I&#8217;ll be discussing:</p>
<ul>
<li>Why it&#8217;s important to think about mobile sites, and why people aren&#8217;t,</li>
<li>How smartphones actually render a desktop site and what you can do about it,</li>
<li>How mobile and desktop sites can coexist beautifully, and</li>
<li>Why ASP.NET MVC is the perfect technology to deliver sites that look great on any device</li>
<li>What libraries and packages are available to give you the best results</li>
</ul>
<p>So if you&#8217;re in the Melbourne area on Monday, I&#8217;d love for you to come and check it out.  Just <a title="EventBrite - Vic.Net January 2012" href="http://vicnet-jan12-eorg.eventbrite.com/">RSVP on EventBrite</a> and I&#8217;ll see you there.</p>
<p><strong>UPDATE:</strong> The slides are now available at <a title="Building Mobile Websites in ASP.NET MVC 3 &amp; 4 - SlideShare" href="http://brdy.in/mobilemvc" target="_blank">http://brdy.in/mobilemvc</a></p>
<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
<li class="shr-comfeed">
			<a href="http://blog.damianbrady.com.au/2012/01/17/speaking-at-the-vic-net-user-group/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
<li class="shr-twitter">
			<a href="http://www.shareaholic.com/api/share/?title=Speaking+at+the+Vic.Net+User+Group&amp;link=http://blog.damianbrady.com.au/2012/01/17/speaking-at-the-vic-net-user-group/&amp;notes=I%27ll%20be%20speaking%20at%20the%20Vic.Net%20User%20Group%20on%20Monday%2023rd%20January.%0D%0A%0D%0AWhat%20about%3F%20Glad%20you%20asked.%20%C2%A0The%20title%20is%20%22Building%20Mobile%20Websites%20with%20ASP.NET%C2%A0MVC%203%20and%204%22.%0D%0A%0D%0AIt%20sounds%20fairly%20self-explanatory%2C%20but%20I%27ll%20be%20covering%20more%20than%20just%20the%20obvious%20in%20this%20talk.%20%C2%A0In%20addition%20to%20actually%20showing&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=%2524%257Btitle%257D%2B-%2B%2524%257Bshort_link%257D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
<li class="shr-facebook">
			<a href="http://www.shareaholic.com/api/share/?title=Speaking+at+the+Vic.Net+User+Group&amp;link=http://blog.damianbrady.com.au/2012/01/17/speaking-at-the-vic-net-user-group/&amp;notes=I%27ll%20be%20speaking%20at%20the%20Vic.Net%20User%20Group%20on%20Monday%2023rd%20January.%0D%0A%0D%0AWhat%20about%3F%20Glad%20you%20asked.%20%C2%A0The%20title%20is%20%22Building%20Mobile%20Websites%20with%20ASP.NET%C2%A0MVC%203%20and%204%22.%0D%0A%0D%0AIt%20sounds%20fairly%20self-explanatory%2C%20but%20I%27ll%20be%20covering%20more%20than%20just%20the%20obvious%20in%20this%20talk.%20%C2%A0In%20addition%20to%20actually%20showing&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=5&amp;tags=&amp;ctype=" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a>
		</li>
<li class="shr-linkedin">
			<a href="http://www.shareaholic.com/api/share/?title=Speaking+at+the+Vic.Net+User+Group&amp;link=http://blog.damianbrady.com.au/2012/01/17/speaking-at-the-vic-net-user-group/&amp;notes=I%27ll%20be%20speaking%20at%20the%20Vic.Net%20User%20Group%20on%20Monday%2023rd%20January.%0D%0A%0D%0AWhat%20about%3F%20Glad%20you%20asked.%20%C2%A0The%20title%20is%20%22Building%20Mobile%20Websites%20with%20ASP.NET%C2%A0MVC%203%20and%204%22.%0D%0A%0D%0AIt%20sounds%20fairly%20self-explanatory%2C%20but%20I%27ll%20be%20covering%20more%20than%20just%20the%20obvious%20in%20this%20talk.%20%C2%A0In%20addition%20to%20actually%20showing&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=88&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
<li class="shr-reddit">
			<a href="http://www.shareaholic.com/api/share/?title=Speaking+at+the+Vic.Net+User+Group&amp;link=http://blog.damianbrady.com.au/2012/01/17/speaking-at-the-vic-net-user-group/&amp;notes=I%27ll%20be%20speaking%20at%20the%20Vic.Net%20User%20Group%20on%20Monday%2023rd%20January.%0D%0A%0D%0AWhat%20about%3F%20Glad%20you%20asked.%20%C2%A0The%20title%20is%20%22Building%20Mobile%20Websites%20with%20ASP.NET%C2%A0MVC%203%20and%204%22.%0D%0A%0D%0AIt%20sounds%20fairly%20self-explanatory%2C%20but%20I%27ll%20be%20covering%20more%20than%20just%20the%20obvious%20in%20this%20talk.%20%C2%A0In%20addition%20to%20actually%20showing&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
<li class="shr-hackernews">
			<a href="http://www.shareaholic.com/api/share/?title=Speaking+at+the+Vic.Net+User+Group&amp;link=http://blog.damianbrady.com.au/2012/01/17/speaking-at-the-vic-net-user-group/&amp;notes=I%27ll%20be%20speaking%20at%20the%20Vic.Net%20User%20Group%20on%20Monday%2023rd%20January.%0D%0A%0D%0AWhat%20about%3F%20Glad%20you%20asked.%20%C2%A0The%20title%20is%20%22Building%20Mobile%20Websites%20with%20ASP.NET%C2%A0MVC%203%20and%204%22.%0D%0A%0D%0AIt%20sounds%20fairly%20self-explanatory%2C%20but%20I%27ll%20be%20covering%20more%20than%20just%20the%20obvious%20in%20this%20talk.%20%C2%A0In%20addition%20to%20actually%20showing&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=202&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Submit this to Hacker News">Submit this to Hacker News</a>
		</li>
<li class="shr-gmail">
			<a href="http://www.shareaholic.com/api/share/?title=Speaking+at+the+Vic.Net+User+Group&amp;link=http://blog.damianbrady.com.au/2012/01/17/speaking-at-the-vic-net-user-group/&amp;notes=I%27ll%20be%20speaking%20at%20the%20Vic.Net%20User%20Group%20on%20Monday%2023rd%20January.%0D%0A%0D%0AWhat%20about%3F%20Glad%20you%20asked.%20%C2%A0The%20title%20is%20%22Building%20Mobile%20Websites%20with%20ASP.NET%C2%A0MVC%203%20and%204%22.%0D%0A%0D%0AIt%20sounds%20fairly%20self-explanatory%2C%20but%20I%27ll%20be%20covering%20more%20than%20just%20the%20obvious%20in%20this%20talk.%20%C2%A0In%20addition%20to%20actually%20showing&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=52&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Email this via Gmail">Email this via Gmail</a>
		</li>
</ul>
<div style="clear: both;"></div>
<div class="shr-getshr" style="visibility:hidden;font-size:10px !important"><a target="_blank" href="http://www.shareaholic.com/?src=pub">Get Shareaholic</a></div>
<div style="clear: both;"></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.damianbrady.com.au/2012/01/17/speaking-at-the-vic-net-user-group/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Horses for Courses (and Jockeys)</title>
		<link>http://blog.damianbrady.com.au/2011/11/16/horses-for-courses-and-jockeys/</link>
		<comments>http://blog.damianbrady.com.au/2011/11/16/horses-for-courses-and-jockeys/#comments</comments>
		<pubDate>Tue, 15 Nov 2011 22:40:43 +0000</pubDate>
		<dc:creator>Damian Brady</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://blog.damianbrady.com.au/?p=481</guid>
		<description><![CDATA[I&#8217;ve stumbled across a few blog posts lately that talk about why everyone should use one technology over another, or why someone is leaving a particular language for another. Obviously there&#8217;s no shortage of evangelical blog posts pushing the merits of one technology and lamenting the poor state of whatever-you-plebs-use.  But this latest spate got [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve stumbled across a few blog posts lately that talk about why <a title="Never in Doubt: Build business apps in .NET - not HTML &amp; JavaScript" href="http://neverindoubtnet.blogspot.com/2011/11/build-business-apps-in-net-not-html-or.html">everyone should use one technology over another</a>, or why <a title="My reasons for leaving .Net" href="http://hkarthik.me/blog/2011/11/11/my-reasons-for-leaving-net/">someone is leaving a particular language for another</a>. Obviously there&#8217;s no shortage of evangelical blog posts pushing the merits of one technology and lamenting the poor state of whatever-you-plebs-use.  But this latest spate got me thinking.</p>
<p>Most (good) developers talk about using the most appropriate technology for the job.  At its most basic level that means choosing Objective-C for a resource-hungry iPhone app, or writing your latest facebook-killer application for the web rather than the desktop.  That stuff&#8217;s obvious.  The more idealist polyglot programmers will take it further and push Ruby on Rails for web apps with a small budget, or they&#8217;ll suggest using RavenDB and deploying to AWS because all you need to do is store and retrieve documents across the web. If you&#8217;re in a Windows environment with a team running Scrum, choose TFS, C#, and SQL Server.</p>
<p>So &#8220;Horses for Courses&#8221; right?</p>
<p>The aim is valid and noble, and it&#8217;s certainly one I strive for.  But one thing frequently gets overlooked, and that&#8217;s the people on the team (or to stretch the metaphor &#8211; the jockeys).</p>
<p>If you have a team of programmers who are very used to writing software using certain technologies, think very carefully about advising them to move to something else. I&#8217;m not saying don&#8217;t do it (in some cases you really should), but there comes a point where the benefits to be gained by using language X on platform Y with source control Z just aren&#8217;t worth the trouble.</p>
<p>Unfortunately, most programmers write code in one way. They use one language, they know one data storage mechanism, and they&#8217;ve only ever written applications for one environment.  Maybe in a past life they tried out some other language, and maybe they dabble in HTML occasionally, but they&#8217;re only experts at one thing.</p>
<p>You, on the other hand, might look at a set of requirements and decide a NoSQL data store running behind RoR is the &#8220;best&#8221; solution for this project. Similarly, you recommend using git as the &#8220;best&#8221; source control system to use. Great. Unless you&#8217;re the only one who knows this stuff &#8211; then you&#8217;re dreaming.  If you have a team of C# developers, you&#8217;d want to have a pretty good reason for suggesting they program in a different language. If every other project they&#8217;re working on uses TFS, learning git is going to introduce a lot of overhead (initially).  Sometimes, the current way of doing things is the &#8220;best&#8221; way, even if the idealist in you disagrees.</p>
<p>Now, that&#8217;s not to say it&#8217;s never a good idea to force a shift within a team.  Consider a team of VB 6 developers who, for the last 15 years, have been dutifully writing VB windows applications with an Access back-end. At what point do you tell them it&#8217;s time to move on? (Ideally it would have been at least 5 years ago, but that&#8217;s clearly not an option). Assuming you don&#8217;t outsource or &#8220;refresh&#8221; the team, you should strongly suggest they change, but acknowledge that the extra effort they&#8217;ll have to put in will increase the work. Also be aware that you&#8217;re unlikely to get a quality solution from them if they don&#8217;t yet know what they&#8217;re doing.</p>
<p>My point is, when choosing the right technology for the job, consider <em>everything</em>, and that includes the skillset of the developers.</p>
<p>With that in mind, blog posts encouraging everybody to stop using .Net because it sucks, or telling them they should never use pure HTML and JS for business apps are just ridiculous. Yes, you might have had an overnight change of heart and now realise language X is the worst thing in the world, but you&#8217;re thinking about the specific situations you&#8217;ve been in, and developers with specific skills (usually just the individual author). If your whole team can just up and move to Ruby, then fantastic! Say hi to the rainbow coloured unicorns for me!</p>
<p>It&#8217;s <em>always</em> good to <em>encourage</em> teams to learn new technologies. It&#8217;s <em>occasionally</em> good to <em>force</em> a team to move on, but sometimes the <em>&#8220;best&#8221;</em> way isn&#8217;t the <em>&#8220;ideal&#8221;</em> way.</p>
<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
<li class="shr-comfeed">
			<a href="http://blog.damianbrady.com.au/2011/11/16/horses-for-courses-and-jockeys/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
<li class="shr-twitter">
			<a href="http://www.shareaholic.com/api/share/?title=Horses+for+Courses+%28and+Jockeys%29&amp;link=http://blog.damianbrady.com.au/2011/11/16/horses-for-courses-and-jockeys/&amp;notes=I%27ve%20stumbled%20across%20a%20few%20blog%20posts%20lately%20that%20talk%20about%20why%20everyone%20should%20use%20one%20technology%20over%20another%2C%20or%20why%20someone%20is%20leaving%20a%20particular%20language%20for%20another.%20Obviously%20there%27s%20no%20shortage%20of%20evangelical%20blog%20posts%20pushing%20the%20merits%20of%20one%20technology%20and%20lamenting%20the%20poor%20state%20of%20&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=%2524%257Btitle%257D%2B-%2B%2524%257Bshort_link%257D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
<li class="shr-facebook">
			<a href="http://www.shareaholic.com/api/share/?title=Horses+for+Courses+%28and+Jockeys%29&amp;link=http://blog.damianbrady.com.au/2011/11/16/horses-for-courses-and-jockeys/&amp;notes=I%27ve%20stumbled%20across%20a%20few%20blog%20posts%20lately%20that%20talk%20about%20why%20everyone%20should%20use%20one%20technology%20over%20another%2C%20or%20why%20someone%20is%20leaving%20a%20particular%20language%20for%20another.%20Obviously%20there%27s%20no%20shortage%20of%20evangelical%20blog%20posts%20pushing%20the%20merits%20of%20one%20technology%20and%20lamenting%20the%20poor%20state%20of%20&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=5&amp;tags=&amp;ctype=" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a>
		</li>
<li class="shr-linkedin">
			<a href="http://www.shareaholic.com/api/share/?title=Horses+for+Courses+%28and+Jockeys%29&amp;link=http://blog.damianbrady.com.au/2011/11/16/horses-for-courses-and-jockeys/&amp;notes=I%27ve%20stumbled%20across%20a%20few%20blog%20posts%20lately%20that%20talk%20about%20why%20everyone%20should%20use%20one%20technology%20over%20another%2C%20or%20why%20someone%20is%20leaving%20a%20particular%20language%20for%20another.%20Obviously%20there%27s%20no%20shortage%20of%20evangelical%20blog%20posts%20pushing%20the%20merits%20of%20one%20technology%20and%20lamenting%20the%20poor%20state%20of%20&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=88&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
<li class="shr-reddit">
			<a href="http://www.shareaholic.com/api/share/?title=Horses+for+Courses+%28and+Jockeys%29&amp;link=http://blog.damianbrady.com.au/2011/11/16/horses-for-courses-and-jockeys/&amp;notes=I%27ve%20stumbled%20across%20a%20few%20blog%20posts%20lately%20that%20talk%20about%20why%20everyone%20should%20use%20one%20technology%20over%20another%2C%20or%20why%20someone%20is%20leaving%20a%20particular%20language%20for%20another.%20Obviously%20there%27s%20no%20shortage%20of%20evangelical%20blog%20posts%20pushing%20the%20merits%20of%20one%20technology%20and%20lamenting%20the%20poor%20state%20of%20&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
<li class="shr-hackernews">
			<a href="http://www.shareaholic.com/api/share/?title=Horses+for+Courses+%28and+Jockeys%29&amp;link=http://blog.damianbrady.com.au/2011/11/16/horses-for-courses-and-jockeys/&amp;notes=I%27ve%20stumbled%20across%20a%20few%20blog%20posts%20lately%20that%20talk%20about%20why%20everyone%20should%20use%20one%20technology%20over%20another%2C%20or%20why%20someone%20is%20leaving%20a%20particular%20language%20for%20another.%20Obviously%20there%27s%20no%20shortage%20of%20evangelical%20blog%20posts%20pushing%20the%20merits%20of%20one%20technology%20and%20lamenting%20the%20poor%20state%20of%20&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=202&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Submit this to Hacker News">Submit this to Hacker News</a>
		</li>
<li class="shr-gmail">
			<a href="http://www.shareaholic.com/api/share/?title=Horses+for+Courses+%28and+Jockeys%29&amp;link=http://blog.damianbrady.com.au/2011/11/16/horses-for-courses-and-jockeys/&amp;notes=I%27ve%20stumbled%20across%20a%20few%20blog%20posts%20lately%20that%20talk%20about%20why%20everyone%20should%20use%20one%20technology%20over%20another%2C%20or%20why%20someone%20is%20leaving%20a%20particular%20language%20for%20another.%20Obviously%20there%27s%20no%20shortage%20of%20evangelical%20blog%20posts%20pushing%20the%20merits%20of%20one%20technology%20and%20lamenting%20the%20poor%20state%20of%20&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=52&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Email this via Gmail">Email this via Gmail</a>
		</li>
</ul>
<div style="clear: both;"></div>
<div class="shr-getshr" style="visibility:hidden;font-size:10px !important"><a target="_blank" href="http://www.shareaholic.com/?src=pub">Get Shareaholic</a></div>
<div style="clear: both;"></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.damianbrady.com.au/2011/11/16/horses-for-courses-and-jockeys/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to be a Good TFS Master</title>
		<link>http://blog.damianbrady.com.au/2011/11/05/how-to-be-a-good-tfs-master/</link>
		<comments>http://blog.damianbrady.com.au/2011/11/05/how-to-be-a-good-tfs-master/#comments</comments>
		<pubDate>Sat, 05 Nov 2011 01:37:02 +0000</pubDate>
		<dc:creator>Damian Brady</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Presentations]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://blog.damianbrady.com.au/?p=460</guid>
		<description><![CDATA[I recently gave a talk at the Qld ALM User Group on the topic of &#8220;How to be a good TFS Master&#8221;. Hopefully those who turned up got some great tips on how to use TFS more fully, but the main points I hoped people left with were: Most people only use about 20-30% of the [...]]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_483" class="wp-caption alignright" style="width: 274px"><a href="http://www.slideshare.net/damovisa/how-to-be-a-good-tfs-master" target="_blank"><img class="size-full wp-image-483  " title="How to be a Good TFS Master" src="http://blog.damianbrady.com.au/wp-content/uploads/2011/11/how-to-be-a-good-tfs-master.png" alt="How to be a Good TFS Master" width="264" height="197" /></a><p class="wp-caption-text">How to be a Good TFS Master</p></div></p>
<p>I recently gave a talk at the <a title="Qld ALM User Group" href="http://www.qalmug.org" target="_blank">Qld ALM User Group</a> on the topic of &#8220;How to be a good TFS Master&#8221;.</p>
<p>Hopefully those who turned up got some great tips on how to use TFS more fully, but the main points I hoped people left with were:</p>
<h3 style="padding-left: 30px;">Most people only use about 20-30% of the capabilities of TFS</h3>
<p style="padding-left: 30px;">In our experience, the majority of companies using TFS are using it for source control only.  SSW helps teams get closer to using 80 or 90% of TFS where the real advantages can be felt. There are some fairly significant infrastructure costs associated with getting to 100%, and we find most organisations don&#8217;t want to go that far.</p>
<h3 style="padding-left: 30px;">TFS is much more than source control</h3>
<p style="padding-left: 30px;">In fact, if you&#8217;re using TFS purely for source control, you&#8217;re doing it wrong! You might even be better off using Git or Mercurial.  The best option (of course) is to start using TFS more fully to help you get the best out of your team.</p>
<h3 style="padding-left: 30px;">TFS supports your Scrum process beautifully</h3>
<p style="padding-left: 30px;">TFS has some awesome capabilities that allow you to manage and support your entire scrum process. The integration story is compelling; allowing you to tie code changes directly to user stories, produce genuinely useful reports for your managers, and enforce your policies and coding standards allowing you to tick items off your <a title="SSW - Done - Do you go beyond Done and define a Done Criteria?" href="http://rules.ssw.com.au/Management/RulesToSuccessfulProjects/Pages/DoYouGoBeyondDoneAndFollowADoneCriteria.aspx" target="_blank">Definition of Done</a> without any effort.</p>
<p>For more information or some reminders of what I spoke about, have a look at the slides on Slideshare - <a href="http://www.slideshare.net/damovisa/how-to-be-a-good-tfs-master">http://www.slideshare.net/damovisa/how-to-be-a-good-tfs-master</a></p>
<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
<li class="shr-comfeed">
			<a href="http://blog.damianbrady.com.au/2011/11/05/how-to-be-a-good-tfs-master/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
<li class="shr-twitter">
			<a href="http://www.shareaholic.com/api/share/?title=How+to+be+a+Good+TFS+Master&amp;link=http://blog.damianbrady.com.au/2011/11/05/how-to-be-a-good-tfs-master/&amp;notes=%0D%0A%0D%0AI%20recently%20gave%20a%20talk%20at%20the%20Qld%20ALM%20User%20Group%C2%A0on%20the%20topic%20of%20%22How%20to%20be%20a%20good%20TFS%20Master%22.%0D%0A%0D%0AHopefully%20those%20who%20turned%20up%20got%20some%20great%20tips%20on%20how%20to%20use%20TFS%20more%20fully%2C%20but%20the%20main%20points%20I%20hoped%20people%20left%20with%20were%3A%0D%0AMost%20people%20only%20use%20about%2020-30%25%20of%20the%20capabilities%20of%20TFS%0D%0AIn&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=%2524%257Btitle%257D%2B-%2B%2524%257Bshort_link%257D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
<li class="shr-facebook">
			<a href="http://www.shareaholic.com/api/share/?title=How+to+be+a+Good+TFS+Master&amp;link=http://blog.damianbrady.com.au/2011/11/05/how-to-be-a-good-tfs-master/&amp;notes=%0D%0A%0D%0AI%20recently%20gave%20a%20talk%20at%20the%20Qld%20ALM%20User%20Group%C2%A0on%20the%20topic%20of%20%22How%20to%20be%20a%20good%20TFS%20Master%22.%0D%0A%0D%0AHopefully%20those%20who%20turned%20up%20got%20some%20great%20tips%20on%20how%20to%20use%20TFS%20more%20fully%2C%20but%20the%20main%20points%20I%20hoped%20people%20left%20with%20were%3A%0D%0AMost%20people%20only%20use%20about%2020-30%25%20of%20the%20capabilities%20of%20TFS%0D%0AIn&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=5&amp;tags=&amp;ctype=" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a>
		</li>
<li class="shr-linkedin">
			<a href="http://www.shareaholic.com/api/share/?title=How+to+be+a+Good+TFS+Master&amp;link=http://blog.damianbrady.com.au/2011/11/05/how-to-be-a-good-tfs-master/&amp;notes=%0D%0A%0D%0AI%20recently%20gave%20a%20talk%20at%20the%20Qld%20ALM%20User%20Group%C2%A0on%20the%20topic%20of%20%22How%20to%20be%20a%20good%20TFS%20Master%22.%0D%0A%0D%0AHopefully%20those%20who%20turned%20up%20got%20some%20great%20tips%20on%20how%20to%20use%20TFS%20more%20fully%2C%20but%20the%20main%20points%20I%20hoped%20people%20left%20with%20were%3A%0D%0AMost%20people%20only%20use%20about%2020-30%25%20of%20the%20capabilities%20of%20TFS%0D%0AIn&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=88&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
<li class="shr-reddit">
			<a href="http://www.shareaholic.com/api/share/?title=How+to+be+a+Good+TFS+Master&amp;link=http://blog.damianbrady.com.au/2011/11/05/how-to-be-a-good-tfs-master/&amp;notes=%0D%0A%0D%0AI%20recently%20gave%20a%20talk%20at%20the%20Qld%20ALM%20User%20Group%C2%A0on%20the%20topic%20of%20%22How%20to%20be%20a%20good%20TFS%20Master%22.%0D%0A%0D%0AHopefully%20those%20who%20turned%20up%20got%20some%20great%20tips%20on%20how%20to%20use%20TFS%20more%20fully%2C%20but%20the%20main%20points%20I%20hoped%20people%20left%20with%20were%3A%0D%0AMost%20people%20only%20use%20about%2020-30%25%20of%20the%20capabilities%20of%20TFS%0D%0AIn&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
<li class="shr-hackernews">
			<a href="http://www.shareaholic.com/api/share/?title=How+to+be+a+Good+TFS+Master&amp;link=http://blog.damianbrady.com.au/2011/11/05/how-to-be-a-good-tfs-master/&amp;notes=%0D%0A%0D%0AI%20recently%20gave%20a%20talk%20at%20the%20Qld%20ALM%20User%20Group%C2%A0on%20the%20topic%20of%20%22How%20to%20be%20a%20good%20TFS%20Master%22.%0D%0A%0D%0AHopefully%20those%20who%20turned%20up%20got%20some%20great%20tips%20on%20how%20to%20use%20TFS%20more%20fully%2C%20but%20the%20main%20points%20I%20hoped%20people%20left%20with%20were%3A%0D%0AMost%20people%20only%20use%20about%2020-30%25%20of%20the%20capabilities%20of%20TFS%0D%0AIn&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=202&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Submit this to Hacker News">Submit this to Hacker News</a>
		</li>
<li class="shr-gmail">
			<a href="http://www.shareaholic.com/api/share/?title=How+to+be+a+Good+TFS+Master&amp;link=http://blog.damianbrady.com.au/2011/11/05/how-to-be-a-good-tfs-master/&amp;notes=%0D%0A%0D%0AI%20recently%20gave%20a%20talk%20at%20the%20Qld%20ALM%20User%20Group%C2%A0on%20the%20topic%20of%20%22How%20to%20be%20a%20good%20TFS%20Master%22.%0D%0A%0D%0AHopefully%20those%20who%20turned%20up%20got%20some%20great%20tips%20on%20how%20to%20use%20TFS%20more%20fully%2C%20but%20the%20main%20points%20I%20hoped%20people%20left%20with%20were%3A%0D%0AMost%20people%20only%20use%20about%2020-30%25%20of%20the%20capabilities%20of%20TFS%0D%0AIn&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=52&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Email this via Gmail">Email this via Gmail</a>
		</li>
</ul>
<div style="clear: both;"></div>
<div class="shr-getshr" style="visibility:hidden;font-size:10px !important"><a target="_blank" href="http://www.shareaholic.com/?src=pub">Get Shareaholic</a></div>
<div style="clear: both;"></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.damianbrady.com.au/2011/11/05/how-to-be-a-good-tfs-master/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using Generics for Lookup Tables in Entity Framework</title>
		<link>http://blog.damianbrady.com.au/2011/08/16/using-generics-for-lookup-tables-in-entity-framework/</link>
		<comments>http://blog.damianbrady.com.au/2011/08/16/using-generics-for-lookup-tables-in-entity-framework/#comments</comments>
		<pubDate>Tue, 16 Aug 2011 12:56:24 +0000</pubDate>
		<dc:creator>Damian Brady</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://blog.damianbrady.com.au/?p=458</guid>
		<description><![CDATA[Update: &#8220;Down the track&#8221; has arrived, and I now have an extension to this post that shows a single generic repository that you can use across your application. I&#8217;m working with a client at the moment on a system using legacy database with (wait for it) about 50 lookup tables in their database.  We&#8217;re using [...]]]></description>
			<content:encoded><![CDATA[<div style="border:1px solid #aaa;background-color:#ffc;padding:4px;"><strong>Update:</strong> &#8220;Down the track&#8221; has arrived, and I now have <a href="http://blog.damianbrady.com.au/2012/03/07/a-generic-crud-repository-for-entity-framework/" title="A Generic CRUD Repository for Entity Framework">an extension to this post</a> that shows a single generic repository that you can use across your application.</div>
<p>I&#8217;m working with a client at the moment on a system using legacy database with (wait for it) about 50 lookup tables in their database.  We&#8217;re using <a href="http://msdn.microsoft.com/en-us/library/bb399572.aspx" title="ADO.NET Entity Framework" target="_blank">Entity Framework</a> to access the database, so it&#8217;s fairly easy to get the data out of these lookup tables.</p>
<p>However, I really don&#8217;t want to write 50 methods to return lists for each of these objects.  Thankfully, the solution is relatively simple &#8211; write a generic method to return the appropriate data.</p>
<p>Implementing this wasn&#8217;t quite as easy as I thought, but I got there after a bit of experimentation and, I&#8217;ll be honest, a fair bit of googling.</p>
<p>To demonstrate, let&#8217;s look at an Entity Model with a subset of the <a href="http://msftdbprodsamples.codeplex.com/" title="Microsoft Database Samples" target="_blank">AdventureWorks</a> database.</p>
<p><div id="attachment_466" class="wp-caption aligncenter" style="width: 610px"><a href="http://blog.damianbrady.com.au/wp-content/uploads/2011/08/EF_AdventureWorks.png" rel="lightbox[458]" title="An Adventure Works Entity Model"><img class="size-full wp-image-466 " title="An Adventure Works Entity Model" src="http://blog.damianbrady.com.au/wp-content/uploads/2011/08/EF_AdventureWorks.png" alt="An Adventure Works Entity Model" width="600" /></a><p class="wp-caption-text">An Adventure Works Entity Model</p></div></p>
<p>In particular, look at the red outlined objects.  These are likely to be referred to frequently throughout the application as simple lookup tables.</p>
<p>We want to write a single generic method that will return an IEnumerable of these objects so we can use them quite simply as lookup tables.</p>
<p>Here&#8217;s what I ended up with:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">AdventureWorksEntities adventureWorksEntities <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> AdventureWorksEntities<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
<span style="color: #0600FF; font-weight: bold;">public</span> IEnumerable<span style="color: #008000;">&lt;</span>T<span style="color: #008000;">&gt;</span> GetLookup<span style="color: #008000;">&lt;</span>T<span style="color: #008000;">&gt;</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #0600FF; font-weight: bold;">where</span> T <span style="color: #008000;">:</span> <span style="color: #000000;">System.<span style="color: #0000FF;">Data</span></span><span style="color: #008000;">.</span><span style="color: #0000FF;">Objects</span><span style="color: #008000;">.</span><span style="color: #0000FF;">DataClasses</span><span style="color: #008000;">.</span><span style="color: #0000FF;">EntityObject</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0600FF; font-weight: bold;">try</span>
    <span style="color: #008000;">&#123;</span>
        var key <span style="color: #008000;">=</span> <span style="color: #008000;">typeof</span><span style="color: #008000;">&#40;</span>T<span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Name</span><span style="color: #008000;">;</span>
        <span style="color: #008080; font-style: italic;">// 1. we need the container for the conceptual model</span>
        var container <span style="color: #008000;">=</span> adventureWorksEntities<span style="color: #008000;">.</span><span style="color: #0000FF;">MetadataWorkspace</span><span style="color: #008000;">.</span><span style="color: #0000FF;">GetEntityContainer</span><span style="color: #008000;">&#40;</span>
            adventureWorksEntities<span style="color: #008000;">.</span><span style="color: #0000FF;">DefaultContainerName</span>, <span style="color: #000000;">System.<span style="color: #0000FF;">Data</span></span><span style="color: #008000;">.</span><span style="color: #0000FF;">Metadata</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Edm</span><span style="color: #008000;">.</span><span style="color: #0000FF;">DataSpace</span><span style="color: #008000;">.</span><span style="color: #0000FF;">CSpace</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        <span style="color: #008080; font-style: italic;">// 2. we need the name given to the element set in that conceptual model</span>
        var name <span style="color: #008000;">=</span> container<span style="color: #008000;">.</span><span style="color: #0000FF;">BaseEntitySets</span><span style="color: #008000;">.</span><span style="color: #0600FF; font-weight: bold;">Where</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>s<span style="color: #008000;">&#41;</span> <span style="color: #008000;">=&gt;</span> s<span style="color: #008000;">.</span><span style="color: #0000FF;">ElementType</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Name</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Equals</span><span style="color: #008000;">&#40;</span>key<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">FirstOrDefault</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Name</span><span style="color: #008000;">;</span>
        <span style="color: #008080; font-style: italic;">// 3. finally, we can create a basic query for this set</span>
        var query <span style="color: #008000;">=</span> adventureWorksEntities<span style="color: #008000;">.</span><span style="color: #0000FF;">CreateQuery</span><span style="color: #008000;">&lt;</span>T<span style="color: #008000;">&gt;</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;[&quot;</span> <span style="color: #008000;">+</span> name <span style="color: #008000;">+</span> <span style="color: #666666;">&quot;]&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
        <span style="color: #0600FF; font-weight: bold;">return</span> query<span style="color: #008000;">.</span><span style="color: #0000FF;">ToList</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0600FF; font-weight: bold;">catch</span> <span style="color: #008000;">&#40;</span><span style="color: #000000;">System.<span style="color: #0000FF;">Data</span></span><span style="color: #008000;">.</span><span style="color: #0000FF;">EntityException</span> ex<span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0600FF; font-weight: bold;">throw</span> <span style="color: #008000;">new</span> ArgumentException<span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Invalid Entity Type supplied for Lookup&quot;</span>, ex<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span></pre></div></div>

<p>Now we can use the following code to return a set of all items of the appropriate type:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">AdventureWorksRepository repository <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> AdventureWorksRepository<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
var states <span style="color: #008000;">=</span> repository<span style="color: #008000;">.</span><span style="color: #0000FF;">GetLookup</span><span style="color: #008000;">&lt;</span>StateProvince<span style="color: #008000;">&gt;</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
var addressTypes <span style="color: #008000;">=</span> repository<span style="color: #008000;">.</span><span style="color: #0000FF;">GetLookup</span><span style="color: #008000;">&lt;</span>AddressType<span style="color: #008000;">&gt;</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
var territories <span style="color: #008000;">=</span> repository<span style="color: #008000;">.</span><span style="color: #0000FF;">GetLookup</span><span style="color: #008000;">&lt;</span>SalesTerritory<span style="color: #008000;">&gt;</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

<p>This has saved me countless hours of writing boring plumbing code.</p>
<p>Hopefully, some of you are already looking at this thinking, &#8220;couldn&#8217;t I take this a lot further and provide a set of generic data access methods for everything?&#8221;. The answer of course is yes.  I haven&#8217;t gone quite that far yet, but I wouldn&#8217;t be surprised if it was down the track.</p>
<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
<li class="shr-comfeed">
			<a href="http://blog.damianbrady.com.au/2011/08/16/using-generics-for-lookup-tables-in-entity-framework/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
<li class="shr-twitter">
			<a href="http://www.shareaholic.com/api/share/?title=Using+Generics+for+Lookup+Tables+in+Entity+Framework&amp;link=http://blog.damianbrady.com.au/2011/08/16/using-generics-for-lookup-tables-in-entity-framework/&amp;notes=Update%3A%20%22Down%20the%20track%22%20has%20arrived%2C%20and%20I%20now%20have%20an%20extension%20to%20this%20post%20that%20shows%20a%20single%20generic%20repository%20that%20you%20can%20use%20across%20your%20application.%0D%0A%0D%0AI%27m%20working%20with%20a%20client%20at%20the%20moment%20on%20a%20system%20using%20legacy%20database%20with%20%28wait%20for%20it%29%20about%2050%20lookup%20tables%20in%20their%20database.%20%C2%A0&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=%2524%257Btitle%257D%2B-%2B%2524%257Bshort_link%257D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
<li class="shr-facebook">
			<a href="http://www.shareaholic.com/api/share/?title=Using+Generics+for+Lookup+Tables+in+Entity+Framework&amp;link=http://blog.damianbrady.com.au/2011/08/16/using-generics-for-lookup-tables-in-entity-framework/&amp;notes=Update%3A%20%22Down%20the%20track%22%20has%20arrived%2C%20and%20I%20now%20have%20an%20extension%20to%20this%20post%20that%20shows%20a%20single%20generic%20repository%20that%20you%20can%20use%20across%20your%20application.%0D%0A%0D%0AI%27m%20working%20with%20a%20client%20at%20the%20moment%20on%20a%20system%20using%20legacy%20database%20with%20%28wait%20for%20it%29%20about%2050%20lookup%20tables%20in%20their%20database.%20%C2%A0&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=5&amp;tags=&amp;ctype=" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a>
		</li>
<li class="shr-linkedin">
			<a href="http://www.shareaholic.com/api/share/?title=Using+Generics+for+Lookup+Tables+in+Entity+Framework&amp;link=http://blog.damianbrady.com.au/2011/08/16/using-generics-for-lookup-tables-in-entity-framework/&amp;notes=Update%3A%20%22Down%20the%20track%22%20has%20arrived%2C%20and%20I%20now%20have%20an%20extension%20to%20this%20post%20that%20shows%20a%20single%20generic%20repository%20that%20you%20can%20use%20across%20your%20application.%0D%0A%0D%0AI%27m%20working%20with%20a%20client%20at%20the%20moment%20on%20a%20system%20using%20legacy%20database%20with%20%28wait%20for%20it%29%20about%2050%20lookup%20tables%20in%20their%20database.%20%C2%A0&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=88&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
<li class="shr-reddit">
			<a href="http://www.shareaholic.com/api/share/?title=Using+Generics+for+Lookup+Tables+in+Entity+Framework&amp;link=http://blog.damianbrady.com.au/2011/08/16/using-generics-for-lookup-tables-in-entity-framework/&amp;notes=Update%3A%20%22Down%20the%20track%22%20has%20arrived%2C%20and%20I%20now%20have%20an%20extension%20to%20this%20post%20that%20shows%20a%20single%20generic%20repository%20that%20you%20can%20use%20across%20your%20application.%0D%0A%0D%0AI%27m%20working%20with%20a%20client%20at%20the%20moment%20on%20a%20system%20using%20legacy%20database%20with%20%28wait%20for%20it%29%20about%2050%20lookup%20tables%20in%20their%20database.%20%C2%A0&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
<li class="shr-hackernews">
			<a href="http://www.shareaholic.com/api/share/?title=Using+Generics+for+Lookup+Tables+in+Entity+Framework&amp;link=http://blog.damianbrady.com.au/2011/08/16/using-generics-for-lookup-tables-in-entity-framework/&amp;notes=Update%3A%20%22Down%20the%20track%22%20has%20arrived%2C%20and%20I%20now%20have%20an%20extension%20to%20this%20post%20that%20shows%20a%20single%20generic%20repository%20that%20you%20can%20use%20across%20your%20application.%0D%0A%0D%0AI%27m%20working%20with%20a%20client%20at%20the%20moment%20on%20a%20system%20using%20legacy%20database%20with%20%28wait%20for%20it%29%20about%2050%20lookup%20tables%20in%20their%20database.%20%C2%A0&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=202&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Submit this to Hacker News">Submit this to Hacker News</a>
		</li>
<li class="shr-gmail">
			<a href="http://www.shareaholic.com/api/share/?title=Using+Generics+for+Lookup+Tables+in+Entity+Framework&amp;link=http://blog.damianbrady.com.au/2011/08/16/using-generics-for-lookup-tables-in-entity-framework/&amp;notes=Update%3A%20%22Down%20the%20track%22%20has%20arrived%2C%20and%20I%20now%20have%20an%20extension%20to%20this%20post%20that%20shows%20a%20single%20generic%20repository%20that%20you%20can%20use%20across%20your%20application.%0D%0A%0D%0AI%27m%20working%20with%20a%20client%20at%20the%20moment%20on%20a%20system%20using%20legacy%20database%20with%20%28wait%20for%20it%29%20about%2050%20lookup%20tables%20in%20their%20database.%20%C2%A0&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=52&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Email this via Gmail">Email this via Gmail</a>
		</li>
</ul>
<div style="clear: both;"></div>
<div class="shr-getshr" style="visibility:hidden;font-size:10px !important"><a target="_blank" href="http://www.shareaholic.com/?src=pub">Get Shareaholic</a></div>
<div style="clear: both;"></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.damianbrady.com.au/2011/08/16/using-generics-for-lookup-tables-in-entity-framework/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Tip for troubleshooting in IIS &#8211; finding your requests</title>
		<link>http://blog.damianbrady.com.au/2011/07/04/tip-for-troubleshooting-in-iis-finding-your-requests/</link>
		<comments>http://blog.damianbrady.com.au/2011/07/04/tip-for-troubleshooting-in-iis-finding-your-requests/#comments</comments>
		<pubDate>Mon, 04 Jul 2011 07:57:52 +0000</pubDate>
		<dc:creator>Damian Brady</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://blog.damianbrady.com.au/?p=451</guid>
		<description><![CDATA[I spent some of my day today investigating some performance problems with a website hosted in IIS6. The problem was that this was a live site that received several thousand hits a day. I wanted to be able to quickly find my specific requests in the IIS log. My solution?  Give my browser its own [...]]]></description>
			<content:encoded><![CDATA[<p>I spent some of my day today investigating some performance problems with a website hosted in IIS6.</p>
<p>The problem was that this was a live site that received several thousand hits a day. <strong> I wanted to be able to quickly find my specific requests in the IIS log</strong>.</p>
<p>My solution?  <strong>Give my browser its own User Agent string</strong>.  That way I can search for my specific entry in the appropriate log file.</p>
<p>I was using Firefox for this investigation.  It&#8217;s fairly easy to change your User Agent string:</p>
<ul>
<li>Go to <em>about:config</em> in the address bar of Firefox</li>
<li>Right-click in the window and choose <em>New </em>| <em>String</em>.</li>
<li>Call the Preference Name, &#8220;<em>general.useragent.override</em>&#8221; and set the Value to something you&#8217;ll recognise.  It&#8217;s usually safer to take your existing User Agent string (which you can find at <a title="What's My User Agent?" href="http://whatsmyuseragent.com">http://whatsmyuseragent.com/</a>) and just append something unique.</li>
<li>Go to <a title="What's My User Agent?" href="http://whatsmyuseragent.com">http://whatsmyuseragent.com/</a> and make sure your change has persisted.</li>
</ul>
<p>To undo your change later, just return to <em>about:config</em> and delete your override entry.</p>
<p>Now when looking through the IIS logs, you can just search for your specific User Agent string to find your entries.</p>
<p><em>Tip: <a title="Chrome - User Agent Switcher" href="http://www.google.com/support/forum/p/Chrome/thread?tid=64e4e45037f55919&amp;hl=en">See here</a> for instructions on changing your User Agent in Chrome, and <a title="Change the User Agent String in Internet Explorer 8" href="http://www.howtogeek.com/howto/18450/change-the-user-agent-string-in-internet-explorer-8/">here</a> for some help in IE 8.</em></p>
<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
<li class="shr-comfeed">
			<a href="http://blog.damianbrady.com.au/2011/07/04/tip-for-troubleshooting-in-iis-finding-your-requests/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
<li class="shr-twitter">
			<a href="http://www.shareaholic.com/api/share/?title=Tip+for+troubleshooting+in+IIS+-+finding+your+requests&amp;link=http://blog.damianbrady.com.au/2011/07/04/tip-for-troubleshooting-in-iis-finding-your-requests/&amp;notes=I%20spent%20some%20of%20my%20day%20today%20investigating%20some%20performance%20problems%20with%20a%20website%20hosted%20in%20IIS6.%0D%0A%0D%0AThe%20problem%20was%20that%20this%20was%20a%20live%20site%20that%20received%20several%20thousand%20hits%20a%20day.%20%20I%20wanted%20to%20be%20able%20to%20quickly%20find%20my%20specific%20requests%20in%20the%20IIS%20log.%0D%0A%0D%0AMy%20solution%3F%20%C2%A0Give%20my%20browser%20its%20&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=%2524%257Btitle%257D%2B-%2B%2524%257Bshort_link%257D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
<li class="shr-facebook">
			<a href="http://www.shareaholic.com/api/share/?title=Tip+for+troubleshooting+in+IIS+-+finding+your+requests&amp;link=http://blog.damianbrady.com.au/2011/07/04/tip-for-troubleshooting-in-iis-finding-your-requests/&amp;notes=I%20spent%20some%20of%20my%20day%20today%20investigating%20some%20performance%20problems%20with%20a%20website%20hosted%20in%20IIS6.%0D%0A%0D%0AThe%20problem%20was%20that%20this%20was%20a%20live%20site%20that%20received%20several%20thousand%20hits%20a%20day.%20%20I%20wanted%20to%20be%20able%20to%20quickly%20find%20my%20specific%20requests%20in%20the%20IIS%20log.%0D%0A%0D%0AMy%20solution%3F%20%C2%A0Give%20my%20browser%20its%20&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=5&amp;tags=&amp;ctype=" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a>
		</li>
<li class="shr-linkedin">
			<a href="http://www.shareaholic.com/api/share/?title=Tip+for+troubleshooting+in+IIS+-+finding+your+requests&amp;link=http://blog.damianbrady.com.au/2011/07/04/tip-for-troubleshooting-in-iis-finding-your-requests/&amp;notes=I%20spent%20some%20of%20my%20day%20today%20investigating%20some%20performance%20problems%20with%20a%20website%20hosted%20in%20IIS6.%0D%0A%0D%0AThe%20problem%20was%20that%20this%20was%20a%20live%20site%20that%20received%20several%20thousand%20hits%20a%20day.%20%20I%20wanted%20to%20be%20able%20to%20quickly%20find%20my%20specific%20requests%20in%20the%20IIS%20log.%0D%0A%0D%0AMy%20solution%3F%20%C2%A0Give%20my%20browser%20its%20&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=88&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
<li class="shr-reddit">
			<a href="http://www.shareaholic.com/api/share/?title=Tip+for+troubleshooting+in+IIS+-+finding+your+requests&amp;link=http://blog.damianbrady.com.au/2011/07/04/tip-for-troubleshooting-in-iis-finding-your-requests/&amp;notes=I%20spent%20some%20of%20my%20day%20today%20investigating%20some%20performance%20problems%20with%20a%20website%20hosted%20in%20IIS6.%0D%0A%0D%0AThe%20problem%20was%20that%20this%20was%20a%20live%20site%20that%20received%20several%20thousand%20hits%20a%20day.%20%20I%20wanted%20to%20be%20able%20to%20quickly%20find%20my%20specific%20requests%20in%20the%20IIS%20log.%0D%0A%0D%0AMy%20solution%3F%20%C2%A0Give%20my%20browser%20its%20&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
<li class="shr-hackernews">
			<a href="http://www.shareaholic.com/api/share/?title=Tip+for+troubleshooting+in+IIS+-+finding+your+requests&amp;link=http://blog.damianbrady.com.au/2011/07/04/tip-for-troubleshooting-in-iis-finding-your-requests/&amp;notes=I%20spent%20some%20of%20my%20day%20today%20investigating%20some%20performance%20problems%20with%20a%20website%20hosted%20in%20IIS6.%0D%0A%0D%0AThe%20problem%20was%20that%20this%20was%20a%20live%20site%20that%20received%20several%20thousand%20hits%20a%20day.%20%20I%20wanted%20to%20be%20able%20to%20quickly%20find%20my%20specific%20requests%20in%20the%20IIS%20log.%0D%0A%0D%0AMy%20solution%3F%20%C2%A0Give%20my%20browser%20its%20&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=202&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Submit this to Hacker News">Submit this to Hacker News</a>
		</li>
<li class="shr-gmail">
			<a href="http://www.shareaholic.com/api/share/?title=Tip+for+troubleshooting+in+IIS+-+finding+your+requests&amp;link=http://blog.damianbrady.com.au/2011/07/04/tip-for-troubleshooting-in-iis-finding-your-requests/&amp;notes=I%20spent%20some%20of%20my%20day%20today%20investigating%20some%20performance%20problems%20with%20a%20website%20hosted%20in%20IIS6.%0D%0A%0D%0AThe%20problem%20was%20that%20this%20was%20a%20live%20site%20that%20received%20several%20thousand%20hits%20a%20day.%20%20I%20wanted%20to%20be%20able%20to%20quickly%20find%20my%20specific%20requests%20in%20the%20IIS%20log.%0D%0A%0D%0AMy%20solution%3F%20%C2%A0Give%20my%20browser%20its%20&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=52&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Email this via Gmail">Email this via Gmail</a>
		</li>
</ul>
<div style="clear: both;"></div>
<div class="shr-getshr" style="visibility:hidden;font-size:10px !important"><a target="_blank" href="http://www.shareaholic.com/?src=pub">Get Shareaholic</a></div>
<div style="clear: both;"></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.damianbrady.com.au/2011/07/04/tip-for-troubleshooting-in-iis-finding-your-requests/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Quick Tip for Presentations Showing Mobile Devices</title>
		<link>http://blog.damianbrady.com.au/2011/06/22/a-quick-tip-for-presentations-showing-mobile-devices/</link>
		<comments>http://blog.damianbrady.com.au/2011/06/22/a-quick-tip-for-presentations-showing-mobile-devices/#comments</comments>
		<pubDate>Wed, 22 Jun 2011 02:48:49 +0000</pubDate>
		<dc:creator>Damian Brady</dc:creator>
				<category><![CDATA[Presentations]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://blog.damianbrady.com.au/?p=261</guid>
		<description><![CDATA[I went along to see Leon Bambrick and Joseph Cooney at the Queensland MSDN User Group meeting last night. The attendance was amazing &#8211; they had to open up a partition to the adjacent room and every seat was filled. Leon and Joseph spoke about ASP.NET MVC 3 with a particular focus on the tooling [...]]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_426" class="wp-caption alignright" style="width: 310px"><a href="http://blog.damianbrady.com.au/wp-content/uploads/2011/06/webcamscreenshot.png" rel="lightbox[261]" title="Showing a webcam on your desktop"><img class="size-medium wp-image-426 " title="Showing a webcam on your desktop" src="http://blog.damianbrady.com.au/wp-content/uploads/2011/06/webcamscreenshot-300x233.png" alt="Showing a webcam on your desktop" width="300" height="233" /></a><p class="wp-caption-text">Using WebcamViewer to show a webcam on your computer desktop</p></div></p>
<p>I went along to see <a title="Secret Geek" href="http://secretgeek.net/">Leon Bambrick</a> and <a title="Joseph Cooney" href="http://jcooney.net/">Joseph Cooney</a> at the <a title="Qld MSDN User Group" href="http://www.qmsdnug.org/">Queensland MSDN User Group</a> meeting last night. The attendance was amazing &#8211; they had to open up a partition to the adjacent room and every seat was filled.</p>
<p>Leon and Joseph spoke about ASP.NET MVC 3 with a particular focus on the tooling around it, and delivering sites for mobile devices.</p>
<p>One slightly off-topic tip I did pick up was from Joseph when he needed to show his MVC site on different mobile devices. It&#8217;s a simple tip, but very effective.</p>
<p><strong>Tip: To show a mobile device, use a webcam:</strong></p>
<ol>
<li>Hook up a USB webcam to your presentation laptop</li>
<li>Point the webcam at the mobile device on your desk</li>
<li>Show the webcam screen on your computer/projector (I recommend <a title="WebcamViewer" href="http://www.bustatech.com/webcamviewer-a-simple-viewer-for-webcam/">WebcamViewer</a>)</li>
</ol>
<p>Pretty easy, huh?</p>
<p>The key point for me is that <strong>using a camera pointed at an actual device gives maximum believability</strong>.</p>
<p>You can use an emulator or a browser with a spoofed user-agent string, but it won&#8217;t engender as much trust with the audience. In particular, using a browser or emulator with the full power of your computer behind it can make things appear nicer than they actually are; particularly when it comes to site performance and demonstrating a touch device with a mouse.</p>
<p>For more presentation tips, see the <a title="Rules to Better Powerpoint Presentations" href="http://www.ssw.com.au/ssw/Standards/Rules/RulesToBetterPowerpointPresentations.aspx">SSW Rules to Better Powerpoint Presentations</a>.</p>
<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
<li class="shr-comfeed">
			<a href="http://blog.damianbrady.com.au/2011/06/22/a-quick-tip-for-presentations-showing-mobile-devices/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
<li class="shr-twitter">
			<a href="http://www.shareaholic.com/api/share/?title=A+Quick+Tip+for+Presentations+Showing+Mobile+Devices&amp;link=http://blog.damianbrady.com.au/2011/06/22/a-quick-tip-for-presentations-showing-mobile-devices/&amp;notes=%0D%0A%0D%0AI%20went%20along%20to%20see%20Leon%20Bambrick%20and%20Joseph%20Cooney%20at%20the%20Queensland%20MSDN%20User%20Group%20meeting%20last%20night.%20The%20attendance%20was%20amazing%20-%20they%20had%20to%20open%20up%20a%20partition%20to%20the%20adjacent%20room%20and%20every%20seat%20was%20filled.%0D%0A%0D%0ALeon%20and%20Joseph%20spoke%20about%20ASP.NET%20MVC%203%20with%20a%20particular%20focus%20on%20the%20tooli&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=%2524%257Btitle%257D%2B-%2B%2524%257Bshort_link%257D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
<li class="shr-facebook">
			<a href="http://www.shareaholic.com/api/share/?title=A+Quick+Tip+for+Presentations+Showing+Mobile+Devices&amp;link=http://blog.damianbrady.com.au/2011/06/22/a-quick-tip-for-presentations-showing-mobile-devices/&amp;notes=%0D%0A%0D%0AI%20went%20along%20to%20see%20Leon%20Bambrick%20and%20Joseph%20Cooney%20at%20the%20Queensland%20MSDN%20User%20Group%20meeting%20last%20night.%20The%20attendance%20was%20amazing%20-%20they%20had%20to%20open%20up%20a%20partition%20to%20the%20adjacent%20room%20and%20every%20seat%20was%20filled.%0D%0A%0D%0ALeon%20and%20Joseph%20spoke%20about%20ASP.NET%20MVC%203%20with%20a%20particular%20focus%20on%20the%20tooli&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=5&amp;tags=&amp;ctype=" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a>
		</li>
<li class="shr-linkedin">
			<a href="http://www.shareaholic.com/api/share/?title=A+Quick+Tip+for+Presentations+Showing+Mobile+Devices&amp;link=http://blog.damianbrady.com.au/2011/06/22/a-quick-tip-for-presentations-showing-mobile-devices/&amp;notes=%0D%0A%0D%0AI%20went%20along%20to%20see%20Leon%20Bambrick%20and%20Joseph%20Cooney%20at%20the%20Queensland%20MSDN%20User%20Group%20meeting%20last%20night.%20The%20attendance%20was%20amazing%20-%20they%20had%20to%20open%20up%20a%20partition%20to%20the%20adjacent%20room%20and%20every%20seat%20was%20filled.%0D%0A%0D%0ALeon%20and%20Joseph%20spoke%20about%20ASP.NET%20MVC%203%20with%20a%20particular%20focus%20on%20the%20tooli&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=88&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
<li class="shr-reddit">
			<a href="http://www.shareaholic.com/api/share/?title=A+Quick+Tip+for+Presentations+Showing+Mobile+Devices&amp;link=http://blog.damianbrady.com.au/2011/06/22/a-quick-tip-for-presentations-showing-mobile-devices/&amp;notes=%0D%0A%0D%0AI%20went%20along%20to%20see%20Leon%20Bambrick%20and%20Joseph%20Cooney%20at%20the%20Queensland%20MSDN%20User%20Group%20meeting%20last%20night.%20The%20attendance%20was%20amazing%20-%20they%20had%20to%20open%20up%20a%20partition%20to%20the%20adjacent%20room%20and%20every%20seat%20was%20filled.%0D%0A%0D%0ALeon%20and%20Joseph%20spoke%20about%20ASP.NET%20MVC%203%20with%20a%20particular%20focus%20on%20the%20tooli&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
<li class="shr-hackernews">
			<a href="http://www.shareaholic.com/api/share/?title=A+Quick+Tip+for+Presentations+Showing+Mobile+Devices&amp;link=http://blog.damianbrady.com.au/2011/06/22/a-quick-tip-for-presentations-showing-mobile-devices/&amp;notes=%0D%0A%0D%0AI%20went%20along%20to%20see%20Leon%20Bambrick%20and%20Joseph%20Cooney%20at%20the%20Queensland%20MSDN%20User%20Group%20meeting%20last%20night.%20The%20attendance%20was%20amazing%20-%20they%20had%20to%20open%20up%20a%20partition%20to%20the%20adjacent%20room%20and%20every%20seat%20was%20filled.%0D%0A%0D%0ALeon%20and%20Joseph%20spoke%20about%20ASP.NET%20MVC%203%20with%20a%20particular%20focus%20on%20the%20tooli&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=202&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Submit this to Hacker News">Submit this to Hacker News</a>
		</li>
<li class="shr-gmail">
			<a href="http://www.shareaholic.com/api/share/?title=A+Quick+Tip+for+Presentations+Showing+Mobile+Devices&amp;link=http://blog.damianbrady.com.au/2011/06/22/a-quick-tip-for-presentations-showing-mobile-devices/&amp;notes=%0D%0A%0D%0AI%20went%20along%20to%20see%20Leon%20Bambrick%20and%20Joseph%20Cooney%20at%20the%20Queensland%20MSDN%20User%20Group%20meeting%20last%20night.%20The%20attendance%20was%20amazing%20-%20they%20had%20to%20open%20up%20a%20partition%20to%20the%20adjacent%20room%20and%20every%20seat%20was%20filled.%0D%0A%0D%0ALeon%20and%20Joseph%20spoke%20about%20ASP.NET%20MVC%203%20with%20a%20particular%20focus%20on%20the%20tooli&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=52&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Email this via Gmail">Email this via Gmail</a>
		</li>
</ul>
<div style="clear: both;"></div>
<div class="shr-getshr" style="visibility:hidden;font-size:10px !important"><a target="_blank" href="http://www.shareaholic.com/?src=pub">Get Shareaholic</a></div>
<div style="clear: both;"></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.damianbrady.com.au/2011/06/22/a-quick-tip-for-presentations-showing-mobile-devices/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Rise of Participative Software</title>
		<link>http://blog.damianbrady.com.au/2011/06/18/the-rise-of-participative-software/</link>
		<comments>http://blog.damianbrady.com.au/2011/06/18/the-rise-of-participative-software/#comments</comments>
		<pubDate>Sat, 18 Jun 2011 00:18:10 +0000</pubDate>
		<dc:creator>Damian Brady</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Presentations]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://blog.damianbrady.com.au/?p=168</guid>
		<description><![CDATA[Recently I gave a presentation at Ignite Brisbane where I spoke about &#8220;The Rise of Participative Software&#8221;. You may remember me briefly talking about this topic in an earlier post, as it&#8217;s something that I&#8217;m fairly excited about.  The general idea is that most software just does exactly what the user asks.  You give it [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I gave a presentation at <a title="Ignite Brisbane" href="http://www.ignitebrisbane.net/">Ignite Brisbane</a> where I spoke about &#8220;The Rise of Participative Software&#8221;.</p>
<p>You may remember me briefly talking about this topic in <a title="Using the data you generate" href="http://blog.damianbrady.com.au/2010/12/23/using-the-data-you-generate/">an earlier post</a>, as it&#8217;s something that I&#8217;m fairly excited about.  The general idea is that most software just does exactly what the user asks.  You give it some explicit input, it gives you some output.  Participative Software is my name for software that makes suggestions and &#8220;participates&#8221; without explicit input.</p>
<p><a title="Ignite Brisbane - The Rise of Participative Software" href="http://igniteshow.com/videos/rise-participative-software">Watch the video for more details.</a></p>
<p>The five minute time limit meant that I didn&#8217;t quite get my point across as well as I&#8217;d hoped.  I&#8217;d like to present the topic over 20 or 30 minutes so I can really drill down on the subject and include a bit more of a call-to-action.</p>
<p>As always, feedback is more than welcome &#8211; especially if you&#8217;d like to hear a 30min version!</p>
<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
<li class="shr-comfeed">
			<a href="http://blog.damianbrady.com.au/2011/06/18/the-rise-of-participative-software/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
<li class="shr-twitter">
			<a href="http://www.shareaholic.com/api/share/?title=The+Rise+of+Participative+Software&amp;link=http://blog.damianbrady.com.au/2011/06/18/the-rise-of-participative-software/&amp;notes=Recently%20I%20gave%20a%20presentation%20at%20Ignite%20Brisbane%20where%20I%20spoke%20about%20%22The%20Rise%20of%20Participative%20Software%22.%0D%0A%0D%0AYou%20may%20remember%20me%20briefly%20talking%20about%20this%20topic%20in%20an%20earlier%20post%2C%20as%20it%27s%20something%20that%20I%27m%20fairly%20excited%20about.%20%C2%A0The%20general%20idea%20is%20that%20most%20software%20just%20does%20exactly%20what%20the&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=%2524%257Btitle%257D%2B-%2B%2524%257Bshort_link%257D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
<li class="shr-facebook">
			<a href="http://www.shareaholic.com/api/share/?title=The+Rise+of+Participative+Software&amp;link=http://blog.damianbrady.com.au/2011/06/18/the-rise-of-participative-software/&amp;notes=Recently%20I%20gave%20a%20presentation%20at%20Ignite%20Brisbane%20where%20I%20spoke%20about%20%22The%20Rise%20of%20Participative%20Software%22.%0D%0A%0D%0AYou%20may%20remember%20me%20briefly%20talking%20about%20this%20topic%20in%20an%20earlier%20post%2C%20as%20it%27s%20something%20that%20I%27m%20fairly%20excited%20about.%20%C2%A0The%20general%20idea%20is%20that%20most%20software%20just%20does%20exactly%20what%20the&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=5&amp;tags=&amp;ctype=" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a>
		</li>
<li class="shr-linkedin">
			<a href="http://www.shareaholic.com/api/share/?title=The+Rise+of+Participative+Software&amp;link=http://blog.damianbrady.com.au/2011/06/18/the-rise-of-participative-software/&amp;notes=Recently%20I%20gave%20a%20presentation%20at%20Ignite%20Brisbane%20where%20I%20spoke%20about%20%22The%20Rise%20of%20Participative%20Software%22.%0D%0A%0D%0AYou%20may%20remember%20me%20briefly%20talking%20about%20this%20topic%20in%20an%20earlier%20post%2C%20as%20it%27s%20something%20that%20I%27m%20fairly%20excited%20about.%20%C2%A0The%20general%20idea%20is%20that%20most%20software%20just%20does%20exactly%20what%20the&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=88&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
<li class="shr-reddit">
			<a href="http://www.shareaholic.com/api/share/?title=The+Rise+of+Participative+Software&amp;link=http://blog.damianbrady.com.au/2011/06/18/the-rise-of-participative-software/&amp;notes=Recently%20I%20gave%20a%20presentation%20at%20Ignite%20Brisbane%20where%20I%20spoke%20about%20%22The%20Rise%20of%20Participative%20Software%22.%0D%0A%0D%0AYou%20may%20remember%20me%20briefly%20talking%20about%20this%20topic%20in%20an%20earlier%20post%2C%20as%20it%27s%20something%20that%20I%27m%20fairly%20excited%20about.%20%C2%A0The%20general%20idea%20is%20that%20most%20software%20just%20does%20exactly%20what%20the&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
<li class="shr-hackernews">
			<a href="http://www.shareaholic.com/api/share/?title=The+Rise+of+Participative+Software&amp;link=http://blog.damianbrady.com.au/2011/06/18/the-rise-of-participative-software/&amp;notes=Recently%20I%20gave%20a%20presentation%20at%20Ignite%20Brisbane%20where%20I%20spoke%20about%20%22The%20Rise%20of%20Participative%20Software%22.%0D%0A%0D%0AYou%20may%20remember%20me%20briefly%20talking%20about%20this%20topic%20in%20an%20earlier%20post%2C%20as%20it%27s%20something%20that%20I%27m%20fairly%20excited%20about.%20%C2%A0The%20general%20idea%20is%20that%20most%20software%20just%20does%20exactly%20what%20the&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=202&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Submit this to Hacker News">Submit this to Hacker News</a>
		</li>
<li class="shr-gmail">
			<a href="http://www.shareaholic.com/api/share/?title=The+Rise+of+Participative+Software&amp;link=http://blog.damianbrady.com.au/2011/06/18/the-rise-of-participative-software/&amp;notes=Recently%20I%20gave%20a%20presentation%20at%20Ignite%20Brisbane%20where%20I%20spoke%20about%20%22The%20Rise%20of%20Participative%20Software%22.%0D%0A%0D%0AYou%20may%20remember%20me%20briefly%20talking%20about%20this%20topic%20in%20an%20earlier%20post%2C%20as%20it%27s%20something%20that%20I%27m%20fairly%20excited%20about.%20%C2%A0The%20general%20idea%20is%20that%20most%20software%20just%20does%20exactly%20what%20the&amp;short_link=&amp;shortener=bitly&amp;shortener_key=damovisa|R_9bd5086c82e396ddea755c2667073a1f&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=52&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Email this via Gmail">Email this via Gmail</a>
		</li>
</ul>
<div style="clear: both;"></div>
<div class="shr-getshr" style="visibility:hidden;font-size:10px !important"><a target="_blank" href="http://www.shareaholic.com/?src=pub">Get Shareaholic</a></div>
<div style="clear: both;"></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.damianbrady.com.au/2011/06/18/the-rise-of-participative-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

