<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Lessons Learned</title>
        <link>http://geekswithblogs.net/LessonsLearned/Default.aspx</link>
        <description>Preserved for Posterity</description>
        <language>en-US</language>
        <copyright>Randolpho St. John</copyright>
        <managingEditor>randolpho@gmail.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <image>
            <title>Lessons Learned</title>
            <url>http://geekswithblogs.net/images/RSS2Image.gif</url>
            <link>http://geekswithblogs.net/LessonsLearned/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>Windows Azure</title>
            <category>Miscellanea</category>
            <link>http://geekswithblogs.net/LessonsLearned/archive/2008/10/27/windows-azure.aspx</link>
            <description>So, by now you've probably heard of the &lt;a href="http://www.microsoft.com/azure/default.mspx"&gt;Windows Azure&lt;/a&gt; news coming out of PDC; it's rather hard to avoid the media blitz. &lt;br /&gt;&lt;br /&gt;

It looks useful. Being able to easily deploy and scale services would be a big help, frankly -- if I could ever convince the Kool-aid drinking anti-PC Penguinistas that control our network to agree to such a system. Snowball's chance.&lt;br /&gt;&lt;br /&gt;

But I've a much more pressing issue to blog about than that. All I can think of since I heard the name is "Why???!?!? Who came up with such an aztacular name?" &lt;br /&gt;&lt;br /&gt;

UPDATE: Ok, now I'm confused. As I get deeper into Azure, it appears to only be available as a remote service from Microsoft. Is that correct? Or can enterprises purchase Azure and set up their own clouds? Further updates as I learn more.  &lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=126249"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=126249" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/LessonsLearned/aggbug/126249.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Randolpho St. John</dc:creator>
            <guid>http://geekswithblogs.net/LessonsLearned/archive/2008/10/27/windows-azure.aspx</guid>
            <pubDate>Mon, 27 Oct 2008 21:40:37 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/LessonsLearned/comments/126249.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/LessonsLearned/archive/2008/10/27/windows-azure.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/LessonsLearned/comments/commentRss/126249.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Are You a PC?</title>
            <category>Miscellanea</category>
            <link>http://geekswithblogs.net/LessonsLearned/archive/2008/09/26/are-you-a-pc.aspx</link>
            <description>&lt;p&gt;So it turns out &lt;a href="http://www.microsoft.com/windows/"&gt;I'm a PC&lt;/a&gt;. Are you?&lt;/p&gt;

&lt;p&gt;I've been having trouble getting into this whole I'm a PC thing. I am a PC. &lt;/p&gt;

&lt;p&gt;But I'm also a Mac and a Penguin. &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=125476"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=125476" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/LessonsLearned/aggbug/125476.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Randolpho St. John</dc:creator>
            <guid>http://geekswithblogs.net/LessonsLearned/archive/2008/09/26/are-you-a-pc.aspx</guid>
            <pubDate>Fri, 26 Sep 2008 14:21:23 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/LessonsLearned/comments/125476.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/LessonsLearned/archive/2008/09/26/are-you-a-pc.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/LessonsLearned/comments/commentRss/125476.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Don't Use NOLOCK, Use HOLDLOCK</title>
            <category>Lessons Learned</category>
            <link>http://geekswithblogs.net/LessonsLearned/archive/2008/08/28/dont-use-nolock-use-holdlock.aspx</link>
            <description>Normally I very much agree with the things &lt;a href="http://www.codinghorror.com"&gt;Jeff Atwood&lt;/a&gt; has to say. In the case of &lt;a href="http://www.codinghorror.com/blog/archives/001166.html"&gt;this post&lt;/a&gt;, however, I must take issue. What begins with a decent intro into the concept of deadlocks eventually ends with Jeff deciding to use the NOLOCK &lt;a href="http://msdn.microsoft.com/en-us/library/ms187373.aspx"&gt;table hint&lt;/a&gt; to allow dirty reads of a table that had been locked by an update statement. He concludes with a complaint that Microsoft seems to think that &lt;a href="http://stackoverflow.com/"&gt;Stack Overflow&lt;/a&gt; is a banking institution and therefore worthy of data integrity instead of the mere programmers blog/wiki/link exchange that it really is. &lt;br /&gt;
&lt;br /&gt;
Jeff wildly misses the mark with his conclusion, in my opinion. &lt;br /&gt;
&lt;br /&gt;
Not only is NOLOCK deprecated, Jeff seems to believe that data integrity is something one can safely do without "in certain scenarios". He is wrong. Every database not only deserves but &lt;span style="font-style: italic;"&gt;requires &lt;/span&gt;data integrity. &lt;br /&gt;
&lt;br /&gt;
Of the dozens of posts that replied to Jeff's article, a few diagnosed the real issue (long updating transactions) but only one (at least as of the time of this post) supplied the correct solution (in my opinion) to Jeff's problem. The poster's name was Filip and &lt;a href="http://foxtricks.blogspot.com/"&gt;his blog&lt;/a&gt; is worth adding to your feed reader. The solution Filip pointed out is simple: Lock all your resources *before* you update them and put a waiting lock on them (HOLDLOCK) so that queries that want to use the resource wait until the update is done rather than dying petulantly.&lt;br /&gt;
&lt;br /&gt;
UPDATE:&lt;br /&gt;
&lt;br /&gt;
Sam Saffron (also another great addition to your feed reader) has &lt;a href="http://www.samsaffron.com/archive/2008/08/27/Deadlocked+"&gt;posted an excellent rebuttal&lt;/a&gt; of Jeff's post explaining how and why deadlocks occur when selecting against an update and how to deal with them. Read it and remember it.&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=124752"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=124752" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/LessonsLearned/aggbug/124752.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Randolpho St. John</dc:creator>
            <guid>http://geekswithblogs.net/LessonsLearned/archive/2008/08/28/dont-use-nolock-use-holdlock.aspx</guid>
            <pubDate>Thu, 28 Aug 2008 14:36:23 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/LessonsLearned/comments/124752.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/LessonsLearned/archive/2008/08/28/dont-use-nolock-use-holdlock.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/LessonsLearned/comments/commentRss/124752.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Whose Fault Are Poor Requirements?</title>
            <category>Lessons Learned</category>
            <category>Design &amp; Architecture</category>
            <link>http://geekswithblogs.net/LessonsLearned/archive/2008/07/28/whose-fault-are-poor-requirements.aspx</link>
            <description>&lt;p&gt;I had thought I would do my first Lesson Learned about my control for the upcoming &lt;a href="http://geekswithblogs.net/LessonsLearned/archive/2008/07/24/silverlight-contest.aspx"&gt;Silverlight Contest&lt;/a&gt;, but recent events changed my mind.&lt;/p&gt;
&lt;p&gt;A phrase has been bandied about alot at work lately, a phrase we've all heard and uttered in one form or another at least once in our software careers. It exists in numerous variations, but essentially boils down to this: &lt;/p&gt;
&lt;p&gt;"The software is bad because the requirements were bad." &lt;/p&gt;
&lt;p&gt;I've seen it happen far too often: somebody complains that "&amp;lt;x&amp;gt; is broken" and the original developer goes on the defensive, blaming the customer for handing him faulty requirements. "It's not my fault! The customer &lt;em&gt;asked&lt;/em&gt; for a button that rebooted the server! All I did was give them exactly what they wanted!"&lt;/p&gt;
&lt;p&gt;I wholeheartedly disagree with this line of thinking. Claiming bad requirements is a copout. &lt;/p&gt;
&lt;p&gt;We as developers have a responsibiltiy to find out why every feature is requested. We must get beyond that "I press a button and it does exactly what I'm thinking" requirement to the heart of the request. If you are handed a requirements document that doesn't make sense &lt;strong&gt;push back&lt;/strong&gt;. Seek clarification. Learn more about the problem domain. Call the architect and tell him he's crazy, that it'll never work. And when you finally understand what the &lt;u&gt;real&lt;/u&gt; requirement is, &lt;strong&gt;write it down&lt;/strong&gt;. Save it for posterity. Communicate it with all parties. Find common ground. It can be done. &lt;/p&gt;
&lt;p&gt;"But my boss told me to do it that way or I'd be fired!" you might say. Very true, but that's bad management, not bad requirements. That's a different copout. &lt;img alt="" src="/Providers/BlogEntryEditor/FCKeditor/editor/images/smiley/msn/devil_smile.gif" /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=124086"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=124086" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/LessonsLearned/aggbug/124086.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Randolpho St. John</dc:creator>
            <guid>http://geekswithblogs.net/LessonsLearned/archive/2008/07/28/whose-fault-are-poor-requirements.aspx</guid>
            <pubDate>Tue, 29 Jul 2008 03:33:04 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/LessonsLearned/comments/124086.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/LessonsLearned/archive/2008/07/28/whose-fault-are-poor-requirements.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/LessonsLearned/comments/commentRss/124086.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Silverlight Contest</title>
            <category>Miscellanea</category>
            <link>http://geekswithblogs.net/LessonsLearned/archive/2008/07/24/silverlight-contest.aspx</link>
            <description>&lt;p&gt;In case you haven't heard, there's a programming contest going on. It's the &lt;a href="http://gosilverlight.org"&gt;Silverlight Control Builder Contest&lt;/a&gt; and you've still got time to play for fabulous prizes and the awe of your fellow geeks!&lt;/p&gt;
&lt;p&gt;I'm gonna enter. Are you? Wait, you haven't had the chance to mess around with Silverlight? Neither have I! &lt;/p&gt;
&lt;p&gt;Won't it be fun? &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=124010"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=124010" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/LessonsLearned/aggbug/124010.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Randolpho St. John</dc:creator>
            <guid>http://geekswithblogs.net/LessonsLearned/archive/2008/07/24/silverlight-contest.aspx</guid>
            <pubDate>Fri, 25 Jul 2008 03:41:09 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/LessonsLearned/comments/124010.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/LessonsLearned/archive/2008/07/24/silverlight-contest.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/LessonsLearned/comments/commentRss/124010.aspx</wfw:commentRss>
        </item>
        <item>
            <title>So What's This Then?</title>
            <category>Miscellanea</category>
            <link>http://geekswithblogs.net/LessonsLearned/archive/2008/07/24/so-whats-this-then.aspx</link>
            <description>And here it is. Another blog. Seems like everyone has one these days. Except me. &lt;br /&gt;
&lt;br /&gt;
...Until now.&lt;br /&gt;
&lt;br /&gt;
So yeah, I've finally decided to enter the blogosphere, whatever that is. It's not like there's anything roundish about the folks who write blogs.&lt;br /&gt;
&lt;br /&gt;
Except maybe near the belly.&lt;br /&gt;
&lt;br /&gt;
Ahem. Where was I? Oh, yes, blogging. So yeah, I'm blogging now. Mostly this blog will involve me posting about my pain developing software and the salves I used to soothe it. It will mostly be C# oriented, 'cause that's where I spend most of my time these days, although I may spend almost as much talking about software architecture and unit tests. &lt;br /&gt;
&lt;br /&gt;
I may throw in the occasional item of interest to me so be prepared for that, too, dear reader. &lt;br /&gt;
&lt;br /&gt;
Whomever you are.&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=124005"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=124005" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/LessonsLearned/aggbug/124005.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Randolpho St. John</dc:creator>
            <guid>http://geekswithblogs.net/LessonsLearned/archive/2008/07/24/so-whats-this-then.aspx</guid>
            <pubDate>Thu, 24 Jul 2008 21:57:04 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/LessonsLearned/comments/124005.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/LessonsLearned/archive/2008/07/24/so-whats-this-then.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/LessonsLearned/comments/commentRss/124005.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>