<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule">
<channel>
    <title>Flominator's Kruschtelecke</title>
    <link>http://flominator.ramselehof.de/</link>
    <description>für badische und unsym-badische</description>
    <dc:language>de</dc:language>
    <generator>Serendipity 1.4.1 - http://www.s9y.org/</generator>
    <pubDate>Mon, 06 Sep 2010 07:18:43 GMT</pubDate>

    <image>
        <url>http://flominator.ramselehof.de/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: Flominator's Kruschtelecke - für badische und unsym-badische</title>
        <link>http://flominator.ramselehof.de/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>See#Party 2010: TypeMock Isolator, Mock-Framework für Brownfield und mehr</title>
    <link>http://flominator.ramselehof.de/index.php?/archives/159-SeeParty-2010-TypeMock-Isolator,-Mock-Framework-fuer-Brownfield-und-mehr.html</link>
            <category>Job</category>
    
    <comments>http://flominator.ramselehof.de/index.php?/archives/159-SeeParty-2010-TypeMock-Isolator,-Mock-Framework-fuer-Brownfield-und-mehr.html#comments</comments>
    <wfw:comment>http://flominator.ramselehof.de/wfwcomment.php?cid=159</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://flominator.ramselehof.de/rss.php?version=2.0&amp;type=comments&amp;cid=159</wfw:commentRss>
    

    <author>nospam@example.com (Flominator)</author>
    <content:encoded>
    &lt;p&gt;Der zweite Redner, dem ich auf dem &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.seesharpparty.de&#039;);&quot;  href=&quot;http://www.seesharpparty.de&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;See#Party&lt;/a&gt; in Kreuzlingen &lt;span class=&quot;serendipity_wikilink_internal&quot;&gt;&lt;a class=&quot;serendipity_wikilink_visitor&quot; href=&quot;http://flominator.ramselehof.de/index.php?/archives/157-SeeParty-2010-ALT.NET-Was-noch-zu-beweisen-waere.html&quot;&gt;nach den Vorträgen von Golo Roden&lt;/a&gt;&lt;/span&gt; lauschen durfte, war &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.lieser-online.de/&#039;);&quot;  href=&quot;http://www.lieser-online.de/&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Stefan Lieser&lt;/a&gt;. Von Stefan hatte ich in Ulm letztes Jahr bereits die Session &lt;span class=&quot;serendipity_wikilink_internal&quot;&gt;&lt;a class=&quot;serendipity_wikilink_visitor&quot; href=&quot;http://flominator.ramselehof.de/index.php?/archives/140-.NET-Open-Space-Sued-2009-in-Ulm-Clean-Code-Developer.html&quot;&gt;Clean Code Developer&lt;/a&gt;&lt;/span&gt; gehört. Dieses Mal befasste er sich mit CCD im Umfeld mit Software-Projekten, die bereits über eine breite Codebasis verfügen. Den Vortrag hatte er bereits auf der Konferenz dotnet Collogne 2010 gehalten, wo er auch &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.dotnet-cologne.de/Default.aspx?Page=Vortraege&amp;amp;amp;NS=&amp;amp;amp;AspxAutoDetectCookieSupport=1&#039;);&quot;  href=&quot;http://www.dotnet-cologne.de/Default.aspx?Page=Vortraege&amp;amp;NS=&amp;amp;AspxAutoDetectCookieSupport=1&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;zum Download&lt;/a&gt; bereit steht. Zudem schreibt er mit seinem Kollegen Ralf Westphal an einer &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.heise.de/developer/artikel/Clean-Code-Developer-in-Brownfield-Projekten-855114.html&#039;);&quot;  href=&quot;http://www.heise.de/developer/artikel/Clean-Code-Developer-in-Brownfield-Projekten-855114.html&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Artikelserie bei Heise&lt;/a&gt;, die sich ebenfalls mit dem Thema befasst.&lt;/p&gt;

&lt;p&gt;Laut Stefan sei das Ziel eines jeden Softwareprojektes, dasselbe Programmfeature jederzeit zum gleichen Preis einbauen zu können. Dies setzt Evolvierbarkeit voraus, einer der &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/clean-code-developer.de/wiki/CcdWertesystem&#039;);&quot;  href=&quot;http://clean-code-developer.de/wiki/CcdWertesystem&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Werte&lt;/a&gt; für Clean Code Developer.&lt;/p&gt;

&lt;p&gt;Der Erreichung dieses hehren Ziels stehen laut Stefan Ängste vor folgenden Dingen im Weg:&lt;br /&gt;

&lt;ul&gt;
    &lt;li&gt;Regressionsfehler: Was passiert alles, wenn ich diese Änderung vornehme?&lt;/li&gt;
    &lt;li&gt;manuelle Arbeiten: Welche Knöpfe muss ich drücken, um ein Release zu erzeugen?&lt;/li&gt;
    &lt;li&gt;Personalmangel: Wenn wir weiterhin auf dieser alten Technologie aufsetzen, kriegen wir irgendwann keine Entwickler mehr dafür!&lt;/li&gt;
    &lt;li&gt;Verlust von Quellcode: Liegt auf irgendeinem Rechner vielleicht noch eine wichtige Datei, die wir zum Bauen der Software benötigen?&lt;/li&gt;
&lt;/ul&gt;

&lt;/p&gt;

&lt;p&gt;Zur Bekämpfung dieser Ängste empfiehlt Stefan ein 6-Punkte-Programm:&lt;/p&gt;

&lt;p&gt;&lt;b&gt;1. Versionskontrolle einführen&lt;/b&gt;&lt;/p&gt;


&lt;ul&gt;
    &lt;li&gt;Source Safe steht aus gutem Grund nicht in den Folien - das ist kein Versionskontrollsystem&lt;/li&gt;
    &lt;li&gt;Subversion ist auch schon nicht mehr Stand der Technik, besser verteilte Lösung wie git oder mercurial nutzen&lt;/li&gt;
    &lt;li&gt;Anmerkung von mir: mit &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/svk.bestpractical.com/view/HomePage&#039;);&quot;  href=&quot;http://svk.bestpractical.com/view/HomePage&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;SVK&lt;/a&gt; kann man eventuell Subversion als verteiltes Versionskontrollsystem nutzen&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;2. Kontinuierliche Integration&lt;/b&gt;&lt;br /&gt;

&lt;ul&gt;
    &lt;li&gt;Wer den Build bricht, muss eine Woche das T-Shirt mit der Aufschrift &amp;quot;I broke the build&amp;quot; tragen. Das T-Shirt wird nur einmal im Jahr gewaschen &lt;img src=&quot;http://flominator.ramselehof.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;/p&gt;

&lt;p&gt;&lt;b&gt; 3. automatisierte Tests&lt;/b&gt;&lt;br /&gt;

&lt;ul&gt;
    &lt;li&gt;&amp;quot;Wilde&amp;quot; Abhängigkeiten&lt;/li&gt;
    &lt;li&gt;fehlende &lt;span class=&quot;serendipity_wikilink_internal&quot;&gt;&lt;a class=&quot;serendipity_wikilink_visitor&quot; href=&quot;http://flominator.ramselehof.de/index.php?/archives/127-.NET-Open-Space-Sued-2009-in-Ulm-Inversion-of-ControlDependency-Injection.html&quot;&gt;Dependency Injection&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;Verletzung des &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.objectmentor.com/resources/articles/srp.pdf&#039;);&quot;  href=&quot;http://www.objectmentor.com/resources/articles/srp.pdf&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Single Responsibility Principle&lt;/a&gt; (erkennbar an Klassennamen mit den Worten &amp;quot;Class&amp;quot;, &amp;quot;Manager&amp;quot;, &amp;quot;Service&amp;quot;, &amp;quot;Core&amp;quot; und beliebigen Konjunktionen)&lt;/li&gt;
    &lt;li&gt;fehlende Trennung von Portal/Logik/Adapter&lt;/li&gt;
    &lt;li&gt;externe Abhängigkeiten zu Datenbanken, Webservices etc.&lt;/li&gt;
    &lt;li&gt;&lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/site.typemock.com/typemock-isolator-product/&#039;);&quot;  href=&quot;http://site.typemock.com/typemock-isolator-product/&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;TypeMock Isolator&lt;/a&gt; nutzt die &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.blong.com/Conferences/DCon2003/Internals/Profiling.htm&#039;);&quot;  href=&quot;http://www.blong.com/Conferences/DCon2003/Internals/Profiling.htm&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Profiling API&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;damit: Konstruktoren und statische Methodenaufrufe abfangen und durch Attrappen ersetzen&lt;/li&gt;
    &lt;li&gt;damit: sealed und internal-Methoden aus dem .NET-Framework ersetzen (DateTime.Now und .Today faken, Konstruktor von EventArgs aufrufen)&lt;/li&gt;
    &lt;li&gt;&amp;quot;private&amp;quot; Methoden zu testen: &amp;quot;internal&amp;quot; machen und über InternalsVisibleTo(&amp;quot;TestKlassenAssembly&amp;quot;) Zugriff erlauben&lt;/li&gt;
    &lt;li&gt;Variablen die intern instanziert werden, kann man über einen zweiten Konstruktor ebenfalls durch Attrappe ersetzen&lt;/li&gt;
&lt;/ul&gt;

&lt;/p&gt;

&lt;p&gt;&lt;b&gt;4.  Partitionen identifizieren&lt;/b&gt;&lt;br /&gt;

&lt;ul&gt;
    &lt;li&gt;Aufteilen der Anwendung in mehrere Benutzeroberflächen&lt;/li&gt;
    &lt;li&gt;einen Teil isolieren und diesen sanieren &lt;/li&gt;
    &lt;li&gt;Teil anhand strategischer Gesichtspunkte bestimmen &lt;/li&gt;
    &lt;li&gt;Strategie kontinuierlich anpassen: Kerngeschäft, häufige Supportfälle&lt;/li&gt;
    &lt;li&gt;ggf. sogar Datenbank aufteilen&lt;/li&gt;
&lt;/ul&gt;

&lt;/p&gt;

&lt;p&gt;&lt;b&gt;5.  Architektur planen&lt;/b&gt;&lt;br /&gt;

&lt;ul&gt;
    &lt;li&gt;wie man es heute machen würde, wenn man es &amp;quot;richtig&amp;quot; machen würde&lt;/li&gt;
    &lt;li&gt;Ziel finden, auf das man hinarbeiten kann&lt;/li&gt;
&lt;/ul&gt;

&lt;/p&gt;

&lt;p&gt;&lt;b&gt;6. &amp;quot;Refactoring to architecture&amp;quot;&lt;/b&gt;&lt;br /&gt;

&lt;ul&gt;
    &lt;li&gt;auf die Planarchitektur hinarbeiten&lt;/li&gt;
    &lt;li&gt;Unit-Tests ergänzen&lt;/li&gt;
    &lt;li&gt;Veränderungen iterativ angehen&lt;/li&gt;
    &lt;li&gt;&amp;quot;großer Wurf&amp;quot; nicht möglich: Entwickler können häufig auf Anhieb nicht einmal genau beschreiben, was der Code tut&lt;/li&gt;
    &lt;li&gt;für eine 100% Ablösung mit einer neu geschriebenen Version müsste man auch sämtliche Schwachstellen und Fehler in den Schnittstellen nachbauen&lt;/li&gt;
&lt;/ul&gt;

&lt;/p&gt;

&lt;p&gt;Im Laufe seines Vortrags erklärte Stefan noch einen Weg, sich in langen Methoden beim Refactoring zurechtzufinden: Man färbt im Visual Studio die Kommentare weiß ein, damit sie sich nicht mehr vom Hintergrund abheben. Nun erkennt man häufig Codeblöcke, aus denen sich Methoden extrahieren lassen. Die Kommentare darüber sind meist schon als Methodennamen ausreichend.&lt;/p&gt;

&lt;p&gt;Fazit: TypeMock Isolator scheint genau das richtige Werkzeug für diesen Zweck zu sein. Nun muss ich nur noch meinen Vorgesetzten davon überzeugen, denn TypeMock ist &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.typemock.com/BuyBundle.php&#039;);&quot;  href=&quot;http://www.typemock.com/BuyBundle.php&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;doch ein wenig kostspielig&lt;/a&gt;. Es bleibt spannend &lt;img src=&quot;http://flominator.ramselehof.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Update 2010-09-06: Vorgesetzter schlug vor, sich einmal &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/research.microsoft.com/en-us/projects/moles/&#039;);&quot;  href=&quot;http://research.microsoft.com/en-us/projects/moles/&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Moles von Microsoft&lt;/a&gt; anzuschauen. Hat jemand Erfahrungen damit?&lt;/p&gt;

 
    </content:encoded>

    <pubDate>Thu, 02 Sep 2010 08:06:18 +0200</pubDate>
    <guid isPermaLink="false">http://flominator.ramselehof.de/index.php?/archives/159-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.5/deed.de</creativeCommons:license><category>.net</category>
<category>bodensee</category>
<category>kreuzlingen</category>
<category>mocking</category>
<category>ssp2010</category>
<category>testen</category>

</item>
<item>
    <title>See#Party 2010: ALT.NET / Was noch zu beweisen wäre</title>
    <link>http://flominator.ramselehof.de/index.php?/archives/157-SeeParty-2010-ALT.NET-Was-noch-zu-beweisen-waere.html</link>
            <category>Job</category>
    
    <comments>http://flominator.ramselehof.de/index.php?/archives/157-SeeParty-2010-ALT.NET-Was-noch-zu-beweisen-waere.html#comments</comments>
    <wfw:comment>http://flominator.ramselehof.de/wfwcomment.php?cid=157</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://flominator.ramselehof.de/rss.php?version=2.0&amp;type=comments&amp;cid=157</wfw:commentRss>
    

    <author>nospam@example.com (Flominator)</author>
    <content:encoded>
    &lt;p&gt;Am Samstag besuchte ich die erste &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.seesharpparty.de/&#039;);&quot;  href=&quot;http://www.seesharpparty.de/&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;See#Party&lt;/a&gt; im schweizerischen Kreuzlingen, direkt hinter Kostanz am Bodensee. Die Konferenz drehte sich um das Thema C#, das den Großteil meiner beruflichen Tätigkeit beherrscht. In den folgenden Beiträgen werde ich nun die dort besuchten Vorträge kurz zusammenfassen:&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Keynote von Golo Roden: ALT.NET&lt;/b&gt;&lt;br /&gt;
&lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.goloroden.de/&#039;);&quot;  href=&quot;http://www.goloroden.de/&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Golo Rodens&lt;/a&gt; Vortrag drehte sich um einen Punkt aus dem &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.joelonsoftware.com/articles/fog0000000043.html&#039;);&quot;  href=&quot;http://www.joelonsoftware.com/articles/fog0000000043.html&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Joel-Test zur Bestimmung der Qualität eines Software-Teams&lt;/a&gt;, der da lautet: &amp;quot;Do you use the best tools money can buy?&amp;quot; Seine Schlussfolgerung war, dass sich ein guter .net-Entwickler nicht nur auf Microsoft konzentrieren darf, sondern nach Alternativen Ausschau halten soll. In diesem Zusammenhang stellte er die ALT.NET-Bewegung vor, deren zentrale Anlaufstelle die &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.altnetpedia.com/&#039;);&quot;  href=&quot;http://www.altnetpedia.com/&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;altnetpedia&lt;/a&gt; bietet.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Was noch zu beweisen wäre&lt;/b&gt;&lt;br /&gt;
Die erste Session, die ich besuchte, wurde ebenfalls von Golo gehalten und drehte sich um mathematische Probleme und ihre Lösbarkeit. Neben theoretischen Grundlagen der &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/de.wikipedia.org/wiki/Komplexit%C3%A4tstheorie&#039;);&quot;  href=&quot;http://de.wikipedia.org/wiki/Komplexit%C3%A4tstheorie&quot;&gt;Komplexitätstheorie&lt;/a&gt;, die mich stellenweise ein wenig überforderten, präsentierte er einige spannende Probleme, darunter: &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/de.wikipedia.org/wiki/Gro%C3%9Fer_fermatscher_Satz&#039;);&quot;  href=&quot;http://de.wikipedia.org/wiki/Gro%C3%9Fer_fermatscher_Satz&quot;&gt;Fermats letzter Satz&lt;/a&gt;, das &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/de.wikipedia.org/wiki/Halteproblem&#039;);&quot;  href=&quot;http://de.wikipedia.org/wiki/Halteproblem&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Halteproblem&lt;/a&gt;, das &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/de.wikipedia.org/wiki/Rucksackproblem&#039;);&quot;  href=&quot;http://de.wikipedia.org/wiki/Rucksackproblem&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Rucksackproblem&lt;/a&gt; und - mein Highlight - &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/de.wikipedia.org/wiki/Globales_Matching#Stable_Marriage&#039;);&quot;  href=&quot;http://de.wikipedia.org/wiki/Globales_Matching#Stable_Marriage&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Stable Marriage&lt;/a&gt; mit drei Geschlechtern. Sein Fazit: Wenn man keinen effizienteren Algorithmus zu einem Problem finden kann, gibt es vielleicht gar keinen und man ist gar nicht unfähig &lt;img src=&quot;http://flominator.ramselehof.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; Bereits vor der Veranstaltung hatte Golo bereits über ein Buch &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.des-eisbaeren-blog.de/post/2009/08/18/Review-von-Computers-and-Intractability.aspx&#039;);&quot;  href=&quot;http://www.des-eisbaeren-blog.de/post/2009/08/18/Review-von-Computers-and-Intractability.aspx&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;gebloggt&lt;/a&gt;, in dem ausführlicher auf diese Thematik eingegangen wird.&lt;/p&gt;

&lt;p&gt;Leider konnte ich Golos Folien bisher nirgends online finden, werde sie aber ggf. nachliefern.&lt;/p&gt;

 
    </content:encoded>

    <pubDate>Mon, 30 Aug 2010 14:15:56 +0200</pubDate>
    <guid isPermaLink="false">http://flominator.ramselehof.de/index.php?/archives/157-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.5/deed.de</creativeCommons:license><category>.net</category>
<category>bodensee</category>
<category>kreuzlingen</category>
<category>ssp2010</category>
<category>wiki</category>

</item>
<item>
    <title>Doch keine guten Nachrichten</title>
    <link>http://flominator.ramselehof.de/index.php?/archives/154-Doch-keine-guten-Nachrichten.html</link>
            <category>Internet</category>
    
    <comments>http://flominator.ramselehof.de/index.php?/archives/154-Doch-keine-guten-Nachrichten.html#comments</comments>
    <wfw:comment>http://flominator.ramselehof.de/wfwcomment.php?cid=154</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://flominator.ramselehof.de/rss.php?version=2.0&amp;type=comments&amp;cid=154</wfw:commentRss>
    

    <author>nospam@example.com (Flominator)</author>
    <content:encoded>
    &lt;p&gt;Mein Ansatz, &lt;span class=&quot;serendipity_wikilink_internal&quot;&gt;&lt;a class=&quot;serendipity_wikilink_visitor&quot; href=&quot;http://flominator.ramselehof.de/index.php?/archives/101-Gute-Nachrichten.html&quot;&gt;Gute Nachrichten&lt;/a&gt;&lt;/span&gt; in einer &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.yigg.de/gruppen/gute-nachrichten&#039;);&quot;  href=&quot;http://www.yigg.de/gruppen/gute-nachrichten&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Gruppe&lt;/a&gt; bei &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.yigg.de/&#039;);&quot;  href=&quot;http://www.yigg.de/&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;YiGG&lt;/a&gt; oder einer &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.webnews.de/tag/positiv&#039;);&quot;  href=&quot;http://www.webnews.de/tag/positiv&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Gruppe&lt;/a&gt; bei &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.webnews.de/&#039;);&quot;  href=&quot;http://www.webnews.de/&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Webnews&lt;/a&gt; zu sammeln, brachte leider nicht den gewünschten Erfolg.&lt;/p&gt;

&lt;p&gt;Nach weiteren Fehlversuchen über ein &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/feeds.delicious.com/v2/rss/tag/gute_nachricht?count=15&#039;);&quot;  href=&quot;http://feeds.delicious.com/v2/rss/tag/gute_nachricht?count=15&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Delicious-Tag&lt;/a&gt; und den RSS-Aggregator &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/feedonfeeds.com/&#039;);&quot;  href=&quot;http://feedonfeeds.com/&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;feedonfeeds&lt;/a&gt;, bei denen ich immerhin glücklicherweise Kontakt zu &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/twitter.com/Sumomi&#039;);&quot;  href=&quot;http://twitter.com/Sumomi&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;@Sumomi&lt;/a&gt; bekommen habe, stelle ich daher das Projekt ein.&lt;/p&gt;

&lt;p&gt;Ein weiterer Grund war die Tatsache, dass es mittlerweile ausreichende Quellen für gute Nachrichten im Web gibt:&lt;br /&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/twitter.com/positives&#039;);&quot;  href=&quot;http://twitter.com/positives&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;@positives&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.wesmile.de/&#039;);&quot;  href=&quot;http://www.wesmile.de/&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;weSmile&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.thesunshine.de/&#039;);&quot;  href=&quot;http://www.thesunshine.de/&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;theSunshine&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;/p&gt;

&lt;p&gt;Das Ende dieses Projekts ist dennoch eine gute Nachricht für mich: Mehr Zeit für Wikipedia &lt;img src=&quot;http://flominator.ramselehof.de/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;

 
    </content:encoded>

    <pubDate>Sun, 31 Jan 2010 12:05:40 +0100</pubDate>
    <guid isPermaLink="false">http://flominator.ramselehof.de/index.php?/archives/154-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.5/deed.de</creativeCommons:license><category>web20</category>

</item>
<item>
    <title>Pink live in Freiburg</title>
    <link>http://flominator.ramselehof.de/index.php?/archives/149-Pink-live-in-Freiburg.html</link>
            <category>Reallife/Freizeit</category>
    
    <comments>http://flominator.ramselehof.de/index.php?/archives/149-Pink-live-in-Freiburg.html#comments</comments>
    <wfw:comment>http://flominator.ramselehof.de/wfwcomment.php?cid=149</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://flominator.ramselehof.de/rss.php?version=2.0&amp;type=comments&amp;cid=149</wfw:commentRss>
    

    <author>nospam@example.com (Flominator)</author>
    <content:encoded>
    &lt;p&gt;Gestern Abend war ich mit meiner Freundin zum zweiten Mal auf einem P!nk-Konzert in Freiburg, zu dem ich hier gerne ein paar Worte verlieren will:&lt;/p&gt;


&lt;ul&gt;
    &lt;li&gt;Vorband: Die Vorgruppe &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/de.wikipedia.org/wiki/Evermore&#039;);&quot;  href=&quot;http://de.wikipedia.org/wiki/Evermore&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Evermore&lt;/a&gt; hatte es mit dem Publikum nicht leicht. Trotzdem gelang es ihnen am Ende ein wenig Stimmung zu machen. Das lag nicht zuletzt an der kurzen &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.youtube.com/watch?v=HukI7t4BaGQ&#039;);&quot;  href=&quot;http://www.youtube.com/watch?v=HukI7t4BaGQ&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Black-Eyed-Peas-Einlage: &#039;&#039;I Gotta Feeling&#039;&#039;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
    &lt;li&gt;positiv: gute Show, bunte Kostüme, gut gelaunte Künstlerin die „ihren Kater von Vorgestern bezwungen hatte“, Platz mit guter Sicht, erschwingliche Posterpreise und die Bohemian Rhapsody.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
    &lt;li&gt;negativ: sehr abruptes Ende (nicht einmal die Drumsticks wurden geworfen), der Power-Song &lt;em&gt;Trouble&lt;/em&gt; als Klavierversion, ein mir nicht bekanntes Cover von Led Zeppelin und zu viel Sex in Show und Kostümen (oder dem, was davon übrig war).&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
    &lt;li&gt;enttäuschend: Das Publikum. Um mich herum sang bei vielen Songs des &lt;span class=&quot;serendipity_wikilink_internal&quot;&gt;&lt;a class=&quot;serendipity_wikilink_visitor&quot; href=&quot;http://flominator.ramselehof.de/index.php?/archives/90-Amazon-Tiefpreisgarantie-P!nk-Funhouse.html&quot;&gt;aktuellen Albums Funhouse&lt;/a&gt;&lt;/span&gt; kein Mensch mit. Von Klatschen und Hüpfen brauche ich da gar nicht zu reden. Bei den Balladen sah ich nur Digitalkameras und Fotohandys und lediglich ein weiteres Feuerzeug. Hat sich das Verhalten bei Konzerten in den letzten Jahren so verändert oder bin ich einfach verwöhnt von den Toten Hosen?&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
    &lt;li&gt;Fazit: Die depressive Grundstimmung des Albums brachte sie glücklicherweise nicht herüber, daher waren Show und Musikauswahl durchaus gelungen. Mit diesem lahmen Publikum und dem merkwürdigen (an anderer Stelle ja durchaus passenderen) Finale finde ich es allerdings gar nicht so „Schwer vorstellbar, dass jemand unzufrieden die Rothaus-Arena verließ“, wie das die Badische Zeitung &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.badische-zeitung.de/wie-war-s-bei-pink-in-freiburg&#039;);&quot;  href=&quot;http://www.badische-zeitung.de/wie-war-s-bei-pink-in-freiburg&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;heute schrieb&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Update vom 28. November 2009: Mittlerweile hat die Vorgruppe Evermore ein &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/twitpic.com/qx86u&#039;);&quot;  href=&quot;http://twitpic.com/qx86u&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Bild vom Publikum&lt;/a&gt; &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/twitter.com/Evermoreband&#039;);&quot;  href=&quot;http://twitter.com/Evermoreband&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;getwittert&lt;/a&gt;.&lt;/p&gt;

 
    </content:encoded>

    <pubDate>Tue, 24 Nov 2009 21:14:43 +0100</pubDate>
    <guid isPermaLink="false">http://flominator.ramselehof.de/index.php?/archives/149-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.5/deed.de</creativeCommons:license><category>auftritt</category>
<category>freiburg</category>
<category>musik</category>
<category>muss_das_sein</category>
<category>pink</category>

</item>
<item>
    <title>Outlook 2000 und 2003: Nachricht per Makro als gelesen markieren</title>
    <link>http://flominator.ramselehof.de/index.php?/archives/144-Outlook-2000-und-2003-Nachricht-per-Makro-als-gelesen-markieren.html</link>
            <category>Software</category>
    
    <comments>http://flominator.ramselehof.de/index.php?/archives/144-Outlook-2000-und-2003-Nachricht-per-Makro-als-gelesen-markieren.html#comments</comments>
    <wfw:comment>http://flominator.ramselehof.de/wfwcomment.php?cid=144</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://flominator.ramselehof.de/rss.php?version=2.0&amp;type=comments&amp;cid=144</wfw:commentRss>
    

    <author>nospam@example.com (Flominator)</author>
    <content:encoded>
    &lt;p&gt;Als ich in meinem neuen Job anfing, wollte ich mir natürlich sofort meine &lt;span class=&quot;serendipity_wikilink_internal&quot;&gt;&lt;a class=&quot;serendipity_wikilink_visitor&quot; href=&quot;http://flominator.ramselehof.de/index.php?/archives/75-Getting-Things-Done.html&quot;&gt;GTD&lt;/a&gt;&lt;/span&gt;-Werkzeuge einrichten. Dazu gehört auch, dass Mails, die von mir im CC an mich geschickt werden, in den Ordner @WARTEN verschoben werden. Per Filter war das kein Problem. Schwieriger wurde es da schon, diese Mails in Outlook 2000 als gelesen zu markieren. Google verriet mir, dass das in Outlook 2000 standardmäßig nicht über eine Regel möglich ist. Daher war ich gezwungen, ein Makro hierzu zu erstellen.&lt;/p&gt;

&lt;p&gt;Dies geschah über die Menüeinträge Extras =&amp;gt; Makro =&amp;gt; Visual-Basic-Editor. Dort wählte ich links im Dropdown-Menü &lt;em&gt;Application&lt;/em&gt; aus und erzeugte rechts eine neue Methode beim Ereignis &lt;em&gt;NewMail&lt;/em&gt;. Diese ersetzte ich mit folgendem Code:&lt;/p&gt;

&lt;p&gt;&lt;div class=&quot;vb&quot; style=&quot;text-align: left&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: #b1b100;&quot;&gt;Private&lt;/span&gt; &lt;span style=&quot;color: #b1b100;&quot;&gt;Sub&lt;/span&gt; Application_NewMail&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;#160;&lt;span style=&quot;color: #b1b100;&quot;&gt;Dim&lt;/span&gt; oOutlook &lt;span style=&quot;color: #b1b100;&quot;&gt;As&lt;/span&gt; Object&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100;&quot;&gt;Dim&lt;/span&gt; oNSpace &lt;span style=&quot;color: #b1b100;&quot;&gt;As&lt;/span&gt; Object&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100;&quot;&gt;Dim&lt;/span&gt; oFolderA &lt;span style=&quot;color: #b1b100;&quot;&gt;As&lt;/span&gt; MAPIFolder&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100;&quot;&gt;Dim&lt;/span&gt; oItem &lt;span style=&quot;color: #b1b100;&quot;&gt;As&lt;/span&gt; MailItem&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100;&quot;&gt;Dim&lt;/span&gt; i &lt;span style=&quot;color: #b1b100;&quot;&gt;As&lt;/span&gt; &lt;span style=&quot;color: #b1b100;&quot;&gt;Integer&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100;&quot;&gt;Dim&lt;/span&gt; j &lt;span style=&quot;color: #b1b100;&quot;&gt;As&lt;/span&gt; Double&lt;br /&gt;&amp;#160; &amp;#160; &lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #808080;&quot;&gt;&#039;1 Sekunde warten (bis Mail durch Regel im Ordner landet&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; j = &lt;span style=&quot;color: #b1b100;&quot;&gt;Timer&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100;&quot;&gt;Do&lt;/span&gt; &lt;span style=&quot;color: #b1b100;&quot;&gt;While&lt;/span&gt; &lt;span style=&quot;color: #b1b100;&quot;&gt;Timer&lt;/span&gt; &amp;lt; j + &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&amp;#160; &lt;span style=&quot;color: #808080;&quot;&gt;&#039;Sekunden&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100;&quot;&gt;DoEvents&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100;&quot;&gt;Loop&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #808080;&quot;&gt;&#039;Weg zum Ordner finden&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100;&quot;&gt;Set&lt;/span&gt; oOutlook = &lt;span style=&quot;color: #b1b100;&quot;&gt;CreateObject&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;Outlook.application&quot;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100;&quot;&gt;Set&lt;/span&gt; oNSpace = oOutlook.&lt;span style=&quot;&quot;&gt;GetNamespace&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;MAPI&quot;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100;&quot;&gt;Set&lt;/span&gt; oFolderA = oNSpace.&lt;span style=&quot;&quot;&gt;Folders&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;Postfach - oberster Ordner im Outlook&quot;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;&quot;&gt;Folders&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;Posteingang&quot;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;&quot;&gt;Folders&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;@WARTEN&quot;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #808080;&quot;&gt;&#039;Alle Elemente im Ordner als gelesen markieren, falls welche vorhanden sind&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100;&quot;&gt;If&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;oFolderA.&lt;span style=&quot;&quot;&gt;UnReadItemCount&lt;/span&gt; &amp;gt; &lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #b1b100;&quot;&gt;Then&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100;&quot;&gt;For&lt;/span&gt; i = &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt; &lt;span style=&quot;color: #b1b100;&quot;&gt;To&lt;/span&gt; oFolderA.&lt;span style=&quot;&quot;&gt;Items&lt;/span&gt;.&lt;span style=&quot;color: #b1b100;&quot;&gt;Count&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; oFolderA.&lt;span style=&quot;&quot;&gt;Items&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;i&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;&quot;&gt;UnRead&lt;/span&gt; = &lt;span style=&quot;color: #b1b100;&quot;&gt;False&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100;&quot;&gt;Next&lt;/span&gt; i&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100;&quot;&gt;End&lt;/span&gt; &lt;span style=&quot;color: #b1b100;&quot;&gt;If&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #b1b100;&quot;&gt;End&lt;/span&gt; &lt;span style=&quot;color: #b1b100;&quot;&gt;Sub&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;#160;&lt;/div&gt;&lt;/p&gt;

&lt;p&gt;Damit wurde die einkommende Mail nach einer Sekunde als gelesen markiert. Ehrlich gesagt, werden alle Mails im Ordner als gelesen markiert, aber das sind Details ...&lt;/p&gt;

&lt;p&gt;Was mich dann allerdings noch störte, war die Benachrichtigung im System-Tray (rechts in der Ecke), dass ich eine neue Nachricht habe. Um sie loszuwerden, überlegte ich mir, was ich normalerweise per Maus täte, um sie auszublenden. Ich würde einfach die besagte Mail kurz öffnen und wieder schließen, um ein Lesen vorzutäuschen. Das habe ich anschließend ebenfalls per VBA umgesetzt und unten an die Methode angehängt:&lt;br /&gt;
&lt;div class=&quot;vb&quot; style=&quot;text-align: left&quot;&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #808080;&quot;&gt;&#039;Falls mindestens ein gelesenes Objekt und kein ungelesenes im Posteingang liegt, wird das oberste angeschaut, um die Benachrichtigung bei neuen Nachrichten zu deaktivieren&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100;&quot;&gt;If&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;oNSpace.&lt;span style=&quot;&quot;&gt;Folders&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;Postfach - wieder der oberste Ordner&quot;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;&quot;&gt;Folders&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;Posteingang&quot;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;&quot;&gt;UnReadItemCount&lt;/span&gt; = &lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #b1b100;&quot;&gt;Then&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; oFolderA.&lt;span style=&quot;&quot;&gt;Items&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;&quot;&gt;Display&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; oFolderA.&lt;span style=&quot;&quot;&gt;Items&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #b1b100;&quot;&gt;Close&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #b1b100;&quot;&gt;False&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100;&quot;&gt;End&lt;/span&gt; &lt;span style=&quot;color: #b1b100;&quot;&gt;If&lt;/span&gt; &lt;br /&gt;&amp;#160;&lt;/div&gt;&lt;/p&gt;

&lt;p&gt;Als ich dann noch die Sicherheitseinstellungen für Makros herabgesetzt hatte (Extras =&amp;gt; Makro =&amp;gt; Sicherheit =&amp;gt; Hoch), konnte ich damit beginnen, nachverfolgbare Mails zu verschicken.&lt;/p&gt;

 
    </content:encoded>

    <pubDate>Thu, 19 Nov 2009 08:57:19 +0100</pubDate>
    <guid isPermaLink="false">http://flominator.ramselehof.de/index.php?/archives/144-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.5/deed.de</creativeCommons:license><category>gtd</category>
<category>microsoft</category>
<category>outlook</category>
<category>vba</category>

</item>
<item>
    <title>Notepad++ als Standard-Editor in Windows einrichten</title>
    <link>http://flominator.ramselehof.de/index.php?/archives/142-Notepad++-als-Standard-Editor-in-Windows-einrichten.html</link>
            <category>Software</category>
    
    <comments>http://flominator.ramselehof.de/index.php?/archives/142-Notepad++-als-Standard-Editor-in-Windows-einrichten.html#comments</comments>
    <wfw:comment>http://flominator.ramselehof.de/wfwcomment.php?cid=142</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://flominator.ramselehof.de/rss.php?version=2.0&amp;type=comments&amp;cid=142</wfw:commentRss>
    

    <author>nospam@example.com (Flominator)</author>
    <content:encoded>
    &lt;p&gt;Wie ihr natürlich alle wisst, bin ich ein großer Fan des Open-Source-Editors &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/notepad-plus.sourceforge.net/&#039;);&quot;  href=&quot;http://notepad-plus.sourceforge.net/&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Notepad++&lt;/a&gt;. Dieses Programm erfüllt einfach alle Wünsche, egal ob man nur schnell etwas notieren möchte oder doch ein etwas längeres Skript bearbeiten will.&lt;/p&gt;

&lt;p&gt;Kurzum: Notepad, der Editor aus dem Standardlieferumfang von Windows hat ausgedient. Notepad++ sollte als Standardeditor eingerichtet werden. Doch wie? &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/notepad-plus.sourceforge.net/de/download.php?lang=de#Notepad_replacement&#039;);&quot;  href=&quot;http://notepad-plus.sourceforge.net/de/download.php?lang=de#Notepad_replacement&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Hier&lt;/a&gt; wird erklärt, welche Dateien man ersetzen und welche Änderungen man an der Registry vornehmen müsste. Für alle, denen das zu aufwändig ist, habe ich ein kleines Skript für Windows XP geschrieben (ratet mal in welchem Programm ...), das die Bearbeitungen übernimmt:&lt;/p&gt;

&lt;p&gt;&lt;div class=&quot;dos&quot; style=&quot;text-align: left&quot;&gt;&lt;br /&gt;@&lt;span style=&quot;color: #b1b100; font-weight: bold;&quot;&gt;echo&lt;/span&gt; off &lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #b1b100; font-weight: bold;&quot;&gt;ECHO&lt;/span&gt; Looking &lt;span style=&quot;color: #00b100; font-weight: bold;&quot;&gt;for&lt;/span&gt; Notepad++Launcher named notepad.exe&lt;br /&gt;&lt;span style=&quot;color: #b1b100; font-weight: bold;&quot;&gt;DIR&lt;/span&gt; notepad.exe &amp;gt; &lt;span style=&quot;color: #0000ff; font-weight: bold;&quot;&gt;NUL&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #00b100; font-weight: bold;&quot;&gt;IF&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;NOT&lt;/span&gt; %&lt;span style=&quot;color: #448888;&quot;&gt;ERRORLEVEL&lt;/span&gt;% == &lt;span style=&quot;&quot;&gt;0&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #b1b100; font-weight: bold;&quot;&gt;ECHO&lt;/span&gt; Please copy this file into your Notepad++ directory containing Notepad++Launcher&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100; font-weight: bold;&quot;&gt;PAUSE&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #00b100; font-weight: bold;&quot;&gt;EXIT&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #b1b100; font-weight: bold;&quot;&gt;ECHO&lt;/span&gt; OK. &lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #00b100; font-weight: bold;&quot;&gt;FOR&lt;/span&gt; /F &amp;quot;delims=#&amp;quot; %%a &lt;span style=&quot;color: #00b100; font-weight: bold;&quot;&gt;in&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&#039;&lt;span style=&quot;color: #b1b100; font-weight: bold;&quot;&gt;cd&lt;/span&gt;&#039;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #00b100; font-weight: bold;&quot;&gt;do&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #b1b100; font-weight: bold;&quot;&gt;set&lt;/span&gt; &lt;span style=&quot;color: #448844;&quot;&gt;nppath&lt;/span&gt;=&amp;quot;%%a&amp;quot; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #b1b100; font-weight: bold;&quot;&gt;ECHO&lt;/span&gt; Your current directory is %&lt;span style=&quot;color: #448888;&quot;&gt;nppath&lt;/span&gt;%&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #b1b100; font-weight: bold;&quot;&gt;ECHO&lt;/span&gt; Trying to prevent you from executing this file from network shares&lt;br /&gt;&lt;span style=&quot;color: #00b100; font-weight: bold;&quot;&gt;IF&lt;/span&gt; %&lt;span style=&quot;color: #448888;&quot;&gt;nppath&lt;/span&gt;%==&amp;quot;%&lt;span style=&quot;color: #448888;&quot;&gt;windir&lt;/span&gt;%&amp;quot; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #b1b100; font-weight: bold;&quot;&gt;echo&lt;/span&gt; Wrong directory: You are at %&lt;span style=&quot;color: #448888;&quot;&gt;windir&lt;/span&gt;% &lt;br /&gt;&lt;span style=&quot;color: #b1b100; font-weight: bold;&quot;&gt;ECHO&lt;/span&gt; Please copy this file into your Notepad++ directory containing Notepad++Launcher&lt;br /&gt;&lt;span style=&quot;color: #b1b100; font-weight: bold;&quot;&gt;PAUSE&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #00b100; font-weight: bold;&quot;&gt;exit&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #b1b100; font-weight: bold;&quot;&gt;ECHO&lt;/span&gt; OK&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #b1b100; font-weight: bold;&quot;&gt;ECHO&lt;/span&gt; Trying to find out whether %&lt;span style=&quot;color: #448888;&quot;&gt;nppath&lt;/span&gt;% does really &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;exist&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #b1b100; font-weight: bold;&quot;&gt;DIR&lt;/span&gt; %&lt;span style=&quot;color: #448888;&quot;&gt;nppath&lt;/span&gt;% &lt;br /&gt;&lt;span style=&quot;color: #00b100; font-weight: bold;&quot;&gt;IF&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;NOT&lt;/span&gt; %&lt;span style=&quot;color: #448888;&quot;&gt;ERRORLEVEL&lt;/span&gt;% == &lt;span style=&quot;&quot;&gt;0&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #b1b100; font-weight: bold;&quot;&gt;ECHO&lt;/span&gt; It seems that something went wrong, so I won&#039;t write into the registry. Please blame flominator AT gmx THEDOT net &lt;span style=&quot;color: #00b100; font-weight: bold;&quot;&gt;for&lt;/span&gt; this mess.&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100; font-weight: bold;&quot;&gt;ECHO&lt;/span&gt; The path to Notepad++ seems &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;not&lt;/span&gt; to be %&lt;span style=&quot;color: #448888;&quot;&gt;nppath&lt;/span&gt;%&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #b1b100; font-weight: bold;&quot;&gt;PAUSE&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #00b100; font-weight: bold;&quot;&gt;EXIT&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #b1b100; font-weight: bold;&quot;&gt;ECHO&lt;/span&gt; OK&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #b1b100; font-weight: bold;&quot;&gt;ECHO&lt;/span&gt; Writing the path into the registry&lt;br /&gt;reg add HKLM\Software\Notepad++ /v &amp;quot;&amp;quot; /d %&lt;span style=&quot;color: #448888;&quot;&gt;nppath&lt;/span&gt;% /f&lt;br /&gt;&lt;span style=&quot;color: #b1b100; font-weight: bold;&quot;&gt;ECHO&lt;/span&gt; .&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #b1b100; font-weight: bold;&quot;&gt;ECHO&lt;/span&gt; Now copying notepad.exe to %&lt;span style=&quot;color: #448888;&quot;&gt;windir&lt;/span&gt;% &lt;br /&gt;copy notepad.exe %&lt;span style=&quot;color: #448888;&quot;&gt;windir&lt;/span&gt;% &lt;br /&gt;&lt;span style=&quot;color: #b1b100; font-weight: bold;&quot;&gt;ECHO&lt;/span&gt; Now copying notepad.exe to %&lt;span style=&quot;color: #448888;&quot;&gt;windir&lt;/span&gt;%\system32&amp;#160; &lt;br /&gt;copy notepad.exe %&lt;span style=&quot;color: #448888;&quot;&gt;windir&lt;/span&gt;%\system32 &lt;br /&gt;&lt;span style=&quot;color: #b1b100; font-weight: bold;&quot;&gt;ECHO&lt;/span&gt; Now copying notepad.exe to %&lt;span style=&quot;color: #448888;&quot;&gt;windir&lt;/span&gt;%\dllcache &lt;br /&gt;copy notepad.exe %&lt;span style=&quot;color: #448888;&quot;&gt;windir&lt;/span&gt;%\system32\dllcache &lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #b1b100; font-weight: bold;&quot;&gt;pause&lt;/span&gt;&lt;br /&gt;&amp;#160;&lt;/div&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Gebrauchsanweisung&lt;/b&gt;&lt;br /&gt;
Einfach &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/notepad-plus.sourceforge.net/de/download.php?lang=de#Notepad_replacement&#039;);&quot;  href=&quot;http://notepad-plus.sourceforge.net/de/download.php?lang=de#Notepad_replacement&quot; onclick=&quot;window.open(this.href, &#039;&lt;u&gt;blank&#039;); return false;&quot;&gt;NPPLauncher&lt;/a&gt; herunterladen und zusammen mit obigem Batchskript als _replacenp.bat&lt;/u&gt; in den Installationsordner von Notepad++ packen.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Disclaimergedöhns&lt;/b&gt;&lt;br /&gt;
Natürlich übernehme ich keinerlei Haftung für eventuelles unvorhersehbares Fehlverhalten meines Skriptes. Falls es Probleme gibt, freue ich mich aber trotzdem über Feedback.&lt;/p&gt;

&lt;p&gt;Viel Spaß damit!&lt;/p&gt;

 
    </content:encoded>

    <pubDate>Sat, 25 Jul 2009 23:20:18 +0200</pubDate>
    <guid isPermaLink="false">http://flominator.ramselehof.de/index.php?/archives/142-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.5/deed.de</creativeCommons:license><category>batch</category>

</item>
<item>
    <title>.NET Open Space Süd 2009 in Ulm - Visual Studio Team System 2010</title>
    <link>http://flominator.ramselehof.de/index.php?/archives/141-.NET-Open-Space-Sued-2009-in-Ulm-Visual-Studio-Team-System-2010.html</link>
            <category>Software</category>
    
    <comments>http://flominator.ramselehof.de/index.php?/archives/141-.NET-Open-Space-Sued-2009-in-Ulm-Visual-Studio-Team-System-2010.html#comments</comments>
    <wfw:comment>http://flominator.ramselehof.de/wfwcomment.php?cid=141</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://flominator.ramselehof.de/rss.php?version=2.0&amp;type=comments&amp;cid=141</wfw:commentRss>
    

    <author>nospam@example.com (Flominator)</author>
    <content:encoded>
    &lt;p&gt;Nach der Session &lt;span class=&quot;serendipity_wikilink_internal&quot;&gt;&lt;a class=&quot;serendipity_wikilink_visitor&quot; href=&quot;http://flominator.ramselehof.de/index.php?/archives/140-.NET-Open-Space-Sued-2009-in-Ulm-Clean-Code-Developer.html&quot;&gt;Clean Code Developer&lt;/a&gt;&lt;/span&gt; und einem weiteren leckeren Mittagessen, folgte die letzte Session, die ich noch besuchen konnte: &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/blogs.msdn.com/cbinder/default.aspx&#039;);&quot;  href=&quot;http://blogs.msdn.com/cbinder/default.aspx&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Christian Binder&lt;/a&gt; informierte darin über Neuheiten zur kommenden Version der Entwicklungsumgebung aus dem Hause Microsoft. Da wir im Unternehmen &amp;quot;nur&amp;quot; Visual Studio und kein Team System einsetzen, war es für mich stellenweise ein wenig schwer, den Ausführungen zu folgen. Hier sind die Punkte, die ich (zumindest ansatzweise) verstanden habe und die mir notierenswert erschienen:&lt;/p&gt;


&lt;ul&gt;
    &lt;li&gt;UI-Automation-Testing (Coded UI-Test/ Test Edition) &lt;ul&gt;
        &lt;li&gt;Elemente aus UI greifen und automatisieren&lt;/li&gt;
        &lt;li&gt;unterstützt werden sollen Win32, WinForms, WPF und Document Object Model von Internet Explorer und Firefox&lt;/li&gt;
        &lt;li&gt;später auch Silverlight (Community Technology Preview nach RTM von  VSTS 2010)&lt;/li&gt;
        &lt;li&gt;nutzt  Accessabillty-Frameworks wie &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/en.wikipedia.org/wiki/Microsoft_UI_Automation&#039;);&quot;  href=&quot;http://en.wikipedia.org/wiki/Microsoft_UI_Automation&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;UIA&lt;/a&gt; von Anwendungen zur Barrierefreiheit (Screen Reader etc.)&lt;/li&gt;
        &lt;li&gt;Controls von Drittanbietern müssen gewisse Schnittstellen implementieren, damit auch sie erfasst werden&lt;/li&gt;
    &lt;/ul&gt;&lt;/li&gt;
    &lt;li&gt;Tools für manuelles Testen&lt;ul&gt;
        &lt;li&gt;Anlegen eines Work-Items &amp;quot;Testcase&amp;quot;, das an Requirement/UserStory hängt&lt;/li&gt;
        &lt;li&gt;spezielle UI für Tester, die keine Entwickler sind (Manual Test Runner/Test Edition oder Test Essentials) &lt;/li&gt;
        &lt;li&gt;Tester klickt durch und nimmt dies ggf. per Rekorder auf&lt;/li&gt;
        &lt;li&gt;Screenshots und Videoaufzeichnung des manuellen Tests möglich &lt;/li&gt;
        &lt;li&gt;Bugs können direkt aus dem Manual Test Runner erzeugt werden &lt;/li&gt;
        &lt;li&gt;Integration mit Team Test Lab &lt;/li&gt;
        &lt;li&gt;Umwandlung in einen kodierten Test (C#) möglich&lt;/li&gt;
    &lt;/ul&gt;&lt;/li&gt;
    &lt;li&gt;Team Test Lab&lt;ul&gt;
        &lt;li&gt;Environment (derzeit als &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/de.wikipedia.org/wiki/Hyper-V&#039;);&quot;  href=&quot;http://de.wikipedia.org/wiki/Hyper-V&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Hyper-V&lt;/a&gt; evtl. später auch als virtuelle Maschine per vmWare-Schnittstelle) aus Buildprozess heraus erzeugen und Build nach dort deployen&lt;/li&gt;
        &lt;li&gt;Verbindung mit Requirements&lt;/li&gt;
        &lt;li&gt;kann in Verbindung mit dem Manual Test Runner verwendet werden, um Tests gegen diese Test Environments auszuführen&lt;/li&gt;
        &lt;li&gt;Screenshot bei Verletzung eines Requirements&lt;/li&gt;
        &lt;li&gt;ggf. Erzeugung eines neuen Bugs mit der virtuellen Umgebung im Anhang (sehr schnelle Reproduktion möglich)&lt;/li&gt;
    &lt;/ul&gt;&lt;/li&gt;
    &lt;li&gt;Test Impact Collector&lt;ul&gt;
        &lt;li&gt;feststellen, welche Tests überhaupt von einer Änderung betroffen sind und durchlaufen werden sollten&lt;/li&gt;
        &lt;li&gt;Unit-Tests und manuelle Tests&lt;/li&gt;
    &lt;/ul&gt;&lt;/li&gt;
    &lt;li&gt;Oberfläche der neuen IDE ist komplett in WPF geschrieben&lt;ul&gt;
        &lt;li&gt;bei Microsoft intern von über 3000 Anwenden &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/blogs.msdn.com/bharry/archive/2009/07/13/july-09-devdiv-dogfood-statistics.aspx&#039;);&quot;  href=&quot;http://blogs.msdn.com/bharry/archive/2009/07/13/july-09-devdiv-dogfood-statistics.aspx&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;genutzt&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;&lt;/li&gt;
    &lt;li&gt;durch Extensibility API stark auf Erweiterbarkeit ausgelegt&lt;/li&gt;
    &lt;li&gt;UML/DSL-Designer in Architect Edition (Arc Edition)&lt;ul&gt;
        &lt;li&gt;Kommunikationslinien zwischen den einzelnen Architekturschichten können mit Code verglichen werden -&amp;gt; unzulässige Kommunikationen im Code finden (oder auch zwischen Namespaces)&lt;/li&gt;
        &lt;li&gt;keine veralteten Architektur-Flipcharts mehr&lt;/li&gt;
        &lt;li&gt;erlaubt Reverse Engineering: Methodenaufrufe -&amp;gt; Sequenzdiagramm&lt;/li&gt;
        &lt;li&gt;Analyse von Codeabhängigkeiten&lt;/li&gt;
    &lt;/ul&gt;&lt;/li&gt;
    &lt;li&gt;Profiler (Developer Edition) &lt;ul&gt;
        &lt;li&gt;besonders hilfreich bei Threading-Problemen &lt;/li&gt;
        &lt;li&gt;während der Entwicklung von Windows 7 genutzt, um Performace-Probleme zu lösen&lt;/li&gt;
        &lt;li&gt;Hotpath zeigt an, wo meiste Rechenzeit liegen gelassen wird&lt;/li&gt;
        &lt;li&gt;Testcase-Profiler kann Auswirkungen von Änderungen auf die Rechenzeit zeigen&lt;/li&gt;
    &lt;/ul&gt;&lt;/li&gt;
    &lt;li&gt;komfortableres Reporting, daher können Entscheider sich zukünftig selbst ihre Zahlen ziehen und entlasten damit die Entwickler&lt;/li&gt;
    &lt;li&gt;langsame Anwendungen können bald nicht mehr durch neue Rechner beschleunigt werden, wenn sie Single-Threaded arbeiten und nur wenige der Multiprozessoren dadurch belastet sind&lt;/li&gt;
    &lt;li&gt;Verfolgen von Veränderungen in (Changesets) in Branches&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Fazit: Es scheint ein sehr umfangreiches Entwicklungssystem zu werden, das den Entwickler und alle restlichen Beteiligten eines Softwareprojektes in großem Maße unterstützen wird. Da solche Qualität ihren Preis hat, bleibt jedoch fraglich, welche Unternehmen sich das leisten können, leisten wollen und leisten werden ...&lt;/p&gt;

&lt;p&gt;Update: Dank geht an Christian Binder für das Feedback. Bitte schaut euch seine &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/blogs.msdn.com/cbinder/archive/2009/08/10/vsts-2010-beta-quickhits-video-index.aspx&#039;);&quot;  href=&quot;http://blogs.msdn.com/cbinder/archive/2009/08/10/vsts-2010-beta-quickhits-video-index.aspx&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;kurzen Videos zur Beta 1&lt;/a&gt; an.&lt;/p&gt;

 
    </content:encoded>

    <pubDate>Tue, 21 Jul 2009 13:19:24 +0200</pubDate>
    <guid isPermaLink="false">http://flominator.ramselehof.de/index.php?/archives/141-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.5/deed.de</creativeCommons:license><category>.net</category>
<category>barcamp</category>
<category>microsoft</category>
<category>nos_sued</category>
<category>ulm</category>
<category>visualstudio</category>
<category>vsts2010</category>

</item>
<item>
    <title>.NET Open Space Süd 2009 in Ulm - Clean Code Developer</title>
    <link>http://flominator.ramselehof.de/index.php?/archives/140-.NET-Open-Space-Sued-2009-in-Ulm-Clean-Code-Developer.html</link>
            <category>Job</category>
    
    <comments>http://flominator.ramselehof.de/index.php?/archives/140-.NET-Open-Space-Sued-2009-in-Ulm-Clean-Code-Developer.html#comments</comments>
    <wfw:comment>http://flominator.ramselehof.de/wfwcomment.php?cid=140</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://flominator.ramselehof.de/rss.php?version=2.0&amp;type=comments&amp;cid=140</wfw:commentRss>
    

    <author>nospam@example.com (Flominator)</author>
    <content:encoded>
    &lt;p&gt;Die vorletzte Session auf dem Open Space, die ich nach &lt;span class=&quot;serendipity_wikilink_internal&quot;&gt;&lt;a class=&quot;serendipity_wikilink_visitor&quot; href=&quot;http://flominator.ramselehof.de/index.php?/archives/132-.NET-Open-Space-Sued-2009-in-Ulm-TestenGetting-Things-Done.html&quot;&gt;Testen/Getting Things Done&lt;/a&gt;&lt;/span&gt; besucht habe, drehte sich um das Programm &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.clean-code-developer.de/&#039;);&quot;  href=&quot;http://www.clean-code-developer.de/&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Clean Code Developer&lt;/a&gt; von &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.ralfw.de/&#039;);&quot;  href=&quot;http://www.ralfw.de/&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Ralf Westphal&lt;/a&gt; und &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/lieser-online.de/&#039;);&quot;  href=&quot;http://lieser-online.de/&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Stefan Lieser&lt;/a&gt;. Letzterer war höchstpersönlich anwesend, um uns in die Geschichte und die Details von CCD einzuweisen:&lt;/p&gt;


&lt;ul&gt;
    &lt;li&gt;guter Entwickler erzeugt Qualität -&amp;gt; hält seine Werte ein&lt;/li&gt;
    &lt;li&gt;Analogie dazu: (Guter) Arzt wäscht sich vor Operation die Hände und lässt sich das nie nie nie ausreden&lt;/li&gt;
    &lt;li&gt;Werte für Codequalität&lt;ul&gt;
        &lt;li&gt;Korrektheit (funktional, optisch, leistungsfähig, ..)&lt;/li&gt;
        &lt;li&gt;Evolvierbarkeit (Einbau desselben Features kostet zu jedem Zeitpunkt gleich viel)&lt;/li&gt;
        &lt;li&gt;Produktionseffizienz&lt;/li&gt;
        &lt;li&gt;Reflexion&lt;/li&gt;
    &lt;/ul&gt;&lt;/li&gt;
    &lt;li&gt;Ergebnis: 40 Bausteine zum Erreichen von mehr Codequalität&lt;/li&gt;
    &lt;li&gt;Aufteilung in fünf &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.clean-code-developer.de/wiki/CcdGrade&#039;);&quot;  href=&quot;http://www.clean-code-developer.de/wiki/CcdGrade&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Grade&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;zur Festigung wird jeder Grad mindestens 21 Tage gehalten&lt;/li&gt;
    &lt;li&gt;am Ende wird wieder von vorn begonnen, da man immer noch besser werden kann&lt;/li&gt;
    &lt;li&gt;Dokumentation des aktuellen Grades über ein &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.clean-code-developer.de/wiki/CcdArmband&#039;);&quot;  href=&quot;http://www.clean-code-developer.de/wiki/CcdArmband&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Armband&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;Armband bringt Leute ins Gespräch und hilft, die Idee zu verbreiten&lt;/li&gt;
    &lt;li&gt;nicht alle Entwickler interessieren sich für sauberen Code&lt;/li&gt;
    &lt;li&gt;häufig ist keine Zeit zur Einarbeitung vorhanden. &lt;/li&gt;
    &lt;li&gt;Ist das Erlernen neuer Fertigkeiten zu Erhaltung der Arbeitskraft in der täglichen Arbeitszeit erhalten oder muss man dafür in der Freizeit investieren? Es hängt vom Lohn ab&lt;/li&gt;
    &lt;li&gt;These: es dauert nicht länger, Clean Code zu schreiben, als Crappy Code (zumindest langfristig gesehen)&lt;/li&gt;
    &lt;li&gt;Python und Ruby on Rails liefern bereits beim Anlegen eines neuen Projektes ein Verzeichnis für Unit-Tests, warum nicht auch Visual Studio?&lt;/li&gt;
    &lt;li&gt;Grenze zwischen PHP (unsauberes Skripting, bä bä bä) und Java (ganz toll objektorientiert mit Unit-Tests und so) ist deutlich. Bei C# sind die ganzen VB-Pfuscher durch .NET auch im Boot.&lt;/li&gt;
    &lt;li&gt;Microsoft vermarktet häufig nur Tools, die dem Benutzer mit viel Klickibunti das Leben erleichtern. Codequalität scheint ein wenig vernachlässigt zu werden.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Fazit: Bei uns im Büro erfuhr ich bereits Ende letzten Jahres von dieser Initiative. Ich hatte sie mir auch bereits auf &amp;quot;vielleicht/irgendwann&amp;quot; notiert, aber bisher noch keinen konkreten Einstiegspunkt für mich gefunden. Nun scheint es mir, dass man auch ohne den Kauf des Buches aktiv loslegen kann. Vermutlich werde ich daher in den nächsten Wochen die &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.clean-code-developer.de/wiki/CcdRoterGrad&#039;);&quot;  href=&quot;http://www.clean-code-developer.de/wiki/CcdRoterGrad&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Seite zum roten Grad&lt;/a&gt; in Angriff nehmen ...&lt;/p&gt;

 
    </content:encoded>

    <pubDate>Mon, 20 Jul 2009 13:11:05 +0200</pubDate>
    <guid isPermaLink="false">http://flominator.ramselehof.de/index.php?/archives/140-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.5/deed.de</creativeCommons:license><category>.net</category>
<category>barcamp</category>
<category>nos_sued</category>
<category>ulm</category>

</item>
<item>
    <title>Getting Things Done: Nächste-Schritte-Listen</title>
    <link>http://flominator.ramselehof.de/index.php?/archives/137-Getting-Things-Done-Naechste-Schritte-Listen.html</link>
            <category>Job</category>
            <category>Reallife/Freizeit</category>
    
    <comments>http://flominator.ramselehof.de/index.php?/archives/137-Getting-Things-Done-Naechste-Schritte-Listen.html#comments</comments>
    <wfw:comment>http://flominator.ramselehof.de/wfwcomment.php?cid=137</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://flominator.ramselehof.de/rss.php?version=2.0&amp;type=comments&amp;cid=137</wfw:commentRss>
    

    <author>nospam@example.com (Flominator)</author>
    <content:encoded>
    &lt;p&gt;Nachdem man den &lt;span class=&quot;serendipity_wikilink_internal&quot;&gt;&lt;a class=&quot;serendipity_wikilink_visitor&quot; href=&quot;http://flominator.ramselehof.de/index.php?/archives/99-Getting-Things-Done-Eingangskoerbe.html&quot;&gt;Eingangskorb durchgearbeitet&lt;/a&gt;&lt;/span&gt; hat und den nächsten Schritt beschlossen hat, wird jede Aufgabe erledigt, die in weniger als zwei Minuten zu schaffen ist. Doch was passiert mit dem Rest der nächsten Schritte?&lt;/p&gt;

&lt;p&gt;Hier kommen David Allens Kontextlisten ins Spiel: Die einzelnen nächsten Schritte werden dem Kontext zugeordnet, in dem sie erledigt werden können. Denn, was nützt einem die Information, dass man neue Batterien für die Taschenlampe kaufen muss, wenn man gerade im Zug sitzt? Befindet man sich nun in einem Kontext mit Liste, kann man je nach Zeit, Energie und Priorität (in dieser Reihenfolge!) Punkte daraus abarbeiten. Störende Punkte, die man gerade sowieso nicht erledigen kann, finden sich auf anderen Listen und verschwenden daher keine unnötige Suchzeit.&lt;/p&gt;

&lt;p&gt;David allen schlägt bereits eine Menge potentieller Listenkontexte vor, die jeder an seine Bedürfnisse anpassen kann und dies auch tun sollte. Bei mir sieht das folgendermaßen aus:&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Listen auf Papier&lt;/b&gt;&lt;br /&gt;

&lt;ul&gt;
    &lt;li&gt;@Daheim: Schritte ohne PC&lt;/li&gt;
    &lt;li&gt;@Freundin: Schritte mit oder bei der Freundin&lt;/li&gt;
    &lt;li&gt;@Oma: quasi siehe @Freundin&lt;/li&gt;
    &lt;li&gt;@Besorgungen: Einkäufe etc. die quasi überall möglich sind&lt;/li&gt;
    &lt;li&gt;@Oben: Besorgungen, die &amp;quot;oben&amp;quot; im Schwarzwald erledigt werden müssen&lt;/li&gt;
    &lt;li&gt;@Freiburg: Besorgungen, die nur erledigt werden können, wenn ich mal wieder dort bin&lt;/li&gt;
    &lt;li&gt;@Garage: Schritte am oder im Auto (Ölmessung, Staubsaugen, Winterreifen)&lt;/li&gt;
    &lt;li&gt;@Entwicklungsrechner: zweiter PC im Büro (kein Outlook verfügbar)&lt;/li&gt;
    &lt;li&gt;@Phone: zu tätigende Anrufe (mittlerweile in @Daheim enthalten)&lt;/li&gt;
&lt;/ul&gt;

&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Listen am PC&lt;/b&gt;&lt;br /&gt;

&lt;ul&gt;
    &lt;li&gt;@Online: Ordner in Mozilla Thunderbird für Schritte, die daheim am PC zu erledigen sind. Liste wird bei Bedarf (Reisen) mit Tags für @daheim und @online versehen, um filtern zu können.&lt;/li&gt;
    &lt;li&gt;@Work: Outlook-Aufgaben, die im Büro und nicht am Entwicklungsrechner geschehen müssen&lt;/li&gt;
    &lt;li&gt;@&lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/delicious.com/Flominator/saugen&#039;);&quot;  href=&quot;http://delicious.com/Flominator/saugen&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;saugen&lt;/a&gt;: getaggte del.icio.us-Links für größere Downloads&lt;/li&gt;
    &lt;li&gt;@&lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/delicious.com/Flominator/bandwidth_needed&#039;);&quot;  href=&quot;http://delicious.com/Flominator/bandwidth_needed&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;bandwidth_needed&lt;/a&gt;:  getaggte del.icio.us-Links für Online-Schritte mit größeren Datenaufkommen (Videos, ...)&lt;/li&gt;
    &lt;li&gt;@Leerlauf: Explorer-Ordner am Heimrechner für Schritte mit Bedarf an keiner Aufmerksamkeit, aber größerer Rechenzeit (Panorama-Stitches, zu brennende CDs und DVDs, ...)&lt;/li&gt;
    &lt;li&gt;@Reinhören: Audio-Dateien zum Durchhören (Songs, Alben, Podcasts, ...)&lt;/li&gt;
    &lt;li&gt;@DSL: Uploads für Wikipedia und Flickr (vgl. @saugen)&lt;/li&gt;
&lt;/ul&gt;

&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Stoffliche Listen&lt;/b&gt;&lt;br /&gt;

&lt;ul&gt;
    &lt;li&gt;@Lesen: Mappe mit Material zum Lesen (gedruckte Blogartikel, Literatur für Wikipedia-Artikel, Gebrauchsanweisungen neuer Geräte, ...) für unterwegs&lt;/li&gt;
    &lt;li&gt;@Lesen: Ablagekorb im Büro &lt;/li&gt;
    &lt;li&gt;@TV: Videos und DVDs (aufgenommen oder ausgeliehen) zum Anschauen&lt;/li&gt;
&lt;/ul&gt;

&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Erfahrungen zum Umgang mit nächsten Schritten und Listen&lt;/b&gt;&lt;br /&gt;

&lt;ul&gt;
    &lt;li&gt;Meist bringt das Suchen nach dem nächsten Schritt schnelle Entscheidungen. Hinterher finden sich  manchmal effizientere Wege, wie man es besser hätte machen können - na und?&lt;/li&gt;
    &lt;li&gt;Bei komplexen Projekten kann auch &amp;quot;nächster Schritt bestimmen&amp;quot; ein nächster Schritt sein&lt;/li&gt;
    &lt;li&gt;Wichtig ist die gute Vorbereitung nächster Schritte: Bevor man zum nächsten Punkt im Eingangskorb wechselt, sollte man sich immer fragen, was man alles für die Erledigung des gerade beschlossenen Schrittes benötigt. Kann man vielleicht schon eine Telefonnummer heraussuchen, Daten aus dem Internet herunterladen etc.? Ist es dann soweit, kostet es weniger Überwindung, den Schritt durchzuziehen.&lt;/li&gt;
    &lt;li&gt;Schritte müssen konkret formuliert sein: Bei einem Nachmittag in Freiburg bekam ich quasi alle Schritte erledigt, abgesehen von &amp;quot;Geschenk für Jenny&amp;quot;. Warum? Ich hatte eigentlich keine Ahnung, was ich ihr schenken wollte oder wo ich suchen sollte.&lt;/li&gt;
    &lt;li&gt;Schritte mit Deadlines notiere ich zudem im Kalender, um sie nicht doch aus Versehen einmal zu vergessen.&lt;/li&gt;
&lt;/ul&gt;

&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Fazit&lt;/b&gt;&lt;br /&gt;
Mit dem Kontextbezug gelang es mir bereits kurz nach der Einführung von GTD, ewig aufgeschobene Dinge umzusetzen: Monate lang lagen zwei Hörbücher herum. Ich kann mich zuhause einfach nicht hinsetzen und konzentriert zuhören. Es war eindeutig der falsche Kontext. Kaum hatte ich die CDs ins Auto befördert, hatte ich sie auch schon angehört.&lt;/p&gt;

&lt;p&gt;Auch einen Film aus der alten Kamera hatte ich nie zum Entwickeln gebracht. Kaum hatte ich ihn vor Tür gelegt und ihn daher ins Büro mitgenommen, stand er auch schon auf @Besorgungen. Beim nächsten Drogeriebesuch hatte ich ihn auch schon abgeben. Die Tatsache, dass sich der Film als leer erwies war ... überraschend. Aber: Ich hatte es endlich getan und der Film lag nicht lange daheim herum!&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Offene Fragen&lt;/b&gt;&lt;br /&gt;
Leider gibt es ein paar Dinge, die sich mir im Buch nicht wirklich erschlossen haben:  &lt;br /&gt;

&lt;ul&gt;
    &lt;li&gt;Was passiert, wenn übernächster Schritt auch nur zwei Minuten dauert?&lt;/li&gt;
    &lt;li&gt;Was ist, wenn man erkennt, dass ein Schritt doch länger dauert, man aber schon angefangen hat?&lt;/li&gt;
    &lt;li&gt;Wohin mit Zeug für einen nächsten Schritt ohne Projekt?&lt;/li&gt;
    &lt;li&gt;Wie verwalte ich die übernächsten Schritte?&lt;/li&gt;
&lt;/ul&gt;

&lt;/p&gt;

 
    </content:encoded>

    <pubDate>Sun, 19 Jul 2009 12:33:58 +0200</pubDate>
    <guid isPermaLink="false">http://flominator.ramselehof.de/index.php?/archives/137-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.5/deed.de</creativeCommons:license><category>büro</category>
<category>gtd</category>
<category>schreibtisch</category>

</item>
<item>
    <title>endlich: Notizen in der Dusche</title>
    <link>http://flominator.ramselehof.de/index.php?/archives/133-endlich-Notizen-in-der-Dusche.html</link>
            <category>Reallife/Freizeit</category>
    
    <comments>http://flominator.ramselehof.de/index.php?/archives/133-endlich-Notizen-in-der-Dusche.html#comments</comments>
    <wfw:comment>http://flominator.ramselehof.de/wfwcomment.php?cid=133</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://flominator.ramselehof.de/rss.php?version=2.0&amp;type=comments&amp;cid=133</wfw:commentRss>
    

    <author>nospam@example.com (Flominator)</author>
    <content:encoded>
    &lt;p&gt;Wie bereits beschrieben, hatte ich in meinem &lt;span class=&quot;serendipity_wikilink_internal&quot;&gt;&lt;a class=&quot;serendipity_wikilink_visitor&quot; href=&quot;http://flominator.ramselehof.de/index.php?/archives/92-Getting-Things-Done-Erfassen.html&quot;&gt;Erfassungsprozess&lt;/a&gt;&lt;/span&gt; bisher immer ein Problem: Ich konnte in der Dusche keine Notizen machen. Mittlerweile ist auch dieses Problem gelöst:&lt;/p&gt;

&lt;p&gt;Als ich vor ein paar Wochen mit meiner Freundin in Heidelberg war, musste sie mich ja unbedingt in den &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.qype.com/place/311282-Butlers-Heidelberg&#039;);&quot;  href=&quot;http://www.qype.com/place/311282-Butlers-Heidelberg&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;dortigen Butlers&lt;/a&gt; ziehen. Zum Glück hat sie das gemacht!&lt;/p&gt;

 &lt;br /&gt;&lt;a href=&quot;http://flominator.ramselehof.de/index.php?/archives/133-endlich-Notizen-in-der-Dusche.html#extended&quot;&gt;&quot;endlich: Notizen in der Dusche&quot; vollständig lesen&lt;/a&gt;
    </content:encoded>

    <pubDate>Sat, 18 Jul 2009 13:08:04 +0200</pubDate>
    <guid isPermaLink="false">http://flominator.ramselehof.de/index.php?/archives/133-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.5/deed.de</creativeCommons:license><category>büro</category>
<category>gtd</category>
<category>schreibtisch</category>

</item>
<item>
    <title>.NET Open Space Süd 2009 in Ulm - Testen/Getting Things Done</title>
    <link>http://flominator.ramselehof.de/index.php?/archives/132-.NET-Open-Space-Sued-2009-in-Ulm-TestenGetting-Things-Done.html</link>
            <category>Job</category>
    
    <comments>http://flominator.ramselehof.de/index.php?/archives/132-.NET-Open-Space-Sued-2009-in-Ulm-TestenGetting-Things-Done.html#comments</comments>
    <wfw:comment>http://flominator.ramselehof.de/wfwcomment.php?cid=132</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://flominator.ramselehof.de/rss.php?version=2.0&amp;type=comments&amp;cid=132</wfw:commentRss>
    

    <author>nospam@example.com (Flominator)</author>
    <content:encoded>
    &lt;p&gt;&lt;b&gt;Testing&lt;/b&gt;&lt;br /&gt;
Die erste Session am Sonntag hatte mit &amp;quot;Testen&amp;quot; ein etwas zu umfangreiches Themengebiet. Daher ging die Diskussion nicht ganz in die Richtung, die ich mir gewünscht hätte. Trotzdem gab es ein paar erwähnenswerte Infos:&lt;/p&gt;


&lt;ul&gt;
    &lt;li&gt;UI-Tests lohnen sich vermutlich nur für Standardarbeitsschritte, sonst zu hohes Preis-Leistungs-Verhältnis&lt;/li&gt;
    &lt;li&gt;Webtests sind meist trivial und finden keine richtigen Fehler&lt;/li&gt;
    &lt;li&gt;Visual Studio (in welcher Edition?) erlaubt Klickreihenfolge im Browser abzuspielen und als Lasttest mehrfach auszuführen&lt;/li&gt;
    &lt;li&gt;Lasttests bei ERP-Systemen heißt, einmal die Weihnachtszeit nachzuspielen&lt;/li&gt;
    &lt;li&gt;Tester stumpfen bei häufiger Wiederholung ab und sehen Fehler nicht mehr =&amp;gt; Vorteil von UI-Tests&lt;/li&gt;
    &lt;li&gt;bestes Preis-Leistungsverhältnis haben Unit-Tests für Rechenfunktionen&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Getting Things Done&lt;/b&gt;&lt;br /&gt;
Nachdem mich das klingelnde Handy aus dem Raum geholt hatte, entdeckte ich eine kleine, aber eine Diskussionssrunde zum Thema &lt;em&gt;Getting Things Done&lt;/em&gt;. Obwohl es nicht direkt um &lt;span class=&quot;serendipity_wikilink_internal&quot;&gt;&lt;a class=&quot;serendipity_wikilink_visitor&quot; href=&quot;http://flominator.ramselehof.de/index.php?/archives/75-Getting-Things-Done.html&quot;&gt;das Buch&lt;/a&gt;&lt;/span&gt; ging, gab es auch dort ein paar Anregungen:&lt;br /&gt;

&lt;ul&gt;
    &lt;li&gt;alle Mails nach dem Urlaub löschen -&amp;gt; wer etwas will, der kommt schon wieder&lt;/li&gt;
    &lt;li&gt;(wirklich) dringende Sachen sollten per Telefon geschehen, dort ist auch Rausreißen aus der aktuellen Tätigkeit legitim&lt;/li&gt;
    &lt;li&gt;Was ist schon wirklich dringend?&lt;/li&gt;
    &lt;li&gt;Abteilungsleiter veröffentlicht seinen Wochenplan, damit seine Untergebenen sehen, was er die Woche über tut&lt;/li&gt;
    &lt;li&gt;Corporate-Mikroblogging wie &lt;span class=&quot;serendipity_wikilink_internal&quot;&gt;&lt;a class=&quot;serendipity_wikilink_visitor&quot; href=&quot;http://flominator.ramselehof.de/index.php?/archives/114-Barcamp-Stuttart-Corporate-Twitter-Yammer.html&quot;&gt;Yammer&lt;/a&gt;&lt;/span&gt; kann ebenfalls dabei helfen, zu sehen, was die Leute um einen herum so tun&lt;/li&gt;
&lt;/ul&gt;

&lt;/p&gt;

 
    </content:encoded>

    <pubDate>Fri, 17 Jul 2009 13:31:10 +0200</pubDate>
    <guid isPermaLink="false">http://flominator.ramselehof.de/index.php?/archives/132-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.5/deed.de</creativeCommons:license><category>.net</category>
<category>barcamp</category>
<category>gtd</category>
<category>nos_sued</category>
<category>testen</category>
<category>ulm</category>

</item>
<item>
    <title>.NET Open Space Süd 2009 in Ulm - Mocking/Interfaces</title>
    <link>http://flominator.ramselehof.de/index.php?/archives/130-.NET-Open-Space-Sued-2009-in-Ulm-MockingInterfaces.html</link>
            <category>Job</category>
    
    <comments>http://flominator.ramselehof.de/index.php?/archives/130-.NET-Open-Space-Sued-2009-in-Ulm-MockingInterfaces.html#comments</comments>
    <wfw:comment>http://flominator.ramselehof.de/wfwcomment.php?cid=130</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://flominator.ramselehof.de/rss.php?version=2.0&amp;type=comments&amp;cid=130</wfw:commentRss>
    

    <author>nospam@example.com (Flominator)</author>
    <content:encoded>
    &lt;p&gt;Nachdem zu &lt;span class=&quot;serendipity_wikilink_internal&quot;&gt;&lt;a class=&quot;serendipity_wikilink_visitor&quot; href=&quot;http://flominator.ramselehof.de/index.php?/archives/127-.NET-Open-Space-Sued-2009-in-Ulm-Inversion-of-ControlDependency-Injection.html&quot;&gt;Inversion of Control und Dependency Injection&lt;/a&gt;&lt;/span&gt; auf dem Open Space in Ulm keine Fragen mehr kamen, handelten wir spontan noch zwei andere Themen ab:&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Mocking&lt;/b&gt;&lt;br /&gt;

&lt;ul&gt;
    &lt;li&gt;&amp;quot;normale&amp;quot; Frameworks wie z.B. &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/ayende.com/projects/rhino-mocks.aspx&#039;);&quot;  href=&quot;http://ayende.com/projects/rhino-mocks.aspx&quot; onclick=&quot;window.open(this.href, &#039;&lt;u&gt;blank&#039;); return false;&quot;&gt;Rhino Mocks&lt;/a&gt; nutzen &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/de.wikipedia.org/wiki/Stellvertreter&amp;lt;/u&amp;gt;(Entwurfsmuster)&#039;);&quot;  href=&quot;http://de.wikipedia.org/wiki/Stellvertreter&lt;/u&gt;(Entwurfsmuster)&quot;&gt;Proxy-Mechanismus&lt;/a&gt;mit Vererbung&lt;/li&gt;
    &lt;li&gt;Problem: statische Klassen sind nicht mockbar&lt;/li&gt;
    &lt;li&gt;&lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.typemock.com/&#039;);&quot;  href=&quot;http://www.typemock.com/&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Typemock&lt;/a&gt; erlaubt Nutzung der Profiler-API; dadurch auch Mocking statischer Objekt möglich (Date.Now trotzdem nicht)&lt;/li&gt;
    &lt;li&gt;Frameworks mit Automock-Funktionalität ermöglichen es, dynamisch zu mocken, was gerade benötigt wird&lt;/li&gt;
    &lt;li&gt;RhinoMocks nutze früher Record-Replay-Modus, heutiges Prinzip ist Arrange-Act-Assert&lt;/li&gt;
    &lt;li&gt;siehe auch: &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/der-albert.com/archive/0001/01/01/einfacheres-mocken-von-eigenschaften-eines-objektes.aspx&#039;);&quot;  href=&quot;http://der-albert.com/archive/0001/01/01/einfacheres-mocken-von-eigenschaften-eines-objektes.aspx&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Einfacheres Mocken von Eigenschaften eines Objektes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Interfaces&lt;/b&gt;&lt;br /&gt;

&lt;ul&gt;
    &lt;li&gt;Interfaces verhindern, dass man &amp;quot;virtual&amp;quot; vergisst&lt;/li&gt;
    &lt;li&gt;abstrakte Basisklassen können bereits Funktionalitäten implementieren&lt;/li&gt;
    &lt;li&gt;Methoden abstrakter Basisklassen können ggf. überschrieben werden, MÜSSEN sie aber nicht&lt;/li&gt;
    &lt;li&gt;Interfaces erfordern bei Erweiterung neue Methoden in allen von ihnen abgeleiteten Klassen&lt;/li&gt;
    &lt;li&gt;Methoden von Interfaces müssen nicht implementiert werden, &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/der-albert.com/archive/0001/01/01/interfaces-muessen-nicht-implementiert-werden.aspx&#039;);&quot;  href=&quot;http://der-albert.com/archive/0001/01/01/interfaces-muessen-nicht-implementiert-werden.aspx&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;wenn die Basisklassen sie bereits implementieren&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;Kommentare zu Methoden des Interfaces sollten per Konvetion dort im Interface geschrieben werden, nicht in der Implementierung&lt;/li&gt;
    &lt;li&gt;alternativ können mit &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/submain.com/products/ghostdoc.aspx&#039;);&quot;  href=&quot;http://submain.com/products/ghostdoc.aspx&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;ghostdoc&lt;/a&gt; Kommentare von beerbten Objekten kopiert werden&lt;/li&gt;
&lt;/ul&gt;

&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Fazit&lt;/b&gt;&lt;br /&gt;
Mein Highlight der zweiten Hälfte der Session waren das Beispiel für das neue Arrange-Act-Assert-Schema bei RhinoMocks sowie der Verweis auf ghostdoc. Dieses Tool kann ich nur wärmstens empfehlen, um automatische Dokumentationskommentare zu generieren. Meist sind sie relativ treffend, falls nicht, sind sie dann zumindest lustig.&lt;/p&gt;

 
    </content:encoded>

    <pubDate>Thu, 16 Jul 2009 13:27:54 +0200</pubDate>
    <guid isPermaLink="false">http://flominator.ramselehof.de/index.php?/archives/130-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.5/deed.de</creativeCommons:license><category>.net</category>
<category>barcamp</category>
<category>mocking</category>
<category>nos_sued</category>
<category>ulm</category>
<category>vererbung</category>

</item>
<item>
    <title>.NET Open Space Süd 2009 in Ulm - Inversion of Control/Dependency Injection</title>
    <link>http://flominator.ramselehof.de/index.php?/archives/127-.NET-Open-Space-Sued-2009-in-Ulm-Inversion-of-ControlDependency-Injection.html</link>
            <category>Job</category>
    
    <comments>http://flominator.ramselehof.de/index.php?/archives/127-.NET-Open-Space-Sued-2009-in-Ulm-Inversion-of-ControlDependency-Injection.html#comments</comments>
    <wfw:comment>http://flominator.ramselehof.de/wfwcomment.php?cid=127</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://flominator.ramselehof.de/rss.php?version=2.0&amp;type=comments&amp;cid=127</wfw:commentRss>
    

    <author>nospam@example.com (Flominator)</author>
    <content:encoded>
    &lt;p&gt;Nach dem &amp;quot;Kampf&amp;quot; von &lt;span class=&quot;serendipity_wikilink_internal&quot;&gt;&lt;a class=&quot;serendipity_wikilink_visitor&quot; href=&quot;http://flominator.ramselehof.de/index.php?/archives/125-.NET-Open-Space-Sued-2009-in-Ulm-Castle-Monorail-vs.-Microsoft-MVC.html&quot;&gt;Castle Monorail vs. Microsoft MVC&lt;/a&gt;&lt;/span&gt; geht es heute um &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/de.wikipedia.org/wiki/Inversion_of_Control&#039;);&quot;  href=&quot;http://de.wikipedia.org/wiki/Inversion_of_Control&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Inversion of Control&lt;/a&gt; bzw. &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/de.wikipedia.org/wiki/Dependency_Injection&#039;);&quot;  href=&quot;http://de.wikipedia.org/wiki/Dependency_Injection&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Dependency Injection&lt;/a&gt;. Hier also meine Notizen zu diesem spannenden und häufig unterschätzten Thema:&lt;/p&gt;


&lt;ul&gt;
    &lt;li&gt;Klasse bezieht von ihr genutzte Klassen &amp;quot;von außen&amp;quot;&lt;/li&gt;
    &lt;li&gt;Nutzung von Interfaces statt konkreter Implementierung &lt;/li&gt;
    &lt;li&gt;Zuweisung des konkreten Objektes &amp;quot;von außen&amp;quot; - manuell oder per IoC-Container&lt;/li&gt;
    &lt;li&gt;Konfigurationsstrategien für den Container&lt;ul&gt;
        &lt;li&gt;via XML - aufwändig, bäääh!&lt;/li&gt;
        &lt;li&gt;Objekte einzeln und &amp;quot;von Hand&amp;quot; hinein packen&lt;/li&gt;
        &lt;li&gt;relevante Objekte per Reflection aufsammeln (+ Sonderfälle explizit zuweisen)&lt;ul&gt;
            &lt;li&gt;&lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/structuremap.sourceforge.net/Default.htm&#039;);&quot;  href=&quot;http://structuremap.sourceforge.net/Default.htm&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;StructureMap&lt;/a&gt; (gut strukturiert)&lt;/li&gt;
            &lt;li&gt;&lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.castleproject.org/container/index.html&#039;);&quot;  href=&quot;http://www.castleproject.org/container/index.html&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;WindsorCastle&lt;/a&gt; (wenn man schon Monorail oder ActiveRecord nutzt)&lt;/li&gt;
            &lt;li&gt;&lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.codeplex.com/unity&#039;);&quot;  href=&quot;http://www.codeplex.com/unity&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Unity&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/ninject.org/&#039;);&quot;  href=&quot;http://ninject.org/&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Ninject&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.springframework.net/&#039;);&quot;  href=&quot;http://www.springframework.net/&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Spring&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&amp;quot;von Hand&amp;quot; per Attribut&lt;/li&gt;
        &lt;/ul&gt;&lt;/li&gt;
    &lt;/ul&gt;&lt;/li&gt;
    &lt;li&gt;Constructor injection: wenn keine Default-Implementierungen vorhanden sind&lt;/li&gt;
    &lt;li&gt;Setter injection: praktisch, da nur bei Bedarf Default-Implementierungen überschrieben werden&lt;/li&gt;
    &lt;li&gt;Performance: Zeitverlust durch IoC im Vergleich zu new ist verschwindend gering im Vergleich zur Lebenszeit des Objektes&lt;/li&gt;
    &lt;li&gt;IoC hilft, Singletons zu erzeugen (die im Vergleich zum &amp;quot;normalen&amp;quot; Pattern sogar überschrieben werden können)&lt;/li&gt;
    &lt;li&gt;Idealfall: alles wird injiziert&lt;ul&gt;
        &lt;li&gt;Attribute sind nicht injizierbar - Ausweg bietet &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.codeplex.com/CommonServiceLocator&#039;);&quot;  href=&quot;http://www.codeplex.com/CommonServiceLocator&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;CommonServiceLocator&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;&lt;/li&gt;
    &lt;li&gt;Container lässt sich beim Testen auch ausmocken&lt;/li&gt;
&lt;/ul&gt;

 
    </content:encoded>

    <pubDate>Wed, 15 Jul 2009 13:34:11 +0200</pubDate>
    <guid isPermaLink="false">http://flominator.ramselehof.de/index.php?/archives/127-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.5/deed.de</creativeCommons:license><category>.net</category>
<category>barcamp</category>
<category>nos_sued</category>
<category>ulm</category>

</item>
<item>
    <title>.NET Open Space Süd 2009 in Ulm - Castle Monorail vs. Microsoft MVC</title>
    <link>http://flominator.ramselehof.de/index.php?/archives/125-.NET-Open-Space-Sued-2009-in-Ulm-Castle-Monorail-vs.-Microsoft-MVC.html</link>
            <category>Job</category>
    
    <comments>http://flominator.ramselehof.de/index.php?/archives/125-.NET-Open-Space-Sued-2009-in-Ulm-Castle-Monorail-vs.-Microsoft-MVC.html#comments</comments>
    <wfw:comment>http://flominator.ramselehof.de/wfwcomment.php?cid=125</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://flominator.ramselehof.de/rss.php?version=2.0&amp;type=comments&amp;cid=125</wfw:commentRss>
    

    <author>nospam@example.com (Flominator)</author>
    <content:encoded>
    &lt;p&gt;Nach den gestrigen &lt;span class=&quot;serendipity_wikilink_internal&quot;&gt;&lt;a class=&quot;serendipity_wikilink_visitor&quot; href=&quot;http://flominator.ramselehof.de/index.php?/archives/123-.NET-Open-Space-Sued-2009-in-Ulm-Tag-1-Scrum.html&quot;&gt;Scrum-Notizen&lt;/a&gt;&lt;/span&gt; hier gleich der Mitschrieb zur nächsten Session vom Ulmer Open Space. Leider gab es in der Session keinen wirklichen Vergleich zwischen den beiden &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/de.wikipedia.org/wiki/Model_View_Controller&#039;);&quot;  href=&quot;http://de.wikipedia.org/wiki/Model_View_Controller&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;MVC&lt;/a&gt;-Frameworks, da niemand der Anwesenden gleichzeitig beide so richtig gut kannte. Trotzdem empfand ich einige Fakten aus der Session als relativ interessant:&lt;/p&gt;


&lt;ul&gt;
    &lt;li&gt;Ziel muss immer sein, die Logik in den Views minimieren&lt;/li&gt;
    &lt;li&gt;MS MVC ermöglicht Austausch von Controllern und View-Engines&lt;/li&gt;
    &lt;li&gt;weitere Viewengines sind z.B.: &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/andrewpeters.net/2007/12/19/introducing-nhaml-an-aspnet-mvc-view-engine/&#039;);&quot;  href=&quot;http://andrewpeters.net/2007/12/19/introducing-nhaml-an-aspnet-mvc-view-engine/&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;NHaml&lt;/a&gt; (.NET-Port der bekannten Rails-Engine) und &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/sparkviewengine.com/&#039;);&quot;  href=&quot;http://sparkviewengine.com/&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Sparkview&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;Webforms sind ebenfalls als Viewengine nutzbar (aber ohne Lifecycle)&lt;/li&gt;
    &lt;li&gt;Lock-In-Effekt ist größte Gefahr bei Wahl der Viewengine&lt;/li&gt;
    &lt;li&gt;gute Viewengines erlauben Nutzung typisierter Models&lt;/li&gt;
    &lt;li&gt;NVelocity-Views zeigen $Variable, wenn selbige nicht gefüllt ist &lt;ul&gt;
        &lt;li&gt;Quelltext nach $ durchsuchen zur automatisierten Fehlersuche&lt;/li&gt;
    &lt;/ul&gt;&lt;/li&gt;
    &lt;li&gt;ASP-View von Monorail kann IntelliSense, MS MVC auch&lt;/li&gt;
    &lt;li&gt;Microsoft MVW beherrst ASP Dynamic Data, mit dem man schnell &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/de.wikipedia.org/wiki/CRUD&#039;);&quot;  href=&quot;http://de.wikipedia.org/wiki/CRUD&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;CRUD&lt;/a&gt;-Formulare erzeugen kann&lt;/li&gt;
    &lt;li&gt;Deployment von MS MVC in bin oder GAC möglich&lt;/li&gt;
    &lt;li&gt;Server startet in bestimmten Fällen neu (u.a. bei Änderung zu vieler Dateien)&lt;/li&gt;
    &lt;li&gt;Dateiendung muss an ASP.NET übergeben bzw. dafür registriert werden&lt;/li&gt;
    &lt;li&gt;Seiten ohne Endung: Bilder und Javascripte explizit per StaticFileHandler bearbeiten, um die Performance zu verbessern. &lt;/li&gt;
    &lt;li&gt;Microsofts Lösung kann mit &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.codeplex.com/MVCContrib&#039;);&quot;  href=&quot;http://www.codeplex.com/MVCContrib&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;MvcContrib&lt;/a&gt; sinnvoll erweitert werden&lt;/li&gt;
    &lt;li&gt;&lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/der-albert.com/archive/2009/06/25/quelltext-zur-asp-net-mvc-user-group-tour-im-juni-2009.aspx&#039;);&quot;  href=&quot;http://der-albert.com/archive/2009/06/25/quelltext-zur-asp-net-mvc-user-group-tour-im-juni-2009.aspx&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Beispiel&lt;/a&gt; zum MVC-Framework von Microsoft, das &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/der-albert.com/Default.aspx&#039;);&quot;  href=&quot;http://der-albert.com/Default.aspx&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Albert&lt;/a&gt; dann ausführlich in einer separaten Session vorstellte.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Fazit: Es gibt keine technischen Gründe, sich für oder gegen &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.castleproject.org/monorail/index.html&#039;);&quot;  href=&quot;http://www.castleproject.org/monorail/index.html&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Castle Monorail&lt;/a&gt; zu entscheiden. Langfristig ist aber (leider?) davon auszugehen, dass es mehr Tools, Support und Community-Angebote für das Microsoft Framework geben wird.&lt;/p&gt;

 
    </content:encoded>

    <pubDate>Tue, 14 Jul 2009 13:38:31 +0200</pubDate>
    <guid isPermaLink="false">http://flominator.ramselehof.de/index.php?/archives/125-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.5/deed.de</creativeCommons:license><category>.net</category>
<category>asp</category>
<category>barcamp</category>
<category>mvc</category>
<category>nos_sued</category>
<category>ulm</category>
<category>webdesign</category>

</item>
<item>
    <title>.NET Open Space Süd 2009 in Ulm - Tag 1: Scrum</title>
    <link>http://flominator.ramselehof.de/index.php?/archives/123-.NET-Open-Space-Sued-2009-in-Ulm-Tag-1-Scrum.html</link>
            <category>Job</category>
    
    <comments>http://flominator.ramselehof.de/index.php?/archives/123-.NET-Open-Space-Sued-2009-in-Ulm-Tag-1-Scrum.html#comments</comments>
    <wfw:comment>http://flominator.ramselehof.de/wfwcomment.php?cid=123</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://flominator.ramselehof.de/rss.php?version=2.0&amp;type=comments&amp;cid=123</wfw:commentRss>
    

    <author>nospam@example.com (Flominator)</author>
    <content:encoded>
    &lt;p&gt;Nachdem &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/blog.thomasbandt.de&#039;);&quot;  href=&quot;http://blog.thomasbandt.de&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Thomas Bandt&lt;/a&gt; ja schon &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/blog.thomasbandt.de/39/2269/de/blog/review-net-open-space-sued-2009.html&#039;);&quot;  href=&quot;http://blog.thomasbandt.de/39/2269/de/blog/review-net-open-space-sued-2009.html&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;erklärt&lt;/a&gt; hat, was beim .NET Open Space Süd 2009 so passiert ist, kann ich mich hier ja glücklicherweise auf das Posten meiner Notizen beschränken.&lt;/p&gt;

&lt;p&gt;Die erste Session drehte sich um das Thema  &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/de.wikipedia.org/wiki/Scrum&#039;);&quot;  href=&quot;http://de.wikipedia.org/wiki/Scrum&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Scrum&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Einführung&lt;/b&gt;&lt;/p&gt;


&lt;ul&gt;
    &lt;li&gt;keine Aussage, wie entwickelt wird - das Team soll dies selbst regeln&lt;/li&gt;
    &lt;li&gt;Vorgesetzter kann als Scrummaster problematisch sein, da er &amp;quot;über&amp;quot; den Teammitgliedern steht&lt;/li&gt;
    &lt;li&gt;Aufgaben (geforderte Features) für nächsten Sprint werden in Punkten abgeschätzt - NICHT IN STUNDEN&lt;/li&gt;
    &lt;li&gt;Länge eines Sprints: 2-4 Wochen, im Web-Bereich häufig nur eine Woche&lt;/li&gt;
    &lt;li&gt; keine Belohnungen/Sanktionen, da sonst die Qualität leidet&lt;/li&gt;
    &lt;li&gt;Regel: keine neue Karte nehmen, wenn man noch alte hat&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Daily Scrum&lt;/b&gt;&lt;br /&gt;

&lt;ul&gt;
    &lt;li&gt;Diskussionen abblocken und nach dem Meeting klären&lt;/li&gt;
    &lt;li&gt;prägnant erreichte Ziele von heute und geplante Ziele für nächsten Tag nennen, nicht erzählen, was denn so alles über den Tag passiert ist&lt;/li&gt;
    &lt;li&gt;Scrummaster muss Probleme heraushören (auch nicht explizit genannte)&lt;/li&gt;
&lt;/ul&gt;

&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Nutzen&lt;/b&gt;&lt;br /&gt;

&lt;ul&gt;
    &lt;li&gt;sichtbaren Ergebnis für den Kunden nach jedem Sprint&lt;/li&gt;
    &lt;li&gt;starke Kommunikation im Team&lt;/li&gt;
    &lt;li&gt;Commitment auf die Aufgabe&lt;/li&gt;
    &lt;li&gt;Product owner ist Teil des Teams&lt;ul&gt;
        &lt;li&gt;hat mehr Verantwortung&lt;/li&gt;
        &lt;li&gt;muss während des Sprints zur Verfügung stehen&lt;/li&gt;
        &lt;li&gt;muss klare Vorgaben geben&lt;/li&gt;
    &lt;/ul&gt;&lt;/li&gt;
    &lt;li&gt;mehr Struktur, klare Vorgaben&lt;/li&gt;
&lt;/ul&gt;

&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Gefahren&lt;/b&gt;&lt;br /&gt;

&lt;ul&gt;
    &lt;li&gt;Scrum allein enthält keine langfristige Planungskomponente &lt;/li&gt;
    &lt;li&gt;evtl. mangelnde Effizienz über Projektlaufzeit&lt;/li&gt;
    &lt;li&gt;keine Sicht auf großes übergeordnetes Ziel&lt;/li&gt;
    &lt;li&gt;Erfolg steht und fällt mit der Qualität des Backlogs&lt;/li&gt;
    &lt;li&gt;keine Basis für Angebotserstellung&lt;ul&gt;
        &lt;li&gt;Lösungsansatz: Spezifikation im ersten Sprint erstellen&lt;/li&gt;
    &lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Sonstige Themen in der Session&lt;/b&gt;&lt;br /&gt;

&lt;ul&gt;
    &lt;li&gt;Release spring: Phase kurz vor einem Release, in der nur noch kosmetische Änderungen durchgeführt werden und parallel relativ zuverlässig getestet werden kann&lt;/li&gt;
    &lt;li&gt;Sprint-Burn-Down-Charts zeigen an, wie gut man in der Zeit liegt:&lt;/li&gt;
&lt;/ul&gt;

&lt;/p&gt;

&lt;p&gt;&lt;a class=&#039;serendipity_image_link&#039; href=&#039;http://flominator.ramselehof.de/uploads/meine_fotos/burn_down_sprint.jpg&#039;&gt;&lt;!-- s9ymdb:59 --&gt;&lt;img width=&quot;110&quot; height=&quot;64&quot; style=&quot;border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://flominator.ramselehof.de/uploads/meine_fotos/burn_down_sprint.serendipityThumb.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;


&lt;ul&gt;
    &lt;li&gt;&amp;quot;Kartenstatus&amp;quot;-Diagramm dient dem gleichen Zweck, spart aber die Malarbeit, durch Zuordnung der Karten zu einem Status:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a class=&#039;serendipity_image_link&#039; href=&#039;http://flominator.ramselehof.de/uploads/meine_fotos/card_diagramm.jpg&#039;&gt;&lt;!-- s9ymdb:60 --&gt;&lt;img width=&quot;110&quot; height=&quot;94&quot; style=&quot;border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://flominator.ramselehof.de/uploads/meine_fotos/card_diagramm.serendipityThumb.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Fazit&lt;/b&gt;&lt;br /&gt;
Schöner Rundumschlag zum Thema mit einer guten Mischung aus Theorie und Erfahrungen. Highlight war für mich der Input von &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.artiso.com/problog/&#039;);&quot;  href=&quot;http://www.artiso.com/problog/&quot; onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;&gt;Thomas Schissler&lt;/a&gt;, der das Konzept seines Unternehmens vorstellte: Dort werden am Anfang  zwischen 30 und 60% der Projektlaufzeit für die Erstellung der Oberfläche genutzt. Erst wenn Kunde mit Oberfläche einverstanden ist, wird implementiert. Dies erscheint mir ein sehr sinnvoller Ansatz!&lt;/p&gt;

&lt;p&gt;In einer späteren Session erfuhr ich dann auch, was passiert, wenn Scrum falsch eingesetzt wird. In diesem Fall muss SCRUM einfach rückwärts gelesen werden &lt;img src=&quot;http://flominator.ramselehof.de/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;

 
    </content:encoded>

    <pubDate>Mon, 13 Jul 2009 13:55:16 +0200</pubDate>
    <guid isPermaLink="false">http://flominator.ramselehof.de/index.php?/archives/123-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.5/deed.de</creativeCommons:license><category>.net</category>
<category>barcamp</category>
<category>nos_sued</category>
<category>projektmanagement</category>
<category>scrum</category>
<category>ulm</category>

</item>

</channel>
</rss>