<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" 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:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Jeroen's Blog</title>
    <link>http://www.jeroenlandheer.com/Blog/</link>
    <description>A Dutch software developer living in Chile</description>
    <language>en-us</language>
    <copyright>Jeroen Landheer</copyright>
    <lastBuildDate>Mon, 21 Dec 2009 18:33:23 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.3.9074.18820</generator>
    <managingEditor>jeroen@landheer.com</managingEditor>
    <webMaster>jeroen@landheer.com</webMaster>
    <item>
      <trackback:ping>http://www.jeroenlandheer.com/Blog/Trackback.aspx?guid=717939a0-f173-4b93-845e-746217194357</trackback:ping>
      <pingback:server>http://www.jeroenlandheer.com/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.jeroenlandheer.com/Blog/PermaLink,guid,717939a0-f173-4b93-845e-746217194357.aspx</pingback:target>
      <dc:creator>Jeroen Landheer</dc:creator>
      <wfw:comment>http://www.jeroenlandheer.com/Blog/CommentView,guid,717939a0-f173-4b93-845e-746217194357.aspx</wfw:comment>
      <wfw:commentRss>http://www.jeroenlandheer.com/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=717939a0-f173-4b93-845e-746217194357</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
It’s been a while since I blogged, so here I’m back again. 
</p>
        <p>
I’m using a lot of Skype these days. We’ve got a business account with them, having
a Dutch phone number which can be used to call me here in Chile. It’s customer friendly
and cheap for us. When calling to NL, I also use Skype to get in touch with my customers,
friends &amp; family and this all works fine. Problem is though that sometimes call
echo screws up the conversation. 
</p>
        <p>
When taking a look at the pages on Skype, they say that I should use a headset (which
I do), and have a good quality Internet connection, which I do. A fast PC might help,
which I got, so there’s nothing more I can do on my side of the line to make things
better. When I wasn’t using Skype, long distance calls using regular phone lines also
were having echo problems. (And when I say “Long distance”, I’m talking 10.000 miles
intercontinental phone calls.) So this isn’t related to Skype specifically, but more
to those long distances that need to be covered (probably most of which goes over
the Internet.) 
</p>
        <p>
Even though there’s sometimes echo, the call quality is good, sometimes even excellent.
And when you remind people that they are talking with the other side of the planet,
that also helps. Still, there’s room for improvement and I hope that new technologies
will catch up and improve the overall experience in long distance communication. 
</p>
        <p>
Time to make another call… ;)
</p>
        <img width="0" height="0" src="http://www.jeroenlandheer.com/Blog/aggbug.ashx?id=717939a0-f173-4b93-845e-746217194357" />
        <br />
        <hr />
This website is sposored by <a href="http://www.thewheel.nl">The Wheel Automatisering</a>.</body>
      <title>Calling with Skype</title>
      <guid isPermaLink="false">http://www.jeroenlandheer.com/Blog/PermaLink,guid,717939a0-f173-4b93-845e-746217194357.aspx</guid>
      <link>http://www.jeroenlandheer.com/Blog/2009/12/21/CallingWithSkype.aspx</link>
      <pubDate>Mon, 21 Dec 2009 18:33:23 GMT</pubDate>
      <description>&lt;p&gt;
It’s been a while since I blogged, so here I’m back again. 
&lt;/p&gt;
&lt;p&gt;
I’m using a lot of Skype these days. We’ve got a business account with them, having
a Dutch phone number which can be used to call me here in Chile. It’s customer friendly
and cheap for us. When calling to NL, I also use Skype to get in touch with my customers,
friends &amp;amp; family and this all works fine. Problem is though that sometimes call
echo screws up the conversation. 
&lt;/p&gt;
&lt;p&gt;
When taking a look at the pages on Skype, they say that I should use a headset (which
I do), and have a good quality Internet connection, which I do. A fast PC might help,
which I got, so there’s nothing more I can do on my side of the line to make things
better. When I wasn’t using Skype, long distance calls using regular phone lines also
were having echo problems. (And when I say “Long distance”, I’m talking 10.000 miles
intercontinental phone calls.) So this isn’t related to Skype specifically, but more
to those long distances that need to be covered (probably most of which goes over
the Internet.) 
&lt;/p&gt;
&lt;p&gt;
Even though there’s sometimes echo, the call quality is good, sometimes even excellent.
And when you remind people that they are talking with the other side of the planet,
that also helps. Still, there’s room for improvement and I hope that new technologies
will catch up and improve the overall experience in long distance communication. 
&lt;/p&gt;
&lt;p&gt;
Time to make another call… ;)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.jeroenlandheer.com/Blog/aggbug.ashx?id=717939a0-f173-4b93-845e-746217194357" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This website is sposored by &lt;a href="http://www.thewheel.nl"&gt;The Wheel Automatisering&lt;/a&gt;.</description>
      <comments>http://www.jeroenlandheer.com/Blog/CommentView,guid,717939a0-f173-4b93-845e-746217194357.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.jeroenlandheer.com/Blog/Trackback.aspx?guid=9bfed469-897f-454e-adce-4c03ec2c6173</trackback:ping>
      <pingback:server>http://www.jeroenlandheer.com/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.jeroenlandheer.com/Blog/PermaLink,guid,9bfed469-897f-454e-adce-4c03ec2c6173.aspx</pingback:target>
      <dc:creator>Jeroen Landheer</dc:creator>
      <wfw:comment>http://www.jeroenlandheer.com/Blog/CommentView,guid,9bfed469-897f-454e-adce-4c03ec2c6173.aspx</wfw:comment>
      <wfw:commentRss>http://www.jeroenlandheer.com/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=9bfed469-897f-454e-adce-4c03ec2c6173</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Some people think that December 21st, 2012 will be some kind of doomsday... 
</p>
        <p>
I'll post a folow-up on christmas 2012, which I'm sure will be a good laugh :)
</p>
        <img width="0" height="0" src="http://www.jeroenlandheer.com/Blog/aggbug.ashx?id=9bfed469-897f-454e-adce-4c03ec2c6173" />
        <br />
        <hr />
This website is sposored by <a href="http://www.thewheel.nl">The Wheel Automatisering</a>.</body>
      <title>21-12-2012 the end? Get real...</title>
      <guid isPermaLink="false">http://www.jeroenlandheer.com/Blog/PermaLink,guid,9bfed469-897f-454e-adce-4c03ec2c6173.aspx</guid>
      <link>http://www.jeroenlandheer.com/Blog/2009/11/14/21122012TheEndGetReal.aspx</link>
      <pubDate>Sat, 14 Nov 2009 22:51:54 GMT</pubDate>
      <description>&lt;p&gt;
Some people think that December 21st, 2012 will be some kind of doomsday... 
&lt;/p&gt;
&lt;p&gt;
I'll post a folow-up on christmas 2012, which I'm sure will be a good laugh :)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.jeroenlandheer.com/Blog/aggbug.ashx?id=9bfed469-897f-454e-adce-4c03ec2c6173" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This website is sposored by &lt;a href="http://www.thewheel.nl"&gt;The Wheel Automatisering&lt;/a&gt;.</description>
      <comments>http://www.jeroenlandheer.com/Blog/CommentView,guid,9bfed469-897f-454e-adce-4c03ec2c6173.aspx</comments>
      <category>Opinions</category>
    </item>
    <item>
      <trackback:ping>http://www.jeroenlandheer.com/Blog/Trackback.aspx?guid=268ff1ed-0efd-4198-86c0-207498f17a06</trackback:ping>
      <pingback:server>http://www.jeroenlandheer.com/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.jeroenlandheer.com/Blog/PermaLink,guid,268ff1ed-0efd-4198-86c0-207498f17a06.aspx</pingback:target>
      <dc:creator>Jeroen Landheer</dc:creator>
      <wfw:comment>http://www.jeroenlandheer.com/Blog/CommentView,guid,268ff1ed-0efd-4198-86c0-207498f17a06.aspx</wfw:comment>
      <wfw:commentRss>http://www.jeroenlandheer.com/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=268ff1ed-0efd-4198-86c0-207498f17a06</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
It’s been some time since I last used my notebook. I’ve made a back-up, wiped it clean
and installed Windows 7 on it. Office 2007 and Visual Studio 2010 (Beta 2) make it
complete. 
</p>
        <p>
The screen of that notebook is broken, but my associate has ordered a new one. Once
I’ll have it in NL, we’ll install a new screen and I’m (hopefully) good to go for
another few years. 
</p>
        <p>
Since Visual Studio 2010 Beta 2 comes with a go-live license, I’ll be making the change
soon…
</p>
        <p>
          <a href="http://www.jeroenlandheer.com/Blog/content/binary/WindowsLiveWriter/Itlivesagain_11F7F/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.jeroenlandheer.com/Blog/content/binary/WindowsLiveWriter/Itlivesagain_11F7F/image_thumb.png" width="558" height="393" />
          </a>
        </p>
        <p>
Microsoft always does a good job on those splash screens, don’t they :) 
</p>
        <img width="0" height="0" src="http://www.jeroenlandheer.com/Blog/aggbug.ashx?id=268ff1ed-0efd-4198-86c0-207498f17a06" />
        <br />
        <hr />
This website is sposored by <a href="http://www.thewheel.nl">The Wheel Automatisering</a>.</body>
      <title>It ‘lives’ again…</title>
      <guid isPermaLink="false">http://www.jeroenlandheer.com/Blog/PermaLink,guid,268ff1ed-0efd-4198-86c0-207498f17a06.aspx</guid>
      <link>http://www.jeroenlandheer.com/Blog/2009/10/23/ItLivesAgain.aspx</link>
      <pubDate>Fri, 23 Oct 2009 23:27:22 GMT</pubDate>
      <description>&lt;p&gt;
It’s been some time since I last used my notebook. I’ve made a back-up, wiped it clean
and installed Windows 7 on it. Office 2007 and Visual Studio 2010 (Beta 2) make it
complete. 
&lt;/p&gt;
&lt;p&gt;
The screen of that notebook is broken, but my associate has ordered a new one. Once
I’ll have it in NL, we’ll install a new screen and I’m (hopefully) good to go for
another few years. 
&lt;/p&gt;
&lt;p&gt;
Since Visual Studio 2010 Beta 2 comes with a go-live license, I’ll be making the change
soon…
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.jeroenlandheer.com/Blog/content/binary/WindowsLiveWriter/Itlivesagain_11F7F/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.jeroenlandheer.com/Blog/content/binary/WindowsLiveWriter/Itlivesagain_11F7F/image_thumb.png" width="558" height="393"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Microsoft always does a good job on those splash screens, don’t they :) 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.jeroenlandheer.com/Blog/aggbug.ashx?id=268ff1ed-0efd-4198-86c0-207498f17a06" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This website is sposored by &lt;a href="http://www.thewheel.nl"&gt;The Wheel Automatisering&lt;/a&gt;.</description>
      <comments>http://www.jeroenlandheer.com/Blog/CommentView,guid,268ff1ed-0efd-4198-86c0-207498f17a06.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.jeroenlandheer.com/Blog/Trackback.aspx?guid=0bbe8f13-1973-4aa3-8623-153fe6b1bf47</trackback:ping>
      <pingback:server>http://www.jeroenlandheer.com/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.jeroenlandheer.com/Blog/PermaLink,guid,0bbe8f13-1973-4aa3-8623-153fe6b1bf47.aspx</pingback:target>
      <dc:creator>Jeroen Landheer</dc:creator>
      <wfw:comment>http://www.jeroenlandheer.com/Blog/CommentView,guid,0bbe8f13-1973-4aa3-8623-153fe6b1bf47.aspx</wfw:comment>
      <wfw:commentRss>http://www.jeroenlandheer.com/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=0bbe8f13-1973-4aa3-8623-153fe6b1bf47</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
We started here to migrate our workstations to Windows 7 RTM since the day the images
were available via MSDN. Now I’ve done the last one, the notebook of my wife, and
we’re having all our computers on RTM right now. 
</p>
        <p>
I’ve worked with Windows 7 since the Beta, and now I have my system configured with
it, I must say I’m very happy with it. My computer is fast, responsive, even with
all the (almost) 7 million pixels I’m looking at every day. I’ve made some adjustments
to the defaults, which makes Windows 7 even better to work with (for me at least.) 
</p>
        <p>
          <a href="http://www.jeroenlandheer.com/Blog/content/binary/WindowsLiveWriter/WereonWindows7_12F5C/image_8.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.jeroenlandheer.com/Blog/content/binary/WindowsLiveWriter/WereonWindows7_12F5C/image_thumb_3.png" width="1028" height="47" />
          </a>
        </p>
        <p>
This is a typical snapshot of my taskbar, and as you can see, it’s height is a bit
different. I did this by creating a folder, which holds the shortcuts in the upper
row, and only the programs I use most frequently are pinned to the taskbar itself.
This way I can easily start an application that I don’t have pinned and I still can
use the jump lists for the software that provides this feature. 
</p>
        <p>
        </p>
        <p>
        </p>
        <p>
My biggest disappointment of Windows 7 is Aero Snap, so I’ve disabled this. On the
multi-monitor area there’s still a <em>lot</em> of room for improvement in the Windows
operating system. Windows Virtual PC for Windows 7 is nice, just too bad that seamless
apps on multimon has (very) limited support. 
</p>
        <p>
The installation works fine, driver problems seem to be getting slowly a thing of
the past and compatibility with Vista Apps &amp; Drivers is also perfect. Also the
other (somewhat less powerful) PCs and even my wife’s Aspire One, have no problem
with Windows 7. 
</p>
        <p>
My advice: Move to Windows 7 as soon as you can, there’s no need to wait for SP1.
</p>
        <img width="0" height="0" src="http://www.jeroenlandheer.com/Blog/aggbug.ashx?id=0bbe8f13-1973-4aa3-8623-153fe6b1bf47" />
        <br />
        <hr />
This website is sposored by <a href="http://www.thewheel.nl">The Wheel Automatisering</a>.</body>
      <title>We’re on Windows 7</title>
      <guid isPermaLink="false">http://www.jeroenlandheer.com/Blog/PermaLink,guid,0bbe8f13-1973-4aa3-8623-153fe6b1bf47.aspx</guid>
      <link>http://www.jeroenlandheer.com/Blog/2009/09/18/WereOnWindows7.aspx</link>
      <pubDate>Fri, 18 Sep 2009 01:34:42 GMT</pubDate>
      <description>&lt;p&gt;
We started here to migrate our workstations to Windows 7 RTM since the day the images
were available via MSDN. Now I’ve done the last one, the notebook of my wife, and
we’re having all our computers on RTM right now. 
&lt;/p&gt;
&lt;p&gt;
I’ve worked with Windows 7 since the Beta, and now I have my system configured with
it, I must say I’m very happy with it. My computer is fast, responsive, even with
all the (almost) 7 million pixels I’m looking at every day. I’ve made some adjustments
to the defaults, which makes Windows 7 even better to work with (for me at least.) 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.jeroenlandheer.com/Blog/content/binary/WindowsLiveWriter/WereonWindows7_12F5C/image_8.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.jeroenlandheer.com/Blog/content/binary/WindowsLiveWriter/WereonWindows7_12F5C/image_thumb_3.png" width="1028" height="47"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
This is a typical snapshot of my taskbar, and as you can see, it’s height is a bit
different. I did this by creating a folder, which holds the shortcuts in the upper
row, and only the programs I use most frequently are pinned to the taskbar itself.
This way I can easily start an application that I don’t have pinned and I still can
use the jump lists for the software that provides this feature. 
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
My biggest disappointment of Windows 7 is Aero Snap, so I’ve disabled this. On the
multi-monitor area there’s still a &lt;em&gt;lot&lt;/em&gt; of room for improvement in the Windows
operating system. Windows Virtual PC for Windows 7 is nice, just too bad that seamless
apps on multimon has (very) limited support. 
&lt;/p&gt;
&lt;p&gt;
The installation works fine, driver problems seem to be getting slowly a thing of
the past and compatibility with Vista Apps &amp;amp; Drivers is also perfect. Also the
other (somewhat less powerful) PCs and even my wife’s Aspire One, have no problem
with Windows 7. 
&lt;/p&gt;
&lt;p&gt;
My advice: Move to Windows 7 as soon as you can, there’s no need to wait for SP1.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.jeroenlandheer.com/Blog/aggbug.ashx?id=0bbe8f13-1973-4aa3-8623-153fe6b1bf47" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This website is sposored by &lt;a href="http://www.thewheel.nl"&gt;The Wheel Automatisering&lt;/a&gt;.</description>
      <comments>http://www.jeroenlandheer.com/Blog/CommentView,guid,0bbe8f13-1973-4aa3-8623-153fe6b1bf47.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.jeroenlandheer.com/Blog/Trackback.aspx?guid=b1ae85b3-863d-4ee3-b7fe-191690f7996c</trackback:ping>
      <pingback:server>http://www.jeroenlandheer.com/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.jeroenlandheer.com/Blog/PermaLink,guid,b1ae85b3-863d-4ee3-b7fe-191690f7996c.aspx</pingback:target>
      <dc:creator>Jeroen Landheer</dc:creator>
      <wfw:comment>http://www.jeroenlandheer.com/Blog/CommentView,guid,b1ae85b3-863d-4ee3-b7fe-191690f7996c.aspx</wfw:comment>
      <wfw:commentRss>http://www.jeroenlandheer.com/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=b1ae85b3-863d-4ee3-b7fe-191690f7996c</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
If you have a bunch of TFS builds that get a new home, it is always nice to let TFS
know those files have been moved. But sadly, in the documentation there’s not much
to find about this, nor is there any UI interface that lets you make this kind of
change.
</p>
        <p>
So <a href="http://social.msdn.microsoft.com/Forums/en-US/tfsbuild/thread/ac5e8fee-daed-4c9f-b48b-71b1b48d569d">I
asked a question</a> on the build forums, and Hongye Sun of Microsoft told me the
best way to go at this, is use the Team Build APIs. 
</p>
        <p>
I’ve created a simple MoveBuild command line tool that allows you to move all the
known builds from an old drop location to a new one, across all TFS projects. 
</p>
        <pre class="brush: csharp;">using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using Microsoft.TeamFoundation.Build.Client;
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.Server;

namespace MoveBuild
{
  class Program
  {
    static void Main(string[] args)
    {
      if (args.Length &lt; 3)
      {
        ShowUsage();
        return;
      }

      try
      {
        string tfsServer = args[0];
        string sourceDir = args[1];
        string targetDir = args[2];

        bool commit = args.Length == 4 &amp;&amp; String.Equals(args[3], "/Commit", StringComparison.InvariantCultureIgnoreCase);

        TeamFoundationServer tfs = TeamFoundationServerFactory.GetServer(tfsServer);
        ICommonStructureService css = (ICommonStructureService)tfs.GetService(typeof(ICommonStructureService));
        foreach (ProjectInfo item in css.ListAllProjects())
        {
          MoveBuilds(tfs, item.Name, sourceDir, targetDir, commit);
        }

      }
      catch (Exception ex)
      {
        if (!Debugger.IsAttached)
          Console.WriteLine(ex.ToString());
        else
          throw;
      }

    }

    private static void MoveBuilds(TeamFoundationServer server, string teamProject, string sourceDir, string targetDir, bool commit)
    {

      int recordCount = 0;
      IBuildServer buildServer = (IBuildServer)server.GetService(typeof(IBuildServer));
      foreach (IBuildDetail item in buildServer.QueryBuilds(teamProject))
      {
        bool isMatch = item.DropLocation.StartsWith(sourceDir, StringComparison.InvariantCultureIgnoreCase);
        if (!isMatch)
          continue;
        recordCount++;
        //Console.ForegroundColor = isMatch ? ConsoleColor.Green: ConsoleColor.Red;
        //if (!isMatch)
        //  Console.Write("SKIPPED: ");
        Console.ForegroundColor = ConsoleColor.Green;
        Console.WriteLine(item.BuildNumber);
        
        Console.ForegroundColor = ConsoleColor.Gray;
        StringBuilder newDropLocation = new StringBuilder();
        newDropLocation.Append(targetDir);
        if (item.DropLocation.Length &gt; sourceDir.Length)
          newDropLocation.Append(item.DropLocation.Substring(sourceDir.Length));

        StringBuilder newLogLocation = new StringBuilder();
        newLogLocation.Append(targetDir);
        if (item.LogLocation.Length &gt; sourceDir.Length)
          newLogLocation.Append(item.LogLocation.Substring(sourceDir.Length));

        Console.WriteLine("Old location: {0}", item.DropLocation);
        Console.WriteLine("New Location: {0}", newDropLocation);
        Console.WriteLine("Old log location: {0}", item.LogLocation);
        Console.WriteLine("New log location: {0}", newLogLocation);

        if (commit)
        {
          item.LogLocation = newLogLocation.ToString();
          item.DropLocation = newDropLocation.ToString();
          item.Save();
        }

      }
      Console.ForegroundColor = ConsoleColor.Gray;
    }

    private static void ShowUsage()
    {
      Console.WriteLine("MoveBuild - Usage");
      Console.WriteLine("MoveBuild &lt;TFS URL&gt; &lt;SourceFolderPattern&gt; &lt;DestinationFolder&gt; [/Commit]");
      Console.WriteLine();
      Console.WriteLine(@"Example: MoveBuild http://mytfsserver:port \\OldServer\OldShare \\NewServer\NewShare");
      Console.WriteLine(@"This will move all builds which have a drop location starting with \\OldServer\OldShare to \\NewServer\NewShare");
      Console.WriteLine();
      Console.WriteLine("If you specify /Commit the changes will be made to the database, if not, you only see a list of builds that would have been changed by this program");
    }

  }

}

</pre>
        <p>
To get this to build you need to:
</p>
        <ul>
          <li>
Add a refference to the following Microsoft.TeamFoundation libraries (which are in
%ProgramFiles%\Microsoft Visual Studio 9.0\Common\IDE\PrivateAssemblies 
<ul><li>
Microsoft.TeamFoundation.dll 
</li><li>
Microsoft.TeamFoundation.Build.dll 
</li><li>
Microsoft.TeamFoundation.Build.Common.dll 
</li><li>
Microsoft.TeamFoundation.Build.Client.dll 
</li><li>
Microsoft.TeamFoundation.Client.dll 
</li><li>
Microsoft.TeamFoundation.Common.dll</li></ul></li>
          <li>
Set your project’s properties to build for platform x86 if you’re developing on a
x64 platform, otherwise you get a BadImageFormatException when loading these references.</li>
        </ul>
        <img width="0" height="0" src="http://www.jeroenlandheer.com/Blog/aggbug.ashx?id=b1ae85b3-863d-4ee3-b7fe-191690f7996c" />
        <br />
        <hr />
This website is sposored by <a href="http://www.thewheel.nl">The Wheel Automatisering</a>.</body>
      <title>Moving TFS Historic builds to a new location</title>
      <guid isPermaLink="false">http://www.jeroenlandheer.com/Blog/PermaLink,guid,b1ae85b3-863d-4ee3-b7fe-191690f7996c.aspx</guid>
      <link>http://www.jeroenlandheer.com/Blog/2009/09/17/MovingTFSHistoricBuildsToANewLocation.aspx</link>
      <pubDate>Thu, 17 Sep 2009 20:44:49 GMT</pubDate>
      <description>&lt;p&gt;
If you have a bunch of TFS builds that get a new home, it is always nice to let TFS
know those files have been moved. But sadly, in the documentation there’s not much
to find about this, nor is there any UI interface that lets you make this kind of
change.
&lt;/p&gt;
&lt;p&gt;
So &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/tfsbuild/thread/ac5e8fee-daed-4c9f-b48b-71b1b48d569d"&gt;I
asked a question&lt;/a&gt; on the build forums, and Hongye Sun of Microsoft told me the
best way to go at this, is use the Team Build APIs. 
&lt;/p&gt;
&lt;p&gt;
I’ve created a simple MoveBuild command line tool that allows you to move all the
known builds from an old drop location to a new one, across all TFS projects. 
&lt;/p&gt;
&lt;pre class="brush: csharp;"&gt;using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using Microsoft.TeamFoundation.Build.Client;
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.Server;

namespace MoveBuild
{
  class Program
  {
    static void Main(string[] args)
    {
      if (args.Length &amp;lt; 3)
      {
        ShowUsage();
        return;
      }

      try
      {
        string tfsServer = args[0];
        string sourceDir = args[1];
        string targetDir = args[2];

        bool commit = args.Length == 4 &amp;amp;&amp;amp; String.Equals(args[3], "/Commit", StringComparison.InvariantCultureIgnoreCase);

        TeamFoundationServer tfs = TeamFoundationServerFactory.GetServer(tfsServer);
        ICommonStructureService css = (ICommonStructureService)tfs.GetService(typeof(ICommonStructureService));
        foreach (ProjectInfo item in css.ListAllProjects())
        {
          MoveBuilds(tfs, item.Name, sourceDir, targetDir, commit);
        }

      }
      catch (Exception ex)
      {
        if (!Debugger.IsAttached)
          Console.WriteLine(ex.ToString());
        else
          throw;
      }

    }

    private static void MoveBuilds(TeamFoundationServer server, string teamProject, string sourceDir, string targetDir, bool commit)
    {

      int recordCount = 0;
      IBuildServer buildServer = (IBuildServer)server.GetService(typeof(IBuildServer));
      foreach (IBuildDetail item in buildServer.QueryBuilds(teamProject))
      {
        bool isMatch = item.DropLocation.StartsWith(sourceDir, StringComparison.InvariantCultureIgnoreCase);
        if (!isMatch)
          continue;
        recordCount++;
        //Console.ForegroundColor = isMatch ? ConsoleColor.Green: ConsoleColor.Red;
        //if (!isMatch)
        //  Console.Write("SKIPPED: ");
        Console.ForegroundColor = ConsoleColor.Green;
        Console.WriteLine(item.BuildNumber);
        
        Console.ForegroundColor = ConsoleColor.Gray;
        StringBuilder newDropLocation = new StringBuilder();
        newDropLocation.Append(targetDir);
        if (item.DropLocation.Length &amp;gt; sourceDir.Length)
          newDropLocation.Append(item.DropLocation.Substring(sourceDir.Length));

        StringBuilder newLogLocation = new StringBuilder();
        newLogLocation.Append(targetDir);
        if (item.LogLocation.Length &amp;gt; sourceDir.Length)
          newLogLocation.Append(item.LogLocation.Substring(sourceDir.Length));

        Console.WriteLine("Old location: {0}", item.DropLocation);
        Console.WriteLine("New Location: {0}", newDropLocation);
        Console.WriteLine("Old log location: {0}", item.LogLocation);
        Console.WriteLine("New log location: {0}", newLogLocation);

        if (commit)
        {
          item.LogLocation = newLogLocation.ToString();
          item.DropLocation = newDropLocation.ToString();
          item.Save();
        }

      }
      Console.ForegroundColor = ConsoleColor.Gray;
    }

    private static void ShowUsage()
    {
      Console.WriteLine("MoveBuild - Usage");
      Console.WriteLine("MoveBuild &amp;lt;TFS URL&amp;gt; &amp;lt;SourceFolderPattern&amp;gt; &amp;lt;DestinationFolder&amp;gt; [/Commit]");
      Console.WriteLine();
      Console.WriteLine(@"Example: MoveBuild http://mytfsserver:port \\OldServer\OldShare \\NewServer\NewShare");
      Console.WriteLine(@"This will move all builds which have a drop location starting with \\OldServer\OldShare to \\NewServer\NewShare");
      Console.WriteLine();
      Console.WriteLine("If you specify /Commit the changes will be made to the database, if not, you only see a list of builds that would have been changed by this program");
    }

  }

}

&lt;/pre&gt;
&lt;p&gt;
To get this to build you need to:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Add a refference to the following Microsoft.TeamFoundation libraries (which are in
%ProgramFiles%\Microsoft Visual Studio 9.0\Common\IDE\PrivateAssemblies 
&lt;ul&gt;
&lt;li&gt;
Microsoft.TeamFoundation.dll 
&lt;li&gt;
Microsoft.TeamFoundation.Build.dll 
&lt;li&gt;
Microsoft.TeamFoundation.Build.Common.dll 
&lt;li&gt;
Microsoft.TeamFoundation.Build.Client.dll 
&lt;li&gt;
Microsoft.TeamFoundation.Client.dll 
&lt;li&gt;
Microsoft.TeamFoundation.Common.dll&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Set your project’s properties to build for platform x86 if you’re developing on a
x64 platform, otherwise you get a BadImageFormatException when loading these references.&lt;/li&gt;
&lt;/ul&gt;
&lt;img width="0" height="0" src="http://www.jeroenlandheer.com/Blog/aggbug.ashx?id=b1ae85b3-863d-4ee3-b7fe-191690f7996c" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This website is sposored by &lt;a href="http://www.thewheel.nl"&gt;The Wheel Automatisering&lt;/a&gt;.</description>
      <comments>http://www.jeroenlandheer.com/Blog/CommentView,guid,b1ae85b3-863d-4ee3-b7fe-191690f7996c.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.jeroenlandheer.com/Blog/Trackback.aspx?guid=5a79f9a5-cb44-4859-850a-319fa7642bb8</trackback:ping>
      <pingback:server>http://www.jeroenlandheer.com/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.jeroenlandheer.com/Blog/PermaLink,guid,5a79f9a5-cb44-4859-850a-319fa7642bb8.aspx</pingback:target>
      <dc:creator>Jeroen Landheer</dc:creator>
      <wfw:comment>http://www.jeroenlandheer.com/Blog/CommentView,guid,5a79f9a5-cb44-4859-850a-319fa7642bb8.aspx</wfw:comment>
      <wfw:commentRss>http://www.jeroenlandheer.com/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=5a79f9a5-cb44-4859-850a-319fa7642bb8</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
If you need to configure a site to only allow SSL connections, that’s easy. But if
you want to redirect URLs to the SSL url when they are entering with a normal URL
typed in the browser, or linked to, that’s not an option you’ll find in the management
tools… or is it?
</p>
        <p>
As posted here: <a title="http://tech.mikeal.com/blog1.php?blog=1&amp;title=ssl-redirects-in-iis7-using-403-4-error--302&amp;disp=single&amp;more=1&amp;c=1&amp;tb=1&amp;pb=1" href="http://tech.mikeal.com/blog1.php?blog=1&amp;title=ssl-redirects-in-iis7-using-403-4-error--302&amp;disp=single&amp;more=1&amp;c=1&amp;tb=1&amp;pb=1">http://tech.mikeal.com/blog1.php?blog=1&amp;title=ssl-redirects-in-iis7-using-403-4-error--302&amp;disp=single&amp;more=1&amp;c=1&amp;tb=1&amp;pb=1</a> it <em>is</em> possible
to redirect those requests to a specific URL, using the “error pages” feature. The
status code to redirect is “403.4” and the rest is easy.
</p>
        <img width="0" height="0" src="http://www.jeroenlandheer.com/Blog/aggbug.ashx?id=5a79f9a5-cb44-4859-850a-319fa7642bb8" />
        <br />
        <hr />
This website is sposored by <a href="http://www.thewheel.nl">The Wheel Automatisering</a>.</body>
      <title>Some cool hidden feature in IIS7</title>
      <guid isPermaLink="false">http://www.jeroenlandheer.com/Blog/PermaLink,guid,5a79f9a5-cb44-4859-850a-319fa7642bb8.aspx</guid>
      <link>http://www.jeroenlandheer.com/Blog/2009/09/17/SomeCoolHiddenFeatureInIIS7.aspx</link>
      <pubDate>Thu, 17 Sep 2009 17:28:30 GMT</pubDate>
      <description>&lt;p&gt;
If you need to configure a site to only allow SSL connections, that’s easy. But if
you want to redirect URLs to the SSL url when they are entering with a normal URL
typed in the browser, or linked to, that’s not an option you’ll find in the management
tools… or is it?
&lt;/p&gt;
&lt;p&gt;
As posted here: &lt;a title="http://tech.mikeal.com/blog1.php?blog=1&amp;amp;title=ssl-redirects-in-iis7-using-403-4-error--302&amp;amp;disp=single&amp;amp;more=1&amp;amp;c=1&amp;amp;tb=1&amp;amp;pb=1" href="http://tech.mikeal.com/blog1.php?blog=1&amp;amp;title=ssl-redirects-in-iis7-using-403-4-error--302&amp;amp;disp=single&amp;amp;more=1&amp;amp;c=1&amp;amp;tb=1&amp;amp;pb=1"&gt;http://tech.mikeal.com/blog1.php?blog=1&amp;amp;title=ssl-redirects-in-iis7-using-403-4-error--302&amp;amp;disp=single&amp;amp;more=1&amp;amp;c=1&amp;amp;tb=1&amp;amp;pb=1&lt;/a&gt; it &lt;em&gt;is&lt;/em&gt; possible
to redirect those requests to a specific URL, using the “error pages” feature. The
status code to redirect is “403.4” and the rest is easy.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.jeroenlandheer.com/Blog/aggbug.ashx?id=5a79f9a5-cb44-4859-850a-319fa7642bb8" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This website is sposored by &lt;a href="http://www.thewheel.nl"&gt;The Wheel Automatisering&lt;/a&gt;.</description>
      <comments>http://www.jeroenlandheer.com/Blog/CommentView,guid,5a79f9a5-cb44-4859-850a-319fa7642bb8.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.jeroenlandheer.com/Blog/Trackback.aspx?guid=56af5f64-4941-4ecf-a82d-e711a94eb211</trackback:ping>
      <pingback:server>http://www.jeroenlandheer.com/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.jeroenlandheer.com/Blog/PermaLink,guid,56af5f64-4941-4ecf-a82d-e711a94eb211.aspx</pingback:target>
      <dc:creator>Jeroen Landheer</dc:creator>
      <wfw:comment>http://www.jeroenlandheer.com/Blog/CommentView,guid,56af5f64-4941-4ecf-a82d-e711a94eb211.aspx</wfw:comment>
      <wfw:commentRss>http://www.jeroenlandheer.com/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=56af5f64-4941-4ecf-a82d-e711a94eb211</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Because some things went wrong here in the household, like TL tubes blowing out and
other electrical problems, I didn’t have much time to do some real work on my PC.
But, this weekend that was different, because now everything is working like usual
again. I replaced 3 TL lamps in it’s entirely (not just the tube), and the electrical
problems are solved. 
</p>
        <p>
So, it was time to get to work on my nice PC. I have a quad core AMD Black Edition
3 Ghz processor, 8 GB memory, a 1000W PSU and 2 nice video cards (ATI Radeon HD 4870),
but I could only install one of these cards because the SATA cables were in the way.
The ECS board therefore didn’t fulfill my requirements and needed to be replaced.
Since this is all still an AM2 Chipset, I needed to be quick. AM3 comes out and before
you know it, you can’t get it anywhere anymore. 
</p>
        <p>
So here we are: One DFI LanParty board
</p>
        <p>
          <a href="http://www.jeroenlandheer.com/Blog/content/binary/WindowsLiveWriter/NewMoBoinstalled_1354A/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.jeroenlandheer.com/Blog/content/binary/WindowsLiveWriter/NewMoBoinstalled_1354A/image_thumb.png" width="501" height="436" />
          </a>
        </p>
        <p>
As you can see on the picture, this board has the advantage that the SATA cables can
be plugged into the side, so that does not conflict with large video cards, like this
one:
</p>
        <p>
          <a href="http://www.jeroenlandheer.com/Blog/content/binary/WindowsLiveWriter/NewMoBoinstalled_1354A/image_4.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.jeroenlandheer.com/Blog/content/binary/WindowsLiveWriter/NewMoBoinstalled_1354A/image_thumb_1.png" width="417" height="362" />
          </a>
        </p>
        <p>
Now you may ask: why 2 of these beasts? I got 3 big 26” HD monitors here on my desk.
(Each having a resolution of 1920 * 1200) This alone is <em>very</em> cool to work
with. 
</p>
        <p>
          <strong>Putting it all together</strong>
        </p>
        <p>
The task was a hefty one. Each video card needed 2 PCI-E Power connectors attached,
so those were 4 cables. Then came the motherboard, with the standard power connector
(the big one), and 3 aux connectors. (2 via the good’ol FDD connectors.) The audio
connector for the front part is a bit in a strange place, that’s between the 2 PCE-slots
where the gap is. Now came a nasty one, I had to get the proc out of the motherboard.
Once I carefully lifted up the heat sink, which didn’t go really easy, I noticed the
processor was attached to it. That stuff of AMD that they use on their heat sinks
is way to adhesive! I got the processor loose using the hairdryer trick. You warm
up the heatsink with a hairdryer, once this is warm you can slowly but surely move
the processor off. 
</p>
        <p>
The rest was all simple, and once the box was closed, it was time to put it back in
place.
</p>
        <p>
          <strong>Let’s run again</strong>
        </p>
        <p>
This was the first time I used the 2 video cards together, and I must say: "I’m impressed,
big time!” Video performance is funtastic, the motherboard does also a very good job.
Since this is an overclocker’s board, the BIOS is not something for the faint hearted.
Do your homework or don’t fiddle with it too much. 
</p>
        <p>
All together this is now a rig that will almost do anything you throw at it. The only
thing I’m missing is water cooling ;-) 
</p>
        <p>
If you want to build something like this, make sure you get a good PSU. For 2 of these
video cards, a 1000W Modular PSU is highly recommended. 
</p>
        <img width="0" height="0" src="http://www.jeroenlandheer.com/Blog/aggbug.ashx?id=56af5f64-4941-4ecf-a82d-e711a94eb211" />
        <br />
        <hr />
This website is sposored by <a href="http://www.thewheel.nl">The Wheel Automatisering</a>.</body>
      <title>New MoBo installed</title>
      <guid isPermaLink="false">http://www.jeroenlandheer.com/Blog/PermaLink,guid,56af5f64-4941-4ecf-a82d-e711a94eb211.aspx</guid>
      <link>http://www.jeroenlandheer.com/Blog/2009/08/10/NewMoBoInstalled.aspx</link>
      <pubDate>Mon, 10 Aug 2009 02:00:10 GMT</pubDate>
      <description>&lt;p&gt;
Because some things went wrong here in the household, like TL tubes blowing out and
other electrical problems, I didn’t have much time to do some real work on my PC.
But, this weekend that was different, because now everything is working like usual
again. I replaced 3 TL lamps in it’s entirely (not just the tube), and the electrical
problems are solved. 
&lt;/p&gt;
&lt;p&gt;
So, it was time to get to work on my nice PC. I have a quad core AMD Black Edition
3 Ghz processor, 8 GB memory, a 1000W PSU and 2 nice video cards (ATI Radeon HD 4870),
but I could only install one of these cards because the SATA cables were in the way.
The ECS board therefore didn’t fulfill my requirements and needed to be replaced.
Since this is all still an AM2 Chipset, I needed to be quick. AM3 comes out and before
you know it, you can’t get it anywhere anymore. 
&lt;/p&gt;
&lt;p&gt;
So here we are: One DFI LanParty board
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.jeroenlandheer.com/Blog/content/binary/WindowsLiveWriter/NewMoBoinstalled_1354A/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.jeroenlandheer.com/Blog/content/binary/WindowsLiveWriter/NewMoBoinstalled_1354A/image_thumb.png" width="501" height="436"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
As you can see on the picture, this board has the advantage that the SATA cables can
be plugged into the side, so that does not conflict with large video cards, like this
one:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.jeroenlandheer.com/Blog/content/binary/WindowsLiveWriter/NewMoBoinstalled_1354A/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.jeroenlandheer.com/Blog/content/binary/WindowsLiveWriter/NewMoBoinstalled_1354A/image_thumb_1.png" width="417" height="362"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Now you may ask: why 2 of these beasts? I got 3 big 26” HD monitors here on my desk.
(Each having a resolution of 1920 * 1200) This alone is &lt;em&gt;very&lt;/em&gt; cool to work
with. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Putting it all together&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The task was a hefty one. Each video card needed 2 PCI-E Power connectors attached,
so those were 4 cables. Then came the motherboard, with the standard power connector
(the big one), and 3 aux connectors. (2 via the good’ol FDD connectors.) The audio
connector for the front part is a bit in a strange place, that’s between the 2 PCE-slots
where the gap is. Now came a nasty one, I had to get the proc out of the motherboard.
Once I carefully lifted up the heat sink, which didn’t go really easy, I noticed the
processor was attached to it. That stuff of AMD that they use on their heat sinks
is way to adhesive! I got the processor loose using the hairdryer trick. You warm
up the heatsink with a hairdryer, once this is warm you can slowly but surely move
the processor off. 
&lt;/p&gt;
&lt;p&gt;
The rest was all simple, and once the box was closed, it was time to put it back in
place.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Let’s run again&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
This was the first time I used the 2 video cards together, and I must say: "I’m impressed,
big time!” Video performance is funtastic, the motherboard does also a very good job.
Since this is an overclocker’s board, the BIOS is not something for the faint hearted.
Do your homework or don’t fiddle with it too much. 
&lt;/p&gt;
&lt;p&gt;
All together this is now a rig that will almost do anything you throw at it. The only
thing I’m missing is water cooling ;-) 
&lt;/p&gt;
&lt;p&gt;
If you want to build something like this, make sure you get a good PSU. For 2 of these
video cards, a 1000W Modular PSU is highly recommended. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.jeroenlandheer.com/Blog/aggbug.ashx?id=56af5f64-4941-4ecf-a82d-e711a94eb211" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This website is sposored by &lt;a href="http://www.thewheel.nl"&gt;The Wheel Automatisering&lt;/a&gt;.</description>
      <comments>http://www.jeroenlandheer.com/Blog/CommentView,guid,56af5f64-4941-4ecf-a82d-e711a94eb211.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.jeroenlandheer.com/Blog/Trackback.aspx?guid=d2542c07-3eb0-4e36-9c5e-f2c080bd1777</trackback:ping>
      <pingback:server>http://www.jeroenlandheer.com/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.jeroenlandheer.com/Blog/PermaLink,guid,d2542c07-3eb0-4e36-9c5e-f2c080bd1777.aspx</pingback:target>
      <dc:creator>Jeroen Landheer</dc:creator>
      <wfw:comment>http://www.jeroenlandheer.com/Blog/CommentView,guid,d2542c07-3eb0-4e36-9c5e-f2c080bd1777.aspx</wfw:comment>
      <wfw:commentRss>http://www.jeroenlandheer.com/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=d2542c07-3eb0-4e36-9c5e-f2c080bd1777</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
A simple way to get a hash code from a file:
</p>
        <pre class="brush: csharp;">using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;

namespace Sha1
{
  class Program
  {
    static void Main(string[] args)
    {
      if (args.Length != 1)
      {
        Console.WriteLine("Usage: SHA1 &lt;filename&gt;");
        return;
      }

      string fileName = args[0];
      if (!File.Exists(fileName))
      {
        Console.WriteLine("File not found: {0}", fileName);
        return;
      }

      using (Stream s = File.OpenRead(fileName))
      {
        SHA1Managed sha = new SHA1Managed();
        byte[] result = sha.ComputeHash(s);
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i &lt; result.Length; i++)
        {
          sb.AppendFormat("{0:x2}", result[i]);
        }
        Console.WriteLine("SHA1 Hash: {0}", sb);
      }

    }
  }
}

</pre>
        <img width="0" height="0" src="http://www.jeroenlandheer.com/Blog/aggbug.ashx?id=d2542c07-3eb0-4e36-9c5e-f2c080bd1777" />
        <br />
        <hr />
This website is sposored by <a href="http://www.thewheel.nl">The Wheel Automatisering</a>.</body>
      <title>How to get a SHA1 hash from a file in C#.Net</title>
      <guid isPermaLink="false">http://www.jeroenlandheer.com/Blog/PermaLink,guid,d2542c07-3eb0-4e36-9c5e-f2c080bd1777.aspx</guid>
      <link>http://www.jeroenlandheer.com/Blog/2009/08/03/HowToGetASHA1HashFromAFileInCNet.aspx</link>
      <pubDate>Mon, 03 Aug 2009 13:22:14 GMT</pubDate>
      <description>&lt;p&gt;
A simple way to get a hash code from a file:
&lt;/p&gt;
&lt;pre class="brush: csharp;"&gt;using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;

namespace Sha1
{
  class Program
  {
    static void Main(string[] args)
    {
      if (args.Length != 1)
      {
        Console.WriteLine("Usage: SHA1 &amp;lt;filename&amp;gt;");
        return;
      }

      string fileName = args[0];
      if (!File.Exists(fileName))
      {
        Console.WriteLine("File not found: {0}", fileName);
        return;
      }

      using (Stream s = File.OpenRead(fileName))
      {
        SHA1Managed sha = new SHA1Managed();
        byte[] result = sha.ComputeHash(s);
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i &amp;lt; result.Length; i++)
        {
          sb.AppendFormat("{0:x2}", result[i]);
        }
        Console.WriteLine("SHA1 Hash: {0}", sb);
      }

    }
  }
}

&lt;/pre&gt;&lt;img width="0" height="0" src="http://www.jeroenlandheer.com/Blog/aggbug.ashx?id=d2542c07-3eb0-4e36-9c5e-f2c080bd1777" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This website is sposored by &lt;a href="http://www.thewheel.nl"&gt;The Wheel Automatisering&lt;/a&gt;.</description>
      <comments>http://www.jeroenlandheer.com/Blog/CommentView,guid,d2542c07-3eb0-4e36-9c5e-f2c080bd1777.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.jeroenlandheer.com/Blog/Trackback.aspx?guid=54a5d7d9-08d6-41fb-9f14-1e5093de136e</trackback:ping>
      <pingback:server>http://www.jeroenlandheer.com/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.jeroenlandheer.com/Blog/PermaLink,guid,54a5d7d9-08d6-41fb-9f14-1e5093de136e.aspx</pingback:target>
      <dc:creator>Jeroen Landheer</dc:creator>
      <wfw:comment>http://www.jeroenlandheer.com/Blog/CommentView,guid,54a5d7d9-08d6-41fb-9f14-1e5093de136e.aspx</wfw:comment>
      <wfw:commentRss>http://www.jeroenlandheer.com/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=54a5d7d9-08d6-41fb-9f14-1e5093de136e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
During some testing, I needed a tool that could simply compress a file to GZip format
and back again. I decided that other people might have a similar need, so here’s the
code to make it work.
</p>
        <pre class="brush: csharp;">using System;
using System.Collections.Generic;
using System.Text;
using System.IO.Compression;
using System.IO;

namespace GZip
{
  class Program
  {
    static void Main(string[] args)
    {
      CompressionMode mode = CompressionMode.Compress;

      if (args.Length != 3)
      {
        ShowUsage();
        return;
      }

      string command = args[0].ToLower();
      switch (command)
      {
        case "compress":
          mode = CompressionMode.Compress;
          break;
        case "decompress":
          mode = CompressionMode.Decompress;
          break;
        default:
          ShowUsage();
          return;
      }

      Stream sourceStream = File.OpenRead(args[1]);
      Stream targetStream = File.OpenWrite(args[2]);

      switch (mode)
      {
        case CompressionMode.Compress:
          using (GZipStream gZip = new GZipStream(targetStream, CompressionMode.Compress))
          {
            Pump(sourceStream, gZip);
          }

          break;
        case CompressionMode.Decompress:
          using (GZipStream gZip = new GZipStream(sourceStream, CompressionMode.Decompress))
          {
            Pump(gZip, targetStream);
          }
          break;
      }
      sourceStream.Close();
      targetStream.Close();

    }

    private static void Pump(Stream source, Stream target)
    {
      byte[] buffer = new byte[65536];
      int count;
      while ((count = source.Read(buffer, 0, buffer.Length)) &gt; 0)
      {
        target.Write(buffer, 0, count);
      }

    }

    private static void ShowUsage()
    {
      Console.WriteLine("Usage: GZip compress | decompress   sourceFileName targetFileName");
    }
  }
}

</pre>
        <img width="0" height="0" src="http://www.jeroenlandheer.com/Blog/aggbug.ashx?id=54a5d7d9-08d6-41fb-9f14-1e5093de136e" />
        <br />
        <hr />
This website is sposored by <a href="http://www.thewheel.nl">The Wheel Automatisering</a>.</body>
      <title>A very simple GZip command line tool</title>
      <guid isPermaLink="false">http://www.jeroenlandheer.com/Blog/PermaLink,guid,54a5d7d9-08d6-41fb-9f14-1e5093de136e.aspx</guid>
      <link>http://www.jeroenlandheer.com/Blog/2009/07/27/AVerySimpleGZipCommandLineTool.aspx</link>
      <pubDate>Mon, 27 Jul 2009 19:02:34 GMT</pubDate>
      <description>&lt;p&gt;
During some testing, I needed a tool that could simply compress a file to GZip format
and back again. I decided that other people might have a similar need, so here’s the
code to make it work.
&lt;/p&gt;
&lt;pre class="brush: csharp;"&gt;using System;
using System.Collections.Generic;
using System.Text;
using System.IO.Compression;
using System.IO;

namespace GZip
{
  class Program
  {
    static void Main(string[] args)
    {
      CompressionMode mode = CompressionMode.Compress;

      if (args.Length != 3)
      {
        ShowUsage();
        return;
      }

      string command = args[0].ToLower();
      switch (command)
      {
        case "compress":
          mode = CompressionMode.Compress;
          break;
        case "decompress":
          mode = CompressionMode.Decompress;
          break;
        default:
          ShowUsage();
          return;
      }

      Stream sourceStream = File.OpenRead(args[1]);
      Stream targetStream = File.OpenWrite(args[2]);

      switch (mode)
      {
        case CompressionMode.Compress:
          using (GZipStream gZip = new GZipStream(targetStream, CompressionMode.Compress))
          {
            Pump(sourceStream, gZip);
          }

          break;
        case CompressionMode.Decompress:
          using (GZipStream gZip = new GZipStream(sourceStream, CompressionMode.Decompress))
          {
            Pump(gZip, targetStream);
          }
          break;
      }
      sourceStream.Close();
      targetStream.Close();

    }

    private static void Pump(Stream source, Stream target)
    {
      byte[] buffer = new byte[65536];
      int count;
      while ((count = source.Read(buffer, 0, buffer.Length)) &amp;gt; 0)
      {
        target.Write(buffer, 0, count);
      }

    }

    private static void ShowUsage()
    {
      Console.WriteLine("Usage: GZip compress | decompress   sourceFileName targetFileName");
    }
  }
}

&lt;/pre&gt;&lt;img width="0" height="0" src="http://www.jeroenlandheer.com/Blog/aggbug.ashx?id=54a5d7d9-08d6-41fb-9f14-1e5093de136e" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This website is sposored by &lt;a href="http://www.thewheel.nl"&gt;The Wheel Automatisering&lt;/a&gt;.</description>
      <comments>http://www.jeroenlandheer.com/Blog/CommentView,guid,54a5d7d9-08d6-41fb-9f14-1e5093de136e.aspx</comments>
      <category>Programming</category>
    </item>
    <item>
      <trackback:ping>http://www.jeroenlandheer.com/Blog/Trackback.aspx?guid=b7cefdec-3f9c-4330-b787-66945b581c77</trackback:ping>
      <pingback:server>http://www.jeroenlandheer.com/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.jeroenlandheer.com/Blog/PermaLink,guid,b7cefdec-3f9c-4330-b787-66945b581c77.aspx</pingback:target>
      <dc:creator>Jeroen Landheer</dc:creator>
      <wfw:comment>http://www.jeroenlandheer.com/Blog/CommentView,guid,b7cefdec-3f9c-4330-b787-66945b581c77.aspx</wfw:comment>
      <wfw:commentRss>http://www.jeroenlandheer.com/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=b7cefdec-3f9c-4330-b787-66945b581c77</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
It’s always fun to play with .Net, the HTTP Listener class in .Net 2.0 makes it really
easy. With this little block of code you can setup a very simple (multithreaded) web
server…
</p>
        <pre class="brush: csharp;">private static System.Threading.AutoResetEvent listenForNextRequest = new System.Threading.AutoResetEvent(false);

protected Server() 
{
  _httpListener = new HttpListener();
}

private HttpListener _httpListener;

public string Prefix { get; set; }
public void Start()
{
  if (String.IsNullOrEmpty(Prefix))
    throw new InvalidOperationException("No prefix has been specified");
  _httpListener.Prefixes.Clear();
  _httpListener.Prefixes.Add(Prefix);
  _httpListener.Start();
  System.Threading.ThreadPool.QueueUserWorkItem(Listen);

}

internal void Stop()
{
  _httpListener.Stop();
  IsRunning = false;
}

public bool IsRunning { get; private set; }

private void ListenerCallback(IAsyncResult result)
{
  HttpListener listener = result.AsyncState as HttpListener;
  HttpListenerContext context = null;

  if (listener == null)
    // Nevermind
    return;

  try
  {
    context = listener.EndGetContext(result);
  }
  catch (Exception ex)
  {
    System.Diagnostics.Debug.WriteLine(ex.ToString());
    return;
  }
  finally
  {
    listenForNextRequest.Set();
  }
  if (context == null)
    return;
  ProcessRequest(context);
}

// Loop here to begin processing of new requests.
private void Listen(object state)
{
  while (_httpListener.IsListening)
  {
    _httpListener.BeginGetContext(new AsyncCallback(ListenerCallback), _httpListener);
    listenForNextRequest.WaitOne();
  }
}

protected abstract void ProcessRequest(HttpListenerContext context);

</pre>
        <p>
Always nice to have ;)
</p>
        <img width="0" height="0" src="http://www.jeroenlandheer.com/Blog/aggbug.ashx?id=b7cefdec-3f9c-4330-b787-66945b581c77" />
        <br />
        <hr />
This website is sposored by <a href="http://www.thewheel.nl">The Wheel Automatisering</a>.</body>
      <title>World’s smallest web server</title>
      <guid isPermaLink="false">http://www.jeroenlandheer.com/Blog/PermaLink,guid,b7cefdec-3f9c-4330-b787-66945b581c77.aspx</guid>
      <link>http://www.jeroenlandheer.com/Blog/2009/07/27/WorldsSmallestWebServer.aspx</link>
      <pubDate>Mon, 27 Jul 2009 17:21:45 GMT</pubDate>
      <description>&lt;p&gt;
It’s always fun to play with .Net, the HTTP Listener class in .Net 2.0 makes it really
easy. With this little block of code you can setup a very simple (multithreaded) web
server…
&lt;/p&gt;
&lt;pre class="brush: csharp;"&gt;private static System.Threading.AutoResetEvent listenForNextRequest = new System.Threading.AutoResetEvent(false);

protected Server() 
{
  _httpListener = new HttpListener();
}

private HttpListener _httpListener;

public string Prefix { get; set; }
public void Start()
{
  if (String.IsNullOrEmpty(Prefix))
    throw new InvalidOperationException("No prefix has been specified");
  _httpListener.Prefixes.Clear();
  _httpListener.Prefixes.Add(Prefix);
  _httpListener.Start();
  System.Threading.ThreadPool.QueueUserWorkItem(Listen);

}

internal void Stop()
{
  _httpListener.Stop();
  IsRunning = false;
}

public bool IsRunning { get; private set; }

private void ListenerCallback(IAsyncResult result)
{
  HttpListener listener = result.AsyncState as HttpListener;
  HttpListenerContext context = null;

  if (listener == null)
    // Nevermind
    return;

  try
  {
    context = listener.EndGetContext(result);
  }
  catch (Exception ex)
  {
    System.Diagnostics.Debug.WriteLine(ex.ToString());
    return;
  }
  finally
  {
    listenForNextRequest.Set();
  }
  if (context == null)
    return;
  ProcessRequest(context);
}

// Loop here to begin processing of new requests.
private void Listen(object state)
{
  while (_httpListener.IsListening)
  {
    _httpListener.BeginGetContext(new AsyncCallback(ListenerCallback), _httpListener);
    listenForNextRequest.WaitOne();
  }
}

protected abstract void ProcessRequest(HttpListenerContext context);

&lt;/pre&gt;
&lt;p&gt;
Always nice to have ;)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.jeroenlandheer.com/Blog/aggbug.ashx?id=b7cefdec-3f9c-4330-b787-66945b581c77" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This website is sposored by &lt;a href="http://www.thewheel.nl"&gt;The Wheel Automatisering&lt;/a&gt;.</description>
      <comments>http://www.jeroenlandheer.com/Blog/CommentView,guid,b7cefdec-3f9c-4330-b787-66945b581c77.aspx</comments>
      <category>Programming</category>
    </item>
    <item>
      <trackback:ping>http://www.jeroenlandheer.com/Blog/Trackback.aspx?guid=afcc76a8-27ff-4a37-8ad6-2017be174fd5</trackback:ping>
      <pingback:server>http://www.jeroenlandheer.com/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.jeroenlandheer.com/Blog/PermaLink,guid,afcc76a8-27ff-4a37-8ad6-2017be174fd5.aspx</pingback:target>
      <dc:creator>Jeroen Landheer</dc:creator>
      <wfw:comment>http://www.jeroenlandheer.com/Blog/CommentView,guid,afcc76a8-27ff-4a37-8ad6-2017be174fd5.aspx</wfw:comment>
      <wfw:commentRss>http://www.jeroenlandheer.com/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=afcc76a8-27ff-4a37-8ad6-2017be174fd5</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Today is the day, Windows 7 and it’s big brother (Server 2008 R2) has both been released
to manufacturing. (Which means: Let’s copy a few million DVDs)
</p>
        <p>
See the following links for more info:
</p>
        <ul>
          <li>
            <a title="http://windowsteamblog.com/blogs/windows7/archive/2009/07/22/windows-7-has-been-released-to-manufacturing.aspx" href="http://windowsteamblog.com/blogs/windows7/archive/2009/07/22/windows-7-has-been-released-to-manufacturing.aspx">http://windowsteamblog.com/blogs/windows7/archive/2009/07/22/windows-7-has-been-released-to-manufacturing.aspx</a>
          </li>
          <li>
            <a title="http://arstechnica.com/microsoft/news/2009/07/microsoft-windows-7-is-done-on-its-way-to-manufacturers.ars" href="http://arstechnica.com/microsoft/news/2009/07/microsoft-windows-7-is-done-on-its-way-to-manufacturers.ars">http://arstechnica.com/microsoft/news/2009/07/microsoft-windows-7-is-done-on-its-way-to-manufacturers.ars</a>
          </li>
          <li>
            <a title="http://blogs.zdnet.com/microsoft/?p=3445" href="http://blogs.zdnet.com/microsoft/?p=3445">http://blogs.zdnet.com/microsoft/?p=3445</a>
          </li>
        </ul>
        <p>
My congrats to the Windows team, they really did an outstanding job!
</p>
        <p>
Hurray :)
</p>
        <img width="0" height="0" src="http://www.jeroenlandheer.com/Blog/aggbug.ashx?id=afcc76a8-27ff-4a37-8ad6-2017be174fd5" />
        <br />
        <hr />
This website is sposored by <a href="http://www.thewheel.nl">The Wheel Automatisering</a>.</body>
      <title>Windows 7 &amp; Windows Server 2008 R2 RTM</title>
      <guid isPermaLink="false">http://www.jeroenlandheer.com/Blog/PermaLink,guid,afcc76a8-27ff-4a37-8ad6-2017be174fd5.aspx</guid>
      <link>http://www.jeroenlandheer.com/Blog/2009/07/22/Windows7WindowsServer2008R2RTM.aspx</link>
      <pubDate>Wed, 22 Jul 2009 21:46:59 GMT</pubDate>
      <description>&lt;p&gt;
Today is the day, Windows 7 and it’s big brother (Server 2008 R2) has both been released
to manufacturing. (Which means: Let’s copy a few million DVDs)
&lt;/p&gt;
&lt;p&gt;
See the following links for more info:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a title="http://windowsteamblog.com/blogs/windows7/archive/2009/07/22/windows-7-has-been-released-to-manufacturing.aspx" href="http://windowsteamblog.com/blogs/windows7/archive/2009/07/22/windows-7-has-been-released-to-manufacturing.aspx"&gt;http://windowsteamblog.com/blogs/windows7/archive/2009/07/22/windows-7-has-been-released-to-manufacturing.aspx&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a title="http://arstechnica.com/microsoft/news/2009/07/microsoft-windows-7-is-done-on-its-way-to-manufacturers.ars" href="http://arstechnica.com/microsoft/news/2009/07/microsoft-windows-7-is-done-on-its-way-to-manufacturers.ars"&gt;http://arstechnica.com/microsoft/news/2009/07/microsoft-windows-7-is-done-on-its-way-to-manufacturers.ars&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a title="http://blogs.zdnet.com/microsoft/?p=3445" href="http://blogs.zdnet.com/microsoft/?p=3445"&gt;http://blogs.zdnet.com/microsoft/?p=3445&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
My congrats to the Windows team, they really did an outstanding job!
&lt;/p&gt;
&lt;p&gt;
Hurray :)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.jeroenlandheer.com/Blog/aggbug.ashx?id=afcc76a8-27ff-4a37-8ad6-2017be174fd5" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This website is sposored by &lt;a href="http://www.thewheel.nl"&gt;The Wheel Automatisering&lt;/a&gt;.</description>
      <comments>http://www.jeroenlandheer.com/Blog/CommentView,guid,afcc76a8-27ff-4a37-8ad6-2017be174fd5.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.jeroenlandheer.com/Blog/Trackback.aspx?guid=a8620dd5-0e23-46bb-a700-70eb22a5e763</trackback:ping>
      <pingback:server>http://www.jeroenlandheer.com/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.jeroenlandheer.com/Blog/PermaLink,guid,a8620dd5-0e23-46bb-a700-70eb22a5e763.aspx</pingback:target>
      <dc:creator>Jeroen Landheer</dc:creator>
      <wfw:comment>http://www.jeroenlandheer.com/Blog/CommentView,guid,a8620dd5-0e23-46bb-a700-70eb22a5e763.aspx</wfw:comment>
      <wfw:commentRss>http://www.jeroenlandheer.com/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=a8620dd5-0e23-46bb-a700-70eb22a5e763</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
When I read this I really had a good laugh…
</p>
        <blockquote>
          <p>
            <em>
              <strong>Code Deodorants for Code Smells </strong>
              <br />
Code Smells have become an established way of talking about indications that things
may be wrong with your code. Nick Harrison extends the idea with the concept of 'code
deodorants' and shows how the code smell of 'inappropriate intimacy' can be cured
by means of the code deodorant, called 'separation by interface'.</em>
          </p>
        </blockquote>
        <p>
- Snif – No, I don’t smell anything here… Or as my lovely would wife put it: 
</p>
        <blockquote>
          <p>
“That newsletter stinks” :o)
</p>
        </blockquote>
        <p>
LOL :)
</p>
        <img width="0" height="0" src="http://www.jeroenlandheer.com/Blog/aggbug.ashx?id=a8620dd5-0e23-46bb-a700-70eb22a5e763" />
        <br />
        <hr />
This website is sposored by <a href="http://www.thewheel.nl">The Wheel Automatisering</a>.</body>
      <title>That’s a ‘stinky’ newsletter ;)</title>
      <guid isPermaLink="false">http://www.jeroenlandheer.com/Blog/PermaLink,guid,a8620dd5-0e23-46bb-a700-70eb22a5e763.aspx</guid>
      <link>http://www.jeroenlandheer.com/Blog/2009/07/22/ThatsAStinkyNewsletter.aspx</link>
      <pubDate>Wed, 22 Jul 2009 05:39:27 GMT</pubDate>
      <description>&lt;p&gt;
When I read this I really had a good laugh…
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;em&gt;&lt;strong&gt;Code Deodorants for Code Smells &lt;/strong&gt;
&lt;br&gt;
Code Smells have become an established way of talking about indications that things
may be wrong with your code. Nick Harrison extends the idea with the concept of 'code
deodorants' and shows how the code smell of 'inappropriate intimacy' can be cured
by means of the code deodorant, called 'separation by interface'.&lt;/em&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
- Snif – No, I don’t smell anything here… Or as my lovely would wife put it: 
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
“That newsletter stinks” :o)
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
LOL :)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.jeroenlandheer.com/Blog/aggbug.ashx?id=a8620dd5-0e23-46bb-a700-70eb22a5e763" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This website is sposored by &lt;a href="http://www.thewheel.nl"&gt;The Wheel Automatisering&lt;/a&gt;.</description>
      <comments>http://www.jeroenlandheer.com/Blog/CommentView,guid,a8620dd5-0e23-46bb-a700-70eb22a5e763.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.jeroenlandheer.com/Blog/Trackback.aspx?guid=6d35aeab-5219-42b5-8647-12492a9576bc</trackback:ping>
      <pingback:server>http://www.jeroenlandheer.com/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.jeroenlandheer.com/Blog/PermaLink,guid,6d35aeab-5219-42b5-8647-12492a9576bc.aspx</pingback:target>
      <dc:creator>Jeroen Landheer</dc:creator>
      <wfw:comment>http://www.jeroenlandheer.com/Blog/CommentView,guid,6d35aeab-5219-42b5-8647-12492a9576bc.aspx</wfw:comment>
      <wfw:commentRss>http://www.jeroenlandheer.com/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=6d35aeab-5219-42b5-8647-12492a9576bc</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Microsoft Dynamics is at it again: <a title="Permanent Link to Cute Microsoft Windows toaster" href="http://www.istartedsomething.com/20090719/cute-microsoft-toaster/">Permanent
Link to Cute Microsoft Windows toaster</a></p>
        <p>
A Windows Toast anyone?
</p>
        <p>
          <a href="http://www.jeroenlandheer.com/Blog/content/binary/WindowsLiveWriter/Marketingfun_7E85/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.jeroenlandheer.com/Blog/content/binary/WindowsLiveWriter/Marketingfun_7E85/image_thumb.png" width="504" height="685" />
          </a>
        </p>
        <img width="0" height="0" src="http://www.jeroenlandheer.com/Blog/aggbug.ashx?id=6d35aeab-5219-42b5-8647-12492a9576bc" />
        <br />
        <hr />
This website is sposored by <a href="http://www.thewheel.nl">The Wheel Automatisering</a>.</body>
      <title>Marketing fun</title>
      <guid isPermaLink="false">http://www.jeroenlandheer.com/Blog/PermaLink,guid,6d35aeab-5219-42b5-8647-12492a9576bc.aspx</guid>
      <link>http://www.jeroenlandheer.com/Blog/2009/07/20/MarketingFun.aspx</link>
      <pubDate>Mon, 20 Jul 2009 13:00:31 GMT</pubDate>
      <description>&lt;p&gt;
Microsoft Dynamics is at it again: &lt;a title="Permanent Link to Cute Microsoft Windows toaster" href="http://www.istartedsomething.com/20090719/cute-microsoft-toaster/"&gt;Permanent
Link to Cute Microsoft Windows toaster&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
A Windows Toast anyone?
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.jeroenlandheer.com/Blog/content/binary/WindowsLiveWriter/Marketingfun_7E85/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.jeroenlandheer.com/Blog/content/binary/WindowsLiveWriter/Marketingfun_7E85/image_thumb.png" width="504" height="685"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.jeroenlandheer.com/Blog/aggbug.ashx?id=6d35aeab-5219-42b5-8647-12492a9576bc" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This website is sposored by &lt;a href="http://www.thewheel.nl"&gt;The Wheel Automatisering&lt;/a&gt;.</description>
      <comments>http://www.jeroenlandheer.com/Blog/CommentView,guid,6d35aeab-5219-42b5-8647-12492a9576bc.aspx</comments>
    </item>
  </channel>
</rss>