<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>Life in my own company</title>
        <link>http://geekswithblogs.net/rakker/Default.aspx</link>
        <description>Its all up to me.</description>
        <language>en-US</language>
        <copyright>Robert May</copyright>
        <managingEditor>robert@laradsolutions.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <image>
            <title>Life in my own company</title>
            <url>http://geekswithblogs.net/images/RSS2Image.gif</url>
            <link>http://geekswithblogs.net/rakker/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>Windows Vista Backup</title>
            <link>http://geekswithblogs.net/rakker/archive/2008/08/15/124475.aspx</link>
            <description>&lt;p&gt;O.k., I'll admit, the first time that I used windows Vista backup, I was very underwhelmed, but it's grown on me, and now I'm a huge fan.  On Monday, I received a new hard drive from Dell.  It's bigger and doesn't make strange clicking and stalling noises like the old drive did. :)  I was pretty certain that the old drive was going to go.&lt;/p&gt; &lt;p&gt;To swap out the drives, I plugged in a USB drive with sufficient capacity and did a windows backup complete pc backup.  Once that was finished, I plopped in the new drive and my Vista installation DVD.  After the restart, I selected the Restore Vista options, found my complete backup and started the restore.  Once it was done, I rebooted and was up and running again.  That was it!  It just worked!  I spent less than 10 minutes (not counting actual backup time) on completely replacing the drive.  I've NEVER had a backup and restore go that smoothly.  In the past, I've always had to install the OS before I could get to the backup, and then it'd be a hassle because of drivers and such, and the final restore wouldn't quite be the same.  This restored things EXACTLY the same.&lt;/p&gt; &lt;p&gt;I did have to reauthorize Diskeeper, but that was the only thing that I had to touch.&lt;/p&gt; &lt;p&gt;Knowing that I can mount the complete backup using virtual PC is also nice.&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:d42607dc-76ad-49ee-a171-5fd5594060d2" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Vista" rel="tag"&gt;Vista&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Backup" rel="tag"&gt;Backup&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=124475"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=124475" 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/rakker/aggbug/124475.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Robert May</dc:creator>
            <guid>http://geekswithblogs.net/rakker/archive/2008/08/15/124475.aspx</guid>
            <pubDate>Fri, 15 Aug 2008 22:39:12 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/rakker/comments/124475.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/rakker/archive/2008/08/15/124475.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/rakker/comments/commentRss/124475.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/rakker/services/trackbacks/124475.aspx</trackback:ping>
        </item>
        <item>
            <title>WCF Serialization and the empty object bug</title>
            <link>http://geekswithblogs.net/rakker/archive/2008/08/15/124466.aspx</link>
            <description>&lt;p&gt;Ran into a serialization problem with WCF the other day that was rather interesting to find and fix.  It wasn't a problem with WCF, in the end, but rather with what we were telling WCF to do.&lt;/p&gt; &lt;p&gt;So we have some complex entities that we're shoving through the serialization layer.  We also send through lists of these entities, and the list may have references to itself.  To keep our list sizes small, we've implemented a &lt;a href="http://msdn.microsoft.com/en-us/library/system.servicemodel.description.datacontractserializeroperationbehavior.aspx"&gt;DataContractSerializerOperationBehavior&lt;/a&gt; where when we create the data serializer, we set preserve references to true (it's just a variable below, but its set to true elsewhere):&lt;/p&gt;&lt;pre class="code"&gt;        &lt;span style="color: rgb(0,0,255)"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;XmlObjectSerializer&lt;/span&gt; CreateDataContractSerializer(&lt;span style="color: rgb(43,145,175)"&gt;Type&lt;/span&gt; type, &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; name, &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; &lt;a title="Notification Services" href="http://www.microsoft.com/sql/technologies/notification/default.mspx" target="_blank"&gt;Notification Services&lt;/a&gt;, &lt;span style="color: rgb(43,145,175)"&gt;IList&lt;/span&gt;&amp;lt;&lt;span style="color: rgb(43,145,175)"&gt;Type&lt;/span&gt;&amp;gt; knownTypes)
        {&lt;span style="color: rgb(0,128,0)"&gt;
&lt;/span&gt;            &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;DataContractSerializer
&lt;/span&gt;            (
                type, 
                name, 
                &lt;a title="Notification Services" href="http://www.microsoft.com/sql/technologies/notification/default.mspx" target="_blank"&gt;Notification Services&lt;/a&gt;, 
                knownTypes,
                maxItemsInObjectGraph &lt;span style="color: rgb(0,128,0)"&gt;/*maxItemsInObjectGraph*/&lt;/span&gt;,
                ignoreExtensionDataObject&lt;span style="color: rgb(0,128,0)"&gt;/*ignoreExtensionDataObject*/&lt;/span&gt;,
                preserveObjectReferences&lt;span style="color: rgb(0,128,0)"&gt;/*preserveObjectReferences*/&lt;/span&gt;,
                surrogate&lt;span style="color: rgb(0,128,0)"&gt;/*dataContractSurrogate*/
&lt;/span&gt;            );
        }
&lt;/pre&gt;
&lt;p&gt;To make things more complicated, we have some custom lists of our entities that have properties on them.  As you may not know, when serializing a custom collection, the object is treated as a collection and any custom properties are ignored and are not serialized, even if you mark them as a DataMember.  Rather annoying.  To get around this, we implemented an &lt;a href="        private static XmlObjectSerializer CreateDataContractSerializer(Type type, string name, string ns, IList&amp;lt;Type&amp;gt; knownTypes)"&gt;IDataContractSurrogate&lt;/a&gt;, which you can see is passed into the data serializer above.  In GetObjectToSerialize method of the surrogate class that we created, we look to see what type we're trying to serialize and if it's one of our custom collections, we create a new instance of a surrogate that has an internal list, but is not a collection class itself, populate it with the contents and properties of the object that is to be serialized and then pass the surrogate back to the serializer.  Since our surrogate class is not a collection, WCF detects it correctly and serializes it correctly.  Then, on deserialization, we create a new instance of the collection, set it's properties, and then iterate through the surrogate's list and add the items to the new custom collections list.&lt;/p&gt;
&lt;p&gt;Everything's happy, right?&lt;/p&gt;
&lt;p&gt;Nope.  Our custom collection requires that objects of the same type are added to it.  The objects themselves have a Name that tells us what they are.  Our objects also have children that can be of the same type as the parent and are stored in the same type of class.  More precisely:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Set&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;SetItem&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;Name&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;AParentThing&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Children&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Set&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;SetItem&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;Name&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;AChildThing&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ParentSetItem&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;ref&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;AParentThing[0]&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ParentSetItem&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;                    ... (Perhaps even more sets and set items)
&lt;span style="color: rgb(0,0,255)"&gt;                &amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;SetItem&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Set&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Children&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;SetItem&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;SetItem&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;Name&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;AParentThing&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;        ...(May have many layers)
&lt;span style="color: rgb(0,0,255)"&gt;    &amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;SetItem&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Set&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;The problem appeared when we tried to serialize the cases where a child set referred back to a parent set.  We were getting weird errors, caused by the constraint that required that all items in a set be of the same type.  For some reason, the Name wasn't being serialized, or so we thought.  And what was weird is that it worked right most of the time, but then would occasionally fail, and what's worse, if we ignored the error, everything would work like we thought it should.  We were sure we'd just found a bug with WCF.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Turns out that name just hadn't YET be serialized.&lt;/p&gt;
&lt;p&gt;I'm not sure about the order of serialization with data members, but it appears to be pretty arbitrary, unless you set the order on the data member.  We'd done two things incorrectly.  1.  We didn't set IsRequired on all of our DataMembers, and since this is a version 1 product, all of our interface elements should be present.  In future versions, maybe that'll change, but for now, they should all be there.  2.  We assumed that the deserialization of child collections wouldn't happen until after all of the members of the entity containing that collection were serialized, which is not the case.  As a result, the collections, which had a reference back to the parent, would attempt to deserialize BEFORE the name property had deserialized.&lt;/p&gt;
&lt;p&gt;To fix, we changed all of our data members to look like this:&lt;/p&gt;&lt;pre class="code"&gt;        [&lt;span style="color: rgb(43,145,175)"&gt;DataMember&lt;/span&gt;(Order=0, IsRequired = &lt;span style="color: rgb(0,0,255)"&gt;true&lt;/span&gt;)]&lt;/pre&gt;
&lt;p&gt;Note that order is 0 based.  At first, we only put the order property on the Name element, but that just caused it to fail every time, since WCF appears to serialize everything without an order first, then follow the order priority second.  After updating the other methods to also have an order, the problem has disappeared.  The name is always serialized first.  Note however, that even though the message contains the data, the resulting object may not contain the data.
&lt;/p&gt;&lt;p&gt;Fun, Fun, Fun!&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:a6ac6ef1-c4b4-49e3-b72e-4da39d642e56" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/WCF" rel="tag"&gt;WCF&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Serialization" rel="tag"&gt;Serialization&lt;/a&gt;,&lt;a href="http://technorati.com/tags/.Net%203.5" rel="tag"&gt;.Net 3.5&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=124466"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=124466" 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/rakker/aggbug/124466.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Robert May</dc:creator>
            <guid>http://geekswithblogs.net/rakker/archive/2008/08/15/124466.aspx</guid>
            <pubDate>Fri, 15 Aug 2008 17:38:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/rakker/comments/124466.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/rakker/archive/2008/08/15/124466.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/rakker/comments/commentRss/124466.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/rakker/services/trackbacks/124466.aspx</trackback:ping>
        </item>
        <item>
            <title>How to annoy your ScrumMaster</title>
            <link>http://geekswithblogs.net/rakker/archive/2008/07/30/124133.aspx</link>
            <description>&lt;p&gt;As a ScrumMaster, these are some of my pet peeves, in no particular order:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Come late to meetings.  Better yet, don't show up to the meeting, don't let anyone know that you're going to miss the meeting, and then get grumpy when the ScrumMaster asks you to not do it again.  After all, the team doesn't really need to know what you're doing.&lt;/li&gt; &lt;li&gt;Ignore the priority of stories set by the product owner.  He loves not knowing what's going to be completed at the end of the iteration.&lt;/li&gt; &lt;li&gt;Have side conversations during iteration (sprint) planning, or send chat messages on your computer.  Then, when asked a question about what you should have been paying attention to, have a lost look and say, "Could you repeat that," meaning the last 10 minutes of conversation.  Rinse, repeat.&lt;/li&gt; &lt;li&gt;Prefer e-mail for communication.  After all, you don't have to bother talking to a human being and you can do nothing while you wait for a reply!  Heaven.  Why would someone use the phone, an office visit, a chat, screen sharing or any of those other pesky interactive conversation mechanisms.&lt;/li&gt; &lt;li&gt;Never ask for help, and if you do, make sure you always ask the same team member, even if others might know more.  It'll make person your asking much less productive, since he'll have to do your work and his work too!  And if you don't ask for help, you can do nothing and blame it on not being up to speed!  Teamwork, Shmeemwork.&lt;/li&gt; &lt;li&gt;Own your stories, and by own, I mean OWN.  You touch my story, you die!  Then, at the end of the iteration, when you didn't get it completed, make sure they knew it was because you were struggling with a piece of the story.  Make sure you don't act like you feel bad to the team or anything, after all, they should have know that you wanted help, even when you told them to mind their own business.&lt;/li&gt; &lt;li&gt;If you can think of something cool to add, add it now.  After all, there's no time like the present!  And then, when the team misses the iteration, you can say, "But we have a cool XYZ feature now!"  Who cares if you didn't need that feature and it wasn't a priority to the product owner.  They'll get over it.&lt;/li&gt; &lt;li&gt;If you really, really, want a feature to be implemented in iteration, make a defect, and set it to the highest priority available.  So what if it's way beyond the scope of what the team committed to do!  They'll get over it.&lt;/li&gt;&lt;/ol&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:6e065685-653c-4637-88b3-0702ff44395a" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Agile" rel="tag"&gt;Agile&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Scrum" rel="tag"&gt;Scrum&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=124133"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=124133" 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/rakker/aggbug/124133.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Robert May</dc:creator>
            <guid>http://geekswithblogs.net/rakker/archive/2008/07/30/124133.aspx</guid>
            <pubDate>Wed, 30 Jul 2008 23:27:40 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/rakker/comments/124133.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/rakker/archive/2008/07/30/124133.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/rakker/comments/commentRss/124133.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/rakker/services/trackbacks/124133.aspx</trackback:ping>
        </item>
        <item>
            <title>Great article on Bad Apples</title>
            <link>http://geekswithblogs.net/rakker/archive/2008/07/23/123978.aspx</link>
            <description>&lt;p&gt;Read this &lt;a href="http://www.codinghorror.com/blog/archives/001154.html"&gt;article&lt;/a&gt; today.  We've had a couple of bad apples on our team so far, and they caused quite a bit of grief before they were removed.&lt;/p&gt; &lt;p&gt;On an agile team, the team can't function if the apples are bad, and a single bad apple can cause much grief for the entire team.&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:ffc63841-827a-4bf7-92aa-5d8fa87677f9" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Agile" rel="tag"&gt;Agile&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=123978"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=123978" 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/rakker/aggbug/123978.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Robert May</dc:creator>
            <guid>http://geekswithblogs.net/rakker/archive/2008/07/23/123978.aspx</guid>
            <pubDate>Wed, 23 Jul 2008 19:37:59 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/rakker/comments/123978.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/rakker/archive/2008/07/23/123978.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/rakker/comments/commentRss/123978.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/rakker/services/trackbacks/123978.aspx</trackback:ping>
        </item>
        <item>
            <title>If only it weren't so true</title>
            <link>http://geekswithblogs.net/rakker/archive/2008/07/17/123855.aspx</link>
            <description>&lt;p&gt;I've experienced &lt;a href="http://thedailywtf.com/Articles/That-Wouldve-Been-an-Option-Too.aspx"&gt;this&lt;/a&gt; before, and all you can do is cry.&lt;/p&gt; &lt;p&gt;This is why agile is so important.  Instead of one person making all of the decisions, you have a team that makes the decisions.  The "manager" tends to fall into just a product owner role, which is a good thing.  In a team situation, the intern would have had a chance to put out his ideas as to a solution.&lt;/p&gt; &lt;p&gt;In agile, they would have been in two to four week intervals, so rather than a 5 month development period, the stakeholders (i.e. the boss) would have seen partial results in a month or less and would have been able to decide if the cost of what was happening was worth it.  Probably the team would have concluded that other than a little optimization, the adding of more memory was the best solution.&lt;/p&gt; &lt;p&gt;Go Agile, it's worth it.&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:7016b9a8-a5fd-4a00-9ffb-f19a13c64d45" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Agile" rel="tag"&gt;Agile&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=123855"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=123855" 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/rakker/aggbug/123855.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Robert May</dc:creator>
            <guid>http://geekswithblogs.net/rakker/archive/2008/07/17/123855.aspx</guid>
            <pubDate>Thu, 17 Jul 2008 17:48:09 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/rakker/comments/123855.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/rakker/archive/2008/07/17/123855.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/rakker/comments/commentRss/123855.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/rakker/services/trackbacks/123855.aspx</trackback:ping>
        </item>
        <item>
            <title>Mage and MinVersion</title>
            <link>http://geekswithblogs.net/rakker/archive/2008/07/16/123828.aspx</link>
            <description>&lt;p&gt;Well, that was certainly annoying.  I'm trying to create a new application manifest (deployment manifest), and if I use the -MinVersion (-mv) option as specified in the &lt;a href="http://msdn.microsoft.com/en-us/library/acz3y3te(VS.80).aspx"&gt;Mage documentation&lt;/a&gt;, it fails with the error, "The minimum version specified is not valid."  I'm guessing that this goes hand in hand with the bug that I ran into earlier where you can't do anything but a check after install when using mage.  For that &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=926538&amp;amp;SiteID=1"&gt;defect&lt;/a&gt;, I ended up running some code to replace the &amp;lt;expiration maximumAge="0" unit="days" /&amp;gt; tag with &amp;lt;beforeApplicationStartup/&amp;gt;, since mage won't do it correctly.&lt;/p&gt; &lt;p&gt;To get around this problem, you end up needing to run mage twice.  First, to create the deployment manifest, and second to add the -MinVersion property to the app.  Like so (in MSBuild):&lt;/p&gt; &lt;p&gt;&amp;lt;Exec WorkingDirectory="$(DeployTempDir)" Command="mage.exe -New Deployment -ToFile MyApp.application -Version $(BuildLabel) -Name &amp;amp;quot;App&amp;amp;quot; -providerUrl https://www.myurl.com/myapp/myapp.application -AppManifest $(BuildLabel)\MyApp.exe.manifest -Install true"&amp;gt;&amp;lt;/Exec&amp;gt;&lt;br /&gt;&amp;lt;Exec WorkingDirectory="$(DeployTempDir)" Command="mage.exe -Update MyApp.application -MinVersion $(BuildLabel)"&amp;gt;&amp;lt;/Exec&amp;gt;  &lt;/p&gt;&lt;p&gt;Kinda silly, but it works.&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:809f675a-c061-4c9e-af82-bfe8264e9e56" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Mage" rel="tag"&gt;Mage&lt;/a&gt;,&lt;a href="http://technorati.com/tags/MSBuild" rel="tag"&gt;MSBuild&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ClickOnce" rel="tag"&gt;ClickOnce&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=123828"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=123828" 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/rakker/aggbug/123828.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Robert May</dc:creator>
            <guid>http://geekswithblogs.net/rakker/archive/2008/07/16/123828.aspx</guid>
            <pubDate>Wed, 16 Jul 2008 19:34:56 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/rakker/comments/123828.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/rakker/archive/2008/07/16/123828.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/rakker/comments/commentRss/123828.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/rakker/services/trackbacks/123828.aspx</trackback:ping>
        </item>
        <item>
            <title>Agile and how to make it fail</title>
            <link>http://geekswithblogs.net/rakker/archive/2008/07/08/123656.aspx</link>
            <description>&lt;p&gt;Read a great &lt;a href="http://www.stickyminds.com/BetterSoftware/magazine.asp?fn=cifea"&gt;article&lt;/a&gt; on how to make agile fail today.  Very entertaining and educational!&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:eaddf195-528b-49bc-89d1-8fd3d4de9446" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Agile" rel="tag"&gt;Agile&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=123656"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=123656" 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/rakker/aggbug/123656.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Robert May</dc:creator>
            <guid>http://geekswithblogs.net/rakker/archive/2008/07/08/123656.aspx</guid>
            <pubDate>Tue, 08 Jul 2008 20:33:42 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/rakker/comments/123656.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/rakker/archive/2008/07/08/123656.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/rakker/comments/commentRss/123656.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/rakker/services/trackbacks/123656.aspx</trackback:ping>
        </item>
        <item>
            <title>Well, that was fun! An adventure in WCF, SSL, and Host Headers</title>
            <link>http://geekswithblogs.net/rakker/archive/2008/07/03/123562.aspx</link>
            <description>&lt;p&gt;Had a problem with WCF that I thought I should blog about.&lt;/p&gt; &lt;p&gt;We're in the scenario where we have a WCF service that needs to call another service to do some calculating and then return the result back to the client.  For now, the service is hosted on the same server, but eventually, it could get expensive, so we'll push out that calculation to another server.&lt;/p&gt; &lt;p&gt;The WCF configuration also has an endpoint address that is not the same as the base address reported to it by IIS; IIS is of course reporting the machine name for the base address.  So here's the problem, you'd browse to the service url https://my.url.com/service/service.svc and you'd get the nice service page, but the url for the WSDL would be wrong, it'd be https://servername.anotherurl.com/service/service.svc?wsdl, and when the service would try and call the first url, you'd get weird 404 File Not Found errors, even though you could browse to the service and it'd work fine!&lt;/p&gt; &lt;p&gt;Turns out the 404 error was somewhat of a bad error.  The file was being found, but the XSD's that were generated were not, because they were at the wrong url.  If you clicked on the wsdl location, you'd see urls for https://servername.anotherurl.com/service/service.svc?xsd=xsd0 or something like that.&lt;/p&gt; &lt;p&gt;To make matters worse, the ssl certificate didn't match the servername url, which caused problems.  I didn't discover this until I tried to run svcutil on the service and came up with:&lt;/p&gt; &lt;p&gt;Attempting to download metadata from 'https://my.url.com/service/service.svc?wsdl' using WS-Metadata Exchange or DISCO.&lt;br /&gt;Microsoft (R) Service Model Metadata Tool&lt;br /&gt;[Microsoft (R) Windows (R) Communication Foundation, Version 3.0.4506.648]&lt;br /&gt;Copyright (c) Microsoft Corporation.  All rights reserved.  &lt;/p&gt;&lt;p&gt;Error: Cannot obtain Metadata from https://my.url.com/service/service.svc?wsdl  &lt;/p&gt;&lt;p&gt;If this is a Windows (R) Communication Foundation service to which you have access, please check that you have enabled metadata publishing at the specified address.  For help enabling metadata publishing, please refer to the MSDN documentation at &lt;a href="http://go.microsoft.com/fwlink/?LinkId=65455"&gt;http://go.microsoft.com/fwlink/?LinkId=65455&lt;/a&gt;.  &lt;/p&gt;&lt;p&gt;WS-Metadata Exchange Error&lt;br /&gt;    URI: https://my.url.com/service/service.svc?wsdl  &lt;/p&gt;&lt;p&gt;    Metadata contains a reference that cannot be resolved: 'https://my.url.com/service/service.svc?wsdl'.  &lt;/p&gt;&lt;p&gt;    There was no endpoint listening at https://my.url.com/service/service.svc?wsdl that could accept the message. This is often&lt;br /&gt;caused by an incorrect address or SOAP action. See InnerException, if present,&lt;br /&gt;for more details.  &lt;/p&gt;&lt;p&gt;    The remote server returned an error: (404) Not Found.  &lt;/p&gt;&lt;p&gt;HTTP GET Error&lt;br /&gt;    URI: https://my.url.com/service/service.svc?wsdl  &lt;/p&gt;&lt;p&gt;    The document was understood, but it could not be processed.&lt;br /&gt;  - The WSDL document contains links that could not be resolved.&lt;br /&gt;  - There was an error downloading 'https://servername.anotherurl.com/service/service.svc?xsd=xsd0'.&lt;br /&gt;  - The underlying connection was closed: Could not establish trust relationship&lt;br /&gt;for the SSL/TLS secure channel.&lt;br /&gt;  - The remote certificate is invalid according to the validation procedure.  &lt;/p&gt;&lt;p&gt; &lt;/p&gt; &lt;p&gt;After digging forever, I went down the path of seeing if I could modify the base address.  Nope, that failed, IIS provides the base address and what you set in the config is ignored.  So I tried modifying the behavior to have a specific behavior for this service.  That fails, because the URL is then created twice and you'll get an error.  Finally, I discovered that you can indeed use host headers on ssl!&lt;/p&gt; &lt;p&gt;Following the instructions &lt;a href="http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/8d9f2a8f-cd23-448c-b2c7-f4e87b9e2d2c.mspx?mfr=true"&gt;here&lt;/a&gt;, I set the host header and after restarting IIS, the service page displayed the right urls, and the service worked like a charm.  You can get the service ID from IIS by clicking the Web Sites folder.  Also, the adsutil script is in the AdminScripts folder under inetpub.&lt;/p&gt; &lt;p&gt;I also discovered that you can't have more than one host header for IIS or wcf will break.  Bummer.  You can fix it with an &lt;a href="http://www.robzelt.com/blog/2007/01/24/WCF+This+Collection+Already+Contains+An+Address+With+Scheme+Http.aspx"&gt;article&lt;/a&gt; by Rob Zelt.  I don't like how he arbitrarily picks a host header; that seems rather fragile.  I'd instead read the base address out of a config file and then iterate through until I found the one that matched (or even just set it without using the passed in host headers at all).&lt;/p&gt; &lt;p&gt;Anyway, now I know!&lt;/p&gt; &lt;p&gt;Update (7/7/08): You also need to not have a value for the endpoint address.  Not sure why, but that seems to make it work.&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:772d6113-3826-467e-beac-52ae8c0d4954" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/WCF" rel="tag"&gt;WCF&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SSL" rel="tag"&gt;SSL&lt;/a&gt;,&lt;a href="http://technorati.com/tags/IIS" rel="tag"&gt;IIS&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=123562"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=123562" 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/rakker/aggbug/123562.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Robert May</dc:creator>
            <guid>http://geekswithblogs.net/rakker/archive/2008/07/03/123562.aspx</guid>
            <pubDate>Thu, 03 Jul 2008 17:49:49 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/rakker/comments/123562.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/rakker/archive/2008/07/03/123562.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/rakker/comments/commentRss/123562.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/rakker/services/trackbacks/123562.aspx</trackback:ping>
        </item>
        <item>
            <title>Ya think!</title>
            <link>http://geekswithblogs.net/rakker/archive/2008/07/01/123506.aspx</link>
            <description>&lt;p&gt;So Netflix decided that a campaign, by their most loyal customers, to see them destroyed was a bad thing.  I got this in my e-mail yesterday:&lt;/p&gt; &lt;p&gt;"You spoke, and we listened. We are keeping Profiles. Thank you for all the calls and emails telling us how important Profiles are.&lt;br /&gt;We are sorry for any inconvenience we may have caused. We hope the next time you hear from us we will delight, and not disappoint, you. &lt;br /&gt;-Your friends at Netflix"&lt;/p&gt; &lt;p&gt;They've created a lot of bad blood and mistrust, however.  How long before they dump profiles again?  If they were to make it so that you can have separate queues per dvd, I'd not care if they dump the profiles, but just taking it away without an option was stupid beyond belief.&lt;/p&gt; &lt;p&gt;It's a step in the right direction, Netflix.&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:d2f8865b-d837-4a80-a519-f9abda59bad5" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Netflix" rel="tag"&gt;Netflix&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=123506"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=123506" 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/rakker/aggbug/123506.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Robert May</dc:creator>
            <guid>http://geekswithblogs.net/rakker/archive/2008/07/01/123506.aspx</guid>
            <pubDate>Tue, 01 Jul 2008 13:52:27 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/rakker/comments/123506.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/rakker/archive/2008/07/01/123506.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/rakker/comments/commentRss/123506.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/rakker/services/trackbacks/123506.aspx</trackback:ping>
        </item>
        <item>
            <title>What, you can't be serious??</title>
            <link>http://geekswithblogs.net/rakker/archive/2008/06/19/123023.aspx</link>
            <description>&lt;p&gt;Read &lt;a href="http://www.foxnews.com/story/0,2933,369302,00.html"&gt;this&lt;/a&gt; on foxnews today.  I had to laugh.  Having been a system admin, all I can think is duh?  Have they never read BOFH?  If you don't know what it is, read it &lt;a href="http://members.iinet.net.au/~bofh/"&gt;here&lt;/a&gt; and &lt;a href="http://www.theregister.co.uk/odds/bofh/"&gt;here&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Several notes:&lt;/p&gt; &lt;p&gt;1. We don't need to change our passwords as often.  We don't write them down on sticky notes and post them on our desks.  We don't give them out over the phone in restaurants (I overheard a bank teller's username and password once in a restaurant while she was on lunch break . . .), and we practice safe computing.  We know that passwords are stupid and unreliable and that anything that's really important is encrypted on our personal hard drives.  hehe.&lt;/p&gt; &lt;p&gt;2. After I found out my boss was cheating people, I looked at his e-mail and made sure we had records to get him locked away, should the need arise.  Is that directly related to my job??&lt;/p&gt; &lt;p&gt;3. We all have IT policies that say that your e-mail can be perused at any time and that you shouldn't consider it private.  Just because you assumed that meant it would only be done when some higher up thought it was necessary isn't our fault!&lt;/p&gt; &lt;p&gt;4. Why in the $&amp;amp;@^ did they put a picture of IIS in the story??  Clearly, the person writing it had no clue about how things work.  I especially like the quote, "For most people, administrative passwords are a seemingly innocuous tool used by the IT department to update or amend &lt;a href="http://www.foxnews.com/#"&gt;systems&lt;/a&gt;. . ." Administrator passwords are tools used to update or amend systems?  What?  c:\AdministratorPassword.bat -raiseMySalary?&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:5ff7963f-e935-4553-b246-8c0960ea8cb7" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/System%20Administration" rel="tag"&gt;System Administration&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Security" rel="tag"&gt;Security&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=123023"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=123023" 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/rakker/aggbug/123023.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Robert May</dc:creator>
            <guid>http://geekswithblogs.net/rakker/archive/2008/06/19/123023.aspx</guid>
            <pubDate>Fri, 20 Jun 2008 00:21:07 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/rakker/comments/123023.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/rakker/archive/2008/06/19/123023.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/rakker/comments/commentRss/123023.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/rakker/services/trackbacks/123023.aspx</trackback:ping>
        </item>
    </channel>
</rss>