<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>Con Livus</title>
        <link>http://geekswithblogs.net/geekusconlivus/category/1773.aspx</link>
        <description>What would Geekus Con Livus be if we didn't have a section dedicated to "having a life"?</description>
        <language>en-US</language>
        <copyright>Malcolm Anderson</copyright>
        <managingEditor>malcolm.b.anderson@gmail.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <item>
            <title>Scrum won't help the nosey CEO</title>
            <link>http://geekswithblogs.net/geekusconlivus/archive/2009/09/09/scrum-wont-help-the-nosey-ceo.aspx</link>
            <description>I've seen it come up in discussion groups time after time, the management wants to measure productivity in their development team and developers just want to be left alone to code.  Recently some one asked:&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Maybe it's also time for a frank discussion of "What does the CEO&lt;br /&gt;
&amp;gt; *really* need" for visibility?  Is it really metrics that do not make&lt;br /&gt;
&amp;gt; any sense (and costs a lot to collect)?&lt;br /&gt;
&lt;br /&gt;
No, it's time that we turn this question on it's head, because it's not "What does the CEO *really* need" for visibility?.  The CEO's job is to maximize profits for the shareholders, anything else is a dereliction of their duties, he or she really *does* need visibility.  &lt;br /&gt;
&lt;br /&gt;
The question is, how can we turn the development team into a profit center?  This is an ongoing issue in the corporate world where IT typically falls under the CFO rather than the CEO.&lt;br /&gt;
&lt;br /&gt;
We as development staff have to remember, CEO's care about raising profits, CFO,s care about cutting costs.  We as development staff have trained CxO's that software is unpredictable and mysterious, so naturally, they apply dilbert-esq techniques to it hoping to fix it.&lt;br /&gt;
&lt;br /&gt;
Maybe it's time for a frank discussion of "What can we do to help the CEO with his or her goals of increasing company profits?"  &lt;br /&gt;
&lt;br /&gt;
Scrum is not going to help the CEO, at least not directly, but if you have an agile coach helping developers to start taking the profit question seriously then scrum could provide a fast road to moving software development out of the shadows and into the strategy sessions where it belongs in an information age.&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=134580"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=134580" 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/geekusconlivus/aggbug/134580.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Malcolm Anderson</dc:creator>
            <guid>http://geekswithblogs.net/geekusconlivus/archive/2009/09/09/scrum-wont-help-the-nosey-ceo.aspx</guid>
            <pubDate>Wed, 09 Sep 2009 16:02:03 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/geekusconlivus/comments/134580.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/geekusconlivus/archive/2009/09/09/scrum-wont-help-the-nosey-ceo.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/geekusconlivus/comments/commentRss/134580.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/geekusconlivus/services/trackbacks/134580.aspx</trackback:ping>
        </item>
        <item>
            <title>Microsoft Robotics Studio - What?</title>
            <link>http://geekswithblogs.net/geekusconlivus/archive/2008/06/02/122566.aspx</link>
            <description>&lt;a href="http://www.robochamps.com/" target="_blank"&gt;&lt;img width="579" height="257" align="top" src="/images/geekswithblogs_net/geekusconlivus/RoboChamps/RoboChamps.PNG" alt="" /&gt;&lt;/a&gt;
&lt;p&gt;Once more, Microsoft is handing out free tools, and doing cool stuff, and putting the fun back into programming.  &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.robochamps.com/rc/Common/challenge.aspx?id=Maze" target="_blank"&gt;&lt;img width="325" height="274" align="texttop" src="/images/geekswithblogs_net/geekusconlivus/RoboChamps/Challenges.PNG" alt="Are you up for the challenge?" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is not a game, it's a full fledged robotics language, and simulator.  Ever wanted to show how easy it would be to have robot navigate a maze or program a rescue robot, or a soccor droid?  Well now you can.  Currently the only one available is the maze navigation (complete with traps), but more will be released over the course of the year.&lt;/p&gt;
&lt;p&gt;It looks like you can upload your program, and the winners will have their programs loaded on to real bots that will go head to head at the PDC.  The be all, end all winner, gets a robot of their own.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=EB00C558-2163-45A5-BEFE-531AD48BC525&amp;amp;displaylang=en"&gt;Click here to download the MS Robotics Developer Studio 2008 (CTP April)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/robotics/default.aspx"&gt;Click here to go to the Microsoft Robotics Developer Center&lt;/a&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt; I've really got nothing more than, "This is cool"&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=122566"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=122566" 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/geekusconlivus/aggbug/122566.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Malcolm Anderson</dc:creator>
            <guid>http://geekswithblogs.net/geekusconlivus/archive/2008/06/02/122566.aspx</guid>
            <pubDate>Mon, 02 Jun 2008 21:03:53 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/geekusconlivus/comments/122566.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/geekusconlivus/archive/2008/06/02/122566.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/geekusconlivus/comments/commentRss/122566.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/geekusconlivus/services/trackbacks/122566.aspx</trackback:ping>
        </item>
        <item>
            <title>Can anyone give me a better explanation?</title>
            <link>http://geekswithblogs.net/geekusconlivus/archive/2007/07/19/114060.aspx</link>
            <description>&lt;p&gt;&lt;font face="Arial"&gt;I'm not sure who sold the Federal and State government on the idea that "restricting all employee's email to MS Outlook is an effective counter to computer viruses." or "Allowing gmail, hotmail, or yahoo mail is an open invitation to computer viruses".  I'm thinking that the marketing department in the "MS" of "MS Outlook" might be a good starting point to look.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Both thoughts have rendered &lt;font face="Arial"&gt;me temporarily speechless&lt;/font&gt;.  Perhaps because both thoughts make as much sense to me as, "Eating apples is the only way to effectively protect your crops from rabbits".  &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;The speechless problem in both cases (once in a federal agency, and once in a state agency) seems to be related to the fact that I didn't have any response other than, “That’s really funny” followed by "Are you completely stupid?" when I realized they weren’t joking.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;I’m guessing that, both times, my inability to speak may have been indicative of my job survival gene kicking in, but I can’t be sure of that.&lt;br /&gt;
 &lt;br /&gt;
Can someone check me on this?  Last I knew, MS Outlook was not proof against social engineering, and that during that last decade, the major e-mail pathogens have mostly used some flavor of MS Outlook as their primary transport vector.  &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Does MS Outlook have some kind of security feature I don’t know about?&lt;br /&gt;
&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114060"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114060" 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/geekusconlivus/aggbug/114060.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Malcolm Anderson</dc:creator>
            <guid>http://geekswithblogs.net/geekusconlivus/archive/2007/07/19/114060.aspx</guid>
            <pubDate>Thu, 19 Jul 2007 19:00:21 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/geekusconlivus/comments/114060.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/geekusconlivus/archive/2007/07/19/114060.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/geekusconlivus/comments/commentRss/114060.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/geekusconlivus/services/trackbacks/114060.aspx</trackback:ping>
        </item>
        <item>
            <title>Programmers and Capitalism - The $10,000,000 question</title>
            <link>http://geekswithblogs.net/geekusconlivus/archive/2007/07/13/113921.aspx</link>
            <description>&lt;p&gt;My friend &lt;a href="http://blogs.msdn.com/nickmalik"&gt;Nick Malik&lt;/a&gt; recently posted about &lt;a href="http://blogs.msdn.com/nickmalik/archive/2007/07/12/random-thought-on-ethics-and-rights.aspx"&gt;programming, contracting and pay&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;There's a book here somewhere, but sadly it has no audience, and therefore not worth writing.  &lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;font face="Arial"&gt;Programmers seem to have a genetic defect when it comes to understanding the relationship between their efforts and their pay.  It's not going to happen, they don't want to, and you can't make me.&lt;/font&gt;&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Personally, I think that it's a crime that &lt;a href="http://www.amazon.com/Serf-Surfer-Becoming-Network-Consultant/dp/0782126618"&gt;"From Serf to Surfer"&lt;/a&gt; is out of print.  It was one of the best consulting "pull yourself up by the boot-strap" books I've ever read.  The advice is relevant to ANY consultant in ANY field.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Programmers seem to understand that "my work is worth $x.xx an hour" but they do not understand the WHY behind it.  &lt;/font&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Here's a quick little story problem to test your job worth intelligence.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Let's imagine that company JKL has a particular job function (FooBar) that has to be done.  That job function will have to be done for at least the next 6 years.  The FooBar job function is so important that there's even a FooBar department.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;JKL's FooBar department has 100 dedicated people doing the FooBar job.  Every one in that department makes $50K annually.  &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;JKL access to a consulting group which offers a tiger team of 5 expensive programmers, each of whom cost $200K annually, and have track record of completing their projects on time and on budget.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;The tiger team says that they can, in 1 year, automate the FooBar department such that the department can effectively cut %50 percent of it's staff at the end of the project.   &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;The tiger team has one other condition, on successful completion of the project; each programmer will get an additional $100,000 a year for the next 5 years regardless of their employment status with the consulting company.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Assuming that the programmers will be successful, and that JKL stays in business for at least the next 6 years, should the company hire the tiger team, and if so, just how much is this project worth to JKL?&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=113921"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=113921" 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/geekusconlivus/aggbug/113921.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Malcolm Anderson</dc:creator>
            <guid>http://geekswithblogs.net/geekusconlivus/archive/2007/07/13/113921.aspx</guid>
            <pubDate>Fri, 13 Jul 2007 18:06:26 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/geekusconlivus/comments/113921.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/geekusconlivus/archive/2007/07/13/113921.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/geekusconlivus/comments/commentRss/113921.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/geekusconlivus/services/trackbacks/113921.aspx</trackback:ping>
        </item>
        <item>
            <title>Starting your own brown-bag study group</title>
            <link>http://geekswithblogs.net/geekusconlivus/archive/2007/05/09/112380.aspx</link>
            <description>&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;At my current assignment I'm in the process of starting a brown-bag study group.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Calibri" size="3"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Calibri" size="3"&gt;Here's the announcement I sent out to all the relevant parties I could think of at my work.&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Calibri" size="3"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Calibri" size="3"&gt;********************************************************&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Next Thursday (May 17&lt;sup&gt;th&lt;/sup&gt;) we’re kicking off a lunch time study group for anyone who is interested. &lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Calibri" size="3"&gt; &lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;We’re going to be starting with “The Pragmatic Programmer: from journeyman to master” by Andrew Hunt and David Thomas.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Calibri" size="3"&gt; &lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;This is one of those books that seems to stay at the top of the industry “must read” lists, (right there next to “mythical man month”).&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Calibri" size="3"&gt; &lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;So if you’ve always wanted to read this book, and needed a good excuse, show up next Thursday in the &amp;lt;our lunch room&amp;gt; with your lunch, and we’ll go from there.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Calibri" size="3"&gt; &lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Malcolm&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Calibri" size="3"&gt; &lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Ps, we recommend you obtain and bring your copy of TPP to this kickoff event.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Calibri" size="3"&gt; &lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;o:p&gt;&lt;font face="Calibri" size="3"&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Calibri" size="3"&gt;********************************************************&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt; &lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;This is giving me a week to figure out how to facilitate an in house study group.  Has anyone else had any experience with starting something like this?&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt; &lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;Any pitfalls I should watch out for?  &lt;/p&gt;
&lt;/font&gt;&lt;/o:p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=112380"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=112380" 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/geekusconlivus/aggbug/112380.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Malcolm Anderson</dc:creator>
            <guid>http://geekswithblogs.net/geekusconlivus/archive/2007/05/09/112380.aspx</guid>
            <pubDate>Thu, 10 May 2007 02:34:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/geekusconlivus/comments/112380.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/geekusconlivus/archive/2007/05/09/112380.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/geekusconlivus/comments/commentRss/112380.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/geekusconlivus/services/trackbacks/112380.aspx</trackback:ping>
        </item>
        <item>
            <title>The Perils of Pre-Optimization</title>
            <link>http://geekswithblogs.net/geekusconlivus/archive/2007/02/15/106411.aspx</link>
            <description>&lt;P&gt;More computing sins are committed in the name of efficiency (without necessarily achieving it) than for any other single reason - including blind stupidity.&lt;BR&gt;Wulf, W. A. "A Case Against the GOTO," Proceedings of the 25th National ACM Conference, August 1972, pp. 791-97.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;I came across this quote this morning and had to throw it back out into the wild.&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;I have run into people who, when given a choice between&amp;nbsp;making their code more&amp;nbsp;readable vs.&amp;nbsp;shaving&amp;nbsp;a millisecond off the running time of a particular process are confused by anyone who would go for readability.&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;Now to their credit, these same people are used to working deep in the bowels of production loops, where shaving a millisecond off of a process will compound to a point of saving hours of processing time a day.&amp;nbsp; It really is a big thing where they come from, but when they enter my world, that of business software, they go insane at my complete and utter lack of care for their milliseconds.&amp;nbsp; Granted, my users don't want to wait any longer than they have to for the response to their query, but when response time is measured in seconds, a millisecond here or there really isn't going to make any difference.&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=106411"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=106411" 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/geekusconlivus/aggbug/106411.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Malcolm Anderson</dc:creator>
            <guid>http://geekswithblogs.net/geekusconlivus/archive/2007/02/15/106411.aspx</guid>
            <pubDate>Thu, 15 Feb 2007 13:52:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/geekusconlivus/comments/106411.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/geekusconlivus/archive/2007/02/15/106411.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/geekusconlivus/comments/commentRss/106411.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/geekusconlivus/services/trackbacks/106411.aspx</trackback:ping>
        </item>
        <item>
            <title>Windows Media Player "Feature"</title>
            <link>http://geekswithblogs.net/geekusconlivus/archive/2007/01/02/102590.aspx</link>
            <description>&lt;P&gt;So last night my windows media player developed a&amp;nbsp;fascinating bug.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Prior to last night, I could play a movie in one screen and do work in the other.&amp;nbsp; But not anymore.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.expresscomputeronline.com/20040712/techspace01.shtml"&gt;A Computer Express article from July of 2004&lt;/A&gt; (&lt;A href="http://72.14.253.104/search?q=cache:YRnp1_ks-ZgJ:www.expresscomputeronline.com/20040712/techspace01.shtml+media+player+monitor+dual&amp;amp;hl=en&amp;amp;gl=us&amp;amp;ct=clnk&amp;amp;cd=4"&gt;Try the cached version&amp;nbsp;here&lt;/A&gt;) had this to say:&lt;/P&gt;
&lt;P&gt;"3. Video playback Windows Media: Windows Media Player automatically detects the availability of a double display configuration. When you play the media clip (videos, DVC, VCD) Media Player automatically plays it in full screen mode on the secondary display. On the primary display, the full UI version of Windows Media plays. This way, you can adjust the video properties, audio graphic equalizer settings on the base display, while full screen video is projected on the secondary screen (typically the projector). "&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.peterprovost.org/archive/2003/08/11/693.aspx"&gt;Peter Provost mentioned this bug back in August of 2003&lt;/A&gt;&amp;nbsp;and he doesn't seem to have gotten an answer for his question, "Does anyone know how to stop this behavior? Ideally it should be something I can control on the fly. It is very annoying when you don't want it, but useful when you do want it"&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The worst part is that up until the last day of 2006, my media player worked with out this really nasty feature.&amp;nbsp; And then *poof* January 1st 2007, a 3+ year old bug .... sorry, feature, shows up to haunt me.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Does anyone know of a solution?&amp;nbsp; I would like to be able to alter the configuration of windows media player to either hijack my secondary monitor, or free it up for my use.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Lastly does anyone know someone on the windows media team who might know the answer?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;[Edit]&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.realtimesoft.com/multimon/faq.asp#VideoMirroring"&gt;Found it, I don't know who the realtimesoft.com people are, but they pinpointed the solution to an irritating issue.&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A name=VideoMirroring&gt;&lt;B&gt;When playing a video, it is also shown fullscreen on the other monitor&lt;/B&gt;&lt;/A&gt;&lt;BR&gt;This happens if the video mirroring feature of your video card is enabled. You can disable this option on the tab for your video card under advanced display properties, Nvidia calls this feature Full Screen Video, for ATI video cards it is called theater mode, and Matrox calls it PureVideo/DVDMax.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I went in to my NVidia menu, and there on the GForce 6500 menu (it's an odd little side popout menu) was an entry for "Full Screen Video".&amp;nbsp; In the second section there is a drop down for "Full screen device", some how it had gotten set to "auto select", I put it back to "Disable" and all was right with the world again.&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=102590"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=102590" 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/geekusconlivus/aggbug/102590.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Malcolm Anderson</dc:creator>
            <guid>http://geekswithblogs.net/geekusconlivus/archive/2007/01/02/102590.aspx</guid>
            <pubDate>Wed, 03 Jan 2007 02:53:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/geekusconlivus/comments/102590.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/geekusconlivus/archive/2007/01/02/102590.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/geekusconlivus/comments/commentRss/102590.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/geekusconlivus/services/trackbacks/102590.aspx</trackback:ping>
        </item>
        <item>
            <title>Those darn sales skills again</title>
            <link>http://geekswithblogs.net/geekusconlivus/archive/2006/10/03/93095.aspx</link>
            <description>&lt;P&gt;I'm convinced that our profession (IT in general, and software in the specific) is filled with people who do not want to be bothered by that pesky question of, &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;#8220;Where exactly does the money come from that fills your paycheck?&amp;#8221;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Our lack of interest in all things &amp;#8220;sales&amp;#8221; hurts us in what we do.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I'm not sure where to take this though, the people who understand what sales really is say, &amp;#8220;Preach On, Brother&amp;#8221;, and everyone else just kind of rolls their eyes, comments on what an idiot I am, and then goes back to their job that is paying 70% of industry standard.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Is it really a case, where the people who care, already care, and the people who don't, never will?&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=93095"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=93095" 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/geekusconlivus/aggbug/93095.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Malcolm Anderson</dc:creator>
            <guid>http://geekswithblogs.net/geekusconlivus/archive/2006/10/03/93095.aspx</guid>
            <pubDate>Wed, 04 Oct 2006 02:57:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/geekusconlivus/comments/93095.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/geekusconlivus/archive/2006/10/03/93095.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/geekusconlivus/comments/commentRss/93095.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/geekusconlivus/services/trackbacks/93095.aspx</trackback:ping>
        </item>
        <item>
            <title>My Session was small, but it rocked</title>
            <link>http://geekswithblogs.net/geekusconlivus/archive/2006/07/24/86104.aspx</link>
            <description>&lt;P&gt;Friday night, my presentation congealed into garbage.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This was not a good thing.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I had to skip Jeff Levinson's &amp;#8220;Test Driven Development with Team System&amp;#8221; in order to work on my presentation.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I was competing with &amp;#8220;Poker Bots for Fun and Profit&amp;#8221;, with Jeff Berkowitz, Stuart Celariar's &amp;#8220;Understanding Subversion&amp;#8220;,&amp;nbsp;Rory's &amp;#8220;An introduction to WCF for the complete beginner&amp;#8220;and 4 others.&amp;nbsp; There was a part of me that was hoping that no one would show up, because then I could go see one of the other presentations, and another part of me wanted a ton of people.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I ended up with 4 people in my session, of which one of them was Chris Kinsman.&amp;nbsp; When he said it, I was sure I knew that name, then it hit me, &amp;#8220;were you on DotNetRocks about 10 months ago?&amp;#8221;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.dotnetrocks.com/default.aspx?showID=124"&gt;And of course he said &amp;#8220;Yes&amp;#8221;.&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;crap.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I also had Chris Tavares, who just got hired on at Microsoft over at the patterns and practices group.&lt;/P&gt;
&lt;P&gt;double crap.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;These people knew what they were doing, why were they here. crap, crap, crap.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Also in the room were 2 people who were working on projects that needed exactly what I was selling.&amp;nbsp; They were working on projects where the unit testing either wasn't happening, or they were completely bogged down in dependencies.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;What came out of my session, besides the feeling of triumph for setting out to do, and completing, my first conference talk, were a couple of things.&amp;nbsp; The two people who needed the techniques got good value, I know this because I asked.&amp;nbsp; The two people who more than knew what they were doing, provided me with great feed back.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.springframework.net"&gt;The first thing is that there is this Dependency Injection Framework, called Spring, (and in our case Spring.net), and they were expecting that I was going to be doing that talk.&lt;/A&gt;&amp;nbsp; I've been looking into spring.net, and I'm kind of excited about it, looks cool, but I'm not yet, real clear on how it does what it does.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Second thing was that my &amp;#8220;simple sample app&amp;#8221; needed to still be MUCH simpler, and then I needed to walk through the process of creating my stub.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Finally, I needed to explain my constraints, which was &lt;/P&gt;
&lt;P&gt;A) Working in a shared library, where interface changes were outside of the scope of the program.&lt;/P&gt;
&lt;P&gt;B) That it was aimed at working with Legacy code.&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=86104"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=86104" 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/geekusconlivus/aggbug/86104.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Malcolm Anderson</dc:creator>
            <guid>http://geekswithblogs.net/geekusconlivus/archive/2006/07/24/86104.aspx</guid>
            <pubDate>Mon, 24 Jul 2006 10:49:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/geekusconlivus/comments/86104.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/geekusconlivus/archive/2006/07/24/86104.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/geekusconlivus/comments/commentRss/86104.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/geekusconlivus/services/trackbacks/86104.aspx</trackback:ping>
        </item>
        <item>
            <title>Object serialization in VS 2003</title>
            <link>http://geekswithblogs.net/geekusconlivus/archive/2006/07/20/85840.aspx</link>
            <description>&lt;P&gt;I don't know about you, but I have an attention span that is about 20 minutes long.&lt;/P&gt;
&lt;P&gt;If I can get your sample working, doing something (anything) in the first 20 minutes, I may be playing with it when the sun comes up.&lt;/P&gt;
&lt;P&gt;You just have to capture my attention QUICKLY.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In that light, I wanted to post a utility that I wrote to make unit testing mo-bedda (read : easier)&lt;/P&gt;
&lt;P&gt;This consists of the class, and the unit tests to exercise the class.&amp;nbsp; If all goes correctly, you should be able to copy these into new classes, set your references and go.&amp;nbsp; If you already have testdriven.net installed on your machine, this should take you 3 minutes to get running, 7 tops.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;How you arrange these two classes is up to you, however, &amp;nbsp;I did it this way&lt;/P&gt;
&lt;P&gt;SerializeTest (D)&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;STRONG&gt;SerializeTest.sln&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Serializer (D)&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;STRONG&gt;Serializer.vb&lt;/STRONG&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Serializer_UnitTests (D)&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;STRONG&gt;Serializer_UnitTests.vb&lt;/STRONG&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Let me know if you have any problems with this, I'm assuming that you have NUnit installed on your machine, and you know how to set your references up.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Final Disclaimer: I'm passionate about unit testing and agile development in general, mix in the fact that I'm still learning tons.&amp;nbsp; This occationally has me spouting off loudly about something, only to find that I'm completely wrong.&amp;nbsp; If you see something glaring in this code, or my approach .... please tell me, it's the only way I'm going to improve.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Serializer.vb&lt;/STRONG&gt;&lt;/P&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;Option&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Strict&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;On&lt;/P&gt;
&lt;P&gt;Public&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Class&lt;/FONT&gt;&lt;FONT size=2&gt; Serializer&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Public&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Sub&lt;/FONT&gt;&lt;FONT size=2&gt; saveObjectToBinary(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;ByRef&lt;/FONT&gt;&lt;FONT size=2&gt; pThingy &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Object&lt;/FONT&gt;&lt;FONT size=2&gt;, &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;ByVal&lt;/FONT&gt;&lt;FONT size=2&gt; pPath &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;String&lt;/FONT&gt;&lt;FONT size=2&gt;)&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; myFileStream &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; System.IO.Stream = System.IO.File.Create(pPath)&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; mySerializer &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;New&lt;/FONT&gt;&lt;FONT size=2&gt; System.Runtime.Serialization.Formatters.Binary.BinaryFormatter&lt;/P&gt;
&lt;P&gt;mySerializer.Serialize(myFileStream, pThingy)&lt;/P&gt;
&lt;P&gt;myFileStream.Close()&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;End&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Sub&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Public&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Function&lt;/FONT&gt;&lt;FONT size=2&gt; loadObjectFromBinary(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;ByVal&lt;/FONT&gt;&lt;FONT size=2&gt; path &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;String&lt;/FONT&gt;&lt;FONT size=2&gt;) &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Object&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; newThingy &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Object&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; myFileStream &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; System.IO.Stream = System.IO.File.OpenRead(path)&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; mySerializer &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;New&lt;/FONT&gt;&lt;FONT size=2&gt; System.Runtime.Serialization.Formatters.Binary.BinaryFormatter&lt;/P&gt;
&lt;P&gt;newThingy = mySerializer.Deserialize(myFileStream)&lt;/P&gt;
&lt;P&gt;myFileStream.Close()&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Return&lt;/FONT&gt;&lt;FONT size=2&gt; newThingy&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;End&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Function&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;End&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Class&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Serializer_UnitTests.vb&lt;/STRONG&gt;&lt;/P&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;Option&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Strict&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;On&lt;/P&gt;
&lt;P&gt;Imports&lt;/FONT&gt;&lt;FONT size=2&gt; NUnit.Framework&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;Imports&lt;/FONT&gt;&lt;FONT size=2&gt; System.IO&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;Imports&lt;/FONT&gt;&lt;FONT size=2&gt; System&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;
&lt;P&gt;'used for testing serializer&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&amp;lt;Serializable()&amp;gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Public&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Class&lt;/FONT&gt;&lt;FONT size=2&gt; Thingy&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Public&lt;/FONT&gt;&lt;FONT size=2&gt; myString &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;String&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Public&lt;/FONT&gt;&lt;FONT size=2&gt; myInt &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Integer&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;End&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Class&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&amp;lt;TestFixture()&amp;gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Public&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Class&lt;/FONT&gt;&lt;FONT size=2&gt; SerializeTest_UnitTests&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; filePath &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;String&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; mFileExists &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Boolean&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; file &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; file&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; myThingy &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; Thingy&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; o &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; Serializer &lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;' o is always the object under test&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&amp;lt;SetUp()&amp;gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Public&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Sub&lt;/FONT&gt;&lt;FONT size=2&gt; setup()&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;myThingy = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;New&lt;/FONT&gt;&lt;FONT size=2&gt; Thingy&lt;/P&gt;
&lt;P&gt;o = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;New&lt;/FONT&gt;&lt;FONT size=2&gt; Serializer&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;End&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Sub&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Public&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Sub&lt;/FONT&gt;&lt;FONT size=2&gt; DeleteFile(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;ByVal&lt;/FONT&gt;&lt;FONT size=2&gt; filePath &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;String&lt;/FONT&gt;&lt;FONT size=2&gt;)&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; file &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; File&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;If&lt;/FONT&gt;&lt;FONT size=2&gt; file.Exists(filePath) &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Then&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;file.SetAttributes(filePath, FileAttributes.ReadOnly.Normal)&lt;/P&gt;
&lt;P&gt;file.Delete(filePath)&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;End&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;If&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;End&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Sub&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&amp;lt;Test()&amp;gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Public&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Sub&lt;/FONT&gt;&lt;FONT size=2&gt; Binary_SomethingSaves()&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;filePath = "Binary_SomethingSaves.thingy"&lt;/P&gt;
&lt;P&gt;DeleteFile(filePath)&lt;/P&gt;
&lt;P&gt;Assert.AreEqual(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;False&lt;/FONT&gt;&lt;FONT size=2&gt;, file.Exists(filePath), "Precondition: file should not exist")&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;myThingy.myInt = 5&lt;/P&gt;
&lt;P&gt;myThingy.myString = "hello"&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;o.saveObjectToBinary(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;DirectCast&lt;/FONT&gt;&lt;FONT size=2&gt;(myThingy, &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Object&lt;/FONT&gt;&lt;FONT size=2&gt;), filePath)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Assert.AreEqual(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;True&lt;/FONT&gt;&lt;FONT size=2&gt;, file.Exists(filePath), "Postcondition: file should exist")&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;End&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Sub&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&amp;lt;Test()&amp;gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Public&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Sub&lt;/FONT&gt;&lt;FONT size=2&gt; Binary_SaveAndLoad()&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;filePath = "BinaryObject_SaveAndLoad.thingy"&lt;/P&gt;
&lt;P&gt;DeleteFile(filePath)&lt;/P&gt;
&lt;P&gt;Assert.AreEqual(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;False&lt;/FONT&gt;&lt;FONT size=2&gt;, file.Exists(filePath), "Precondition: file should not exist")&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;myThingy.myInt = 5&lt;/P&gt;
&lt;P&gt;myThingy.myString = "hello"&lt;/P&gt;
&lt;P&gt;o.saveObjectToBinary(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;DirectCast&lt;/FONT&gt;&lt;FONT size=2&gt;(myThingy, &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Object&lt;/FONT&gt;&lt;FONT size=2&gt;), filePath)&lt;/P&gt;
&lt;P&gt;Assert.AreEqual(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;True&lt;/FONT&gt;&lt;FONT size=2&gt;, file.Exists(filePath), "Postcondition: file should exist")&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#008000 size=2&gt;'Change the data to double check that we are working on 2 copies of thingy&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;myThingy.myInt = 23&lt;/P&gt;
&lt;P&gt;myThingy.myString = "world"&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; myNewThingy &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; Thingy&lt;/P&gt;
&lt;P&gt;myNewThingy = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;DirectCast&lt;/FONT&gt;&lt;FONT size=2&gt;(o.loadObjectFromBinary(filePath), Thingy)&lt;/P&gt;
&lt;P&gt;Assert.AreEqual(5, myNewThingy.myInt, "newThingy myInt did not load correctly")&lt;/P&gt;
&lt;P&gt;Assert.AreEqual("hello", myNewThingy.myString, "newThingy myString did not load correctly")&lt;/P&gt;
&lt;P&gt;Assert.AreEqual(23, myThingy.myInt, "myThingy myInt should not have been modified")&lt;/P&gt;
&lt;P&gt;Assert.AreEqual("world", myThingy.myString, "myThingy myString should not have been modified")&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;End&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Sub&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;End&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Class&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;One last gotcha, if you are using 2 different classes, make sure that both projects have the same root namespace.&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=85840"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=85840" 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/geekusconlivus/aggbug/85840.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Malcolm Anderson</dc:creator>
            <guid>http://geekswithblogs.net/geekusconlivus/archive/2006/07/20/85840.aspx</guid>
            <pubDate>Thu, 20 Jul 2006 17:35:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/geekusconlivus/comments/85840.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/geekusconlivus/archive/2006/07/20/85840.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/geekusconlivus/comments/commentRss/85840.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/geekusconlivus/services/trackbacks/85840.aspx</trackback:ping>
        </item>
    </channel>
</rss>