<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Tim Barcz - Software</title>
    <link>http://www.timbarcz.com/blog/</link>
    <description>My Code is My Craft</description>
    <image>
      <url>http://www.timbarcz.com/blog/content/binary/channelImage.jpg</url>
      <title>Tim Barcz - Software</title>
      <link>http://www.timbarcz.com/blog/</link>
    </image>
    <language>en-us</language>
    <copyright>Tim Barcz</copyright>
    <lastBuildDate>Mon, 14 Jul 2008 15:51:29 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.0.7226.0</generator>
    <managingEditor>blog@timbarcz.com</managingEditor>
    <webMaster>blog@timbarcz.com</webMaster>
    <item>
      <trackback:ping>http://www.timbarcz.com/blog/Trackback.aspx?guid=96028e7e-ac48-4277-ba74-4d2602ae7989</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,96028e7e-ac48-4277-ba74-4d2602ae7989.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,96028e7e-ac48-4277-ba74-4d2602ae7989.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=96028e7e-ac48-4277-ba74-4d2602ae7989</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
We recently decided that with the effort we're putting into <a href="http://www.jpcycles.com">our
website</a> and some changes that we're making that now would be as good of time as
ever to make the switch to the new <a href="http://www.asp.net/mvc">Asp.net MVC Framework</a>. 
We're no Google, but we're currently receiving around 18,000 unique visitors a day
and 300,000 page views and hope to grow that number as we make our site easier to
use for our customers.  I hope to rely heavily on <a href="http://www.haacked.com">Phil</a>, <a href="http://blog.wekeroad.com">Rob</a>,
and <a href="http://www.hanselman.com">Scott</a> for assistance if needed.  
</p>
        <p>
The MVC design appeals to us because the large amount of business logic that has crept
it's way into the codebehind.  Despite the best intentions, the current site,
which is programmed in asp.net 1.1, has had too much logic to creep into presentational
areas while running with webforms.  The biggest drawback to this is reduced testability. 
Testability should be important in any project but for us it is paramount. We have
business rules that if not adhered to amount to real-world fines:
</p>
        <blockquote>
          <p>
A few years ago a customer bought some lubricant that is sold in an aerosol can. 
Since 9/11 aerosol cans cannot be shipped as cargo on airplanes.  Somehow this
order made it though the checks we have for this type of thing in the warehouse and
made it onto the UPS truck.  At the UPS facility, a UPS employee heard something
emanating from a box that sounded like an aerosol can.  At that point he is required
by law to check the contents.  When he opened the box he found the aerosol cans. 
Despite knowing us and our reputation, he was required to call the FAA and say something
to the effect of, "I found some aerosol cans in a package that was scheduled
to be flown."  It didn't matter that this was an accident or "just
a few cans", we were still fined.  We were warned that if this were to happen
again that we would face a fine somewhere in the low six figures. The FAA doesn't
mess around.
</p>
        </blockquote>
        <p>
As we go forward I plan to document on this blog the highs and lows of our transition. 
I'll post questions and problems we're having that I hope you can help with as well
as tips and tricks our team has found helpful.  Stay tuned as we make the transition.
</p>
        <img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=96028e7e-ac48-4277-ba74-4d2602ae7989" />
      </body>
      <title>Using MVC Framework In the Wild, Our Transition to the ASP.NET MVC Framework</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,96028e7e-ac48-4277-ba74-4d2602ae7989.aspx</guid>
      <link>http://www.timbarcz.com/blog/UsingMVCFrameworkInTheWildOurTransitionToTheASPNETMVCFramework.aspx</link>
      <pubDate>Mon, 14 Jul 2008 15:51:29 GMT</pubDate>
      <description>&lt;p&gt;
We recently decided that with the effort we're putting into &lt;a href="http://www.jpcycles.com"&gt;our
website&lt;/a&gt; and some changes that we're making that now would be as good of time as
ever to make the switch to the new &lt;a href="http://www.asp.net/mvc"&gt;Asp.net MVC Framework&lt;/a&gt;.&amp;#160;
We're no Google, but we're currently receiving around 18,000 unique visitors a day
and 300,000 page views and hope to grow that number as we make our site easier to
use for our customers.&amp;#160; I hope to rely heavily on &lt;a href="http://www.haacked.com"&gt;Phil&lt;/a&gt;, &lt;a href="http://blog.wekeroad.com"&gt;Rob&lt;/a&gt;,
and &lt;a href="http://www.hanselman.com"&gt;Scott&lt;/a&gt; for assistance if needed.&amp;#160; 
&lt;/p&gt;
&lt;p&gt;
The MVC design appeals to us because the large amount of business logic that has crept
it's way into the codebehind.&amp;#160; Despite the best intentions, the current site,
which is programmed in asp.net 1.1, has had too much logic to creep into presentational
areas while running with webforms.&amp;#160; The biggest drawback to this is reduced testability.&amp;#160;
Testability should be important in any project but for us it is paramount. We have
business rules that if not adhered to amount to real-world fines:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
A few years ago a customer bought some lubricant that is sold in an aerosol can.&amp;#160;
Since 9/11 aerosol cans cannot be shipped as cargo on airplanes.&amp;#160; Somehow this
order made it though the checks we have for this type of thing in the warehouse and
made it onto the UPS truck.&amp;#160; At the UPS facility, a UPS employee heard something
emanating from a box that sounded like an aerosol can.&amp;#160; At that point he is required
by law to check the contents.&amp;#160; When he opened the box he found the aerosol cans.&amp;#160;
Despite knowing us and our reputation, he was required to call the FAA and say something
to the effect of, &amp;quot;I found some aerosol cans in a package that was scheduled
to be flown.&amp;quot;&amp;#160; It didn't matter that this was an accident or &amp;quot;just
a few cans&amp;quot;, we were still fined.&amp;#160; We were warned that if this were to happen
again that we would face a fine somewhere in the low six figures. The FAA doesn't
mess around.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
As we go forward I plan to document on this blog the highs and lows of our transition.&amp;#160;
I'll post questions and problems we're having that I hope you can help with as well
as tips and tricks our team has found helpful.&amp;#160; Stay tuned as we make the transition.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=96028e7e-ac48-4277-ba74-4d2602ae7989" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,96028e7e-ac48-4277-ba74-4d2602ae7989.aspx</comments>
      <category>.NET</category>
      <category>MVC</category>
      <category>Software</category>
    </item>
    <item>
      <trackback:ping>http://www.timbarcz.com/blog/Trackback.aspx?guid=1136e7c9-b88d-4f52-a572-e2ec389dd24e</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,1136e7c9-b88d-4f52-a572-e2ec389dd24e.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,1136e7c9-b88d-4f52-a572-e2ec389dd24e.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=1136e7c9-b88d-4f52-a572-e2ec389dd24e</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Compare the following two error messages and think about which you would find more
helpful.  Then, the next time you are throwing exceptions with messages remember
this post.
</p>
        <h3>Error Message from Castle's Windsor IoC libraries:
</h3>
        <blockquote>
          <h4>
            <i>Can't create component 'ProductService' as it has dependencies to be satisfied. </i>
          </h4>
          <h4>
            <i>ProductService is waiting for the following dependencies:</i>
          </h4>
          <h4>
            <i>Services: </i>
            <i>
              <br />
- ABCCompany.Framework.Services.IInventoryService which was registered but is also
waiting for dependencies. </i>
          </h4>
          <h4>
            <i>ControllerInventory is waiting for the following dependencies: </i>
          </h4>
          <h4>
            <i>Services: 
<br />
- ABCCompany.Controller.IInventoryRequestInterpreter which was not registered. 
<br /></i>
            <p>
            </p>
            <b>Description: </b>An unhandled exception occurred during the execution of the current
web request. Please review the stack trace for more information about the error and
where it originated in the code.
</h4>
          <p>
            <b>Exception Details: </b>Castle.MicroKernel.Handlers.HandlerException: Can't create
component 'ProductService' as it has dependencies to be satisfied. 
</p>
          <p>
ProductService is waiting for the following dependencies: 
</p>
          <p>
Services: 
<br />
- ABCCompany.Framework.Services.IInventoryService which was registered but is also
waiting for dependencies. 
</p>
          <p>
ControllerInventory is waiting for the following dependencies: 
</p>
          <p>
Services: 
<br />
- ABCCompany.Controller.IInventoryRequestInterpreter which was not registered. 
</p>
        </blockquote>
        <h3>
        </h3>
        <h3>Error Message from .NET framework:
</h3>
        <blockquote>
          <h4>
            <i>Object reference not set to an instance of an object.</i>
          </h4>
          <b>Description: </b>An unhandled exception occurred during the execution of the current
web request. Please review the stack trace for more information about the error and
where it originated in the code. 
<br /><b>Exception Details: </b>System.NullReferenceException: Object reference not set
to an instance of an object.</blockquote>
        <img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=1136e7c9-b88d-4f52-a572-e2ec389dd24e" />
      </body>
      <title>Assistive Exception Messages</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,1136e7c9-b88d-4f52-a572-e2ec389dd24e.aspx</guid>
      <link>http://www.timbarcz.com/blog/AssistiveExceptionMessages.aspx</link>
      <pubDate>Tue, 17 Jun 2008 20:05:47 GMT</pubDate>
      <description>&lt;p&gt;
Compare the following two error messages and think about which you would find more
helpful.&amp;nbsp; Then, the next time you are throwing exceptions with messages remember
this post.
&lt;/p&gt;
&lt;h3&gt;Error Message from Castle's Windsor IoC libraries:
&lt;/h3&gt;
&lt;blockquote&gt; 
&lt;h4&gt;&lt;i&gt;Can't create component 'ProductService' as it has dependencies to be satisfied. &lt;/i&gt;
&lt;/h4&gt;
&lt;h4&gt;&lt;i&gt;ProductService is waiting for the following dependencies:&lt;/i&gt;
&lt;/h4&gt;
&lt;h4&gt;&lt;i&gt;Services: &lt;/i&gt;&lt;i&gt; 
&lt;br&gt;
- ABCCompany.Framework.Services.IInventoryService which was registered but is also
waiting for dependencies. &lt;/i&gt;
&lt;/h4&gt;
&lt;h4&gt;&lt;i&gt;ControllerInventory is waiting for the following dependencies: &lt;/i&gt;
&lt;/h4&gt;
&lt;h4&gt;&lt;i&gt;Services: 
&lt;br&gt;
- ABCCompany.Controller.IInventoryRequestInterpreter which was not registered. 
&lt;br&gt;
&lt;/i&gt; 
&lt;p&gt;
&lt;/p&gt;
&lt;b&gt;Description: &lt;/b&gt;An unhandled exception occurred during the execution of the current
web request. Please review the stack trace for more information about the error and
where it originated in the code.
&lt;/h4&gt;
&lt;p&gt;
&lt;b&gt;Exception Details: &lt;/b&gt;Castle.MicroKernel.Handlers.HandlerException: Can't create
component 'ProductService' as it has dependencies to be satisfied. 
&lt;/p&gt;
&lt;p&gt;
ProductService is waiting for the following dependencies: 
&lt;/p&gt;
&lt;p&gt;
Services: 
&lt;br&gt;
- ABCCompany.Framework.Services.IInventoryService which was registered but is also
waiting for dependencies. 
&lt;/p&gt;
&lt;p&gt;
ControllerInventory is waiting for the following dependencies: 
&lt;/p&gt;
&lt;p&gt;
Services: 
&lt;br&gt;
- ABCCompany.Controller.IInventoryRequestInterpreter which was not registered. 
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;h3&gt;
&lt;/h3&gt;
&lt;h3&gt;Error Message from .NET framework:
&lt;/h3&gt;
&lt;blockquote&gt; 
&lt;h4&gt;&lt;i&gt;Object reference not set to an instance of an object.&lt;/i&gt;
&lt;/h4&gt;
&lt;b&gt;Description: &lt;/b&gt;An unhandled exception occurred during the execution of the current
web request. Please review the stack trace for more information about the error and
where it originated in the code. 
&lt;br&gt;
&lt;b&gt;Exception Details: &lt;/b&gt;System.NullReferenceException: Object reference not set
to an instance of an object.&lt;/blockquote&gt;&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=1136e7c9-b88d-4f52-a572-e2ec389dd24e" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,1136e7c9-b88d-4f52-a572-e2ec389dd24e.aspx</comments>
      <category>.NET</category>
      <category>Programming</category>
      <category>Software</category>
    </item>
    <item>
      <trackback:ping>http://www.timbarcz.com/blog/Trackback.aspx?guid=f9c13a9a-b67f-4d0f-b510-1f02fedb7ab2</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,f9c13a9a-b67f-4d0f-b510-1f02fedb7ab2.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,f9c13a9a-b67f-4d0f-b510-1f02fedb7ab2.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=f9c13a9a-b67f-4d0f-b510-1f02fedb7ab2</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
"But you have the source!"
</p>
        <p>
I heard that statement a little over a month ago at the <a href="http://altdotnet.org/events/seattle" target="_blank">Alt.Net
Open Spaces event in Seattle</a>.  It's no secret to those who know the community,
that open source technologies are at the very least promoted and in many cases you'll
find many open source project committers within the Alt.Net community.  Heck, <a href="http://laribee.com/blog/" target="_blank">David
Laribee</a>, a founding member if there is such a thing, <a href="http://laribee.com/blog/2007/04/10/altnet/" target="_blank">in
a post</a> defined Alt.Net as (emphasis mine):
</p>
        <blockquote>
          <ol>
            <li>
You’re the type of developer who uses what works while keeping an eye out for a better
way. 
</li>
            <li>
              <strong>You reach outside the mainstream to adopt the best of any community: Open
Source</strong>, Agile, Java, Ruby, etc. 
</li>
            <li>
You’re not content with the status quo. Things can always be better expressed, more
elegant and simple, more mutable, higher quality, etc. 
</li>
            <li>
You know tools are great, but they only take you so far. It’s the principles and knowledge
that really matter. The best tools are those that embed the knowledge and encourage
the principles (e.g. Resharper.)</li>
          </ol>
        </blockquote>
        <p>
The quote, and many like it, came in a session titled "Mature Open Source projects
versus first generation Microsoft projects".  The discussion centered around
why some (many) developers, managers, and executives feel comfortable choosing a brand-new
Microsoft product when a far more mature open source alternative exists.  One
the fears surrounding the adoption of open source is the lack of surety that open
source project will exist in perpetuity.  One needs to look no further than two
projects, NVelocity and NDoc, to find historical evidence of an open source project
vanishing.  The main counter-point to that argument, and many others, was the
quote above, that with open source, you were never truly left high-and-dry, since
you had the source.
</p>
        <p>
It's a noble thought, but really, who wants to manage another codebase in addition
to their own?  In fact I turn to open source project many times so I don't have
to write my own code.  Why re-invent what someone else has already done and guided
to maturity?  The idea that I can compile and manage another, possibly large,
and probably complex codebase is hardly a comfort to me.  It wasn't until a few
weeks ago that I realize that the open source pundits were correct.
</p>
        <p>
I have been working on a project for the last year that has, as of two versions ago,
started using <a href="http://watin.sourceforge.net/" target="_blank">Watin</a> to
automate the downloading of a file from the internet.  Watin is a testing framework
but is used by many to automate business processes, which is what I use it for. 
If you haven't checked it out yet, it's beautifully simple.
</p>
        <p>
Watin provides handlers to download a file, however, the code was hanging at the point
where it should've cleared the download.  I looked at every documentation page,
blog post, and blog comment I could to see if I was missing something.  My usage
was correct.  So I dug in a bit further using <a href="http://www.greatis.com/delphicb/windowse/" target="_blank">WinDowse</a> to
find the handle of the button that should be clicked.  As it turns out the handle
of the Save button in a FileDownload Dialog changed from 4424 to 4427 in IE7, who
would've guessed it right?  Well, since I had the source I went in and made the
change, and voila, I'm back in business.
</p>
        <p>
It gave me some confidence that if an open source project does cease, I can pick it
up and patch it up.  I still don't want to manage multiple codebases from many
different source, but in the end the pro open-source guys were right, "You have the
source!"
</p>
        <img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=f9c13a9a-b67f-4d0f-b510-1f02fedb7ab2" />
      </body>
      <title>Open Source - You Have the Source</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,f9c13a9a-b67f-4d0f-b510-1f02fedb7ab2.aspx</guid>
      <link>http://www.timbarcz.com/blog/OpenSourceYouHaveTheSource.aspx</link>
      <pubDate>Tue, 10 Jun 2008 06:48:50 GMT</pubDate>
      <description>&lt;p&gt;
"But you have the source!"
&lt;/p&gt;
&lt;p&gt;
I heard that statement a little over a month ago at the &lt;a href="http://altdotnet.org/events/seattle" target="_blank"&gt;Alt.Net
Open Spaces event in Seattle&lt;/a&gt;.&amp;nbsp; It's no secret to those who know the community,
that open source technologies are at the very least promoted and in many cases you'll
find many open source project committers within the Alt.Net community.&amp;nbsp; Heck, &lt;a href="http://laribee.com/blog/" target="_blank"&gt;David
Laribee&lt;/a&gt;, a founding member if there is such a thing, &lt;a href="http://laribee.com/blog/2007/04/10/altnet/" target="_blank"&gt;in
a post&lt;/a&gt; defined Alt.Net as (emphasis mine):
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;ol&gt;
&lt;li&gt;
You’re the type of developer who uses what works while keeping an eye out for a better
way. 
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You reach outside the mainstream to adopt the best of any community: Open
Source&lt;/strong&gt;, Agile, Java, Ruby, etc. 
&lt;/li&gt;
&lt;li&gt;
You’re not content with the status quo. Things can always be better expressed, more
elegant and simple, more mutable, higher quality, etc. 
&lt;/li&gt;
&lt;li&gt;
You know tools are great, but they only take you so far. It’s the principles and knowledge
that really matter. The best tools are those that embed the knowledge and encourage
the principles (e.g. Resharper.)&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
The quote, and many like it, came in a session titled "Mature Open Source projects
versus first generation Microsoft projects".&amp;nbsp; The discussion centered around
why some (many) developers, managers, and executives feel comfortable choosing a brand-new
Microsoft product when a far more mature open source alternative exists.&amp;nbsp; One
the fears surrounding the adoption of open source is the lack of surety that open
source project will exist in perpetuity.&amp;nbsp; One needs to look no further than two
projects, NVelocity and NDoc, to find historical evidence of an open source project
vanishing.&amp;nbsp; The main counter-point to that argument, and many others, was the
quote above, that with open source, you were never truly left high-and-dry, since
you had the source.
&lt;/p&gt;
&lt;p&gt;
It's a noble thought, but really, who wants to manage another codebase in addition
to their own?&amp;nbsp; In fact I turn to open source project many times so I don't have
to write my own code.&amp;nbsp; Why re-invent what someone else has already done and guided
to maturity?&amp;nbsp; The idea that I can compile and manage another, possibly large,
and probably complex codebase is hardly a comfort to me.&amp;nbsp; It wasn't until a few
weeks ago that I realize that the open source pundits were correct.
&lt;/p&gt;
&lt;p&gt;
I have been working on a project for the last year that has, as of two versions ago,
started using &lt;a href="http://watin.sourceforge.net/" target="_blank"&gt;Watin&lt;/a&gt; to
automate the downloading of a file from the internet.&amp;nbsp; Watin is a testing framework
but is used by many to automate business processes, which is what I use it for.&amp;nbsp;
If you haven't checked it out yet, it's beautifully simple.
&lt;/p&gt;
&lt;p&gt;
Watin provides handlers to download a file, however, the code was hanging at the point
where it should've cleared the download.&amp;nbsp; I looked at every documentation page,
blog post, and blog comment I could to see if I was missing something.&amp;nbsp; My usage
was correct.&amp;nbsp; So I dug in a bit further using &lt;a href="http://www.greatis.com/delphicb/windowse/" target="_blank"&gt;WinDowse&lt;/a&gt; to
find the handle of the button that should be clicked.&amp;nbsp; As it turns out the handle
of the Save button in a FileDownload Dialog changed from 4424 to 4427 in IE7, who
would've guessed it right?&amp;nbsp; Well, since I had the source I went in and made the
change, and voila, I'm back in business.
&lt;/p&gt;
&lt;p&gt;
It gave me some confidence that if an open source project does cease, I can pick it
up and patch it up.&amp;nbsp; I still don't want to manage multiple codebases from many
different source, but in the end the pro open-source guys were right, "You have the
source!"
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=f9c13a9a-b67f-4d0f-b510-1f02fedb7ab2" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,f9c13a9a-b67f-4d0f-b510-1f02fedb7ab2.aspx</comments>
      <category>.NET</category>
      <category>ALT.NET</category>
      <category>Musings</category>
      <category>Open Source Software</category>
      <category>Software</category>
    </item>
    <item>
      <trackback:ping>http://www.timbarcz.com/blog/Trackback.aspx?guid=439371de-1dfd-47a6-aecd-fbb36ef7a283</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,439371de-1dfd-47a6-aecd-fbb36ef7a283.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,439371de-1dfd-47a6-aecd-fbb36ef7a283.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=439371de-1dfd-47a6-aecd-fbb36ef7a283</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/WhyILoveVirtualMachines_D1E1/image_2.png">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="319" alt="image" src="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/WhyILoveVirtualMachines_D1E1/image_thumb.png" width="404" align="right" border="0" />
          </a>Last
year when I <a href="http://www.timbarcz.com/blog/2007/11/27/TheChoiceToGoQuad.aspx" target="_blank">built
a new machine</a> I purposefully built the machine with lots of power so that I could
have multiple different environments and insulate myself from the loads of crap-ware
that inevitably ends up on my machine.
</p>
        <p>
Virtual machines allow me to download and try some utility in a sandbox where I know
I can return to a previous state.
</p>
        <p>
I opened one of my virtual machines and saw the screen posted on the right. 
If this were on my host machine I think I'd need a new pair of underwear.  I
don't have the time to rebuild a machine and so screens like the one of the right
scare me.  However that is a virtual machine that had the <a href="http://go.microsoft.com/fwlink/?LinkID=110956" target="_blank">ASP.NET
MVC Framework Preview 2</a> on it.  So, am I going to try and diagnose? 
Nope.  Just create another...it's beautiful.
</p>
        <p>
 
</p>
        <p>
 
</p>
        <p>
 
</p>
        <p>
 
</p>
        <p>
          <a href="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/WhyILoveVirtualMachines_D1E1/image_2.png">
          </a>
        </p>
        <img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=439371de-1dfd-47a6-aecd-fbb36ef7a283" />
      </body>
      <title>Why I Love Virtual Machines</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,439371de-1dfd-47a6-aecd-fbb36ef7a283.aspx</guid>
      <link>http://www.timbarcz.com/blog/WhyILoveVirtualMachines.aspx</link>
      <pubDate>Sat, 10 May 2008 20:49:23 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/WhyILoveVirtualMachines_D1E1/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="319" alt="image" src="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/WhyILoveVirtualMachines_D1E1/image_thumb.png" width="404" align="right" border="0" /&gt;&lt;/a&gt;Last
year when I &lt;a href="http://www.timbarcz.com/blog/2007/11/27/TheChoiceToGoQuad.aspx" target="_blank"&gt;built
a new machine&lt;/a&gt; I purposefully built the machine with lots of power so that I could
have multiple different environments and insulate myself from the loads of crap-ware
that inevitably ends up on my machine.
&lt;/p&gt;
&lt;p&gt;
Virtual machines allow me to download and try some utility in a sandbox where I know
I can return to a previous state.
&lt;/p&gt;
&lt;p&gt;
I opened one of my virtual machines and saw the screen posted on the right.&amp;#160;
If this were on my host machine I think I'd need a new pair of underwear.&amp;#160; I
don't have the time to rebuild a machine and so screens like the one of the right
scare me.&amp;#160; However that is a virtual machine that had the &lt;a href="http://go.microsoft.com/fwlink/?LinkID=110956" target="_blank"&gt;ASP.NET
MVC Framework Preview 2&lt;/a&gt; on it.&amp;#160; So, am I going to try and diagnose?&amp;#160;
Nope.&amp;#160; Just create another...it's beautiful.
&lt;/p&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/WhyILoveVirtualMachines_D1E1/image_2.png"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=439371de-1dfd-47a6-aecd-fbb36ef7a283" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,439371de-1dfd-47a6-aecd-fbb36ef7a283.aspx</comments>
      <category>Hardware</category>
      <category>Musings</category>
      <category>Software</category>
      <category>Tools</category>
    </item>
    <item>
      <trackback:ping>http://www.timbarcz.com/blog/Trackback.aspx?guid=01d0d4ee-b620-4c3e-b04e-5690837b03c3</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,01d0d4ee-b620-4c3e-b04e-5690837b03c3.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,01d0d4ee-b620-4c3e-b04e-5690837b03c3.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=01d0d4ee-b620-4c3e-b04e-5690837b03c3</wfw:commentRss>
      <slash:comments>5</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
The new <a href="http://www.jetbrains.com/resharper/">Resharper</a> seems to favor
the "var" keyword and I don't understand why.  Is it some performance
benefit?  To me, if you know the type, then write it as such.  Consider
the following:
</p>
        <blockquote>
          <p>
Person p = new Person("Tim", "Barcz");
</p>
        </blockquote>
        <p>
Resharper doesn't like this and suggests the following:
</p>
        <blockquote>
          <p>
var p = new Person("Tim", "Barcz");
</p>
        </blockquote>
        <p>
Why?  Just because you can do something, I don't think you should.  Maybe
my brain hasn't shifted back to a var world yet, but the second snippet is less readable
than the first.  To me it's a case of <a href="http://www.amazon.com/Common-Approach-Usability-Circle-Com-Library/dp/0789723107">Don't
Make Me Think</a>.  With "var", I now have to stop and think, even
for a second, what type is being returned.
</p>
        <img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=01d0d4ee-b620-4c3e-b04e-5690837b03c3" />
      </body>
      <title>Is Var Better?</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,01d0d4ee-b620-4c3e-b04e-5690837b03c3.aspx</guid>
      <link>http://www.timbarcz.com/blog/IsVarBetter.aspx</link>
      <pubDate>Mon, 10 Mar 2008 16:51:28 GMT</pubDate>
      <description>&lt;p&gt;
The new &lt;a href="http://www.jetbrains.com/resharper/"&gt;Resharper&lt;/a&gt; seems to favor
the &amp;quot;var&amp;quot; keyword and I don't understand why.&amp;#160; Is it some performance
benefit?&amp;#160; To me, if you know the type, then write it as such.&amp;#160; Consider
the following:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
Person p = new Person(&amp;quot;Tim&amp;quot;, &amp;quot;Barcz&amp;quot;);
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Resharper doesn't like this and suggests the following:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
var p = new Person(&amp;quot;Tim&amp;quot;, &amp;quot;Barcz&amp;quot;);
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Why?&amp;#160; Just because you can do something, I don't think you should.&amp;#160; Maybe
my brain hasn't shifted back to a var world yet, but the second snippet is less readable
than the first.&amp;#160; To me it's a case of &lt;a href="http://www.amazon.com/Common-Approach-Usability-Circle-Com-Library/dp/0789723107"&gt;Don't
Make Me Think&lt;/a&gt;.&amp;#160; With &amp;quot;var&amp;quot;, I now have to stop and think, even
for a second, what type is being returned.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=01d0d4ee-b620-4c3e-b04e-5690837b03c3" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,01d0d4ee-b620-4c3e-b04e-5690837b03c3.aspx</comments>
      <category>.NET</category>
      <category>Musings</category>
      <category>Software</category>
    </item>
    <item>
      <trackback:ping>http://www.timbarcz.com/blog/Trackback.aspx?guid=445de521-8049-4f1a-a99b-e65b7590a7ac</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,445de521-8049-4f1a-a99b-e65b7590a7ac.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,445de521-8049-4f1a-a99b-e65b7590a7ac.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=445de521-8049-4f1a-a99b-e65b7590a7ac</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/RegularExpressionLearnthem_8736/image_9.png">
            <img style="border-width: 0px;" alt="image" src="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/RegularExpressionLearnthem_8736/image_thumb_3.png" align="right" border="0" height="520" width="321" />
          </a>I've
thought about writing this post several times over the past two years.  Having
had regular expressions come up three times last week, I thought it time to address
the lack of programmers out there who understand regular expressions.  The sheer
amount of fear surrounding regular expressions and the work that goes into avoiding
them is astonishing.
</p>
        <p>
Last year I used to troll around the <a href="http://www.asp.net/forums/">asp.net
forums</a> and quite frequently I would answer the regex questions.  One <a href="http://forums.asp.net/t/1125123.aspx">question
was posted</a> which illustrates the problem with regexes among developers.
</p>
        <blockquote>
          <p>
"...and i also i need to add a validator for the password textbox where the user is
required to fill atleast [sic] 6 characters" 
</p>
        </blockquote>
        <p>
I suggested a solution to the problem using a regular expression validator. Making
sure there are at least 6 characters, is a simple regex (example: \w{6,}), and yet
my solution was met with skepticism.  The following was said, in the event a
change was requested, 
</p>
        <blockquote>
          <p>
"Putting a new version of a web site can take a surprising amount of time than can
go into man-weeks".  
</p>
        </blockquote>
        <p>
Man-weeks?!?!?  To change a regular expression?!?!?  I see two problems,
first the original developer who didn't know that regex would easily solve their problem. 
The second problem is the other developer who doesn't know regex advocating his way
as "the way", in effect, spreading his ignorance.  The first developer is easily
forgiven, the second is not.
</p>
        <p>
It's been said <a href="http://www.codinghorror.com/blog/archives/000781.html">programmers
can't program</a> when faced with a simple FizzBuzz test, <a href="http://tickletux.wordpress.com/">Imran</a> states:
</p>
        <blockquote>
          <p>
"Want to know something scary? - the majority of comp sci graduates can’t. I’ve also
seen self-proclaimed senior programmers take more than 10-15 minutes to write a solution."
</p>
        </blockquote>
        <p>
I'll pile on.  <strong>You want to know something scary?  The majority of
professional programmers can't write regular expressions, even simple ones</strong>. 
I'm not the first to say this.  Last year, at the <a href="http://altdotnet.org/">ALT.NET</a> conference, <a href="http://weblogs.asp.net/scottgu/">Scott
Guthrie</a> made the following statement when talking about routes in the new MVC
framework:
</p>
        <blockquote>
          <p>
"It's pluggable, so you can use Regexes...&lt;some incoherent stuff&gt;...if you wanna
use regexes you can.  What we found is, regexes are super powerful, but only
about 10% of people actually understand 'em."
</p>
        </blockquote>
        <p>
Are regular expressions easy to understand? Well, let me ask you, was HTML easy when
you started?  Were you born understanding the following HTML?
</p>
        <blockquote>
          <p>
            <font face="Courier" size="2">&lt;fieldset class="CheckRadio"&gt; 
<br />
    &lt;div id="OngoingEventContainer"&gt; 
<br />
        &lt;input type="checkbox" id="OngoingEvent"
name="OngoingEvent" value="1" /&gt; 
<br />
        &lt;label for="OngoingEvent"&gt; 
<br />
            This is an ongoing
event (no dates and times) 
<br />
        &lt;/label&gt; 
<br />
    &lt;/div&gt; 
<br />
&lt;/fieldset&gt;</font>
          </p>
        </blockquote>
        <p>
If you understand the above, you didn't always.  My guess is that at some point
you buckled down and learned HTML because you're job requires it.  Well, if you're
a programmer, web or windows, <strong>you need to know regular expressions, your job
requires it, it's that simple.</strong> 
</p>
        <p>
          <a href="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/RegularExpressionLearnthem_8736/image_7.png">
            <img style="border-width: 0px;" alt="image" src="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/RegularExpressionLearnthem_8736/image_thumb_2.png" align="right" border="0" height="325" width="344" />
          </a>Regular
expressions have been around so long that they're deeply ingrained in many of the
tools we use.  <a href="http://devlicious.com/blogs/christopher_bennage">Christopher
Bennage</a> illustrates how regular expressions solved a recent problems in Visual
Studio.  In a <a href="http://devlicious.com/blogs/christopher_bennage/archive/2008/02/21/discovering-empty-try-catch-blocks.aspx">recent
post</a> he posts:
</p>
        <blockquote>
          <p>
"Then I realized that I was missing the simple solution. Ctrl+F and a regular expression!"
</p>
        </blockquote>
        <p>
I don't know that many people would be able to come to the conclusion that Christoper
did.  It's my belief that regular expressions are fundamental, yet the average
developer doesn't treat them as such.  They're ultimately doing themselves a
disservice.
</p>
        <p>
Regular Expressions are a tool that should be in every programmers bag.  If you
don't understand regular expressions and do a google search every time you need a
regular expression, shame on you!  It's time to bite the bullet and learn regular
expressions.
</p>
        <img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=445de521-8049-4f1a-a99b-e65b7590a7ac" />
      </body>
      <title>Regular Expressions, Your Job Requires Them</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,445de521-8049-4f1a-a99b-e65b7590a7ac.aspx</guid>
      <link>http://www.timbarcz.com/blog/RegularExpressionsYourJobRequiresThem.aspx</link>
      <pubDate>Mon, 25 Feb 2008 20:51:08 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/RegularExpressionLearnthem_8736/image_9.png"&gt;&lt;img style="border-width: 0px;" alt="image" src="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/RegularExpressionLearnthem_8736/image_thumb_3.png" align="right" border="0" height="520" width="321"&gt;&lt;/a&gt;I've
thought about writing this post several times over the past two years.&amp;nbsp; Having
had regular expressions come up three times last week, I thought it time to address
the lack of programmers out there who understand regular expressions.&amp;nbsp; The sheer
amount of fear surrounding regular expressions and the work that goes into avoiding
them is astonishing.
&lt;/p&gt;
&lt;p&gt;
Last year I used to troll around the &lt;a href="http://www.asp.net/forums/"&gt;asp.net
forums&lt;/a&gt; and quite frequently I would answer the regex questions.&amp;nbsp; One &lt;a href="http://forums.asp.net/t/1125123.aspx"&gt;question
was posted&lt;/a&gt; which illustrates the problem with regexes among developers.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
"...and i also i need to add a validator for the password textbox where the user is
required to fill atleast [sic] 6 characters" 
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
I suggested a solution to the problem using a regular expression validator. Making
sure there are at least 6 characters, is a simple regex (example: \w{6,}), and yet
my solution was met with skepticism.&amp;nbsp; The following was said, in the event a
change was requested, 
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
"Putting a new version of a web site can take a surprising amount of time than can
go into man-weeks".&amp;nbsp; 
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Man-weeks?!?!?&amp;nbsp; To change a regular expression?!?!?&amp;nbsp; I see two problems,
first the original developer who didn't know that regex would easily solve their problem.&amp;nbsp;
The second problem is the other developer who doesn't know regex advocating his way
as "the way", in effect, spreading his ignorance.&amp;nbsp; The first developer is easily
forgiven, the second is not.
&lt;/p&gt;
&lt;p&gt;
It's been said &lt;a href="http://www.codinghorror.com/blog/archives/000781.html"&gt;programmers
can't program&lt;/a&gt; when faced with a simple FizzBuzz test, &lt;a href="http://tickletux.wordpress.com/"&gt;Imran&lt;/a&gt; states:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
"Want to know something scary? - the majority of comp sci graduates can’t. I’ve also
seen self-proclaimed senior programmers take more than 10-15 minutes to write a solution."
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
I'll pile on.&amp;nbsp; &lt;strong&gt;You want to know something scary?&amp;nbsp; The majority of
professional programmers can't write regular expressions, even simple ones&lt;/strong&gt;.&amp;nbsp;
I'm not the first to say this.&amp;nbsp; Last year, at the &lt;a href="http://altdotnet.org/"&gt;ALT.NET&lt;/a&gt; conference, &lt;a href="http://weblogs.asp.net/scottgu/"&gt;Scott
Guthrie&lt;/a&gt; made the following statement when talking about routes in the new MVC
framework:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
"It's pluggable, so you can use Regexes...&amp;lt;some incoherent stuff&amp;gt;...if you wanna
use regexes you can.&amp;nbsp; What we found is, regexes are super powerful, but only
about 10% of people actually understand 'em."
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Are regular expressions easy to understand? Well, let me ask you, was HTML easy when
you started?&amp;nbsp; Were you born understanding the following HTML?
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;font face="Courier" size="2"&gt;&amp;lt;fieldset class="CheckRadio"&amp;gt; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div id="OngoingEventContainer"&amp;gt; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;input type="checkbox" id="OngoingEvent"
name="OngoingEvent" value="1" /&amp;gt; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;label for="OngoingEvent"&amp;gt; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; This is an ongoing
event (no dates and times) 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/label&amp;gt; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt; 
&lt;br&gt;
&amp;lt;/fieldset&amp;gt;&lt;/font&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
If you understand the above, you didn't always.&amp;nbsp; My guess is that at some point
you buckled down and learned HTML because you're job requires it.&amp;nbsp; Well, if you're
a programmer, web or windows, &lt;strong&gt;you need to know regular expressions, your job
requires it, it's that simple.&lt;/strong&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/RegularExpressionLearnthem_8736/image_7.png"&gt;&lt;img style="border-width: 0px;" alt="image" src="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/RegularExpressionLearnthem_8736/image_thumb_2.png" align="right" border="0" height="325" width="344"&gt;&lt;/a&gt;Regular
expressions have been around so long that they're deeply ingrained in many of the
tools we use.&amp;nbsp; &lt;a href="http://devlicious.com/blogs/christopher_bennage"&gt;Christopher
Bennage&lt;/a&gt; illustrates how regular expressions solved a recent problems in Visual
Studio.&amp;nbsp; In a &lt;a href="http://devlicious.com/blogs/christopher_bennage/archive/2008/02/21/discovering-empty-try-catch-blocks.aspx"&gt;recent
post&lt;/a&gt; he posts:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
"Then I realized that I was missing the simple solution. Ctrl+F and a regular expression!"
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
I don't know that many people would be able to come to the conclusion that Christoper
did.&amp;nbsp; It's my belief that regular expressions are fundamental, yet the average
developer doesn't treat them as such.&amp;nbsp; They're ultimately doing themselves a
disservice.
&lt;/p&gt;
&lt;p&gt;
Regular Expressions are a tool that should be in every programmers bag.&amp;nbsp; If you
don't understand regular expressions and do a google search every time you need a
regular expression, shame on you!&amp;nbsp; It's time to bite the bullet and learn regular
expressions.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=445de521-8049-4f1a-a99b-e65b7590a7ac" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,445de521-8049-4f1a-a99b-e65b7590a7ac.aspx</comments>
      <category>.NET</category>
      <category>Musings</category>
      <category>Software</category>
    </item>
    <item>
      <trackback:ping>http://www.timbarcz.com/blog/Trackback.aspx?guid=a609e409-65e0-4eb9-abb4-1d8e3797dea9</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,a609e409-65e0-4eb9-abb4-1d8e3797dea9.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,a609e409-65e0-4eb9-abb4-1d8e3797dea9.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=a609e409-65e0-4eb9-abb4-1d8e3797dea9</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
"TopicProvider.cs," the developer shouted, indicating someone in the room
had committed an updated project file, but not the new file.  Humbled, I quickly
went to my sandbox and added and committed the file.
</p>
        <p>
"TopicProviderTests.cs," came another shout.  Again quickly I added
the file.
</p>
        <p>
Feeling embarrassed that I missed committing two files, I noticed that I had no icon
overlays on my files, indicating my status with the CVS repository.  No matter
what I did I couldn't get the overlays to come back, and boy I was missing them. 
You don't realize how often you use the visual cues they provide until they're gone!
</p>
        <p>
I tried:
</p>
        <ul>
          <li>
Rebuilding overlay icons in TortoiseCVS Preferences 
</li>
          <li>
Rebuilding icons with <a href="http://download.microsoft.com/download/f/c/a/fca6767b-9ed9-45a6-b352-839afb2a2679/TweakUiPowertoySetup.exe">TweakUI</a> (one
of <a href="http://www.microsoft.com/windowsxp/downloads/powertoys/xppowertoys.mspx">Microsoft's
Power Toys</a>) 
</li>
          <li>
Reinstalling TortoiseCVS 
</li>
        </ul>
        <p>
None of the above worked.  The only thing I could think of was that I had recently
installed Office 2007, which installed a folder synching program called "Groove". 
I thought maybe Groove worked similarly to CVS and provided some icon overlay to notify
you of a change.
</p>
        <p>
Some digging provided the following provided the following from the <a href="http://www.tortoisecvs.org/faq.html">TortoiseCVS
Page</a>:
</p>
        <blockquote>
          <p>
The number of overlays allowed by Windows is limited to 15 in total. Windows itself
uses 4 of those, leaving the remaining 11 to be used by other applications. If you
have other software installed that uses icon overlays, the limit may be exceeded,
causing some overlays not to be shown. 
</p>
          <p>
To resolve this problem, either uninstall the other software altogether, or manually
remove one of the other icon overlay handlers. This can be done by editing the registry.
Use at your own risk! You can delete [unused] entries at <tt>HKLM/SOFTWARE/Microsoft/Windows/CurrentVersion/Explorer/ShellIconOverlayIdentifiers</tt>. 
</p>
        </blockquote>
        <p>
A quick check of the registry key above showed the following:
</p>
        <p>
          <a href="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/MissingCVSIconOverlaysWhySVNisTrulyanUpg_8EFD/RegistryWithGroove.jpg">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="423" alt="RegistryWithGroove" src="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/MissingCVSIconOverlaysWhySVNisTrulyanUpg_8EFD/RegistryWithGroove_thumb.jpg" width="409" border="0" />
          </a>
        </p>
        <p>
Notice the number of Groove icons.  <strong>Windows sorts the registry based
on Alpha, and this must've been found somewhere else, because if you look, TortoiseSVN
stores it's overlays by preceeding the name with an integer.  Very smart!!</strong></p>
        <p>
My TortoiseCVS overlays disappeared when I had installed Groove due to the limitation
that Windows has on overlays.  I uninstalled Groove and there appeared my TortoiseCVS
overlays.  Here's my registry after:
</p>
        <p>
          <a href="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/MissingCVSIconOverlaysWhySVNisTrulyanUpg_8EFD/RegistryWithoutGroove.jpg">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="305" alt="RegistryWithoutGroove" src="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/MissingCVSIconOverlaysWhySVNisTrulyanUpg_8EFD/RegistryWithoutGroove_thumb.jpg" width="391" border="0" />
          </a> 
</p>
        <p>
Completely evolutionary thinking that prompted someone in the SVN camp to notice this
problem and figure they should make themselves first in the registry all the time
and therefore never have users experience what I did.
</p>
        <img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=a609e409-65e0-4eb9-abb4-1d8e3797dea9" />
      </body>
      <title>Missing TortoiseCVS Icon Overlays - How SVN is Just a Bit Smarter</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,a609e409-65e0-4eb9-abb4-1d8e3797dea9.aspx</guid>
      <link>http://www.timbarcz.com/blog/MissingTortoiseCVSIconOverlaysHowSVNIsJustABitSmarter.aspx</link>
      <pubDate>Thu, 17 Jan 2008 14:09:32 GMT</pubDate>
      <description>&lt;p&gt;
&amp;quot;TopicProvider.cs,&amp;quot; the developer shouted, indicating someone in the room
had committed an updated project file, but not the new file.&amp;#160; Humbled, I quickly
went to my sandbox and added and committed the file.
&lt;/p&gt;
&lt;p&gt;
&amp;quot;TopicProviderTests.cs,&amp;quot; came another shout.&amp;#160; Again quickly I added
the file.
&lt;/p&gt;
&lt;p&gt;
Feeling embarrassed that I missed committing two files, I noticed that I had no icon
overlays on my files, indicating my status with the CVS repository.&amp;#160; No matter
what I did I couldn't get the overlays to come back, and boy I was missing them.&amp;#160;
You don't realize how often you use the visual cues they provide until they're gone!
&lt;/p&gt;
&lt;p&gt;
I tried:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Rebuilding overlay icons in TortoiseCVS Preferences 
&lt;/li&gt;
&lt;li&gt;
Rebuilding icons with &lt;a href="http://download.microsoft.com/download/f/c/a/fca6767b-9ed9-45a6-b352-839afb2a2679/TweakUiPowertoySetup.exe"&gt;TweakUI&lt;/a&gt; (one
of &lt;a href="http://www.microsoft.com/windowsxp/downloads/powertoys/xppowertoys.mspx"&gt;Microsoft's
Power Toys&lt;/a&gt;) 
&lt;/li&gt;
&lt;li&gt;
Reinstalling TortoiseCVS 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
None of the above worked.&amp;#160; The only thing I could think of was that I had recently
installed Office 2007, which installed a folder synching program called &amp;quot;Groove&amp;quot;.&amp;#160;
I thought maybe Groove worked similarly to CVS and provided some icon overlay to notify
you of a change.
&lt;/p&gt;
&lt;p&gt;
Some digging provided the following provided the following from the &lt;a href="http://www.tortoisecvs.org/faq.html"&gt;TortoiseCVS
Page&lt;/a&gt;:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
The number of overlays allowed by Windows is limited to 15 in total. Windows itself
uses 4 of those, leaving the remaining 11 to be used by other applications. If you
have other software installed that uses icon overlays, the limit may be exceeded,
causing some overlays not to be shown. 
&lt;/p&gt;
&lt;p&gt;
To resolve this problem, either uninstall the other software altogether, or manually
remove one of the other icon overlay handlers. This can be done by editing the registry.
Use at your own risk! You can delete [unused] entries at &lt;tt&gt;HKLM/SOFTWARE/Microsoft/Windows/CurrentVersion/Explorer/ShellIconOverlayIdentifiers&lt;/tt&gt;. 
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
A quick check of the registry key above showed the following:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/MissingCVSIconOverlaysWhySVNisTrulyanUpg_8EFD/RegistryWithGroove.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="423" alt="RegistryWithGroove" src="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/MissingCVSIconOverlaysWhySVNisTrulyanUpg_8EFD/RegistryWithGroove_thumb.jpg" width="409" border="0" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Notice the number of Groove icons.&amp;#160; &lt;strong&gt;Windows sorts the registry based
on Alpha, and this must've been found somewhere else, because if you look, TortoiseSVN
stores it's overlays by preceeding the name with an integer.&amp;#160; Very smart!!&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
My TortoiseCVS overlays disappeared when I had installed Groove due to the limitation
that Windows has on overlays.&amp;#160; I uninstalled Groove and there appeared my TortoiseCVS
overlays.&amp;#160; Here's my registry after:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/MissingCVSIconOverlaysWhySVNisTrulyanUpg_8EFD/RegistryWithoutGroove.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="305" alt="RegistryWithoutGroove" src="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/MissingCVSIconOverlaysWhySVNisTrulyanUpg_8EFD/RegistryWithoutGroove_thumb.jpg" width="391" border="0" /&gt;&lt;/a&gt;&amp;#160;
&lt;/p&gt;
&lt;p&gt;
Completely evolutionary thinking that prompted someone in the SVN camp to notice this
problem and figure they should make themselves first in the registry all the time
and therefore never have users experience what I did.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=a609e409-65e0-4eb9-abb4-1d8e3797dea9" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,a609e409-65e0-4eb9-abb4-1d8e3797dea9.aspx</comments>
      <category>Software</category>
      <category>Tools</category>
    </item>
    <item>
      <trackback:ping>http://www.timbarcz.com/blog/Trackback.aspx?guid=b87b9b7c-68a4-4341-8572-164999028260</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,b87b9b7c-68a4-4341-8572-164999028260.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,b87b9b7c-68a4-4341-8572-164999028260.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=b87b9b7c-68a4-4341-8572-164999028260</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
A few days ago I posted about our frustrations with <a href="http://www.timbarcz.com/blog/2008/01/09/LINQToSQLFailsToImpressAsAnORM.aspx" target="_blank">LINQ
to SQL and that it was not impressing me</a>.  After a few days and far too much
time devoted to figuring this framework out, we've abandoned our attempts to use LINQ
right now.  It was far too difficult to manage entity objects with it and relations,
in fact we experienced the same frustration <a href="http://www.west-wind.com/WebLog/posts/134095.aspx" target="_blank">attaching
our entities to LINQ to SQL</a> as <a href="http://www.west-wind.com/weblog/" target="_blank">Rick
Strahl</a>, where he aptly renamed LINQ to CLUNQ:
</p>
        <blockquote>
          <p>
            <strong>CLUNQ</strong>
          </p>
          <p>
The more I look at LINQ the more I'm coming to the conclusion that using LINQ in a
middle tier - especially in a generic business object architecture - is not going
to work well. There are many little problem issues that when all added up point at
more problems being created than solved by the entity generation and easy CRUD layer. 
</p>
          <p>
Hopefully I'm just being dense and there are some workarounds for some of these issues,
but reading a number of other posts on this 'detached' issue at least it doesn't appear
so... Apparently even the ADO.NET Entity framework doesn't address this issue. &lt;shrug&gt;
</p>
          <p>
 
</p>
        </blockquote>
        <p>
Well...back to your regularly scheduled DAL.
</p>
        <img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=b87b9b7c-68a4-4341-8572-164999028260" />
      </body>
      <title>Abandoning LINQ to SQL</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,b87b9b7c-68a4-4341-8572-164999028260.aspx</guid>
      <link>http://www.timbarcz.com/blog/AbandoningLINQToSQL.aspx</link>
      <pubDate>Fri, 11 Jan 2008 08:21:44 GMT</pubDate>
      <description>&lt;p&gt;
A few days ago I posted about our frustrations with &lt;a href="http://www.timbarcz.com/blog/2008/01/09/LINQToSQLFailsToImpressAsAnORM.aspx" target="_blank"&gt;LINQ
to SQL and that it was not impressing me&lt;/a&gt;.&amp;#160; After a few days and far too much
time devoted to figuring this framework out, we've abandoned our attempts to use LINQ
right now.&amp;#160; It was far too difficult to manage entity objects with it and relations,
in fact we experienced the same frustration &lt;a href="http://www.west-wind.com/WebLog/posts/134095.aspx" target="_blank"&gt;attaching
our entities to LINQ to SQL&lt;/a&gt; as &lt;a href="http://www.west-wind.com/weblog/" target="_blank"&gt;Rick
Strahl&lt;/a&gt;, where he aptly renamed LINQ to CLUNQ:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;strong&gt;CLUNQ&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The more I look at LINQ the more I'm coming to the conclusion that using LINQ in a
middle tier - especially in a generic business object architecture - is not going
to work well. There are many little problem issues that when all added up point at
more problems being created than solved by the entity generation and easy CRUD layer. 
&lt;/p&gt;
&lt;p&gt;
Hopefully I'm just being dense and there are some workarounds for some of these issues,
but reading a number of other posts on this 'detached' issue at least it doesn't appear
so... Apparently even the ADO.NET Entity framework doesn't address this issue. &amp;lt;shrug&amp;gt;
&lt;/p&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Well...back to your regularly scheduled DAL.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=b87b9b7c-68a4-4341-8572-164999028260" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,b87b9b7c-68a4-4341-8572-164999028260.aspx</comments>
      <category>ORM</category>
      <category>Software</category>
    </item>
    <item>
      <trackback:ping>http://www.timbarcz.com/blog/Trackback.aspx?guid=b659a088-3746-4476-bf21-268474022814</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,b659a088-3746-4476-bf21-268474022814.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,b659a088-3746-4476-bf21-268474022814.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=b659a088-3746-4476-bf21-268474022814</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Over the past year or two I've really tried to improve coding abilities by thinking
on objects.  By talking about, and programming, real-world objects you can reduce
the impedance with clients when discussing the problem.  I'm not alone, <a href="http://codebetter.com/blogs/karlseguin/default.aspx" target="_blank">Karl
Seguin</a> comments about domain objects in a <a href="http://codebetter.com/blogs/karlseguin/archive/tags/Foundations/default.aspx" target="_blank">recent
blog series about the foundations of programming</a>:
</p>
        <blockquote>
          <p>
Anyone who's gone through the above knows that learning a new business is the most
complicated part of any programming job. For that reason, there are real benefits
to making our code resemble, as much as possible, the domain. Essentially what I'm
talking about is communication. If your users are talking about Strategic Outcomes,
which a month ago meant nothing to you, and your code talks about StrategicOutcome
then some of the ambiguity and much of the potential misinterpretation is cleaned
up. Many people, myself included, believe that a good place to start is with key noun-words
that your business experts and users use.
</p>
        </blockquote>
        <p>
While looking at LINQ over the last few days I've become disappointed to find out
that many-to-many relationships aren't supported.  Sure you can <a href="http://blogs.msdn.com/mitsu/archive/2007/06/21/how-to-implement-a-many-to-many-relationship-using-linq-to-sql.aspx" target="_blank">hack
you're way around it</a>, but <a href="http://www.timbarcz.com/blog/2007/12/05/AGoodReasonToCodeReview.aspx" target="_blank">anyone
can hack their way around anything</a>.  If you question whether or not it's
a hack, consider all the language features implemented to make LINQ work and still
many-to-many isn't supported.
</p>
        <p>
LINQ requires an intermediate class in order to do a join.  In the real world
there is no such this as OrderProductJoin or TopicCategoryJoin, so why do I have to
have that object in code?  That <a href="http://en.wikipedia.org/wiki/Code_smell" target="_blank">smells</a> funny.
</p>
        <p>
I feel the pain of <a href="http://hammett.castleproject.org/" target="_blank">Hamilton
Verissimo</a>, the founder of <a href="http://www.castleproject.org" target="_blank">CastleProject</a>,
when he comments about <a href="http://hammett.castleproject.org/?p=186" target="_blank">FUD
surrounding Castle</a>.  ActiveRecord, as an ORM, has respected the domain object
for quite some time while providing Many-to-Many support.  LINQ however requires
an DBML file, the usage of DataContext everywhere, and doesn't support many-to-many
joins.
</p>
        <p>
          <a href="http://davidhayden.com" target="_blank">David Hayden</a>, respected blogger
and Microsoft MVP <a href="http://davidhayden.com/blog/dave/archive/2005/09/23/2484.aspx" target="_blank">defends
LINQ to SQL</a> but adds:
</p>
        <blockquote>
          <p>
            <strong>DLinq</strong> is perfect for those developers who focus on small applications
and Microsoft-related technologies.
</p>
        </blockquote>
        <p>
After having used both NHibernate/ActiveRecord and LINQ, the clear winner right now
in my mind is NHibernate/ActiveRecord, despite LINQ having the backing of Microsoft. 
ActiveRecord respects the domain model allowing you to talk about objects with a shallower
learning that LINQ.
</p>
        <img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=b659a088-3746-4476-bf21-268474022814" />
      </body>
      <title>LINQ To SQL Fails To Impress As An ORM</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,b659a088-3746-4476-bf21-268474022814.aspx</guid>
      <link>http://www.timbarcz.com/blog/LINQToSQLFailsToImpressAsAnORM.aspx</link>
      <pubDate>Wed, 09 Jan 2008 11:34:10 GMT</pubDate>
      <description>&lt;p&gt;
Over the past year or two I've really tried to improve coding abilities by thinking
on objects.&amp;#160; By talking about, and programming, real-world objects you can reduce
the impedance with clients when discussing the problem.&amp;#160; I'm not alone, &lt;a href="http://codebetter.com/blogs/karlseguin/default.aspx" target="_blank"&gt;Karl
Seguin&lt;/a&gt; comments about domain objects in a &lt;a href="http://codebetter.com/blogs/karlseguin/archive/tags/Foundations/default.aspx" target="_blank"&gt;recent
blog series about the foundations of programming&lt;/a&gt;:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
Anyone who's gone through the above knows that learning a new business is the most
complicated part of any programming job. For that reason, there are real benefits
to making our code resemble, as much as possible, the domain. Essentially what I'm
talking about is communication. If your users are talking about Strategic Outcomes,
which a month ago meant nothing to you, and your code talks about StrategicOutcome
then some of the ambiguity and much of the potential misinterpretation is cleaned
up. Many people, myself included, believe that a good place to start is with key noun-words
that your business experts and users use.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
While looking at LINQ over the last few days I've become disappointed to find out
that many-to-many relationships aren't supported.&amp;#160; Sure you can &lt;a href="http://blogs.msdn.com/mitsu/archive/2007/06/21/how-to-implement-a-many-to-many-relationship-using-linq-to-sql.aspx" target="_blank"&gt;hack
you're way around it&lt;/a&gt;, but &lt;a href="http://www.timbarcz.com/blog/2007/12/05/AGoodReasonToCodeReview.aspx" target="_blank"&gt;anyone
can hack their way around anything&lt;/a&gt;.&amp;#160; If you question whether or not it's
a hack, consider all the language features implemented to make LINQ work and still
many-to-many isn't supported.
&lt;/p&gt;
&lt;p&gt;
LINQ requires an intermediate class in order to do a join.&amp;#160; In the real world
there is no such this as OrderProductJoin or TopicCategoryJoin, so why do I have to
have that object in code?&amp;#160; That &lt;a href="http://en.wikipedia.org/wiki/Code_smell" target="_blank"&gt;smells&lt;/a&gt; funny.
&lt;/p&gt;
&lt;p&gt;
I feel the pain of &lt;a href="http://hammett.castleproject.org/" target="_blank"&gt;Hamilton
Verissimo&lt;/a&gt;, the founder of &lt;a href="http://www.castleproject.org" target="_blank"&gt;CastleProject&lt;/a&gt;,
when he comments about &lt;a href="http://hammett.castleproject.org/?p=186" target="_blank"&gt;FUD
surrounding Castle&lt;/a&gt;.&amp;#160; ActiveRecord, as an ORM, has respected the domain object
for quite some time while providing Many-to-Many support.&amp;#160; LINQ however requires
an DBML file, the usage of DataContext everywhere, and doesn't support many-to-many
joins.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://davidhayden.com" target="_blank"&gt;David Hayden&lt;/a&gt;, respected blogger
and Microsoft MVP &lt;a href="http://davidhayden.com/blog/dave/archive/2005/09/23/2484.aspx" target="_blank"&gt;defends
LINQ to SQL&lt;/a&gt; but adds:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;strong&gt;DLinq&lt;/strong&gt; is perfect for those developers who focus on small applications
and Microsoft-related technologies.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
After having used both NHibernate/ActiveRecord and LINQ, the clear winner right now
in my mind is NHibernate/ActiveRecord, despite LINQ having the backing of Microsoft.&amp;#160;
ActiveRecord respects the domain model allowing you to talk about objects with a shallower
learning that LINQ.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=b659a088-3746-4476-bf21-268474022814" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,b659a088-3746-4476-bf21-268474022814.aspx</comments>
      <category>Musings</category>
      <category>ORM</category>
      <category>Software</category>
    </item>
    <item>
      <trackback:ping>http://www.timbarcz.com/blog/Trackback.aspx?guid=dd6f21eb-a680-4c42-8227-fea244f4438e</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,dd6f21eb-a680-4c42-8227-fea244f4438e.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,dd6f21eb-a680-4c42-8227-fea244f4438e.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=dd6f21eb-a680-4c42-8227-fea244f4438e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.hanselman.com" target="_blank">Scott Hanselmen</a> posted <a href="http://www.hanselman.com/blog/aideRSSNowThingsAreGettingSmarter.aspx" target="_blank">this
morning about aideRSS</a>.  I decided to run <a href="http://www.aiderss.com" target="_blank">aideRSS</a> over
my blog to see what would the results would be.  Apparently I have only one "Great
Post" which made me chuckle:
</p>
        <p>
          <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="336" alt="aideRSS" src="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/WhatMakesAPostGreatAideRSSAnalyzesBlogsF_6A05/aideRSS_3.jpg" width="547" align="right" border="0" />
        </p>
        <p>
Apparently my test post from yesterday was "Great".  I wonder if that's
an indictment on all my other posts or something internally goofy with aideRSS's calculations. 
I was impressed that AideRSS correctly labeled my <a href="http://www.timbarcz.com/blog/2007/12/14/VistaPrinterInstalledDellAllInOne922NowPrinting.aspx">Vista
Printer Installed - Dell All-In-One 922 Now Printing</a> and <a href="http://www.timbarcz.com/blog/2007/12/05/NantSetupForVisualStudio2008AndNet35.aspx">Nant
Setup for Visual Studio 2008 and .net 3.5</a> as having the high scores in the PostRank
column.  These two posts are clearly the most trafficked when I look at site
statistics.
</p>
        <p>
I have to say I'm impressed with what <a href="http://blog.aiderss.com/faq/#technology" target="_blank">how
it works</a>:
</p>
        <blockquote>
          <p>
"...in a nutshell you enter the URL of the feed that you would like to have filtered
and we do some math and checking around the web to learn about this feed, its statistics,
and people’s reaction to it. We then assign PostRank™ scores to all articles
in the feed and provide you with a variety of tools to sort and parse these items
of interest into manageable lots for you to scan and digest at your leisure."
</p>
        </blockquote>
        <p>
          <a href="http://www.hanselman.com/blog/aideRSSNowThingsAreGettingSmarter.aspx" target="_blank">Scott's
explanation</a> may be more meaty:
</p>
        <blockquote>
          <p>
"Well, since it can't really measure <em>quality</em> it infers it indirectly
by creating a metric based on the number of del.icio.us bookmarks, diggs, Blogger
references, Technorati references, Google BlogSearch reference, IceRocket references
and a few others."
</p>
        </blockquote>
        <p>
As I'm blogging more I intend to check in on AideRSS every so often as I think this
is just another way to see which posts are worthwhile and which aren't.  However,
I will say that it briefly crossed my mind to retire from blogging seeing as how 100%
of my posts are "Good", easily beating two of my favorite bloggers <a href="http://www.hanselman.com" target="_blank">Scott
Hanselman</a> (61%) and <a href="http://www.codinghorror.com/" target="_blank">Jeff
Atwood</a> (75%). 
</p>
        <img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=dd6f21eb-a680-4c42-8227-fea244f4438e" />
      </body>
      <title>What Makes A Post Great - AideRSS Analyzes Blogs For Quality</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,dd6f21eb-a680-4c42-8227-fea244f4438e.aspx</guid>
      <link>http://www.timbarcz.com/blog/WhatMakesAPostGreatAideRSSAnalyzesBlogsForQuality.aspx</link>
      <pubDate>Wed, 19 Dec 2007 13:31:30 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.hanselman.com" target="_blank"&gt;Scott Hanselmen&lt;/a&gt; posted &lt;a href="http://www.hanselman.com/blog/aideRSSNowThingsAreGettingSmarter.aspx" target="_blank"&gt;this
morning about aideRSS&lt;/a&gt;.&amp;#160; I decided to run &lt;a href="http://www.aiderss.com" target="_blank"&gt;aideRSS&lt;/a&gt; over
my blog to see what would the results would be.&amp;#160; Apparently I have only one &amp;quot;Great
Post&amp;quot; which made me chuckle:
&lt;/p&gt;
&lt;p&gt;
&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="336" alt="aideRSS" src="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/WhatMakesAPostGreatAideRSSAnalyzesBlogsF_6A05/aideRSS_3.jpg" width="547" align="right" border="0" /&gt; 
&lt;/p&gt;
&lt;p&gt;
Apparently my test post from yesterday was &amp;quot;Great&amp;quot;.&amp;#160; I wonder if that's
an indictment on all my other posts or something internally goofy with aideRSS's calculations.&amp;#160;
I was impressed that AideRSS correctly labeled my &lt;a href="http://www.timbarcz.com/blog/2007/12/14/VistaPrinterInstalledDellAllInOne922NowPrinting.aspx"&gt;Vista
Printer Installed - Dell All-In-One 922 Now Printing&lt;/a&gt; and &lt;a href="http://www.timbarcz.com/blog/2007/12/05/NantSetupForVisualStudio2008AndNet35.aspx"&gt;Nant
Setup for Visual Studio 2008 and .net 3.5&lt;/a&gt; as having the high scores in the PostRank
column.&amp;#160; These two posts are clearly the most trafficked when I look at site
statistics.
&lt;/p&gt;
&lt;p&gt;
I have to say I'm impressed with what &lt;a href="http://blog.aiderss.com/faq/#technology" target="_blank"&gt;how
it works&lt;/a&gt;:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&amp;quot;...in a nutshell you enter the URL of the feed that you would like to have filtered
and we do some math and checking around the web to learn about this feed, its statistics,
and people&amp;#8217;s reaction to it. We then assign PostRank&amp;#8482; scores to all articles
in the feed and provide you with a variety of tools to sort and parse these items
of interest into manageable lots for you to scan and digest at your leisure.&amp;quot;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
&lt;a href="http://www.hanselman.com/blog/aideRSSNowThingsAreGettingSmarter.aspx" target="_blank"&gt;Scott's
explanation&lt;/a&gt; may be more meaty:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&amp;quot;Well, since it can't really measure &lt;em&gt;quality&lt;/em&gt; it infers it indirectly
by creating a metric based on the number of del.icio.us bookmarks, diggs, Blogger
references, Technorati references, Google BlogSearch reference, IceRocket references
and a few others.&amp;quot;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
As I'm blogging more I intend to check in on AideRSS every so often as I think this
is just another way to see which posts are worthwhile and which aren't.&amp;#160; However,
I will say that it briefly crossed my mind to retire from blogging seeing as how 100%
of my posts are &amp;quot;Good&amp;quot;, easily beating two of my favorite bloggers &lt;a href="http://www.hanselman.com" target="_blank"&gt;Scott
Hanselman&lt;/a&gt; (61%) and &lt;a href="http://www.codinghorror.com/" target="_blank"&gt;Jeff
Atwood&lt;/a&gt; (75%). 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=dd6f21eb-a680-4c42-8227-fea244f4438e" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,dd6f21eb-a680-4c42-8227-fea244f4438e.aspx</comments>
      <category>Musings</category>
      <category>Software</category>
    </item>
    <item>
      <trackback:ping>http://www.timbarcz.com/blog/Trackback.aspx?guid=80386135-76fb-4f16-a6d1-b6c5a856d047</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,80386135-76fb-4f16-a6d1-b6c5a856d047.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,80386135-76fb-4f16-a6d1-b6c5a856d047.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=80386135-76fb-4f16-a6d1-b6c5a856d047</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I've had it happen a few times since starting to use <a href="http://windowslivewriter.spaces.live.com/blog/cns!D85741BB5E0BE8AA!1272.entry">Live
Writer</a> a few weeks ago.  I'll post and see the new post and then the post
will be gone.  The latest occurrence is this <a href="http://www.timbarcz.com/blog/2007/12/18/LinuxADesktopSystemItIsNot.aspx">morning's
post about Linux</a>.
</p>
        <p>
I presume it to be a Live Writer problem since I never had this problem when using
the HTML Wysiwyg editor in the dasBlog.  However the strange thing is that the
post is clearly visible, which means it's gotten to dasBlog just fine only later to
disappear, so is this a dasBlog problem?
</p>
        <p>
Anyone have any idea what's going on?
</p>
        <img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=80386135-76fb-4f16-a6d1-b6c5a856d047" />
      </body>
      <title>Windows Live Writer Deletes My DasBlog Posts</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,80386135-76fb-4f16-a6d1-b6c5a856d047.aspx</guid>
      <link>http://www.timbarcz.com/blog/WindowsLiveWriterDeletesMyDasBlogPosts.aspx</link>
      <pubDate>Tue, 18 Dec 2007 19:04:57 GMT</pubDate>
      <description>&lt;p&gt;
I've had it happen a few times since starting to use &lt;a href="http://windowslivewriter.spaces.live.com/blog/cns!D85741BB5E0BE8AA!1272.entry"&gt;Live
Writer&lt;/a&gt; a few weeks ago.&amp;#160; I'll post and see the new post and then the post
will be gone.&amp;#160; The latest occurrence is this &lt;a href="http://www.timbarcz.com/blog/2007/12/18/LinuxADesktopSystemItIsNot.aspx"&gt;morning's
post about Linux&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
I presume it to be a Live Writer problem since I never had this problem when using
the HTML Wysiwyg editor in the dasBlog.&amp;#160; However the strange thing is that the
post is clearly visible, which means it's gotten to dasBlog just fine only later to
disappear, so is this a dasBlog problem?
&lt;/p&gt;
&lt;p&gt;
Anyone have any idea what's going on?
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=80386135-76fb-4f16-a6d1-b6c5a856d047" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,80386135-76fb-4f16-a6d1-b6c5a856d047.aspx</comments>
      <category>Software</category>
    </item>
    <item>
      <trackback:ping>http://www.timbarcz.com/blog/Trackback.aspx?guid=ae04133d-9099-476e-b8eb-31f096f8c706</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,ae04133d-9099-476e-b8eb-31f096f8c706.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,ae04133d-9099-476e-b8eb-31f096f8c706.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=ae04133d-9099-476e-b8eb-31f096f8c706</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I'm reacquainting myself with Visual Basic.  However at this point I'm seeing
some strange behavior.  I'll quickly navigate around it but I just find it odd,
take a look for yourself:
</p>
        <p>
          <a href="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/VisualBasicTryCatchOddities_AB93/Vb%20Exception%20Oddities_3.jpg">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="218" alt="Vb Exception Oddities" src="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/VisualBasicTryCatchOddities_AB93/Vb%20Exception%20Oddities_thumb_3.jpg" width="644" border="0" />
          </a>
        </p>
        <p>
What seems very strange to me is that you can see very clearly that on line 1041,
System.FormatException is being caught, however the exception is never caught.
</p>
        <p>
I'm wondering if it has to due with the multiple statements all in one line? 
Any thoughts?
</p>
        <img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=ae04133d-9099-476e-b8eb-31f096f8c706" />
      </body>
      <title>Visual Basic Try/Catch Oddities</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,ae04133d-9099-476e-b8eb-31f096f8c706.aspx</guid>
      <link>http://www.timbarcz.com/blog/VisualBasicTryCatchOddities.aspx</link>
      <pubDate>Sat, 15 Dec 2007 19:24:19 GMT</pubDate>
      <description>&lt;p&gt;
I'm reacquainting myself with Visual Basic.&amp;#160; However at this point I'm seeing
some strange behavior.&amp;#160; I'll quickly navigate around it but I just find it odd,
take a look for yourself:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/VisualBasicTryCatchOddities_AB93/Vb%20Exception%20Oddities_3.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="218" alt="Vb Exception Oddities" src="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/VisualBasicTryCatchOddities_AB93/Vb%20Exception%20Oddities_thumb_3.jpg" width="644" border="0" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
What seems very strange to me is that you can see very clearly that on line 1041,
System.FormatException is being caught, however the exception is never caught.
&lt;/p&gt;
&lt;p&gt;
I'm wondering if it has to due with the multiple statements all in one line?&amp;#160;
Any thoughts?
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=ae04133d-9099-476e-b8eb-31f096f8c706" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,ae04133d-9099-476e-b8eb-31f096f8c706.aspx</comments>
      <category>Software</category>
    </item>
    <item>
      <trackback:ping>http://www.timbarcz.com/blog/Trackback.aspx?guid=d60271d9-db0d-461e-826d-54413f1b30ec</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,d60271d9-db0d-461e-826d-54413f1b30ec.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,d60271d9-db0d-461e-826d-54413f1b30ec.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=d60271d9-db0d-461e-826d-54413f1b30ec</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Has this ever happened to you?  You been asked to put together something quickly
to demonstrate some functionality and it somehow has ended up in production? 
I have, and for that reason, I believe there is <strong>no such thing as a prototype</strong>.
</p>
        <p>
When I'm asked to see if something is possible, I, being a good <a href="http://www.amazon.com/Pragmatic-Programmer-Journeyman-Master/dp/020161622X">pragmatic
programmer</a>, run off to implement a quick prototype.  Author <a href="http://pragdave.pragprog.com/">David
Thomas</a> explains the idea of a prototype:
</p>
        <blockquote>
          <p>
Prototypes by their nature are not designed to be long lasting code. Prototypes are
designed to be thrown away. They're one-offs. It is inappropriate to over-engineer
a prototype. A prototype is like a town in a western movie. It's all facade. There's
nothing behind it. You cannot move in and raise a family in one of those houses.
</p>
        </blockquote>
        <p>
If you've been around for any period of time in development, you've probably written
something yourself, or at the very least seen something that has weaseled it's way
to production that was never meant for production.
</p>
        <p>
Believe it or not, the site below is in production.  
</p>
        <p>
          <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="263" alt="proto2" src="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/TheresNoSuchThingAsAPrototype_EDBE/proto2_1.jpg" width="644" border="0" />
        </p>
        <p>
Currently the site performs limited, but somewhat crucial, functionality.  The
administrative home page clearly leaves something to be desired.  However, I
happen to know <a href="http://www.timbarcz.com/blog/">the developer</a> who worked
on this site and he explains that it was never intended to go live in it's current
state.  Business rules/needs trump gold-plating, it's a concept that the business-brain
part of me understand, but the developer/craftman.
</p>
        <p>
Talking with another developer today, he recalled a system he put together as a consultant
to demonstrate some piece of functionality.  Some time later another developer
was putting a pretty UI on it, since it had made it's way to production.
</p>
        <p>
I think somewhere deep inside of developers, we know that when asked to prototype
something it may someday end up in production, whether we build it for production
or not.  Developers are prideful, artistic creatures.  Our code is our craft! 
We're also learnable.  I now tend to make prototype code something I would be
proud of if I were to show it someone else.
</p>
        <p>
Ultimately I think prototypes are a great tool, but there's a danger in the prototype
going live, which from the definition above isn't sustainable.  Ultimately that's
why I'm jaded a bit and say that a prototype is an imaginary thing, only production
and soon to be production.
</p>
        <img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=d60271d9-db0d-461e-826d-54413f1b30ec" />
      </body>
      <title>There's No Such Thing As A Prototype</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,d60271d9-db0d-461e-826d-54413f1b30ec.aspx</guid>
      <link>http://www.timbarcz.com/blog/TheresNoSuchThingAsAPrototype.aspx</link>
      <pubDate>Fri, 14 Dec 2007 00:08:53 GMT</pubDate>
      <description>&lt;p&gt;
Has this ever happened to you?&amp;#160; You been asked to put together something quickly
to demonstrate some functionality and it somehow has ended up in production?&amp;#160;
I have, and for that reason, I believe there is &lt;strong&gt;no such thing as a prototype&lt;/strong&gt;.
&lt;/p&gt;
&lt;p&gt;
When I'm asked to see if something is possible, I, being a good &lt;a href="http://www.amazon.com/Pragmatic-Programmer-Journeyman-Master/dp/020161622X"&gt;pragmatic
programmer&lt;/a&gt;, run off to implement a quick prototype.&amp;#160; Author &lt;a href="http://pragdave.pragprog.com/"&gt;David
Thomas&lt;/a&gt; explains the idea of a prototype:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
Prototypes by their nature are not designed to be long lasting code. Prototypes are
designed to be thrown away. They're one-offs. It is inappropriate to over-engineer
a prototype. A prototype is like a town in a western movie. It's all facade. There's
nothing behind it. You cannot move in and raise a family in one of those houses.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
If you've been around for any period of time in development, you've probably written
something yourself, or at the very least seen something that has weaseled it's way
to production that was never meant for production.
&lt;/p&gt;
&lt;p&gt;
Believe it or not, the site below is in production.&amp;#160; 
&lt;/p&gt;
&lt;p&gt;
&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="263" alt="proto2" src="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/TheresNoSuchThingAsAPrototype_EDBE/proto2_1.jpg" width="644" border="0" /&gt;
&lt;/p&gt;
&lt;p&gt;
Currently the site performs limited, but somewhat crucial, functionality.&amp;#160; The
administrative home page clearly leaves something to be desired.&amp;#160; However, I
happen to know &lt;a href="http://www.timbarcz.com/blog/"&gt;the developer&lt;/a&gt; who worked
on this site and he explains that it was never intended to go live in it's current
state.&amp;#160; Business rules/needs trump gold-plating, it's a concept that the business-brain
part of me understand, but the developer/craftman.
&lt;/p&gt;
&lt;p&gt;
Talking with another developer today, he recalled a system he put together as a consultant
to demonstrate some piece of functionality.&amp;#160; Some time later another developer
was putting a pretty UI on it, since it had made it's way to production.
&lt;/p&gt;
&lt;p&gt;
I think somewhere deep inside of developers, we know that when asked to prototype
something it may someday end up in production, whether we build it for production
or not.&amp;#160; Developers are prideful, artistic creatures.&amp;#160; Our code is our craft!&amp;#160;
We're also learnable.&amp;#160; I now tend to make prototype code something I would be
proud of if I were to show it someone else.
&lt;/p&gt;
&lt;p&gt;
Ultimately I think prototypes are a great tool, but there's a danger in the prototype
going live, which from the definition above isn't sustainable.&amp;#160; Ultimately that's
why I'm jaded a bit and say that a prototype is an imaginary thing, only production
and soon to be production.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=d60271d9-db0d-461e-826d-54413f1b30ec" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,d60271d9-db0d-461e-826d-54413f1b30ec.aspx</comments>
      <category>Musings</category>
      <category>Software</category>
    </item>
    <item>
      <trackback:ping>http://www.timbarcz.com/blog/Trackback.aspx?guid=533530cf-8878-4f5f-8236-33dadc5e506c</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,533530cf-8878-4f5f-8236-33dadc5e506c.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,533530cf-8878-4f5f-8236-33dadc5e506c.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=533530cf-8878-4f5f-8236-33dadc5e506c</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Programming languages these days do their best from keeping you from doing something
stupid.  We have compile time checking, "managed" code, and garbage
collection.  We've been led to believe that if you just write the code, in any
fashion that meets the requirements of the project, that any missteps you may take
in code will be corrected.  
</p>
        <p>
That's the case with garbage collection.  We've been sold this idea that variables
can be created wherever, whenever, and however you want, the runtime environment will
clean up after you.
</p>
        <p>
However the following blog post titles (all from the same <a href="http://blogs.msdn.com/tess/default.aspx">great
author</a>) tell a different story:
</p>
        <ul>
          <li>
            <a href="http://blogs.msdn.com/tess/archive/2006/02/15/net-memory-leak-xmlserializing-your-way-to-a-memory-leak.aspx">.NET
Memory Leak: XmlSerializing your way to a Memory Leak</a>
          </li>
          <li>
            <a href="http://blogs.msdn.com/tess/archive/2006/02/02/asp-net-memory-leak-case-study-sessions-sessions-sessions.aspx">ASP.NET
Memory Leak Case Study: Sessions Sessions Sessions…</a>
          </li>
          <li>
            <a href="http://blogs.msdn.com/tess/archive/2006/01/23/net-memory-leak-case-study-the-event-handlers-that-made-the-memory-baloon.aspx">.NET
Memory Leak Case Study: The Event Handlers That Made The Memory Baloon (sic)</a>
          </li>
        </ul>
        <p>
Last Friday I spent the day going through a windows dump file tracing down a poorly
performing application's problem for a client.  With a dump file I have a snapshot
of everything going on at that moment in that process (aspnet_wp.exe).  It's
an interesting challenge.  Given that snapshot, it's an interesting to see what
you can find out.  However, I would assert that not enough developers know how
to use it, or even of it's existence.
</p>
        <p>
A quick poll of 12 developers I know showed that only one had ever used WinDBG and
he qualified his "yes" vote with "yes, although not very well". 
Extrapolating that figure would show that  92% of developers cannot debug their
application without Visual Studio support.
</p>
        <p>
Do the post titles above inspire confidence in the .NET Framework?  If there
was a "strange" problem occurring in your application, are confident you
could fix it or identify a list of possible problems?  Could you do it while
the application is running in production?
</p>
        <p>
If your WinDBG skills are lacking, I encourage you to take a little dip into WinDBG
and get your feet wet by following the guide from <a href="http://blogs.msdn.com/johan/default.aspx">Johan
Straarup</a></p>
        <ul>
          <li>
            <a href="http://blogs.msdn.com/johan/archive/2007/11/13/getting-started-with-windbg-part-i.aspx">Getting
Started With WinDBG Part I</a>
          </li>
          <li>
            <a href="http://blogs.msdn.com/johan/archive/2007/11/26/getting-started-with-windbg-part-ii.aspx">Getting
Started With WinDBG Part II</a>
          </li>
        </ul>
        <p>
Happy debugging!
</p>
        <img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=533530cf-8878-4f5f-8236-33dadc5e506c" />
      </body>
      <title>Debugging .Net Applications with WinDBG</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,533530cf-8878-4f5f-8236-33dadc5e506c.aspx</guid>
      <link>http://www.timbarcz.com/blog/DebuggingNetApplicationsWithWinDBG.aspx</link>
      <pubDate>Wed, 12 Dec 2007 19:30:50 GMT</pubDate>
      <description>&lt;p&gt;
Programming languages these days do their best from keeping you from doing something
stupid.&amp;#160; We have compile time checking, &amp;quot;managed&amp;quot; code, and garbage
collection.&amp;#160; We've been led to believe that if you just write the code, in any
fashion that meets the requirements of the project, that any missteps you may take
in code will be corrected.&amp;#160; 
&lt;/p&gt;
&lt;p&gt;
That's the case with garbage collection.&amp;#160; We've been sold this idea that variables
can be created wherever, whenever, and however you want, the runtime environment will
clean up after you.
&lt;/p&gt;
&lt;p&gt;
However the following blog post titles (all from the same &lt;a href="http://blogs.msdn.com/tess/default.aspx"&gt;great
author&lt;/a&gt;) tell a different story:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://blogs.msdn.com/tess/archive/2006/02/15/net-memory-leak-xmlserializing-your-way-to-a-memory-leak.aspx"&gt;.NET
Memory Leak: XmlSerializing your way to a Memory Leak&lt;/a&gt; 
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://blogs.msdn.com/tess/archive/2006/02/02/asp-net-memory-leak-case-study-sessions-sessions-sessions.aspx"&gt;ASP.NET
Memory Leak Case Study: Sessions Sessions Sessions&amp;#8230;&lt;/a&gt; 
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://blogs.msdn.com/tess/archive/2006/01/23/net-memory-leak-case-study-the-event-handlers-that-made-the-memory-baloon.aspx"&gt;.NET
Memory Leak Case Study: The Event Handlers That Made The Memory Baloon (sic)&lt;/a&gt; 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Last Friday I spent the day going through a windows dump file tracing down a poorly
performing application's problem for a client.&amp;#160; With a dump file I have a snapshot
of everything going on at that moment in that process (aspnet_wp.exe).&amp;#160; It's
an interesting challenge.&amp;#160; Given that snapshot, it's an interesting to see what
you can find out.&amp;#160; However, I would assert that not enough developers know how
to use it, or even of it's existence.
&lt;/p&gt;
&lt;p&gt;
A quick poll of 12 developers I know showed that only one had ever used WinDBG and
he qualified his &amp;quot;yes&amp;quot; vote with &amp;quot;yes, although not very well&amp;quot;.&amp;#160;
Extrapolating that figure would show that&amp;#160; 92% of developers cannot debug their
application without Visual Studio support.
&lt;/p&gt;
&lt;p&gt;
Do the post titles above inspire confidence in the .NET Framework?&amp;#160; If there
was a &amp;quot;strange&amp;quot; problem occurring in your application, are confident you
could fix it or identify a list of possible problems?&amp;#160; Could you do it while
the application is running in production?
&lt;/p&gt;
&lt;p&gt;
If your WinDBG skills are lacking, I encourage you to take a little dip into WinDBG
and get your feet wet by following the guide from &lt;a href="http://blogs.msdn.com/johan/default.aspx"&gt;Johan
Straarup&lt;/a&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://blogs.msdn.com/johan/archive/2007/11/13/getting-started-with-windbg-part-i.aspx"&gt;Getting
Started With WinDBG Part I&lt;/a&gt; 
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://blogs.msdn.com/johan/archive/2007/11/26/getting-started-with-windbg-part-ii.aspx"&gt;Getting
Started With WinDBG Part II&lt;/a&gt; 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Happy debugging!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=533530cf-8878-4f5f-8236-33dadc5e506c" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,533530cf-8878-4f5f-8236-33dadc5e506c.aspx</comments>
      <category>Software</category>
    </item>
    <item>
      <trackback:ping>http://www.timbarcz.com/blog/Trackback.aspx?guid=c152864f-3a74-4bef-a046-4dd5914494aa</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,c152864f-3a74-4bef-a046-4dd5914494aa.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,c152864f-3a74-4bef-a046-4dd5914494aa.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=c152864f-3a74-4bef-a046-4dd5914494aa</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Who ever thought this was a good idea?  It feels wrong on so many levels.
</p>
        <blockquote>
          <p>
Dim enableRegistration As Boolean = CBool(IIf(CBool(DataBinder.Eval(e.Item.DataItem,
"IsOnlineRegistration")), IIf(CInt(DataBinder.Eval(e.Item.DataItem, "EventSize"))
= 0 Or CInt(DataBinder.Eval(e.Item.DataItem, "EventSize")) = -1 Or (CInt(DataBinder.Eval(e.Item.DataItem,
"EventSize")) - CInt(DataBinder.Eval(e.Item.DataItem, "Registrants")))
&gt; 0, True, False), False))
</p>
        </blockquote>
        <p>
And since we <a href="http://www.timbarcz.com/blog/2007/08/03/CodeReviewLikeTheMafia.aspx">code
review like the mafia</a>, put the poor soul out of his misery .
</p>
        <img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=c152864f-3a74-4bef-a046-4dd5914494aa" />
      </body>
      <title>A Good Reason To Code Review</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,c152864f-3a74-4bef-a046-4dd5914494aa.aspx</guid>
      <link>http://www.timbarcz.com/blog/AGoodReasonToCodeReview.aspx</link>
      <pubDate>Wed, 05 Dec 2007 23:06:07 GMT</pubDate>
      <description>&lt;p&gt;
Who ever thought this was a good idea?&amp;#160; It feels wrong on so many levels.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
Dim enableRegistration As Boolean = CBool(IIf(CBool(DataBinder.Eval(e.Item.DataItem,
&amp;quot;IsOnlineRegistration&amp;quot;)), IIf(CInt(DataBinder.Eval(e.Item.DataItem, &amp;quot;EventSize&amp;quot;))
= 0 Or CInt(DataBinder.Eval(e.Item.DataItem, &amp;quot;EventSize&amp;quot;)) = -1 Or (CInt(DataBinder.Eval(e.Item.DataItem,
&amp;quot;EventSize&amp;quot;)) - CInt(DataBinder.Eval(e.Item.DataItem, &amp;quot;Registrants&amp;quot;)))
&amp;gt; 0, True, False), False))
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
And since we &lt;a href="http://www.timbarcz.com/blog/2007/08/03/CodeReviewLikeTheMafia.aspx"&gt;code
review like the mafia&lt;/a&gt;, put the poor soul out of his misery .
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=c152864f-3a74-4bef-a046-4dd5914494aa" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,c152864f-3a74-4bef-a046-4dd5914494aa.aspx</comments>
      <category>Software</category>
    </item>
    <item>
      <trackback:ping>http://www.timbarcz.com/blog/Trackback.aspx?guid=eb61c4ec-98c9-4a84-bc98-ab798860bc71</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,eb61c4ec-98c9-4a84-bc98-ab798860bc71.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,eb61c4ec-98c9-4a84-bc98-ab798860bc71.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=eb61c4ec-98c9-4a84-bc98-ab798860bc71</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Yesterday I posted about an issue <a href="http://www.timbarcz.com/blog/2007/12/04/VisualStudio2008WithNantMSBuildIssue.aspx">I
was having with Nant and Visual Studio 2008</a>.  The solution I found from <a href="http://codebetter.com/blogs/jeffrey.palermo/">Jeffrey
Palermo</a> ultimately only got me so far.  First, let me say that if I simply
wanted to build the code, the solution Jeffrey provided was adequate.  Where
I ran into issues was when I was trying to use the "gac-install" task which
is provided by the <a href="http://nantcontrib.sourceforge.net/">NantContrib</a> package. 
I was using this task in a "test" target, which run my unit tests.
</p>
        <p>
I kept receiving an error when running the "test", which included the "gac-install"
as one of it's tasks:
</p>
        <blockquote>
          <p>
            <strong>"The SDK for the 'net-3.5' framework is not available or not configured."</strong>
          </p>
        </blockquote>
        <p>
So why did Jeffrey's version work and mine not?
</p>
        <p>
I dug around a bit and looked at the <a href="http://nant.sourceforge.net/nightly/latest">nightly
build</a> for <a href="http://nant.sourceforge.net/">nant</a>, as I read somewhere
that there was 3.5 support built into nant but just not released yet.  I looked
into the nant.config.exe provided with the download and found that it does not yet
work out of the box as it points any 3.5 project to use the 2.0 version of msbuild.
(note to self, hop on SourceForge and make a bug or help with the fix)
</p>
        <p>
Not one to give up, I dug into the nant configuration.  Inside of the nant.exe.config
there are two properties from which many other properties are derived, those two properties
are
</p>
        <ol>
          <li>
installRoot 
</li>
          <li>
sdkInstallRoot 
</li>
        </ol>
        <p>
These two properties are read from the registry.  The registry entries are created
when you install Visual Studio or the SDK.
</p>
        <p>
They're used within the nant config file as part of other properties and attributes,
for example:
</p>
        <blockquote>
          <p>
sdkdirectory="${path::combine(<strong>sdkInstallRoot</strong>,'bin')}"
</p>
        </blockquote>
        <p>
When using the <a href="http://nantcontrib.sourceforge.net/release/0.85-rc4/help/tasks/msbuild.html">msbuild</a> task
(again provided through NantContrib) the installRoot property is set to C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727,
which is where msbuild.exe lives for the 2.0 framework.  However registering
something in the gac uses gacutil, which isn't located in the same place as the framework. 
gacutil.exe is located (on my machine) at C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin.
</p>
        <p>
How does this all relate to nant and 3.5?  Well the installRoot property is used
by msbuild.exe, which in Jeffrey's example, was being set correctly, which resulted
in the proper execution of my nant "compile" target.  My unit test
target, which uses the "gac-install" task, relies on the sdkInstallRoot
property.  In Jeffrey's example his config had the following element within the <a href="http://codebetter.com/blogs/jeffrey.palermo/archive/2007/11/28/upgrade-nant-for-use-with-vs2008-solutions-and-net-3-5.aspx">xml
blurb he posted</a>:
</p>
        <blockquote>
          <p>
&lt;readregistry property="sdkInstallRoot" key="SOFTWARE\Microsoft\.NETFramework\sdkInstallRootv2.0"
hive="LocalMachine" failonerror="false" /&gt;
</p>
        </blockquote>
        <p>
The problem, at least on my machine, is that I don't have that registry key! 
I was able to get everything working simply by changing what key it was pointing to. 
I ended up with the following (bolded text indicates what has changed):
</p>
        <blockquote>
          <p>
&lt;readregistry property="sdkInstallRoot" key="<strong>SOFTWARE\Microsoft\Microsoft
SDKs\v6.0A\WinSDKNetFxTools\InstallationFolder</strong>" hive="LocalMachine"
failonerror="false" /&gt;
</p>
        </blockquote>
        <p>
After that change, everything is working properly.
</p>
        <p>
Thanks to Jeff for his original post.  It may not matter but I'm going to post
my PC specs anyway, since the paths mentioned above may be OS dependent.  I'm
currently running Windows XP SP2 with only VS 2008 installed on it.
</p>
        <img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=eb61c4ec-98c9-4a84-bc98-ab798860bc71" />
      </body>
      <title>Nant Setup for Visual Studio 2008 and .net 3.5</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,eb61c4ec-98c9-4a84-bc98-ab798860bc71.aspx</guid>
      <link>http://www.timbarcz.com/blog/NantSetupForVisualStudio2008AndNet35.aspx</link>
      <pubDate>Wed, 05 Dec 2007 17:26:26 GMT</pubDate>
      <description>&lt;p&gt;
Yesterday I posted about an issue &lt;a href="http://www.timbarcz.com/blog/2007/12/04/VisualStudio2008WithNantMSBuildIssue.aspx"&gt;I
was having with Nant and Visual Studio 2008&lt;/a&gt;.&amp;#160; The solution I found from &lt;a href="http://codebetter.com/blogs/jeffrey.palermo/"&gt;Jeffrey
Palermo&lt;/a&gt; ultimately only got me so far.&amp;#160; First, let me say that if I simply
wanted to build the code, the solution Jeffrey provided was adequate.&amp;#160; Where
I ran into issues was when I was trying to use the &amp;quot;gac-install&amp;quot; task which
is provided by the &lt;a href="http://nantcontrib.sourceforge.net/"&gt;NantContrib&lt;/a&gt; package.&amp;#160;
I was using this task in a &amp;quot;test&amp;quot; target, which run my unit tests.
&lt;/p&gt;
&lt;p&gt;
I kept receiving an error when running the &amp;quot;test&amp;quot;, which included the &amp;quot;gac-install&amp;quot;
as one of it's tasks:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;strong&gt;&amp;quot;The SDK for the 'net-3.5' framework is not available or not configured.&amp;quot;&lt;/strong&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
So why did Jeffrey's version work and mine not?
&lt;/p&gt;
&lt;p&gt;
I dug around a bit and looked at the &lt;a href="http://nant.sourceforge.net/nightly/latest"&gt;nightly
build&lt;/a&gt; for &lt;a href="http://nant.sourceforge.net/"&gt;nant&lt;/a&gt;, as I read somewhere
that there was 3.5 support built into nant but just not released yet.&amp;#160; I looked
into the nant.config.exe provided with the download and found that it does not yet
work out of the box as it points any 3.5 project to use the 2.0 version of msbuild.
(note to self, hop on SourceForge and make a bug or help with the fix)
&lt;/p&gt;
&lt;p&gt;
Not one to give up, I dug into the nant configuration.&amp;#160; Inside of the nant.exe.config
there are two properties from which many other properties are derived, those two properties
are
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
installRoot 
&lt;/li&gt;
&lt;li&gt;
sdkInstallRoot 
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
These two properties are read from the registry.&amp;#160; The registry entries are created
when you install Visual Studio or the SDK.
&lt;/p&gt;
&lt;p&gt;
They're used within the nant config file as part of other properties and attributes,
for example:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
sdkdirectory=&amp;quot;${path::combine(&lt;strong&gt;sdkInstallRoot&lt;/strong&gt;,'bin')}&amp;quot;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
When using the &lt;a href="http://nantcontrib.sourceforge.net/release/0.85-rc4/help/tasks/msbuild.html"&gt;msbuild&lt;/a&gt; task
(again provided through NantContrib) the installRoot property is set to C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727,
which is where msbuild.exe lives for the 2.0 framework.&amp;#160; However registering
something in the gac uses gacutil, which isn't located in the same place as the framework.&amp;#160;
gacutil.exe is located (on my machine) at C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin.
&lt;/p&gt;
&lt;p&gt;
How does this all relate to nant and 3.5?&amp;#160; Well the installRoot property is used
by msbuild.exe, which in Jeffrey's example, was being set correctly, which resulted
in the proper execution of my nant &amp;quot;compile&amp;quot; target.&amp;#160; My unit test
target, which uses the &amp;quot;gac-install&amp;quot; task, relies on the sdkInstallRoot
property.&amp;#160; In Jeffrey's example his config had the following element within the &lt;a href="http://codebetter.com/blogs/jeffrey.palermo/archive/2007/11/28/upgrade-nant-for-use-with-vs2008-solutions-and-net-3-5.aspx"&gt;xml
blurb he posted&lt;/a&gt;:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&amp;lt;readregistry property=&amp;quot;sdkInstallRoot&amp;quot; key=&amp;quot;SOFTWARE\Microsoft\.NETFramework\sdkInstallRootv2.0&amp;quot;
hive=&amp;quot;LocalMachine&amp;quot; failonerror=&amp;quot;false&amp;quot; /&amp;gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
The problem, at least on my machine, is that I don't have that registry key!&amp;#160;
I was able to get everything working simply by changing what key it was pointing to.&amp;#160;
I ended up with the following (bolded text indicates what has changed):
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&amp;lt;readregistry property=&amp;quot;sdkInstallRoot&amp;quot; key=&amp;quot;&lt;strong&gt;SOFTWARE\Microsoft\Microsoft
SDKs\v6.0A\WinSDKNetFxTools\InstallationFolder&lt;/strong&gt;&amp;quot; hive=&amp;quot;LocalMachine&amp;quot;
failonerror=&amp;quot;false&amp;quot; /&amp;gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
After that change, everything is working properly.
&lt;/p&gt;
&lt;p&gt;
Thanks to Jeff for his original post.&amp;#160; It may not matter but I'm going to post
my PC specs anyway, since the paths mentioned above may be OS dependent.&amp;#160; I'm
currently running Windows XP SP2 with only VS 2008 installed on it.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=eb61c4ec-98c9-4a84-bc98-ab798860bc71" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,eb61c4ec-98c9-4a84-bc98-ab798860bc71.aspx</comments>
      <category>Nant</category>
      <category>Software</category>
    </item>
    <item>
      <trackback:ping>http://www.timbarcz.com/blog/Trackback.aspx?guid=24c161d3-7fc3-4994-837d-8a831b3c66ab</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,24c161d3-7fc3-4994-837d-8a831b3c66ab.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,24c161d3-7fc3-4994-837d-8a831b3c66ab.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=24c161d3-7fc3-4994-837d-8a831b3c66ab</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img height="281" alt="office_space_baseball.jpg" src="http://www.timbarcz.com/blog/content/binary/office_space_baseball.jpg" width="420" align="right" border="0" />I'm
exploring the new <a href="http://www.healthvault.com/">HealthVault</a> beta from
Microsoft.  Every document on the MSDN site regarding HealthVault is downloadable
as an .xps file.  In my attempt to print a document, I've read numerous blogs
posts this morning about how XPS (<a href="http://en.wikipedia.org/wiki/XML_Paper_Specification">Xml
Paper Specification</a>) is supposed to be superior to PDF but I would strongly
disagree.  Here's my experience trying to simply print a .xps document (which
hopefully you won't experience):
</p>
        <ul>
          <li>
Click on download link (using Firefox), I'm then asked if I'd like to open the .xps
document with "XPS Viewer" to which I say yes, only to find that another tab is opened
in FireFox asking me the question again.  Another affirmative answer opens another
blank tab asking the question again, you can see where this is going. 
</li>
          <li>
I'm smart, so I'll save the .xps document to my desktop and open in IE.  Sure
enough, the file opens and I can read it fine.  I go to print however and I only
have 3 printers to choose from, none of which are my actual printers (you know the
things that spit out paper and have cryptic messages like <a href="http://www.imdb.com/title/tt0151804/">"PC
Load Letter"</a> .  Normally I have nine printers, but now I have three,
so I start seeing what I can do with these: 
<ul><li>
Microsoft Office Document Image Writer - This "printer" is there but selecting it
disables the print button. 
</li><li>
Microsoft XPS Document Writer - This "printer" asks me where I want to save my file...as
another .xps document. 
</li><li>
PrimoPDF - When choosing to "print" to a pdf file I encounter an error.</li></ul></li>
          <li>
Now I'm at the point where I'm googling for a solution.  I can't find squat,
maybe this problem is limited to me.  I do <a href="http://www.microsoft.com/whdc/xps/viewxps.mspx">find
a pack to download</a> the viewer on Microsoft's site, so I try to download a viewer,
hoping that the problems I have may be fixed in a new version.  The installation
comes in the .NET 3.0 redistributable, and low and behold it fails to install, saying
I already have the .NET 3.0 redist. 
</li>
          <li>
So I find another option on the <a href="http://www.microsoft.com/whdc/xps/viewxps.mspx">Microsoft
XPS page</a> for the "Microsoft XPS Essentials Pack".  Mind you there's
a nice note telling me the option explored in the previous step is "recommended for
your system configuration."  I download and install the "Essentials" pack with
no problems. 
</li>
          <li>
Now I open the .xps file in the standalone xps viewer and am please to see that when
I go to print that all of my printers are there.  So I attempt to print to the
default printer and everything seemingly works...until I see that only 11 pages print
of the 58 pages.  I print to a different printer, this time 19 pages.  Better...but
still wildly deficient.  Next I try printing to pdf, I open the PDF and all 58
pages are there.  I print from my PDF reader and all 58 pages come out of the
printer.</li>
        </ul>
        <p>
That's it...simple.  What I don't get is why people are so afraid to embrace
new technology?
</p>
        <p>
So to summarize, here is how to print a .xps file:
</p>
        <ol>
          <li>
            <a href="http://www.microsoft.com/whdc/xps/viewxps.mspx">Download the "Microsoft XPS
Essentials Pack"</a>. 
</li>
        </ol>
        <ol>
          <li>
Make sure you have the <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=10cc340b-f857-4a14-83f5-25634c3bf043&amp;displaylang=en">.net
3.0 redistributable</a>.</li>
        </ol>
        <ol>
          <li>
You first need the .net 2.0 and .net 1.1 before you can install the 3.0</li>
        </ol>
        <li>
          <a href="http://support.microsoft.com/kb/307859">Change the default program to handle
.xps documents</a>. 
</li>
        <li>
Print your file, selecting the <a href="http://www.primopdf.com">"PrimoPDF"</a> printer. 
<ol><li>
Install PrimoPDF if not installed.</li></ol></li>
        <li>
Now open the result PDF in your <a href="http://www.foxitsoftware.com/pdf/rd_intro.php">reader
of choice</a>. 
</li>
        <li>
Print your file, selecting the hardware printer of your chioce.</li>
        <p>
There it is, easy as 1...1a...1aI..2...3...3a....4....5
</p>
        <img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=24c161d3-7fc3-4994-837d-8a831b3c66ab" />
      </body>
      <title>How to Print XPS Documents, easy as 1...1a...1aI..2...3...3a....4....5</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,24c161d3-7fc3-4994-837d-8a831b3c66ab.aspx</guid>
      <link>http://www.timbarcz.com/blog/HowToPrintXPSDocumentsEasyAs11a1aI233a45.aspx</link>
      <pubDate>Wed, 10 Oct 2007 15:43:52 GMT</pubDate>
      <description>&lt;p&gt;
&lt;img height=281 alt=office_space_baseball.jpg src="http://www.timbarcz.com/blog/content/binary/office_space_baseball.jpg" width=420 align=right border=0&gt;I'm
exploring the new &lt;a href="http://www.healthvault.com/"&gt;HealthVault&lt;/a&gt; beta from
Microsoft.&amp;nbsp; Every document on the MSDN site regarding HealthVault&amp;nbsp;is downloadable
as an .xps file.&amp;nbsp; In my attempt to print a document, I've read numerous blogs
posts this morning about how XPS (&lt;a href="http://en.wikipedia.org/wiki/XML_Paper_Specification"&gt;Xml
Paper Specification&lt;/a&gt;)&amp;nbsp;is supposed to be superior to PDF but I would strongly
disagree.&amp;nbsp; Here's my experience trying to simply print a .xps document&amp;nbsp;(which
hopefully you won't experience):
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Click on download link (using Firefox), I'm then asked if I'd like to open the .xps
document with "XPS Viewer" to which I say yes, only to find that another tab is opened
in FireFox asking me the question again.&amp;nbsp; Another affirmative answer opens another
blank tab asking the question again, you can see where this is going. 
&lt;li&gt;
I'm smart, so I'll save the .xps document to my desktop and open in IE.&amp;nbsp; Sure
enough, the file opens and I can read it fine.&amp;nbsp; I go to print however and I only
have 3 printers to choose from, none of which are my actual printers (you know the
things that spit out paper and have cryptic messages like &lt;a href="http://www.imdb.com/title/tt0151804/"&gt;"PC
Load Letter"&lt;/a&gt;&amp;nbsp;.&amp;nbsp; Normally I have&amp;nbsp;nine printers, but now I have three,
so I start seeing what I can do with these: 
&lt;ul&gt;
&lt;li&gt;
Microsoft Office Document Image Writer - This "printer" is there but selecting it
disables the print button. 
&lt;li&gt;
Microsoft XPS Document Writer - This "printer" asks me where I want to save my file...as
another .xps document. 
&lt;li&gt;
PrimoPDF - When choosing to "print" to a pdf file I encounter an error.&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Now I'm at the point where I'm googling for a solution.&amp;nbsp; I can't find squat,
maybe this problem is limited to me.&amp;nbsp; I do &lt;a href="http://www.microsoft.com/whdc/xps/viewxps.mspx"&gt;find
a pack to download&lt;/a&gt; the viewer on Microsoft's site, so I try to download a viewer,
hoping that the problems I have may be fixed in a new version.&amp;nbsp; The installation
comes in the .NET 3.0 redistributable, and low and behold it fails to install, saying
I already have the .NET 3.0 redist. 
&lt;li&gt;
So I find another option on the &lt;a href="http://www.microsoft.com/whdc/xps/viewxps.mspx"&gt;Microsoft
XPS page&lt;/a&gt;&amp;nbsp;for the "Microsoft XPS Essentials Pack".&amp;nbsp; Mind you there's
a nice note telling me the option explored in the previous step is "recommended for
your system configuration."&amp;nbsp; I download and install the "Essentials" pack with
no problems. 
&lt;li&gt;
Now I open the .xps file in the standalone xps viewer and am please to see that when
I go to print that all of my printers are there.&amp;nbsp; So I attempt to print to the
default printer and everything seemingly works...until I see that only 11 pages print
of the 58 pages.&amp;nbsp; I print to a different printer, this time 19 pages.&amp;nbsp; Better...but
still wildly deficient.&amp;nbsp; Next I try printing to pdf, I open the PDF and all 58
pages are there.&amp;nbsp; I print from my PDF reader and all 58 pages come out of the
printer.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
That's it...simple.&amp;nbsp; What I don't get is why people are so afraid to embrace
new technology?
&lt;/p&gt;
&lt;p&gt;
So to summarize, here is how to print a .xps file:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;a href="http://www.microsoft.com/whdc/xps/viewxps.mspx"&gt;Download the "Microsoft XPS
Essentials Pack"&lt;/a&gt;. 
&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;
Make sure you have the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=10cc340b-f857-4a14-83f5-25634c3bf043&amp;amp;displaylang=en"&gt;.net
3.0 redistributable&lt;/a&gt;.&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;
You first need the .net 2.0 and .net 1.1 before you can install the 3.0&lt;/li&gt;
&lt;/ol&gt;
&gt;
&lt;li&gt;
&lt;a href="http://support.microsoft.com/kb/307859"&gt;Change the default program to handle
.xps documents&lt;/a&gt;. 
&lt;li&gt;
Print your file, selecting the &lt;a href="http://www.primopdf.com"&gt;"PrimoPDF"&lt;/a&gt; printer. 
&lt;ol&gt;
&lt;li&gt;
Install PrimoPDF if not installed.&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;
Now open the result PDF in your &lt;a href="http://www.foxitsoftware.com/pdf/rd_intro.php"&gt;reader
of choice&lt;/a&gt;. 
&lt;li&gt;
Print your file, selecting the hardware printer of your chioce.&lt;/li&gt;&gt;
&lt;p&gt;
There it is, easy as 1...1a...1aI..2...3...3a....4....5
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=24c161d3-7fc3-4994-837d-8a831b3c66ab" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,24c161d3-7fc3-4994-837d-8a831b3c66ab.aspx</comments>
      <category>Musings</category>
      <category>Software</category>
    </item>
    <item>
      <trackback:ping>http://www.timbarcz.com/blog/Trackback.aspx?guid=69a84560-7649-4376-bc1c-abc6f6cfe9b1</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,69a84560-7649-4376-bc1c-abc6f6cfe9b1.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,69a84560-7649-4376-bc1c-abc6f6cfe9b1.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=69a84560-7649-4376-bc1c-abc6f6cfe9b1</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I've recently finished reading Steve Krug's <a href="http://www.amazon.com/Dont-Make-Me-Think-Usability/dp/0321344758/ref=pd_bbs_sr_1/103-5956805-0479813?ie=UTF8&amp;s=books&amp;qid=1191424059&amp;sr=1-1">Don't
Make Me Think</a> which was highly recommended by both <a href="http://www.codinghorror.com/blog/archives/000377.html">Jeff
Atwood</a> and <a href="http://www.davidsturtz.com/">David Sturtz</a>, <a href="http://www.geonetric.com/">Geonetric's</a> information
architect.  One of the points the book makes is that the users of your website
nowadays have been so conditioned by <a href="http://www.google.com">Google</a> that
they expect to see a search box. My contention is that adding "search" to your website
is no trivial matter.
</p>
        <p>
There seem to be few categories your site can fall into, here are three that I'm familiar
with:
</p>
        <h4>Scenario 1:
</h4>
        <p>
My father has a website, with a number of pages of static content.  The pages
are .aspx pages only to utilize features of .NET like MasterPages and/or themes. 
The content is static.  To implement a search I need to somehow index the content,
which should be easy, in theory since the content is static.
</p>
        <h4>Scenario 2:
</h4>
        <p>
I've built a small CMS system for myself, to manage pages and content.  The pages
are dynamic in that when you request a page, no page exists on disk and is loaded
from a database.
</p>
        <h4>Scenario 3:
</h4>
        <p>
A large CMS with multiple different "objects".  You may at various points want
to search for specific "objects" or search across all "objects".  I'm thinking
back to my last job where we had a large site to manage baseball tournaments. 
There were three primary "objects", players, teams, tournaments.  There was a
general search that had to search everything and individual searches for each object
that would only return those objects.  In other words the site wide search for
"Blue Devils" would return both the "Cleveland Blue Devils" team as well as the "Duke
Blue Devils Classic" tournament.  The same search in the team and tournament
section would only return the team and the tournament, respectively.
</p>
        <h3>Options:
</h3>
        <ul>
          <li>
I could use Google to search my site.  You've seen the "search this site" boxes
on websites. 
<ul><li>
Pros 
<ul><li>
Google indexes well 
</li><li>
Easy?</li></ul></li><li>
Cons 
<ul><li>
lose the "look" of your site since you're using google for the search results page. 
</li><li>
Can't index "objects".  Google can index only public facing web pages/documents. 
Therefore (using Scenario 3) a tournament could only be found if the name appear prominently
somewhere where Google will find it.  In other words you're relying on Google,
a lot. 
</li><li>
Cannot limit Google to certain "objects".  I can't say, "search only pages that
are about Teams", where I could do that quite easily implementing my own search</li></ul></li></ul></li>
          <li>
Implement my own search 
<ul><li>
Pro 
<ul><li>
The algorithm is my own and I can change it if I'd like. 
</li><li>
Keep "look" of site by never leaving site.</li></ul></li><li>
Cons 
<ul><li>
Much more work.  Writing my own SQL to search and aggregate the results. 
Do I full-text index on tables?  Do I use a third party solution?</li></ul></li></ul></li>
        </ul>
        <p>
It's a very tricky proposition.  Krug says that users will look for a search
box, so that means you should put one there right?  If you put a search box on
your site that doesn't produce reasonably good results then the user will lose faith
in your website and may leave.  If you don't provide a way to search your pages/data,
of which there may be quite a bit, then the user may struggle to find what they're
looking for and leave.  <strong>The only option you seemingly have is too implement
search and implement it well.</strong></p>
        <img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=69a84560-7649-4376-bc1c-abc6f6cfe9b1" />
      </body>
      <title>When It Comes to Search You (Don't) Have Options</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,69a84560-7649-4376-bc1c-abc6f6cfe9b1.aspx</guid>
      <link>http://www.timbarcz.com/blog/WhenItComesToSearchYouDontHaveOptions.aspx</link>
      <pubDate>Wed, 03 Oct 2007 17:12:23 GMT</pubDate>
      <description>&lt;p&gt;
I've recently finished reading Steve&amp;nbsp;Krug's &lt;a href="http://www.amazon.com/Dont-Make-Me-Think-Usability/dp/0321344758/ref=pd_bbs_sr_1/103-5956805-0479813?ie=UTF8&amp;amp;s=books&amp;amp;qid=1191424059&amp;amp;sr=1-1"&gt;Don't
Make Me Think&lt;/a&gt; which was highly recommended by both &lt;a href="http://www.codinghorror.com/blog/archives/000377.html"&gt;Jeff
Atwood&lt;/a&gt; and &lt;a href="http://www.davidsturtz.com/"&gt;David Sturtz&lt;/a&gt;, &lt;a href="http://www.geonetric.com/"&gt;Geonetric's&lt;/a&gt; information
architect.&amp;nbsp; One of the points the book makes is that the users of your website
nowadays have been so conditioned&amp;nbsp;by &lt;a href="http://www.google.com"&gt;Google&lt;/a&gt; that
they expect to see a search box. My contention is that adding "search" to your website
is no trivial matter.
&lt;/p&gt;
&lt;p&gt;
There seem to be few categories your site can fall into, here are three that I'm familiar
with:
&lt;/p&gt;
&lt;h4&gt;Scenario 1:
&lt;/h4&gt;
&lt;p&gt;
My father has a website, with a number of pages of static content.&amp;nbsp; The pages
are .aspx pages only to utilize features of .NET like MasterPages and/or themes.&amp;nbsp;
The content is static.&amp;nbsp; To implement a search I need to somehow index the content,
which should be easy, in theory since the content is static.
&lt;/p&gt;
&lt;h4&gt;Scenario 2:
&lt;/h4&gt;
&lt;p&gt;
I've built a small CMS system for myself, to manage pages and content.&amp;nbsp; The pages
are dynamic in that when you request a page, no page exists on disk and is loaded
from a database.
&lt;/p&gt;
&lt;h4&gt;Scenario 3:
&lt;/h4&gt;
&lt;p&gt;
A large CMS with multiple different "objects".&amp;nbsp; You may at various points want
to search for specific "objects" or search across all "objects".&amp;nbsp; I'm thinking
back to my last job where we had a large site to manage baseball tournaments.&amp;nbsp;
There were three primary "objects", players, teams, tournaments.&amp;nbsp; There was a
general search that had to search everything and individual searches for each object
that would only return those objects.&amp;nbsp; In other words the site wide search for
"Blue Devils" would return both the "Cleveland Blue Devils" team as well as the "Duke
Blue Devils Classic" tournament.&amp;nbsp; The same search in the team and tournament
section would only return the team and the tournament, respectively.
&lt;/p&gt;
&lt;h3&gt;Options:
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
I could use Google to search my site.&amp;nbsp; You've seen the "search this site" boxes
on websites. 
&lt;ul&gt;
&lt;li&gt;
Pros 
&lt;ul&gt;
&lt;li&gt;
Google indexes well 
&lt;/li&gt;
&lt;li&gt;
Easy?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
Cons 
&lt;ul&gt;
&lt;li&gt;
lose the "look" of your site since you're using google for the search results page. 
&lt;/li&gt;
&lt;li&gt;
Can't index "objects".&amp;nbsp; Google can index only public facing web pages/documents.&amp;nbsp;
Therefore (using Scenario 3) a tournament could only be found if the name appear prominently
somewhere where Google will find it.&amp;nbsp; In other words you're relying on Google,
a lot. 
&lt;/li&gt;
&lt;li&gt;
Cannot limit Google to certain "objects".&amp;nbsp; I can't say, "search only pages that
are about Teams", where I could do that quite easily implementing my own search&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
Implement my own search 
&lt;ul&gt;
&lt;li&gt;
Pro 
&lt;ul&gt;
&lt;li&gt;
The algorithm is my own and I can change it if I'd like. 
&lt;/li&gt;
&lt;li&gt;
Keep "look" of site by never leaving site.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
Cons 
&lt;ul&gt;
&lt;li&gt;
Much more work.&amp;nbsp; Writing my own SQL to search and aggregate the results.&amp;nbsp;
Do I full-text index on tables?&amp;nbsp; Do I use a third party solution?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
It's a very tricky proposition.&amp;nbsp; Krug says that users will look for a search
box, so that means you should put one there right?&amp;nbsp; If you put a search box on
your site that doesn't produce reasonably good results then the user will lose faith
in your website and may leave.&amp;nbsp; If you don't provide a way to search your pages/data,
of which there may be quite a bit, then the user may struggle to find what they're
looking for and leave.&amp;nbsp; &lt;strong&gt;The only option you seemingly have is too implement
search and implement it well.&lt;/strong&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=69a84560-7649-4376-bc1c-abc6f6cfe9b1" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,69a84560-7649-4376-bc1c-abc6f6cfe9b1.aspx</comments>
      <category>Musings</category>
      <category>Software</category>
    </item>
    <item>
      <trackback:ping>http://www.timbarcz.com/blog/Trackback.aspx?guid=90102ca0-82e7-4b0c-9c86-098c51a4f40d</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,90102ca0-82e7-4b0c-9c86-098c51a4f40d.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,90102ca0-82e7-4b0c-9c86-098c51a4f40d.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=90102ca0-82e7-4b0c-9c86-098c51a4f40d</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <img src="http://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Ours_brun_parcanimalierpyrenees_1.jpg/400px-Ours_brun_parcanimalierpyrenees_1.jpg" align="right" />As
a developer I want to build something neat, that impresses others and makes someone's
life a bit easier.  This most commonly manifests itself in a problem that could
be easily solved but I've added various extensibility points that were neither required
nor will probably ever used.  In times where I find myself slipping into one
of those modes, where I'm just adding functionality for the sake of functionality,
I remind myself of <a href="http://en.wikipedia.org/wiki/You_Ain%27t_Gonna_Need_It">YAGNI</a> ("You
aren't going to need it") who's main tenet is:<br /><br /><div align="center"><b>Programmers should not add functionality until it is necessary<br /></b><div align="left"><br />
I was reminded of this twice recently, the first last Saturday, the latest being tonight.  
<br /><br />
Last Saturday I was talking with family while at a parade.  The discussion of
brainstorming came up.  The somewhat well-known story, or so I'm told, was reiterated
to me on Saturday.  It has to do with a power company trying to figure out how
to remove ice from electical lines.  When the ice would build up the lines were
in danger of breaking under the weight of the ice.  Here's what they came up
with during a brainstorming session on how to fix it:<br /><br /><blockquote>"during one of the breaks, one of the linesmen shared with some of the
participants about how came face to face with a big, brown bear when he was servicing
the power lines, and how he narrowly escaped being mawed by it. 
<p align="justify">
when they returned for the meeting, someone suggested training the brown bears to
climb the poles to shake off the ice from the wires. brown bears were very common
in the areas that they were looking at and they are strong enough to cause the poles
to shake when they climb the poles.
</p><p align="justify">
someone else then suggested putting honey pots at the top of the poles to entice the
bears to climb the poles.
</p><p align="justify">
they then started to discuss about how to put the pots of honey at the top of the
poles and someone threw out the idea of using helicopters to do the job."
</p></blockquote>The idea however was quickly abandoned for a more simpler solution when
a secretary pointed out the following:<br /><br /><blockquote>"a secretary in the meeting pointed out that the down wash from the helicopters
could possibly break the ice and blow it off the wires."<br /><br /></blockquote>The helicopter idea works, and is still in use to this day (<a href="http://www.singaporeteambuilding.com/teambuilding/brainstorming-in-a-team.htm">read
the whole story</a>), but how cool would it be to sit back and say, "I trained some
bears to climb a tree in search of honey to solve our problem."  The story is
typically used to illustrate how even crazy ideas in brainstorming sometimes aid in
finding a simple solution.  As a programmer however, I learn from the story the
fact that they implemented the helicopter solution because it was easy, safe, cost-effective,
and quick to implement.<br /><br />
The second, and latest, reminder occurred tonight when talking to a co-worker at a
client cocktail party. The co-worker was talking to me about a conversation with a
client who's main complaint is that we have to provide everything "whiz bang". 
Typically "whiz bang" denotes something cool or neat, however, the gripe was not that
what we delivered was bad or wrong, but that in our pursuit to "wow", we didn't "wow"
the client because it took a long time to implement.<br /><br />
Over-architecting.  This is a seemingly common trait in developers.  If
you work on a team it's likely that you're constantly having to fight this from somewhere
within the team.  On days where I'm dutifully adhering to the YAGNI principle
and building shippable software, someone else on my team may be in the throes of a
battle of over architecting.  Likewise while everyone is adding real features,
I may be dreaming and scheming of ways to make a program über-great.<br /><br />
I have to keep reminding myself that shipping software is the most important aspect
of a software company.  It seems too simple to carry any real weight; like something
as simple as a shippable product is enough.  It's really a novel idea considering
how much software I've shipped recently.<br /></div></div><p></p><img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=90102ca0-82e7-4b0c-9c86-098c51a4f40d" /></body>
      <title>A Bear, a Helicopter, and an Overarchitected App</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,90102ca0-82e7-4b0c-9c86-098c51a4f40d.aspx</guid>
      <link>http://www.timbarcz.com/blog/ABearAHelicopterAndAnOverarchitectedApp.aspx</link>
      <pubDate>Wed, 12 Sep 2007 04:11:06 GMT</pubDate>
      <description>&lt;img src="http://upload.wikimedia.org/wikipedia/commons/thumb/9/9e/Ours_brun_parcanimalierpyrenees_1.jpg/400px-Ours_brun_parcanimalierpyrenees_1.jpg" align="right"&gt;As
a developer I want to build something neat, that impresses others and makes someone's
life a bit easier.&amp;nbsp; This most commonly manifests itself in a problem that could
be easily solved but I've added various extensibility points that were neither required
nor will probably ever used.&amp;nbsp; In times where I find myself slipping into one
of those modes, where I'm just adding functionality for the sake of functionality,
I remind myself of &lt;a href="http://en.wikipedia.org/wiki/You_Ain%27t_Gonna_Need_It"&gt;YAGNI&lt;/a&gt; ("You
aren't going to need it") who's main tenet is:&lt;br&gt;
&lt;br&gt;
&lt;div align="center"&gt;&lt;b&gt;Programmers should not add functionality until it is necessary&lt;br&gt;
&lt;/b&gt;
&lt;div align="left"&gt;
&lt;br&gt;
I was reminded of this twice recently, the first last Saturday, the latest being tonight.&amp;nbsp; 
&lt;br&gt;
&lt;br&gt;
Last Saturday I was talking with family while at a parade.&amp;nbsp; The discussion of
brainstorming came up.&amp;nbsp; The somewhat well-known story, or so I'm told, was reiterated
to me on Saturday.&amp;nbsp; It has to do with a power company trying to figure out how
to remove ice from electical lines.&amp;nbsp; When the ice would build up the lines were
in danger of breaking under the weight of the ice.&amp;nbsp; Here's what they came up
with during a brainstorming session on how to fix it:&lt;br&gt;
&lt;br&gt;
&lt;blockquote&gt;"during one of the breaks, one of the linesmen shared with some of the
participants about how came face to face with a big, brown bear when he was servicing
the power lines, and how he narrowly escaped being mawed by it. 
&lt;p align="justify"&gt;
when they returned for the meeting, someone suggested training the brown bears to
climb the poles to shake off the ice from the wires. brown bears were very common
in the areas that they were looking at and they are strong enough to cause the poles
to shake when they climb the poles.
&lt;/p&gt;
&lt;p align="justify"&gt;
someone else then suggested putting honey pots at the top of the poles to entice the
bears to climb the poles.
&lt;/p&gt;
&lt;p align="justify"&gt;
they then started to discuss about how to put the pots of honey at the top of the
poles and someone threw out the idea of using helicopters to do the job."
&lt;/p&gt;
&lt;/blockquote&gt;The idea however was quickly abandoned for a more simpler solution when
a secretary pointed out the following:&lt;br&gt;
&lt;br&gt;
&lt;blockquote&gt;"a secretary in the meeting pointed out that the down wash from the helicopters
could possibly break the ice and blow it off the wires."&lt;br&gt;
&lt;br&gt;
&lt;/blockquote&gt;The helicopter idea works, and is still in use to this day (&lt;a href="http://www.singaporeteambuilding.com/teambuilding/brainstorming-in-a-team.htm"&gt;read
the whole story&lt;/a&gt;), but how cool would it be to sit back and say, "I trained some
bears to climb a tree in search of honey to solve our problem."&amp;nbsp; The story is
typically used to illustrate how even crazy ideas in brainstorming sometimes aid in
finding a simple solution.&amp;nbsp; As a programmer however, I learn from the story the
fact that they implemented the helicopter solution because it was easy, safe, cost-effective,
and quick to implement.&lt;br&gt;
&lt;br&gt;
The second, and latest, reminder occurred tonight when talking to a co-worker at a
client cocktail party. The co-worker was talking to me about a conversation with a
client who's main complaint is that we have to provide everything "whiz bang".&amp;nbsp;
Typically "whiz bang" denotes something cool or neat, however, the gripe was not that
what we delivered was bad or wrong, but that in our pursuit to "wow", we didn't "wow"
the client because it took a long time to implement.&lt;br&gt;
&lt;br&gt;
Over-architecting.&amp;nbsp; This is a seemingly common trait in developers.&amp;nbsp; If
you work on a team it's likely that you're constantly having to fight this from somewhere
within the team.&amp;nbsp; On days where I'm dutifully adhering to the YAGNI principle
and building shippable software, someone else on my team may be in the throes of a
battle of over architecting.&amp;nbsp; Likewise while everyone is adding real features,
I may be dreaming and scheming of ways to make a program über-great.&lt;br&gt;
&lt;br&gt;
I have to keep reminding myself that shipping software is the most important aspect
of a software company.&amp;nbsp; It seems too simple to carry any real weight; like something
as simple as a shippable product is enough.&amp;nbsp; It's really a novel idea considering
how much software I've shipped recently.&lt;br&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=90102ca0-82e7-4b0c-9c86-098c51a4f40d" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,90102ca0-82e7-4b0c-9c86-098c51a4f40d.aspx</comments>
      <category>Musings</category>
      <category>Software</category>
    </item>
    <item>
      <trackback:ping>http://www.timbarcz.com/blog/Trackback.aspx?guid=09d43e9c-cad3-461f-97af-67516f424b26</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,09d43e9c-cad3-461f-97af-67516f424b26.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,09d43e9c-cad3-461f-97af-67516f424b26.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=09d43e9c-cad3-461f-97af-67516f424b26</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">Today I passed my first Microsoft Certification
test in about seven years.  I passed the first of two tests, 70-528 (Microsoft
.NET Framework 2.0 - Web-Based Client Development) on my way to MCTS.  I've had
mixed feelings on certifications and still do to this day.  I know some <a href="http://mattyoungblut.wordpress.com/">very
talented certified developers</a> who add to the MC* reputation.  Likewise I
know several developers who despite being certified, can't program, and weaken/cheapen
the MC* title.<br /><br />
My reaction to the test is that it is heavily weighted in places that seemingly don't
matter "in the real world".  I'm keenly aware I could be way off base here, however
I've been working with .NET now since 2003 and asp before that.  The two areas
that were heavily stressed in my test were deployment ("Copy Website", Publishing,
aspnet_compiler) and Mobile Controls.  In my nearly 5 years with .NET I have
never written an application that uses mobile web controls.  Should I have? Am
I strange?  Regarding "deployment", at <a href="http://www.geonetric.com">Geonetric</a>,
we have a build server which uses <a href="http://cruisecontrol.sourceforge.net">Cruise
Control</a> and <a href="http://nant.sourceforge.net">NANT</a>, and therefore I rarely
(read:never) have used the "Copy Website" function from within Visual Studio to get
a site to a staging server, nor used the "ASP.NET Configuration" application to change
web.config settings in my production machine.<br /><br />
While the debate can rage on about the relevancy of tests, I'm softening my position
on them and do see them as beneficial (maybe for another post) when taken as part
of a whole.  In some chats with <a href="http://www.hanselman.com">Scott Hanselman</a> about
the subject recently, he took the stance that certifications are just a good resume
line item but the most important thing was to ship software, not what collection of
consonants you can string together behind your name.<br /><br /><br /><p></p><img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=09d43e9c-cad3-461f-97af-67516f424b26" /></body>
      <title>Passed my MCTS test, but is it relevant?</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,09d43e9c-cad3-461f-97af-67516f424b26.aspx</guid>
      <link>http://www.timbarcz.com/blog/PassedMyMCTSTestButIsItRelevant.aspx</link>
      <pubDate>Tue, 11 Sep 2007 02:58:54 GMT</pubDate>
      <description>Today I passed my first Microsoft Certification test in about seven years.&amp;nbsp; I passed the first of two tests, 70-528 (Microsoft .NET Framework 2.0 - Web-Based Client Development) on my way to MCTS.&amp;nbsp; I've had mixed feelings on certifications and still do to this day.&amp;nbsp; I know some &lt;a href="http://mattyoungblut.wordpress.com/"&gt;very
talented certified developers&lt;/a&gt; who add to the MC* reputation.&amp;nbsp; Likewise I
know several developers who despite being certified, can't program, and weaken/cheapen
the MC* title.&lt;br&gt;
&lt;br&gt;
My reaction to the test is that it is heavily weighted in places that seemingly don't
matter "in the real world".&amp;nbsp; I'm keenly aware I could be way off base here, however
I've been working with .NET now since 2003 and asp before that.&amp;nbsp; The two areas
that were heavily stressed in my test were deployment ("Copy Website", Publishing,
aspnet_compiler) and Mobile Controls.&amp;nbsp; In my nearly 5 years with .NET I have
never written an application that uses mobile web controls.&amp;nbsp; Should I have? Am
I strange?&amp;nbsp; Regarding "deployment", at &lt;a href="http://www.geonetric.com"&gt;Geonetric&lt;/a&gt;,
we have a build server which uses &lt;a href="http://cruisecontrol.sourceforge.net"&gt;Cruise
Control&lt;/a&gt; and &lt;a href="http://nant.sourceforge.net"&gt;NANT&lt;/a&gt;, and therefore I rarely
(read:never) have used the "Copy Website" function from within Visual Studio to get
a site to a staging server, nor used the "ASP.NET Configuration" application to change
web.config settings in my production machine.&lt;br&gt;
&lt;br&gt;
While the debate can rage on about the relevancy of tests, I'm softening my position
on them and do see them as beneficial (maybe for another post) when taken as part
of a whole.&amp;nbsp; In some chats with &lt;a href="http://www.hanselman.com"&gt;Scott Hanselman&lt;/a&gt; about
the subject recently, he took the stance that certifications are just a good resume
line item but the most important thing was to ship software, not what collection of
consonants you can string together behind your name.&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=09d43e9c-cad3-461f-97af-67516f424b26" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,09d43e9c-cad3-461f-97af-67516f424b26.aspx</comments>
      <category>Software</category>
    </item>
    <item>
      <trackback:ping>http://www.timbarcz.com/blog/Trackback.aspx?guid=2aadeb99-009b-42e8-abe5-78b8353658e6</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,2aadeb99-009b-42e8-abe5-78b8353658e6.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,2aadeb99-009b-42e8-abe5-78b8353658e6.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=2aadeb99-009b-42e8-abe5-78b8353658e6</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">We recently hired a DBA here at Geonetric
to fill a much needed niche.  While we have several better than average developers
in terms of SQL, I'm excited to see what very SQL specific optimizations (ie indexes,
normalization, filegroups) that Jason (DBA) can bring to the table.  Thinking
about the optimizations that will be handled at the database level, I stopped to think
of the "stack" to deliver a web application.  Here's my first-pass list:<br /><ul><li>
HTML 
</li><li>
Javascript 
</li><li>
CSS 
</li><li>
Presentational Logic<br /></li><li>
Business Logic 
</li><li>
Data Acess Logic 
</li><li>
Data Access</li></ul>
Looking at the list above.  Optimizing a single layer in no way gets you great
performance across the entire application, however a poorly built/optimized layer
can ruin the entire application.  What's the saying?  A bad apple spoils
the bunch?<br /><br />
We can optimize to make all queries fast and performant but negate that optimization
by serving up CSS in a style block (rather than externalizing into a CSS file). 
We can use Ajax to avoid fullpage postback, but if backed by a slow web method the
performance gain sought by using Ajax is nullified. The point is that if performance
is a goal you have to pay attention to the whole stack.  Paying attention to
just one piece while disregarding the others will ultimately not produce the performance
you desire.<br /><p></p><img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=2aadeb99-009b-42e8-abe5-78b8353658e6" /></body>
      <title>Optimizing the Web Stack</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,2aadeb99-009b-42e8-abe5-78b8353658e6.aspx</guid>
      <link>http://www.timbarcz.com/blog/OptimizingTheWebStack.aspx</link>
      <pubDate>Thu, 09 Aug 2007 02:20:45 GMT</pubDate>
      <description>We recently hired a DBA here at Geonetric to fill a much needed niche.&amp;nbsp; While we have several better than average developers in terms of SQL, I'm excited to see what very SQL specific optimizations (ie indexes, normalization, filegroups) that Jason (DBA) can bring to the table.&amp;nbsp; Thinking about the optimizations that will be handled at the database level, I stopped to think of the "stack" to deliver a web application.&amp;nbsp; Here's my first-pass list:&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
HTML 
&lt;li&gt;
Javascript 
&lt;li&gt;
CSS 
&lt;li&gt;
Presentational Logic&lt;br&gt;
&lt;li&gt;
Business Logic 
&lt;li&gt;
Data Acess Logic 
&lt;li&gt;
Data Access&lt;/li&gt;
&lt;/ul&gt;
Looking at the list above.&amp;nbsp; Optimizing a single layer in no way gets you great
performance across the entire application, however a poorly built/optimized layer
can ruin the entire application.&amp;nbsp; What's the saying?&amp;nbsp; A bad apple spoils
the bunch?&lt;br&gt;
&lt;br&gt;
We can optimize to make all queries fast and performant but negate that optimization
by serving up CSS in a style block (rather than externalizing into a CSS file).&amp;nbsp;
We can use Ajax to avoid fullpage postback, but if backed by a slow web method the
performance gain sought by using Ajax is nullified. The point is that if performance
is a goal you have to pay attention to the whole stack.&amp;nbsp; Paying attention to
just one piece while disregarding the others will ultimately not produce the performance
you desire.&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=2aadeb99-009b-42e8-abe5-78b8353658e6" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,2aadeb99-009b-42e8-abe5-78b8353658e6.aspx</comments>
      <category>Musings</category>
      <category>Software</category>
    </item>
    <item>
      <trackback:ping>http://www.timbarcz.com/blog/Trackback.aspx?guid=41e6f93e-1458-4e2e-aa11-dcd5ed7a1923</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,41e6f93e-1458-4e2e-aa11-dcd5ed7a1923.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,41e6f93e-1458-4e2e-aa11-dcd5ed7a1923.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=41e6f93e-1458-4e2e-aa11-dcd5ed7a1923</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <a href="http://www.geonetric.com">
          <img src="http://www.timbarcz.com/blog/content/binary/Sopranos.jpg" alt="Sopranos.jpg" align="right" border="0" height="320" width="400" />We're</a> a
growing software development company.  As we're growing in numbers we're finding
that we have to implement a more formal process for code reviews.  In the past
we could just look over each other's shoulders and give a nod.  It's just not
feasible to do that anymore given the growth we've had.  
<br /><br />
The code review process can be tricky in that you have to be clear with everyone going
in that a review of code is simply in the best interest of the company and that anything
said shouldn't be said or taken personally.  Being one who places a lot of pride
in my work, I fight the urge to defend my code/design.  I'm trying to live by
the following summation of how to code review:<br /><br /><div align="center"><b>"Code Review like the Mafia"</b><br /></div><br />
In the television drama <a href="http://www.hbo.com/sopranos/">The Sopranos</a> there
are frequent arguments between characters.  No matter how much arguing, fighting,
or threats, the characters almost always are friends right after.  Business is
business, nothing that is said during an argument sticks or lasts too long.<br /><br />
Maybe it's a bit utopian to think that we could code review like that, not having
to fear/worry about people's feelings during the review and knowing that no matter
what was said we could go grab lunch together afterwards.  Again, pointing the
finger squarely at myself, is it reasonable to be pummeled in a meeting about your
work and not take it personally or get worked up?  For me that's a tough one
that I'm going to have to work on, I mean let's face it, I'm not part of the mafia.<br /><img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=41e6f93e-1458-4e2e-aa11-dcd5ed7a1923" /></body>
      <title>Code Review like the Mafia</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,41e6f93e-1458-4e2e-aa11-dcd5ed7a1923.aspx</guid>
      <link>http://www.timbarcz.com/blog/CodeReviewLikeTheMafia.aspx</link>
      <pubDate>Fri, 03 Aug 2007 20:13:57 GMT</pubDate>
      <description>&lt;a href="http://www.geonetric.com"&gt;&lt;img src="http://www.timbarcz.com/blog/content/binary/Sopranos.jpg" alt="Sopranos.jpg" align="right" border="0" height="320" width="400"&gt;We're&lt;/a&gt; a
growing software development company.&amp;nbsp; As we're growing in numbers we're finding
that we have to implement a more formal process for code reviews.&amp;nbsp; In the past
we could just look over each other's shoulders and give a nod.&amp;nbsp; It's just not
feasible to do that anymore given the growth we've had.&amp;nbsp; 
&lt;br&gt;
&lt;br&gt;
The code review process can be tricky in that you have to be clear with everyone going
in that a review of code is simply in the best interest of the company and that anything
said shouldn't be said or taken personally.&amp;nbsp; Being one who places a lot of pride
in my work, I fight the urge to defend my code/design.&amp;nbsp; I'm trying to live by
the following summation of how to code review:&lt;br&gt;
&lt;br&gt;
&lt;div align="center"&gt;&lt;b&gt;"Code Review like the Mafia"&lt;/b&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;
In the television drama &lt;a href="http://www.hbo.com/sopranos/"&gt;The Sopranos&lt;/a&gt; there
are frequent arguments between characters.&amp;nbsp; No matter how much arguing, fighting,
or threats, the characters almost always are friends right after.&amp;nbsp; Business is
business, nothing that is said during an argument sticks or lasts too long.&lt;br&gt;
&lt;br&gt;
Maybe it's a bit utopian to think that we could code review like that, not having
to fear/worry about people's feelings during the review and knowing that no matter
what was said we could go grab lunch together afterwards.&amp;nbsp; Again, pointing the
finger squarely at myself, is it reasonable to be pummeled in a meeting about your
work and not take it personally or get worked up?&amp;nbsp; For me that's a tough one
that I'm going to have to work on, I mean let's face it, I'm not part of the mafia.&lt;br&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=41e6f93e-1458-4e2e-aa11-dcd5ed7a1923" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,41e6f93e-1458-4e2e-aa11-dcd5ed7a1923.aspx</comments>
      <category>Musings</category>
      <category>Software</category>
    </item>
    <item>
      <trackback:ping>http://www.timbarcz.com/blog/Trackback.aspx?guid=ee43bba3-9f4a-4bca-a252-f8bd30c87d6a</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,ee43bba3-9f4a-4bca-a252-f8bd30c87d6a.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,ee43bba3-9f4a-4bca-a252-f8bd30c87d6a.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=ee43bba3-9f4a-4bca-a252-f8bd30c87d6a</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img src="http://upload.wikimedia.org/wikipedia/en/7/7c/ModelViewControllerDiagram.png" align="right" />The <a href="http://en.wikipedia.org/wiki/Model-view-controller">Model
View Controller pattern</a> (MVC) seems to be the pattern du jour in many development
shops.  That is until of course, some literate nerd reminds everyone, that there
is <a href="http://en.wikipedia.org/wiki/No_Silver_Bullet">"No Silver Bullet."</a> 
The recent rush to Ruby on Rails, which implement this pattern out of the box, has
only served to add to the number of people singing the praise of MVC.  Microsoft
marketing fed programmers seemed to be quick to retort that the WebForm in Asp.NET
is in fact an MVC implementation.  I can't speak for others, but "the codebehind
is the controller" always felt a bit like kissing your sister.
</p>
        <p>
The other day I started playing with <a href="http://www.castleproject.org/monorail/index.html">MonoRail</a>, <a href="http://www.castleproject.org">Castle's</a> MVC
implementation for the .NET framework.
</p>
        <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
          <p>
            <em>"MonoRail differs from the standard </em>
            <a href="http://msdn.microsoft.com/asp.net/learning/default.aspx">
              <em>WebForms</em>
            </a>
            <em> way
of development as it enforces separation of concerns; controllers just handle application
flow, models represent the data, and the view is just concerned about presentation
logic. Consequently, you write less code and end up with a more maintainable application."</em>
          </p>
        </blockquote>
        <p dir="ltr">
My first reaction after overcoming the newness and understanding the project/solution
layout was <strong>that this felt like how it should be.</strong>  I was programming
a class and that class held nothing more than data about the object.  My controller
for that "model" was shuffling things around and making the decision about what to
do and when.
</p>
        <p dir="ltr">
There are obviously some things you give up when going to MonoRail but I hope to assuage
your fears and mine by digging in a little further.  Here are the items I have
on my notepad to learn:
</p>
        <ul dir="ltr">
          <li>
            <div>Are base class library tools (TextBox, CheckBoxList, ect) as well as third party
tools (ie. <a href="http://www.componentart.com">Component Art</a> or <a href="http://www.telerik.com">Telerik</a>)
no longer available?  If they're no longer available are the counterpart offerings
as good as what is offered using WebForms?
</div>
          </li>
          <li>
            <div>Ajax?  Seemingly ASP.NET Ajax is out if you go with MonoRail, so what to
use instead?  Has MonoRail adopted one of the javascript libraries as it's main
provider for javascripting/ajax?  If so how does it compare in ease of use when
compared to ASP.NET Ajax?
</div>
          </li>
          <li>
            <div>Af first glance, there also no longer seems to be ways to use server controls
or user controls?  Is this statement accurrate?  If so what is the proposed
method of getting the same functionality.
</div>
          </li>
        </ul>
        <p>
The MonoRail/Castle team has done an incredible job in my mind at making this a viable
option instead of WebForms.   I still have a lot of reservations about
the end-to-end usage, but I've let down my guard immensely after getting my feet wet. 
Judging from the user base out there by viewing blog posts and/or forums about MonoRail
there's enough of a following that I'm fairly certain the issues above are solved. 
If they are in fact solved, then I have great confidence that they'll be just as easy
and "right" to use as MonoRail, which will make MonoRail hard to ignore for future
projects.
</p>
        <img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=ee43bba3-9f4a-4bca-a252-f8bd30c87d6a" />
      </body>
      <title>MonoRail, a refreshing view into MVC</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,ee43bba3-9f4a-4bca-a252-f8bd30c87d6a.aspx</guid>
      <link>http://www.timbarcz.com/blog/MonoRailARefreshingViewIntoMVC.aspx</link>
      <pubDate>Thu, 26 Jul 2007 05:28:03 GMT</pubDate>
      <description>&lt;p&gt;
&lt;img src="http://upload.wikimedia.org/wikipedia/en/7/7c/ModelViewControllerDiagram.png" align=right&gt;The &lt;a href="http://en.wikipedia.org/wiki/Model-view-controller"&gt;Model
View Controller pattern&lt;/a&gt;&amp;nbsp;(MVC) seems to be the pattern du jour in many development
shops.&amp;nbsp; That is until of course, some literate nerd reminds everyone, that there
is &lt;a href="http://en.wikipedia.org/wiki/No_Silver_Bullet"&gt;"No Silver Bullet."&lt;/a&gt;&amp;nbsp;
The recent rush to Ruby on Rails, which implement&amp;nbsp;this pattern out of the box,&amp;nbsp;has
only served to add to the number of people singing the praise of MVC.&amp;nbsp; Microsoft
marketing fed programmers seemed to be quick to retort that the WebForm in Asp.NET
is in fact an MVC implementation.&amp;nbsp; I can't speak for others, but "the codebehind
is the controller" always felt a bit like kissing your sister.
&lt;/p&gt;
&lt;p&gt;
The other day I started playing with &lt;a href="http://www.castleproject.org/monorail/index.html"&gt;MonoRail&lt;/a&gt;, &lt;a href="http://www.castleproject.org"&gt;Castle's&lt;/a&gt;&amp;nbsp;MVC
implementation for the .NET framework.
&lt;/p&gt;
&lt;blockquote dir=ltr style="MARGIN-RIGHT: 0px"&gt; 
&lt;p&gt;
&lt;em&gt;"MonoRail differs from the standard &lt;/em&gt;&lt;a href="http://msdn.microsoft.com/asp.net/learning/default.aspx"&gt;&lt;em&gt;WebForms&lt;/em&gt;&lt;/a&gt;&lt;em&gt; way
of development as it enforces separation of concerns; controllers just handle application
flow, models represent the data, and the view is just concerned about presentation
logic. Consequently, you write less code and end up with a more maintainable application."&lt;/em&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p dir=ltr&gt;
My first reaction after overcoming the newness and understanding the project/solution
layout was &lt;strong&gt;that this felt like how it should be.&lt;/strong&gt;&amp;nbsp; I was programming
a class and that class held nothing more than data about the object.&amp;nbsp; My controller
for that "model" was shuffling things around and making the decision about what to
do and when.
&lt;/p&gt;
&lt;p dir=ltr&gt;
There are obviously some things you give up when going to MonoRail but I hope to assuage
your fears and mine by digging in a little further.&amp;nbsp; Here are the items I have
on my notepad to learn:
&lt;/p&gt;
&lt;ul dir=ltr&gt;
&lt;li&gt;
&lt;div&gt;Are base class library tools (TextBox, CheckBoxList, ect) as well as third party
tools (ie. &lt;a href="http://www.componentart.com"&gt;Component Art&lt;/a&gt; or &lt;a href="http://www.telerik.com"&gt;Telerik&lt;/a&gt;)
no longer available?&amp;nbsp; If they're no longer available are the counterpart offerings
as good as what is offered using WebForms?
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Ajax?&amp;nbsp; Seemingly ASP.NET Ajax is out if you go with MonoRail, so what to
use instead?&amp;nbsp; Has MonoRail adopted one of the javascript libraries as it's main
provider for javascripting/ajax?&amp;nbsp; If so how does it compare in ease of use when
compared to ASP.NET Ajax?
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Af first glance, there also no longer seems to be ways to use server controls
or user controls?&amp;nbsp; Is this statement accurrate?&amp;nbsp; If so what is the proposed
method of getting the same functionality.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
The MonoRail/Castle team has done an incredible job in my mind at making this a viable
option instead of WebForms.&amp;nbsp;&amp;nbsp;&amp;nbsp;I still have a lot of reservations about
the end-to-end usage, but I've let down my guard immensely after getting my feet wet.&amp;nbsp;
Judging from the user base out there by viewing blog posts and/or forums about MonoRail
there's enough of a following that I'm fairly certain the issues above are solved.&amp;nbsp;
If they are in fact solved, then I have great confidence that they'll be just as easy
and "right" to use as MonoRail, which will make MonoRail hard to ignore for future
projects.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=ee43bba3-9f4a-4bca-a252-f8bd30c87d6a" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,ee43bba3-9f4a-4bca-a252-f8bd30c87d6a.aspx</comments>
      <category>Musings</category>
      <category>Software</category>
    </item>
    <item>
      <trackback:ping>http://www.timbarcz.com/blog/Trackback.aspx?guid=1f2675fc-957f-40a0-901c-ee5d600f2aaf</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,1f2675fc-957f-40a0-901c-ee5d600f2aaf.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,1f2675fc-957f-40a0-901c-ee5d600f2aaf.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=1f2675fc-957f-40a0-901c-ee5d600f2aaf</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img title="Bored!" height="240" alt="Bored!" src="http://www.timbarcz.com/blog/content/binary/732192_bored.jpg" width="300" align="right" border="0" />Occasionally
I interview prospective employees at <a href="http://www.geonetric.com">the company
I work for</a>.  In the course of the interview I of course look for technical
competency, but I also look for passion.  Passion in my mind is the opposite
of boredom.  I think 9 times out of 10 I'd take a passionate programmer instead
of the bored all-star.  Why?  I think passion for the technology you're
working with will ultimately be visible in the product you're developing.  Passion
can manifest itself in different ways, so don't look for it always in the same place.  <a href="http://www.geonetric.com">Geonetric</a> in
many ways has done an excellent job in hiring passionate employees.  I want to
give you two recent examples, but some of my co-workers read this so I'll keep the
following as minimal as possible.  
</p>
        <ul>
          <li>
We have one developer who was in the break/lunch room with me and we got to talking
about a problem.  The discussion got to the point where we needed to go look
at a computer screen, the discussion went something like this:</li>
        </ul>
        <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
          <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
            <p>
Me: Yada Yada Yada....I'll show you later after you eat.
</p>
            <p>
Developer: Let's go look now.
</p>
            <p>
Me: Now?
</p>
            <p>
Developer: Yes, learn first.
</p>
          </blockquote>
          <p dir="ltr">
"Learn first."  That's passion.
</p>
        </blockquote>
        <ul dir="ltr">
          <li>
            <div>Another developer, fresh out of college, has jumped right in to the project to
the point where I don't look at him at all like a fresh college grad anymore. 
His passion is a project on the side where he's seeing if he can better deliver web
content using XSLT and XML rather than delivering (x)html (sorry Scott if I've butchered
the goal).  Is it relevant to what we do daily at work? Maybe.  Maybe
not.  The point is that he is passionate about XSLT/XML and jiggering with the
technology to bend it to do what he wants.  That's the kind of guy I want on
my team.
</div>
          </li>
        </ul>
        <p>
Passion in my mind is a key characteristic of being a great developer.  A passionate
developer is will never stop learning and enjoys the journey of learning and thus
is an asset to any team.
</p>
        <img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=1f2675fc-957f-40a0-901c-ee5d600f2aaf" />
      </body>
      <title>Passion in Programmers</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,1f2675fc-957f-40a0-901c-ee5d600f2aaf.aspx</guid>
      <link>http://www.timbarcz.com/blog/PassionInProgrammers.aspx</link>
      <pubDate>Sun, 22 Jul 2007 04:21:43 GMT</pubDate>
      <description>&lt;p&gt;
&lt;img title=Bored! height=240 alt=Bored! src="http://www.timbarcz.com/blog/content/binary/732192_bored.jpg" width=300 align=right border=0&gt;Occasionally
I interview prospective employees at &lt;a href="http://www.geonetric.com"&gt;the company
I work for&lt;/a&gt;.&amp;nbsp; In the course of the interview I of course look for technical
competency, but I also look for passion.&amp;nbsp; Passion in my mind is the opposite
of boredom.&amp;nbsp; I think 9 times out of 10 I'd take a passionate programmer instead
of the bored all-star.&amp;nbsp; Why?&amp;nbsp; I think passion for the technology you're
working with will ultimately be visible in the product you're developing.&amp;nbsp; Passion
can manifest itself in different ways, so don't look for it always in the same place.&amp;nbsp; &lt;a href="http://www.geonetric.com"&gt;Geonetric&lt;/a&gt; in
many ways has done an excellent job in hiring passionate employees.&amp;nbsp; I want to
give you two recent examples, but some of my co-workers read this so I'll keep the
following as minimal as possible.&amp;nbsp; 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
We have one developer who was in the break/lunch room with me and we got to talking
about a problem.&amp;nbsp; The discussion got to the point where we needed to go look
at a computer screen, the discussion went something like this:&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote dir=ltr style="MARGIN-RIGHT: 0px"&gt; &lt;blockquote dir=ltr style="MARGIN-RIGHT: 0px"&gt; 
&lt;p&gt;
Me: Yada Yada Yada....I'll show you later after you eat.
&lt;/p&gt;
&lt;p&gt;
Developer: Let's go look now.
&lt;/p&gt;
&lt;p&gt;
Me: Now?
&lt;/p&gt;
&lt;p&gt;
Developer: Yes, learn first.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p dir=ltr&gt;
"Learn first."&amp;nbsp; That's passion.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;ul dir=ltr&gt;
&lt;li&gt;
&lt;div&gt;Another developer, fresh out of college, has jumped right in to the project to
the point where I don't look at him at all like a fresh college grad anymore.&amp;nbsp;
His passion is a project on the side where he's seeing if he can better deliver web
content using XSLT and XML rather than delivering (x)html (sorry Scott if I've butchered
the goal).&amp;nbsp; Is it relevant to what we&amp;nbsp;do daily at work? Maybe.&amp;nbsp; Maybe
not.&amp;nbsp; The point is that he is passionate about XSLT/XML and jiggering with the
technology to bend it to do what he wants.&amp;nbsp; That's the kind of guy I want on
my team.
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Passion in my mind is a key characteristic of being a great developer.&amp;nbsp; A passionate
developer is will never stop learning and enjoys the journey of learning and thus
is an asset to any team.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=1f2675fc-957f-40a0-901c-ee5d600f2aaf" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,1f2675fc-957f-40a0-901c-ee5d600f2aaf.aspx</comments>
      <category>Musings</category>
      <category>Software</category>
    </item>
    <item>
      <trackback:ping>http://www.timbarcz.com/blog/Trackback.aspx?guid=392cac9c-837a-49c0-a7a8-a0b12e201324</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,392cac9c-837a-49c0-a7a8-a0b12e201324.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,392cac9c-837a-49c0-a7a8-a0b12e201324.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=392cac9c-837a-49c0-a7a8-a0b12e201324</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
An analogy: A person does not pack the same for a overnight trip the same things as
they would for a month long trip.  The month long trip requires not only more
luggage but also has to take into account things that wouldn't need to be accounted
for on an overnight trip.  In other words, you have to pack adequately for the
trip you are going on.  The luggage you'd take on a month long trip is too much
for an overnight and the same is true for a single overnight bag taken on a month
long trip.
</p>
        <p>
In software terms I'm finding myself to be like the guy who too has taken many weekend
or short vacations packing only a single pair of underwear and a toothbrush and thinking
the same will be adequate for a weeklong cruise to Alaska.  It's not.  <strong>What
works in a smaller environment and brings success there does not inherently bring
success on a larger scale.  </strong>In keeping with the analogy, I can't say
to the Maître de on the cruise, "My bathing suit is surely adequate for this formal
dinner, I've worn this bathing suit hundreds of time before."  The analogy is
silly, but the point is that what works in one situation doesn't work elsewhere. 
Where a bathing suit is adequate for a weekend camping trip it's not for a cruise. 
On that cruise there are expectation of other passengers and the dining room that
you will dress appropriately.
</p>
        <p>
In terms of software that means planning better, capturing requirements better,
understanding the business behind the decisions, keeping fellow developers excited
and passionate about what they're working on, dealing with interpersonal communication
better, and making sure that everyone is on the same page and that we're all working
toward a common unified target.  As we grow, I need to perform better in these
areas.  It's not something I can put off and figure out later.  If I/we
don't plan properly and "pack correctly" there may not be a later.
</p>
        <p>
So wherever you are and whatever software project you may be working on ask yourself
what the goal or aim of that software is and if you've packed properly for it. 
Because if you haven't, you may not get a seat at the table.
</p>
        <p>
 
</p>
        <img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=392cac9c-837a-49c0-a7a8-a0b12e201324" />
      </body>
      <title>Adapting to Larger Software Projects</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,392cac9c-837a-49c0-a7a8-a0b12e201324.aspx</guid>
      <link>http://www.timbarcz.com/blog/AdaptingToLargerSoftwareProjects.aspx</link>
      <pubDate>Fri, 20 Jul 2007 03:45:55 GMT</pubDate>
      <description>&lt;p&gt;
An analogy: A person does not pack the same for a overnight trip the same things as
they would for a month long trip.&amp;nbsp; The month long trip requires not only more
luggage but also has to take into account things that wouldn't need to be accounted
for on an overnight trip.&amp;nbsp; In other words, you have to pack adequately for the
trip you are going on.&amp;nbsp; The luggage you'd take on a month long trip is too much
for an overnight and the same is true for a single overnight bag taken on a month
long trip.
&lt;/p&gt;
&lt;p&gt;
In software terms I'm finding myself to be like the guy who too has taken many weekend
or short vacations packing only a single pair of underwear and a toothbrush and thinking
the same will be adequate for a weeklong cruise to Alaska.&amp;nbsp; It's not.&amp;nbsp; &lt;strong&gt;What
works in a smaller environment and brings success there does not inherently bring
success on a larger scale.&amp;nbsp; &lt;/strong&gt;In keeping with the analogy, I can't say
to the Maître de on the cruise, "My bathing suit is surely adequate for this formal
dinner, I've worn this bathing suit hundreds of time before."&amp;nbsp; The analogy is
silly, but the point is that what works in one situation doesn't work elsewhere.&amp;nbsp;
Where a bathing suit is adequate for a weekend camping trip it's not for a cruise.&amp;nbsp;
On that cruise there are expectation of other passengers and the dining room that
you will dress appropriately.
&lt;/p&gt;
&lt;p&gt;
In terms of software that means planning better,&amp;nbsp;capturing requirements better,
understanding the business behind the decisions, keeping fellow developers excited
and passionate about what they're working on, dealing with interpersonal communication
better, and making sure that everyone is on the same page and that we're all working
toward a common unified target.&amp;nbsp; As we grow, I need to perform better in these
areas.&amp;nbsp; It's not something I can put off and figure out later.&amp;nbsp; If I/we
don't plan properly and "pack correctly" there may not be a later.
&lt;/p&gt;
&lt;p&gt;
So wherever you are and whatever software project you may be working on ask yourself
what the goal or aim of that software is and if you've packed properly for it.&amp;nbsp;
Because if you haven't, you may not get a seat at the table.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=392cac9c-837a-49c0-a7a8-a0b12e201324" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,392cac9c-837a-49c0-a7a8-a0b12e201324.aspx</comments>
      <category>Musings</category>
      <category>Software</category>
    </item>
    <item>
      <trackback:ping>http://www.timbarcz.com/blog/Trackback.aspx?guid=a3603625-26f9-4bc0-977f-026ed7de964c</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,a3603625-26f9-4bc0-977f-026ed7de964c.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,a3603625-26f9-4bc0-977f-026ed7de964c.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=a3603625-26f9-4bc0-977f-026ed7de964c</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">I've known about <a href="http://www.flickr.com">Flickr</a> for
some time.  It's touted as a great Web 2.0 site with all the Ajax trimmings. 
I tinker and sign up for websites all the time with no other purpose than to just
try it out.  I never did so with Flickr.  Whether it was because I don't
take that many pictures, Picasa seemed to do the same thing, or the fact that my snapshots
seemed outclassed by some of the photos already I don't know.<br /><br />
There's also some pretty neat research stuff going on with Flickr and tagging, the
coolest I've heard of lately is <a href="http://labs.live.com/photosynth/">PhotoSynth</a> from
Microsoft (check out the neat video from the <a href="http://www.clipaday.com/videos/ridiculous-image-technology-coming">TED
Conference</a>).<br /><br />
I signed up for an account and uploaded pictures after wanting to upload some pictures
of my new son Lincoln.  The computer I was on was a "rental" from the hospital
and was severly limiting.  I used Flickr to upload and resize the pictures automatically.<br /><br /><a href="http://en.wikipedia.org/wiki/Geoffrey_Moore">Geoffrey A. Moore</a> wrote
in his book <a href="http://www.amazon.com/Crossing-Chasm-Marketing-High-Tech-Mainstream/dp/0066620023">Crossing
the Chasm</a> (<a href="http://books.google.com/books?id=yJXHUDSaJgsC&amp;dq=Crossing+the+Chasm&amp;pg=PP1&amp;ots=KRTBi7V7Yl&amp;sig=DGbpILZbwHGUbfaQYbA1bvl3_b4&amp;prev=http://www.google.com/search%3Fq%3DCrossing%2Bthe%2BChasm%26ie%3Dutf-8%26oe%3Dutf-8%26aq%3Dt%26rls%3Dorg.mozilla:en-US:official%26client%3Dfirefox-a&amp;sa=X&amp;oi=print&amp;ct=title#PPR7,M1">Google
Book</a>) regarding technology<br /><br /><ul><li><p align="left"><font size="2">the first 2.5% of the adopters are the "innovators"<img src="http://www.timbarcz.com/blog/content/binary/thechasm.jpg" alt="thechasm.jpg" align="right" border="0" height="249" width="438" /></font></p></li><li><p align="left"><font size="2">the next 13.5% of the adopters are the "early adopters"</font></p></li><li><p align="left"><font size="2">the next 34% of the adopters are the "early majority"</font></p></li><li><p align="left"><font size="2">the next 34% of the adopters are the "late majority"</font></p></li><li><p align="left"><font size="2">the last 16% of the adopters are the "laggards"</font></p></li></ul>
When it comes to photos I'm clearly in the "Customers want solutions and convenience"
group.  Now that I've found Flickr, I think I'm on Flickr to stay.  It's
free, it's Yahoo owned and therefore very reliable and very responsive.  The
Ajaxy goodness is nice and very cool, but the Ajax is really just a means to an end. 
The actual things I want to do with my photos once uploaded have already been thought
of and are provided through a quick, reactive drop down.  Very slick Flickr!
Thumbs up to you guys and thanks for helping me out of a bind.<br />
 <br /><p></p><img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=a3603625-26f9-4bc0-977f-026ed7de964c" /></body>
      <title>Crossing the Chasm joining Flickr</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,a3603625-26f9-4bc0-977f-026ed7de964c.aspx</guid>
      <link>http://www.timbarcz.com/blog/CrossingTheChasmJoiningFlickr.aspx</link>
      <pubDate>Tue, 10 Jul 2007 03:31:24 GMT</pubDate>
      <description>I've known about &lt;a href="http://www.flickr.com"&gt;Flickr&lt;/a&gt; for some time.&amp;nbsp; It's
touted as a great Web 2.0 site with all the Ajax trimmings.&amp;nbsp; I tinker and sign
up for websites all the time with no other purpose than to just try it out.&amp;nbsp;
I never did so with Flickr.&amp;nbsp; Whether it was because I don't take that many pictures,
Picasa seemed to do the same thing, or the fact that my snapshots seemed outclassed
by some of the photos already I don't know.&lt;br&gt;
&lt;br&gt;
There's also some pretty neat research stuff going on with Flickr and tagging, the
coolest I've heard of lately is &lt;a href="http://labs.live.com/photosynth/"&gt;PhotoSynth&lt;/a&gt; from
Microsoft (check out the neat video from the &lt;a href="http://www.clipaday.com/videos/ridiculous-image-technology-coming"&gt;TED
Conference&lt;/a&gt;).&lt;br&gt;
&lt;br&gt;
I signed up for an account and uploaded pictures after wanting to upload some pictures
of my new son Lincoln.&amp;nbsp; The computer I was on was a "rental" from the hospital
and was severly limiting.&amp;nbsp; I used Flickr to upload and resize the pictures automatically.&lt;br&gt;
&lt;br&gt;
&lt;a href="http://en.wikipedia.org/wiki/Geoffrey_Moore"&gt;Geoffrey A. Moore&lt;/a&gt; wrote
in his book &lt;a href="http://www.amazon.com/Crossing-Chasm-Marketing-High-Tech-Mainstream/dp/0066620023"&gt;Crossing
the Chasm&lt;/a&gt; (&lt;a href="http://books.google.com/books?id=yJXHUDSaJgsC&amp;amp;dq=Crossing+the+Chasm&amp;amp;pg=PP1&amp;amp;ots=KRTBi7V7Yl&amp;amp;sig=DGbpILZbwHGUbfaQYbA1bvl3_b4&amp;amp;prev=http://www.google.com/search%3Fq%3DCrossing%2Bthe%2BChasm%26ie%3Dutf-8%26oe%3Dutf-8%26aq%3Dt%26rls%3Dorg.mozilla:en-US:official%26client%3Dfirefox-a&amp;amp;sa=X&amp;amp;oi=print&amp;amp;ct=title#PPR7,M1"&gt;Google
Book&lt;/a&gt;) regarding technology&lt;br&gt;
&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p align="left"&gt;
&lt;font size="2"&gt;the first 2.5% of the adopters are the "innovators"&lt;img src="http://www.timbarcz.com/blog/content/binary/thechasm.jpg" alt="thechasm.jpg" align="right" border="0" height="249" width="438"&gt;&lt;/font&gt; 
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p align="left"&gt;
&lt;font size="2"&gt;the next 13.5% of the adopters are the "early adopters"&lt;/font&gt; 
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p align="left"&gt;
&lt;font size="2"&gt;the next 34% of the adopters are the "early majority"&lt;/font&gt; 
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p align="left"&gt;
&lt;font size="2"&gt;the next 34% of the adopters are the "late majority"&lt;/font&gt; 
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p align="left"&gt;
&lt;font size="2"&gt;the last 16% of the adopters are the "laggards"&lt;/font&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
When it comes to photos I'm clearly in the "Customers want solutions and convenience"
group.&amp;nbsp; Now that I've found Flickr, I think I'm on Flickr to stay.&amp;nbsp; It's
free, it's Yahoo owned and therefore very reliable and very responsive.&amp;nbsp; The
Ajaxy goodness is nice and very cool, but the Ajax is really just a means to an end.&amp;nbsp;
The actual things I want to do with my photos once uploaded have already been thought
of and are provided through a quick, reactive drop down.&amp;nbsp; Very slick Flickr!
Thumbs up to you guys and thanks for helping me out of a bind.&lt;br&gt;
&amp;nbsp;&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=a3603625-26f9-4bc0-977f-026ed7de964c" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,a3603625-26f9-4bc0-977f-026ed7de964c.aspx</comments>
      <category>Software</category>
      <category>Musings</category>
    </item>
  </channel>
</rss>