<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" version="2.0">
  <channel>
    <title>CamTheGeek.com - Programming</title>
    <link>http://www.camthegeek.com/blog/</link>
    <description>Cam Soper's Blog</description>
    <language>en-us</language>
    <copyright>Cam Soper</copyright>
    <lastBuildDate>Sun, 30 Aug 2009 02:07:27 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 1.9.6264.0</generator>
    <managingEditor>camthegeek@camthegeek.com</managingEditor>
    <webMaster>camthegeek@camthegeek.com</webMaster>
    <item>
      <trackback:ping>http://www.camthegeek.com/blog/Trackback.aspx?guid=518e9eb1-b1e4-4591-9955-4595aaaa756b</trackback:ping>
      <pingback:server>http://www.camthegeek.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.camthegeek.com/blog/PermaLink,guid,518e9eb1-b1e4-4591-9955-4595aaaa756b.aspx</pingback:target>
      <dc:creator>Cam Soper</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <object width="640" height="385">
          <param name="movie" value="http://www.youtube.com/v/Fas0KUzMWes&amp;hl=en&amp;fs=1&amp;rel=0" />
          <param name="allowFullScreen" value="true" />
          <param name="allowscriptaccess" value="always" />
          <embed src="http://www.youtube.com/v/Fas0KUzMWes&amp;hl=en&amp;fs=1&amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385">
          </embed>
        </object>
        <img width="0" height="0" src="http://www.camthegeek.com/blog/aggbug.ashx?id=518e9eb1-b1e4-4591-9955-4595aaaa756b" />
      </body>
      <title>Optional Parameters in C# 4.0</title>
      <guid isPermaLink="false">http://www.camthegeek.com/blog/PermaLink,guid,518e9eb1-b1e4-4591-9955-4595aaaa756b.aspx</guid>
      <link>http://www.camthegeek.com/blog/OptionalParametersInC40.aspx</link>
      <pubDate>Sun, 30 Aug 2009 02:07:27 GMT</pubDate>
      <description>&lt;object width="640" height="385"&gt;
&lt;param name="movie" value="http://www.youtube.com/v/Fas0KUzMWes&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0"&gt;&gt;
&lt;param name="allowFullScreen" value="true"&gt;&gt;
&lt;param name="allowscriptaccess" value="always"&gt;&gt;&lt;embed src="http://www.youtube.com/v/Fas0KUzMWes&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"&gt;&lt;/embed&gt;
&lt;/object&gt;&lt;img width="0" height="0" src="http://www.camthegeek.com/blog/aggbug.ashx?id=518e9eb1-b1e4-4591-9955-4595aaaa756b" /&gt;</description>
      <category>Programming</category>
    </item>
    <item>
      <trackback:ping>http://www.camthegeek.com/blog/Trackback.aspx?guid=af623d4c-a429-4d18-8598-22c41143dc2d</trackback:ping>
      <pingback:server>http://www.camthegeek.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.camthegeek.com/blog/PermaLink,guid,af623d4c-a429-4d18-8598-22c41143dc2d.aspx</pingback:target>
      <dc:creator>Cam Soper</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Look, I get Microsoft Office Sharepoint Services as a platform.  I get what it
is, what it does, and why it's so cool.  Hell, <a href="http://www.camthegeek.com/blog/HomeFromSleeplessInNY.aspx">Sleepless
in NY</a> was all about MOSS, and it was fun.  But I do need to rant about something.
</p>
        <p>
At Sleepless in NY, <a href="http://home.infusionblogs.com/kguenther/default.aspx">Kurt
Guenther</a>, in his introductory Sharepoint presentation, characterized MOSS
as "Microsoft's Web Platform."  Full stop.  Almost implying that that ASP.NET
developers that didn't build on MOSS were an endangered species, that all .NET web
development would eventually be done on MOSS.  I don't know if that's what he
meant to imply, but that's what I heard.  And I don't buy that.  At least,
not when MOSS has such a painful development story right now.
</p>
        <p>
When I'm developing ASP.NET, I make my changes, I do a build, and I debug.  Wash,
rinse, repeat.  Once I'm in that rhythm, things progress very quickly. 
There's some JIT overhead here and there, but besides that, it's a very smooth process.
</p>
        <p>
When I'm developing on MOSS, however, it's a lot harder.  I make my changes,
deploy to my bin folder (or the GAC), sometimes IISReset, wait forever for the whole
damn thing to JIT.  And then, when I debug, if I set a breakpoint and leave the
code running at a break too long, the entire Sharepoint object model times out or
something and turns null, locking up Sharepoint in the process and requiring another
IISReset to correct.  What a huge pain in the ass.  And all that's assuming
that I'm not dealing with code that requires feature activation or a new site collection
to test.  And don't get me started on the cryptic exceptions.  GAH!
</p>
        <p>
So yes, MOSS brings a lot to the table.  Collaboration, search, business
intelligence, business forms, workflow, content management, and more.  It's an
awesome product.  There's a reason why every headhunter and his brother is looking
high and low for MOSS developers right now - they're in high demand.  But until
the development story improves, I think I'd prefer to wait before calling myself a
MOSS developer.
</p>
        <img width="0" height="0" src="http://www.camthegeek.com/blog/aggbug.ashx?id=af623d4c-a429-4d18-8598-22c41143dc2d" />
      </body>
      <title>The Pain of MOSS</title>
      <guid isPermaLink="false">http://www.camthegeek.com/blog/PermaLink,guid,af623d4c-a429-4d18-8598-22c41143dc2d.aspx</guid>
      <link>http://www.camthegeek.com/blog/ThePainOfMOSS.aspx</link>
      <pubDate>Tue, 11 Sep 2007 05:10:32 GMT</pubDate>
      <description>&lt;p&gt;
Look, I get Microsoft Office Sharepoint Services as a platform.&amp;nbsp; I get what it
is, what it does, and why it's so cool.&amp;nbsp; Hell, &lt;a href="http://www.camthegeek.com/blog/HomeFromSleeplessInNY.aspx"&gt;Sleepless
in NY&lt;/a&gt; was all about MOSS, and it was fun.&amp;nbsp; But I do need to rant about something.
&lt;/p&gt;
&lt;p&gt;
At Sleepless in NY, &lt;a href="http://home.infusionblogs.com/kguenther/default.aspx"&gt;Kurt
Guenther&lt;/a&gt;, in his&amp;nbsp;introductory Sharepoint presentation, characterized MOSS
as "Microsoft's Web Platform."&amp;nbsp; Full stop.&amp;nbsp; Almost implying that that ASP.NET
developers that didn't build on MOSS were an endangered species, that all .NET web
development would eventually be done on MOSS.&amp;nbsp; I don't know if that's what he
meant to imply, but that's what I heard.&amp;nbsp; And I don't buy that.&amp;nbsp; At least,
not when MOSS has such a painful development story right now.
&lt;/p&gt;
&lt;p&gt;
When I'm developing ASP.NET, I make my changes, I do a build, and I debug.&amp;nbsp; Wash,
rinse, repeat.&amp;nbsp; Once I'm in that rhythm, things progress very quickly.&amp;nbsp;
There's some JIT overhead here and there, but besides that, it's a very smooth process.
&lt;/p&gt;
&lt;p&gt;
When I'm developing on MOSS, however, it's a lot harder.&amp;nbsp; I make my changes,
deploy to my bin folder (or the GAC), sometimes IISReset, wait forever for the whole
damn thing to JIT.&amp;nbsp; And then, when I debug, if I set a breakpoint and leave the
code running at a break too long, the entire Sharepoint object model times out or
something and turns null, locking up Sharepoint in the process and requiring another
IISReset to correct.&amp;nbsp; What a huge pain in the ass.&amp;nbsp; And all that's assuming
that I'm not dealing with code that requires feature activation or a new site collection
to test.&amp;nbsp; And don't get me started on the cryptic exceptions.&amp;nbsp; GAH!
&lt;/p&gt;
&lt;p&gt;
So yes, MOSS brings a lot to the table.&amp;nbsp;&amp;nbsp;Collaboration, search, business
intelligence, business forms, workflow, content management, and more.&amp;nbsp; It's an
awesome product.&amp;nbsp; There's a reason why every headhunter and his brother is looking
high and low for MOSS developers right now - they're in high demand.&amp;nbsp; But until
the development story improves, I think I'd prefer to wait before calling myself a
MOSS developer.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.camthegeek.com/blog/aggbug.ashx?id=af623d4c-a429-4d18-8598-22c41143dc2d" /&gt;</description>
      <category>Programming</category>
    </item>
    <item>
      <trackback:ping>http://www.camthegeek.com/blog/Trackback.aspx?guid=0d8a0a12-737d-4f71-8653-60fc183abdee</trackback:ping>
      <pingback:server>http://www.camthegeek.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.camthegeek.com/blog/PermaLink,guid,0d8a0a12-737d-4f71-8653-60fc183abdee.aspx</pingback:target>
      <dc:creator>Cam Soper</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I've been invited to <a href="http://infusion.com/sleeplessinny/">Infusion's Sleepless
in NY training weekend</a>. 
</p>
        <p>
This sounds like a fun little trip, getting to hang out with some geeks, including
one of my personal heroes, <a href="http://www.intellectualhedonism.com/">Carl Franklin</a>. 
SharePoint is a good technology, and while I'm not personally overly excited about
it compared to other technologies (like Silverlight), this is free training, and it's
a great opportunity to network and get my name out there a little.  
</p>
        <p>
And who knows?  Maybe I'll bring home the grand prize, "Insomniac, the developer's
machine that never sleeps..."
</p>
        <img width="0" height="0" src="http://www.camthegeek.com/blog/aggbug.ashx?id=0d8a0a12-737d-4f71-8653-60fc183abdee" />
      </body>
      <title>Sleepless in NY</title>
      <guid isPermaLink="false">http://www.camthegeek.com/blog/PermaLink,guid,0d8a0a12-737d-4f71-8653-60fc183abdee.aspx</guid>
      <link>http://www.camthegeek.com/blog/SleeplessInNY.aspx</link>
      <pubDate>Fri, 24 Aug 2007 20:42:08 GMT</pubDate>
      <description>&lt;p&gt;
I've been invited to &lt;a href="http://infusion.com/sleeplessinny/"&gt;Infusion's Sleepless
in NY training weekend&lt;/a&gt;.&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
This sounds like a fun little trip, getting to hang out with some geeks, including
one of my personal heroes, &lt;a href="http://www.intellectualhedonism.com/"&gt;Carl Franklin&lt;/a&gt;.&amp;nbsp;
SharePoint is a good technology, and while I'm not personally overly excited about
it compared to other technologies (like Silverlight), this is free training, and it's
a great opportunity&amp;nbsp;to network and get&amp;nbsp;my name out there a little.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
And who knows?&amp;nbsp; Maybe I'll bring home the grand prize, "Insomniac, the developer's
machine that never sleeps..."
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.camthegeek.com/blog/aggbug.ashx?id=0d8a0a12-737d-4f71-8653-60fc183abdee" /&gt;</description>
      <category>Programming</category>
    </item>
    <item>
      <trackback:ping>http://www.camthegeek.com/blog/Trackback.aspx?guid=2017ea24-0f52-431a-9c0f-b3057c263e55</trackback:ping>
      <pingback:server>http://www.camthegeek.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.camthegeek.com/blog/PermaLink,guid,2017ea24-0f52-431a-9c0f-b3057c263e55.aspx</pingback:target>
      <dc:creator>Cam Soper</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
This is my first post since starting my new job.  I've been a <em>smidge</em> busy,
as they threw me in immediately on a high-profile project utilizing Microsoft Office
SharePoint Services, and, well, my working knowledge of MOSS was somewhere between
zip and zilch.  That's changed significantly over the past few weeks, and while
I've been hesitant to call myself a MOSS developer, I'm certainly getting my bearings
and starting to kick much ass. 
</p>
        <p>
One problem our team has run into several times is source code control.  Pretty
much everybody on the team was a SourceSafe user and didn't have any experience with
SVN.  I initially balked at this, because, well, SourceSafe sucks.  I advocated
SVN every chance I got, particularly when SourceSafe would eat somebody's changes
or we fought over file contention.  
</p>
        <p>
As luck would have it, the company is in the process of standardizing on SVN, and,
when our VSS repository became obviously too corrupt to be much use, the technical
architect on this project caved to my requests and we switched to SVN. 
</p>
        <p>
The problem with this is, SVN's Copy-Modify-Merge paradigm can be confusing for developers
who are used to Lock-Modify-Unlock.  We've had several occurrences of changes
mysteriously disappearing, and, since I'm the de facto SVN expert on the team, it
was left to me to reconstruct exactly what happened.  To avoid naming names
and pointing fingers, I’ll illustrate with Alice and Bob… 
</p>
        <p>
Let’s start with a file.  We’ll call it Text.txt.  Text.txt looks like this:
</p>
        <table unselectable="on" border="1" cellpadding="2" cellspacing="0" width="200">
          <tbody>
            <tr>
              <td valign="top" width="200">
Revision 1</td>
            </tr>
            <tr>
              <td valign="top" width="200">
                <p>
Foo<br />
Bar<br />
Baz
</p>
              </td>
            </tr>
          </tbody>
        </table>
        <p>
Alice and Bob both did an update and now have Revision 1 as their working copy. 
</p>
        <p>
Alice makes some changes and commits them.  She removes the line “Baz” and adds
“42” and “Don’t Panic”.  She commits her changes as Revision 2.
</p>
        <table unselectable="on" border="1" cellpadding="2" cellspacing="0" width="202">
          <tbody>
            <tr>
              <td valign="top" width="200">
Revision 2</td>
            </tr>
            <tr>
              <td valign="top" width="200">
                <p>
Foo<br />
Bar<br />
42<br />
Don't Panic
</p>
              </td>
            </tr>
          </tbody>
        </table>
        <p>
Bob, meanwhile, makes some changes of his own.  Working with Revision 1 as his
base, he adds “Quux” 
</p>
        <table unselectable="on" border="1" cellpadding="2" cellspacing="0" width="202">
          <tbody>
            <tr>
              <td valign="top" width="200">
Bob’s Working Copy</td>
            </tr>
            <tr>
              <td valign="top" width="200">
                <p>
Foo<br />
Bar<br />
Baz<br />
Quux
</p>
              </td>
            </tr>
          </tbody>
        </table>
        <p>
Before committing, Bob does an update and realizes he has conflicts. 
</p>
        <table unselectable="on" border="0" cellpadding="2" cellspacing="0" width="400">
          <tbody>
            <tr>
              <td valign="top" width="200">
                <table unselectable="on" border="1" cellpadding="2" cellspacing="0" width="202">
                  <tbody>
                    <tr>
                      <td valign="top" width="200">
Revision 2</td>
                    </tr>
                    <tr>
                      <td valign="top" width="200">
                        <p>
Foo<br />
Bar<br /><font color="#ff0000">42<br />
Don't Panic</font></p>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </td>
              <td valign="top" width="200">
                <table unselectable="on" border="1" cellpadding="2" cellspacing="0" width="202">
                  <tbody>
                    <tr>
                      <td valign="top" width="200">
Bob’s Working Copy</td>
                    </tr>
                    <tr>
                      <td valign="top" width="200">
                        <p>
Foo<br />
Bar<br /><font color="#ff0000">Baz<br />
Quux</font></p>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </td>
            </tr>
          </tbody>
        </table>
        <table unselectable="on" border="1" cellpadding="2" cellspacing="0" width="411">
          <tbody>
            <tr>
              <td valign="top" width="409">
Merged Output 
</td>
            </tr>
            <tr>
              <td valign="top" width="409">
                <p>
Foo<br />
Bar<br /><font color="#ff0000">Conflict<br />
Conflict </font></p>
              </td>
            </tr>
          </tbody>
        </table>
        <p>
Now, what I think happened, is Bob made a mistake while merging, and chose to accept
his entire conflict block as the merge output… 
</p>
        <table unselectable="on" border="1" cellpadding="2" cellspacing="0" width="202">
          <tbody>
            <tr>
              <td valign="top" width="200">
Merged Output</td>
            </tr>
            <tr>
              <td valign="top" width="200">
                <p>
Foo<br />
Bar<br />
Baz<br />
Quux
</p>
              </td>
            </tr>
          </tbody>
        </table>
        <p>
Bob then marked his conflicts as resolved and committed this as Revision 3. 
</p>
        <p>
The problem with this is that it <b>negates Alice’s changes – She removed “Baz”, and
she added “42” and “Don’t Panic”.  </b>The next time Alice did an update, she
updated to Revision 3 and <b>the changes she previously made in Revision 2 were missing</b>. 
SVN gets blamed, making Cam look bad for being such a vocal SVN supporter, when it
was really Bob’s fault.  (The “making Cam look bad” part was a joke.  Smile.) 
</p>
        <p>
What Bob <i>should</i> have done was take a good look at the differences between Revision
2 and his working copy…
</p>
        <table unselectable="on" border="0" cellpadding="2" cellspacing="0" width="400">
          <tbody>
            <tr>
              <td valign="top" width="200">
                <table unselectable="on" border="1" cellpadding="2" cellspacing="0" width="202">
                  <tbody>
                    <tr>
                      <td valign="top" width="200">
Revision 2</td>
                    </tr>
                    <tr>
                      <td valign="top" width="200">
                        <p>
Foo<br />
Bar<br /><font color="#ff0000">42<br />
Don't Panic</font></p>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </td>
              <td valign="top" width="200">
                <table unselectable="on" border="1" cellpadding="2" cellspacing="0" width="202">
                  <tbody>
                    <tr>
                      <td valign="top" width="200">
Bob’s Working Copy</td>
                    </tr>
                    <tr>
                      <td valign="top" width="200">
                        <p>
Foo<br />
Bar<br /><font color="#ff0000">Baz<br />
Quux</font></p>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </td>
            </tr>
          </tbody>
        </table>
        <p>
…and asked himself, “what exactly did I change in my working copy?”  In this
case, Bob did one thing and one thing only: He added “Quux”.  So Bob has to assume
that any other changes to the file were done for a reason.  Somebody <i>wanted</i> “Baz”
removed, and “42” and “Don’t Panic” added.  It’s then incumbent upon Bob to ensure
that <b>only his valid changes are included in the merge</b>.  The resulting
file could have looked like this: 
</p>
        <table unselectable="on" border="1" cellpadding="2" cellspacing="0" width="202">
          <tbody>
            <tr>
              <td valign="top" width="200">
Merged Output</td>
            </tr>
            <tr>
              <td valign="top" width="200">
                <p>
Foo<br />
Bar<br />
42<br />
Don't Panic<br />
Quux
</p>
              </td>
            </tr>
          </tbody>
        </table>
        <p>
The moral of the story: 
</p>
        <p>
Copy-Modify-Merge (like SVN) is more powerful than Lock-Modify-Unlock (like SourceSafe),
but, as Uncle Ben Parker told Peter Parker, “With great power comes great responsibility.” 
When you merge and commit, you have some responsibilities to live up to: 
</p>
        <p>
Update frequently. 
</p>
        <p>
When you merge, <b>be sure you are not removing someone else’s important changes,
and that you are only merging in the changes that you made that are relevant</b>.  
</p>
        <p>
When you commit, always <b>read the file list</b> to ensure you are not inadvertently
committing changes to a file you did not mean to modify.  Also, it helps to do
a <b>diff of each file in the file list</b> to be sure you are only committing code
changes you mean to commit. 
</p>
        <p>
Good luck!
</p>
        <img width="0" height="0" src="http://www.camthegeek.com/blog/aggbug.ashx?id=2017ea24-0f52-431a-9c0f-b3057c263e55" />
      </body>
      <title>Yes, SVN Really is Better than VSS</title>
      <guid isPermaLink="false">http://www.camthegeek.com/blog/PermaLink,guid,2017ea24-0f52-431a-9c0f-b3057c263e55.aspx</guid>
      <link>http://www.camthegeek.com/blog/YesSVNReallyIsBetterThanVSS.aspx</link>
      <pubDate>Fri, 03 Aug 2007 19:01:47 GMT</pubDate>
      <description>&lt;p&gt;
This is my first post since starting my new job.&amp;nbsp; I've been a &lt;em&gt;smidge&lt;/em&gt; busy,
as they threw me in immediately on a high-profile project utilizing Microsoft Office
SharePoint Services, and, well, my working knowledge of MOSS was somewhere between
zip and zilch.&amp;nbsp; That's changed significantly over the past few weeks, and while
I've been hesitant to call myself a MOSS developer, I'm certainly getting my bearings
and starting to kick much ass. 
&lt;/p&gt;
&lt;p&gt;
One problem our team has run into several times is source code control.&amp;nbsp; Pretty
much everybody on the team was a SourceSafe user and didn't have any experience with
SVN.&amp;nbsp; I initially balked at this, because, well, SourceSafe sucks.&amp;nbsp; I advocated
SVN every chance I got, particularly when SourceSafe would eat somebody's changes
or we fought over file contention.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
As luck would have it, the company is in the process of standardizing on SVN, and,
when our VSS repository became obviously too corrupt to be much use, the technical
architect on this project caved to my requests and we switched to SVN. 
&lt;/p&gt;
&lt;p&gt;
The problem with this is, SVN's Copy-Modify-Merge paradigm can be confusing for developers
who are used to Lock-Modify-Unlock.&amp;nbsp; We've had several occurrences of changes
mysteriously disappearing, and, since I'm the de facto SVN expert on the team, it
was left to me to&amp;nbsp;reconstruct exactly what happened.&amp;nbsp; To avoid naming names
and pointing fingers, I’ll illustrate with Alice and Bob… 
&lt;/p&gt;
&lt;p&gt;
Let’s start with a file.&amp;nbsp; We’ll call it Text.txt.&amp;nbsp; Text.txt looks like this:
&lt;/p&gt;
&lt;table unselectable="on" border="1" cellpadding="2" cellspacing="0" width="200"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="200"&gt;
Revision 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="200"&gt;
&lt;p&gt;
Foo&lt;br&gt;
Bar&lt;br&gt;
Baz
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;
Alice and Bob both did an update and now have Revision 1 as their working copy. 
&lt;/p&gt;
&lt;p&gt;
Alice makes some changes and commits them.&amp;nbsp; She removes the line “Baz” and adds
“42” and “Don’t Panic”.&amp;nbsp; She commits her changes as Revision 2.
&lt;/p&gt;
&lt;table unselectable="on" border="1" cellpadding="2" cellspacing="0" width="202"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="200"&gt;
Revision 2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="200"&gt;
&lt;p&gt;
Foo&lt;br&gt;
Bar&lt;br&gt;
42&lt;br&gt;
Don't Panic
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;
Bob, meanwhile, makes some changes of his own.&amp;nbsp; Working with Revision 1 as his
base, he adds “Quux” 
&lt;/p&gt;
&lt;table unselectable="on" border="1" cellpadding="2" cellspacing="0" width="202"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="200"&gt;
Bob’s Working Copy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="200"&gt;
&lt;p&gt;
Foo&lt;br&gt;
Bar&lt;br&gt;
Baz&lt;br&gt;
Quux
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;
Before committing, Bob does an update and realizes he has conflicts. 
&lt;/p&gt;
&lt;table unselectable="on" border="0" cellpadding="2" cellspacing="0" width="400"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="200"&gt;
&lt;table unselectable="on" border="1" cellpadding="2" cellspacing="0" width="202"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="200"&gt;
Revision 2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="200"&gt;
&lt;p&gt;
Foo&lt;br&gt;
Bar&lt;br&gt;
&lt;font color="#ff0000"&gt;42&lt;br&gt;
Don't Panic&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/td&gt;
&lt;td valign="top" width="200"&gt;
&lt;table unselectable="on" border="1" cellpadding="2" cellspacing="0" width="202"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="200"&gt;
Bob’s Working Copy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="200"&gt;
&lt;p&gt;
Foo&lt;br&gt;
Bar&lt;br&gt;
&lt;font color="#ff0000"&gt;Baz&lt;br&gt;
Quux&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table unselectable="on" border="1" cellpadding="2" cellspacing="0" width="411"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="409"&gt;
Merged Output 
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="409"&gt;
&lt;p&gt;
Foo&lt;br&gt;
Bar&lt;br&gt;
&lt;font color="#ff0000"&gt;Conflict&lt;br&gt;
Conflict &lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;
Now, what I think happened, is Bob made a mistake while merging, and chose to accept
his entire conflict block as the merge output… 
&lt;/p&gt;
&lt;table unselectable="on" border="1" cellpadding="2" cellspacing="0" width="202"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="200"&gt;
Merged Output&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="200"&gt;
&lt;p&gt;
Foo&lt;br&gt;
Bar&lt;br&gt;
Baz&lt;br&gt;
Quux
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;
Bob then marked his conflicts as resolved and committed this as Revision 3. 
&lt;/p&gt;
&lt;p&gt;
The problem with this is that it &lt;b&gt;negates Alice’s changes – She removed “Baz”, and
she added “42” and “Don’t Panic”.&amp;nbsp; &lt;/b&gt;The next time Alice did an update, she
updated to Revision 3 and &lt;b&gt;the changes she previously made in Revision 2 were missing&lt;/b&gt;.&amp;nbsp;
SVN gets blamed, making Cam look bad for being such a vocal SVN supporter, when it
was really Bob’s fault.&amp;nbsp; (The “making Cam look bad” part was a joke.&amp;nbsp; Smile.) 
&lt;/p&gt;
&lt;p&gt;
What Bob &lt;i&gt;should&lt;/i&gt; have done was take a good look at the differences between Revision
2 and his working copy…
&lt;/p&gt;
&lt;table unselectable="on" border="0" cellpadding="2" cellspacing="0" width="400"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="200"&gt;
&lt;table unselectable="on" border="1" cellpadding="2" cellspacing="0" width="202"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="200"&gt;
Revision 2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="200"&gt;
&lt;p&gt;
Foo&lt;br&gt;
Bar&lt;br&gt;
&lt;font color="#ff0000"&gt;42&lt;br&gt;
Don't Panic&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/td&gt;
&lt;td valign="top" width="200"&gt;
&lt;table unselectable="on" border="1" cellpadding="2" cellspacing="0" width="202"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="200"&gt;
Bob’s Working Copy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="200"&gt;
&lt;p&gt;
Foo&lt;br&gt;
Bar&lt;br&gt;
&lt;font color="#ff0000"&gt;Baz&lt;br&gt;
Quux&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;
…and asked himself, “what exactly did I change in my working copy?”&amp;nbsp; In this
case, Bob did one thing and one thing only: He added “Quux”.&amp;nbsp; So Bob has to assume
that any other changes to the file were done for a reason.&amp;nbsp; Somebody &lt;i&gt;wanted&lt;/i&gt; “Baz”
removed, and “42” and “Don’t Panic” added.&amp;nbsp; It’s then incumbent upon Bob to ensure
that &lt;b&gt;only his valid changes are included in the merge&lt;/b&gt;.&amp;nbsp; The resulting
file could have looked like this: 
&lt;/p&gt;
&lt;table unselectable="on" border="1" cellpadding="2" cellspacing="0" width="202"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="200"&gt;
Merged Output&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="200"&gt;
&lt;p&gt;
Foo&lt;br&gt;
Bar&lt;br&gt;
42&lt;br&gt;
Don't Panic&lt;br&gt;
Quux
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;
The moral of the story: 
&lt;/p&gt;
&lt;p&gt;
Copy-Modify-Merge (like SVN) is more powerful than Lock-Modify-Unlock (like SourceSafe),
but, as Uncle&amp;nbsp;Ben Parker told Peter Parker, “With great power comes great responsibility.”&amp;nbsp;
When you merge and commit, you have some responsibilities to live up to: 
&lt;/p&gt;
&lt;p&gt;
Update frequently. 
&lt;/p&gt;
&lt;p&gt;
When you merge, &lt;b&gt;be sure you are not removing someone else’s important changes,
and that you are only merging in the changes that you made that are relevant&lt;/b&gt;.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
When you commit, always &lt;b&gt;read the file list&lt;/b&gt; to ensure you are not inadvertently
committing changes to a file you did not mean to modify.&amp;nbsp; Also, it helps to do
a &lt;b&gt;diff of each file in the file list&lt;/b&gt; to be sure you are only committing code
changes you mean to commit. 
&lt;/p&gt;
&lt;p&gt;
Good luck!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.camthegeek.com/blog/aggbug.ashx?id=2017ea24-0f52-431a-9c0f-b3057c263e55" /&gt;</description>
      <category>Programming</category>
    </item>
    <item>
      <trackback:ping>http://www.camthegeek.com/blog/Trackback.aspx?guid=49ac58e2-e0a7-4492-ab8e-7d0c35c97073</trackback:ping>
      <pingback:server>http://www.camthegeek.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.camthegeek.com/blog/PermaLink,guid,49ac58e2-e0a7-4492-ab8e-7d0c35c97073.aspx</pingback:target>
      <dc:creator>Cam Soper</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
There's been a lot of chatter lately about the so-called Alpha Geek, and his <a href="http://www.hanselman.com/blog/IsMicrosoftLosingTheAlphaGeeks.aspx">perceived
exodus away from .NET</a>.  This strikes home for me, because I'm an Alpha Geek
who is madly in love with .NET as a platform.  I see and understand some of the
new "in" languages and platforms for Alpha Geeks (particularly Ruby and Ruby on Rails),
but really, I'm just not all that interested right at the moment.  Scott
Hanselman talks about the beauty of Ruby, but I see just as much poetic
beauty in well-written C#.  And when you consider the great things coming
out of Microsoft lately, like WPF, WF, WCF, etc., and the great things coming soon
(Orcas, Silverlight, Acropolis, LINQ), .NET is such a compelling platform.
</p>
        <p>
But this <a href="http://weblogs.asp.net/nunitaddin/archive/2007/06/07/microsoft-vs-testdriven-net-06-june-2007.aspx">whole
TestDriven.NET thing</a> has got me concerned.  For the unfamiliar, a major contributor
in the open source community is getting leaned on hard by Microsoft for a perceived
violation of the Visual C# Express EULA.  Basically, he made an add-in that supports <em>all</em> versions
of Visual Studio, including the Express SKUs.  And Microsoft's lawyers claim
that distributing add-ins for the Express SKUs is a no-no.  
</p>
        <p>
This is already creating a significant <a href="http://blog.wekeroad.com/archive/2007/06/16/im-a-litte-freaked-out.aspx">chilling
effect</a> throughout the community, and is undoubtedly going to push a lot of people
away from .NET too.  It's a shame, too, because the development tools teams in
Microsoft clearly get who their strongest supporters are.  Look at all the
great ways Microsoft has engaged the developer community:  Codeplex, Channel
9, shared source projects like the ASP.NET Ajax Control Toolkit, supporting Silverlight
on multiple platforms, and more to come.  They know that when the Alpha Geek
feels engaged and empowered, he will evangelize the platform for them.  But the
lawyers don't get that;  And to be completely fair, <strong>Microsoft's legal
department can't be selective about EULA enforcement, or they lose much of their power
in cases of genuine EULA violations</strong>.  
</p>
        <p>
It sucks for everyone.  It sucks for the people in Microsoft who are watching
their good will in the developer community get pissed away by the soulless lawyers,
it sucks for open source developers like Rob Conery and Jamie Cansdale, but most of
all, it sucks for the Alpha Geek who can do nothing but stand by and watch the train
wreck unfold.  
</p>
        <img width="0" height="0" src="http://www.camthegeek.com/blog/aggbug.ashx?id=49ac58e2-e0a7-4492-ab8e-7d0c35c97073" />
      </body>
      <title>Can't We All Just Get Along?</title>
      <guid isPermaLink="false">http://www.camthegeek.com/blog/PermaLink,guid,49ac58e2-e0a7-4492-ab8e-7d0c35c97073.aspx</guid>
      <link>http://www.camthegeek.com/blog/CantWeAllJustGetAlong.aspx</link>
      <pubDate>Sun, 17 Jun 2007 06:33:49 GMT</pubDate>
      <description>&lt;p&gt;
There's been a lot of chatter lately about the so-called Alpha Geek, and his &lt;a href="http://www.hanselman.com/blog/IsMicrosoftLosingTheAlphaGeeks.aspx"&gt;perceived
exodus away from .NET&lt;/a&gt;.&amp;nbsp; This strikes home for me, because I'm an Alpha Geek
who is madly in love with .NET as a platform.&amp;nbsp; I see and understand some of the
new "in" languages and platforms for Alpha Geeks (particularly Ruby and Ruby on Rails),
but really, I'm just not all that interested right at the moment.&amp;nbsp;&amp;nbsp;Scott
Hanselman talks&amp;nbsp;about the&amp;nbsp;beauty of Ruby, but I see&amp;nbsp;just as much&amp;nbsp;poetic
beauty in well-written&amp;nbsp;C#.&amp;nbsp; And when you consider the great things coming
out of Microsoft lately, like WPF, WF, WCF, etc., and the great things coming soon
(Orcas, Silverlight, Acropolis, LINQ), .NET is such a compelling platform.
&lt;/p&gt;
&lt;p&gt;
But this &lt;a href="http://weblogs.asp.net/nunitaddin/archive/2007/06/07/microsoft-vs-testdriven-net-06-june-2007.aspx"&gt;whole
TestDriven.NET thing&lt;/a&gt; has got me concerned.&amp;nbsp; For the unfamiliar, a major contributor
in the open source community is getting leaned on hard by Microsoft for a perceived
violation of the Visual C# Express EULA.&amp;nbsp; Basically, he made an add-in that supports &lt;em&gt;all&lt;/em&gt; versions
of Visual Studio, including the Express SKUs.&amp;nbsp; And Microsoft's lawyers claim
that distributing add-ins for the Express SKUs is a no-no.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
This is already creating a significant &lt;a href="http://blog.wekeroad.com/archive/2007/06/16/im-a-litte-freaked-out.aspx"&gt;chilling
effect&lt;/a&gt; throughout the community, and is undoubtedly going to push a lot of people
away from .NET too.&amp;nbsp; It's a shame, too, because the development tools teams in
Microsoft clearly get who their strongest&amp;nbsp;supporters are.&amp;nbsp; Look at all the
great ways Microsoft has engaged the developer community:&amp;nbsp; Codeplex, Channel
9, shared source projects like the ASP.NET Ajax Control Toolkit, supporting Silverlight
on multiple platforms, and more to come.&amp;nbsp; They know that when the Alpha Geek
feels engaged and empowered, he will evangelize the platform for them.&amp;nbsp; But the
lawyers don't get that;&amp;nbsp; And to be completely fair, &lt;strong&gt;Microsoft's legal
department can't be selective about EULA enforcement, or they lose much of their power
in cases of genuine EULA violations&lt;/strong&gt;.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
It sucks for everyone.&amp;nbsp; It sucks for the people in Microsoft who are watching
their good will in the developer community get pissed away by the soulless lawyers,
it sucks for open source developers like Rob Conery and Jamie Cansdale, but most of
all, it sucks for the Alpha Geek who can do nothing but stand by and watch the train
wreck unfold.&amp;nbsp; 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.camthegeek.com/blog/aggbug.ashx?id=49ac58e2-e0a7-4492-ab8e-7d0c35c97073" /&gt;</description>
      <category>Programming</category>
    </item>
    <item>
      <trackback:ping>http://www.camthegeek.com/blog/Trackback.aspx?guid=b9a36d4f-7bdf-48ac-94cc-c2ef34f58e0a</trackback:ping>
      <pingback:server>http://www.camthegeek.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.camthegeek.com/blog/PermaLink,guid,b9a36d4f-7bdf-48ac-94cc-c2ef34f58e0a.aspx</pingback:target>
      <dc:creator>Cam Soper</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I stole this from <a href="http://netcave.org/PermaLink,guid,9c7bb768-2b6d-42dc-9a48-e3b0efecfa7b.aspx">Alan
Stevens</a>, but it's fun and surprisingly true.  Here are the results of my <a href="http://www.doolwind.com/index.php?page=11">Programmer
Personality Test</a>...
</p>
        <p>
          <strong>DHSB</strong>
        </p>
        <p>
          <strong>You're a Doer. 
<br /></strong>You are very quick at getting tasks done. You believe the outcome is the
most important part of a task and the faster you can reach that outcome the better.
After all, time is money. 
</p>
        <p>
          <strong>You like coding at a High level. </strong>
          <br />
The world is made up of objects and components, you should create your programs in
the same way. 
</p>
        <p>
          <strong>You work best in a Solo situation. 
<br /></strong>The best way to program is by yourself. There's no communication problems,
you know every part of the code allowing you to write the best programs possible. 
</p>
        <p>
          <strong>You are a liBeral programmer. 
<br /></strong>Programming is a complex task and you should use white space and comments
as freely as possible to help simplify the task. We're not writing on paper anymore
so we can take up as much room as we need.
</p>
        <img width="0" height="0" src="http://www.camthegeek.com/blog/aggbug.ashx?id=b9a36d4f-7bdf-48ac-94cc-c2ef34f58e0a" />
      </body>
      <title>What's Your Programmer Personality Type?</title>
      <guid isPermaLink="false">http://www.camthegeek.com/blog/PermaLink,guid,b9a36d4f-7bdf-48ac-94cc-c2ef34f58e0a.aspx</guid>
      <link>http://www.camthegeek.com/blog/WhatsYourProgrammerPersonalityType.aspx</link>
      <pubDate>Wed, 13 Jun 2007 18:32:04 GMT</pubDate>
      <description>&lt;p&gt;
I stole this from &lt;a href="http://netcave.org/PermaLink,guid,9c7bb768-2b6d-42dc-9a48-e3b0efecfa7b.aspx"&gt;Alan
Stevens&lt;/a&gt;, but it's fun and surprisingly true.&amp;nbsp; Here are the results of my &lt;a href="http://www.doolwind.com/index.php?page=11"&gt;Programmer
Personality Test&lt;/a&gt;...
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;DHSB&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;You're a Doer. 
&lt;br&gt;
&lt;/strong&gt;You are very quick at getting tasks done. You believe the outcome is the
most important part of a task and the faster you can reach that outcome the better.
After all, time is money. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;You like coding at a High level. &lt;/strong&gt;
&lt;br&gt;
The world is made up of objects and components, you should create your programs in
the same way. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;You work best in a Solo situation. 
&lt;br&gt;
&lt;/strong&gt;The best way to program is by yourself. There's no communication problems,
you know every part of the code allowing you to write the best programs possible. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;You are a liBeral programmer. 
&lt;br&gt;
&lt;/strong&gt;Programming is a complex task and you should use white space and comments
as freely as possible to help simplify the task. We're not writing on paper anymore
so we can take up as much room as we need.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.camthegeek.com/blog/aggbug.ashx?id=b9a36d4f-7bdf-48ac-94cc-c2ef34f58e0a" /&gt;</description>
      <category>Programming</category>
    </item>
    <item>
      <trackback:ping>http://www.camthegeek.com/blog/Trackback.aspx?guid=a92926cc-7c57-414b-b231-0c70aaaf935c</trackback:ping>
      <pingback:server>http://www.camthegeek.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.camthegeek.com/blog/PermaLink,guid,a92926cc-7c57-414b-b231-0c70aaaf935c.aspx</pingback:target>
      <dc:creator>Cam Soper</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
As anybody who works with me will tell you, I'm a big fan of <a href="http://www.corillian.com">Corillian</a>. 
Our online banking system at Commerce is built on their platform, and much of my life
revolves around that platform and its accompanying development tools.  I'm especially
a fan of Corillian's Chief Software Architect, <a href="http://www.computerzen.com">Scott
Hanselman</a>, but at a recent conference I got to chat with another highly-respected architect
at Corillian, <a href="http://www.cauldwell.net/patrick/blog/">Patrick Cauldwell</a>.
</p>
        <p>
Patrick has been working on a project using a security architecture called <a href="http://msdn.microsoft.com/msdnmag/issues/03/11/AuthorizationManager/">AzMan</a>. 
When he recently had difficulty navigating a technical hurdle, I made a suggestion
that Patrick <a href="http://www.cauldwell.net/patrick/blog/ImplementingDenialsInAzMan.aspx">ultimately
used as a basis for resolving the issue</a>.
</p>
        <p>
I couldn't be happier that, in some small way, I got to influence the design
of a product that I will likely be using every day.  How often does one get to
say that?
</p>
        <p>
Thank you for giving me that opportunity, Patrick!
</p>
        <img width="0" height="0" src="http://www.camthegeek.com/blog/aggbug.ashx?id=a92926cc-7c57-414b-b231-0c70aaaf935c" />
      </body>
      <title>Just Glad I Could Help</title>
      <guid isPermaLink="false">http://www.camthegeek.com/blog/PermaLink,guid,a92926cc-7c57-414b-b231-0c70aaaf935c.aspx</guid>
      <link>http://www.camthegeek.com/blog/JustGladICouldHelp.aspx</link>
      <pubDate>Wed, 18 Apr 2007 23:43:23 GMT</pubDate>
      <description>&lt;p&gt;
As anybody who works with me will tell you, I'm a big fan of &lt;a href="http://www.corillian.com"&gt;Corillian&lt;/a&gt;.&amp;nbsp;
Our online banking system at Commerce is built on their platform, and much of my life
revolves around that platform and its accompanying development tools.&amp;nbsp; I'm especially
a fan of Corillian's Chief Software Architect, &lt;a href="http://www.computerzen.com"&gt;Scott
Hanselman&lt;/a&gt;, but at a recent conference I got to chat with another highly-respected&amp;nbsp;architect
at Corillian, &lt;a href="http://www.cauldwell.net/patrick/blog/"&gt;Patrick Cauldwell&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Patrick has been working on a project using a security architecture called &lt;a href="http://msdn.microsoft.com/msdnmag/issues/03/11/AuthorizationManager/"&gt;AzMan&lt;/a&gt;.&amp;nbsp;
When he recently had difficulty navigating a technical hurdle, I made a suggestion
that Patrick &lt;a href="http://www.cauldwell.net/patrick/blog/ImplementingDenialsInAzMan.aspx"&gt;ultimately
used as a basis for resolving the issue&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
I couldn't be happier that, in some small way,&amp;nbsp;I got to influence the design
of a product that I will likely be using every day.&amp;nbsp; How often does one get to
say that?
&lt;/p&gt;
&lt;p&gt;
Thank you for giving me that opportunity, Patrick!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.camthegeek.com/blog/aggbug.ashx?id=a92926cc-7c57-414b-b231-0c70aaaf935c" /&gt;</description>
      <category>Programming</category>
    </item>
    <item>
      <trackback:ping>http://www.camthegeek.com/blog/Trackback.aspx?guid=bb93e705-b2a8-4fe8-bf45-85b6c905f7aa</trackback:ping>
      <pingback:server>http://www.camthegeek.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.camthegeek.com/blog/PermaLink,guid,bb93e705-b2a8-4fe8-bf45-85b6c905f7aa.aspx</pingback:target>
      <dc:creator>Cam Soper</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Hey, Jeff Atwood <a href="http://www.codinghorror.com/blog/archives/000830.html">latched
onto the same metaphor I did</a> - Cockburn's "rock climbing" metaphor.
</p>
        <p>
I really love this metaphor for all the same reasons as Jeff.  What I'm trying
to figure out is if "programming as a game" - e.g., Cockburn's "Crystal" approach,
can fit within a pre-existing methodolgy.
</p>
        <p>
Here at Commerce, the overall online banking team, that is, QA, development,
and project management, already use a methodology based <em>very</em> loosely
on Scrum.  I can't expect QA and project management to embrace anything new,
especially since so much work has gone into acceptance of the current methodology. 
But can the developers adopt this new methodology and integrate it into the existing
one?
</p>
        <img width="0" height="0" src="http://www.camthegeek.com/blog/aggbug.ashx?id=bb93e705-b2a8-4fe8-bf45-85b6c905f7aa" />
      </body>
      <title>More Rock Programming-Climbing</title>
      <guid isPermaLink="false">http://www.camthegeek.com/blog/PermaLink,guid,bb93e705-b2a8-4fe8-bf45-85b6c905f7aa.aspx</guid>
      <link>http://www.camthegeek.com/blog/MoreRockProgrammingClimbing.aspx</link>
      <pubDate>Mon, 02 Apr 2007 16:14:03 GMT</pubDate>
      <description>&lt;p&gt;
Hey, Jeff Atwood &lt;a href="http://www.codinghorror.com/blog/archives/000830.html"&gt;latched
onto the same metaphor I did&lt;/a&gt; - Cockburn's "rock climbing" metaphor.
&lt;/p&gt;
&lt;p&gt;
I really love this metaphor for all the same reasons as Jeff.&amp;nbsp; What I'm trying
to figure out is if "programming as a game" - e.g., Cockburn's "Crystal" approach,
can fit within a pre-existing methodolgy.
&lt;/p&gt;
&lt;p&gt;
Here at Commerce,&amp;nbsp;the overall online banking team, that is, QA, development,
and project management,&amp;nbsp;already use a methodology based &lt;em&gt;very&lt;/em&gt; loosely
on Scrum.&amp;nbsp; I can't expect QA and project management to embrace anything new,
especially since so much work has gone into acceptance of the current methodology.&amp;nbsp;
But can the developers adopt this new methodology and integrate it into the existing
one?
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.camthegeek.com/blog/aggbug.ashx?id=bb93e705-b2a8-4fe8-bf45-85b6c905f7aa" /&gt;</description>
      <category>Programming</category>
    </item>
    <item>
      <trackback:ping>http://www.camthegeek.com/blog/Trackback.aspx?guid=fea44a49-9041-44cd-aed0-6f950d467eb3</trackback:ping>
      <pingback:server>http://www.camthegeek.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.camthegeek.com/blog/PermaLink,guid,fea44a49-9041-44cd-aed0-6f950d467eb3.aspx</pingback:target>
      <dc:creator>Cam Soper</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I've sometimes marveled at how different the code I write today looks when compared
to the code I wrote just a few years ago.  Apparently I'm not alone - Scott Hanselman
just posted about <a href="http://www.hanselman.com/blog/RescuingTheTinyOSInC.aspx">rescuing
his C#-based TinyOS from the doom of GotDotNet</a>, commenting that he was "shocked
and offended" with himself after review the code a few years later.  Man, I know
that feeling.  Here's the comment I posted to Scott:
</p>
        <p>
          <em>Hey Scott, nice new theme! I apparently missed the rollout of it since I usually
read everything via my feed reader.</em>
        </p>
        <p>
          <em>I have to take the bait on your comment about telling you how our five year old
code looks. Five years ago, I would have been at Commerce Bank for a little over a
year, and hoo-boy, did I write some embarrassingly bad classic ASP and VB in that
era. Those first couple years at Commerce were a crash course for me in a lot of things
- web technology, pseudo-OOP (realizing that we're talking about VB 6), COM, enterprise
development, etc. Five years later, I can say with confidence that this code is amazingly
bad; Especially anything where I tried to use XML for no reason other than because
it's what the cool kids were doing at the time. Any of the code I wrote in that timeframe
should be treated as hazardous material and properly disposed of. Thankfully, the
programmers who maintain that application today have long since replaced most of my
offending code - except the nifty little VB app I wrote to bridge our contact center
softphones to our ASP-based web app via DDE. </em>
        </p>
        <p>
          <em>Prior to coming to Commerce, my start was as a subcontractor for an independent
consultant who had a thing for XBase languages. When I started as his apprentice at
the age of 12, it was Clipper. Then FoxPro 2.6 for Windows. Then Visual FoxPro 3.0,
5.0, and, by the time I graduated from college and went to work for him full time,
Visual FoxPro 6.0. If I were to look around my home office today, I could probably
find some code left over from that bygone era, but that begs the question: Why on
Earth would I want to? :)</em>
        </p>
        <img width="0" height="0" src="http://www.camthegeek.com/blog/aggbug.ashx?id=fea44a49-9041-44cd-aed0-6f950d467eb3" />
      </body>
      <title>Does Your Legacy Code Stand the Test of Time?</title>
      <guid isPermaLink="false">http://www.camthegeek.com/blog/PermaLink,guid,fea44a49-9041-44cd-aed0-6f950d467eb3.aspx</guid>
      <link>http://www.camthegeek.com/blog/DoesYourLegacyCodeStandTheTestOfTime.aspx</link>
      <pubDate>Mon, 02 Apr 2007 15:27:44 GMT</pubDate>
      <description>&lt;p&gt;
I've sometimes marveled at how different the code I write today looks when compared
to the code I wrote just a few years ago.&amp;nbsp; Apparently I'm not alone - Scott Hanselman
just posted about &lt;a href="http://www.hanselman.com/blog/RescuingTheTinyOSInC.aspx"&gt;rescuing
his C#-based TinyOS from the doom of GotDotNet&lt;/a&gt;, commenting that he was "shocked
and offended" with himself after review the code a few years later.&amp;nbsp; Man, I know
that feeling.&amp;nbsp; Here's the comment I posted to Scott:
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;Hey Scott, nice new theme! I apparently missed the rollout of it since I usually
read everything via my feed reader.&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;I have to take the bait on your comment about telling you how our five year old
code looks. Five years ago, I would have been at Commerce Bank for a little over a
year, and hoo-boy, did I write some embarrassingly bad classic ASP and VB in that
era. Those first couple years at Commerce were a crash course for me in a lot of things
- web technology, pseudo-OOP (realizing that we're talking about VB 6), COM, enterprise
development, etc. Five years later, I can say with confidence that this code is amazingly
bad; Especially anything where I tried to use XML for no reason other than because
it's what the cool kids were doing at the time. Any of the code I wrote in that timeframe
should be treated as hazardous material and properly disposed of. Thankfully, the
programmers who maintain that application today have long since replaced most of my
offending code - except the nifty little VB app I wrote to bridge our contact center
softphones to our ASP-based web app via DDE. &lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;Prior to coming to Commerce, my start was as a subcontractor for an independent
consultant who had a thing for XBase languages. When I started as his apprentice at
the age of 12, it was Clipper. Then FoxPro 2.6 for Windows. Then Visual FoxPro 3.0,
5.0, and, by the time I graduated from college and went to work for him full time,
Visual FoxPro 6.0. If I were to look around my home office today, I could probably
find some code left over from that bygone era, but that begs the question: Why on
Earth would I want to? :)&lt;/em&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.camthegeek.com/blog/aggbug.ashx?id=fea44a49-9041-44cd-aed0-6f950d467eb3" /&gt;</description>
      <category>Programming</category>
    </item>
    <item>
      <trackback:ping>http://www.camthegeek.com/blog/Trackback.aspx?guid=9f44410e-b878-4b83-8448-3f175ef58f1b</trackback:ping>
      <pingback:server>http://www.camthegeek.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.camthegeek.com/blog/PermaLink,guid,9f44410e-b878-4b83-8448-3f175ef58f1b.aspx</pingback:target>
      <dc:creator>Cam Soper</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Somehow, I've failed to add <a href="http://www.codinghorror.com/blog/">Jeff Atwood</a> to
my blogroll before today.  That seems odd to me, since I'm a huge <a href="http://www.computerzen.com/">Scott
Hanselman</a> fan, and Scott gives mad props to Jeff all the time, jokingly referring
to him as his Nemesis.  (Side note:  I don't know that Nemesis is the mythological
character I would choose, Scott.  I think him being Pollux to your Castor
is more appropriate, but I digress...)
</p>
        <p>
So I added Jeff to my blogroll today, and the very first post to come across my reader
is a <a href="http://www.codinghorror.com/blog/archives/000826.html">discussion</a> on
Alistair Cockburn's "<a href="http://alistair.cockburn.us/index.php/Software_development_as_a_cooperative_game">Software
Development as a Cooperative Game</a>" presentation.  This is <em>not</em> light
reading, but it is fascinating.
</p>
        <p>
The basic premise is that software development can be viewed as an ongoing, cooperative
game, not unlike rock climbing.  Other than the obvious implications of making
your work more meaningful than "I do this to get paid," I think this model provides
a lot of value, not just in making your own career more rewarding, but also in
building a team that can trust each other and build on each others' strengths and
weaknesses.
</p>
        <p>
As we've worked to build our online banking development team at Commerce, we've struggled
a bit with team dynamics.  Basically, what it comes down to is, as I assert my
role as a technical lead, I sometimes have a tendency to be an impatient condescending
jerk.  Having identified that as my weakness, and applying the "rock climbing"
metaphor, it should be easier for me to understand and curb that behavior. 
We can't all climb rock walls at the same speed, or using the same tools, or over
the same paths.  Condescending to someone isn't going to help them traverse the
wall any quicker;  It's just going to make them want to throw me off the cliff.
</p>
        <img width="0" height="0" src="http://www.camthegeek.com/blog/aggbug.ashx?id=9f44410e-b878-4b83-8448-3f175ef58f1b" />
      </body>
      <title>Software Development as a Game?</title>
      <guid isPermaLink="false">http://www.camthegeek.com/blog/PermaLink,guid,9f44410e-b878-4b83-8448-3f175ef58f1b.aspx</guid>
      <link>http://www.camthegeek.com/blog/SoftwareDevelopmentAsAGame.aspx</link>
      <pubDate>Fri, 30 Mar 2007 23:27:14 GMT</pubDate>
      <description>&lt;p&gt;
Somehow, I've failed to add &lt;a href="http://www.codinghorror.com/blog/"&gt;Jeff Atwood&lt;/a&gt; to
my blogroll before today.&amp;nbsp; That seems odd to me, since I'm a huge &lt;a href="http://www.computerzen.com/"&gt;Scott
Hanselman&lt;/a&gt;&amp;nbsp;fan, and Scott gives mad props to Jeff all the time, jokingly referring
to him as his Nemesis.&amp;nbsp; (Side note:&amp;nbsp; I don't know that Nemesis is the&amp;nbsp;mythological
character&amp;nbsp;I would choose, Scott.&amp;nbsp; I think him being Pollux to your Castor
is more appropriate, but I digress...)
&lt;/p&gt;
&lt;p&gt;
So I added Jeff to my blogroll today, and the very first post to come across my reader
is a &lt;a href="http://www.codinghorror.com/blog/archives/000826.html"&gt;discussion&lt;/a&gt; on
Alistair Cockburn's "&lt;a href="http://alistair.cockburn.us/index.php/Software_development_as_a_cooperative_game"&gt;Software
Development as a Cooperative Game&lt;/a&gt;" presentation.&amp;nbsp; This is &lt;em&gt;not&lt;/em&gt; light
reading, but it is fascinating.
&lt;/p&gt;
&lt;p&gt;
The basic premise is that software development can be viewed as an ongoing, cooperative
game, not unlike rock climbing.&amp;nbsp; Other than the obvious implications of making
your work more meaningful than "I do this to get paid," I think this model provides
a lot of value, not just in making your own career more rewarding,&amp;nbsp;but also in
building a team that can trust each other and build on each others' strengths and
weaknesses.
&lt;/p&gt;
&lt;p&gt;
As we've worked to build our online banking development team at Commerce, we've struggled
a bit with team dynamics.&amp;nbsp; Basically, what it comes down to is, as I assert my
role as a technical lead, I sometimes have a tendency to be&amp;nbsp;an impatient condescending
jerk.&amp;nbsp; Having identified that as my weakness, and applying the "rock climbing"
metaphor, it should be easier for me to&amp;nbsp;understand and curb that behavior.&amp;nbsp;
We can't all climb rock walls at the same speed, or using the same tools, or over
the same paths.&amp;nbsp; Condescending to someone isn't going to help them traverse the
wall any quicker; &amp;nbsp;It's just going to make them want to throw me off the cliff.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.camthegeek.com/blog/aggbug.ashx?id=9f44410e-b878-4b83-8448-3f175ef58f1b" /&gt;</description>
      <category>Programming</category>
    </item>
    <item>
      <trackback:ping>http://www.camthegeek.com/blog/Trackback.aspx?guid=6576b920-9ab3-4ec1-bfe4-f76bf13ce407</trackback:ping>
      <pingback:server>http://www.camthegeek.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.camthegeek.com/blog/PermaLink,guid,6576b920-9ab3-4ec1-bfe4-f76bf13ce407.aspx</pingback:target>
      <dc:creator>Cam Soper</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I just read on DotNetKicks that apparently <a href="http://www.theserverside.net/news/thread.tss?thread_id=42426">Visual
Studio 2003 is not going to be officially supported in Vista</a>.  Allow me to
say: Double-ewe.  Tee.  Eff.
</p>
        <p>
I'm floored by this.  Supposedly, though, it will only break debugging in VS2K3,
since the security model has been reworked significantly.  Note to self: 
Install VS2K3 on my Vista box and try to break it.
</p>
        <p>
If this is true, I suppose one could develop in VS2K5 and compile the MSIL in .NET
1.1 with <a href="http://msdn.microsoft.com/vstudio/downloads/tools/msbee/default.aspx">MSBee</a>.<br /></p>
        <img width="0" height="0" src="http://www.camthegeek.com/blog/aggbug.ashx?id=6576b920-9ab3-4ec1-bfe4-f76bf13ce407" />
      </body>
      <title>Visual Studio 2003 in Vista</title>
      <guid isPermaLink="false">http://www.camthegeek.com/blog/PermaLink,guid,6576b920-9ab3-4ec1-bfe4-f76bf13ce407.aspx</guid>
      <link>http://www.camthegeek.com/blog/VisualStudio2003InVista.aspx</link>
      <pubDate>Mon, 16 Oct 2006 20:05:43 GMT</pubDate>
      <description>&lt;p&gt;
I just read on DotNetKicks that apparently &lt;a href="http://www.theserverside.net/news/thread.tss?thread_id=42426"&gt;Visual
Studio 2003 is not going to be officially supported in Vista&lt;/a&gt;. &amp;nbsp;Allow me to
say: Double-ewe. &amp;nbsp;Tee. &amp;nbsp;Eff.
&lt;/p&gt;
&lt;p&gt;
I'm floored by this.&amp;nbsp; Supposedly, though, it will only break debugging in VS2K3,
since the security model has been reworked significantly.&amp;nbsp; Note to self:&amp;nbsp;
Install VS2K3 on my Vista box and try to break it.
&lt;/p&gt;
&lt;p&gt;
If this is true, I suppose one could develop in VS2K5 and compile the MSIL in .NET
1.1 with &lt;a href="http://msdn.microsoft.com/vstudio/downloads/tools/msbee/default.aspx"&gt;MSBee&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.camthegeek.com/blog/aggbug.ashx?id=6576b920-9ab3-4ec1-bfe4-f76bf13ce407" /&gt;</description>
      <category>ASP.NET;Programming</category>
    </item>
    <item>
      <trackback:ping>http://www.camthegeek.com/blog/Trackback.aspx?guid=20c2c581-7748-452c-806d-c714aea79986</trackback:ping>
      <pingback:server>http://www.camthegeek.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.camthegeek.com/blog/PermaLink,guid,20c2c581-7748-452c-806d-c714aea79986.aspx</pingback:target>
      <dc:creator>Cam Soper</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
While importing a Virtual PC image into our enterprise VMWare server, the process
kept bombing out with sysimage.fault.ReconfigFault.  I Googled high and low,
and didn't get any hits on sysimage.fault.ReconfigFault (or anything that appeared
to be related).  I decided to try to convert the VPC to a VMWare Workstation
image so I could try playing it in VMWare Player, and I got the same results.  I
was resigned to giving up.
</p>
        <p>
Then I noticed that VMWare Player included Microsoft VPC in its list of compatible
images.  On a lark, I loaded my VPC image in VMWare Player, and it started a
short conversion process.   Sure enough, it bombed out with "A required archive
(driver.cab) could not be found in the source OS."  Hmmm.  Something else
to Google.  Thankfully, this new Google search was a bit more fruitful in its
results.  <a href="http://mark.michaelis.net/Blog/UpgradingAVPCImageToVMWareWorkstation50.aspx">This
guy's solution</a> fixed the problem in VMWare Importer as well as VMWare Player.<br /></p>
        <p>
I'm totally surprised nobody else has run into this.
</p>
        <p>
          <strong>Update 3/18/2007:</strong>
        </p>
        <p>
So it looks like this is the #1 hit on Google for resolving this issue.  That's
pretty cool.  So I decided that, just in case the above link breaks, I'd grab
the pertinent part out of the above link (in case that site ever disappears).
</p>
        <ol>
          <li>
Find another computer running the same operating system and service packs. 
</li>
          <li>
Copy the "<font face="Courier New">%windir%\Driver Cache</font>" directory into the
same location on the VPC image. 
</li>
          <li>
Shut down the VPC.</li>
        </ol>
        <p>
That's it!
</p>
        <p>
Hey, if this helps anyone, please take a second to drop me an email or leave a comment
here.  I'd love to hear from you.
</p>
        <img width="0" height="0" src="http://www.camthegeek.com/blog/aggbug.ashx?id=20c2c581-7748-452c-806d-c714aea79986" />
      </body>
      <title>VMWare Importer sysimage.fault.ReconfigFault</title>
      <guid isPermaLink="false">http://www.camthegeek.com/blog/PermaLink,guid,20c2c581-7748-452c-806d-c714aea79986.aspx</guid>
      <link>http://www.camthegeek.com/blog/VMWareImporterSysimagefaultReconfigFault.aspx</link>
      <pubDate>Wed, 04 Oct 2006 16:03:25 GMT</pubDate>
      <description>&lt;p&gt;
While importing a Virtual PC image into our enterprise VMWare server, the process
kept bombing out with sysimage.fault.ReconfigFault.&amp;nbsp; I Googled high and low,
and didn't get any hits on sysimage.fault.ReconfigFault (or anything that appeared
to be related).&amp;nbsp; I decided to try to convert the VPC to a VMWare Workstation
image so I could try playing it in VMWare Player, and I got the same results. &amp;nbsp;I
was resigned to giving up.
&lt;/p&gt;
&lt;p&gt;
Then I noticed that VMWare Player included Microsoft VPC in its list of compatible
images. &amp;nbsp;On a lark, I loaded my VPC image in VMWare Player, and it started a
short conversion process. &amp;nbsp; Sure enough, it bombed out with "A required archive
(driver.cab) could not be found in the source OS." &amp;nbsp;Hmmm. &amp;nbsp;Something else
to Google. &amp;nbsp;Thankfully, this new Google search was a bit more fruitful in its
results. &amp;nbsp;&lt;a href="http://mark.michaelis.net/Blog/UpgradingAVPCImageToVMWareWorkstation50.aspx"&gt;This
guy's solution&lt;/a&gt; fixed the problem in VMWare Importer as well as VMWare Player.&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
I'm totally surprised nobody else has run into this.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Update 3/18/2007:&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
So it looks like this is the #1 hit on Google for resolving this issue.&amp;nbsp; That's
pretty cool.&amp;nbsp; So I decided that, just in case the above link breaks, I'd grab
the pertinent part out of the above link (in case that site ever disappears).
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Find another computer running the same operating system and service packs. 
&lt;li&gt;
Copy the "&lt;font face="Courier New"&gt;%windir%\Driver Cache&lt;/font&gt;" directory into the
same location on the&amp;nbsp;VPC image. 
&lt;li&gt;
Shut down the VPC.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
That's it!
&lt;/p&gt;
&lt;p&gt;
Hey, if this helps anyone, please take a second to drop me an email or leave a comment
here.&amp;nbsp; I'd love to hear from you.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.camthegeek.com/blog/aggbug.ashx?id=20c2c581-7748-452c-806d-c714aea79986" /&gt;</description>
      <category>Geek Toys;Programming</category>
    </item>
    <item>
      <trackback:ping>http://www.camthegeek.com/blog/Trackback.aspx?guid=1a17322b-2194-484b-8784-17ebe83cfb6a</trackback:ping>
      <pingback:server>http://www.camthegeek.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.camthegeek.com/blog/PermaLink,guid,1a17322b-2194-484b-8784-17ebe83cfb6a.aspx</pingback:target>
      <dc:creator>Cam Soper</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
After 9 hours of arguing with Visual Studio 2003, I'm tired, frustrated, but triumphant.
</p>
        <p>
I have no freakin clue what went wrong, but the end result was every time I tried
to build my Web Deployment project, it bombed out with "Unable to build folder CBI". 
Turns out that there are multiple folders spread out throughout the project tree named
"CBI".  And VS2K3 doesn't like that when it's building an MSI.  If I went
through the web project and renamed all those CBI folders, it worked fine.<br /></p>
        <p>
The really weird part was that the project built fine on my workstation, but not on
my build server.
</p>
        <p>
Long story short, I uninstalled and reinstalled all my project dependencies on the
build server, did a rain dance, and built the code on the c: drive instead of the
d: drive (since that's where the original developer built his project).  Voila... 
it works.
</p>
        <p>
9 freakin hours.<br /></p>
        <img width="0" height="0" src="http://www.camthegeek.com/blog/aggbug.ashx?id=1a17322b-2194-484b-8784-17ebe83cfb6a" />
      </body>
      <title>Visual Studio Web Setup Hell</title>
      <guid isPermaLink="false">http://www.camthegeek.com/blog/PermaLink,guid,1a17322b-2194-484b-8784-17ebe83cfb6a.aspx</guid>
      <link>http://www.camthegeek.com/blog/VisualStudioWebSetupHell.aspx</link>
      <pubDate>Sat, 23 Sep 2006 06:12:30 GMT</pubDate>
      <description>&lt;p&gt;
After 9 hours of arguing with Visual Studio 2003, I'm tired, frustrated, but triumphant.
&lt;/p&gt;
&lt;p&gt;
I have no freakin clue what went wrong, but the end result was every time I tried
to build my Web Deployment project, it bombed out with "Unable to build folder CBI".&amp;nbsp;
Turns out that there are multiple folders spread out throughout the project tree named
"CBI".&amp;nbsp; And VS2K3 doesn't like that when it's building an MSI.&amp;nbsp; If I went
through the web project and renamed all those CBI folders, it worked fine.&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
The really weird part was that the project built fine on my workstation, but not on
my build server.
&lt;/p&gt;
&lt;p&gt;
Long story short, I uninstalled and reinstalled all my project dependencies on the
build server, did a rain dance, and built the code on the c: drive instead of the
d: drive (since that's where the original developer built his project).&amp;nbsp; Voila...&amp;nbsp;
it works.
&lt;/p&gt;
&lt;p&gt;
9 freakin hours.&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.camthegeek.com/blog/aggbug.ashx?id=1a17322b-2194-484b-8784-17ebe83cfb6a" /&gt;</description>
      <category>Programming</category>
    </item>
    <item>
      <trackback:ping>http://www.camthegeek.com/blog/Trackback.aspx?guid=63fc32c3-ffe3-4448-aaf3-cfa8ca82e751</trackback:ping>
      <pingback:server>http://www.camthegeek.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.camthegeek.com/blog/PermaLink,guid,63fc32c3-ffe3-4448-aaf3-cfa8ca82e751.aspx</pingback:target>
      <dc:creator>Cam Soper</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
It's not unusual for my coworkers to come to me seeking my help with .NET, HTML, JavaScript,
or just about any other geek topic.  What isn't so obvious to them is that more
than half of the time, I don't know the answer to their questions.  My black
belt in Google-Fu is what enables me to quickly help them.   Case in point: 
Easily 2/3 of all my Google searches start with "site:msdn.microsoft.com."  
<br /></p>
        <p>
I cannot over-emphasize this point:  If you want to be an effective developer,
learn Google.  To get you started on learning the advanced features, check out <a href="http://www.googleguide.com/">Google
Guide</a>.  When you're ready to put your skills to the test, try <a href="http://gwigle.varten.net/">Gwigle</a>.<br /></p>
        <img width="0" height="0" src="http://www.camthegeek.com/blog/aggbug.ashx?id=63fc32c3-ffe3-4448-aaf3-cfa8ca82e751" />
      </body>
      <title>Zen and the Art of Google</title>
      <guid isPermaLink="false">http://www.camthegeek.com/blog/PermaLink,guid,63fc32c3-ffe3-4448-aaf3-cfa8ca82e751.aspx</guid>
      <link>http://www.camthegeek.com/blog/ZenAndTheArtOfGoogle.aspx</link>
      <pubDate>Thu, 08 Jun 2006 15:21:07 GMT</pubDate>
      <description>&lt;p&gt;
It's not unusual for my coworkers to come to me seeking my help with .NET, HTML, JavaScript,
or just about any other geek topic.&amp;nbsp; What isn't so obvious to them is that more
than half of the time, I don't know the answer to their questions.&amp;nbsp; My black
belt in Google-Fu is what enables me to quickly help them.&amp;nbsp;&amp;nbsp; Case in point:&amp;nbsp;
Easily 2/3 of all my Google searches start with "site:msdn.microsoft.com."&amp;nbsp; 
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
I cannot over-emphasize this point: &amp;nbsp;If you want to be an effective developer,
learn Google.&amp;nbsp; To get you started on learning the advanced features, check out &lt;a href="http://www.googleguide.com/"&gt;Google
Guide&lt;/a&gt;.&amp;nbsp; When you're ready to put your skills to the test, try &lt;a href="http://gwigle.varten.net/"&gt;Gwigle&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.camthegeek.com/blog/aggbug.ashx?id=63fc32c3-ffe3-4448-aaf3-cfa8ca82e751" /&gt;</description>
      <category>Programming</category>
    </item>
    <item>
      <trackback:ping>http://www.camthegeek.com/blog/Trackback.aspx?guid=d7cfa24e-5583-4bf1-a75e-a211b801e01e</trackback:ping>
      <pingback:server>http://www.camthegeek.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.camthegeek.com/blog/PermaLink,guid,d7cfa24e-5583-4bf1-a75e-a211b801e01e.aspx</pingback:target>
      <dc:creator>Cam Soper</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I got a chance to sit down and chat with Scott Hanselman for 20 minutes or so while
I was in Portland.  Scott was a totally gracious host, and took an opportunity
to introduce me to another tool that he raves about (and I never tried), <a href="http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx">PowerShell</a>. 
For the uninitiated, PowerShell is a command line and scripting environment. 
Think cmd.exe, but with first-class support for the .NET framework class library,
XML, WMI, and much, much more.  After Scott demoed it for me, I went back to
my hotel and played with the shell for a few hours.  Although my need for it
has been limited, I'm madly in love with PowerShell.  This is powerful stuff.
</p>
        <p>
I can't say anything about PowerShell that hasn't been <a href="http://www.google.com/search?q=windows+powershell">said
already</a>, so do yourself a favor and check it out.  While you're at it, check
out some of the <a href="http://www.google.com/search?q=site%3Awww.hanselman.com+powershell">info
on Scott's blog</a>, his <a href="http://www.hanselminutes.com/default.aspx?showID=12">podcast
on the subject</a>, and his recent post about the <a href="http://www.hanselman.com/blog/FreePowerShellIDE.aspx">PowerShell
IDE</a>.<br /></p>
        <img width="0" height="0" src="http://www.camthegeek.com/blog/aggbug.ashx?id=d7cfa24e-5583-4bf1-a75e-a211b801e01e" />
      </body>
      <title>By the PowerShell of Grayskull...</title>
      <guid isPermaLink="false">http://www.camthegeek.com/blog/PermaLink,guid,d7cfa24e-5583-4bf1-a75e-a211b801e01e.aspx</guid>
      <link>http://www.camthegeek.com/blog/ByThePowerShellOfGrayskull.aspx</link>
      <pubDate>Thu, 08 Jun 2006 02:33:31 GMT</pubDate>
      <description>&lt;p&gt;
I got a chance to sit down and chat with Scott Hanselman for 20 minutes or so while
I was in Portland.&amp;nbsp; Scott was a totally gracious host, and took an opportunity
to introduce me to another tool that he raves about (and I never tried), &lt;a href="http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx"&gt;PowerShell&lt;/a&gt;.&amp;nbsp;
For the uninitiated, PowerShell is a command line and scripting environment.&amp;nbsp;
Think cmd.exe, but with first-class support for the .NET framework class library,
XML, WMI, and much, much more.&amp;nbsp; After Scott demoed it for me, I went back to
my hotel and played with the shell for a few hours.&amp;nbsp; Although my need for it
has been limited, I'm madly in love with PowerShell.&amp;nbsp; This is powerful stuff.
&lt;/p&gt;
&lt;p&gt;
I can't say anything about PowerShell that hasn't been &lt;a href="http://www.google.com/search?q=windows+powershell"&gt;said
already&lt;/a&gt;, so do yourself a favor and check it out.&amp;nbsp; While you're at it, check
out some of the &lt;a href="http://www.google.com/search?q=site%3Awww.hanselman.com+powershell"&gt;info
on Scott's blog&lt;/a&gt;, his &lt;a href="http://www.hanselminutes.com/default.aspx?showID=12"&gt;podcast
on the subject&lt;/a&gt;, and his recent post about the &lt;a href="http://www.hanselman.com/blog/FreePowerShellIDE.aspx"&gt;PowerShell
IDE&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.camthegeek.com/blog/aggbug.ashx?id=d7cfa24e-5583-4bf1-a75e-a211b801e01e" /&gt;</description>
      <category>Geek Toys;Programming</category>
    </item>
    <item>
      <trackback:ping>http://www.camthegeek.com/blog/Trackback.aspx?guid=aa734fad-5468-424b-b9ed-2803d6022fb2</trackback:ping>
      <pingback:server>http://www.camthegeek.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.camthegeek.com/blog/PermaLink,guid,aa734fad-5468-424b-b9ed-2803d6022fb2.aspx</pingback:target>
      <dc:creator>Cam Soper</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
We have an internal web application at Commerce that makes extensive use of ActiveX
controls.  The application is used primarily by our financial service reps and
contact center operators.  Thanks to the <a href="http://en.wikipedia.org/wiki/Eolas">Eolas
judgment</a>, the application in question was still mostly functional, but required
users to manually click on the ActiveX controls before they could interact with them. 
Not only were the programmers who maintain the application concerned that their non-technical
users would be confused by the "Click here to activate this control" message, but
this behavior actually broke a control we use to push client-side updates.  Our
programmers took <a href="http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/overview/activating_activex.asp">Microsoft's
recommeded steps</a> to correct the issue.
</p>
        <p>
The problem is, Microsoft's solution didn't work on about half the machines we tried
it on. After a while, we determined that the problem machines were all laptops, so
we immediately suspected a difference in the images our desktop team uses on our workstation
PCs versus our laptops.  After running through all the usual suspects, like OS
patches, our laptop security software, IE build number, etc., we were at a loss and
opened a ticket with MSDN developer support.
</p>
        <p>
After a week's worth of research on the Microsoft side, the support analyst suggested
I compare version numbers on jscript.dll.  Sure enough, the version on the laptops
is outdated.  We <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=C717D943-7E4B-4622-86EB-95A22B832CAA&amp;displaylang=en">downloaded
the installer</a> for the most recent version, and all is good again.
</p>
        <img width="0" height="0" src="http://www.camthegeek.com/blog/aggbug.ashx?id=aa734fad-5468-424b-b9ed-2803d6022fb2" />
      </body>
      <title>Eolas and Internet Explorer ActiveX Activation</title>
      <guid isPermaLink="false">http://www.camthegeek.com/blog/PermaLink,guid,aa734fad-5468-424b-b9ed-2803d6022fb2.aspx</guid>
      <link>http://www.camthegeek.com/blog/EolasAndInternetExplorerActiveXActivation.aspx</link>
      <pubDate>Mon, 01 May 2006 15:27:23 GMT</pubDate>
      <description>&lt;p&gt;
We have an internal web application at Commerce that makes extensive use of ActiveX
controls.&amp;nbsp; The application is used primarily by our financial service reps and
contact center operators.&amp;nbsp; Thanks to the &lt;a href="http://en.wikipedia.org/wiki/Eolas"&gt;Eolas
judgment&lt;/a&gt;, the application in question was still mostly functional, but required
users to manually click on the ActiveX controls before they could interact with them.&amp;nbsp;
Not only were the programmers who maintain the application concerned that their non-technical
users would be confused by the "Click here to activate this control" message, but
this behavior actually broke a control we use to push client-side updates.&amp;nbsp; Our
programmers took &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/overview/activating_activex.asp"&gt;Microsoft's
recommeded steps&lt;/a&gt; to correct the issue.
&lt;/p&gt;
&lt;p&gt;
The problem is, Microsoft's solution didn't work on about half the machines we tried
it on. After a while, we determined that the problem machines were all laptops, so
we immediately suspected a difference in the images our desktop team uses on our workstation
PCs versus our laptops.&amp;nbsp; After running through all the usual suspects, like OS
patches, our laptop security software, IE build number, etc., we were at a loss and
opened a ticket with MSDN developer support.
&lt;/p&gt;
&lt;p&gt;
After a week's worth of research on the Microsoft side, the support analyst suggested
I compare version numbers on jscript.dll.&amp;nbsp; Sure enough, the version on the laptops
is outdated.&amp;nbsp; We &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=C717D943-7E4B-4622-86EB-95A22B832CAA&amp;amp;displaylang=en"&gt;downloaded
the installer&lt;/a&gt; for the most recent version, and all is good again.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.camthegeek.com/blog/aggbug.ashx?id=aa734fad-5468-424b-b9ed-2803d6022fb2" /&gt;</description>
      <category>Programming</category>
    </item>
    <item>
      <trackback:ping>http://www.camthegeek.com/blog/Trackback.aspx?guid=f6989f8a-0f75-4bda-937a-da2ef691f662</trackback:ping>
      <pingback:server>http://www.camthegeek.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.camthegeek.com/blog/PermaLink,guid,f6989f8a-0f75-4bda-937a-da2ef691f662.aspx</pingback:target>
      <dc:creator>Cam Soper</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Holy cow, it's been a month since my last post.  Funny how time flies when you're
boning up for MCP exams, huh?  On that note, I've completed two MCPs, I'm almost
ready for a third (making me an MCAD) and then I'll be two tests from MCSD. 
I'm hoping to have my MCSD by the end of April, at which time I'll start working on
my upgrade exams to become an MCPD in Enterprise Applications.  Good times!
</p>
        <p>
So Scott Hanselman posted again on something near and dear to my heart, <a href="http://www.hanselman.com/blog/ZEBZeroEmailBounceAndANewOutlookRule.aspx">Outlook
Inbox organization</a>.  He's apparently a big advocate of the <i><a href="http://www.amazon.com/gp/product/0142000280/sr=8-1/qid=1142271601/ref=pd_bbs_1/103-3401224-6631828?%5Fencoding=UTF8"> Getting
Things Done</a></i> method, making use of a concept called <i>Zero Email Bounce</i>. 
I freely admit, I don't know much about <i>Getting Things Done</i>, never having read
it, but it sounds too focused to be something I'd make work.  I revel in a certain
degree of chaos.  As I commented on Scott's blog, I actually drew some inspriration
from Gmail in my Outlook Inbox handling routine.
</p>
        <p>
As each message comes in, I make a decision: Action item or not an action item. If
it's an action item, it (and its ensuing conversation thread, since I sort my Inbox
by conversation rather than date) stays in the Inbox until complete. 
</p>
        <p>
If it is not an action item, then I have another decision to make: Is the message
signal or noise? If it's noise, and of no possible future value, it gets deleted.
If it's signal, then it gets moved into an "Archive" folder in my Exchange message
store. I wrote an Outlook macro and assigned it to a toolbar button so I can archive
the message with one click (again, ala Gmail). As action items are completed, they
are assumed to be non-action signal items, and are archived. 
</p>
        <p>
Our organization has a ridiculously tight 85 MB mailbox limit, so I've got my auto-archive
settings for the "Archive" folder set at a relatively short two weeks. If there is
a "signal" item that I need to stay in my Exchange message store (so it's easily available
on both my laptop in offline mode as well as my desktop), I drag it to a "Do Not Archive"
folder until it can be moved to "Archive." An example of this is travel itineraries. 
</p>
        <p>
To keep my auto-archive file from consuming too much space on my tiny 40 GB workstation
hard drive, I have it set to auto-delete after a year. I figure that's enough time
for most items to lose relevance, and a year's worth of messages only consumes about
1.5 GB. 
</p>
        <p>
To find items, I use Windows Desktop Search (MSN Toolbar and Desktop Search without
the toolbar). I really prefer Google Desktop, but it had trouble with my short auto-archive
window, often expecting an item to be in my inbox when it was, in fact, in the auto-archive
PST. Windows Desktop seems to handle that better. 
</p>
        <img width="0" height="0" src="http://www.camthegeek.com/blog/aggbug.ashx?id=f6989f8a-0f75-4bda-937a-da2ef691f662" />
      </body>
      <title>Outlook != Gmail (but you can make it kinda similar)</title>
      <guid isPermaLink="false">http://www.camthegeek.com/blog/PermaLink,guid,f6989f8a-0f75-4bda-937a-da2ef691f662.aspx</guid>
      <link>http://www.camthegeek.com/blog/OutlookGmailButYouCanMakeItKindaSimilar.aspx</link>
      <pubDate>Mon, 13 Mar 2006 17:43:48 GMT</pubDate>
      <description>&lt;p&gt;
Holy cow, it's been a month since my last post.&amp;nbsp; Funny how time flies when you're
boning up for MCP exams, huh?&amp;nbsp; On that note, I've completed two MCPs, I'm almost
ready for a third (making me an MCAD) and then I'll be two tests from MCSD.&amp;nbsp;
I'm hoping to have my MCSD by the end of April, at which time I'll start working on
my upgrade exams to become an MCPD in Enterprise Applications.&amp;nbsp; Good times!
&lt;/p&gt;
&lt;p&gt;
So Scott Hanselman posted again on something near and dear to my heart, &lt;a href="http://www.hanselman.com/blog/ZEBZeroEmailBounceAndANewOutlookRule.aspx"&gt;Outlook
Inbox organization&lt;/a&gt;.&amp;nbsp; He's apparently a big advocate of the &lt;i&gt;&lt;a href="http://www.amazon.com/gp/product/0142000280/sr=8-1/qid=1142271601/ref=pd_bbs_1/103-3401224-6631828?%5Fencoding=UTF8"&gt; Getting
Things Done&lt;/a&gt;&lt;/i&gt; method, making use of a concept called &lt;i&gt;Zero Email Bounce&lt;/i&gt;.&amp;nbsp;
I freely admit, I don't know much about &lt;i&gt;Getting Things Done&lt;/i&gt;, never having read
it, but it sounds too focused to be something I'd make work.&amp;nbsp; I revel in a certain
degree of chaos.&amp;nbsp; As I commented on Scott's blog, I actually drew some inspriration
from Gmail in my Outlook Inbox handling routine.
&lt;/p&gt;
&lt;p&gt;
As each message comes in, I make a decision: Action item or not an action item. If
it's an action item, it (and its ensuing conversation thread, since I sort my Inbox
by conversation rather than date) stays in the Inbox until complete. 
&lt;/p&gt;
&lt;p&gt;
If it is not an action item, then I have another decision to make: Is the message
signal or noise? If it's noise, and of no possible future value, it gets deleted.
If it's signal, then it gets moved into an "Archive" folder in my Exchange message
store. I wrote an Outlook macro and assigned it to a toolbar button so I can archive
the message with one click (again, ala Gmail). As action items are completed, they
are assumed to be non-action signal items, and are archived. 
&lt;/p&gt;
&lt;p&gt;
Our organization has a ridiculously tight 85 MB mailbox limit, so I've got my auto-archive
settings for the "Archive" folder set at a relatively short two weeks. If there is
a "signal" item that I need to stay in my Exchange message store (so it's easily available
on both my laptop in offline mode as well as my desktop), I drag it to a "Do Not Archive"
folder until it can be moved to "Archive." An example of this is travel itineraries. 
&lt;/p&gt;
&lt;p&gt;
To keep my auto-archive file from consuming too much space on my tiny 40 GB workstation
hard drive, I have it set to auto-delete after a year. I figure that's enough time
for most items to lose relevance, and a year's worth of messages only consumes about
1.5 GB. 
&lt;/p&gt;
&lt;p&gt;
To find items, I use Windows Desktop Search (MSN Toolbar and Desktop Search without
the toolbar). I really prefer Google Desktop, but it had trouble with my short auto-archive
window, often expecting an item to be in my inbox when it was, in fact, in the auto-archive
PST. Windows Desktop seems to handle that better. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.camthegeek.com/blog/aggbug.ashx?id=f6989f8a-0f75-4bda-937a-da2ef691f662" /&gt;</description>
      <category>Musings;Programming</category>
    </item>
    <item>
      <trackback:ping>http://www.camthegeek.com/blog/Trackback.aspx?guid=866253f5-3f00-408a-ae5e-677161c753b8</trackback:ping>
      <pingback:server>http://www.camthegeek.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.camthegeek.com/blog/PermaLink,guid,866253f5-3f00-408a-ae5e-677161c753b8.aspx</pingback:target>
      <dc:creator>Cam Soper</dc:creator>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Say I've got a base class Foo.
</p>
        <p>
          <font face="Courier New">public class Foo<br />
{<br />
    public Foo()<br />
    {<br />
       Console.WriteLine("Foo Constructor");<br />
    }<br />
}</font>
        </p>
        <p>
Now say I've got a derived class Bar.
</p>
        <p>
          <font face="Courier New">public class Bar : Foo<br />
{<br />
    public Bar()<br />
    {<br />
       Console.WriteLine("Bar Constructor");<br />
    }<br />
}</font>
        </p>
        <p>
When you instantiate Bar, you'll get the following in your console output:
</p>
        <p>
          <font face="Courier New">Foo Constructor<br />
Bar Constructor</font>
        </p>
        <p>
That's fine.  That's the expected behavior.  But what if I want to completely
override or ignore the constructor for Foo?  The compiler doesn't like it when
you declare a constructor virtual, and even if I could, I don't think there's a syntax
for overriding it.  It seems that I have to take the base class constructor method
whether I want it or not.<br /></p>
        <p>
Am I missing something here?<br /></p>
        <img width="0" height="0" src="http://www.camthegeek.com/blog/aggbug.ashx?id=866253f5-3f00-408a-ae5e-677161c753b8" />
      </body>
      <title>Overriding Constructor Methods in C# - Why not?</title>
      <guid isPermaLink="false">http://www.camthegeek.com/blog/PermaLink,guid,866253f5-3f00-408a-ae5e-677161c753b8.aspx</guid>
      <link>http://www.camthegeek.com/blog/OverridingConstructorMethodsInCWhyNot.aspx</link>
      <pubDate>Wed, 01 Feb 2006 05:17:44 GMT</pubDate>
      <description>&lt;p&gt;
Say I've got a base class Foo.
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New"&gt;public class Foo&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public Foo()&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; Console.WriteLine("Foo Constructor");&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
}&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
Now say I've got a derived class Bar.
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New"&gt;public class Bar : Foo&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public Bar()&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; Console.WriteLine("Bar Constructor");&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
}&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
When you instantiate Bar, you'll get the following in your console output:
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New"&gt;Foo Constructor&lt;br&gt;
Bar Constructor&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
That's fine.&amp;nbsp; That's the expected behavior.&amp;nbsp; But what if I want to completely
override or ignore the constructor for Foo?&amp;nbsp; The compiler doesn't like it when
you declare a constructor virtual, and even if I could, I don't think there's a syntax
for overriding it.&amp;nbsp; It seems that I have to take the base class constructor method
whether I want it or not.&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
Am I missing something here?&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.camthegeek.com/blog/aggbug.ashx?id=866253f5-3f00-408a-ae5e-677161c753b8" /&gt;</description>
      <category>Programming</category>
    </item>
  </channel>
</rss>