<?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 - Musings</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 - Musings</title>
      <link>http://www.timbarcz.com/blog/</link>
    </image>
    <language>en-us</language>
    <copyright>Tim Barcz</copyright>
    <lastBuildDate>Wed, 01 Dec 2010 03:56:25 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=c257ee56-5817-4250-85f6-1b045f8d3897</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,c257ee56-5817-4250-85f6-1b045f8d3897.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,c257ee56-5817-4250-85f6-1b045f8d3897.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=c257ee56-5817-4250-85f6-1b045f8d3897</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.timbarcz.com/blog/content/binary/Windows-Live-Writer/eBooks-and-the-Future_13375/kindle-32%5B1%5D_2.jpg">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="kindle-32[1]" border="0" alt="kindle-32[1]" align="right" src="http://www.timbarcz.com/blog/content/binary/Windows-Live-Writer/eBooks-and-the-Future_13375/kindle-32%5B1%5D_thumb.jpg" width="375" height="289" />
          </a>As
a child I saw books all around the house. I remember seeing them in my dad’s office,
in our living room, family room, and even by my parent’s nightstand.  With books
going to digital formats more and more, my children will be less likely to see a book
on my shelves as they grow older and will not ask, “What’s this book about” or “Hey
dad would any of these be good for me to read.”  All of that is lost if all of
my books are stored only in digital format.
</p>
        <p>
As more books are delivered in digital formats will those piles of books disappear
and reduce the desired reading of future generations?
</p>
        <img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=c257ee56-5817-4250-85f6-1b045f8d3897" />
      </body>
      <title>eBooks and the Future</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,c257ee56-5817-4250-85f6-1b045f8d3897.aspx</guid>
      <link>http://www.timbarcz.com/blog/eBooksAndTheFuture.aspx</link>
      <pubDate>Wed, 01 Dec 2010 03:56:25 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.timbarcz.com/blog/content/binary/Windows-Live-Writer/eBooks-and-the-Future_13375/kindle-32%5B1%5D_2.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="kindle-32[1]" border="0" alt="kindle-32[1]" align="right" src="http://www.timbarcz.com/blog/content/binary/Windows-Live-Writer/eBooks-and-the-Future_13375/kindle-32%5B1%5D_thumb.jpg" width="375" height="289" /&gt;&lt;/a&gt;As
a child I saw books all around the house. I remember seeing them in my dad’s office,
in our living room, family room, and even by my parent’s nightstand.&amp;#160; With books
going to digital formats more and more, my children will be less likely to see a book
on my shelves as they grow older and will not ask, “What’s this book about” or “Hey
dad would any of these be good for me to read.”&amp;#160; All of that is lost if all of
my books are stored only in digital format.
&lt;/p&gt;
&lt;p&gt;
As more books are delivered in digital formats will those piles of books disappear
and reduce the desired reading of future generations?
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=c257ee56-5817-4250-85f6-1b045f8d3897" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,c257ee56-5817-4250-85f6-1b045f8d3897.aspx</comments>
      <category>Family</category>
      <category>Musings</category>
    </item>
    <item>
      <trackback:ping>http://www.timbarcz.com/blog/Trackback.aspx?guid=89065ec0-8d2d-48b8-8803-ad6942160f2c</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,89065ec0-8d2d-48b8-8803-ad6942160f2c.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,89065ec0-8d2d-48b8-8803-ad6942160f2c.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=89065ec0-8d2d-48b8-8803-ad6942160f2c</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
        <p>
The following is an email I wrote to the upper management in our company when asked
about things we can do to improve the process and what are the next steps of things
we need to fix in our application.  It remains mostly unedited and contains my
thoughts on what will make our company better when it comes to the software we're
writing.  It wasn't written as a blog post.  It wasn't until after I finished
with it that I realized that it was decent content for a blog post.  You'll find
a very "XP-ish" theme throughout, and that isn't necessarily an accident. 
Hope you enjoy! Please leave feedback if something moves you.
</p>
        <h2>Overview
</h2>
        <p>
The following contains my thoughts on software development at Super Awesome Company.
While I can address the specifics of the project that I see need to be fixed and modified
(the “what”), I am instead going to focus on how these items get fixed.
I am choosing to do this because over time the new website will have bugs that need
to be fixed, enhancements that need to be made, or new features requested. For the
long term health of the project it does not matter so much “what” is implemented
but rather “how”. For that reason I am avoiding specific project level
tasks in this document and speaking at a higher level.
</p>
        <p>
Software has been being developed for over 30 years. While the internet is relatively
young, software development by comparison is not. Super Awesome Company will benefit
from a commitment to good software development practices. Further, it takes a great
deal of commitment and discipline to reap the benefits these practices can bring.
Many of my suggestions are based on these principles, which are principles I have
committed to learning and adopting over the last several years.
</p>
        <p>
The overarching suggestion I would make is make quality the focus. In order to produce
quality, we must slow down. In order to go fast you must go slowly. Sacrificing quality
should never be an option. Consider a car manufacturer who needs to get 100 cars built
in a single day. If they can only build 80 cars a day, is it better for them in the
long run to get 100 cars out the door but have problems or 80 problem free cars? Building
deficient cars carries more expense that just fixing the broken cars, such diminished
brand reputation. If the goal is 100 cars per day, measures should be sought to increase
production while keeping quality high.
</p>
        <p>
We don't need to look too far to see where in a rush we've done something that we've
had to revisit several more times because we were "going fast". We've been
rushed for nearly a year and I can't say that we are any further along than we would
have been had we approached the project more methodically. In some areas we may be
further behind where we would have been since we "made sacrifices" to get
things done, which have ultimately only put us further behind. Again, to go fast we
must go "slow" (methodical). Put another way, quality breeds speed.
</p>
        <p>
          <b>Any process, principle, practice we choose should have quality at its heart. Regardless
of what process, principles, practices we adopt they will only be successful if we
are disciplined enough to follow them. </b>
        </p>
        <h2>Planning
</h2>
        <h3>Requirements 
</h3>
        <p>
Requirements need to be clear and understood by all parties. Before developers set
out to coding we need to have a clear understanding of what the problem is. The developer
is not able to provide a solution until the problem is fully known and understood.
Often the perceived solution to a problem is not the best solution. Failure to fully
understand the problem/scenario results in rework.
</p>
        <h3>Releases
</h3>
        <p>
We need to have planned releases. The timeframe can be discussed and agreed upon by
the team. In order to have successful releases we need to plan each release. Each
release should be broken down into smaller time frames, iterations. During the iteration
the work should be stable for each developer. In other words, they know what they’re
going to work on and accomplish (see requirements above) for any given time period.
</p>
        <h3>Metrics
</h3>
        <p>
We need to be measuring metrics for the purposes of planning. If we get 10 units of
work done each week on average and we have 20 units of work to do, we can easily figure
out what is left to do. Without any metrics gathering we can’t do any planning
and we’re really flying blind. This will also help with project post mortems.
For example, the “web order manager” project was originally estimated
to take a week worth of development effort. Three months later, it is still not finished.
This is a combination of putting someone with limited knowledge of the business estimating
the project, an overly aggressive developer estimate, and having no metric to pull
from on how long something should take.
</p>
        <h3>Flexibility
</h3>
        <p>
We need to be disciplined in the process of building software, but also realize when
the process needs tweaking that we should respond and not be afraid to tweak the process
to meet the needs of our team
</p>
        <h2>Design
</h2>
        <h3>Simplicity
</h3>
        <p>
We should strive for simplicity in our designs. “Clever hacks” are often
not healthy for the life time of the project. Simple designs are easier to understand
and improve upon. Simple designs also allow other developers ease in working on code.
This is much harder to do in practice but it always pays off in the long run.
</p>
        <p>
Design aspects dovetail with testing (later in this document). Typically complex designs
prove to be hard to test. When we write code based on simpler designs we’ll
find that our code is easier to test. We want both, simple designs and easy-to-test
code.
</p>
        <h2>Coding
</h2>
        <h3>Standards
</h3>
        <p>
We should implement a standard for code development. Right now you can find three
different styles/methods of coding in the code base. This makes it hard for developers
to work on code they did not author. Projects I work on outside of work require all
new code meet the standard, otherwise it is rejected until it meets this standard.
As a consumer of these projects I’m always grateful when I can move through
any of the project pieces and the code always looks the same.
</p>
        <h3>Testing
</h3>
        <p>
Given the environment and complexity of the code, we need to require the developers
to be able to test their code in an automated fashion. Visual verification is orders
of magnitude slower than automated testing. Once an automated test is written, it
runs every time. By having a large collection of tests we can makes changes to certain
parts of the application and use existing tests as a safety net to verify nothing
else has broken. We currently have over 1,150 tests (about 30% of code has tests)
that run whenever someone commits code into source control. Those tests run in about
20 seconds. Imagine how long it would take a user to test each of those cases visually
every time a piece of code changes.
</p>
        <p>
Two weeks ago I sat in a meeting adding functionality to shipping and enhancing rules
around shipping hazardous items to Canada while people were finding issues because
of a solid base of tests. Before the meeting was over both issues discovered were
fixed and tests were added for these specific issues so we would be guarded against
this happening again.
</p>
        <h3>Unit Tests
</h3>
        <p>
All code must have unit tests that can be run in an automated fashion. If the code
cannot be unit tested (tested in isolation from other components) it should be restructured
in such a way that it can be tested. Very few pieces of code are truly not testable.
As such we should have very few areas in our code base which are not tested.
</p>
        <h3>Proving Bug Fixes Through Tests
</h3>
        <p>
When bug is found a test should be written before any attempt to fix the bug. This
test proves to the developer the bug exists but secondly gives the developer a marker
to know when the bug is fixed. As a benefit, this new test acts as a guard against
this particular bug ever happening again. This test, when first written, should fail
because the developer has not fixed the bug yet. The developer should then work to
make the test pass, and by extension fixing the bug. The cost of adding the test is
very small when compared against having the test guard against this condition ever
happening again. 
</p>
        <h3>Code Coverage
</h3>
        <p>
We should implement a standard for new code coverage, code that is tested by an automated
test. I would recommend somewhere in the 80%-90% range for code coverage. In order
to write tests the developers will be forced to think about their code a bit more
thoroughly.
</p>
        <h3>Pair Programming
</h3>
        <p>
We should adopt pair programming as a method to both increase shared knowledge but
also as a means to quality. Pair programming is two developers sitting at one computer
for a period of time while code is written. From the outside it may seem impractical
to devote two developers to a single computer, thinking it is inefficient. Industry
studies however show that code written in a pair has a four-fold benefit:
</p>
        <ol>
          <li>
15% less code– Studies showed that less code is written in order to implement
the same functionality. Less code means less to maintain and understand. Less code
is also typically simpler. 
</li>
          <li>
Less bugs – Developers, when working in pairs, can catch each other’s
bugs before they ever make it to production. We therefore save time that it would
take to fix the bugs that would otherwise go undiscovered. 
</li>
          <li>
Shared domain knowledge – When “pairing”, each developer is training
the other and sharing knowledge and rules around the business. This avoids silos and
situations where only one person knows the code. 
</li>
          <li>
Increased Skill – When “pairing”, design, coding, and testing techniques
are transferred between developers. This is often why many development shops pair
their senior developers with junior developers; to raise the skill level of the junior
developer. 
</li>
        </ol>
        <h3>Collective Code Ownership
</h3>
        <p>
No one person should be a silo/bottleneck for any area of the code. Any person should
be free to make suggestions, fix bugs, or refactor any part of the code. Pair programming
(see above) is one tool which seeks to address this.
</p>
        <h2>Conclusion
</h2>
        <p>
While the above recommendations may seem like a lot, the above items all really go
hand-in-hand. Consider:
</p>
        <ul>
          <li>
            <b>Collective Code Ownership</b> is had through <b>Pair Programming</b></li>
          <li>
            <b>Standards</b> are enforced by developers when <b>Pair Programming</b></li>
          <li>
Writing <b>Unit Tests</b> typically leads to <b>Simple Designs</b></li>
          <li>
A commitment to <b>Code Coverage</b> leads to more <b>Unit Tests</b></li>
          <li>
Gathering <b>Metrics</b> leads to better estimates and <b>Release </b>planning 
</li>
        </ul>
        <p>
Adopting the above will move us in a positive direction and ensure that all projects
coming from our department will be of ever heightening quality. Once the quality bar
is set, then we will begin to see the pace pick up; Remember, quality is a prerequisite
to speed.
</p>
        <img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=89065ec0-8d2d-48b8-8803-ad6942160f2c" />
      </body>
      <title>Improving Software Process - A Letter to Upper Management</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,89065ec0-8d2d-48b8-8803-ad6942160f2c.aspx</guid>
      <link>http://www.timbarcz.com/blog/ImprovingSoftwareProcessALetterToUpperManagement.aspx</link>
      <pubDate>Thu, 05 Mar 2009 18:48:42 GMT</pubDate>
      <description>&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
The following is an email I wrote to the upper management in our company when asked
about things we can do to improve the process and what are the next steps of things
we need to fix in our application.&amp;#160; It remains mostly unedited and contains my
thoughts on what will make our company better when it comes to the software we're
writing.&amp;#160; It wasn't written as a blog post.&amp;#160; It wasn't until after I finished
with it that I realized that it was decent content for a blog post.&amp;#160; You'll find
a very &amp;quot;XP-ish&amp;quot; theme throughout, and that isn't necessarily an accident.&amp;#160;
Hope you enjoy! Please leave feedback if something moves you.
&lt;/p&gt;
&lt;h2&gt;Overview
&lt;/h2&gt;
&lt;p&gt;
The following contains my thoughts on software development at Super Awesome Company.
While I can address the specifics of the project that I see need to be fixed and modified
(the &amp;#8220;what&amp;#8221;), I am instead going to focus on how these items get fixed.
I am choosing to do this because over time the new website will have bugs that need
to be fixed, enhancements that need to be made, or new features requested. For the
long term health of the project it does not matter so much &amp;#8220;what&amp;#8221; is implemented
but rather &amp;#8220;how&amp;#8221;. For that reason I am avoiding specific project level
tasks in this document and speaking at a higher level.
&lt;/p&gt;
&lt;p&gt;
Software has been being developed for over 30 years. While the internet is relatively
young, software development by comparison is not. Super Awesome Company will benefit
from a commitment to good software development practices. Further, it takes a great
deal of commitment and discipline to reap the benefits these practices can bring.
Many of my suggestions are based on these principles, which are principles I have
committed to learning and adopting over the last several years.
&lt;/p&gt;
&lt;p&gt;
The overarching suggestion I would make is make quality the focus. In order to produce
quality, we must slow down. In order to go fast you must go slowly. Sacrificing quality
should never be an option. Consider a car manufacturer who needs to get 100 cars built
in a single day. If they can only build 80 cars a day, is it better for them in the
long run to get 100 cars out the door but have problems or 80 problem free cars? Building
deficient cars carries more expense that just fixing the broken cars, such diminished
brand reputation. If the goal is 100 cars per day, measures should be sought to increase
production while keeping quality high.
&lt;/p&gt;
&lt;p&gt;
We don't need to look too far to see where in a rush we've done something that we've
had to revisit several more times because we were &amp;quot;going fast&amp;quot;. We've been
rushed for nearly a year and I can't say that we are any further along than we would
have been had we approached the project more methodically. In some areas we may be
further behind where we would have been since we &amp;quot;made sacrifices&amp;quot; to get
things done, which have ultimately only put us further behind. Again, to go fast we
must go &amp;quot;slow&amp;quot; (methodical). Put another way, quality breeds speed.
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;Any process, principle, practice we choose should have quality at its heart. Regardless
of what process, principles, practices we adopt they will only be successful if we
are disciplined enough to follow them. &lt;/b&gt;
&lt;/p&gt;
&lt;h2&gt;Planning
&lt;/h2&gt;
&lt;h3&gt;Requirements 
&lt;/h3&gt;
&lt;p&gt;
Requirements need to be clear and understood by all parties. Before developers set
out to coding we need to have a clear understanding of what the problem is. The developer
is not able to provide a solution until the problem is fully known and understood.
Often the perceived solution to a problem is not the best solution. Failure to fully
understand the problem/scenario results in rework.
&lt;/p&gt;
&lt;h3&gt;Releases
&lt;/h3&gt;
&lt;p&gt;
We need to have planned releases. The timeframe can be discussed and agreed upon by
the team. In order to have successful releases we need to plan each release. Each
release should be broken down into smaller time frames, iterations. During the iteration
the work should be stable for each developer. In other words, they know what they&amp;#8217;re
going to work on and accomplish (see requirements above) for any given time period.
&lt;/p&gt;
&lt;h3&gt;Metrics
&lt;/h3&gt;
&lt;p&gt;
We need to be measuring metrics for the purposes of planning. If we get 10 units of
work done each week on average and we have 20 units of work to do, we can easily figure
out what is left to do. Without any metrics gathering we can&amp;#8217;t do any planning
and we&amp;#8217;re really flying blind. This will also help with project post mortems.
For example, the &amp;#8220;web order manager&amp;#8221; project was originally estimated
to take a week worth of development effort. Three months later, it is still not finished.
This is a combination of putting someone with limited knowledge of the business estimating
the project, an overly aggressive developer estimate, and having no metric to pull
from on how long something should take.
&lt;/p&gt;
&lt;h3&gt;Flexibility
&lt;/h3&gt;
&lt;p&gt;
We need to be disciplined in the process of building software, but also realize when
the process needs tweaking that we should respond and not be afraid to tweak the process
to meet the needs of our team
&lt;/p&gt;
&lt;h2&gt;Design
&lt;/h2&gt;
&lt;h3&gt;Simplicity
&lt;/h3&gt;
&lt;p&gt;
We should strive for simplicity in our designs. &amp;#8220;Clever hacks&amp;#8221; are often
not healthy for the life time of the project. Simple designs are easier to understand
and improve upon. Simple designs also allow other developers ease in working on code.
This is much harder to do in practice but it always pays off in the long run.
&lt;/p&gt;
&lt;p&gt;
Design aspects dovetail with testing (later in this document). Typically complex designs
prove to be hard to test. When we write code based on simpler designs we&amp;#8217;ll
find that our code is easier to test. We want both, simple designs and easy-to-test
code.
&lt;/p&gt;
&lt;h2&gt;Coding
&lt;/h2&gt;
&lt;h3&gt;Standards
&lt;/h3&gt;
&lt;p&gt;
We should implement a standard for code development. Right now you can find three
different styles/methods of coding in the code base. This makes it hard for developers
to work on code they did not author. Projects I work on outside of work require all
new code meet the standard, otherwise it is rejected until it meets this standard.
As a consumer of these projects I&amp;#8217;m always grateful when I can move through
any of the project pieces and the code always looks the same.
&lt;/p&gt;
&lt;h3&gt;Testing
&lt;/h3&gt;
&lt;p&gt;
Given the environment and complexity of the code, we need to require the developers
to be able to test their code in an automated fashion. Visual verification is orders
of magnitude slower than automated testing. Once an automated test is written, it
runs every time. By having a large collection of tests we can makes changes to certain
parts of the application and use existing tests as a safety net to verify nothing
else has broken. We currently have over 1,150 tests (about 30% of code has tests)
that run whenever someone commits code into source control. Those tests run in about
20 seconds. Imagine how long it would take a user to test each of those cases visually
every time a piece of code changes.
&lt;/p&gt;
&lt;p&gt;
Two weeks ago I sat in a meeting adding functionality to shipping and enhancing rules
around shipping hazardous items to Canada while people were finding issues because
of a solid base of tests. Before the meeting was over both issues discovered were
fixed and tests were added for these specific issues so we would be guarded against
this happening again.
&lt;/p&gt;
&lt;h3&gt;Unit Tests
&lt;/h3&gt;
&lt;p&gt;
All code must have unit tests that can be run in an automated fashion. If the code
cannot be unit tested (tested in isolation from other components) it should be restructured
in such a way that it can be tested. Very few pieces of code are truly not testable.
As such we should have very few areas in our code base which are not tested.
&lt;/p&gt;
&lt;h3&gt;Proving Bug Fixes Through Tests
&lt;/h3&gt;
&lt;p&gt;
When bug is found a test should be written before any attempt to fix the bug. This
test proves to the developer the bug exists but secondly gives the developer a marker
to know when the bug is fixed. As a benefit, this new test acts as a guard against
this particular bug ever happening again. This test, when first written, should fail
because the developer has not fixed the bug yet. The developer should then work to
make the test pass, and by extension fixing the bug. The cost of adding the test is
very small when compared against having the test guard against this condition ever
happening again. 
&lt;/p&gt;
&lt;h3&gt;Code Coverage
&lt;/h3&gt;
&lt;p&gt;
We should implement a standard for new code coverage, code that is tested by an automated
test. I would recommend somewhere in the 80%-90% range for code coverage. In order
to write tests the developers will be forced to think about their code a bit more
thoroughly.
&lt;/p&gt;
&lt;h3&gt;Pair Programming
&lt;/h3&gt;
&lt;p&gt;
We should adopt pair programming as a method to both increase shared knowledge but
also as a means to quality. Pair programming is two developers sitting at one computer
for a period of time while code is written. From the outside it may seem impractical
to devote two developers to a single computer, thinking it is inefficient. Industry
studies however show that code written in a pair has a four-fold benefit:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
15% less code&amp;#8211; Studies showed that less code is written in order to implement
the same functionality. Less code means less to maintain and understand. Less code
is also typically simpler. 
&lt;/li&gt;
&lt;li&gt;
Less bugs &amp;#8211; Developers, when working in pairs, can catch each other&amp;#8217;s
bugs before they ever make it to production. We therefore save time that it would
take to fix the bugs that would otherwise go undiscovered. 
&lt;/li&gt;
&lt;li&gt;
Shared domain knowledge &amp;#8211; When &amp;#8220;pairing&amp;#8221;, each developer is training
the other and sharing knowledge and rules around the business. This avoids silos and
situations where only one person knows the code. 
&lt;/li&gt;
&lt;li&gt;
Increased Skill &amp;#8211; When &amp;#8220;pairing&amp;#8221;, design, coding, and testing techniques
are transferred between developers. This is often why many development shops pair
their senior developers with junior developers; to raise the skill level of the junior
developer. 
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Collective Code Ownership
&lt;/h3&gt;
&lt;p&gt;
No one person should be a silo/bottleneck for any area of the code. Any person should
be free to make suggestions, fix bugs, or refactor any part of the code. Pair programming
(see above) is one tool which seeks to address this.
&lt;/p&gt;
&lt;h2&gt;Conclusion
&lt;/h2&gt;
&lt;p&gt;
While the above recommendations may seem like a lot, the above items all really go
hand-in-hand. Consider:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;b&gt;Collective Code Ownership&lt;/b&gt; is had through &lt;b&gt;Pair Programming&lt;/b&gt; 
&lt;/li&gt;
&lt;li&gt;
&lt;b&gt;Standards&lt;/b&gt; are enforced by developers when &lt;b&gt;Pair Programming&lt;/b&gt; 
&lt;/li&gt;
&lt;li&gt;
Writing &lt;b&gt;Unit Tests&lt;/b&gt; typically leads to &lt;b&gt;Simple Designs&lt;/b&gt; 
&lt;/li&gt;
&lt;li&gt;
A commitment to &lt;b&gt;Code Coverage&lt;/b&gt; leads to more &lt;b&gt;Unit Tests&lt;/b&gt; 
&lt;/li&gt;
&lt;li&gt;
Gathering &lt;b&gt;Metrics&lt;/b&gt; leads to better estimates and &lt;b&gt;Release &lt;/b&gt;planning 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Adopting the above will move us in a positive direction and ensure that all projects
coming from our department will be of ever heightening quality. Once the quality bar
is set, then we will begin to see the pace pick up; Remember, quality is a prerequisite
to speed.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=89065ec0-8d2d-48b8-8803-ad6942160f2c" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,89065ec0-8d2d-48b8-8803-ad6942160f2c.aspx</comments>
      <category>Agile</category>
      <category>Musings</category>
      <category>Principles</category>
    </item>
    <item>
      <trackback:ping>http://www.timbarcz.com/blog/Trackback.aspx?guid=bba271e7-293d-4a55-a9ad-7fb8febd46d3</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,bba271e7-293d-4a55-a9ad-7fb8febd46d3.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,bba271e7-293d-4a55-a9ad-7fb8febd46d3.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=bba271e7-293d-4a55-a9ad-7fb8febd46d3</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/DontOvercomplicateTheIssue_8C17/image_2.png">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="184" alt="image" src="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/DontOvercomplicateTheIssue_8C17/image_thumb.png" width="214" align="right" border="0" />
          </a> I
felt compelled to write after seeing this very same issue come up twice in the last
week or so, once for a fellow developer and today for me.
</p>
        <h2>The Problem
</h2>
        <p>
We use a DataSet for assistance with testing our data layer (think <a href="http://code.google.com/p/ndbunit/">NDBUnit</a>). 
The problem we have is that when you generate the DataSet the XSD created contains
all these table adapters that bloat the file, in our app the file bloats to about
five times the regular size.  We've found that deleting the table adapters on
the file makes the file open up so much faster.  However, every time we make
a change to the database schema we have to regenerate the DataSet so that it matches
the schema.  As the table count has grown deleting these table adapters by hand
has grown wearisome.  All this is merely set up for me over-fixing the problem.
</p>
        <h2>My First (Wrong) Thought
</h2>
        <p>
I thought to myself, "hey this is XML I'll just load up and XML document and
query out the nodes (TableAdapters) I don't need and remove them from the document
and save it back."  While writing a quick bit of code I found writing more
code than I needed (at this point I was only at 6 lines).  Despite the file being
XML, I don't need to treat it as XML.  Understand that nothing about getting
rid of the TableAdapters relies on the "XML-ness" of the file, it's all
just text. Reminding myself of that...here's what I came up with...
</p>
        <h2>The Second (Correct) Solution
</h2>
        <p>
Simply treat the file as text and remove the piece you need, the only caveat is that
I'm dealing with XML and so if I remove a "piece" I have to remove the whole
"piece" (where "piece" means XmlNode).  The solution below
simply matches TableAdapter nodes and replaces them with empty text.  Simple.
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span> var
path = <span style="color: #006080">@"C:\dev\sandbox\Website\src\IntegrationTests\TestData\Database.xsd"</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span> var
text = File.ReadAllText(path);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span> File.WriteAllText(path,
Regex.Replace(text, <span style="color: #006080">"&lt;TableAdapter.*?&gt;.*?&lt;/TableAdapter&gt;"</span>, <span style="color: #006080">""</span>,
RegexOptions.Singleline));</pre>
          </div>
        </div>
        <h2>The Point
</h2>
        <p>
The point is the first solution, while correct, was more complex than it needed to
be.  Using a little bit of RegEx to wipe clean certain nodes, I get exactly what
I want in three lines of code.  Moral of the story?  <strong>Don't overcomplicate
what doesn't need to be.</strong></p>
        <img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=bba271e7-293d-4a55-a9ad-7fb8febd46d3" />
      </body>
      <title>Don't Overcomplicate The Issue</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,bba271e7-293d-4a55-a9ad-7fb8febd46d3.aspx</guid>
      <link>http://www.timbarcz.com/blog/DontOvercomplicateTheIssue.aspx</link>
      <pubDate>Tue, 03 Feb 2009 15:57:46 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/DontOvercomplicateTheIssue_8C17/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="184" alt="image" src="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/DontOvercomplicateTheIssue_8C17/image_thumb.png" width="214" align="right" border="0" /&gt;&lt;/a&gt; I
felt compelled to write after seeing this very same issue come up twice in the last
week or so, once for a fellow developer and today for me.
&lt;/p&gt;
&lt;h2&gt;The Problem
&lt;/h2&gt;
&lt;p&gt;
We use a DataSet for assistance with testing our data layer (think &lt;a href="http://code.google.com/p/ndbunit/"&gt;NDBUnit&lt;/a&gt;).&amp;#160;
The problem we have is that when you generate the DataSet the XSD created contains
all these table adapters that bloat the file, in our app the file bloats to about
five times the regular size.&amp;#160; We've found that deleting the table adapters on
the file makes the file open up so much faster.&amp;#160; However, every time we make
a change to the database schema we have to regenerate the DataSet so that it matches
the schema.&amp;#160; As the table count has grown deleting these table adapters by hand
has grown wearisome.&amp;#160; All this is merely set up for me over-fixing the problem.
&lt;/p&gt;
&lt;h2&gt;My First (Wrong) Thought
&lt;/h2&gt;
&lt;p&gt;
I thought to myself, &amp;quot;hey this is XML I'll just load up and XML document and
query out the nodes (TableAdapters) I don't need and remove them from the document
and save it back.&amp;quot;&amp;#160; While writing a quick bit of code I found writing more
code than I needed (at this point I was only at 6 lines).&amp;#160; Despite the file being
XML, I don't need to treat it as XML.&amp;#160; Understand that nothing about getting
rid of the TableAdapters relies on the &amp;quot;XML-ness&amp;quot; of the file, it's all
just text. Reminding myself of that...here's what I came up with...
&lt;/p&gt;
&lt;h2&gt;The Second (Correct) Solution
&lt;/h2&gt;
&lt;p&gt;
Simply treat the file as text and remove the piece you need, the only caveat is that
I'm dealing with XML and so if I remove a &amp;quot;piece&amp;quot; I have to remove the whole
&amp;quot;piece&amp;quot; (where &amp;quot;piece&amp;quot; means XmlNode).&amp;#160; The solution below
simply matches TableAdapter nodes and replaces them with empty text.&amp;#160; Simple.
&lt;/p&gt;
&lt;div&gt;
&lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 1:&lt;/span&gt; var
path = &lt;span style="color: #006080"&gt;@&amp;quot;C:\dev\sandbox\Website\src\IntegrationTests\TestData\Database.xsd&amp;quot;&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 2:&lt;/span&gt; var
text = File.ReadAllText(path);&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 3:&lt;/span&gt; File.WriteAllText(path,
Regex.Replace(text, &lt;span style="color: #006080"&gt;&amp;quot;&amp;lt;TableAdapter.*?&amp;gt;.*?&amp;lt;/TableAdapter&amp;gt;&amp;quot;&lt;/span&gt;, &lt;span style="color: #006080"&gt;&amp;quot;&amp;quot;&lt;/span&gt;,
RegexOptions.Singleline));&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;The Point
&lt;/h2&gt;
&lt;p&gt;
The point is the first solution, while correct, was more complex than it needed to
be.&amp;#160; Using a little bit of RegEx to wipe clean certain nodes, I get exactly what
I want in three lines of code.&amp;#160; Moral of the story?&amp;#160; &lt;strong&gt;Don't overcomplicate
what doesn't need to be.&lt;/strong&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=bba271e7-293d-4a55-a9ad-7fb8febd46d3" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,bba271e7-293d-4a55-a9ad-7fb8febd46d3.aspx</comments>
      <category>Common Sense</category>
      <category>Musings</category>
      <category>Tips &amp; Tricks</category>
    </item>
    <item>
      <trackback:ping>http://www.timbarcz.com/blog/Trackback.aspx?guid=f10961b9-add0-4ddc-a15d-1bf4561a4efb</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,f10961b9-add0-4ddc-a15d-1bf4561a4efb.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,f10961b9-add0-4ddc-a15d-1bf4561a4efb.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=f10961b9-add0-4ddc-a15d-1bf4561a4efb</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I don't typically link blog and I do my best to write substantive original material,
but the following is too good to pass up.  It's how I feel and how I've approach
work in the last year or so.  From <a href="http://www.ayende.com">Ayende's</a><a href="http://ayende.com/Blog/archive/2008/11/13/reducing-the-cost-of-change.aspx">Reducing
The Cost Of Change blog post</a> this morning:
</p>
        <blockquote>
          <p>
That mindset, at least for me, starts from the first line of code. I treat each piece
of the project as utterly disposable. Since I don't really care how each individual
piece works, I am able to roughly sketch a fair amount of the application very rapidly,
and then focus on each of the items in isolation, and replace that with a much better
implementation. I think that I stated before that I tend to rewrite most of my application
core at least two or three times before I am happy with them.
</p>
          <p>
When you have disposable pieces, it is no big deal if you mess up and need to start
over, because the whole project is structured in a way that <em>allows</em> you to
do so. Going back to using my current project as an example, the algorithm used for
the core part of the system is crap. I thought it up while being on a coffee break,
and it is enough to demonstrate what the software is supposed to be doing. I don't
really care, because the moment that I do need the real algorithm, I can drop it in
(need to change the implementation of a single method).
</p>
        </blockquote>
        <p>
I can't improve on that, so I won't try.
</p>
        <img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=f10961b9-add0-4ddc-a15d-1bf4561a4efb" />
      </body>
      <title>How To Approach Development</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,f10961b9-add0-4ddc-a15d-1bf4561a4efb.aspx</guid>
      <link>http://www.timbarcz.com/blog/HowToApproachDevelopment.aspx</link>
      <pubDate>Thu, 13 Nov 2008 15:51:25 GMT</pubDate>
      <description>&lt;p&gt;
I don't typically link blog and I do my best to write substantive original material,
but the following is too good to pass up.&amp;#160; It's how I feel and how I've approach
work in the last year or so.&amp;#160; From &lt;a href="http://www.ayende.com"&gt;Ayende's&lt;/a&gt; &lt;a href="http://ayende.com/Blog/archive/2008/11/13/reducing-the-cost-of-change.aspx"&gt;Reducing
The Cost Of Change blog post&lt;/a&gt; this morning:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
That mindset, at least for me, starts from the first line of code. I treat each piece
of the project as utterly disposable. Since I don't really care how each individual
piece works, I am able to roughly sketch a fair amount of the application very rapidly,
and then focus on each of the items in isolation, and replace that with a much better
implementation. I think that I stated before that I tend to rewrite most of my application
core at least two or three times before I am happy with them.
&lt;/p&gt;
&lt;p&gt;
When you have disposable pieces, it is no big deal if you mess up and need to start
over, because the whole project is structured in a way that &lt;em&gt;allows&lt;/em&gt; you to
do so. Going back to using my current project as an example, the algorithm used for
the core part of the system is crap. I thought it up while being on a coffee break,
and it is enough to demonstrate what the software is supposed to be doing. I don't
really care, because the moment that I do need the real algorithm, I can drop it in
(need to change the implementation of a single method).
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
I can't improve on that, so I won't try.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=f10961b9-add0-4ddc-a15d-1bf4561a4efb" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,f10961b9-add0-4ddc-a15d-1bf4561a4efb.aspx</comments>
      <category>Agile</category>
      <category>Musings</category>
    </item>
    <item>
      <trackback:ping>http://www.timbarcz.com/blog/Trackback.aspx?guid=0eba9172-0997-4761-b6a8-af0556ed36f2</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,0eba9172-0997-4761-b6a8-af0556ed36f2.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,0eba9172-0997-4761-b6a8-af0556ed36f2.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=0eba9172-0997-4761-b6a8-af0556ed36f2</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
How cool is <a href="http://www.google.com/chrome">Google Chrome</a> (new browser
from Google)?  Way cool...like "too cool to run on your machine cool"
</p>
        <p>
          <a href="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/GoogleChromeHowCoolTooCool_D2BB/image_2.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="121" alt="image" src="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/GoogleChromeHowCoolTooCool_D2BB/image_thumb.png" width="544" border="0" />
          </a>
        </p>
        <p>
Thumbs up though for their error screen, just wish I didn't have to see it
</p>
        <p>
          <a href="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/GoogleChromeHowCoolTooCool_D2BB/image_4.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="485" alt="image" src="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/GoogleChromeHowCoolTooCool_D2BB/image_thumb_1.png" width="569" border="0" />
          </a>
        </p>
        <img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=0eba9172-0997-4761-b6a8-af0556ed36f2" />
      </body>
      <title>Google Chrome - How Cool? Too Cool.</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,0eba9172-0997-4761-b6a8-af0556ed36f2.aspx</guid>
      <link>http://www.timbarcz.com/blog/GoogleChromeHowCoolTooCool.aspx</link>
      <pubDate>Tue, 02 Sep 2008 19:59:53 GMT</pubDate>
      <description>&lt;p&gt;
How cool is &lt;a href="http://www.google.com/chrome"&gt;Google Chrome&lt;/a&gt; (new browser
from Google)?&amp;#160; Way cool...like &amp;quot;too cool to run on your machine cool&amp;quot;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/GoogleChromeHowCoolTooCool_D2BB/image_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="121" alt="image" src="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/GoogleChromeHowCoolTooCool_D2BB/image_thumb.png" width="544" border="0" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Thumbs up though for their error screen, just wish I didn't have to see it
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/GoogleChromeHowCoolTooCool_D2BB/image_4.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="485" alt="image" src="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/GoogleChromeHowCoolTooCool_D2BB/image_thumb_1.png" width="569" border="0" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=0eba9172-0997-4761-b6a8-af0556ed36f2" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,0eba9172-0997-4761-b6a8-af0556ed36f2.aspx</comments>
      <category>Musings</category>
      <category>Tools</category>
    </item>
    <item>
      <trackback:ping>http://www.timbarcz.com/blog/Trackback.aspx?guid=be7953f5-7018-4d43-8811-3ff070cb3253</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,be7953f5-7018-4d43-8811-3ff070cb3253.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,be7953f5-7018-4d43-8811-3ff070cb3253.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=be7953f5-7018-4d43-8811-3ff070cb3253</wfw:commentRss>
      <slash:comments>4</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/IrreducibleComplexityandEvolutionarySoft_DDA4/image_4.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="180" alt="image" src="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/IrreducibleComplexityandEvolutionarySoft_DDA4/image_thumb_1.png" width="260" align="right" border="0" />
          </a>In
church last week we were talking about evolution when the term "Irreducible Complexity"
came up.  For those who aren't familiar with the concept <a href="http://en.wikipedia.org/wiki/Irreducible_complexity">irreducible
complexity</a> is a term coined by Michael Behe to illustrate that complex system
could not have evolved and therefore must have been created intelligently.  Behe
defines irreducible complexity as:
</p>
        <blockquote>
          <p>
A single system which is composed of several interacting parts that contribute to
the basic function, and where the removal of any one of the parts causes the system
to effectively cease functioning. (<i><a href="http://en.wikipedia.org/wiki/Darwin%27s_Black_Box">Darwin's
Black Box</a></i> p39 in the 2006 edition)
</p>
        </blockquote>
        <p>
In his book Behe uses a mousetrap to illustrate an irreducible complex system.  
</p>
        <blockquote>
          <p>
"If any one of the components of the mousetrap (the base, hammer, spring, catch,
or holding bar) is removed, then the trap does not function. In other words, the simple
little mousetrap has no ability to trap a mouse until several separate parts are all
assembled. Because the mousetrap is necessarily composed of several parts, it is irreducibly
complex." (Behe, 1996).
</p>
        </blockquote>
        <p>
(This post does not seek to discuss the controversy of evolution vs. creationism vs.
intelligent design)
</p>
        <p>
How does this translate to software?  An irreducibly complex software is software
that cannot be easily tested.  The "removal of any one of the parts causes
the system to effectively cease functioning" really points to dependencies in
software.  Do your tests rely on a database being there?  Do you get emails
whenever some piece of code runs because as part of the method an email is sent?
</p>
        <h2>
        </h2>
        <h2>Creationist Design
</h2>
        <p>
How often have you stepped into some code and have seen a method calling database,
sending an email, doing some validation, and then returning some value.  Here's
an example I pulled from <a href="http://www.lostechies.com/blogs/jimmy_bogard/">Jimmy
Bogard's</a> <a href="http://www.lostechies.com/blogs/jimmy_bogard/archive/2008/06/19/separation-of-concerns-by-example-part-1.aspx">post
on separation of concerns</a>:
</p>
        <div>
          <div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 1:</span> [DataObjectMethod(DataObjectMethodType.Select, <span style="color: #0000ff">false</span>)]</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 2:</span>
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">static</span> List&lt;Customer&gt;
GetCustomers(<span style="color: #0000ff">int</span> startRowIndex, <span style="color: #0000ff">int</span> maximumRows)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 3:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 4:</span> List&lt;Customer&gt;
customers = <span style="color: #0000ff">null</span>;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 5:</span>
              <span style="color: #0000ff">string</span> key
= <span style="color: #006080">"Customers_Customers_"</span> + startRowIndex
+ <span style="color: #006080">"_"</span> + maximumRows;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 6:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 7:</span>
              <span style="color: #0000ff">if</span> (HttpContext.Current.Cache[key]
!= <span style="color: #0000ff">null</span>)</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 8:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 9:</span> customers
= (List&lt;Customer&gt;) HttpContext.Current.Cache[key];</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 10:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 11:</span>
              <span style="color: #0000ff">else</span>
            </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 12:</span> {</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 13:</span> customers
=</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 14:</span> (</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 15:</span> from</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 16:</span> c <span style="color: #0000ff">in</span> DataGateway.Context.Customers</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 17:</span> orderby</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 18:</span> c.CustomerID
descending</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 19:</span> select</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 20:</span> c</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 21:</span> ).Skip(startRowIndex).Take(maximumRows).ToList();</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 22:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 23:</span>
              <span style="color: #0000ff">if</span> ((customers
!= <span style="color: #0000ff">null</span>) &amp;&amp; (customers.Count &gt; 0))</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 24:</span> HttpContext.Current.Cache.Insert(key,
customers, <span style="color: #0000ff">null</span>, DateTime.Now.AddDays(1), TimeSpan.Zero);</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 25:</span> }</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 26:</span>  </pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">
              <span style="color: #606060"> 27:</span>
              <span style="color: #0000ff">return</span> customers;</pre>
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span style="color: #606060"> 28:</span> }</pre>
          </div>
        </div>
        <p>
The code above will work however it's a bear to test, the code absolutely requires
other items (database, HttpContext, ect) to be there in order to work.  I would
venture to say that the person who wrote it did not build up the code through small
iterations, but rather wrote it all in one fell swoop.
</p>
        <h2>Evolutionary Design
</h2>
        <p>
In software, <strong>reducible complexity</strong> should be a goal.  A reducible
complex system allows for pieces to be substituted for others so you can focus on
one particular area.  Don't have a database in place, no problem, simply put
a placeholder object in for all calls made to the database.  (Yes I'm alluding
to mocking).  You can approach creating a reducibly complex system in two ways:
</p>
        <ul>
          <li>
Create the system as a whole, then reduce it's complexity 
</li>
          <li>
Create the system incrementally 
</li>
        </ul>
        <p>
I prefer the former to the latter as I'm working on my TDD skillz.
</p>
        <h2>Conclusion
</h2>
        <p>
While the analogies used here are not quite perfect, I do feel they illustrate the
point adequately.  As a developer your goal shouldn't be to simply write code. 
You should concern yourself with the lifetime of your application/code base. 
Irreducibly complex systems, while working, can also have short life spans. 
Think about the last time you've ever seen someone fix a broken mousetrap.  All
the parts are too interconnected, the mousetrap is simply replaced.  If you're
not careful your code may be viewed <a href="http://devlicio.us/blogs/tim_barcz/archive/2008/08/11/the-tortoise-and-the-hare.aspx">too
difficult and time consuming to fix, and simply replaced</a>.
</p>
        <img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=be7953f5-7018-4d43-8811-3ff070cb3253" />
      </body>
      <title>Irreducible Complexity and Evolutionary Design</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,be7953f5-7018-4d43-8811-3ff070cb3253.aspx</guid>
      <link>http://www.timbarcz.com/blog/IrreducibleComplexityAndEvolutionaryDesign.aspx</link>
      <pubDate>Tue, 02 Sep 2008 14:49:36 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/IrreducibleComplexityandEvolutionarySoft_DDA4/image_4.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="180" alt="image" src="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/IrreducibleComplexityandEvolutionarySoft_DDA4/image_thumb_1.png" width="260" align="right" border="0" /&gt;&lt;/a&gt;In
church last week we were talking about evolution when the term &amp;quot;Irreducible Complexity&amp;quot;
came up.&amp;#160; For those who aren't familiar with the concept &lt;a href="http://en.wikipedia.org/wiki/Irreducible_complexity"&gt;irreducible
complexity&lt;/a&gt; is a term coined by Michael Behe to illustrate that complex system
could not have evolved and therefore must have been created intelligently.&amp;#160; Behe
defines irreducible complexity as:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
A single system which is composed of several interacting parts that contribute to
the basic function, and where the removal of any one of the parts causes the system
to effectively cease functioning. (&lt;i&gt;&lt;a href="http://en.wikipedia.org/wiki/Darwin%27s_Black_Box"&gt;Darwin's
Black Box&lt;/a&gt;&lt;/i&gt; p39 in the 2006 edition)
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
In his book Behe uses a mousetrap to illustrate an irreducible complex system.&amp;#160; 
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&amp;quot;If any one of the components of the mousetrap (the base, hammer, spring, catch,
or holding bar) is removed, then the trap does not function. In other words, the simple
little mousetrap has no ability to trap a mouse until several separate parts are all
assembled. Because the mousetrap is necessarily composed of several parts, it is irreducibly
complex.&amp;quot; (Behe, 1996).
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
(This post does not seek to discuss the controversy of evolution vs. creationism vs.
intelligent design)
&lt;/p&gt;
&lt;p&gt;
How does this translate to software?&amp;#160; An irreducibly complex software is software
that cannot be easily tested.&amp;#160; The &amp;quot;removal of any one of the parts causes
the system to effectively cease functioning&amp;quot; really points to dependencies in
software.&amp;#160; Do your tests rely on a database being there?&amp;#160; Do you get emails
whenever some piece of code runs because as part of the method an email is sent?
&lt;/p&gt;
&lt;h2&gt;
&lt;/h2&gt;
&lt;h2&gt;Creationist Design
&lt;/h2&gt;
&lt;p&gt;
How often have you stepped into some code and have seen a method calling database,
sending an email, doing some validation, and then returning some value.&amp;#160; Here's
an example I pulled from &lt;a href="http://www.lostechies.com/blogs/jimmy_bogard/"&gt;Jimmy
Bogard's&lt;/a&gt;&amp;#160;&lt;a href="http://www.lostechies.com/blogs/jimmy_bogard/archive/2008/06/19/separation-of-concerns-by-example-part-1.aspx"&gt;post
on separation of concerns&lt;/a&gt;:
&lt;/p&gt;
&lt;div&gt;
&lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 1:&lt;/span&gt; [DataObjectMethod(DataObjectMethodType.Select, &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;)]&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; List&amp;lt;Customer&amp;gt;
GetCustomers(&lt;span style="color: #0000ff"&gt;int&lt;/span&gt; startRowIndex, &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; maximumRows)&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 3:&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 4:&lt;/span&gt; List&amp;lt;Customer&amp;gt;
customers = &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; key
= &lt;span style="color: #006080"&gt;&amp;quot;Customers_Customers_&amp;quot;&lt;/span&gt; + startRowIndex
+ &lt;span style="color: #006080"&gt;&amp;quot;_&amp;quot;&lt;/span&gt; + maximumRows;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 6:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 7:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (HttpContext.Current.Cache[key]
!= &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 8:&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 9:&lt;/span&gt; customers
= (List&amp;lt;Customer&amp;gt;) HttpContext.Current.Cache[key];&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 10:&lt;/span&gt; }&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 11:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 12:&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 13:&lt;/span&gt; customers
=&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 14:&lt;/span&gt; (&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 15:&lt;/span&gt; from&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 16:&lt;/span&gt; c &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; DataGateway.Context.Customers&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 17:&lt;/span&gt; orderby&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 18:&lt;/span&gt; c.CustomerID
descending&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 19:&lt;/span&gt; select&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 20:&lt;/span&gt; c&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 21:&lt;/span&gt; ).Skip(startRowIndex).Take(maximumRows).ToList();&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 22:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 23:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ((customers
!= &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;) &amp;amp;&amp;amp; (customers.Count &amp;gt; 0))&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 24:&lt;/span&gt; HttpContext.Current.Cache.Insert(key,
customers, &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;, DateTime.Now.AddDays(1), TimeSpan.Zero);&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 25:&lt;/span&gt; }&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 26:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 27:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; customers;&lt;/pre&gt;
&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt; 28:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
The code above will work however it's a bear to test, the code absolutely requires
other items (database, HttpContext, ect) to be there in order to work.&amp;#160; I would
venture to say that the person who wrote it did not build up the code through small
iterations, but rather wrote it all in one fell swoop.
&lt;/p&gt;
&lt;h2&gt;Evolutionary Design
&lt;/h2&gt;
&lt;p&gt;
In software, &lt;strong&gt;reducible complexity&lt;/strong&gt; should be a goal.&amp;#160; A reducible
complex system allows for pieces to be substituted for others so you can focus on
one particular area.&amp;#160; Don't have a database in place, no problem, simply put
a placeholder object in for all calls made to the database.&amp;#160; (Yes I'm alluding
to mocking).&amp;#160; You can approach creating a reducibly complex system in two ways:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Create the system as a whole, then reduce it's complexity 
&lt;/li&gt;
&lt;li&gt;
Create the system incrementally 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
I prefer the former to the latter as I'm working on my TDD skillz.
&lt;/p&gt;
&lt;h2&gt;Conclusion
&lt;/h2&gt;
&lt;p&gt;
While the analogies used here are not quite perfect, I do feel they illustrate the
point adequately.&amp;#160; As a developer your goal shouldn't be to simply write code.&amp;#160;
You should concern yourself with the lifetime of your application/code base.&amp;#160;
Irreducibly complex systems, while working, can also have short life spans.&amp;#160;
Think about the last time you've ever seen someone fix a broken mousetrap.&amp;#160; All
the parts are too interconnected, the mousetrap is simply replaced.&amp;#160; If you're
not careful your code may be viewed &lt;a href="http://devlicio.us/blogs/tim_barcz/archive/2008/08/11/the-tortoise-and-the-hare.aspx"&gt;too
difficult and time consuming to fix, and simply replaced&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=be7953f5-7018-4d43-8811-3ff070cb3253" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,be7953f5-7018-4d43-8811-3ff070cb3253.aspx</comments>
      <category>Agile</category>
      <category>Musings</category>
      <category>Testing</category>
    </item>
    <item>
      <trackback:ping>http://www.timbarcz.com/blog/Trackback.aspx?guid=82ccc2de-3ce6-4115-a015-95620cd8f787</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,82ccc2de-3ce6-4115-a015-95620cd8f787.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,82ccc2de-3ce6-4115-a015-95620cd8f787.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=82ccc2de-3ce6-4115-a015-95620cd8f787</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Here's a conversation I just had with another developer who is struggling to get his
team to adopt some agile practices:
</p>
        <blockquote>
          <p>
            <strong>developer</strong>: if you were starting from scratch, which would you think
is more important to setup first? CI or a unit testing process? 
<br /><strong>me</strong>: unit testing 
<br /><strong>developer</strong>: wow 
<br /><strong>developer</strong>:  ok 
<br /><strong>me</strong>: why is that surprising? 
<br /><strong>developer</strong>: i look at the mess i'm in everyday and i'd think getting
a good build system in place would be first... 
<br /><strong>me</strong>: I think unit testing provides more value in that it allows you
to add features knowing you haven't broken other features 
<br /><strong>developer</strong>: testing above a development process? 
<br /><strong>me</strong>: yes 
<br /><strong>me</strong>: testing provides more customer value
</p>
        </blockquote>
        <p>
Let me be clear in stating that I think both are great value and a necessity, however
the challenge was to choose one, presumably the most important.  I chose unit
testing because one of the reasons I enjoy writing software that meets someone's needs. 
As a developer one of the most nervous moments is when your code is released into
the wild.  Will it work?  Will users they use it how you intended? 
As a developer one of the most satisfying experiences is watching a user fire up a
program you've written and it works flawlessly.  I think most customers would
agree with that as well.  Having code that works is what they want.  Having
code that works builds their confidence in you and reassures them that know what you're
doing.  Testing provides this for me.  In advance I can test different scenarios
and program that in and put my program through it's paces.
</p>
        <p>
Now let me speak a bit about CI.  While I believe that testing is a component
of CI, the developer in this instance meant a build server that kicks off automated
builds.  While an automated build is nice, it doesn't nearly provide the value
that unit testing does.  It's the things your build server does that increases
it's value.  One of those things in our build system is running automated tests. 
If you remove automated tests from a build server all you have is a dummy machine
that compiles code.  That provides some benefit, but minimally.  You can
replicate the behavior simply by updating your code often and doing a compile on your
own machine.
</p>
        <p>
As an agile developer I seek deliver value to stakeholders.  When viewed through
that lens, I think unit testing clearly wins.
</p>
        <p>
What about you?  Would you test before build server?  Or would you choose
the build server?  Why?
</p>
        <img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=82ccc2de-3ce6-4115-a015-95620cd8f787" />
      </body>
      <title>What First  - CI or Unit Testing?</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,82ccc2de-3ce6-4115-a015-95620cd8f787.aspx</guid>
      <link>http://www.timbarcz.com/blog/WhatFirstCIOrUnitTesting.aspx</link>
      <pubDate>Tue, 19 Aug 2008 19:13:21 GMT</pubDate>
      <description>&lt;p&gt;
Here's a conversation I just had with another developer who is struggling to get his
team to adopt some agile practices:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;strong&gt;developer&lt;/strong&gt;: if you were starting from scratch, which would you think
is more important to setup first? CI or a unit testing process? 
&lt;br /&gt;
&lt;strong&gt;me&lt;/strong&gt;: unit testing 
&lt;br /&gt;
&lt;strong&gt;developer&lt;/strong&gt;: wow 
&lt;br /&gt;
&lt;strong&gt;developer&lt;/strong&gt;:&amp;#160; ok 
&lt;br /&gt;
&lt;strong&gt;me&lt;/strong&gt;: why is that surprising? 
&lt;br /&gt;
&lt;strong&gt;developer&lt;/strong&gt;: i look at the mess i'm in everyday and i'd think getting
a good build system in place would be first... 
&lt;br /&gt;
&lt;strong&gt;me&lt;/strong&gt;: I think unit testing provides more value in that it allows you
to add features knowing you haven't broken other features 
&lt;br /&gt;
&lt;strong&gt;developer&lt;/strong&gt;: testing above a development process? 
&lt;br /&gt;
&lt;strong&gt;me&lt;/strong&gt;: yes 
&lt;br /&gt;
&lt;strong&gt;me&lt;/strong&gt;: testing provides more customer value
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Let me be clear in stating that I think both are great value and a necessity, however
the challenge was to choose one, presumably the most important.&amp;#160; I chose unit
testing because one of the reasons I enjoy writing software that meets someone's needs.&amp;#160;
As a developer one of the most nervous moments is when your code is released into
the wild.&amp;#160; Will it work?&amp;#160; Will users they use it how you intended?&amp;#160;
As a developer one of the most satisfying experiences is watching a user fire up a
program you've written and it works flawlessly.&amp;#160; I think most customers would
agree with that as well.&amp;#160; Having code that works is what they want.&amp;#160; Having
code that works builds their confidence in you and reassures them that know what you're
doing.&amp;#160; Testing provides this for me.&amp;#160; In advance I can test different scenarios
and program that in and put my program through it's paces.
&lt;/p&gt;
&lt;p&gt;
Now let me speak a bit about CI.&amp;#160; While I believe that testing is a component
of CI, the developer in this instance meant a build server that kicks off automated
builds.&amp;#160; While an automated build is nice, it doesn't nearly provide the value
that unit testing does.&amp;#160; It's the things your build server does that increases
it's value.&amp;#160; One of those things in our build system is running automated tests.&amp;#160;
If you remove automated tests from a build server all you have is a dummy machine
that compiles code.&amp;#160; That provides some benefit, but minimally.&amp;#160; You can
replicate the behavior simply by updating your code often and doing a compile on your
own machine.
&lt;/p&gt;
&lt;p&gt;
As an agile developer I seek deliver value to stakeholders.&amp;#160; When viewed through
that lens, I think unit testing clearly wins.
&lt;/p&gt;
&lt;p&gt;
What about you?&amp;#160; Would you test before build server?&amp;#160; Or would you choose
the build server?&amp;#160; Why?
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=82ccc2de-3ce6-4115-a015-95620cd8f787" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,82ccc2de-3ce6-4115-a015-95620cd8f787.aspx</comments>
      <category>Agile</category>
      <category>Musings</category>
    </item>
    <item>
      <trackback:ping>http://www.timbarcz.com/blog/Trackback.aspx?guid=fb255463-50aa-449f-a1bc-a8ab7ea62a9b</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,fb255463-50aa-449f-a1bc-a8ab7ea62a9b.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,fb255463-50aa-449f-a1bc-a8ab7ea62a9b.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=fb255463-50aa-449f-a1bc-a8ab7ea62a9b</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/TheTortoiseandtheHare_EC7E/image_10.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="327" alt="image" src="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/TheTortoiseandtheHare_EC7E/image_thumb_4.png" width="475" align="right" border="0" />
          </a> We're
all familiar with the <a href="http://www.storyarts.org/library/aesops/stories/tortoise.html">Aesop's
fable of the tortoise and the hare</a>.  In the story, the hare, who is in every
way is faster than the tortoise, loses a race to the tortoise.  The main principle
of the story is that slow and steady wins the race.
</p>
        <p>
In my development I am shooting to be a tortoise, really I am.  Read on and let
me explain.
</p>
        <p>
A few weeks ago I got some evil glares when I suggested at our .NET user group meeting
that in enterprise systems that you don't have time <strong>not</strong> to test. 
It's a common hurdle for those new to testing to say, "I don't have time to write
tests."  Let's face it, we're all busy, that excuse is tired.  As an
agile and lean practitioner I seek out ways to improve velocity and reduce waste,
not take my already busy schedule and cram in another tool for the sake of another
tool.  While writing tests does slow me down, it brings on tortoise like speed,
which I would argue is a good thing.  Writing unit tests is one tool that provide
me the ability to keep a more consistent velocity over the course of development. 
Without tests I can surely write things faster, the problem arises as the codebase
grows and each new feature or fix takes increasingly more time. Eventually, even simple
requests become arduous to implement.  Slowly you see your velocity come to a
crawl.
</p>
        <p>
It's an insidious cycle that I've seen before and am currently in the throes of; an
application is built from scratch implementing everything the business requires. The
application is enhanced and bolted on to, until you realize that you could move much
faster if you could start from scratch.  You make pleas to your boss and explain
how much productivity would improve if you could shed the hideous code base. 
One day he gives in, you rejoice and you make the leap, start from scratch, breathing
a sigh of relief at how easy implementing the features are all the while reminiscing
about the old framework and how poorly it was written.  And now that the application
is rewritten from scratch the cycle, unless you were aware of it all the while, starts
again.
</p>
        <p>
You see, no one sets out to write crap code.  People do the best they can with
the knowledge they have.  Code, following the <a href="http://en.wikipedia.org/wiki/Laws_of_thermodynamics">second
law of thermodynamics</a>, tends towards chaos over time.  With unit tests in
place I can refactor with more confidence and implement new features without the fear
of breaking existing code.  If you have the ability to refactor, new code is
no longer "bolted on" but rather "grafted in" becoming part of
the system.  With a solid framework with tests in place you can much better stop
the cycle of rewrites.  Quickly writing applications that degrade is the way
of the hare.  Developing purposefully using unit tests causes me to be slow in
the short run, but over the life of the application comes out far ahead.  In
that way, I strive to be the tortoise.
</p>
        <img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=fb255463-50aa-449f-a1bc-a8ab7ea62a9b" />
      </body>
      <title>The Tortoise and the Hare</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,fb255463-50aa-449f-a1bc-a8ab7ea62a9b.aspx</guid>
      <link>http://www.timbarcz.com/blog/TheTortoiseAndTheHare.aspx</link>
      <pubDate>Mon, 11 Aug 2008 17:14:13 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/TheTortoiseandtheHare_EC7E/image_10.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="327" alt="image" src="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/TheTortoiseandtheHare_EC7E/image_thumb_4.png" width="475" align="right" border="0" /&gt;&lt;/a&gt; We're
all familiar with the &lt;a href="http://www.storyarts.org/library/aesops/stories/tortoise.html"&gt;Aesop's
fable of the tortoise and the hare&lt;/a&gt;.&amp;#160; In the story, the hare, who is in every
way is faster than the tortoise, loses a race to the tortoise.&amp;#160; The main principle
of the story is that slow and steady wins the race.
&lt;/p&gt;
&lt;p&gt;
In my development I am shooting to be a tortoise, really I am.&amp;#160; Read on and let
me explain.
&lt;/p&gt;
&lt;p&gt;
A few weeks ago I got some evil glares when I suggested at our .NET user group meeting
that in enterprise systems that you don't have time &lt;strong&gt;not&lt;/strong&gt; to test.&amp;#160;
It's a common hurdle for those new to testing to say, &amp;quot;I don't have time to write
tests.&amp;quot;&amp;#160; Let's face it, we're all busy, that excuse is tired.&amp;#160; As an
agile and lean practitioner I seek out ways to improve velocity and reduce waste,
not take my already busy schedule and cram in another tool for the sake of another
tool.&amp;#160; While writing tests does slow me down, it brings on tortoise like speed,
which I would argue is a good thing.&amp;#160; Writing unit tests is one tool that provide
me the ability to keep a more consistent velocity over the course of development.&amp;#160;
Without tests I can surely write things faster, the problem arises as the codebase
grows and each new feature or fix takes increasingly more time. Eventually, even simple
requests become arduous to implement.&amp;#160; Slowly you see your velocity come to a
crawl.
&lt;/p&gt;
&lt;p&gt;
It's an insidious cycle that I've seen before and am currently in the throes of; an
application is built from scratch implementing everything the business requires. The
application is enhanced and bolted on to, until you realize that you could move much
faster if you could start from scratch.&amp;#160; You make pleas to your boss and explain
how much productivity would improve if you could shed the hideous code base.&amp;#160;
One day he gives in, you rejoice and you make the leap, start from scratch, breathing
a sigh of relief at how easy implementing the features are all the while reminiscing
about the old framework and how poorly it was written.&amp;#160; And now that the application
is rewritten from scratch the cycle, unless you were aware of it all the while, starts
again.
&lt;/p&gt;
&lt;p&gt;
You see, no one sets out to write crap code.&amp;#160; People do the best they can with
the knowledge they have.&amp;#160; Code, following the &lt;a href="http://en.wikipedia.org/wiki/Laws_of_thermodynamics"&gt;second
law of thermodynamics&lt;/a&gt;, tends towards chaos over time.&amp;#160; With unit tests in
place I can refactor with more confidence and implement new features without the fear
of breaking existing code.&amp;#160; If you have the ability to refactor, new code is
no longer &amp;quot;bolted on&amp;quot; but rather &amp;quot;grafted in&amp;quot; becoming part of
the system.&amp;#160; With a solid framework with tests in place you can much better stop
the cycle of rewrites.&amp;#160; Quickly writing applications that degrade is the way
of the hare.&amp;#160; Developing purposefully using unit tests causes me to be slow in
the short run, but over the life of the application comes out far ahead.&amp;#160; In
that way, I strive to be the tortoise.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=fb255463-50aa-449f-a1bc-a8ab7ea62a9b" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,fb255463-50aa-449f-a1bc-a8ab7ea62a9b.aspx</comments>
      <category>Agile</category>
      <category>Musings</category>
    </item>
    <item>
      <trackback:ping>http://www.timbarcz.com/blog/Trackback.aspx?guid=85ffbd3a-204b-4c9e-bd53-0fd59475e8d2</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,85ffbd3a-204b-4c9e-bd53-0fd59475e8d2.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,85ffbd3a-204b-4c9e-bd53-0fd59475e8d2.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=85ffbd3a-204b-4c9e-bd53-0fd59475e8d2</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://subjunctive.wordpress.com/2008/07/09/how-did-you-get-started-in-software-development/">Chris
Sutton tagged me yesterday</a> asking how I got started with programming. So here
it goes.
</p>
        <p>
          <strong>How old were you when you started programming?</strong>
        </p>
        <p>
I suppose I first started with my TI-86 in physics class making text based adventure
games.  After that it was HTML and building a website on geocities (remember
them?).
</p>
        <p>
          <strong>What was your first programming language?</strong>
        </p>
        <p>
HTML, if you count that, otherwise Pascal.
</p>
        <p>
          <strong>What was the first real program you wrote?</strong>
        </p>
        <p>
I wrote a small portion of an application in VB6 for a local paper company while I
was an intern in college.
</p>
        <p>
          <strong>If you knew then what you know know would you have started programming?</strong>
        </p>
        <p>
Yes, most definitely, and would kick myself for not taking advantage of the abundant
resources and time while in college.
</p>
        <p>
          <strong>If there is one thing you learned along the way that you would tell new developers,
what would it be?</strong>
        </p>
        <p>
First, have passion for your craft.  Second focus less on languages and specific
technologies, but instead focus on principles and core fundamentals.
</p>
        <p>
          <strong>What’s the most fun you’ve ever had … programming?</strong>
        </p>
        <p>
In college I wrote my own compiler for an honors project and I used to stay up every
Thursday night and program in preparation for a Friday morning meeting with my advisor. 
About 2am I'd make a run to the local grocery store and buy some Mt. Dew and a box
of Nutty Bars.
</p>
        <p>
I'd like to hear from:
</p>
        <ul>
          <li>
            <a href="http://rhysc.blogspot.com/">Rhys Campbell</a>
          </li>
          <li>
            <a href="http://www.dumpsterdoggy.com">Chris Missal</a>
          </li>
          <li>
            <a href="http://zacrosoft.blogspot.com/">Zac Harlan</a>
          </li>
        </ul>
        <img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=85ffbd3a-204b-4c9e-bd53-0fd59475e8d2" />
      </body>
      <title>How Did You Get Started in Software Development?</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,85ffbd3a-204b-4c9e-bd53-0fd59475e8d2.aspx</guid>
      <link>http://www.timbarcz.com/blog/HowDidYouGetStartedInSoftwareDevelopment.aspx</link>
      <pubDate>Fri, 11 Jul 2008 02:39:52 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://subjunctive.wordpress.com/2008/07/09/how-did-you-get-started-in-software-development/"&gt;Chris
Sutton tagged me yesterday&lt;/a&gt; asking how I got started with programming. So here
it goes.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;How old were you when you started programming?&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
I suppose I first started with my TI-86 in physics class making text based adventure
games.&amp;#160; After that it was HTML and building a website on geocities (remember
them?).
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;What was your first programming language?&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
HTML, if you count that, otherwise Pascal.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;What was the first real program you wrote?&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
I wrote a small portion of an application in VB6 for a local paper company while I
was an intern in college.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;If you knew then what you know know would you have started programming?&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Yes, most definitely, and would kick myself for not taking advantage of the abundant
resources and time while in college.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;If there is one thing you learned along the way that you would tell new developers,
what would it be?&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
First, have passion for your craft.&amp;#160; Second focus less on languages and specific
technologies, but instead focus on principles and core fundamentals.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;What&amp;#8217;s the most fun you&amp;#8217;ve ever had &amp;#8230; programming?&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
In college I wrote my own compiler for an honors project and I used to stay up every
Thursday night and program in preparation for a Friday morning meeting with my advisor.&amp;#160;
About 2am I'd make a run to the local grocery store and buy some Mt. Dew and a box
of Nutty Bars.
&lt;/p&gt;
&lt;p&gt;
I'd like to hear from:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://rhysc.blogspot.com/"&gt;Rhys Campbell&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.dumpsterdoggy.com"&gt;Chris Missal&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://zacrosoft.blogspot.com/"&gt;Zac Harlan&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=85ffbd3a-204b-4c9e-bd53-0fd59475e8d2" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,85ffbd3a-204b-4c9e-bd53-0fd59475e8d2.aspx</comments>
      <category>Musings</category>
    </item>
    <item>
      <trackback:ping>http://www.timbarcz.com/blog/Trackback.aspx?guid=d6c5bb56-f4ac-477d-8980-a9726dfd25a1</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,d6c5bb56-f4ac-477d-8980-a9726dfd25a1.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,d6c5bb56-f4ac-477d-8980-a9726dfd25a1.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=d6c5bb56-f4ac-477d-8980-a9726dfd25a1</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Many people use open source tools, whether its NUnit, Nant, Rhino, or log4net in their
professional lives.  If you use any of these tools, when was the last time you
donated time and/or money to any of the open source tools you use?  That's what
I thought.  
</p>
        <p>
I was recently watching the <a href="http://www.ayende.com/hibernating-rhinos.aspx" target="_blank">Hibernating
Rhinos</a> from <a href="http://www.ayende.com/" target="_blank">Ayende Rahien</a> and
I wanted to thank Oren.  Right there on the Hibernating Rhinos page it reads:
</p>
        <blockquote>
          <p>
            <a href="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/UnappreciatedOpenSource_12B4B/donate_2.jpg">
              <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="162" alt="donate" src="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/UnappreciatedOpenSource_12B4B/donate_thumb.jpg" width="602" border="0" />
            </a>
          </p>
        </blockquote>
        <p>
I wanted to donate.  Perhaps because the videos provided so much guidance from
one of our industries finest.  Perhaps because I've met Oren and generally think
he's a good guy.  Regardless, I donated some money.  Not much, but some. 
Something to say, "thank you, I appreciate this.
</p>
        <p>
Curious if other donate, I emailed Ayende to see what revenue, if any, his video series
has generated.  I wanted to know well the community was supporting a popular
training tool.  Here's the stats, lifted a few moments ago.
</p>
        <blockquote>
          <p>
            <a href="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/UnappreciatedOpenSource_12B4B/image_2.png">
              <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="423" alt="image" src="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/UnappreciatedOpenSource_12B4B/image_thumb.png" width="559" border="0" />
            </a>
          </p>
        </blockquote>
        <p>
So how much has Oren received from this video series?  Guess.  Seriously. 
$125 since September 2007.  From the stats above there have been 242,610 downloads
of the videos. That breaks down to .000515 per download!!!  As a community that's
quite pathetic.
</p>
        <p>
From here on I've resolved to donate a dollar any time I download a free library or
webcast where a donate link is presented.  Why $1?  In all honesty it is
something I can commit to.  I download and use a lot of tools, so I don't want
ongoing cost to hinder me.  $1 is a token to say thanks, acknowledging the work
that's been put into the product.  I would challenge you to make a similar commitment
for the tools you use.  Let's show the author(s) of these tools/libraries that
we do appreciate the work they do!
</p>
        <img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=d6c5bb56-f4ac-477d-8980-a9726dfd25a1" />
      </body>
      <title>Unappreciated Open Source</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,d6c5bb56-f4ac-477d-8980-a9726dfd25a1.aspx</guid>
      <link>http://www.timbarcz.com/blog/UnappreciatedOpenSource.aspx</link>
      <pubDate>Thu, 10 Jul 2008 02:13:34 GMT</pubDate>
      <description>&lt;p&gt;
Many people use open source tools, whether its NUnit, Nant, Rhino, or log4net in their
professional lives.&amp;#160; If you use any of these tools, when was the last time you
donated time and/or money to any of the open source tools you use?&amp;#160; That's what
I thought.&amp;#160; 
&lt;/p&gt;
&lt;p&gt;
I was recently watching the &lt;a href="http://www.ayende.com/hibernating-rhinos.aspx" target="_blank"&gt;Hibernating
Rhinos&lt;/a&gt; from &lt;a href="http://www.ayende.com/" target="_blank"&gt;Ayende Rahien&lt;/a&gt; and
I wanted to thank Oren.&amp;#160; Right there on the Hibernating Rhinos page it reads:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;a href="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/UnappreciatedOpenSource_12B4B/donate_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="162" alt="donate" src="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/UnappreciatedOpenSource_12B4B/donate_thumb.jpg" width="602" border="0" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
I wanted to donate.&amp;#160; Perhaps because the videos provided so much guidance from
one of our industries finest.&amp;#160; Perhaps because I've met Oren and generally think
he's a good guy.&amp;#160; Regardless, I donated some money.&amp;#160; Not much, but some.&amp;#160;
Something to say, &amp;quot;thank you, I appreciate this.
&lt;/p&gt;
&lt;p&gt;
Curious if other donate, I emailed Ayende to see what revenue, if any, his video series
has generated.&amp;#160; I wanted to know well the community was supporting a popular
training tool.&amp;#160; Here's the stats, lifted a few moments ago.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;a href="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/UnappreciatedOpenSource_12B4B/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="423" alt="image" src="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/UnappreciatedOpenSource_12B4B/image_thumb.png" width="559" border="0" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
So how much has Oren received from this video series?&amp;#160; Guess.&amp;#160; Seriously.&amp;#160;
$125 since September 2007.&amp;#160; From the stats above there have been 242,610 downloads
of the videos. That breaks down to .000515 per download!!!&amp;#160; As a community that's
quite pathetic.
&lt;/p&gt;
&lt;p&gt;
From here on I've resolved to donate a dollar any time I download a free library or
webcast where a donate link is presented.&amp;#160; Why $1?&amp;#160; In all honesty it is
something I can commit to.&amp;#160; I download and use a lot of tools, so I don't want
ongoing cost to hinder me.&amp;#160; $1 is a token to say thanks, acknowledging the work
that's been put into the product.&amp;#160; I would challenge you to make a similar commitment
for the tools you use.&amp;#160; Let's show the author(s) of these tools/libraries that
we do appreciate the work they do!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=d6c5bb56-f4ac-477d-8980-a9726dfd25a1" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,d6c5bb56-f4ac-477d-8980-a9726dfd25a1.aspx</comments>
      <category>Musings</category>
      <category>Open Source Software</category>
    </item>
    <item>
      <trackback:ping>http://www.timbarcz.com/blog/Trackback.aspx?guid=29c99e82-9dcf-4669-97a7-326dd3c8f714</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,29c99e82-9dcf-4669-97a7-326dd3c8f714.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,29c99e82-9dcf-4669-97a7-326dd3c8f714.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=29c99e82-9dcf-4669-97a7-326dd3c8f714</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
About a month ago <a href="http://www.jpboodhoo.com" target="_blank">Jean-Paul Boodhoo</a> announced
a contest that he was sponsoring.  The <a href="http://www.jpboodhoo.com/blog/BuildingASolidCoreYourFutureIsRightAheadOfYouTheContest.aspx" target="_blank">contest
idea</a> centered around the idea of developing passion in others around you. 
I have an immense amount of respect for JP having met him at <a href="http://altdotnet.org/events/seattle" target="_blank">ALT.NET
Seattle</a>.  When the contest was announced I thought I'd put in an entry as
I enjoy the journey passion for my craft has taken me on with others.  Here is
my entry in its entirety:
</p>
        <blockquote>
          <p>
While I'm not quite sure that my entry will be legal - a bit on that in a second -
I would still like to share my story.  As for the legality of my entry, the rules
clearly state "Must be working full time as a software professional (<b>not a student</b>)"
(emphasis mine).  While I <i><b>am</b></i>a full time software professional,
I must say that I am, unequivocally, a student.  We all are, whether we realize
it or not.  The one truth I keep encountering in my maturation as a developer
is a bit of a paradox: the more I learn, the more I realize I don't know.  Therefore
I approach software development as a student and view my coworkers as students as
well.
</p>
          <p>
            <br />
When I started at my last place of employment I was humbled early and often by my
lack of knowledge in areas I thought I knew well.  Rather than being deterred,
it sparked a fire in me, and since then I've never turned back.  Being humble
and realizing, for lack of better words, how stupid I was, was quite possibly the
best thing for my maturation as a software professional.  That spark has matured
into a passion that I can best describe as the feeling of a child on Christmas morning,
eagerly shaking his sleeping brothers and sisters telling them that Santa has come. 
It's the type of knowledge where you share it not to show how much smarter or better
you are, but because you are, at your core, excited at the chance to share it with
someone else. 
</p>
          <p>
            <br />
Among things like reading blogs, starting a blog of my own, listening to podcasts,
I started to teach more. There are a great many people who believe that the best way
to learn is to teach others.  I fall squarely in that camp.  I began by
timidly teaching a few of the weekly developer trainings that the company offered. 
Soon, I was teaching quite regularly and in 2007, I taught more than anyone else in
the company.  I focused many of my talks on areas where I struggled and on things
I wanted to learn, realizing that if I struggled learning a concept/language/framework,
others probably did as well.  In one training session I created an elaborate
hands-on demonstration of how events and delegates work.  Participants were given
a card stating what they should do when a specific event occurred.  It started
innocently with me turning off the light switch and, at it's height, had people walking
all over the room, some making marks on the white board, others moving objects around
the room, and still others doing various assigned tasks.  I was told later by
someone that, "...it was the best training of events and delegates they ever had seen." 
That comment was special to me.  
</p>
          <p>
            <br />
Why do I think I deserve to win this contest?  Honestly, I don't know that I
do.  I'm not an "alpha" type, I haven't produced tons of tutorials or webcasts
to help the community, and most of you probably have never heard of me.  However,
I believe that if you ask current and former coworkers, they would say that I seek
to help and mentor others as well as offer myself up to be mentored.  To me,
more than having a large internet following, I desire to impact those around me. 
Below are two recent such examples.  The first is an email I received a bit after
I left my last place of employment:
</p>
          <blockquote>
            <p>
Hey Tim,
</p>
            <p>
How are you and howz your new work? Hope you have settled down. 
</p>
            <p>
Here same as usual , I got to take your big desk J yeeeeee . Josh A is sitting at
your place with my small desk. 
</p>
            <p>
              <b>Hey listen thanks for introducing Rhino mock , I am getting better at it and I
like it ….</b>
            </p>
            <p>
Usharani Kachegere
</p>
          </blockquote>
          <p>
The second example is is from a younger developer, Toran Billups, who emailed me one
day out of the blue when he saw that I updated my alumni page on our college website. 
Toran emailed me innocently one day asking about my work experience.  We started
chatting more and more and I provided whatever guidance I could to him.  I have
enjoyed my time mentoring Toran, as it's been a bit more focused with one-on-one time. 
I've gotten the chance to see him grow in his skill, and more importantly, his passion. 
Below are some of his comments about his experience over the last year and a half
in a recent chat:
</p>
          <blockquote>
            <p>
"I think from the moment I 'emailed you' to ask for some 'mentor like advice' you
have shown a true passion for software development/learning/etc."
</p>
            <p>
"your words have pushed me to a level I only dreamed of 11 months ago"
</p>
            <p>
"I'm knee deep in TDD and in part because of your words!"
</p>
            <p>
"I just built a house - otherwise ... i would move just to work with you- honestly"
</p>
            <p>
"it's like something happened after talking to you last year ... I never had anyone
challenge me like you did"
</p>
            <p>
"but again - without your 'patience' / 'care for others in the community' -- you could
have brushed me off with a simple 'newb' comment instead - you took the time (out
of your busy day) to help ask the 'right questions'
</p>
          </blockquote>
          <p>
If you're reading this and you've found yourself losing passion for your craft, family,
or faith, don't sit idly by.  Do something, anything, to get back into it. 
Do what whatever it takes to reawaken your passion and foster that passion, you'll
be much happier person for it.  I wrote last summer on my blog about passion
in a post titled "<a href="http://www.timbarcz.com/blog/2007/07/22/PassionInProgrammers.aspx">Passion
in Programmers</a>", and I believe what I wrote in that post to be as true today as
the day I wrote it.  In it I wrote, "Passion in my mind is a key characteristic
of being a great developer.  A passionate developer will never stop learning
and enjoys the journey of learning and thus is an asset to any team." 
</p>
        </blockquote>
        <img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=29c99e82-9dcf-4669-97a7-326dd3c8f714" />
      </body>
      <title>My "Building A Solid Core" Contest Entry</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,29c99e82-9dcf-4669-97a7-326dd3c8f714.aspx</guid>
      <link>http://www.timbarcz.com/blog/MyBuildingASolidCoreContestEntry.aspx</link>
      <pubDate>Tue, 08 Jul 2008 11:48:36 GMT</pubDate>
      <description>&lt;p&gt;
About a month ago &lt;a href="http://www.jpboodhoo.com" target="_blank"&gt;Jean-Paul Boodhoo&lt;/a&gt; announced
a contest that he was sponsoring.&amp;nbsp; The &lt;a href="http://www.jpboodhoo.com/blog/BuildingASolidCoreYourFutureIsRightAheadOfYouTheContest.aspx" target="_blank"&gt;contest
idea&lt;/a&gt; centered around the idea of developing passion in others around you.&amp;nbsp;
I have an immense amount of respect for JP having met him at &lt;a href="http://altdotnet.org/events/seattle" target="_blank"&gt;ALT.NET
Seattle&lt;/a&gt;.&amp;nbsp; When the contest was announced I thought I'd put in an entry as
I enjoy the journey passion for my craft has taken me on with others.&amp;nbsp; Here is
my entry in its entirety:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
While I'm not quite sure that my entry will be legal - a bit on that in a second -
I would still like to share my story.&amp;nbsp; As for the legality of my entry, the rules
clearly state "Must be working full time as a software professional (&lt;b&gt;not a student&lt;/b&gt;)"
(emphasis mine).&amp;nbsp; While I &lt;i&gt;&lt;b&gt;am&lt;/b&gt; &lt;/i&gt;a full time software professional,
I must say that I am, unequivocally, a student.&amp;nbsp; We all are, whether we realize
it or not.&amp;nbsp; The one truth I keep encountering in my maturation as a developer
is a bit of a paradox: the more I learn, the more I realize I don't know.&amp;nbsp; Therefore
I approach software development as a student and view my coworkers as students as
well.
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
When I started at my last place of employment I was humbled early and often by my
lack of knowledge in areas I thought I knew well.&amp;nbsp; Rather than being deterred,
it sparked a fire in me, and since then I've never turned back.&amp;nbsp; Being humble
and realizing, for lack of better words, how stupid I was, was quite possibly the
best thing for my maturation as a software professional.&amp;nbsp; That spark has matured
into a passion that I can best describe as the feeling of a child on Christmas morning,
eagerly shaking his sleeping brothers and sisters telling them that Santa has come.&amp;nbsp;
It's the type of knowledge where you share it not to show how much smarter or better
you are, but because you are, at your core, excited at the chance to share it with
someone else. 
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
Among things like reading blogs, starting a blog of my own, listening to podcasts,
I started to teach more. There are a great many people who believe that the best way
to learn is to teach others.&amp;nbsp; I fall squarely in that camp.&amp;nbsp; I began by
timidly teaching a few of the weekly developer trainings that the company offered.&amp;nbsp;
Soon, I was teaching quite regularly and in 2007, I taught more than anyone else in
the company.&amp;nbsp; I focused many of my talks on areas where I struggled and on things
I wanted to learn, realizing that if I struggled learning a concept/language/framework,
others probably did as well.&amp;nbsp; In one training session I created an elaborate
hands-on demonstration of how events and delegates work.&amp;nbsp; Participants were given
a card stating what they should do when a specific event occurred.&amp;nbsp; It started
innocently with me turning off the light switch and, at it's height, had people walking
all over the room, some making marks on the white board, others moving objects around
the room, and still others doing various assigned tasks.&amp;nbsp; I was told later by
someone that, "...it was the best training of events and delegates they ever had seen."&amp;nbsp;
That comment was special to me.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
Why do I think I deserve to win this contest?&amp;nbsp; Honestly, I don't know that I
do.&amp;nbsp; I'm not an "alpha" type, I haven't produced tons of tutorials or webcasts
to help the community, and most of you probably have never heard of me.&amp;nbsp; However,
I believe that if you ask current and former coworkers, they would say that I seek
to help and mentor others as well as offer myself up to be mentored.&amp;nbsp; To me,
more than having a large internet following, I desire to impact those around me.&amp;nbsp;
Below are two recent such examples.&amp;nbsp; The first is an email I received a bit after
I left my last place of employment:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
Hey Tim,
&lt;/p&gt;
&lt;p&gt;
How are you and howz your new work? Hope you have settled down. 
&lt;/p&gt;
&lt;p&gt;
Here same as usual , I got to take your big desk J yeeeeee . Josh A is sitting at
your place with my small desk. 
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;Hey listen thanks for introducing Rhino mock , I am getting better at it and I
like it ….&lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;
Usharani Kachegere
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
The second example is is from a younger developer, Toran Billups, who emailed me one
day out of the blue when he saw that I updated my alumni page on our college website.&amp;nbsp;
Toran emailed me innocently one day asking about my work experience.&amp;nbsp; We started
chatting more and more and I provided whatever guidance I could to him.&amp;nbsp; I have
enjoyed my time mentoring Toran, as it's been a bit more focused with one-on-one time.&amp;nbsp;
I've gotten the chance to see him grow in his skill, and more importantly, his passion.&amp;nbsp;
Below are some of his comments about his experience over the last year and a half
in a recent chat:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
"I think from the moment I 'emailed you' to ask for some 'mentor like advice' you
have shown a true passion for software development/learning/etc."
&lt;/p&gt;
&lt;p&gt;
"your words have pushed me to a level I only dreamed of 11 months ago"
&lt;/p&gt;
&lt;p&gt;
"I'm knee deep in TDD and in part because of your words!"
&lt;/p&gt;
&lt;p&gt;
"I just built a house - otherwise ... i would move just to work with you- honestly"
&lt;/p&gt;
&lt;p&gt;
"it's like something happened after talking to you last year ... I never had anyone
challenge me like you did"
&lt;/p&gt;
&lt;p&gt;
"but again - without your 'patience' / 'care for others in the community' -- you could
have brushed me off with a simple 'newb' comment instead - you took the time (out
of your busy day) to help ask the 'right questions'
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
If you're reading this and you've found yourself losing passion for your craft, family,
or faith, don't sit idly by.&amp;nbsp; Do something, anything, to get back into it.&amp;nbsp;
Do what whatever it takes to reawaken your passion and foster that passion, you'll
be much happier person for it.&amp;nbsp; I wrote last summer on my blog about passion
in a post titled "&lt;a href="http://www.timbarcz.com/blog/2007/07/22/PassionInProgrammers.aspx"&gt;Passion
in Programmers&lt;/a&gt;", and I believe what I wrote in that post to be as true today as
the day I wrote it.&amp;nbsp; In it I wrote, "Passion in my mind is a key characteristic
of being a great developer.&amp;nbsp; A passionate developer will never stop learning
and enjoys the journey of learning and thus is an asset to any team." 
&lt;/p&gt;
&lt;/blockquote&gt;&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=29c99e82-9dcf-4669-97a7-326dd3c8f714" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,29c99e82-9dcf-4669-97a7-326dd3c8f714.aspx</comments>
      <category>Musings</category>
      <category>Programming</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=1d685e2c-a10d-46c3-979a-9f3961dae30d</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,1d685e2c-a10d-46c3-979a-9f3961dae30d.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,1d685e2c-a10d-46c3-979a-9f3961dae30d.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=1d685e2c-a10d-46c3-979a-9f3961dae30d</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I've just come off a whirlwind few weeks.  The largest change is my departure
from <a href="http://www.geonetric.com" target="_blank">Geonetric</a>, a health-care
content management system (CMS) software maker, and moving to <a href="http://www.jpcycles.com" target="_blank">J
&amp; P Cycles</a>, a after-market motorcycle parts dealer.  A week an a half
ago I also attended a <a href="http://www.getmotivated.com/" target="_blank">Get Motivated</a> event
here in Cedar Rapids.  I was particularly interested in hearing/seeing Zig Ziglar
speak, as I'm a big fan of his books/audio.  Then last weekend I attended the <a href="http://altdotnet.org/events/seattle" target="_blank">Alt.NET</a> conference
in Seattle.  Then this weekend I went to a workshop on investing.
</p>
        <p>
Being around the type of company at these types of events (whether technical, motivational
or other) really inspires one to be better.  At the Alt.NET conference I had
a chance to sit with a small handful of developers at the <a href="http://www.typemock.com/" target="_blank">TypeMock</a> sponsored
dinner.  Sitting among the likes of <a href="http://weblogs.asp.net/rosherove/" target="_blank">Roy
Osherove</a>, <a href="http://codebetter.com/blogs/jeremy.miller/" target="_blank">Jeremy
Miller</a>, <a href="http://geekswithblogs.net/dsellers/Default.aspx" target="_blank">Dru
Sellers</a>, <a href="http://www.ayende.com/Blog/" target="_blank">Oren Eini</a>,
and <a href="http://www.stevenlist.com/" target="_blank">Steven "Doc" List</a> and
realizing that these guys are masters of their areas is really quite inspiring. 
Just listening to the talk of IoC containers and mocking frameworks (with two mock
framework authors) is something one cannot put a price tag on.
</p>
        <p>
On the plane ride back, it was evident in fellow attendee <a href="http://subjunctive.wordpress.com/" target="_blank">Chris
Sutton</a> that he was inspired the way I was.  I've since spent the evenings
cracking open books that have been collecting dust for some time and rereading them
(Chris is doing the same since watching his Twitter account).  At the same time
I've been working to shut the TV off, not entirely but the mindless time I spend in
front of the tube has got to go if I aspire to be on the level with these programmers.
</p>
        <p>
I've spent the better part of this post talking specifically about Alt.NET but Alt.NET
really was just one of the events in which I interacted/saw inspiring people. 
These past two weeks have been quite a kick in the pants.  I would encourage
readers of this post to question themselves about what you're improving yourself on
whether it's your coding, your golf game, investing foundations, or some other hobby. 
My eyes have really been opened lately to the vast number of winners out there and
the vast number of mediocre people.
</p>
        <p>
          <strong>Don't be mediocre, better yourself, starting today.</strong>
        </p>
        <img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=1d685e2c-a10d-46c3-979a-9f3961dae30d" />
      </body>
      <title>Bettering Yourself</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,1d685e2c-a10d-46c3-979a-9f3961dae30d.aspx</guid>
      <link>http://www.timbarcz.com/blog/BetteringYourself.aspx</link>
      <pubDate>Sun, 27 Apr 2008 23:26:59 GMT</pubDate>
      <description>&lt;p&gt;
I've just come off a whirlwind few weeks.&amp;#160; The largest change is my departure
from &lt;a href="http://www.geonetric.com" target="_blank"&gt;Geonetric&lt;/a&gt;, a health-care
content management system (CMS) software maker, and moving to &lt;a href="http://www.jpcycles.com" target="_blank"&gt;J
&amp;amp; P Cycles&lt;/a&gt;, a after-market motorcycle parts dealer.&amp;#160; A week an a half
ago I also attended a &lt;a href="http://www.getmotivated.com/" target="_blank"&gt;Get Motivated&lt;/a&gt; event
here in Cedar Rapids.&amp;#160; I was particularly interested in hearing/seeing Zig Ziglar
speak, as I'm a big fan of his books/audio.&amp;#160; Then last weekend I attended the &lt;a href="http://altdotnet.org/events/seattle" target="_blank"&gt;Alt.NET&lt;/a&gt; conference
in Seattle.&amp;#160; Then this weekend I went to a workshop on investing.
&lt;/p&gt;
&lt;p&gt;
Being around the type of company at these types of events (whether technical, motivational
or other) really inspires one to be better.&amp;#160; At the Alt.NET conference I had
a chance to sit with a small handful of developers at the &lt;a href="http://www.typemock.com/" target="_blank"&gt;TypeMock&lt;/a&gt; sponsored
dinner.&amp;#160; Sitting among the likes of &lt;a href="http://weblogs.asp.net/rosherove/" target="_blank"&gt;Roy
Osherove&lt;/a&gt;, &lt;a href="http://codebetter.com/blogs/jeremy.miller/" target="_blank"&gt;Jeremy
Miller&lt;/a&gt;, &lt;a href="http://geekswithblogs.net/dsellers/Default.aspx" target="_blank"&gt;Dru
Sellers&lt;/a&gt;, &lt;a href="http://www.ayende.com/Blog/" target="_blank"&gt;Oren Eini&lt;/a&gt;,
and &lt;a href="http://www.stevenlist.com/" target="_blank"&gt;Steven &amp;quot;Doc&amp;quot; List&lt;/a&gt; and
realizing that these guys are masters of their areas is really quite inspiring.&amp;#160;
Just listening to the talk of IoC containers and mocking frameworks (with two mock
framework authors) is something one cannot put a price tag on.
&lt;/p&gt;
&lt;p&gt;
On the plane ride back, it was evident in fellow attendee &lt;a href="http://subjunctive.wordpress.com/" target="_blank"&gt;Chris
Sutton&lt;/a&gt; that he was inspired the way I was.&amp;#160; I've since spent the evenings
cracking open books that have been collecting dust for some time and rereading them
(Chris is doing the same since watching his Twitter account).&amp;#160; At the same time
I've been working to shut the TV off, not entirely but the mindless time I spend in
front of the tube has got to go if I aspire to be on the level with these programmers.
&lt;/p&gt;
&lt;p&gt;
I've spent the better part of this post talking specifically about Alt.NET but Alt.NET
really was just one of the events in which I interacted/saw inspiring people.&amp;#160;
These past two weeks have been quite a kick in the pants.&amp;#160; I would encourage
readers of this post to question themselves about what you're improving yourself on
whether it's your coding, your golf game, investing foundations, or some other hobby.&amp;#160;
My eyes have really been opened lately to the vast number of winners out there and
the vast number of mediocre people.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Don't be mediocre, better yourself, starting today.&lt;/strong&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=1d685e2c-a10d-46c3-979a-9f3961dae30d" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,1d685e2c-a10d-46c3-979a-9f3961dae30d.aspx</comments>
      <category>ALT.NET</category>
      <category>Musings</category>
      <category>OT</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=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=5f61d1f4-4310-40ff-9677-b4a9494c79ac</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,5f61d1f4-4310-40ff-9677-b4a9494c79ac.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,5f61d1f4-4310-40ff-9677-b4a9494c79ac.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=5f61d1f4-4310-40ff-9677-b4a9494c79ac</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
A friend of mine visiting from Dallas last night was telling me about <a href="http://www.grandcentral.com">GrandCentral</a>,
a service that allows you register a phone number and have any calls to that number
forwarded to your real number.  My friend has a season tickets to the Dallas
Mavericks and sells his tickets.  He sells the tickets through <a href="http://www.craigslist.org/">craigslist</a> and
doesn't want to reveal his real phone number.  GrandCentral work much like I
the <a href="http://www.timbarcz.com/blog/2007/12/19/ProtectYourInboxTwoSpamManagementTools.aspx">spam
management tools I wrote about recently</a>.
</p>
        <p>
I just went to sign up for GrandCentral and see that the service is available in Iowa:
</p>
        <p>
 <a href="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/GooglesGrandCentralNotAvailableinIowan_8CAA/image_2.png"><img style="border-width: 0px;" alt="image" src="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/GooglesGrandCentralNotAvailableinIowan_8CAA/image_thumb.png" border="0" height="341" width="478" /></a></p>
        <p>
When trying to sign up however using the area code I am told that no numbers are available:
</p>
        <p>
          <a href="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/GooglesGrandCentralNotAvailableinIowan_8CAA/image_4.png">
            <img style="border-width: 0px;" alt="image" src="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/GooglesGrandCentralNotAvailableinIowan_8CAA/image_thumb_1.png" border="0" height="310" width="462" />
          </a>
        </p>
        <p>
I reason to myself that it's not a big deal since Iowa has a few area codes, so I'll
see what numbers are available by selecting the state from the provided drop down. 
Can you spot the problem:
</p>
        <p>
          <a href="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/GooglesGrandCentralNotAvailableinIowan_8CAA/image_6.png">
            <img style="border-width: 0px;" alt="image" src="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/GooglesGrandCentralNotAvailableinIowan_8CAA/image_thumb_2.png" border="0" height="561" width="449" />
          </a>
        </p>
        <p>
Iowa is not in the list.  So how does an Iowan sign up for GrandCentral?
</p>
        <img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=5f61d1f4-4310-40ff-9677-b4a9494c79ac" />
      </body>
      <title>Google's GrandCentral Not Available in Iowa</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,5f61d1f4-4310-40ff-9677-b4a9494c79ac.aspx</guid>
      <link>http://www.timbarcz.com/blog/GooglesGrandCentralNotAvailableInIowa.aspx</link>
      <pubDate>Fri, 28 Dec 2007 22:52:23 GMT</pubDate>
      <description>&lt;p&gt;
A friend of mine visiting from Dallas last night was telling me about &lt;a href="http://www.grandcentral.com"&gt;GrandCentral&lt;/a&gt;,
a service that allows you register a phone number and have any calls to that number
forwarded to your real number.&amp;nbsp; My friend has a season tickets to the Dallas
Mavericks and sells his tickets.&amp;nbsp; He sells the tickets through &lt;a href="http://www.craigslist.org/"&gt;craigslist&lt;/a&gt; and
doesn't want to reveal his real phone number.&amp;nbsp; GrandCentral work much like I
the &lt;a href="http://www.timbarcz.com/blog/2007/12/19/ProtectYourInboxTwoSpamManagementTools.aspx"&gt;spam
management tools I wrote about recently&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
I just went to sign up for GrandCentral and see that the service is available in Iowa:
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&lt;a href="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/GooglesGrandCentralNotAvailableinIowan_8CAA/image_2.png"&gt;&lt;img style="border-width: 0px;" alt="image" src="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/GooglesGrandCentralNotAvailableinIowan_8CAA/image_thumb.png" border="0" height="341" width="478"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
When trying to sign up however using the area code I am told that no numbers are available:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/GooglesGrandCentralNotAvailableinIowan_8CAA/image_4.png"&gt;&lt;img style="border-width: 0px;" alt="image" src="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/GooglesGrandCentralNotAvailableinIowan_8CAA/image_thumb_1.png" border="0" height="310" width="462"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
I reason to myself that it's not a big deal since Iowa has a few area codes, so I'll
see what numbers are available by selecting the state from the provided drop down.&amp;nbsp;
Can you spot the problem:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/GooglesGrandCentralNotAvailableinIowan_8CAA/image_6.png"&gt;&lt;img style="border-width: 0px;" alt="image" src="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/GooglesGrandCentralNotAvailableinIowan_8CAA/image_thumb_2.png" border="0" height="561" width="449"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Iowa is not in the list.&amp;nbsp; So how does an Iowan sign up for GrandCentral?
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=5f61d1f4-4310-40ff-9677-b4a9494c79ac" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,5f61d1f4-4310-40ff-9677-b4a9494c79ac.aspx</comments>
      <category>Musings</category>
    </item>
    <item>
      <trackback:ping>http://www.timbarcz.com/blog/Trackback.aspx?guid=af68d2ac-d860-498c-a75e-fb3a34d86089</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,af68d2ac-d860-498c-a75e-fb3a34d86089.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,af68d2ac-d860-498c-a75e-fb3a34d86089.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=af68d2ac-d860-498c-a75e-fb3a34d86089</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Nope, this isn't a slam on Microsoft or a post about Big Brother.  Rather it's
a praise.  I have been impressed by Microsoft over the past few months and the
attention they pay to the "blogosphere".  I don't know if it is a Microsoft
policy or if it is product developers keeping an eye on what is being said about their
product, but they are watching.  Two of my posts about Microsoft products have
generated an email conversation with someone from Microsoft who works on the product. 
A few weeks ago I posted about how <a href="http://www.timbarcz.com/blog/2007/12/18/WindowsLiveWriterDeletesMyDasBlogPosts.aspx" target="_blank">Windows
Live Writer was deleting my DasBlog posts</a> which received the following comment
from <a href="http://dragonstyle.typepad.com" target="_blank">Charles Teague</a>:
</p>
        <blockquote>
          <p>
"Hey Tim, 
<br />
Sorry that this is happening. Can you clarify what you mean about the post being gone?
I can see the Linux post 
<br />
just fine in both IE and Firefox. 
<br />
Best, 
<br />
Charles (MSFT)"
</p>
        </blockquote>
        <p>
Looking into <a href="http://dragonstyle.typepad.com/links/about.html" target="_blank">Charles'
about page</a> reveals that he works for Microsoft working for the <a href="http://writer.live.com/" target="_blank">Windows
Live Writer</a> team.  I'm impressed that they're watching, whether it is policy
or not.  I think it shows quite a bit about the people that work for Microsoft. 
All too often there are anti-Microsoft rants and ravings and not enough praise. 
I am glad to see that they're paying attention to adopters of their software and that
in many ways their seeking out their customer base and watching the reactions instead
of having me go and search for a resolution.
</p>
        <p>
So thank you to you Charles for being aware of what's going on with your product and
being so willing to help.  If any of you Microsoft employees come upon this post,
I'm curious if this is a corporate policy or a personal one?
</p>
        <img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=af68d2ac-d860-498c-a75e-fb3a34d86089" />
      </body>
      <title>Microsoft is Watching</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,af68d2ac-d860-498c-a75e-fb3a34d86089.aspx</guid>
      <link>http://www.timbarcz.com/blog/MicrosoftIsWatching.aspx</link>
      <pubDate>Fri, 28 Dec 2007 05:24:25 GMT</pubDate>
      <description>&lt;p&gt;
Nope, this isn't a slam on Microsoft or a post about Big Brother.&amp;#160; Rather it's
a praise.&amp;#160; I have been impressed by Microsoft over the past few months and the
attention they pay to the &amp;quot;blogosphere&amp;quot;.&amp;#160; I don't know if it is a Microsoft
policy or if it is product developers keeping an eye on what is being said about their
product, but they are watching.&amp;#160; Two of my posts about Microsoft products have
generated an email conversation with someone from Microsoft who works on the product.&amp;#160;
A few weeks ago I posted about how &lt;a href="http://www.timbarcz.com/blog/2007/12/18/WindowsLiveWriterDeletesMyDasBlogPosts.aspx" target="_blank"&gt;Windows
Live Writer was deleting my DasBlog posts&lt;/a&gt; which received the following comment
from &lt;a href="http://dragonstyle.typepad.com" target="_blank"&gt;Charles Teague&lt;/a&gt;:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&amp;quot;Hey Tim, 
&lt;br /&gt;
Sorry that this is happening. Can you clarify what you mean about the post being gone?
I can see the Linux post 
&lt;br /&gt;
just fine in both IE and Firefox. 
&lt;br /&gt;
Best, 
&lt;br /&gt;
Charles (MSFT)&amp;quot;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Looking into &lt;a href="http://dragonstyle.typepad.com/links/about.html" target="_blank"&gt;Charles'
about page&lt;/a&gt; reveals that he works for Microsoft working for the &lt;a href="http://writer.live.com/" target="_blank"&gt;Windows
Live Writer&lt;/a&gt; team.&amp;#160; I'm impressed that they're watching, whether it is policy
or not.&amp;#160; I think it shows quite a bit about the people that work for Microsoft.&amp;#160;
All too often there are anti-Microsoft rants and ravings and not enough praise.&amp;#160;
I am glad to see that they're paying attention to adopters of their software and that
in many ways their seeking out their customer base and watching the reactions instead
of having me go and search for a resolution.
&lt;/p&gt;
&lt;p&gt;
So thank you to you Charles for being aware of what's going on with your product and
being so willing to help.&amp;#160; If any of you Microsoft employees come upon this post,
I'm curious if this is a corporate policy or a personal one?
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=af68d2ac-d860-498c-a75e-fb3a34d86089" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,af68d2ac-d860-498c-a75e-fb3a34d86089.aspx</comments>
      <category>Musings</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=9b7dce43-3128-4fa1-8eba-1137efc09436</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,9b7dce43-3128-4fa1-8eba-1137efc09436.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,9b7dce43-3128-4fa1-8eba-1137efc09436.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=9b7dce43-3128-4fa1-8eba-1137efc09436</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img src="http://upload.wikimedia.org/wikipedia/commons/thumb/3/35/Tux.svg/334px-Tux.svg.png" align="right" /> Recently
I was at lunch who two fellow developers.  The discussion focused on various
technologies and the future of technology as it seemingly always does when a group
of nerds gather.  The discussion somehow meandered it's way to Linux, where I
admitted that I didn't understand or get it and ask both developers to explain Linux
to me.  Both were happy to talk about Linux from the different distributions
to why Linux is so neat.  Still a few weeks later and after it was passionately
explained to me, I still don't get it.
</p>
        <p>
For home users Linux must meet or exceed current Windows functionality.  Windows
has long been the operating system of "choice" in the home.  The (un)fortunate
side effect is that you can buy any peripheral or software for your computer and most
likely it will work.  The same can't be said of Linux.  I don't see Linux
breaking into the home market for quite some time, if ever.  Here's an <a href="http://www.linux-mag.com/id/4357">article
from Joe Brockmeier</a> on the subject, he states:
</p>
        <blockquote>
          <p>
"Linux isn't a direct Windows replacement, and users seeking a drop-in replacement
for Windows often come away disappointed. Not because Linux is unusable as a desktop,
but because <em>it just isn't Windows</em>. A lot of people, though, don't really
need Windows. They just need a system that handles basic functions and doesn't cost
an arm and a leg."
</p>
        </blockquote>
        <p>
Joe seems to get it.  Linux may be better in many ways but it's worse in one,
it's not Windows.  Users are used to Windows.  If Linux is too different,
people won't switch, if it's too similar, people won't justify the move for something
so similar.  Further there's the stigma that only the über-technical work in
and with Linux.  The "basic functions" that Joe speaks of is what Apple has in
it's <a href="http://www.apple.com/ilife/">iLife</a> package.  Apple has been
running the <a href="http://www.apple.com/getamac/ads/">"I'm a Mac, I'm a PC" (getamac)</a> commercials
for awhile now, hammering home the "we just work the way you do" mantra.
</p>
        <p>
According to <a href="http://www.wikipedia.com">Wikipedia</a>, Linux has 1% desktop
market share.  Every now and then a new Linux distribution will pop up purporting
to be the answer, first it was Red Hat, then Suse, and now Ubuntu.  If after
15 years (Linux dropped in 1992) there is only 1% adoption, I wonder if a meaningful
market share will ever be realized, regardless of the distribution Linux is packaged
in.  There are articles that say that <a href="http://www.maximumpc.com/article/2008_year_of_the_linux_desktop">2008
is the Year of the Linux Desktop</a>, which is sharply but in check when Joe reminds
us:
</p>
        <blockquote>
          <p>
"Yes, yes. I know — we've all heard this before. If I recall correctly, 2001 through
2007 have <em>also</em> been" the year of the Linux desktop,"
</p>
        </blockquote>
        <p>
Other articles are more accurate when they say <a href="http://www.desktoplinux.com/news/NS8865531962.html">Linux
Desktop is More Popular Than Ever</a>.  But while that may be true, it's not
hard to have great growth when you're small.  Similar to the day the number of
subscribers to my blog doubled.  Sounds pretty impressive until you find out
that there were only two, which doubled to four.
</p>
        <p>
Linux has support which is evidenced by it's strong, ardent community. That community
however is mostly comprised of developers and the techno elite.  Until that community
starts reaching out to the people that "need a system that handles basic function
and doesn't cost an arm and a leg" Linux will remain a enthusiast OS.
</p>
        <img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=9b7dce43-3128-4fa1-8eba-1137efc09436" />
      </body>
      <title>Linux - A Desktop System It Is Not</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,9b7dce43-3128-4fa1-8eba-1137efc09436.aspx</guid>
      <link>http://www.timbarcz.com/blog/LinuxADesktopSystemItIsNot.aspx</link>
      <pubDate>Tue, 18 Dec 2007 19:01:06 GMT</pubDate>
      <description>&lt;p&gt;
&lt;img src="http://upload.wikimedia.org/wikipedia/commons/thumb/3/35/Tux.svg/334px-Tux.svg.png" align="right"&gt; Recently
I was at lunch who two fellow developers.&amp;nbsp; The discussion focused on various
technologies and the future of technology as it seemingly always does when a group
of nerds gather.&amp;nbsp; The discussion somehow meandered it's way to Linux, where I
admitted that I didn't understand or get it and ask both developers to explain Linux
to me.&amp;nbsp; Both were happy to talk about Linux from the different distributions
to why Linux is so neat.&amp;nbsp; Still a few weeks later and after it was passionately
explained to me, I still don't get it.
&lt;/p&gt;
&lt;p&gt;
For home users Linux must meet or exceed current Windows functionality.&amp;nbsp; Windows
has long been the operating system of "choice" in the home.&amp;nbsp; The (un)fortunate
side effect is that you can buy any peripheral or software for your computer and most
likely it will work.&amp;nbsp; The same can't be said of Linux.&amp;nbsp; I don't see Linux
breaking into the home market for quite some time, if ever.&amp;nbsp; Here's an &lt;a href="http://www.linux-mag.com/id/4357"&gt;article
from Joe Brockmeier&lt;/a&gt; on the subject, he states:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
"Linux isn't a direct Windows replacement, and users seeking a drop-in replacement
for Windows often come away disappointed. Not because Linux is unusable as a desktop,
but because &lt;em&gt;it just isn't Windows&lt;/em&gt;. A lot of people, though, don't really
need Windows. They just need a system that handles basic functions and doesn't cost
an arm and a leg."
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Joe seems to get it.&amp;nbsp; Linux may be better in many ways but it's worse in one,
it's not Windows.&amp;nbsp; Users are used to Windows.&amp;nbsp; If Linux is too different,
people won't switch, if it's too similar, people won't justify the move for something
so similar.&amp;nbsp; Further there's the stigma that only the über-technical work in
and with Linux.&amp;nbsp; The "basic functions" that Joe speaks of is what Apple has in
it's &lt;a href="http://www.apple.com/ilife/"&gt;iLife&lt;/a&gt; package.&amp;nbsp; Apple has been
running the &lt;a href="http://www.apple.com/getamac/ads/"&gt;"I'm a Mac, I'm a PC" (getamac)&lt;/a&gt; commercials
for awhile now, hammering home the "we just work the way you do" mantra.
&lt;/p&gt;
&lt;p&gt;
According to &lt;a href="http://www.wikipedia.com"&gt;Wikipedia&lt;/a&gt;, Linux has 1% desktop
market share.&amp;nbsp; Every now and then a new Linux distribution will pop up purporting
to be the answer, first it was Red Hat, then Suse, and now Ubuntu.&amp;nbsp; If after
15 years (Linux dropped in 1992) there is only 1% adoption, I wonder if a meaningful
market share will ever be realized, regardless of the distribution Linux is packaged
in.&amp;nbsp; There are articles that say that &lt;a href="http://www.maximumpc.com/article/2008_year_of_the_linux_desktop"&gt;2008
is the Year of the Linux Desktop&lt;/a&gt;, which is sharply but in check when Joe reminds
us:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
"Yes, yes. I know — we've all heard this before. If I recall correctly, 2001 through
2007 have &lt;em&gt;also&lt;/em&gt; been" the year of the Linux desktop,"
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Other articles are more accurate when they say &lt;a href="http://www.desktoplinux.com/news/NS8865531962.html"&gt;Linux
Desktop is More Popular Than Ever&lt;/a&gt;.&amp;nbsp; But while that may be true, it's not
hard to have great growth when you're small.&amp;nbsp; Similar to the day the number of
subscribers to my blog doubled.&amp;nbsp; Sounds pretty impressive until you find out
that there were only two, which doubled to four.
&lt;/p&gt;
&lt;p&gt;
Linux has support which is evidenced by it's strong, ardent community. That community
however is mostly comprised of developers and the techno elite.&amp;nbsp; Until that community
starts reaching out to the people that "need a system that handles basic function
and doesn't cost an arm and a leg" Linux will remain a enthusiast OS.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=9b7dce43-3128-4fa1-8eba-1137efc09436" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,9b7dce43-3128-4fa1-8eba-1137efc09436.aspx</comments>
      <category>Musings</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=a1640a26-9949-4b5e-af07-0f330dc9f546</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,a1640a26-9949-4b5e-af07-0f330dc9f546.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,a1640a26-9949-4b5e-af07-0f330dc9f546.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=a1640a26-9949-4b5e-af07-0f330dc9f546</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">I really am quite suprised as I'm going
through <a href="http://www.bloglines.com">Bloglines </a>and reading blogs by how
few of them mention Thanksgiving.  I'm not sure quite why the lack of Thanksgiving
buzz on the blogs, but I've been thinking a bit about what I'm thankful for, and I
wanted to jot it down.<br /><br />
I'm thankful for:<br /><ul><li>
Sarah - Sarah is a wonderful wife.  People from the outside probably don't *get*
us but that's ok, we get each other and it works great!  Together we make a great
team and I consider myself lucky for having it that way.<br /></li><li>
Lincoln's health - while I'm thankful for Lincoln, I'm more thankful at this point
that he's healthy and developing well.  There's nothing like getting up in the
morning and seeing him smile up at you from his crib.</li><li>
Hope and Vision - I'm going somewhere, I've got goals, however I was reminded again
how easily I take those for granted while driving through a "not so nice neighborhood". 
I thought to myself that day that if I lived in that neighborhood how easily it would
be to lose my hopes and dreams.</li><li>
Health - Despite a raging Mt. Dew addiction, I remain in fairly good health. 
Sure I'm heavier than when I was in my early twenties, but that's to be expected. 
I still get to run on a semi-regular basis and I enjoy it.</li><li>
Work - I strongly feel that it's in a man's bones to work.  What makes it easier
is that I enjoy my work.  I've worked at enough places that I don't care for
to realize the last few places I've worked are wonderful.  I enjoy getting up
and working at Geonetric.  Sure there are bad days, but usually there only bad
because I care.  In fact I'm not the only one who likes Geonetric, it was recently
voted <a href="http://www.geonetric.com/about/pressreleasedetail.asp?id=172">best
place to work in our area</a>.</li><li>
Faith - I'm thankful for a higher power.  Despite my best attempts, I find that
I'm rarely the example I should be.</li></ul>
What are you thankful for.  Whether you respond in comments or post on your blog
in response, at the very take some time and think about what you're thankful for this
season.<br /><p></p><img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=a1640a26-9949-4b5e-af07-0f330dc9f546" /></body>
      <title>Thanksgiving Thanks</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,a1640a26-9949-4b5e-af07-0f330dc9f546.aspx</guid>
      <link>http://www.timbarcz.com/blog/ThanksgivingThanks.aspx</link>
      <pubDate>Mon, 26 Nov 2007 16:10:38 GMT</pubDate>
      <description>I really am quite suprised as I'm going through &lt;a href="http://www.bloglines.com"&gt;Bloglines &lt;/a&gt;and
reading blogs by how few of them mention Thanksgiving.&amp;nbsp; I'm not sure quite why
the lack of Thanksgiving buzz on the blogs, but I've been thinking a bit about what
I'm thankful for, and I wanted to jot it down.&lt;br&gt;
&lt;br&gt;
I'm thankful for:&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
Sarah - Sarah is a wonderful wife.&amp;nbsp; People from the outside probably don't *get*
us but that's ok, we get each other and it works great!&amp;nbsp; Together we make a great
team and I consider myself lucky for having it that way.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Lincoln's health - while I'm thankful for Lincoln, I'm more thankful at this point
that he's healthy and developing well.&amp;nbsp; There's nothing like getting up in the
morning and seeing him smile up at you from his crib.&lt;/li&gt;
&lt;li&gt;
Hope and Vision - I'm going somewhere, I've got goals, however I was reminded again
how easily I take those for granted while driving through a "not so nice neighborhood".&amp;nbsp;
I thought to myself that day that if I lived in that neighborhood how easily it would
be to lose my hopes and dreams.&lt;/li&gt;
&lt;li&gt;
Health - Despite a raging Mt. Dew addiction, I remain in fairly good health.&amp;nbsp;
Sure I'm heavier than when I was in my early twenties, but that's to be expected.&amp;nbsp;
I still get to run on a semi-regular basis and I enjoy it.&lt;/li&gt;
&lt;li&gt;
Work - I strongly feel that it's in a man's bones to work.&amp;nbsp; What makes it easier
is that I enjoy my work.&amp;nbsp; I've worked at enough places that I don't care for
to realize the last few places I've worked are wonderful.&amp;nbsp; I enjoy getting up
and working at Geonetric.&amp;nbsp; Sure there are bad days, but usually there only bad
because I care.&amp;nbsp; In fact I'm not the only one who likes Geonetric, it was recently
voted &lt;a href="http://www.geonetric.com/about/pressreleasedetail.asp?id=172"&gt;best
place to work in our area&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
Faith - I'm thankful for a higher power.&amp;nbsp; Despite my best attempts, I find that
I'm rarely the example I should be.&lt;/li&gt;
&lt;/ul&gt;
What are you thankful for.&amp;nbsp; Whether you respond in comments or post on your blog
in response, at the very take some time and think about what you're thankful for this
season.&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=a1640a26-9949-4b5e-af07-0f330dc9f546" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,a1640a26-9949-4b5e-af07-0f330dc9f546.aspx</comments>
      <category>Musings</category>
    </item>
    <item>
      <trackback:ping>http://www.timbarcz.com/blog/Trackback.aspx?guid=2a91c3e8-3d5b-4411-b765-bd9b43ad2886</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,2a91c3e8-3d5b-4411-b765-bd9b43ad2886.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,2a91c3e8-3d5b-4411-b765-bd9b43ad2886.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=2a91c3e8-3d5b-4411-b765-bd9b43ad2886</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I'm on the cusp of purchasing parts for a new computer.  My mouse is hovering
on the "Checkout" button on <a href="http://www.newegg.com">newegg.com</a>. 
As I'm going over the parts of my computer I'm agonizing over the choices I've made. 
Most of the parts are inspired from lists that were put out by <a href="http://www.hanselman.com/blog/">Scott
Hanselman</a> and his <a href="http://www.hanselman.com/blog/TheCodingHorrorUltimateDeveloperRigThrowdownPart2.aspx">ultimate
developer rig</a> post as well as <a href="http://www.codinghorror.com/blog/">Jeff
Atwood</a> and his <a href="http://www.codinghorror.com/blog/archives/000918.html">"Now
It's Your Turn"</a> post.
</p>
        <p>
The question right now is Quad Core vs. Dual Core.  It's been questioned how
much is really gained by going from two to four cores.  <a href="http://www.codinghorror.com/blog/archives/000942.html">Graphs
and benchmarks</a> show that there isn't much to be gained right now with going to
a Quad core.  Sure there isn't a difference now, but what about the future. 
Multi-core systems are the norm now, but a few years ago that wasn't the case. 
As programs start building for multi-core desktops I would imagine that more cores
would be better.  So I'm curious, <strong>though a quad core machine today offers
a neglible benefit, what about the future, two or even four years from now?</strong></p>
        <p>
What do you think?
</p>
        <p>
Tim
</p>
        <img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=2a91c3e8-3d5b-4411-b765-bd9b43ad2886" />
      </body>
      <title>Quad Core or Dual?</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,2a91c3e8-3d5b-4411-b765-bd9b43ad2886.aspx</guid>
      <link>http://www.timbarcz.com/blog/QuadCoreOrDual.aspx</link>
      <pubDate>Tue, 13 Nov 2007 19:51:12 GMT</pubDate>
      <description>&lt;p&gt;
I'm on the cusp of purchasing parts for a new computer.&amp;nbsp; My mouse is hovering
on the "Checkout" button on &lt;a href="http://www.newegg.com"&gt;newegg.com&lt;/a&gt;.&amp;nbsp;
As I'm going over the parts of my computer I'm agonizing over the choices I've made.&amp;nbsp;
Most of the parts are inspired from lists that were put out by &lt;a href="http://www.hanselman.com/blog/"&gt;Scott
Hanselman&lt;/a&gt; and his &lt;a href="http://www.hanselman.com/blog/TheCodingHorrorUltimateDeveloperRigThrowdownPart2.aspx"&gt;ultimate
developer rig&lt;/a&gt; post as well as &lt;a href="http://www.codinghorror.com/blog/"&gt;Jeff
Atwood&lt;/a&gt; and his &lt;a href="http://www.codinghorror.com/blog/archives/000918.html"&gt;"Now
It's Your Turn"&lt;/a&gt; post.
&lt;/p&gt;
&lt;p&gt;
The question right now is Quad Core vs. Dual Core.&amp;nbsp; It's been questioned how
much is really gained by going from two to four cores.&amp;nbsp; &lt;a href="http://www.codinghorror.com/blog/archives/000942.html"&gt;Graphs
and benchmarks&lt;/a&gt; show that there isn't much to be gained right now with going to
a Quad core.&amp;nbsp; Sure there isn't a difference now, but what about the future.&amp;nbsp;
Multi-core systems are the norm now, but a few years ago that wasn't the case.&amp;nbsp;
As programs start building for multi-core desktops I would imagine that more cores
would be better.&amp;nbsp; So I'm curious, &lt;strong&gt;though a quad core machine today offers
a neglible benefit, what about the future, two or even four years from now?&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
What do you think?
&lt;/p&gt;
&lt;p&gt;
Tim
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=2a91c3e8-3d5b-4411-b765-bd9b43ad2886" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,2a91c3e8-3d5b-4411-b765-bd9b43ad2886.aspx</comments>
      <category>Hardware</category>
      <category>Musings</category>
    </item>
    <item>
      <trackback:ping>http://www.timbarcz.com/blog/Trackback.aspx?guid=64c87f31-e451-4af9-a274-28268f7572f7</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,64c87f31-e451-4af9-a274-28268f7572f7.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,64c87f31-e451-4af9-a274-28268f7572f7.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=64c87f31-e451-4af9-a274-28268f7572f7</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <img src="http://www.timbarcz.com/blog/content/binary/billboard.jpg" alt="billboard.jpg" align="right" border="0" height="299" width="450" />In
my post the other day about the <a href="http://www.timbarcz.com/blog/2007/10/15/TheFrivolityOfTheWeb.aspx">frivolity
of the web</a>, I wrote about how there are many sites out there that seem frivolous
to me.  Thinking more about the topic, most of these sites are ad-driven. 
In the example I gave about the food fight application built on the <a href="http://www.facebook.com">FaceBook</a> API,
a FaceBook user earns "money" by answering questions posed by advertisers.<br /><br />
Everything these day's is ad-driven, from <a href="http://www.google.com">search engines</a>,
to <a href="http://www.myspace.com">social sites</a>, even the oft rumored <a href="http://www.computerworld.com/action/article.do?command=viewArticleBasic&amp;articleId=9028763">Google
Phone</a>.  What's stopping us from extending this model to our governmental
system?  We could lower taxes and supplement with advertising dollars.<br /><br />
For example, when the government claims imminent domain on a piece of land in order
to put a highway through they usually take enough land for the road and a little extra. 
Instead I propose you take more, say 100 yards on either side of the highway. 
That land, owned by the government, can then be used by advertisers to put up billboards,
at a cost of course.  You could set up any number of arrangements.  You
could even have a scenario where one advertisers pays a much higher rate because they
don't want other advertisers.  This of all of the federal and state highways
now and all of the money that would be generated by advertisers.  Most advertisers
already pay to advertise on interstates.  This program would simply shift the
money going to some lucky farmer who's farm got sawed in half by a road to the government
instead.<br /><br />
Continuing down this road, social security checks could be emblazened with the logo
of an advertiser.  What better way to advertise, the money you hold in your hand
is telling you where to spend it!<br /><br />
You want governmental health care?  No problem, first you simply have to listen
to a few ads and answer questions about the ads before you can see a doctor. 
Customers who have insurance can opt out of the ads.  It's a win win!<br /><br />
If ad-driven revenues really work, as they seemingly have by surveying the Web 2.0
landscape, let's use that to solve some of our governmental problems.  <b>You'll
lower taxes making the conservatives happy.  You'll be able to offer more services,
making liberals happy.</b><br /><p></p><img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=64c87f31-e451-4af9-a274-28268f7572f7" /></body>
      <title>Paying For Government Through Ad-Driven Revenue</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,64c87f31-e451-4af9-a274-28268f7572f7.aspx</guid>
      <link>http://www.timbarcz.com/blog/PayingForGovernmentThroughAdDrivenRevenue.aspx</link>
      <pubDate>Tue, 16 Oct 2007 15:41:34 GMT</pubDate>
      <description>&lt;img src="http://www.timbarcz.com/blog/content/binary/billboard.jpg" alt="billboard.jpg" align="right" border="0" height="299" width="450"&gt;In
my post the other day about the &lt;a href="http://www.timbarcz.com/blog/2007/10/15/TheFrivolityOfTheWeb.aspx"&gt;frivolity
of the web&lt;/a&gt;, I wrote about how there are many sites out there that seem frivolous
to me.&amp;nbsp; Thinking more about the topic, most of these sites are ad-driven.&amp;nbsp;
In the example I gave about the food fight application built on the &lt;a href="http://www.facebook.com"&gt;FaceBook&lt;/a&gt; API,
a FaceBook user earns "money" by answering questions posed by advertisers.&lt;br&gt;
&lt;br&gt;
Everything these day's is ad-driven, from &lt;a href="http://www.google.com"&gt;search engines&lt;/a&gt;,
to &lt;a href="http://www.myspace.com"&gt;social sites&lt;/a&gt;, even the oft rumored &lt;a href="http://www.computerworld.com/action/article.do?command=viewArticleBasic&amp;amp;articleId=9028763"&gt;Google
Phone&lt;/a&gt;.&amp;nbsp; What's stopping us from extending this model to our governmental
system?&amp;nbsp; We could lower taxes and supplement with advertising dollars.&lt;br&gt;
&lt;br&gt;
For example, when the government claims imminent domain on a piece of land in order
to put a highway through they usually take enough land for the road and a little extra.&amp;nbsp;
Instead I propose you take more, say 100 yards on either side of the highway.&amp;nbsp;
That land, owned by the government, can then be used by advertisers to put up billboards,
at a cost of course.&amp;nbsp; You could set up any number of arrangements.&amp;nbsp; You
could even have a scenario where one advertisers pays a much higher rate because they
don't want other advertisers.&amp;nbsp; This of all of the federal and state highways
now and all of the money that would be generated by advertisers.&amp;nbsp; Most advertisers
already pay to advertise on interstates.&amp;nbsp; This program would simply shift the
money going to some lucky farmer who's farm got sawed in half by a road to the government
instead.&lt;br&gt;
&lt;br&gt;
Continuing down this road, social security checks could be emblazened with the logo
of an advertiser.&amp;nbsp; What better way to advertise, the money you hold in your hand
is telling you where to spend it!&lt;br&gt;
&lt;br&gt;
You want governmental health care?&amp;nbsp; No problem, first you simply have to listen
to a few ads and answer questions about the ads before you can see a doctor.&amp;nbsp;
Customers who have insurance can opt out of the ads.&amp;nbsp; It's a win win!&lt;br&gt;
&lt;br&gt;
If ad-driven revenues really work, as they seemingly have by surveying the Web 2.0
landscape, let's use that to solve some of our governmental problems.&amp;nbsp; &lt;b&gt;You'll
lower taxes making the conservatives happy.&amp;nbsp; You'll be able to offer more services,
making liberals happy.&lt;/b&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=64c87f31-e451-4af9-a274-28268f7572f7" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,64c87f31-e451-4af9-a274-28268f7572f7.aspx</comments>
      <category>Musings</category>
    </item>
    <item>
      <trackback:ping>http://www.timbarcz.com/blog/Trackback.aspx?guid=fcafa2d4-028e-4a61-936e-5280a167427e</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,fcafa2d4-028e-4a61-936e-5280a167427e.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,fcafa2d4-028e-4a61-936e-5280a167427e.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=fcafa2d4-028e-4a61-936e-5280a167427e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">Yesterday Sarah had made some cookies for
our neighbors and my parents.  Before delivering to the neighbors we took an
afternoon drive out to my parents to deliver to them.  While at their house,
I played a <a href="http://www.youtube.com">YouTube</a> clip for my dad.  While
he thought the clip was moderately funny, I think he has a hard time getting it, Web
2.0 that is.  Frequently he'll ask about various sites he's heard of and what
it is about them that is so attractive to people.  Additionally I'm periodically
asked by family members what I do at work.  I struggle to explain my job and
Geonetric's purpose in a meaningful way to a generation that didn't grow up with the
internet.<br /><br />
As I sit and think about it, I think my dad is right sometimes when "not getting it". 
I think he sees much of the internet as frivolous.  And I have to agree. 
That classification isn't bad, it just is what it is.  For example, I was recently
reading an article in the now defunct <a href="http://money.cnn.com/magazines/business2/">Business
2.0</a> magazine about a guy who has made millions off of the open Facebook API. 
His "service" allows users to buy virtual food with money they earn through answering
questions about ads.  The food purchased then can be "thrown" at another facebook
member.  The popular item to throw, poop, yes poop.  How can I explain that
to my father or grandfather?<br /><br />
That's what I like about Geonetric, we are actually doing something of value. 
We have it listed on our website on our <a href="http://www.geonetric.com/about/10reasons.asp">"Top
10 Reasons to Work at Geonetric"</a>:<br /><blockquote>"<b>Reason 4: We're helping save lives!</b><br /><br />
We are connecting patients, physicians, and communities using Internet technology.
We're helping an industry that has traditionally done a <em>miserable</em> job of
using Internet technology successfully. One of our clients launched a Weblog of a
morbidly obese patient undergoing bariatric surgery that helped 40 patients find this
life-saving surgery. There's something very fulfilling and rewarding about doing things
that help save lives!"</blockquote><p></p><br />
How do you explain the value of <a href="http://www.myspace.com">MySpace</a> or <a href="http://www.youtube.com">YouTube</a> to
someone?  My argument isn't that these sites are bad, it's just that they seem
frivolous.  Co-workers use MySpace to chat with each other when it's just as
easier to pick up a phone or talk in person.  YouTube allows people to post <a href="http://youtube.com/watch?v=--s6_NM8x7g">poor
quality videos of themselves typing on a keyboard</a>.<br /><br />
I don't wish ill-will on them or wish they'd disappear, or think they have no place
in society.  In fact I use some of these sites and carry no shame in doing so.
However, it does cause me to pause and wonder what the internet/technology landscape
will look like in 5, 10, 25 and 50 years from now.  Will throwing poop at each
other virtually be the thing to do?  What new trends will show up?  Right
now when I survey some of the very popular sites, I can't help but feel much of it
is frivolous.<br /><img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=fcafa2d4-028e-4a61-936e-5280a167427e" /></body>
      <title>The Frivolity of the Web</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,fcafa2d4-028e-4a61-936e-5280a167427e.aspx</guid>
      <link>http://www.timbarcz.com/blog/TheFrivolityOfTheWeb.aspx</link>
      <pubDate>Mon, 15 Oct 2007 03:41:41 GMT</pubDate>
      <description>Yesterday Sarah had made some cookies for our neighbors and my parents.&amp;nbsp; Before delivering to the neighbors we took an afternoon drive out to my parents to deliver to them.&amp;nbsp; While at their house, I played a &lt;a href="http://www.youtube.com"&gt;YouTube&lt;/a&gt; clip
for my dad.&amp;nbsp; While he thought the clip was moderately funny, I think he has a
hard time getting it, Web 2.0 that is.&amp;nbsp; Frequently he'll ask about various sites
he's heard of and what it is about them that is so attractive to people.&amp;nbsp; Additionally
I'm periodically asked by family members what I do at work.&amp;nbsp; I struggle to explain
my job and Geonetric's purpose in a meaningful way to a generation that didn't grow
up with the internet.&lt;br&gt;
&lt;br&gt;
As I sit and think about it, I think my dad is right sometimes when "not getting it".&amp;nbsp;
I think he sees much of the internet as frivolous.&amp;nbsp; And I have to agree.&amp;nbsp;
That classification isn't bad, it just is what it is.&amp;nbsp; For example, I was recently
reading an article in the now defunct &lt;a href="http://money.cnn.com/magazines/business2/"&gt;Business
2.0&lt;/a&gt; magazine about a guy who has made millions off of the open Facebook API.&amp;nbsp;
His "service" allows users to buy virtual food with money they earn through answering
questions about ads.&amp;nbsp; The food purchased then can be "thrown" at another facebook
member.&amp;nbsp; The popular item to throw, poop, yes poop.&amp;nbsp; How can I explain that
to my father or grandfather?&lt;br&gt;
&lt;br&gt;
That's what I like about Geonetric, we are actually doing something of value.&amp;nbsp;
We have it listed on our website on our &lt;a href="http://www.geonetric.com/about/10reasons.asp"&gt;"Top
10 Reasons to Work at Geonetric"&lt;/a&gt;:&lt;br&gt;
&lt;blockquote&gt;"&lt;b&gt;Reason 4: We're helping save lives!&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
We are connecting patients, physicians, and communities using Internet technology.
We're helping an industry that has traditionally done a &lt;em&gt;miserable&lt;/em&gt; job of
using Internet technology successfully. One of our clients launched a Weblog of a
morbidly obese patient undergoing bariatric surgery that helped 40 patients find this
life-saving surgery. There's something very fulfilling and rewarding about doing things
that help save lives!"&lt;/blockquote&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;br&gt;
How do you explain the value of &lt;a href="http://www.myspace.com"&gt;MySpace&lt;/a&gt; or &lt;a href="http://www.youtube.com"&gt;YouTube&lt;/a&gt; to
someone?&amp;nbsp; My argument isn't that these sites are bad, it's just that they seem
frivolous.&amp;nbsp; Co-workers use MySpace to chat with each other when it's just as
easier to pick up a phone or talk in person.&amp;nbsp; YouTube allows people to post &lt;a href="http://youtube.com/watch?v=--s6_NM8x7g"&gt;poor
quality videos of themselves typing on a keyboard&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
I don't wish ill-will on them or wish they'd disappear, or think they have no place
in society.&amp;nbsp; In fact I use some of these sites and carry no shame in doing so.
However, it does cause me to pause and wonder what the internet/technology landscape
will look like in 5, 10, 25 and 50 years from now.&amp;nbsp; Will throwing poop at each
other virtually be the thing to do?&amp;nbsp; What new trends will show up?&amp;nbsp; Right
now when I survey some of the very popular sites, I can't help but feel much of it
is frivolous.&lt;br&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=fcafa2d4-028e-4a61-936e-5280a167427e" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,fcafa2d4-028e-4a61-936e-5280a167427e.aspx</comments>
      <category>Musings</category>
    </item>
    <item>
      <trackback:ping>http://www.timbarcz.com/blog/Trackback.aspx?guid=26c77cb9-8662-4cf6-94f4-70cae7da2164</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,26c77cb9-8662-4cf6-94f4-70cae7da2164.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,26c77cb9-8662-4cf6-94f4-70cae7da2164.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=26c77cb9-8662-4cf6-94f4-70cae7da2164</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
The other day I ran a credit report and a coworker asked if I could blog about how
I did that.  I didn't want to <em>inadvertently</em> forget to post a requested
topic since I've been <em>gardening</em> a lot.
</p>
        <p>
Here's the skinny on credit reports.  Back in 2003, Congress passed the <a href="http://www.treasury.gov/offices/domestic-finance/financial-institution/cip/pdf/fact-act.pdf">Fair
and Accurate Credit Transactions Act (FACT Act).</a> There is a provision in there
allowing consumers a free credit report from each of the three credit reporting agencies
(Equifax, TransUnion, and Experian) once a year.
</p>
        <p>
The method I use to get my credit report is to use <a href="http://www.annualcreditreport.com">AnnualCreditReport.com</a>. 
You simply go to their home page, select your state in the "Start Here" area and you're
off.  You will have to verify a few pieces of information but once you've done
that you can select which site(s) you would like to recieve your report from.  
</p>
        <p>
Since you are allotted one report per 12 month period from each agency, I typically
run on a 4 month schedule pulling a single report at a time.  Here's how I do
it.
</p>
        <ul>
          <li>
October 07 - <strong>Experian</strong></li>
          <li>
November 07</li>
          <li>
December 07</li>
          <li>
January 08</li>
          <li>
February 08 - <strong>Equifax</strong></li>
          <li>
March 08</li>
          <li>
April 08</li>
          <li>
May 08</li>
          <li>
June 08 - <strong>TransUnion</strong></li>
          <li>
July 08</li>
          <li>
August 08</li>
          <li>
September 08</li>
          <li>
October 08 - <strong>Experian</strong></li>
          <li>
November 08</li>
          <li>
December 08</li>
          <li>
January 09</li>
          <li>
February 09 - <strong>Equifax</strong></li>
          <li>
March 09</li>
          <li>
April 09</li>
          <li>
May 09</li>
          <li>
June 09 - <strong>TransUnion</strong></li>
          <li>
July 09</li>
          <li>
August 09</li>
          <li>
September 09</li>
        </ul>
        <p>
That way without paying a dime I get a credit report once every four months.
</p>
        <p>
If you haven't ran a report in awhile, do it today, it's free and you've got nothing
to lose.
</p>
        <img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=26c77cb9-8662-4cf6-94f4-70cae7da2164" />
      </body>
      <title>How To Obtain a Credit Report for Free</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,26c77cb9-8662-4cf6-94f4-70cae7da2164.aspx</guid>
      <link>http://www.timbarcz.com/blog/HowToObtainACreditReportForFree.aspx</link>
      <pubDate>Sun, 14 Oct 2007 02:01:47 GMT</pubDate>
      <description>&lt;p&gt;
The other day I ran a credit report and a coworker asked if I could blog about how
I did that.&amp;nbsp; I didn't want to &lt;em&gt;inadvertently&lt;/em&gt; forget to post a requested
topic since I've been &lt;em&gt;gardening&lt;/em&gt; a lot.
&lt;/p&gt;
&lt;p&gt;
Here's the skinny on credit reports.&amp;nbsp; Back in 2003, Congress passed the &lt;a href="http://www.treasury.gov/offices/domestic-finance/financial-institution/cip/pdf/fact-act.pdf"&gt;Fair
and Accurate Credit Transactions Act (FACT Act).&lt;/a&gt; There is a provision in there
allowing consumers a free credit report from each of the three credit reporting agencies
(Equifax, TransUnion, and Experian) once a year.
&lt;/p&gt;
&lt;p&gt;
The method I use to get my credit report is to use &lt;a href="http://www.annualcreditreport.com"&gt;AnnualCreditReport.com&lt;/a&gt;.&amp;nbsp;
You simply go to their home page, select your state in the "Start Here" area and you're
off.&amp;nbsp; You will have to verify a few pieces of information but once you've done
that you can select which site(s) you would like to recieve your report from.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
Since you are allotted one report per 12 month period from each agency, I typically
run on a 4 month schedule pulling a single report at a time.&amp;nbsp; Here's how I do
it.
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
October 07 - &lt;strong&gt;Experian&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
November 07&lt;/li&gt;
&lt;li&gt;
December 07&lt;/li&gt;
&lt;li&gt;
January 08&lt;/li&gt;
&lt;li&gt;
February 08 - &lt;strong&gt;Equifax&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
March 08&lt;/li&gt;
&lt;li&gt;
April 08&lt;/li&gt;
&lt;li&gt;
May 08&lt;/li&gt;
&lt;li&gt;
June 08 - &lt;strong&gt;TransUnion&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
July 08&lt;/li&gt;
&lt;li&gt;
August 08&lt;/li&gt;
&lt;li&gt;
September 08&lt;/li&gt;
&lt;li&gt;
October 08 - &lt;strong&gt;Experian&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
November 08&lt;/li&gt;
&lt;li&gt;
December 08&lt;/li&gt;
&lt;li&gt;
January 09&lt;/li&gt;
&lt;li&gt;
February 09 - &lt;strong&gt;Equifax&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
March 09&lt;/li&gt;
&lt;li&gt;
April 09&lt;/li&gt;
&lt;li&gt;
May 09&lt;/li&gt;
&lt;li&gt;
June 09 - &lt;strong&gt;TransUnion&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
July 09&lt;/li&gt;
&lt;li&gt;
August 09&lt;/li&gt;
&lt;li&gt;
September 09&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
That way without paying a dime I get a credit report once every four months.
&lt;/p&gt;
&lt;p&gt;
If you haven't ran a report in awhile, do it today, it's free and you've got nothing
to lose.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=26c77cb9-8662-4cf6-94f4-70cae7da2164" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,26c77cb9-8662-4cf6-94f4-70cae7da2164.aspx</comments>
      <category>Musings</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=35bfd2ce-4537-44bd-b8e7-393414b9ba71</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,35bfd2ce-4537-44bd-b8e7-393414b9ba71.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,35bfd2ce-4537-44bd-b8e7-393414b9ba71.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=35bfd2ce-4537-44bd-b8e7-393414b9ba71</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <img src="http://www.timbarcz.com/blog/content/binary/rubix-cube.jpg" alt="rubix-cube.jpg" title="Rubik's Cube" align="right" border="0" height="359" width="350" />A
few weeks ago I was over at my bosses house for a charity <a href="http://en.wikipedia.org/wiki/Euchre">euchre</a> night. 
While waiting for play to start, I spent some time with his daughter observing her
complete a puzzle.  In the puzzle she had to draw a line connecting dots, where
each dot was associated with a letter from the alphabet.  I've also recently
watched my niece with puzzle book at her house where she has to fill in the missing
number in a sequence.<br /><br />
At some age puzzles seems to take a backseat to other things and dissapear entirely
in the worst case.<br /><br />
This past Sunday while at Target, I found myself in the toy department searching for
a Rubik's cube.  It might have been to test myself or simply to recapture my
youth.  I remember playing and solving one as a child at my grandparents. 
My method to solving it was much like yours most likely, move the stickers. 
(It's not cheating, it's thinking outside the box.)<br /><br />
After taking it out the package and spending some time with it, I've solved it a few
times now through completely legal methods.  Even after solving it, it intrigues
me.  I find myself thinking about the position of square and what the outcome
of moves would be on the cube.<br /><br />
While it's still just a game, and may not have the same immediate benefits of learning
letters and numbers like the aformentioned toddlers, I'm hoping that by thinking accutely
my brain is just slightly sharper.  Even if the benefit is temporal, I am enjoying
the puzzle.<br /><br /><div align="center"><span class="huge">"The brain is like a muscle. When it is in
use we feel very good. Understanding is joyous.</span> "<br /><span class="bodybold"><a href="http://en.wikipedia.org/wiki/Carl_Sagan">Carl Sagan</a></span></div><p></p><img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=35bfd2ce-4537-44bd-b8e7-393414b9ba71" /></body>
      <title>Enjoying Puzzles</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,35bfd2ce-4537-44bd-b8e7-393414b9ba71.aspx</guid>
      <link>http://www.timbarcz.com/blog/EnjoyingPuzzles.aspx</link>
      <pubDate>Tue, 09 Oct 2007 16:37:19 GMT</pubDate>
      <description>&lt;img src="http://www.timbarcz.com/blog/content/binary/rubix-cube.jpg" alt="rubix-cube.jpg" title="Rubik's Cube" align="right" border="0" height="359" width="350"&gt;A
few weeks ago I was over at my bosses house for a charity &lt;a href="http://en.wikipedia.org/wiki/Euchre"&gt;euchre&lt;/a&gt; night.&amp;nbsp;
While waiting for play to start, I spent some time with his daughter observing her
complete a puzzle.&amp;nbsp; In the puzzle she had to draw a line connecting dots, where
each dot was associated with a letter from the alphabet.&amp;nbsp; I've also recently
watched my niece with puzzle book at her house where she has to fill in the missing
number in a sequence.&lt;br&gt;
&lt;br&gt;
At some age puzzles seems to take a backseat to other things and dissapear entirely
in the worst case.&lt;br&gt;
&lt;br&gt;
This past Sunday while at Target, I found myself in the toy department searching for
a Rubik's cube.&amp;nbsp; It might have been to test myself or simply to recapture my
youth.&amp;nbsp; I remember playing and solving one as a child at my grandparents.&amp;nbsp;
My method to solving it was much like yours most likely, move the stickers.&amp;nbsp;
(It's not cheating, it's thinking outside the box.)&lt;br&gt;
&lt;br&gt;
After taking it out the package and spending some time with it, I've solved it a few
times now through completely legal methods.&amp;nbsp; Even after solving it, it intrigues
me.&amp;nbsp; I find myself thinking about the position of square and what the outcome
of moves would be on the cube.&lt;br&gt;
&lt;br&gt;
While it's still just a game, and may not have the same immediate benefits of learning
letters and numbers like the aformentioned toddlers, I'm hoping that by thinking accutely
my brain is just slightly sharper.&amp;nbsp; Even if the benefit is temporal, I am enjoying
the puzzle.&lt;br&gt;
&lt;br&gt;
&lt;div align="center"&gt;&lt;span class="huge"&gt;"The brain is like a muscle. When it is in
use we feel very good. Understanding is joyous.&lt;/span&gt; "&lt;br&gt;
&lt;span class="bodybold"&gt; &lt;a href="http://en.wikipedia.org/wiki/Carl_Sagan"&gt;Carl Sagan&lt;/a&gt;&lt;/span&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=35bfd2ce-4537-44bd-b8e7-393414b9ba71" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,35bfd2ce-4537-44bd-b8e7-393414b9ba71.aspx</comments>
      <category>Musings</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=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=95496b3b-2b21-4ff9-a8e7-08dbad8a8775</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,95496b3b-2b21-4ff9-a8e7-08dbad8a8775.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,95496b3b-2b21-4ff9-a8e7-08dbad8a8775.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=95496b3b-2b21-4ff9-a8e7-08dbad8a8775</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Jay Kimble posted recently about <a href="http://codebetter.com/blogs/jay.kimble/archive/2007/07/30/why-does-live-com-search-suck.aspx">why
live.com search sucks</a>. In the post Jay talks about his troubles find the download
page for a particular Microsoft product using Microsoft's <a href="http://www.live.com">live.com</a> search
engine, ultimately resorting to using Google to get his answer after <a href="http://www.live.com">live.com</a> failed. 
I generally enjoyed and agreed with the post, however I lost Jay on his final comment:
</p>
        <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
          <p>
            <em>I'm not one to bite the hand that (sort of) feeds me, but come on!!??  The
best search engine for MS' properties should be an MS Search Engine!!</em>
          </p>
        </blockquote>
        <p dir="ltr">
In principal I agree, but I wholeheartedly disagree that the MS engine should be best
for MS properties simply because they are MS properties.  <strong>The Microsoft
engine should be the best at finding MS Properties because it's the best engine.  </strong>PERIOD. 
As Jay pointed out this simply wasn't the case.
</p>
        <p dir="ltr">
Google is dominant because of the quality of the result the engine provides. 
If Microsoft operated as Jay suggests, my search for "Blue Shoes" could possibly return
"Indigo" results at the top or a search for "Whales" returning a link to the latest
download of Orcas, clearly not what I want in either case.  If live.com is to
be the best resource for searching for MS properties it should solely be because of
the quality of the backing algorithm and not some artificial elevation because it's
MS owned as Jay suggests.
</p>
        <img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=95496b3b-2b21-4ff9-a8e7-08dbad8a8775" />
      </body>
      <title>Jay Kimble has got It Wrong</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,95496b3b-2b21-4ff9-a8e7-08dbad8a8775.aspx</guid>
      <link>http://www.timbarcz.com/blog/JayKimbleHasGotItWrong.aspx</link>
      <pubDate>Wed, 01 Aug 2007 03:11:52 GMT</pubDate>
      <description>&lt;p&gt;
Jay Kimble posted recently about &lt;a href="http://codebetter.com/blogs/jay.kimble/archive/2007/07/30/why-does-live-com-search-suck.aspx"&gt;why
live.com search sucks&lt;/a&gt;. In the post Jay talks about his troubles find the download
page for a particular Microsoft product using Microsoft's &lt;a href="http://www.live.com"&gt;live.com&lt;/a&gt; search
engine, ultimately resorting to using Google to get his answer after &lt;a href="http://www.live.com"&gt;live.com&lt;/a&gt; failed.&amp;nbsp;
I generally enjoyed and agreed with the post, however I lost Jay on his final comment:
&lt;/p&gt;
&lt;blockquote dir=ltr style="MARGIN-RIGHT: 0px"&gt; 
&lt;p&gt;
&lt;em&gt;I'm not one to bite the hand that (sort of) feeds me, but come on!!?? &amp;nbsp;The
best search engine for MS' properties should be an MS Search Engine!!&lt;/em&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p dir=ltr&gt;
In principal I agree, but I wholeheartedly disagree that the MS engine should be best
for MS properties simply because they are MS properties.&amp;nbsp; &lt;strong&gt;The Microsoft
engine should be the best at finding MS Properties because it's the best engine.&amp;nbsp; &lt;/strong&gt;PERIOD.&amp;nbsp;
As Jay pointed out this simply wasn't the case.
&lt;/p&gt;
&lt;p dir=ltr&gt;
Google is dominant because of the quality of the result the engine provides.&amp;nbsp;
If Microsoft operated as Jay suggests, my search for "Blue Shoes" could possibly return
"Indigo" results at the top or a search for "Whales" returning a link to the latest
download of Orcas, clearly not what I want in either case.&amp;nbsp; If live.com is to
be the best resource for searching for MS properties it should solely be because of
the quality of the backing algorithm and not some artificial elevation because it's
MS owned as Jay suggests.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=95496b3b-2b21-4ff9-a8e7-08dbad8a8775" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,95496b3b-2b21-4ff9-a8e7-08dbad8a8775.aspx</comments>
      <category>Musings</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>