<?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:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:georss="http://www.georss.org/georss" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>The Right Stuff</title>
    <link>http://therightstuff.de/</link>
    <description>Windows, .NET, Music, Cooking</description>
    <image>
      <url>http://therightstuff.de/images/ChannelImage.jpg</url>
      <title>The Right Stuff</title>
      <link>http://therightstuff.de/</link>
    </image>
    <language>en-us</language>
    <copyright>Alexander Groß</copyright>
    <lastBuildDate>Tue, 30 Jun 2009 19:32:27 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.2.8252.15582</generator>
    <managingEditor>agross@therightstuff.de</managingEditor>
    <webMaster>agross@therightstuff.de</webMaster>
    <geo:lat>51.325330</geo:lat><geo:long>12.342740</geo:long><creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.0/</creativeCommons:license><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
      <trackback:ping>http://therightstuff.de/Trackback.aspx?guid=1fdd6f8e-10c1-4efb-8b60-c149fc197ee6</trackback:ping>
      <pingback:server>http://therightstuff.de/pingback.aspx</pingback:server>
      <pingback:target>http://therightstuff.de/PermaLink,guid,1fdd6f8e-10c1-4efb-8b60-c149fc197ee6.aspx</pingback:target>
      <dc:creator>Alexander Groß</dc:creator>
      <georss:point>51.32533 12.34274</georss:point>
      <wfw:comment>http://therightstuff.de/CommentView,guid,1fdd6f8e-10c1-4efb-8b60-c149fc197ee6.aspx</wfw:comment>
      <wfw:commentRss>http://therightstuff.de/SyndicationService.asmx/GetEntryCommentsRss?guid=1fdd6f8e-10c1-4efb-8b60-c149fc197ee6</wfw:commentRss>
      <title>Rezept: Victoriaseebarsch auf dem Gemüsebett</title>
      <guid isPermaLink="false">http://therightstuff.de/PermaLink,guid,1fdd6f8e-10c1-4efb-8b60-c149fc197ee6.aspx</guid>
      <link>http://feedproxy.google.com/~r/alexandergross/~3/4jzAY7Owy78/Rezept-Victoriaseebarsch-Auf-Dem-Gem%c3%bcsebett.aspx</link>
      <pubDate>Tue, 30 Jun 2009 19:32:27 GMT</pubDate>
      <description>&lt;div&gt;&lt;ul&gt;   &lt;li&gt;das Filet eines halben Victoriaseebarschs (ungefähr 450 g)&lt;/li&gt;    &lt;li&gt;1 unbehandelte Zitrone&lt;/li&gt;    &lt;li&gt;1 rote Paprika&lt;/li&gt;    &lt;li&gt;1 1/2 kleine Zucchini&lt;/li&gt;    &lt;li&gt;5 Schalotten&lt;/li&gt;    &lt;li&gt;5 kleine aromatische Tomaten&lt;/li&gt;    &lt;li&gt;ein paar Blätter Basilikum und Zitronenmelisse&lt;/li&gt;    &lt;li&gt;2 Zweige Rosmarin&lt;/li&gt;    &lt;li&gt;1 Knoblauchzehe&lt;/li&gt;    &lt;li&gt;100 g Butter&lt;/li&gt;    &lt;li&gt;3 EL Olivenöl&lt;/li&gt;    &lt;li&gt;50 ml trockener Weißwein&lt;/li&gt;    &lt;li&gt;Salz, Pfeffer&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Die Paprika bei großer Hitze ungefähr 10 Minuten im Ofen rösten. Nach dem Herausnehmen etwas erkalten lassen, die Schale abziehen und die Kerne entfernen. Die Paprika in Streifen schneiden.&lt;/p&gt;  &lt;p&gt;Inwzischen die Schale der Zitrone mit einem höllisch scharfen Messer hauchdünn abschneiden. Die Zesten anschließend sehr fein hacken und zusammen mit ebenfalls kleingehackter Zitronenmelisse und 1 TL Zitronensaft unter 50 g weiche Butter rühren.&lt;/p&gt;  &lt;p&gt;Den Fisch in 4 Stücke schneiden, mit Zitronensaft beträufeln und wieder kalt stellen.&lt;/p&gt;  &lt;p&gt;Knoblauch, Zucchini und die Schalotten in dünne Scheiben schneiden, die Tomaten halbieren und den Strunk entfernen. Das Olivenöl in einer ofenfesten Pfanne erhitzen und anschließend Knoblauch, Zucchini, Schalotten und Tomaten zusammen mit dem Rosmarin anbraten. Mit einem Schuss Weißwein und ein paar Spritzern Zitronensaft ablöschen,&amp;#160; salzen und pfeffern. Grob gehacktes Basilikum und die Paprikastreifen darübergeben und beiseite stellen.&lt;/p&gt;  &lt;p&gt;Die restliche Butter mit etwas Zitronensaft in einer zweiten Pfanne zerlassen. Den Fisch einseitig salzen und langsam halb durchbraten. Anschließend jedes Stück Fisch mit einem Blatt Zitronenmelisse belegen. Den Fisch vorsichtig auf das Gemüsebett in der anderen Pfanne umheben und die Zitronensaftbutter darübergeben. Diese Pfanne mit Aluminiumfolie dicht abschließen und bei 80°C 20 Minuten im Ofen garziehen lassen.&lt;/p&gt;  &lt;p&gt;Mit Spaghetti al dente servieren.&lt;/p&gt;&lt;img width="0" height="0" src="http://therightstuff.de/aggbug.ashx?id=1fdd6f8e-10c1-4efb-8b60-c149fc197ee6"/&gt;&lt;/div&gt;</description>
      <comments>http://therightstuff.de/CommentView,guid,1fdd6f8e-10c1-4efb-8b60-c149fc197ee6.aspx</comments>
      <category>Recipes (German)</category>
    <feedburner:origLink>http://therightstuff.de/2009/06/30/Rezept-Victoriaseebarsch-Auf-Dem-Gem%c3%bcsebett.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://therightstuff.de/Trackback.aspx?guid=22ecab83-b7d1-4b48-84d3-2ad7b0cdbc35</trackback:ping>
      <pingback:server>http://therightstuff.de/pingback.aspx</pingback:server>
      <pingback:target>http://therightstuff.de/PermaLink,guid,22ecab83-b7d1-4b48-84d3-2ad7b0cdbc35.aspx</pingback:target>
      <dc:creator>Alexander Groß</dc:creator>
      <georss:point>51.32533 12.34274</georss:point>
      <wfw:comment>http://therightstuff.de/CommentView,guid,22ecab83-b7d1-4b48-84d3-2ad7b0cdbc35.aspx</wfw:comment>
      <wfw:commentRss>http://therightstuff.de/SyndicationService.asmx/GetEntryCommentsRss?guid=22ecab83-b7d1-4b48-84d3-2ad7b0cdbc35</wfw:commentRss>
      <title>Rewriting Git History: Relocating Subversion URLs</title>
      <guid isPermaLink="false">http://therightstuff.de/PermaLink,guid,22ecab83-b7d1-4b48-84d3-2ad7b0cdbc35.aspx</guid>
      <link>http://feedproxy.google.com/~r/alexandergross/~3/6pG2pRYIZYA/Rewriting-Git-History-Relocating-Subversion-URLs.aspx</link>
      <pubDate>Thu, 25 Jun 2009 18:59:52 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;&lt;img style="margin-bottom: 1em; float: right; margin-left: 1em" title="Git Logo" alt="Git Logo" src="http://www.therightstuff.de/content/binary/WindowsLiveWriter/UseSourceGearDiffMergewithGit_11D62/git-logo_ba9c923f-7667-4383-9d95-fc7fbb3db552.png" /&gt;Today we changed the URL of our Subversion server at work to a new domain. Subversion and TortoiseSVN offer a separate &lt;code&gt;&lt;a  href="http://therightstuff.de/ct.ashx?id=22ecab83-b7d1-4b48-84d3-2ad7b0cdbc35&amp;amp;url=http%3a%2f%2fsvnbook.red-bean.com%2fen%2f1.1%2fre27.html"&gt;relocate&lt;/a&gt;&lt;/code&gt; command for that, which basically updates the local working copy metadata.&lt;/p&gt;  &lt;p&gt;Not so for Git. Git keeps SVN metadata in two places: the commit log messages themselves which hold a &lt;code&gt;git-svn-id&lt;/code&gt; entry for all commits that have been pushed to SVN, and in the &lt;strong&gt;.git/config&lt;/strong&gt; file.&lt;/p&gt;  &lt;pre&gt;commit e82751b4872142679ba61e26fc0c57e97c698e8f
Author: agross &lt;agross  @8ED4A44C-BFB4-4748-A28A-FAD9255C4788&gt;
Date:   Thu Jun 25 16:44:55 2009 +0000

    Adding FxCop to the code quality task

    git-svn-id: https://your.svn-server/svn/Crimson/trunk@67 8ed4a44c-bfb4-4748-a28a-fad9255c4788&lt;/pre&gt;

&lt;pre&gt;[core]
	repositoryformatversion = 0
	filemode = false
	bare = false
	logallrefupdates = true
	ignorecase = true
[svn-remote &amp;quot;svn&amp;quot;]
	url = https://your.svn-server/svn/Crimson/trunk
	fetch = :refs/remotes/git-svn&lt;/pre&gt;

&lt;p&gt;To update the SVN URL it’s required to update the Git configuration file (an easy edit) and also to rewrite the commit log messages, updating the values of &lt;code&gt;git-svn-id&lt;/code&gt; to reflect the new SVN server URL. The latter can be achieved with the &lt;a  href="http://therightstuff.de/ct.ashx?id=22ecab83-b7d1-4b48-84d3-2ad7b0cdbc35&amp;amp;url=http%3a%2f%2fwww.kernel.org%2fpub%2fsoftware%2fscm%2fgit-core%2fdocs%2fgit-filter-branch.html"&gt;git-filter-branch&lt;/a&gt; command which allows you to dissect the project history in interesting ways.&lt;/p&gt;

&lt;p&gt;Having several local Git repositories to update, I went for the scripted solution. I found &lt;a  href="http://therightstuff.de/ct.ashx?id=22ecab83-b7d1-4b48-84d3-2ad7b0cdbc35&amp;amp;url=http%3a%2f%2ftranslate.org.za%2fblogs%2fwynand%2fen%2fcontent%2fchanging-your-svn-repository-address-git-svn-setup"&gt;this article on how to change the SVN repository URL&lt;/a&gt; and added some scripting goodness to it (aside from fixing the syntactic errors). It worked pretty good for my ~10 repositories.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;You pass two arguments: 
    &lt;ul&gt;
      &lt;li&gt;The old SVN URL, i.e. &lt;a  href="http://therightstuff.de/ct.ashx?id=22ecab83-b7d1-4b48-84d3-2ad7b0cdbc35&amp;amp;url=http%3a%2f%2fold.server"&gt;http://old.server&lt;/a&gt; &lt;/li&gt;

      &lt;li&gt;The new SVN URL, i.e. &lt;a  href="http://therightstuff.de/ct.ashx?id=22ecab83-b7d1-4b48-84d3-2ad7b0cdbc35&amp;amp;url=https%3a%2f%2fnew.server"&gt;https://new.server&lt;/a&gt; &lt;/li&gt;

      &lt;li&gt;The old URL will be matched against &lt;code&gt;git-svn-id&lt;/code&gt; entries with a regular expression, and the matched parts get replaced with the new URL. &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;

  &lt;li&gt;Rewrite the commit log messages, thus updating &lt;code&gt;git-svn-id&lt;/code&gt; &lt;/li&gt;

  &lt;li&gt;Create a backup copy of &lt;strong&gt;.git/config&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Replace the old SVN URL in &lt;strong&gt;.git/config&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Delete all metadata Git has aquired about SVN &lt;/li&gt;

  &lt;li&gt;Rebase against SVN, recreating the SVN metadata &lt;/li&gt;
&lt;/ul&gt;

&lt;pre class="brush: bash;"&gt;#!/bin/sh

# Must be called with two command-line args.
# Example: git-svn-relocate.sh http://old.server https://new.server
if [ $# -ne 2 ]  
then
  echo &amp;quot;Please invoke this script with two command-line arguments (old and new SVN URLs).&amp;quot;
  exit $E_NO_ARGS
fi  

# Prepare URLs for regex search and replace.
oldUrl=`echo $1 | awk '{gsub(&amp;quot;[\\\.]&amp;quot;, &amp;quot;\\\\\\\&amp;amp;&amp;quot;);print}'`
newUrl=`echo $2 | awk '{gsub(&amp;quot;[\\\&amp;amp;]&amp;quot;, &amp;quot;\\\\\\\&amp;amp;&amp;quot;);print}'`

filter=&amp;quot;sed \&amp;quot;s|^git-svn-id: $oldUrl|git-svn-id: $newUrl|g\&amp;quot;&amp;quot;
git filter-branch --msg-filter &amp;quot;$filter&amp;quot; -- --all

sed -i.backup -e &amp;quot;s|$oldUrl|$newUrl|g&amp;quot; .git/config

rm -rf .git/svn
git svn rebase&lt;/pre&gt;&lt;img width="0" height="0" src="http://therightstuff.de/aggbug.ashx?id=22ecab83-b7d1-4b48-84d3-2ad7b0cdbc35"/&gt;&lt;/div&gt;</description>
      <comments>http://therightstuff.de/CommentView,guid,22ecab83-b7d1-4b48-84d3-2ad7b0cdbc35.aspx</comments>
      <category>.NET</category>
      <category>Git</category>
    <feedburner:origLink>http://therightstuff.de/2009/06/25/Rewriting-Git-History-Relocating-Subversion-URLs.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://therightstuff.de/Trackback.aspx?guid=e8a61eec-b25d-4d53-a274-98481232d57b</trackback:ping>
      <pingback:server>http://therightstuff.de/pingback.aspx</pingback:server>
      <pingback:target>http://therightstuff.de/PermaLink,guid,e8a61eec-b25d-4d53-a274-98481232d57b.aspx</pingback:target>
      <dc:creator>Alexander Groß</dc:creator>
      <georss:point>51.32533 12.34274</georss:point>
      <wfw:comment>http://therightstuff.de/CommentView,guid,e8a61eec-b25d-4d53-a274-98481232d57b.aspx</wfw:comment>
      <wfw:commentRss>http://therightstuff.de/SyndicationService.asmx/GetEntryCommentsRss?guid=e8a61eec-b25d-4d53-a274-98481232d57b</wfw:commentRss>
      <title>Migrating SharePoint Content Databases To A New Farm While Keeping Security Settings</title>
      <guid isPermaLink="false">http://therightstuff.de/PermaLink,guid,e8a61eec-b25d-4d53-a274-98481232d57b.aspx</guid>
      <link>http://feedproxy.google.com/~r/alexandergross/~3/y3TE8rRjCnk/Migrating-SharePoint-Content-Databases-To-A-New-Farm-While-Keeping-Security-Settings.aspx</link>
      <pubDate>Sat, 25 Apr 2009 14:40:29 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;The server this blog is hosted on was upgraded recently, i.e. is now run on a new dedicated server. Actually, next to this blog there’s a lot more going on. We, a &lt;a title="Marcel Hoyer"  href="http://therightstuff.de/ct.ashx?id=e8a61eec-b25d-4d53-a274-98481232d57b&amp;amp;url=http%3a%2f%2fpixelplastic.de%2f" rel="friend met"&gt;bunch&lt;/a&gt; &lt;a title="Peter Nowak"  href="http://therightstuff.de/ct.ashx?id=e8a61eec-b25d-4d53-a274-98481232d57b&amp;amp;url=http%3a%2f%2fblogs.compactframework.de%2fPeter.Nowak%2f" rel="friend met"&gt;of&lt;/a&gt; &lt;a title="Torsten Weber"  href="http://therightstuff.de/ct.ashx?id=e8a61eec-b25d-4d53-a274-98481232d57b&amp;amp;url=http%3a%2f%2fblogs.compactframework.de%2fTorsten.Weber%2f" rel="friend met"&gt;geeks&lt;/a&gt;, are self-hosting mail, web sites, blogs and some collaboration tools like SharePoint (Windows SharePoint Services, in our case). Yeah, SharePoint, a true beast in and of itself. I can’t tell you how much I do &lt;em&gt;not&lt;/em&gt; miss developing software for it and setting up customer sites.&lt;/p&gt;  &lt;p&gt;I wanted to make the move to the new server as smooth as possible for our SharePoint users. Because we do not use Active Directory to authenticate our users, we obviously had to migrate the SharePoint user accounts manually. That is, re-create each user on the new server giving them a random password and communicate the change.&lt;/p&gt;  &lt;p&gt;Moving a SharePoint site is surprisingly &lt;a  href="http://therightstuff.de/ct.ashx?id=e8a61eec-b25d-4d53-a274-98481232d57b&amp;amp;url=http%3a%2f%2ftechnet.microsoft.com%2fen-us%2flibrary%2fdd622870.aspx"&gt;pretty well documented on TechNet&lt;/a&gt;, but won’t tell you about one important aspect: When you move the site to a new farm and the site does not use Active Directory, you will have to set up security anew.&lt;/p&gt;  &lt;p&gt;Why? Because SharePoint matches user accounts by their &lt;abbr title="Security Identifier"&gt;SID&lt;/abbr&gt;, a value that is unique for each user account, even across machines: OLDMACHINE\foo’s SID is different from NEWMACHINE\foo’s SID. Burdening the four &lt;a  href="http://therightstuff.de/ct.ashx?id=e8a61eec-b25d-4d53-a274-98481232d57b&amp;amp;url=http%3a%2f%2ftechnet.microsoft.com%2fen-us%2flibrary%2fcc742548.aspx"&gt;site collection&lt;/a&gt; administrator with this task is simply a no-go.&lt;/p&gt;  &lt;p&gt;During my research how to work around that I found the Dustin Miller’s excellent post “&lt;a  href="http://therightstuff.de/ct.ashx?id=e8a61eec-b25d-4d53-a274-98481232d57b&amp;amp;url=http%3a%2f%2fwww.sharepointblogs.com%2fdustin%2farchive%2f2007%2f04%2f08%2fstsadm-in-a-gui-2007-version.aspx"&gt;Fix those SIDs&lt;/a&gt;”. It describes the process of massaging a SharePoint site collection database to replace old SIDs with the account SIDs of the current machine. I’ve extended it a bit, because I also decided to rename the SharePoint Search account while moving to the new server (note the extra REPLACE in line 11).&lt;/p&gt;  &lt;pre class="brush: sql;"&gt;DECLARE @login nvarchar(255), @SystemId varbinary(512)

DECLARE curUsers CURSOR LOCAL FOR 
SELECT tp_Login, tp_SystemID FROM UserInfo WHERE tp_Deleted = 0

OPEN curUsers
FETCH NEXT FROM curUsers INTO @login, @systemid

WHILE @@FETCH_STATUS = 0
BEGIN
    DECLARE @newLoginName AS nvarchar(255) = REPLACE(REPLACE(@login, 'OLDMACHINE', 'NEWMACHINE'), 'spsearch', 'sharepoint-search')
    DECLARE @newSID varbinary(85) = SUSER_SID(@newLoginName)
    
    IF @newSID IS NOT NULL
    BEGIN
        PRINT 'Resetting user ' + @login + ' to new login ' + @newLoginName  + ' with SID '
        PRINT SUSER_SID(@newLoginName)

        UPDATE UserInfo
        SET    tp_SystemID = SUSER_SID(@newLoginName),
               tp_Login = @newLoginName
        WHERE CURRENT OF curUsers
    END
    
    FETCH NEXT FROM curUsers INTO @login, @systemid
END

CLOSE curUsers
DEALLOCATE curUsers
GO&lt;/pre&gt;

&lt;p&gt;After the script ran, take a look at the &lt;code&gt;UserInfo&lt;/code&gt; table and &lt;code&gt;SELECT&lt;/code&gt; rows that still contain OLDMACHINE in the &lt;code&gt;tp_Login&lt;/code&gt; column. This helps you get a quick overview of what accounts have been missed during account re-creation.&lt;/p&gt;

&lt;p&gt;As an extra step, I found it appropriate to update the site’s user entry as well (the account name that shows up in the site’s user list when no full name is given) to reflect the new machine name.&lt;/p&gt;

&lt;pre class="brush: sql;"&gt;UPDATE    [AllUserData]
SET       [nvarchar1] = REPLACE(REPLACE([nvarchar1], 'OLDMACHINE', 'NEWMACHINE'), 'spsearch', 'sharepoint-search'),
          [nvarchar2] = REPLACE(REPLACE([nvarchar2], 'OLDMACHINE', 'NEWMACHINE'), 'spsearch', 'sharepoint-search'),
          [nvarchar3] = REPLACE(REPLACE([nvarchar3], 'OLDMACHINE', 'NEWMACHINE'), 'spsearch', 'sharepoint-search')&lt;/pre&gt;&lt;img width="0" height="0" src="http://therightstuff.de/aggbug.ashx?id=e8a61eec-b25d-4d53-a274-98481232d57b"/&gt;&lt;/div&gt;</description>
      <comments>http://therightstuff.de/CommentView,guid,e8a61eec-b25d-4d53-a274-98481232d57b.aspx</comments>
      <category>.NET</category>
      <category>SharePoint</category>
      <category>SQL Server</category>
    <feedburner:origLink>http://therightstuff.de/2009/04/25/Migrating-SharePoint-Content-Databases-To-A-New-Farm-While-Keeping-Security-Settings.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://therightstuff.de/Trackback.aspx?guid=137392fe-a074-4fd5-ac5b-c917f5e7f711</trackback:ping>
      <pingback:server>http://therightstuff.de/pingback.aspx</pingback:server>
      <pingback:target>http://therightstuff.de/PermaLink,guid,137392fe-a074-4fd5-ac5b-c917f5e7f711.aspx</pingback:target>
      <dc:creator>Alexander Groß</dc:creator>
      <georss:point>51.32533 12.34274</georss:point>
      <wfw:comment>http://therightstuff.de/CommentView,guid,137392fe-a074-4fd5-ac5b-c917f5e7f711.aspx</wfw:comment>
      <wfw:commentRss>http://therightstuff.de/SyndicationService.asmx/GetEntryCommentsRss?guid=137392fe-a074-4fd5-ac5b-c917f5e7f711</wfw:commentRss>
      <title>ChkDskAll ‒ ChkDsk For All Drives</title>
      <guid isPermaLink="false">http://therightstuff.de/PermaLink,guid,137392fe-a074-4fd5-ac5b-c917f5e7f711.aspx</guid>
      <link>http://feedproxy.google.com/~r/alexandergross/~3/QVs4TCA3BWU/ChkDskAll-ChkDsk-For-All-Drives.aspx</link>
      <pubDate>Sat, 14 Feb 2009 15:41:57 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;The Windows file systems (NTFS and FAT) are able to automatically detect if they are broken. You can even specify &lt;a  href="http://therightstuff.de/ct.ashx?id=137392fe-a074-4fd5-ac5b-c917f5e7f711&amp;amp;url=http%3a%2f%2ftechnet.microsoft.com%2fen-us%2flibrary%2fbb490877.aspx"&gt;when that automatic check should be performed&lt;/a&gt;. But sometimes you would want to force a file system check, for example when Windows suddenly behaves strangely for no obvious reason. (For example last year, the day before I went on a month-long vacation, Vista suddenly refused to boot.)&lt;/p&gt;  &lt;p&gt;In order to schedule a file system check for the next reboot you will have to&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Open an elevated command prompt or log in as an administrator, &lt;/li&gt;    &lt;li&gt;Run &lt;code&gt;&lt;a  href="http://therightstuff.de/ct.ashx?id=137392fe-a074-4fd5-ac5b-c917f5e7f711&amp;amp;url=http%3a%2f%2ftechnet.microsoft.com%2fen-us%2flibrary%2fbb490877.aspx"&gt;chkdsk&lt;/a&gt; &amp;lt;Drive&amp;gt;: /f&lt;/code&gt;, &lt;/li&gt;    &lt;li&gt;Rinse and repeat for all installed drives. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;This task isn’t easy for inexperienced users, especially given that they might not know about the &lt;a  href="http://therightstuff.de/ct.ashx?id=137392fe-a074-4fd5-ac5b-c917f5e7f711&amp;amp;url=http%3a%2f%2ftechnet.microsoft.com%2fen-us%2flibrary%2fbb490877.aspx"&gt;chkdsk&lt;/a&gt; command line tool in the first place. They could use the UI, but would have to repeat the process for each and every drive nonetheless.&lt;/p&gt;  &lt;p&gt;&lt;img title="Chkdsk UI" style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" height="200" alt="Chkdsk UI" src="http://www.therightstuff.de/content/binary/WindowsLiveWriter/ChkDskForAllDrives_B1F9/Chkdsk%20UI_624b8393-5caf-449c-b7c5-4109906a8678.png" width="413" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;To make this task easier, I wrote a little .NET application that automates scheduling file system check for all drives at the next boot. Just double-click &lt;strong&gt;ChkDskAll.exe&lt;/strong&gt;, enter administrative credentials and wait for the goodness to happen.&lt;/p&gt;  &lt;p&gt;&lt;a title="ChkDskAll In Action"  href="http://therightstuff.de/ct.ashx?id=137392fe-a074-4fd5-ac5b-c917f5e7f711&amp;amp;url=http%3a%2f%2fwww.therightstuff.de%2fcontent%2fbinary%2fWindowsLiveWriter%2fChkDskForAllDrives_B1F9%2fChkDskAll_2.png" rel="lightbox"&gt;&lt;img title="ChkDskAll In Action" style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" height="112" alt="ChkDskAll In Action" src="http://www.therightstuff.de/content/binary/WindowsLiveWriter/ChkDskForAllDrives_B1F9/ChkDskAll_thumb.png" width="550" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If a drive has already been scheduled for scanning, it won’t be scheduled a second time. To exclude drives from being included in the scan, have a look at &lt;strong&gt;ChkdskAll.exe.config&lt;/strong&gt;. For example, &lt;a  href="http://therightstuff.de/ct.ashx?id=137392fe-a074-4fd5-ac5b-c917f5e7f711&amp;amp;url=http%3a%2f%2fwww.truecrypt.org%2f"&gt;TrueCrypt&lt;/a&gt; drives should be excluded if you do not &lt;a  href="http://therightstuff.de/ct.ashx?id=137392fe-a074-4fd5-ac5b-c917f5e7f711&amp;amp;url=http%3a%2f%2fwww.truecrypt.org%2fdocs%2f%3fs%3dmounting-truecrypt-volumes"&gt;mount them as fixed drives&lt;/a&gt;.&lt;/p&gt;  &lt;pre class="brush:xml"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;
&amp;lt;configuration&amp;gt;
    &amp;lt;appSettings&amp;gt;
        &amp;lt;!-- The list of excluded drives, e. g. &amp;quot;CDE&amp;quot;. --&amp;gt;
        &amp;lt;add key=&amp;quot;ExcludeDrives&amp;quot; value=&amp;quot;YZ&amp;quot;/&amp;gt;
    &amp;lt;/appSettings&amp;gt;
&amp;lt;/configuration&amp;gt;&lt;/pre&gt;

&lt;div class="download"&gt;
  &lt;p&gt;&lt;img class="download" title="Download" style="margin-right: 4px" alt="Download" src="http://www.therightstuff.de/content/binary/Download.gif" /&gt;&lt;a  href="http://therightstuff.de/ct.ashx?id=137392fe-a074-4fd5-ac5b-c917f5e7f711&amp;amp;url=http%3a%2f%2fwww.therightstuff.de%2fdownload%2fChkDskAll.zip"&gt;Download ChkDskAll binary and source code&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;&lt;img width="0" height="0" src="http://therightstuff.de/aggbug.ashx?id=137392fe-a074-4fd5-ac5b-c917f5e7f711"/&gt;&lt;/div&gt;</description>
      <comments>http://therightstuff.de/CommentView,guid,137392fe-a074-4fd5-ac5b-c917f5e7f711.aspx</comments>
      <category>.NET</category>
      <category>Tools and Software</category>
      <category>Windows</category>
    <feedburner:origLink>http://therightstuff.de/2009/02/14/ChkDskAll-ChkDsk-For-All-Drives.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://therightstuff.de/Trackback.aspx?guid=0208191e-13ce-4566-ba91-ade75b145da1</trackback:ping>
      <pingback:server>http://therightstuff.de/pingback.aspx</pingback:server>
      <pingback:target>http://therightstuff.de/PermaLink,guid,0208191e-13ce-4566-ba91-ade75b145da1.aspx</pingback:target>
      <dc:creator>Alexander Groß</dc:creator>
      <georss:point>51.32533 12.34274</georss:point>
      <wfw:comment>http://therightstuff.de/CommentView,guid,0208191e-13ce-4566-ba91-ade75b145da1.aspx</wfw:comment>
      <wfw:commentRss>http://therightstuff.de/SyndicationService.asmx/GetEntryCommentsRss?guid=0208191e-13ce-4566-ba91-ade75b145da1</wfw:commentRss>
      <title>Creating Remote Desktop Connection Files On The Fly With PowerShell</title>
      <guid isPermaLink="false">http://therightstuff.de/PermaLink,guid,0208191e-13ce-4566-ba91-ade75b145da1.aspx</guid>
      <link>http://feedproxy.google.com/~r/alexandergross/~3/INDgzMFbjjM/Creating-Remote-Desktop-Connection-Files-On-The-Fly-With-PowerShell.aspx</link>
      <pubDate>Fri, 13 Feb 2009 17:28:51 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;About a month ago I got myself an &lt;a  href="http://therightstuff.de/ct.ashx?id=0208191e-13ce-4566-ba91-ade75b145da1&amp;amp;url=http%3a%2f%2fwww.lenovovision.com%2flv2%2fmediaplayer.php%3ffid%3dthinkpad_x301_tour"&gt;IBM Lenovo X301 laptop&lt;/a&gt;. It’s the third machine I regularly use: I have a desktop at work, one workstation at home and now there also is the sweet X301. Even with only the second machine at work in place I found it crucial to keep my work environments &lt;em&gt;automatically&lt;/em&gt; in sync. &lt;a  href="http://therightstuff.de/ct.ashx?id=0208191e-13ce-4566-ba91-ade75b145da1&amp;amp;url=https%3a%2f%2fwww.mesh.com%2f"&gt;Live Mesh&lt;/a&gt; has been of great help with that. Despite being a CPU hog at times, it’s a great tool to synchronize your files across machines.&lt;/p&gt;  &lt;p&gt;Now with Remote Desktop Connection files (*.rdp) there is actually a bit more work involved than just syncing files. My workstations both have two monitors and I like Remote Desktop windows to be placed on the second monitor. The laptop, on the other hand just has a single display (surprise!) and less screen real estate. Because of the varying screen resolutions a RDP window on my home workstation will not fit the display area at work without obscuring other UI&amp;#160; elements like the taskbar. On the laptop, the situation gets worse as the display is simply not large enough to fit my default window size of 1500x1024 pixels.&lt;/p&gt;  &lt;p&gt;&lt;img title="Desktops" style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" height="188" alt="Desktops" src="http://www.therightstuff.de/content/binary/WindowsLiveWriter/CreatingRemoteDesktopConnectionFilesOnTh_D2B6/Desktops_fa7083d5-3071-4035-8945-be6176652644.png" width="550" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;The dimensions and location of the Remote Desktop window is stored in the plain-text RDP file itself. A conceivable solution might be to create three RDP files per server, one for each of my machines. Actually this would involve touching three files every time I need to change some value for the connection. Horrible.&lt;/p&gt;  &lt;p&gt;Fortunately there is &lt;a  href="http://therightstuff.de/ct.ashx?id=0208191e-13ce-4566-ba91-ade75b145da1&amp;amp;url=http%3a%2f%2fwww.microsoft.com%2fwindowsserver2003%2ftechnologies%2fmanagement%2fpowershell%2fdefault.mspx"&gt;PowerShell&lt;/a&gt; to the rescue. There’s even a &lt;a  href="http://therightstuff.de/ct.ashx?id=0208191e-13ce-4566-ba91-ade75b145da1&amp;amp;url=http%3a%2f%2fposhcode.org%2f679"&gt;script&lt;/a&gt; that you can use to create RDP files on the fly. You’ll have to patch line 178 to make it work (see below). Also make the &lt;code&gt;Set-RDPSetting&lt;/code&gt; function global by uncommenting lines 87 and 216.&lt;/p&gt;  &lt;pre class="brush:posh; first-line: 177"&gt;# Old
$content += @(&amp;quot;${tempname}:$($datatypes[$tempname]):$tempvalue&amp;quot;)

# New
$content += @(&amp;quot;${tempname}:$($datatypes[$tempname]):$tempvalue&amp;quot; + [System.Environment]::NewLine)&lt;/pre&gt;

&lt;p&gt;Now that we're set to use the &lt;code&gt;&lt;a  href="http://therightstuff.de/ct.ashx?id=0208191e-13ce-4566-ba91-ade75b145da1&amp;amp;url=http%3a%2f%2fposhcode.org%2f679"&gt;Set-RDPSetting&lt;/a&gt;&lt;/code&gt; function, let us create a script to create a RDP file in the system’s temporary folder. See the highlighted lines below, there are three hashtables:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code&gt;$workstations&lt;/code&gt; for your workstations (mine are AXL, FIRIEL and EOWYN), &lt;/li&gt;

  &lt;li&gt;&lt;code&gt;$servers&lt;/code&gt; for the RDP servers you want to connect to and &lt;/li&gt;

  &lt;li&gt;&lt;code&gt;$defaults&lt;/code&gt; for default connection properties. &lt;/li&gt;
&lt;/ul&gt;

&lt;pre class="brush:posh; highlight: [3, 18, 33]"&gt;. c:\Path\To\Set-RDPSetting.ps1

$workstations = @{
	'AXL' = @{
		'desktopwidth' = 1500
		'desktopheight' = 1024
		}
	'FIRIEL' = @{
		'desktopwidth' = 1300
		'desktopheight' = 800
		}
	'EOWYN' = @{
		'desktopwidth' = 1300
		'desktopheight' = 800
		}
	}
	
$servers = @{
	'192.168.6.161' = @{
		'session bpp' = 24
		'domain' = 'DEVELOPMENT'
		}
	'host.with.ssl.certificate' = @{
		'session bpp' = 24
		'authentication level' = 2
		'disable wallpaper' = $true
		'desktopwidth' = 1280
		'desktopheight' = 1024
		}
	}

# http://dev.remotenetworktechnology.com/ts/rdpfile.htm
$defaults = @{
	'allow desktop composition' = $true
	'allow font smoothing' = $true
	'alternate shell' = $null
	'audiomode' = 2
	'authentication level' = $false
	'auto connect' = $true
	'autoreconnection enabled' = $true
	'bitmapcachepersistenable' = $true
	'compression' = $true
	'connect to console' = $false
	'desktopheight' = $null
	'desktopwidth' = $null
	'disable cursor setting' = $false
	'disable full window drag' = $false
	'disable menu anims' = $true
	'disable themes' = $false
	'disable wallpaper' = $false
	'displayconnectionbar' = $true
	'domain' = $null
	'drivestoredirect' = '*'
	'full address' = $args[0]
	'keyboardhook' = 1
	'maximizeshell' = $false
	'negotiate security layer' = $true
	'prompt for credentials' = $false
	'promptcredentialonce' = $true
	'redirectclipboard' = $true
	'redirectcomports' = $false
	'redirectdrives' = $false
	'redirectposdevices' = $false
	'redirectprinters' = $false
	'redirectsmartcards' = $false
	'remoteapplicationmode' = $false
	'screen mode id' = 1
	'server port' = 3389
	'session bpp' = 32
	'shell working directory' = $null
	'smart sizing' = $true
	'username' = 'agross' # Does not really matter what's in here.
	# http://blogs.msdn.com/ts/archive/2008/09/02/specifying-the-ts-client-start-location-on-the-virtual-desktop.aspx
	'winposstr' = '0,3,2046,129,3086,933'	
	}&lt;/pre&gt;

&lt;p&gt;Next we check if the local machine has a configuration section in the &lt;code&gt;$workstations&lt;/code&gt; hashtable and the script has been called with parameters.&lt;/p&gt;

&lt;pre class="brush:posh; first-line: 77"&gt;if ($workstations.Keys -inotcontains $Env:ComputerName)
{
	&amp;quot;The local computer is not configured.&amp;quot;
	exit
}

if ($args -eq $null -or $args.Length -eq 0)
{
	&amp;quot;No arguments. Supply the RDP server name as the first argument.&amp;quot;
	exit
}&lt;/pre&gt;

&lt;p&gt;Note the &lt;code&gt;Patch-Defaults&lt;/code&gt; function and how we use it to add and replace keys in the &lt;code&gt;$defaults&lt;/code&gt; hashtable. The replacement values come from &lt;code&gt;$workstations&lt;/code&gt; and &lt;code&gt;$servers&lt;/code&gt;, with the server settings having precedence. This way, you can configure the connection profile according to the current machine &lt;em&gt;and&lt;/em&gt; the server to which the connection will be made. Flexibility!&lt;/p&gt;

&lt;pre class="brush:posh; first-line: 89"&gt;function Patch-Defaults
{
	param(
		[Hashtable] $defaults = $(Throw &amp;quot;Defaults hashtable is missing&amp;quot;),
		[Hashtable] $patch = $(Throw &amp;quot;Patch hashtable is missing&amp;quot;)
		)

	end
	{
		if ($patch -ne $null)
		{
			$patch.GetEnumerator() | ForEach-Object { $defaults[$_.Name] = $_.Value }
		}
	}
}	

Patch-Defaults -Defaults $defaults -Patch $workstations[$Env:ComputerName.ToUpper()]
Patch-Defaults -Defaults $defaults -Patch $servers[$args[0].ToLower()]
$defaults.GetEnumerator() | Sort-Object -Property Name&lt;/pre&gt;

&lt;p&gt;Now that we have all connection properties in place, we create a temporary connection file from the hashtable key/value pairs and start &lt;strong&gt;mstsc.exe&lt;/strong&gt; with that file.&lt;/p&gt;

&lt;pre class="brush:posh; first-line: 109"&gt;$tempFile = [System.IO.Path]::GetTempFileName()
$defaults.GetEnumerator() | Sort-Object -Property Name | Set-RDPSetting -Path $tempFile -Name $_ -Value $_

# For debugging purposes.
#&amp;quot;Temporary file: &amp;quot; + $tempFile
#Get-Content $tempFile
#Read-Host

$MstscCommand = $Env:SystemRoot + &amp;quot;\system32\mstsc.exe&amp;quot;
&amp;amp;$MstscCommand $tempFile&lt;/pre&gt;

&lt;div class="download"&gt;
  &lt;p&gt;&lt;img class="download" title="Download" style="margin-right: 4px" alt="Download" src="http://www.therightstuff.de/content/binary/Download.gif" /&gt;&lt;a  href="http://therightstuff.de/ct.ashx?id=0208191e-13ce-4566-ba91-ade75b145da1&amp;amp;url=http%3a%2f%2fwww.therightstuff.de%2fdownload%2fOpen-CustomRDP.zip"&gt;Download Open-CustomRDP.ps1&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;How do we use the script we just created?&lt;/p&gt;

&lt;p&gt;You can either create batch files calling the script or use a tool like &lt;a  href="http://therightstuff.de/ct.ashx?id=0208191e-13ce-4566-ba91-ade75b145da1&amp;amp;url=http%3a%2f%2fbayden.com%2fSlickRun%2f"&gt;SlickRun&lt;/a&gt; to execute PowerShell with the script.&lt;/p&gt;

&lt;pre class="brush:shell"&gt;@powershell.exe -noprofile -command .\Open-CustomRDP.ps1 your.server.example&lt;/pre&gt;

&lt;p&gt;Another tedious task has been automated!&lt;/p&gt;&lt;img width="0" height="0" src="http://therightstuff.de/aggbug.ashx?id=0208191e-13ce-4566-ba91-ade75b145da1"/&gt;&lt;/div&gt;</description>
      <comments>http://therightstuff.de/CommentView,guid,0208191e-13ce-4566-ba91-ade75b145da1.aspx</comments>
      <category>.NET</category>
      <category>PowerShell</category>
    <feedburner:origLink>http://therightstuff.de/2009/02/13/Creating-Remote-Desktop-Connection-Files-On-The-Fly-With-PowerShell.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://therightstuff.de/Trackback.aspx?guid=beb2a32d-ac57-43df-af7d-d1a30919ad4d</trackback:ping>
      <pingback:server>http://therightstuff.de/pingback.aspx</pingback:server>
      <pingback:target>http://therightstuff.de/PermaLink,guid,beb2a32d-ac57-43df-af7d-d1a30919ad4d.aspx</pingback:target>
      <dc:creator>Alexander Groß</dc:creator>
      <georss:point>51.32533 12.34274</georss:point>
      <wfw:comment>http://therightstuff.de/CommentView,guid,beb2a32d-ac57-43df-af7d-d1a30919ad4d.aspx</wfw:comment>
      <wfw:commentRss>http://therightstuff.de/SyndicationService.asmx/GetEntryCommentsRss?guid=beb2a32d-ac57-43df-af7d-d1a30919ad4d</wfw:commentRss>
      <title>.NET Bootcamp: Unit Tests</title>
      <guid isPermaLink="false">http://therightstuff.de/PermaLink,guid,beb2a32d-ac57-43df-af7d-d1a30919ad4d.aspx</guid>
      <link>http://feedproxy.google.com/~r/alexandergross/~3/6XP8FfsYEkA/NET-Bootcamp-Unit-Tests.aspx</link>
      <pubDate>Sat, 07 Feb 2009 15:19:54 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;In ungefähr einer Woche, am 16.02.2009, findet das &lt;a  href="http://therightstuff.de/ct.ashx?id=beb2a32d-ac57-43df-af7d-d1a30919ad4d&amp;amp;url=http%3a%2f%2fdotnet-leipzig.de%2fveranstaltungen%2fnet-bootcamp-2009-2%2f"&gt;zweite .NET Bootcamp&lt;/a&gt; der &lt;a  href="http://therightstuff.de/ct.ashx?id=beb2a32d-ac57-43df-af7d-d1a30919ad4d&amp;amp;url=http%3a%2f%2fdotnet-leipzig.de%2f"&gt;.NET User Group Leipzig&lt;/a&gt; statt. Das Thema lautet diesmal Unit Tests und wird neben einer Einführung in das Testen auch &lt;a  href="http://therightstuff.de/ct.ashx?id=beb2a32d-ac57-43df-af7d-d1a30919ad4d&amp;amp;url=http%3a%2f%2fen.wikipedia.org%2fwiki%2fTest-Driven_Development"&gt;Test-Driven Development&lt;/a&gt; und &lt;a  href="http://therightstuff.de/ct.ashx?id=beb2a32d-ac57-43df-af7d-d1a30919ad4d&amp;amp;url=http%3a%2f%2fen.wikipedia.org%2fwiki%2fBehavior-driven_development"&gt;Behavior-Driven Development&lt;/a&gt; aufgreifen.&lt;/p&gt;  &lt;p&gt;Die Organisation des Bootcamps findet wieder nach dem Konzept “&lt;a  href="http://therightstuff.de/ct.ashx?id=beb2a32d-ac57-43df-af7d-d1a30919ad4d&amp;amp;url=http%3a%2f%2fblogs.compactframework.de%2fTorsten.Weber%2f2009%2f01%2f15%2fLdL%2bNdash%2bLernen%2bDurch%2bLehren%2bEin%2bErfahrungsbericht.aspx"&gt;Lernen durch Lehren&lt;/a&gt;” (LdL) statt. Das heißt, dass jeder Teilnehmer im Vorfeld zwei &lt;a  href="http://therightstuff.de/ct.ashx?id=beb2a32d-ac57-43df-af7d-d1a30919ad4d&amp;amp;url=http%3a%2f%2fdotnet-leipzig.de%2fvortraege%2fnet-bootcamp-2009-unit-tests%2f"&gt;Fragen&lt;/a&gt; als “Hausaufgabe” bekommt und seine Ergebnisse während der Veranstaltung vorstellt. Ich werde die Rolle des Moderators übernehmen, Fragen klären, weitere Aspekte aufzeigen und sicher auch etwas von den Teilnehmern lernen.&lt;/p&gt;  &lt;p&gt;Wie unser erster Testballon auf dem Gebiet &lt;abbr title="Lernen durch Lehren"&gt;LdL&lt;/abbr&gt; zum Thema &lt;a  href="http://therightstuff.de/ct.ashx?id=beb2a32d-ac57-43df-af7d-d1a30919ad4d&amp;amp;url=http%3a%2f%2fdotnet-leipzig.de%2fveranstaltungen%2fnet-bootcamp-2009-1%2f"&gt;.NET Framework 3.5&lt;/a&gt; ist dieses Bootcamp mit 19 Teilnehmern überbucht. Offenbar kommt &lt;abbr title="Lernen durch Lehren"&gt;LdL&lt;/abbr&gt; gut bei unseren User Group-Mitgliedern an, aus Sicht der Organisation kann ich dies jedenfalls bestätigen!&lt;/p&gt;&lt;img width="0" height="0" src="http://therightstuff.de/aggbug.ashx?id=beb2a32d-ac57-43df-af7d-d1a30919ad4d"/&gt;&lt;/div&gt;</description>
      <comments>http://therightstuff.de/CommentView,guid,beb2a32d-ac57-43df-af7d-d1a30919ad4d.aspx</comments>
      <category>.NET</category>
      <category>BDD</category>
      <category>DNUG Leipzig</category>
    <feedburner:origLink>http://therightstuff.de/2009/02/07/NET-Bootcamp-Unit-Tests.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://therightstuff.de/Trackback.aspx?guid=2e19b03d-6ee1-49c1-b8c9-da5f3db7826f</trackback:ping>
      <pingback:server>http://therightstuff.de/pingback.aspx</pingback:server>
      <pingback:target>http://therightstuff.de/PermaLink,guid,2e19b03d-6ee1-49c1-b8c9-da5f3db7826f.aspx</pingback:target>
      <dc:creator>Alexander Groß</dc:creator>
      <georss:point>51.32533 12.34274</georss:point>
      <wfw:comment>http://therightstuff.de/CommentView,guid,2e19b03d-6ee1-49c1-b8c9-da5f3db7826f.aspx</wfw:comment>
      <wfw:commentRss>http://therightstuff.de/SyndicationService.asmx/GetEntryCommentsRss?guid=2e19b03d-6ee1-49c1-b8c9-da5f3db7826f</wfw:commentRss>
      <title>How To Set Up Secure LDAP Authentication with TeamCity</title>
      <guid isPermaLink="false">http://therightstuff.de/PermaLink,guid,2e19b03d-6ee1-49c1-b8c9-da5f3db7826f.aspx</guid>
      <link>http://feedproxy.google.com/~r/alexandergross/~3/lMGWm_9GE54/How-To-Set-Up-Secure-LDAP-Authentication-With-TeamCity.aspx</link>
      <pubDate>Mon, 02 Feb 2009 16:35:50 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;Last week we got a &lt;a  href="http://therightstuff.de/ct.ashx?id=2e19b03d-6ee1-49c1-b8c9-da5f3db7826f&amp;amp;url=http%3a%2f%2fwww.jetbrains.com%2fteamcity%2f"&gt;TeamCity&lt;/a&gt; Enterprise license at work. After using this great product for about a year we found ourselves running out of available build configurations. (There are 20 in the fully-functional &lt;a  href="http://therightstuff.de/ct.ashx?id=2e19b03d-6ee1-49c1-b8c9-da5f3db7826f&amp;amp;url=http%3a%2f%2fwww.jetbrains.com%2fteamcity%2fdownload%2f%3ffree"&gt;free Professional edition&lt;/a&gt; which should be enough to evaluate the product. I recommend giving it a try.) There are a couple of advanced features in the TeamCity Enterprise edition we were looking forward to, for example authentication against a LDAP directory, an Active Directory in our case (AD = LDAP + DNS + a bunch of other stuff).&lt;/p&gt;  &lt;p&gt;TeamCity uses LDAP to determine if a user should be able to access the TeamCity web interface. It does that through the LDAP bind operation, asking LDAP to validate the username and password combination entered at the login page.&lt;/p&gt;  &lt;p&gt;&lt;img title="TeamCity Login Dialog" style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" height="226" alt="TeamCity Login Dialog" src="http://www.therightstuff.de/content/binary/WindowsLiveWriter/HowToSetUpSecureLDAPAuthenticationwithTe_AD2A/Login_db984166-bf6f-46ec-9d8f-570d646b1ff1.png" width="452" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;After hitting the login button TeamCity will connect to the LDAP server, basically taking the text entered in the dialog above passing it to the LDAP bind operation. If the server accepts the username/password combination this means that access is granted. Some things to take into consideration when using LDAP authentication are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;TeamCity does not authenticate against an organizational unit in Active Directory (X.500 address). It just determines if the user (authenticated by username and password) exists &lt;em&gt;anywhere&lt;/em&gt; in the directory. You can &lt;a  href="http://therightstuff.de/ct.ashx?id=2e19b03d-6ee1-49c1-b8c9-da5f3db7826f&amp;amp;url=http%3a%2f%2fjetbrains.net%2ftracker%2fissue%2fTW-3276"&gt;vote on this ticket&lt;/a&gt; to get that fixed. &lt;/li&gt;    &lt;li&gt;Because TeamCity does not try to get additional information on the user’s groups memberships it is currently (as of TeamCity 4.0) not possible to automatically assign &lt;a  href="http://therightstuff.de/ct.ashx?id=2e19b03d-6ee1-49c1-b8c9-da5f3db7826f&amp;amp;url=http%3a%2f%2fwww.jetbrains.net%2fconfluence%2fdisplay%2fTCD4%2fRole%2band%2bPermission"&gt;TeamCity roles&lt;/a&gt; to an LDAP user. &lt;/li&gt;    &lt;li&gt;If you use the &lt;a  href="http://therightstuff.de/ct.ashx?id=2e19b03d-6ee1-49c1-b8c9-da5f3db7826f&amp;amp;url=http%3a%2f%2fwww.jetbrains.net%2fconfluence%2fdisplay%2fTCD4%2fAuthentication%2bSettings%23AuthenticationSettings-LDAPAuthentication"&gt;default LDAP configuration settings&lt;/a&gt; as shown in the TeamCity documentation, the LDAP connection will be &lt;em&gt;unsecured&lt;/em&gt;, making the username and password vulnerable to eavesdropping by anyone who knows how to use packet sniffer. &lt;/li&gt;    &lt;li&gt;Specific to Windows: You &lt;em&gt;do not&lt;/em&gt; need an Active Directory infrastructure with a Domain Controller in place. Windows also supports Active Directory Application Mode (ADAM) on Windows Server 2003, renamed to Active Directory Lightweight Directory Services (AD LDS) in Windows Server 2008. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Given the things above, what are your options to secure the LDAP connection? You could change the authentication scheme to not use &amp;quot;simple” LDAP authentication, but choose from &lt;a  href="http://therightstuff.de/ct.ashx?id=2e19b03d-6ee1-49c1-b8c9-da5f3db7826f&amp;amp;url=http%3a%2f%2fjava.sun.com%2fproducts%2fjndi%2ftutorial%2fldap%2fsecurity%2fsasl.html"&gt;a variety of SASL options&lt;/a&gt;. I didn’t go down that road, because when I started to configure LDAP for TeamCity I basically knew nothing about neither LDAP nor SASL.&lt;/p&gt;  &lt;p&gt;Using LDAPS (LDAP over SSL), which is also supported by Windows servers running some AD mode, appeared to be a viable option to enforce secure communication between TeamCity and the LDAP server.&lt;/p&gt;  &lt;h3&gt;Installing The LDAP Server&lt;/h3&gt;  &lt;h4&gt;Setting Up LDAPS with Active Directory (Domain Controller mode)&lt;/h4&gt;  &lt;p&gt;There’s not much set up needed with this configuration. When you install Active Directory in Domain Controller mode you should also get an instance of Certificate Services that will create a self-signed certificate for your domain controller. This certificate will be used for LDAPS connections to the directory server, which is typically the domain controller.&lt;/p&gt;  &lt;p&gt;As an aside, I’m not expert in setting up AD, please refer to your network administrator.&lt;/p&gt;  &lt;h4&gt;Setting Up LDAPS with Active Directory Application Mode (ADAM) or Active Directory Lightweight Directory Services (AD LDS)&lt;/h4&gt;  &lt;p&gt;As noted above, this setup is supported on any Windows Server and does not require the full-blown “Domain Controller” version of Active Directory. ADAM/LDS supports user authentication either against the ADAM/LDS instance (users created in the directory) or a against local Windows accounts (through a user proxy, see below)&lt;/p&gt;  &lt;h5&gt;Installing ADAM or AD LDS&lt;/h5&gt;  &lt;p&gt;&lt;a  href="http://therightstuff.de/ct.ashx?id=2e19b03d-6ee1-49c1-b8c9-da5f3db7826f&amp;amp;url=http%3a%2f%2ftechnet.microsoft.com%2fen-us%2flibrary%2fcc739247.aspx"&gt;Installing ADAM&lt;/a&gt;/LDS differs depending on which Windows Server version you have. I did it with Windows Server 2003:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Navigate to the Control Panel and open up the Software control panel applet, &lt;strong&gt;appwiz.cpl&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;Click “Add or remove Windows features” &lt;/li&gt;    &lt;li&gt;Select Active Directory Services, click on the Details… button and select Active Directory Application Mode. Close the window. &lt;/li&gt;    &lt;li&gt;Scroll down to Certificate Services entry and check it. (IIS will also be installed as part of Certificate Services to support web registrations.) &lt;/li&gt;    &lt;li&gt;Click Next. &lt;/li&gt;    &lt;li&gt;On the next dialog, you will be asked what type of Root Certificate Authority (CA) to install. Select “stand-alone“ CA and also check the “Create key pair” option. &lt;/li&gt;    &lt;li&gt;The next dialogs allows to select different options for the Root CA keys and the CA itself. I went with the defaults. &lt;/li&gt;    &lt;li&gt;Certificate Services and ADAM will be installed. &lt;/li&gt;    &lt;li&gt;Under Programs in the Start Menu there will be a new folder named “ADAM”. Click on the “Create ADAM instance” link. &lt;/li&gt;    &lt;li&gt;The ADAM wizard pops up, click Next. &lt;/li&gt;    &lt;li&gt;Choose “Create new unique instance” and click Next. &lt;/li&gt;    &lt;li&gt;Enter the name of the ADAM instance. I chose “TeamCity”, because we’re using ADAM to authenticate TeamCity users. Click Next. &lt;/li&gt;    &lt;li&gt;Write down the ports that are presented in the next step. The default LDAP port is 389, and the port for LDAPS is 636. Click Next. &lt;/li&gt;    &lt;li&gt;In the next step, choose to create a directory partition. Mine is called &lt;code&gt;CN=TeamCity, DC=test, DC=local&lt;/code&gt;. Click Next until you reach the “Import LDIF files” dialog. &lt;/li&gt;    &lt;li&gt;Import at least the &lt;strong&gt;MS-User.ldf&lt;/strong&gt; and &lt;strong&gt;MS-UserProxy.ldf&lt;/strong&gt; schemas to enable the creation of local directory users and user proxies for Windows accounts. &lt;/li&gt;    &lt;li&gt;Click Next and wait for ADAM to be configured. &lt;/li&gt; &lt;/ol&gt;  &lt;h5&gt;Setting Up ADAM or AD LDS to Accept SSL Connections&lt;/h5&gt;  &lt;p&gt;There are two good tutorials that I used to enable SSL on ADAM, so I won’t reiterate them here. I suppose the process of enabling SSL on LDS is similar.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a  href="http://therightstuff.de/ct.ashx?id=2e19b03d-6ee1-49c1-b8c9-da5f3db7826f&amp;amp;url=http%3a%2f%2fgoatly.spaces.live.com%2fblog%2fcns!ED869F22AB5C24A8!181.entry%3fwa%3dwsignin1.0%26sa%3d246296799"&gt;Configuring ADAM to use SSL&lt;/a&gt; by &lt;a  href="http://therightstuff.de/ct.ashx?id=2e19b03d-6ee1-49c1-b8c9-da5f3db7826f&amp;amp;url=http%3a%2f%2fcid-ed869f22ab5c24a8.profile.live.com%2f"&gt;Mike Goatly&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a  href="http://therightstuff.de/ct.ashx?id=2e19b03d-6ee1-49c1-b8c9-da5f3db7826f&amp;amp;url=http%3a%2f%2fwww.ultravoid.com%2fwordpress%2f%3fp%3d16"&gt;ADAM and SSL&lt;/a&gt; by &lt;a  href="http://therightstuff.de/ct.ashx?id=2e19b03d-6ee1-49c1-b8c9-da5f3db7826f&amp;amp;url=http%3a%2f%2fwww.ultravoid.com%2fwordpress"&gt;Thomas Olausson&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h5&gt;User Management&lt;/h5&gt;  &lt;p&gt;You now have a LDAP server running that will serve requests for the LDAP and LDAPS protocols. Next, you would have to add users to the directory, which could either be&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Local directory users: user and password stored in the directory; used with “simple” bindings, or &lt;/li&gt;    &lt;li&gt;Windows users: users password stored by the local Windows account manager or in a full-blown AD domain; used with “proxied” bindings (from the outside, these also appear as “simple” bindings). &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Windows users require a user proxy in the directory, linking the proxy to a Windows account SID. The link between the proxy and the Windows account is established though the Windows account’s Security Identifier (SID) which must be supplied when the proxy is created. Setting up user proxies is a bit &lt;a  href="http://therightstuff.de/ct.ashx?id=2e19b03d-6ee1-49c1-b8c9-da5f3db7826f&amp;amp;url=http%3a%2f%2ftechnet.microsoft.com%2fen-us%2flibrary%2fcc784622.aspx"&gt;complicated&lt;/a&gt; and well worth another post. &lt;/p&gt;  &lt;p&gt;Please note that by default &lt;strong&gt;authenticating users through their respective proxies (proxied binding) requires a secure connection&lt;/strong&gt;, &lt;a  href="http://therightstuff.de/ct.ashx?id=2e19b03d-6ee1-49c1-b8c9-da5f3db7826f&amp;amp;url=http%3a%2f%2fblogs.dirteam.com%2fblogs%2ftomek%2farchive%2f2006%2f09%2f24%2fDisable-simple-bind-without-SSL-on-ADAM.aspx"&gt;unless you explicitly disable it&lt;/a&gt;. Unfortunately the attribute to change is not given in the linked article: it is &lt;code&gt;msDS-Other-Settings&lt;/code&gt;. You can either require security for simple or proxied bindings by setting &lt;code&gt;RequireSecureProxyBind&lt;/code&gt; (defaults to &lt;code&gt;1&lt;/code&gt;) and &lt;code&gt;RequireSecureSimpleBind&lt;/code&gt; (defaults to &lt;code&gt;0&lt;/code&gt;) to either &lt;code&gt;0&lt;/code&gt; or &lt;code&gt;1&lt;/code&gt;.&lt;/p&gt;  &lt;p&gt;The net result of the &lt;em&gt;default&lt;/em&gt; ADAM configuration (&lt;code&gt;RequireSecureProxyBind=1&lt;/code&gt;) together with the &lt;a  href="http://therightstuff.de/ct.ashx?id=2e19b03d-6ee1-49c1-b8c9-da5f3db7826f&amp;amp;url=http%3a%2f%2fwww.jetbrains.net%2fconfluence%2fdisplay%2fTCD4%2fAuthentication%2bSettings%23AuthenticationSettings-LDAPAuthentication"&gt;&lt;em&gt;default&lt;/em&gt; TeamCity configuration&lt;/a&gt; (&lt;code&gt;ldap://some-server&lt;/code&gt;, which is unsecured) is that authentication requests for user proxies will &lt;strong&gt;always fail&lt;/strong&gt;.&lt;/p&gt;  &lt;h3&gt;Setting Up TeamCity &lt;/h3&gt;  &lt;h4&gt;Setting Up TeamCity to Use The LDAP Server&lt;/h4&gt;  &lt;p&gt;The easiest way is to start with the &lt;a  href="http://therightstuff.de/ct.ashx?id=2e19b03d-6ee1-49c1-b8c9-da5f3db7826f&amp;amp;url=http%3a%2f%2fwww.jetbrains.net%2fconfluence%2fdisplay%2fTCD4%2fAuthentication%2bSettings%23AuthenticationSettings-LDAPAuthentication"&gt;default TeamCity configuration&lt;/a&gt; in &lt;strong&gt;&amp;lt;TeamCity data directory&amp;gt;/config/ldap-config.properties&lt;/strong&gt;:&lt;/p&gt;  &lt;pre class="brush: plain" name="code"&gt;java.naming.referral=follow
java.naming.provider.url=ldap://ldap.test.local:389
java.naming.security.authentication=simple&lt;/pre&gt;

&lt;p&gt;Unless you want to require your users to enter their login in the &lt;code&gt;DOMAIN\username&lt;/code&gt; format I recommend adding the loginFilter property:&lt;/p&gt;

&lt;pre class="brush: plain"&gt;java.naming.referral=follow
java.naming.provider.url=ldap://ldap.test.local:389
java.naming.security.authentication=simple
loginFilter=.+&lt;/pre&gt;

&lt;p&gt;Now we need to set up the correct &amp;quot;user name&amp;quot; string to present it to the LDAP server. This string is created from the text entered in the &amp;quot;Username&amp;quot; text box on the login screen (&lt;code&gt;$login$&lt;/code&gt;) and differs depending on whether you use LDAP with AD or ADAM/LDS:&lt;/p&gt;

&lt;pre class="brush: plain"&gt;java.naming.referral=follow
java.naming.provider.url=ldap://ldap.test.local:389
java.naming.security.authentication=simple
loginFilter=.+

# AD - authenticate against the TEST domain
formatDN=TEST\\$login$

# ADAM and presumably AD LDS - users will have to reside in the CN=Users,CN=TeamCity,DC=test,DC=local container
formatDN=CN=$login$,CN=Users,CN=TeamCity,DC=test,DC=local&lt;/pre&gt;

&lt;h4&gt;Setting Up LDAPS Security&lt;/h4&gt;

&lt;p&gt;Enabling LDAPS is pretty easy from a TeamCity perspective. You just have to change line 2 of the configuration above to use the secure LDAP protocol:&lt;/p&gt;

&lt;pre class="brush: plain"&gt;java.naming.referral=follow
java.naming.provider.url=ldaps://ldap.test.local:636
java.naming.security.authentication=simple
loginFilter=.+
formatDN=&amp;lt;some value&amp;gt;&lt;/pre&gt;

&lt;p&gt;Changing the protocol to use ldaps:// will not instantly work and users would not be authenticated. Why?&lt;/p&gt;

&lt;h4&gt;Trusting The Certificate&lt;/h4&gt;

&lt;p&gt;What does LDAPS mean from a Java perspective? If you work on a domain (AD) or use ADAM/LDS with SSL you are very likely to work with &lt;a  href="http://therightstuff.de/ct.ashx?id=2e19b03d-6ee1-49c1-b8c9-da5f3db7826f&amp;amp;url=http%3a%2f%2fen.wikipedia.org%2fwiki%2fSelf-signed_certificate"&gt;self-signed SSL certificates&lt;/a&gt;. Such certificates are inherently untrusted as they are not issued by some trusted party (and this trusted party will charge money). Nevertheless they are perfectly okay for your environment.&lt;/p&gt;

&lt;p&gt;When TeamCity establishes the SSL connection to your LDAP server, it is first presented with that untrusted certificate – and bails. Here’s a snippet from the TeamCity log files:&lt;/p&gt;

&lt;pre class="brush: plain"&gt;[2009-01-27 16:14:39,864]  ERROR - Side.impl.auth.LDAPLoginModule - 
 
javax.naming.CommunicationException: simple bind failed: ldap.test.local:636
[Root exception is javax.net.ssl.SSLHandshakeException:
sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target]&lt;/pre&gt;

&lt;p&gt;To establish LDAPS connections successfully, you have to tell Java to trust your LDAP server’s certificate. &lt;a  href="http://therightstuff.de/ct.ashx?id=2e19b03d-6ee1-49c1-b8c9-da5f3db7826f&amp;amp;url=http%3a%2f%2fblogs.sun.com%2fandreas%2f"&gt;Andreas Sterbenz&lt;/a&gt; has created a little &lt;a  href="http://therightstuff.de/ct.ashx?id=2e19b03d-6ee1-49c1-b8c9-da5f3db7826f&amp;amp;url=http%3a%2f%2fblogs.sun.com%2fandreas%2fentry%2fno_more_unable_to_find"&gt;Java utility called InstallCert&lt;/a&gt; that helps in that regard. Unfortunately you will have to compile it yourself against the Java 1.5 runtime, so &lt;a  href="http://therightstuff.de/ct.ashx?id=2e19b03d-6ee1-49c1-b8c9-da5f3db7826f&amp;amp;url=http%3a%2f%2ftherightstuff.de%2fdownload%2fInstallCert.zip"&gt;here’s a compiled version&lt;/a&gt; that works with TeamCity.&lt;/p&gt;

&lt;p&gt;Place the files from the ZIP in your &lt;strong&gt;&amp;lt;TeamCity root&amp;gt;\jre\bin&lt;/strong&gt; directory. Open a command prompt and enter&lt;/p&gt;

&lt;pre class="brush: plain"&gt;java InstallCert ldap.test.local:636&lt;/pre&gt;

&lt;p&gt;Following the procedure described in Andreas' post, the utility will create a file called &lt;strong&gt;jssecacerts&lt;/strong&gt; in the same directory. Overwrite &lt;strong&gt;&amp;lt;TeamCity root&amp;gt;\jre\lib\security\cacerts&lt;/strong&gt; with that file.&lt;/p&gt;

&lt;p&gt;After re-starting the TeamCity web server, it is now able to establish secured connections to the LDAP server. The user names and passwords transmitted over these connections will not be visible to outsiders. &lt;/p&gt;

&lt;h3&gt;Wrapping It Up&lt;/h3&gt;

&lt;p&gt;In this article I’ve shown you how to enable and secure TeamCity’s LDAP authentication in any Windows environment, be it an Active Directory domain or a couple of stand-alone Windows Servers. For both scenarios user management is centralized, either though the AD console or LDAP console in combination with the Windows user management console.&lt;/p&gt;

&lt;p&gt;Figuring out all that has taken a considerable amount of time for me and hopefully saves you a couple of minutes that you can spend outside in the sun.&lt;/p&gt;&lt;img width="0" height="0" src="http://therightstuff.de/aggbug.ashx?id=2e19b03d-6ee1-49c1-b8c9-da5f3db7826f"/&gt;&lt;/div&gt;</description>
      <comments>http://therightstuff.de/CommentView,guid,2e19b03d-6ee1-49c1-b8c9-da5f3db7826f.aspx</comments>
      <category>Build</category>
      <category>Networking</category>
    <feedburner:origLink>http://therightstuff.de/2009/02/02/How-To-Set-Up-Secure-LDAP-Authentication-With-TeamCity.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://therightstuff.de/Trackback.aspx?guid=f9eb67c2-2a52-4c80-9181-3160b05cfd72</trackback:ping>
      <pingback:server>http://therightstuff.de/pingback.aspx</pingback:server>
      <pingback:target>http://therightstuff.de/PermaLink,guid,f9eb67c2-2a52-4c80-9181-3160b05cfd72.aspx</pingback:target>
      <dc:creator>Alexander Groß</dc:creator>
      <georss:point>51.32533 12.34274</georss:point>
      <wfw:comment>http://therightstuff.de/CommentView,guid,f9eb67c2-2a52-4c80-9181-3160b05cfd72.aspx</wfw:comment>
      <wfw:commentRss>http://therightstuff.de/SyndicationService.asmx/GetEntryCommentsRss?guid=f9eb67c2-2a52-4c80-9181-3160b05cfd72</wfw:commentRss>
      <title>Setting up SourceGear DiffMerge with Git</title>
      <guid isPermaLink="false">http://therightstuff.de/PermaLink,guid,f9eb67c2-2a52-4c80-9181-3160b05cfd72.aspx</guid>
      <link>http://feedproxy.google.com/~r/alexandergross/~3/dhH_0H09I80/Setting-Up-SourceGear-DiffMerge-With-Git.aspx</link>
      <pubDate>Wed, 28 Jan 2009 20:18:58 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;&lt;img title="Git Logo" style="float: right; margin-bottom: 1em; margin-left: 1em" height="97" alt="Git Logo" src="http://www.therightstuff.de/content/binary/WindowsLiveWriter/UseSourceGearDiffMergewithGit_11D62/git-logo_ba9c923f-7667-4383-9d95-fc7fbb3db552.png" /&gt; For about six month I’m using &lt;a  href="http://therightstuff.de/ct.ashx?id=f9eb67c2-2a52-4c80-9181-3160b05cfd72&amp;amp;url=http%3a%2f%2fgit-scm.com%2f"&gt;Git&lt;/a&gt; as my preferred Source Control Management system. That is, while my colleagues at work still work with Subversion and &lt;a  href="http://therightstuff.de/ct.ashx?id=f9eb67c2-2a52-4c80-9181-3160b05cfd72&amp;amp;url=http%3a%2f%2ftortoisesvn.tigris.org%2f"&gt;TortoiseSVN&lt;/a&gt;, I am leveraging the powers of Git behind the scenes. That is, I work on local (Git) feature branches that I commit to our SVN trunk every once in a while, typically after I finished working on a feature.&lt;/p&gt;  &lt;p&gt;If you want to get started with Git, I recommend watching the &lt;a  href="http://therightstuff.de/ct.ashx?id=f9eb67c2-2a52-4c80-9181-3160b05cfd72&amp;amp;url=http%3a%2f%2fgitcasts.com%2f"&gt;GitCasts&lt;/a&gt; and try one of the Windows distributions, &lt;a  href="http://therightstuff.de/ct.ashx?id=f9eb67c2-2a52-4c80-9181-3160b05cfd72&amp;amp;url=http%3a%2f%2fcode.google.com%2fp%2fmsysgit%2f"&gt;msysgit&lt;/a&gt; or &lt;a  href="http://therightstuff.de/ct.ashx?id=f9eb67c2-2a52-4c80-9181-3160b05cfd72&amp;amp;url=http%3a%2f%2fwww.cygwin.com%2f"&gt;Cygwin&lt;/a&gt;. (I switched to Cygwin after the msysgit team dropped SVN integration in their 1.6 release.)&lt;/p&gt;  &lt;p&gt;Git heavily relies on the command line, and UI tools like gitk and &lt;a  href="http://therightstuff.de/ct.ashx?id=f9eb67c2-2a52-4c80-9181-3160b05cfd72&amp;amp;url=http%3a%2f%2fcode.google.com%2fp%2ftortoisegit%2f"&gt;TortoiseGit&lt;/a&gt; are not quite there yet. Using a &lt;a  href="http://therightstuff.de/ct.ashx?id=f9eb67c2-2a52-4c80-9181-3160b05cfd72&amp;amp;url=http%3a%2f%2fen.wikipedia.org%2fwiki%2fCommand-line_interface"&gt;CLI&lt;/a&gt; might be something a lot of Windows developers do not look forward to, but you still can configure support for some UI tools. For example, file diffs and merges can be customized to work with any tool (UI and CLI-based). I use &lt;a  href="http://therightstuff.de/ct.ashx?id=f9eb67c2-2a52-4c80-9181-3160b05cfd72&amp;amp;url=http%3a%2f%2fwww.sourcegear.com%2fdiffmerge%2f"&gt;SourceGear DiffMerge&lt;/a&gt; (free) as my primary diff and merge tool. It’s far better that what comes with TortoiseSVN or Git itself (again CLI-based).&lt;/p&gt;  &lt;p&gt;I could only find &lt;a  href="http://therightstuff.de/ct.ashx?id=f9eb67c2-2a52-4c80-9181-3160b05cfd72&amp;amp;url=http%3a%2f%2fsupport.sourcegear.com%2fviewtopic.php%3ff%3d33%26t%3d10077"&gt;sparse&lt;/a&gt; documentation on how to make DiffMerge work with Git, so I dove into the world of Shell programming and created a couple of simple scripts. Here is what I came up with.&lt;/p&gt;  &lt;h3&gt;diffmerge-diff.sh&lt;/h3&gt;  &lt;pre class="brush: bash"&gt;#!/bin/sh

path=&amp;quot;$(cygpath $1)&amp;quot;
old=&amp;quot;$(cygpath --mixed --absolute &amp;quot;$2&amp;quot;)&amp;quot;
new=&amp;quot;$(cygpath --mixed --absolute &amp;quot;$5&amp;quot;)&amp;quot;

#echo -e &amp;quot;path\n$path&amp;quot;
#echo -e &amp;quot;old\n$old&amp;quot;
#echo -e &amp;quot;new\n$new&amp;quot;

&amp;quot;/cygdrive/C/Tools/DiffMerge/diffmerge.exe&amp;quot; &amp;quot;$old&amp;quot; &amp;quot;$new&amp;quot; --title1=&amp;quot;Old&amp;quot; --title2=&amp;quot;New $path&amp;quot;&lt;/pre&gt;

&lt;h3&gt;diffmerge-merge.sh&lt;/h3&gt;

&lt;pre class="brush: bash"&gt;#!/bin/sh

localPath=&amp;quot;$(cygpath --mixed --absolute &amp;quot;$2&amp;quot;)&amp;quot;
basePath=&amp;quot;$(cygpath --mixed --absolute &amp;quot;$1&amp;quot;)&amp;quot;
remotePath=&amp;quot;$(cygpath --mixed --absolute &amp;quot;$3&amp;quot;)&amp;quot;
resultPath=&amp;quot;$(cygpath --mixed --absolute &amp;quot;$4&amp;quot;)&amp;quot;

if [ ! -f $basePath ]
then
    basePath=&amp;quot;$(cygpath --mixed --absolute ~/diffmerge-empty)&amp;quot;
fi

#echo -ne &amp;quot;local\n$localPath\n&amp;quot;
#echo -ne &amp;quot;base\n$basePath\n&amp;quot;
#echo -ne &amp;quot;remote\n$remotePath\n&amp;quot;
#echo -ne &amp;quot;result\n$resultPath\n&amp;quot;

&amp;quot;/cygdrive/C/Tools/DiffMerge/diffmerge.exe&amp;quot; --merge --result=&amp;quot;$resultPath&amp;quot; &amp;quot;$localPath&amp;quot; &amp;quot;$basePath&amp;quot; &amp;quot;$remotePath&amp;quot; --title1=&amp;quot;Mine&amp;quot; --title2=&amp;quot;Merged: $4&amp;quot; --title3=&amp;quot;Theirs&amp;quot;&lt;/pre&gt;

&lt;h3&gt;Setting up Git&lt;/h3&gt;

&lt;ol&gt;
  &lt;li&gt;Put the files above in your home directory, either &lt;strong&gt;C:\Cygwin\home\&amp;lt;username&amp;gt;&lt;/strong&gt; (Cygwin) or &lt;strong&gt;C:\Users\&amp;lt;username&amp;gt;&lt;/strong&gt; (msysgit). Make sure the line endings are LF-only (UNIX style) and the file is saved without the UTF &lt;a  href="http://therightstuff.de/ct.ashx?id=f9eb67c2-2a52-4c80-9181-3160b05cfd72&amp;amp;url=http%3a%2f%2fen.wikipedia.org%2fwiki%2fByte-Order_Mark"&gt;byte-order mark&lt;/a&gt; (BOM). &lt;/li&gt;

  &lt;li&gt;Create an empty file named &lt;strong&gt;diffmerge-empty&lt;/strong&gt; in the same directory. &lt;/li&gt;

  &lt;li&gt;Modify the scripts to point to the correct location of DiffMerge (see the last lines). Some more modifications will be needed if you’re from the msysgit crowd, as the cygpath utility is not available there. &lt;/li&gt;

  &lt;li&gt;Open a Git CLI and enter the following commands: 
    &lt;pre class="brush:bash"&gt;git config --global merge.tool diffmerge
git config --global mergetool.diffmerge.cmd &amp;quot;~/diffmerge-merge.sh \&amp;quot;\$BASE\&amp;quot; \&amp;quot;\$LOCAL\&amp;quot; \&amp;quot;\$REMOTE\&amp;quot; \&amp;quot;\$MERGED\&amp;quot;&amp;quot;
git config --global mergetool.diffmerge.trustExitCode false 
git config --global diff.external &amp;quot;C:/Cygwin/home/&amp;lt;username&amp;gt;/diffmerge-diff.sh&amp;quot;&lt;/pre&gt;
This should add the following lines to your &lt;strong&gt;.gitconfig&lt;/strong&gt;: 

    &lt;pre class="brush: plain"&gt;[merge]
    tool = diffmerge
[mergetool &amp;quot;diffmerge&amp;quot;]
    cmd = ~/diffmerge-merge.sh \&amp;quot;$BASE\&amp;quot; \&amp;quot;$LOCAL\&amp;quot; \&amp;quot;$REMOTE\&amp;quot; \&amp;quot;$MERGED\&amp;quot;
    trustExitCode = false
[diff]
    external = C:/Cygwin/home/&amp;lt;username&amp;gt;/diffmerge-diff.sh&lt;/pre&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;Using DiffMerge&lt;/h3&gt;

&lt;p&gt;Using DiffMerge is pretty easy, the normal &lt;a  href="http://therightstuff.de/ct.ashx?id=f9eb67c2-2a52-4c80-9181-3160b05cfd72&amp;amp;url=http%3a%2f%2fwww.kernel.org%2fpub%2fsoftware%2fscm%2fgit%2fdocs%2fgit-diff.html"&gt;git diff&lt;/a&gt; and &lt;a  href="http://therightstuff.de/ct.ashx?id=f9eb67c2-2a52-4c80-9181-3160b05cfd72&amp;amp;url=http%3a%2f%2fwww.kernel.org%2fpub%2fsoftware%2fscm%2fgit%2fdocs%2fgit-mergetool.html"&gt;git mergetool&lt;/a&gt; commands work as usual, but will now spawn DiffMerge instead of &lt;a  href="http://therightstuff.de/ct.ashx?id=f9eb67c2-2a52-4c80-9181-3160b05cfd72&amp;amp;url=http%3a%2f%2fen.wikipedia.org%2fwiki%2fVi"&gt;vi&lt;/a&gt; (which is the default). If anything does not work as expected, uncomment the &lt;code&gt;#echo&lt;/code&gt; lines and use a tool like &lt;a  href="http://therightstuff.de/ct.ashx?id=f9eb67c2-2a52-4c80-9181-3160b05cfd72&amp;amp;url=http%3a%2f%2ftechnet.microsoft.com%2fen-us%2fsysinternals%2fbb896645.aspx"&gt;Process Monitor&lt;/a&gt; and &lt;a  href="http://therightstuff.de/ct.ashx?id=f9eb67c2-2a52-4c80-9181-3160b05cfd72&amp;amp;url=http%3a%2f%2ftechnet.microsoft.com%2fde-de%2fsysinternals%2fbb896653.aspx"&gt;Process Explorer&lt;/a&gt; to see where things go wrong.&lt;/p&gt;

&lt;p&gt;Happy diffing!&lt;/p&gt;&lt;img width="0" height="0" src="http://therightstuff.de/aggbug.ashx?id=f9eb67c2-2a52-4c80-9181-3160b05cfd72"/&gt;&lt;/div&gt;</description>
      <comments>http://therightstuff.de/CommentView,guid,f9eb67c2-2a52-4c80-9181-3160b05cfd72.aspx</comments>
      <category>.NET</category>
      <category>ALT.NET</category>
      <category>Git</category>
    <feedburner:origLink>http://therightstuff.de/2009/01/28/Setting-Up-SourceGear-DiffMerge-With-Git.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://therightstuff.de/Trackback.aspx?guid=107be0d0-9291-4f9e-826a-076c19279df2</trackback:ping>
      <pingback:server>http://therightstuff.de/pingback.aspx</pingback:server>
      <pingback:target>http://therightstuff.de/PermaLink,guid,107be0d0-9291-4f9e-826a-076c19279df2.aspx</pingback:target>
      <dc:creator>Alexander Groß</dc:creator>
      <georss:point>51.32533 12.34274</georss:point>
      <wfw:comment>http://therightstuff.de/CommentView,guid,107be0d0-9291-4f9e-826a-076c19279df2.aspx</wfw:comment>
      <wfw:commentRss>http://therightstuff.de/SyndicationService.asmx/GetEntryCommentsRss?guid=107be0d0-9291-4f9e-826a-076c19279df2</wfw:commentRss>
      <title>Rezept: Zwiebelmarmelade</title>
      <guid isPermaLink="false">http://therightstuff.de/PermaLink,guid,107be0d0-9291-4f9e-826a-076c19279df2.aspx</guid>
      <link>http://feedproxy.google.com/~r/alexandergross/~3/PkL09GiUUrs/Rezept-Zwiebelmarmelade.aspx</link>
      <pubDate>Mon, 05 Jan 2009 14:14:18 GMT</pubDate>
      <description>&lt;div&gt;&lt;ul&gt;   &lt;li&gt;2 rote Zwiebeln&lt;/li&gt;    &lt;li&gt;1 EL Butter&lt;/li&gt;    &lt;li&gt;1 EL Honig&lt;/li&gt;    &lt;li&gt;Balsamico&lt;/li&gt;    &lt;li&gt;Apfel-Kirsch-Saft o. ä.&lt;/li&gt;    &lt;li&gt;1-2 EL Zitronensaft&lt;/li&gt;    &lt;li&gt;Salz, Pfeffer&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Zwiebeln schälen und in feine Ringe schneiden. Die Butter in einem Topf zergehen lassen und die Zwiebeln glasig dünsten. 1 EL Honig hinzugeben und leicht karamelisieren. 3 EL Balsamico angießen und einreduzieren. Anschließend wenig Apfel-Kirsch-Saft zugießen und einkochen lassen. Angießen und einkochen wiederholen bis die Zwiebeln weich gekocht sind (das dauert ca. 30 Minuten). Mit Zitronensaft, Salz und Pfeffer abschmecken.&lt;/p&gt;  &lt;p&gt;Die Zwiebelmarmelade passt aufgrund ihrer süßlichen Note gut zu Speisen mit würzigem Käse, z. B. Käsefondue oder Ziegenkäse.&lt;/p&gt;&lt;img width="0" height="0" src="http://therightstuff.de/aggbug.ashx?id=107be0d0-9291-4f9e-826a-076c19279df2"/&gt;&lt;/div&gt;</description>
      <comments>http://therightstuff.de/CommentView,guid,107be0d0-9291-4f9e-826a-076c19279df2.aspx</comments>
      <category>Recipes (German)</category>
    <feedburner:origLink>http://therightstuff.de/2009/01/05/Rezept-Zwiebelmarmelade.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://therightstuff.de/Trackback.aspx?guid=b84fbd02-1a53-4d2e-a2f5-2b2cb51092a6</trackback:ping>
      <pingback:server>http://therightstuff.de/pingback.aspx</pingback:server>
      <pingback:target>http://therightstuff.de/PermaLink,guid,b84fbd02-1a53-4d2e-a2f5-2b2cb51092a6.aspx</pingback:target>
      <dc:creator>Alexander Groß</dc:creator>
      <georss:point>51.32533 12.34274</georss:point>
      <wfw:comment>http://therightstuff.de/CommentView,guid,b84fbd02-1a53-4d2e-a2f5-2b2cb51092a6.aspx</wfw:comment>
      <wfw:commentRss>http://therightstuff.de/SyndicationService.asmx/GetEntryCommentsRss?guid=b84fbd02-1a53-4d2e-a2f5-2b2cb51092a6</wfw:commentRss>
      <title>Cambodian Round-Up</title>
      <guid isPermaLink="false">http://therightstuff.de/PermaLink,guid,b84fbd02-1a53-4d2e-a2f5-2b2cb51092a6.aspx</guid>
      <link>http://feedproxy.google.com/~r/alexandergross/~3/RY2t6NtP9fI/Cambodian-RoundUp.aspx</link>
      <pubDate>Wed, 03 Dec 2008 04:47:50 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;
Lange nichts von uns gehört? Wir waren auf der Insel, ohne Strom und fließend Wasser. Doch von vorn:
&lt;/p&gt;

&lt;h3&gt;Phnom Penh&lt;/h3&gt;
&lt;p&gt;
Wir haben unseren Tag in Phnom Penh genutzt um die Sehenswürdigkeiten der Stadt anzusehen. Dazu gehörte neben der Silbernen Pagode (als Teil des Königspalastes) auch ein tragisches Denkmal der jüngeren kambodschanischen Geschichte: Das Gefängnis "S-21" in dem vor weniger als 30 Jahren ca. 10000 Menschen gefangen gehalten, verhört, gefoltert und getötet wurden. Der Trakt des S-21, ein Areal von 600 x 400 m wurde vor der Machtergreifung der Roten Khmer als Schule genutzt und ist heute größtenteils so erhalten wie es nach der Befreiung von Phnom Penh vorgefunden wurde. In den Einzelhaftzellen stehen immer noch die gleichen Betten auf denen die Gefangenen, also Intellektuelle, Lehrer und Brillenträger angekettet ihr jämmerliches Dasein fristen mussten. Im Zusammenhang mit der Geschichte der empfielt sich die Lektüre des Buchs "First They Killed My Father" von Luong Ung. Robert besitzt ein deutsches Exemplar, Gunnar die englische Ausgabe.
&lt;/p&gt;

&lt;p&gt;
Außerdem haben wir den Zusammenfluss von Tonle Sap und Mekong besucht und haben die Stadt zu Fuß erkundet. Phom Penh vermittelt dabei das Gefühl einer langsam wachsenden Großstadt; die meisten Straßen sind eher klein, Hochhäuser über ~16 Stockwerke gibt es überhaupt nicht.
&lt;/p&gt;

&lt;h3&gt;Rabbit Island&lt;/h3&gt;
&lt;p&gt;
Am nächsten Tag haben wir uns auf Empfehlung von &lt;a  href="http://therightstuff.de/ct.ashx?id=b84fbd02-1a53-4d2e-a2f5-2b2cb51092a6&amp;amp;url=http%3a%2f%2frita-stockhowe.de%2f"&gt;Rita&lt;/a&gt; nach Süden auf eine kleine Insel namens Koh Tonsay begeben. Das auch Rabbit Island genannte Fleckchen Erde liegt kurz vor der Vietnamesischen Grenze, was auch die Frage des Grenzbeamten am Pier erklärt: "Which nationality?" &amp;ndash; "German". &amp;mdash; Passkontrolle kann so einfach sein.
&lt;/p&gt;
&lt;p&gt;
Unsere vier Tage auf der Insel waren geprägt von viel Entspannung, Lektüre, Feuer am Strand, Feierabendbierchen und Seafood. Bewohnt haben wir zusammen mit sehr wenigen anderen Backpackern eine der Strohhütten an einem der drei Strände der Insel. Tatsächlich ist nur "unser" Strand touristisch erschlossen, d. h. es gibt abends für 2, 3 Stunden Strom aus dem Dieselgenerator und eine Toilette. Die anderen Strände sind im Besitzt der einheimischen Insulaner, die Seetang anbauen. Die Inselumrundung haben wir entspannt in 3 Stunden geschafft.
&lt;/p&gt;
&lt;h3&gt;Beobachtungen&lt;/h3&gt;
&lt;p&gt;Während der Zeit in Kambodscha sind mir einige Dinge aufgefallen, die aus meiner Sicht Erwähnung verdienen:
&lt;ul&gt;
&lt;li&gt;
In unregelmäßigen Abständen befinden sich Werbetafeln für die großen Parteien (FUNCIPEC, Cambodian People Party) direkt an der Straße. Ein Einheimischer erklärte mir, dass die Leute Werbung machen, ohne dass die dafür Entlohnung erhielten, sondern das aus Überzeugung tun und um Nachbarn für ihre favorisierte Partei zu gewinnen. Dabei kann es sein, dass Nachbarn rivalisierende Parteien vertreten, was aber kein Konflikt darstellt.
&lt;/li&gt;
&lt;li&gt;
Wer sich nicht von den kambodschanischen Bauern unterscheiden will, baut am besten Reis an. Die Reisernte hat gerade begonnen und verwandelt die vormals sattgrünen Felder in braune Steppe. Die grasenden Wasserbüffel freut es. Der Reis wird nach der Ernte noch ungeschält getrocknet, was auch gern am Straßenrand passiert. Vermutlich ist der heiße Asphalt in Kombination mit dem Straßenstaub hilfreich :)
&lt;/li&gt;
&lt;li&gt;
Tiere werden prinzipiell freilaufend gehalten, ich habe keine Ställe gesehen.
&lt;/li&gt;
&lt;li&gt;
In Kamdoscha werden zwei Währungen akzeptiert: Gezahlt wird meist in Dollar, Wechselgeld erhält man in Riel. 1 Dollar entsprechen 4000 Riel. Aus eigener Erfahrung kann ich sagen, dass die gemischten Währungen die Bezahlung von Rechnungen nicht einfacher machen.
&lt;/li&gt;
&lt;li&gt;
Frisches Obst wird viel seltener verkauft als in Thailand. Auf der Insel gab es z. B. nur Kokosnuss, zu Lande auch mal eine Mango. Früchtewägen wie aus Thailand bekannt sind mir nicht zu Augen gekommen. Auf dem Marktplatz werden Waren zu ebener Erde angeboten, was oft keinen hygienischen Eindruck vermittelt. Fliegen umschwirren das Fleisch auf dem Marktplatz.
&lt;/li&gt;
&lt;li&gt;
Wir haben zwei leckere Gerichte kennengelernt: Lok Lak, eine Art Rindfleischgeschnetzeltes, serviert zusammen mit einer leckeren Sauce aus schwarzem Pfeffer, Salz und Limettensaft. Das andere gericht heißt Amok und wird mit Chicken, Shrimps oder Beef serviert und ähnelt einem Curry. Außerdem gibt es viel internationale Küche. 
&lt;/li&gt;
&lt;li&gt;
Im Land und auf der Insel wehte, jahreszeitlich bedingt, ein stetiger Wind, den wir so nicht aus Thailand kennen. Das Klima war deshalb etwas angenehmer, vergleichbar mit europäischem Sommer. Natürlich hält das die Busfahrer nicht davon ab die Klimaanlage auf 18°C zu drehen, und das trotz mehrmaligem Bittens auch nicht zu ändern.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;

&lt;h3&gt;Zurück in Thailand&lt;/h3&gt;
&lt;p&gt;
Gestern früh um 7 galt es den Kutter Richtung Festland zu nehmen und die Reise zurück nach Thailand anzutreten. Zunächst sind wir mit dem Tuk Tuk in den kleinen Küstenort Kampot gebracht worden, um dort am hektischen Busterminal in ein größeres Gefährt verfrachtet zu werden. In Kampot haben sich die Wege unserer Viererreisegruppe getrennt: Jan und Robert sind nach Phnom Penh abgereist von wo sie hoffentlich mit dem Flieger nach Kuala Lumpur weiterreisen können, um ihren umgebuchten Emirates-Flug zu bekommen. Marci und ich sind mit dem Minibus über eine gut ausgebaute aber wenig befahrende Straße in Richtung Trat (Thailand) gefahren, wo wir gerade im Internetcafé sitze. Übrigens erstaunlich, dass 17 Personen (wir als einzige Ausländer) in einen für vielleicht zwölf Mann ausgelegten Minibus Platz finden. Auf unserer Fahrt haben wir sogar ein Gefährt mit schätzungsweise 22 Personen überholt. Leere Fahrzeuge gab es nicht.
&lt;/p&gt;

&lt;p&gt;
Die Pläne für die verbleibenden Tage sehen wie folgt aus: In ein paar Stunden nehmen wir einen Bus in Richtung Khao Yai National Park um drei oder vier Tage in der Natur zu verbringen: Khao Yai beherbergt u. a. Elefanten und Tiger im größten verbliebenen Stück natürlichen Regenwald in Asien. Danach geht es weiter nach Bangkok um unsere dort gelagerten Sachen zu holen und mit &lt;a  href="http://therightstuff.de/ct.ashx?id=b84fbd02-1a53-4d2e-a2f5-2b2cb51092a6&amp;amp;url=http%3a%2f%2f58bits.com%2f"&gt;Anthony&lt;/a&gt;, &lt;a  href="http://therightstuff.de/ct.ashx?id=b84fbd02-1a53-4d2e-a2f5-2b2cb51092a6&amp;amp;url=http%3a%2f%2frita-stockhowe.de%2f"&gt;Rita&lt;/a&gt; und Agnes essen zu gehen. Da nach unseren &lt;a  href="http://therightstuff.de/ct.ashx?id=b84fbd02-1a53-4d2e-a2f5-2b2cb51092a6&amp;amp;url=http%3a%2f%2fwww.emirates.com%2fde%2fgerman%2fsitetools%2foperational_updates.aspx"&gt;letzten Informationen&lt;/a&gt; die Flüge von Emirates erst am 13.12.2008 wieder normal verkehren, nehmen wir anschließend den Zug nach Kuala Lumpur durch das südliche Thailand.
&lt;/p&gt;&lt;img width="0" height="0" src="http://therightstuff.de/aggbug.ashx?id=b84fbd02-1a53-4d2e-a2f5-2b2cb51092a6"/&gt;&lt;/div&gt;</description>
      <comments>http://therightstuff.de/CommentView,guid,b84fbd02-1a53-4d2e-a2f5-2b2cb51092a6.aspx</comments>
      <category>Thailand, Cambodia 2008</category>
    <feedburner:origLink>http://therightstuff.de/2008/12/03/Cambodian-RoundUp.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://therightstuff.de/Trackback.aspx?guid=d4925548-552f-4f9a-921c-a2c28e2e624e</trackback:ping>
      <pingback:server>http://therightstuff.de/pingback.aspx</pingback:server>
      <pingback:target>http://therightstuff.de/PermaLink,guid,d4925548-552f-4f9a-921c-a2c28e2e624e.aspx</pingback:target>
      <dc:creator>Alexander Groß</dc:creator>
      <georss:point>51.32533 12.34274</georss:point>
      <wfw:comment>http://therightstuff.de/CommentView,guid,d4925548-552f-4f9a-921c-a2c28e2e624e.aspx</wfw:comment>
      <wfw:commentRss>http://therightstuff.de/SyndicationService.asmx/GetEntryCommentsRss?guid=d4925548-552f-4f9a-921c-a2c28e2e624e</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <title>Auf dem Weg nach Phnom Penh</title>
      <guid isPermaLink="false">http://therightstuff.de/PermaLink,guid,d4925548-552f-4f9a-921c-a2c28e2e624e.aspx</guid>
      <link>http://feedproxy.google.com/~r/alexandergross/~3/Hr39LW3pGDQ/Auf-Dem-Weg-Nach-Phnom-Penh.aspx</link>
      <pubDate>Thu, 27 Nov 2008 03:39:36 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;Oder: Peng Peng, unser Kosename der Stadt.&lt;/p&gt;
&lt;p&gt;Eine weitere Busreise und wir sind in Phnom Penh eingetroffen. Die Fahrt ging vorbei an schier endlos wirkenden Reisfeldern (sowohl als Schlammfeld, Setzlinge und in reifendem Zustand) diesmal sogar auf einer Asphaltstraße. Das "bisschen" Asphalt macht den Unterschied, plötzlich müssen die Menschen nicht mehr im roten Dreck leben und können vergleichsweise mehr Hygiene genießen, auch wenn sie meist in Holzhütten auf Stelzen oder in einfachen Verschlägen wohnen. Auch Schulen gibt es einige, erkennbar an den Schulkindern die nachmittags in weißen Blusen und Hemden den Heimweg auf dem Rad antreten.
&lt;/p&gt;
&lt;p&gt;
Die Ackerflächen werden etwas diversifizierter genutzt, so wird nicht nur Reis angebaut, sondern auch Fischzucht betrieben und Gemüse angepflanzt. Tiere wie Hühner, Hunde, Rinder, klein erscheinende Katzen und (wenige) Pferde scheinen sich selbst zu versorgen, sie laufen frei herum und bedienen sich auch schon mal am Reisfeld, wenn es nicht brusthoch mit Wasser gefüllt ist. Durch die fruchtbaren Schlämme des Tonle Sap kann oft sogar zwei mal pro Jahr geerntet werden.&lt;/p&gt;
&lt;p&gt;Das Fortbewegungsmittel Nummer 1 auf dem Land und in der Stadt ist nach wie vor das Moped das gern unter 30 km/h gefahren wird. Der Busfahrer hat sich um Programm bemüht, so wurde fast jeder Mopedfahrer mit mehrfachem Hupen "begrüßt". (Hupen wird als Signalzeichen genutzt: Achtung, hier komme ich.) Während der Fahrt gab es zwei DVDs mit lokalen Programm zu genießen: Zunächst Karaoke-Schmalz-Videos eines kambodschanischen Jugendstars, anschließend ein 3-Stunden-Epos über den Werdegang eines kleinen Jungen mit Quietschstimme zum Lehrer einer geheimnisvollen Kunst (mehr habe ich nicht verstanden). Es war noch etwas Zeit bis zur Ankunft, und so wurde der Popstar ein zweites Mal eingelegt.&lt;/p&gt;
&lt;p&gt;Unterwegs wurden ein paar Stops an Busstationen eingelegt, die wir selbst wahrscheinlich nie als solche identifiziert hätten. So diente einmal ein selbstgemaltes Busschild als Haltestellenzeichen, ein ander Mal saß einfach jemand da, der sich durch Gestikulieren um das Anhalten den Busses kümmerte.Bei diesen Stops wurden und Snacks dargeboten, u.a. auch gegrillte handtellergroße Spinnen, von denen wir aber &lt;i&gt;noch &lt;/i&gt;nicht probiert haben.&lt;/p&gt;&lt;img width="0" height="0" src="http://therightstuff.de/aggbug.ashx?id=d4925548-552f-4f9a-921c-a2c28e2e624e"/&gt;&lt;/div&gt;</description>
      <comments>http://therightstuff.de/CommentView,guid,d4925548-552f-4f9a-921c-a2c28e2e624e.aspx</comments>
      <category>Thailand, Cambodia 2008</category>
    <feedburner:origLink>http://therightstuff.de/2008/11/27/Auf-Dem-Weg-Nach-Phnom-Penh.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://therightstuff.de/Trackback.aspx?guid=8dee98a7-027d-439d-8836-dcc03191648a</trackback:ping>
      <pingback:server>http://therightstuff.de/pingback.aspx</pingback:server>
      <pingback:target>http://therightstuff.de/PermaLink,guid,8dee98a7-027d-439d-8836-dcc03191648a.aspx</pingback:target>
      <dc:creator>Alexander Groß</dc:creator>
      <georss:point>51.32533 12.34274</georss:point>
      <wfw:comment>http://therightstuff.de/CommentView,guid,8dee98a7-027d-439d-8836-dcc03191648a.aspx</wfw:comment>
      <wfw:commentRss>http://therightstuff.de/SyndicationService.asmx/GetEntryCommentsRss?guid=8dee98a7-027d-439d-8836-dcc03191648a</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <title>Siem Reap und Angkor Wat</title>
      <guid isPermaLink="false">http://therightstuff.de/PermaLink,guid,8dee98a7-027d-439d-8836-dcc03191648a.aspx</guid>
      <link>http://feedproxy.google.com/~r/alexandergross/~3/Hq0hdutAAP0/Siem-Reap-Und-Angkor-Wat.aspx</link>
      <pubDate>Tue, 25 Nov 2008 16:20:31 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;Die Reise von Trat nach Siem Reap, der Stadt direkt vor der riesigen Khmer-Tempelanlage Angkor Wat, Weltkulturerbe und in mehreren Etappen um das Jahr 1000 erbaut, lief recht angenehm per Privat-Jeep. Bis zur Grenze. An der Grenze angekommen haben uns die freundlichen Thai-"Schleußer" den Grenzübertritt mehrfach erklärt und uns in kleinen Gruppen zu 4 Personen über die Grenze geführt. Angekommen auf der kabodschanischen Seite fiel zunächst auf, dass bei Jan ein Thai-Stempel im Pass fehlte. Also schnell zurück und den blauen Abdruck nachgeholt. Zwischen den Grenzen, im Niemandsland, wurde eine stattliche Anzahl von Kasinos erbaut, die auch gern von Thais genutzt wird (Glücksspiel ist in Thailand verboten).&lt;/p&gt;
&lt;p&gt;In Kamboscha fiel uns sofort die miese Qualität der, nennen wir es mal so, Straßen ins Auge. Diese bestehen im wesentlichen aus Schlaglöchern, Staub und Müll. Auf einer solchen ging es im Anschluss  6 Stunden im Bus nach Siem Reap. Das noch in Thailand als Air-Con Bus angepriesene Gefährt entpuppte sich als lokaler Bus, mit "Fenster-Air-Con". Die Straße wird zwar an einigen Stellen gebaut, den Großteil ging es aber über eine holprige rote Staubpiste, die sich beim Regen in entsprechenden Matsch verwandelt hat. Wenige Meter von der Straße wohnen Menschen unter der permanenten Staubwolke in ihren einfachen Verschlägen und bepflanzen die weiten Reisfelder links und rechts der Straße. Trotz aller Widrigkeiten war diese Reise ein Heidenspaß, zumal wir uns samt Gepäck in der letzten Sitzreihe platziert haben.&lt;/p&gt;
&lt;p&gt;In Siem Reap sind wir ins Guest House "Hilton" eingecheckt (nicht zu verwechseln mit der gleichnamigen Hotelkette :). Es liegt zwar etwas außerhalb der Kneipenmeile Psah Char, bietet aber einen kostelosen Tuk Tuk-Shuttleservice in die Innenstadt. Wir haben auch den Guide John an de Hand bekommen der recht gut Englisch spricht und uns ein paar Dinge gezeigt hat. Siem Reap selbst ist keine schöne Stadt, auf mich wirkt sie vielmehr als Touristenschleuße. Siem Reap - Angkor Wat anschauen - und schnell wieder weg. So werden wir es auch halten, nach einem Tag Tempelgucken (zusammen mit Unmengen vornehmlich japanischer Touristen) haben wir genug und fahren morgen weiter nach Phnom Penh. Entgegen unserer Pläne haben wir uns gegen das Boot auf dem Tonle Sap und für den Bus entschieden. Das Speed Boat kostet mit US$35 sechs mal so viel wie der Bus und man sieht nicht so viel vom Land und den Leuten.&lt;/p&gt;
&lt;img width="0" height="0" src="http://therightstuff.de/aggbug.ashx?id=8dee98a7-027d-439d-8836-dcc03191648a"/&gt;&lt;/div&gt;</description>
      <comments>http://therightstuff.de/CommentView,guid,8dee98a7-027d-439d-8836-dcc03191648a.aspx</comments>
      <category>Thailand, Cambodia 2008</category>
    <feedburner:origLink>http://therightstuff.de/2008/11/25/Siem-Reap-Und-Angkor-Wat.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://therightstuff.de/Trackback.aspx?guid=09de77b6-428e-476e-aa54-68194eb2436b</trackback:ping>
      <pingback:server>http://therightstuff.de/pingback.aspx</pingback:server>
      <pingback:target>http://therightstuff.de/PermaLink,guid,09de77b6-428e-476e-aa54-68194eb2436b.aspx</pingback:target>
      <dc:creator>Alexander Groß</dc:creator>
      <georss:point>12.245656 102.517719</georss:point>
      <wfw:comment>http://therightstuff.de/CommentView,guid,09de77b6-428e-476e-aa54-68194eb2436b.aspx</wfw:comment>
      <wfw:commentRss>http://therightstuff.de/SyndicationService.asmx/GetEntryCommentsRss?guid=09de77b6-428e-476e-aa54-68194eb2436b</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <title>Trat</title>
      <guid isPermaLink="false">http://therightstuff.de/PermaLink,guid,09de77b6-428e-476e-aa54-68194eb2436b.aspx</guid>
      <link>http://feedproxy.google.com/~r/alexandergross/~3/A9M5rpAE3hw/Trat.aspx</link>
      <pubDate>Sun, 23 Nov 2008 13:45:25 GMT</pubDate>
      <description>&lt;div&gt;&lt;P&gt;Ko Mak, ich werde dich vermissen. Die Zeit des Nichtstun ist vorerst vorbei. Den letzten Tag auf der Insel haben wir wie geplant mit einer Fahrt mit dem Moped beschlossen. Dabei sind wir ziemlich gut rumgekommen und durften u. a. Neubauten (Hotels für Touristen) anschauen. Das thailandische Bauarbeitervolk hat dabei nicht viel zu lachen, ihre&amp;nbsp;Bretterbuden liegen direkt an der Baustelle, quasi inmitten von rotbraunem Staub und Baustellenschutt. Dennoch war es ein schöner und spaßiger Ausflug, wir sind an einsamen Ständen mit Hütten vorbei gekommen und haben uns den Sonnenuntergang mit seinem riesigen roten Feuerball aus einer anderen Inselperspektive bestaunt. Inklusive Stromausfall beim Bezahlen der Tankrechnung.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Anschließend ging es weiter mit einem opulenten Abendmal mit Seafood das tagsüber noch im Wasser schwamm. Gut gesättigt haben wir den Abend in der &lt;a  href="http://therightstuff.de/ct.ashx?id=09de77b6-428e-476e-aa54-68194eb2436b&amp;amp;url=http%3a%2f%2fmyspace.com%2fneverlandkohmak"&gt;Strandbar&lt;/A&gt; von Yuu, einer 25-jährigen Bangkokerin verbracht. Sie kommt nur während der Saison nach Koh Mak und arbeitet die anderen sechs Monate im Büro in der Hauptstadt. Yuu wohnt mit Ihrem Kumpel Pone, einem verrückten und ziemlich faulen (O-Ton "Oh nooo, tooo much work!") &amp;nbsp;Musiker, u. a. Trompete, in der ersten Etage ihrer luftigen Strandbar. Als Pone vom Bier übermannt auf dem Boden eingeschafen war, durften wir alle an die Wasserfarbe und ihn bepinseln.&amp;nbsp;Einige unserer Kunstwerke (aus meiner Feder: "Lazy Dude")&amp;nbsp;haben ihm gut gefallen, und so durften wir sie heute auf dem Speed Boat gen Festland bei Tageslicht bewundern.&amp;nbsp;Der Abend war für uns alle eine schöne Erfahrung gewesen, vor allem weil es uns gelang mit den Locals eine gutes Gespräch zu führen, in dem auch heikle Themen, bspw. die korrupte Polizei, angeschnitten wurden.&lt;/P&gt;
&lt;P&gt;Nach diesem wunderschönen letzten Abend auf dem kleinen Eiland befinden wir uns nun um die Ecke des Nachtmarkts in Trat. Trat ist eine kleine Stadt im Südosten am Golf von Thailand gelegen.&amp;nbsp;Kurtz vor&amp;nbsp;21 Uhr sind noch 30 Grad draußen, und keine Besserung durch Wind in Sicht. Morgen bringt uns der Bus nach Siem Reap in Kambodscha. Ich bin gespannt.&lt;/P&gt;&lt;img width="0" height="0" src="http://therightstuff.de/aggbug.ashx?id=09de77b6-428e-476e-aa54-68194eb2436b"/&gt;&lt;/div&gt;</description>
      <comments>http://therightstuff.de/CommentView,guid,09de77b6-428e-476e-aa54-68194eb2436b.aspx</comments>
      <category>Thailand, Cambodia 2008</category>
    <feedburner:origLink>http://therightstuff.de/2008/11/23/Trat.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://therightstuff.de/Trackback.aspx?guid=833a8a1f-acc3-4b2d-b30d-6c295de6135b</trackback:ping>
      <pingback:server>http://therightstuff.de/pingback.aspx</pingback:server>
      <pingback:target>http://therightstuff.de/PermaLink,guid,833a8a1f-acc3-4b2d-b30d-6c295de6135b.aspx</pingback:target>
      <dc:creator>Alexander Groß</dc:creator>
      <georss:point>11.830222 102.478237</georss:point>
      <wfw:comment>http://therightstuff.de/CommentView,guid,833a8a1f-acc3-4b2d-b30d-6c295de6135b.aspx</wfw:comment>
      <wfw:commentRss>http://therightstuff.de/SyndicationService.asmx/GetEntryCommentsRss?guid=833a8a1f-acc3-4b2d-b30d-6c295de6135b</wfw:commentRss>
      <title>Ko Mak</title>
      <guid isPermaLink="false">http://therightstuff.de/PermaLink,guid,833a8a1f-acc3-4b2d-b30d-6c295de6135b.aspx</guid>
      <link>http://feedproxy.google.com/~r/alexandergross/~3/UAuv-2QBz9I/Ko-Mak.aspx</link>
      <pubDate>Fri, 21 Nov 2008 11:40:36 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;Nach einigen Stunden Busfahrt und einem einstündigen Trip mit dem
Speedboat sind wir vorgestern auf Ko Mak angekommen. Das Guest House
"Monkey Island" (vermutlich heißt dessen Chef &lt;a  href="http://therightstuff.de/ct.ashx?id=833a8a1f-acc3-4b2d-b30d-6c295de6135b&amp;amp;url=http%3a%2f%2fde.wikipedia.org%2fwiki%2fGuybrush_Threepwood%23Guybrush_Threepwood"&gt;Guybrush Threepwood&lt;/a&gt;)
war so freundlich uns zwei kleine Hütten gegen Entgeld zur
Verfügung zu stellen, die alles bieten was der Traveller braucht. Genau
genommen ist in den letzten beiden Tagen nicht viel passiert, das
ruhige Inselleben hat uns in seinen Bann gezogen. Die Zeit fließt
dahin, die Sonne brennt und Abends kommt das Viehzeug aus den Löchern.
:) Hier gibt es neben Mücken und 15 cm langen Tausendfüßlern auch
Zikaden die mit einer einheimischen Kröte eine Art Symbiose gebildet zu
haben scheinen haben. So konnten wir gestern Abend einen Kröte am
Eingang einer Zikadenhöhle (in der Größe eines Mauselochs) beobachten,
der sich, unter unserer Beobachtung befindend, in die Behausung der
Zikade verkrochen hat. Tags zuvor wurde jener Frosch an selbigem
Eingang Wache haltend vorgefunden.&lt;/p&gt;
&lt;p&gt;Heute habe ich mir eine Fußmassage mit einer Art Pfefferminzpaste
(ein herrlicher Duft) in einer kleinen Holzhütte 2 Meter neben der
Brandung gegönnt. Gegen Ende hat die thailändische Masseurin in
ganzheitlicher Manier sogar meinen Rücken bearbeitet.&lt;/p&gt;
&lt;p&gt;
Morgen geht's mit dem Moped einmal quer über die Insel. Auf diese
Weise zahlt sich nun endlich auch das Üben mit der &lt;a  href="http://therightstuff.de/ct.ashx?id=833a8a1f-acc3-4b2d-b30d-6c295de6135b&amp;amp;url=http%3a%2f%2fde.wikipedia.org%2fwiki%2fSimson_S51"&gt;S51&lt;/a&gt; auf dem Feld  in OGD in meiner Jungend aus.&lt;/p&gt;
&lt;p&gt;Unsere Pläne für die restlichen Urlaubstage haben sich indes weiter
gefestigt: Wir reisen übermorgen per Minibus nach Norden nach Siem Reap
und nehmen uns ein paar Tage für Angkor Wat Zeit. Danach soll uns das
Boot über den &lt;a  href="http://therightstuff.de/ct.ashx?id=833a8a1f-acc3-4b2d-b30d-6c295de6135b&amp;amp;url=http%3a%2f%2fde.wikipedia.org%2fwiki%2fTonle_Sap"&gt;Tonle Sap&lt;/a&gt;, den größten Süßwassersee der Region, nach
Phnom Penh bringen. Anschließend geht es weiter ins südliche Kep wo uns
&lt;a  href="http://therightstuff.de/ct.ashx?id=833a8a1f-acc3-4b2d-b30d-6c295de6135b&amp;amp;url=http%3a%2f%2fwww.rita-stockhowe.de%2f"&gt;Rita&lt;/a&gt; die Rabbit Islands empfohlen hat.&lt;/p&gt;&lt;img width="0" height="0" src="http://therightstuff.de/aggbug.ashx?id=833a8a1f-acc3-4b2d-b30d-6c295de6135b"/&gt;&lt;/div&gt;</description>
      <comments>http://therightstuff.de/CommentView,guid,833a8a1f-acc3-4b2d-b30d-6c295de6135b.aspx</comments>
      <category>Thailand, Cambodia 2008</category>
    <feedburner:origLink>http://therightstuff.de/2008/11/21/Ko-Mak.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://therightstuff.de/Trackback.aspx?guid=aa226f87-bbdc-4696-8809-78161cd48436</trackback:ping>
      <pingback:server>http://therightstuff.de/pingback.aspx</pingback:server>
      <pingback:target>http://therightstuff.de/PermaLink,guid,aa226f87-bbdc-4696-8809-78161cd48436.aspx</pingback:target>
      <dc:creator>Alexander Groß</dc:creator>
      <georss:point>13.758237 100.498198</georss:point>
      <wfw:comment>http://therightstuff.de/CommentView,guid,aa226f87-bbdc-4696-8809-78161cd48436.aspx</wfw:comment>
      <wfw:commentRss>http://therightstuff.de/SyndicationService.asmx/GetEntryCommentsRss?guid=aa226f87-bbdc-4696-8809-78161cd48436</wfw:commentRss>
      <title>Ab auf die Insel</title>
      <guid isPermaLink="false">http://therightstuff.de/PermaLink,guid,aa226f87-bbdc-4696-8809-78161cd48436.aspx</guid>
      <link>http://feedproxy.google.com/~r/alexandergross/~3/EjU8iWBIqkk/Ab-Auf-Die-Insel.aspx</link>
      <pubDate>Tue, 18 Nov 2008 11:27:31 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;Noch 5 Baht sind im Internet-Automaten, deswegen nur ein kurzer
Beitrag: Unsere Pläne haben sich etwas geändert, wir fahren also nicht
direkt nach Angkor Wat sondern verbringen zunächst ein paar Tage auf Ko
Mak, einer kleinen Insel im Thailands Südosten. Nach den lauten und
aufregenden Tagen in Bangkok genau das richtige, bevor wir uns in die
Kultur von Kambodscha stürzen. Unsere Tage verlaufen sehr entspannt,
heute haben wir uns&amp;nbsp;z. B. die erste Thai-Massage gegönnt. Später
ging es zum Fluss zum Betrachten den Sonnenuntergangs. Heute Abend
treffen wir Nadine um ein paar Dinge abzugeben und ein Bierchen auf
ihrer Terasse zu trinken.&lt;/p&gt;
&lt;p&gt;Der gestrige Abend verdient Erwähnung, wir waren mit &lt;a  href="http://therightstuff.de/ct.ashx?id=aa226f87-bbdc-4696-8809-78161cd48436&amp;amp;url=http%3a%2f%2f58bits.com"&gt;Anthony Bouch&lt;/a&gt;,
den ich von der dasBlog-Developer-Mailingliste kenne zuerst in China
Town, um das chinesische Seafood an der bekannten
"Rot/Grün"-Straßenkreuzung zu probieren. Wir erwartet war es
superlecker und ausreichend :) Danach ging es zum ersten mal "richtig"
in die Soi Cowboy, in deren Nähe wir bereits 2002 gewohnt haben. Ich
sage hier nur: "interessant", alles weitere gibt's zu Haus.&lt;/p&gt;
&lt;p&gt;Da der Internetzzugriff per GPRS und Handy unerwartet gut
funktioniert (außerhalb von Bangkok fehlt mir die Erfahrung) habe ich
mich entschlossen weiterhin Updates auf &lt;a  href="http://therightstuff.de/ct.ashx?id=aa226f87-bbdc-4696-8809-78161cd48436&amp;amp;url=http%3a%2f%2ftwitter.com%2fagross"&gt;Twitter&lt;/a&gt; zu posten.&lt;/p&gt;&lt;img width="0" height="0" src="http://therightstuff.de/aggbug.ashx?id=aa226f87-bbdc-4696-8809-78161cd48436"/&gt;&lt;/div&gt;</description>
      <comments>http://therightstuff.de/CommentView,guid,aa226f87-bbdc-4696-8809-78161cd48436.aspx</comments>
      <category>Thailand, Cambodia 2008</category>
    <feedburner:origLink>http://therightstuff.de/2008/11/18/Ab-Auf-Die-Insel.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://therightstuff.de/Trackback.aspx?guid=fb5b7afb-d7e6-48cc-9d84-4237da5ab1fa</trackback:ping>
      <pingback:server>http://therightstuff.de/pingback.aspx</pingback:server>
      <pingback:target>http://therightstuff.de/PermaLink,guid,fb5b7afb-d7e6-48cc-9d84-4237da5ab1fa.aspx</pingback:target>
      <dc:creator>Alexander Groß</dc:creator>
      <georss:point>13.758237 100.498198</georss:point>
      <wfw:comment>http://therightstuff.de/CommentView,guid,fb5b7afb-d7e6-48cc-9d84-4237da5ab1fa.aspx</wfw:comment>
      <wfw:commentRss>http://therightstuff.de/SyndicationService.asmx/GetEntryCommentsRss?guid=fb5b7afb-d7e6-48cc-9d84-4237da5ab1fa</wfw:commentRss>
      <title>Die Reise</title>
      <guid isPermaLink="false">http://therightstuff.de/PermaLink,guid,fb5b7afb-d7e6-48cc-9d84-4237da5ab1fa.aspx</guid>
      <link>http://feedproxy.google.com/~r/alexandergross/~3/tzK44hNAS8Q/Die-Reise.aspx</link>
      <pubDate>Sun, 16 Nov 2008 06:07:24 GMT</pubDate>
      <description>&lt;div&gt;&lt;h3&gt;Anreise via Dubai&lt;/h3&gt;
Nach 24 Stunden Reise über Münschen und Dubai sind wir gestern Abend (Ortszeit) in Bangkok angekommen. Wie üblich ging es mit Emirates Airlines über die Vereinigten Arabischen Emirate. Ich war das letzte Mal 2002 dort, seither hat sich einiges verändert. Es wird unglaublich viel gebaut; ich habe gehört, dass 80% aller Hochkräne (solche, die man auf Gebäude setzen kann, um diese noch ein paar Stockwerke höher zu bauen) in Dubai stehen und mein Eindruck bestätigt dies. Unser Transit ging bereits über das neue Terminal und beim Abflug habe ich gesehen dass sich noch ein weiteres Terminal im Bau befindet. Auf unserer Rückreise mit ungefähr 8 Stunden Aufenthalt in DBX haben wir wahrscheinlich die Gelegenheit in die Stadt zu fahren uns so die lange Transitzeit mit einem Sightseeing zu gewürzen.&lt;br&gt;&lt;h3&gt;Ankunft&lt;/h3&gt;Nach einem recht angenehmen Flug (leider ohne Upgrade in die Business Class) sind wir um 19:30 Uhr in BKK gelandet. Draußen sind angenehme 30 Grad, der Duft der Großstadt lockt uns in ein Taxi und wir machen uns mit Sack und Pack auf den Weg in die Khao San Road, dem Backpacker-Paradies im Herzen Bangkoks. Aufgrund des der Trauerfeierlichkeiten wegen des Tods der Schwester des Königs und eines teilweise abgesperrten Stadtteils durften wir die letzten 1000 Meter zu Fuß zurücklegen (Der Taxifahrer fand das erwartungsgemäß "No good"). Beim Vorbeigehen an den ersten Essensständen überkam mich langsam der Appetit auf die lokalen Speisen, der auch bald befriedigt werden sollte. Glücklicherweise konnten wir beim beim zweiten Guest House einchecken und bekamen zwei kleines Doppelzimmer, was für die erste Nacht auch ausreichend war. Heute früh habe ich zusammen mit Robert festgestellt, dass sie uns zwei in einen Raum mit Fenster, allerdings ohne Tageslicht, gesteckt haben. Grund genug in eine bessere Herberge zu wechseln, was wir heute Morgen als erstes erledigt haben. In unseren neuen Herbege wohnen nun &lt;a  href="http://therightstuff.de/ct.ashx?id=fb5b7afb-d7e6-48cc-9d84-4237da5ab1fa&amp;amp;url=http%3a%2f%2fpixelplastic.de" rel="friend met co-resident"&gt;Marci&lt;/a&gt; und Jan ohne Tageslicht (und Fenster) :)&lt;br&gt;&lt;br&gt;Den gestrigen Abend haben wir entspannt in der Khao San Road verbracht. Mein persönliches Highlight bisher ist das Essen, welches wieder exzellent ist. Schön scharf und gesund. Als erstes Experiment gab es gestern für alle geröstete Heuschrecken, die einen mild-nussigen Geschmack haben. Dazu, frisch gepressten Orangensaft, Pad Thai, Bier, Fleischspieße von der Garküche und als Nachtisch Banana Pan Cake. &lt;i&gt;So&lt;/i&gt; einfach kann es sein, mich zufrieden zu machen.&lt;br&gt;&lt;h3&gt;Tagesplan&lt;/h3&gt;Heute ist Sonntag, wir brechen deshalb in ein paar Minuten zum Chatuk Chak Weekend Market auf. Auch um dort ein paar Dinge für Jan zu organisieren, dessen Gepäck noch nicht angekommen ist. Später treffen wir uns mit Nadine und werden später die Seafood-Leckereien aus China Town ausprobieren.&lt;br&gt;&lt;br&gt;Bisher ist es also in erster Linie eine kulinarische Reise. Etwas, auf das ich mich sehr gefreut habe. Viel frisches Obst und Getier, lecker zubereitet.&lt;img width="0" height="0" src="http://therightstuff.de/aggbug.ashx?id=fb5b7afb-d7e6-48cc-9d84-4237da5ab1fa"/&gt;&lt;/div&gt;</description>
      <comments>http://therightstuff.de/CommentView,guid,fb5b7afb-d7e6-48cc-9d84-4237da5ab1fa.aspx</comments>
      <category>Thailand, Cambodia 2008</category>
    <feedburner:origLink>http://therightstuff.de/2008/11/16/Die-Reise.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://therightstuff.de/Trackback.aspx?guid=91b719dd-ee03-43a0-bb1f-2e08a1ec215b</trackback:ping>
      <pingback:server>http://therightstuff.de/pingback.aspx</pingback:server>
      <pingback:target>http://therightstuff.de/PermaLink,guid,91b719dd-ee03-43a0-bb1f-2e08a1ec215b.aspx</pingback:target>
      <dc:creator>Alexander Groß</dc:creator>
      <georss:point>51.32533 12.34274</georss:point>
      <wfw:comment>http://therightstuff.de/CommentView,guid,91b719dd-ee03-43a0-bb1f-2e08a1ec215b.aspx</wfw:comment>
      <wfw:commentRss>http://therightstuff.de/SyndicationService.asmx/GetEntryCommentsRss?guid=91b719dd-ee03-43a0-bb1f-2e08a1ec215b</wfw:commentRss>
      <title>.NET Open Space 2008</title>
      <guid isPermaLink="false">http://therightstuff.de/PermaLink,guid,91b719dd-ee03-43a0-bb1f-2e08a1ec215b.aspx</guid>
      <link>http://feedproxy.google.com/~r/alexandergross/~3/7bfEbS4D7kY/NET-Open-Space-2008.aspx</link>
      <pubDate>Thu, 16 Oct 2008 21:31:30 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;Tomorrow around 3 P.M. I will be heading to Leipzig's &lt;a  href="http://therightstuff.de/ct.ashx?id=91b719dd-ee03-43a0-bb1f-2e08a1ec215b&amp;amp;url=http%3a%2f%2fwww.mediencampus-villa-ida.de%2f"&gt;Mediencampus Villa Ida&lt;/a&gt; to finish the last preparations of the first &lt;a  href="http://therightstuff.de/ct.ashx?id=91b719dd-ee03-43a0-bb1f-2e08a1ec215b&amp;amp;url=http%3a%2f%2fnetopenspace.de%2fEnglish.ashx"&gt;.NET Open Space 2008&lt;/a&gt; in Leipzig, Germany.&lt;/p&gt; &lt;div style="text-align: center;"&gt;&lt;a title=".NET Open Space vom 18.10. bis 19.10.2008 in Leipzig"  href="http://therightstuff.de/ct.ashx?id=91b719dd-ee03-43a0-bb1f-2e08a1ec215b&amp;amp;url=http%3a%2f%2fnetopenspace.de%2fEnglish.ashx"&gt;&lt;img alt=".NET Open Space vom 18.10. bis 19.10.2008 in Leipzig" src="http://netopenspace.de/GetFile.aspx?File=Logos/nos-logo-3.png"&gt; &lt;/a&gt;&lt;/div&gt; &lt;p&gt;The .NET Open Space 2008 is an "unconference" in the style of &lt;a  href="http://therightstuff.de/ct.ashx?id=91b719dd-ee03-43a0-bb1f-2e08a1ec215b&amp;amp;url=http%3a%2f%2fen.wikipedia.org%2fwiki%2fOpen_Space_Technology"&gt;Open Spaces&lt;/a&gt; and was inspired by the recent ALT.NET conferences in &lt;a  href="http://therightstuff.de/ct.ashx?id=91b719dd-ee03-43a0-bb1f-2e08a1ec215b&amp;amp;url=http%3a%2f%2fwww.altnetuk.com%2f"&gt;London&lt;/a&gt; and &lt;a  href="http://therightstuff.de/ct.ashx?id=91b719dd-ee03-43a0-bb1f-2e08a1ec215b&amp;amp;url=http%3a%2f%2faltdotnet.org%2fevents%2fseattle%2f"&gt;Seattle&lt;/a&gt;. That is, we as attendees decide on the actual topics of the &lt;a  href="http://therightstuff.de/ct.ashx?id=91b719dd-ee03-43a0-bb1f-2e08a1ec215b&amp;amp;url=http%3a%2f%2fen.wikipedia.org%2fwiki%2fUnconference"&gt;sessions&lt;/a&gt;: There's no separation in speakers, attendees and the organizing team. Thus, every participant is responsible to make the best of the coming weekend; discuss, inspire, chat, meet people, &lt;a  href="http://therightstuff.de/ct.ashx?id=91b719dd-ee03-43a0-bb1f-2e08a1ec215b&amp;amp;url=http%3a%2f%2fnetopenspace.de%2fFAQ.ashx%23Party"&gt;party&lt;/a&gt; and travel home with lots of new ideas. &lt;a  href="http://therightstuff.de/ct.ashx?id=91b719dd-ee03-43a0-bb1f-2e08a1ec215b&amp;amp;url=http%3a%2f%2fnetopenspace.de%2fEnglish.ashx%23team"&gt;We&lt;/a&gt; hope that a lively conversation will take place.&lt;/p&gt; &lt;p&gt;The open format allows us to skip the sometimes lengthy negotiation with speakers that Torsten and I went through for the last &lt;a href="dotnet-leipzig.de/summercamp"&gt;.NET Summercamp&lt;/a&gt; in 2007. Instead &lt;a  href="http://therightstuff.de/ct.ashx?id=91b719dd-ee03-43a0-bb1f-2e08a1ec215b&amp;amp;url=http%3a%2f%2fwww.lieser-online.de%2fblog%2f" rel="friend acquaintance"&gt;Stefan&lt;/a&gt;, &lt;a  href="http://therightstuff.de/ct.ashx?id=91b719dd-ee03-43a0-bb1f-2e08a1ec215b&amp;amp;url=http%3a%2f%2fblogs.compactframework.de%2fTorsten.Weber%2f" rel="met friend"&gt;Torsten&lt;/a&gt; and I harnessed our otherwise wasted spare time to build an extensive list of &lt;a  href="http://therightstuff.de/ct.ashx?id=91b719dd-ee03-43a0-bb1f-2e08a1ec215b&amp;amp;url=http%3a%2f%2fnetopenspace.de%2fSponsorenlogos.ashx"&gt;sponsors&lt;/a&gt; that allow for a pretty decent list of supplies and a couple of &lt;a  href="http://therightstuff.de/ct.ashx?id=91b719dd-ee03-43a0-bb1f-2e08a1ec215b&amp;amp;url=http%3a%2f%2fnetopenspace.de%2fSponsoren.ashx"&gt;free products and books&lt;/a&gt; that we don't raffle but rather lay out all day long to let each attendee actually have a look at what's in for him and vote who should get the product.&lt;/p&gt; &lt;p&gt;I wish us &lt;a  href="http://therightstuff.de/ct.ashx?id=91b719dd-ee03-43a0-bb1f-2e08a1ec215b&amp;amp;url=http%3a%2f%2fnetopenspace.de%2fTeilnehmer.ashx"&gt;85&lt;/a&gt; a great weekend!&lt;/p&gt;&lt;img width="0" height="0" src="http://therightstuff.de/aggbug.ashx?id=91b719dd-ee03-43a0-bb1f-2e08a1ec215b"/&gt;&lt;/div&gt;</description>
      <comments>http://therightstuff.de/CommentView,guid,91b719dd-ee03-43a0-bb1f-2e08a1ec215b.aspx</comments>
      <category>ALT.NET</category>
      <category>DNUG Leipzig</category>
      <category>.NET</category>
    <feedburner:origLink>http://therightstuff.de/2008/10/16/NET-Open-Space-2008.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://therightstuff.de/Trackback.aspx?guid=fc497ab1-048d-442c-8213-b7410792a282</trackback:ping>
      <pingback:server>http://therightstuff.de/pingback.aspx</pingback:server>
      <pingback:target>http://therightstuff.de/PermaLink,guid,fc497ab1-048d-442c-8213-b7410792a282.aspx</pingback:target>
      <dc:creator>Alexander Groß</dc:creator>
      <georss:point>51.32533 12.34274</georss:point>
      <wfw:comment>http://therightstuff.de/CommentView,guid,fc497ab1-048d-442c-8213-b7410792a282.aspx</wfw:comment>
      <wfw:commentRss>http://therightstuff.de/SyndicationService.asmx/GetEntryCommentsRss?guid=fc497ab1-048d-442c-8213-b7410792a282</wfw:commentRss>
      <title>Outlook Macro: Mark All Items Read In Subfolders</title>
      <guid isPermaLink="false">http://therightstuff.de/PermaLink,guid,fc497ab1-048d-442c-8213-b7410792a282.aspx</guid>
      <link>http://feedproxy.google.com/~r/alexandergross/~3/UUKsYNTJSEE/Outlook-Macro-Mark-All-Items-Read-In-Subfolders.aspx</link>
      <pubDate>Thu, 18 Sep 2008 15:29:26 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;&lt;img height="179" alt="Mailing lists" src="http://www.therightstuff.de/content/binary/WindowsLiveWriter/OutlookMacroMarkingAllItemsReadInAllSubf_DE91/Mailing%20lists_4c4f072f-87e0-423b-a24a-6d878c1355f8.png" width="132" align="right" border="0"&gt; Recently my mailing lists subscriptions grew to an extend not seen before, largely due to my grown interest in ALT.NET and open source projects. Having an eye on the dev or user mailing lists is often very valuable to stay on top of recent developments, identify best practices and to post or answer the occasional question.&lt;/p&gt; &lt;p&gt;However, that doesn't come without drawbacks. One increasing hassle is to keep up with the constant flow of information such that I see myself forced to reset once in while. After getting back from a 3-day vacation this summer I had 200+ unread feed items and uncounted unread mailing lists messages. I do not claim to read everything that lands in my inbox(es) so a quick "mark all as read" is a very relieving act. &lt;a  href="http://therightstuff.de/ct.ashx?id=fc497ab1-048d-442c-8213-b7410792a282&amp;amp;url=http%3a%2f%2fwww.newsgator.com%2fIndividuals%2fFeedDemon%2f"&gt;FeedDemon&lt;/a&gt;, my feed reader, even has a &lt;a  href="http://therightstuff.de/ct.ashx?id=fc497ab1-048d-442c-8213-b7410792a282&amp;amp;url=http%3a%2f%2fnick.typepad.com%2fblog%2f2007%2f11%2ffeed-overload-h.html"&gt;panic button&lt;/a&gt; to support this discomforting situation.&lt;/p&gt; &lt;p&gt;Unfortunately Outlook does not support marking all items read in a certain folder &lt;em&gt;and all of its subfolders&lt;/em&gt;. On the other hand, there is this ancient VBA language that you can use to program Outlook…&lt;/p&gt;&lt;pre class="brush: vb"&gt;Sub MarkAllRead()
    Dim resultFolder As folder
    Dim folder As folder
    Dim item As MailItem
        
    Set resultFolder = GetFolder("path\to\your\mailing\lists\root\folder")
    
    For Each folder In resultFolder.folders
        For Each item In folder.Items.Restrict("[unread] = true")
            item.UnRead = False
        Next
    Next
             
    Set resultFolder = Nothing
    Set folder = Nothing
    Set item = Nothing
End Sub

Function GetFolder(strFolderPath As String) As MAPIFolder
    ' strFolderPath needs to be something like
    '   "Public Folders\All Public Folders\Company\Sales" or
    '   "Personal Folders\Inbox\My Folder"
    
    Dim colFolders As Outlook.folders
    Dim objFolder As Outlook.MAPIFolder
    Dim arrFolders() As String
    Dim i As Long
    On Error Resume Next
    
    strFolderPath = Replace(strFolderPath, "/", "\")
    arrFolders() = Split(strFolderPath, "\")
    
    Set objFolder = Application.GetNamespace("MAPI").folders.item(arrFolders(0))
    If Not objFolder Is Nothing Then
        For i = 1 To UBound(arrFolders)
            Set colFolders = objFolder.folders
            Set objFolder = Nothing
            Set objFolder = colFolders.item(arrFolders(i))
            If objFolder Is Nothing Then
                Exit For
            End If
        Next
    End If
    
    Set GetFolder = objFolder
    Set colFolders = Nothing
End Function&lt;/pre&gt;
&lt;p&gt;Thanks to &lt;a  href="http://therightstuff.de/ct.ashx?id=fc497ab1-048d-442c-8213-b7410792a282&amp;amp;url=http%3a%2f%2fblog.lars-keller.net%2f" rel="friend met"&gt;Lars Keller&lt;/a&gt; for the hint to filter unread items with &lt;code&gt;Restrict()&lt;/code&gt;!&lt;/p&gt;&lt;img width="0" height="0" src="http://therightstuff.de/aggbug.ashx?id=fc497ab1-048d-442c-8213-b7410792a282"/&gt;&lt;/div&gt;</description>
      <comments>http://therightstuff.de/CommentView,guid,fc497ab1-048d-442c-8213-b7410792a282.aspx</comments>
      <category>Office</category>
    <feedburner:origLink>http://therightstuff.de/2008/09/18/Outlook-Macro-Mark-All-Items-Read-In-Subfolders.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://therightstuff.de/Trackback.aspx?guid=01fda2ec-57af-4cb4-a4b6-6131323e37ac</trackback:ping>
      <pingback:server>http://therightstuff.de/pingback.aspx</pingback:server>
      <pingback:target>http://therightstuff.de/PermaLink,guid,01fda2ec-57af-4cb4-a4b6-6131323e37ac.aspx</pingback:target>
      <dc:creator>Alexander Groß</dc:creator>
      <georss:point>51.32533 12.34274</georss:point>
      <wfw:comment>http://therightstuff.de/CommentView,guid,01fda2ec-57af-4cb4-a4b6-6131323e37ac.aspx</wfw:comment>
      <wfw:commentRss>http://therightstuff.de/SyndicationService.asmx/GetEntryCommentsRss?guid=01fda2ec-57af-4cb4-a4b6-6131323e37ac</wfw:commentRss>
      <title>ReSharper Type Members Layout for MSpec 0.2</title>
      <guid isPermaLink="false">http://therightstuff.de/PermaLink,guid,01fda2ec-57af-4cb4-a4b6-6131323e37ac.aspx</guid>
      <link>http://feedproxy.google.com/~r/alexandergross/~3/o52Rm5a7Rqs/ReSharper-Type-Members-Layout-For-MSpec-02.aspx</link>
      <pubDate>Tue, 16 Sep 2008 17:35:35 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;A couple of days ago Aaron Jensen released &lt;a  href="http://therightstuff.de/ct.ashx?id=01fda2ec-57af-4cb4-a4b6-6131323e37ac&amp;amp;url=http%3a%2f%2fcodebetter.com%2fblogs%2faaron.jensen%2farchive%2f2008%2f09%2f02%2fmspec-v0-2.aspx"&gt;MSpec 0.2&lt;/a&gt;, a BDD-style testing framework. Since I got hooked on BDD during my last work project (readable test names!) I was eager giving MSpec a shot. MSpec comes with support for TestDriven.NET so using inside of Visual Studio is a no-brainer once you installed the MSpec support for TD.NET. The release contains everything you need.&lt;/p&gt; &lt;p&gt;Today I wrote my first couple of MSpec specifications and had a very good initial experience. However, there's one caveat with ReSharper's absolute killer feature (well, one of its many killer features): &lt;a  href="http://therightstuff.de/ct.ashx?id=01fda2ec-57af-4cb4-a4b6-6131323e37ac&amp;amp;url=http%3a%2f%2fwww.jetbrains.com%2fresharper%2ffeatures%2fcode_formatting.html"&gt;Code Cleanup&lt;/a&gt;. I usually like to type code without caring too much about its layout and then do a quick re-format to make it align with my formatting conventions.&lt;/p&gt; &lt;p&gt;ReSharper formatted the specification like this:&lt;/p&gt;&lt;pre class="brush: c#"&gt;[Concern(typeof(StringExtensions), "String testing")]
public class When_a_null_string_is_tested_to_have_a_value : String_testing_specification
{
    Establish context = () =&amp;gt; { Sut = null; };

    It it_should_not_hold_a_value = () =&amp;gt; HasValue.ShouldBeFalse();

    Because of = () =&amp;gt; HasValue = Sut.HasValue();
}&lt;/pre&gt;
&lt;p&gt;The code structure should follow order in which the specification is run, like so:&lt;/p&gt;&lt;pre class="brush: c#"&gt;[Concern(typeof(StringExtensions), "String testing")]
public class When_a_null_string_is_tested_to_have_a_value : String_testing_specification
{
    Establish context = () =&amp;gt; { Sut = null; };

    Because of = () =&amp;gt; HasValue = Sut.HasValue();

    It it_should_not_hold_a_value = () =&amp;gt; HasValue.ShouldBeFalse();
}&lt;/pre&gt;
&lt;p&gt;Luckily, ReSharper supports defining a custom type member layout to control in which order members are placed in a reformatted code file. Just add the following lines to ReSharper/Options/Languages/C#/Type Members Layout (uncheck "Use Default Patterns"), under the Patterns element:&lt;/p&gt;&lt;pre class="brush: xml"&gt;&amp;lt;!-- Order Machine.Specifications methods: Members, Establish, Cleanup, Because, It --&amp;gt;
&amp;lt;Pattern&amp;gt;
    &amp;lt;Match&amp;gt;
        &amp;lt;And Weight="100"&amp;gt;
            &amp;lt;Kind Is="class"/&amp;gt;
            &amp;lt;HasAttribute CLRName="Machine.Specifications.ConcernAttribute"
                          Inherit="true"/&amp;gt;
        &amp;lt;/And&amp;gt;
    &amp;lt;/Match&amp;gt;
    &amp;lt;Entry&amp;gt;
        &amp;lt;Match&amp;gt;
            &amp;lt;And&amp;gt;
                &amp;lt;Kind Is="field"/&amp;gt;
                &amp;lt;Or&amp;gt;
                    &amp;lt;Access Is="protected"/&amp;gt;
                    &amp;lt;Static/&amp;gt;
                &amp;lt;/Or&amp;gt;
            &amp;lt;/And&amp;gt;
        &amp;lt;/Match&amp;gt;
    &amp;lt;/Entry&amp;gt;
    &amp;lt;Entry&amp;gt;
        &amp;lt;Match&amp;gt;
            &amp;lt;And&amp;gt;
                &amp;lt;Kind Is="field"/&amp;gt;
                &amp;lt;Name Is="context_once"
                      IgnoreCase="true"/&amp;gt;
            &amp;lt;/And&amp;gt;
        &amp;lt;/Match&amp;gt;
    &amp;lt;/Entry&amp;gt;
    &amp;lt;Entry&amp;gt;
        &amp;lt;Match&amp;gt;
            &amp;lt;And&amp;gt;
                &amp;lt;Kind Is="field"/&amp;gt;
                &amp;lt;Name Is="context"
                      IgnoreCase="true"/&amp;gt;
            &amp;lt;/And&amp;gt;
        &amp;lt;/Match&amp;gt;
    &amp;lt;/Entry&amp;gt;
    &amp;lt;Entry&amp;gt;
        &amp;lt;Match&amp;gt;
            &amp;lt;And&amp;gt;
                &amp;lt;Kind Is="field"/&amp;gt;
                &amp;lt;Name Is="after_each"
                      IgnoreCase="true"/&amp;gt;
            &amp;lt;/And&amp;gt;
        &amp;lt;/Match&amp;gt;
    &amp;lt;/Entry&amp;gt;
    &amp;lt;Entry&amp;gt;
        &amp;lt;Match&amp;gt;
            &amp;lt;And&amp;gt;
                &amp;lt;Kind Is="field"/&amp;gt;
                &amp;lt;Name Is="after_all"
                      IgnoreCase="true"/&amp;gt;
            &amp;lt;/And&amp;gt;
        &amp;lt;/Match&amp;gt;
    &amp;lt;/Entry&amp;gt;
    &amp;lt;Entry&amp;gt;
        &amp;lt;Match&amp;gt;
            &amp;lt;And&amp;gt;
                &amp;lt;Kind Is="field"/&amp;gt;
                &amp;lt;Name Is="of"
                      IgnoreCase="true"/&amp;gt;
            &amp;lt;/And&amp;gt;
        &amp;lt;/Match&amp;gt;
    &amp;lt;/Entry&amp;gt;
    &amp;lt;!--All other members--&amp;gt;
    &amp;lt;Entry/&amp;gt;
&amp;lt;/Pattern&amp;gt;&lt;/pre&gt;&lt;img width="0" height="0" src="http://therightstuff.de/aggbug.ashx?id=01fda2ec-57af-4cb4-a4b6-6131323e37ac"/&gt;&lt;/div&gt;</description>
      <comments>http://therightstuff.de/CommentView,guid,01fda2ec-57af-4cb4-a4b6-6131323e37ac.aspx</comments>
      <category>BDD</category>
      <category>ReSharper</category>
    <feedburner:origLink>http://therightstuff.de/2008/09/16/ReSharper-Type-Members-Layout-For-MSpec-02.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://therightstuff.de/Trackback.aspx?guid=6a7c8720-007c-4442-93dc-fc09ef0cfe8f</trackback:ping>
      <pingback:server>http://therightstuff.de/pingback.aspx</pingback:server>
      <pingback:target>http://therightstuff.de/PermaLink,guid,6a7c8720-007c-4442-93dc-fc09ef0cfe8f.aspx</pingback:target>
      <dc:creator>Alexander Groß</dc:creator>
      <georss:point>51.32533 12.34274</georss:point>
      <wfw:comment>http://therightstuff.de/CommentView,guid,6a7c8720-007c-4442-93dc-fc09ef0cfe8f.aspx</wfw:comment>
      <wfw:commentRss>http://therightstuff.de/SyndicationService.asmx/GetEntryCommentsRss?guid=6a7c8720-007c-4442-93dc-fc09ef0cfe8f</wfw:commentRss>
      <title>Rezept: Rucola mit warmen Birnen und Blauschimmelkäse</title>
      <guid isPermaLink="false">http://therightstuff.de/PermaLink,guid,6a7c8720-007c-4442-93dc-fc09ef0cfe8f.aspx</guid>
      <link>http://feedproxy.google.com/~r/alexandergross/~3/5s0r8EHGSXg/Rezept-Rucola-Mit-Warmen-Birnen-Und-Blauschimmelk%c3%a4se.aspx</link>
      <pubDate>Sun, 14 Sep 2008 13:07:20 GMT</pubDate>
      <description>&lt;div&gt;&lt;ul&gt; &lt;li&gt;pro Person 1 große mittelreife Birne  &lt;li&gt;Rucola  &lt;li&gt;Feldsalat  &lt;li&gt;Blauschimmelkäse  &lt;li&gt;Butter  &lt;li&gt;Koriandersamen  &lt;li&gt;Balsamico  &lt;li&gt;brauner Zucker&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Die Salate waschen, putzen und auf einem Teller gleichmäßig verteilen. Den Blauschimmelkäse in kleine Würfel schneiden und gleichmäßig auf dem Salatbett anrichten. Die Birnen schälen, entkernen und vierteln. 2-3 EL Butter in einer beschichteten Pfanne zerlassen und die Birnen hineingeben. Mit etwas Zucker bestreuen und von jeder Seite vorsichtig anbraten bis sie leicht braun werden. Vor dem Wenden auf die letzten Seite 2 TL grob zermörserten Koriander darüberstreuen. Im Anschluss mit einem kräftigen Schuss Balsamico ablöschen und einkochen bis das Essigaroma fast verflogen ist und sich eine dicke, dunkle und kräftig-süße Soße gebildet hat.&lt;/p&gt; &lt;p&gt;Die gebratenen Birnen auf dem Teller anrichten und die heiße Balsamico-Soße über den Birnen und den Käsestückchen verteilen.&lt;/p&gt;&lt;img width="0" height="0" src="http://therightstuff.de/aggbug.ashx?id=6a7c8720-007c-4442-93dc-fc09ef0cfe8f"/&gt;&lt;/div&gt;</description>
      <comments>http://therightstuff.de/CommentView,guid,6a7c8720-007c-4442-93dc-fc09ef0cfe8f.aspx</comments>
      <category>Recipes (German)</category>
    <feedburner:origLink>http://therightstuff.de/2008/09/14/Rezept-Rucola-Mit-Warmen-Birnen-Und-Blauschimmelk%c3%a4se.aspx</feedburner:origLink></item>
  </channel>
</rss>
