<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Oscar Calvo's Blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/oscar_calvo/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/oscar_calvo/feed.xml</link>
    <description>Random thoughts focused on Modeling, Software Factories, Visual Studio Extensibility, Xbox 360, Windows Media and Windows MCE.</description>
    <lastBuildDate>Tue, 16 Apr 2019 05:24:18 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Unit testing and the Scientific Method</title>
      <link>https://docs.microsoft.com/archive/blogs/oscar_calvo/unit-testing-and-the-scientific-method</link>
      <pubDate>Tue, 28 Jun 2011 17:52:00 GMT</pubDate>
      <dc:creator><![CDATA[OscarCalvo]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/oscar_calvo/2011/06/28/unit-testing-and-the-scientific-method/</guid>
      <description><![CDATA[Has it ever happen to you when working on a bug fix that after investing time on a fix you...]]></description>
      <content:encoded><![CDATA[<div class="WordSection1">
<p class="Publishwithline">Has it ever happen to you when working on a bug fix that after investing time on a fix you realized that the fix does not actually fixes the bug?</p>
<p class="MsoNormal">Or even worse, new bugs appear as the result of your change in the system under production.</p>
<p class="MsoNormal">This is similar to what happens when scientists assume a hypothesis to be true without actually running an experiment to confirm it. This something that no good scientist will ever do, however, it happens in the Software Engineering field more often than not.</p>
<p class="MsoNormal">If you compare the <a href="https://en.wikipedia.org/wiki/Scientific_method">Scientific Method</a> to the process followed to perform a bug fix, you will find a lot of similarities. I will go as far as to say that they are the <b>same process</b>.</p>
<p class="MsoNormal">Let me elaborate, the Scientific Method defines the following mayor <a href="https://en.wikipedia.org/wiki/Scientific_method#Elements_of_scientific_method">tasks</a>:</p>
<p class="MsoNormal">1. Define the question</p>
<p class="MsoNormal">2. Gather information and resources (observe)</p>
<p class="MsoNormal">3. Form hypothesis</p>
<p class="MsoNormal">4. Perform experiment and collect data</p>
<p class="MsoNormal">5. Analyze data</p>
<p class="MsoNormal">6. Interpret data and draw conclusions that serve as a starting point for new hypothesis</p>
<p class="MsoNormal">7. Publish results</p>
<p class="MsoNormal">8. Retest (frequently done by other scientists)</p>
<p class="MsoNormal">Let see how they apply to Software development and in particular to the process of &ldquo;bug fixing&rdquo;.</p>
<h2>1: Define the question:</h2>
<p class="MsoNormal">For software development the question is simple: &ldquo;Is the Software under development done-done?&rdquo;</p>
<p class="MsoNormal">By done-done, I mean: Does it complies with user requirements? Does it have bugs? Is it shippable to customers?</p>
<p class="MsoNormal">Most of the time (if not always), the answer is no. Software will always have bugs and new feature requests from customers.</p>
<h2>2. Gather information and resources (observe)</h2>
<p class="MsoNormal">This step is formalized in software development by testing and filling bugs against the software in development. A good bug is one that actually contains the right information and no more. Adding more data will just create noise and make the bug harder to read and understand. This will serve the triage team to decide if team wants to move to step 3.</p>
<h2>3. Form hypothesis</h2>
<p class="MsoNormal">This is the step in software development when a developer gets assigned a bug. The next step for the developer is to &ldquo;guess&rdquo; what&rsquo;s going on. I say &ldquo;guess&rdquo; because by just reading the bug, most developers will not know for a fact (unless they were the ones that file the bug) what is going on.</p>
<p class="MsoNormal">The developer may use the debugger to understand and to gather more data about the bug; this could already be done during step 2.</p>
<p class="MsoNormal">A failing unit test is a great way to formulate a hypothesis to describe the bug under fix. If you find yourself in a position where it is impossible to write a unit test to express the bug under fixing, then you need to step back and invest into building the right infrastructure to be able to formulate hypothesis against your system under development. This is fancy way of saying that you need to build infrastructure that lets you build unit tests.</p>
<p class="MsoNormal">Another sign of problem in the process is if extensive debugging sessions (lasting more than 10 minutes) are required to formulate a hypothesis about the problem. But this is an entire subject for a different blog post.</p>
<p class="MsoNormal">Let me emphasize the point about investing in test infrastructure. If you compare the kind of investment made by the scientific community on &ldquo;experimentation infrastructure&rdquo;, we in the software development community fall short by a long shot. When did a software project had the need to build a particle collider or to put a huge telescope in orbit just to be able to &ldquo;test&rdquo; an hypothesis? &nbsp;</p>
<h2>4-5. Perform experiment and collect data and analyze data</h2>
<p class="MsoNormal">These steps are together because unlike scientist, developers have it easy. They get to always use computers to run unit tests and integrations tests and most tools collect enough data about the system under tests.</p>
<p class="MsoNormal">I have to note than just like scientists, sometimes developers also need to design and implement experiments. Typical examples of this are:</p>
<p style="margin-left: .75in; text-indent: -.25in;" class="MsoListParagraphCxSpFirst">a.<span style="font: 7.0pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Design a stress test framework.</p>
<p style="margin-left: .75in; text-indent: -.25in;" class="MsoListParagraphCxSpLast">b.<span style="font: 7.0pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Implement your own testing framework from scratch, like XUnit or NUnit if your development system lacks one.</p>
<h2>6. Interpret data and draw conclusions that serve as a starting point for new hypothesis</h2>
<p class="MsoNormal">This is the step where important questions need to be asked, like: Is there more cases that our hypothesis is not covering? Why this bug was not discovered earlier? Is this a regression?</p>
<p class="MsoNormal">Do we have invalid hypothesis (unit tests that actually do not test the system) in our system?</p>
<p class="MsoNormal">Once the developer confirms that in fact the unit test is valid, then she must proceed to perform the actual fix for the bug, which is equivalent in science as to formulate a new theory or model. In the case of software development we need to find the &ldquo;the simpler solution that could possibly work but no simpler&rdquo;.</p>
<p class="MsoNormal">Scientist and developer, we both love when we find a solution that is: simple, small and complete. And also, both groups of professionals are very suspicious of the solution if it is complex and large. Some scientists will go as far as say that these kinds of solutions are really an intermediate step into the final and elegant solution. I tend to agree with that.</p>
<p class="MsoNormal">But developers are also engineers and we need to balance cost and time to be able to ship. Shipping is something that does not concern scientist (but there have been some famous races between scientists to see who is able to publish first).</p>
<h2>7. Publish results</h2>
<p class="MsoNormal">This is simple; just hit the button to do the submission in your source control system.</p>
<h2>8. Retest.</h2>
<p class="MsoNormal">In the scientific community a new theory, model or result is published with the expressed intent to be re-validated by other members of the community. It is enough that a single person in the community finds the result &ldquo;invalid&rdquo; to restart the process back to step 2. Software development is the same, once a bug is declared fixed; another member of team (not the same developer) must retest the bug and validate the fix.</p>
<p class="MsoNormal">In software development, some part of this step is automated if you have a gated check in system.</p>
<p class="MsoNormal">Developers hate when a bug fix is re-opened, that means the formulated hypothesis was incorrect, and the unit test created (if any) is not testing the right aspect of the system under development.</p>
<p class="MsoNormal">If the bug is actually fixed then the process goes back to step 1. Which is to ask: Are we done-done?</p>
<h2>Conclusion</h2>
<p class="MsoNormal">I focus the comparison with the process of bug fixing, but the comparison applies to the process of developing <a href="https://en.wikipedia.org/wiki/User_story">user stories</a>. And with that almost the entire software development process is covered.</p>
<p class="MsoNormal">I would to make emphasis on step 3, myself being a software developer; when someone asks you about why a bug happens, do not guess, instead, formulate a hypothesis and run an experiment, then answer the question. That&rsquo;s what a sane scientist will do. Even worse, do not check in code &ldquo;hoping&rdquo; that it will fix a bug. That&rsquo;s like a scientist publishing a new theory without experimentation. Any scientist that does that not only will be ridiculed by her peers, she can forget about making a career as a scientist.</p>
<p class="MsoNormal">In short, engineers that do software development for a living should act more like scientist, because like it or not we are doing the same job scientists do.<a name="_GoBack"></a></p>
</div>]]></content:encoded>
    </item>
    <item>
      <title>How to: Display modeling diagrams outside Visual Studio</title>
      <link>https://docs.microsoft.com/archive/blogs/oscar_calvo/how-to-display-modeling-diagrams-outside-visual-studio</link>
      <pubDate>Mon, 24 May 2010 14:00:00 GMT</pubDate>
      <dc:creator><![CDATA[OscarCalvo]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/oscar_calvo/2010/05/24/how-to-display-modeling-diagrams-outside-visual-studio/</guid>
      <description><![CDATA[&nbsp;

&nbsp;
In one of Cameron&rsquo;s blog post we show how to load and save a...]]></description>
      <content:encoded><![CDATA[<p>
<meta content="text/html; charset=windows-1252" />
<meta content="Microsoft Word 14 (filtered)" name="Generator" />

</p>
<div class="WordSection1">
<div style="border:none;border-bottom:solid #4F81BD 1.0pt;padding:0in 0in 2.0pt 0in">
<p class="underline">&nbsp;</p>
</div>
<p class="PadderBetweenControlandBody">&nbsp;</p>
<p class="MsoNormal">In <a href="https://blogs.msdn.com/camerons/archive/2010/03/08/save-a-diagram-to-image-file.aspx">one of Cameron&rsquo;s blog post</a> we show how to load and save a diagram from within Visual Studio. In this post we&rsquo;ll show how to use the <a href="https://msdn.microsoft.com/en-us/library/ee329477(VS.100).aspx">modeling AP</a>I to load an Uml diagram outside Visual Studio from a small Windows Form Application and display the diagrams in it.</p>
<p class="MsoNormal">The modeling API uses the interface <span style="font-size:
9.5pt;font-family:Consolas;color:#2B91AF">IModelingProjectReader </span>to access data in the modeling project.</p>
<p class="MsoNormal">In order to use this API you need to add the following references to your project:</p>
<p class="SourceCode">Microsoft.VisualStudio.ArchitectureTools.Extensibility</p>
<p class="SourceCode">Microsoft.VisualStudio.Uml.Interfaces</p>
<p class="SourceCode">&nbsp;</p>
<p class="MsoNormal">To load a modeling project use the following code:</p>
<p class="SourceCode"><span style="color:blue">using</span> Microsoft.VisualStudio.ArchitectureTools.Extensibility;</p>
<p class="SourceCode"><span style="color:blue">using</span> Microsoft.VisualStudio.ArchitectureTools.Extensibility.Presentation;</p>
<p class="SourceCode">&nbsp;</p>
<p class="SourceCode"><span style="color:blue">this</span>.modelingProject = <span style="color: #2b91af;">ModelingProject</span>.LoadReadOnly(openFileDialog.FileName);</p>
<p class="SourceCode">&nbsp;</p>
<p class="MsoNormal">Once the project is loaded, we need to get the list of diagrams in that project:</p>
<p class="SourceCode"><span style="color:blue">foreach</span>(<span style="color: blue;">var</span> diagramFile <span style="color:blue">in</span> <span style="color: blue;">this</span>.modelingProject.DiagramFileNames)</p>
<p class="SourceCode">{</p>
<p class="SourceCode">&nbsp; ShowDiagram(<span style="color:blue">this</span>.modelingProject.LoadDiagram(diagramFile));</p>
<p class="SourceCode">}</p>
<p class="SourceCode"><span style="color:#2B91AF">&nbsp;</span></p>
<p class="MsoNormal">Now we are almost ready to get the diagram, but first we need to add the following reference to our project:</p>
<p class="SourceCode">Microsoft.VisualStudio.Modeling.Sdk.10.0</p>
<p class="SourceCode">Microsoft.VisualStudio.Modeling.Sdk.Diagrams.10.0</p>
<p class="SourceCode">&nbsp;</p>
<p class="MsoNormal">LoadDiagram from IModelingProjectReader will return an IDiagram instance, from this instance you need to get the shape element for the DSL diagram. To do this use GetObject:</p>
<p class="SourceCode"><span style="color:blue">using</span> Microsoft.VisualStudio.ArchitectureTools.Extensibility.Presentation;</p>
<p class="SourceCode"><span style="color:blue">using</span> DslDiagrams = Microsoft.VisualStudio.Modeling.Diagrams;</p>
<p class="SourceCode">&nbsp;</p>
<p class="SourceCode"><span style="color:blue">void</span> ShowDiagram (<span style="color: #2b91af;">IDiagram</span> diagram)</p>
<p class="SourceCode">{</p>
<p class="SourceCode"><span style="color:blue">&nbsp; var</span> dslDiagram = diagram.GetObject&lt;DslDiagrams::<span style="color:#2B91AF">Diagram</span>&gt;();</p>
<p class="SourceCode">&nbsp;</p>
<p class="MsoNormal">Once we have the dslDiagram we can use the CreateMetafile from the DSL API to get the image out of the diagram: </p>
<p class="SourceCode"><span style="color:blue">var</span> selectedShapes = <span style="color: blue;">new</span> []</p>
<p class="SourceCode">&nbsp; { diagram.GetObject&lt;DslDiagrams::<span style="color: #2b91af;">PresentationElement</span>&gt;() }.ToList();</p>
<p class="SourceCode"><span style="color:blue">var </span>image = dslDiagram.CreateMetafile(selectedShapes);</p>
<p class="SourceCode">&nbsp;</p>
<p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;text-autospace:
none"><span style="font-size:9.5pt;font-family:Consolas">&nbsp;</span></p>
<p class="MsoNormal">That&rsquo;s it. I zip the sample at <a href="https://code.msdn.microsoft.com/vsvmsdk/Release/ProjectReleases.aspx?ReleaseId=4377">WinFormsViewer.zip</a>, the sample code has a modeling project, and this is how the viewer looks like:</p>
<img height="595" width="832" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/94/08/3125.blog1.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-94-08/3125.blog1.png" style="border: 0px;" />&nbsp;
<p class="MsoNormal">&nbsp;</p>
<p class="MsoNormal">Hope you find this useful.</p>
<p class="MsoNormal">&nbsp;</p>
</div>]]></content:encoded>
    </item>
    <item>
      <title>Not really the last vsvars32 you will ever need...but close</title>
      <link>https://docs.microsoft.com/archive/blogs/oscar_calvo/not-really-the-last-vsvars32-you-will-ever-need-but-close</link>
      <pubDate>Wed, 25 Nov 2009 11:49:00 GMT</pubDate>
      <dc:creator><![CDATA[OscarCalvo]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/oscar_calvo/2009/11/25/not-really-the-last-vsvars32-you-will-ever-need-but-close/</guid>
      <description><![CDATA[I took Peter avise and for a while I've been using Chris's vsvars32, however it had some drawbacks,...]]></description>
      <content:encoded><![CDATA[<P>I took <A href="https://www.peterprovost.org/" mce_href="https://www.peterprovost.org/">Peter</A> avise and for a while I've been using <A href="https://www.tavaresstudios.com/Blog/post/The-last-vsvars32ps1-Ill-ever-need.aspx" mce_href="https://www.tavaresstudios.com/Blog/post/The-last-vsvars32ps1-Ill-ever-need.aspx">Chris's vsvars32</A>, however it had some drawbacks, </P>
<P>1. It did not work from a 64bit PowerShell</P>
<P>2. For some reason Get-Batchfile did not work for me, I had to modify to call "echo" explicitly.</P>
<P>I also added a helper VsInstallDir and a alias for devenv.</P>
<P>&nbsp;Enjoy,</P>
<P>&nbsp;Oscar</P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"><SPAN style="mso-spacerun: yes"><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt">function global:VsInstallDir($version="10.0")</SPAN></SPAN></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"><SPAN style="mso-spacerun: yes"><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt">{</SPAN></SPAN></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"><SPAN style="mso-spacerun: yes"><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"></SPAN></SPAN>&nbsp; $VSKey = $null<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>if (test-path HKLM:SOFTWARE\Wow6432Node\Microsoft\VisualStudio\$version)<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>$VSKey = get-itemproperty HKLM:SOFTWARE\Wow6432Node\Microsoft\VisualStudio\$version<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>else<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>if (test-path HKLM:SOFTWARE\Microsoft\VisualStudio\$version)<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>$VSKey = get-itemproperty HKLM:SOFTWARE\Microsoft\VisualStudio\$version<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"><o:p>&nbsp;</o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>if ($VSKey -eq $null)<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>throw "Visual Studio not installed"<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>[System.IO.Path]::GetDirectoryName($VsKey.InstallDir)<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt">}<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"><o:p>&nbsp;</o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt">function Get-Batchfile ($file) {<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>$cmd = "echo off &amp; `"$file`" &amp; set"<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>cmd /c $cmd | Foreach-Object {<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>$p, $v = $_.split('=')<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Set-Item -path env:$p -value $v<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt">}<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"><o:p>&nbsp;</o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt">function global:VsVars32($version="10.0")<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt">{<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>$VsInstallPath = VsInstallDir($version)<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>$VsToolsDir = [System.IO.Path]::GetDirectoryName($VsInstallPath)<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>$VsToolsDir = [System.IO.Path]::Combine($VsToolsDir, "Tools")<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>$BatchFile = [System.IO.Path]::Combine($VsToolsDir, "vsvars32.bat")<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Get-Batchfile $BatchFile<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>[System.Console]::Title = "Visual Studio shell"<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt">}<o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt"><o:p>&nbsp;</o:p></SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 8pt">set-alias devenv ((VsInstallDir)+"\devenv.exe") -scope global<o:p></o:p></SPAN></P>
<P mce_keep="true">&nbsp;</P>]]></content:encoded>
    </item>
    <item>
      <title>How to: Run Expression Encoder 3 under PowerShell remoting</title>
      <link>https://docs.microsoft.com/archive/blogs/oscar_calvo/how-to-run-expression-encoder-3-under-powershell-remoting</link>
      <pubDate>Fri, 06 Nov 2009 19:31:00 GMT</pubDate>
      <dc:creator><![CDATA[OscarCalvo]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/oscar_calvo/2009/11/06/how-to-run-expression-encoder-3-under-powershell-remoting/</guid>
      <description><![CDATA[James&nbsp;wanned me to explain the set of steps I use to enable Convert-Media under a PowerShell...]]></description>
      <content:encoded><![CDATA[<P><SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"><A href="https://www.clarkezone.net/" mce_href="https://www.clarkezone.net/"><FONT color=#0000ff>James</FONT></A>&nbsp;wanned me to explain the set of steps I use to enable Convert-Media under a PowerShell remoting.<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></P>
<P><SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt">First a disclaimer:&nbsp;running these steps&nbsp;will lower the security settings of your PC, use with caution.&nbsp;<o:p></o:p></SPAN></P>
<P><SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt">Here there are:<o:p></o:p></SPAN></P>
<P><SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt">In your encoding server (mine is called tv-server):<o:p></o:p></SPAN></P>
<P><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt">Enable-PSRemoting&nbsp; -force # Enables remoting<BR>set-item WSMan:\localhost\Client\TrustedHosts * -force # I am not running a domain controller, so my server needs to trust everybody<BR>set-item wsman:localhost\Shell\MaxMemoryPerShellMB 1024 -force # The default allowed memory is very low, we need to bump it so that Convert-Media have room to work.<BR>Enable-WSManCredSSP -Role Server -force # I need the server to have access to my Windows Home Server, so it needs to autenticate using credential delegation<o:p></o:p></SPAN></P>
<P><SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt">In your client:<o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt">function AllowDelegation($policyName)<BR>{<BR>&nbsp;&nbsp;&nbsp; $keyPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\CredentialsDelegation\"+$policyName<BR>&nbsp;&nbsp;&nbsp; if (test-path $keyPath)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rmdir $keyPath -force -rec<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; $key = mkdir $keyPath<BR>&nbsp;&nbsp;&nbsp; $key.SetValue("1","WSMAN/*");<BR>}<BR>AllowDelegation "AllowDefaultCredentials"<o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt">AllowDelegation "AllowFreshCredentials"<o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt">Enable-WSManCredSSP -Role Client -DelegateComputer&nbsp;* -force<o:p></o:p></SPAN></P>
<P><SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt">In order to remote into your server do:<o:p></o:p></SPAN></P>
<P><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt">Enter-PSsession &lt;ServerName&gt; –cred &lt;UserName&gt;<o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT size=3><FONT face=Calibri>I have used “*” (star) in two places, that’s too broad, if you are already using a DNS suffix I would recommend to use it and change “*” to “*.mydomain.com”. <o:p></o:p></FONT></FONT></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT size=3><FONT face=Calibri>In that case you need to refer to your server as:<o:p></o:p></FONT></FONT></P>
<P><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt">Enter-PSsession &lt;ServerName&gt;.mydomain.com –cred &lt;UserName&gt;<o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT size=3><FONT face=Calibri>Once inside, load the Encoder module as usual and execute Convert-Media.<o:p></o:p></FONT></FONT></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT size=3 face=Calibri>You could Batch background encoding jobs using the instructions from the PowerShell </FONT><A href="https://blogs.msdn.com/powershell/archive/2007/11/06/what-s-new-in-ctp-of-powershell-2-0.aspx" mce_href="https://blogs.msdn.com/powershell/archive/2007/11/06/what-s-new-in-ctp-of-powershell-2-0.aspx"><FONT size=3 face=Calibri>team</FONT></A><FONT size=3><FONT face=Calibri>. <o:p></o:p></FONT></FONT></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT size=3><FONT face=Calibri>Enjoy, <o:p></o:p></FONT></FONT></P>
<P mce_keep="true">&nbsp;</P>]]></content:encoded>
    </item>
    <item>
      <title>Announcing Dev10 Beta 2</title>
      <link>https://docs.microsoft.com/archive/blogs/oscar_calvo/announcing-dev10-beta-2</link>
      <pubDate>Thu, 22 Oct 2009 09:52:00 GMT</pubDate>
      <dc:creator><![CDATA[OscarCalvo]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/oscar_calvo/2009/10/22/announcing-dev10-beta-2/</guid>
      <description><![CDATA[&nbsp;
Visdual Studio 2010 Beta is now available here.
Please start pounding it on it and let us...]]></description>
      <content:encoded><![CDATA[<P mce_keep="true">&nbsp;</P>
<P>Visdual Studio 2010 Beta is now available <A href="https://msdn.microsoft.com/en-us/vstudio/dd582936.aspx" mce_href="https://msdn.microsoft.com/en-us/vstudio/dd582936.aspx">here</A>.</P>
<P>Please start pounding it on it and let us know what you think.</P>
<P mce_keep="true">&nbsp;</P>]]></content:encoded>
    </item>
    <item>
      <title>Notes on the Synthesis of Form</title>
      <link>https://docs.microsoft.com/archive/blogs/oscar_calvo/notes-on-the-synthesis-of-form</link>
      <pubDate>Fri, 22 May 2009 20:13:00 GMT</pubDate>
      <dc:creator><![CDATA[OscarCalvo]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/oscar_calvo/2009/05/22/notes-on-the-synthesis-of-form/</guid>
      <description><![CDATA[I have been reading Christopher Alexander's "Notes on the Synthesis of Form", if you are into "Test...]]></description>
      <content:encoded><![CDATA[<P>I have been reading Christopher Alexander's "<SPAN id=btAsinTitle><A href="https://www.amazon.com/Notes-Synthesis-Form-Harvard-Paperbacks/dp/0674627512/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1243037572&amp;sr=8-1" mce_href="https://www.amazon.com/Notes-Synthesis-Form-Harvard-Paperbacks/dp/0674627512/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1243037572&amp;sr=8-1">Notes on the Synthesis of Form</A>", if you are into "Test Driven Design", Software Design and&nbsp;AgileSoftware Development&nbsp;you will find this book written by a building architect 45 years ago fascinating.</SPAN></P>
<P><SPAN>The author explains why some unconsiuos cultures can come up with better home designs than the developed (or self-consiuos) cultures. It also explains why a desing can only be created using test or "proofs".</SPAN></P>
<P><SPAN>Form there you can extrapolate to software&nbsp;development and see with a complete new perpective how the agile process approach the process of "Design".</SPAN></P>
<P><SPAN>In my personal case, It allow me to see why principles like YAGNI and KISS are fundamental to the process of design.</SPAN></P>
<P><SPAN>Even if you are not into agile, I definitely recommend this book, its a short read.</SPAN></P>
<P><SPAN></SPAN>&nbsp;</P>
<P><SPAN></SPAN>&nbsp;</P>]]></content:encoded>
    </item>
    <item>
      <title>Visual Studio 10 CTP</title>
      <link>https://docs.microsoft.com/archive/blogs/oscar_calvo/visual-studio-10-ctp</link>
      <pubDate>Tue, 28 Oct 2008 16:07:00 GMT</pubDate>
      <dc:creator><![CDATA[OscarCalvo]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/oscar_calvo/2008/10/28/visual-studio-10-ctp/</guid>
      <description><![CDATA[There are tons of new cool features in&nbsp;Visual Studio Team Architect 10.
- New UML...]]></description>
      <content:encoded><![CDATA[<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraph><FONT size=3 face=Calibri>There are tons of new cool features in&nbsp;Visual Studio Team Architect 10.</FONT></P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraph><FONT size=3 face=Calibri>- New UML Designers&nbsp;</FONT></P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraph><FONT size=3 face=Calibri>- Architecture Explorer</FONT></P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraph><FONT size=3 face=Calibri>- Layer Designer</FONT></P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraph mce_keep="true">&nbsp;</P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraph><FONT size=3 face=Calibri>Please download a give us feedback at </FONT><A title=blocked::https://go.microsoft.com/fwlink/?LinkId=129231 href="https://go.microsoft.com/fwlink/?LinkId=129231" mce_href="https://go.microsoft.com/fwlink/?LinkId=129231"><SPAN style="FONT-FAMILY: 'Times New Roman','serif'"><FONT size=3>Dev10 CTP Feedback page</FONT></SPAN></A></P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraph mce_keep="true">&nbsp;</P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraph>If you have questions about the&nbsp;UML designers use the forums, we will be watching.</P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraph mce_keep="true">&nbsp;</P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraph mce_keep="true">&nbsp;</P>]]></content:encoded>
    </item>
    <item>
      <title>Powershell</title>
      <link>https://docs.microsoft.com/archive/blogs/oscar_calvo/powershell</link>
      <pubDate>Fri, 25 Jul 2008 23:28:00 GMT</pubDate>
      <dc:creator><![CDATA[OscarCalvo]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/oscar_calvo/2008/07/25/powershell/</guid>
      <description><![CDATA[As Peter&nbsp;I have became infected with Powershell,&nbsp;and to make it worse, there is console...]]></description>
      <content:encoded><![CDATA[<P>As <A class="" title=Peter href="https://www.peterprovost.org/blog/post/Updated-MSH-Syntax-Highlighting-For-VIM.aspx" mce_href="https://www.peterprovost.org/blog/post/Updated-MSH-Syntax-Highlighting-For-VIM.aspx">Peter</A>&nbsp;I have became infected with Powershell,&nbsp;and to make it worse, there is <A class="" href="https://www.vim.org/scripts/script.php?script_id=1327" mce_href="https://www.vim.org/scripts/script.php?script_id=1327">console mode editor support</A>. Sweet!!!</P>
<P>I have one week using it, I am not going back to cmd.exe ever!!&nbsp;</P>
<P>Here is a great replacement for <A class="" href="https://www.agileprogrammer.com/dotnetguy/archive/2007/11/22/23853.aspx" mce_href="https://www.agileprogrammer.com/dotnetguy/archive/2007/11/22/23853.aspx">vsvars32.bat</A> made by Brad Wilson.</P>
<P mce_keep="true">&nbsp;</P>]]></content:encoded>
    </item>
    <item>
      <title>Going to TechEd</title>
      <link>https://docs.microsoft.com/archive/blogs/oscar_calvo/going-to-teched</link>
      <pubDate>Sat, 31 May 2008 18:46:00 GMT</pubDate>
      <dc:creator><![CDATA[OscarCalvo]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/oscar_calvo/2008/05/31/going-to-teched/</guid>
      <description><![CDATA[I'll be in TechEd at the Visual Studio Team Architect demo station.
See you there.
&nbsp;]]></description>
      <content:encoded><![CDATA[<P>I'll be in TechEd at the Visual Studio Team Architect demo station.</P>
<P>See you there.</P>
<P mce_keep="true">&nbsp;</P>]]></content:encoded>
    </item>
    <item>
      <title>Intro</title>
      <link>https://docs.microsoft.com/archive/blogs/oscar_calvo/intro</link>
      <pubDate>Thu, 27 Dec 2007 03:01:00 GMT</pubDate>
      <dc:creator><![CDATA[OscarCalvo]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/oscar_calvo/2007/12/27/intro/</guid>
      <description><![CDATA[Hello, after working with&nbsp;DevDiv and p&amp;p as vendor for the past 7 years (wow, I can't...]]></description>
      <content:encoded><![CDATA[<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Hello, after working with&nbsp;DevDiv and p&amp;p as vendor for the past 7 years (wow, I can't believe it's so long) I finally joined Microsoft as a full time employee. I joined the&nbsp;VS Team Architect team as an SDE 2 months ago. I joined the team just in time for the <A title="Visual Studio 2008 release" href="https://www.microsoft.com/vstudio" target=_blank mce_href="https://www.microsoft.com/vstudio"><SPAN style="COLOR: blue; TEXT-DECORATION: underline">Visual Studio 2008 release</SPAN></A>, I am really excited of the&nbsp;features that&nbsp;my <A href="https://blogs.msdn.com/vsarch/" mce_href="https://blogs.msdn.com/vsarch/">team</A> is delivering but more so about the ones in the future. </SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Joining Microsoft has been a huge change for me, both professionally and personally (I relocated from Costa Rica) and it's been an incredible busy year, so forgive me if I haven't answer your <A href="https://blog.calvonet.com/archive/tags/CAB/default.aspx" mce_href="https://blog.calvonet.com/archive/tags/CAB/default.aspx">CAB</A> and/or <A href="https://blog.calvonet.com/archive/tags/GAT/default.aspx" mce_href="https://blog.calvonet.com/archive/tags/GAT/default.aspx">GAT</A> questions (I know there are a couple here and there). Meanwhile I move the CAB and GAT articles from my <A href="https://www.artinsoft.com/" mce_href="https://www.artinsoft.com">previous employer</A> web site to the msdn blog site. </SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Regards, </SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Oscar Calvo </SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"></SPAN>&nbsp;</P>]]></content:encoded>
    </item>
  </channel>
</rss>