﻿<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
  <channel>
    <title>bloggingonit.com -- IT Blog Feeds Consolidated</title>
    <link>http://www.bloggingonit.com</link>
    <description>IT Blog Feeds Consolidated</description>
    <copyright>Copyright 2006 bloggingonit.com</copyright>
    <language>en-us</language>
    <lastBuildDate>Tue, 21 Feb 2006 17:25:21 GMT</lastBuildDate>
    <category>IT Blogs</category>
    <ttl>60</ttl>
    <image>
      <url>http://www.bloggingonit.com/logo.gif</url>
      <title>bloggingonit.com</title>
      <link>http://www.bloggingonit.com/</link>
    </image>
    <item>
      <guid>9D2E96F2AA6AE85F!903</guid>
      <category>.Net</category>
      <title>Simple Object State Awareness</title>
      <description>&lt;div&gt;Through the implementation of two custom interfaces (IClonable&amp;lt;T&amp;gt; and IStateAware) and one from the .NET framework (IEquatable&amp;lt;T&amp;gt;) it becomes pretty simple to create a class that's state-aware. The IClonable&amp;lt;T&amp;gt; interface is simply a representation of the &lt;a href="http://en.wikipedia.org/wiki/Prototype_pattern" target="_blank"&gt;Prototype Pattern&lt;/a&gt; that I have made a &lt;a href="http://www.noticeablydifferent.com/UnitTesting/GOF/Prototype.aspx" target="_blank"&gt;sample of on my website previously&lt;/a&gt;.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Here are the two custom interfaces:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;     public interface&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000" size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;&lt;font color="#2b91af" size="2"&gt;IClonable&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt;&amp;lt;T&amp;gt; {&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;          T Clone();&lt;/div&gt;
&lt;div&gt;     }&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;     public interface&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000" size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;&lt;font color="#2b91af" size="2"&gt;IStateAware&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt; {&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;          void&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; StoreCurrentState();&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;          bool&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; HasChanged { &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;get&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;;  }&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;     } &lt;/font&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;font size="2"&gt;Here's a sample implementation:&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt; &lt;/div&gt;&lt;span&gt;&lt;font color="#2b91af" size="2"&gt;&lt;font color="#2b91af" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;     public class&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000" size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;&lt;font color="#2b91af" size="2"&gt;MyClass&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt; : &lt;font color="#2b91af" size="2"&gt;&lt;font color="#2b91af" size="2"&gt;IClonable&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;&lt;font color="#2b91af" size="2"&gt;MyClass&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&amp;gt;, &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;&lt;font color="#2b91af" size="2"&gt;IEquatable&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;&lt;font color="#2b91af" size="2"&gt;MyClass&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&amp;gt;, &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;&lt;font color="#2b91af" size="2"&gt;IStateAware&lt;font color="#000000"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt;&lt;font color="#2b91af" size="2"&gt;&lt;font color="#2b91af" size="2"&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font size="2"&gt; 
&lt;div&gt;&lt;/div&gt;&lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;&lt;font color="#2b91af" size="2"&gt;          MyClass&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;font color="#000000"&gt;currentState&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt; 
&lt;div&gt; &lt;/div&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;          public string&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000" size="2"&gt; FirstName { &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;get&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000" size="2"&gt;; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;set&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt;; }&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt; 
&lt;div&gt;&lt;/div&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;          public string&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000" size="2"&gt; LastName { &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;get&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000" size="2"&gt;; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;set&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt;; }&lt;/font&gt;&lt;/font&gt; 
&lt;div&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt;&lt;/font&gt; &lt;/font&gt;&lt;/div&gt;&lt;/font&gt;&lt;/font&gt;
&lt;div&gt;&lt;/div&gt;&lt;/font&gt;          public&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;&lt;font color="#2b91af" size="2"&gt;MyClass&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt; Clone() { &lt;/font&gt;
&lt;div&gt;&lt;/div&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;         &lt;font color="#000000"&gt;     &lt;/font&gt; return&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;font color="#000000"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;&lt;font color="#2b91af" size="2"&gt;MyClass&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt;) MemberwiseClone(); &lt;/font&gt;
&lt;div&gt;&lt;font color="#000000"&gt;          }&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;  
&lt;div&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#000000"&gt;          &lt;/font&gt;public&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;bool&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;font color="#000000"&gt;Equals(&lt;/font&gt;&lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;&lt;font color="#2b91af" size="2"&gt;MyClass&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000" size="2"&gt; other) {&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;     &lt;font color="#000000"&gt;          &lt;/font&gt;return&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;font color="#000000"&gt;other.FirstName == FirstName &amp;amp;&amp;amp;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt; &lt;/font&gt;
&lt;div&gt;&lt;font color="#000000"&gt;                         other.LastName == LastName;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color="#000000"&gt;          }&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;    &lt;/div&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#000000"&gt;         &lt;/font&gt;public&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;void&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt; StoreCurrentState() { &lt;/font&gt;
&lt;div&gt;&lt;font color="#000000"&gt;               currentState = Clone();&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color="#000000"&gt;          }&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;  
&lt;div&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#000000"&gt;          &lt;/font&gt;public&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;bool&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; HasChanged &lt;font color="#000000"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;     &lt;font color="#000000"&gt;          &lt;/font&gt;get&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;font color="#000000"&gt;{ &lt;/font&gt;
&lt;div&gt;&lt;/div&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;          &lt;font color="#000000"&gt;          &lt;/font&gt;if&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000" size="2"&gt;(currentState == &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;null&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000" size="2"&gt;) &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;return&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;false&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;; 
&lt;div&gt;&lt;/div&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;          &lt;font color="#000000"&gt;          &lt;/font&gt;return&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;font color="#000000"&gt;!Equals(currentState); &lt;/font&gt;
&lt;div&gt;              &lt;font color="#000000"&gt; }&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color="#000000"&gt;          }&lt;/font&gt;&lt;/div&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;div&gt;&lt;span&gt;
&lt;div&gt;     }&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt; &lt;/div&gt;
&lt;div&gt;&lt;span&gt;Now I can take a snapshot of the object at any time and determine if it has changed later on.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt; &lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;</description>
      <pubDate>Tue, 23 Feb 2010 15:44:26 Z</pubDate>
      <link>http://huntjason.spaces.live.com/Blog/cns!9D2E96F2AA6AE85F!903.entry</link>
      <comments>http://huntjason.spaces.live.com/Blog/cns!9D2E96F2AA6AE85F!903.entry#comment</comments>
      <comments>0</comments>
      <type>blogentry</type>
      <typelabel>Blog Entry</typelabel>
      <commentRss>http://cid-9d2e96f2aa6ae85f.users.api.live.net/Users(-7120587991840790433)/Blogs('9D2E96F2AA6AE85F!102')/Entries('9D2E96F2AA6AE85F!903')/Comments?$format=application%2frss%2bxml</commentRss>
      <modified>2010-02-23T15:50:21.5570000Z</modified>
    </item>
    <item>
      <guid>9D2E96F2AA6AE85F!850</guid>
      <category>WPF/Silverlight</category>
      <title>MVVM, Infragistics XamDataGrid, and Exporting to Excel</title>
      <description>&lt;div&gt;I was watching &lt;a href="http://weblogs.asp.net/craigshoemaker/" target="_blank"&gt;Craig Shoemaker's &lt;/a&gt;video blog post on &lt;a href="http://news.infragistics.com/wpf/media/p/173618.aspx" target="_blank"&gt;Introduction to XamDataGrid Excel Exporting&lt;/a&gt; and was excited that he started things out with a ViewModel but the export code was all performed in a code-behind. This left me wanting more. The problem is that &lt;a href="http://www.infragistics.com/" target="_blank"&gt;Infragistics&lt;/a&gt;' &lt;a href="http://www.infragistics.com/dotnet/netadvantage/wpf/datapresenterexcelexporter.aspx#Overview" target="_blank"&gt;DataPresenterExcelExporter&lt;/a&gt; requires you to pass a DataPresenterBase object (implemented by the &lt;a href="http://www.infragistics.com/dotnet/netadvantage/wpf/xamdatagrid.aspx#Overview" target="_blank"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;XamDataGrid&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;) as a parameter. This makes sense as the power of the &lt;a href="http://www.infragistics.com/dotnet/netadvantage/wpf/datapresenterexcelexporter.aspx#Overview" target="_blank"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;DataPresenterExcelExporter&lt;/font&gt;&lt;/u&gt;&lt;/a&gt; feature is that whatever formatting you have put in place on your grid is what gets exported, saving me being asked to try and replicate a user's grouping, sorting, or what-not in Excel.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;So, I used a UserControl, and &lt;a href="http://www.codeplex.com/CompositeWPF" target="_blank"&gt;PRISM&lt;/a&gt;'s generic &lt;a href="http://development-guides.silverbaylabs.org/Video/Prism-Commands" target="_blank"&gt;DelegateCommand&lt;/a&gt; (one of my favorites) to pass the &lt;a href="http://www.infragistics.com/dotnet/netadvantage/wpf/xamdatagrid.aspx#Overview" target="_blank"&gt;XamDataGrid&lt;/a&gt; instance through to my ViewModel and was able to move toward a more pure &lt;a href="http://msdn.microsoft.com/en-us/magazine/dd419663.aspx" target="_blank"&gt;MVVM&lt;/a&gt; implementation of the export to excel feature.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; You can find the complete sample here:&lt;/div&gt;
&lt;ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;font color="#4563b9"&gt;&lt;a href="http://cid-9d2e96f2aa6ae85f.skydrive.live.com/self.aspx/Public/MVVMXamDataGridExportToExcel.zip" target="_blank"&gt;MVVM XamDataGrid Export to Excel Sample Code&lt;/a&gt;&lt;/font&gt; &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;
&lt;h2&gt;&lt;font size="2"&gt;&lt;/font&gt; &lt;/h2&gt;</description>
      <pubDate>Thu, 18 Feb 2010 17:58:10 Z</pubDate>
      <link>http://huntjason.spaces.live.com/Blog/cns!9D2E96F2AA6AE85F!850.entry</link>
      <comments>http://huntjason.spaces.live.com/Blog/cns!9D2E96F2AA6AE85F!850.entry#comment</comments>
      <comments>0</comments>
      <type>blogentry</type>
      <typelabel>Blog Entry</typelabel>
      <commentRss>http://cid-9d2e96f2aa6ae85f.users.api.live.net/Users(-7120587991840790433)/Blogs('9D2E96F2AA6AE85F!102')/Entries('9D2E96F2AA6AE85F!850')/Comments?$format=application%2frss%2bxml</commentRss>
      <modified>2010-02-18T18:01:05.3100000Z</modified>
    </item>
    <item>
      <title>Business Mastery #1 &amp; #2: Naming Companies and Children</title>
      <description>&lt;p&gt;As I was saying on Facebook this evening, I am now available to name your companies and/or your children for a small nominal fee.&amp;nbsp; For an additional fee I will make sure to give your company and your child *different* names!&amp;nbsp; However, as a small freebie I will let you in on how I come up with such amazing names for children and companies - I give them the patented Justice Gray CIO test.&lt;/p&gt;
&lt;p&gt;For the uninformed among you, the CIO test is as follows: can you seriously see the CIO of a potential client using the name of your company in a sentence without laughing?&amp;nbsp; For example, "Well, after careful consideration Star Beta Five is the winner of the RFP".&amp;nbsp; No way.&amp;nbsp; It's just not happening.&amp;nbsp; You need to ensure that your name can be stated in a sentence without people collapsing in hysterics!&amp;nbsp; This logic of course, also works for children (who I'm hoping you don't name Star Beta Five).&lt;/p&gt;
&lt;p&gt;Now, the second tip I'll offer here is that if you want to make sure your company is taken seriously, you need a name that is &lt;strong&gt;serious&lt;/strong&gt;.&amp;nbsp; Something that involves serious concepts like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;wolves&lt;/li&gt;
&lt;li&gt;blood&lt;/li&gt;
&lt;li&gt;or &lt;strong&gt;both&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Like "BloodWolf"!&amp;nbsp; You can also add "BloodWolf" - or its more professional variation "BloodWolf Inc." - to the end of *any* company name to give it an instant dose of credibility.&amp;nbsp; Let's try this again with the name we used above:&lt;/p&gt;
&lt;p&gt;Before: "Well, after careful consideration Star Beta Five is the winner of the RFP."&lt;/p&gt;
&lt;p&gt;After: "Well, after careful consideration &lt;strong&gt;Star Beta Five Bloodwolf Inc.&lt;/strong&gt; is the winner of the RFP, *and* I'd like to have children with their CEO at the nearest opportunity."&lt;/p&gt;
&lt;p&gt;As an additional favor to all of you (Happy Valentine's Day) I checked and currently www.starbetafivebloodwolfinc.com is &lt;strong&gt;not taken!&lt;/strong&gt;&amp;nbsp; Could this be your chance to hit it big?&amp;nbsp; Don't miss out!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;a href="http://mutley-the-cat.deviantart.com/art/Arsenal-White-Blood-Wolf-31579343"&gt;&lt;img src="http://graysmatter.codivation.com/image.axd?picture=2010%2f2%2fbloodwolf.jpg" alt="Star Beta Five Bloodwolf Inc." title="Star Beta Five BloodWolf Inc." /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;strong&gt;&lt;span style="font-size: xx-small;"&gt;I've even given you a possible logo, if you can secure the rights!&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;</description>
      <link>http://graysmatter.codivation.com/post/Business-Mastery-1-2-Naming-Companies-and-Children.aspx</link>
      <author>Justice~!</author>
      <comments>http://graysmatter.codivation.com/post/Business-Mastery-1-2-Naming-Companies-and-Children.aspx#comment</comments>
      <guid>http://graysmatter.codivation.com/post.aspx?id=ceca9558-d9bb-46e3-8496-e97174e5c739</guid>
      <pubDate>Sun, 14 Feb 2010 19:39:00 -0800</pubDate>
      <category>Leadership, Personal</category>
      <publisher>Justice~!</publisher>
      <server>http://graysmatter.codivation.com/pingback.axd</server>
      <target>http://graysmatter.codivation.com/post.aspx?id=ceca9558-d9bb-46e3-8496-e97174e5c739</target>
      <comments>3</comments>
      <ping>http://graysmatter.codivation.com/trackback.axd?id=ceca9558-d9bb-46e3-8496-e97174e5c739</ping>
      <comment>http://graysmatter.codivation.com/post/Business-Mastery-1-2-Naming-Companies-and-Children.aspx#comment</comment>
      <commentRss>http://graysmatter.codivation.com/syndication.axd?post=ceca9558-d9bb-46e3-8496-e97174e5c739</commentRss>
    </item>
    <item>
      <guid>9D2E96F2AA6AE85F!846</guid>
      <category>.Net</category>
      <title>Object Validation in an Extension Method</title>
      <description>&lt;div&gt;I was trying to find a way to define the state of an object based on a set of rules and assign a name to that set of rules that, then defines the state of the object. Here's what I came up with:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;font size="2"&gt;
&lt;div&gt;&lt;/div&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;     public&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;static&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;class&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;&lt;font color="#2b91af" size="2"&gt;Extensions&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; { 
&lt;div&gt;&lt;/div&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;          public&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;static&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;bool&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; Is&amp;lt;T&amp;gt;(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;this&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; T item, &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;&lt;font color="#2b91af" size="2"&gt;Predicate&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&amp;lt;T&amp;gt; conditions) { 
&lt;div&gt;&lt;/div&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;               return&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; conditions(item); 
&lt;div&gt;          }&lt;/div&gt;
&lt;div&gt;     }&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;This allows me to define the conditions of any object such that I can give a name to its state based on how the business speaks about the object:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;&lt;font color="#2b91af" size="2"&gt;     Predicate&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000" size="2"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;&lt;font color="#2b91af" size="2"&gt;MyObject&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt;&amp;gt; InACancelledState = (x =&amp;gt; x.Cancelled.HasValue);&lt;/font&gt;&lt;/font&gt; 
&lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;This leads me to be able to code fluently about the state of the object at runtime:&lt;/font&gt;&lt;/p&gt;&lt;font size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;div&gt;     if (&lt;font color="#000000"&gt;obj.Is(InACancelledState)) {&lt;/font&gt;&lt;/div&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#008000" size="2"&gt;
&lt;div&gt;          // Do some stuff&lt;/div&gt;&lt;/font&gt;&lt;/font&gt;
&lt;div&gt;&lt;font size="2"&gt;     }&lt;/font&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;/div&gt;&lt;/font&gt;&lt;/font&gt;</description>
      <pubDate>Fri, 05 Feb 2010 21:09:41 Z</pubDate>
      <link>http://huntjason.spaces.live.com/Blog/cns!9D2E96F2AA6AE85F!846.entry</link>
      <comments>http://huntjason.spaces.live.com/Blog/cns!9D2E96F2AA6AE85F!846.entry#comment</comments>
      <comments>1</comments>
      <type>blogentry</type>
      <typelabel>Blog Entry</typelabel>
      <commentRss>http://cid-9d2e96f2aa6ae85f.users.api.live.net/Users(-7120587991840790433)/Blogs('9D2E96F2AA6AE85F!102')/Entries('9D2E96F2AA6AE85F!846')/Comments?$format=application%2frss%2bxml</commentRss>
      <modified>2010-02-05T21:16:36.1670000Z</modified>
    </item>
    <item>
      <title>The IPad and the Nintendo Wii - gamechangers of their industries, part III</title>
      <description>&lt;p&gt;In the event you didn't follow where I was going with &lt;a href="http://graysmatter.codivation.com/post/The-IPad-is-to-hardcore-computer-geeks-what-the-Wii-was-to-hardcore-gamers-prelude.aspx"&gt;this post&lt;/a&gt; and &lt;a href="http://graysmatter.codivation.com/post/The-Apple-IPad-and-the-Nintendo-Wii.aspx"&gt;this post&lt;/a&gt;, someone has &lt;a href="http://northtemple.com/2010/02/01/on-ipads-grandmas-and-gam"&gt;written even more extensively&lt;/a&gt; on the same topic. Actually, so has:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://radar.oreilly.com/2010/01/the-ipad-is-the-iprius-your-co.html"&gt;this person&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://speirs.org/blog/2010/1/29/future-shock.html"&gt;this person&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://flyosity.com/ipad/the-ipad-is-for-everyone-but-us.php"&gt;this person&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;aaaand &lt;a href="http://stevenf.tumblr.com/post/359224392/i-need-to-talk-to-you-about-computers-ive-been"&gt;this person&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is the future of computing.  Will the &lt;strong&gt;IPad &lt;/strong&gt;be that future?&amp;nbsp; It's hard to say.&amp;nbsp; But nonetheless, this is where computing is going.&amp;nbsp; You should get ready, because mark my words, the Windows operating system will someday be like the mainframe punchcard computers of yesteryear.&amp;nbsp; I don't mean horribly technically outdated - I mean that gradually the usage of Windows OS as a personal operating system will go away, and the only place you'll see Windows is in the enterprise or in other more "work" style environments.&amp;nbsp; What the IPad represents is what your children are going to be using, what my grandparents and your grandparents are going to be using.&amp;nbsp; When I first saw the IPad presentation, I was underwhelmed until I went for lunch with a very, very, *very* smart friend of mine when we realized - hey, we're supposed to be underwhelmed - &lt;strong&gt;we're not the demographic&lt;/strong&gt; &lt;strong&gt;being targeted&lt;/strong&gt;.&amp;nbsp; I know that is tough to hear for some of the software developers who read this bog, since you're used to being shunned by polite society anyway!&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Sounds crazy, doesn't it?&amp;nbsp; Well, remember that yours truly, the Nostradamus of the computing industry, also previously proclaimed:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;That &lt;a href="http://graysmatter.codivation.com/post/Javascript-Raped-My-Dog-And-Other-Falsehoods.aspx"&gt;Microsoft would see the error of its ways regarding Javascript&lt;/a&gt;.&amp;nbsp; This was at a time when some of Microsoft's evangelists were all, "&lt;a href="http://graysmatter.codivation.com/post/REALDevelopment-e2809806-e28093-Baley-come-back-you-can-blame-it-all-on-me.aspx"&gt;Who even likes working with Javascript, right&lt;/a&gt;? Watch us &lt;a href="http://graysmatter.codivation.com/post/Microsoft-proclaims-Silverlight-sucks-dont-waste-your-time-with-it.aspx"&gt;spin a couple of squares with Silverlight&lt;/a&gt;!"&amp;nbsp; A couple of years later and now we have JQuery as the library of choice with the Microsoft MVC.&amp;nbsp; For those of you who read this that are not technically inclined, "who even likes working with Javascript?" is akin to saying, "Who even likes washing their hands before eating dinner?", which come to think of it, explains Silverlight's popularity in Manitoba!!&lt;/li&gt;
&lt;li&gt;(Speaking of the MS MVC) &lt;a href="http://graysmatter.codivation.com/post/WebForms-The-Whining-Continues.aspx"&gt;that the MS MVC was the future of web development&lt;/a&gt;, and that WebForms was on its way to being legacy technology.&amp;nbsp; Well, well, none other than &lt;a href="http://weblogs.asp.net/scottgu/archive/2010/01/24/about-technical-debates-both-in-general-and-regarding-asp-net-web-forms-and-asp-net-mvc-in-particular.aspx"&gt;Scott Guthrie agrees&lt;/a&gt;!&amp;nbsp; "I don't see that anywhere in the article,&amp;nbsp; Justice!"&amp;nbsp; &lt;strong&gt;Trust me&lt;/strong&gt;.&amp;nbsp; In my next post I will use my incredible literary analysis skills (honed from the age of 2) to &lt;strong&gt;open your eyes.&lt;/strong&gt;&amp;nbsp; Again for those of you who don't have a computing background, the difference between the MS MVC and WebForms is like &lt;strong&gt;the difference between using indoor plumbing and throwing your feces against the wall&lt;/strong&gt; - they both resolve the underlying issue but the latter is a heck of a lot messier and was only acceptable in the dark ages.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://graysmatter.codivation.com/post/To-Microsoft-from-your-concerned-friend-Justice.aspx"&gt;Vista would be a flop&lt;/a&gt;.&amp;nbsp; And it was such a rousing success that Microsoft actually invited yours truly to an "influencer meeting" across the country where &lt;strong&gt;I learned all about how to sell Vista to the enterprise.&lt;/strong&gt;&amp;nbsp;  (I might argue that Microsoft first went wrong in calling me an "influencer", actually, but to be fair they have made some pretty &lt;a href="http://graysmatter.codivation.com/post/Rick-Mogstad-wants-some-more-Vista-and-the-Eh-factor-cont.aspx"&gt;spectacular decisions in the past&lt;/a&gt; along with the questionable ones).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I remember wrhen I wrote about why I thought Vista wasn't compelling.&amp;nbsp;&amp;nbsp; Sure, someone chimed in to tell me &lt;a href="http://graysmatter.codivation.com/post/Rick-Mogstad-wants-some-more-Vista-and-the-Eh-factor-cont.aspx"&gt;all about all of the under the hood improvements that would *guarantee* everyone would get it&lt;/a&gt;, and as I said back then, "Why does my mother care about IIS7?&amp;nbsp; Or Bitlocker?"&amp;nbsp; But my mother?&amp;nbsp; &lt;strong&gt;She'll care about the IPad&lt;/strong&gt;.&amp;nbsp; And that is why the future doesn't belong to you, or to me - because we're the fringe elements on this one, my friends.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The mainstream is coming.&amp;nbsp; You should get ready.&lt;/p&gt;</description>
      <link>http://graysmatter.codivation.com/post/The-IPad-and-the-Nintendo-Wii-gamechangers-of-their-industries-part-III.aspx</link>
      <author>Justice~!</author>
      <comments>http://graysmatter.codivation.com/post/The-IPad-and-the-Nintendo-Wii-gamechangers-of-their-industries-part-III.aspx#comment</comments>
      <guid>http://graysmatter.codivation.com/post.aspx?id=99349e0c-7d78-4ebd-8e0e-9c5e3a69fc57</guid>
      <pubDate>Fri, 05 Feb 2010 08:36:00 -0800</pubDate>
      <category>Personal, Technical</category>
      <publisher>Justice~!</publisher>
      <server>http://graysmatter.codivation.com/pingback.axd</server>
      <target>http://graysmatter.codivation.com/post.aspx?id=99349e0c-7d78-4ebd-8e0e-9c5e3a69fc57</target>
      <comments>2</comments>
      <ping>http://graysmatter.codivation.com/trackback.axd?id=99349e0c-7d78-4ebd-8e0e-9c5e3a69fc57</ping>
      <comment>http://graysmatter.codivation.com/post/The-IPad-and-the-Nintendo-Wii-gamechangers-of-their-industries-part-III.aspx#comment</comment>
      <commentRss>http://graysmatter.codivation.com/syndication.axd?post=99349e0c-7d78-4ebd-8e0e-9c5e3a69fc57</commentRss>
    </item>
    <item>
      <title>Edmonton tax dollars hard at work</title>
      <description>&lt;p&gt;Courtesy &lt;a href="http://www.kunstler.com/eyesore.html"&gt;"Eyesore of the Month":&lt;/a&gt;&lt;/p&gt;
&lt;cite&gt;An article on the &lt;a href="http://www.cbc.ca/arts/story/2010/01/31/edmonton-gallery-grand-opening.html#ixzz0eOIhvTZN" target="_blank"&gt;CBC News web page&lt;/a&gt; said: "CBC News spoke to Reed Clarke at an exhibit that allows visitors to experience being in an abandoned Japanese dentist's office during a storm. He said the exhibit was very realistic."  You can't make this s**t up.&lt;/cite&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://graysmatter.codivation.com/image.axd?picture=2010%2f2%2fedmonton_art_gallery.jpg" alt="The Art Gallery of Alberta" /&gt;&lt;/p&gt;</description>
      <link>http://graysmatter.codivation.com/post/Edmonton-tax-dollars-hard-at-work.aspx</link>
      <author>Justice~!</author>
      <comments>http://graysmatter.codivation.com/post/Edmonton-tax-dollars-hard-at-work.aspx#comment</comments>
      <guid>http://graysmatter.codivation.com/post.aspx?id=d8e3a131-a9ce-42c6-8887-bf4497d35457</guid>
      <pubDate>Fri, 05 Feb 2010 08:18:00 -0800</pubDate>
      <category>Personal</category>
      <publisher>Justice~!</publisher>
      <server>http://graysmatter.codivation.com/pingback.axd</server>
      <target>http://graysmatter.codivation.com/post.aspx?id=d8e3a131-a9ce-42c6-8887-bf4497d35457</target>
      <comments>1</comments>
      <ping>http://graysmatter.codivation.com/trackback.axd?id=d8e3a131-a9ce-42c6-8887-bf4497d35457</ping>
      <comment>http://graysmatter.codivation.com/post/Edmonton-tax-dollars-hard-at-work.aspx#comment</comment>
      <commentRss>http://graysmatter.codivation.com/syndication.axd?post=d8e3a131-a9ce-42c6-8887-bf4497d35457</commentRss>
    </item>
    <item>
      <title>The Apple IPad and the Nintendo Wii</title>
      <description>&lt;p align="center"&gt;&lt;img title="The Nintendo Wii, the spiritual brother to the Apple IPad" src="http://graysmatter.codivation.com/image.axd?picture=2010%2f2%2fwii.jpg" alt="The Nintendo Wii, the spiritual brother to the Apple IPad" /&gt;&lt;img title="The Apple IPad, the spiritual brother to the Nintendo Wii" src="http://graysmatter.codivation.com/image.axd?picture=2010%2f2%2fsteve_jobs_ipad.jpg" alt="The Apple IPad, the spiritual brother to the Nintendo Wii" /&gt;&lt;/p&gt;
&lt;p&gt;"We're not thinking about fighting Sony, but about &lt;strong&gt;how many people we can get to play games&lt;/strong&gt;. The thing we're thinking about most is not portable systems, consoles, and so forth, but that &lt;strong&gt;we want to get new people playing games&lt;/strong&gt;."&lt;br /&gt;- Nintendo President Satoru Iwata on the Nintendo Wii&lt;br /&gt;&lt;br /&gt;"I love your...what do they call that?&amp;nbsp; The IPhone?&amp;nbsp; It makes everything so easy!! &amp;nbsp; &lt;strong&gt;But the screen is so small - I could never read or type anything on it!&lt;/strong&gt;"&lt;br /&gt;- My grandmother &amp;nbsp; &lt;br /&gt;&lt;br /&gt; "Why do you keep writing 'There's no more info online?&amp;nbsp; &lt;strong&gt;Don't you understand that a lot of seniors don't have a computer, much less the internet?&lt;/strong&gt;&amp;nbsp; And it's &lt;strong&gt;so hard for some of us to get on the internet &lt;/strong&gt;anyway!"&lt;br /&gt;- Letter to the Editor, Edmonton Journal &lt;br /&gt; &lt;br /&gt; "This will be the most important thing I've ever done."&lt;br /&gt; -A rumored quote from Steve Jobs, co-founder and CEO of Apple, referring to the Apple IPad&lt;/p&gt;</description>
      <link>http://graysmatter.codivation.com/post/The-Apple-IPad-and-the-Nintendo-Wii.aspx</link>
      <author>Justice~!</author>
      <comments>http://graysmatter.codivation.com/post/The-Apple-IPad-and-the-Nintendo-Wii.aspx#comment</comments>
      <guid>http://graysmatter.codivation.com/post.aspx?id=fd8f46b6-a87d-4129-8ce3-a26b8fe5f875</guid>
      <pubDate>Thu, 04 Feb 2010 19:09:00 -0800</pubDate>
      <category>Personal, Technical</category>
      <publisher>Justice~!</publisher>
      <server>http://graysmatter.codivation.com/pingback.axd</server>
      <target>http://graysmatter.codivation.com/post.aspx?id=fd8f46b6-a87d-4129-8ce3-a26b8fe5f875</target>
      <comments>2</comments>
      <ping>http://graysmatter.codivation.com/trackback.axd?id=fd8f46b6-a87d-4129-8ce3-a26b8fe5f875</ping>
      <comment>http://graysmatter.codivation.com/post/The-Apple-IPad-and-the-Nintendo-Wii.aspx#comment</comment>
      <commentRss>http://graysmatter.codivation.com/syndication.axd?post=fd8f46b6-a87d-4129-8ce3-a26b8fe5f875</commentRss>
    </item>
    <item>
      <title>HarvestApp – Handy for Consultants</title>
      <link>http://www.opgenorth.net/2010/02/03/harvestapp-handy-for-consultants/</link>
      <comments>http://www.opgenorth.net/2010/02/03/harvestapp-handy-for-consultants/#comments</comments>
      <pubDate>Wed, 03 Feb 2010 07:39:05 +0000</pubDate>
      <creator>tom</creator>
      <category>Miscellaneous</category>
      <guid>http://www.opgenorth.net/2010/02/03/harvestapp-handy-for-consultants/</guid>
      <description>Note:&amp;#160; I am in no way, shape, or form affiliated with HarvestApp.com. 
I’ve been an independent consultant in IT for four years now.&amp;#160; One of the biggest things in my day-to-day activities is keeping track of my time.&amp;#160; Timekeeping has become a bit of a thing for me, even when I was an employee.&amp;#160; It [...]</description>
      <encoded>&lt;p&gt;&lt;em&gt;&lt;font size="1"&gt;Note:&amp;#160; I am in no way, shape, or form affiliated with &lt;/font&gt;&lt;/em&gt;&lt;a href="http://www.harvestapp.com"&gt;&lt;em&gt;&lt;font size="1"&gt;HarvestApp.com&lt;/font&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&lt;font size="1"&gt;. &lt;/font&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I’ve been an independent consultant in IT for four years now.&amp;#160; One of the biggest things in my day-to-day activities is keeping track of my time.&amp;#160; Timekeeping has become a bit of a thing for me, even when I was an employee.&amp;#160; It probably stems back to about 1996 or so, when my first web application ever was a timesheet application I wrote while working at Alberta Transportation &amp;amp; Utilities (now Alberta Infrastructure).&amp;#160;&amp;#160; It was in C++, using Netscape Commerce Server and CGI.&amp;#160; I even had to write my own libraries to parse the HTTP requests and came up with my own crude templating engine.&amp;#160; Yes I’m old.&amp;#160; Yes, it was interesting.&amp;#160; Yes, we have it better now.&amp;#160; No, I would not like to repeat that experience.&lt;/p&gt;
&lt;p&gt;Anyway, over the years, I’ve tried many different things, from a VBA solution based on Outlook, Excel spreadsheets, to &lt;a href="http://www.advancen.com/products/timesheet.html"&gt;Timesheet.PHP&lt;/a&gt;, to a WebForms app based on the Timesheet.PHP database which I ported over to ASP.NET MVC when I wanted to expand my jQuery and ASP.NET MVC knowledge.&amp;#160; My little home-grown web app was good for what I needed it to do, but it wasn’t anything fancy.&amp;#160; If it was, I’d have sold it and become rich beyond the dreams of avarice.&lt;/p&gt;
&lt;p&gt;In the early fall, a friend of mine told me about &lt;a href="http://www.harvestapp.com"&gt;HarvestApp&lt;/a&gt; – a subscription based, online time-tracking application.&amp;#160; Thought I would give it a try.&amp;#160; My thinking at the time was that I’m not really in the business of writing a timesheet application, and I really need to keep track of time – as a consultant, billable hours are pretty important.&amp;#160; So, here I am now, almost six months later, and I will say that I like HarvestApp.&amp;#160; I find it quick, and easy to use.&amp;#160; I get easy to see reports.&amp;#160; You can create invoices (I don’t use HarvestApp to create my invoices, but you could).&amp;#160; You can track expenses.&amp;#160; It’s mobile friendly.&amp;#160; It’s moderately priced (IMHO – YMMV).&amp;#160; It has a public API so you can write your own applications against it.&amp;#160; &lt;/p&gt;
&lt;p&gt;Anyway, don’t take my word on it, try it for yourself.&lt;/p&gt;</encoded>
      <commentRss>http://www.opgenorth.net/2010/02/03/harvestapp-handy-for-consultants/feed/</commentRss>
      <comments>1</comments>
    </item>
    <item>
      <guid>9D2E96F2AA6AE85F!845</guid>
      <category>WPF/Silverlight</category>
      <title>MVVM and the Infragistics DockManager Control - Part Deux</title>
      <description>&lt;div&gt;When I last posted about using &lt;a href="http://huntjason.spaces.live.com/blog/cns!9D2E96F2AA6AE85F!839.entry" target="_blank"&gt;MVVM and the Infragistics DockManager Control&lt;/a&gt;, I was talking about dynamically adding &lt;a href="http://help.infragistics.com/Help/NetAdvantage/WPF/2009.1/CLR3.5/html/Infragistics3.Wpf.DockManager.v9.1~Infragistics.Windows.DockManager.ContentPane.html" target="_blank"&gt;ContentPane&lt;/a&gt; controls to the &lt;a href="http://help.infragistics.com/Help/NetAdvantage/WPF/2009.1/CLR3.5/html/Infragistics3.Wpf.DockManager.v9.1~Infragistics.Windows.DockManager.DocumentContentHost.html" target="_blank"&gt;DocumentContentHost&lt;/a&gt;.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;In a typical application, some content is used for navigation. In the case of Visual Studio, this can be represented by the Solution Explorer or Class View, enabling a person to jet off to the spot they are looking for. With this Infragistics &lt;a href="http://help.infragistics.com/Help/NetAdvantage/WPF/2009.1/CLR3.5/html/Infragistics3.Wpf.DockManager.v9.1~Infragistics.Windows.DockManager.XamDockManager.html" target="_blank"&gt;XamDockManager&lt;/a&gt; control, these types of panes exist within the DockManager.Panes collection, but not within the &lt;a href="http://help.infragistics.com/Help/NetAdvantage/WPF/2009.1/CLR3.5/html/Infragistics3.Wpf.DockManager.v9.1~Infragistics.Windows.DockManager.DocumentContentHost.html" target="_blank"&gt;&lt;u&gt;&lt;font color="#800080"&gt;DocumentContentHost&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;. The one concern with navigation panes is that they are typically content-heavy with respect to either processing power or resource usage. To combat this, you'll likely want not to destroy these panels each time you close them but, rather, simply hide them; to be made visible again at a later time. &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Setting the CloseAction property of the &lt;a href="http://help.infragistics.com/Help/NetAdvantage/WPF/2009.1/CLR3.5/html/Infragistics3.Wpf.DockManager.v9.1~Infragistics.Windows.DockManager.ContentPane.html" target="_blank"&gt;&lt;u&gt;&lt;font color="#800080"&gt;ContentPane&lt;/font&gt;&lt;/u&gt;&lt;/a&gt; to &amp;quot;HidePane&amp;quot; (Hide Pain?) partially helps you with this. The problem is that, using MVVM, there's no way to change the visibility of the pane again to make it visible again. There is, however, a work-around. You can bind the visibility of the &lt;a href="http://help.infragistics.com/Help/NetAdvantage/WPF/2009.1/CLR3.5/html/Infragistics3.Wpf.DockManager.v9.1~Infragistics.Windows.DockManager.ContentPane.html" target="_blank"&gt;&lt;u&gt;&lt;font color="#800080"&gt;ContentPane&lt;/font&gt;&lt;/u&gt;&lt;/a&gt; to a boolean property of your ViewModel, and raise the &lt;a href="http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.aspx" target="_blank"&gt;INotifyPropertyChanged&lt;/a&gt; event every time you set the value, rather than trying to (more typically) not raise the value unless the property's value has changed.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;In the attached sample, I am combining some features of &lt;a href="http://prism.codeplex.com/" target="_blank"&gt;PRISM&lt;/a&gt; (&lt;a href="http://development-guides.silverbaylabs.org/Video/Prism-Commands" target="_blank"&gt;DelegateCommands&lt;/a&gt;) with this to simplify the coding that is occuring. Here is some pseudo-code representing the relevant bits:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;In MainWindowViewModel:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;font size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;div&gt;public &lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt;MainWindowViewModel() {&lt;/font&gt;&lt;/font&gt;      
&lt;div&gt;     ShowNavigation = &lt;/div&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;&lt;font color="#2b91af" size="2"&gt;DelegateCommand&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;object&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&amp;gt;(x =&amp;gt; NavigationVisible = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;true&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;);&lt;/font&gt; 
&lt;div&gt;}&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;font size="2"&gt;
&lt;div&gt;&lt;/div&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;public&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;&lt;font color="#2b91af" size="2"&gt;DelegateCommand&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;object&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&amp;gt; ShowNavigation { &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;get&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;set&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;; } 
&lt;div&gt;&lt;/div&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;public&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;bool&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; NavigationVisible { 
&lt;div&gt;&lt;/div&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;     get&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; { &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;return&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; navigationVisible; } 
&lt;div&gt;&lt;/div&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;     set&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; { navigationVisible = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;value&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;; OnPropertyChanged(&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&lt;font color="#a31515" size="2"&gt;&amp;quot;NavigationVisible&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;); } 
&lt;div&gt;}&lt;/div&gt;&lt;/font&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;In Window1:&lt;/div&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;div&gt;&amp;lt;&lt;/div&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&lt;font color="#a31515" size="2"&gt;MenuItem&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;&lt;font color="#ff0000" size="2"&gt; Header&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;=&amp;quot;_Control Panel&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;&lt;font color="#ff0000" size="2"&gt; Command&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;=&amp;quot;{&lt;/font&gt;&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&lt;font color="#a31515" size="2"&gt;Binding&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;&lt;font color="#ff0000" size="2"&gt; ShowNavigation&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;}&amp;quot;/&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt; 
&lt;div&gt;&amp;lt;&lt;/div&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&lt;font color="#a31515" size="2"&gt;igDock&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;:&lt;/font&gt;&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&lt;font color="#a31515" size="2"&gt;ContentPane&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;&lt;font color="#ff0000" size="2"&gt; CloseAction&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;=&amp;quot;HidePane&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;&lt;font color="#ff0000" size="2"&gt; Visibility&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;=&amp;quot;{&lt;/font&gt;&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&lt;font color="#a31515" size="2"&gt;Binding&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;&lt;font color="#ff0000" size="2"&gt; NavigationVisible&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;&lt;font color="#ff0000" size="2"&gt; Mode&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;=TwoWay,&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;&lt;font color="#ff0000" size="2"&gt; Converter&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;={&lt;/font&gt;&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&lt;font color="#a31515" size="2"&gt;StaticResource&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;&lt;font color="#ff0000" size="2"&gt; BoolToVisibilityConverter&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;}}&amp;quot;&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#008000" size="2"&gt; 
&lt;div&gt;&amp;lt;!-- Content Here --&amp;gt;&lt;/div&gt;&lt;/font&gt;&lt;/font&gt;
&lt;div&gt;&amp;lt;/&lt;/div&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&lt;font color="#a31515" size="2"&gt;igDock&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;:&lt;/font&gt;&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&lt;font color="#a31515" size="2"&gt;ContentPane&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt; 
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;You can find the complete sample here:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://cid-9d2e96f2aa6ae85f.skydrive.live.com/self.aspx/Public/MVVMDockManager.zip" target="_blank"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;MVVMDockManager Source Code&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Special thanks to Sam of Infragistics for helping me figure out that not declaring Mode=TwoWay makes for a lot of confusion.&lt;/div&gt;
&lt;div&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;p&gt;&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font face="Arial"&gt;&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;</description>
      <pubDate>Tue, 02 Feb 2010 18:20:27 Z</pubDate>
      <link>http://huntjason.spaces.live.com/Blog/cns!9D2E96F2AA6AE85F!845.entry</link>
      <comments>http://huntjason.spaces.live.com/Blog/cns!9D2E96F2AA6AE85F!845.entry#comment</comments>
      <comments>0</comments>
      <type>blogentry</type>
      <typelabel>Blog Entry</typelabel>
      <commentRss>http://cid-9d2e96f2aa6ae85f.users.api.live.net/Users(-7120587991840790433)/Blogs('9D2E96F2AA6AE85F!102')/Entries('9D2E96F2AA6AE85F!845')/Comments?$format=application%2frss%2bxml</commentRss>
      <modified>2010-02-02T18:32:16.8530000Z</modified>
    </item>
    <item>
      <title>Where Did the Time Go?</title>
      <link>http://www.opgenorth.net/2010/01/28/where-did-the-time-go/</link>
      <comments>http://www.opgenorth.net/2010/01/28/where-did-the-time-go/#comments</comments>
      <pubDate>Fri, 29 Jan 2010 05:28:58 +0000</pubDate>
      <creator>tom</creator>
      <category>Miscellaneous, .NET, Android, Site News</category>
      <guid>http://www.opgenorth.net/2010/01/28/where-did-the-time-go/</guid>
      <description>Yeah, I’ve been kind of quiet as of late.&amp;#160; So quiet, I suspect that some people might be wondering if something happened.&amp;#160; I was a bit surprised to see that the last time I had blogged was after TechDays in Calgary.&amp;#160; Well, nothing significant has happened &amp;#8211; just a bit of laziness augmented by a [...]</description>
      <encoded>&lt;p&gt;&lt;a href="http://www.opgenorth.net/wp-content/uploads/2010/01/tumbleweed1.jpg"&gt;&lt;img title="tumbleweed" style="border-right: 0px; border-top: 0px; display: inline; margin-left: 0px; border-left: 0px; margin-right: 0px; border-bottom: 0px" height="75" alt="tumbleweed" src="http://www.opgenorth.net/wp-content/uploads/2010/01/tumbleweed_thumb1.jpg" width="90" align="left" border="0" /&gt;&lt;/a&gt;Yeah, I’ve been kind of quiet as of late.&amp;#160; So quiet, I suspect that some people might be wondering if something happened.&amp;#160; I was a bit surprised to see that the last time I had blogged was after TechDays in Calgary.&amp;#160; Well, nothing significant has happened &amp;#8211; just a bit of laziness augmented by a touch of tech-burnout compounded by the odd bit of single malt scotch.&lt;/p&gt;
&lt;p&gt;So, now that one month is almost up on 2010, I figured that it was time to start blogging about something again.&amp;#160; The first trick to this, of course, was to figure out what I wanted to do in 2010.&amp;#160; It does seem like there will be a lot of interesting things, technically speaking, coming up this year.&lt;/p&gt;
&lt;p&gt;A couple of new things I want to look at over the remaining 11 months:&lt;/p&gt;
&lt;p&gt;Mobile development, particularly with a focus on Android&lt;a href="http://www.opgenorth.net/wp-content/uploads/2010/01/androidrobotlogo1.jpg"&gt;&lt;img title="android-robot-logo1" style="border-right: 0px; border-top: 0px; display: inline; margin-left: 0px; border-left: 0px; margin-right: 0px; border-bottom: 0px" height="24" alt="android-robot-logo1" src="http://www.opgenorth.net/wp-content/uploads/2010/01/androidrobotlogo1_thumb.jpg" width="22" border="0" /&gt;&lt;/a&gt;.&amp;#160; For the latter half of 2009 I have been dabbling in Android.&amp;#160; I believe that it’s time to go out on a bender, and in a drunken stupor get some embarrassing tattoo and join the Android Army.&amp;#160; So far, I’m at two out of three.&amp;#160; Not bad, huh?&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.opgenorth.net/wp-content/uploads/2010/01/AndroidArmy.jpg"&gt;&lt;img title="AndroidArmy" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="117" alt="AndroidArmy" src="http://www.opgenorth.net/wp-content/uploads/2010/01/AndroidArmy_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;Ruby is another technology I’d like to explore – particularly Rails.&amp;#160; I can help but think that the opinionated view that Rails development has taken is the way to go for the bulk of web development.&amp;#160; A lot of websites are basically just forms over data, and Rails seems to address that concern rather well.&amp;#160; To bad nobody around here in Edmonton does much Rails development.&lt;/p&gt;
&lt;p&gt;.NET 4.0 and ASP.NET MVC2.&amp;#160; I know there is a lot of debate between Web Forms and ASP.NET MVC.&amp;#160; Personally, I think MVC is the better way.&amp;#160; Probably best to keep abreast of what is going on in the ASP.NET MVC world.&amp;#160; And, of course, the DLR in .NET will come to maturity soon.&amp;#160; By maturity I mean widespread acceptance.&amp;#160; If this happens, then maybe developers won’t get so hung up on languages:&amp;#160; i.e. “I’m a C# guy so VB.NET sucks”.&lt;/p&gt;
&lt;p&gt;And finally, a guy needs hobbies.&amp;#160; Now granted, my past hobbies of alcohol and &lt;a href="http://www.opgenorth.net/images/tom_AR.jpg"&gt;guns&lt;/a&gt; (no, not together at the same time) have served me well for the past 20 years or so. However, they are hard hobbies to share with my sons at this point in time.&amp;#160; So, at the start of winter I expanded the geek factor of my sons (and myself) by getting back into &lt;a href="http://www.games-workshop.com"&gt;Warhammer&lt;/a&gt;.&amp;#160; Now the last time I played was about 20 years ago, with the 3rd edition rules.&amp;#160; In fact, I still have some of the books in my basement from back then.&amp;#160; Anyway, picked up &lt;a href="http://www.games-workshop.com/gws/content/article.jsp?aId=700012a&amp;amp;setLocale=en_CA&amp;amp;amp;_requestid=1241948"&gt;The Battle for Skull Pass&lt;/a&gt; boxed set.&amp;#160; My son rather likes the &lt;a href="http://www.games-workshop.com/gws/catalog/landingArmy.jsp?catId=cat210008&amp;amp;rootCatGameStyle="&gt;Dwarfs&lt;/a&gt;.&amp;#160; I suspect it’s because he’s similar in stature/height to the stunties.&amp;#160; Myself, while I find the &lt;a href="http://www.games-workshop.com/gws/catalog/landingArmy.jsp?catId=cat50030&amp;amp;rootCatGameStyle="&gt;Greenskins&lt;/a&gt; amusing, I suspect I might have to move on and get serious with &lt;a href="http://www.games-workshop.com/gws/catalog/landingArmy.jsp?catId=cat40032&amp;amp;rootCatGameStyle="&gt;Dark Elves&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Anyway, enough for tonight.&lt;/p&gt;</encoded>
      <commentRss>http://www.opgenorth.net/2010/01/28/where-did-the-time-go/feed/</commentRss>
      <comments>0</comments>
    </item>
    <item>
      <title>The IPad is to hardcore computer geeks what the Wii was to hardcore gamers, prelude</title>
      <description>&lt;p&gt;I put a certain level of faith in the audience for this blog that if you're reading this message you are a person of discriminating taste and the highest intelligence, so I'm certain you can figure out where I'm headed with this one, but sometime this weekend/beginning of next week you'll see why!&lt;/p&gt;</description>
      <link>http://graysmatter.codivation.com/post/The-IPad-is-to-hardcore-computer-geeks-what-the-Wii-was-to-hardcore-gamers-prelude.aspx</link>
      <author>Justice~!</author>
      <comments>http://graysmatter.codivation.com/post/The-IPad-is-to-hardcore-computer-geeks-what-the-Wii-was-to-hardcore-gamers-prelude.aspx#comment</comments>
      <guid>http://graysmatter.codivation.com/post.aspx?id=fd4af433-c08d-41de-9f39-73e7a6accb81</guid>
      <pubDate>Thu, 28 Jan 2010 09:12:00 -0800</pubDate>
      <category>Mac, Personal</category>
      <publisher>Justice~!</publisher>
      <server>http://graysmatter.codivation.com/pingback.axd</server>
      <target>http://graysmatter.codivation.com/post.aspx?id=fd4af433-c08d-41de-9f39-73e7a6accb81</target>
      <comments>1</comments>
      <ping>http://graysmatter.codivation.com/trackback.axd?id=fd4af433-c08d-41de-9f39-73e7a6accb81</ping>
      <comment>http://graysmatter.codivation.com/post/The-IPad-is-to-hardcore-computer-geeks-what-the-Wii-was-to-hardcore-gamers-prelude.aspx#comment</comment>
      <commentRss>http://graysmatter.codivation.com/syndication.axd?post=fd4af433-c08d-41de-9f39-73e7a6accb81</commentRss>
    </item>
    <item>
      <title>Tales from the Trenches, Episode 5: A new development metaphor</title>
      <description>&lt;p style="text-align: center;"&gt;&lt;img title="Refactoring: The Enema of the Software Development Lifecycle?" src="http://graysmatter.codivation.com/image.axd?picture=2010%2f1%2frefactoring_EnemaOfSoftwareDevelopment.jpg" alt="Refactoring:  The Enema of the Software Development Lifecycle?" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #666666;"&gt;(from a discussion with a developer that will go unnamed*)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #666666;"&gt;3:31 PM&lt;/span&gt;&lt;span style="color: #666666;"&gt; Justice Gray&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color: green;"&gt;So, Latino Heat and I would like to know why you look like you are receiving an enema every time you're on the phone&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color: green;"&gt;Not  that I know what receiving one looks like, I'd just like to add&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #666666;"&gt;3:32 PM&lt;/span&gt;&lt;span style="color: #666666;"&gt; Latino Heat&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: black;"&gt;I have seen in the faces of others though&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #666666;"&gt;3:32 PM&lt;/span&gt;&lt;span style="color: #666666;"&gt; Justice Gray&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color: green;"&gt;You  have lived a rich life, Latino Heat&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #666666;"&gt;3:32 PM&lt;/span&gt;&lt;span style="color: #666666;"&gt; Latino Heat&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: black;"&gt;it starts with surprise, moves on to pain&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: black;"&gt;and ends with disbelief and enjoyment&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #666666;"&gt;3:32 PM &lt;/span&gt;&lt;span style="color: #666666;"&gt;Justice Gray&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color: green;"&gt;Come to think of it, you  just described my refactoring process&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;</description>
      <link>http://graysmatter.codivation.com/post/Tales-from-the-Trenches-Episode-5-A-new-development-metaphor.aspx</link>
      <author>Justice~!</author>
      <comments>http://graysmatter.codivation.com/post/Tales-from-the-Trenches-Episode-5-A-new-development-metaphor.aspx#comment</comments>
      <guid>http://graysmatter.codivation.com/post.aspx?id=2524aefb-8d3d-4d7b-bbaa-f1f254ecb3d7</guid>
      <pubDate>Wed, 27 Jan 2010 15:36:00 -0800</pubDate>
      <category>Technical</category>
      <publisher>Justice~!</publisher>
      <server>http://graysmatter.codivation.com/pingback.axd</server>
      <target>http://graysmatter.codivation.com/post.aspx?id=2524aefb-8d3d-4d7b-bbaa-f1f254ecb3d7</target>
      <comments>0</comments>
      <ping>http://graysmatter.codivation.com/trackback.axd?id=2524aefb-8d3d-4d7b-bbaa-f1f254ecb3d7</ping>
      <comment>http://graysmatter.codivation.com/post/Tales-from-the-Trenches-Episode-5-A-new-development-metaphor.aspx#comment</comment>
      <commentRss>http://graysmatter.codivation.com/syndication.axd?post=2524aefb-8d3d-4d7b-bbaa-f1f254ecb3d7</commentRss>
    </item>
    <item>
      <title>Knowing Me In The Biblical Sense #03: Are you Genesis 2:16 or 2:17?</title>
      <description>&lt;p style="text-align: center;"&gt;&lt;img title="Jesus Christ, sin manager - a common misconception of Christianity" src="http://graysmatter.codivation.com/image.axd?picture=2010%2f1%2fthe_sin_ledger.png" alt="Jesus Christ, sin manager - a common misconception of Christianity" /&gt;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;span style="font-size: xx-small;"&gt;&lt;strong&gt;A common misconception of Christianity&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;There are a *ton* of things we need to talk about in the next little while and trust me we will &lt;strong&gt;get to them&lt;/strong&gt;, including my response to the &lt;a id="pxpw" title="stones and steaks brouhaha" href="../../post/Steaks-and-stones-a-parable.aspx"&gt;steaks and stones brouhaha&lt;/a&gt;, the resumption of one post series and then the beginning of a series that is unlike anything you have ever seen before on a blog that talks about whatever this blog talks about.&amp;nbsp; Seriously, I have been following blogs for the last 75 years and I haven't seen this done on *any* blogs *ever*.&amp;nbsp; By "any" I mean:&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;my blog&lt;/li&gt;
&lt;li&gt;&lt;a id="z1xs" title="Phil Haacks blog" href="http://haacked.com/"&gt;Phil Haack's&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;DONE&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;so you know I've investigated this thoroughly.&amp;nbsp; Trust me, it will be amazing.&amp;nbsp; Even if by some chance it has been done before, you'll know *why* this is the different the moment it starts.&amp;nbsp; The last time &lt;a id="q86n" title="I made a claim like this" href="../../post/That-brief-interlude-of-silence-and-a-hint-at-a-MASSIVE-ANNOUNCEMENT.aspx"&gt;I made a claim like this&lt;/a&gt;, I announced the track &lt;a id="y2:l" title="that would end up steamrolling over everything else at TechDays 2009" href="../../post/Announcing-a-BRAND-NEW-track-for-Microsoft-TechDays-and-a-brand-new-track-chair-%28guess-who%29.aspx"&gt;that would end up steamrolling over everything else at TechDays 2009&lt;/a&gt; and heck, we'll even talk about &lt;strong&gt;that&lt;/strong&gt; next week simply because I am nothing if not a &lt;strong&gt;wildebeest unchained&lt;/strong&gt;.&amp;nbsp; Yes, next week all your dreams will come true and by "next week" I mean "probably in the next 30 days or whenever I feel like getting to it" but &lt;strong&gt;who are you to judge me.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;So as we've covered in the past installments of this series:&lt;br /&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a id="i55h" title="Justice is a Christian with a capital C" href="../../post/Knowing-Me-In-the-Biblical-Sense-Introduction-%28To-End-All-Introductions%29.aspx"&gt;Justice is a Christian with a capital C&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a id="grso" title="Justice explained what Christianity is by explaining what Christianity isn't" href="../../post/Knowing-Me-In-The-Biblical-Sense-02-The-One-Way.aspx"&gt;Justice explained what Christianity is by explaining what Christianity isn't&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt; Yes, I know that originally you were promised the next installment of this series would focus on an explanation of "Cat &amp;amp; Dog Theology" but hey, you were also promised the next installment of this series would take place &lt;strong&gt;six months ago&lt;/strong&gt;.&amp;nbsp; We'll get to cats and dogs&amp;nbsp; next time, because my pastor had an aside today that really spoke to me and I felt compelled to share it with whomever actually kept reading after they realized that this was another "Justice and the Bible" post.&amp;nbsp; In the end, it will all tie into "Cat and Dog Theology" anyway and I'm sure at that time half of you will be compelled to ask why a man of my genius, vision and excessive humility chose to go into software consulting rather than becoming a minister at some megachurch somewhere.&amp;nbsp; Anyway, what better place to get started talking about the Bible than where it all began: in the Garden of Eden and the book of Genesis.&amp;nbsp; Yes, it's an essay.&amp;nbsp; &lt;strong&gt;You'll live.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;For the few of you who are not aware, here's the Coles Notes of the book of Genesis:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;God creates the world&lt;/li&gt;
&lt;li&gt;God creates Adam and Eve&lt;/li&gt;
&lt;li&gt;God gives Adam and Eve some simple instructions&lt;/li&gt;
&lt;li&gt;Adam and Eve botch that sucker &lt;strong&gt;hardcore&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;God kicks them out of the garden, but God rocks and gives them some guidance&lt;/li&gt;
&lt;li&gt;several more generations of God being awesome &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;br /&gt;and then we're in Exodus.&amp;nbsp; &lt;strong&gt;And now you know the rest of the story.&amp;nbsp; &lt;/strong&gt;&lt;a id="k878" title="John Piper" href="http://www.desiringgod.org/Blog/"&gt;John Piper&lt;/a&gt; and Steve Harvey have nothing on me.&amp;nbsp; Seriously, this is as much background as you actually need to know for what I'm going to talk about today, which is:&lt;br /&gt;&lt;br /&gt;3.&amp;nbsp; God gives Adam and Eve some simple instructions&lt;br /&gt;&lt;br /&gt;Here are said instructions:&lt;br /&gt;&lt;br /&gt;Genesis 2:16 - "&lt;em&gt;And the LORD God commanded the man, "You are free to eat from any tree in the garden;&lt;/em&gt;"&lt;br /&gt;Genesis 2:17 - "&lt;em&gt;but you must not eat from the tree of the knowledge of good and evil, for when you eat of it you will surely die.&lt;/em&gt;" &lt;br /&gt;&lt;br /&gt;Now, I don't want to understate Genesis 2:17 - I normally don't post spoilers on this blog &lt;strong&gt;but Adam and Eve eat from the bad tree.&lt;/strong&gt;&amp;nbsp; As a result of this action, you are reading this blog right now rather than lounging around somewhere in paradise eating pineapple or *gasp* &lt;strong&gt;something even better than pineapple&lt;/strong&gt;.&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;img title="The Kingdom of Heaven - yes, even better than pineapple" src="http://graysmatter.codivation.com/image.axd?picture=2010%2f1%2fpineapple.jpg" alt="The Kingdom of Heaven - yes, even better than pineapple" /&gt;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;span style="font-size: xx-small;"&gt;&lt;strong&gt;"No way!!"&amp;nbsp; SERIOUSLY.&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;That's right, the original sin is what brought us to this point.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Here's the neat thing about Genesis 2:16 and 2:17.&amp;nbsp; Both of them are exhortations, one of them focusing on what *to* do and the other on what *not* to do.&amp;nbsp; Now, Genesis 2:16 at its root is &lt;strong&gt;awesome.&amp;nbsp; &lt;/strong&gt;Imagine God going to you and saying, "Listen - I have given you these gifts, take them and enjoy them to my glory."&amp;nbsp; In fact, this is echoed in other instructions through the Bible, such as &lt;br /&gt;&lt;br /&gt;Ephesians 2:10 - &lt;em&gt;"For we are his workmanship, created in Christ Jesus for good works, which God prepared beforehand, that we should walk in them."&lt;br /&gt; &lt;/em&gt;&lt;br /&gt;and one of my three favorite Bible verses of *all time* from my favorite Bible book of all time - Ecclesiastes 3:12-13:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;"I know that there is nothing better for men than to be happy and do good while they live. That everyone may eat and drink, and find satisfaction in all his toil&amp;mdash;&lt;strong&gt;this is the gift of God.&lt;/strong&gt;"&lt;br /&gt; &lt;/em&gt;&lt;br /&gt; Lots of focus in Christianity is given to Adam and Eve's failure to listen to God when he said "Don't eat from the tree of life".&amp;nbsp; Much &lt;strong&gt;less&lt;/strong&gt; focus is given on their failure to listen to God when he said, "You are free to eat from any tree in the garden."&amp;nbsp; This is where many of us go wrong as Christians, where we focus so much on the avoidance of sin that we try to live a life that is &lt;strong&gt;exclusively &lt;/strong&gt;focused on avoidance of sin.&amp;nbsp; Now, before anyone says, "Awesome, Justice just said it's okay for me to sleep with 3 hookers tonight" &lt;strong&gt;sin is bad news. &amp;nbsp;&lt;/strong&gt; We do need to flee from it because we are called to examples of Christ in the world.&amp;nbsp; What I am talking about is the kind of Christian whose entire "walk" with Jesus consists of:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;did I sin today?&lt;/li&gt;
&lt;li&gt;how often did I sin today?&lt;/li&gt;
&lt;li&gt;how "badly" did I sin today?&lt;/li&gt;
&lt;li&gt;how can I avoid sinning tomorrow?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;What kind of a &lt;strong&gt;life&lt;/strong&gt; is that?&amp;nbsp; I put "walk" in quotes because - let's get real - you're not "walking" with Christ if the only place in your life for Christianity is for a sin management ledger with "sins avoided" on one side and "sins committed" on the other.&lt;br /&gt;&lt;br /&gt;It's by living this avoidant life that we fall into the *other* trap Adam and Eve fell into - ignoring the blessings and the calling of the Lord in our lives.&amp;nbsp; What if we stopped avoiding the call of the Lord in our hearts and our minds, and instead of asking ourselves "sin management" questions, we asked ourselves questions like these every day:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How can I glorify God today in my actions?&lt;/li&gt;
&lt;li&gt;How thankful am I to the Lord for the gifts He has given me?&lt;/li&gt;
&lt;li&gt;How much can I do for the Lord in His name with these gifts?&lt;/li&gt;
&lt;li&gt;How can I ensure my life is a lamppost to reflect the light of Christ?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;Now, what kind of life is &lt;strong&gt;that&lt;/strong&gt;?&lt;br /&gt;&lt;br /&gt;Next time: Cat and Dog theology, what it is and how it changed my direction as a believer &lt;strong&gt;forever!&lt;/strong&gt;&amp;nbsp; &lt;br /&gt; &lt;br /&gt; Yours in Christ,&lt;br /&gt; Justice&lt;/p&gt;</description>
      <link>http://graysmatter.codivation.com/post/Knowing-Me-In-The-Biblical-Sense-03-Are-you-Genesis-216-or-217.aspx</link>
      <author>Justice~!</author>
      <comments>http://graysmatter.codivation.com/post/Knowing-Me-In-The-Biblical-Sense-03-Are-you-Genesis-216-or-217.aspx#comment</comments>
      <guid>http://graysmatter.codivation.com/post.aspx?id=fdb3b703-e571-4a6d-a920-609ba65a63e8</guid>
      <pubDate>Sun, 24 Jan 2010 22:13:00 -0800</pubDate>
      <category>KnowingMeInTheBiblicalSense, Personal</category>
      <publisher>Justice~!</publisher>
      <server>http://graysmatter.codivation.com/pingback.axd</server>
      <target>http://graysmatter.codivation.com/post.aspx?id=fdb3b703-e571-4a6d-a920-609ba65a63e8</target>
      <comments>0</comments>
      <ping>http://graysmatter.codivation.com/trackback.axd?id=fdb3b703-e571-4a6d-a920-609ba65a63e8</ping>
      <comment>http://graysmatter.codivation.com/post/Knowing-Me-In-The-Biblical-Sense-03-Are-you-Genesis-216-or-217.aspx#comment</comment>
      <commentRss>http://graysmatter.codivation.com/syndication.axd?post=fdb3b703-e571-4a6d-a920-609ba65a63e8</commentRss>
    </item>
    <item>
      <title>Steaks and stones: a parable</title>
      <description>&lt;p style="text-align: center;"&gt;&lt;img src="http://graysmatter.codivation.com/image.axd?picture=2010%2f1%2fsteakandstones.jpg" alt="Microsoft MVC 2 - Steaks and stones and the failure of the required attribute" /&gt;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;strong&gt;&lt;span style="font-size: xx-small;"&gt;"I can't see the difference, can you see the difference?"&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I say to my wife and 4 of her friends, "I will grill steaks for tonight's dinner.&amp;nbsp; They will be on the table at 6 PM".&lt;br /&gt; &lt;br /&gt; At 6 PM, we all sit down to the table and I place a rock on each plate, said rock still being slightly damp as I scooped them out from the harbor 20 mins before.&lt;br /&gt; &lt;br /&gt; My wife complains, "I thought you were grilling steaks?"&lt;br /&gt; One friend says, "This isn't like any steak I've ever seen"&lt;br /&gt; Another one says, "Not only is this not steak, but it can't be grilled.&amp;nbsp; It is wet!!"&lt;br /&gt; &lt;br /&gt; I reply to them, "Ha!!&amp;nbsp; Grilling steaks doesn't mean what you think it does!!"&lt;br /&gt; &lt;br /&gt; So, in conclusion is this situation:&lt;br /&gt; a) the fault of my friends, who should have asked me what I meant by "grilling steak"&lt;br /&gt; or&lt;br /&gt; b) my fault for &lt;a href="http://bradwilson.typepad.com/blog/2010/01/required-doesnt-mean-what-you-think-it-does.html"&gt;communicating something completely different from the commonly held expectation of every human being on the planet&lt;/a&gt;?&lt;/p&gt;</description>
      <link>http://graysmatter.codivation.com/post/Steaks-and-stones-a-parable.aspx</link>
      <author>Justice~!</author>
      <comments>http://graysmatter.codivation.com/post/Steaks-and-stones-a-parable.aspx#comment</comments>
      <guid>http://graysmatter.codivation.com/post.aspx?id=13847b27-d8ec-4064-9af6-5b4366ab952c</guid>
      <pubDate>Thu, 21 Jan 2010 08:47:00 -0800</pubDate>
      <category>Technical</category>
      <publisher>Justice~!</publisher>
      <server>http://graysmatter.codivation.com/pingback.axd</server>
      <target>http://graysmatter.codivation.com/post.aspx?id=13847b27-d8ec-4064-9af6-5b4366ab952c</target>
      <comments>10</comments>
      <ping>http://graysmatter.codivation.com/trackback.axd?id=13847b27-d8ec-4064-9af6-5b4366ab952c</ping>
      <comment>http://graysmatter.codivation.com/post/Steaks-and-stones-a-parable.aspx#comment</comment>
      <commentRss>http://graysmatter.codivation.com/syndication.axd?post=13847b27-d8ec-4064-9af6-5b4366ab952c</commentRss>
    </item>
    <item>
      <title>Trust. It is a Two Way Street</title>
      <category>Security</category>
      <link>http://haveyougotwoods.com/archive/2010/01/20/trust.-it-is-a-two-way-street.aspx</link>
      <description>One of the most common flaws I am seeing in applications is the lack of mutual authentication. Most systems authenticate that the user connecting to their system is a valid user. What is lacking is that the client verifies that it is connecting to who it thinks it is connecting to. &lt;br /&gt;
&lt;br /&gt;
One of the big examples of this is WiFi. If I have a wireless router named "myrouter" and set my laptop to use that router things work great. If I go down the street and someone else has a router named "myrouter", my laptop automatically tries to connect to it. This is because the WiFi implementation does not verify that I am connecting to who I think I am connecting to. &lt;br /&gt;
&lt;br /&gt;
This happens a lot on the service level of applications. The client app resolves a DNS name like www.myservice.com to it's IP address and then sends over some form of authentication. Now what happens if I somehow manage to change the DNS record for www.myservice.com to point to my IP address which contains a service with the same name and same methods exposed to it? The client will connect and divulge its authentication data to this fake service. I can now use the authentication data that you gave me authenticate against the real system and do whatever nefarious things I desire. &lt;br /&gt;
&lt;br /&gt;
The solution for this is for clients to verify that the service it is talking to is actually the service you want to be talking to. This is best accomplished by using some form of shared secret. This takes on many forms but a few methods:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
    &lt;li&gt;Ask the server to answer a shifting question. i.e. ask the server to hash a certain string. If the hash the server returns matches what you expect then the server might be the one you want (or an attacker managed to replicate the algorithm)&lt;/li&gt;
    &lt;li&gt;Use windows authentication. For WCF the mutual authentication is implied in this case.&lt;/li&gt;
    &lt;li&gt;Use certificate authentication. This is the best way to do this task but can be a pain to implement.&lt;br /&gt;
    &lt;/li&gt;
&lt;/ol&gt;&lt;img src="http://haveyougotwoods.com/aggbug/304.aspx" width="1" height="1" /&gt;</description>
      <creator>Dave Woods</creator>
      <guid>http://haveyougotwoods.com/archive/2010/01/20/trust.-it-is-a-two-way-street.aspx</guid>
      <pubDate>Wed, 20 Jan 2010 18:16:41 GMT</pubDate>
      <comment>http://haveyougotwoods.com/comments/304.aspx</comment>
      <comments>http://haveyougotwoods.com/archive/2010/01/20/trust.-it-is-a-two-way-street.aspx#feedback</comments>
      <commentRss>http://haveyougotwoods.com/comments/commentRss/304.aspx</commentRss>
    </item>
    <item>
      <title>Team City Build Versioning</title>
      <category>General</category>
      <link>http://haveyougotwoods.com/archive/2010/01/19/team-city-build-versioning.aspx</link>
      <description>One of the great things about continuous integration is that we can increment our assemblies version number with each build. For our project we also apply a label to our source code repository every time we build a deployment package. This allows us to get the version of source code from the exact point in time that the msi was built.&lt;br /&gt;
&lt;br /&gt;
One of the issues we ran into was that we have three build configurations:&lt;br /&gt;
1. "CI" This gets run on every checkin of code&lt;br /&gt;
2. "Deploy - ALPHA" This is run manually to deploy to our alpha test environment&lt;br /&gt;
3. "Deploy - ALPHA &amp;amp; BETA" This is also run manually and this deploys the same version to both the alpha and beta test environments&lt;br /&gt;
&lt;br /&gt;
The issue we ran into is that each configuration has its own build number that is incrementing so if we ran "Deploy - ALPHA" 10 times we would have v 1.10.0.0 in ALPHA. If we then ran "Deploy - ALPHA &amp;amp; BETA" for the first time suddenly ALPHA now has v1.1.0.0! Obviously this is not very intuitive. In the end we added in the version number from our source code repository into our build numbers for both deploy configurations. Now we get build numbers like this: 1.46347373.0.0 &lt;br /&gt;
&lt;br /&gt;
The way we did this was by using the vcs variable in team city: 1.{build.vcs.number.TheNameOfVCSRoot}.0.{0}. The last digit is still an incrementing counter in case you re-run the build that something still increments even though the version in source control has not changed.&lt;br /&gt;&lt;img src="http://haveyougotwoods.com/aggbug/303.aspx" width="1" height="1" /&gt;</description>
      <creator>Dave Woods</creator>
      <guid>http://haveyougotwoods.com/archive/2010/01/19/team-city-build-versioning.aspx</guid>
      <pubDate>Tue, 19 Jan 2010 17:57:36 GMT</pubDate>
      <comment>http://haveyougotwoods.com/comments/303.aspx</comment>
      <comments>http://haveyougotwoods.com/archive/2010/01/19/team-city-build-versioning.aspx#feedback</comments>
      <commentRss>http://haveyougotwoods.com/comments/commentRss/303.aspx</commentRss>
    </item>
    <item>
      <title>One of the seminal moments in musical history, as recounted by my ITunes collection</title>
      <description>&lt;p&gt;Discussion between my wife and I:&lt;/p&gt;
&lt;p&gt;Hot wife: "Who sings this version?"&lt;/p&gt;
&lt;p&gt;Justice: "Honey, there's only *one* version of &lt;strong&gt;this&lt;/strong&gt; song."&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="text-align:center;"&gt;
&lt;object width="500" height="405"&gt;
&lt;param name="movie" value="http://www.youtube.com/v/nXlOWjobOZU&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0x234900&amp;amp;color2=0x4e9e00&amp;amp;border=1" /&gt;
&lt;param name="allowFullScreen" value="true" /&gt;
&lt;param name="allowscriptaccess" value="always" /&gt;&lt;embed type="application/x-shockwave-flash" width="500" height="405" src="http://www.youtube.com/v/nXlOWjobOZU&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0x234900&amp;amp;color2=0x4e9e00&amp;amp;border=1" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;
&lt;/object&gt;
&lt;p style="text-align: center;"&gt;&lt;span style="font-size: xx-small;"&gt;&lt;strong&gt; One of the best weightlifting songs since Mama Said Knock You Out&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;</description>
      <link>http://graysmatter.codivation.com/post/One-of-the-seminal-moments-in-musical-history-as-recounted-by-my-ITunes-collection.aspx</link>
      <author>Justice~!</author>
      <comments>http://graysmatter.codivation.com/post/One-of-the-seminal-moments-in-musical-history-as-recounted-by-my-ITunes-collection.aspx#comment</comments>
      <guid>http://graysmatter.codivation.com/post.aspx?id=adf9e5a9-76d0-4987-89e6-40963c1ba15e</guid>
      <pubDate>Mon, 18 Jan 2010 18:58:00 -0800</pubDate>
      <category>Personal</category>
      <publisher>Justice~!</publisher>
      <server>http://graysmatter.codivation.com/pingback.axd</server>
      <target>http://graysmatter.codivation.com/post.aspx?id=adf9e5a9-76d0-4987-89e6-40963c1ba15e</target>
      <comments>2</comments>
      <ping>http://graysmatter.codivation.com/trackback.axd?id=adf9e5a9-76d0-4987-89e6-40963c1ba15e</ping>
      <comment>http://graysmatter.codivation.com/post/One-of-the-seminal-moments-in-musical-history-as-recounted-by-my-ITunes-collection.aspx#comment</comment>
      <commentRss>http://graysmatter.codivation.com/syndication.axd?post=adf9e5a9-76d0-4987-89e6-40963c1ba15e</commentRss>
    </item>
    <item>
      <title>Remote MSI Execution</title>
      <category>General, Agile</category>
      <link>http://haveyougotwoods.com/archive/2010/01/18/remote-msi-execution.aspx</link>
      <description>One of the things we have started doing as part of our process is having a build script that creates our deployment package in an automated fashion. We then tied that into our build server so that from one click anyone could create the package. The issue is that we have several test environments and copying the setup.msi file to multiple servers and installing it is a time consuming pain. To streamline our deployment we created a vbscript (yes, it was painful) to remotely uninstall previous versions and then install the new version of the msi. Here is the script currently:&lt;br /&gt;
&lt;br /&gt;
strComputer = "mytestserver"&lt;br /&gt;
&lt;br /&gt;
Wscript.Echo "Getting WMI Object"&lt;br /&gt;
Set objWMIService = GetObject("winmgmts:" &amp;amp; "{impersonationLevel=impersonate}!\\" &amp;amp; strComputer &amp;amp; "\root\cimv2")&lt;br /&gt;
&lt;br /&gt;
Wscript.Echo "Finding Previous versions"&lt;br /&gt;
Set colSoftware = objWMIService.ExecQuery ("Select * from Win32_Product Where Name = 'My First Setup Project'")&lt;br /&gt;
For Each objSoftware in colSoftware&lt;br /&gt;
    Wscript.Echo "Uninstalling a previous version"&lt;br /&gt;
    objSoftware.Uninstall()&lt;br /&gt;
Next&lt;br /&gt;
&lt;br /&gt;
Wscript.Echo "Getting Software Object"&lt;br /&gt;
Set objSoftware = objWMIService.Get("Win32_Product")&lt;br /&gt;
&lt;br /&gt;
Wscript.Echo "Installing"&lt;br /&gt;
errReturn = objSoftware.Install("c:\builds\MyFirstSetupProject.msi", "TARGETENV=DEVL",True)&lt;br /&gt;
&lt;br /&gt;
Wscript.Echo "Install status: " &amp;amp; errReturn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In order for this to work the msi must be copied to the remote machine to work. I tried connecting to a central network share but it did not seem to work for me. The script needs a bit of work but now we can deploy to the environments we want updated in a couple of minutes instead of the 15-20 minutes it took us before.&lt;img src="http://haveyougotwoods.com/aggbug/302.aspx" width="1" height="1" /&gt;</description>
      <creator>Dave Woods</creator>
      <guid>http://haveyougotwoods.com/archive/2010/01/18/remote-msi-execution.aspx</guid>
      <pubDate>Mon, 18 Jan 2010 22:41:27 GMT</pubDate>
      <comment>http://haveyougotwoods.com/comments/302.aspx</comment>
      <comments>http://haveyougotwoods.com/archive/2010/01/18/remote-msi-execution.aspx#feedback</comments>
      <commentRss>http://haveyougotwoods.com/comments/commentRss/302.aspx</commentRss>
    </item>
    <item>
      <title>Return To Blogging</title>
      <category>General</category>
      <link>http://haveyougotwoods.com/archive/2010/01/17/return-to-blogging.aspx</link>
      <description>I am finally finding some time and desire to write again. Life has been busy with my both my company and my family expanding. It feels like things are starting to get back to normal again so I should be writing more frequently.&lt;br /&gt;
&lt;br /&gt;
Some of the things I have been working with that I hope to write about:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
    &lt;li&gt;nHibernate / fluent nHibernate / Linq to nHibernate&lt;/li&gt;
    &lt;li&gt;WPF&lt;/li&gt;
    &lt;li&gt;Click once&lt;/li&gt;
    &lt;li&gt;Silverlight&lt;/li&gt;
    &lt;li&gt;A fluent .NET build langauage called fluent-build&lt;/li&gt;
    &lt;li&gt;Being a lead on a project&lt;/li&gt;
    &lt;li&gt;Multithreading&lt;/li&gt;
    &lt;li&gt;Caching of large amounts of data&lt;/li&gt;
    &lt;li&gt;Threat modeling&lt;/li&gt;
    &lt;li&gt;Other security items&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://haveyougotwoods.com/aggbug/301.aspx" width="1" height="1" /&gt;</description>
      <creator>Dave Woods</creator>
      <guid>http://haveyougotwoods.com/archive/2010/01/17/return-to-blogging.aspx</guid>
      <pubDate>Sun, 17 Jan 2010 21:05:28 GMT</pubDate>
      <comment>http://haveyougotwoods.com/comments/301.aspx</comment>
      <comments>http://haveyougotwoods.com/archive/2010/01/17/return-to-blogging.aspx#feedback</comments>
      <commentRss>http://haveyougotwoods.com/comments/commentRss/301.aspx</commentRss>
    </item>
    <item>
      <title>Actually, I *like* getting paid tons of money, thanks</title>
      <description>&lt;p&gt;&lt;cite&gt;&lt;i&gt;in the programming profession it's relatively well-understood that, as long as they can get by OK, programmers don't care that much about the money -- it's the quality of experience that matters)&lt;/i&gt;&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;Oh &lt;a href="http://www.artima.com/weblogs/viewpost.jsp?thread=276790"&gt;Bruce Eckel, you crazy old hippie&lt;/a&gt;.  I hope your kids aren't trying to send you to the nursing home after reading this!&lt;/p&gt;
&lt;p&gt;(The rest of this essay, however, is excellent weekend reading, especially the part where he highlights why MS is getting &lt;strong&gt;destroyed&lt;/strong&gt; by Apple!!  Highly recommended for that alone!)&lt;/p&gt;</description>
      <link>http://graysmatter.codivation.com/post/Actually-I-like-getting-paid-tons-of-money-thanks.aspx</link>
      <author>Justice~!</author>
      <comments>http://graysmatter.codivation.com/post/Actually-I-like-getting-paid-tons-of-money-thanks.aspx#comment</comments>
      <guid>http://graysmatter.codivation.com/post.aspx?id=ec790db0-5fe3-4959-8bd5-307fe6512e33</guid>
      <pubDate>Fri, 15 Jan 2010 18:24:00 -0800</pubDate>
      <category>Technical</category>
      <publisher>Justice~!</publisher>
      <server>http://graysmatter.codivation.com/pingback.axd</server>
      <target>http://graysmatter.codivation.com/post.aspx?id=ec790db0-5fe3-4959-8bd5-307fe6512e33</target>
      <comments>0</comments>
      <ping>http://graysmatter.codivation.com/trackback.axd?id=ec790db0-5fe3-4959-8bd5-307fe6512e33</ping>
      <comment>http://graysmatter.codivation.com/post/Actually-I-like-getting-paid-tons-of-money-thanks.aspx#comment</comment>
      <commentRss>http://graysmatter.codivation.com/syndication.axd?post=ec790db0-5fe3-4959-8bd5-307fe6512e33</commentRss>
    </item>
    <item>
      <guid>9D2E96F2AA6AE85F!839</guid>
      <category>WPF/Silverlight</category>
      <title>MVVM and the Infragistics DockManager Control</title>
      <description>&lt;div&gt;&lt;a href="http://joshsmithonwpf.wordpress.com/" target="_blank"&gt;Josh Smith&lt;/a&gt; wrote a quintessential article on MVVM entitled, &lt;a href="http://msdn.microsoft.com/en-us/magazine/dd419663.aspx#id0090051" target="_blank"&gt;WPF Apps With The Model-View-ViewModel Design Pattern&lt;/a&gt;, for &lt;a href="http://msdn.microsoft.com/en-us/magazine/default.aspx" target="_blank"&gt;MSDN Magazine&lt;/a&gt; that was published in February 2009. In the article he shows a sample application that some some tabs and displays some content. Sounds pretty simple until you consider that the content of the tabs is dynamic and could be anything. The sample app demonstrates a little trick I thought was brilliant and made the entire article so eye-openning; using &lt;a href="http://www.wpftutorial.net/DataTemplates.html" target="_blank"&gt;DataTemplates&lt;/a&gt; to bind the possible dynamic sources of Views and ViewModels together, allowing the page controller (host view model?) to simply maintain a bound collection of viewmodels and have the XAML do the figuring of what view to display. This is a fantastic example of &lt;a href="http://en.wikipedia.org/wiki/Separation_of_concerns" target="_blank"&gt;Separation of Concerns&lt;/a&gt;.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Though I really loved the article, I wanted to leverage the UX functionality of the &lt;a href="http://www.infragistics.com/dotnet/netadvantage/wpf/xamdockmanager.aspx#Overview" target="_blank"&gt;Infragistics DockManager&lt;/a&gt; control to give the user more flexibility in how they want to view the data being presented (especially in a multi-monitor scenario). Using the &lt;a href="http://code.msdn.microsoft.com/mag200902MVVM/Release/ProjectReleases.aspx?ReleaseId=2026" target="_blank"&gt;source code&lt;/a&gt; from &lt;a href="http://joshsmithonwpf.wordpress.com/" target="_blank"&gt;Josh&lt;/a&gt;'s &lt;a href="http://msdn.microsoft.com/en-us/magazine/dd419663.aspx#id0090051" target="_blank"&gt;article&lt;/a&gt; as a base and swapping out the TabControl he was using with &lt;a href="http://www.infragistics.com/" target="_blank"&gt;Infragistics&lt;/a&gt;' &lt;a href="http://www.infragistics.com/dotnet/netadvantage/wpf/xamdockmanager.aspx#Overview" target="_blank"&gt;DockManager&lt;/a&gt; control failed as there isn't a way to natively bind the &lt;a href="http://www.infragistics.com/dotnet/netadvantage/wpf/xamdockmanager.aspx#Overview" target="_blank"&gt;DockManager&lt;/a&gt; to the collection of ViewModels hosted in the page controller (host view model?). The support from &lt;a href="http://forums.infragistics.com/user/Profile.aspx?UserID=8839" target="_blank"&gt;Francis&lt;/a&gt; and Sam from &lt;a href="http://www.infragistics.com/" target="_blank"&gt;Infragistics&lt;/a&gt; lead to soliciting help from &lt;a href="http://blogs.infragistics.com/blogs/andrew_smith/default.aspx" target="_blank"&gt;Andrew Smith&lt;/a&gt; who graciously wrote a blog post entitled &amp;quot;&lt;a href="http://blogs.infragistics.com/blogs/andrew_smith/archive/2010/01/12/itemssource-for-xamdockmanager-elements.aspx" target="_blank"&gt;ItemsSource for XamDockManager Elements&lt;/a&gt;&amp;quot; demonstrating how to accomplish the required binding. (Source code available &lt;a href="http://blogs.infragistics.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/andrew_5F00_smith/DockManagerBindingSample.zip" target="_blank"&gt;here&lt;/a&gt;)&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;All of this culminates in the successful marryiage of the dynamic nature demonstrated in the MVVM pattern demonstrated in &lt;a href="http://joshsmithonwpf.wordpress.com/" target="_blank"&gt;Josh&lt;/a&gt;'s &lt;a href="http://msdn.microsoft.com/en-us/magazine/dd419663.aspx#id0090051" target="_blank"&gt;article&lt;/a&gt; with the flexibility of the &lt;a href="http://www.infragistics.com/dotnet/netadvantage/wpf/xamdockmanager.aspx#Overview" target="_blank"&gt;Infragistics DockManager&lt;/a&gt; control. I have posted the sample source code &lt;a href="http://cid-9d2e96f2aa6ae85f.skydrive.live.com/self.aspx/Public/MVVMDockManager.zip" target="_blank"&gt;here&lt;/a&gt;.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Many thanks need to be extended by myself and on behalf of the users of the application I am working on for the efforts of &lt;a href="http://forums.infragistics.com/user/Profile.aspx?UserID=8839" target="_blank"&gt;Francis&lt;/a&gt;, Sam, and &lt;a href="http://blogs.infragistics.com/blogs/andrew_smith/default.aspx" target="_blank"&gt;Andrew&lt;/a&gt; from &lt;a href="http://www.infragistics.com/" target="_blank"&gt;Infragistics&lt;/a&gt; as well as the ground-breaking of &lt;a href="http://joshsmithonwpf.wordpress.com/" target="_blank"&gt;Josh&lt;/a&gt; for bringing this all together.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://cid-9d2e96f2aa6ae85f.skydrive.live.com/self.aspx/Public/MVVMDockManager.zip" target="_blank"&gt;MVVMDockManager Source Code&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;</description>
      <pubDate>Wed, 13 Jan 2010 15:56:53 Z</pubDate>
      <link>http://huntjason.spaces.live.com/Blog/cns!9D2E96F2AA6AE85F!839.entry</link>
      <comments>http://huntjason.spaces.live.com/Blog/cns!9D2E96F2AA6AE85F!839.entry#comment</comments>
      <comments>1</comments>
      <type>blogentry</type>
      <typelabel>Blog Entry</typelabel>
      <commentRss>http://cid-9d2e96f2aa6ae85f.users.api.live.net/Users(-7120587991840790433)/Blogs('9D2E96F2AA6AE85F!102')/Entries('9D2E96F2AA6AE85F!839')/Comments?$format=application%2frss%2bxml</commentRss>
      <modified>2010-01-13T16:16:53.5600000Z</modified>
    </item>
    <item>
      <guid>9D2E96F2AA6AE85F!835</guid>
      <category>WPF/Silverlight</category>
      <title>Unit testing publishing events from the event aggregator in PRISM</title>
      <description>&lt;div&gt;Coming back from the holiday, my mind was a still in a fog as to how to get an event, exposed by the event aggregator to fire and test the results. This is a quick shout out of thanks to &lt;a href="http://blog.vuscode.com/" target="_blank"&gt;Nikola Malovic&lt;/a&gt; for his &lt;a href="http://blog.vuscode.com/malovicn/archive/2009/04/17/prism-cal-unit-testing-how-to-test-prism-cal-event-aggregator-using-rhino-mocks.aspx" target="_blank"&gt;Prism (CAL) unit testing - How to test Prism (CAL) Event Aggregator using Rhino Mocks&lt;/a&gt; post I was able to get on track again quickly. The subtle key to the post is that the events being published are NOT mocked objects.&lt;/div&gt;
&lt;div&gt;&lt;span style="text-transform:none;text-indent:0px;border-collapse:separate;font:medium Arial, Helvetica;white-space:normal;letter-spacing:normal;color:rgb(51,51,51);word-spacing:0px"&gt;&lt;span style="line-height:17px;letter-spacing:-1px;color:rgb(99,99,100);font-size:19px"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;</description>
      <pubDate>Mon, 04 Jan 2010 18:09:21 Z</pubDate>
      <link>http://huntjason.spaces.live.com/Blog/cns!9D2E96F2AA6AE85F!835.entry</link>
      <comments>http://huntjason.spaces.live.com/Blog/cns!9D2E96F2AA6AE85F!835.entry#comment</comments>
      <comments>0</comments>
      <type>blogentry</type>
      <typelabel>Blog Entry</typelabel>
      <commentRss>http://cid-9d2e96f2aa6ae85f.users.api.live.net/Users(-7120587991840790433)/Blogs('9D2E96F2AA6AE85F!102')/Entries('9D2E96F2AA6AE85F!835')/Comments?$format=application%2frss%2bxml</commentRss>
      <modified>2010-01-04T18:09:21.1800000Z</modified>
    </item>
    <item>
      <guid>9D2E96F2AA6AE85F!833</guid>
      <category>WPF/Silverlight</category>
      <title>WPF &amp; MVVM: DataBinding UserControl Command to Parent DataContext</title>
      <description>&lt;div&gt;I had been struggling with figuring out how to make the my XAML databinding force the command of a user control be handled by the ViewModel of the parent window in which it is contained. In an effort to follow &lt;a href="http://en.wikipedia.org/wiki/Single_responsibility_principle" target="_blank"&gt;SRP&lt;/a&gt; I wanted the behavior of the ViewModel of the parent window to be more of a &lt;a href="http://martinfowler.com/eaaCatalog/pageController.html" target="_blank"&gt;PageController&lt;/a&gt; and the ViewModel for each contained UserControl follow a more pure ViewModel pattern. I was fortunate to be in contact wtih &lt;a href="http://www.grumpydev.com/" target="_blank"&gt;Steven Robbins&lt;/a&gt; via twitter (@GrumpyDev) which lead me to discover the blog post, &lt;a href="http://www.rootsilver.com/2009/05/wpf-relativesource-ancestor-datacontext" target="_blank"&gt;Wpf: Binding to parent property (RelativeSource Ancestor DataContext)&lt;/a&gt;, by &lt;a href="http://www.rootsilver.com/" target="_blank"&gt;Jeffrey Knight&lt;/a&gt; (Twitter: @jeffreyknight).&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;You can download the sample scenario I created &lt;a href="http://cid-9d2e96f2aa6ae85f.skydrive.live.com/self.aspx/Public/UserControlScenario.zip" target="_blank"&gt;here&lt;/a&gt;.&lt;/div&gt;</description>
      <pubDate>Thu, 17 Dec 2009 18:20:18 Z</pubDate>
      <link>http://huntjason.spaces.live.com/Blog/cns!9D2E96F2AA6AE85F!833.entry</link>
      <comments>http://huntjason.spaces.live.com/Blog/cns!9D2E96F2AA6AE85F!833.entry#comment</comments>
      <comments>0</comments>
      <type>blogentry</type>
      <typelabel>Blog Entry</typelabel>
      <commentRss>http://cid-9d2e96f2aa6ae85f.users.api.live.net/Users(-7120587991840790433)/Blogs('9D2E96F2AA6AE85F!102')/Entries('9D2E96F2AA6AE85F!833')/Comments?$format=application%2frss%2bxml</commentRss>
      <modified>2009-12-17T18:20:18.1800000Z</modified>
    </item>
    <item>
      <title>Followup: TechDays 2009 in Calgary</title>
      <link>http://www.opgenorth.net/2009/11/19/techdays-2009-in-calgary-2/</link>
      <comments>http://www.opgenorth.net/2009/11/19/techdays-2009-in-calgary-2/#comments</comments>
      <pubDate>Fri, 20 Nov 2009 03:48:09 +0000</pubDate>
      <creator>tom</creator>
      <category>.NET, Programming</category>
      <guid>http://www.opgenorth.net/2009/11/19/techdays-2009-in-calgary-2/</guid>
      <description>Yesterday I was at TechDays 2009 in Calgary for the day (well, the morning really).  I wasn&amp;#8217;t there as an attendee, but as a speaker.  Thanks to everybody who came out to my two talks, the first one on an Introduction to ASP.NET MVC and the second one on SOLIDifying your ASP.NET MVC Application.  There [...]</description>
      <encoded>&lt;p&gt;Yesterday I was at TechDays 2009 in Calgary for the day (well, the morning really).  I wasn&amp;#8217;t there as an attendee, but as a speaker.  Thanks to everybody who came out to my two talks, the first one on an &lt;em&gt;Introduction to ASP.NET MVC&lt;/em&gt; and the second one on &lt;em&gt;SOLIDifying your ASP.NET MVC Application&lt;/em&gt;.  There were a few hiccups along the way:  as usual, I fell victim to the Technical Presentation Time Dilation Syndrome (i.e. ran out of time) on both talks.  I guess I&amp;#8217;m just to long-winded for my own good.  As well, because I was running a &lt;a href="http://www.jetbrains.net/confluence/display/ReSharper/ReSharper+Early+Access+Program"&gt;EAP of Resharper 5&lt;/a&gt;, I had some Visual Studio 2008 issues &amp;#8211; namely VS2008 would hang on me from time to time.  Note to self: maybe don&amp;#8217;t use the bleeding edge tools in a talk.  And I really should break myself of wanting to type all the code &amp;#8211; using snippets would really save me time.&lt;/p&gt;
&lt;p&gt;Two things that suprised me:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;That there was still that much interest in ASP.NET MVC intro talks.  I just figured that everybody knew/knows about it.  Or maybe I just spend to much time with guys who have drunk the ASP.NET MVC Flavor Aid.  Either way, I think that there were some in the crowd that will convert from WebForms to ASP.NET MVC.&lt;/li&gt;
&lt;li&gt;I asked how many people wrote unit tests or developing their software using Test Driven Development was the number of people who didn&amp;#8217;t raise their hands.  While I didn&amp;#8217;t expect the majority of the crowd, I did expect a lot more people than I saw.  Maybe it was a quiet crowd, and people didn&amp;#8217;t feel like saying they wrote unit tests.  Maybe I live in a bubble, and my perception of what is actually going on in the .NET world is skewed (that is to say, perhaps writing tests is the exception rather than the rule).  It did kind of make me a bit concerned, as I truly believe that TDD does help one write better software overall.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Anyway, here&amp;#8217;s to hoping that TechDays 2010 will stop off in Edmonton.  And hopefully have a track that will focus on developer fundamentals, like TechDays had in Toronto and Vancouver.&lt;/p&gt;
&lt;div class="zemanta-pixie"&gt;&lt;img class="zemanta-pixie-img" src="http://img.zemanta.com/pixy.gif?x-id=2eb31f71-f855-83ff-bf64-795e87c1b4f0" alt="" /&gt;&lt;/div&gt;</encoded>
      <commentRss>http://www.opgenorth.net/2009/11/19/techdays-2009-in-calgary-2/feed/</commentRss>
      <comments>4</comments>
    </item>
    <item>
      <title>NotAtPDC and ICE Edmonton session material</title>
      <category>Sessions</category>
      <link>http://igloocoder.com/archive/2009/11/18/notatpdc-and-ice-edmonton-session-material.aspx</link>
      <description>&lt;p&gt;Thanks to those who attended the session that I did on “A (Failed?) Project From the Perspective of a Team Lead”.  As you know from being there, the slide deck by itself is not all that useful.  Instead of putting your memory to the test I’ve written up an accompanying white paper that can be downloaded &lt;a href="http://www.igloocoder.com/downloads/failure_handout.pdf"&gt;here (pdf format)&lt;/a&gt;.  If you also look back at my &lt;a href="http://www.igloocoder.com/archive/2009/10/04/1443.aspx"&gt;series on failure&lt;/a&gt; you can see some other examples of what and where I’ve failed on projects and how they could have been, or were, resolved.&lt;/p&gt;&lt;img src="http://igloocoder.com/aggbug/1447.aspx" width="1" height="1" /&gt;</description>
      <creator>The Igloo Coder</creator>
      <guid>http://igloocoder.com/archive/2009/11/18/notatpdc-and-ice-edmonton-session-material.aspx</guid>
      <pubDate>Wed, 18 Nov 2009 20:29:49 GMT</pubDate>
      <comment>http://igloocoder.com/comments/1447.aspx</comment>
      <comments>http://igloocoder.com/archive/2009/11/18/notatpdc-and-ice-edmonton-session-material.aspx#feedback</comments>
      <commentRss>http://igloocoder.com/comments/commentRss/1447.aspx</commentRss>
    </item>
  </channel>
</rss>