<rss version="2.0">
  <channel>
    <title>.NET User Group Bern Community Feed</title>
    <link>http://www.dnug-bern.ch/rss.aspx</link>
    <description>Die letzten Meldungen der .NET User Group Bern Community</description>
    <copyright>(c) 2010-2011, .NET User Group Bern</copyright>
    <item>
      <guid isPermaLink="false">http://www.sqlpassion.at/RegistrationPerf_CH.aspx</guid>
      <link>http://csharp.at/Registration_CH.aspx</link>
      <author>info@dnug-bern.ch</author>
      <category>.NET User Group Bern Veranstaltungshinweis</category>
      <title>SQL Server Performance Tuning and Troubleshooting Workshop in Bern (19. - 21. Juni 2012)</title>
      <description>
&lt;div style="background-color:#eee; padding:5px"&gt;&lt;img src="http://www.dnug-bern.ch/events/sql/Banner2.jpg" alt="" style="width:500px"&gt;
&lt;p&gt;Freitags - 16:30. Sie erhalten eine Email, dass Ihr SQL Server Installation in enorme Performance- Probleme geraten ist! Was nun? Wie können Sie das Problem identifizieren und effektiv lösen? Welche Tools stehen Ihnen dazu mit dem SQL Server 2008 (R2) zur
 Verfügung? &lt;/p&gt;
&lt;p&gt;In diesem Workshop werden Sie eine Reihe von unterschiedlichen Tools kennenlernen, mit denen Sie ein effektives Troubleshooting einer SQL Server 2008 (R2) Installation durchführen können. Sie werden einerseits lernen, die entsprechenden Problembereiche anhand
 bestimmter Scripte/Tools zu identifizieren, um diese anschließend aufgrund der gewonnenen Erkenntnisse zu beseitigen.
&lt;/p&gt;
&lt;p&gt;Mitglieder der .NET User Group Bern profitieren von einem zusätzlichen Rabatt. Der Rabattcode steht für Mitglieder in unserem internen Xing-Forum zur Verfügung. Bei einer Anmeldung diesen im Bemerkungsfeld des Anmeldeformulars eintragen.
&lt;/p&gt;
&lt;a href="http://www.sqlpassion.at/RegistrationPerf_CH.aspx"&gt;more&lt;/a&gt; &lt;/div&gt;
</description>
      <pubDate>Mon, 18 Jun 2012 08:00:00 Z</pubDate>
    </item>
    <item xml:base="http://www.dnug-bern.ch/Event2011.aspx#634751208000000000">
      <guid isPermaLink="true">http://www.dnug-bern.ch/Event2011.aspx#634751208000000000</guid>
      <link>http://www.dnug-bern.ch/Event2011.aspx#634751208000000000</link>
      <category>.NET User Group Bern Event</category>
      <title>CQRS mit Roger Rudin</title>
      <description>
&lt;div style="width:100%; padding:0; border-bottom:1px solid #666; display:block; margin-bottom:16px"&gt;
&lt;img src="http://www.dnug-bern.ch/images/be_silhouette.gif" alt="" style="border:0; float:left"&gt;
&lt;h1 style="margin:0; padding-top:5px; color:#666"&gt;.NET User Group Bern Event&lt;/h1&gt;
&lt;/div&gt;
&lt;br style="clear:left"&gt;
&amp;nbsp;
&lt;h2 style="margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; font-size:1.4em; font-weight:500; color:#555555; font-family:'Trebuchet MS',Arial,Helvetica"&gt;
Dienstag, 12. Juni 2012 (18:00 bis 21:00 Uhr)&lt;/h2&gt;
&lt;h3 style="margin-top:0.55em; margin-right:0px; margin-bottom:0.3em; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; color:#555555; font-family:'Trebuchet MS',Arial,Helvetica"&gt;
CQRS mit Roger Rudin&lt;/h3&gt;
&lt;p&gt;Kurz bevor es in die Sommerpause geht, treffen wir uns zum Thema CQRS mit Roger Rudin&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Abstract &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Immer mehr Entwickler verwenden Messaging Patterns und Domain Modelle in ihren N-Tier Architekturen. Manche sind über die zusätzliche Komplexität überrascht und fangen an sich zu fragen, ob sich das überhaupt lohnt. In dieser Präsentation stelle ich euch
 die fehlenden Patterns vor, welche benötigt werden um die Komplexität aus verteilten Systemarchitekturen herauszunehmen und diese zu vereinfachen.&lt;br&gt;
&lt;/p&gt;
&lt;strong&gt;Über Roger Rudin &lt;/strong&gt;
&lt;p&gt;Roger Rudin arbeitet als Software Architekt und agile Coach bei bbv Software Services AG.&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;Er beschäftigt sich seit vielen Jahren mit .NET-Technologien mit Schwerpunkt verteilte Systeme und Persistenz.&lt;br&gt;
&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anmeldung&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Bitte beachte, dass für dieses Treffen eine &lt;a title="Zur Anmeldung auf XING" href="https://www.xing.com/events/cqrs-roger-rudin-1092506" target="_blank"&gt;
Anmeldung&lt;/a&gt; erforderlich ist. Ohne Xing-Konto kannst Du auch unser Kontaktformular nutzen.&lt;/p&gt;
&lt;p&gt;Das Twitter-Hashtag für diese Veranstaltung: &lt;strong&gt;#dnugbecqrs&lt;/strong&gt;.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Die Aktivitäten können während der Veranstaltung &lt;a href="http://dnug-bern.ch/TwitterWall.aspx" target="_blank"&gt;
hier&lt;/a&gt; betrachtet werden.&lt;/p&gt;
&lt;p&gt;Wir freuen uns auf Deine Teilnahme!&lt;/p&gt;
&lt;p&gt;Martin Affolter, Kay Herzam und René Leupold&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
</description>
      <pubDate>Tue, 12 Jun 2012 18:00:00 +0200</pubDate>
    </item>
    <item xml:base="http://www.dnug-bern.ch/Event2011.aspx#634739112000000000">
      <guid isPermaLink="true">http://www.dnug-bern.ch/Event2011.aspx#634739112000000000</guid>
      <link>http://www.dnug-bern.ch/Event2011.aspx#634739112000000000</link>
      <category>.NET User Group Bern Event</category>
      <title>JavaScript für C#-Entwickler mit Golo Roden</title>
      <description>
&lt;div style="width:100%; padding:0; border-bottom:1px solid #666; display:block; margin-bottom:16px"&gt;
&lt;img src="http://www.dnug-bern.ch/images/be_silhouette.gif" alt="" style="border:0; float:left"&gt;
&lt;h1 style="margin:0; padding-top:5px; color:#666"&gt;.NET User Group Bern Event&lt;/h1&gt;
&lt;/div&gt;
&lt;br style="clear:left"&gt;
&lt;h2&gt;Dienstag, 29.&amp;nbsp;Mai 2012 (18:00 bis 21:00 Uhr) &lt;/h2&gt;
&lt;h3&gt;JavaScript für C#-Entwickler mit Golo Roden&lt;br&gt;
&lt;/h3&gt;
&lt;p&gt;Was im November 2011 mit einem Gesamtüberblick zum Thema &amp;quot;Rich-Internet Apps &amp;amp; Mobile Anwendungen mit HTML5, Javascript und Azure&amp;quot; begann, betrachten wir nun weiter in detaillierter Form. Nachdem wir mit Kay Herzam und Roland Krummenacher das Thema Azure
 vertieften, ist beim nächsten Treffen JavaScript an der Reihe. Für dieses Thema können wir erneut Golo Roden begrüssen, er wird JavaScript aus der Sicht eines C# Entwicklers beleuchten.
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Abstract&lt;/strong&gt; &lt;/p&gt;
&lt;p&gt;Seit Monaten bereitest Du dich auf Windows 8 und WinRT vor. Nun hat gerade Dein wichtigster Kunde angerufen, um Dir den Auftrag zur Entwicklung einer entsprechenden Anwendung zu erteilen. Dein anfänglicher Stolz ist jedoch schnell Ernüchterung gewichen,
 als die Anforderung genannt wurde, dass die Anwendung in JavaScript geschrieben werden müsse ... Diese Sprache hast Du bislang nämlich vollständig außer Acht gelassen. Was Du jetzt brauchst, ist ein JavaScript-Crashkurs für C#-Entwickler, der Dir auf die Sprünge
 hilft. Golo Roden stellt in zwei Stunden (fast) alles vor, was Du über JavaScript wissen musst, und zeigt - ganz nebenbei - dass JavaScript-Entwicklung nicht bedeutet, steinzeitlich mit vi auf der Konsole arbeiten zu müssen.
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Über Golo Roden&lt;/strong&gt; &lt;/p&gt;
&lt;p&gt;Golo Roden ist freiberuflicher Wissensvermittler und Technologieberater für Webtechnologien, Codequalität und agile Methoden. Zu diesen Themen berät er Firmen bei der Evaluierung, Erforschung und Verwendung geeigneter Technologien und Methoden. Darüber hinaus
 ist er journalistisch für Fachzeitschriften und als Referent und Content Manager für Konferenzen tätig. Für sein qualitativ hochwertiges Engagement in der Community wurde Golo von Microsoft als Most Valuable Professional (MVP) für C# ausgezeichnet.
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anmeldung&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Bitte beachte, dass für dieses Treffen eine &lt;a title="Zur Anmeldung auf XING" href="https://www.xing.com/events/javascript-entwickler-golo-roden-1079895" target="_blank"&gt;
Anmeldung&lt;/a&gt; erforderlich ist. Ohne Xing-Konto kannst Du auch unser Kontaktformular nutzen.&lt;/p&gt;
&lt;p&gt;Das Twitter-Hashtag für diese Veranstaltung: &lt;strong&gt;#dnugbejs2&lt;/strong&gt;.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Die Aktivitäten können während der Veranstaltung &lt;a href="http://dnug-bern.ch/TwitterWall.aspx" target="_blank"&gt;
hier&lt;/a&gt; betrachtet werden.&lt;/p&gt;
&lt;p&gt;Wir freuen uns auf Deine Teilnahme!&lt;/p&gt;
&lt;p&gt;Martin Affolter, Kay Herzam und René Leupold&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
</description>
      <pubDate>Tue, 29 May 2012 18:00:00 +0200</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">http://www.databinding.net/blog/post/2012/04/22/entity-framework-43-building-blocks-oder-wie-steuer-ich-die-datenbankversion.html</guid>
      <link>http://www.databinding.net/blog/post/2012/04/22/entity-framework-43-building-blocks-oder-wie-steuer-ich-die-datenbankversion.html</link>
      <author>ipt:linkTo_UnCryptMailto('nbjmup+'); (René)</author>
      <category>.NET Development</category>
      <category>Code First</category>
      <title>Entity Framework 4.3 - Building Blocks oder wie steuer ich die Datenbankversion</title>
      <description>Gelegentlich kommt es vor, dass die Datenbankversionen pro Umgebung unterschiedlich sein können. Bei meinen ersten versuchen ist mir das mit den SQL-Server Versionen 2005 und 2008 so ergangen.</description>
      <pubDate>Sun, 22 Apr 2012 07:04:00 +0200</pubDate>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"> Gelegentlich kommt es vor, dass die Datenbankversionen pro Umgebung unterschiedlich sein können. Bei meinen ersten versuchen ist mir das mit den SQL-Server Versionen 2005 und 2008 so ergangen.</content:encoded>
    </item>
    <item>
      <guid isPermaLink="false">http://graberj.wordpress.com/?p=1978</guid>
      <link>http://graberj.wordpress.com/2012/04/21/eine-bessere-konsole-fur-git/</link>
      <category>Tools</category>
      <category>.Net</category>
      <category>Beschleuniger</category>
      <title>Eine bessere Konsole für Git</title>
      <description>In letzter Zeit nutze ich auch unter Windows immer öfters Git. Dank dem Projekt Git for Windows braucht man nach dem Download nur den Installationsassistenten durchzuklicken und man kann los legen. Die mitgelieferte Git-Konsole bietet leider nur wenige
 Verbesserungen gegenüber dem mit Windows ausgelieferten cmd.exe. Um einen Text zu kopieren und wieder einzufügen sind nach [...]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=graberj.wordpress.com&amp;amp;blog=9035432&amp;amp;post=1978&amp;amp;subd=graberj&amp;amp;ref=&amp;amp;feed=1" width="1" height="1"&gt;</description>
      <pubDate>Sat, 21 Apr 2012 10:12:50 Z</pubDate>
      <comments>http://graberj.wordpress.com/2012/04/21/eine-bessere-konsole-fur-git/#comments</comments>
      <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Johnny Graber</dc:creator>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;In letzter Zeit nutze ich auch unter Windows immer öfters &lt;a href="http://git-scm.com/"&gt;Git&lt;/a&gt;. Dank dem Projekt &lt;a href="http://msysgit.github.com/"&gt;Git for Windows&lt;/a&gt; braucht man nach dem &lt;a href="http://code.google.com/p/msysgit/downloads/list?q=full+installer+for+official+git"&gt;Download&lt;/a&gt; nur den Installationsassistenten durchzuklicken und man kann los legen. &lt;/p&gt;
&lt;p&gt;Die mitgelieferte Git-Konsole bietet leider nur wenige Verbesserungen gegenüber dem mit Windows ausgelieferten cmd.exe. Um einen Text zu kopieren und wieder einzufügen sind nach wie vor die gleichen Verrenkungen nötig.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Console2 als Alternative&lt;/h2&gt;
&lt;p&gt;Mit &lt;a href="http://sourceforge.net/projects/console/?source=directory"&gt;Console2&lt;/a&gt; gibt es eine Alternative zu cmd.exe die sich mit einigen Anpassungen auch sehr gut als Umgebung für Git anbietet. Am einfachsten richtet man sich einen eigenen Tab für Git ein. Dazu kann man unter Edit / Settings den Einstellungsdialog starten und den Punkt Tabs öffnen:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://graberj.files.wordpress.com/2012/04/gitsettingsconsole.png"&gt;&lt;img src="http://graberj.files.wordpress.com/2012/04/gitsettingsconsole.png?w=293&amp;#038;h=300" alt="" title="Git Settings Console" width="293" height="300" class="aligncenter size-medium wp-image-1979" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;br /&gt;
Für meine Konsole habe ich diese Werte gesetzt:&lt;/p&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;th&gt;Feld&lt;/th&gt;
&lt;th&gt;Wert&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Title:&lt;/td&gt;
&lt;td&gt;GIT&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Icon:&lt;/td&gt;
&lt;td&gt;&lt;code&gt;C:\Program Files (x86)\Git\etc\git.ico&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Shell:&lt;/td&gt;
&lt;td&gt;&lt;code&gt;C:\Program Files (x86)\Git\bin\sh.exe --login -i&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Mit diesen Einstellungen kann man mit den gleichen Eingabemöglichkeiten wie von der Git-Konsole her gewöhnt arbeiten. Zusätzlich hat man aber all den Komfort der einem Console2 bietet, wie das einfache kopieren von Text durch markieren oder ein Einfügen über einen Klick aufs Mausrad.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://graberj.files.wordpress.com/2012/04/git_in_console2.png"&gt;&lt;img src="http://graberj.files.wordpress.com/2012/04/git_in_console2.png?w=300&amp;#038;h=148" alt="" title="Git in console2" width="300" height="148" class="aligncenter size-medium wp-image-1989" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;br /&gt;Einsortiert unter:&lt;a href='http://graberj.wordpress.com/category/tools/'&gt;Tools&lt;/a&gt; Tagged: &lt;a href='http://graberj.wordpress.com/tag/net/'&gt;.Net&lt;/a&gt;, &lt;a href='http://graberj.wordpress.com/tag/beschleuniger/'&gt;Beschleuniger&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/graberj.wordpress.com/1978/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/graberj.wordpress.com/1978/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/graberj.wordpress.com/1978/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/graberj.wordpress.com/1978/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/graberj.wordpress.com/1978/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/graberj.wordpress.com/1978/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/graberj.wordpress.com/1978/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/graberj.wordpress.com/1978/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/graberj.wordpress.com/1978/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/graberj.wordpress.com/1978/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/graberj.wordpress.com/1978/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/graberj.wordpress.com/1978/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/graberj.wordpress.com/1978/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/graberj.wordpress.com/1978/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=graberj.wordpress.com&amp;amp;blog=9035432&amp;amp;post=1978&amp;amp;subd=graberj&amp;amp;ref=&amp;amp;feed=1" width="1" height="1" /&gt;</content:encoded>
      <wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://graberj.wordpress.com/2012/04/21/eine-bessere-konsole-fur-git/feed/</wfw:commentRss>
      <slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments>
      <media:content url="http://1.gravatar.com/avatar/fd2bd6ebacb744ce20c57a9e4cbb252d?s=96&amp;d=identicon&amp;r=G" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">graberj</media:title>
      </media:content>
      <media:content url="http://graberj.files.wordpress.com/2012/04/gitsettingsconsole.png?w=293" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">Git Settings Console</media:title>
      </media:content>
      <media:content url="http://graberj.files.wordpress.com/2012/04/git_in_console2.png?w=300" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">Git in console2</media:title>
      </media:content>
    </item>
    <item>
      <guid isPermaLink="false">http://graberj.wordpress.com/?p=1906</guid>
      <link>http://graberj.wordpress.com/2012/04/16/portable-class-libraries/</link>
      <category>.Net</category>
      <category>Visual Studio</category>
      <category>webDotNet</category>
      <category>Windows Phone 7</category>
      <category>C#</category>
      <category>Silverlight</category>
      <category>VisualStudio</category>
      <title>.Net Framework übergreifend entwickeln mit Portable Class Libraries</title>
      <description>Mittlerweile gibt es neben dem .Net Framework 4 auch Silverlight, Windows Phone 7 und Xbox 360. Obwohl man überall in C# entwickeln kann stösst man doch schnell einmal an eine Grenze: Eine Klassenbibliothek vom vollen .Net Framework kann nicht in einem
 Silverlight-Projekt verwendet werden. Gleiches gilt für Windows Phone 7. Und um es noch ein [...]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=graberj.wordpress.com&amp;amp;blog=9035432&amp;amp;post=1906&amp;amp;subd=graberj&amp;amp;ref=&amp;amp;feed=1" width="1" height="1"&gt;</description>
      <pubDate>Mon, 16 Apr 2012 16:56:23 Z</pubDate>
      <comments>http://graberj.wordpress.com/2012/04/16/portable-class-libraries/#comments</comments>
      <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Johnny Graber</dc:creator>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;Mittlerweile gibt es neben dem .Net Framework 4 auch Silverlight, Windows Phone 7 und Xbox 360. Obwohl man überall in C# entwickeln kann stösst man doch schnell einmal an eine Grenze: Eine Klassenbibliothek vom vollen .Net Framework kann nicht in einem Silverlight-Projekt verwendet werden. Gleiches gilt für Windows Phone 7. Und um es noch ein wenig mühsamer zu machen sind Silverlight und Windows Phone 7 auch nicht kompatibel. &lt;/p&gt;
&lt;p&gt;Dies zeigt sich mit dieser Fehlermeldung wenn man versucht eine *.dll einzubinden:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://graberj.files.wordpress.com/2012/03/classlibraryerror.png"&gt;&lt;img src="http://graberj.files.wordpress.com/2012/03/classlibraryerror.png?w=600" alt="" title="Fehler wenn eine ClassLibrary aus .Net in Silverlight verwendet werden soll."   class="aligncenter size-full wp-image-1907" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Portable Library Tools als Lösung&lt;/h2&gt;
&lt;p&gt;Eine Entdeckung der &lt;a href="http://www.microsoft.com/switzerland/msdn/de/windowsconference/default.aspx"&gt;Tech Conference&lt;/a&gt; war für mich die &lt;a href="http://msdn.microsoft.com/en-us/library/gg597391.aspx"&gt;Portable Class Libraries&lt;/a&gt;. Dieser Projekt-Typ ist vergleichbar mit einer gewöhnlichen Class Library. Allerdings kann man mehrere Framework-Plattformen als Ziel wählen. &lt;/p&gt;
&lt;p&gt;Die einzelnen Frameworks haben eine grosse Menge an Funktionen die überall zur Verfügung stehen. So lange man in diesem Bereich bleibt ist dieser Projekttyp eine sehr gute Lösung um den Code nur einmal zu schreiben. Was genau geht und wo die Grenzen liegen ist in der &lt;a href="http://msdn.microsoft.com/en-us/library/gg597391.aspx"&gt;MSDN&lt;/a&gt; gut beschrieben.&lt;/p&gt;
&lt;p&gt;Benötigt man die Framework-Spezifischen Teile kann man immer noch mehrere Projekte machen und die *.cs Dateien verlinken.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Installation&lt;/h2&gt;
&lt;p&gt;Wie immer mehr Bibliotheken und Erweiterungen kann man die Erweiterung &lt;a href="http://visualstudiogallery.msdn.microsoft.com/b0e0b5e9-e138-410b-ad10-00cb3caf4981/"&gt;Portable Library Tools&lt;/a&gt; über &lt;a href="http://graberj.wordpress.com/2011/05/26/abhangigkeiten-auflosen-mit-nuget/"&gt;NuGet&lt;/a&gt; installieren. Sobald dies gemacht ist gibt es eine neue Projektvorlage:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://graberj.files.wordpress.com/2012/03/newportableclasslib.png"&gt;&lt;img src="http://graberj.files.wordpress.com/2012/03/newportableclasslib.png?w=600&amp;#038;h=337" alt="" title="Neue Projektvorlage" width="600" height="337" class="aligncenter size-full wp-image-1908" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Über die Projekteigenschaften kann man die Zielframeworks sehr einfach auswählen:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://graberj.files.wordpress.com/2012/03/portablefeatureenable.png"&gt;&lt;img src="http://graberj.files.wordpress.com/2012/03/portablefeatureenable.png?w=600" alt="" title="Auswahldialog für Target Frameworks"   class="aligncenter size-full wp-image-1909" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Der wiederverwendbare Code kann nun in diesem Projekt entwickelt werden und steht Anwendungen der aktivierten Frameworks zur Verfügung.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Ausblick&lt;/h2&gt;
&lt;p&gt;Windows 8 wird mit Metro noch ein weiteres Framework in die .Net Welt bringen. Gemäss den Informationen aus der Tech Conference von Mitte März in Baden gibt es aber eine gute Nachricht: Visual Studio 11 (oder wie man die Version am Ende nennt) wird diesen Projekttyp bereits integriert haben. Eine Nachinstallation wird so nicht nötig sein und damit auch den Anwendern der Express-Edition zur Verfügung stehen.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;br /&gt;Einsortiert unter:&lt;a href='http://graberj.wordpress.com/category/net/'&gt;.Net&lt;/a&gt;, &lt;a href='http://graberj.wordpress.com/category/visual-studio/'&gt;Visual Studio&lt;/a&gt;, &lt;a href='http://graberj.wordpress.com/category/webdotnet/'&gt;webDotNet&lt;/a&gt;, &lt;a href='http://graberj.wordpress.com/category/windows-phone-7/'&gt;Windows Phone 7&lt;/a&gt; Tagged: &lt;a href='http://graberj.wordpress.com/tag/net/'&gt;.Net&lt;/a&gt;, &lt;a href='http://graberj.wordpress.com/tag/c/'&gt;C#&lt;/a&gt;, &lt;a href='http://graberj.wordpress.com/tag/silverlight/'&gt;Silverlight&lt;/a&gt;, &lt;a href='http://graberj.wordpress.com/tag/visualstudio/'&gt;VisualStudio&lt;/a&gt;, &lt;a href='http://graberj.wordpress.com/tag/windows-phone-7/'&gt;Windows Phone 7&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/graberj.wordpress.com/1906/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/graberj.wordpress.com/1906/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/graberj.wordpress.com/1906/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/graberj.wordpress.com/1906/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/graberj.wordpress.com/1906/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/graberj.wordpress.com/1906/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/graberj.wordpress.com/1906/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/graberj.wordpress.com/1906/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/graberj.wordpress.com/1906/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/graberj.wordpress.com/1906/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/graberj.wordpress.com/1906/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/graberj.wordpress.com/1906/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/graberj.wordpress.com/1906/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/graberj.wordpress.com/1906/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=graberj.wordpress.com&amp;amp;blog=9035432&amp;amp;post=1906&amp;amp;subd=graberj&amp;amp;ref=&amp;amp;feed=1" width="1" height="1" /&gt;</content:encoded>
      <wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://graberj.wordpress.com/2012/04/16/portable-class-libraries/feed/</wfw:commentRss>
      <slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments>
      <media:content url="http://1.gravatar.com/avatar/fd2bd6ebacb744ce20c57a9e4cbb252d?s=96&amp;d=identicon&amp;r=G" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">graberj</media:title>
      </media:content>
      <media:content url="http://graberj.files.wordpress.com/2012/03/classlibraryerror.png" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">Fehler wenn eine ClassLibrary aus .Net in Silverlight verwendet werden soll.</media:title>
      </media:content>
      <media:content url="http://graberj.files.wordpress.com/2012/03/newportableclasslib.png" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">Neue Projektvorlage</media:title>
      </media:content>
      <media:content url="http://graberj.files.wordpress.com/2012/03/portablefeatureenable.png" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">Auswahldialog für Target Frameworks</media:title>
      </media:content>
    </item>
    <item p3:etag="W/&quot;CkECSX47fip7ImA9WhVVGEs.&quot;" xmlns:p3="http://schemas.google.com/g/2005">
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5763764290649132593.post-610707558823767045</guid>
      <link>http://feedproxy.google.com/~r/closed-loop/~3/Nz1TWTlItMU/rethinking-automated-testing.html</link>
      <author>noreply@blogger.com</author>
      <category domain="http://www.blogger.com/atom/ns#">testing</category>
      <title>Rethinking Automated Testing</title>
      <description>&lt;blockquote class="tr_bq"&gt;While you’ve been worrying about your BDD adverbs the iFart dev just made $40,000.&lt;/blockquote&gt;&lt;div style="text-align: right;"&gt;- &lt;a href="http://iainhunter.wordpress.com/2012/02/21/agile-punks-go-write-an-app/"&gt;Iain Hunter&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;Can you give 140 char synopsis of "opportunity cost of TDD?" &lt;br /&gt;
&lt;br /&gt;
Is &lt;a class="  twitter-hashtag pretty-link" href="https://twitter.com/#%21/search/%23TDD" title="#TDD"&gt;#&lt;b&gt;TDD&lt;/b&gt;&lt;/a&gt; always a "Best Practice"? Is there even any such thing? When shouldn't you use it? What could you do instead?&lt;/blockquote&gt;&lt;div style="text-align: right;"&gt;- &lt;a href="https://twitter.com/#%21/tastapod/status/191603564433522688"&gt;Conversation on Twitter&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;Testing implementation is terrible terrible terrible.&lt;/blockquote&gt;&lt;div style="text-align: right;"&gt;- &lt;a href="http://www.makinggoodsoftware.com/2012/01/27/the-evil-unit-test/#comment-103371"&gt;Matt Rogish&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
The pendulum is swinging back and forth in the TDD and developer-testing world...&lt;br /&gt;
I blogged over two years ago about&amp;nbsp;&lt;a href="http://blog.jonasbandi.net/2010/01/testing-backslash-recent-well-grounded.html"&gt;Testing Backlash&lt;/a&gt; and then again one year ago&amp;nbsp;&lt;a href="http://blog.jonasbandi.net/2011/06/thoughts-are-you-too-agile-for-tddbdd.html"&gt;Are you too agile for TDD/BDD?&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img alt="Pend" border="0" src="http://lh5.ggpht.com/-15A0CL9uyN0/T4s-cFQpJMI/AAAAAAAABMg/4wjB59wVWCs/pend.jpg?imgmax=800" style="float: right; margin-bottom: 5px; margin-left: 5px;" title="pend.jpg" width="180" /&gt;It seems the time has come for the pendulum to swing by once again. In an almost mystical conjunction a lot of alpha geeks are voicing current "new" insights about automated testing and TDD. &lt;br /&gt;
&lt;br /&gt;
Maybe this is the developer community climbing the ladder to another&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Dreyfus_model_of_skill_acquisition"&gt;stage of competence&lt;/a&gt; or to another&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/K%C3%BCbler-Ross_model"&gt;stage of grief&lt;/a&gt; (the viewpoint is probably depending of the pains in your current project)… but maybe it is just that alpha-geeks like any other intelligent beings are getting bored after a while and turn to new topics.&lt;br /&gt;
&lt;br /&gt;
Anyways, here is a list of the recent tide of &lt;i&gt;"let's rethink automated testing"&lt;/i&gt;:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Michael Feathers:&amp;nbsp;&lt;a href="https://plus.google.com/104920553571646483561/posts/fmyZi1MxMgo"&gt;Taking Automated Tests Off The Pedestal&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;DHH:&amp;nbsp;&lt;a href="http://37signals.com/svn/posts/3159-testing-like-the-tsa"&gt;Testing like the TSA&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Scott Bellware:&amp;nbsp;&lt;a class="ot-anchor" href="http://www.youtube.com/watch?v=LeVvj4HENOQ"&gt;The Inflection Point - How Long can you Safely Avoid Automated Testing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Alberto Gutierrez:&amp;nbsp;&lt;a href="http://www.makinggoodsoftware.com/2012/01/27/the-evil-unit-test/"&gt;The evil unit test.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Hopefully soon&amp;nbsp;Dan North: &lt;a href="https://twitter.com/#%21/tastapod/status/191532479927156738"&gt;The opportunity cost of TDD&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Just for completion I am reenumerating older reflections on the topic:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://blog.obiefernandez.com/content/2011/05/the-dark-side-beckons.html"&gt;The Dark Side Beckons?&lt;/a&gt; by Obie Fernandez&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.m3p.co.uk/blog/2011/04/25/tdd-embracing-failure/"&gt;Test-Driven Development and Embracing Failure&lt;/a&gt; by Steve Freeman&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.dalkescientific.com/writings/diary/archive/2009/12/29/problems_with_tdd.html"&gt;Problems with TDD&lt;/a&gt; an Essay by Andrew Dalke. Heavily discussed on &lt;a href="http://dalkescientific.blogspot.com/2009/12/problems-with-tdd.html"&gt;his blog&lt;/a&gt; and on &lt;a href="http://news.ycombinator.com/item?id=1020427"&gt;Hacker News&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Ayende's posts: &lt;a href="http://ayende.com/Blog/archive/2009/09/28/even-%3Cli%3Etests-has-got-to-justify-themselves.aspx"&gt;Even tests has got to justify themselves&lt;/a&gt; and &lt;a href="http://ayende.com/Blog/archive/2009/09/30/re-are-you-smart-enough-to-do-without-tdd.aspx"&gt;re: Are you smart enough to do without TDD&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;And finally Luce Francis brilliant presentation: &lt;a href="http://www.infoq.com/presentations/francl-testing-overrated;jsessionid=5C1654248C01CA209E70B7A5BEDE81B2"&gt;Testing is Overrated&lt;/a&gt; (matching &lt;a href="http://railspikes.com/2008/7/11/testing-is-overrated"&gt;blog post&lt;/a&gt;, &lt;a href="http://railspikes.com/2008/12/2/testing-is-overrated-great-talk"&gt;slides&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Update:&lt;/b&gt;&lt;br /&gt;
Tudor Girba: &lt;a href="http://www.humane-assessment.com/blog/when-testing-does-not-cut-it"&gt;When testing does not cut it&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="clear: right; font-size: 10px;"&gt;&lt;a href="http://twitter.com/jbandi"&gt;&lt;img align="left" alt="http://www.google.com/s2/favicons?domain=twitter.com" border="0" height="13px" src="http://www.google.com/s2/favicons?domain=twitter.com" style="border: 0 none; margin: 0px;" /&gt;If you like this, follow me on twitter ...&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5763764290649132593-610707558823767045?l=blog.jonasbandi.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/LBaNCIXuQJfVIOpbGN9ERdB0qgY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LBaNCIXuQJfVIOpbGN9ERdB0qgY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/LBaNCIXuQJfVIOpbGN9ERdB0qgY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LBaNCIXuQJfVIOpbGN9ERdB0qgY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=Nz1TWTlItMU:VR-cmNOz8us:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=Nz1TWTlItMU:VR-cmNOz8us:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=Nz1TWTlItMU:VR-cmNOz8us:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=Nz1TWTlItMU:VR-cmNOz8us:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=Nz1TWTlItMU:VR-cmNOz8us:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=Nz1TWTlItMU:VR-cmNOz8us:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=Nz1TWTlItMU:VR-cmNOz8us:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=Nz1TWTlItMU:VR-cmNOz8us:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=Nz1TWTlItMU:VR-cmNOz8us:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=Nz1TWTlItMU:VR-cmNOz8us:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=Nz1TWTlItMU:VR-cmNOz8us:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=Nz1TWTlItMU:VR-cmNOz8us:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=Nz1TWTlItMU:VR-cmNOz8us:Y59mnZtVT5U"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/Nz1TWTlItMU" height="1" width="1"/&gt;</description>
      <pubDate>Sun, 15 Apr 2012 23:32:00 +0200</pubDate>
      <link rel="replies" type="application/atom+xml" title="Post Comments" href="http://blog.jonasbandi.net/feeds/610707558823767045/comments/default" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="replies" type="text/html" title="1 Comments" href="http://www.blogger.com/comment.g?blogID=5763764290649132593&amp;postID=610707558823767045" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/610707558823767045?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/610707558823767045?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <updated xmlns="http://www.w3.org/2005/Atom">2012-05-13T00:11:08+02:00</updated>
      <content type="html" xmlns="http://www.w3.org/2005/Atom">
&lt;blockquote class="x_tr_bq"&gt;While you’ve been worrying about your BDD adverbs the iFart dev just made $40,000.&lt;/blockquote&gt;
&lt;div style="text-align:right"&gt;- &lt;a href="http://iainhunter.wordpress.com/2012/02/21/agile-punks-go-write-an-app/"&gt;
Iain Hunter&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;blockquote class="x_tr_bq"&gt;Can you give 140 char synopsis of &amp;quot;opportunity cost of TDD?&amp;quot;
&lt;br&gt;
&lt;br&gt;
Is &lt;a class="x_twitter-hashtag x_pretty-link" href="https://twitter.com/#%21/search/%23TDD" title="#TDD"&gt;
#&lt;b&gt;TDD&lt;/b&gt;&lt;/a&gt; always a &amp;quot;Best Practice&amp;quot;? Is there even any such thing? When shouldn't you use it? What could you do instead?&lt;/blockquote&gt;
&lt;div style="text-align:right"&gt;- &lt;a href="https://twitter.com/#%21/tastapod/status/191603564433522688"&gt;
Conversation on Twitter&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;blockquote class="x_tr_bq"&gt;Testing implementation is terrible terrible terrible.&lt;/blockquote&gt;
&lt;div style="text-align:right"&gt;- &lt;a href="http://www.makinggoodsoftware.com/2012/01/27/the-evil-unit-test/#comment-103371"&gt;
Matt Rogish&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
The pendulum is swinging back and forth in the TDD and developer-testing world...&lt;br&gt;
I blogged over two years ago about&amp;nbsp;&lt;a href="http://blog.jonasbandi.net/2010/01/testing-backslash-recent-well-grounded.html"&gt;Testing Backlash&lt;/a&gt; and then again one year ago&amp;nbsp;&lt;a href="http://blog.jonasbandi.net/2011/06/thoughts-are-you-too-agile-for-tddbdd.html"&gt;Are
 you too agile for TDD/BDD?&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
&lt;img alt="Pend" border="0" src="http://lh5.ggpht.com/-15A0CL9uyN0/T4s-cFQpJMI/AAAAAAAABMg/4wjB59wVWCs/pend.jpg?imgmax=800" title="pend.jpg" width="180" style="float:right; margin-bottom:5px; margin-left:5px"&gt;It seems the time has come for the pendulum to swing
 by once again. In an almost mystical conjunction a lot of alpha geeks are voicing current &amp;quot;new&amp;quot; insights about automated testing and TDD.
&lt;br&gt;
&lt;br&gt;
Maybe this is the developer community climbing the ladder to another&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Dreyfus_model_of_skill_acquisition"&gt;stage of competence&lt;/a&gt; or to another&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/K%C3%BCbler-Ross_model"&gt;stage of grief&lt;/a&gt;
 (the viewpoint is probably depending of the pains in your current project)… but maybe it is just that alpha-geeks like any other intelligent beings are getting bored after a while and turn to new topics.&lt;br&gt;
&lt;br&gt;
Anyways, here is a list of the recent tide of &lt;i&gt;&amp;quot;let's rethink automated testing&amp;quot;&lt;/i&gt;:&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;Michael Feathers:&amp;nbsp;&lt;a href="https://plus.google.com/104920553571646483561/posts/fmyZi1MxMgo"&gt;Taking Automated Tests Off The Pedestal&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;DHH:&amp;nbsp;&lt;a href="http://37signals.com/svn/posts/3159-testing-like-the-tsa"&gt;Testing like the TSA&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;Scott Bellware:&amp;nbsp;&lt;a class="x_ot-anchor" href="http://www.youtube.com/watch?v=LeVvj4HENOQ"&gt;The Inflection Point - How Long can you Safely Avoid Automated Testing&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;Alberto Gutierrez:&amp;nbsp;&lt;a href="http://www.makinggoodsoftware.com/2012/01/27/the-evil-unit-test/"&gt;The evil unit test.&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;Hopefully soon&amp;nbsp;Dan North: &lt;a href="https://twitter.com/#%21/tastapod/status/191532479927156738"&gt;
The opportunity cost of TDD&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;
&lt;br&gt;
Just for completion I am reenumerating older reflections on the topic:&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://blog.obiefernandez.com/content/2011/05/the-dark-side-beckons.html"&gt;The Dark Side Beckons?&lt;/a&gt; by Obie Fernandez
&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.m3p.co.uk/blog/2011/04/25/tdd-embracing-failure/"&gt;Test-Driven Development and Embracing Failure&lt;/a&gt; by Steve Freeman
&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.dalkescientific.com/writings/diary/archive/2009/12/29/problems_with_tdd.html"&gt;Problems with TDD&lt;/a&gt; an Essay by Andrew Dalke. Heavily discussed on
&lt;a href="http://dalkescientific.blogspot.com/2009/12/problems-with-tdd.html"&gt;his blog&lt;/a&gt; and on
&lt;a href="http://news.ycombinator.com/item?id=1020427"&gt;Hacker News&lt;/a&gt;. &lt;/li&gt;&lt;li&gt;Ayende's posts: &lt;a href="http://ayende.com/Blog/archive/2009/09/28/even-%3Cli%3Etests-has-got-to-justify-themselves.aspx"&gt;
Even tests has got to justify themselves&lt;/a&gt; and &lt;a href="http://ayende.com/Blog/archive/2009/09/30/re-are-you-smart-enough-to-do-without-tdd.aspx"&gt;
re: Are you smart enough to do without TDD&lt;/a&gt; &lt;/li&gt;&lt;li&gt;And finally Luce Francis brilliant presentation: &lt;a href="http://www.infoq.com/presentations/francl-testing-overrated;jsessionid=5C1654248C01CA209E70B7A5BEDE81B2"&gt;
Testing is Overrated&lt;/a&gt; (matching &lt;a href="http://railspikes.com/2008/7/11/testing-is-overrated"&gt;
blog post&lt;/a&gt;, &lt;a href="http://railspikes.com/2008/12/2/testing-is-overrated-great-talk"&gt;
slides&lt;/a&gt;) &lt;/li&gt;&lt;/ul&gt;
&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Update:&lt;/b&gt;&lt;br&gt;
Tudor Girba: &lt;a href="http://www.humane-assessment.com/blog/when-testing-does-not-cut-it"&gt;
When testing does not cut it&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;div style="clear:right; font-size:10px"&gt;&lt;a href="http://twitter.com/jbandi"&gt;&lt;img align="left" alt="http://www.google.com/s2/favicons?domain=twitter.com" border="0" height="13px" src="http://www.google.com/s2/favicons?domain=twitter.com" style="border:0 none; margin:0px"&gt;If
 you like this, follow me on twitter ...&lt;/a&gt;&lt;/div&gt;
&lt;div class="x_blogger-post-footer"&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/5763764290649132593-610707558823767045?l=blog.jonasbandi.net" alt=""&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/LBaNCIXuQJfVIOpbGN9ERdB0qgY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LBaNCIXuQJfVIOpbGN9ERdB0qgY/0/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/LBaNCIXuQJfVIOpbGN9ERdB0qgY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LBaNCIXuQJfVIOpbGN9ERdB0qgY/1/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="x_feedflare"&gt;&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=Nz1TWTlItMU:VR-cmNOz8us:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=Nz1TWTlItMU:VR-cmNOz8us:4cEx4HpKnUU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=Nz1TWTlItMU:VR-cmNOz8us:yIl2AUoC8zA"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=Nz1TWTlItMU:VR-cmNOz8us:I9og5sOYxJI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=Nz1TWTlItMU:VR-cmNOz8us:F7zBnMyn0Lo"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=Nz1TWTlItMU:VR-cmNOz8us:F7zBnMyn0Lo" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=Nz1TWTlItMU:VR-cmNOz8us:V_sGLiPBpWU"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=Nz1TWTlItMU:VR-cmNOz8us:V_sGLiPBpWU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=Nz1TWTlItMU:VR-cmNOz8us:gIN9vFwOqvQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=Nz1TWTlItMU:VR-cmNOz8us:gIN9vFwOqvQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=Nz1TWTlItMU:VR-cmNOz8us:cGdyc7Q-1BI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=Nz1TWTlItMU:VR-cmNOz8us:G79ilh31hkQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=Nz1TWTlItMU:VR-cmNOz8us:Y59mnZtVT5U"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/Nz1TWTlItMU" height="1" width="1"&gt;</content>
      <app:edited xmlns:app="http://www.w3.org/2007/app">2012-05-13T00:11:08.006+02:00</app:edited>
      <media:thumbnail url="http://lh5.ggpht.com/-15A0CL9uyN0/T4s-cFQpJMI/AAAAAAAABMg/4wjB59wVWCs/s72-c/pend.jpg?imgmax=800" height="72" width="72" xmlns:media="http://search.yahoo.com/mrss/"></media:thumbnail>
      <thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total>
      <feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blog.jonasbandi.net/2012/04/rethinking-automated-testing.html</feedburner:origLink>
    </item>
    <item>
      <guid isPermaLink="true">http://www.databinding.net/blog/post/2012/04/15/entity-framework-43-mapping-szenarien.html</guid>
      <link>http://www.databinding.net/blog/post/2012/04/15/entity-framework-43-mapping-szenarien.html</link>
      <author>ipt:linkTo_UnCryptMailto('nbjmup+'); (René)</author>
      <category>Code First</category>
      <category>.NET Development</category>
      <title>Entity Framework 4.3 Mapping Szenarien</title>
      <description>Vor ein paar Wochen wurde über Twitter gefachsimpelt, welche Vererbungsstrategie Standard bei Code First ist. Es kam sehr schnell die Antwort TPT. Da ich diesen Bereich mit der Version 4.1 durchgetestet h...</description>
      <pubDate>Sun, 15 Apr 2012 22:58:00 +0200</pubDate>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"> Vor ein paar Wochen wurde über Twitter gefachsimpelt, welche Vererbungsstrategie Standard bei Code First ist. Es kam sehr schnell die Antwort TPT. Da ich diesen Bereich mit der Version 4.1 durchgetestet habe und eigentlich TPH der Standard ist, wollte ich nun überprüfen, ob sich etwas zur Version 4.3 geändert hat.</content:encoded>
    </item>
    <item xml:base="http://www.dnug-bern.ch/Event2011.aspx#634696776000000000">
      <guid isPermaLink="true">http://www.dnug-bern.ch/Event2011.aspx#634696776000000000</guid>
      <link>http://www.dnug-bern.ch/Event2011.aspx#634696776000000000</link>
      <category>.NET User Group Bern Event</category>
      <title>Einführung in MongoDB mit Roger Rudin</title>
      <description>
&lt;div style="width:100%; padding:0; border-bottom:1px solid #666; display:block; margin-bottom:16px"&gt;
&lt;img src="http://www.dnug-bern.ch/images/be_silhouette.gif" alt="" style="border:0; float:left"&gt;
&lt;h1 style="margin:0; padding-top:5px; color:#666"&gt;.NET User Group Bern Event&lt;/h1&gt;
&lt;/div&gt;
&lt;br style="clear:left"&gt;
&lt;h2&gt;Dienstag, 10.&amp;nbsp;April 2012 (18:00 bis 21:00 Uhr) &lt;/h2&gt;
&lt;h3&gt;Einführung in MongoDB mit Roger Rudin&lt;br&gt;
&lt;/h3&gt;
&lt;p&gt;Im April treffen wir uns spontan ausserhalb des 2-Monats-Rhythmus zu einer Einführung in MongoDB mit Roger Rudin&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Abstract &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In den letzten Jahren sind etliche &amp;quot;NoSQL&amp;quot; Datenbanken entwickelt worden, welche unter Verwendung von Standardhardware enorme Skalierung und eine hohe Verfügbarkeit bieten. Grosse Internetplattformen wie Google, Facebook und Twitter setzen diese Technologie
 bereits sehr erfolgreich ein.&lt;br&gt;
&lt;br&gt;
In dieser Session&amp;nbsp;wird uns Roger Rudin&amp;nbsp;einen Einblick in MongoDB, einer dokumentenbasierten NoSQL Datenbank, geben. Wir werden uns anschauen, wann sich der Einsatz einer NoSQL Datenbank lohnt, und warum gerade MongoDB eine sehr attraktive Datenbank für .Net
 Entwickler ist.&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;Tauche mit uns ab in die schemalose Welt von NoSQL.&lt;br&gt;
&lt;/p&gt;
&lt;strong&gt;Über Roger Rudin &lt;/strong&gt;
&lt;p&gt;Roger Rudin arbeitet als Software Architekt und agile Coach bei bbv Software Services AG.&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;Er beschäftigt sich seit vielen Jahren mit .NET-Technologien mit Schwerpunkt verteilte Systeme und Persistenz.&lt;br&gt;
&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anmeldung&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Bitte beachte, dass für dieses Treffen eine &lt;a title="Zur Anmeldung auf XING" href="https://www.xing.com/events/einfuhrung-mongodb-roger-rudin-904252" target="_blank"&gt;
Anmeldung&lt;/a&gt; erforderlich ist. Ohne Xing-Konto kannst Du auch unser Kontaktformular nutzen.&lt;/p&gt;
&lt;p&gt;Das Twitter-Hashtag für diese Veranstaltung: &lt;strong&gt;#dnugbem&lt;/strong&gt;. Wir verzichten auf&amp;nbsp;mdb als&amp;nbsp;Suffix, damit keiner auf die Idee kommt, es handelt sich hierbei um MS Access ;-)&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Die Aktivitäten können während der Veranstaltung &lt;a href="http://dnug-bern.ch/TwitterWall.aspx" target="_blank"&gt;
hier&lt;/a&gt; betrachtet werden.&lt;/p&gt;
&lt;p&gt;Wir freuen uns auf Deine Teilnahme!&lt;/p&gt;
&lt;p&gt;Martin Affolter, Kay Herzam und René Leupold&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
</description>
      <pubDate>Tue, 10 Apr 2012 18:00:00 +0200</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">http://www.databinding.net/blog/post/2012/04/10/entity-framework-ein-neuer-workaround-fuer-2nd-level-cache-mit-dbcontext.html</guid>
      <link>http://www.databinding.net/blog/post/2012/04/10/entity-framework-ein-neuer-workaround-fuer-2nd-level-cache-mit-dbcontext.html</link>
      <author>ipt:linkTo_UnCryptMailto('nbjmup+'); (René)</author>
      <category>Code First</category>
      <category>.NET Development</category>
      <title>Entity Framework - Ein neuer Workaround für 2nd Level Cache mit dem DbContext</title>
      <description>Bisher habe ich den 2nd Level Cache nur über einen Umweg über den ObjectContext zum laufen gebracht. Pawel Kadluczka vom EF-Team hat Ende März einen weiteren Ansatz in seinen Blog veröffentlicht, der ohne den Objec...</description>
      <pubDate>Tue, 10 Apr 2012 13:07:00 +0200</pubDate>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"> Bisher habe ich den 2nd Level Cache nur über einen Umweg über den ObjectContext zum laufen gebracht. Pawel Kadluczka vom EF-Team hat Ende März einen weiteren Ansatz in seinen Blog veröffentlicht, der ohne den ObjectContext auskommt.</content:encoded>
    </item>
    <item>
      <guid isPermaLink="false">http://graberj.wordpress.com/?p=1928</guid>
      <link>http://graberj.wordpress.com/2012/03/31/buch-rezension-zu-mcpd-70-519-exam-ref/</link>
      <category>.Net</category>
      <category>Bücher</category>
      <category>webDotNet</category>
      <category>webRead</category>
      <category>C#</category>
      <category>Zertifizierung</category>
      <title>Buch-Rezension zu „MCPD 70-519 Exam Ref“</title>
      <description>“MCPD 70-519 Exam Ref: Designing and Developing Web Applications Using Microsoft .NET Framework 4” von Tony Northrup erschien im November 2011 bei Microsoft Press. Dieses Buch ist zur Vorbereitung der MCPD Zertifizierung 70-519 geschrieben worden. Entsprechend
 deckt es die Themen für die Zertifizierung sehr gut ab, geht aber nicht darüber hinaus. &amp;nbsp;&amp;nbsp; &amp;nbsp; Aufbau Das [...]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=graberj.wordpress.com&amp;amp;blog=9035432&amp;amp;post=1928&amp;amp;subd=graberj&amp;amp;ref=&amp;amp;feed=1" width="1" height="1"&gt;</description>
      <pubDate>Sat, 31 Mar 2012 10:37:12 Z</pubDate>
      <comments>http://graberj.wordpress.com/2012/03/31/buch-rezension-zu-mcpd-70-519-exam-ref/#comments</comments>
      <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Johnny Graber</dc:creator>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;&lt;a href="http://shop.oreilly.com/product/0790145317780.do"&gt;&lt;img src="http://graberj.files.wordpress.com/2012/03/9780735657267_min.png?w=600" alt="" title="70-519 Exam Ref"   class="alignleft size-full wp-image-1933" /&gt;&lt;/a&gt;&amp;#8220;&lt;a href="http://shop.oreilly.com/product/0790145317780.do"&gt;MCPD 70-519 Exam Ref: Designing and Developing Web Applications Using Microsoft .NET Framework 4&lt;/a&gt;&amp;#8221; von Tony Northrup erschien im November 2011 bei Microsoft Press.&lt;/p&gt;
&lt;p&gt;Dieses Buch ist zur Vorbereitung der &lt;a href="http://www.microsoft.com/learning/en/us/exam.aspx?id=70-519"&gt;MCPD Zertifizierung 70-519&lt;/a&gt; geschrieben worden. Entsprechend deckt es die Themen für die Zertifizierung sehr gut ab, geht aber nicht darüber hinaus.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Aufbau&lt;/h2&gt;
&lt;p&gt;Das Buch folgt genau dem &lt;a href="http://www.microsoft.com/learning/en/us/exam.aspx?id=70-519#tab2"&gt;Prüfungsumfang&lt;/a&gt;. So genau dass sowohl die Hauptkapitel wie auch die Unterkapitel gleich benannt wurden wie auf der Prüfungsseite. Dies hilft einerseits beim finden des entsprechenden Kapitels, andererseits ist das Buch so recht zerstückelt. Um zu verstehen wie die einzelnen Teile zusammenarbeiten muss man zwingend das ganze Buch lesen.&lt;/p&gt;
&lt;p&gt;Am Ende jedes Unterkapitels gibt es eine Zusammenfassung und Fragen zum gerade behandelten Thema. Bei den Fragen sollte man nicht nur auf die Fragen an sich achten, sondern auch auf das Szenario in das die Fragen eingebettet sind. Ein genaues Lesen der Beschreibung macht das Beantworten der Fragen deutlich einfacher.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Inhalt&lt;/h2&gt;
&lt;p&gt;Die Themen werden entsprechend der Stufe MCPD auf einer höheren Abstraktionsebene behandelt als bei den Training-Kits für die Technology Specialist Zertifizierungen. Hier geht es mehr darum zu wissen was es für verschiedene Caching-Möglichkeiten gibt als wie man diese aktiviert. Das man auch die Details kennt hat man ja bereits mit den TS-* Zertifizierungen bewiesen.&lt;/p&gt;
&lt;p&gt;Behandelt wird alles vom Strukturieren einer Anwendung bis zur passenden Deployment Strategie in diesen 6 Kapiteln:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Design application architectures&lt;/li&gt;
&lt;li&gt;Design the user experience&lt;/li&gt;
&lt;li&gt;Design data strategies and structures&lt;/li&gt;
&lt;li&gt;Design a security architecture and implementation&lt;/li&gt;
&lt;li&gt;Prepare for and investigate application issues&lt;/li&gt;
&lt;li&gt;Design a deployment strategy&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Was fehlt&lt;/h2&gt;
&lt;p&gt;Für die Zertifizierung hat das Buch alles wesentliche abgedeckt. Dort wo es mir an praktischer Erfahrung fehlte oder wo ich bedarf nach einer detaillierteren Erklärung hatte half mir das MSDN weiter.&lt;/p&gt;
&lt;p&gt;Um das Buch für etwas anderes als die Prüfungsvorbereitung zu nutzen fehlt allerdings recht viel. Neben den geprüften Technologien werden keinerlei Informationen über Alternativen genannt. Wer nur dieses Buch hat und damit Lösungen aufbauen will wird so einiges verpassen. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Fazit&lt;/h2&gt;
&lt;p&gt;Für die Prüfungsvorbereitung ist dieses Buch eine sehr gute Wahl. Man bekommt alles notwendige um sich solide vorzubereiten. Man muss sich aber im klaren sein das Alternativen wie &lt;a href="http://nhforge.org/Default.aspx"&gt;NHibernate&lt;/a&gt; oder &lt;a href="http://logging.apache.org/log4net/"&gt;Log4net&lt;/a&gt; mit keinem Wort erwähnt werden. Der Nutzen über die Zertifizierung hinaus ist dadurch doch recht limitiert.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Zum Buch&lt;/h2&gt;
&lt;p&gt;&amp;#8220;&lt;a href="http://shop.oreilly.com/product/0790145317780.do"&gt;MCPD 70-519 Exam Ref: Designing and Developing Web Applications Using Microsoft .NET Framework 4&lt;/a&gt;&amp;#8221;  von Tony Northrup, 2011 Microsoft Press, ISBN 978-0-7356-5726-7, 304 Seiten, Englisch&lt;/p&gt;
&lt;br /&gt;Einsortiert unter:&lt;a href='http://graberj.wordpress.com/category/net/'&gt;.Net&lt;/a&gt;, &lt;a href='http://graberj.wordpress.com/category/bucher/'&gt;Bücher&lt;/a&gt;, &lt;a href='http://graberj.wordpress.com/category/webdotnet/'&gt;webDotNet&lt;/a&gt;, &lt;a href='http://graberj.wordpress.com/category/webread/'&gt;webRead&lt;/a&gt; Tagged: &lt;a href='http://graberj.wordpress.com/tag/net/'&gt;.Net&lt;/a&gt;, &lt;a href='http://graberj.wordpress.com/tag/bucher/'&gt;Bücher&lt;/a&gt;, &lt;a href='http://graberj.wordpress.com/tag/c/'&gt;C#&lt;/a&gt;, &lt;a href='http://graberj.wordpress.com/tag/zertifizierung/'&gt;Zertifizierung&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/graberj.wordpress.com/1928/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/graberj.wordpress.com/1928/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/graberj.wordpress.com/1928/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/graberj.wordpress.com/1928/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/graberj.wordpress.com/1928/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/graberj.wordpress.com/1928/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/graberj.wordpress.com/1928/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/graberj.wordpress.com/1928/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/graberj.wordpress.com/1928/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/graberj.wordpress.com/1928/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/graberj.wordpress.com/1928/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/graberj.wordpress.com/1928/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/graberj.wordpress.com/1928/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/graberj.wordpress.com/1928/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=graberj.wordpress.com&amp;amp;blog=9035432&amp;amp;post=1928&amp;amp;subd=graberj&amp;amp;ref=&amp;amp;feed=1" width="1" height="1" /&gt;</content:encoded>
      <wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://graberj.wordpress.com/2012/03/31/buch-rezension-zu-mcpd-70-519-exam-ref/feed/</wfw:commentRss>
      <slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments>
      <media:content url="http://1.gravatar.com/avatar/fd2bd6ebacb744ce20c57a9e4cbb252d?s=96&amp;d=identicon&amp;r=G" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">graberj</media:title>
      </media:content>
      <media:content url="http://graberj.files.wordpress.com/2012/03/9780735657267_min.png" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">70-519 Exam Ref</media:title>
      </media:content>
    </item>
    <item>
      <guid isPermaLink="false">http://schaedlerdaniel.wordpress.com/?p=614</guid>
      <link>http://schaedlerdaniel.wordpress.com/2012/03/28/schritt-fur-schritt-zum-eigenen-generischen-repository/</link>
      <category>C#</category>
      <category>Entity Framework</category>
      <category>EntityKey</category>
      <category>Generic Repository</category>
      <category>Generic Repository with Entity Framework</category>
      <category>ObjectSet</category>
      <title>Schritt für Schritt zum eigenen generischen Repository</title>
      <description>Das Speichern und Abfragen von Daten wäre mit dem klassischen Repository-Pattern viel zu aufwändig für kleinere Projekte. In Anlehnung an das hier, in Verbindung mit dem Unit Of Work Pattern, verwendete generische Repository, habe ich mir überlegt, dass
 es doch für kleinere Projekte auch eine Lösung geben sollte, die nicht so viel Aufwand nach sich [...]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=schaedlerdaniel.wordpress.com&amp;amp;blog=16378069&amp;amp;post=614&amp;amp;subd=schaedlerdaniel&amp;amp;ref=&amp;amp;feed=1" width="1" height="1"&gt;</description>
      <pubDate>Wed, 28 Mar 2012 09:41:43 Z</pubDate>
      <comments>http://schaedlerdaniel.wordpress.com/2012/03/28/schritt-fur-schritt-zum-eigenen-generischen-repository/#comments</comments>
      <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">schaedlerdaniel</dc:creator>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;Das Speichern und Abfragen von Daten wäre mit dem klassischen Repository-Pattern viel zu aufwändig für kleinere Projekte. In Anlehnung an das hier, in Verbindung mit dem &lt;a href="http://msdn.microsoft.com/en-us/magazine/dd882510.aspx" target="_blank"&gt;Unit Of Work Pattern&lt;/a&gt;, verwendete generische Repository, habe ich mir überlegt, dass es doch für kleinere Projekte auch eine Lösung geben sollte, die nicht so viel Aufwand nach sich zieht. &lt;/p&gt;
&lt;p&gt;Als Grundlage, oder besser gesagt als Ausgangspunkt habe ich mir diesen &lt;a href="http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application" target="blank"&gt;Artikel&lt;/a&gt; zur Brust genommen.&lt;/p&gt;
&lt;p&gt;Wie wollen wir vorgehen?&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Wir erstellen uns ein ganz triviales Model (Adressverwaltung)&lt;/li&gt;
&lt;li&gt;Dann erstellen wir uns Schritt für Schritt das Repository&lt;/li&gt;
&lt;li&gt;Am Schluss ziehen wir noch ein Fazit aus dem Artikel&lt;/li&gt;
&lt;ol&gt;
&lt;h4 style="color:Black;"&gt;Erstellung des Models&lt;/h4&gt;
&lt;p&gt;In Anbetracht, dass nicht zwingend die Korrektheit der Datenmodellierung und der verwendeten Typen im Mittelpunkt steht, erstellen wir uns das Modell wie folgt.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://schaedlerdaniel.files.wordpress.com/2012/03/generisches-repository.jpg"&gt;&lt;img src="http://schaedlerdaniel.files.wordpress.com/2012/03/generisches-repository.jpg?w=600" alt="Das Modell unserer Adressverwaltung" title="Generisches Repository"   class="aligncenter size-full wp-image-618" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Wichtig an diesem Punkt ist, dass die Pluralisierung nicht geändert wird (hierzu später mehr bei der Erstellung des Repositories). Die Eigenschaften für die Personen-Entität sind hier represäntativ für alle anderen auch.&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://schaedlerdaniel.files.wordpress.com/2012/03/generisches-repository.jpg"&gt;&lt;img src="http://schaedlerdaniel.files.wordpress.com/2012/03/generisches-repository.jpg?w=600" alt="Das Modell unserer Adressverwaltung" title="Generisches Repository"   class="aligncenter size-full wp-image-618" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Eine Spezialität ist die komplexe Eigenschaft Persistance, welch die Attribute für &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CreateDate&lt;/li&gt;
&lt;li&gt;ModifyDate&lt;/li&gt;
&lt;li&gt;Creator&lt;/li&gt;
&lt;li&gt;Modifier&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;beherbergt. Schön wäre es ja, wenn alle Attribute bei der entsprechenden Operation des Repositories, Add, Update automatisch aktualisiert wird (dazu später mehr).&lt;/p&gt;
&lt;p&gt;Soweit so gut, wir haben unsere Modell für die 1001 Adressverwaltung erstellt. Wollen wir doch zum nächsten Schritt übergehen, die Erstellung des Repositories.&lt;/p&gt;
&lt;h5&gt;Die Repository Erstellung&lt;/h5&gt;
&lt;/p&gt;
&lt;p&gt;Damit wir mit unserem Repository die CRUD Operation unterstützen können brauchen wir folgende Methoden:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rumpf des Repositories&lt;/li&gt;
&lt;li&gt;Add&lt;/li&gt;
&lt;li&gt;Remove&lt;/li&gt;
&lt;li&gt;Update&lt;/li&gt;
&lt;li&gt;GetObjectById&lt;/li&gt;
&lt;li&gt;GetObjectByQuery&lt;/li&gt;
&lt;li&gt;Persistance Attribute automatisch erstellen /aktualisieren&lt;/li&gt;
&lt;/ul&gt;
&lt;h6&gt;Rumpf des Repositories&lt;/h6&gt;
&lt;p&gt;Damit wir die restlichen Methoden implementieren können müssen wir das Repository wie folgt erstellen:&lt;/p&gt;
&lt;p&gt;&lt;pre class="brush: csharp;"&gt;
namespace GenericRepositoryPattern
{
    public class Repository&amp;lt;T&amp;gt; : IDisposable where T: EntityObject
    {
        /// &amp;lt;summary&amp;gt;
        /// The context of the database.
        /// &amp;lt;/summary&amp;gt;
        private readonly AddressModelContainer context;
        /// &amp;lt;summary&amp;gt;
        /// The related objectSet to the context. Is dependent
        /// of the context.
        /// &amp;lt;/summary&amp;gt;
        private readonly ObjectSet&amp;lt;T&amp;gt; objectSet;
        /// &amp;lt;summary&amp;gt;
        /// Constructor to initialize the context and the
        /// objectSet.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name=&amp;quot;context&amp;quot;&amp;gt;The context of the model.&amp;lt;/param&amp;gt;
        public Repository(AddressModelContainer context)
        {
            this.context = context;

            if (context != null) 
            { 
                this.objectSet = context.CreateObjectSet&amp;lt;T&amp;gt;();
                this.context.SavingChanges +=new EventHandler(context_SavingChanges);
            }
        }
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;(Anmerkung: Die Wiedergabe des Code’s ist gekürzt).&lt;br /&gt;
Wichtig hierbei ist, dass der Context von aussen her dem Konstruktor übergeben werden muss und das &lt;a href="http://msdn.microsoft.com/de-de/library/dd412719.aspx" target="_blank"&gt;ObjectSet&lt;/a&gt; vom instantiierten Context das ObjectSet erhält.&lt;/p&gt;
&lt;h6&gt;Add Methode&lt;/h6&gt;
&lt;p&gt;Damit wir ein neues Objekt zu unserem ObjectContex hinzufügen können müssen wir die Methode wie folgt implementieren.&lt;/p&gt;
&lt;p&gt;&lt;pre class="brush: csharp;"&gt;
        /// &amp;lt;summary&amp;gt;
        /// Add's a newly created entity to the
        /// objectSet
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name=&amp;quot;entity&amp;quot;&amp;gt;The newly created entity.&amp;lt;/param&amp;gt;
        public void Add(T entity)
        {
            this.objectSet.AddObject(entity);            
            this.context.SaveChanges();                    
        }
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Also eine ganz einfache Sache. Als nächstes wenden wir uns der Remove Methode zu.&lt;/p&gt;
&lt;h6&gt;Remove Methode&lt;/h6&gt;
&lt;p&gt;Das Entfernen eines Objektes ist relativ rasch implementiert:&lt;/p&gt;
&lt;p&gt;&lt;pre class="brush: csharp;"&gt;
        public void Remove(T entity)
        {
            if (entity != null)
            {
                this.objectSet.Attach(entity);
                this.context.DeleteObject(entity);
                this.context.SaveChanges();
            }
        }
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Also keine Hexerei. Als nächstes wenden wir uns der Update Methode zu und schauen diese genauer an.&lt;/p&gt;
&lt;h6&gt;Update Methode&lt;/h6&gt;
&lt;p&gt;Die Update Methode zeigt sich in ihrer Ausprägung so:&lt;/p&gt;
&lt;p&gt;&lt;pre class="brush: csharp;"&gt;
        public void Update(T entity)
        {
            this.objectSet.Attach(entity);
            this.context.ObjectStateManager.ChangeObjectState(entity, EntityState.Modified);        
            this.context.SaveChanges();
        }
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Damit der Context weiss, dass sich was geändert hat muss die Entität an den Context wieder „Attached“ und im &lt;a href="http://msdn.microsoft.com/de-de/library/system.data.objects.objectstatemanager.aspx" target="_blank"&gt;ObjectStateManager&lt;/a&gt; der EntityState auf Modified gestellt werden. Dann speichert der Context die Daten aktualisiert.&lt;/p&gt;
&lt;h6&gt;GetObjectById&lt;/h6&gt;
&lt;p&gt;Damit wir ein Object vom Typ Person erhalten, anhand der übergebenen Id, erstellen wir uns in der Methode einen EntityKey und einem KeyValuePair. Das Attribut dass die Id verkörpert heiss auch „Id“.&lt;/p&gt;
&lt;p&gt;&lt;pre class="brush: csharp;"&gt;
        public T GetById(Int32 id)
        {
            string entitySet = string.Format(@&amp;quot;{0}Set&amp;quot;, typeof(T).Name);
            KeyValuePair&amp;lt;string, object&amp;gt; member = new KeyValuePair&amp;lt;string, object&amp;gt;(&amp;quot;Id&amp;quot;, id);
            IEnumerable&amp;lt;KeyValuePair&amp;lt;string, object&amp;gt;&amp;gt; values = new KeyValuePair&amp;lt;string, object&amp;gt;[] { member };

            EntityKey key = new EntityKey(entitySet, values);

            return (T)this.context.GetObjectByKey(key);
        }
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Und hier sehen wir auch wieso wir die Pluralisierung PersonSet belassen haben. Damit der Context weiss in welchem Set er suchen soll müssen wir dieses übergeben. Das erreichen wird mit dem kleinen Codeschnipsel&lt;/p&gt;
&lt;p&gt;&lt;pre class="brush: csharp;"&gt;
string entitySet = string.Format(@&amp;quot;{0}Set&amp;quot;, typeof(T).Name);
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Danach wird der &lt;a href="http://msdn.microsoft.com/de-de/library/dd283138.aspx" target="_blank"&gt;EntityKey&lt;/a&gt; erstellt und dem Context zur Abfrage übergeben. Das gefundene Object casten wird dann in den generischen Typ den wir übergeben haben.&lt;/p&gt;
&lt;h6&gt;GetObjectByQuery&lt;/h6&gt;
&lt;p&gt;Damit wir spezifisch ein Objekt, oder auch mehrere zurück erhalten können wir diese mit dem entsprechenden Methode und einer Func zurück holen. Als Beispiel: Wenn ich eine Person haben möchte bei welchem ich nur den Vornahmen und den Nachnamen haben möchte, dann lege ich beim Aufrufer der Methode folgende Funktion fest:&lt;/p&gt;
&lt;p&gt;&lt;pre class="brush: csharp;"&gt;
Func&amp;lt;Person, bool&amp;gt; functionPerson = person =&amp;gt; person.FirstName.ToLower().Equals(&amp;quot;hans&amp;quot;);
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Die kann dann der Methode übergeben werden und diese erstellt dann auch das Resultat anhand der übergebenen Methode.&lt;/p&gt;
&lt;p&gt;&lt;pre class="brush: csharp;"&gt;
        public IEnumerable&amp;lt;T&amp;gt; GetObjectByQuery(Func&amp;lt;T, bool&amp;gt; customQuery)
        {
            if (customQuery == null)
            {
                throw new ArgumentNullException(&amp;quot;parameter: customquery must be given by caller!&amp;quot;);
            }

            List&amp;lt;T&amp;gt; result = this.objectSet.Where(customQuery).ToList();
            result.ForEach(this.objectSet.Detach);
            return result;
        }
[/csharp]
&amp;lt;p&amp;gt;Wichtig ist nur, dass die gefundenen Objekte vom Context getrennt werden, damit diese auch ausserhalb der Verwendung des Contextes verwendet werden können.&amp;lt;/p&amp;gt;
&amp;lt;h6&amp;gt;Persistance Attribute aktualisieren&amp;lt;/h6&amp;gt;
&amp;lt;p&amp;gt;Dem Leser wird nicht entgangen sein, dass im Konstruktor der Context mit seinem Ereignis SavingChanges verknüpft worden ist. Hier werden alle relevanten Attribute vom komplexen Property IPersistance aktualisiert oder erstellt. Die Ereignisbehandlung sieht dann so aus:&amp;lt;/p&amp;gt;
[code language=&amp;quot;csharp&amp;quot;]
        void context_SavingChanges(object sender, EventArgs e)
        {
            this.context.ObjectStateManager.GetObjectStateEntries(EntityState.Added).ToList().ForEach(entity =&amp;gt; {
                if (entity != null &amp;amp;&amp;amp; entity.Entity != null &amp;amp;&amp;amp; entity.Entity.GetType().GetProperty(&amp;quot;Persistance&amp;quot;) != null)
                {
                    IPersistance persistance = CreatePersistance();
                    entity.Entity.GetType().GetProperty(&amp;quot;Persistance&amp;quot;).SetValue(entity.Entity, persistance, null);
                }
            });

            this.context.ObjectStateManager.GetObjectStateEntries(EntityState.Modified).ToList().ForEach(entity =&amp;gt;
            {
                if (entity != null &amp;amp;&amp;amp; entity.Entity != null &amp;amp;&amp;amp; entity.Entity.GetType().GetProperty(&amp;quot;Persistance&amp;quot;) != null)
                {
                    UpdatePersistance(entity.Entity);
                }
            });
        }
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Hier wird eigentlich nicht’s anderes gemacht, als das alle Entitäten die den Status Added oder Modified haben das Persistance komplexe Property angepasst. Für das sind dann die zwei Methoden zuständig.&lt;/p&gt;
&lt;p&gt;&lt;pre class="brush: csharp;"&gt;
        private IPersistance CreatePersistance()
        {
            IPersistance persistance = new IPersistance();
            persistance.CreateDate = DateTime.Now;
            persistance.ModifyDate = DateTime.Now;
            persistance.Creator = WindowsIdentity.GetCurrent().Name;
            persistance.Modifier = persistance.Creator;
            return persistance;
        }
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Wird verwendet wenn eine neue Entität persistiert wird und die nachfolgende wenn eine Entität geändert worden ist.&lt;/p&gt;
&lt;p&gt;&lt;pre class="brush: csharp;"&gt;
        private void UpdatePersistance(object entity)
        {
            if (typeof(T).GetProperty(&amp;quot;Persistance&amp;quot;) != null)
            {
                IPersistance persistance = (IPersistance)typeof(T).GetProperty(&amp;quot;Persistance&amp;quot;).GetValue(entity, null);
                if (persistance != null)
                {
                    persistance.Modifier = WindowsIdentity.GetCurrent().Name;
                    persistance.ModifyDate = DateTime.Now;
                }
            }
        }
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Zur Übersicht noch der vollständige Code des gesamten Repositories.&lt;/p&gt;
&lt;p&gt;&lt;pre class="brush: csharp;"&gt;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Objects.DataClasses;
using GenericRepositoryPattern.Model;
using System.Data.Objects;
using System.Data;
using System.Security.Principal;
using System.Reflection;

namespace GenericRepositoryPattern
{
    /// &amp;lt;summary&amp;gt;
    /// Generic repository.
    /// &amp;lt;/summary&amp;gt;
    /// &amp;lt;typeparam name=&amp;quot;T&amp;quot;&amp;gt;For example it could be a model entity Person&amp;lt;/typeparam&amp;gt;
    public class Repository&amp;lt;T&amp;gt; : IDisposable where T: EntityObject
    {
        /// &amp;lt;summary&amp;gt;
        /// The context of the database.
        /// &amp;lt;/summary&amp;gt;
        private readonly AddressModelContainer context;
        /// &amp;lt;summary&amp;gt;
        /// The related objectSet to the context. Is dependent
        /// of the context.
        /// &amp;lt;/summary&amp;gt;
        private readonly ObjectSet&amp;lt;T&amp;gt; objectSet;
        /// &amp;lt;summary&amp;gt;
        /// Constructor to initialize the context and the
        /// objectSet.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name=&amp;quot;context&amp;quot;&amp;gt;The context of the model.&amp;lt;/param&amp;gt;
        public Repository(AddressModelContainer context)
        {
            this.context = context;

            if (context != null) 
            { 
                this.objectSet = context.CreateObjectSet&amp;lt;T&amp;gt;();
                this.context.SavingChanges +=new EventHandler(context_SavingChanges);
            }
        }
        /// &amp;lt;summary&amp;gt;
        /// Get's a specific entity by it's key.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name=&amp;quot;id&amp;quot;&amp;gt;The id from the object to retrieve.&amp;lt;/param&amp;gt;
        /// &amp;lt;returns&amp;gt;The object if it's present in the db, or NULL if not existent.&amp;lt;/returns&amp;gt;
        public T GetById(Int32 id)
        {
            string entitySet = string.Format(@&amp;quot;{0}Set&amp;quot;, typeof(T).Name);
            KeyValuePair&amp;lt;string, object&amp;gt; member = new KeyValuePair&amp;lt;string, object&amp;gt;(&amp;quot;Id&amp;quot;, id);
            IEnumerable&amp;lt;KeyValuePair&amp;lt;string, object&amp;gt;&amp;gt; values = new KeyValuePair&amp;lt;string, object&amp;gt;[] { member };

            EntityKey key = new EntityKey(entitySet, values);

            return (T)this.context.GetObjectByKey(key);
        }
        /// &amp;lt;summary&amp;gt;
        /// Allows the user to query the db with a custom
        /// function to retrieve data from the specific type
        /// of entity.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name=&amp;quot;customQuery&amp;quot;&amp;gt;Created outisde by caller&amp;lt;/param&amp;gt;
        /// &amp;lt;returns&amp;gt;A queryable of T with the possibility to treat it further.&amp;lt;/returns&amp;gt;
        /// &amp;lt;example&amp;gt;
        /// Func&amp;lt;Person, bool&amp;gt; functionPerson = person =&amp;gt; person.FirstName.ToLower().Contains(&amp;quot;da&amp;quot;)
        /// &amp;lt;/example&amp;gt;
        public IEnumerable&amp;lt;T&amp;gt; GetObjectByQuery(Func&amp;lt;T, bool&amp;gt; customQuery)
        {
            if (customQuery == null)
            {
                throw new ArgumentNullException(&amp;quot;parameter: customquery must be given by caller!&amp;quot;);
            }

            List&amp;lt;T&amp;gt; result = this.objectSet.Where(customQuery).ToList();
            result.ForEach(this.objectSet.Detach);
            return result;
        }

        /// &amp;lt;summary&amp;gt;
        /// Updates the values of the entity.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name=&amp;quot;entity&amp;quot;&amp;gt;Updates a given entity with new values.&amp;lt;/param&amp;gt;
        public void Update(T entity)
        {
            this.objectSet.Attach(entity);
            this.context.ObjectStateManager.ChangeObjectState(entity, EntityState.Modified);        
            this.context.SaveChanges();
        }
        /// &amp;lt;summary&amp;gt;
        /// Add's a newly created entity to the
        /// objectSet
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name=&amp;quot;entity&amp;quot;&amp;gt;The newly created entity.&amp;lt;/param&amp;gt;
        public void Add(T entity)
        {
            this.objectSet.AddObject(entity);            
            this.context.SaveChanges();                    
        }
        /// &amp;lt;summary&amp;gt;
        /// Occurs every time an entity is saved or updated.
        /// It goes through the entity properties to update or craete
        /// the persistance attributes that are necessary for saving.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name=&amp;quot;sender&amp;quot;&amp;gt;The context&amp;lt;/param&amp;gt;
        /// &amp;lt;param name=&amp;quot;e&amp;quot;&amp;gt;The eventargs from the context.&amp;lt;/param&amp;gt;
        void context_SavingChanges(object sender, EventArgs e)
        {
            this.context.ObjectStateManager.GetObjectStateEntries(EntityState.Added).ToList().ForEach(entity =&amp;gt; {
                if (entity != null &amp;amp;&amp;amp; entity.Entity != null &amp;amp;&amp;amp; entity.Entity.GetType().GetProperty(&amp;quot;Persistance&amp;quot;) != null)
                {
                    IPersistance persistance = CreatePersistance();
                    entity.Entity.GetType().GetProperty(&amp;quot;Persistance&amp;quot;).SetValue(entity.Entity, persistance, null);
                }
            });

            this.context.ObjectStateManager.GetObjectStateEntries(EntityState.Modified).ToList().ForEach(entity =&amp;gt;
            {
                if (entity != null &amp;amp;&amp;amp; entity.Entity != null &amp;amp;&amp;amp; entity.Entity.GetType().GetProperty(&amp;quot;Persistance&amp;quot;) != null)
                {
                    UpdatePersistance(entity.Entity);
                }
            });
        }
        /// &amp;lt;summary&amp;gt;
        /// Set's the createdate to the datetime
        /// where the creation of the entity
        /// object has been executed.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name=&amp;quot;entity&amp;quot;&amp;gt;The entity to create the IPersistance creator and update attributes.&amp;lt;/param&amp;gt;
        private IPersistance CreatePersistance()
        {
            IPersistance persistance = new IPersistance();
            persistance.CreateDate = DateTime.Now;
            persistance.ModifyDate = DateTime.Now;
            persistance.Creator = WindowsIdentity.GetCurrent().Name;
            persistance.Modifier = persistance.Creator;
            return persistance;
        }
        /// &amp;lt;summary&amp;gt;
        /// Set's the modifydate to the datetime
        /// where the modification of the entity
        /// object has been executed.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name=&amp;quot;entity&amp;quot;&amp;gt;The entity to update the IPersistance modify attributes.&amp;lt;/param&amp;gt;
        private void UpdatePersistance(object entity)
        {
            if (typeof(T).GetProperty(&amp;quot;Persistance&amp;quot;) != null)
            {
                IPersistance persistance = (IPersistance)typeof(T).GetProperty(&amp;quot;Persistance&amp;quot;).GetValue(entity, null);
                if (persistance != null)
                {
                    persistance.Modifier = WindowsIdentity.GetCurrent().Name;
                    persistance.ModifyDate = DateTime.Now;
                }
            }
        }
        /// &amp;lt;summary&amp;gt;
        /// Removes an entity from the database.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name=&amp;quot;entity&amp;quot;&amp;gt;The entity to remove. Must be loaded prior to remove.&amp;lt;/param&amp;gt;
        public void Remove(T entity)
        {
            if (entity != null)
            {
                this.objectSet.Attach(entity);
                this.context.DeleteObject(entity);
                this.context.SaveChanges();
            }
        }

        #region IDisposable Members
        /// &amp;lt;summary&amp;gt;
        /// Dispose the context.
        /// &amp;lt;/summary&amp;gt;
        public void Dispose()
        {
            if (this.context != null)
            {
                this.context.Dispose();
            }
        }

        #endregion
    }
}
&lt;/pre&gt;&lt;/p&gt;
&lt;h4 style="color:Black;"&gt;Fazit&lt;/h4&gt;
&lt;p&gt;Mit dem hier vorgestellten Ansatz ist es uns , auch für kleinere Projekte möglich, rasch und einfach &lt;a href="http://de.wikipedia.org/wiki/CRUD" target="_blank"&gt;CRUD&lt;/a&gt; Methoden zur Verfügung zu stellen ohne, dass wir das Unit of Work und das Repositoriy Pattern in ihren grössten Ausprägungen implementieren müssen.&lt;/p&gt;
&lt;p&gt;Wenn Ihnen der Artikel gefallen hat, würde ich mich über einen KICK freuen. Auf Verbesserungsvorschläge und Kritik bin ich natürlich auch offen.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dotnet-kicks.de/kick/?url=http%3a%2f%2fschaedlerdaniel.wordpress.com%2f2012%2f03%2f28%2fschritt-fur-schritt-zum-eigenen-generischen-repository%2f"&gt;&lt;img src="http://dotnet-kicks.de/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fschaedlerdaniel.wordpress.com%2f2012%2f03%2f28%2fschritt-fur-schritt-zum-eigenen-generischen-repository%2f" border="0" alt="kick it on dotnet-kicks.de" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;br /&gt;  &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/schaedlerdaniel.wordpress.com/614/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/schaedlerdaniel.wordpress.com/614/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/schaedlerdaniel.wordpress.com/614/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/schaedlerdaniel.wordpress.com/614/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/schaedlerdaniel.wordpress.com/614/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/schaedlerdaniel.wordpress.com/614/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/schaedlerdaniel.wordpress.com/614/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/schaedlerdaniel.wordpress.com/614/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/schaedlerdaniel.wordpress.com/614/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/schaedlerdaniel.wordpress.com/614/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/schaedlerdaniel.wordpress.com/614/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/schaedlerdaniel.wordpress.com/614/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/schaedlerdaniel.wordpress.com/614/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/schaedlerdaniel.wordpress.com/614/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=schaedlerdaniel.wordpress.com&amp;amp;blog=16378069&amp;amp;post=614&amp;amp;subd=schaedlerdaniel&amp;amp;ref=&amp;amp;feed=1" width="1" height="1" /&gt;</content:encoded>
      <wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://schaedlerdaniel.wordpress.com/2012/03/28/schritt-fur-schritt-zum-eigenen-generischen-repository/feed/</wfw:commentRss>
      <slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">2</slash:comments>
      <media:content url="http://0.gravatar.com/avatar/e50530c3e478a8a210b7df39006fdc68?s=96&amp;d=identicon&amp;r=G" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">schaedlerdaniel</media:title>
      </media:content>
      <media:content url="http://schaedlerdaniel.files.wordpress.com/2012/03/generisches-repository.jpg" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">Generisches Repository</media:title>
      </media:content>
      <media:content url="http://schaedlerdaniel.files.wordpress.com/2012/03/generisches-repository.jpg" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">Generisches Repository</media:title>
      </media:content>
      <media:content url="http://dotnet-kicks.de/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fschaedlerdaniel.wordpress.com%2f2012%2f03%2f28%2fschritt-fur-schritt-zum-eigenen-generischen-repository%2f" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">kick it on dotnet-kicks.de</media:title>
      </media:content>
    </item>
    <item xml:base="http://www.dnug-bern.ch/Event2011.aspx#634684680000000000">
      <guid isPermaLink="true">http://www.dnug-bern.ch/Event2011.aspx#634684680000000000</guid>
      <link>http://www.dnug-bern.ch/Event2011.aspx#634684680000000000</link>
      <category>.NET User Group Bern Event</category>
      <title>What the hell is PowerShell mit Thomas Krause</title>
      <description>
&lt;div style="width:100%; padding:0; border-bottom:1px solid #666; display:block; margin-bottom:16px"&gt;
&lt;img src="http://www.dnug-bern.ch/images/be_silhouette.gif" alt="" style="border:0; float:left"&gt;
&lt;h1 style="margin:0; padding-top:5px; color:#666"&gt;.NET User Group Bern Event&lt;/h1&gt;
&lt;/div&gt;
&lt;br style="clear:left"&gt;
&lt;h2&gt;Dienstag, 27.&amp;nbsp;März 2012 (18:00 bis 21:00 Uhr) &lt;/h2&gt;
&lt;h3&gt;What the hell is PowerShell?&lt;br&gt;
&lt;/h3&gt;
&lt;p&gt;Im März wird uns Thomas Krause das Thema Powershell näher bringen. Pirmär werden wir uns auch damit beschäftigen wie der Administrative Teil einer Anwendung effizienter gestaltet werden kann.
&lt;/p&gt;
&lt;strong&gt;Abstract &lt;/strong&gt;
&lt;p&gt;Das Windows Management Framework - aka PowerShell - wird immer wichtiger, daran besteht kein Zweifel. Egal, ob Desktop, Server oder Cloud: Kaum ein Produkt, das nicht mit PowerShell-Administrations-Features daherkommt. Windows 8 wird das Thema Administration/Konfiguration
 mit PowerShell noch mehr in den Mittelpunkt rücken. Es wird also Zeit, sich auch als Entwickler damit auseinanderzusetzen.
&lt;/p&gt;
&lt;p&gt;PowerShell ist nicht nur das schmucklose Terminal-Fenster, mit dem man wahrscheinlich den Erstkontakt hat. Es ist vor allem eine universelle Automatisierungsengine fuer alle denkbaren taeglichen Aufgaben - und somit interessant fuer jeden, der einfach effektiver
 arbeiten moechte. &lt;/p&gt;
&lt;p&gt;Inzwischen existiert ein gut ausgebautes Oekosystem an Tools und Erweiterungen. Wir werfen einen Blick auf das, was mit PowerShell heute fuer Administratoren und Entwickler moeglich und sinnvoll ist und schauen uns an, was uns mit PowerShell V3 erwartet.
&lt;/p&gt;
&lt;p&gt;Eine Reihe Beispiele werden zeigen, wie man mit PowerShell Werkzeuge nutzt, erweitert und baut. Wie kann ich mit PowerShell Entwicklungaktivitäten automatisieren? Wie bringt man PowerShell und ein GUI zusammen? Wie kann die eigene Applikation mit der PowerShell
 besser administrierbar werden? Diese Fragen werden wir nach dem Motto 'Less Slides, more Code' beantworten.
&lt;/p&gt;
&lt;strong&gt;Über Thomas Krause &lt;/strong&gt;
&lt;p&gt;Neben meinem Leben als Mainstream-Entwickler mit Mainstream-Programmiersprachen (ObjectPascal, C&amp;#43;&amp;#43;, .NET/C#) war ich lange auch auf der 'dunklen Seite der Softwareentwicklung' unterwegs - Datenbankentwicklung (PL/SQL, T-SQL, SQL etc.). Mit der Zeit lenkte
 dies meine Aufmerksamkeit auf 'unsichtbare' Themen wie Backup, Troubleshooting, Konfiguration, Migration, Monitoring etc.
&lt;/p&gt;
&lt;p&gt;Das interessante Spannungsdreieck zwischen Datenbank-Entwicklern, Administratoren und 'Client'-Entwicklern wurde eines meiner Interessengebiete. Seit dem Erscheinen der PowerShell 2006 suche ich intensiver nach Praktiken und Konzepten für die Entwicklung
 besser administrierbarer Systeme. Wichtig ist mir, Administrations-Anforderungen schon beim Systemdesign zu berücksichtigen.
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anmeldung&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Bitte beachte, dass für dieses Treffen eine &lt;a title="Zur Anmeldung auf XING" href="https://www.xing.com/events/what-the-hell-is-powershell-866593" target="_blank"&gt;
Anmeldung&lt;/a&gt; erforderlich ist. Ohne Xing-Konto kannst Du auch unser Kontaktformular nutzen.&lt;/p&gt;
&lt;p&gt;Das Twitter-Hashtag für diese Veranstaltung: &lt;strong&gt;#dnugbeps1&lt;/strong&gt;. &lt;/p&gt;
&lt;p&gt;Die Aktivitäten können während der Veranstaltung &lt;a href="http://dnug-bern.ch/TwitterWall.aspx" target="_blank"&gt;
hier&lt;/a&gt; betrachtet werden.&lt;/p&gt;
&lt;p&gt;Wir freuen uns auf Deine Teilnahme!&lt;/p&gt;
&lt;p&gt;Martin Affolter, Kay Herzam und René Leupold&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
</description>
      <pubDate>Tue, 27 Mar 2012 18:00:00 +0200</pubDate>
    </item>
    <item>
      <guid isPermaLink="false">http://graberj.wordpress.com/?p=1896</guid>
      <link>http://graberj.wordpress.com/2012/03/24/empfehlenswerte-podcasts-rund-um-ruby/</link>
      <category>webRuby</category>
      <category>Ruby</category>
      <title>Empfehlenswerte Podcasts rund um Ruby</title>
      <description>Eine kleine Liste mit empfehlenswerten Podcasts rund um Ruby und Rails.&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=graberj.wordpress.com&amp;amp;blog=9035432&amp;amp;post=1896&amp;amp;subd=graberj&amp;amp;ref=&amp;amp;feed=1" width="1" height="1"&gt;</description>
      <pubDate>Sat, 24 Mar 2012 10:45:22 Z</pubDate>
      <comments>http://graberj.wordpress.com/2012/03/24/empfehlenswerte-podcasts-rund-um-ruby/#comments</comments>
      <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Johnny Graber</dc:creator>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;Das Ökosystem rund um &lt;a href="http://www.ruby-lang.org/de/"&gt;Ruby&lt;/a&gt; entwickelt sich sehr schnell. Dies zeigt dass sich viele Leute dafür interessieren und auch mit der Sprache arbeiten. Wenn man aber erst daran ist sich in Ruby einzuarbeiten ist dies eine Herausforderung. Sobald man für ein Problem eine Lösung gefunden hat stösst man auf einen Blogpost der vom verwendeten &lt;a href="http://wiki.ruby-portal.de/RubyGems"&gt;Gem&lt;/a&gt; abrät oder man sieht eine viel einfachere Lösung. &lt;/p&gt;
&lt;p&gt;Um auf dem Laufenden zu bleiben haben sich für mich Podcasts als sehr hilfreich erwiesen. Da ich wohl nicht der einzige bin der versucht sich in Ruby zu Recht zu finden möchte ich hier einige Podcasts vorstellen.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/br&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://ruby5.envylabs.com/"&gt;Ruby 5&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;
Jeweils am Dienstag und Freitag liefert Ruby 5 eine kurze Übersicht zu den wichtigsten News rund um Ruby, Rails und hilfreiche Gems. Die Folgen dauern im Schnitt 5 Minuten und nennen die wichtigsten Punkt der Änderungen. In 5 Minuten bleibt keine Zeit um Details zu liefern, dafür ist es aber kurz und man braucht nicht viel eigene Zeit zu investieren.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/br&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://rubyshow.com/"&gt;The Ruby Show&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;
Jeden Freitag wird eine Folge von “The Ruby Show” veröffentlicht. In 20 &amp;#8211; 30 Minuten wird detailliert auf die News der Woche eingegangen. Die Themen sind oft ähnlich wie bei Ruby 5, werden aber mit mehr Tiefe behandelt. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/br&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://railscasts.com/"&gt;Railscasts&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;
Ryan Bates veröffentlicht jede Woche kurze Videos (10 &amp;#8211; 15 Minuten) rund um Ruby on Rails. Thematisch variieren diese Videos vom Aktualisieren von Rails über Authentifizierung bis zu JavaScript. Ausgangslage ist immer eine Rails basierte Anwendung die um neue Funktionen ergänzt werden soll. &lt;/p&gt;
&lt;p&gt;Wem die Videos gefallen kann für 9$ pro Monat jede Woche zwei zusätzliche Videos haben. Gerade die aktualisierten Folgen sind sehr praktisch, da in der Zwischenzeit oft sehr viel geändert hat.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/br&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://rubyrogues.com/"&gt;Ruby Rogues&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;
Ruby Rouges ist eine wöchentliche Diskussion rund um Ruby. Ich fand diesen Podcast zuerst ein wenig gewöhnungsbedürftig. Mir schien es ein wildes Durcheinander zu sein. Mit der Zeit gewöhnt man sich aber daran und erkennt das grosse Wissen der Teilnehmer. &lt;/p&gt;
&lt;p&gt;Jede Folge hat ein Hauptthema und daraus entwickelt sich jeweils schnell eine angeregte Diskussion. Dabei können dann die unterschiedlichsten Punkte diskutiert werden. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/br&gt;&amp;nbsp;&lt;/br&gt;&lt;/p&gt;
&lt;p&gt;Soweit die Podcasts die ich häufig höre. Falls jemand weitere Podcasts empfehlen kann würde ich mich über einen Kommentar freuen.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/br&gt;&lt;/p&gt;
&lt;br /&gt;Einsortiert unter:&lt;a href='http://graberj.wordpress.com/category/webruby/'&gt;webRuby&lt;/a&gt; Tagged: &lt;a href='http://graberj.wordpress.com/tag/ruby/'&gt;Ruby&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/graberj.wordpress.com/1896/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/graberj.wordpress.com/1896/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/graberj.wordpress.com/1896/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/graberj.wordpress.com/1896/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/graberj.wordpress.com/1896/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/graberj.wordpress.com/1896/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/graberj.wordpress.com/1896/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/graberj.wordpress.com/1896/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/graberj.wordpress.com/1896/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/graberj.wordpress.com/1896/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/graberj.wordpress.com/1896/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/graberj.wordpress.com/1896/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/graberj.wordpress.com/1896/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/graberj.wordpress.com/1896/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=graberj.wordpress.com&amp;amp;blog=9035432&amp;amp;post=1896&amp;amp;subd=graberj&amp;amp;ref=&amp;amp;feed=1" width="1" height="1" /&gt;</content:encoded>
      <wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://graberj.wordpress.com/2012/03/24/empfehlenswerte-podcasts-rund-um-ruby/feed/</wfw:commentRss>
      <slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments>
      <media:content url="http://1.gravatar.com/avatar/fd2bd6ebacb744ce20c57a9e4cbb252d?s=96&amp;d=identicon&amp;r=G" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">graberj</media:title>
      </media:content>
    </item>
    <item>
      <guid isPermaLink="true">http://www.databinding.net/blog/post/2012/03/15/sharepoint-deployment-api-zwischen-version-2007-und-2010.html</guid>
      <link>http://www.databinding.net/blog/post/2012/03/15/sharepoint-deployment-api-zwischen-version-2007-und-2010.html</link>
      <author>ipt:linkTo_UnCryptMailto('nbjmup+'); (René)</author>
      <category>Sharepoint</category>
      <title>Sharepoint Deployment API zwischen Version 2007 und 2010</title>
      <description>Meine Migrationsstory geht weiter. Nachdem der Export vorlag, stand ich das erste Mal an, weil mich bei einem Testimport die Fehlermeldung: The version of the package 12.0.10.0 is different from the...</description>
      <pubDate>Thu, 15 Mar 2012 22:54:00 +0200</pubDate>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"> Meine Migrationsstory geht weiter. Nachdem der Export vorlag, stand ich das erste Mal an, weil mich bei einem Testimport die Fehlermeldung: 
The version of the package 12.0.10.0 is different from the current version this program supports, 14.0.0.0 
begrüsste. Nach ein bisschen suchen fand ich einen Ansatz. Die Package Files, speziell die SystemData.xml muss angepasst werden, damit sich der Inhalt aus Sharepoint 2007 in Sharepoint 2010 importieren lässt. 
In der XML-Datei muss dazu auf SchemaVersion-Ebene die Version, dass aktuelle Patchlevel (Build) und die Datenbankversion (DatabaseVersion) angegeben werden. Nachfolgendes XML zeigt einen Ausschnitt aus der SystemData.xml:</content:encoded>
    </item>
    <item>
      <guid isPermaLink="false">http://graberj.wordpress.com/?p=1847</guid>
      <link>http://graberj.wordpress.com/2012/03/11/70515vorbereitenmitcampusmvp/</link>
      <category>.Net</category>
      <category>webDotNet</category>
      <category>C#</category>
      <category>Zertifizierung</category>
      <title>70-515 Zertifizierung vorbereiten mit CampusMVP von Krasis</title>
      <description>Das Training Kit von Microsoft Press konnte mich als Vorbereitung für die Zertifizierung 70-515 (Web Applications Development) nicht überzeugen. Daher kam mir die Anfrage ob ich nicht einen Online-Training reviewen möchte gerade recht. Krasis ist eine
 Firma die seit Jahren Kurse in Spanisch anbietet und nun ihr Angebot um englischsprachige Kurse erweitert. Ich durfte den [...]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=graberj.wordpress.com&amp;amp;blog=9035432&amp;amp;post=1847&amp;amp;subd=graberj&amp;amp;ref=&amp;amp;feed=1" width="1" height="1"&gt;</description>
      <pubDate>Sun, 11 Mar 2012 18:32:32 Z</pubDate>
      <comments>http://graberj.wordpress.com/2012/03/11/70515vorbereitenmitcampusmvp/#comments</comments>
      <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Johnny Graber</dc:creator>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;Das &lt;a href="http://www.amazon.com/MCTS-Self-Paced-Training-Exam-70-515/dp/0735627401"&gt;Training Kit&lt;/a&gt; von Microsoft Press konnte mich als Vorbereitung für die &lt;a href="http://www.microsoft.com/learning/en/us/exam.aspx?id=70-515"&gt;Zertifizierung 70-515&lt;/a&gt; (Web Applications Development) nicht überzeugen. Daher kam mir die Anfrage ob ich nicht einen Online-Training reviewen möchte gerade recht.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.krasis.com/"&gt;Krasis&lt;/a&gt; ist eine Firma die seit Jahren Kurse in Spanisch anbietet und nun ihr Angebot um englischsprachige Kurse erweitert. Ich durfte den &lt;a href="http://www.campusmvp.net/catalog/microsoft-certification-online-courses/1-70-515-ts-web-applications-development-with-microsoft-net-framework-4-certification-exam-preparation-course/"&gt;Kurs zur Vorbereitung der 70-515 Zertifizierung&lt;/a&gt; während 2 Monaten eingehend testen. Als Gegenleistung wurde nur erwartet das ich geradeheraus meine Meinung zum Kurs und der Trainingsmethode blogge. Dies zur Offenlegung meiner Verbindung zu Krasis.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Kursaufbau &lt;/h2&gt;
&lt;p&gt;Das praktische an einem webbasierten Training ist das man sich die Zeiten selber einteilen kann. Wenn man aber keine fixen Zeiten hat gibt es immer etwas was man sonst noch erledigen muss und so zieht sich der Kurs schnell einmal in die Länge. Dies weiss auch Krasis und empfiehlt daher für den 70-515 Kurs dieses Zeitraster:&lt;/p&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;th&gt;Modul&lt;/th&gt;
&lt;th&gt;Wochen&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ASP.Net 4.0 Web Forms&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ASP.Net AJAX&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;jQuery&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ASP.Net MVC&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MeasureUp Test&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;Total:&lt;/th&gt;
&lt;th&gt;12&lt;/th&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;Mit dieser Planung füllt man die 3 Monate die man den Kurs nutzen kann voll aus und ist am Ende bereit für die Zertifizierung. Wem dieses Raster nicht gefällt oder mehr Zeit für jQuery oder ASP.Net MVC haben möchte kann nach Belieben bei den anderen Modulen weniger Zeit verbringen.&lt;/p&gt;
&lt;p&gt;Steckt man einmal bei einem Thema fest oder hat sonstige Fragen kann man sich an einen Trainer wenden. Für diesen Kurs ist dies &lt;a href="http://jmalarcon.es/"&gt;Jose Alarcón&lt;/a&gt;, Autor mehrerer Bücher über ASP.Net und zertifizierter Microsoft-Trainer. Ich fand den Kurs verständlich und konnte problemlos folgen, daher habe ich von dieser Möglichkeit keinen Gebrauch gemacht.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Web Forms &lt;/h2&gt;
&lt;p&gt;Der Kurs orientiert sich an den in der Zertifizierung &lt;a href="http://www.microsoft.com/learning/en/us/exam.aspx?id=70-515#tab2"&gt;geprüften Themen&lt;/a&gt;. Der grösste Teil widmet sich daher Web Forms. Nach jeweils einer Seite Text folgt ein Video das die Theorie aufnimmt und ihre praktische Anwendung zeigt. Der gleichmässige Wechsel von lesen und anschauen fand ich sehr angenehm.&lt;/p&gt;
&lt;p&gt;Bis man sich selber an die Übungen in Visual Studio macht hat man mehrmals gezeigt bekommen wo die behandelten Controls liegen und wie man damit arbeiten kann. Dies ist gerade für Einsteiger sehr hilfreich, da man sich so bei den Übungen auf die Aufgabe konzentrieren kann und nicht an Visual Studio scheitert.&lt;/p&gt;
&lt;p&gt;Um selber aktiv zu werden kann man die gezeigten Beispiele nachprogrammieren und die grösseren Übungen am Ende der Module lösen. Auch hier kann man selber entscheiden wo man wie viel Zeit aufwenden will.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;ASP.Net AJAX und jQuery &lt;/h2&gt;
&lt;p&gt;Das &lt;a href="http://www.asp.net/ajaxlibrary/AjaxControlToolkitSampleSite/"&gt;Ajax Control Toolkit&lt;/a&gt; von Microsoft bietet einige interessante Funktionen im Zusammenspiel mit Web Forms. Wenn auch die Zukunft dieses Toolkits ungewiss ist, so muss man für die Zertifizierung doch etliche Details kennen. Leider konnte mich dieses Modul nicht ganz überzeugen. Die Texte waren zwar gut geschrieben, doch zeigten die Videos nur genau das was man auf der vorderen Seite lesen konnte. Im Gegensatz zu den anderen Modulen wurde hier Visual Studio 2008 gezeigt und auch die Tonqualität war deutlich schlechter als sonst. Es scheint als ob hier ein Modul aus einem älteren Kurs wiederverwendet wurde.&lt;/p&gt;
&lt;p&gt;Das Modul zu &lt;a href="http://jquery.com/"&gt;jQuery&lt;/a&gt; hätte von mir aus gerne tiefer gehen können. Es werden alle prüfungsrelevanten Themen behandelt und die Übersicht zu allen möglichen Selektoren ist sehr gut. Dennoch hätte man Themen wie die Fehlerbehandlung bei AJAX-Aufrufen oder die Kombination mit WebMethods noch ausführlicher zeigen können.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;ASP.Net MVC &lt;/h2&gt;
&lt;p&gt;Wie wohl alle Erklärungen zu MVC wird auch hier erst einmal die einzelnen Teile (Modell, View und Controller) erklärt. Auch wenn ich dies bereits mehrmals gelesen, gehört und gesehen habe, so gab es auch hier Neues zu entdecken:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://graberj.files.wordpress.com/2012/03/interaccion-m-v-c.png"&gt;&lt;img src="http://graberj.files.wordpress.com/2012/03/interaccion-m-v-c.png?w=600" alt="" title="interaccion-m-v-c (c) Krasis"   class="aligncenter size-full wp-image-1865" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Diese Grafik ist nur ein Beispiel von vielen. In fast allen Erklärungen wird das Zusammenspiel von Modell, View und Controller immer reduziert auf diese 3 Teile gezeigt. Krasis zeigt für einmal auch den Benutzer und wie dieser mit einer MVC-Anwendung arbeitet. Ist man erst am Einstieg in MVC ist diese Grafik deutlich verständlicher als eine reine textuelle Beschreibung der Abläufe.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;MeasureUp als hilfreicher Zusatz &lt;/h2&gt;
&lt;p&gt;Der Fragenkatalog bei Krasis kommt nicht wirklich an die Prüfungsfragen heran. Daher sollte man sich auf jeden Fall noch die Fragebogen von &lt;a href="http://www.measureup.com/70-515-CS-TS-Web-Applications-Development-with-Microsoft-NET-Framework-4-C-Final-P1729.aspx"&gt;MeasureUp&lt;/a&gt; dazu kaufen. Dessen Fragen sind nicht nur näher an der Prüfung, sondern es wird auch erklären was bei den falschen Antworten nicht korrekt ist.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Kosten &lt;/h2&gt;
&lt;p&gt;Der Kurs hat seinen &lt;a href="http://www.campusmvp.net/catalog/"&gt;Preis&lt;/a&gt; und der scheint auf den ersten Blick hoch zu sein. Vergleicht man diesen aber mit dem Preis eines mehrtägigen Kurses von anderen Anbietern ist er moderat. Wo kann man sonst während 3 Monaten auf eine Zertifizierung hin lernen und hat bei Fragen einen Experten auf Abruf?&lt;/p&gt;
&lt;p&gt;Bis Ende März gibt es alle Kurse mit einem 50% Einführungsrabatt. Wer interessiert ist sollte nicht zu lange warten.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Fazit &lt;/h2&gt;
&lt;p&gt;Krasis bietet einem ein gutes Konzept zum nachhaltigen Wissensaufbau. Obwohl ich seit Jahren ASP.Net nutze konnte ich schon bei den ersten Seiten etwas Neues lernen. Viele Themen begegnen einem zwar im täglichen Einsatz, doch stellt man sich oft nicht so detaillierte Fragen wie man es für die Zertifizierung muss. &lt;/p&gt;
&lt;p&gt;Der Kurs ist gut gelungen und liefert mir das nötige Wissen um die Zertifizierung 70-515 zu bestehen. Obwohl es bei AJAX einige Schwächen gibt kann ich den Kurs weiterempfehlen. &lt;/p&gt;
&lt;br /&gt;Einsortiert unter:&lt;a href='http://graberj.wordpress.com/category/net/'&gt;.Net&lt;/a&gt;, &lt;a href='http://graberj.wordpress.com/category/webdotnet/'&gt;webDotNet&lt;/a&gt; Tagged: &lt;a href='http://graberj.wordpress.com/tag/net/'&gt;.Net&lt;/a&gt;, &lt;a href='http://graberj.wordpress.com/tag/c/'&gt;C#&lt;/a&gt;, &lt;a href='http://graberj.wordpress.com/tag/zertifizierung/'&gt;Zertifizierung&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/graberj.wordpress.com/1847/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/graberj.wordpress.com/1847/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/graberj.wordpress.com/1847/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/graberj.wordpress.com/1847/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/graberj.wordpress.com/1847/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/graberj.wordpress.com/1847/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/graberj.wordpress.com/1847/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/graberj.wordpress.com/1847/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/graberj.wordpress.com/1847/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/graberj.wordpress.com/1847/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/graberj.wordpress.com/1847/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/graberj.wordpress.com/1847/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/graberj.wordpress.com/1847/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/graberj.wordpress.com/1847/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=graberj.wordpress.com&amp;amp;blog=9035432&amp;amp;post=1847&amp;amp;subd=graberj&amp;amp;ref=&amp;amp;feed=1" width="1" height="1" /&gt;</content:encoded>
      <wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://graberj.wordpress.com/2012/03/11/70515vorbereitenmitcampusmvp/feed/</wfw:commentRss>
      <slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">2</slash:comments>
      <media:content url="http://1.gravatar.com/avatar/fd2bd6ebacb744ce20c57a9e4cbb252d?s=96&amp;d=identicon&amp;r=G" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">graberj</media:title>
      </media:content>
      <media:content url="http://graberj.files.wordpress.com/2012/03/interaccion-m-v-c.png" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">interaccion-m-v-c (c) Krasis</media:title>
      </media:content>
    </item>
    <item>
      <guid isPermaLink="true">http://www.databinding.net/blog/post/2012/03/10/parallelisierung-wenn-eine-relationale-datenbank-im-spiel-ist.html</guid>
      <link>http://www.databinding.net/blog/post/2012/03/10/parallelisierung-wenn-eine-relationale-datenbank-im-spiel-ist.html</link>
      <author>ipt:linkTo_UnCryptMailto('nbjmup+'); (René)</author>
      <category>.NET Development</category>
      <category>SQL Server</category>
      <category>Sharepoint</category>
      <title>Parallelisierung wenn eine relationale Datenbank im Spiel ist</title>
      <description>Nachdem ich mir das erste Mal eine CLR-Funktion für eine Datenmigration gebaut habe, geht es nun daran Codeteile zu parallelisieren, damit die Migrationsdauer verkürzt werden kann. Ein paar Herausforderungen d...</description>
      <pubDate>Sat, 10 Mar 2012 23:09:00 +0200</pubDate>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"> Nachdem ich mir das erste Mal eine CLR-Funktion für eine Datenmigration gebaut habe, geht es nun daran Codeteile zu parallelisieren, damit die Migrationsdauer verkürzt werden kann. Ein paar Herausforderungen dabei: 
Ich habe die Auflage das Ganze in .NET 3.5 zu entwickeln, sodass ich die TPL nicht nutzen kann.Direkte Insert, Update und Delete-Anweisungen dürfen nicht ausgeführt werden. Es muss die Sharepoint Content Deployment API verwendet werden.
Im Blogpost fand ich einen interessanten Ansatz, wie in .NET 3.5 eine parallele Schleife realisiert werden kann. 
Also den ersten Test erstellt. Eine Stub-Methode die 10 Sekunden wartet, geschrieben und 5-mal aufgerufen. Testkriterium: Ausführungsdauer weniger als 15 Sekunden bestehen, funktioniert. 
Anschliessend den integrativen Test in Verbindung mit einer Datenbank. Testkriterium: Auditinformationen in Datenbank schreiben nicht erfüllt, tatsächlich: 
Transaction (Process ID XX) was deadlocked on lock | communication buffer resources with another process and has been chosen as the deadlock victim. Rerun the transaction. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception,  
Ein Codestück, das die Verbindung zur Datenbank herstellt, hat folgenden Aufbau:</content:encoded>
    </item>
    <item>
      <guid isPermaLink="true">http://www.databinding.net/blog/post/2012/03/07/sql-server-indexfragmentierung-feststellen.html</guid>
      <link>http://www.databinding.net/blog/post/2012/03/07/sql-server-indexfragmentierung-feststellen.html</link>
      <author>ipt:linkTo_UnCryptMailto('nbjmup+'); (René)</author>
      <category>SQL Server</category>
      <title>SQL Server - Indexfragmentierung feststellen</title>
      <description>Bei sehr vielen Einfügeoperationen kann ein Index sehr schnell seine Wirkung verlieren und muss entweder reorganisiert oder neu erstellt werden. Da ich die Abfrage des öfteren brauche, lege ich diese mal hie...</description>
      <pubDate>Wed, 07 Mar 2012 14:29:00 +0200</pubDate>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"> Bei sehr vielen Einfügeoperationen kann ein Index sehr schnell seine Wirkung verlieren und muss entweder reorganisiert oder neu erstellt werden. Da ich die Abfrage des öfteren brauche, lege ich diese mal hier ab:</content:encoded>
    </item>
    <item>
      <guid isPermaLink="true">http://www.databinding.net/blog/post/2012/03/06/mein-einstieg-in-kanban.html</guid>
      <link>http://www.databinding.net/blog/post/2012/03/06/mein-einstieg-in-kanban.html</link>
      <author>ipt:linkTo_UnCryptMailto('nbjmup+'); (René)</author>
      <category>Qualität</category>
      <category>Mind Map</category>
      <title>Mein Einstieg in Kanban</title>
      <description>Zukünftig will ich verstärkt mit der Unterstützung von Kanban arbeiten. Primär erhoffe ich mir Vorteile im Bereich der ständigen Verbesserung, Entwicklungseffizienz und der Lokalisierung von Zeitfressern, sowie ein ...</description>
      <pubDate>Tue, 06 Mar 2012 23:26:00 +0200</pubDate>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"> Zukünftig will ich verstärkt mit der Unterstützung von Kanban arbeiten. Primär erhoffe ich mir Vorteile im Bereich der ständigen Verbesserung, Entwicklungseffizienz und der Lokalisierung von Zeitfressern, sowie ein nützliches Hilfsmittel für "Continuous Delivery". 
Seit knapp 3 Wochen visualisiere ich so meine Arbeit und versuche anhand des Value Stream Mapping die Effizienz zu ermitteln. Innerhalb der nächsten Wochen werde ich wohl ein paar tiefere Einblicke haben. Ein grober Überblick befindet sich in folgendem Mind Map.</content:encoded>
    </item>
    <item>
      <guid isPermaLink="true">http://www.databinding.net/blog/post/2012/02/29/sharepoint-2010-best-practices.html</guid>
      <link>http://www.databinding.net/blog/post/2012/02/29/sharepoint-2010-best-practices.html</link>
      <author>ipt:linkTo_UnCryptMailto('nbjmup+'); (René)</author>
      <category>Sharepoint</category>
      <title>Sharepoint 2010 Best Practices</title>
      <description>Sharepoint gehört immer noch zu meinen Aufgabengebieten. Gute Anleitungen zu finden ist auch nicht einfach, gerade im Bezug was man tun oder lassen sollte. Das Produktteam hat eine Übersicht mit Best Pra...</description>
      <pubDate>Wed, 29 Feb 2012 22:03:00 +0200</pubDate>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"> Sharepoint gehört immer noch zu meinen Aufgabengebieten. Gute Anleitungen zu finden ist auch nicht einfach, gerade im Bezug was man tun oder lassen sollte.
Das Produktteam hat eine Übersicht mit Best Practices unter dem Link bereitgestellt.
Mal sehen, ob es brauchbar ist...
Weitere Informationen zum Thema:
Bewährte Methoden für Sharepoint FoundationBewährte Methoden für Sharepoint (sehr dürftig)</content:encoded>
    </item>
    <item>
      <guid isPermaLink="false">http://schaedlerdaniel.wordpress.com/?p=595</guid>
      <link>http://schaedlerdaniel.wordpress.com/2012/02/28/wcf-datacontracts-synchronisieren-mit-entity-framework-klassen/</link>
      <category>C#</category>
      <category>Entity Framework</category>
      <category>WCF</category>
      <category>DataContract Mapping to Entity Framework</category>
      <category>Generischer DataContract zu Entity Framework Synchronisierer</category>
      <category>Synchronization of DataContracts to it's Entitties</category>
      <title>WCF DataContracts synchronisieren mit Entity Framework Klassen</title>
      <description>Im Rahmen einer Projektarbeit haben wir das Ziel Businessdaten über die WCF zu transportieren. Die Daten sind im Entity Framework gespeichert. Schön wäre es wenn wir diese Entitäten direkt über den Kommunikationskanal schicken könnten. Leider ist dies
 nicht möglich da ein direktes Versenden der Entitäten, durch Projektrestriktionen nicht erlaubt ist, oder man ganz einfach keine [...]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=schaedlerdaniel.wordpress.com&amp;amp;blog=16378069&amp;amp;post=595&amp;amp;subd=schaedlerdaniel&amp;amp;ref=&amp;amp;feed=1" width="1" height="1"&gt;</description>
      <pubDate>Tue, 28 Feb 2012 15:32:33 Z</pubDate>
      <comments>http://schaedlerdaniel.wordpress.com/2012/02/28/wcf-datacontracts-synchronisieren-mit-entity-framework-klassen/#comments</comments>
      <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">schaedlerdaniel</dc:creator>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;Im Rahmen einer Projektarbeit haben wir das Ziel Businessdaten über die WCF zu transportieren. Die Daten sind im Entity Framework gespeichert. Schön wäre es wenn wir diese Entitäten direkt über den Kommunikationskanal schicken könnten. Leider ist dies nicht möglich da ein direktes Versenden der Entitäten, durch Projektrestriktionen nicht erlaubt ist, oder man ganz einfach keine Referenzen auf dem Client auf den Namespace &lt;a href="http://msdn.microsoft.com/en-us/library/system.data.aspx" target="_blank"&gt;System.Data&lt;/a&gt; haben möchte.&lt;/p&gt;
&lt;p&gt;Also muss eine Lösung her die einigermassen hilfreich sein kann. Diese Lösung erledigt das Mapping eines einkommenden DatenVertrages mit der entsprechenden Entität.&lt;/p&gt;
&lt;h5&gt;Vorbereitungen&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;AddressManagement.BusinessModel&lt;/li&gt;
&lt;li&gt;AddressManagement.PersistanceModel&lt;/li&gt;
&lt;li&gt;AddressManagement.ServiceLayer &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Für das Hosten der WCF können wir verschiedene Möglichkeiten nutzen, die aber in diesem Blogpost nicht abgedeckt werden. Es soll nur die Möglichkeit einer generischen Mapping Methode aufgezeigt werden, damit die Daten vom &lt;a href="http://msdn.microsoft.com/en-us/library/aa697427(v=vs.80).aspx" target="_blank"&gt;Entity Framework &lt;/a&gt; nicht direkt über den Kommunikationskanal versendet werden müssen, sondern gekapselt werden.&lt;/p&gt;
&lt;p&gt;Wir erstellen uns ein Entity-Modell dass wie folgt aussieht: (Dieses erstellen wir im Projekt AddressManagement.Persistance)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://schaedlerdaniel.files.wordpress.com/2012/02/entitydesignerdiagram.jpg"&gt;&lt;img src="http://schaedlerdaniel.files.wordpress.com/2012/02/entitydesignerdiagram.jpg?w=600" alt="Das Entity Data Design Model" title="EntityDesignerDiagram"   class="aligncenter size-full wp-image-599" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Anschliessend erstellen wir uns unseres eigentliche Businessklassenmodell welches wir im Projekt AddressManagement.BusinessModel anlegen.&lt;/p&gt;
&lt;div id="attachment_597" class="wp-caption alignleft" style="width: 610px"&gt;&lt;a href="http://schaedlerdaniel.files.wordpress.com/2012/02/addressmanagementclassdiagram.jpg"&gt;&lt;img src="http://schaedlerdaniel.files.wordpress.com/2012/02/addressmanagementclassdiagram.jpg?w=600&amp;#038;h=363" alt="" title="AddressManagementClassDiagram" width="600" height="363" class="size-full wp-image-597" /&gt;&lt;/a&gt;&lt;p class="wp-caption-text"&gt;Das Businessklassen Model&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;Wichtig hierbei ist, dass die Beziehungen, Phones, Addresses genau gleich heissen wie im Entity Model. Auch alle anderen Eigenschaften müssen die gleiche Schreibweise haben, da sonst im Mapper keine Übereinstimmung gefunden wird.&lt;/p&gt;
&lt;p&gt;Die Businessklassen sollen dann mit der WCF übertragen werden. Hierzu werden die Klassen mit den entsprechenden Attributen versehen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Die Klasse Person&lt;/strong&gt;&lt;br /&gt;
&lt;pre class="brush: csharp;"&gt;
namespace AddressManagement.BusinessModel
{
    [DataContract]
    [KnownType(typeof(Address))]
    [KnownType(typeof(Phone))]
    public class Person : IPersistance
    {        
        #region IPersistance Members
        [DataMember]
        public Int32 Id { get; set; }
        #endregion
        [DataMember]
        public string FirstName { get; set; }
        [DataMember]
        public string LastName { get; set; }
        [DataMember]
        public IEnumerable&amp;lt;IPersistance&amp;gt; Addresses { get; set; }
        [DataMember]
        public IEnumerable&amp;lt;IPersistance&amp;gt; Phones { get; set; }
    }
}
&lt;/pre&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Die Klasse Phone&lt;/strong&gt;&lt;br /&gt;
&lt;pre class="brush: csharp;"&gt;
namespace AddressManagement.BusinessModel
{
    [DataContract(IsReference = true)]
    [KnownType(typeof(ObjectType))]
    public class Phone : IPersistance
    {
        #region IPersistance Members
        [DataMember]
        public Int32 Id { get; set; }
        #endregion
        [DataMember]
        public string SubScriberNumber { get; set; }
        [DataMember]
        public ObjectType PhoneType { get; set; }
    }
}
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Die Klasse Address&lt;/strong&gt;&lt;br /&gt;
&lt;pre class="brush: csharp;"&gt;
namespace AddressManagement.BusinessModel
{
    [DataContract(IsReference = true)]
    [KnownType(typeof(ObjectType))]
    public class Address : IPersistance
    {
        #region IPersistance Members
        [DataMember]
        public Int32 Id { get; set; }
        #endregion
        [DataMember]
        public string StreetName { get; set; }
        [DataMember]
        public Int16 StreetNumber { get; set; }
        [DataMember]
        public Int16 PostalCode { get; set; }
        [DataMember]
        public string CityName { get; set; }
        [DataMember]
        public ObjectType AddressType { get; set; }
    }
    [DataContract]
    public enum ObjectType
    {
        [EnumMember]
        Private,
        [EnumMember]
        Business
    }
}
&lt;/pre&gt;&lt;/p&gt;
&lt;h5&gt;Der Mapper/Synchronisierer&lt;/h5&gt;
&lt;p&gt;Damit wir nun beide Welten miteinander abgleichen können ist der Mapper zu erstellen, welche ich Schritt für Schritt erläutere. Wir erstellen uns als erstes eine Statische Klasse mit dem Namen DataContractToEntityMapper oder DataContractAndEntitySynchronizer und erstellen als erstes folgende Methode:&lt;/p&gt;
&lt;p&gt;&lt;pre class="brush: csharp;"&gt;
        /// &amp;lt;summary&amp;gt;
        /// Maps a given datacontract to the appropriate entity.
        /// Check's if the datacontract is new or must be updated
        /// and return the newly persisted contract back or it's updated
        /// values, if it was already persisted before.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;typeparam name=&amp;quot;T&amp;quot;&amp;gt;Type of the datacontract&amp;lt;/typeparam&amp;gt;
        /// &amp;lt;typeparam name=&amp;quot;U&amp;quot;&amp;gt;Type of the entity&amp;lt;/typeparam&amp;gt;
        /// &amp;lt;param name=&amp;quot;dataContract&amp;quot;&amp;gt;The datacontract to interact with.&amp;lt;/param&amp;gt;
        /// &amp;lt;returns&amp;gt;A new or updated datacontract from the database.&amp;lt;/returns&amp;gt;
        public static IPersistance SynchronizeDataContractAndEntity&amp;lt;T, U&amp;gt;(T dataContract)
            where T : IPersistance
            where U : EntityObject
        {
            IPersistance persistance = Activator.CreateInstance&amp;lt;T&amp;gt;();
            // 1. a) Determine if the datacontract is already persisted.
            if (dataContract.Id == 0)
            {
                // 1. b) Map the newly created entity to the datacontract.                
                PersistDataContract&amp;lt;T, U&amp;gt;(dataContract);
            }
            else
            // 2.) Map an existing entity to it's datacontract pendant
            {
                U persistedEntity = Activator.CreateInstance&amp;lt;U&amp;gt;();
                using (AddressRepository&amp;lt;U&amp;gt; repository = new AddressRepository&amp;lt;U&amp;gt;(new AddressManagementPersistanceModelContainer()))
                {
                    persistedEntity = repository.GetByKey&amp;lt;U&amp;gt;(dataContract.Id);
                    persistance = UpdateProperties&amp;lt;T, U&amp;gt;(dataContract, persistedEntity);
                }
            }
            return persistance;
        }
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Diese Methode führ folgende Aktionen durch:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Existiert der eingetroffene DataContract schon in der Datenbank?&lt;/li&gt;
&lt;li&gt;Ist die Id 0, dann muss eine neue Entität angelegt werden&lt;/li&gt;
&lt;li&gt;Ist die Id &amp;gt; 0 ist der Contract bereits in der Datenbank vorhanden und muss mit den vorliegenden Werten aktualisiert werden.&lt;/li&gt;
&lt;li&gt;Zum Schluss, nachdem die Entity und der DataContract miteinander synchronisiert worden sind, wird ein aktualisierter DataContract zurück gegeben.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Als nächster Schritt erstellen wir uns eine Methode die für den Abgleich der Property-Werte zuständig ist. Diese unterscheidet ob es sich bei der Eigenschaft um eine Collection oder um eine einfache Eigenschaft handelt und führt dementsprechend die Aktualisierung aus:&lt;/p&gt;
&lt;p&gt;&lt;pre class="brush: csharp;"&gt;
        /// &amp;lt;summary&amp;gt;
        /// Updates the properties from a datacontract.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;typeparam name=&amp;quot;T&amp;quot;&amp;gt;The type of datacontract&amp;lt;/typeparam&amp;gt;
        /// &amp;lt;typeparam name=&amp;quot;U&amp;quot;&amp;gt;The type of the entity&amp;lt;/typeparam&amp;gt;
        /// &amp;lt;param name=&amp;quot;dataContract&amp;quot;&amp;gt;The datacontract to update the values.&amp;lt;/param&amp;gt;
        /// &amp;lt;param name=&amp;quot;entity&amp;quot;&amp;gt;The entity that is persisted and owns the actual values.&amp;lt;/param&amp;gt;
        /// &amp;lt;returns&amp;gt;Updated datacontract.&amp;lt;/returns&amp;gt;
        private static IPersistance UpdateProperties&amp;lt;T, U&amp;gt;(T dataContract, U entity)
            where T : IPersistance
            where U : EntityObject
        {
            IPersistance persistance = (IPersistance)CreateInstance&amp;lt;T, U&amp;gt;(dataContract, entity);
            entity.GetType().GetProperties().ToList().ForEach(entityPropertyInfo =&amp;gt;
            {
                string propertyName = entityPropertyInfo.Name;
                PropertyInfo dataContractPropertyInfo = persistance.GetType().GetProperty(propertyName);
 
                if (entityPropertyInfo != null &amp;amp;&amp;amp; !entityPropertyInfo.PropertyType.Name.Contains(typeof(EntityCollection&amp;lt;U&amp;gt;).Name))
                {
                    var entityPropertyValue = entityPropertyInfo.GetValue(entity, null);
                    if (entityPropertyValue != null &amp;amp;&amp;amp; dataContractPropertyInfo != null &amp;amp;&amp;amp; !dataContractPropertyInfo.PropertyType.IsEnum)
                    {                        
                        dataContractPropertyInfo.SetValue(persistance, entityPropertyValue, BindingFlags.Default, null, null, null);
                    }
                }
                else if (entityPropertyInfo != null &amp;amp;&amp;amp; dataContract.GetType().GetProperty(entityPropertyInfo.Name) != null)
                {
                    var ienumerableValues = (IEnumerable)HandleRelatedEnds&amp;lt;T&amp;gt;(dataContract, (IEnumerable)entityPropertyInfo.GetValue(entity, null));
                    persistance.GetType().GetProperty(entityPropertyInfo.Name).SetValue(persistance, ienumerableValues, BindingFlags.Default, null, null, null);
                }
            });
            return persistance;
        }

&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Der erste Teil aktualisiert alle flachen Eigenschaften des DatenContracts. Der zweite Teil kümmert sich um die Collections.&lt;/p&gt;
&lt;p&gt;&lt;pre class="brush: csharp;"&gt;
        /// &amp;lt;summary&amp;gt;
        /// Handles the collections an creates for the datacontract
        /// appropriate items to add them to the list.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;typeparam name=&amp;quot;T&amp;quot;&amp;gt;Type of datacontract&amp;lt;/typeparam&amp;gt;
        /// &amp;lt;param name=&amp;quot;dataContract&amp;quot;&amp;gt;The specific contract where the list belongs to.&amp;lt;/param&amp;gt;
        /// &amp;lt;param name=&amp;quot;entityCollectionToDuplicate&amp;quot;&amp;gt;The entitycollection to map to the datacontract.&amp;lt;/param&amp;gt;
        /// &amp;lt;returns&amp;gt;A List of IPersistance objects (BusinessModel Objects).&amp;lt;/returns&amp;gt;
        private static List&amp;lt;IPersistance&amp;gt; HandleRelatedEnds&amp;lt;T&amp;gt;(T dataContract, IEnumerable entityCollectionToDuplicate) where T : IPersistance
        {
            List&amp;lt;IPersistance&amp;gt; persistances = new List&amp;lt;IPersistance&amp;gt;();
            IEnumerator it = entityCollectionToDuplicate.GetEnumerator();
 
            while (it.MoveNext())
            {
                EntityObject entity = ((EntityObject)it.Current);
                IPersistance ipersistance = CreateInstance&amp;lt;T, EntityObject&amp;gt;(dataContract, entity);
                ipersistance = UpdateProperties&amp;lt;T, EntityObject&amp;gt;(dataContract, entity);
                persistances.Add(ipersistance);
            }
 
            return persistances;
        }

&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Damit die Items erstellt werden können braucht es eine weitere Hilfsmethode die uns entsprechende Instanzen zurück gibt.&lt;/p&gt;
&lt;p&gt;&lt;pre class="brush: csharp;"&gt;
        /// &amp;lt;summary&amp;gt;
        /// This method creates a specific instance from the Businessmodell Assembly
        /// given by the entity type.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;typeparam name=&amp;quot;T&amp;quot;&amp;gt;The IPersistanceObject to create&amp;lt;/typeparam&amp;gt;
        /// &amp;lt;typeparam name=&amp;quot;U&amp;quot;&amp;gt;The entity that contains the values&amp;lt;/typeparam&amp;gt;
        /// &amp;lt;param name=&amp;quot;dataContract&amp;quot;&amp;gt;The datacontract to add /remove or update&amp;lt;/param&amp;gt;
        /// &amp;lt;param name=&amp;quot;entity&amp;quot;&amp;gt;The entity that was created /updated depending on the passed datacontract.&amp;lt;/param&amp;gt;
        /// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;
        private static IPersistance CreateInstance&amp;lt;T, U&amp;gt;(T dataContract, U entity) where T : IPersistance
        {
            IPersistance persistance;
            string typeOfEntity = entity.GetType().Name;
            Assembly assembly = Assembly.GetAssembly(typeof(IPersistance));
            Type type = assembly.GetTypes().FirstOrDefault(assemblyType =&amp;gt; assemblyType.Name.ToLower().Equals(typeOfEntity.ToLower()));
            persistance = (IPersistance)assembly.CreateInstance(type.FullName);
 
            return persistance;
        }

[/csharp]
&amp;lt;p&amp;gt;Der Funktionsumfang der oben beschriebenen Methode ist einfach. Nimm den Entity-Namen und suche in der BusinessModel Library nach dem entsprechenden Typ und instanziiere einen solchen und gib diesen dann zurück, damit er in der aufrufenden Methode in die Liste eingefügt werden kann.
Eine weitere Methode brauchen wir, damit wir einen DataContract, der über keinen Wert in der Id verfügt, persistieren können. (Das Repository ist nicht Teil dieses).
&amp;lt;/p&amp;gt;
[sourcecode language=&amp;quot;csharp&amp;quot;]
        /// &amp;lt;summary&amp;gt;
        /// A newly passed datacontract with it's properties
        /// will be persisted in the entity framework.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;typeparam name=&amp;quot;T&amp;quot;&amp;gt;DataContractType&amp;lt;/typeparam&amp;gt;
        /// &amp;lt;typeparam name=&amp;quot;U&amp;quot;&amp;gt;EntityType (must macht with the datacontract type)&amp;lt;/typeparam&amp;gt;
        /// &amp;lt;param name=&amp;quot;dataContract&amp;quot;&amp;gt;The datacontract to persist.&amp;lt;/param&amp;gt;
        private static void PersistDataContract&amp;lt;T, U&amp;gt;(T dataContract) where T : IPersistance where U : EntityObject
        {
            U entityToPersist = Activator.CreateInstance&amp;lt;U&amp;gt;();
            entityToPersist.GetType().GetProperties().ToList().ForEach(dataContractPropertyInfo =&amp;gt;
            {
                string propertyName = dataContractPropertyInfo.Name;
                PropertyInfo entityPropertyInfo = dataContract.GetType().GetProperty(propertyName);
 
                if (entityPropertyInfo != null &amp;amp;&amp;amp; entityPropertyInfo.PropertyType != (typeof(RelatedEnd)))
                {
                    var entityPropertyValue = entityPropertyInfo.GetValue(dataContract, null);
                    if (entityPropertyValue != null)
                    {
                        dataContractPropertyInfo.SetValue(entityToPersist, entityPropertyValue, BindingFlags.Default, null, null, null);
                    }
                }
            });
 
            using (AddressRepository&amp;lt;U&amp;gt; repository = new AddressRepository&amp;lt;U&amp;gt;(new AddressManagementPersistanceModelContainer()))
            {
                repository.Add(entityToPersist);
                repository.SaveChanges();
            }
        }
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Mit dieser letzten Methode haben wir den Mapper erstellt. Nun ist es uns möglich von einem Sender ein Objekt der Businessklassen zu erstellen und müssen uns keine Sorgen machen, ob dies bereits persistiert worden ist oder nicht. Wir erhalten als dann die aktualisierten oder neuen Werte von der Datenbank als Resultat zurück und können somit auf dem Client weiter arbeiten.&lt;/p&gt;
&lt;h5&gt;Fazit&lt;/h5&gt;
&lt;p&gt;Der Mapper hat nicht den Anspruch 100% aller Fälle abzudecken, er versucht zu zeigen wie man eine grösstmögliche Modularisierung anstreben kann, ohne dass auf dem Client Server DLL’s refernziert werden müssen. Und natürlich ein nicht zu unterschätzender Punkt ist der Aufwand einmal für die WCF Seite und einmal für die Persistance-Seite ein Modell zu führen.&lt;/p&gt;
&lt;p&gt;Sollte Ihnen der Artikel gefallen haben, würde ich mich über einen kick freuen. Gerne beantworte ich auch Fragen und Kritik.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dotnet-kicks.de/kick/?url=http%3a%2f%2fschaedlerdaniel.wordpress.com%2f2012%2f02%2f28%2fwcf-datacontracts-synchronisieren-mit-entity-framework-klassen%2f"&gt;&lt;img src="http://dotnet-kicks.de/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fschaedlerdaniel.wordpress.com%2f2012%2f02%2f28%2fwcf-datacontracts-synchronisieren-mit-entity-framework-klassen%2f" border="0" alt="kick it on dotnet-kicks.de" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;br /&gt;  &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/schaedlerdaniel.wordpress.com/595/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/schaedlerdaniel.wordpress.com/595/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/schaedlerdaniel.wordpress.com/595/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/schaedlerdaniel.wordpress.com/595/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/schaedlerdaniel.wordpress.com/595/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/schaedlerdaniel.wordpress.com/595/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/schaedlerdaniel.wordpress.com/595/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/schaedlerdaniel.wordpress.com/595/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/schaedlerdaniel.wordpress.com/595/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/schaedlerdaniel.wordpress.com/595/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/schaedlerdaniel.wordpress.com/595/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/schaedlerdaniel.wordpress.com/595/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/schaedlerdaniel.wordpress.com/595/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/schaedlerdaniel.wordpress.com/595/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=schaedlerdaniel.wordpress.com&amp;amp;blog=16378069&amp;amp;post=595&amp;amp;subd=schaedlerdaniel&amp;amp;ref=&amp;amp;feed=1" width="1" height="1" /&gt;</content:encoded>
      <wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://schaedlerdaniel.wordpress.com/2012/02/28/wcf-datacontracts-synchronisieren-mit-entity-framework-klassen/feed/</wfw:commentRss>
      <slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments>
      <media:content url="http://0.gravatar.com/avatar/e50530c3e478a8a210b7df39006fdc68?s=96&amp;d=identicon&amp;r=G" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">schaedlerdaniel</media:title>
      </media:content>
      <media:content url="http://schaedlerdaniel.files.wordpress.com/2012/02/entitydesignerdiagram.jpg" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">EntityDesignerDiagram</media:title>
      </media:content>
      <media:content url="http://schaedlerdaniel.files.wordpress.com/2012/02/addressmanagementclassdiagram.jpg" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">AddressManagementClassDiagram</media:title>
      </media:content>
      <media:content url="http://dotnet-kicks.de/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fschaedlerdaniel.wordpress.com%2f2012%2f02%2f28%2fwcf-datacontracts-synchronisieren-mit-entity-framework-klassen%2f" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">kick it on dotnet-kicks.de</media:title>
      </media:content>
    </item>
    <item>
      <guid isPermaLink="true">http://www.databinding.net/blog/post/2012/02/27/sharepoint-der-unterschied-der-versionsbezeichnung-zwischen-frontend-und-datenhaltung.html</guid>
      <link>http://www.databinding.net/blog/post/2012/02/27/sharepoint-der-unterschied-der-versionsbezeichnung-zwischen-frontend-und-datenhaltung.html</link>
      <author>ipt:linkTo_UnCryptMailto('nbjmup+'); (René)</author>
      <category>.NET Development</category>
      <category>Sharepoint</category>
      <title>Sharepoint - Der Unterschied der Versionsbezeichnung zwischen Frontend und Datenhaltung</title>
      <description>Bei einem grösseren Migrationsprojekt hatte ich eine interessante Aufgabenstellung im Bezug auf die Versionsbezeichnung von Dokumenten. Im Frontend und im Export-XML (Manifest.xml) werden diese in für Benutz...</description>
      <pubDate>Mon, 27 Feb 2012 22:56:00 +0200</pubDate>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"> Bei einem grösseren Migrationsprojekt hatte ich eine interessante Aufgabenstellung im Bezug auf die Versionsbezeichnung von Dokumenten. Im Frontend und im Export-XML (Manifest.xml) werden diese in für Benutzer lesbarer Form als 0.1, 0.2 bzw. 1.0 angezeigt. Intern ist die Version dagegen als 1, 2 bzw. 512 abgelegt.</content:encoded>
    </item>
    <item>
      <guid isPermaLink="true">http://blog.eweibel.net/?p=1198</guid>
      <link>http://blog.eweibel.net/?p=1198</link>
      <category>Software architecture</category>
      <title>Are stale data evil?</title>
      <description>When you’re a software engineer who produces software for enterprises like banks or assurances, then it is normal you have huge databases (several gigabytes). Such systems have an operative application where users do the daily business of the company and
 there are more informative parts (or strategic parts) of the systems which the management uses. [...]</description>
      <pubDate>Mon, 27 Feb 2012 11:38:51 Z</pubDate>
      <comments>http://blog.eweibel.net/?p=1198#comments</comments>
      <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Patrick</dc:creator>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;&lt;a href="http://blog.eweibel.net/wp-content/uploads/Fotolia_37310173_S.jpg" rel="lightbox[1198]"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="Sexy young woman as devil in fire" border="0" alt="Sexy young woman as devil in fire" align="right" src="http://blog.eweibel.net/wp-content/uploads/Fotolia_37310173_S_thumb.jpg" width="242" height="272" /&gt;&lt;/a&gt;When you&amp;#8217;re a software engineer who produces software for enterprises like banks or assurances, then it is normal you have huge databases (several gigabytes). Such systems have an operative application where users do the daily business of the company and there are more informative parts (or strategic parts) of the systems which the management uses. At a first glance, there isn&amp;#8217;t a problem with those two views, but as you probably know, those companies have for the second part for the management a data ware house solution.&lt;/p&gt;
&lt;p&gt;But what if your customer doesn&amp;#8217;t want a data ware house solution? Or if he couldn&amp;#8217;t afford one? Then you will probably add reports, search views to your application. In this blog post I describe some of the aspects if you&amp;#8217;ve to choose this variation.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Stale data as a requirement&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Unfortunately the question &amp;quot;how old can the data on this report/search be?&amp;quot; is rarely asked. When the answer is &amp;quot;The report/search has to show the right data&amp;quot;, then you have to ask the customer again. The problem is, the data is maybe already stale after the query, because somebody changed some data.&lt;/p&gt;
&lt;p&gt;In my experience there are only a few reports, which need as little as possible stale data. But it is essential that you ask this question.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Isolate only as far as needed&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Most searches or reports need essential tables in your relational database, so it is important that those searches or reports don&amp;#8217;t have an effect to your daily business. You ask yourself maybe now, how those queries could have any impact?&lt;/p&gt;
&lt;p&gt;If you use Microsoft SQL Server, then the default isolation level is &amp;quot;Read committed&amp;quot;. If a query isn&amp;#8217;t that clever made, it could happen, that the query blocks a whole table (Intended Shared Lock which blocks any inserts or updates). If that happen, your users will remark that by waiting while they try to save their data.&lt;/p&gt;
&lt;p&gt;When you create a search or an report you have to ask yourself always, which Isolation level you will use. When you use dirty reads (Isolation level &amp;quot;Read uncommitted&amp;quot;), then you&amp;#8217;ll probably never generate any locks, but you have to deal with data which is wrong. This because data could be roll backed and the same query wouldn&amp;#8217;t bring the roll backed data again.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Stale data or even wrong data on a search or an informational report hasn&amp;#8217;t to be wrong or a mistake. Sometimes it&amp;#8217;s just good enough to fulfil the requirements and make the customer happy. And that&amp;#8217;s what it&amp;#8217;s all about.&lt;/p&gt;
&lt;p&gt;&lt;a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.eweibel.net%2F%3Fp%3D1198&amp;amp;title=Are%20stale%20data%20evil%3F" id="wpa2a_2"&gt;&lt;img src="http://blog.eweibel.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Related posts:&lt;ol&gt;
&lt;li&gt;&lt;a href='http://blog.eweibel.net/?p=677' rel='bookmark' title='Round-up of a data centric architecture'&gt;Round-up of a data centric architecture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href='http://blog.eweibel.net/?p=1033' rel='bookmark' title='Data quality as a business value'&gt;Data quality as a business value&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href='http://blog.eweibel.net/?p=367' rel='bookmark' title='Reason of silence'&gt;Reason of silence&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;</content:encoded>
      <wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blog.eweibel.net/?feed=rss2&amp;p=1198</wfw:commentRss>
      <slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments>
    </item>
    <item>
      <guid isPermaLink="true">http://blog.eweibel.net/?p=1182</guid>
      <link>http://blog.eweibel.net/?p=1182</link>
      <category>Anti patterns</category>
      <category>Software engineering</category>
      <title>Anti-Pattern ‘Validation by Execute ‘n’ Rollback’</title>
      <description>Recently in some reviews I saw an anti-pattern. First you have to know, in the code, there was a validation of the data before it was stored in the database. So far so good. But when I looked at the validation code, I saw the following: public void Validate()
 { DoProcess(true); } And the persist [...]</description>
      <pubDate>Tue, 21 Feb 2012 20:53:12 Z</pubDate>
      <comments>http://blog.eweibel.net/?p=1182#comments</comments>
      <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Patrick</dc:creator>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;Recently in some reviews I saw an &lt;a href="http://en.wikipedia.org/wiki/Anti-pattern" target="_blank"&gt;anti-pattern&lt;/a&gt;. First you have to know, in the code, there was a validation of the data before it was stored in the database. So far so good. But when I looked at the validation code, I saw the following:&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:4784647f-555d-445a-b026-eff18742640e" class="wlWriterEditableSmartContent"&gt;
&lt;pre class="brush: c#;"&gt;public void Validate()
{
	DoProcess(true);
}&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;And the persist logic (with some business logic) looked like this:&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:2984d7b9-08dc-4564-b9ca-ec0282a83dea" class="wlWriterEditableSmartContent"&gt;
&lt;pre class="brush: c#;"&gt;public void Process()
{
	DoProcess(false);
}&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;So, I asked myself, what the Boolean means. Well, here is the method signature:&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:f3969625-29f1-43dc-9d12-6aa1c2b25bc3" class="wlWriterEditableSmartContent"&gt;
&lt;pre class="brush: c#;"&gt;public void DoProcess(bool bValidate)&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Hmm, the code looks quite magic so far and the argument (and the method name) itself is more or less an anti-pattern already. But when I checked the DoProcess method, I saw something more or less like this:&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:99c75cc4-33a5-4803-a995-3b49ff14fcb3" class="wlWriterEditableSmartContent"&gt;
&lt;pre class="brush: c#;"&gt;public void DoProcess(bool bValidate)
{
	using (SqlConnection con = new SqlConnection(connectionString))
	{
		con.Open();
		SqlTransaction transaction = con.BeginTransaction();

		// Some business logic here...

		if(bValidate)
		{
			transaction.Rollback();
		}
		else
		{
			transaction.Commit();
		}
	}
}&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="http://blog.eweibel.net/wp-content/uploads/Fotolia_20233238_S1.jpg" rel="lightbox[1182]"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Fotolia_20233238_S" border="0" alt="Fotolia_20233238_S" align="right" src="http://blog.eweibel.net/wp-content/uploads/Fotolia_20233238_S_thumb1.jpg" width="103" height="103" /&gt;&lt;/a&gt;The idea behind this code is, if it could be executed successfully, that means a successful validation. If there are any problems during the execution, those problems are the result of the validation. The execution itself wouldn&amp;#8217;t be a problem after a successful validation (now I need a drink&amp;#8230;).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Doing it better&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s easy to find bad things, but it&amp;#8217;s sometimes harder to do things right. But in this case, the better way is easy. First, you have to separate your business logic from the data access logic. This means following the &lt;a href="http://en.wikipedia.org/wiki/Separation_of_concerns" target="_blank"&gt;separation of concern principle&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The next point is, that you&amp;#8217;re able to validate your model. So put the logic where it should be. If you use a &lt;a href="http://en.wikipedia.org/wiki/Domain_model" target="_blank"&gt;domain model&lt;/a&gt;, the logic to validate an entity has to be on that entity. Or if you have a &lt;a href="http://martinfowler.com/eaaCatalog/tableModule.html" target="_blank"&gt;table module approach&lt;/a&gt;, the logic to validate an entity has to be on the corresponding table module.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Side effects&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;There are also other problems with this anti-pattern. There are some side effects with the data.&lt;/p&gt;
&lt;p&gt;As you know, transactions should be as short as possible to prevent lock problems with your data. But if you have combined the business logic and data access logic, your transactions are much longer than needed. To make it worse, this anti-pattern forces you to do it at least twice.&lt;/p&gt;
&lt;p&gt;There are reasonable use cases for &lt;a href="http://en.wikipedia.org/wiki/Isolation_%28database_systems%29" target="_blank"&gt;dirty reads&lt;/a&gt;: For example fast searches. In this case you accept dirty reads and you don&amp;#8217;t want any locks on your data in the database. Normally, the chance to have a dirty read isn&amp;#8217;t that high, but with this anti-pattern the chances to get a dirty read are significantly higher.&lt;/p&gt;
&lt;p&gt;&lt;a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.eweibel.net%2F%3Fp%3D1182&amp;amp;title=Anti-Pattern%20%E2%80%98Validation%20by%20Execute%20%E2%80%98n%E2%80%99%20Rollback%E2%80%99" id="wpa2a_4"&gt;&lt;img src="http://blog.eweibel.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded>
      <wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blog.eweibel.net/?feed=rss2&amp;p=1182</wfw:commentRss>
      <slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments>
    </item>
    <item p3:etag="W/&quot;CUUASX86fCp7ImA9WhRaGEk.&quot;" xmlns:p3="http://schemas.google.com/g/2005">
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5763764290649132593.post-1719091780382207441</guid>
      <link>http://feedproxy.google.com/~r/closed-loop/~3/Ayxao0NV3NM/i-just-discovered-that-quote-of-me-made.html</link>
      <author>noreply@blogger.com</author>
      <category domain="http://www.blogger.com/atom/ns#">patterns</category>
      <category domain="http://www.blogger.com/atom/ns#">bookreview</category>
      <category domain="http://www.blogger.com/atom/ns#">programming</category>
      <title>Thoughts about Dependency Injection</title>
      <description>I just discovered, that a quote of me made it to the cover of &lt;a href="http://www.manning.com/seemann/"&gt;Dependency Injection in .NET&lt;/a&gt;: &lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-oPuBXTNGbqU/TysKMv39sYI/AAAAAAAABJw/vYe_MddIk8M/s1600/IMG_0344.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="239" src="http://2.bp.blogspot.com/-oPuBXTNGbqU/TysKMv39sYI/AAAAAAAABJw/vYe_MddIk8M/s320/IMG_0344.JPG" style="border: none;" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://www.manning.com/seemann/" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-GwQ4lRQZSN8/TyqQsPNyeoI/AAAAAAAABJo/4JFyHm06aRM/s1600/seemann_cover150.jpg" style="border: none;" /&gt;&lt;/a&gt;&lt;/div&gt;
Looking at the book in its final form, I am surprised at how well that quote fits my current thoughts.&lt;br /&gt;
&lt;br /&gt;
I like the style of the author. This stackoverflow answer is just a nice example of his style: &lt;a href="http://stackoverflow.com/a/2407614/32749"&gt;dependency injection can be dangerous for your career&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A quote from my original review of the manuscript:&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
This is one of the best programming books I have read in the last three years. I like about everything in this book. The technical insights. The way&amp;nbsp; it focuses on concepts and not on tools or technologies. [...] It is definitely suited for programmers that want to learn good design and development techniques. It is not a reference book for a technical framework.&lt;/blockquote&gt;
&lt;br /&gt;
However I have a problem with the hype of dependency injection in general. It definitely goes into the direction of &lt;a href="http://en.wikipedia.org/wiki/No_Silver_Bullet"&gt;accidental complexity&lt;/a&gt;. I mean 584 pages, is a bit heavy for a promise to get better &lt;a href="http://meekrosoft.wordpress.com/2010/10/31/internal-and-external-software-quality/"&gt;internal quality&lt;/a&gt; ... &lt;i&gt;given I do everything else right&lt;/i&gt;. Especially compared to other, much wider topics that can have a much broader impact on your development:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-A3sHSb88rYY/TyxOvkpkfDI/AAAAAAAABKc/5dLYVXs8JnQ/s1600/DI.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://1.bp.blogspot.com/-A3sHSb88rYY/TyxOvkpkfDI/AAAAAAAABKc/5dLYVXs8JnQ/s320/DI.jpg" style="border: none;" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
From this perspective&lt;i&gt; "All you need to know ... and more!"&lt;/i&gt; fits quite well: You will learn a lot reading the book, but it is sad that the current state of software development is that loaded with &lt;a href="http://en.wikipedia.org/wiki/No_Silver_Bullet"&gt;accidental complexity&lt;/a&gt; so that you have to be concerned with that much non-essential overhead ...&lt;br /&gt;
&lt;br /&gt;
I also recommend reading a real critique of the current state of dependency injection: &lt;a href="http://www.natpryce.com/articles/000783.html"&gt;"Dependency Injection" Considered Harmful&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="clear: right; font-size: 10px;"&gt;
&lt;a href="http://twitter.com/jbandi"&gt;&lt;img align="left" alt="http://www.google.com/s2/favicons?domain=twitter.com" border="0" height="13px" src="http://www.google.com/s2/favicons?domain=twitter.com" style="border: 0 none; margin: 0px;" /&gt;If you like this, follow me on twitter ...&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5763764290649132593-1719091780382207441?l=blog.jonasbandi.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/rP4FFh-CpNzw6SqLKV6vy6gkv94/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rP4FFh-CpNzw6SqLKV6vy6gkv94/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/rP4FFh-CpNzw6SqLKV6vy6gkv94/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rP4FFh-CpNzw6SqLKV6vy6gkv94/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=Ayxao0NV3NM:ZfZ8OMROyuc:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=Ayxao0NV3NM:ZfZ8OMROyuc:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=Ayxao0NV3NM:ZfZ8OMROyuc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=Ayxao0NV3NM:ZfZ8OMROyuc:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=Ayxao0NV3NM:ZfZ8OMROyuc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=Ayxao0NV3NM:ZfZ8OMROyuc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=Ayxao0NV3NM:ZfZ8OMROyuc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=Ayxao0NV3NM:ZfZ8OMROyuc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=Ayxao0NV3NM:ZfZ8OMROyuc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=Ayxao0NV3NM:ZfZ8OMROyuc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=Ayxao0NV3NM:ZfZ8OMROyuc:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=Ayxao0NV3NM:ZfZ8OMROyuc:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=Ayxao0NV3NM:ZfZ8OMROyuc:Y59mnZtVT5U"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/Ayxao0NV3NM" height="1" width="1"/&gt;</description>
      <pubDate>Tue, 21 Feb 2012 17:49:00 +0100</pubDate>
      <link rel="replies" type="application/atom+xml" title="Post Comments" href="http://blog.jonasbandi.net/feeds/1719091780382207441/comments/default" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="replies" type="text/html" title="3 Comments" href="http://www.blogger.com/comment.g?blogID=5763764290649132593&amp;postID=1719091780382207441" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/1719091780382207441?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/1719091780382207441?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <updated xmlns="http://www.w3.org/2005/Atom">2012-02-21T17:54:08+01:00</updated>
      <content type="html" xmlns="http://www.w3.org/2005/Atom">I just discovered, that a quote of me made it to the cover of &lt;a href="http://www.manning.com/seemann/"&gt;
Dependency Injection in .NET&lt;/a&gt;: &lt;br&gt;
&lt;div class="x_separator" style="clear:both; text-align:center"&gt;&lt;a href="http://2.bp.blogspot.com/-oPuBXTNGbqU/TysKMv39sYI/AAAAAAAABJw/vYe_MddIk8M/s1600/IMG_0344.JPG" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="239" src="http://2.bp.blogspot.com/-oPuBXTNGbqU/TysKMv39sYI/AAAAAAAABJw/vYe_MddIk8M/s320/IMG_0344.JPG" width="320" style="border:none"&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;div class="x_separator" style="clear:both; text-align:center"&gt;&lt;a href="http://www.manning.com/seemann/" style="clear:right; float:right; margin-bottom:1em; margin-left:1em"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-GwQ4lRQZSN8/TyqQsPNyeoI/AAAAAAAABJo/4JFyHm06aRM/s1600/seemann_cover150.jpg" style="border:none"&gt;&lt;/a&gt;&lt;/div&gt;
Looking at the book in its final form, I am surprised at how well that quote fits my current thoughts.&lt;br&gt;
&lt;br&gt;
I like the style of the author. This stackoverflow answer is just a nice example of his style:
&lt;a href="http://stackoverflow.com/a/2407614/32749"&gt;dependency injection can be dangerous for your career&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
A quote from my original review of the manuscript:&lt;br&gt;
&lt;blockquote class="x_tr_bq"&gt;This is one of the best programming books I have read in the last three years. I like about everything in this book. The technical insights. The way&amp;nbsp; it focuses on concepts and not on tools or technologies. [...] It is definitely
 suited for programmers that want to learn good design and development techniques. It is not a reference book for a technical framework.&lt;/blockquote&gt;
&lt;br&gt;
However I have a problem with the hype of dependency injection in general. It definitely goes into the direction of
&lt;a href="http://en.wikipedia.org/wiki/No_Silver_Bullet"&gt;accidental complexity&lt;/a&gt;. I mean 584 pages, is a bit heavy for a promise to get better
&lt;a href="http://meekrosoft.wordpress.com/2010/10/31/internal-and-external-software-quality/"&gt;
internal quality&lt;/a&gt; ... &lt;i&gt;given I do everything else right&lt;/i&gt;. Especially compared to other, much wider topics that can have a much broader impact on your development:&lt;br&gt;
&lt;div class="x_separator" style="clear:both; text-align:center"&gt;&lt;a href="http://1.bp.blogspot.com/-A3sHSb88rYY/TyxOvkpkfDI/AAAAAAAABKc/5dLYVXs8JnQ/s1600/DI.jpg" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="240" src="http://1.bp.blogspot.com/-A3sHSb88rYY/TyxOvkpkfDI/AAAAAAAABKc/5dLYVXs8JnQ/s320/DI.jpg" width="320" style="border:none"&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
From this perspective&lt;i&gt; &amp;quot;All you need to know ... and more!&amp;quot;&lt;/i&gt; fits quite well: You will learn a lot reading the book, but it is sad that the current state of software development is that loaded with
&lt;a href="http://en.wikipedia.org/wiki/No_Silver_Bullet"&gt;accidental complexity&lt;/a&gt; so that you have to be concerned with that much non-essential overhead ...&lt;br&gt;
&lt;br&gt;
I also recommend reading a real critique of the current state of dependency injection:
&lt;a href="http://www.natpryce.com/articles/000783.html"&gt;&amp;quot;Dependency Injection&amp;quot; Considered Harmful&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;div style="clear:right; font-size:10px"&gt;&lt;a href="http://twitter.com/jbandi"&gt;&lt;img align="left" alt="http://www.google.com/s2/favicons?domain=twitter.com" border="0" height="13px" src="http://www.google.com/s2/favicons?domain=twitter.com" style="border:0 none; margin:0px"&gt;If
 you like this, follow me on twitter ...&lt;/a&gt;&lt;/div&gt;
&lt;div class="x_blogger-post-footer"&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/5763764290649132593-1719091780382207441?l=blog.jonasbandi.net" alt=""&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/rP4FFh-CpNzw6SqLKV6vy6gkv94/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rP4FFh-CpNzw6SqLKV6vy6gkv94/0/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/rP4FFh-CpNzw6SqLKV6vy6gkv94/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rP4FFh-CpNzw6SqLKV6vy6gkv94/1/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="x_feedflare"&gt;&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=Ayxao0NV3NM:ZfZ8OMROyuc:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=Ayxao0NV3NM:ZfZ8OMROyuc:4cEx4HpKnUU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=Ayxao0NV3NM:ZfZ8OMROyuc:yIl2AUoC8zA"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=Ayxao0NV3NM:ZfZ8OMROyuc:I9og5sOYxJI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=Ayxao0NV3NM:ZfZ8OMROyuc:F7zBnMyn0Lo"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=Ayxao0NV3NM:ZfZ8OMROyuc:F7zBnMyn0Lo" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=Ayxao0NV3NM:ZfZ8OMROyuc:V_sGLiPBpWU"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=Ayxao0NV3NM:ZfZ8OMROyuc:V_sGLiPBpWU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=Ayxao0NV3NM:ZfZ8OMROyuc:gIN9vFwOqvQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=Ayxao0NV3NM:ZfZ8OMROyuc:gIN9vFwOqvQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=Ayxao0NV3NM:ZfZ8OMROyuc:cGdyc7Q-1BI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=Ayxao0NV3NM:ZfZ8OMROyuc:G79ilh31hkQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=Ayxao0NV3NM:ZfZ8OMROyuc:Y59mnZtVT5U"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/Ayxao0NV3NM" height="1" width="1"&gt;</content>
      <app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-21T17:54:08.114+01:00</app:edited>
      <media:thumbnail url="http://2.bp.blogspot.com/-oPuBXTNGbqU/TysKMv39sYI/AAAAAAAABJw/vYe_MddIk8M/s72-c/IMG_0344.JPG" height="72" width="72" xmlns:media="http://search.yahoo.com/mrss/"></media:thumbnail>
      <thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total>
      <feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blog.jonasbandi.net/2012/02/i-just-discovered-that-quote-of-me-made.html</feedburner:origLink>
    </item>
    <item>
      <guid isPermaLink="true">http://www.databinding.net/blog/post/2012/02/17/clr-funktion-fuer-den-sql-server-erstellen.html</guid>
      <link>http://www.databinding.net/blog/post/2012/02/17/clr-funktion-fuer-den-sql-server-erstellen.html</link>
      <author>ipt:linkTo_UnCryptMailto('nbjmup+'); (René)</author>
      <category>.NET Development</category>
      <category>SQL Server</category>
      <title>CLR Funktion für den SQL Server erstellen</title>
      <description>Lange habe ich auf die Gelegenheit und einen Anwendungsfall gewartet, um eine CLR Funktion für den SQL Server schreiben zu können. Für ein Migrationsprojekt habe ich nun einen Einsatzzweck gefunden. ;-)</description>
      <pubDate>Fri, 17 Feb 2012 22:18:00 +0200</pubDate>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"> Lange habe ich auf die Gelegenheit und einen Anwendungsfall gewartet, um eine CLR Funktion für den SQL Server schreiben zu können. Für ein Migrationsprojekt habe ich nun einen Einsatzzweck gefunden. ;-)</content:encoded>
    </item>
    <item>
      <guid isPermaLink="true">http://www.databinding.net/blog/post/2012/02/15/wieder-gefunden.html</guid>
      <link>http://www.databinding.net/blog/post/2012/02/15/wieder-gefunden.html</link>
      <author>ipt:linkTo_UnCryptMailto('nbjmup+'); (René)</author>
      <category>Off-topic</category>
      <title>Wieder gefunden</title>
      <description>Wenn Du ein Schiff bauen willst, dann trommle nicht Männer zusammen um Holz zu beschaffen, Aufgaben zu vergeben und die Arbeit einzuteilen, sondern lehre die Männer die Sehnsucht nach dem weiten, endlose...</description>
      <pubDate>Wed, 15 Feb 2012 20:38:00 +0200</pubDate>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"> Wenn Du ein Schiff bauen willst, dann trommle nicht Männer zusammen um Holz zu beschaffen, Aufgaben zu vergeben und die Arbeit einzuteilen, sondern lehre die Männer die Sehnsucht nach dem weiten, endlosen Meer.
Antoine de Saint-Exupery</content:encoded>
    </item>
    <item>
      <guid isPermaLink="true">http://blog.eweibel.net/?p=1167</guid>
      <link>http://blog.eweibel.net/?p=1167</link>
      <category>New technology</category>
      <category>Software engineering</category>
      <title>Who should make decisions about technologies?</title>
      <description>One of the biggest problems of software engineering companies in Switzerland is currently to get new software developers. To get new employees there are several points as for example salary, environment, career possibilities and technologies. The last
 point looks easy but in reality it isn’t that easy. Why are essential technology decisions (like languages, frameworks, [...]</description>
      <pubDate>Mon, 13 Feb 2012 16:00:00 Z</pubDate>
      <comments>http://blog.eweibel.net/?p=1167#comments</comments>
      <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Patrick</dc:creator>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;&lt;a href="http://blog.eweibel.net/wp-content/uploads/Fotolia_36561464_S.jpg" rel="lightbox[1167]"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="Stay on course" border="0" alt="Stay on course" align="right" src="http://blog.eweibel.net/wp-content/uploads/Fotolia_36561464_S_thumb.jpg" width="280" height="222" /&gt;&lt;/a&gt;One of the biggest problems of software engineering companies in Switzerland is currently to get new software developers. To get new employees there are several points as for example salary, environment, career possibilities and technologies. The last point looks easy but in reality it isn&amp;#8217;t that easy. Why are essential technology decisions (like languages, frameworks, application servers or big libraries) not only made by developers? Why does the management mostly make those decisions?&lt;/p&gt;
&lt;p&gt;In this blog post I try to see the technology aspect for creating software from different perspectives. Those views based on experiences and talks I had during the last ten years.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Customer&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;As expected the technology used for the software is for the customer irrelevant. But for him counts the working functionality and some non-functional requirements as usability or performance.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Product owner or product manager&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The product owner neither is interested in the used technology directly. He&amp;#8217;s mainly interested to get the functionality in time and in budget. But he&amp;#8217;s also interested to get a good quality of the product, else he&amp;#8217;ll receive complaints from the users (of the customer).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IT department&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The IT department who has to operate the system is somehow interested in technology. They usually don&amp;#8217;t like new technology. One reason is for sure &amp;quot;never change a running system&amp;quot;. Another reason is the needed knowhow for every technology. They have to concern the cost of maintaining that knowhow. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Software Architect&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The software architect (and I am currently one) is special. When he&amp;#8217;s interested in technology, he should take responsibility in the project. If not, you have an architect who lives in the &amp;quot;ivory tower&amp;quot;. Mainly the architect should concern more about structure, integration of components or other systems, maintainability and quality.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Human resource management&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In most of the companies this part get lost. Today it is hard (specially in Switzerland) to get new developers. So, new and fancy technologies make a job or company more attractive. This means, that the human resource management is interested to use up-to-date technologies.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Developer&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Well, most developers care about technology. Specially younger developers more because they had the possibility to try those at the university or in little projects with their colleagues. For those developers technology is essential for the daily job and to be motivated. If they have not the possibility to use new technology they will leave the company after one or two years. And that isn&amp;#8217;t cheap for the company.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Management&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Today most companies use some self-made frameworks. One reason they spent money to create one is the fear of creative developers who want &amp;quot;to fulfil themself&amp;quot;. This means for the management that those developers are out of control and create overcomplicated things with a lot of different technologies. I think this fear is unjustified today, but in the days when everybody could call himself a developer it was not only rightless.   &lt;br /&gt;But the management has the difficult task to concern all the roles I described before and make a reasonably decision.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;It seams there is a fight between the developers and the management who should make decisions about technologies. It is important that the management has all the information it needs and can concern all the risks of an introduction of a new technology. But the management has to be open to all the facts and arguments and should not presume to make a decision based on old experiences, assumptions or prejudices.   &lt;br /&gt;If the decisions are too offensive, then you have at the end quite everything in the IT department (for example all java application server products). On the other hand, if the decisions are too defensive, then you will have a stagnation. This will be very expensive to solve because you have to spend a lot of many to get up-to-date again.&lt;/p&gt;
&lt;p&gt;&lt;a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.eweibel.net%2F%3Fp%3D1167&amp;amp;title=Who%20should%20make%20decisions%20about%20technologies%3F" id="wpa2a_6"&gt;&lt;img src="http://blog.eweibel.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded>
      <wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blog.eweibel.net/?feed=rss2&amp;p=1167</wfw:commentRss>
      <slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments>
    </item>
    <item>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5538993289220486569.post-3718225021270421832</guid>
      <link>http://wernerkrippendorf.blogspot.com/2012/02/seismic-explorer-europe-im-android.html</link>
      <author>noreply@blogger.com</author>
      <title>Seismic Explorer Europe im Android Market</title>
      <description>&lt;div class="separator" style="clear: both; text-align: left;"&gt;Heute habe ich den Seismic Explorer Europe im Android Market veröffentlicht.&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Aus aktuellem Anlass eventuell auch in der Schweiz relevant.&amp;nbsp;&lt;a href="https://market.android.com/details?id=ch.kripp.seismic"&gt;https://market.android.com/details?id=ch.kripp.seismic&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Die Applikation listet Erdbeben Ereignisse primär in/aus Europa. Die meisten im Marktet verfügbaren Apps beziehen sich auf nicht-europäische Dienste. Als Datenquelle dient h&lt;a href="http://www.seismicportal.eu/jetspeed/portal/"&gt;ttp://www.seismicportal.eu/jetspeed/portal/&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Weitere Features wie Waveform Data, Map-Search etc. sind bereits in Arbeit - Feature requests, Lob, Kritik ist stets willkommen!&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-VSoqiurOnkw/TzfpUixIdGI/AAAAAAAAJ3E/puZYw4H8_rw/s1600/market.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="237" src="http://4.bp.blogspot.com/-VSoqiurOnkw/TzfpUixIdGI/AAAAAAAAJ3E/puZYw4H8_rw/s320/market.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5538993289220486569-3718225021270421832?l=wernerkrippendorf.blogspot.com' alt='' /&gt;&lt;/div&gt;</description>
      <pubDate>Sun, 12 Feb 2012 17:36:00 +0100</pubDate>
      <link rel="replies" type="application/atom+xml" title="Kommentare zum Post" href="http://wernerkrippendorf.blogspot.com/feeds/3718225021270421832/comments/default" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="replies" type="text/html" title="2 Kommentare" href="http://wernerkrippendorf.blogspot.com/2012/02/seismic-explorer-europe-im-android.html#comment-form" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5538993289220486569/posts/default/3718225021270421832" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5538993289220486569/posts/default/3718225021270421832" xmlns="http://www.w3.org/2005/Atom" />
      <updated xmlns="http://www.w3.org/2005/Atom">2012-02-12T18:16:07+01:00</updated>
      <content type="html" xmlns="http://www.w3.org/2005/Atom">
&lt;div class="x_separator" style="clear:both; text-align:left"&gt;Heute habe ich den Seismic Explorer Europe im Android Market veröffentlicht.&amp;nbsp;&lt;/div&gt;
&lt;div class="x_separator" style="clear:both; text-align:left"&gt;Aus aktuellem Anlass eventuell auch in der Schweiz relevant.&amp;nbsp;&lt;a href="https://market.android.com/details?id=ch.kripp.seismic"&gt;https://market.android.com/details?id=ch.kripp.seismic&lt;/a&gt;&lt;/div&gt;
&lt;div class="x_separator" style="clear:both; text-align:left"&gt;&lt;br&gt;
&lt;/div&gt;
&lt;div class="x_separator" style="clear:both; text-align:left"&gt;Die Applikation listet Erdbeben Ereignisse primär in/aus Europa. Die meisten im Marktet verfügbaren Apps beziehen sich auf nicht-europäische Dienste. Als Datenquelle dient h&lt;a href="http://www.seismicportal.eu/jetspeed/portal/"&gt;ttp://www.seismicportal.eu/jetspeed/portal/&lt;/a&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class="x_separator" style="clear:both; text-align:left"&gt;&lt;br&gt;
&lt;/div&gt;
&lt;div class="x_separator" style="clear:both; text-align:left"&gt;Weitere Features wie Waveform Data, Map-Search etc. sind bereits in Arbeit - Feature requests, Lob, Kritik ist stets willkommen!&amp;nbsp;&lt;/div&gt;
&lt;div class="x_separator" style="clear:both; text-align:left"&gt;&lt;br&gt;
&lt;/div&gt;
&lt;div class="x_separator" style="clear:both; text-align:center"&gt;&lt;a href="http://4.bp.blogspot.com/-VSoqiurOnkw/TzfpUixIdGI/AAAAAAAAJ3E/puZYw4H8_rw/s1600/market.PNG" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="237" src="http://4.bp.blogspot.com/-VSoqiurOnkw/TzfpUixIdGI/AAAAAAAAJ3E/puZYw4H8_rw/s320/market.PNG" width="320"&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;div&gt;&lt;br&gt;
&lt;/div&gt;
&lt;div class="x_blogger-post-footer"&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/5538993289220486569-3718225021270421832?l=wernerkrippendorf.blogspot.com" alt=""&gt;&lt;/div&gt;
</content>
      <media:thumbnail url="http://4.bp.blogspot.com/-VSoqiurOnkw/TzfpUixIdGI/AAAAAAAAJ3E/puZYw4H8_rw/s72-c/market.PNG" height="72" width="72" xmlns:media="http://search.yahoo.com/mrss/"></media:thumbnail>
      <thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total>
    </item>
    <item xml:base="http://www.dnug-bern.ch/Event2011.aspx#634642344000000000">
      <guid isPermaLink="true">http://www.dnug-bern.ch/Event2011.aspx#634642344000000000</guid>
      <link>http://www.dnug-bern.ch/Event2011.aspx#634642344000000000</link>
      <category>.NET User Group Bern Event</category>
      <title>Beyond Windows Azure Roles mit Roland Krummenacher</title>
      <description>
&lt;div style="width:100%; padding:0; border-bottom:1px solid #666; display:block; margin-bottom:16px"&gt;
&lt;img src="http://www.dnug-bern.ch/images/be_silhouette.gif" alt="" style="border:0; float:left"&gt;
&lt;h1 style="margin:0; padding-top:5px; color:#666"&gt;.NET User Group Bern Event&lt;/h1&gt;
&lt;/div&gt;
&lt;br style="clear:left"&gt;
&lt;h2&gt;Dienstag, 7. Februar 2012&amp;nbsp;(18:00 bis 21:00 Uhr)&amp;nbsp;&lt;/h2&gt;
&lt;h3&gt;Beyond Windows Azure Roles mit Roland Krummenacher&lt;/h3&gt;
&lt;p&gt;Nachdem wir im ersten Teil die grundlegenden Konzepte kennengelernt haben, beschäftigen wir uns im zweiten Teil mit dem Thema Beyond Windows Azure Roles.
&lt;/p&gt;
&lt;strong&gt;Abstract:&lt;/strong&gt;
&lt;p&gt;Im zweiten Teil der Serie werden verschiedene Dienste vorgestellt, welche auf der Azure Plattform zusätzlich zu den Web- und Worker-Roles und SQL Azure angeboten werden. Die Themen sind Azure Connect, Azure Content Delivery Network, SQL Azure Reporting Services,
 SQL Azure Data Sync, SQL Azure Federations, Azure AppFabric Service Bus, Azure AppFabric Access Control sowie Azure AppFabric Caching. Das Ziel ist, zusammen mit dem ersten Teil der Vortragsreihe einen kompletten Überblick über den aktuellen Stand der Azure
 Plattform zu bieten. &lt;/p&gt;
&lt;strong&gt;Über Roland Krummenacher&lt;/strong&gt;
&lt;p&gt;Roland Krummenacher ist Software Entwickler bei der bbv Software Services AG. Das Projekt „TrueSense“ seiner Masterarbeit zu Windows Azure wurde 2011 mit dem Microsoft Schweiz Technology Innovation Award ausgezeichnet. Er berät verschiedene Firmen in Azure
 Projekten. &lt;/p&gt;
&lt;strong&gt;Anmeldung&lt;/strong&gt;
&lt;p&gt;Bitte beachte, dass für dieses Treffen eine &lt;a title="Zur Anmeldung auf XING" href="https://www.xing.com/events/beyond-windows-azure-roles-roland-krummenacher-849287" target="_blank"&gt;
Anmeldung&lt;/a&gt; erforderlich ist. Ohne Xing-Konto kannst Du auch unser Kontaktformular nutzen.&lt;/p&gt;
&lt;p&gt;Das Twitter-Hashtag für diese Veranstaltung: &lt;strong&gt;#dnugbeaz2&lt;/strong&gt;. &lt;/p&gt;
&lt;p&gt;Die Aktivitäten können während der Veranstaltung &lt;a href="http://dnug-bern.ch/TwitterWall.aspx" target="_blank"&gt;
hier&lt;/a&gt;&amp;nbsp;betrachtet werden. &lt;/p&gt;
&lt;p&gt;Wir freuen uns auf Deine Teilnahme! &lt;/p&gt;
&lt;p&gt;Martin Affolter, Kay Herzam und René Leupold &lt;/p&gt;
</description>
      <pubDate>Tue, 07 Feb 2012 18:00:00 +0100</pubDate>
    </item>
    <item p3:etag="W/&quot;D0QBRXk-eCp7ImA9WhRbEks.&quot;" xmlns:p3="http://schemas.google.com/g/2005">
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5763764290649132593.post-8925773607085274690</guid>
      <link>http://feedproxy.google.com/~r/closed-loop/~3/GlFy670vYzc/future-smells-like-javascript.html</link>
      <author>noreply@blogger.com</author>
      <category domain="http://www.blogger.com/atom/ns#">javascript</category>
      <category domain="http://www.blogger.com/atom/ns#">programming</category>
      <title>The future smells like JavaScript</title>
      <description>&lt;div class="separator" style="float: right; text-align: right;"&gt;
&lt;a href="http://en.wikipedia.org/wiki/JavaScript"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-SYscWhKil2c/Tyl7VBWFEEI/AAAAAAAABJI/67C2IzYjHGg/s1600/js.jpg" style="border: medium none;" /&gt;&lt;/a&gt;&lt;/div&gt;
Of course I am only &lt;a href="http://davybrion.com/blog/2011/06/you-might-want-to-start-taking-javascript-seriously/"&gt;repeating what others&lt;/a&gt; are preaching about the recent &lt;a href="http://dannorth.net/2011/12/19/the-rise-and-rise-of-javascript/"&gt;rise of JavaScript&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
But I think the movement is significant and can't be overstated. And recent developments are really even making it more and more interesting.&lt;br /&gt;
&lt;br /&gt;
Nobody can deny hat &lt;a href="http://en.wikipedia.org/wiki/JavaScript"&gt;JavaScript&lt;/a&gt; is the de facto programming language of Html5. Every other language trying to bolt itself onto Html5 looks like pure friction so far. And Html5 is looking upon a prospering future.&lt;br /&gt;
&lt;br /&gt;
Today we are used to some established JavaScript frameworks that make working with JavaScript more fun and productive. &lt;a href="http://jquery.com/"&gt;jQuery&lt;/a&gt; seems to emerge as the clear leader by popularity here.&lt;br /&gt;
&lt;br /&gt;
More recently&lt;a href="http://codebrief.com/2012/01/the-top-10-javascript-mvc-frameworks-reviewed/"&gt; tons of javascript application frameworks&lt;/a&gt; (so called MVC frameworks) are emerging, that facilitate programming complex applications inside the browser and taking most of the traditional presentation-logic away from the server.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://nodejs.org/" imageanchor="1" style="clear: left; float: left; margin-bottom: 0px; margin-right: 1em;"&gt;&lt;img border="0" height="100" src="http://2.bp.blogspot.com/-paluGXhk-8s/Tym6PfvGp9I/AAAAAAAABJY/Ehjgd7UWack/s320/nodejs.png" style="border: none;" width="220" /&gt;&lt;/a&gt;&lt;/div&gt;
On the other hand we have the &lt;a href="http://nodejs.org/"&gt;node.js&lt;/a&gt; ecosystem that takes JavaScript to the server and allows us to use the same language, concepts, libraries and tools for the full application development stack.&lt;br /&gt;
And that ecosystem is thriving! JavaScript is the &lt;a href="https://github.com/languages"&gt;most popular langage on GitHub&lt;/a&gt; ... and have a look at the impressive &lt;a href="https://github.com/joyent/node/wiki/modules"&gt;node modules list&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Now this is all well and &lt;a href="http://martinfowler.com/bliki/AlphaGeek.html"&gt;alpha-geeky&lt;/a&gt;, but there are showing up the first "real-world" success stories: &lt;a href="http://www.theregister.co.uk/2011/03/01/the_rise_and_rise_of_node_dot_js/"&gt;Voxer&lt;/a&gt;, &lt;a href="http://venturebeat.com/2012/01/24/why-walmart-is-using-node-js/"&gt;Walmart&lt;/a&gt;, &lt;a href="http://venturebeat.com/2011/08/16/linkedin-node/"&gt;LinkedIn&lt;/a&gt; ...&lt;br /&gt;
&lt;br /&gt;
Of course there are &lt;a href="http://teddziuba.com/2011/10/node-js-is-cancer.html"&gt;the critics&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Surprisingly Microsoft recently positioned itself to become one of the most influencing conveyor of the JavaScript hype. It seems that they are investing heavily into JavaScript on different frontiers:&lt;br /&gt;
&lt;br /&gt;
Microsoft was &lt;a href="http://blog.nodejs.org/2011/06/23/porting-node-to-windows-with-microsoft%E2%80%99s-help/"&gt;pushing node.js onto the the Windows environment&lt;/a&gt;.&lt;br /&gt;
Now they are &lt;a href="http://www.windowsazure.com/en-us/develop/nodejs/"&gt;pushing it into their Azure cloud platform&lt;/a&gt;. And &lt;a href="http://www.windowsazure.com/en-us/develop/nodejs/tutorials/deploying-with-cloud9/"&gt;evolving a 3rd party ecosystem around that&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="float: right; text-align: center;"&gt;
&lt;img border="0" height="120" src="http://4.bp.blogspot.com/-GyiFQw-SVLc/Tyl7te9DLfI/AAAAAAAABJQ/19iB-ne5kIE/s320/w8.jpg" style="border: none;" width="200" /&gt;&lt;/div&gt;
But probably the biggest step for the future of JavaScript is the new strategy of Microsoft for &lt;a href="http://en.wikipedia.org/wiki/Windows_8"&gt;Windows 8&lt;/a&gt; desktop and tablet applications (Metro style apps). While there are several options for developing Metro style apps, &lt;a href="http://msdn.microsoft.com/en-us/library/windows/apps/hh465380.aspx"&gt;JavaScript seems to become a major pillar&lt;/a&gt;.&lt;br /&gt;
This move opens up yet another area for JavaScript and JavaScript developers, completely adjacent to the web.&lt;br /&gt;
Developing for the desktop (or tablet) will most likely always be pretty different than for the web. For Metro style apps there will be a lot of new concepts, libraries and tools that are different to the ones that are used in web development (just have a look at &lt;a href="http://en.wikipedia.org/wiki/Windows_Runtime"&gt;WinRT&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/windows/apps/hh465493.aspx"&gt;WinJS&lt;/a&gt; ...).&lt;br /&gt;
But the desktop- and the web-stack will move closer together and JavaScript with HTML5 and CSS will be the common denominator. Which I think is a very interesting evolution.&lt;br /&gt;
For instance look at this &lt;a href="http://code.msdn.microsoft.com/windowsapps/Groove-Drum-Sequencer-cc6028ec"&gt;example of a drum sequencer&lt;/a&gt; (a traditional client application) that is using JavaScript and jQuery for its UI.&lt;br /&gt;
The prospect of reusing code and knowhow between desktop-ui- and web-ui-programming seems tempting ... even if a lot of &lt;a href="https://twitter.com/#%21/ursenzler/status/162793217425801216"&gt;.NET developers&lt;/a&gt; and &lt;a href="http://martinfowler.com/bliki/gotoAarhus2011.html"&gt;other gurus&lt;/a&gt; are not so thrilled by the prospect of omnipresent JavaScript.&lt;br /&gt;
&lt;br /&gt;
Of course another interesting thing will be to see how Metro style apps will change the architecture of future desktop applications. I think some concepts from web development will get adopted into desktop development. A stricter enforcement of separation between UI- and backend-components within a single application will most probably be a result (i.e. there seems to be no notion of traditional data-access in WinRT).&lt;br /&gt;
&lt;div style="color: #999999;"&gt;
&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div style="color: #444444;"&gt;
&lt;span style="font-size: x-small;"&gt;PS: This is my first cross-post between &lt;a href="http://blog.jonasbandi.net/"&gt;my blog&lt;/a&gt; and &lt;a href="http://www.planetgeek.ch/"&gt;planetgeek.ch&lt;/a&gt;. Thanks &lt;a href="https://twitter.com/#%21/danielmarbach"&gt;@danielmarbach&lt;/a&gt; for inviting me.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div style="clear: right; font-size: 10px;"&gt;
&lt;a href="http://twitter.com/jbandi"&gt;&lt;img align="left" alt="http://www.google.com/s2/favicons?domain=twitter.com" border="0" height="13px" src="http://www.google.com/s2/favicons?domain=twitter.com" style="border: 0 none; margin: 0px;" /&gt;If you like this, follow me on twitter ...&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5763764290649132593-8925773607085274690?l=blog.jonasbandi.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/NqG4iOAnZQOkLjAsauqGLMDm5Io/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NqG4iOAnZQOkLjAsauqGLMDm5Io/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/NqG4iOAnZQOkLjAsauqGLMDm5Io/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NqG4iOAnZQOkLjAsauqGLMDm5Io/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=GlFy670vYzc:bRxfiQubEpQ:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=GlFy670vYzc:bRxfiQubEpQ:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=GlFy670vYzc:bRxfiQubEpQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=GlFy670vYzc:bRxfiQubEpQ:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=GlFy670vYzc:bRxfiQubEpQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=GlFy670vYzc:bRxfiQubEpQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=GlFy670vYzc:bRxfiQubEpQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=GlFy670vYzc:bRxfiQubEpQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=GlFy670vYzc:bRxfiQubEpQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=GlFy670vYzc:bRxfiQubEpQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=GlFy670vYzc:bRxfiQubEpQ:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=GlFy670vYzc:bRxfiQubEpQ:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=GlFy670vYzc:bRxfiQubEpQ:Y59mnZtVT5U"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/GlFy670vYzc" height="1" width="1"/&gt;</description>
      <pubDate>Thu, 02 Feb 2012 21:48:00 +0100</pubDate>
      <link rel="replies" type="application/atom+xml" title="Post Comments" href="http://blog.jonasbandi.net/feeds/8925773607085274690/comments/default" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="replies" type="text/html" title="3 Comments" href="http://www.blogger.com/comment.g?blogID=5763764290649132593&amp;postID=8925773607085274690" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/8925773607085274690?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/8925773607085274690?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <updated xmlns="http://www.w3.org/2005/Atom">2012-02-03T11:35:54+01:00</updated>
      <content type="html" xmlns="http://www.w3.org/2005/Atom">
&lt;div class="x_separator" style="float:right; text-align:right"&gt;&lt;a href="http://en.wikipedia.org/wiki/JavaScript"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-SYscWhKil2c/Tyl7VBWFEEI/AAAAAAAABJI/67C2IzYjHGg/s1600/js.jpg" style="border:medium none"&gt;&lt;/a&gt;&lt;/div&gt;
Of course I am only &lt;a href="http://davybrion.com/blog/2011/06/you-might-want-to-start-taking-javascript-seriously/"&gt;
repeating what others&lt;/a&gt; are preaching about the recent &lt;a href="http://dannorth.net/2011/12/19/the-rise-and-rise-of-javascript/"&gt;
rise of JavaScript&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
But I think the movement is significant and can't be overstated. And recent developments are really even making it more and more interesting.&lt;br&gt;
&lt;br&gt;
Nobody can deny hat &lt;a href="http://en.wikipedia.org/wiki/JavaScript"&gt;JavaScript&lt;/a&gt; is the de facto programming language of Html5. Every other language trying to bolt itself onto Html5 looks like pure friction so far. And Html5 is looking upon a prospering
 future.&lt;br&gt;
&lt;br&gt;
Today we are used to some established JavaScript frameworks that make working with JavaScript more fun and productive.
&lt;a href="http://jquery.com/"&gt;jQuery&lt;/a&gt; seems to emerge as the clear leader by popularity here.&lt;br&gt;
&lt;br&gt;
More recently&lt;a href="http://codebrief.com/2012/01/the-top-10-javascript-mvc-frameworks-reviewed/"&gt; tons of javascript application frameworks&lt;/a&gt; (so called MVC frameworks) are emerging, that facilitate programming complex applications inside the browser and
 taking most of the traditional presentation-logic away from the server.&lt;br&gt;
&lt;br&gt;
&lt;div class="x_separator" style="clear:both; text-align:center"&gt;&lt;a href="http://nodejs.org/" style="clear:left; float:left; margin-bottom:0px; margin-right:1em"&gt;&lt;img border="0" height="100" src="http://2.bp.blogspot.com/-paluGXhk-8s/Tym6PfvGp9I/AAAAAAAABJY/Ehjgd7UWack/s320/nodejs.png" width="220" style="border:none"&gt;&lt;/a&gt;&lt;/div&gt;
On the other hand we have the &lt;a href="http://nodejs.org/"&gt;node.js&lt;/a&gt; ecosystem that takes JavaScript to the server and allows us to use the same language, concepts, libraries and tools for the full application development stack.&lt;br&gt;
And that ecosystem is thriving! JavaScript is the &lt;a href="https://github.com/languages"&gt;
most popular langage on GitHub&lt;/a&gt; ... and have a look at the impressive &lt;a href="https://github.com/joyent/node/wiki/modules"&gt;
node modules list&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
Now this is all well and &lt;a href="http://martinfowler.com/bliki/AlphaGeek.html"&gt;alpha-geeky&lt;/a&gt;, but there are showing up the first &amp;quot;real-world&amp;quot; success stories:
&lt;a href="http://www.theregister.co.uk/2011/03/01/the_rise_and_rise_of_node_dot_js/"&gt;
Voxer&lt;/a&gt;, &lt;a href="http://venturebeat.com/2012/01/24/why-walmart-is-using-node-js/"&gt;
Walmart&lt;/a&gt;, &lt;a href="http://venturebeat.com/2011/08/16/linkedin-node/"&gt;LinkedIn&lt;/a&gt; ...&lt;br&gt;
&lt;br&gt;
Of course there are &lt;a href="http://teddziuba.com/2011/10/node-js-is-cancer.html"&gt;
the critics&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
Surprisingly Microsoft recently positioned itself to become one of the most influencing conveyor of the JavaScript hype. It seems that they are investing heavily into JavaScript on different frontiers:&lt;br&gt;
&lt;br&gt;
Microsoft was &lt;a href="http://blog.nodejs.org/2011/06/23/porting-node-to-windows-with-microsoft%E2%80%99s-help/"&gt;
pushing node.js onto the the Windows environment&lt;/a&gt;.&lt;br&gt;
Now they are &lt;a href="http://www.windowsazure.com/en-us/develop/nodejs/"&gt;pushing it into their Azure cloud platform&lt;/a&gt;. And
&lt;a href="http://www.windowsazure.com/en-us/develop/nodejs/tutorials/deploying-with-cloud9/"&gt;
evolving a 3rd party ecosystem around that&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
&lt;div class="x_separator" style="float:right; text-align:center"&gt;&lt;img border="0" height="120" src="http://4.bp.blogspot.com/-GyiFQw-SVLc/Tyl7te9DLfI/AAAAAAAABJQ/19iB-ne5kIE/s320/w8.jpg" width="200" style="border:none"&gt;&lt;/div&gt;
But probably the biggest step for the future of JavaScript is the new strategy of Microsoft for
&lt;a href="http://en.wikipedia.org/wiki/Windows_8"&gt;Windows 8&lt;/a&gt; desktop and tablet applications (Metro style apps). While there are several options for developing Metro style apps,
&lt;a href="http://msdn.microsoft.com/en-us/library/windows/apps/hh465380.aspx"&gt;JavaScript seems to become a major pillar&lt;/a&gt;.&lt;br&gt;
This move opens up yet another area for JavaScript and JavaScript developers, completely adjacent to the web.&lt;br&gt;
Developing for the desktop (or tablet) will most likely always be pretty different than for the web. For Metro style apps there will be a lot of new concepts, libraries and tools that are different to the ones that are used in web development (just have a look
 at &lt;a href="http://en.wikipedia.org/wiki/Windows_Runtime"&gt;WinRT&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/windows/apps/hh465493.aspx"&gt;
WinJS&lt;/a&gt; ...).&lt;br&gt;
But the desktop- and the web-stack will move closer together and JavaScript with HTML5 and CSS will be the common denominator. Which I think is a very interesting evolution.&lt;br&gt;
For instance look at this &lt;a href="http://code.msdn.microsoft.com/windowsapps/Groove-Drum-Sequencer-cc6028ec"&gt;
example of a drum sequencer&lt;/a&gt; (a traditional client application) that is using JavaScript and jQuery for its UI.&lt;br&gt;
The prospect of reusing code and knowhow between desktop-ui- and web-ui-programming seems tempting ... even if a lot of
&lt;a href="https://twitter.com/#%21/ursenzler/status/162793217425801216"&gt;.NET developers&lt;/a&gt; and
&lt;a href="http://martinfowler.com/bliki/gotoAarhus2011.html"&gt;other gurus&lt;/a&gt; are not so thrilled by the prospect of omnipresent JavaScript.&lt;br&gt;
&lt;br&gt;
Of course another interesting thing will be to see how Metro style apps will change the architecture of future desktop applications. I think some concepts from web development will get adopted into desktop development. A stricter enforcement of separation between
 UI- and backend-components within a single application will most probably be a result (i.e. there seems to be no notion of traditional data-access in WinRT).&lt;br&gt;
&lt;div style="color:#999999"&gt;&lt;span style="font-size:x-small"&gt;&lt;br&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div style="color:#444444"&gt;&lt;span style="font-size:x-small"&gt;PS: This is my first cross-post between
&lt;a href="http://blog.jonasbandi.net/"&gt;my blog&lt;/a&gt; and &lt;a href="http://www.planetgeek.ch/"&gt;
planetgeek.ch&lt;/a&gt;. Thanks &lt;a href="https://twitter.com/#%21/danielmarbach"&gt;@danielmarbach&lt;/a&gt; for inviting me.&lt;/span&gt;&lt;br&gt;
&lt;span style="font-size:x-small"&gt;&lt;br&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div style="clear:right; font-size:10px"&gt;&lt;a href="http://twitter.com/jbandi"&gt;&lt;img align="left" alt="http://www.google.com/s2/favicons?domain=twitter.com" border="0" height="13px" src="http://www.google.com/s2/favicons?domain=twitter.com" style="border:0 none; margin:0px"&gt;If
 you like this, follow me on twitter ...&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;div class="x_blogger-post-footer"&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/5763764290649132593-8925773607085274690?l=blog.jonasbandi.net" alt=""&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/NqG4iOAnZQOkLjAsauqGLMDm5Io/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NqG4iOAnZQOkLjAsauqGLMDm5Io/0/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/NqG4iOAnZQOkLjAsauqGLMDm5Io/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NqG4iOAnZQOkLjAsauqGLMDm5Io/1/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="x_feedflare"&gt;&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=GlFy670vYzc:bRxfiQubEpQ:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=GlFy670vYzc:bRxfiQubEpQ:4cEx4HpKnUU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=GlFy670vYzc:bRxfiQubEpQ:yIl2AUoC8zA"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=GlFy670vYzc:bRxfiQubEpQ:I9og5sOYxJI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=GlFy670vYzc:bRxfiQubEpQ:F7zBnMyn0Lo"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=GlFy670vYzc:bRxfiQubEpQ:F7zBnMyn0Lo" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=GlFy670vYzc:bRxfiQubEpQ:V_sGLiPBpWU"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=GlFy670vYzc:bRxfiQubEpQ:V_sGLiPBpWU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=GlFy670vYzc:bRxfiQubEpQ:gIN9vFwOqvQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=GlFy670vYzc:bRxfiQubEpQ:gIN9vFwOqvQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=GlFy670vYzc:bRxfiQubEpQ:cGdyc7Q-1BI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=GlFy670vYzc:bRxfiQubEpQ:G79ilh31hkQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=GlFy670vYzc:bRxfiQubEpQ:Y59mnZtVT5U"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/GlFy670vYzc" height="1" width="1"&gt;</content>
      <app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-03T11:35:54.750+01:00</app:edited>
      <media:thumbnail url="http://3.bp.blogspot.com/-SYscWhKil2c/Tyl7VBWFEEI/AAAAAAAABJI/67C2IzYjHGg/s72-c/js.jpg" height="72" width="72" xmlns:media="http://search.yahoo.com/mrss/"></media:thumbnail>
      <thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total>
      <feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blog.jonasbandi.net/2012/02/future-smells-like-javascript.html</feedburner:origLink>
    </item>
    <item>
      <guid isPermaLink="true">http://blog.eweibel.net/?p=1154</guid>
      <link>http://blog.eweibel.net/?p=1154</link>
      <category>.NET</category>
      <category>Good practices</category>
      <title>TF.exe or maybe the most useful tool for TFS</title>
      <description>When you’ve to use TFS, then there are moments when you’re missing some features in the UI tools in Visual Studio. In those situations the console tool tf.exe is very useful. In this short blog post I summarized the commands I used the most. Update an
 old version of a branch It could happen, that [...]</description>
      <pubDate>Tue, 31 Jan 2012 22:51:17 Z</pubDate>
      <comments>http://blog.eweibel.net/?p=1154#comments</comments>
      <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Patrick</dc:creator>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;&lt;a href="http://blog.eweibel.net/wp-content/uploads/visualstudio.png" rel="lightbox[1154]"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="visualstudio" border="0" alt="visualstudio" align="right" src="http://blog.eweibel.net/wp-content/uploads/visualstudio_thumb.png" width="181" height="54" /&gt;&lt;/a&gt;When you&amp;#8217;ve to use &lt;a href="http://en.wikipedia.org/wiki/Team_Foundation_Server" target="_blank"&gt;TFS&lt;/a&gt;, then there are moments when you&amp;#8217;re missing some features in the UI tools in Visual Studio. In those situations the console tool &lt;a href="http://msdn.microsoft.com/en-us/library/z51z7zy0.aspx" target="_blank"&gt;tf.exe&lt;/a&gt; is very useful. In this short blog post I summarized the commands I used the most.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update an old version of a branch&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;It could happen, that the production branch or an older feature branch isn&amp;#8217;t up-to-date, because somebody forgot one or several merges from the main branch. To fix that, there could be used the following statement:&lt;/p&gt;
&lt;p&gt;tf.exe merge /recursive /force /version:T $/Project/Main/Source $/Project/Production/Source&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Delete a branch permanently&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;After a while the number of merged feature branches increase. Normally, you would delete the merged feature branches, so they aren&amp;#8217;t any longer visible in Visual Studio. But in my case, I display also the deleted items and this means, that I see all the deleted feature branches. To remove the old merged feature branches, there could be used the following statement:&lt;/p&gt;
&lt;p&gt;tf.exe destroy $/Project/Development/FeatureX&lt;/p&gt;
&lt;p&gt;&lt;a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.eweibel.net%2F%3Fp%3D1154&amp;amp;title=TF.exe%20or%20maybe%20the%20most%20useful%20tool%20for%20TFS" id="wpa2a_8"&gt;&lt;img src="http://blog.eweibel.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Related posts:&lt;ol&gt;
&lt;li&gt;&lt;a href='http://blog.eweibel.net/?p=622' rel='bookmark' title='Branching practices'&gt;Branching practices&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href='http://blog.eweibel.net/?p=1082' rel='bookmark' title='Branch or not to branch'&gt;Branch or not to branch&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;</content:encoded>
      <wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blog.eweibel.net/?feed=rss2&amp;p=1154</wfw:commentRss>
      <slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">2</slash:comments>
    </item>
    <item xml:base="http://www.dnug-bern.ch/Event2011.aspx#634636296000000000">
      <guid isPermaLink="true">http://www.dnug-bern.ch/Event2011.aspx#634636296000000000</guid>
      <link>http://www.dnug-bern.ch/Event2011.aspx#634636296000000000</link>
      <category>.NET User Group Bern Event</category>
      <title>Einführung in die Azure Plattform mit Kay Herzam</title>
      <description>
&lt;div style="width:100%; padding:0; border-bottom:1px solid #666; display:block; margin-bottom:16px"&gt;
&lt;img src="http://www.dnug-bern.ch/images/be_silhouette.gif" alt="" style="border:0; float:left"&gt;
&lt;h1 style="margin:0; padding-top:5px; color:#666"&gt;.NET User Group Bern Event&lt;/h1&gt;
&lt;/div&gt;
&lt;br style="clear:left"&gt;
&lt;h2&gt;Dienstag, 31. Januar 2012 (18:00&amp;nbsp;bis 21:00 Uhr)&lt;/h2&gt;
&lt;h3&gt;Einführung in die Azure Plattform mit Kay Herzam&amp;nbsp;&lt;/h3&gt;
&lt;p&gt;Im November 2011 haben wir einen Anlass zum Thema HTML, Javascript und Azure mit Tim Fischer durchgeführt. Diese Themen wollen wir im Jahr 2012 intensivieren und mit einen vertieften Blick auf Azure beginnen. Im ersten Teil der Serie werden wir uns mit den
 Konzepten und wichtigsten Bestandteilen beschäftigen. &lt;/p&gt;
&lt;strong&gt;Abstract:&lt;/strong&gt;
&lt;p&gt;Im ersten Vortrag werden die verschiedenen Bestandteile der Azure Plattform und die grundlegenden Konzepte dahinter vorgestellt. Nebst einer technischen Übersicht der einzelnen Komponenten werden auch Themen wie die Kosten einer Cloud Applikation, sowie
 die technischen und architektonischen Herausforderungen an den Cloud Entwickler beleuchtet.
&lt;/p&gt;
&lt;strong&gt;Über Kay Herzam&lt;/strong&gt;
&lt;p&gt;Kay Herzam arbeitet seit über 14 Jahren in der Software Entwicklung. Er hat in verschiedenen Positionen im Engineering, der Entwicklung und Teamleitung und im Consulting mit diversen Technologien und Plattformen gearbeitet. Seit 2007 leitet er seine eigene
 Firma in Bern. &lt;/p&gt;
&lt;strong&gt;Anmeldung&lt;/strong&gt;
&lt;p&gt;Bitte beachte, dass für dieses Treffen eine &lt;a title="Zur Anmeldung auf XING" href="https://www.xing.com/events/einfuhrung-azure-plattform-kay-herzam-849285" target="_blank"&gt;
Anmeldung&lt;/a&gt; erforderlich ist. Ohne Xing-Konto kannst Du auch unser Kontaktformular nutzen.
&lt;/p&gt;
&lt;p&gt;Das Twitter-Hashtag für diese Veranstaltung: &lt;strong&gt;#dnugbeaz1&lt;/strong&gt;. &lt;/p&gt;
&lt;p&gt;Die Aktivitäten können während der Veranstaltung &lt;a href="http://dnug-bern.ch/TwitterWall.aspx" target="_blank"&gt;
hier&lt;/a&gt;&amp;nbsp;betrachtet werden. &lt;/p&gt;
&lt;p&gt;Wir freuen uns auf Deine Teilnahme! &lt;/p&gt;
&lt;p&gt;Martin Affolter, Kay Herzam und René Leupold &lt;/p&gt;
</description>
      <pubDate>Tue, 31 Jan 2012 18:00:00 +0100</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">http://blog.eweibel.net/?p=1150</guid>
      <link>http://blog.eweibel.net/?p=1150</link>
      <category>Good practices</category>
      <title>Education in companies</title>
      <description>I do a lot of trainings and courses in the company where I work currently. And I was also in a lot of courses too. But I think, that those courses or trainings don’t work really. The reason, why is that they are just so called &amp;quot;sheep dips&amp;quot;. Sheep dip training
 doesn’t work The first [...]</description>
      <pubDate>Tue, 31 Jan 2012 17:00:00 Z</pubDate>
      <comments>http://blog.eweibel.net/?p=1150#comments</comments>
      <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Patrick</dc:creator>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">
&lt;p&gt;&lt;a href="http://blog.eweibel.net/wp-content/uploads/image19.png" rel="lightbox[1150]"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" align="right" src="http://blog.eweibel.net/wp-content/uploads/image_thumb19.png" width="191" height="231" /&gt;&lt;/a&gt;I do a lot of trainings and courses in the company where I work currently. And I was also in a lot of courses too. But I think, that those courses or trainings don&amp;#8217;t work really. The reason, why is that they are just so called &amp;quot;sheep dips&amp;quot;. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sheep dip training doesn’t work&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The first time when I heard the expression &amp;quot;sheep dip&amp;quot; was in the excellent book &amp;quot;&lt;a href="http://www.amazon.de/gp/product/1934356050/ref=as_li_tf_tl?ie=UTF8&amp;#038;tag=assumptiofadv-21&amp;#038;linkCode=as2&amp;#038;camp=1638&amp;#038;creative=6742&amp;#038;creativeASIN=1934356050" title="Pragmatic Thinking &amp;#038; Learning" target="_blank"&gt;Pragmatic Thinking and Learning&lt;/a&gt;&amp;quot;. It means a training where a lot of people receive a lot of information, mostly just by sitting, listening and watching a lot of PowerPoint slides.&lt;/p&gt;
&lt;p&gt;A sheep dip is in real the following (from &amp;quot;Pragmatic Thinking &amp;amp; Learning&amp;quot;):&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;A sheep dip (for real) is a large tank in which you dunk the unsuspecting &lt;br /&gt;sheep to clean them up and rid them of parasites (see picture). The sheep line up (as sheep do) you grab one and dunk in the tank for an intensive, alien, and largely toxic experience. It wears off, of course, so you have to dip them again.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The problem is the exact same with the education trainings in companies. A lot of employees spend time and the revenue is very, very little.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Doing it better&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The question is &amp;quot;How can we do education better?&amp;quot;. In my experience there are some better ways:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pair programming &lt;/li&gt;
&lt;li&gt;Little workshops (just the team) &lt;/li&gt;
&lt;li&gt;Collaboration platforms &lt;/li&gt;
&lt;li&gt;Good documentation &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;One of the best ways to learn is to get feedback fast. In a &amp;quot;sheep dip&amp;quot; training/course there is nearly no chance to have a such feedback. Therefor pair programming is very good, but hard to do. At least one of the two developers has to be experienced, so the knowledge transfer could happen.&lt;/p&gt;
&lt;p&gt;Another way I like very much are little workshops. Normally I ask a developer team, if they are interested in some kind of workshops (reviews, designing, architecture, etc.) based on some reviews of their outcome. The feedback what I received so far is very positive.&lt;/p&gt;
&lt;p&gt;I think collaboration platforms, like wikis or OneNote, are still underestimated in corporate environments. But I had a chance to participate in a team where they used OneNote. It was really great, because they added all little tricks and tips how to handle problems with the frameworks and tools in this collaborative platform.&lt;/p&gt;
&lt;p&gt;The last way is a good documentation. But what is a good documentation? Well, for me it has to be up-do-date, clear, short, contains examples and easy to read. Another point is, that the documentation has to be searchable. It should be easy to find things fast and just in one place.&lt;/p&gt;
&lt;p&gt;&lt;a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.eweibel.net%2F%3Fp%3D1150&amp;amp;title=Education%20in%20companies" id="wpa2a_10"&gt;&lt;img src="http://blog.eweibel.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded>
      <wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blog.eweibel.net/?feed=rss2&amp;p=1150</wfw:commentRss>
      <slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">3</slash:comments>
    </item>
    <item>
      <guid isPermaLink="true">http://blog.eweibel.net/?p=1143</guid>
      <link>http://blog.eweibel.net/?p=1143</link>
      <category>Private</category>
      <title>Services and customer orientation</title>
      <description>Usually I don’t blog here about personal topics. But as some friends know, I was some days ago in the united states – to be more precise, at the west coast. I visited the cities San Francisco, Las Vegas and Los Angeles. I was a great trip and I enjoyed
 the cities, the landscape (Grand [...]</description>
      <pubDate>Tue, 31 Jan 2012 16:30:00 Z</pubDate>
      <comments>http://blog.eweibel.net/?p=1143#comments</comments>
      <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Patrick</dc:creator>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;&lt;a href="http://blog.eweibel.net/wp-content/uploads/GrandCanyon.jpg" rel="lightbox[1143]"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="GrandCanyon" border="0" alt="GrandCanyon" align="right" src="http://blog.eweibel.net/wp-content/uploads/GrandCanyon_thumb.jpg" width="318" height="213" /&gt;&lt;/a&gt;Usually I don&amp;#8217;t blog here about personal topics. But as some friends know, I was some days ago in the united states &amp;#8211; to be more precise, at the west coast. I visited the cities San Francisco, Las Vegas and Los Angeles. I was a great trip and I enjoyed the cities, the landscape (&lt;a href="http://en.wikipedia.org/wiki/Grand_Canyon" target="_blank"&gt;Grand Canyon&lt;/a&gt;) and a lot more.&lt;/p&gt;
&lt;p&gt;To be honest, one of the most things which impressed me on the trip was the service and customer orientation of the staff in the hotels, restaurants or taxis. I think there is a gap between what Europe (specially Switzerland) and the USA regarding services and customer orientation. The old world &amp;#8211; or Europe &amp;#8211; could learn one or more things from the USA.&lt;/p&gt;
&lt;p&gt;In the following chapters I try to describe some experiences and conclusion about my experiences during the trip.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Be professional&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When I did the helicopter flight to the Grand Canyon, the whole service chain (chauffeur from the hotel, the pilot, the service staff) was just perfect and everything works. They know what they are doing and how the whole process works.&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s a great experience for a customer when he feels, when a service provider has everything under control and his a master at what he&amp;#8217;s doing. Such an experience builds also trust and the customer will return again.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Be personal&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This point is where I think the biggest gap between Europe and the USA is. For example at Starbucks they ask you for your first name so they call you when they finished the coffee or bagels. In Switzerland for example you have to guess if the coffee which was finished is for you or not.&lt;/p&gt;
&lt;p&gt;One of the most important things to do as a service provider is to make the customer happy. For that you have to build trust and make him feel safe. To build trust, the customer has to know you, so it isn&amp;#8217;t unprofessional to speak not only about things which are work related.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;It was a great experience to see another way of customer orientation. But there were also some problems, which also exists in Europe. As a service provider you need very good and competent staff. Unfortunately, in some hotels I met a concierge, which wasn&amp;#8217;t able to help or understand my need really. And that is what destroy trust, which is unfortunately a really fragile thing.&lt;/p&gt;
&lt;p&gt;&lt;a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.eweibel.net%2F%3Fp%3D1143&amp;amp;title=Services%20and%20customer%20orientation" id="wpa2a_12"&gt;&lt;img src="http://blog.eweibel.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded>
      <wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blog.eweibel.net/?feed=rss2&amp;p=1143</wfw:commentRss>
      <slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments>
    </item>
    <item>
      <guid isPermaLink="true">http://blog.eweibel.net/?p=1132</guid>
      <link>http://blog.eweibel.net/?p=1132</link>
      <category>.NET</category>
      <title>DataSet and deleted rows</title>
      <description>Yes, I know, the DataSet isn’t the leading edge technology, but as the company where I work currently, there are several companies who use DataSet as data access technology. Recently, I had to migrate the DataSet subclasses of the framework of my current
 employer to .NET 4.0 and add LINQ support. After this migration I [...]</description>
      <pubDate>Tue, 31 Jan 2012 16:00:00 Z</pubDate>
      <comments>http://blog.eweibel.net/?p=1132#comments</comments>
      <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Patrick</dc:creator>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;&lt;a href="http://blog.eweibel.net/wp-content/uploads/Fotolia_23504153_S.jpg" rel="lightbox[1132]"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="Pair of cubic eggs" border="0" alt="Pair of cubic eggs" align="right" src="http://blog.eweibel.net/wp-content/uploads/Fotolia_23504153_S_thumb.jpg" width="145" height="145" /&gt;&lt;/a&gt;Yes, I know, the DataSet isn&amp;#8217;t the leading edge technology, but as the company where I work currently, there are several companies who use &lt;a href="http://msdn.microsoft.com/de-de/library/system.data.dataset.aspx" target="_blank"&gt;DataSet&lt;/a&gt; as data access technology.&lt;/p&gt;
&lt;p&gt;Recently, I had to migrate the DataSet subclasses of the framework of my current employer to .NET 4.0 and add &lt;a href="http://de.wikipedia.org/wiki/LINQ" target="_blank"&gt;LINQ&lt;/a&gt; support. After this migration I made some unit tests and I found a surprising fact: If you using LINQ with a DataSet, then you have to handle deleted rows, which isn&amp;#8217;t as you would expecting the behaviour.&lt;/p&gt;
&lt;p&gt;First, here a little setup to run the tests:&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:84fec710-317d-48a5-bb2e-cead7d2175cb" class="wlWriterEditableSmartContent"&gt;
&lt;pre class="brush: c#"&gt;TestDataSet ds = new TestDataSet();
TestDataSet.BECRow row = ds.BEC.NewBECRow();
row.BecId = Guid.NewGuid();
row.RunDat = DateTime.Now;
row.MachineName = Environment.MachineName;
row.CrtDat = DateTime.Now;
row.CrtUsr = "pw";
ds.BEC.AddBECRow(row);
ds.AcceptChanges();
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;The old way&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In the ages before LINQ you get the preferred rows in the following way out of a typed or untyped DataSet:&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:16a371ce-e9d8-46d5-9676-f3a90b1cb789" class="wlWriterEditableSmartContent"&gt;
&lt;pre class="brush: c#"&gt;string strFilter = string.Format("{0} = '{1}'", ds.BEC.CrtUsrColumn.ColumnName, "pw");
TestDataSet.BECRow[] rowsBEC = (TestDataSet.BECRow[]) ds.BEC.Select(strFilter);
Console.WriteLine("Row count: {0}", rowsBEC.Length);
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;As you expecting, the result here is one row. The ugly thing is the magic filter string and the casting for the variable rowsBEC. But if you&amp;#8217;re using DataSets, you are used to such code.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The new way?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;With LINQ, the code could look much nicer:&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:ffde856c-e18b-4990-82a8-b1a0c8bc777a" class="wlWriterEditableSmartContent"&gt;
&lt;pre class="brush: c#"&gt;var query = from r in ds.BEC
			where r.CrtUsr == "pw"
			select r;
Console.WriteLine("Row count: {0}", query.Count());
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;That&amp;#8217;s better and I thought that I had the job done. But I was wrong, seriously wrong. This code behaves differently because you will get also the deleted rows (when no where clause exists) or even worse get a &lt;a href="http://msdn.microsoft.com/de-de/library/system.data.deletedrowinaccessibleexception.aspx" target="_blank"&gt;DeletedRowInaccessible&lt;/a&gt; exception. This exception occurs, when you try to access a property on a deleted row, which will be the case here, if there are deleted rows in the &lt;a href="http://msdn.microsoft.com/de-de/library/system.data.datatable.aspx" target="_blank"&gt;DataTable&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Why? Well, if you look at the code of the Select method (for example with the tool &lt;a href="http://www.reflector.net/" target="_blank"&gt;Reflector&lt;/a&gt;) you will see, that there is an implicit filtering on the current rows (added, modified and unchanged).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The solutions&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;So, how could you fix this issue? There are at least two ways. First, the nearest one:&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:3a9fd99a-7c0b-45d6-9ed3-f762cfb539f7" class="wlWriterEditableSmartContent"&gt;
&lt;pre class="brush: c#"&gt;var query = from r in (TestDataSet.BECRow[]) ds.BEC.Select()
			where r.CrtUsr == "pw"
			select r;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;This solution works, but you have to do the ugly cast. Well, because we have a framework and we subclassed every DataSet class, we could fix that by an override in the generic base class.&lt;/p&gt;
&lt;p&gt;If you don&amp;#8217;t have a framework, where you subclassed all the DataSet classes, then there is an alternative way:&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:dc59d94b-1d81-47a1-9bd1-11cdfe483fe3" class="wlWriterEditableSmartContent"&gt;
&lt;pre class="brush: text"&gt;var query = from r in ds.BEC
			 where r.RowState != DataRowState.Deleted &amp;amp;&amp;amp; r.CrtUsr == "pw"
			 select r;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;The order here is important, because you have to check first the RowState and after that you can add the real where clause. Also the &amp;quot;&amp;amp;&amp;amp;&amp;quot; is important, because it has to break if the row is deleted.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;There are some pitfalls with DataSet and LINQ, because you wouldn&amp;#8217;t expect that behaviour with deleted rows. It doesn&amp;#8217;t make any sense at all, because I nearly never saw a reason why my business logic would like to deal with deleted rows. Also the behaviour is unnatural because you think of the DataSet as an in-memory-database, and on the database you have not to deal with deleted rows, unless you have to implement a trigger.&lt;/p&gt;
&lt;p&gt;&lt;a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.eweibel.net%2F%3Fp%3D1132&amp;amp;title=DataSet%20and%20deleted%20rows" id="wpa2a_14"&gt;&lt;img src="http://blog.eweibel.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Related posts:&lt;ol&gt;
&lt;li&gt;&lt;a href='http://blog.eweibel.net/?p=17' rel='bookmark' title='Get the size of your tables'&gt;Get the size of your tables&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href='http://blog.eweibel.net/?p=9' rel='bookmark' title='Filtering on DataTables'&gt;Filtering on DataTables&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;</content:encoded>
      <wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blog.eweibel.net/?feed=rss2&amp;p=1132</wfw:commentRss>
      <slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments>
    </item>
    <item>
      <guid isPermaLink="false">http://schaedlerdaniel.wordpress.com/?p=539</guid>
      <link>http://schaedlerdaniel.wordpress.com/2012/01/31/wcf-service-uber-jquery-ansprechen-leicht-gemacht/</link>
      <category>ASP.NET /AJAX /ASP.NET MVC</category>
      <category>WCF</category>
      <category>JQuery AJAX</category>
      <category>WCF ImageGallery</category>
      <category>WCF und ASP.NET</category>
      <category>WCF und JQuery</category>
      <title>WCF Service über JQuery ansprechen leicht gemacht</title>
      <description>Zur Zeit bin ich an einer Weiterbildung für die Verwendung von .NET im Grossfirmenumfeld. Ein Thema darin ist ist Windows Communication Foundation (kurz WCF genannt). Da ich aus der Ecke der Webprogrammierer komme interessiert es mit primär, wie ich einen
 WCF-Service von einer Webseite her ansprechen kann. Was brauchen wir denn für einen Service der [...]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=schaedlerdaniel.wordpress.com&amp;amp;blog=16378069&amp;amp;post=539&amp;amp;subd=schaedlerdaniel&amp;amp;ref=&amp;amp;feed=1" width="1" height="1"&gt;</description>
      <pubDate>Tue, 31 Jan 2012 13:13:13 Z</pubDate>
      <comments>http://schaedlerdaniel.wordpress.com/2012/01/31/wcf-service-uber-jquery-ansprechen-leicht-gemacht/#comments</comments>
      <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">schaedlerdaniel</dc:creator>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;Zur Zeit bin ich an einer Weiterbildung für die Verwendung von .NET im Grossfirmenumfeld. Ein Thema darin ist ist &lt;a href="http://msdn.microsoft.com/de-de/library/dd456779.aspx" target="_blank"&gt;Windows Communication Foundation (kurz WCF genannt)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Da ich aus der Ecke der Webprogrammierer komme interessiert es mit primär, wie ich einen WCF-Service von einer Webseite her ansprechen kann.&lt;/p&gt;
&lt;p&gt;Was brauchen wir denn für einen Service der auf der Basis der WCF für einen Webseitenzugriff konfiguriert ist?&lt;/p&gt;
&lt;h3&gt;Vorbereitungen&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Erstellen eines neues ASP.NET Projektes über den Menüpunkt &amp;#8220;Neues Projekt erstellen&amp;#8230;&amp;#8221;&lt;/li&gt;
&lt;li&gt;Mit &lt;a href="" target="_blank"&gt;NuGet&lt;/a&gt; zuerst die JQueryUI und dann die JQuery&lt;br /&gt;
            Libraries hinzufügen&lt;/li&gt;
&lt;li&gt;Erstellen Sie einen Ordner Services in der Solution&lt;/li&gt;
&lt;li&gt;In den zuvor erstellten Service fügen Sie ein neues Item hinzu (Vorlage für einen&lt;br /&gt;
            WCF-Service) und benennen Sie diesen mit &amp;#8220;ImageService&amp;#8221;&lt;/li&gt;
&lt;li&gt;Visual Studio erstellt uns eine .svc und ein entsprechendes Interface ImageService.cs.&lt;br /&gt;
            Hier stehen noch nicht allzu viele Sachen drin sodass wir die DoWork Methode im&lt;br /&gt;
            Interface ein wenig anpassen. Nach dem Hinzufügen des Service sollte die Solution&lt;br /&gt;
            mit den aktuellen JQuery Referenzen ausgestattet sein und folgende .NET Dll’s als&lt;br /&gt;
            Referenz aufweisen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;System.Service.Model&lt;/li&gt;
&lt;li&gt;System.Runtime.Serializatin&lt;/li&gt;
&lt;/ul&gt;
&lt;/ol&gt;
&lt;h3&gt;WCF Konfiguration&lt;/h3&gt;
&lt;p&gt;Soweit so gut. Wir sind bereit den WCF Service zu implementieren. Hierzu wird in die Solution noch ein Verzeichnis Images hinzugefügt, dass einfach mit den Beispiel Bildern von Windows befüllt wird. Zuerst fangen wir mit der Konfiguration der Web.Config für unseren Dienst an.&lt;/p&gt;
&lt;p&gt;Konfiguration der Web.Config mit dem „WCF Service Configurator“ (Finden Sie unter Tools bei Visual Studio 2010)&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Erstellen eines neuen Services &lt;a href="http://schaedlerdaniel.files.wordpress.com/2012/01/01_wcfservicekonfigurieren.jpg"&gt;&lt;br /&gt;
            &lt;img src="http://schaedlerdaniel.files.wordpress.com/2012/01/01_wcfservicekonfigurieren.jpg?w=600" alt="" title="WCF Service konfigurieren"   class="aligncenter size-full wp-image-553" /&gt;&lt;/a&gt;
        &lt;/li&gt;
&lt;p&gt;&lt;/p&gt;
&lt;li&gt;Auswahl der DLL von welcher her der Service generiert werden soll. Sollte im bin&lt;br /&gt;
            Verzeichnis keine DLL vorliegen so kann man dies mit dem „Erstellen der Solution“&lt;br /&gt;
            beheben&lt;a href="http://schaedlerdaniel.files.wordpress.com/2012/01/02_wcfservicekonfigurieren.jpg"&gt;&lt;img src="http://schaedlerdaniel.files.wordpress.com/2012/01/02_wcfservicekonfigurieren.jpg?w=600" alt="" title="DLL Auswählen"   class="aligncenter size-full wp-image-556" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Den Vertrag (Contract) können wir stehen lassen und weiter klicken. &lt;a href="http://schaedlerdaniel.files.wordpress.com/2012/01/03_wcfservicekonfigurieren.jpg"&gt;&lt;br /&gt;
            &lt;img src="http://schaedlerdaniel.files.wordpress.com/2012/01/03_wcfservicekonfigurieren.jpg?w=600" alt="" title="Contract Auswahl"   class="aligncenter size-full wp-image-561" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Da wir einen ImageService für’s Internet bereitstellen wollen, lassen wir die Konfiguration&lt;br /&gt;
                auf http sein. &lt;a href="http://schaedlerdaniel.files.wordpress.com/2012/01/04_wcfservicekonfigurieren.jpg"&gt;&lt;br /&gt;
                    &lt;img src="http://schaedlerdaniel.files.wordpress.com/2012/01/04_wcfservicekonfigurieren.jpg?w=600" alt="" title="Protokoll Auswahl"   class="aligncenter size-full wp-image-562" /&gt;&lt;/a&gt;
                &lt;/li&gt;
&lt;p&gt;&lt;/p&gt;
&lt;li&gt;Auch weitere Optionen belassen wir auf dem Standard. Wir wollen einen einfachen&lt;br /&gt;
                    ImageService ohne Duplex Funktion und lassen den Vorschlag des Assistenten so wie&lt;br /&gt;
                    er ist. &lt;a href="http://schaedlerdaniel.files.wordpress.com/2012/01/05_wcfservicekonfigurieren.jpg"&gt;&lt;br /&gt;
                        &lt;img src="http://schaedlerdaniel.files.wordpress.com/2012/01/05_wcfservicekonfigurieren.jpg?w=600" alt="" title="Interopabilität wählen"   class="aligncenter size-full wp-image-563" /&gt;&lt;/a&gt;
                &lt;/li&gt;
&lt;p&gt;&lt;/p&gt;
&lt;li&gt;Zum Schluss erstellen wir die Endpunkt-Adresse über welche der Service erreicht&lt;br /&gt;
                    werden soll. &lt;a href="http://schaedlerdaniel.files.wordpress.com/2012/01/06_wcfservicekonfigurieren.jpg"&gt;&lt;br /&gt;
                        &lt;img src="http://schaedlerdaniel.files.wordpress.com/2012/01/06_wcfservicekonfigurieren.jpg?w=600" alt="" title="Endpunkt Konfiguration"   class="aligncenter size-full wp-image-564" /&gt;&lt;/a&gt;
                &lt;/li&gt;
&lt;p&gt;&lt;/p&gt;
&lt;li&gt;Wir haben einen neuen Service erstellt, wie uns der Assistent nun mitteilt. &lt;a href="http://schaedlerdaniel.files.wordpress.com/2012/01/07_wcfservicekonfigurieren.jpg"&gt;&lt;br /&gt;
                    &lt;img src="http://schaedlerdaniel.files.wordpress.com/2012/01/07_wcfservicekonfigurieren.jpg?w=600" alt="" title="Finish Wizard Dialog"   class="aligncenter size-full wp-image-565" /&gt;&lt;/a&gt;
                &lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Anpassen des WCF Service für unsere Bedürfnisse&lt;/h3&gt;
&lt;p&gt;Nun haben wir den Service deklarativ in der Web.Config erstellt. Nun müssen wir noch Anpassungen vornehmen, damit der Service auch mit einer &lt;a href="http://msdn.microsoft.com/de-de/library/system.servicemodel.webhttpbinding.aspx" target="_blank"&gt;WebHttpBinding&lt;/a&gt; angesprochen werden kann (das Programmiermodell http von WCF).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anpassen des erstellten Service für die Verwendung mit ASP.NET (WCF Service Configurator).&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Selektieren Sie den zuvor erstellten Endpunkt &lt;a href="http://schaedlerdaniel.files.wordpress.com/2012/01/01_enpointanpassen.jpg"&gt;&lt;br /&gt;
            &lt;img src="http://schaedlerdaniel.files.wordpress.com/2012/01/01_enpointanpassen.jpg?w=600" alt="" title="Endpunkt anpassen"   class="aligncenter size-full wp-image-566" /&gt;&lt;/a&gt;
        &lt;/li&gt;
&lt;p&gt;&lt;/p&gt;
&lt;li&gt;Das Binding muss mit der DropDownListe auf webHttpBinding gewechselt werden.
        &lt;/li&gt;
&lt;p&gt;&lt;/p&gt;
&lt;li&gt;Nun müssen wir dem Binding noch eine Konfiguration zuordnen. Dies können wir tun&lt;br /&gt;
            indem wir den Punkt „Bindings“ auswählen und ein neues hinzufügen. &lt;strong&gt;ACHTUNG&lt;/strong&gt;:&lt;br /&gt;
            Man muss das WebHttpBinding auswählen, damit die erstellte Konfiguration darauf&lt;br /&gt;
            wirkt. &lt;/li&gt;
&lt;p&gt;&lt;/p&gt;
&lt;li&gt;Wir geben der neu erstellen Konfiguration einen Namen und belassen die Standardwerte&lt;br /&gt;
            so wie sie sind (Die Ausnahmen werden nachstehend aufgelistet).&lt;/p&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;th&gt;
                        &lt;strong&gt;Konfigurationselement&lt;/strong&gt;
                    &lt;/th&gt;
&lt;th&gt;
                        &lt;strong&gt;Wert&lt;/strong&gt;
                    &lt;/th&gt;
&lt;th&gt;
                        &lt;strong&gt;Grund&lt;/strong&gt;
                    &lt;/th&gt;
&lt;tr&gt;
&lt;td&gt;
                            ByPassProxyOnLocal
                        &lt;/td&gt;
&lt;td&gt;
                            True
                        &lt;/td&gt;
&lt;td&gt;
                            Lokale Adressen werden nicht über einenProxy-Server aufgelöst.
                        &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
                            CrossDomainScriptAccessEnabled
                        &lt;/td&gt;
&lt;td&gt;
                            True
                        &lt;/td&gt;
&lt;td&gt;
                            Zugriff von überall her möglich per Script (Internet Service).
                        &lt;/td&gt;
&lt;/tr&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/li&gt;
&lt;p&gt;&lt;/p&gt;
&lt;li&gt;Nun wechseln wir wieder zu den Endpunkten und wählen unseren erstellten Endpunkt&lt;br /&gt;
            aus. Danach können wir in der Bindungskonfiguration die neu erstellte Bindung auswählen.&lt;br /&gt;
            &lt;a href="http://schaedlerdaniel.files.wordpress.com/2012/01/02_enpointanpassen.jpg"&gt;&lt;br /&gt;
                &lt;img src="http://schaedlerdaniel.files.wordpress.com/2012/01/02_enpointanpassen.jpg?w=600" alt="" title="02_EnpointAnpassen"   class="aligncenter size-full wp-image-568" /&gt;&lt;/a&gt;
        &lt;/li&gt;
&lt;p&gt;
    &lt;/ol&gt;
&lt;/p&gt;
&lt;h3&gt;Den WCF Service zum Leben erwecken&lt;/h3&gt;
&lt;p&gt;Wir erstellen uns eine Global.asax die für das Starten und Beenden der WebApplikationen die entsprechenden Methoden bereitstellt. Interessant sind die Methoden Application_Start und die Application_End.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Wir fügen unserem Webprojekt eine Global.asax mit dem Befehl Add new Item… hinzu.
        &lt;/li&gt;
&lt;p&gt;&lt;/p&gt;
&lt;li&gt;Damit wir webHttp verwenden können müssten wir System.ServiceModel.Web referenzieren&lt;br /&gt;
            damit wir ein Objekt vom Typ WebserviceHost erstellen können. &lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
                Die Global.asax sieht dann wie folgt aus:&lt;/p&gt;
&lt;p&gt;
                &lt;pre class="brush: csharp;"&gt; using System; using System.ServiceModel.Web; using
                Sample.WebHttpImageService.Services; namespace Sample.WebHttpImageService { public
                class Global : System.Web.HttpApplication { ///
                &amp;lt;summary&amp;gt;
        /// Host is declared here to not been removed by
        /// the carbage collector.
        /// &amp;lt;/summary&amp;gt;
                private static WebServiceHost host = new WebServiceHost(typeof(ImageService), new
                Uri(&amp;quot;http://localhost:8099&amp;quot;)); ///
                &amp;lt;summary&amp;gt;
        /// Occurs when application is staring up.
        /// &amp;lt;/summary&amp;gt;
                ///
                &amp;lt;param name=&amp;quot;sender&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;
                ///
                &amp;lt;param name=&amp;quot;e&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;
                protected void Application_Start(object sender, EventArgs e) { try { host.Open();
                } catch (Exception exception) { host.Abort(); } } ///
                &amp;lt;summary&amp;gt;
        /// Occurs at application shutdown.
        /// &amp;lt;/summary&amp;gt;
                ///
                &amp;lt;param name=&amp;quot;sender&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;
                ///
                &amp;lt;param name=&amp;quot;e&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;
                protected void Application_End(object sender, EventArgs e) { host.Close(); } } }
                &lt;/pre&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;p&gt;&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
                Startet man nun das Projekt kann unter Umständen die Fehlermedung kommen, dass man&lt;br /&gt;
                eine nicht registrierte URL versucht aufzurufen. Abhilfe schafft hier das Visual&lt;br /&gt;
                Studio als Administrator zu starten (generell mit WCF zu empfehlen).&lt;/p&gt;
&lt;/li&gt;
&lt;p&gt;&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
                Nun wollen wir prüfen ob der Service mit der Methode GetImages angesprochen werden&lt;br /&gt;
                kann. Die machen wir indem wir http://localhost:8099/ImageService/GetImages in den&lt;br /&gt;
                Browser eingeben. Wir eine Fehlermeldung, die besagt dass die Methode nicht ausgeführt&lt;br /&gt;
                werden kann.
            &lt;/p&gt;
&lt;p&gt;
                Ist ja eigentlich logisch, denn unsere momentane Service Methode erwartet einen&lt;br /&gt;
                Parameter der über Web „GET“ übermittelt wird. Dies wurde noch nicht implementiert.
            &lt;/p&gt;
&lt;/li&gt;
&lt;p&gt;&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
                Ist das Attribut im Interface angegeben können wir zum Beispiel mit dem Auftruf&lt;br /&gt;
                http://localhost:8099/ImageService/GetAllImages?path=Test einen Methodenaufruf machen&lt;br /&gt;
                und erhalten das folgende Beispiel Resultat.&lt;/p&gt;
&lt;p&gt;            &lt;a href="http://schaedlerdaniel.files.wordpress.com/2012/01/resultatnachwebget.jpg"&gt;&lt;br /&gt;
                &lt;img src="http://schaedlerdaniel.files.wordpress.com/2012/01/resultatnachwebget.jpg?w=600&amp;#038;h=274" alt="" title="ResultatNachWebGET" width="600" height="274" class="aligncenter size-full wp-image-571" /&gt;&lt;/a&gt;
        &lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Anpassen der WCF Methode GetImages&lt;/h3&gt;
&lt;p&gt;Nun wollen wir doch, dass der Service über einen AJAX Aufruf per JQuery angesprochen werden kann. Hierzu gehen wir wie folgt vor. Da die Service-Methode noch nicht so tut wie wir das gerne wollen, dekorieren wir die Methode im Interface mit dem Attribute WebGet. Das Interface sieht nun wie folgt aus:&lt;/p&gt;
&lt;p&gt;&lt;pre class="brush: csharp;"&gt;
[ServiceContract]
public Interface IImageService{
[OperationContract]
[WebGet]
public List&amp;lt;string&amp;gt; GetImages(string path);
}
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Die Implementierungsklasse sieht dann so aus:&lt;/p&gt;
&lt;p&gt;&lt;pre class="brush: csharp;"&gt;
public class ImageService : IImageService{
public List&amp;lt;string&amp;gt; GetImages(string path){
List&amp;lt;string&amp;gt; result = new List&amp;lt;string&amp;gt;(){ &amp;quot;Hello WCF&amp;quot;};
return result;
}
}
&lt;/pre&gt;&lt;/p&gt;
&lt;h3&gt;Clientseitige Implementierung&lt;/h3&gt;
&lt;p&gt;Nun kommen wir auf die Clientseite. Wir fügen, falls es nicht schon getan wurde, ein Default.aspx WebForms zur Solution hinzu.&lt;/p&gt;
&lt;p&gt;
Hierzu erstellen wir uns unter dem Verzeichnis (Scripts) ein Unterverzeichnis mit dem Namen „Custom“ und fügen uns dort eine ImageService.js Datei hinzu, die folgenden Inhalt aufweist. (Vergessen Sie nicht die JQuery Scriptreferenz im Header der Default.aspx hinzuzufügen).
&lt;/p&gt;
&lt;p&gt;Unser erstelltes Clientscript sieht dann so aus:&lt;/p&gt;
&lt;p&gt;&lt;pre class="brush: jscript;"&gt;
$(document).ready(function () {
    var imagesUri = &amp;quot;http://localhost:7777/Images/&amp;quot;;

    jQuery.support.cors = true;

    $.ajax({

        type: &amp;quot;GET&amp;quot;,
        url: &amp;quot;http://localhost:8099/ImageService/GetImages?path=&amp;quot; + imagesUri,
        dataType: &amp;quot;text&amp;quot;,
        contentType: &amp;quot;application/text; charset=utf-8&amp;quot;,
        success: function (message) {
            //$('#Result').append(message);
            var xmlDocument = jQuery.parseXML(message);
            var images = xmlDocument.getElementsByTagName(&amp;quot;string&amp;quot;);

            for (var index = 0; index &amp;lt;= images.length - 1; index++) {

                $('#Result').append(&amp;quot;&amp;lt;img src=\'&amp;quot; + images[index].textContent + &amp;quot;\' /&amp;gt;&amp;quot;);

            }
        },
        error: function (message) {

        }
    });

});
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;
Die Default.aspx braucht dann nur noch eine Script-Referenz auf diese Datei.
&lt;/p&gt;
&lt;p&gt;&lt;pre class="brush: xml;"&gt;
&amp;lt;head runat=&amp;quot;server&amp;quot;&amp;gt;
    &amp;lt;title&amp;gt;Zugreifen auf WCF mittels JQuery&amp;lt;/title&amp;gt;  
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot; language=&amp;quot;javascript&amp;quot; src=&amp;quot;Scripts/jquery-1.7.1.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;  
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot; language=&amp;quot;javascript&amp;quot; src=&amp;quot;Scripts/Custom/ImageService.js&amp;quot; &amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/head&amp;gt;
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Der httpQuery muss mit dem Parameter der im Inteface für die Servicedefinition festgelegt worden ist übereinstimmen. Nun ist es nicht wirklich ansprechend ein Hallo reinzugeben und dann als Resultat Hallo WCF, mit den geschweiften Klammern zu erhalten.&lt;/p&gt;
&lt;p&gt;
 Wichtig hierfür ist das JQuery für CrossDomain zugriff konfiguriert wird. Dies geschieht wie folgt:&lt;/p&gt;
&lt;p&gt;
&lt;pre class="brush: jscript;"&gt;
	jQuery.support.cors = true;
&lt;/pre&gt;
&lt;/p&gt;
&lt;p&gt;
Nun da WCF und ASP.NET nicht im gleichen Kontext beheimatet sind kann die Grundlage beider genommen werden. Beide bauen auf System.Web.Hosting auf. Folgenes Beispiel lässt alle Bilder die vom Pfad übergeben worden sind mit dem &lt;a href="http://msdn.microsoft.com/de-de/library/system.io.directoryinfo(v=vs.100).aspx" target="_blank"&gt;DirectoryInfo&lt;/a&gt; suchen und finden.
&lt;/p&gt;
&lt;p&gt;&lt;pre class="brush: csharp;"&gt;
using System;
using System.Collections.Generic;
using System.IO;
using System.Web.Hosting;
using System.Linq;

namespace Sample.WebHttpImageService.Services
{
    /// &amp;lt;summary&amp;gt;
    /// Get's the images from the path given by parameter.
    /// &amp;lt;/summary&amp;gt;
    /// &amp;lt;param name=&amp;quot;path&amp;quot;&amp;gt;ImagePath to look for images.&amp;lt;/param&amp;gt;
    public class ImageService : IImageService
    {
        public string[] GetImages(string path)
        {
            List&amp;lt;string&amp;gt; result = new List&amp;lt;string&amp;gt;();
            
            Uri uri = new Uri(path, UriKind.Absolute);
            
            FileInfo[] images = new DirectoryInfo(HostingEnvironment.MapPath(uri.LocalPath)).GetFiles();

            images.ToList().ForEach(image =&amp;gt;
                                        {
                                            string imageUrl = string.Format(@&amp;quot;{0}{1}&amp;quot;, path, image.Name);
                                            result.Add(imageUrl);
                                        });

            return result.ToArray();
        }   
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;
Unser Image Service muss so dann nicht im ApsNetCompatibilityMode betrieben werden und wir können trotzdem auf Files auf dem WebServer zugreifen. Nähere Details können hier gefunden werden &lt;a href="http://msdn.microsoft.com/en-us/library/aa702682.aspx" target="_blank"&gt;WCF Service and ASP.NET&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Zu guter Letzt Verarbeiten wir Client-seitig das XML das wir vom Server zurück erhalten und zeigen die Bilder an.&lt;/p&gt;
&lt;p&gt;
Das Bilder anzeigen haben wir ja in die ImageService.js ausgelagert.
&lt;/p&gt;
&lt;h3&gt;Fazit&lt;/h3&gt;
&lt;p&gt;Mit eigentlich ganz wenig Aufwand ist es möglich einen Service zur Verfügung zu stellen der von allen Interessierten konsumiert werden kann. Trickreich an den ganzen Recherchen war auf jeden Fall das Zusammenspiel zwischen ASP.NET und der WCF die ja nicht im gleichen Kontext laufen, ohne dass man das AspNetCompatibilityReruirement Attribut braucht, oder den WCF-Service im Kompatibilitätsmodus laufen lässt. Weiter werde ich versuchen in den nächsten Wochen ein wenig mehr um die Daten die ausgetauscht werden, zu beleuchten.&lt;/p&gt;
&lt;p&gt;Wenn Ihnen dieser Artikel gefallen hat, würde ich mich über einen Kick freuen und bin auch empfänglich für Rückmeldungen und Kritik.&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://dotnet-kicks.de/kick/?url=http%3a%2f%2fschaedlerdaniel.wordpress.com%2f2012%2f01%2f31%2fwcf-service-uber-jquery-ansprechen-leicht-gemacht%2f"&gt;&lt;img src="http://dotnet-kicks.de/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fschaedlerdaniel.wordpress.com%2f2012%2f01%2f31%2fwcf-service-uber-jquery-ansprechen-leicht-gemacht%2f" border="0" alt="kick it on dotnet-kicks.de" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;br /&gt;  &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/schaedlerdaniel.wordpress.com/539/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/schaedlerdaniel.wordpress.com/539/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/schaedlerdaniel.wordpress.com/539/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/schaedlerdaniel.wordpress.com/539/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/schaedlerdaniel.wordpress.com/539/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/schaedlerdaniel.wordpress.com/539/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/schaedlerdaniel.wordpress.com/539/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/schaedlerdaniel.wordpress.com/539/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/schaedlerdaniel.wordpress.com/539/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/schaedlerdaniel.wordpress.com/539/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/schaedlerdaniel.wordpress.com/539/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/schaedlerdaniel.wordpress.com/539/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/schaedlerdaniel.wordpress.com/539/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/schaedlerdaniel.wordpress.com/539/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=schaedlerdaniel.wordpress.com&amp;amp;blog=16378069&amp;amp;post=539&amp;amp;subd=schaedlerdaniel&amp;amp;ref=&amp;amp;feed=1" width="1" height="1" /&gt;</content:encoded>
      <wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://schaedlerdaniel.wordpress.com/2012/01/31/wcf-service-uber-jquery-ansprechen-leicht-gemacht/feed/</wfw:commentRss>
      <slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments>
      <media:content url="http://0.gravatar.com/avatar/e50530c3e478a8a210b7df39006fdc68?s=96&amp;d=identicon&amp;r=G" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">schaedlerdaniel</media:title>
      </media:content>
      <media:content url="http://schaedlerdaniel.files.wordpress.com/2012/01/01_wcfservicekonfigurieren.jpg" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">WCF Service konfigurieren</media:title>
      </media:content>
      <media:content url="http://schaedlerdaniel.files.wordpress.com/2012/01/02_wcfservicekonfigurieren.jpg" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">DLL Auswählen</media:title>
      </media:content>
      <media:content url="http://schaedlerdaniel.files.wordpress.com/2012/01/03_wcfservicekonfigurieren.jpg" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">Contract Auswahl</media:title>
      </media:content>
      <media:content url="http://schaedlerdaniel.files.wordpress.com/2012/01/04_wcfservicekonfigurieren.jpg" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">Protokoll Auswahl</media:title>
      </media:content>
      <media:content url="http://schaedlerdaniel.files.wordpress.com/2012/01/05_wcfservicekonfigurieren.jpg" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">Interopabilität wählen</media:title>
      </media:content>
      <media:content url="http://schaedlerdaniel.files.wordpress.com/2012/01/06_wcfservicekonfigurieren.jpg" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">Endpunkt Konfiguration</media:title>
      </media:content>
      <media:content url="http://schaedlerdaniel.files.wordpress.com/2012/01/07_wcfservicekonfigurieren.jpg" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">Finish Wizard Dialog</media:title>
      </media:content>
      <media:content url="http://schaedlerdaniel.files.wordpress.com/2012/01/01_enpointanpassen.jpg" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">Endpunkt anpassen</media:title>
      </media:content>
      <media:content url="http://schaedlerdaniel.files.wordpress.com/2012/01/02_enpointanpassen.jpg" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">02_EnpointAnpassen</media:title>
      </media:content>
      <media:content url="http://schaedlerdaniel.files.wordpress.com/2012/01/resultatnachwebget.jpg" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">ResultatNachWebGET</media:title>
      </media:content>
      <media:content url="http://dotnet-kicks.de/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fschaedlerdaniel.wordpress.com%2f2012%2f01%2f31%2fwcf-service-uber-jquery-ansprechen-leicht-gemacht%2f" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">kick it on dotnet-kicks.de</media:title>
      </media:content>
    </item>
    <item p3:etag="W/&quot;D0YEQ38-eip7ImA9WhRUF00.&quot;" xmlns:p3="http://schemas.google.com/g/2005">
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5763764290649132593.post-9023796769115264470</guid>
      <link>http://feedproxy.google.com/~r/closed-loop/~3/PlnlRCK1hnc/vacation-books-and-screencasts.html</link>
      <author>noreply@blogger.com</author>
      <category domain="http://www.blogger.com/atom/ns#">books</category>
      <title>Vacation Books and Screencasts</title>
      <description>I am looking forward to spend another &lt;a href="http://www.youtube.com/watch?v=4UjJVsIFYh4"&gt;vacation mostly under water&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
For the travel and the time above the water I am filling my Kindle and my iPad with the following material:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="border: none; text-align: center;"&gt;&lt;a href="http://www.amazon.de/gp/product/0321712471/ref=as_li_ss_tl?ie=UTF8&amp;amp;tag=cl00-21&amp;amp;linkCode=as2&amp;amp;camp=1638&amp;amp;creative=19454&amp;amp;creativeASIN=0321712471"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/-DXT2Iun0dNo/TyMekIuZ0TI/AAAAAAAABHM/dyXVPEQyOus/s320/management%2B3.0%2Bleading%2Bagile%2Bdevelopers%2Bdeveloping%2Bagile%2Bleaders%2Bfree%2Bdownload.jpg" style="border: none;" width="150" /&gt;&lt;/a&gt;&lt;a href="http://www.amazon.de/gp/product/3593393581/ref=as_li_ss_tl?ie=UTF8&amp;amp;tag=cl00-21&amp;amp;linkCode=as2&amp;amp;camp=1638&amp;amp;creative=19454&amp;amp;creativeASIN=3593393581"&gt;&lt;img border="0" height="200" src="http://2.bp.blogspot.com/-usvVTk8htMI/TyMesEakCDI/AAAAAAAABHY/OyzpE9xYeFA/s320/9783593393582.jpg" style="border: none;" width="150" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.amazon.de/gp/product/0596806752/ref=as_li_ss_tl?ie=UTF8&amp;amp;tag=cl00-21&amp;amp;linkCode=as2&amp;amp;camp=1638&amp;amp;creative=19454&amp;amp;creativeASIN=0596806752"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/-Tvfr4uzLBQc/TyMhIY4CZ4I/AAAAAAAABII/rfyN8weqRYw/s320/cat.gif" style="border: none;" width="150" /&gt;&lt;/a&gt;&lt;a href="http://pragprog.com/book/vspcon/programming-concurrency-on-the-jvm"&gt;&lt;img border="0" style="border: none;" height="200" src="http://2.bp.blogspot.com/-YFagGj7ssqk/TyMmmtZ-nsI/AAAAAAAABIg/wZdsDJ_sc70/s320/vspcon_xlargecover.jpg" width="150" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://tekpub.com/productions/js_uptospeed"&gt;&lt;img border="0" height="100" src="http://4.bp.blogspot.com/-sXNm-bniUd8/TyMg45rz8FI/AAAAAAAABHk/pxWxXkg9kvA/s320/js_uptospeed_slide.png" style="border: none;" width="170" /&gt;&lt;/a&gt;&lt;a href="http://tekpub.com/hanselman"&gt;&lt;img border="0" height="100" src="http://4.bp.blogspot.com/-WlzBMTEmWTw/TyMg8tA4zMI/AAAAAAAABHw/E3ERWvHLfSk/s320/ft_speaker_slide.png" style="border: none;" width="170" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="https://peepcode.com/products/advanced-git"&gt;&lt;img border="0" height="100" src="http://2.bp.blogspot.com/-W_o3u27mf2Y/TyMhCzxFTAI/AAAAAAAABH8/frARvIaSl2M/s320/peepcode-advanced-git-cover.png" style="border: none;" width="170" /&gt;&lt;/a&gt;&lt;a href="https://peepcode.com/products/backbone-iii"&gt;&lt;img border="0" height="100" src="http://4.bp.blogspot.com/-PHoDBFzSUrY/TyMjaEmysMI/AAAAAAAABIU/_9bkFYe_aLk/s320/peepcode-backbone-iii-cover.png" style="border: none;" width="170" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: left;"&gt;Thanks to &lt;a href="https://twitter.com/#%21/bertolami"&gt;bertolami&lt;/a&gt;, &lt;a href="https://twitter.com/#%21/mbaumeler"&gt;mbaumeler&lt;/a&gt; and &lt;a href="https://twitter.com/#%21/@j_graber/"&gt;j_graber&lt;/a&gt; for the recommendations.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5763764290649132593-9023796769115264470?l=blog.jonasbandi.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2EJrUAXVHjRiCiwd2NtH_BC7wZs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2EJrUAXVHjRiCiwd2NtH_BC7wZs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/2EJrUAXVHjRiCiwd2NtH_BC7wZs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2EJrUAXVHjRiCiwd2NtH_BC7wZs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=PlnlRCK1hnc:8-nu5oK2NYw:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=PlnlRCK1hnc:8-nu5oK2NYw:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=PlnlRCK1hnc:8-nu5oK2NYw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=PlnlRCK1hnc:8-nu5oK2NYw:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=PlnlRCK1hnc:8-nu5oK2NYw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=PlnlRCK1hnc:8-nu5oK2NYw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=PlnlRCK1hnc:8-nu5oK2NYw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=PlnlRCK1hnc:8-nu5oK2NYw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=PlnlRCK1hnc:8-nu5oK2NYw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=PlnlRCK1hnc:8-nu5oK2NYw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=PlnlRCK1hnc:8-nu5oK2NYw:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=PlnlRCK1hnc:8-nu5oK2NYw:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=PlnlRCK1hnc:8-nu5oK2NYw:Y59mnZtVT5U"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/PlnlRCK1hnc" height="1" width="1"/&gt;</description>
      <pubDate>Fri, 27 Jan 2012 23:52:00 +0100</pubDate>
      <link rel="replies" type="application/atom+xml" title="Post Comments" href="http://blog.jonasbandi.net/feeds/9023796769115264470/comments/default" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="replies" type="text/html" title="0 Comments" href="http://www.blogger.com/comment.g?blogID=5763764290649132593&amp;postID=9023796769115264470" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/9023796769115264470?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/9023796769115264470?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <updated xmlns="http://www.w3.org/2005/Atom">2012-01-27T23:58:22+01:00</updated>
      <content type="html" xmlns="http://www.w3.org/2005/Atom">I am looking forward to spend another &lt;a href="http://www.youtube.com/watch?v=4UjJVsIFYh4"&gt;
vacation mostly under water&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
For the travel and the time above the water I am filling my Kindle and my iPad with the following material:&lt;br&gt;
&lt;br&gt;
&lt;div style="border:none; text-align:center"&gt;&lt;a href="http://www.amazon.de/gp/product/0321712471/ref=as_li_ss_tl?ie=UTF8&amp;amp;tag=cl00-21&amp;amp;linkCode=as2&amp;amp;camp=1638&amp;amp;creative=19454&amp;amp;creativeASIN=0321712471"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/-DXT2Iun0dNo/TyMekIuZ0TI/AAAAAAAABHM/dyXVPEQyOus/s320/management%2B3.0%2Bleading%2Bagile%2Bdevelopers%2Bdeveloping%2Bagile%2Bleaders%2Bfree%2Bdownload.jpg" width="150" style="border:none"&gt;&lt;/a&gt;&lt;a href="http://www.amazon.de/gp/product/3593393581/ref=as_li_ss_tl?ie=UTF8&amp;amp;tag=cl00-21&amp;amp;linkCode=as2&amp;amp;camp=1638&amp;amp;creative=19454&amp;amp;creativeASIN=3593393581"&gt;&lt;img border="0" height="200" src="http://2.bp.blogspot.com/-usvVTk8htMI/TyMesEakCDI/AAAAAAAABHY/OyzpE9xYeFA/s320/9783593393582.jpg" width="150" style="border:none"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="http://www.amazon.de/gp/product/0596806752/ref=as_li_ss_tl?ie=UTF8&amp;amp;tag=cl00-21&amp;amp;linkCode=as2&amp;amp;camp=1638&amp;amp;creative=19454&amp;amp;creativeASIN=0596806752"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/-Tvfr4uzLBQc/TyMhIY4CZ4I/AAAAAAAABII/rfyN8weqRYw/s320/cat.gif" width="150" style="border:none"&gt;&lt;/a&gt;&lt;a href="http://pragprog.com/book/vspcon/programming-concurrency-on-the-jvm"&gt;&lt;img border="0" height="200" src="http://2.bp.blogspot.com/-YFagGj7ssqk/TyMmmtZ-nsI/AAAAAAAABIg/wZdsDJ_sc70/s320/vspcon_xlargecover.jpg" width="150" style="border:none"&gt;&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
&lt;a href="http://tekpub.com/productions/js_uptospeed"&gt;&lt;img border="0" height="100" src="http://4.bp.blogspot.com/-sXNm-bniUd8/TyMg45rz8FI/AAAAAAAABHk/pxWxXkg9kvA/s320/js_uptospeed_slide.png" width="170" style="border:none"&gt;&lt;/a&gt;&lt;a href="http://tekpub.com/hanselman"&gt;&lt;img border="0" height="100" src="http://4.bp.blogspot.com/-WlzBMTEmWTw/TyMg8tA4zMI/AAAAAAAABHw/E3ERWvHLfSk/s320/ft_speaker_slide.png" width="170" style="border:none"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://peepcode.com/products/advanced-git"&gt;&lt;img border="0" height="100" src="http://2.bp.blogspot.com/-W_o3u27mf2Y/TyMhCzxFTAI/AAAAAAAABH8/frARvIaSl2M/s320/peepcode-advanced-git-cover.png" width="170" style="border:none"&gt;&lt;/a&gt;&lt;a href="https://peepcode.com/products/backbone-iii"&gt;&lt;img border="0" height="100" src="http://4.bp.blogspot.com/-PHoDBFzSUrY/TyMjaEmysMI/AAAAAAAABIU/_9bkFYe_aLk/s320/peepcode-backbone-iii-cover.png" width="170" style="border:none"&gt;&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
&lt;div style="text-align:left"&gt;Thanks to &lt;a href="https://twitter.com/#%21/bertolami"&gt;
bertolami&lt;/a&gt;, &lt;a href="https://twitter.com/#%21/mbaumeler"&gt;mbaumeler&lt;/a&gt; and &lt;a href="https://twitter.com/#%21/@j_graber/"&gt;
j_graber&lt;/a&gt; for the recommendations.&lt;/div&gt;
&lt;/div&gt;
&lt;div class="x_blogger-post-footer"&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/5763764290649132593-9023796769115264470?l=blog.jonasbandi.net" alt=""&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2EJrUAXVHjRiCiwd2NtH_BC7wZs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2EJrUAXVHjRiCiwd2NtH_BC7wZs/0/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/2EJrUAXVHjRiCiwd2NtH_BC7wZs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2EJrUAXVHjRiCiwd2NtH_BC7wZs/1/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="x_feedflare"&gt;&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=PlnlRCK1hnc:8-nu5oK2NYw:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=PlnlRCK1hnc:8-nu5oK2NYw:4cEx4HpKnUU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=PlnlRCK1hnc:8-nu5oK2NYw:yIl2AUoC8zA"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=PlnlRCK1hnc:8-nu5oK2NYw:I9og5sOYxJI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=PlnlRCK1hnc:8-nu5oK2NYw:F7zBnMyn0Lo"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=PlnlRCK1hnc:8-nu5oK2NYw:F7zBnMyn0Lo" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=PlnlRCK1hnc:8-nu5oK2NYw:V_sGLiPBpWU"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=PlnlRCK1hnc:8-nu5oK2NYw:V_sGLiPBpWU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=PlnlRCK1hnc:8-nu5oK2NYw:gIN9vFwOqvQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=PlnlRCK1hnc:8-nu5oK2NYw:gIN9vFwOqvQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=PlnlRCK1hnc:8-nu5oK2NYw:cGdyc7Q-1BI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=PlnlRCK1hnc:8-nu5oK2NYw:G79ilh31hkQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=PlnlRCK1hnc:8-nu5oK2NYw:Y59mnZtVT5U"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/PlnlRCK1hnc" height="1" width="1"&gt;</content>
      <app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-27T23:58:22.152+01:00</app:edited>
      <media:thumbnail url="http://3.bp.blogspot.com/-DXT2Iun0dNo/TyMekIuZ0TI/AAAAAAAABHM/dyXVPEQyOus/s72-c/management%2B3.0%2Bleading%2Bagile%2Bdevelopers%2Bdeveloping%2Bagile%2Bleaders%2Bfree%2Bdownload.jpg" height="72" width="72" xmlns:media="http://search.yahoo.com/mrss/"></media:thumbnail>
      <thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total>
      <feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blog.jonasbandi.net/2012/01/vacation-books-and-screencasts.html</feedburner:origLink>
    </item>
    <item xml:base="http://www.dnug-bern.ch/Event2011.aspx#634626792000000000">
      <guid isPermaLink="true">http://www.dnug-bern.ch/Event2011.aspx#634626792000000000</guid>
      <link>http://www.dnug-bern.ch/Event2011.aspx#634626792000000000</link>
      <category>.NET User Group Bern Event</category>
      <title>Themenwahl Git oder MSpec mit Alexander Groß</title>
      <description>
&lt;div style="width:100%; padding:0; border-bottom:1px solid #666; display:block; margin-bottom:16px"&gt;
&lt;img src="http://www.dnug-bern.ch/images/be_silhouette.gif" alt="" style="border:0; float:left"&gt;
&lt;h1 style="margin:0; padding-top:5px; color:#666"&gt;.NET User Group Bern Event&lt;/h1&gt;
&lt;/div&gt;
&lt;br style="clear:left"&gt;
&lt;h2&gt;Freitag, 20. Januar 2012 (18:00 bis 22:00 Uhr)&lt;/h2&gt;
&lt;h3&gt;Themenwahl Git oder MSpec mit Alexander Groß&lt;/h3&gt;
&lt;p&gt;Im neuen Jahr werden wir uns, Dank der Zusammenarbeit mit der &lt;a href="http://www.dotnet-zentral.ch/" target="_blank"&gt;
.NET User Group Zentralschweiz&lt;/a&gt;, spontan etwas früher treffen können. Du hast die Möglichkeit mitzuentscheiden welches Thema Du gerne hören möchtest. Git, MSpec oder sogar beides? Zur Person benötigen wir wohl keine weiteren Erläuterungen. ;-)
&lt;/p&gt;
&lt;strong&gt;Abstract Git:&lt;/strong&gt;
&lt;p&gt;Git ist ein fortschrittliches und äusserst flexibles Tool zur Verwaltung von Quellcode. Alexander zeigt alles was Du für den Einstieg benötigst: Beginnend beim grundlegenden Einsatz von Git-Befehlen, über die Arbeit mit Entwicklungszweigen (Branches) bis
 hin zu Tools für die Kommandozeile, für Visual Studio und zum Lösen von Merge-Konflikten.
&lt;/p&gt;
&lt;strong&gt;Abstract MSPec&lt;/strong&gt;
&lt;p&gt;Machine.Specifications (MSpec) ist ein Context/Specification-Framework für den Einsatz bei TDD und BDD das sich durch eine einfache API und Prägnanz bei der Benamung von Spezifikationen auszeichnet. Alexander zeigt in seinem Vortrag Einsatzmöglichkeiten
 von MSpec und spricht über die Vorteile die man aus der Verwendung von MSpec ziehen kann.
&lt;/p&gt;
&lt;strong&gt;Über Alexander Groß&lt;/strong&gt;
&lt;p&gt;&lt;a href="http://therightstuff.de/" target="_blank"&gt;Alexander Groß&lt;/a&gt; ist freiberuflicher Softwareentwickler und Berater. Seine Spezialgebiete sind Backend-Systeme und Tools zur Verbesserung des Entwicklungsprozesses. Seit 2006 leitet er gemeinsam mit Torsten
 Weber die .NET User Group Leipzig und organisiert den jährlich stattfindenden .NET Open Space in seiner Heimatstadt. In seiner Freizeit schärft er gern seine Kochmessersammlung und trägt die eine oder andere Zeile Code zu Open Source-Projekten bei.
&lt;/p&gt;
&lt;strong&gt;Anmeldung&lt;/strong&gt;
&lt;p&gt;Bitte beachte, dass für dieses Treffen eine &lt;a title="Zur Anmeldung auf XING" href="https://www.xing.com/events/themenwahl-git-mspec-alexander-848785?sc_o=as_e" target="_blank"&gt;
Anmeldung&lt;/a&gt; erforderlich ist. Ohne Xing-Konto kannst Du auch unser Kontaktformular nutzen.
&lt;/p&gt;
&lt;p&gt;Das Twitter-Hashtag für diese Veranstaltung: &lt;strong&gt;#dnugbetw&lt;/strong&gt;. &lt;/p&gt;
&lt;p&gt;Die Aktivitäten können während der Veranstaltung &lt;a href="http://dnug-bern.ch/TwitterWall.aspx" target="_blank"&gt;
hier&lt;/a&gt;&amp;nbsp;betrachtet werden. &lt;/p&gt;
&lt;p&gt;Wir freuen uns auf Deine Teilnahme! &lt;/p&gt;
&lt;p&gt;Martin Affolter, Kay Herzam und René Leupold &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
</description>
      <pubDate>Fri, 20 Jan 2012 18:00:00 +0100</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">http://www.databinding.net/blog/post/2012/01/15/entity-framework-43-schema-migrations-fuer-code-first-dbcontext.html</guid>
      <link>http://www.databinding.net/blog/post/2012/01/15/entity-framework-43-schema-migrations-fuer-code-first-dbcontext.html</link>
      <author>ipt:linkTo_UnCryptMailto('nbjmup+'); (René)</author>
      <category>.NET Development</category>
      <category>Entity Framework</category>
      <category>Code First</category>
      <category>SQL Server</category>
      <title>Entity Framework 4.3 - Schema Migrations für Code First (DbContext)</title>
      <description>Eine Anwendung lebt bekanntlich von Änderungen. Nicht selten haben diese Änderungen auch Auswirkungen auf das Datenbankmodell. Das Entity Framework unterstützt mittlerweile DB First, Model First und Code Fi...</description>
      <pubDate>Sun, 15 Jan 2012 22:47:00 +0200</pubDate>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"> Eine Anwendung lebt bekanntlich von Änderungen. Nicht selten haben diese Änderungen auch Auswirkungen auf das Datenbankmodell. Das Entity Framework unterstützt mittlerweile DB First, Model First und Code First. Für DB First und Model First ist es kein grösseres Problem Änderungen auf der Datenbank nachzuführen, mit ein paar Tricks und Tools sind sogar Roundtrips zwischen Datenbank und Modell möglich.</content:encoded>
    </item>
    <item p3:etag="W/&quot;C0AAQXY5eyp7ImA9WhRWFU8.&quot;" xmlns:p3="http://schemas.google.com/g/2005">
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5763764290649132593.post-6531045585136271854</guid>
      <link>http://feedproxy.google.com/~r/closed-loop/~3/qHempns4LC0/presentation-can-javascript-be-elegant.html</link>
      <author>noreply@blogger.com</author>
      <category domain="http://www.blogger.com/atom/ns#">javascript</category>
      <category domain="http://www.blogger.com/atom/ns#">presentation</category>
      <title>Presentation: Can JavaScript be elegant?</title>
      <description>&lt;div style="width: 70%; float: left;"&gt;Last month I was invited &lt;a href="http://blog.jonasbandi.net/2010/12/sbb-developer-days-2010.html"&gt;again&lt;/a&gt; to speak at the &lt;a href="http://www.sbb.ch/sbb-konzern.html"&gt;SBB&lt;/a&gt; Developer Day 2011. Here is the presentation I held about JavaScript:&lt;/div&gt;
&lt;img style="padding-left: 10px; border: none; float: right" src="https://lh5.googleusercontent.com/-tNSDsPu2omw/SHugkpqvAUI/AAAAAAAAARI/vHucMXDAvvs/s144/image_thumb.png" alt="" height="50px" /&gt;
&lt;p style="clear: both;"&gt; &lt;/p&gt;
&lt;div id="__ss_10763521" style="width: 425px;"&gt;&lt;strong style="display: block; margin: 12px 0 4px;"&gt;&lt;a title="Kann JavaScript elegant sein?" href="http://www.slideshare.net/jbandi/kann-javascript-elegant-sein" target="_blank"&gt;Kann JavaScript elegant sein?&lt;/a&gt;&lt;/strong&gt; &lt;iframe src="http://www.slideshare.net/slideshow/embed_code/10763521" width="410" height="330" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;
&lt;div style="padding: 5px 0 12px;"&gt;View more &lt;a href="http://www.slideshare.net/" target="_blank"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/jbandi" target="_blank"&gt;jbandi&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;I enjoyed the event very much, and I hope to be invited again next time.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5763764290649132593-6531045585136271854?l=blog.jonasbandi.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/zScXpH9xrgevSmHtAr9JuLTFen8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zScXpH9xrgevSmHtAr9JuLTFen8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/zScXpH9xrgevSmHtAr9JuLTFen8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zScXpH9xrgevSmHtAr9JuLTFen8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=qHempns4LC0:hB2rN9sGKHI:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=qHempns4LC0:hB2rN9sGKHI:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=qHempns4LC0:hB2rN9sGKHI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=qHempns4LC0:hB2rN9sGKHI:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=qHempns4LC0:hB2rN9sGKHI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=qHempns4LC0:hB2rN9sGKHI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=qHempns4LC0:hB2rN9sGKHI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=qHempns4LC0:hB2rN9sGKHI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=qHempns4LC0:hB2rN9sGKHI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=qHempns4LC0:hB2rN9sGKHI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=qHempns4LC0:hB2rN9sGKHI:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=qHempns4LC0:hB2rN9sGKHI:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=qHempns4LC0:hB2rN9sGKHI:Y59mnZtVT5U"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/qHempns4LC0" height="1" width="1"/&gt;</description>
      <pubDate>Mon, 02 Jan 2012 16:50:00 +0100</pubDate>
      <link rel="replies" type="application/atom+xml" title="Post Comments" href="http://blog.jonasbandi.net/feeds/6531045585136271854/comments/default" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="replies" type="text/html" title="2 Comments" href="http://www.blogger.com/comment.g?blogID=5763764290649132593&amp;postID=6531045585136271854" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/6531045585136271854?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/6531045585136271854?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <updated xmlns="http://www.w3.org/2005/Atom">2012-01-02T17:29:00+01:00</updated>
      <content type="html" xmlns="http://www.w3.org/2005/Atom">
&lt;div style="width:70%; float:left"&gt;Last month I was invited &lt;a href="http://blog.jonasbandi.net/2010/12/sbb-developer-days-2010.html"&gt;
again&lt;/a&gt; to speak at the &lt;a href="http://www.sbb.ch/sbb-konzern.html"&gt;SBB&lt;/a&gt; Developer Day 2011. Here is the presentation I held about JavaScript:&lt;/div&gt;
&lt;img src="https://lh5.googleusercontent.com/-tNSDsPu2omw/SHugkpqvAUI/AAAAAAAAARI/vHucMXDAvvs/s144/image_thumb.png" alt="" height="50px" style="padding-left:10px; border:none; float:right"&gt;
&lt;p style="clear:both"&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id="x___ss_10763521" style="width:425px"&gt;&lt;strong style="display:block; margin:12px 0 4px"&gt;&lt;a title="Kann JavaScript elegant sein?" href="http://www.slideshare.net/jbandi/kann-javascript-elegant-sein" target="_blank"&gt;Kann JavaScript elegant sein?&lt;/a&gt;&lt;/strong&gt;
&lt;div style="padding:5px 0 12px"&gt;View more &lt;a href="http://www.slideshare.net/" target="_blank"&gt;
presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/jbandi" target="_blank"&gt;
jbandi&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;I enjoyed the event very much, and I hope to be invited again next time.&lt;/p&gt;
&lt;div class="x_blogger-post-footer"&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/5763764290649132593-6531045585136271854?l=blog.jonasbandi.net" alt=""&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/zScXpH9xrgevSmHtAr9JuLTFen8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zScXpH9xrgevSmHtAr9JuLTFen8/0/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/zScXpH9xrgevSmHtAr9JuLTFen8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zScXpH9xrgevSmHtAr9JuLTFen8/1/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="x_feedflare"&gt;&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=qHempns4LC0:hB2rN9sGKHI:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=qHempns4LC0:hB2rN9sGKHI:4cEx4HpKnUU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=qHempns4LC0:hB2rN9sGKHI:yIl2AUoC8zA"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=qHempns4LC0:hB2rN9sGKHI:I9og5sOYxJI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=qHempns4LC0:hB2rN9sGKHI:F7zBnMyn0Lo"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=qHempns4LC0:hB2rN9sGKHI:F7zBnMyn0Lo" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=qHempns4LC0:hB2rN9sGKHI:V_sGLiPBpWU"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=qHempns4LC0:hB2rN9sGKHI:V_sGLiPBpWU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=qHempns4LC0:hB2rN9sGKHI:gIN9vFwOqvQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=qHempns4LC0:hB2rN9sGKHI:gIN9vFwOqvQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=qHempns4LC0:hB2rN9sGKHI:cGdyc7Q-1BI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=qHempns4LC0:hB2rN9sGKHI:G79ilh31hkQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=qHempns4LC0:hB2rN9sGKHI:Y59mnZtVT5U"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/qHempns4LC0" height="1" width="1"&gt;</content>
      <app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-02T17:29:00.823+01:00</app:edited>
      <media:thumbnail url="https://lh5.googleusercontent.com/-tNSDsPu2omw/SHugkpqvAUI/AAAAAAAAARI/vHucMXDAvvs/s72-c/image_thumb.png" height="72" width="72" xmlns:media="http://search.yahoo.com/mrss/"></media:thumbnail>
      <thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total>
      <feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blog.jonasbandi.net/2012/01/presentation-can-javascript-be-elegant.html</feedburner:origLink>
    </item>
    <item>
      <guid isPermaLink="true">http://www.databinding.net/blog/post/2011/12/23/sharepoint-2010-business-prozesse-mit-workflows.html</guid>
      <link>http://www.databinding.net/blog/post/2011/12/23/sharepoint-2010-business-prozesse-mit-workflows.html</link>
      <author>ipt:linkTo_UnCryptMailto('nbjmup+'); (René)</author>
      <category>Mind Map</category>
      <category>Sharepoint</category>
      <category>Qualität</category>
      <category>.NET Development</category>
      <title>Sharepoint 2010 - Business Prozesse mit Workflows</title>
      <description>In meinen ersten Beitrag habe ich ja schon über die interessanten Nebeneffekte von Sharepoint berichtet. Auch diese Woche hatte ich wieder Nebeneffekte, die schon arg Grenzwertig waren. Eine Technolgie, d...</description>
      <pubDate>Fri, 23 Dec 2011 21:14:00 +0200</pubDate>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"> In meinen ersten Beitrag habe ich ja schon über die interessanten Nebeneffekte von Sharepoint berichtet. Auch diese Woche hatte ich wieder Nebeneffekte, die schon arg Grenzwertig waren. Eine Technolgie, die sich als Zeitfresser entpuppte war Linq to Sharepoint.</content:encoded>
    </item>
    <item>
      <guid isPermaLink="false">http://schaedlerdaniel.wordpress.com/?p=494</guid>
      <link>http://schaedlerdaniel.wordpress.com/2011/12/23/entity-framework-ein-pragmatischer-ansatz/</link>
      <category>Entity Framework</category>
      <category>Creating query depending on properties in search object Entity Framework</category>
      <category>Custom Query</category>
      <category>Entity Framework one Method to get all object types</category>
      <category>Generic Query</category>
      <title>Entity Framework ein pragmatischer Ansatz</title>
      <description>Was meine ich damit? Ganze einfach, da ich recht pragmatisch bin und nicht gerne all zu viel schreibe, dachte ich mir es muss doch eine Möglichkeit geben, dass ich genau eine Methode habe, die mir aufgrund eines übergebenen Typ’s die Resultate der Datenbank
 zurückliefert. Normalerweise hätte ich das mit einer Vererbung gelöst. 1.) Eine BaseEntität [...]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=schaedlerdaniel.wordpress.com&amp;amp;blog=16378069&amp;amp;post=494&amp;amp;subd=schaedlerdaniel&amp;amp;ref=&amp;amp;feed=1" width="1" height="1"&gt;</description>
      <pubDate>Fri, 23 Dec 2011 11:49:48 Z</pubDate>
      <comments>http://schaedlerdaniel.wordpress.com/2011/12/23/entity-framework-ein-pragmatischer-ansatz/#comments</comments>
      <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">schaedlerdaniel</dc:creator>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;h3&gt;Was meine ich damit?&lt;/h3&gt;
&lt;p&gt;Ganze einfach, da ich recht pragmatisch bin und nicht gerne all zu viel schreibe, dachte ich mir es muss doch eine Möglichkeit geben, dass ich genau eine Methode habe, die mir aufgrund eines übergebenen Typ&amp;#8217;s die Resultate der Datenbank zurückliefert.&lt;/p&gt;
&lt;p&gt;Normalerweise hätte ich das mit einer Vererbung gelöst.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1.) Eine BaseEntität erstellen&lt;/li&gt;
&lt;li&gt;2.) Alle anderen Entitäten erben von dieser Basis-Entität.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So ist es mir möglich mit folgendem Code die entsprechenden Tabellen anzusprechen.&lt;/p&gt;
&lt;p&gt;&lt;pre class="brush: csharp;"&gt;
using(MyContext context = new Context())
{
      context.BaseEntity.OfType&amp;lt;Person&amp;gt;().ToList();
}
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Nun der Ansatz ist nicht schlecht, hat aber seine Tücken, nähmlich dann wenn man grosse Datenmengen verarbeiten muss, dann muss er zuerst alle Daten die dem übergebenen Typ in der BaseEntität entsprechen laden und nochmals die der vererbten Entität.&lt;/p&gt;
&lt;h3&gt;Was wäre die Lösung?&lt;/h3&gt;
&lt;p&gt;Keine Vererbung. Gibt natürlich ein wenig mehr zu tun, man hat aber bei einem nicht bekannten Mengengerüst den Vorteil, dass die Datenbank schneller wachsen kann, ohne dass man ein Refactoring am Code vornehmen müsste.&lt;/p&gt;
&lt;p&gt;Das ganze einfache Model sieht man nachstehend.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://schaedlerdaniel.files.wordpress.com/2011/12/blogmodel.jpg"&gt;&lt;img src="http://schaedlerdaniel.files.wordpress.com/2011/12/blogmodel.jpg?w=400" alt="" title="BlogModel" width="400" class="aligncenter" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Jetzt kommt aber der entscheidende Punkt, den man beim Desing der Eintitäten beachten soll. Das Entity FrameWork kann mit dem EntitySet Namen umgehen. Wenn wir den EntitSet Namen gleich wie die Entität erfassen, so kann man ohne Probleme mit&lt;/p&gt;
&lt;p&gt;&lt;pre class="brush: csharp;"&gt; myEntity.GetType().Name; &lt;/pre&gt;&lt;/p&gt;
&lt;p&gt; das EntitySet so angeben. Wenn man aber den generierten Namen lassen möchte, muss man bewusst sein, dass man sich dann den EntitySet-Name, bestehend aus dem Objekt-Typ Namen und einem Postfix vor einer Abfrage erstellen sollte.&lt;/p&gt;
&lt;p&gt;Ich habe den ersten Weg gewählt und mir den EntitySet Namen gleichgesetzt wie der EntityName (im Grunde weiss ich ja dass die Tabelle Person heisst, die Menge aber Personen sind).&lt;/p&gt;
&lt;p&gt;&lt;a href="http://schaedlerdaniel.files.wordpress.com/2011/12/entitydesigner.jpg"&gt;&lt;img src="http://schaedlerdaniel.files.wordpress.com/2011/12/entitydesigner.jpg?w=400" alt="" title="EntityDesigner" width="400" class="aligncenter" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;h3&gt;Wie sieht den nun der Ansatz aus?&lt;/h3&gt;
&lt;p&gt;Zu diesem Zweck habe ich mir einen ContextHelper erstellt. Interssant ist hier die Methode Get, die anhand eines &lt;a href="http://msdn.microsoft.com/de-de/library/bb738995.aspx" target="_blank"&gt;ObjectQuery&lt;/a&gt; die Abfrage an den Kontext sendet.&lt;/p&gt;
&lt;p&gt;Was brauchen wir dazu?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; 1.) Ein ObjectQuery mit entsprechenden &lt;a href="http://msdn.microsoft.com/de-de/library/system.data.objects.objectparameter.aspx" target="_blank"&gt;ObjectParametern&lt;/a&gt; dass sich aus dem übergebenen Objekt und dessen Eigenschaften zusammensetzt.&lt;/li&gt;
&lt;li&gt; 2.) Ein string Query, welches die die Parameter aufnimmt und anhand des übergebenen Objekts erstellt wird. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;/br&gt;&lt;/p&gt;
&lt;p&gt;Die Get Methode sind dann so aus:&lt;/p&gt;
&lt;p&gt;&lt;pre class="brush: csharp;"&gt;
        /// &amp;lt;summary&amp;gt;
        /// Get method for deleting a row in the database.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;typeparam name=&amp;quot;T&amp;quot;&amp;gt;Type of object to get.&amp;lt;/typeparam&amp;gt;
        /// &amp;lt;param name=&amp;quot;entity&amp;quot;&amp;gt;The search object which has to retrieve all matching entires in the database.&amp;lt;/param&amp;gt;
        public static IEnumerable&amp;lt;T&amp;gt; Get&amp;lt;T&amp;gt;(T entity) where T : EntityObject
        {
            IEnumerable&amp;lt;T&amp;gt; result = null;
            using (BlogModelContainer container = new BlogModelContainer())
            {
                string queryCommand = string.Format(&amp;quot;SELECT VALUE {1} FROM {0}.{1} WHERE 1=1&amp;quot;, container.DefaultContainerName, entity.GetType().Name);

                // Creating the query, depending on how much of the properties in the given object are filled out
                // In this case only string properties will be read.
                queryCommand = CreateQueryString&amp;lt;T&amp;gt;(entity, queryCommand);

                ObjectQuery&amp;lt;T&amp;gt; entityQuery = new ObjectQuery&amp;lt;T&amp;gt;(queryCommand, container);
                CreateParameters&amp;lt;T&amp;gt;(entity).ForEach(entityQuery.Parameters.Add);

                result = entityQuery.ToList();
            }

            return result;
        }
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Damit diese Methode bedient werden kann sind drei weitere notwendig.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1.) Eine die nur &lt;a href="http://msdn.microsoft.com/de-de/library/system.reflection.propertyinfo(v=VS.100).aspx" target="_blank"&gt;PropertyInfo&amp;#8217;s&lt;/a&gt; zurückgibt welche auch einen Wert haben.&lt;/li&gt;
&lt;li&gt;2.) Eine die den QueryString anhand der PropertyInfo&amp;#8217;s abfüllt.&lt;/p&gt;
&lt;li&gt;3.) Last but not least eine Methode die anhand der PropertyInfo&amp;#8217;s die ObjectParameter erstellt.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Die PropertyInfo Methode sieht wie folgt aus:&lt;/p&gt;
&lt;p&gt;&lt;pre class="brush: csharp;"&gt;
        /// &amp;lt;summary&amp;gt;
        /// Get's all properties from an object that where
        /// filled, or they have a value and returns it.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;typeparam name=&amp;quot;T&amp;quot;&amp;gt;&amp;lt;/typeparam&amp;gt;
        /// &amp;lt;param name=&amp;quot;entity&amp;quot;&amp;gt;The entity to look for the properties.&amp;lt;/param&amp;gt;
        /// &amp;lt;returns&amp;gt;List of propertyInfos (each propertyInfo has a value)&amp;lt;/returns&amp;gt;
        private static List&amp;lt;PropertyInfo&amp;gt; GetProperty&amp;lt;T&amp;gt;(T entity) where T : EntityObject
        {
            List&amp;lt;PropertyInfo&amp;gt; result = new List&amp;lt;PropertyInfo&amp;gt;();

            entity.GetType().GetProperties().ToList().ForEach(property =&amp;gt;
            {
                if (property.PropertyType.Equals(typeof(string)))
                {
                    string propertyValue = property.GetValue(entity, new object[] { }) as string;

                    // Determining if the the property value of type string is filled out.
                    if (!string.IsNullOrWhiteSpace(propertyValue))
                    {
                        result.Add(property);
                    }
                }
            });

            return result;
        }
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Da nur PropertyInfo&amp;#8217;s zurückkommen die auch einen Wert aufweisen (momentan nur einen string-Typen, werde auch keine leeren Properties zurückgegeben.&lt;/p&gt;
&lt;p&gt;Die Methode für den QueryString sieht dann so aus: &lt;/p&gt;
&lt;p&gt;&lt;pre class="brush: csharp;"&gt;
        /// &amp;lt;summary&amp;gt;
        /// Creates the appropriate querystring depending
        /// on the object that was passed.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;typeparam name=&amp;quot;T&amp;quot;&amp;gt;The specific objectType&amp;lt;/typeparam&amp;gt;
        /// &amp;lt;param name=&amp;quot;entity&amp;quot;&amp;gt;The entity to query against&amp;lt;/param&amp;gt;
        /// &amp;lt;param name=&amp;quot;queryString&amp;quot;&amp;gt;The&amp;lt;/param&amp;gt;
        /// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;
        private static string CreateQueryString&amp;lt;T&amp;gt;(T entity, string queryString) where T : EntityObject
        {
            List&amp;lt;ObjectParameter&amp;gt; parameters = new List&amp;lt;ObjectParameter&amp;gt;();
            GetProperty&amp;lt;T&amp;gt;(entity).ForEach(p =&amp;gt;
            {
                string propertyValue = p.GetValue(entity, new object[] { }) as string;
                queryString += string.Format(&amp;quot; AND {0}.{1} = @{1}&amp;quot;, entity.GetType().Name, p.Name);
            });

            return queryString;
        }
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Für die ObjectParameter Erstellung wird eine ähnliche Methode verwendet:&lt;/p&gt;
&lt;p&gt;&lt;pre class="brush: csharp;"&gt;
        /// &amp;lt;summary&amp;gt;
        /// Creates the queryparameters to pass to the objectquery
        /// depending on the filled out properties in the parameter
        /// object.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;typeparam name=&amp;quot;T&amp;quot;&amp;gt;Specific objectType which must be at least of type EntityObject&amp;lt;/typeparam&amp;gt;
        /// &amp;lt;param name=&amp;quot;entity&amp;quot;&amp;gt;The entity with the filled properties for use in the query.&amp;lt;/param&amp;gt;
        /// &amp;lt;returns&amp;gt;The ObjectParameters Array to add it to the ObjectQuery.&amp;lt;/returns&amp;gt;
        private static List&amp;lt;ObjectParameter&amp;gt; CreateParameters&amp;lt;T&amp;gt;(T entity) where T : EntityObject
        {
            List&amp;lt;ObjectParameter&amp;gt; parameters = new List&amp;lt;ObjectParameter&amp;gt;();
            GetProperty&amp;lt;T&amp;gt;(entity).ForEach(p =&amp;gt;
            {
                string propertyValue = p.GetValue(entity, new object[] { }) as string;
                ObjectParameter parameter = new ObjectParameter(p.Name, propertyValue);
                parameters.Add(parameter);
            });

            return parameters;
        }
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Somit werden die QueryParameter und der Query generisch anhand des &amp;#8220;Suchobjektes&amp;#8221;, das an die Get-Methode übergeben wird zusammengestellt.&lt;/p&gt;
&lt;p&gt;Für Fragen, Kritik und Anregungen freue ich mich über einen Kommentar.&lt;/p&gt;
&lt;p&gt;Ich wünsche allen frohe Festtage und einen guten Rutsch ins 2012, auf dass weider viele neue Sachen im .NET 4.5 endeckt werden können.&lt;/p&gt;
&lt;p&gt;Das Beispielprojekt kann &lt;a href="http://dl.dropbox.com/u/49243648/Sample.GenericEntity.zip" target="_blank"&gt;hier&lt;/a&gt; heruntergeladen werden.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dotnet-kicks.de/kick/?url=http%3a%2f%2fbit.ly%2fsR6seW"&gt;&lt;img src="http://dotnet-kicks.de/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fbit.ly%2fsR6seW" border="0" alt="kick it on dotnet-kicks.de" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;br /&gt;  &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/schaedlerdaniel.wordpress.com/494/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/schaedlerdaniel.wordpress.com/494/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/schaedlerdaniel.wordpress.com/494/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/schaedlerdaniel.wordpress.com/494/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/schaedlerdaniel.wordpress.com/494/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/schaedlerdaniel.wordpress.com/494/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/schaedlerdaniel.wordpress.com/494/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/schaedlerdaniel.wordpress.com/494/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/schaedlerdaniel.wordpress.com/494/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/schaedlerdaniel.wordpress.com/494/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/schaedlerdaniel.wordpress.com/494/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/schaedlerdaniel.wordpress.com/494/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/schaedlerdaniel.wordpress.com/494/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/schaedlerdaniel.wordpress.com/494/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=schaedlerdaniel.wordpress.com&amp;amp;blog=16378069&amp;amp;post=494&amp;amp;subd=schaedlerdaniel&amp;amp;ref=&amp;amp;feed=1" width="1" height="1" /&gt;</content:encoded>
      <wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://schaedlerdaniel.wordpress.com/2011/12/23/entity-framework-ein-pragmatischer-ansatz/feed/</wfw:commentRss>
      <slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">2</slash:comments>
      <media:content url="http://0.gravatar.com/avatar/e50530c3e478a8a210b7df39006fdc68?s=96&amp;d=identicon&amp;r=G" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">schaedlerdaniel</media:title>
      </media:content>
      <media:content url="http://schaedlerdaniel.files.wordpress.com/2011/12/blogmodel.jpg?w=300" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">BlogModel</media:title>
      </media:content>
      <media:content url="http://schaedlerdaniel.files.wordpress.com/2011/12/entitydesigner.jpg" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">EntityDesigner</media:title>
      </media:content>
      <media:content url="http://dotnet-kicks.de/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fbit.ly%2fsR6seW" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">kick it on dotnet-kicks.de</media:title>
      </media:content>
    </item>
    <item>
      <guid isPermaLink="true">http://www.databinding.net/blog/post/2011/12/17/sharepoint-2010-mein-einstieg.html</guid>
      <link>http://www.databinding.net/blog/post/2011/12/17/sharepoint-2010-mein-einstieg.html</link>
      <author>ipt:linkTo_UnCryptMailto('nbjmup+'); (René)</author>
      <category>Sharepoint</category>
      <category>Off-topic</category>
      <title>Sharepoint 2010 - Mein Einstieg</title>
      <description>Sharepoint gehört nun seit 2 Monaten zu einem meiner Aufgabenfelder und ich muss sagen, die Lernkurve ist aus meiner Sicht nicht zu unterschätzen. Der Hauptgrund dafür: Es kann viel, aber einiges davon doch no...</description>
      <pubDate>Sat, 17 Dec 2011 14:07:00 +0200</pubDate>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"> Sharepoint gehört nun seit 2 Monaten zu einem meiner Aufgabenfelder und ich muss sagen, die Lernkurve ist aus meiner Sicht nicht zu unterschätzen. Der Hauptgrund dafür: Es kann viel, aber einiges davon doch noch nicht so richtig oder mit interessanten Nebeneffekten.</content:encoded>
    </item>
    <item>
      <guid isPermaLink="true">http://www.databinding.net/blog/post/2011/12/10/entity-framework-41-change-tracking.html</guid>
      <link>http://www.databinding.net/blog/post/2011/12/10/entity-framework-41-change-tracking.html</link>
      <author>ipt:linkTo_UnCryptMailto('nbjmup+'); (René)</author>
      <category>.NET Development</category>
      <category>Entity Framework</category>
      <category>Code First</category>
      <title>Entity Framework 4.1 - Change Tracking</title>
      <description>Zwei Monate lang keinen Blogpost mehr verfasst. Was Sharepoint alles anrichten kann, aber das ist eine andere Geschichte.</description>
      <pubDate>Sat, 10 Dec 2011 11:36:00 +0200</pubDate>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"> Zwei Monate lang keinen Blogpost mehr verfasst. Was Sharepoint alles anrichten kann, aber das ist eine andere Geschichte.</content:encoded>
    </item>
    <item xml:base="http://www.dnug-bern.ch/Event2011.aspx#634588560000000000">
      <guid isPermaLink="true">http://www.dnug-bern.ch/Event2011.aspx#634588560000000000</guid>
      <link>http://www.dnug-bern.ch/Event2011.aspx#634588560000000000</link>
      <category>.NET User Group Bern Event</category>
      <title>.NETworking Lunch Software Design</title>
      <description>
&lt;div style="width:100%; padding:0; border-bottom:1px solid #666; display:block; margin-bottom:16px"&gt;
&lt;img src="http://www.dnug-bern.ch/images/be_silhouette.gif" alt="" style="border:0; float:left"&gt;
&lt;h1 style="margin:0; padding-top:5px; color:#666"&gt;.NET User Group Bern Event&lt;/h1&gt;
&lt;/div&gt;
&lt;br style="clear:left"&gt;
&lt;h2 id="x_20110817"&gt;Mittwoch, 7.&amp;nbsp;Dezember 2011 (12:00 bis 14:00 Uhr)&lt;/h2&gt;
&lt;h3&gt;.NETworking Lunch Software Design&lt;/h3&gt;
&lt;p&gt;Am 7. Dezember treffen wir uns zum zweiten und letzten .NETworking Lunch zum Thema Software Design in&amp;nbsp;diesem Jahr.
&lt;a class="x_external" title="Profil auf Xing" href="https://www.xing.com/profile/Patrick_Weibel5;key=0.0" target="_blank"&gt;
Patrick&lt;/a&gt; wird uns durch das Thema führen und&amp;nbsp;aus seiner Sicht&amp;nbsp;folgende Fragen näher beleuchten:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ist Software Design heute mit modernen Frameworks überflüssig? &lt;/li&gt;&lt;li&gt;Wird Software Design eigentlich überbewertet? &lt;/li&gt;&lt;li&gt;Ist Software Design einfach nur UML? &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Diese Fragen wirken auf den ersten Blick offensichtlich falsch. Doch was ist die Aufgabe von Software Design heute wirklich? An diesem Event erklärt Patrick anhand von Praxisbeispielen und Theorie wo Software Design einen Wert zur Software Entwicklung beisteuern
 kann und wo die Risiken liegen, wenn Software Design als überbewertet angeschaut wird.
&lt;/p&gt;
&lt;p&gt;Dieser Event richtet sich an Software Entwickler, Software Architekten sowie an Projektleiter.
&lt;/p&gt;
&lt;p&gt;Dieses&amp;nbsp;Treffen findet&amp;nbsp;erneut in der Schmiedstube statt. Die Anfahrtdetails sind
&lt;a class="x_external" href="http://www.schmiedstube.com/standort.html"&gt;hier&lt;/a&gt; beschrieben.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Bitte beachte, dass für dieses Treffen eine &lt;a href="https://www.xing.com/events/networking-lunch-software-design-832440"&gt;
&lt;strong&gt;Anmeldung&lt;/strong&gt;&lt;/a&gt; erforderlich ist und gebe unter Bemerkungen und Hinweise deinen
&lt;strong&gt;Menüwunsch&lt;/strong&gt; an (Menu 1 oder Menu 2 (Vegetarisch) ca. CHF 30.-). &lt;/p&gt;
&lt;p&gt;Das Mittagessen wird von jedem Teilnehmenden direkt vom Restaurant verrechnet und muss vor Ort in bar bezahlt werden.&lt;/p&gt;
&lt;h3&gt;Abmeldung&lt;/h3&gt;
&lt;p&gt;Bei Nichterscheinen ohne Abmeldung bis 3 Arbeitstage vor dem Anlass werden allfällige Unkosten, die uns dadurch entstehen, bis CHF 50.- weiterverrechnet.&lt;/p&gt;
&lt;p&gt;Das Twitter-Hashtag für diese Veranstaltung: &lt;strong&gt;#dnugbesd&lt;/strong&gt;. Die Aktivitäten können
&lt;a title="Zum Twitter Stream der Veranstaltung" href="http://www.dnug-bern.ch/TwitterWall.aspx"&gt;
hier&lt;/a&gt; betrachtet werden.&lt;/p&gt;
&lt;p&gt;Wir freuen uns auf deine Teilnahme!&amp;nbsp;&lt;/p&gt;
</description>
      <pubDate>Wed, 07 Dec 2011 12:00:00 +0100</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">http://blog.eweibel.net/?p=1121</guid>
      <link>http://blog.eweibel.net/?p=1121</link>
      <category>Design patterns</category>
      <category>Good practices</category>
      <category>Software engineering</category>
      <title>Speaking at the .NET Usergroup Bern</title>
      <description>During a Lunch event organized by the .NET Usergroup Bern at the 7 December 2011 in Bern I will speak about the following question: Is Software design overrated? Yes, I know, it’s provocative. And obviously wrong. Really? I’m not so sure. After 10 years
 as software engineer and some years as software architect I saw [...]</description>
      <pubDate>Sun, 04 Dec 2011 19:27:22 Z</pubDate>
      <comments>http://blog.eweibel.net/?p=1121#comments</comments>
      <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Patrick</dc:creator>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;&lt;a href="http://blog.eweibel.net/wp-content/uploads/image18.png" rel="lightbox[1121]"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" align="right" src="http://blog.eweibel.net/wp-content/uploads/image_thumb18.png" width="262" height="70" /&gt;&lt;/a&gt;During a Lunch event organized by the &lt;a href="http://dnug-bern.ch" target="_blank"&gt;.NET Usergroup Bern&lt;/a&gt; at the 7 December 2011 in Bern I will speak about the following question:&lt;/p&gt;
&lt;p&gt;Is Software design overrated?&lt;/p&gt;
&lt;p&gt;Yes, I know, it&amp;#8217;s provocative. And obviously wrong. Really? I&amp;#8217;m not so sure. After 10 years as software engineer and some years as software architect I saw too often no design, just a transformation from requirements directly in code. And what is the problem with that?&lt;/p&gt;
&lt;p&gt;Interested? So come to my talk, &lt;a href="http://dnug-bern.ch/Event2011.aspx" target="_blank"&gt;here&lt;/a&gt; is some more information. The twitter hashtag will be #dnugbesd.&lt;/p&gt;
&lt;p&gt;&lt;a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.eweibel.net%2F%3Fp%3D1121&amp;amp;title=Speaking%20at%20the%20.NET%20Usergroup%20Bern" id="wpa2a_16"&gt;&lt;img src="http://blog.eweibel.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Related posts:&lt;ol&gt;
&lt;li&gt;&lt;a href='http://blog.eweibel.net/?p=1117' rel='bookmark' title='Speaking at the .NET Usergroup Zentralschweiz'&gt;Speaking at the .NET Usergroup Zentralschweiz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href='http://blog.eweibel.net/?p=600' rel='bookmark' title='First developer meeting in Bern'&gt;First developer meeting in Bern&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href='http://blog.eweibel.net/?p=718' rel='bookmark' title='Do frameworks kill design skills?'&gt;Do frameworks kill design skills?&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;</content:encoded>
      <wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blog.eweibel.net/?feed=rss2&amp;p=1121</wfw:commentRss>
      <slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments>
    </item>
    <item p3:etag="W/&quot;DEMCRHo-eip7ImA9WhRRGEk.&quot;" xmlns:p3="http://schemas.google.com/g/2005">
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5763764290649132593.post-1291812240348997604</guid>
      <link>http://feedproxy.google.com/~r/closed-loop/~3/C2ic2UCeP78/opinions-scala.html</link>
      <author>noreply@blogger.com</author>
      <category domain="http://www.blogger.com/atom/ns#">java</category>
      <category domain="http://www.blogger.com/atom/ns#">programming</category>
      <category domain="http://www.blogger.com/atom/ns#">scala</category>
      <title>Opinions: Scala</title>
      <description>&lt;p&gt;&lt;img style="float: right; margin-left: 5px; border: none;" title="240px-Yin_and_Yang.svg.png" src="http://lh3.ggpht.com/-0iELpoo_4UY/TtkIMHmdpkI/AAAAAAAABF0/YX3aRpk_TDI/240px-Yin_and_Yang.svg.png?imgmax=800" border="0" alt="" width="160" /&gt;&lt;/p&gt;
&lt;p&gt;Can you spot the difference:&lt;/p&gt;
&lt;blockquote class="tr_bq"&gt;&lt;span style="font-size: large;"&gt;Scala is a serious option for organizations developing on a JVM platform.&lt;/span&gt;&lt;/blockquote&gt;
&lt;div style="text-align: right;"&gt;- &lt;a href="http://martinfowler.com/bliki/gotoAarhus2011.html"&gt;Martin Fowler&lt;/a&gt;&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;blockquote class="tr_bq"&gt;&lt;span style="font-size: large;"&gt;The friction and complexity that comes with using Scala instead of Java isn't offset by enough productivity benefit or reduction of maintenance burden for it to make sense as our default language.&lt;/span&gt;&lt;/blockquote&gt;
&lt;div style="text-align: right;"&gt;- &lt;a href="https://www.yammer.com/"&gt;Yammer&lt;/a&gt; &lt;a href="https://gist.github.com/1406238"&gt;moving from Scala to Java&lt;/a&gt;&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div style="clear: right; font-size: 10px;"&gt;&lt;a href="http://twitter.com/jbandi"&gt;&lt;img style="border: 0 none; margin: 0px;" src="http://www.google.com/s2/favicons?domain=twitter.com" border="0" alt="http://www.google.com/s2/favicons?domain=twitter.com" height="13px" align="left" /&gt;If you like this, follow me on twitter ...&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5763764290649132593-1291812240348997604?l=blog.jonasbandi.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/HuTI39cqXmAmMGcktVnLgclp1yQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HuTI39cqXmAmMGcktVnLgclp1yQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/HuTI39cqXmAmMGcktVnLgclp1yQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HuTI39cqXmAmMGcktVnLgclp1yQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=C2ic2UCeP78:jQJi8mEnflk:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=C2ic2UCeP78:jQJi8mEnflk:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=C2ic2UCeP78:jQJi8mEnflk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=C2ic2UCeP78:jQJi8mEnflk:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=C2ic2UCeP78:jQJi8mEnflk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=C2ic2UCeP78:jQJi8mEnflk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=C2ic2UCeP78:jQJi8mEnflk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=C2ic2UCeP78:jQJi8mEnflk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=C2ic2UCeP78:jQJi8mEnflk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=C2ic2UCeP78:jQJi8mEnflk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=C2ic2UCeP78:jQJi8mEnflk:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=C2ic2UCeP78:jQJi8mEnflk:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=C2ic2UCeP78:jQJi8mEnflk:Y59mnZtVT5U"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/C2ic2UCeP78" height="1" width="1"/&gt;</description>
      <pubDate>Fri, 02 Dec 2011 18:17:00 +0100</pubDate>
      <link rel="replies" type="application/atom+xml" title="Post Comments" href="http://blog.jonasbandi.net/feeds/1291812240348997604/comments/default" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="replies" type="text/html" title="0 Comments" href="http://www.blogger.com/comment.g?blogID=5763764290649132593&amp;postID=1291812240348997604" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/1291812240348997604?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/1291812240348997604?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <updated xmlns="http://www.w3.org/2005/Atom">2011-12-02T18:21:05+01:00</updated>
      <content type="html" xmlns="http://www.w3.org/2005/Atom">
&lt;p&gt;&lt;img title="240px-Yin_and_Yang.svg.png" src="http://lh3.ggpht.com/-0iELpoo_4UY/TtkIMHmdpkI/AAAAAAAABF0/YX3aRpk_TDI/240px-Yin_and_Yang.svg.png?imgmax=800" border="0" alt="" width="160" style="float:right; margin-left:5px; border:none"&gt;&lt;/p&gt;
&lt;p&gt;Can you spot the difference:&lt;/p&gt;
&lt;blockquote class="x_tr_bq"&gt;&lt;span style="font-size:large"&gt;Scala is a serious option for organizations developing on a JVM platform.&lt;/span&gt;&lt;/blockquote&gt;
&lt;div style="text-align:right"&gt;-&amp;nbsp;&lt;a href="http://martinfowler.com/bliki/gotoAarhus2011.html"&gt;Martin Fowler&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote class="x_tr_bq"&gt;&lt;span style="font-size:large"&gt;The friction and complexity that comes with using Scala instead of Java isn't offset by enough productivity benefit or reduction of maintenance burden for it to make sense as our default language.&lt;/span&gt;&lt;/blockquote&gt;
&lt;div style="text-align:right"&gt;- &lt;a href="https://www.yammer.com/"&gt;Yammer&lt;/a&gt; &lt;a href="https://gist.github.com/1406238"&gt;
moving from Scala to Java&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="clear:right; font-size:10px"&gt;&lt;a href="http://twitter.com/jbandi"&gt;&lt;img src="http://www.google.com/s2/favicons?domain=twitter.com" border="0" alt="http://www.google.com/s2/favicons?domain=twitter.com" height="13px" align="left" style="border:0 none; margin:0px"&gt;If
 you like this, follow me on twitter ...&lt;/a&gt;&lt;/div&gt;
&lt;div class="x_blogger-post-footer"&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/5763764290649132593-1291812240348997604?l=blog.jonasbandi.net" alt=""&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/HuTI39cqXmAmMGcktVnLgclp1yQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HuTI39cqXmAmMGcktVnLgclp1yQ/0/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/HuTI39cqXmAmMGcktVnLgclp1yQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HuTI39cqXmAmMGcktVnLgclp1yQ/1/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="x_feedflare"&gt;&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=C2ic2UCeP78:jQJi8mEnflk:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=C2ic2UCeP78:jQJi8mEnflk:4cEx4HpKnUU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=C2ic2UCeP78:jQJi8mEnflk:yIl2AUoC8zA"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=C2ic2UCeP78:jQJi8mEnflk:I9og5sOYxJI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=C2ic2UCeP78:jQJi8mEnflk:F7zBnMyn0Lo"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=C2ic2UCeP78:jQJi8mEnflk:F7zBnMyn0Lo" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=C2ic2UCeP78:jQJi8mEnflk:V_sGLiPBpWU"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=C2ic2UCeP78:jQJi8mEnflk:V_sGLiPBpWU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=C2ic2UCeP78:jQJi8mEnflk:gIN9vFwOqvQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=C2ic2UCeP78:jQJi8mEnflk:gIN9vFwOqvQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=C2ic2UCeP78:jQJi8mEnflk:cGdyc7Q-1BI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=C2ic2UCeP78:jQJi8mEnflk:G79ilh31hkQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=C2ic2UCeP78:jQJi8mEnflk:Y59mnZtVT5U"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/C2ic2UCeP78" height="1" width="1"&gt;</content>
      <app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-02T18:21:05.452+01:00</app:edited>
      <media:thumbnail url="http://lh3.ggpht.com/-0iELpoo_4UY/TtkIMHmdpkI/AAAAAAAABF0/YX3aRpk_TDI/s72-c/240px-Yin_and_Yang.svg.png?imgmax=800" height="72" width="72" xmlns:media="http://search.yahoo.com/mrss/"></media:thumbnail>
      <thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total>
      <feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blog.jonasbandi.net/2011/12/opinions-scala.html</feedburner:origLink>
    </item>
    <item p3:etag="W/&quot;CU8BR3Y9eCp7ImA9WhRREEg.&quot;" xmlns:p3="http://schemas.google.com/g/2005">
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5763764290649132593.post-7146691831117489171</guid>
      <link>http://feedproxy.google.com/~r/closed-loop/~3/LKiCYLM_Hu8/model-model-thou-art-my-riddle_23.html</link>
      <author>noreply@blogger.com</author>
      <category domain="http://www.blogger.com/atom/ns#">humor</category>
      <category domain="http://www.blogger.com/atom/ns#">design</category>
      <title>Model, model thou art my riddle!</title>
      <description>Can you spot the difference:&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;&lt;span style="font-size: large;"&gt;In a Model View Controller application, you only ever want to see SQL code in the model.&lt;/span&gt;&lt;/blockquote&gt;&lt;div style="text-align: right;"&gt;-&amp;nbsp; &lt;a href="http://pragprog.com/book/rr2/rails-recipes"&gt;Rails Receipes&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;&lt;span style="font-size: large;"&gt;The domain model should be independent of persistence implementation details.&lt;/span&gt;&lt;/blockquote&gt;&lt;div style="text-align: right;"&gt;- &lt;a href="http://www.infoq.com/articles/ddd-in-practice"&gt;Domain Driven Design and Development In Practice &lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Probably we should accept that models come in different flavors...&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/-5msiPOih6Xo/Tsq-GtttPOI/AAAAAAAABFo/it6EtW6RK18/s1600/Model1.jpg" width="150" /&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/-DhspeXRY_nE/Tsq-GPlKt8I/AAAAAAAABFk/ut9l1E7G070/s320/Model2.jpg" width="150" /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;br /&gt;
&lt;/div&gt;... or maybe the grand master was right:&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;Using C means that people [...] don't screw things up with any idiotic "object model" crap.&lt;/blockquote&gt;&lt;div style="text-align: right;"&gt;- &lt;a href="http://article.gmane.org/gmane.comp.version-control.git/57918"&gt;Linus Torwalds&lt;/a&gt; &lt;/div&gt;&lt;br /&gt;
&lt;div style="clear: right; font-size: 10px;"&gt;&lt;a href="http://twitter.com/jbandi"&gt;&lt;img align="left" alt="http://www.google.com/s2/favicons?domain=twitter.com" border="0" height="13px" src="http://www.google.com/s2/favicons?domain=twitter.com" style="border: 0 none; margin: 0px;" /&gt;If you like this, follow me on twitter ...&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5763764290649132593-7146691831117489171?l=blog.jonasbandi.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/iNndzpxbJRWvoI5Mokc_JOuNz_8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iNndzpxbJRWvoI5Mokc_JOuNz_8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/iNndzpxbJRWvoI5Mokc_JOuNz_8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iNndzpxbJRWvoI5Mokc_JOuNz_8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=LKiCYLM_Hu8:SL06s4V_dIE:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=LKiCYLM_Hu8:SL06s4V_dIE:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=LKiCYLM_Hu8:SL06s4V_dIE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=LKiCYLM_Hu8:SL06s4V_dIE:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=LKiCYLM_Hu8:SL06s4V_dIE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=LKiCYLM_Hu8:SL06s4V_dIE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=LKiCYLM_Hu8:SL06s4V_dIE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=LKiCYLM_Hu8:SL06s4V_dIE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=LKiCYLM_Hu8:SL06s4V_dIE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=LKiCYLM_Hu8:SL06s4V_dIE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=LKiCYLM_Hu8:SL06s4V_dIE:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=LKiCYLM_Hu8:SL06s4V_dIE:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=LKiCYLM_Hu8:SL06s4V_dIE:Y59mnZtVT5U"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/LKiCYLM_Hu8" height="1" width="1"/&gt;</description>
      <pubDate>Wed, 23 Nov 2011 14:09:00 +0100</pubDate>
      <link rel="replies" type="application/atom+xml" title="Post Comments" href="http://blog.jonasbandi.net/feeds/7146691831117489171/comments/default" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="replies" type="text/html" title="2 Comments" href="http://www.blogger.com/comment.g?blogID=5763764290649132593&amp;postID=7146691831117489171" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/7146691831117489171?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/7146691831117489171?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <updated xmlns="http://www.w3.org/2005/Atom">2011-11-23T14:10:56+01:00</updated>
      <content type="html" xmlns="http://www.w3.org/2005/Atom">Can you spot the difference:&lt;br&gt;
&lt;blockquote class="x_tr_bq"&gt;&lt;span style="font-size:large"&gt;In a Model View Controller application, you only ever want to see SQL code in the model.&lt;/span&gt;&lt;/blockquote&gt;
&lt;div style="text-align:right"&gt;-&amp;nbsp; &lt;a href="http://pragprog.com/book/rr2/rails-recipes"&gt;
Rails Receipes&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;blockquote class="x_tr_bq"&gt;&lt;span style="font-size:large"&gt;The domain model should be independent of persistence implementation details.&lt;/span&gt;&lt;/blockquote&gt;
&lt;div style="text-align:right"&gt;- &lt;a href="http://www.infoq.com/articles/ddd-in-practice"&gt;
Domain Driven Design and Development In Practice &lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;br&gt;
Probably we should accept that models come in different flavors...&lt;br&gt;
&lt;div style="text-align:center"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/-5msiPOih6Xo/Tsq-GtttPOI/AAAAAAAABFo/it6EtW6RK18/s1600/Model1.jpg" width="150"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/-DhspeXRY_nE/Tsq-GPlKt8I/AAAAAAAABFk/ut9l1E7G070/s320/Model2.jpg" width="150"&gt;&lt;/div&gt;
&lt;div class="x_separator" style="clear:both"&gt;&lt;br&gt;
&lt;/div&gt;
... or maybe the grand master was right:&lt;br&gt;
&lt;blockquote class="x_tr_bq"&gt;Using C means that people [...] don't screw things up with any idiotic &amp;quot;object model&amp;quot; crap.&lt;/blockquote&gt;
&lt;div style="text-align:right"&gt;- &lt;a href="http://article.gmane.org/gmane.comp.version-control.git/57918"&gt;
Linus Torwalds&lt;/a&gt; &lt;/div&gt;
&lt;br&gt;
&lt;div style="clear:right; font-size:10px"&gt;&lt;a href="http://twitter.com/jbandi"&gt;&lt;img align="left" alt="http://www.google.com/s2/favicons?domain=twitter.com" border="0" height="13px" src="http://www.google.com/s2/favicons?domain=twitter.com" style="border:0 none; margin:0px"&gt;If
 you like this, follow me on twitter ...&lt;/a&gt;&lt;/div&gt;
&lt;div class="x_blogger-post-footer"&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/5763764290649132593-7146691831117489171?l=blog.jonasbandi.net" alt=""&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/iNndzpxbJRWvoI5Mokc_JOuNz_8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iNndzpxbJRWvoI5Mokc_JOuNz_8/0/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/iNndzpxbJRWvoI5Mokc_JOuNz_8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iNndzpxbJRWvoI5Mokc_JOuNz_8/1/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="x_feedflare"&gt;&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=LKiCYLM_Hu8:SL06s4V_dIE:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=LKiCYLM_Hu8:SL06s4V_dIE:4cEx4HpKnUU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=LKiCYLM_Hu8:SL06s4V_dIE:yIl2AUoC8zA"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=LKiCYLM_Hu8:SL06s4V_dIE:I9og5sOYxJI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=LKiCYLM_Hu8:SL06s4V_dIE:F7zBnMyn0Lo"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=LKiCYLM_Hu8:SL06s4V_dIE:F7zBnMyn0Lo" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=LKiCYLM_Hu8:SL06s4V_dIE:V_sGLiPBpWU"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=LKiCYLM_Hu8:SL06s4V_dIE:V_sGLiPBpWU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=LKiCYLM_Hu8:SL06s4V_dIE:gIN9vFwOqvQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=LKiCYLM_Hu8:SL06s4V_dIE:gIN9vFwOqvQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=LKiCYLM_Hu8:SL06s4V_dIE:cGdyc7Q-1BI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=LKiCYLM_Hu8:SL06s4V_dIE:G79ilh31hkQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=LKiCYLM_Hu8:SL06s4V_dIE:Y59mnZtVT5U"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/LKiCYLM_Hu8" height="1" width="1"&gt;</content>
      <app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-23T14:10:56.860+01:00</app:edited>
      <media:thumbnail url="http://3.bp.blogspot.com/-5msiPOih6Xo/Tsq-GtttPOI/AAAAAAAABFo/it6EtW6RK18/s72-c/Model1.jpg" height="72" width="72" xmlns:media="http://search.yahoo.com/mrss/"></media:thumbnail>
      <thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total>
      <feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blog.jonasbandi.net/2011/11/model-model-thou-art-my-riddle_23.html</feedburner:origLink>
    </item>
    <item>
      <guid isPermaLink="true">http://blog.eweibel.net/?p=1117</guid>
      <link>http://blog.eweibel.net/?p=1117</link>
      <category>Good practices</category>
      <category>Software engineering</category>
      <category>Speaking</category>
      <title>Speaking at the .NET Usergroup Zentralschweiz</title>
      <description>I’m holding at the .NET Usergroup Zentralschweiz a short talk about &amp;quot;Know your warm-up&amp;quot;, see my last blog post. I’ll explain what I developed exactly and how I train new employees with this warm-up. I will also demonstrate the sample application which
 a new employee develops from scratch. Come to see me speaking the 24. [...]</description>
      <pubDate>Fri, 18 Nov 2011 16:17:35 Z</pubDate>
      <comments>http://blog.eweibel.net/?p=1117#comments</comments>
      <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Patrick</dc:creator>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;&lt;a href="http://blog.eweibel.net/wp-content/uploads/dotnetzentral.png" rel="lightbox[1117]"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="dotnetzentral" border="0" alt="dotnetzentral" align="right" src="http://blog.eweibel.net/wp-content/uploads/dotnetzentral_thumb.png" width="234" height="71" /&gt;&lt;/a&gt;I&amp;#8217;m holding at the &lt;a href="http://www.dotnet-zentral.ch/" target="_blank"&gt;.NET Usergroup Zentralschweiz&lt;/a&gt; a short talk about &amp;quot;Know your warm-up&amp;quot;, see my &lt;a href="http://blog.eweibel.net/?p=1108" target="_blank"&gt;last blog post&lt;/a&gt;. I&amp;#8217;ll explain what I developed exactly and how I train new employees with this warm-up. I will also demonstrate the sample application which a new employee develops from scratch.&lt;/p&gt;
&lt;p&gt;Come to see me &lt;a href="http://www.dotnet-zentral.ch/?p=164" target="_blank"&gt;speaking&lt;/a&gt; the 24. November, 18:00 at the following address: bbv Software Service AG, Blumenrain 10, Luzern, 1. Stock.&lt;/p&gt;
&lt;p&gt;Thanks &lt;a href="https://twitter.com/#!/danielmarbach" target="_blank"&gt;@danielmarbach&lt;/a&gt; and &lt;a href="https://twitter.com/#!/ursenzler" target="_blank"&gt;@ursenzler&lt;/a&gt; for having me.&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Update:&lt;/strong&gt;&lt;br /&gt;
There is a &lt;a href="http://www.dotnet-zentral.ch/?p=189" target="_blank"&gt;wrap-up on the site of the .NET Usergroup Zentralschweiz&lt;/a&gt; with some pictures. The &lt;a href="http://blog.eweibel.net/wp-content/uploads/Know-your-warm-up.pdf" target="_blank"&gt;slides are now available&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.eweibel.net%2F%3Fp%3D1117&amp;amp;title=Speaking%20at%20the%20.NET%20Usergroup%20Zentralschweiz" id="wpa2a_18"&gt;&lt;img src="http://blog.eweibel.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Related posts:&lt;ol&gt;
&lt;li&gt;&lt;a href='http://blog.eweibel.net/?p=1121' rel='bookmark' title='Speaking at the .NET Usergroup Bern'&gt;Speaking at the .NET Usergroup Bern&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href='http://blog.eweibel.net/?p=1108' rel='bookmark' title='Know your warm-up'&gt;Know your warm-up&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;</content:encoded>
      <wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blog.eweibel.net/?feed=rss2&amp;p=1117</wfw:commentRss>
      <slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments>
    </item>
    <item p3:etag="W/&quot;DkcNQng-cSp7ImA9WhRSGEU.&quot;" xmlns:p3="http://schemas.google.com/g/2005">
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5763764290649132593.post-5987415928190520003</guid>
      <link>http://feedproxy.google.com/~r/closed-loop/~3/AJDZqsV29tw/watch-out-world-is-changing.html</link>
      <author>noreply@blogger.com</author>
      <category domain="http://www.blogger.com/atom/ns#">cool stuff</category>
      <category domain="http://www.blogger.com/atom/ns#">trivia</category>
      <title>Watch out: The world is changing!</title>
      <description>&lt;p&gt;Lately I seem more &lt;a href="http://blog.jonasbandi.net/2011/09/back-at-university-things-have-changed.html"&gt;susceptible to realize&lt;/a&gt; how fast the world is changing. Probably I am getting old...&lt;/p&gt;&lt;p&gt;At a recent lecture, Martin Herdina (CEO,  &lt;a href="http://www.wikitude.com/"&gt;Wikitude&lt;/a&gt;) showed how the mobile phone changes our lives &lt;span style="font-size: 11px;"&gt;(and he &lt;/span&gt;&lt;a style="font-size: 11px;" href="http://www.flickr.com/photos/jbandi/6347039014/in/photostream/lightbox/"&gt;displayed slides&lt;/a&gt;&lt;span style="font-size: 11px;"&gt; you don't usually see in lectures…)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Once again I realized that the iPhone was only launched in 2007. I think it is amazing how our use of technology can change in only 4 years ...&lt;/p&gt;&lt;p&gt;Another striking example underlying the perception of technical change in relation to other areas of our lives:&lt;/p&gt;&lt;p style="text-align: center;"&gt;What crosses your mind when you see the following picture?&lt;/p&gt;&lt;p&gt;&lt;img style="display: block; margin-left: auto; margin-right: auto;" src="http://lh4.ggpht.com/-77BuNo4JXZ0/TsYAOWEQ-PI/AAAAAAAABFU/vFpEGwWmnMQ/ELT200709112316547187881.JPG?imgmax=800" border="0" alt="ELT200709112316547187881" width="200" /&gt;&lt;/p&gt;&lt;p style="text-align: center;"&gt;&lt;em&gt;&lt;strong&gt;Old-school, clumsy, clunky, retro&lt;/strong&gt;&lt;/em&gt; …&lt;/p&gt;&lt;p style="text-align: center;"&gt;...at least that are impressions that pop up in my head…&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p style="text-align: center;"&gt;Now, what crosses your mind when you see the following picture:&lt;/p&gt;&lt;p style="text-align: center;"&gt;&lt;img style="display: block; margin-left: auto; margin-right: auto;" src="http://lh4.ggpht.com/-JxVQiLoMpTI/TsYAMkcLaOI/AAAAAAAABFI/Un-ZXPQ9JN4/matrix_wallpaper5.jpg?imgmax=800" border="0" alt="Matrix wallpaper5" width="400" /&gt; &lt;br /&gt;
&lt;strong&gt;&lt;em&gt; Cool, highlight, milestone in movie history, top-10-movies of all times, re-defining science fiction movies …&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style="text-align: center;"&gt;...again that are my personal associations.&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p style="text-align: center;"&gt;But you remember that the &lt;a href="http://en.wikipedia.org/wiki/Nokia_7110"&gt;Nokia 7110 phone&lt;/a&gt; in the above picture was actually &lt;strong&gt;designed after being inspired by the Matrix movie&lt;/strong&gt;:&lt;/p&gt;&lt;p&gt;&lt;img style="display: block; margin-left: auto; margin-right: auto;" src="http://lh5.ggpht.com/-7imwjZ4YKuY/TsYANjDMFQI/AAAAAAAABFM/3hHZWzoC9wo/matrix_nokia1.jpg?imgmax=800" border="0" alt="Matrix nokia1" width="320" /&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;I think it is remarkable how time is not having the same effect on movies as on technology. The Matrix definitely aged better than the Nokia phone.&lt;/p&gt;&lt;p&gt;In context: &lt;a href="http://www.youtube.com/watch?v=cL9Wu2kWwSY"&gt;Great video about living in exponential times.&lt;/a&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;div style="clear: right; font-size: 10px;"&gt;&lt;a href="http://twitter.com/jbandi"&gt;&lt;img style="margin: 0px; border: 0px none initial;" src="http://www.google.com/s2/favicons?domain=twitter.com" border="0" alt="http://www.google.com/s2/favicons?domain=twitter.com" height="13px" align="left" /&gt;If you like this, follow me on twitter ...&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5763764290649132593-5987415928190520003?l=blog.jonasbandi.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/E7SqmyIkDGqeultJHlnnPxa7OX0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/E7SqmyIkDGqeultJHlnnPxa7OX0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/E7SqmyIkDGqeultJHlnnPxa7OX0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/E7SqmyIkDGqeultJHlnnPxa7OX0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=AJDZqsV29tw:9kZgimg8uoc:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=AJDZqsV29tw:9kZgimg8uoc:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=AJDZqsV29tw:9kZgimg8uoc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=AJDZqsV29tw:9kZgimg8uoc:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=AJDZqsV29tw:9kZgimg8uoc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=AJDZqsV29tw:9kZgimg8uoc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=AJDZqsV29tw:9kZgimg8uoc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=AJDZqsV29tw:9kZgimg8uoc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=AJDZqsV29tw:9kZgimg8uoc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=AJDZqsV29tw:9kZgimg8uoc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=AJDZqsV29tw:9kZgimg8uoc:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=AJDZqsV29tw:9kZgimg8uoc:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=AJDZqsV29tw:9kZgimg8uoc:Y59mnZtVT5U"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/AJDZqsV29tw" height="1" width="1"/&gt;</description>
      <pubDate>Fri, 18 Nov 2011 07:50:00 +0100</pubDate>
      <link rel="replies" type="application/atom+xml" title="Post Comments" href="http://blog.jonasbandi.net/feeds/5987415928190520003/comments/default" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="replies" type="text/html" title="0 Comments" href="http://www.blogger.com/comment.g?blogID=5763764290649132593&amp;postID=5987415928190520003" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/5987415928190520003?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/5987415928190520003?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <updated xmlns="http://www.w3.org/2005/Atom">2011-11-21T15:01:33+01:00</updated>
      <content type="html" xmlns="http://www.w3.org/2005/Atom">
&lt;p&gt;Lately I seem more &lt;a href="http://blog.jonasbandi.net/2011/09/back-at-university-things-have-changed.html"&gt;
susceptible to realize&lt;/a&gt; how fast the world is changing. Probably I am getting old...&lt;/p&gt;
&lt;p&gt;At a recent lecture,&amp;nbsp;Martin Herdina (CEO, &lt;a href="http://www.wikitude.com/"&gt;Wikitude&lt;/a&gt;) showed how the mobile phone changes our lives
&lt;span style="font-size:11px"&gt;(and he &lt;/span&gt;&lt;a href="http://www.flickr.com/photos/jbandi/6347039014/in/photostream/lightbox/" style="font-size:11px"&gt;displayed slides&lt;/a&gt;&lt;span style="font-size:11px"&gt; you don't usually see in lectures…)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Once again I realized that the iPhone was only launched in 2007. I think it is amazing how our use of technology can change in only 4 years ...&lt;/p&gt;
&lt;p&gt;Another striking example underlying the perception of technical change in relation to other areas of our lives:&lt;/p&gt;
&lt;p style="text-align:center"&gt;What crosses your mind when you see the following picture?&lt;/p&gt;
&lt;p&gt;&lt;img src="http://lh4.ggpht.com/-77BuNo4JXZ0/TsYAOWEQ-PI/AAAAAAAABFU/vFpEGwWmnMQ/ELT200709112316547187881.JPG?imgmax=800" border="0" alt="ELT200709112316547187881" width="200" style="display:block; margin-left:auto; margin-right:auto"&gt;&lt;/p&gt;
&lt;p style="text-align:center"&gt;&lt;em&gt;&lt;strong&gt;Old-school, clumsy, clunky, retro&lt;/strong&gt;&lt;/em&gt; …&lt;/p&gt;
&lt;p style="text-align:center"&gt;...at least that are impressions that pop up in my head…&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="text-align:center"&gt;Now, what crosses your mind when you see the following picture:&lt;/p&gt;
&lt;p style="text-align:center"&gt;&lt;img src="http://lh4.ggpht.com/-JxVQiLoMpTI/TsYAMkcLaOI/AAAAAAAABFI/Un-ZXPQ9JN4/matrix_wallpaper5.jpg?imgmax=800" border="0" alt="Matrix wallpaper5" width="400" style="display:block; margin-left:auto; margin-right:auto"&gt;
&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Cool, highlight, milestone in movie history, top-10-movies of all times, re-defining science fiction movies …&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p style="text-align:center"&gt;...again that are my personal associations.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="text-align:center"&gt;But you remember that the &lt;a href="http://en.wikipedia.org/wiki/Nokia_7110"&gt;
Nokia 7110 phone&lt;/a&gt; in the above picture was actually &lt;strong&gt;designed after being inspired by the Matrix movie&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://lh5.ggpht.com/-7imwjZ4YKuY/TsYANjDMFQI/AAAAAAAABFM/3hHZWzoC9wo/matrix_nokia1.jpg?imgmax=800" border="0" alt="Matrix nokia1" width="320" style="display:block; margin-left:auto; margin-right:auto"&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I think it is remarkable how time is not having the same effect on movies as on technology. The Matrix definitely aged better than the Nokia phone.&lt;/p&gt;
&lt;p&gt;In context: &lt;a href="http://www.youtube.com/watch?v=cL9Wu2kWwSY"&gt;Great video about living in exponential times.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="clear:right; font-size:10px"&gt;&lt;a href="http://twitter.com/jbandi"&gt;&lt;img src="http://www.google.com/s2/favicons?domain=twitter.com" border="0" alt="http://www.google.com/s2/favicons?domain=twitter.com" height="13px" align="left" style="margin:0px; border:0px none initial"&gt;If
 you like this, follow me on twitter ...&lt;/a&gt;&lt;/div&gt;
&lt;div class="x_blogger-post-footer"&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/5763764290649132593-5987415928190520003?l=blog.jonasbandi.net" alt=""&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/E7SqmyIkDGqeultJHlnnPxa7OX0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/E7SqmyIkDGqeultJHlnnPxa7OX0/0/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/E7SqmyIkDGqeultJHlnnPxa7OX0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/E7SqmyIkDGqeultJHlnnPxa7OX0/1/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="x_feedflare"&gt;&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=AJDZqsV29tw:9kZgimg8uoc:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=AJDZqsV29tw:9kZgimg8uoc:4cEx4HpKnUU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=AJDZqsV29tw:9kZgimg8uoc:yIl2AUoC8zA"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=AJDZqsV29tw:9kZgimg8uoc:I9og5sOYxJI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=AJDZqsV29tw:9kZgimg8uoc:F7zBnMyn0Lo"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=AJDZqsV29tw:9kZgimg8uoc:F7zBnMyn0Lo" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=AJDZqsV29tw:9kZgimg8uoc:V_sGLiPBpWU"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=AJDZqsV29tw:9kZgimg8uoc:V_sGLiPBpWU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=AJDZqsV29tw:9kZgimg8uoc:gIN9vFwOqvQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=AJDZqsV29tw:9kZgimg8uoc:gIN9vFwOqvQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=AJDZqsV29tw:9kZgimg8uoc:cGdyc7Q-1BI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=AJDZqsV29tw:9kZgimg8uoc:G79ilh31hkQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=AJDZqsV29tw:9kZgimg8uoc:Y59mnZtVT5U"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/AJDZqsV29tw" height="1" width="1"&gt;</content>
      <app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-21T15:01:33.659+01:00</app:edited>
      <media:thumbnail url="http://lh4.ggpht.com/-77BuNo4JXZ0/TsYAOWEQ-PI/AAAAAAAABFU/vFpEGwWmnMQ/s72-c/ELT200709112316547187881.JPG?imgmax=800" height="72" width="72" xmlns:media="http://search.yahoo.com/mrss/"></media:thumbnail>
      <thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total>
      <feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blog.jonasbandi.net/2011/11/watch-out-world-is-changing.html</feedburner:origLink>
    </item>
    <item>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5538993289220486569.post-1566301523905762984</guid>
      <link>http://wernerkrippendorf.blogspot.com/2011/11/crosspost-ready-to-rhok.html</link>
      <author>noreply@blogger.com</author>
      <title>Crosspost - Ready to RHoK</title>
      <description>Crosspost - Ready to RHoK / rhokch.blogspot.com &lt;br /&gt;&lt;a href="" name="2377367297702172905"&gt;&lt;/a&gt; &lt;br /&gt;&lt;h3 class="post-title entry-title"&gt; &lt;a href="http://rhokch.blogspot.com/2011/11/ready-to-rhok.html"&gt;Ready to RHoK?&lt;/a&gt; &lt;/h3&gt;&lt;div class="post-header"&gt;  &lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;What is Random Hacks of Kindness  - RHoK&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="p1"&gt;RHoK is a global community which has a mission to make  the world a better place by developing innovative and open technical  solutions to real and practical local and global problems. We do that by  bringing together organizations and individuals that are dealing with  social and humanitarian problems as their everyday jobs and from the  other side experts in technology field whose daily job is to solve  problems.&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;On December 3rd and 4th, the whole worldwide RHoK  community is gathering on the locations around the world. One of these  locations is Zürich HUB space where Swiss RHoK stars are going to meet  to hack the problems away and compete to build the best RHoK solution.&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Get involved!&lt;/span&gt;&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;Because we need you to help us in solving growing  number of interesting problems which humanity and our local environment  is facing every day. There is no better way to use your RHoK star  skills. During the RHoK weekend you'll meet different people that share  same passion to make the world better and a lot of knowledge in  different fields. We encourage innovation, creativity and exploration  and try to have as much fun while learning from each other.&lt;br /&gt;&lt;br /&gt;Visit our event page and register for participation through EventBrite form:&amp;nbsp;&lt;a href="http://www.rhok.org/event/zurich-switzerland"&gt;http://www.rhok.org/event/zurich-switzerland&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;We will provide space, power, food, refreshments, lot of positive energy  and challenging problems. You should bring your equipment, expertise,  positive spirit and big smile to RHoK the weekend.&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Are you a problem owner?&lt;/span&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;Crucial part of our success is providing solutions for the practical  problems. Beside organizing technical community we want to get in  contact with organizations and individuals that are working with social  and humanitarian issues as their everyday job. If you or your  organization needs a team to solve a hard problem, we invite you to join  us for the weekend and work with the teams on defining the problems and  steering solutions to the best possible effect in real world  application.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Contact us and we will work with you so you can prepare your problem definition for the RHoK weekend.&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;RHoK Switzerland:&amp;nbsp;&lt;a href="mailto:rhokch@gmail.com"&gt;rhokch@gmail.com&lt;/a&gt;&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Projects we are working on.&lt;/span&gt;&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;Some of the projects we started working on during the last RHoK event in Basel&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;b&gt;Hazard maps for field use&lt;/b&gt; - &lt;a href="http://www.rhok.org/solutions/hazards-map-field-use"&gt;http://www.rhok.org/solutions/hazards-map-field-use&lt;/a&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;b&gt;Mobilization of Disaster Response Teams in Adhoc Crisis Situations&amp;nbsp;&lt;/b&gt; - &lt;a href="http://www.rhok.org/solutions/mobilization-disaster-response-teams-adhoc-crisis-situations-0"&gt;http://www.rhok.org/solutions/mobilization-disaster-response-teams-adhoc-crisis-situations-0&lt;/a&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;b&gt;Upload tool for person finder&lt;/b&gt; - &lt;a href="http://www.rhok.org/problems/upload-tool-person-finder"&gt;http://www.rhok.org/problems/upload-tool-person-finder&lt;/a&gt;&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;Join some of the problems by contacting problem  owners or check the list of the problems which our community is trying  to solve on &lt;a href="http://www.rhok.org/problems"&gt;www.rhok.org/problems&lt;/a&gt;. We are sure you will find some real food for your brain there :)&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;How to RHoK?&lt;/span&gt;&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;Register for the event&amp;nbsp;through the EventBrite:&amp;nbsp;&lt;a href="http://www.rhok.org/event/zurich-switzerland"&gt;http://www.rhok.org/event/zurich-switzerland&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;Go through the introductory slides: &lt;a href="http://www.slideshare.net/ivan.jovanovic/rhok-introduction-slides"&gt;http://www.slideshare.net/ivan.jovanovic/rhok-introduction-slides&lt;/a&gt;&lt;/div&gt;&lt;div class="p1"&gt;Tell us more about yourself: &lt;a href="https://docs.google.com/spreadsheet/viewform?hl=en_US&amp;amp;formkey=dDVPT0N2bFBsSUtkSGZSRElBa1hDOEE6MQ#gid=0"&gt;https://docs.google.com/spreadsheet/viewform?hl=en_US&amp;amp;formkey=dDVPT0N2bFBsSUtkSGZSRElBa1hDOEE6MQ#gid=0&lt;/a&gt;&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Where/When is RHoK Zürich going to happen&lt;/span&gt;&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;December 3rd and 4th, 2011.&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;The Hub Zürich&lt;/div&gt;&lt;div class="p1"&gt;Viaduktstrasse 93-95&lt;/div&gt;&lt;div class="p1"&gt;CH-8005 Zurich&lt;/div&gt;&lt;div class="p1"&gt;Switzerland&lt;/div&gt;&lt;div class="p1"&gt;Map: &lt;a href="http://goo.gl/cJQtN"&gt;http://goo.gl/cJQtN&lt;/a&gt;&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;What is the event agenda&lt;/span&gt;&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;b&gt;Saturday:&lt;/b&gt;&lt;/div&gt;&lt;div class="p1"&gt;&amp;nbsp;9:30 event opening, introduction to problems of particular interest and forming teams&lt;/div&gt;&lt;div class="p1"&gt;&amp;nbsp;13:00 lunch&lt;/div&gt;&lt;div class="p1"&gt;&amp;nbsp;18:30 dinner&lt;/div&gt;&lt;div class="p1"&gt;&amp;nbsp;21:30 closing the first day, starting informal social part&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;b&gt;Sunday:&lt;/b&gt;&lt;/div&gt;&lt;div class="p1"&gt;&amp;nbsp;9: 30 starting the day&lt;/div&gt;&lt;div class="p1"&gt;&amp;nbsp;13:00 lunch break&lt;/div&gt;&lt;div class="p1"&gt;&amp;nbsp;16:00 team presentations, voting, promoting winners&lt;/div&gt;&lt;div class="p1"&gt;&amp;nbsp;17:00 closing the event&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Learn more about Random Hacks of Kindness&lt;/span&gt;&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;Official website: &lt;a href="http://www.rhok.org/"&gt;www.rhok.org&lt;/a&gt;&lt;/div&gt;&lt;div class="p1"&gt;RHoK comes to Zurich - &lt;a href="http://ivanjovanovic.com/2011/10/12/random-hacks-of-kindess-come-to-zurich/"&gt;http://ivanjovanovic.com/2011/10/12/random-hacks-of-kindess-come-to-zurich/&lt;/a&gt;&lt;/div&gt;&lt;div class="p1"&gt;RHoK Basel blog post - http://ivanjovanovic.com/2011/06/06/random-hacks-of-kindness-building-better-world-commit-by-commit/&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5538993289220486569-1566301523905762984?l=wernerkrippendorf.blogspot.com' alt='' /&gt;&lt;/div&gt;</description>
      <pubDate>Wed, 16 Nov 2011 09:34:00 +0100</pubDate>
      <link rel="replies" type="application/atom+xml" title="Kommentare zum Post" href="http://wernerkrippendorf.blogspot.com/feeds/1566301523905762984/comments/default" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="replies" type="text/html" title="0 Kommentare" href="http://wernerkrippendorf.blogspot.com/2011/11/crosspost-ready-to-rhok.html#comment-form" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5538993289220486569/posts/default/1566301523905762984" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5538993289220486569/posts/default/1566301523905762984" xmlns="http://www.w3.org/2005/Atom" />
      <updated xmlns="http://www.w3.org/2005/Atom">2011-11-16T09:34:37+01:00</updated>
      <content type="html" xmlns="http://www.w3.org/2005/Atom">Crosspost - Ready to RHoK / rhokch.blogspot.com &lt;br&gt;
&lt;a href="" name="x_2377367297702172905"&gt;&lt;/a&gt;&lt;br&gt;
&lt;h3 class="x_post-title x_entry-title"&gt;&lt;a href="http://rhokch.blogspot.com/2011/11/ready-to-rhok.html"&gt;Ready to RHoK?&lt;/a&gt;
&lt;/h3&gt;
&lt;div class="x_post-header"&gt;&lt;/div&gt;
&lt;span class="x_Apple-style-span" style="font-size:medium"&gt;What is Random Hacks of Kindness - RHoK&lt;/span&gt;&lt;br&gt;
&lt;br&gt;
&lt;div class="x_p1"&gt;RHoK is a global community which has a mission to make the world a better place by developing innovative and open technical solutions to real and practical local and global problems. We do that by bringing together organizations and individuals
 that are dealing with social and humanitarian problems as their everyday jobs and from the other side experts in technology field whose daily job is to solve problems.&lt;/div&gt;
&lt;div class="x_p2"&gt;&lt;br&gt;
&lt;/div&gt;
&lt;div class="x_p1"&gt;On December 3rd and 4th, the whole worldwide RHoK community is gathering on the locations around the world. One of these locations is Zürich HUB space where Swiss RHoK stars are going to meet to hack the problems away and compete to build
 the best RHoK solution.&lt;/div&gt;
&lt;div class="x_p2"&gt;&lt;br&gt;
&lt;/div&gt;
&lt;div class="x_p1"&gt;&lt;span class="x_Apple-style-span" style="font-size:medium"&gt;Get involved!&lt;/span&gt;&lt;/div&gt;
&lt;div class="x_p2"&gt;&lt;br&gt;
&lt;/div&gt;
&lt;div class="x_p1"&gt;Because we need you to help us in solving growing number of interesting problems which humanity and our local environment is facing every day. There is no better way to use your RHoK star skills. During the RHoK weekend you'll meet different
 people that share same passion to make the world better and a lot of knowledge in different fields. We encourage innovation, creativity and exploration and try to have as much fun while learning from each other.&lt;br&gt;
&lt;br&gt;
Visit our event page and register for participation through EventBrite form:&amp;nbsp;&lt;a href="http://www.rhok.org/event/zurich-switzerland"&gt;http://www.rhok.org/event/zurich-switzerland&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
We will provide space, power, food, refreshments, lot of positive energy and challenging problems. You should bring your equipment, expertise, positive spirit and big smile to RHoK the weekend.&lt;/div&gt;
&lt;div class="x_p2"&gt;&lt;br&gt;
&lt;/div&gt;
&lt;div class="x_p1"&gt;&lt;span class="x_Apple-style-span" style="font-size:medium"&gt;Are you a problem owner?&lt;/span&gt;&lt;/div&gt;
&lt;div class="x_p1"&gt;&lt;br&gt;
Crucial part of our success is providing solutions for the practical problems. Beside organizing technical community we want to get in contact with organizations and individuals that are working with social and humanitarian issues as their everyday job. If
 you or your organization needs a team to solve a hard problem, we invite you to join us for the weekend and work with the teams on defining the problems and steering solutions to the best possible effect in real world application.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Contact us and we will work with you so you can prepare your problem definition for the RHoK weekend.&amp;nbsp;&lt;/b&gt;&lt;br&gt;
&lt;br&gt;
RHoK Switzerland:&amp;nbsp;&lt;a href="mailto:rhokch@gmail.com"&gt;rhokch@gmail.com&lt;/a&gt;&lt;/div&gt;
&lt;div class="x_p2"&gt;&lt;br&gt;
&lt;/div&gt;
&lt;div class="x_p1"&gt;&lt;span class="x_Apple-style-span" style="font-size:medium"&gt;Projects we are working on.&lt;/span&gt;&lt;/div&gt;
&lt;div class="x_p2"&gt;&lt;br&gt;
&lt;/div&gt;
&lt;div class="x_p1"&gt;Some of the projects we started working on during the last RHoK event in Basel&lt;/div&gt;
&lt;div class="x_p2"&gt;&lt;br&gt;
&lt;/div&gt;
&lt;div class="x_p1"&gt;&lt;b&gt;Hazard maps for field use&lt;/b&gt; - &lt;a href="http://www.rhok.org/solutions/hazards-map-field-use"&gt;
http://www.rhok.org/solutions/hazards-map-field-use&lt;/a&gt;&lt;/div&gt;
&lt;div class="x_p1"&gt;&lt;b&gt;Mobilization of Disaster Response Teams in Adhoc Crisis Situations&amp;nbsp;&lt;/b&gt; -
&lt;a href="http://www.rhok.org/solutions/mobilization-disaster-response-teams-adhoc-crisis-situations-0"&gt;
http://www.rhok.org/solutions/mobilization-disaster-response-teams-adhoc-crisis-situations-0&lt;/a&gt;&lt;/div&gt;
&lt;div class="x_p1"&gt;&lt;b&gt;Upload tool for person finder&lt;/b&gt; - &lt;a href="http://www.rhok.org/problems/upload-tool-person-finder"&gt;
http://www.rhok.org/problems/upload-tool-person-finder&lt;/a&gt;&lt;/div&gt;
&lt;div class="x_p2"&gt;&lt;br&gt;
&lt;/div&gt;
&lt;div class="x_p1"&gt;Join some of the problems by contacting problem owners or check the list of the problems which our community is trying to solve on
&lt;a href="http://www.rhok.org/problems"&gt;www.rhok.org/problems&lt;/a&gt;. We are sure you will find some real food for your brain there :)&lt;/div&gt;
&lt;div class="x_p2"&gt;&lt;br&gt;
&lt;/div&gt;
&lt;div class="x_p1"&gt;&lt;span class="x_Apple-style-span" style="font-size:medium"&gt;How to RHoK?&lt;/span&gt;&lt;/div&gt;
&lt;div class="x_p2"&gt;&lt;br&gt;
Register for the event&amp;nbsp;through the EventBrite:&amp;nbsp;&lt;a href="http://www.rhok.org/event/zurich-switzerland"&gt;http://www.rhok.org/event/zurich-switzerland&lt;/a&gt;&lt;br&gt;
&lt;/div&gt;
&lt;div class="x_p1"&gt;Go through the introductory slides: &lt;a href="http://www.slideshare.net/ivan.jovanovic/rhok-introduction-slides"&gt;
http://www.slideshare.net/ivan.jovanovic/rhok-introduction-slides&lt;/a&gt;&lt;/div&gt;
&lt;div class="x_p1"&gt;Tell us more about yourself: &lt;a href="https://docs.google.com/spreadsheet/viewform?hl=en_US&amp;amp;formkey=dDVPT0N2bFBsSUtkSGZSRElBa1hDOEE6MQ#gid=0"&gt;
https://docs.google.com/spreadsheet/viewform?hl=en_US&amp;amp;formkey=dDVPT0N2bFBsSUtkSGZSRElBa1hDOEE6MQ#gid=0&lt;/a&gt;&lt;/div&gt;
&lt;div class="x_p2"&gt;&lt;br&gt;
&lt;/div&gt;
&lt;div class="x_p1"&gt;&lt;span class="x_Apple-style-span" style="font-size:medium"&gt;Where/When is RHoK Zürich going to happen&lt;/span&gt;&lt;/div&gt;
&lt;div class="x_p2"&gt;&lt;br&gt;
&lt;/div&gt;
&lt;div class="x_p1"&gt;December 3rd and 4th, 2011.&lt;/div&gt;
&lt;div class="x_p2"&gt;&lt;br&gt;
&lt;/div&gt;
&lt;div class="x_p1"&gt;The Hub Zürich&lt;/div&gt;
&lt;div class="x_p1"&gt;Viaduktstrasse 93-95&lt;/div&gt;
&lt;div class="x_p1"&gt;CH-8005 Zurich&lt;/div&gt;
&lt;div class="x_p1"&gt;Switzerland&lt;/div&gt;
&lt;div class="x_p1"&gt;Map: &lt;a href="http://goo.gl/cJQtN"&gt;http://goo.gl/cJQtN&lt;/a&gt;&lt;/div&gt;
&lt;div class="x_p2"&gt;&lt;br&gt;
&lt;/div&gt;
&lt;div class="x_p1"&gt;&lt;span class="x_Apple-style-span" style="font-size:medium"&gt;What is the event agenda&lt;/span&gt;&lt;/div&gt;
&lt;div class="x_p2"&gt;&lt;br&gt;
&lt;/div&gt;
&lt;div class="x_p1"&gt;&lt;b&gt;Saturday:&lt;/b&gt;&lt;/div&gt;
&lt;div class="x_p1"&gt;&amp;nbsp;9:30 event opening, introduction to problems of particular interest and forming teams&lt;/div&gt;
&lt;div class="x_p1"&gt;&amp;nbsp;13:00 lunch&lt;/div&gt;
&lt;div class="x_p1"&gt;&amp;nbsp;18:30 dinner&lt;/div&gt;
&lt;div class="x_p1"&gt;&amp;nbsp;21:30 closing the first day, starting informal social part&lt;/div&gt;
&lt;div class="x_p2"&gt;&lt;br&gt;
&lt;/div&gt;
&lt;div class="x_p1"&gt;&lt;b&gt;Sunday:&lt;/b&gt;&lt;/div&gt;
&lt;div class="x_p1"&gt;&amp;nbsp;9: 30 starting the day&lt;/div&gt;
&lt;div class="x_p1"&gt;&amp;nbsp;13:00 lunch break&lt;/div&gt;
&lt;div class="x_p1"&gt;&amp;nbsp;16:00 team presentations, voting, promoting winners&lt;/div&gt;
&lt;div class="x_p1"&gt;&amp;nbsp;17:00 closing the event&lt;br&gt;
&lt;span class="x_Apple-style-span" style="font-size:medium"&gt;&lt;br&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div class="x_p2"&gt;&lt;br&gt;
&lt;/div&gt;
&lt;div class="x_p1"&gt;&lt;span class="x_Apple-style-span" style="font-size:medium"&gt;Learn more about Random Hacks of Kindness&lt;/span&gt;&lt;/div&gt;
&lt;div class="x_p2"&gt;&lt;br&gt;
&lt;/div&gt;
&lt;div class="x_p1"&gt;Official website: &lt;a href="http://www.rhok.org/"&gt;www.rhok.org&lt;/a&gt;&lt;/div&gt;
&lt;div class="x_p1"&gt;RHoK comes to Zurich - &lt;a href="http://ivanjovanovic.com/2011/10/12/random-hacks-of-kindess-come-to-zurich/"&gt;
http://ivanjovanovic.com/2011/10/12/random-hacks-of-kindess-come-to-zurich/&lt;/a&gt;&lt;/div&gt;
&lt;div class="x_p1"&gt;RHoK Basel blog post - http://ivanjovanovic.com/2011/06/06/random-hacks-of-kindness-building-better-world-commit-by-commit/&lt;/div&gt;
&lt;div class="x_blogger-post-footer"&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/5538993289220486569-1566301523905762984?l=wernerkrippendorf.blogspot.com" alt=""&gt;&lt;/div&gt;
</content>
      <thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total>
    </item>
    <item p3:etag="W/&quot;C0UFQ3o-eip7ImA9WhRRFk0.&quot;" xmlns:p3="http://schemas.google.com/g/2005">
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5763764290649132593.post-2112138042473468638</guid>
      <link>http://feedproxy.google.com/~r/closed-loop/~3/uMIWqpHeg4o/dysfunction-headhunters-short-time.html</link>
      <author>noreply@blogger.com</author>
      <category domain="http://www.blogger.com/atom/ns#">dysfunction</category>
      <category domain="http://www.blogger.com/atom/ns#">work</category>
      <title>Dysfunction: Headhunters &amp; Short Time Contracting</title>
      <description>I blogged before &lt;a href="http://blog.jonasbandi.net/2010/08/cassandra-syndrome-knowing-that-failure.html"&gt;about&lt;/a&gt; the &lt;a href="http://blog.jonasbandi.net/2010/06/craftsmanship-means-we-should-refuse-to.html"&gt;desolate state&lt;/a&gt; of &lt;a href="http://blog.jonasbandi.net/2011/02/programmers-stockholm-syndrome-don-get.html"&gt;our industry&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Here is one clear symptom underlining once more that there is something wrong:&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
Regularly when a government IT project here in &lt;b&gt;Switzerland&lt;/b&gt; has an open vacancy for some months, I am getting calls, emails and XING requests from headhunters from &lt;b&gt;Germany and the UK&lt;/b&gt; that want to mediate me for this job.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://commons.wikimedia.org/wiki/File%3AMarten_van_Valckenborch_Tower_of_babel-large.jpg" title="By Marten van Valckenborch [Public domain], via Wikimedia Commons"&gt;&lt;img align="right" alt="Marten van Valckenborch Tower of babel-large" src="http://upload.wikimedia.org/wikipedia/commons/thumb/d/d6/Marten_van_Valckenborch_Tower_of_babel-large.jpg/240px-Marten_van_Valckenborch_Tower_of_babel-large.jpg" style="margin-left: 5px;" width="200" /&gt;&lt;/a&gt;&lt;b&gt;There is so much wrong in this setup...&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
For a start, the whole setup represents the idea that constructing software is like putting bricks on top of each other to build a pyramid. You can hire some more hands and you will finish sooner, because once a brick is laid, somebody else can put the next brick on top of it. This analogy is completely wrong (and that is not an expression of the unprofessionalism of our industry)!&lt;br /&gt;
&lt;br /&gt;
On the other hand what does anybody expect when he goes through headhunters like this (I even have seen cases where several hierarchies of headhunters were involved)?&lt;br /&gt;
&lt;br /&gt;
Do develoers think they don't get jobs without them? Do employers think they do get better developers through those headhunters?&lt;br /&gt;
What added value does a headhunter provide in this case? He hardly even looks at my CV, which is online anyways, and...? The employer wants to do an interview with me anyways, and the headhunter does not provide any guarantees, does he?&lt;br /&gt;
&lt;br /&gt;
The result is that another layer of indirection is introduced that legitimates just another bureaucratic overhead. Headhunters like this are neither interested in the project nor in the developers they mediate.&lt;br /&gt;
Also (probably as a consequence) developers recruited in this manner usually are not very committed to the project. Why should they? The next recruitement is already waiting around the corner... &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;I strongly believe we should stop this headhunter/short-time contracting in IT projects.&lt;/b&gt; Hire developers for goals not time-periods. Cut the middle-men and get developers committed and responsible.&lt;br /&gt;
&lt;br /&gt;
Further reading:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://blog.jayfields.com/2011/09/recent-thoughts-on-hiring-and-being.html"&gt;Recent Thoughts On Hiring and Being Hired&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://gist.github.com/1285068"&gt;Headhunter tries to recruit DHH&lt;/a&gt; (funny comments...)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://simplificator.com/blog/2011/11/14/5-things-that-are-wrong-with-recruiters.html"&gt;5 things that are wrong with recruiters!&lt;/a&gt; (Update 2011-11-29)&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;div style="align: right; clear: right; font-size: 10px;"&gt;&lt;a href="http://twitter.com/jbandi"&gt;&lt;img align="left" alt="http://www.google.com/s2/favicons?domain=twitter.com" border="0" height="13px" src="http://www.google.com/s2/favicons?domain=twitter.com" style="border: none; margin: 0px 0px 0px 0px;" /&gt;If you like this, follow me on twitter ...&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5763764290649132593-2112138042473468638?l=blog.jonasbandi.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xOIX1xPn7maJYAswZ4slYKWtLsU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xOIX1xPn7maJYAswZ4slYKWtLsU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xOIX1xPn7maJYAswZ4slYKWtLsU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xOIX1xPn7maJYAswZ4slYKWtLsU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=uMIWqpHeg4o:L1nhdCMykFo:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=uMIWqpHeg4o:L1nhdCMykFo:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=uMIWqpHeg4o:L1nhdCMykFo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=uMIWqpHeg4o:L1nhdCMykFo:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=uMIWqpHeg4o:L1nhdCMykFo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=uMIWqpHeg4o:L1nhdCMykFo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=uMIWqpHeg4o:L1nhdCMykFo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=uMIWqpHeg4o:L1nhdCMykFo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=uMIWqpHeg4o:L1nhdCMykFo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=uMIWqpHeg4o:L1nhdCMykFo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=uMIWqpHeg4o:L1nhdCMykFo:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=uMIWqpHeg4o:L1nhdCMykFo:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=uMIWqpHeg4o:L1nhdCMykFo:Y59mnZtVT5U"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/uMIWqpHeg4o" height="1" width="1"/&gt;</description>
      <pubDate>Mon, 14 Nov 2011 21:26:00 +0100</pubDate>
      <link rel="replies" type="application/atom+xml" title="Post Comments" href="http://blog.jonasbandi.net/feeds/2112138042473468638/comments/default" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="replies" type="text/html" title="0 Comments" href="http://www.blogger.com/comment.g?blogID=5763764290649132593&amp;postID=2112138042473468638" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/2112138042473468638?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/2112138042473468638?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <updated xmlns="http://www.w3.org/2005/Atom">2011-11-29T22:13:32+01:00</updated>
      <content type="html" xmlns="http://www.w3.org/2005/Atom">I blogged before &lt;a href="http://blog.jonasbandi.net/2010/08/cassandra-syndrome-knowing-that-failure.html"&gt;
about&lt;/a&gt; the &lt;a href="http://blog.jonasbandi.net/2010/06/craftsmanship-means-we-should-refuse-to.html"&gt;
desolate state&lt;/a&gt; of &lt;a href="http://blog.jonasbandi.net/2011/02/programmers-stockholm-syndrome-don-get.html"&gt;
our industry&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
Here is one clear symptom underlining once more that there is something wrong:&lt;br&gt;
&lt;i&gt;&lt;br&gt;
Regularly when a government IT project here in &lt;b&gt;Switzerland&lt;/b&gt; has an open vacancy for some months, I am getting calls, emails and XING requests from headhunters from
&lt;b&gt;Germany and the UK&lt;/b&gt; that want to mediate me for this job.&lt;/i&gt;&lt;br&gt;
&lt;br&gt;
&lt;a href="http://commons.wikimedia.org/wiki/File%3AMarten_van_Valckenborch_Tower_of_babel-large.jpg" title="By Marten van Valckenborch [Public domain], via Wikimedia Commons"&gt;&lt;img align="right" alt="Marten van Valckenborch Tower of babel-large" src="http://upload.wikimedia.org/wikipedia/commons/thumb/d/d6/Marten_van_Valckenborch_Tower_of_babel-large.jpg/240px-Marten_van_Valckenborch_Tower_of_babel-large.jpg" width="200" style="margin-left:5px"&gt;&lt;/a&gt;&lt;b&gt;There
 is so much wrong in this setup...&lt;/b&gt;&lt;br&gt;
&lt;br&gt;
For a start, the whole setup represents the idea that constructing software is like putting bricks on top of each other to build a pyramid. You can hire some more hands and you will finish sooner, because once a brick is laid, somebody else can put the next
 brick on top of it. This analogy is completely wrong (and that is not an expression of the unprofessionalism of our industry)!&lt;br&gt;
&lt;br&gt;
On the other hand what does anybody expect when he goes through headhunters like this (I even have seen cases where several hierarchies of headhunters were involved)?&lt;br&gt;
&lt;br&gt;
Do develoers think they don't get jobs without them? Do employers think they do get better developers through those headhunters?&lt;br&gt;
What added value does a headhunter provide in this case? He hardly even looks at my CV, which is online anyways, and...? The employer wants to do an interview with me anyways, and the headhunter does not provide any guarantees, does he?&lt;br&gt;
&lt;br&gt;
The result is that another layer of indirection is introduced that legitimates just another bureaucratic overhead. Headhunters like this are neither interested in the project nor in the developers they mediate.&lt;br&gt;
Also (probably as a consequence) developers recruited in this manner usually are not very committed to the project. Why should they? The next recruitement is already waiting around the corner...
&lt;br&gt;
&lt;br&gt;
&lt;b&gt;I strongly believe we should stop this headhunter/short-time contracting in IT projects.&lt;/b&gt; Hire developers for goals not time-periods. Cut the middle-men and get developers committed and responsible.&lt;br&gt;
&lt;br&gt;
Further reading:&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://blog.jayfields.com/2011/09/recent-thoughts-on-hiring-and-being.html"&gt;Recent Thoughts On Hiring and Being Hired&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="https://gist.github.com/1285068"&gt;Headhunter tries to recruit DHH&lt;/a&gt; (funny comments...)
&lt;/li&gt;&lt;li&gt;&lt;a href="http://simplificator.com/blog/2011/11/14/5-things-that-are-wrong-with-recruiters.html"&gt;5 things that are wrong with recruiters!&lt;/a&gt; (Update 2011-11-29)
&lt;/li&gt;&lt;/ul&gt;
&lt;br&gt;
&lt;div style="clear:right; font-size:10px"&gt;&lt;a href="http://twitter.com/jbandi"&gt;&lt;img align="left" alt="http://www.google.com/s2/favicons?domain=twitter.com" border="0" height="13px" src="http://www.google.com/s2/favicons?domain=twitter.com" style="border:none; margin:0px 0px 0px 0px"&gt;If
 you like this, follow me on twitter ...&lt;/a&gt;&lt;/div&gt;
&lt;div class="x_blogger-post-footer"&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/5763764290649132593-2112138042473468638?l=blog.jonasbandi.net" alt=""&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xOIX1xPn7maJYAswZ4slYKWtLsU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xOIX1xPn7maJYAswZ4slYKWtLsU/0/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xOIX1xPn7maJYAswZ4slYKWtLsU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xOIX1xPn7maJYAswZ4slYKWtLsU/1/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="x_feedflare"&gt;&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=uMIWqpHeg4o:L1nhdCMykFo:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=uMIWqpHeg4o:L1nhdCMykFo:4cEx4HpKnUU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=uMIWqpHeg4o:L1nhdCMykFo:yIl2AUoC8zA"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=uMIWqpHeg4o:L1nhdCMykFo:I9og5sOYxJI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=uMIWqpHeg4o:L1nhdCMykFo:F7zBnMyn0Lo"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=uMIWqpHeg4o:L1nhdCMykFo:F7zBnMyn0Lo" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=uMIWqpHeg4o:L1nhdCMykFo:V_sGLiPBpWU"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=uMIWqpHeg4o:L1nhdCMykFo:V_sGLiPBpWU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=uMIWqpHeg4o:L1nhdCMykFo:gIN9vFwOqvQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=uMIWqpHeg4o:L1nhdCMykFo:gIN9vFwOqvQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=uMIWqpHeg4o:L1nhdCMykFo:cGdyc7Q-1BI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=uMIWqpHeg4o:L1nhdCMykFo:G79ilh31hkQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=uMIWqpHeg4o:L1nhdCMykFo:Y59mnZtVT5U"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/uMIWqpHeg4o" height="1" width="1"&gt;</content>
      <app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-29T22:13:32.452+01:00</app:edited>
      <thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total>
      <feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blog.jonasbandi.net/2011/11/dysfunction-headhunters-short-time.html</feedburner:origLink>
    </item>
    <item>
      <guid isPermaLink="true">http://www.affolter.net/blog-news/2011/11/14/impressumspflicht-fuer-schweizer-websites.aspx</guid>
      <link>http://www.affolter.net/blog-news/2011/11/14/impressumspflicht-fuer-schweizer-websites.aspx</link>
      <title>Impressumspflicht für Schweizer Websites</title>
      <description />
      <pubDate>Mon, 14 Nov 2011 00:00:00 Z</pubDate>
    </item>
    <item>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5538993289220486569.post-6151804761461757412</guid>
      <link>http://wernerkrippendorf.blogspot.com/2011/11/rhok-zurich.html</link>
      <author>noreply@blogger.com</author>
      <title>*** RHoK Zürich ***</title>
      <description>&lt;span class="Apple-style-span" style="color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 17px;"&gt;&lt;b&gt;#RHoK Zürich *** registration via&amp;nbsp;&lt;a href="http://t.co/6qnUUuzV" rel="nofollow" style="text-decoration: none;" target="_blank"&gt;&lt;img alt="" border="0" height="10" src="https://www.xing.com/img/n/outlink.gif" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px;" width="13" /&gt;&lt;/a&gt;&lt;a href="http://t.co/6qnUUuzV" rel="nofollow" style="text-decoration: none;" target="_blank"&gt;http://t.co/6qnUUuzV&lt;/a&gt;&amp;nbsp;is now open! Developers and SMEs: come and join hacking for humanity *** #rhokCH at The Hub ***&lt;/b&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5538993289220486569-6151804761461757412?l=wernerkrippendorf.blogspot.com' alt='' /&gt;&lt;/div&gt;</description>
      <pubDate>Tue, 08 Nov 2011 22:08:00 +0100</pubDate>
      <link rel="replies" type="application/atom+xml" title="Kommentare zum Post" href="http://wernerkrippendorf.blogspot.com/feeds/6151804761461757412/comments/default" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="replies" type="text/html" title="0 Kommentare" href="http://wernerkrippendorf.blogspot.com/2011/11/rhok-zurich.html#comment-form" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5538993289220486569/posts/default/6151804761461757412" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5538993289220486569/posts/default/6151804761461757412" xmlns="http://www.w3.org/2005/Atom" />
      <updated xmlns="http://www.w3.org/2005/Atom">2011-11-08T22:09:35+01:00</updated>
      <content type="html" xmlns="http://www.w3.org/2005/Atom">&lt;span class="x_Apple-style-span" style="color:white; font-family:Arial,Helvetica,sans-serif; font-size:12px; line-height:17px"&gt;&lt;b&gt;#RHoK Zürich *** registration via&amp;nbsp;&lt;a href="http://t.co/6qnUUuzV" rel="nofollow" target="_blank" style="text-decoration:none"&gt;&lt;img alt="" border="0" height="10" src="https://www.xing.com/img/n/outlink.gif" width="13" style="border-bottom-width:0px; border-color:initial; border-left-width:0px; border-right-width:0px; border-style:initial; border-top-width:0px"&gt;&lt;/a&gt;&lt;a href="http://t.co/6qnUUuzV" rel="nofollow" target="_blank" style="text-decoration:none"&gt;http://t.co/6qnUUuzV&lt;/a&gt;&amp;nbsp;is
 now open! Developers and SMEs: come and join hacking for humanity *** #rhokCH at The Hub ***&lt;/b&gt;&lt;/span&gt;
&lt;div class="x_blogger-post-footer"&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/5538993289220486569-6151804761461757412?l=wernerkrippendorf.blogspot.com" alt=""&gt;&lt;/div&gt;
</content>
      <thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total>
    </item>
    <item>
      <guid isPermaLink="true">http://csharp.at/Registration_CH.aspx</guid>
      <link>http://csharp.at/Registration_CH.aspx</link>
      <author>info@dnug-bern.ch</author>
      <category>.NET User Group Bern Veranstaltungshinweis</category>
      <title>SQL Server Performance Tuning and Troubleshooting Workshop</title>
      <description>
&lt;div style="background-color:#eee; padding:5px"&gt;&lt;img src="http://www.dnug-bern.ch/events/sql/Banner.jpg" alt="" style="width:500px"&gt;
&lt;p&gt;It's Friday, 05:00pm. You are just receiving an email that informs you that your SQL Server has enormous performance problems! What can you do? How can you identify the problem and resolve it fast? Which tools provides you SQL Server for this task?
&lt;/p&gt;
&lt;p&gt;In this workshop you will see a lot of different tools with which you can do effective SQL Server troubleshooting. You will learn how to identify performance bottlenecks with those tools, and how to resolve the identified bottlenecks. We will also look into
 the most prominent performance bottlenecks inside SQL Server and how you can troubleshoot those problems effectively.
&lt;/p&gt;
&lt;a href="http://csharp.at/Registration_CH.aspx"&gt;more&lt;/a&gt; &lt;/div&gt;
</description>
      <pubDate>Mon, 07 Nov 2011 08:00:00 Z</pubDate>
    </item>
    <item xml:base="http://www.dnug-bern.ch/Event2011.aspx#634557672000000000">
      <guid isPermaLink="true">http://www.dnug-bern.ch/Event2011.aspx#634557672000000000</guid>
      <link>http://www.dnug-bern.ch/Event2011.aspx#634557672000000000</link>
      <category>.NET User Group Bern Event</category>
      <title>Rich-Internet Apps &amp; Mobile Anwendungen mit HTML5, Javascript und Azure</title>
      <description>
&lt;div style="width:100%; padding:0; border-bottom:1px solid #666; display:block; margin-bottom:16px"&gt;
&lt;img src="http://www.dnug-bern.ch/images/be_silhouette.gif" alt="" style="border:0; float:left"&gt;
&lt;h1 style="margin:0; padding-top:5px; color:#666"&gt;.NET User Group Bern Event&lt;/h1&gt;
&lt;/div&gt;
&lt;br style="clear:left"&gt;
&lt;h2 id="x_20010912"&gt;Dienstag, 1. November&amp;nbsp;2011 (18:00 bis 20:00 Uhr)&lt;/h2&gt;
&lt;h3&gt;Rich-Internet Apps &amp;amp; Mobile Anwendungen mit HTML5, Javascript und Azure&amp;nbsp;mit Tim F. Fischer&lt;/h3&gt;
&lt;div&gt;&lt;span style="background-color:rgb(255,255,153)"&gt;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;
&lt;p&gt;Am Dienstag, den 1. November 2011 werden wir uns mit dem Thema Rich-Internet Apps &amp;amp; Mobile Anwendungen mit HTML5 und Javascript beschäftigen. Bevor wir aber mit diesen Vortrag beginnen, wird uns
&lt;a class="x_external" href="http://graberj.wordpress.com/author/graberj/" target="_blank"&gt;
Johnny&lt;/a&gt; die Neuerungen zu Windows 8 und WinRT&amp;nbsp;präsentieren.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Abstract:&lt;/strong&gt; &lt;br&gt;
Mit HTML5 und auch bereits HTML4 können anspruchsvolle Rich Internet Anwendungen erstellt werden, die sogar einen Windows-Look, komplexe Funktionen wie Pivot-Charts, editierbare Data-Grids und mehr mitbringen. In diesem Vortrag zeigt Tim Fischer, wie Du solche
 modernen AJAX-Anwendungen erstellen und auf Windows Azure bereitstellen kannst. Dieselben Techniken können auch für mobile Anwendungen verwendet werden und das werden wir auch tun. Zudem werden wir auch Sencha ExtJS, Sencha Touch und T4 als nützliche Begleiter
 kennenlernen. &lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Über Tim Fischer&lt;/strong&gt; &lt;br&gt;
Dipl.-Inf. Tim Fischer ist Developer Evangelist für ISV/Azure bei der Microsoft Deutschland GmbH. Tim Fischer hat langjährige Erfahrung in der Software-Entwicklung auf der Microsoft Plattform insbesondere mit COM-Technologien und .NET sowie in der modellgetriebenen
 Software-Entwicklung und Cloud-Computing. &lt;/p&gt;
&lt;p&gt;Zuvor hat er an der Entwicklung von Visual Studio 2008 als Program Manager gearbeitet und über 10 Jahre bei einem deutschen Software-Hersteller für Entwicklungswerkzeuge wertvolle Praxis-Erfahrung gesammelt.
&lt;/p&gt;
&lt;p&gt;Bitte beachte, dass für dieses Treffen eine &lt;a title="Zur Anmeldung auf XING" href="https://www.xing.com/events/rich-internet-apps-mobile-anwendungen-html5-javascript-windows-azure-821582" target="_blank"&gt;
Anmeldung&lt;/a&gt; erforderlich ist. &lt;/p&gt;
&lt;p&gt;Das Twitter-Hashtag für diese Veranstaltung: &lt;strong&gt;#dnugbejs1&lt;/strong&gt;. Die Aktivitäten können während der Veranstaltung
&lt;a href="http://www.dnug-bern.ch/TwitterWall.aspx"&gt;hier&lt;/a&gt; betrachtet werden. &lt;/p&gt;
&lt;p&gt;Wir freuen uns auf deine Teilnahme! &lt;/p&gt;
</description>
      <pubDate>Tue, 01 Nov 2011 18:00:00 +0100</pubDate>
    </item>
    <item>
      <guid isPermaLink="true">http://blog.eweibel.net/?p=1108</guid>
      <link>http://blog.eweibel.net/?p=1108</link>
      <category>Good practices</category>
      <category>Software engineering</category>
      <title>Know your warm-up</title>
      <description>I was this month in Berlin at the NHL match between the LA Kings and the Buffalo Sables. Half an hour before the game you could watch both teams doing a warm up session (see photo). They practice the techniques, moves and collaboration which they will
 use during the game. After the match I asked [...]</description>
      <pubDate>Mon, 31 Oct 2011 15:00:00 Z</pubDate>
      <comments>http://blog.eweibel.net/?p=1108#comments</comments>
      <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Patrick</dc:creator>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;&lt;a href="http://blog.eweibel.net/wp-content/uploads/Berlin-0121.jpg" rel="lightbox[1108]"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="NHL in Berlin (LA Kings vs. Buffalo Sabres)" border="0" alt="NHL in Berlin (LA Kings vs. Buffalo Sabres)" align="right" src="http://blog.eweibel.net/wp-content/uploads/Berlin-012_thumb1.jpg" width="361" height="272" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I was this month in Berlin at the NHL match between the LA Kings and the Buffalo Sables. Half an hour before the game you could watch both teams doing a warm up session (see photo). They practice the techniques, moves and collaboration which they will use during the game.&lt;/p&gt;
&lt;p&gt;After the match I asked myself, how do we do a warm up? How were we introduced into the development environment of our current employer? After how many hours or days had we have to be productive? Fortunately I realized this gap already and I developed a training kit for a duration of a month for new employees for my current employer.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The warm-up&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I recognized that the learning curve is quite steep for new employees and so it is a risk for the company to give them immediately productive tasks. Therefore I developed a training program for a duration of a month &amp;#8211; the warm-up. During this training the new employees learn the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Infrastructure of the company &lt;/li&gt;
&lt;li&gt;Frameworks and tools &lt;/li&gt;
&lt;li&gt;Responsible persons for the framework and tools &lt;/li&gt;
&lt;li&gt;Guidelines and good practices (not best practices)&lt;/li&gt;
&lt;li&gt;Realize software with the frameworks and tools based on uniformed requirements &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Before the main part of the training starts there a two days of school where I teach them in traditional manner the architecture, the framework and the workflow component.&lt;/p&gt;
&lt;p&gt;The main part is the development of a little insurance application with the same tools, frameworks and libraries which the new employee has to use also in the production environment. For this little application I developed the requirements and also a guideline for the responsible person to teach the new employee. I also implemented the application as a reference solution.&lt;/p&gt;
&lt;p&gt;The insurance application itself is designed that the first tasks are easier than the last ones. This way gives the new employee constantly success experiences and he will be motivated to go on and have fun with the whole development environment.&lt;/p&gt;
&lt;p&gt;And yes, having fun is important to be motivated. Working doesn&amp;#8217;t mean that it isn&amp;#8217;t allowed to have fun.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Teaching and documentation aren’t enough&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;There are several slides for the two school days and there are two papers for the school-application as well. Even for the whole framework exist a lot of paper. But this stuff is more or less useless if the new employee hasn&amp;#8217;t anybody who is there for him or her. As in agile practices, feedback is the most important thing. Only the contact person, who is responsible for the education, can give the exact feedback which the new employee need. This because the responsible person knows where the new employee currently stays and what the context is.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We had already several new employees which did the warm-up successfully. The feedback of the new employees was also very positive because they could learn the whole development environment in a protected manner and try out things without any risk.&lt;/p&gt;
&lt;p&gt;&lt;a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.eweibel.net%2F%3Fp%3D1108&amp;amp;title=Know%20your%20warm-up" id="wpa2a_20"&gt;&lt;img src="http://blog.eweibel.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Related posts:&lt;ol&gt;
&lt;li&gt;&lt;a href='http://blog.eweibel.net/?p=1117' rel='bookmark' title='Speaking at the .NET Usergroup Zentralschweiz'&gt;Speaking at the .NET Usergroup Zentralschweiz&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/p&gt;</content:encoded>
      <wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blog.eweibel.net/?feed=rss2&amp;p=1108</wfw:commentRss>
      <slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">3</slash:comments>
    </item>
    <item>
      <guid isPermaLink="false">http://schaedlerdaniel.wordpress.com/?p=478</guid>
      <link>http://schaedlerdaniel.wordpress.com/2011/10/27/heirate-mich-asp-net-und-jquery-accordion/</link>
      <category>ASP.NET /AJAX /ASP.NET MVC</category>
      <category>JavaScript / HTML /CSS /XML</category>
      <title>Heirate mich (ASP.NET und JQuery Accordion)</title>
      <description>Was ganz nützlich für die Darstellung von Daten ist, ist das Accordion, welches ja auch bereits im AjaxControlToolkit vorkommt. Nun die meisten werden das Ganze sicherlich rein nativ client-seitig mit JQuery und der Herumschlagerei von Div-Elementen verwendet
 haben. Meine Überlegung war es, in Abhängigkeit zu einer Quelle (IEnumerable) die Accordion-Items generieren zu lassen. Wie bin [...]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=schaedlerdaniel.wordpress.com&amp;amp;blog=16378069&amp;amp;post=478&amp;amp;subd=schaedlerdaniel&amp;amp;ref=&amp;amp;feed=1" width="1" height="1"&gt;</description>
      <pubDate>Thu, 27 Oct 2011 08:18:29 Z</pubDate>
      <comments>http://schaedlerdaniel.wordpress.com/2011/10/27/heirate-mich-asp-net-und-jquery-accordion/#comments</comments>
      <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">schaedlerdaniel</dc:creator>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;Was ganz nützlich für die Darstellung von Daten ist, ist das Accordion, welches ja auch bereits im AjaxControlToolkit vorkommt.&lt;/p&gt;
&lt;p&gt;Nun die meisten werden das Ganze sicherlich rein nativ client-seitig mit JQuery und der Herumschlagerei von Div-Elementen verwendet haben.&lt;/p&gt;
&lt;p&gt;Meine Überlegung war es, in Abhängigkeit zu einer Quelle (IEnumerable) die Accordion-Items generieren zu lassen.&lt;/p&gt;
&lt;h3&gt;Wie bin ich vorgegangen?&lt;/h3&gt;
&lt;p&gt;Als erstes habe ich mir das Markup eines Demo-Accordions auf der Webseite von JQuery angesehen.&lt;/p&gt;
&lt;p&gt;Da es im .NET die Klasse &lt;a href="http://msdn.microsoft.com/en-us/library/system.web.ui.htmlcontrols.htmlgenericcontrol.aspx"&gt;HtmlGeneric&lt;/a&gt; gibt kann man mit dieser mit ein wenig Geschick viel anstellen&lt;/p&gt;
&lt;p&gt;Also wir brauchen folgendes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Eine ASP.Seite mit einem Div-Element dass den Container für das Accordion darstellt&lt;/li&gt;
&lt;li&gt;Als nächstes brauchen wir eine Klasse, die uns den Accordion Markup generiert&lt;/li&gt;
&lt;li&gt;Und last but not least ein Model Element (Klassenelement aus unserem Modell&lt;/li&gt;
&lt;h4 style="color:black;"&gt;1. Erstellen der ASPX Seite &lt;/h4&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Der nachfolgende Markup-Code ist keine Magie und ziemlich schlank&lt;/p&gt;
&lt;p&gt;&lt;pre class="brush: xml;"&gt;
&amp;lt;%@ Page Title=&amp;quot;&amp;quot; Language=&amp;quot;C#&amp;quot; MasterPageFile=&amp;quot;~/Site.Master&amp;quot; AutoEventWireup=&amp;quot;true&amp;quot; CodeBehind=&amp;quot;Index.aspx.cs&amp;quot; Inherits=&amp;quot;AspNetWebFromJQueryUI.Index&amp;quot; %&amp;gt;
&amp;lt;asp:Content ID=&amp;quot;Content1&amp;quot; ContentPlaceHolderID=&amp;quot;HeadContent&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;
&amp;lt;link type=&amp;quot;text/css&amp;quot; href=&amp;quot;Content/themes/base/jquery.ui.all.css&amp;quot; rel=&amp;quot;Stylesheet&amp;quot; /&amp;gt;	
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;/Scripts/jquery-1.6.4.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;/Scripts/jquery-ui-1.8.16.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/asp:Content&amp;gt;
&amp;lt;asp:Content ID=&amp;quot;Content2&amp;quot; ContentPlaceHolderID=&amp;quot;MainContent&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;
&amp;lt;script&amp;gt;
    $(function () {
        $(&amp;quot;#Accordion&amp;quot;).accordion();
    });
	&amp;lt;/script&amp;gt;
&amp;lt;div id=&amp;quot;ResultDiv&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;
&amp;lt;/div&amp;gt;

&amp;lt;/asp:Content&amp;gt;
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Einzig das Referenzieren von JQuery und JQueryUI sollte beachtet werden. Hierzu findet man auf JQueryUI die entsprechende Anleitung im &lt;a href="http://jqueryui.com/docs/Getting_Started"&gt;Get started&lt;/a&gt; Teil.&lt;/p&gt;
&lt;h4 style="color:black;"&gt;2. Den Helper für das Accordion &lt;/h4&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Nun kommen wir zum Helper für die Erstellung des Markups für das Accordion, der wie folgt aufgebaut ist: &lt;/p&gt;
&lt;p&gt;&lt;pre class="brush: csharp;"&gt;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Web.UI;
using System.Web.UI.HtmlControls;

namespace AspNetWebFromJQueryUI.Controls
{
    /// &amp;lt;summary&amp;gt;
    /// Responsible for creating an accordion base
    /// for using it with JQueryUI
    /// &amp;lt;/summary&amp;gt;
    public static class AccordionHelper
    {
        /// &amp;lt;summary&amp;gt;
        /// Returns the complete HTML code for the accordion.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;typeparam name=&amp;quot;T&amp;quot;&amp;gt;The model type.&amp;lt;/typeparam&amp;gt;
        /// &amp;lt;param name=&amp;quot;datasource&amp;quot;&amp;gt;The items to show in the accordion&amp;lt;/param&amp;gt;
        /// &amp;lt;see cref=&amp;quot;http://jqueryui.com/demos/accordion/&amp;quot;/&amp;gt;
        /// &amp;lt;returns&amp;gt;The HTML Markup for an accordion in JQuery manner&amp;lt;/returns&amp;gt;
        public static HtmlGenericControl CreateAccordion&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt; datasource)
        {
            HtmlGenericControl accordion = new HtmlGenericControl {TagName = &amp;quot;div&amp;quot;, ClientIDMode = ClientIDMode.Static, ID = &amp;quot;Accordion&amp;quot;};
            accordion.InnerHtml = CreateContentDiv(datasource);

            return accordion;
        }

        /// &amp;lt;summary&amp;gt;
        /// Creates the content div's for putting the model
        /// content to it.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;typeparam name=&amp;quot;T&amp;quot;&amp;gt;The model item (for example from the businessmodel)&amp;lt;/typeparam&amp;gt;
        /// &amp;lt;param name=&amp;quot;datasource&amp;quot;&amp;gt;The items that are the datasource for the accordion&amp;lt;/param&amp;gt;
        /// &amp;lt;returns&amp;gt;The HTML string for the accordion&amp;lt;/returns&amp;gt;
        private static string CreateContentDiv&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt; datasource)
        {
            StringBuilder sb = new StringBuilder();

            if (datasource != null)
                for (int index = datasource.Count() - 1; index &amp;gt;= 0; index--)
                {
                    if (index == 0)
                    {
                        sb.AppendLine(string.Format(&amp;quot;&amp;lt;h3&amp;gt;&amp;lt;a href=\&amp;quot;#\&amp;quot;&amp;gt;{0}&amp;lt;/a&amp;gt;&amp;lt;/h3&amp;gt;&amp;quot;, CreateTitleElement(datasource.ToList()[index])));
                        sb.AppendLine(string.Format(&amp;quot;&amp;lt;div&amp;gt;{0}&amp;lt;/div&amp;gt;&amp;quot;, CreateContentItemFromModel(datasource.ToList()[index])));
                    }
                    else
                    {
                        sb.AppendLine(string.Format(&amp;quot;&amp;lt;h3&amp;gt;&amp;lt;a href=\&amp;quot;#\&amp;quot;&amp;gt;{0}&amp;lt;/a&amp;gt;&amp;lt;/h3&amp;gt;&amp;quot;, CreateTitleElement(datasource.ToList()[index])));
                        sb.AppendLine(string.Format(&amp;quot;&amp;lt;div&amp;gt;{0}&amp;lt;/div&amp;gt;&amp;quot;, CreateContentItemFromModel(datasource.ToList()[index])));
                    }
                }

            return sb.ToString();
        }

        /// &amp;lt;summary&amp;gt;
        /// Foreach property in the model item it will be crated a desing
        /// like label: value of the property.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;typeparam name=&amp;quot;T&amp;quot;&amp;gt;The model object&amp;lt;/typeparam&amp;gt;
        /// &amp;lt;param name=&amp;quot;model&amp;quot;&amp;gt;The model item to treat&amp;lt;/param&amp;gt;
        /// &amp;lt;returns&amp;gt;The content for the contentItems in the accordion&amp;lt;/returns&amp;gt;
        private static string CreateContentItemFromModel&amp;lt;T&amp;gt;(T model)
        {
            StringBuilder sb = new StringBuilder();
            model.GetType().GetProperties().ToList().ForEach(property =&amp;gt; sb.AppendLine(string.Format(@&amp;quot;{0}: {1} &amp;lt;BR/&amp;gt;&amp;quot;, property.Name, property.GetValue(model, null))));

            return sb.ToString();
        }

        /// &amp;lt;summary&amp;gt;
        /// Takes the first property of an object an set's it 
        /// as title.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;typeparam name=&amp;quot;T&amp;quot;&amp;gt;The model object&amp;lt;/typeparam&amp;gt;
        /// &amp;lt;param name=&amp;quot;model&amp;quot;&amp;gt;The model item to treat&amp;lt;/param&amp;gt;
        /// &amp;lt;returns&amp;gt;The content for the title in the accordion&amp;lt;/returns&amp;gt;
        private static string CreateTitleElement&amp;lt;T&amp;gt;(T model)
        {
            StringBuilder sb = new StringBuilder();
            PropertyInfo info = model.GetType().GetProperties().FirstOrDefault();
            string title = string.Format(@&amp;quot;{0}: {1}&amp;quot;, info.Name, info.GetValue(model, null));

            return title;
        }
    }
}
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Was macht der Code?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Er erstellt das Grundgerüst in welchem die Items reingepflanzt werden.&lt;/li&gt;
&lt;li&gt;Er erstellt einen Titel aus dem ersten Property des Modells und setzt diesen mit dem Wert des ersten gefundenen Properties von der Modellklasse &lt;/li&gt;
&lt;li&gt;Ist alles erledigt, gibt er den gesamten erstellen Markup zurück&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 style="color:black;"&gt;3. Die Modellklasse&lt;/h4&gt;
&lt;p&gt;Meistens findet ja so ein Accordion bei einem Newsreader Verwendung. Eine solches News-Items hat die folgenden Eigenschaften:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Titel&lt;/li&gt;
&lt;li&gt;Inhalt&lt;/li&gt;
&lt;li&gt;Veröffentlichungsdatum&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nachstehend die sehr einfache Modellklasse für ein News-Item.&lt;/p&gt;
&lt;p&gt;&lt;pre class="brush: csharp;"&gt;
using System;

namespace AspNetWebFromJQueryUI.Model
{
    public class NewsItem
    {
        public string Title { get; set; }

        public string Content { get; set; }

        public DateTime PublishDate { get; set; }

    }
}
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Wirklich ganz trivial&amp;#8230; &lt;/p&gt;
&lt;/p&gt;
&lt;h4 style="color:black;"&gt;4. Einbindung in unsere Seite&lt;/h4&gt;
&lt;p&gt;Die Einbindung in die Seite geschieht dann wie folgt:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ResultatDiv der Seite mit einem runat=&amp;#8221;server&amp;#8221; versehen&lt;/li&gt;
&lt;li&gt;Im Codebehind dem Control das generierte Accordion hinzufügen.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;pre class="brush: csharp;"&gt;
using System;
using System.Collections.Generic;
using System.Linq;
using AspNetWebFromJQueryUI.Controls;
using AspNetWebFromJQueryUI.Model;

namespace AspNetWebFromJQueryUI
{
    public partial class Index : System.Web.UI.Page
    {
        protected void Page_Init(object sender, EventArgs e)
        {
            //Create dummyData
            List&amp;lt;NewsItem&amp;gt; datasource = new List&amp;lt;NewsItem&amp;gt;();

            for (int index = 0; index &amp;lt; 10; index++)
            {
                datasource.Add(new NewsItem() { Content = string.Format(@&amp;quot;Neuigkeitsinhalt {0}&amp;quot;, index.ToString()), 
                                                Title = string.Format(@&amp;quot;Neuigkeit {0}&amp;quot;, index.ToString()), 
                                                PublishDate = DateTime.Now.Subtract(new TimeSpan(index, index, index)) });
            }
            
            this.ResultDiv.Controls.Add(AccordionHelper.CreateAccordion(datasource.OrderByDescending(n =&amp;gt; n.PublishDate)));
            
        }
    }
}
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Somit wird beim Starten, alles in einem schönen von JQuery verwalteten Accordion gerendet.&lt;/p&gt;
&lt;p&gt;ACHTUNG: Reflection funktioniert nicht in Abhängigkeit zu den .NET Sicherheitseinstellungen, daher muss zuerst überprüft werden, ob mit Reflection gearbeitet werden kann.&lt;/p&gt;
&lt;p&gt;Für Anregungen und Fragen würde ich mich auf einen Kommentar freuen&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dotnet-kicks.de/kick/?url=http%3a%2f%2fschaedlerdaniel.wordpress.com%2f2011%2f10%2f27%2fheirate-mich-asp-net-und-jquery-accordion%2f"&gt;&lt;img src="http://dotnet-kicks.de/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fschaedlerdaniel.wordpress.com%2f2011%2f10%2f27%2fheirate-mich-asp-net-und-jquery-accordion%2f" border="0" alt="kick it on dotnet-kicks.de" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;br /&gt;  &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/schaedlerdaniel.wordpress.com/478/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/schaedlerdaniel.wordpress.com/478/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/schaedlerdaniel.wordpress.com/478/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/schaedlerdaniel.wordpress.com/478/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/schaedlerdaniel.wordpress.com/478/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/schaedlerdaniel.wordpress.com/478/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/schaedlerdaniel.wordpress.com/478/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/schaedlerdaniel.wordpress.com/478/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/schaedlerdaniel.wordpress.com/478/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/schaedlerdaniel.wordpress.com/478/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/schaedlerdaniel.wordpress.com/478/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/schaedlerdaniel.wordpress.com/478/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/schaedlerdaniel.wordpress.com/478/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/schaedlerdaniel.wordpress.com/478/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=schaedlerdaniel.wordpress.com&amp;amp;blog=16378069&amp;amp;post=478&amp;amp;subd=schaedlerdaniel&amp;amp;ref=&amp;amp;feed=1" width="1" height="1" /&gt;</content:encoded>
      <wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://schaedlerdaniel.wordpress.com/2011/10/27/heirate-mich-asp-net-und-jquery-accordion/feed/</wfw:commentRss>
      <slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments>
      <media:content url="http://0.gravatar.com/avatar/e50530c3e478a8a210b7df39006fdc68?s=96&amp;d=identicon&amp;r=G" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">schaedlerdaniel</media:title>
      </media:content>
      <media:content url="http://dotnet-kicks.de/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fschaedlerdaniel.wordpress.com%2f2011%2f10%2f27%2fheirate-mich-asp-net-und-jquery-accordion%2f" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">kick it on dotnet-kicks.de</media:title>
      </media:content>
    </item>
    <item>
      <guid isPermaLink="false">http://schaedlerdaniel.wordpress.com/?p=453</guid>
      <link>http://schaedlerdaniel.wordpress.com/2011/10/23/vorlagen-mal-anders/</link>
      <category>ASP.NET /AJAX /ASP.NET MVC</category>
      <category>JavaScript / HTML /CSS /XML</category>
      <title>Vorlagen mal anders…</title>
      <description>… und die Möglichkeit auch ohne JQuery Templates auszukommen. Wie soll man das verstehen? Nun ganz einfach, wenn wir eine XML basierte Daten getriebene Webanwendung haben, so ist es nicht immer notwendig mit JQuery Templates das Verschönern der Seite vorzunehmen.
 Hierzu kann XML /XSL(T) ein wahres Traumpaar sein. Anhand von drei Beispielen soll dann auch [...]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=schaedlerdaniel.wordpress.com&amp;amp;blog=16378069&amp;amp;post=453&amp;amp;subd=schaedlerdaniel&amp;amp;ref=&amp;amp;feed=1" width="1" height="1"&gt;</description>
      <pubDate>Sun, 23 Oct 2011 17:24:22 Z</pubDate>
      <comments>http://schaedlerdaniel.wordpress.com/2011/10/23/vorlagen-mal-anders/#comments</comments>
      <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">schaedlerdaniel</dc:creator>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;&amp;#8230; und die Möglichkeit auch ohne JQuery Templates auszukommen. Wie soll man das verstehen? Nun ganz einfach, wenn wir eine XML basierte Daten getriebene Webanwendung haben, so ist es nicht immer notwendig mit JQuery Templates das Verschönern der Seite vorzunehmen. Hierzu kann XML /XSL(T) ein wahres Traumpaar sein. Anhand von drei Beispielen soll dann auch gezeigt werden wie es mit dem XMLControl von ASP.NET, rein Client seitig und rein Code-behind bewerkstelligt wird.&lt;/p&gt;
&lt;h5&gt;XML Data Control&lt;/h5&gt;
&lt;p&gt;Zuerst erstellen wir uns eine neue ASP.NET WebForms Anwendung und fügen in unsere Seite das XML Data Control ein.&lt;/p&gt;
&lt;p&gt;&lt;pre class="brush: xml;"&gt;
&amp;lt;%@ Page Title=&amp;quot;Home Page&amp;quot; Language=&amp;quot;C#&amp;quot; MasterPageFile=&amp;quot;~/Site.master&amp;quot; AutoEventWireup=&amp;quot;true&amp;quot;
    CodeBehind=&amp;quot;Default.aspx.cs&amp;quot; Inherits=&amp;quot;XMLDataDrivenWeb._Default&amp;quot; %&amp;gt;

&amp;lt;asp:Content ID=&amp;quot;HeaderContent&amp;quot; runat=&amp;quot;server&amp;quot; ContentPlaceHolderID=&amp;quot;HeadContent&amp;quot;&amp;gt;
&amp;lt;/asp:Content&amp;gt;
&amp;lt;asp:Content ID=&amp;quot;BodyContent&amp;quot; runat=&amp;quot;server&amp;quot; ContentPlaceHolderID=&amp;quot;MainContent&amp;quot;&amp;gt;
    &amp;lt;h2&amp;gt;
        XML Driven Web Development
    &amp;lt;/h2&amp;gt;
    &amp;lt;p&amp;gt;
        XML DataControl to apply XSL to the XML Document.

        &amp;lt;asp:Xml ID=&amp;quot;XmlContainer&amp;quot; runat=&amp;quot;server&amp;quot; 
            DocumentSource=&amp;quot;~/App_Data/KontaktAngaben.xml&amp;quot; 
            TransformSource=&amp;quot;/App_Data/KontaktFormatierung.xsl&amp;quot; onload=&amp;quot;XmlContainer_Load&amp;quot; &amp;gt;&amp;lt;/asp:Xml&amp;gt;
    &amp;lt;/p&amp;gt;
&amp;lt;/asp:Content&amp;gt;
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Damit wir das Control mit den notwendigen Daten füttern können, erstellen wir zwei Dateien im App_Code Ordner.&lt;/p&gt;
&lt;h6&gt;Die XML Datendatei&lt;/h6&gt;
&lt;p&gt;&lt;pre class="brush: xml;"&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;
&amp;lt;?xml-stylesheet type=&amp;quot;text/xsl&amp;quot; href=&amp;quot;KontaktFormatierung.xsl&amp;quot;?&amp;gt;
&amp;lt;Kontakangaben&amp;gt;
    &amp;lt;Person&amp;gt;
        &amp;lt;Salutation&amp;gt;Herr&amp;lt;/Salutation&amp;gt;
        &amp;lt;FirstName&amp;gt;Hans&amp;lt;/FirstName&amp;gt;
        &amp;lt;LastName&amp;gt;Müller&amp;lt;/LastName&amp;gt;
        &amp;lt;Street&amp;gt;Müllerstrasse 14&amp;lt;/Street&amp;gt;
        &amp;lt;City&amp;gt;3205 Müllhausen&amp;lt;/City&amp;gt;
        &amp;lt;Phone&amp;gt;0132542254&amp;lt;/Phone&amp;gt;
        &amp;lt;Phone&amp;gt;0123655447&amp;lt;/Phone&amp;gt;
        &amp;lt;Role&amp;gt;Präsident&amp;lt;/Role&amp;gt;
        &amp;lt;EMail href=&amp;quot;hans.mueller@muellergmbh.com&amp;quot;&amp;gt;Müller Hans&amp;lt;/EMail&amp;gt;
    &amp;lt;/Person&amp;gt;
    &amp;lt;Person&amp;gt;
        &amp;lt;Salutation&amp;gt;Frau&amp;lt;/Salutation&amp;gt;
        &amp;lt;FirstName&amp;gt;Heidi&amp;lt;/FirstName&amp;gt;
        &amp;lt;LastName&amp;gt;Müller&amp;lt;/LastName&amp;gt;
        &amp;lt;Street&amp;gt;Müllerstrasse 14&amp;lt;/Street&amp;gt;
        &amp;lt;City&amp;gt;3205 Müllhausen&amp;lt;/City&amp;gt;
        &amp;lt;Phone&amp;gt;0766778939&amp;lt;/Phone&amp;gt;
        &amp;lt;Phone&amp;gt;0324546688&amp;lt;/Phone&amp;gt;
        &amp;lt;Role&amp;gt;Vizepräsidentin&amp;lt;/Role&amp;gt;
        &amp;lt;EMail href=&amp;quot;heidi.mueller@muellergmbh.com&amp;quot;&amp;gt;Heidi Müller&amp;lt;/EMail&amp;gt;
    &amp;lt;/Person&amp;gt;
&amp;lt;/Kontakangaben&amp;gt;
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Die dazugehörige XSL(T) Datei sieht dann wie folgt aus.&lt;/p&gt;
&lt;p&gt;&lt;pre class="brush: xml;"&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;
&amp;lt;xsl:stylesheet version=&amp;quot;2.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; &amp;gt;
    &amp;lt;!-- Define the outputtype --&amp;gt;
    &amp;lt;xsl:output method=&amp;quot;html&amp;quot;/&amp;gt;
    &amp;lt;xsl:template match=&amp;quot;/*&amp;quot;&amp;gt;
        &amp;lt;table class=&amp;quot;tableStyle&amp;quot;&amp;gt;
            &amp;lt;tr&amp;gt;
                &amp;lt;th&amp;gt;Kontaktangaben&amp;lt;/th&amp;gt;
                &amp;lt;th&amp;gt;Rolle&amp;lt;/th&amp;gt;
                &amp;lt;th&amp;gt;Telefon(e)&amp;lt;/th&amp;gt;
                &amp;lt;th&amp;gt;E-Mail&amp;lt;/th&amp;gt;
            &amp;lt;/tr&amp;gt;
            &amp;lt;xsl:for-each select=&amp;quot;Person&amp;quot;&amp;gt;
                &amp;lt;tr&amp;gt;
                    &amp;lt;td&amp;gt;
                        &amp;lt;xsl:value-of select=&amp;quot;FirstName&amp;quot;/&amp;gt; &amp;lt;xsl:value-of select=&amp;quot;LastName&amp;quot;/&amp;gt;
                        &amp;lt;br/&amp;gt;
                        &amp;lt;xsl:value-of select=&amp;quot;Street&amp;quot;/&amp;gt;
                        &amp;lt;br/&amp;gt;
                        &amp;lt;xsl:value-of select=&amp;quot;City&amp;quot;/&amp;gt;
                    &amp;lt;/td&amp;gt;
                    &amp;lt;td&amp;gt;
                        &amp;lt;xsl:value-of select=&amp;quot;Role&amp;quot;/&amp;gt;
                    &amp;lt;/td&amp;gt;
                    &amp;lt;td&amp;gt;
                        &amp;lt;ul&amp;gt;
                            &amp;lt;xsl:for-each select=&amp;quot;./Phone&amp;quot;&amp;gt;
                                &amp;lt;li&amp;gt;
                                        &amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;                            
                                &amp;lt;/li&amp;gt;
                            &amp;lt;/xsl:for-each&amp;gt;
                        &amp;lt;/ul&amp;gt;
                    &amp;lt;/td&amp;gt;
                    &amp;lt;td&amp;gt;
                        &amp;lt;a&amp;gt;
                            &amp;lt;!-- The xml attribute sets the value for the &amp;lt;a&amp;gt; tag and adds an attribute to it--&amp;gt;
                            &amp;lt;xsl:attribute name=&amp;quot;href&amp;quot;&amp;gt;mailto:&amp;lt;xsl:value-of select=&amp;quot;../Person/EMail/@href&amp;quot;/&amp;gt;&amp;lt;/xsl:attribute&amp;gt;
                            &amp;lt;xsl:value-of select=&amp;quot;../Person/FirstName&amp;quot;/&amp;gt;
                            &amp;lt;xsl:value-of select=&amp;quot;../Person/LastName&amp;quot;/&amp;gt;
                        &amp;lt;/a&amp;gt;                                                                                                                               
                    &amp;lt;/td&amp;gt;
                &amp;lt;/tr&amp;gt;
            &amp;lt;/xsl:for-each&amp;gt;
        &amp;lt;/table&amp;gt;
    &amp;lt;/xsl:template&amp;gt;
&amp;lt;/xsl:stylesheet&amp;gt;
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Wichtig ist dass der output mode auf HTML gestellt wird, ansonsten wird es mit dem Link in der E-Mail Adresse schwierig diesen korrekt darzustellen.&lt;/p&gt;
&lt;p&gt;Der Ouput wird dann automatisch vom XML Control gerendert.&lt;/p&gt;
&lt;h5&gt;Reine clientseitige Verarbeitung&lt;/h5&gt;
&lt;p&gt;Eine weitere Möglichkeit, für alle die JavaScript über alles lieben, ist mit JQuery die Transformation vorzunehmen.&lt;/p&gt;
&lt;p&gt;&lt;pre class="brush: xml;"&gt;
&amp;lt;%@ Page Title=&amp;quot;&amp;quot; Language=&amp;quot;C#&amp;quot; MasterPageFile=&amp;quot;~/Site.Master&amp;quot; AutoEventWireup=&amp;quot;true&amp;quot; CodeBehind=&amp;quot;Index.aspx.cs&amp;quot; Inherits=&amp;quot;XMLDataDrivenWeb.Index&amp;quot; %&amp;gt;
&amp;lt;asp:Content ID=&amp;quot;Content1&amp;quot; ContentPlaceHolderID=&amp;quot;HeadContent&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;    
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot; language=&amp;quot;javascript&amp;quot;&amp;gt;
        var xml = null;
        var xsl = null;

        $(document).ready(function () {

            $.ajax({
                type: &amp;quot;GET&amp;quot;,
                url: &amp;quot;XMLData/KontaktAngaben.xml&amp;quot;,
                data: &amp;quot;{}&amp;quot;,
                contentType: &amp;quot;application/xml; charset=utf-8&amp;quot;,
                dataType: &amp;quot;xml&amp;quot;,
                success: function (msg) {
                    xml = msg;
                },
                error: function (msg) {
                    alert(msg);
                }
            });

            $.ajax({
                type: &amp;quot;GET&amp;quot;,
                url: &amp;quot;XMLData/KontaktFormatierung.xsl&amp;quot;,
                data: &amp;quot;{}&amp;quot;,
                contentType: &amp;quot;application/xml; charset=utf-8&amp;quot;,
                dataType: &amp;quot;xml&amp;quot;,
                success: function (msg) {
                    xsl = msg;
                    TransformXml();
                },
                error: function (msg) {
                    alert(msg);
                }
            });
        });

        function TransformXml() {

            $('#ResultDiv')[0].innerHTML = xml.transformNode(xsl);
        }
    &amp;lt;/script&amp;gt;
&amp;lt;/asp:Content&amp;gt;
&amp;lt;asp:Content ID=&amp;quot;Content2&amp;quot; ContentPlaceHolderID=&amp;quot;MainContent&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;
&amp;lt;div id=&amp;quot;ResultDiv&amp;quot;&amp;gt;

&amp;lt;/div&amp;gt;
&amp;lt;/asp:Content&amp;gt;
&lt;/pre&gt;&lt;/p&gt;
&lt;h5&gt;Code behind Bearbeitung&lt;/h5&gt;
&lt;p&gt;Zu guter letzt kann alles natürlich mit C# erledigt werden, was eigentlich auch keine Hexerei darstellt.&lt;/p&gt;
&lt;p&gt;&lt;pre class="brush: csharp;"&gt;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml.Linq;
using System.Xml;
using System.Xml.Xsl;
using System.IO;
using System.Text;

namespace XMLDataDrivenWeb
{
    public partial class PureDotNet : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            GetDocument();
        }

        private void GetDocument()
        {
            XmlDocument x = new XmlDocument();
            x.Load(XmlReader.Create(Server.MapPath(@&amp;quot;/App_Data/Kontaktangaben.xml&amp;quot;)));

            XslCompiledTransform transform = new XslCompiledTransform();
            transform.Load(XmlReader.Create(Server.MapPath(@&amp;quot;/App_Data/KontaktFormatierung.xsl&amp;quot;)));
            transform.Transform(x.BaseURI, Server.MapPath(@&amp;quot;/App_Data/Result.xml&amp;quot;));

            // Loading the generated result file
            string[] xmlResult = File.ReadAllLines(Directory.GetFiles(Server.MapPath(@&amp;quot;/App_Data&amp;quot;)).ToList().Where(f =&amp;gt; f.ToLower().Contains(&amp;quot;result&amp;quot;)).FirstOrDefault());
            
            xmlResult.ToList().ForEach(s =&amp;gt;
                                           {
                                               ResultDiv.InnerHtml += s;
                                           });
            
        }
    }
}
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Zu guter letzt soll das Ganze auch ein wenig ansprechend aussehen. Dies machen wir wie gewohnt über CSS. Die folgenen Styles werden nachfolgend aufgeführt:&lt;/p&gt;
&lt;p&gt;&lt;pre class="brush: css;"&gt;
th 
{
    font-size: x-large;
    font-family: cursive;
    background-color: silver;  
    padding: 2px;    
}

td 
{
    font-size:medium;
    font-style: normal;
    border: thin solid black;
}
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Wie wir sehen gibt es immer mehrere Wege nach Rom und das Ganze, ach Microsoft will C# etc. abschaffen und nur noch Richtung JavaScript gehen, eher übertrieben. Es kommt immer noch auf uns Entwickler an wie wir eine Lösung zu einem Problem finden.&lt;/p&gt;
&lt;p&gt;Anhand dieses einfachen Beispiels sehen wird, dass es möglich ist für ein Problem die eine oder andere Lösung zu wählen, je nachdem was einem beliebt.&lt;/p&gt;
&lt;p&gt;Für Anregungen und Kritik bin ich gerne offen&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dotnet-kicks.de/kick/?url=http%3a%2f%2fschaedlerdaniel.wordpress.com%2f2011%2f10%2f23%2fvorlagen-mal-anders%2f"&gt;&lt;img src="http://dotnet-kicks.de/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fschaedlerdaniel.wordpress.com%2f2011%2f10%2f23%2fvorlagen-mal-anders%2f" border="0" alt="kick it on dotnet-kicks.de" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;br /&gt;  &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/schaedlerdaniel.wordpress.com/453/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/schaedlerdaniel.wordpress.com/453/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/schaedlerdaniel.wordpress.com/453/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/schaedlerdaniel.wordpress.com/453/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/schaedlerdaniel.wordpress.com/453/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/schaedlerdaniel.wordpress.com/453/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/schaedlerdaniel.wordpress.com/453/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/schaedlerdaniel.wordpress.com/453/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/schaedlerdaniel.wordpress.com/453/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/schaedlerdaniel.wordpress.com/453/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/schaedlerdaniel.wordpress.com/453/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/schaedlerdaniel.wordpress.com/453/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/schaedlerdaniel.wordpress.com/453/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/schaedlerdaniel.wordpress.com/453/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=schaedlerdaniel.wordpress.com&amp;amp;blog=16378069&amp;amp;post=453&amp;amp;subd=schaedlerdaniel&amp;amp;ref=&amp;amp;feed=1" width="1" height="1" /&gt;</content:encoded>
      <wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://schaedlerdaniel.wordpress.com/2011/10/23/vorlagen-mal-anders/feed/</wfw:commentRss>
      <slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments>
      <media:content url="http://0.gravatar.com/avatar/e50530c3e478a8a210b7df39006fdc68?s=96&amp;d=identicon&amp;r=G" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">schaedlerdaniel</media:title>
      </media:content>
      <media:content url="http://dotnet-kicks.de/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fschaedlerdaniel.wordpress.com%2f2011%2f10%2f23%2fvorlagen-mal-anders%2f" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">kick it on dotnet-kicks.de</media:title>
      </media:content>
    </item>
    <item p3:etag="W/&quot;CkQNQ3wyfCp7ImA9WhdbGU4.&quot;" xmlns:p3="http://schemas.google.com/g/2005">
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5763764290649132593.post-2916529130874658250</guid>
      <link>http://feedproxy.google.com/~r/closed-loop/~3/F_DOW4_SQdc/tidbit-lines-of-code.html</link>
      <author>noreply@blogger.com</author>
      <category domain="http://www.blogger.com/atom/ns#">tidbit</category>
      <title>Tidbit: Lines of Code</title>
      <description>&lt;p&gt;&lt;img style="float: right; margin-left: 10px;" src="http://lh6.ggpht.com/_X3kaawac_g4/TS4htJ3nK8I/AAAAAAAAA6c/d0duKh9vaCQ/315116528_480edcad4d.jpg?imgmax=800" border="0" alt="315116528_480edcad4d.jpg" width="150" /&gt;&lt;/p&gt;&lt;p&gt;According to a claim in the &lt;a href="http://www.infoq.com/presentations/Panel-Non-Relational-Data-Stores"&gt;Non Relational Data Stores Panel&lt;/a&gt;, the query parser in &lt;a href="http://en.wikipedia.org/wiki/Mysql"&gt;MySQL&lt;/a&gt; alone spans 100'000 lines of code in C and the whole &lt;a href="http://cassandra.apache.org/"&gt;Cassandra Database&lt;/a&gt; is 30'000 lines of Java.&lt;/p&gt;&lt;p&gt;I don't know what to deduce from that, but it is certainly interesting.&lt;/p&gt;&lt;p&gt;Some directions of thought:&lt;/p&gt;&lt;ul&gt;&lt;li&gt; Java is a more powerful language than C&lt;/li&gt;&lt;li&gt;MySQL is much more sophisticated than Cassandra&lt;/li&gt;&lt;li&gt;NoSQL databases are much less complex than relational databases&lt;/li&gt;&lt;li&gt;...&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: 10px;"&gt;&lt;span style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="align: right; font-size: 10px; clear: right;"&gt;&lt;p&gt;&lt;a href="http://twitter.com/jbandi"&gt;&lt;img style="margin: 0px 0px 0px 0px; border: none;" src="http://www.google.com/s2/favicons?domain=twitter.com" border="0" alt="http://www.google.com/s2/favicons?domain=twitter.com" height="13px" align="left" /&gt; follow me on twitter, I need some friends :-)&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5763764290649132593-2916529130874658250?l=blog.jonasbandi.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/u2xNjfV_VSFXNYzwtWGylK7vy00/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/u2xNjfV_VSFXNYzwtWGylK7vy00/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/u2xNjfV_VSFXNYzwtWGylK7vy00/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/u2xNjfV_VSFXNYzwtWGylK7vy00/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=F_DOW4_SQdc:_Q4uhPXhM9M:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=F_DOW4_SQdc:_Q4uhPXhM9M:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=F_DOW4_SQdc:_Q4uhPXhM9M:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=F_DOW4_SQdc:_Q4uhPXhM9M:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=F_DOW4_SQdc:_Q4uhPXhM9M:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=F_DOW4_SQdc:_Q4uhPXhM9M:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=F_DOW4_SQdc:_Q4uhPXhM9M:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=F_DOW4_SQdc:_Q4uhPXhM9M:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=F_DOW4_SQdc:_Q4uhPXhM9M:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=F_DOW4_SQdc:_Q4uhPXhM9M:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=F_DOW4_SQdc:_Q4uhPXhM9M:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=F_DOW4_SQdc:_Q4uhPXhM9M:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=F_DOW4_SQdc:_Q4uhPXhM9M:Y59mnZtVT5U"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/F_DOW4_SQdc" height="1" width="1"/&gt;</description>
      <pubDate>Tue, 18 Oct 2011 11:33:00 +0200</pubDate>
      <link rel="replies" type="application/atom+xml" title="Post Comments" href="http://blog.jonasbandi.net/feeds/2916529130874658250/comments/default" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="replies" type="text/html" title="0 Comments" href="http://www.blogger.com/comment.g?blogID=5763764290649132593&amp;postID=2916529130874658250" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/2916529130874658250?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/2916529130874658250?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <updated xmlns="http://www.w3.org/2005/Atom">2011-10-18T11:33:12+02:00</updated>
      <content type="html" xmlns="http://www.w3.org/2005/Atom">
&lt;p&gt;&lt;img src="http://lh6.ggpht.com/_X3kaawac_g4/TS4htJ3nK8I/AAAAAAAAA6c/d0duKh9vaCQ/315116528_480edcad4d.jpg?imgmax=800" border="0" alt="315116528_480edcad4d.jpg" width="150" style="float:right; margin-left:10px"&gt;&lt;/p&gt;
&lt;p&gt;According to a claim in the &lt;a href="http://www.infoq.com/presentations/Panel-Non-Relational-Data-Stores"&gt;
Non Relational Data Stores Panel&lt;/a&gt;, the query parser in &lt;a href="http://en.wikipedia.org/wiki/Mysql"&gt;
MySQL&lt;/a&gt; alone spans 100'000 lines of code in C and the whole &lt;a href="http://cassandra.apache.org/"&gt;
Cassandra Database&lt;/a&gt; is 30'000 lines of Java.&lt;/p&gt;
&lt;p&gt;I don't know what to deduce from that, but it is certainly interesting.&lt;/p&gt;
&lt;p&gt;Some directions of thought:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Java is a more powerful language than C&lt;/li&gt;&lt;li&gt;MySQL is much more sophisticated than Cassandra&lt;/li&gt;&lt;li&gt;NoSQL databases are much less complex than relational databases&lt;/li&gt;&lt;li&gt;...&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;span style="font-size:x-small"&gt;&lt;span style="font-size:10px"&gt;&lt;span style="font-size:medium"&gt;&lt;br&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div style="font-size:10px; clear:right"&gt;
&lt;p&gt;&lt;a href="http://twitter.com/jbandi"&gt;&lt;img src="http://www.google.com/s2/favicons?domain=twitter.com" border="0" alt="http://www.google.com/s2/favicons?domain=twitter.com" height="13px" align="left" style="margin:0px 0px 0px 0px; border:none"&gt; follow me on
 twitter, I need some friends :-)&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="x_blogger-post-footer"&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/5763764290649132593-2916529130874658250?l=blog.jonasbandi.net" alt=""&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/u2xNjfV_VSFXNYzwtWGylK7vy00/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/u2xNjfV_VSFXNYzwtWGylK7vy00/0/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/u2xNjfV_VSFXNYzwtWGylK7vy00/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/u2xNjfV_VSFXNYzwtWGylK7vy00/1/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="x_feedflare"&gt;&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=F_DOW4_SQdc:_Q4uhPXhM9M:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=F_DOW4_SQdc:_Q4uhPXhM9M:4cEx4HpKnUU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=F_DOW4_SQdc:_Q4uhPXhM9M:yIl2AUoC8zA"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=F_DOW4_SQdc:_Q4uhPXhM9M:I9og5sOYxJI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=F_DOW4_SQdc:_Q4uhPXhM9M:F7zBnMyn0Lo"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=F_DOW4_SQdc:_Q4uhPXhM9M:F7zBnMyn0Lo" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=F_DOW4_SQdc:_Q4uhPXhM9M:V_sGLiPBpWU"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=F_DOW4_SQdc:_Q4uhPXhM9M:V_sGLiPBpWU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=F_DOW4_SQdc:_Q4uhPXhM9M:gIN9vFwOqvQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=F_DOW4_SQdc:_Q4uhPXhM9M:gIN9vFwOqvQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=F_DOW4_SQdc:_Q4uhPXhM9M:cGdyc7Q-1BI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=F_DOW4_SQdc:_Q4uhPXhM9M:G79ilh31hkQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=F_DOW4_SQdc:_Q4uhPXhM9M:Y59mnZtVT5U"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/F_DOW4_SQdc" height="1" width="1"&gt;</content>
      <app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-18T11:33:12.294+02:00</app:edited>
      <media:thumbnail url="http://lh6.ggpht.com/_X3kaawac_g4/TS4htJ3nK8I/AAAAAAAAA6c/d0duKh9vaCQ/s72-c/315116528_480edcad4d.jpg?imgmax=800" height="72" width="72" xmlns:media="http://search.yahoo.com/mrss/"></media:thumbnail>
      <thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total>
      <feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blog.jonasbandi.net/2011/10/tidbit-lines-of-code.html</feedburner:origLink>
    </item>
    <item p3:etag="W/&quot;DE8MRX49fSp7ImA9WhdbE0w.&quot;" xmlns:p3="http://schemas.google.com/g/2005">
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5763764290649132593.post-8825443277962943798</guid>
      <link>http://feedproxy.google.com/~r/closed-loop/~3/izNCNn-naGc/i-am-attempting-probably-one-of-most.html</link>
      <author>noreply@blogger.com</author>
      <category domain="http://www.blogger.com/atom/ns#">trivia</category>
      <title>Pimping my MacBook</title>
      <description>I am attempting probably one of the most stupid things: pimping a MacBook ...&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;a href="http://www.flickr.com/photos/jbandi/6233609406/" title="The patient is ready. Let's get started. by jonas.bandi, on Flickr"&gt;&lt;img alt="The patient is ready. Let's get started." height="180" src="http://farm7.static.flickr.com/6165/6233609406_dd5e9affca_m.jpg" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
The patient is ready. Let's get started.&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;a href="http://www.flickr.com/photos/jbandi/6233090605/" title="Patient is opened. Pulse is steady. by jonas.bandi, on Flickr"&gt;&lt;img alt="Patient is opened. Pulse is steady." height="180" src="http://farm7.static.flickr.com/6159/6233090605_3532f73b22_m.jpg" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
Patient is opened. Pulse is steady.&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;a href="http://www.flickr.com/photos/jbandi/6233611650/" title="The offending organ has been removed. by jonas.bandi, on Flickr"&gt;&lt;img alt="The offending organ has been removed." height="180" src="http://farm7.static.flickr.com/6160/6233611650_cb8a1b6c7c_m.jpg" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
The offending organ has been removed.&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;a href="http://www.flickr.com/photos/jbandi/6233612554/" title="The replacement organs fit well ... by jonas.bandi, on Flickr"&gt;&lt;img alt="The replacement organs fit well ..." height="180" src="http://farm7.static.flickr.com/6161/6233612554_ce3ee609d1_m.jpg" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
The replacement organs fit well ...&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;a href="http://www.flickr.com/photos/jbandi/6233093525/" title="Surgery finished, patient hopefully ready to wake up ... by jonas.bandi, on Flickr"&gt;&lt;img alt="Surgery finished, patient hopefully ready to wake up ..." height="180" src="http://farm7.static.flickr.com/6093/6233093525_e450c07243_m.jpg" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
Surgery finished, patient hopefully ready to wake up ...&lt;/div&gt;
&lt;br /&gt;
... however the doctor is not completely pleased with the result. Another operation is due next week...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5763764290649132593-8825443277962943798?l=blog.jonasbandi.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/JmLF11RzzeSyEQ5w6Nphd3cqBwU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JmLF11RzzeSyEQ5w6Nphd3cqBwU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/JmLF11RzzeSyEQ5w6Nphd3cqBwU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JmLF11RzzeSyEQ5w6Nphd3cqBwU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=izNCNn-naGc:KwdxJTAJyNI:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=izNCNn-naGc:KwdxJTAJyNI:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=izNCNn-naGc:KwdxJTAJyNI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=izNCNn-naGc:KwdxJTAJyNI:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=izNCNn-naGc:KwdxJTAJyNI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=izNCNn-naGc:KwdxJTAJyNI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=izNCNn-naGc:KwdxJTAJyNI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=izNCNn-naGc:KwdxJTAJyNI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=izNCNn-naGc:KwdxJTAJyNI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=izNCNn-naGc:KwdxJTAJyNI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=izNCNn-naGc:KwdxJTAJyNI:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=izNCNn-naGc:KwdxJTAJyNI:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=izNCNn-naGc:KwdxJTAJyNI:Y59mnZtVT5U"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/izNCNn-naGc" height="1" width="1"/&gt;</description>
      <pubDate>Tue, 11 Oct 2011 09:06:00 +0200</pubDate>
      <link rel="replies" type="application/atom+xml" title="Post Comments" href="http://blog.jonasbandi.net/feeds/8825443277962943798/comments/default" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="replies" type="text/html" title="2 Comments" href="http://www.blogger.com/comment.g?blogID=5763764290649132593&amp;postID=8825443277962943798" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/8825443277962943798?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/8825443277962943798?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <updated xmlns="http://www.w3.org/2005/Atom">2011-10-11T09:08:04+02:00</updated>
      <content type="html" xmlns="http://www.w3.org/2005/Atom">I am attempting probably one of the most stupid things: pimping a MacBook ...&lt;br&gt;
&lt;br&gt;
&lt;div style="text-align:center"&gt;&lt;a href="http://www.flickr.com/photos/jbandi/6233609406/" title="The patient is ready. Let's get started. by jonas.bandi, on Flickr"&gt;&lt;img alt="The patient is ready. Let's get started." height="180" src="http://farm7.static.flickr.com/6165/6233609406_dd5e9affca_m.jpg" width="240"&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align:center"&gt;The patient is ready. Let's get started.&lt;/div&gt;
&lt;div style="text-align:center"&gt;&lt;br&gt;
&lt;/div&gt;
&lt;div style="text-align:center"&gt;&lt;a href="http://www.flickr.com/photos/jbandi/6233090605/" title="Patient is opened. Pulse is steady. by jonas.bandi, on Flickr"&gt;&lt;img alt="Patient is opened. Pulse is steady." height="180" src="http://farm7.static.flickr.com/6159/6233090605_3532f73b22_m.jpg" width="240"&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align:center"&gt;Patient is opened. Pulse is steady.&lt;/div&gt;
&lt;div style="text-align:center"&gt;&lt;br&gt;
&lt;/div&gt;
&lt;div style="text-align:center"&gt;&lt;a href="http://www.flickr.com/photos/jbandi/6233611650/" title="The offending organ has been removed. by jonas.bandi, on Flickr"&gt;&lt;img alt="The offending organ has been removed." height="180" src="http://farm7.static.flickr.com/6160/6233611650_cb8a1b6c7c_m.jpg" width="240"&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align:center"&gt;The offending organ has been removed.&lt;/div&gt;
&lt;div style="text-align:center"&gt;&lt;br&gt;
&lt;/div&gt;
&lt;div style="text-align:center"&gt;&lt;a href="http://www.flickr.com/photos/jbandi/6233612554/" title="The replacement organs fit well ... by jonas.bandi, on Flickr"&gt;&lt;img alt="The replacement organs fit well ..." height="180" src="http://farm7.static.flickr.com/6161/6233612554_ce3ee609d1_m.jpg" width="240"&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align:center"&gt;The replacement organs fit well ...&lt;/div&gt;
&lt;div style="text-align:center"&gt;&lt;br&gt;
&lt;/div&gt;
&lt;div style="text-align:center"&gt;&lt;a href="http://www.flickr.com/photos/jbandi/6233093525/" title="Surgery finished, patient hopefully ready to wake up ... by jonas.bandi, on Flickr"&gt;&lt;img alt="Surgery finished, patient hopefully ready to wake up ..." height="180" src="http://farm7.static.flickr.com/6093/6233093525_e450c07243_m.jpg" width="240"&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align:center"&gt;Surgery finished, patient hopefully ready to wake up ...&lt;/div&gt;
&lt;br&gt;
... however the doctor is not completely pleased with the result. Another operation is due next week...
&lt;div class="x_blogger-post-footer"&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/5763764290649132593-8825443277962943798?l=blog.jonasbandi.net" alt=""&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/JmLF11RzzeSyEQ5w6Nphd3cqBwU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JmLF11RzzeSyEQ5w6Nphd3cqBwU/0/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/JmLF11RzzeSyEQ5w6Nphd3cqBwU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JmLF11RzzeSyEQ5w6Nphd3cqBwU/1/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="x_feedflare"&gt;&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=izNCNn-naGc:KwdxJTAJyNI:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=izNCNn-naGc:KwdxJTAJyNI:4cEx4HpKnUU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=izNCNn-naGc:KwdxJTAJyNI:yIl2AUoC8zA"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=izNCNn-naGc:KwdxJTAJyNI:I9og5sOYxJI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=izNCNn-naGc:KwdxJTAJyNI:F7zBnMyn0Lo"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=izNCNn-naGc:KwdxJTAJyNI:F7zBnMyn0Lo" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=izNCNn-naGc:KwdxJTAJyNI:V_sGLiPBpWU"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=izNCNn-naGc:KwdxJTAJyNI:V_sGLiPBpWU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=izNCNn-naGc:KwdxJTAJyNI:gIN9vFwOqvQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=izNCNn-naGc:KwdxJTAJyNI:gIN9vFwOqvQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=izNCNn-naGc:KwdxJTAJyNI:cGdyc7Q-1BI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=izNCNn-naGc:KwdxJTAJyNI:G79ilh31hkQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=izNCNn-naGc:KwdxJTAJyNI:Y59mnZtVT5U"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/izNCNn-naGc" height="1" width="1"&gt;</content>
      <app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-11T09:08:04.065+02:00</app:edited>
      <media:thumbnail url="http://farm7.static.flickr.com/6165/6233609406_dd5e9affca_t.jpg" height="72" width="72" xmlns:media="http://search.yahoo.com/mrss/"></media:thumbnail>
      <thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total>
      <feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blog.jonasbandi.net/2011/10/i-am-attempting-probably-one-of-most.html</feedburner:origLink>
    </item>
    <item p3:etag="W/&quot;AkQCQHg8eip7ImA9WhdUGU8.&quot;" xmlns:p3="http://schemas.google.com/g/2005">
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5763764290649132593.post-8296118659931644266</guid>
      <link>http://feedproxy.google.com/~r/closed-loop/~3/2GvUkUfjZLg/enterprise-it-immature-and-simple.html</link>
      <author>noreply@blogger.com</author>
      <category domain="http://www.blogger.com/atom/ns#">professional_pessimism</category>
      <category domain="http://www.blogger.com/atom/ns#">dysfunction</category>
      <title>Enterprise IT: immature and simple?</title>
      <description>&lt;div style="width: 400px;"&gt;&lt;blockquote style="font-size: 14px;"&gt;Once you've admitted to yourself that you're a bad programmer, you can stop all the silly posturing and pretending that you're great, and you can look around and find the best possible tools to help you look smarter than you are.&lt;/blockquote&gt;&lt;div style="font-size: 10px; text-align: right;"&gt;-  &lt;a href="http://agile.dzone.com/articles/youre-bad-programmer-embrace"&gt;You're a Bad Programmer. Embrace It.&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;blockquote style="font-size: 14px;"&gt;People pile layers on top of layers, abstractions on top of abstractions, complications on top of complications, crap on top of patches, and patches on top of crap until everything collapses onto itself and the singularity appears.&lt;/blockquote&gt;&lt;div style="font-size: 10px; text-align: right;"&gt;- &lt;a href="https://plus.google.com/u/1/115094562986465477143/posts/Di6RwCNKCrf"&gt;Comment to Ryan Dahl &lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;Recently I was confronted with the following problem:&lt;/p&gt;&lt;p&gt;&lt;img style="display: block; margin-left: auto; margin-right: auto;" src="http://lh5.ggpht.com/-IzdFc1QxjAg/To2nZrNNRZI/AAAAAAAABEg/RjMeN8Zil3w/Screen%252520shot%2525202011-09-22%252520at%2525202.26.51%252520PM.png?imgmax=800" border="0" alt="Screen shot 2011 09 22 at 2 26 51 PM" width="300" height="55" /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Which x maximizes u?&lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;I remember that I had solved similar problems in analysis lectures about a decade ago, but I had no clue how to approach the task today.&lt;/p&gt;&lt;p&gt;I also have the impression that it would take weeks if not month for me to get back into the subject. Ok, I can read the wikipedia article about the &lt;a href="http://en.wikipedia.org/wiki/Quartic_equation"&gt;quartic functions&lt;/a&gt; but I don't think I will get it without investing some major timespan. I am even doubtful if I could suck the knowledge I need from the internet, or if I finally would have to go to the bookstore and buy an analysis book ...&lt;/p&gt;&lt;p&gt;&lt;img style="float: right; margin-left:10px; margin-bottom:10px" src="http://lh3.ggpht.com/-4jRwnxOxAlQ/To2naYNE2pI/AAAAAAAABEk/ZI7NyVgGCHA/business-card-law-student.jpg?imgmax=800" border="0" alt="Business card law student" width="120" /&gt;&lt;/p&gt;&lt;p&gt;This made me think about my everyday work as a &lt;em&gt;"coder for hire"/consultant&lt;/em&gt; working in the trenches of enterprise IT projects.&lt;/p&gt;&lt;p&gt;I am confronted with problems I have never dealt with almost on a daily basis. However this makes me not nervous at all ... &lt;br /&gt;For instance in a recent project it turned out that I had to write reports with &lt;a href="http://msdn.microsoft.com/en-us/library/ms159106.aspx"&gt;SSRS&lt;/a&gt; and integrate them in some custom &lt;a href="http://sharepoint.microsoft.com/en-us/Pages/default.aspx"&gt;SharePoint&lt;/a&gt; controls. I have never done that before. I never came near to SSRS before and I delibarately had kept a long distance between me an SharePoint. Still I was not afraid of those tasks. I was quite confident that I could solve the tasks within the expectations of the customer (however I am sure there are many developers that would have provided better value for the customer). When I look at the quartic function above I am much less confident and would be get quite nervous if I had to solve that task ...&lt;/p&gt;&lt;p&gt;I started wondering about that fact and came up with some theories:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;I am just a natural talent in everything related to enterprise IT ... nah, I don't think so :-)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Enterprise IT is a simple domain.&lt;/strong&gt; We don't really deal with substantially complex or challenging problems, at least not in the technical realization. We mostly deal with trying to understand technology that has been created by other people. Trying to find out what the  assumptions and intentions of those other people were and how to match that as good as possible to our context. If we are good, we try not to apply the technologies in a wrong way. (note that I differenciate enterprise IT from other areas in IT like i.e. scaling a cloud infrastructure like facebook or developing new algorithms for video compression, there I think we still have real innovation and technical challenges).&lt;/li&gt;&lt;li&gt;In the IT industry, especially in enterprise technologies, &lt;strong&gt;knowledge is extremely easy to come by&lt;/strong&gt;. Probably the only real skill you need, is to effectively search the internet. Then you can almost solve any problem. Just ask Goolge and spend some time on &lt;a href="http://stackoverflow.com/"&gt;Stackoverflow&lt;/a&gt; ... you don't need a CS degree for that. Of course that was deliberately provocative: The small challenge remaining is how you combine and apply the knowledge you sucked from the internet. And of course the ability to know when &lt;em&gt;not&lt;/em&gt; to apply a technology and look for another solution.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;The IT industry is very immature&lt;/strong&gt;, at least in the enterprise environments I usually find myself. For each project I get hired, I usually have to go through an interview process. These interview processes have quite different flavors of sophistication but the people conducting the interviews think they check that I am suitable for the job. They usually get the requirements for the job through some obscure windings in the organization, but in most cases it has nothing to do with what I end up doing once I really get in touch with the project. It seems the enterprise IT industry has a hard time defining its specialists. &lt;strong&gt;The result is that a bunch of generalists like me are stumbling along doing a mediocre job&lt;/strong&gt; ...&lt;/li&gt;&lt;/ul&gt;&lt;div style="align:right; font-size: 10px; clear:right; "&gt;&lt;br/&gt;&lt;p&gt;&lt;a  href="http://twitter.com/jbandi"&gt;&lt;img style="margin: 0px 0px 0px 0px; border:none" src="http://www.google.com/s2/favicons?domain=twitter.com" alt="http://www.google.com/s2/favicons?domain=twitter.com" border="0" align="left" height="13px"/&gt; If you like this, follow me on twitter...&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5763764290649132593-8296118659931644266?l=blog.jonasbandi.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/aXY7a7dMV2jP1LhSBfz8bVZhVAc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aXY7a7dMV2jP1LhSBfz8bVZhVAc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/aXY7a7dMV2jP1LhSBfz8bVZhVAc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aXY7a7dMV2jP1LhSBfz8bVZhVAc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=2GvUkUfjZLg:9h8jKjO93cU:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=2GvUkUfjZLg:9h8jKjO93cU:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=2GvUkUfjZLg:9h8jKjO93cU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=2GvUkUfjZLg:9h8jKjO93cU:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=2GvUkUfjZLg:9h8jKjO93cU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=2GvUkUfjZLg:9h8jKjO93cU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=2GvUkUfjZLg:9h8jKjO93cU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=2GvUkUfjZLg:9h8jKjO93cU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=2GvUkUfjZLg:9h8jKjO93cU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=2GvUkUfjZLg:9h8jKjO93cU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=2GvUkUfjZLg:9h8jKjO93cU:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=2GvUkUfjZLg:9h8jKjO93cU:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=2GvUkUfjZLg:9h8jKjO93cU:Y59mnZtVT5U"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/2GvUkUfjZLg" height="1" width="1"/&gt;</description>
      <pubDate>Thu, 06 Oct 2011 15:04:00 +0200</pubDate>
      <link rel="replies" type="application/atom+xml" title="Post Comments" href="http://blog.jonasbandi.net/feeds/8296118659931644266/comments/default" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="replies" type="text/html" title="2 Comments" href="http://www.blogger.com/comment.g?blogID=5763764290649132593&amp;postID=8296118659931644266" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/8296118659931644266?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/8296118659931644266?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <updated xmlns="http://www.w3.org/2005/Atom">2011-10-06T21:12:41+02:00</updated>
      <content type="html" xmlns="http://www.w3.org/2005/Atom">
&lt;div style="width:400px"&gt;
&lt;blockquote style="font-size:14px"&gt;Once you've admitted to yourself that you're a bad programmer, you can stop all the silly posturing and pretending that you're great, and you can look around and find the best possible tools to help you look smarter than you
 are.&lt;/blockquote&gt;
&lt;div style="font-size:10px; text-align:right"&gt;- &lt;a href="http://agile.dzone.com/articles/youre-bad-programmer-embrace"&gt;
You're a Bad Programmer. Embrace It.&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;blockquote style="font-size:14px"&gt;People pile layers on top of layers, abstractions on top of abstractions, complications on top of complications, crap on top of patches, and patches on top of crap until everything collapses onto itself and the singularity
 appears.&lt;/blockquote&gt;
&lt;div style="font-size:10px; text-align:right"&gt;- &lt;a href="https://plus.google.com/u/1/115094562986465477143/posts/Di6RwCNKCrf"&gt;
Comment to Ryan Dahl &lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Recently I was confronted with the following problem:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://lh5.ggpht.com/-IzdFc1QxjAg/To2nZrNNRZI/AAAAAAAABEg/RjMeN8Zil3w/Screen%252520shot%2525202011-09-22%252520at%2525202.26.51%252520PM.png?imgmax=800" border="0" alt="Screen shot 2011 09 22 at 2 26 51 PM" width="300" height="55" style="display:block; margin-left:auto; margin-right:auto"&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Which x maximizes u?&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I remember that I had solved similar problems in analysis lectures about a decade ago, but I had no clue how to approach the task today.&lt;/p&gt;
&lt;p&gt;I also have the impression that it would take weeks if not month for me to get back into the subject. Ok, I can read the wikipedia article about the
&lt;a href="http://en.wikipedia.org/wiki/Quartic_equation"&gt;quartic functions&lt;/a&gt; but I don't think I will get it without investing some major timespan. I am even doubtful if I could suck the knowledge I need from the internet, or if I finally would have to go
 to the bookstore and buy an analysis book ...&lt;/p&gt;
&lt;p&gt;&lt;img src="http://lh3.ggpht.com/-4jRwnxOxAlQ/To2naYNE2pI/AAAAAAAABEk/ZI7NyVgGCHA/business-card-law-student.jpg?imgmax=800" border="0" alt="Business card law student" width="120" style="float:right; margin-left:10px; margin-bottom:10px"&gt;&lt;/p&gt;
&lt;p&gt;This made me think about my everyday work as a &lt;em&gt;&amp;quot;coder for hire&amp;quot;/consultant&lt;/em&gt; working in the trenches of enterprise IT projects.&lt;/p&gt;
&lt;p&gt;I am confronted with problems I have never dealt with almost on a daily basis. However this makes me not nervous at all ...
&lt;br&gt;
For instance in a recent project it turned out that I had to write reports with &lt;a href="http://msdn.microsoft.com/en-us/library/ms159106.aspx"&gt;
SSRS&lt;/a&gt; and integrate them in some custom &lt;a href="http://sharepoint.microsoft.com/en-us/Pages/default.aspx"&gt;
SharePoint&lt;/a&gt; controls. I have never done that before. I never came near to SSRS before and I delibarately had kept a long distance between me an SharePoint. Still I was not afraid of those tasks. I was quite confident that I could solve the tasks within the
 expectations of the customer (however I am sure there are many developers that would have provided better value for the customer). When I look at the quartic function above I am much less confident and would be get quite nervous if I had to solve that task
 ...&lt;/p&gt;
&lt;p&gt;I started wondering about that fact and came up with some theories:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I am just a natural talent in everything related to enterprise IT ... nah, I don't think so :-)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Enterprise IT is a simple domain.&lt;/strong&gt; We don't really deal with substantially complex or challenging problems, at least not in the technical realization. We mostly deal with trying to understand technology that has been created by other people.
 Trying to find out what the assumptions and intentions of those other people were and how to match that as good as possible to our context. If we are good, we try not to apply the technologies in a wrong way. (note that I differenciate enterprise IT from other
 areas in IT like i.e. scaling a cloud infrastructure like facebook or developing new algorithms for video compression, there I think we still have real innovation and technical challenges).&lt;/li&gt;&lt;li&gt;In the IT industry, especially in enterprise technologies, &lt;strong&gt;knowledge is extremely easy to come by&lt;/strong&gt;. Probably the only real skill you need, is to effectively search the internet. Then you can almost solve any problem. Just ask Goolge and
 spend some time on &lt;a href="http://stackoverflow.com/"&gt;Stackoverflow&lt;/a&gt; ... you don't need a CS degree for that. Of course that was deliberately provocative: The small challenge remaining is how you combine and apply the knowledge you sucked from the internet.
 And of course the ability to know when &lt;em&gt;not&lt;/em&gt; to apply a technology and look for another solution.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;The IT industry is very immature&lt;/strong&gt;, at least in the enterprise environments I usually find myself. For each project I get hired, I usually have to go through an interview process. These interview processes have quite different flavors of
 sophistication but the people conducting the interviews think they check that I am suitable for the job. They usually get the requirements for the job through some obscure windings in the organization, but in most cases it has nothing to do with what I end
 up doing once I really get in touch with the project. It seems the enterprise IT industry has a hard time defining its specialists.
&lt;strong&gt;The result is that a bunch of generalists like me are stumbling along doing a mediocre job&lt;/strong&gt; ...&lt;/li&gt;&lt;/ul&gt;
&lt;div style="font-size:10px; clear:right"&gt;&lt;br&gt;
&lt;p&gt;&lt;a href="http://twitter.com/jbandi"&gt;&lt;img src="http://www.google.com/s2/favicons?domain=twitter.com" alt="http://www.google.com/s2/favicons?domain=twitter.com" border="0" align="left" height="13px" style="margin:0px 0px 0px 0px; border:none"&gt; If you like
 this, follow me on twitter...&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="x_blogger-post-footer"&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/5763764290649132593-8296118659931644266?l=blog.jonasbandi.net" alt=""&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/aXY7a7dMV2jP1LhSBfz8bVZhVAc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aXY7a7dMV2jP1LhSBfz8bVZhVAc/0/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/aXY7a7dMV2jP1LhSBfz8bVZhVAc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aXY7a7dMV2jP1LhSBfz8bVZhVAc/1/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="x_feedflare"&gt;&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=2GvUkUfjZLg:9h8jKjO93cU:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=2GvUkUfjZLg:9h8jKjO93cU:4cEx4HpKnUU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=2GvUkUfjZLg:9h8jKjO93cU:yIl2AUoC8zA"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=2GvUkUfjZLg:9h8jKjO93cU:I9og5sOYxJI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=2GvUkUfjZLg:9h8jKjO93cU:F7zBnMyn0Lo"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=2GvUkUfjZLg:9h8jKjO93cU:F7zBnMyn0Lo" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=2GvUkUfjZLg:9h8jKjO93cU:V_sGLiPBpWU"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=2GvUkUfjZLg:9h8jKjO93cU:V_sGLiPBpWU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=2GvUkUfjZLg:9h8jKjO93cU:gIN9vFwOqvQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=2GvUkUfjZLg:9h8jKjO93cU:gIN9vFwOqvQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=2GvUkUfjZLg:9h8jKjO93cU:cGdyc7Q-1BI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=2GvUkUfjZLg:9h8jKjO93cU:G79ilh31hkQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=2GvUkUfjZLg:9h8jKjO93cU:Y59mnZtVT5U"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/2GvUkUfjZLg" height="1" width="1"&gt;</content>
      <app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-06T21:12:41.672+02:00</app:edited>
      <media:thumbnail url="http://lh5.ggpht.com/-IzdFc1QxjAg/To2nZrNNRZI/AAAAAAAABEg/RjMeN8Zil3w/s72-c/Screen%252520shot%2525202011-09-22%252520at%2525202.26.51%252520PM.png?imgmax=800" height="72" width="72" xmlns:media="http://search.yahoo.com/mrss/"></media:thumbnail>
      <thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total>
      <feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blog.jonasbandi.net/2011/10/enterprise-it-immature-and-simple.html</feedburner:origLink>
    </item>
    <item p3:etag="W/&quot;DU8BRnk5eSp7ImA9WhdUFEw.&quot;" xmlns:p3="http://schemas.google.com/g/2005">
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5763764290649132593.post-8775636418216909219</guid>
      <link>http://feedproxy.google.com/~r/closed-loop/~3/rggbOxcWuBg/thinking-out-of-box.html</link>
      <author>noreply@blogger.com</author>
      <category domain="http://www.blogger.com/atom/ns#">knowhow</category>
      <title>Thinking out of the Box</title>
      <description>&lt;p&gt;&lt;img style="float: right; margin-left: 10px;" src="http://lh3.ggpht.com/-qlz0m95Wd7Q/ToRbX4ZH_HI/AAAAAAAABEQ/qZe9_oXSz14/man-peeking-out-of-moving-box.jpg?imgmax=800" border="0" alt="Man peeking out of moving box" width="180" height="182" /&gt;&lt;/p&gt;&lt;p&gt;In requirements analysis we learn to &lt;a href="http://antonioyon.com/fantastic-explanation-of-popping-the-why-stac"&gt;pop the why stack&lt;/a&gt; and to &lt;a href="http://gojko.net/2009/12/10/challenging-requirements/"&gt;challenge business requirements&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;The goal of these techniques is to find the real business value at the heart of a given requirement. This real business value is often hidden by an already envisioned solution. Once we know this underlying business value, we might come up with a better/easier solution.    Most often the reason why we can come up with an alternative solution is that we can look at the problem in another context and from different perspectives than the original requester of the feature.&lt;/p&gt;&lt;p&gt;This matches with the concept of &lt;strong&gt;2nd order solutions&lt;/strong&gt; in systems theory: 1st order solutions work within the existing system while &lt;strong&gt;2nd order solutions modify the system itself&lt;/strong&gt;.&lt;/p&gt;&lt;p&gt;&lt;em&gt;The classical example from requirements engineering is the requirement that a software system must be able to print each UI-screen. The underlying reason was, that employees manually copied data from the given system into another system by printing them out and then typing them into a terminal of the other system.  Once this underlying reason was discovered, an alternative solution could be realized: integrating both systems and digitally export/import data. This solution was cheaper to realize for the implementator and provides more business value for the enduser.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;A more trivial example to illustrate this "out of the box thinking" is the following task:&lt;/p&gt;&lt;p&gt;Connect all the 9 dots in a single move, using 4 straight connected lines:&lt;/p&gt;&lt;p&gt;&lt;img style="display: block; margin-top: 20px; margin-left: auto; margin-right: auto;" src="http://lh4.ggpht.com/-iOEGjF8iVts/ToTymSSGNeI/AAAAAAAABEY/2Ltfhvpjk5E/Screen%252520shot%2525202011-09-29%252520at%2525201.04.09%252520PM.png?imgmax=800" border="0" alt="Screen shot 2011 09 29 at 1 04 09 PM" width="200" /&gt;&lt;/p&gt;&lt;p&gt;Can you do it with three lines?&lt;/p&gt;&lt;p&gt;Can you do it with one line?&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;div style="align: right; font-size: 10px; clear: right;"&gt;&lt;p&gt;&lt;a href="http://twitter.com/jbandi"&gt;&lt;img style="margin: 0px 0px 0px 0px; border: none;" src="http://www.google.com/s2/favicons?domain=twitter.com" border="0" alt="http://www.google.com/s2/favicons?domain=twitter.com" height="13px" align="left" /&gt; If you like this, follow me on twitter...&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5763764290649132593-8775636418216909219?l=blog.jonasbandi.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/e-9BCEcRd9OnhMwnnAi8GRZzbDw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/e-9BCEcRd9OnhMwnnAi8GRZzbDw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/e-9BCEcRd9OnhMwnnAi8GRZzbDw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/e-9BCEcRd9OnhMwnnAi8GRZzbDw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=rggbOxcWuBg:ur2I9ZwmgCc:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=rggbOxcWuBg:ur2I9ZwmgCc:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=rggbOxcWuBg:ur2I9ZwmgCc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=rggbOxcWuBg:ur2I9ZwmgCc:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=rggbOxcWuBg:ur2I9ZwmgCc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=rggbOxcWuBg:ur2I9ZwmgCc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=rggbOxcWuBg:ur2I9ZwmgCc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=rggbOxcWuBg:ur2I9ZwmgCc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=rggbOxcWuBg:ur2I9ZwmgCc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=rggbOxcWuBg:ur2I9ZwmgCc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=rggbOxcWuBg:ur2I9ZwmgCc:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=rggbOxcWuBg:ur2I9ZwmgCc:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=rggbOxcWuBg:ur2I9ZwmgCc:Y59mnZtVT5U"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/rggbOxcWuBg" height="1" width="1"/&gt;</description>
      <pubDate>Fri, 30 Sep 2011 00:35:00 +0200</pubDate>
      <link rel="replies" type="application/atom+xml" title="Post Comments" href="http://blog.jonasbandi.net/feeds/8775636418216909219/comments/default" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="replies" type="text/html" title="3 Comments" href="http://www.blogger.com/comment.g?blogID=5763764290649132593&amp;postID=8775636418216909219" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/8775636418216909219?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/8775636418216909219?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <updated xmlns="http://www.w3.org/2005/Atom">2011-09-30T23:24:17+02:00</updated>
      <content type="html" xmlns="http://www.w3.org/2005/Atom">
&lt;p&gt;&lt;img src="http://lh3.ggpht.com/-qlz0m95Wd7Q/ToRbX4ZH_HI/AAAAAAAABEQ/qZe9_oXSz14/man-peeking-out-of-moving-box.jpg?imgmax=800" border="0" alt="Man peeking out of moving box" width="180" height="182" style="float:right; margin-left:10px"&gt;&lt;/p&gt;
&lt;p&gt;In requirements analysis we learn to &lt;a href="http://antonioyon.com/fantastic-explanation-of-popping-the-why-stac"&gt;
pop the why stack&lt;/a&gt; and to &lt;a href="http://gojko.net/2009/12/10/challenging-requirements/"&gt;
challenge business requirements&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The goal of these techniques is to find the real business value at the heart of a given requirement. This real business value is often hidden by an already envisioned solution. Once we know this underlying business value, we might come up with a better/easier
 solution. Most often the reason why we can come up with an alternative solution is that we can look at the problem in another context and from different perspectives than the original requester of the feature.&lt;/p&gt;
&lt;p&gt;This matches with the concept of &lt;strong&gt;2nd order solutions&lt;/strong&gt; in systems theory: 1st order solutions work within the existing system while
&lt;strong&gt;2nd order solutions modify the system itself&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;The classical example from requirements engineering is the requirement that a software system must be able to print each UI-screen. The underlying reason was, that employees manually copied data from the given system into another system by printing them
 out and then typing them into a terminal of the other system. Once this underlying reason was discovered, an alternative solution could be realized: integrating both systems and digitally export/import data. This solution was cheaper to realize for the implementator
 and provides more business value for the enduser.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;A more trivial example to illustrate this &amp;quot;out of the box thinking&amp;quot; is the following task:&lt;/p&gt;
&lt;p&gt;Connect all the 9 dots in a single move, using 4 straight connected lines:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://lh4.ggpht.com/-iOEGjF8iVts/ToTymSSGNeI/AAAAAAAABEY/2Ltfhvpjk5E/Screen%252520shot%2525202011-09-29%252520at%2525201.04.09%252520PM.png?imgmax=800" border="0" alt="Screen shot 2011 09 29 at 1 04 09 PM" width="200" style="display:block; margin-top:20px; margin-left:auto; margin-right:auto"&gt;&lt;/p&gt;
&lt;p&gt;Can you do it with three lines?&lt;/p&gt;
&lt;p&gt;Can you do it with one line?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="font-size:10px; clear:right"&gt;
&lt;p&gt;&lt;a href="http://twitter.com/jbandi"&gt;&lt;img src="http://www.google.com/s2/favicons?domain=twitter.com" border="0" alt="http://www.google.com/s2/favicons?domain=twitter.com" height="13px" align="left" style="margin:0px 0px 0px 0px; border:none"&gt; If you like
 this, follow me on twitter...&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="x_blogger-post-footer"&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/5763764290649132593-8775636418216909219?l=blog.jonasbandi.net" alt=""&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/e-9BCEcRd9OnhMwnnAi8GRZzbDw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/e-9BCEcRd9OnhMwnnAi8GRZzbDw/0/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/e-9BCEcRd9OnhMwnnAi8GRZzbDw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/e-9BCEcRd9OnhMwnnAi8GRZzbDw/1/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="x_feedflare"&gt;&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=rggbOxcWuBg:ur2I9ZwmgCc:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=rggbOxcWuBg:ur2I9ZwmgCc:4cEx4HpKnUU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=rggbOxcWuBg:ur2I9ZwmgCc:yIl2AUoC8zA"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=rggbOxcWuBg:ur2I9ZwmgCc:I9og5sOYxJI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=rggbOxcWuBg:ur2I9ZwmgCc:F7zBnMyn0Lo"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=rggbOxcWuBg:ur2I9ZwmgCc:F7zBnMyn0Lo" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=rggbOxcWuBg:ur2I9ZwmgCc:V_sGLiPBpWU"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=rggbOxcWuBg:ur2I9ZwmgCc:V_sGLiPBpWU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=rggbOxcWuBg:ur2I9ZwmgCc:gIN9vFwOqvQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=rggbOxcWuBg:ur2I9ZwmgCc:gIN9vFwOqvQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=rggbOxcWuBg:ur2I9ZwmgCc:cGdyc7Q-1BI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=rggbOxcWuBg:ur2I9ZwmgCc:G79ilh31hkQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=rggbOxcWuBg:ur2I9ZwmgCc:Y59mnZtVT5U"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/rggbOxcWuBg" height="1" width="1"&gt;</content>
      <app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-30T23:24:17.721+02:00</app:edited>
      <media:thumbnail url="http://lh3.ggpht.com/-qlz0m95Wd7Q/ToRbX4ZH_HI/AAAAAAAABEQ/qZe9_oXSz14/s72-c/man-peeking-out-of-moving-box.jpg?imgmax=800" height="72" width="72" xmlns:media="http://search.yahoo.com/mrss/"></media:thumbnail>
      <thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total>
      <feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blog.jonasbandi.net/2011/09/thinking-out-of-box.html</feedburner:origLink>
    </item>
    <item p3:etag="W/&quot;CEUBSHs8fSp7ImA9WhdUEk4.&quot;" xmlns:p3="http://schemas.google.com/g/2005">
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5763764290649132593.post-2101466242363122865</guid>
      <link>http://feedproxy.google.com/~r/closed-loop/~3/ycmuEuwf18U/back-at-university-things-have-changed.html</link>
      <author>noreply@blogger.com</author>
      <category domain="http://www.blogger.com/atom/ns#">news</category>
      <title>Back at University - Things have changed</title>
      <description>&lt;p&gt;Recently I started studying for &lt;a href="http://www.mas-mtec.ethz.ch/"&gt;MAS-MTEC&lt;/a&gt; at ETH Zürich.&lt;/p&gt;&lt;p&gt;A characteristic of this post graduate studies is that most lectures are shared with graduate students.&lt;/p&gt;&lt;p&gt;I am impressed at how much studying today has changed from when I was studying a decade ago. This impressively shows how fast technology is changing the way we live, which I seem to forget in my every-day life.&lt;/p&gt;&lt;p&gt;The internet is ubiquitous when studing today: The studies are officially organized over the internet (lecture selection, examination registration, learning material distribution, task assignments, group formation for exercises ...). &lt;br /&gt;&lt;img style="float: right; margin-left: 10px;" src="http://lh6.ggpht.com/-5XVAc4UunkM/ToJJRVRy9QI/AAAAAAAABEI/loo1BdX1fs0/laptopspicsmall.jpg?imgmax=800" border="0" alt="Laptopspicsmall" width="220" /&gt; On the first week I got a invitation to a DropBox share from somebody I actually do not know (probably a higher semester student) which contains over 1GB of "semi-official" studying material (solutions for exercises, example examinations, additional material ...) &lt;br /&gt; One lecture even has a &lt;a href="https://twitter.com/#!/search/realtime/%23marketingmtec"&gt;twitter hashtag&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt; Consequently practically every student is bringing a laptop or tablet to the lectures. I never have seen such a high local density of MacBooks as in the Marketing lecture :-)&lt;/p&gt;&lt;p&gt;Comparing that to when I started studying 12 years ago: I did not even own a cell-phone yet ... I also clearly remember when a lecture assistant suggested to use "Google", and I had never heard that strange term ...&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5763764290649132593-2101466242363122865?l=blog.jonasbandi.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/yxO7Rj2c4ngbN5Uec3weylAIL5c/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yxO7Rj2c4ngbN5Uec3weylAIL5c/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/yxO7Rj2c4ngbN5Uec3weylAIL5c/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yxO7Rj2c4ngbN5Uec3weylAIL5c/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=ycmuEuwf18U:eTTt8wwcBe4:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=ycmuEuwf18U:eTTt8wwcBe4:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=ycmuEuwf18U:eTTt8wwcBe4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=ycmuEuwf18U:eTTt8wwcBe4:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=ycmuEuwf18U:eTTt8wwcBe4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=ycmuEuwf18U:eTTt8wwcBe4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=ycmuEuwf18U:eTTt8wwcBe4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=ycmuEuwf18U:eTTt8wwcBe4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=ycmuEuwf18U:eTTt8wwcBe4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=ycmuEuwf18U:eTTt8wwcBe4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=ycmuEuwf18U:eTTt8wwcBe4:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=ycmuEuwf18U:eTTt8wwcBe4:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=ycmuEuwf18U:eTTt8wwcBe4:Y59mnZtVT5U"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/ycmuEuwf18U" height="1" width="1"/&gt;</description>
      <pubDate>Wed, 28 Sep 2011 00:08:00 +0200</pubDate>
      <link rel="replies" type="application/atom+xml" title="Post Comments" href="http://blog.jonasbandi.net/feeds/2101466242363122865/comments/default" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="replies" type="text/html" title="0 Comments" href="http://www.blogger.com/comment.g?blogID=5763764290649132593&amp;postID=2101466242363122865" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/2101466242363122865?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/2101466242363122865?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <updated xmlns="http://www.w3.org/2005/Atom">2011-09-28T19:50:59+02:00</updated>
      <content type="html" xmlns="http://www.w3.org/2005/Atom">
&lt;p&gt;Recently I started studying for &lt;a href="http://www.mas-mtec.ethz.ch/"&gt;MAS-MTEC&lt;/a&gt; at ETH Zürich.&lt;/p&gt;
&lt;p&gt;A characteristic of this post graduate studies is that most lectures are shared with graduate students.&lt;/p&gt;
&lt;p&gt;I am impressed at how much studying today has changed from when I was studying a decade ago. This impressively shows how fast technology is changing the way we live, which I seem to forget in my every-day life.&lt;/p&gt;
&lt;p&gt;The internet is ubiquitous when studing today: The studies are officially organized over the internet (lecture selection, examination registration, learning material distribution, task assignments, group formation for exercises ...).
&lt;br&gt;
&lt;img src="http://lh6.ggpht.com/-5XVAc4UunkM/ToJJRVRy9QI/AAAAAAAABEI/loo1BdX1fs0/laptopspicsmall.jpg?imgmax=800" border="0" alt="Laptopspicsmall" width="220" style="float:right; margin-left:10px"&gt; On the first week I got a invitation to a DropBox share from
 somebody I actually do not know (probably a higher semester student) which contains over 1GB of &amp;quot;semi-official&amp;quot; studying material (solutions for exercises, example examinations, additional material ...)
&lt;br&gt;
One lecture even has a &lt;a href="https://twitter.com/#!/search/realtime/%23marketingmtec"&gt;
twitter hashtag&lt;/a&gt;. &lt;br&gt;
&lt;br&gt;
Consequently practically every student is bringing a laptop or tablet to the lectures. I never have seen such a high local density of MacBooks as in the Marketing lecture :-)&lt;/p&gt;
&lt;p&gt;Comparing that to when I started studying 12 years ago: I did not even own a cell-phone yet ... I also clearly remember when a lecture assistant suggested to use &amp;quot;Google&amp;quot;, and I had never heard that strange term ...&lt;/p&gt;
&lt;div class="x_blogger-post-footer"&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/5763764290649132593-2101466242363122865?l=blog.jonasbandi.net" alt=""&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/yxO7Rj2c4ngbN5Uec3weylAIL5c/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yxO7Rj2c4ngbN5Uec3weylAIL5c/0/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/yxO7Rj2c4ngbN5Uec3weylAIL5c/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yxO7Rj2c4ngbN5Uec3weylAIL5c/1/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="x_feedflare"&gt;&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=ycmuEuwf18U:eTTt8wwcBe4:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=ycmuEuwf18U:eTTt8wwcBe4:4cEx4HpKnUU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=ycmuEuwf18U:eTTt8wwcBe4:yIl2AUoC8zA"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=ycmuEuwf18U:eTTt8wwcBe4:I9og5sOYxJI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=ycmuEuwf18U:eTTt8wwcBe4:F7zBnMyn0Lo"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=ycmuEuwf18U:eTTt8wwcBe4:F7zBnMyn0Lo" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=ycmuEuwf18U:eTTt8wwcBe4:V_sGLiPBpWU"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=ycmuEuwf18U:eTTt8wwcBe4:V_sGLiPBpWU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=ycmuEuwf18U:eTTt8wwcBe4:gIN9vFwOqvQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=ycmuEuwf18U:eTTt8wwcBe4:gIN9vFwOqvQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=ycmuEuwf18U:eTTt8wwcBe4:cGdyc7Q-1BI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=ycmuEuwf18U:eTTt8wwcBe4:G79ilh31hkQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=ycmuEuwf18U:eTTt8wwcBe4:Y59mnZtVT5U"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/ycmuEuwf18U" height="1" width="1"&gt;</content>
      <app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-28T19:50:59.575+02:00</app:edited>
      <media:thumbnail url="http://lh6.ggpht.com/-5XVAc4UunkM/ToJJRVRy9QI/AAAAAAAABEI/loo1BdX1fs0/s72-c/laptopspicsmall.jpg?imgmax=800" height="72" width="72" xmlns:media="http://search.yahoo.com/mrss/"></media:thumbnail>
      <thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total>
      <feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blog.jonasbandi.net/2011/09/back-at-university-things-have-changed.html</feedburner:origLink>
    </item>
    <item p3:etag="W/&quot;CU4DQ389fyp7ImA9WhdUEEo.&quot;" xmlns:p3="http://schemas.google.com/g/2005">
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5763764290649132593.post-5669996008744282886</guid>
      <link>http://feedproxy.google.com/~r/closed-loop/~3/CHsc6DEawuA/promotion-usabilty-to-go-for-developers.html</link>
      <author>noreply@blogger.com</author>
      <category domain="http://www.blogger.com/atom/ns#">news</category>
      <title>Promotion: Usabilty-to-Go for Developers</title>
      <description>&lt;p&gt;&lt;a href="http://www.techtalk.ch/"&gt;&lt;img style="float: right; margin-top: 10px; margin-bottom: 10px; margin-left: 10px;" src="http://lh6.ggpht.com/-E3zoD0-db3g/ToDq5csI9gI/AAAAAAAABEA/GfOrATljgtw/techtalk.jpg?imgmax=800" border="0" alt="Techtalk" width="226" height="45" /&gt;&lt;/a&gt;Claudia and Stefan from TechTalk are presenting their &lt;em&gt;Usabilty-to-Go  Workshop&lt;/em&gt; on 3.11.2011 in the Technopark Zurich. &lt;br /&gt; In this one day workshop developers can learn how to apply efficient usability-design in their enterprise project. &lt;br /&gt;&lt;br /&gt;Check it out: &lt;a href="http://www.techtalk.ch/About-us/News/Events/Usability-to-go-fur-Entwickler.aspx?lang=de-CH"&gt;Details and registration.&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5763764290649132593-5669996008744282886?l=blog.jonasbandi.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/BeCGUPvT3a_g5bYiRUVZYHvcoDY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BeCGUPvT3a_g5bYiRUVZYHvcoDY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/BeCGUPvT3a_g5bYiRUVZYHvcoDY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BeCGUPvT3a_g5bYiRUVZYHvcoDY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=CHsc6DEawuA:i6itIa2mWbI:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=CHsc6DEawuA:i6itIa2mWbI:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=CHsc6DEawuA:i6itIa2mWbI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=CHsc6DEawuA:i6itIa2mWbI:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=CHsc6DEawuA:i6itIa2mWbI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=CHsc6DEawuA:i6itIa2mWbI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=CHsc6DEawuA:i6itIa2mWbI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=CHsc6DEawuA:i6itIa2mWbI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=CHsc6DEawuA:i6itIa2mWbI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=CHsc6DEawuA:i6itIa2mWbI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=CHsc6DEawuA:i6itIa2mWbI:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=CHsc6DEawuA:i6itIa2mWbI:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=CHsc6DEawuA:i6itIa2mWbI:Y59mnZtVT5U"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/CHsc6DEawuA" height="1" width="1"/&gt;</description>
      <pubDate>Mon, 26 Sep 2011 23:13:00 +0200</pubDate>
      <link rel="replies" type="application/atom+xml" title="Post Comments" href="http://blog.jonasbandi.net/feeds/5669996008744282886/comments/default" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="replies" type="text/html" title="1 Comments" href="http://www.blogger.com/comment.g?blogID=5763764290649132593&amp;postID=5669996008744282886" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/5669996008744282886?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/5669996008744282886?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <updated xmlns="http://www.w3.org/2005/Atom">2011-09-26T23:52:52+02:00</updated>
      <content type="html" xmlns="http://www.w3.org/2005/Atom">
&lt;p&gt;&lt;a href="http://www.techtalk.ch/"&gt;&lt;img src="http://lh6.ggpht.com/-E3zoD0-db3g/ToDq5csI9gI/AAAAAAAABEA/GfOrATljgtw/techtalk.jpg?imgmax=800" border="0" alt="Techtalk" width="226" height="45" style="float:right; margin-top:10px; margin-bottom:10px; margin-left:10px"&gt;&lt;/a&gt;Claudia
 and Stefan from TechTalk are presenting their &lt;em&gt;Usabilty-to-Go&amp;nbsp; Workshop&lt;/em&gt; on 3.11.2011 in the Technopark Zurich.
&lt;br&gt;
In this one day workshop developers can learn how to apply efficient usability-design in their enterprise project.
&lt;br&gt;
&lt;br&gt;
Check it out:&amp;nbsp;&lt;a href="http://www.techtalk.ch/About-us/News/Events/Usability-to-go-fur-Entwickler.aspx?lang=de-CH"&gt;Details and registration.&lt;/a&gt;&lt;/p&gt;
&lt;div class="x_blogger-post-footer"&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/5763764290649132593-5669996008744282886?l=blog.jonasbandi.net" alt=""&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/BeCGUPvT3a_g5bYiRUVZYHvcoDY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BeCGUPvT3a_g5bYiRUVZYHvcoDY/0/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/BeCGUPvT3a_g5bYiRUVZYHvcoDY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BeCGUPvT3a_g5bYiRUVZYHvcoDY/1/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="x_feedflare"&gt;&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=CHsc6DEawuA:i6itIa2mWbI:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=CHsc6DEawuA:i6itIa2mWbI:4cEx4HpKnUU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=CHsc6DEawuA:i6itIa2mWbI:yIl2AUoC8zA"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=CHsc6DEawuA:i6itIa2mWbI:I9og5sOYxJI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=CHsc6DEawuA:i6itIa2mWbI:F7zBnMyn0Lo"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=CHsc6DEawuA:i6itIa2mWbI:F7zBnMyn0Lo" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=CHsc6DEawuA:i6itIa2mWbI:V_sGLiPBpWU"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=CHsc6DEawuA:i6itIa2mWbI:V_sGLiPBpWU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=CHsc6DEawuA:i6itIa2mWbI:gIN9vFwOqvQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=CHsc6DEawuA:i6itIa2mWbI:gIN9vFwOqvQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=CHsc6DEawuA:i6itIa2mWbI:cGdyc7Q-1BI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=CHsc6DEawuA:i6itIa2mWbI:G79ilh31hkQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=CHsc6DEawuA:i6itIa2mWbI:Y59mnZtVT5U"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/CHsc6DEawuA" height="1" width="1"&gt;</content>
      <app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-26T23:52:52.167+02:00</app:edited>
      <media:thumbnail url="http://lh6.ggpht.com/-E3zoD0-db3g/ToDq5csI9gI/AAAAAAAABEA/GfOrATljgtw/s72-c/techtalk.jpg?imgmax=800" height="72" width="72" xmlns:media="http://search.yahoo.com/mrss/"></media:thumbnail>
      <thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total>
      <feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blog.jonasbandi.net/2011/09/promotion-usabilty-to-go-for-developers.html</feedburner:origLink>
    </item>
    <item>
      <guid isPermaLink="true">http://www.databinding.net/blog/post/2011/09/26/asynchrone-programmierung-nach-synchroner-art.html</guid>
      <link>http://www.databinding.net/blog/post/2011/09/26/asynchrone-programmierung-nach-synchroner-art.html</link>
      <author>ipt:linkTo_UnCryptMailto('nbjmup+'); (René)</author>
      <category>.NET Development</category>
      <title>Asynchrone Programmierung nach synchroner Art</title>
      <description>Die asynchrone Programmierung mit Callbacks erfordert schon ein wenig mehr Disziplin. Mit der TPL begann der Schritt darin die Programmierung und die Fehlerbehandlung dahin gehend zu vereinfachen.</description>
      <pubDate>Mon, 26 Sep 2011 21:32:00 +0200</pubDate>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"> Die asynchrone Programmierung mit Callbacks erfordert schon ein wenig mehr Disziplin. Mit der TPL begann der Schritt darin die Programmierung und die Fehlerbehandlung dahin gehend zu vereinfachen.</content:encoded>
    </item>
    <item>
      <guid isPermaLink="true">http://www.databinding.net/blog/post/2011/09/21/metaprogramming-in-net.html</guid>
      <link>http://www.databinding.net/blog/post/2011/09/21/metaprogramming-in-net.html</link>
      <author>ipt:linkTo_UnCryptMailto('nbjmup+'); (René)</author>
      <category>.NET Development</category>
      <category>T4</category>
      <category>Mind Map</category>
      <title>Metaprogramming in .NET</title>
      <description>Es gibt viele Ansätze, um mehr Flexibilität in den Entwicklungsprozess zu bekommen, einer davon ist Metaprogrammierung. Dabei handelt es sich meist um ein zusätzliches Level in Softwaresystemen, das zu meh...</description>
      <pubDate>Wed, 21 Sep 2011 05:41:00 +0200</pubDate>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"> Es gibt viele Ansätze, um mehr Flexibilität in den Entwicklungsprozess zu bekommen, einer davon ist Metaprogrammierung. Dabei handelt es sich meist um ein zusätzliches Level in Softwaresystemen, das zu mehr Flexibilität beitragen soll. In .NET gibt es dafür mehrere Ansätze. Aus diesem Grund habe ich damit angefangen, ein Mindmap zu erstellen, da mich das Thema schon seit längeren interessiert und in diversen Projekten auf die eine oder andere Weise begleitet hat.</content:encoded>
    </item>
    <item>
      <guid isPermaLink="true">http://www.databinding.net/blog/post/2011/09/19/entity-framework-4-der-designer-stottert-bei-zusammengesetzten-schluesseln-compositekey.html</guid>
      <link>http://www.databinding.net/blog/post/2011/09/19/entity-framework-4-der-designer-stottert-bei-zusammengesetzten-schluesseln-compositekey.html</link>
      <author>ipt:linkTo_UnCryptMailto('nbjmup+'); (René)</author>
      <category>.NET Development</category>
      <category>Entity Framework</category>
      <title>Entity Framework 4 - Der Designer stottert bei zusammengesetzten Schlüsseln (CompositeKey)</title>
      <description>Heute wurde ich mit einem interessanten Problem im Entity Designer bei zusammengesetzten Schlüsseln konfrontiert. Das Modell wurde mit dem Assistenten angelegt. Dabei war die Einstellungen &amp;quot;Fremdschlüsselspalt...</description>
      <pubDate>Mon, 19 Sep 2011 22:28:00 +0200</pubDate>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"> Heute wurde ich mit einem interessanten Problem im Entity Designer bei zusammengesetzten Schlüsseln konfrontiert. Das Modell wurde mit dem Assistenten angelegt. Dabei war die Einstellungen "Fremdschlüsselspalten in das Modell einbeziehen" aktiviert und es wurde die Standard-Code Generierungsvorlage verwendet.</content:encoded>
    </item>
    <item>
      <guid isPermaLink="false">http://schaedlerdaniel.wordpress.com/?p=429</guid>
      <link>http://schaedlerdaniel.wordpress.com/2011/09/18/asp-net-optimization-bundling/</link>
      <category>ASP.NET /AJAX /ASP.NET MVC</category>
      <category>ASP.NET 4.0</category>
      <category>ASP.NET 4.5</category>
      <category>ASP.NET Optimization</category>
      <category>CSS Minifiyng</category>
      <category>CSS minimieren</category>
      <category>JavaScript</category>
      <category>JavaScript / HTML /CSS /XML</category>
      <category>JavaScript Minifying</category>
      <category>JavaScript Minimierung</category>
      <title>ASP.NET Optimization Bundling</title>
      <description>Im ganzen HTML 5/ CSS3 etc. Gepredige habe ich doch noch was gefunden was im ASP.NET 4.5 kommen wird. Nun wenn man NuGet mal durchsucht, dann wird man es auch für ASP.NET 4.0 finden. Das Optimization Bundling (Im .NET 4.0 wird es mit Microsoft.Web.Optimization,
 und dann später mit System.Web.Optimization referenziert). Das Video ASP.NET 4.5 loves [...]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=schaedlerdaniel.wordpress.com&amp;amp;blog=16378069&amp;amp;post=429&amp;amp;subd=schaedlerdaniel&amp;amp;ref=&amp;amp;feed=1" width="1" height="1"&gt;</description>
      <pubDate>Sun, 18 Sep 2011 10:08:26 Z</pubDate>
      <comments>http://schaedlerdaniel.wordpress.com/2011/09/18/asp-net-optimization-bundling/#comments</comments>
      <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">schaedlerdaniel</dc:creator>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;Im ganzen HTML 5/ CSS3 etc. Gepredige habe ich doch noch was gefunden was im ASP.NET 4.5 kommen wird. Nun wenn man NuGet mal durchsucht, dann wird man es auch für ASP.NET 4.0 finden. Das Optimization Bundling (Im .NET 4.0 wird es mit Microsoft.Web.Optimization, und dann später mit System.Web.Optimization referenziert). Das Video &lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-796T" target="_blank"&gt;ASP.NET 4.5 loves HTML5, CSS3 &amp;amp; JavaScript&lt;/a&gt; habe ich als sehr informativ empfunden, obwohl nicht wirklich viel neues kommt, oder die Änderunge nicht gerade revolutionär sind.&lt;/p&gt;
&lt;p&gt;Damit ich das Pack auch produktiv nutzen kann, habe ich es mal analog dem Video nachgespielt, damit ich, falls ich in meinem gesetzten Alter, nicht mehr alles auswendig weiss, nachlesen kann. Also anfangen, ich von meiner Warte aus entwickle immer noch mit ASP.NET WebForms entgegen dem Hype zu MVC. Also starten wir wie folgt, indem wir eine neue WebForms Solution erstellen.&lt;/p&gt;
&lt;p&gt;Kurzübersicht was wir alles machen werden&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Erstellen einer ASP.NET 4.0 Solution&lt;/li&gt;
&lt;li&gt;Installation des Optimization Bundling per NuGet&lt;/li&gt;
&lt;li&gt;Analyse Vorher /Nachher&lt;/li&gt;
&lt;li&gt;Fazit&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Also fangen wir damit an:&lt;/p&gt;
&lt;h3&gt;Erstellen einer ASP.NET Solution&lt;/h3&gt;
&lt;p&gt;Wir starten unser Visual Studio 2010 (Express/Professional/Premium/Ultimae), wählen die Rubrik Web und dann die Vorlage für ASP.NET WebForms. Ein Klick darauf und unsere Solution ist erstellt.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://byfiles.storage.live.com/y1pTvdxKpi-cdwvi_KtR87IIh3rbIPackUG9rf1fO-VGOT_9sboltT0YI6kSp7RmyVGTdNbRmIfCpA/Frisch%20erstelle%20Solution%20ASP.NET%20Optimization%20Bundling.jpg?psid=1" /&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;h3&gt;Installieren des ASP.NET Optimization &amp;#8211; Bundling&lt;/h3&gt;
&lt;p&gt;Ist eigentlich keine Hexerei und kann bequem über NuGet erfolgen, dass dann alle notwendigen Schritte übernimmt, und auch die Referenzen im Projekt richtig setzt.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://byfiles.storage.live.com/y1pHL7UKB50SawiDa3qLnxkn7DE_q2XFgJ7QdrM4XpHQtUzAa3c6Rl0PgFG1q1N0KTRbB9IqgKsuVI/NuGet%20Package%20ASP.NET%20Optimization%20Bundling.jpg?psid=1" /&gt;&lt;/p&gt;
&lt;p&gt;Nach der Installation ist alles bereit, damit wir unsere ASP.NET Lösung optimieren können&lt;/p&gt;
&lt;h3&gt;Analyse  Vorher /Nachher&lt;/h3&gt;
&lt;p&gt;In diesem kleinen Beispiel hole ich per XHTML-Request drei Personen aus meinem Model und zeige diese an (der XHTML Request kann in seiner Dauer variieren, da interessiert uns die Zeit primär erstmal nicht.) Starten wir die jungfräuliche Solution und drücken im IE9 die Developer Tools mit F12 sehen wir folgende Verkehr:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://byfiles.storage.live.com/y1pKIRQl4cRQj_vGMJ64It_WBoX5oKx2urrwgqasVE7cChTrVUfUgUXWMr9cY9l4ZcNjD73Aia9vz8/IE9%20Network%20Traffic%20before%20ASP.NET%20Optimization%20Bundling.jpg?psid=1" /&gt;&lt;/p&gt;
&lt;p&gt;Interssant sind folgende zwei Punkte&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;/Styles/Site.css&lt;/li&gt;
&lt;li&gt;/Scripts/jquery-1.4.4.min.js&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nun, da wir das Optimization Pack bereits mit NuGet installiert haben, entfällt eine Referenz darauf, denn diese ist bereits vorhanden. Was wir noch machen müssen ist in der Global.asax dafür sorgen, dass die Dateien auch wirklich gebündelt übertragen werden. &lt;/p&gt;
&lt;p&gt;&lt;pre class="brush: csharp;"&gt;
        void Application_Start(object sender, EventArgs e)
        {
            BundleTable.Bundles.EnableDefaultBundles();
            Bundle myBundle = new Bundle(&amp;quot;~/Scripts&amp;quot;, typeof(JsMinify));
            myBundle.AddFile(&amp;quot;~/Scripts/jquery-1.4.4.min.js&amp;quot;);
            myBundle.AddFile(&amp;quot;~/Scripts/PersonScript.js&amp;quot;);
        }
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Anschliessend passen wir in der Site.Master die Referenz auf JQuery an:&lt;/p&gt;
&lt;p&gt;Vorher:&lt;br /&gt;
&lt;pre class="brush: xml;"&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;Scripts/jquery-1.4.4.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;
&lt;/pre&gt;
&lt;/p&gt;
&lt;p&gt;Nachher:&lt;br /&gt;
&lt;pre class="brush: xml;"&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;Scripts/js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Anschliessend starten wir unsere Solution wieder und analysieren mit den Developer Tools nocheinmal den Netzwerk-Verkehr. Und siehe da, die zwei vorherigen Kandidaten (Scripts und CSS) haben einen kleinen Hypersprung ausgefürht&lt;/p&gt;
&lt;p&gt;&lt;img src="https://byfiles.storage.live.com/y1pBqMsDvfJXHP2Y4yzhEMMGhNBlRNX2okDUnkQgMEmH4qatz09s-eNWaHe5zPz1pjU0NRts_1G6ds/IE9%20Network%20Traffic%20after%20ASP.NET%20Optimization%20Bundling.jpg?psid=1" /&gt;&lt;/p&gt;
&lt;h3&gt;Fazit&lt;/h3&gt;
&lt;p&gt;Wir haben einen Performance Anstieg erhalten, der unsere Webseite schneller übertragen lässt. In diesem sehr, sehr kleinen Beispiel und auch dem localhost mögen die Einsparungen vielleicht nicht enorm sein, betrachtet es man aber so, dass viele Wege zu einer Webseite führen können und nicht immer alles übertragen wird (Package los), dann ist dies sicher ein guter Weg die Daten zu komprimieren.&lt;/p&gt;
&lt;p&gt;
Bei sehr vielen JavaScript- und CSS-Dateien lohnt es sich auf alle Fälle. Die Demo Lösung kann &lt;a href="https://skydrive.live.com/?cid=ce67b0bb158a026d&amp;amp;sc=documents&amp;amp;id=CE67B0BB158A026D%214391" target="_blank"&gt;hier&lt;/a&gt; heruntergeladen werden. (Das MVC Beispiel wird im Video erläuter, sodass ich dies nicht erstellt habe.)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dotnet-kicks.de/kick/?url=http%3a%2f%2fschaedlerdaniel.wordpress.com%2f2011%2f09%2f18%2fasp-net-optimization-bundling%2f"&gt;&lt;img src="http://dotnet-kicks.de/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fschaedlerdaniel.wordpress.com%2f2011%2f09%2f18%2fasp-net-optimization-bundling%2f" border="0" alt="kick it on dotnet-kicks.de" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;br /&gt;  &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/schaedlerdaniel.wordpress.com/429/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/schaedlerdaniel.wordpress.com/429/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/schaedlerdaniel.wordpress.com/429/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/schaedlerdaniel.wordpress.com/429/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/schaedlerdaniel.wordpress.com/429/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/schaedlerdaniel.wordpress.com/429/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/schaedlerdaniel.wordpress.com/429/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/schaedlerdaniel.wordpress.com/429/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/schaedlerdaniel.wordpress.com/429/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/schaedlerdaniel.wordpress.com/429/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/schaedlerdaniel.wordpress.com/429/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/schaedlerdaniel.wordpress.com/429/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/schaedlerdaniel.wordpress.com/429/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/schaedlerdaniel.wordpress.com/429/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=schaedlerdaniel.wordpress.com&amp;amp;blog=16378069&amp;amp;post=429&amp;amp;subd=schaedlerdaniel&amp;amp;ref=&amp;amp;feed=1" width="1" height="1" /&gt;</content:encoded>
      <wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://schaedlerdaniel.wordpress.com/2011/09/18/asp-net-optimization-bundling/feed/</wfw:commentRss>
      <slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments>
      <media:content url="http://0.gravatar.com/avatar/e50530c3e478a8a210b7df39006fdc68?s=96&amp;d=identicon&amp;r=G" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">schaedlerdaniel</media:title>
      </media:content>
      <media:content url="https://byfiles.storage.live.com/y1pTvdxKpi-cdwvi_KtR87IIh3rbIPackUG9rf1fO-VGOT_9sboltT0YI6kSp7RmyVGTdNbRmIfCpA/Frisch%20erstelle%20Solution%20ASP.NET%20Optimization%20Bundling.jpg?psid=1" medium="image" xmlns:media="http://search.yahoo.com/mrss/"></media:content>
      <media:content url="https://byfiles.storage.live.com/y1pHL7UKB50SawiDa3qLnxkn7DE_q2XFgJ7QdrM4XpHQtUzAa3c6Rl0PgFG1q1N0KTRbB9IqgKsuVI/NuGet%20Package%20ASP.NET%20Optimization%20Bundling.jpg?psid=1" medium="image" xmlns:media="http://search.yahoo.com/mrss/"></media:content>
      <media:content url="https://byfiles.storage.live.com/y1pKIRQl4cRQj_vGMJ64It_WBoX5oKx2urrwgqasVE7cChTrVUfUgUXWMr9cY9l4ZcNjD73Aia9vz8/IE9%20Network%20Traffic%20before%20ASP.NET%20Optimization%20Bundling.jpg?psid=1" medium="image" xmlns:media="http://search.yahoo.com/mrss/"></media:content>
      <media:content url="https://byfiles.storage.live.com/y1pBqMsDvfJXHP2Y4yzhEMMGhNBlRNX2okDUnkQgMEmH4qatz09s-eNWaHe5zPz1pjU0NRts_1G6ds/IE9%20Network%20Traffic%20after%20ASP.NET%20Optimization%20Bundling.jpg?psid=1" medium="image" xmlns:media="http://search.yahoo.com/mrss/"></media:content>
      <media:content url="http://dotnet-kicks.de/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fschaedlerdaniel.wordpress.com%2f2011%2f09%2f18%2fasp-net-optimization-bundling%2f" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">kick it on dotnet-kicks.de</media:title>
      </media:content>
    </item>
    <item p3:etag="W/&quot;DE4MQ3szeSp7ImA9WhdVEUw.&quot;" xmlns:p3="http://schemas.google.com/g/2005">
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5763764290649132593.post-5564863451999976544</guid>
      <link>http://feedproxy.google.com/~r/closed-loop/~3/PpyrjF3bcGM/using-jpa-metamodel-annotation.html</link>
      <author>noreply@blogger.com</author>
      <category domain="http://www.blogger.com/atom/ns#">object-relational mapping</category>
      <category domain="http://www.blogger.com/atom/ns#">quicktip</category>
      <title>Using the JPA metamodel annotation processor</title>
      <description>&lt;p&gt;Some time ago I claimed that the &lt;a href="http://jcp.org/en/jsr/detail?id=317"&gt;JPA 2.0&lt;/a&gt; metamodel API &lt;a href="http://blog.jonasbandi.net/2009/05/jpa2-potential-to-revolutionize-java.html"&gt;has the potential to revolutionize Java development&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;I still think that the concept is very interesting by showing an approach to strongly typed meta programming in Java. However I think it does not have any relevance in real world projects. One reason is that strongly typed JPA criteria queries are very verbose and bring their own accidental complexity compared with JPQL. The other reason is the actual usage of an annotation processor in any build environment is still too complicated.&lt;/p&gt;&lt;p&gt;In the following I show how to configure the &lt;a href="http://wiki.eclipse.org/UserGuide/JPA/Using_the_Canonical_Model_Generator_(ELUG)"&gt;JPA metamodel annotation processor of EclipseLink&lt;/a&gt; for different environments. &lt;strong&gt;A working example for this is &lt;a href="https://code.google.com/p/jpaworkshop/source/browse/trunk/exercise/06.3-queries-metamodel/"&gt;exercise 6.3&lt;/a&gt; in our &lt;a href="https://code.google.com/p/jpaworkshop/"&gt;jpaworkshop&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;strong style="font-size: 130%;"&gt;Maven&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;EclipseLink documentation is (once again) lacking, ignoring the reality that Maven is currently the most prominent build environment in the enterprise.&lt;/p&gt;&lt;p&gt;Fortunately this is well documented &lt;a href="http://agoncal.wordpress.com/2010/05/28/jpa-2-0-criteria-api-with-maven-and-eclipselink/"&gt;here&lt;/a&gt; and &lt;a href="http://blog.gueck.com/2009/12/generating-jpa-20-criteria-canonical.html"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;You need to configure a maven processor plugin in &lt;a href="https://code.google.com/p/jpaworkshop/source/browse/trunk/exercise/06.3-queries-metamodel/pom.xml"&gt;the pom&lt;/a&gt; that triggers the annotation processor in the &lt;code&gt;generate-sources&lt;/code&gt; phase:&lt;/p&gt;&lt;script src="https://gist.github.com/1201161.js?file=gistfile1.xml"&gt;&lt;/script&gt;&lt;p&gt;There are different maven processor plugins. I am using &lt;a href="http://code.google.com/p/maven-annotation-plugin/"&gt;maven-annotation-plugin&lt;/a&gt;, an alternative is  the &lt;a href="http://mojo.codehaus.org/apt-maven-plugin/"&gt;Apt Maven Plugin&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Now Maven was easy, lets tackle the IDEs...&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;strong style="font-size: 130%;"&gt;NetBeans&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;NetBeans excels in this task. When opening the Maven pom, it automatically recognizes the above configuration with the maven-processor-plugin and configures itself to use the EclipseLink annotation processor: &lt;a href="https://lh3.googleusercontent.com/-9HH-_QsDNf4/TnJYbCf0tlI/AAAAAAAABDk/dPtmUvruZOs/Screen%252520shot%2525202011-09-05%252520at%2525205.22.59%252520PM.png"&gt;&lt;img style="display: block; margin-top: 5px; margin-bottom: 5px; margin-left: auto; margin-right: auto;" src="http://lh6.ggpht.com/-u-I4XgJGfMY/Tm-xXrPAPPI/AAAAAAAABDI/NXoLIFrYKFk/Screen%252520shot%2525202011-09-05%252520at%2525205.22.59%252520PM.png?imgmax=800" border="0" alt="" width="315" height="210" /&gt;&lt;/a&gt; No additional configuration whatsoever needed! Metadata API classes get generated on the fly with each compilation and even with background compilation ... I wish NetBeans was my favorite IDE :-)&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;strong style="font-size: 130%;"&gt;IntelliJ IDEA&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Configuration of an annotation processor is nicely documented in &lt;a href="http://blogs.jetbrains.com/idea/tag/annotation-processing/"&gt;this post by JetBrains&lt;/a&gt;. &lt;a href="https://lh5.googleusercontent.com/-zCEZuZhBLCg/TnJYcIxmwhI/AAAAAAAABDo/kejAKCFJHTo/s800/Screen%252520shot%2525202011-09-07%252520at%2525208.52.36%252520PM.png"&gt;&lt;img style="display: block; margin-left: auto; margin-right: auto;" src="http://lh6.ggpht.com/-Vpze86zbhSs/Tm-xZEumN_I/AAAAAAAABDM/JlyaARL6y6g/Screen%252520shot%2525202011-09-07%252520at%2525208.52.36%252520PM.png?imgmax=800" border="0" alt="Screen shot 2011 09 07 at 8 52 36 PM" width="400" height="244" /&gt;&lt;/a&gt; The good things:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;annotation processors get picked up from the classpath, you dont have to specify the jar (which is a good thing, since the jar name might change when updating the version)&lt;/li&gt;&lt;li&gt;In combination with IDEA the EclipseLink annotation processor detects the default META-INF/persistence.xml automatically without explicit configuration.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The bad thing:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;You need to know the exact full qualified name of the annotation processor class.&lt;/li&gt;&lt;li&gt;Generation of JPA metadata API classes works only on compilation (or on explicitly triggering annotation processing). It does not work on the fly when editing files, since IDEA does not have real background compilation.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;strong style="font-size: 130%;"&gt;Eclipse IDE&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;One might be tempted to think that configuration should be especially easy since Eclipse IDE and EclipseLink imply some kind of close relation...&lt;/p&gt;&lt;p&gt;The EclipseLink documentation &lt;a href="http://wiki.eclipse.org/UserGuide/JPA/Using_the_Canonical_Model_Generator_%28ELUG%29#Configuring_and_using_within_Eclipse_Galileo"&gt;explains how to configure the annotation processor&lt;/a&gt; ... except it does not work:&lt;/p&gt;&lt;p&gt;In combination with Eclipse the EclipseLink annotation processor does not detect the default META-INF/persistence.xml. You have to configure it manually. This is not documented and not trivial. The problem &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=311020"&gt;is reported as bug&lt;/a&gt;, &lt;strong&gt;but the bug was closed without fixing the problem!&lt;/strong&gt;&lt;strong&gt; I wonder how many people gave up on using the metadata API just because of that shortcoming...&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Here is how to configure the EclipseLink annotation processor in Eclipse:&lt;/p&gt;&lt;p&gt;As described in the documentation you have to include three jars on the factory path of the annotation processing configuration:&lt;/p&gt;&lt;p&gt;&lt;a href="https://lh6.googleusercontent.com/-t_YlxPFqGwQ/TnJYh3tQ50I/AAAAAAAABDs/nohbNoNo72M/s912/Screen%252520shot%2525202011-09-07%252520at%2525209.51.28%252520PM.png"&gt;&lt;img style="display: block; margin-left: auto; margin-right: auto;" src="http://lh3.ggpht.com/-IBhbqREwBKo/Tm-xa6FYEPI/AAAAAAAABDU/MXQb4TJ47mY/Screen%252520shot%2525202011-09-07%252520at%2525209.51.28%252520PM.png?imgmax=800" border="0" alt="Screen shot 2011 09 07 at 9 51 28 PM" width="400" height="234" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;This approach is bad from the beginning, since those jars might change their name when you update them and they might not versioned together with your sources (this is the case when using Maven) . The approach of IDEA of locating annotation processors in the classpath by their class name is much better in this regard.&lt;/p&gt;&lt;p&gt;But as mentioned above, this does not yet work. You get the following error written in the eclipse error log:&lt;/p&gt;&lt;p&gt;&lt;code&gt;The persistence xml file [META-INF/persistence.xml] was not found. NO GENERATION will occur!! Please ensure a persistence xml file is available either from the CLASS_OUTPUT directory [META-INF/persistence.xml]&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://lh4.googleusercontent.com/-jwHSMPohIIY/TnJYm636zOI/AAAAAAAABDw/PPQw38eaVIY/Screen%252520shot%2525202011-09-07%252520at%2525209.47.43%252520PM.png"&gt;&lt;img style="display: block; margin-left: auto; margin-right: auto;" src="http://lh4.ggpht.com/-KypWBjViCuo/Tm-xZ_s9uuI/AAAAAAAABDQ/nPExs2xbsts/Screen%252520shot%2525202011-09-07%252520at%2525209.47.43%252520PM.png?imgmax=800" border="0" alt="Screen shot 2011 09 07 at 9 47 43 PM" width="400" height="114" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The solution is to pass the persistence.xml explicitly to the annotation processor. This is achieved by configuring an annotation processor option. The key is &lt;code&gt;eclipselink.persistencexml&lt;/code&gt;. The value is the path to your persistence.xml &lt;em&gt;relative from your CLASS_OUTPUT directory&lt;/em&gt;. In case of using Maven, your CLASS_OUTPUT directory is target/classes, so you have to prepend &lt;code style="border: solid 1px silver;"&gt;../../&lt;/code&gt; to your path to arrive in the project root directory ... &lt;em&gt;not trivial indeed&lt;/em&gt; ... &lt;span style="font-size: small;"&gt;(note that the path separator might vary on Windows)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://lh3.googleusercontent.com/-HYMe2hXCwyg/TnJYrNDwY2I/AAAAAAAABD0/3L9kPPh7Qn0/s720/Screen%252520shot%2525202011-09-05%252520at%2525205.03.57%252520PM.png"&gt;&lt;img style="display: block; margin-left: auto; margin-right: auto;" src="http://lh5.ggpht.com/-ubMpWK1uPlU/Tm-xbyWS_ZI/AAAAAAAABDY/icEdWULCGb8/Screen%252520shot%2525202011-09-05%252520at%2525205.03.57%252520PM.png?imgmax=800" border="0" alt="Screen shot 2011 09 05 at 5 03 57 PM" width="400" height="300" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Finally generation of JPA metadata API classes is also working in Eclipse. With the great background compilation of Eclipse it is nicely working on the fly when editing files.&lt;/p&gt;&lt;div style="align: right; font-size: 10px; clear: right;"&gt;&lt;p&gt;&lt;a href="http://twitter.com/jbandi"&gt;&lt;img style="margin: 0px 0px 0px 0px; border: none;" src="http://www.google.com/s2/favicons?domain=twitter.com" border="0" alt="http://www.google.com/s2/favicons?domain=twitter.com" height="13px" align="left" /&gt; If you like this, follow me on twitter...&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5763764290649132593-5564863451999976544?l=blog.jonasbandi.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/qzTgkoXBShg9JLKOtZuWe7jqKT0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qzTgkoXBShg9JLKOtZuWe7jqKT0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/qzTgkoXBShg9JLKOtZuWe7jqKT0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qzTgkoXBShg9JLKOtZuWe7jqKT0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=PpyrjF3bcGM:Dlaf-_zjfPA:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=PpyrjF3bcGM:Dlaf-_zjfPA:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=PpyrjF3bcGM:Dlaf-_zjfPA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=PpyrjF3bcGM:Dlaf-_zjfPA:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=PpyrjF3bcGM:Dlaf-_zjfPA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=PpyrjF3bcGM:Dlaf-_zjfPA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=PpyrjF3bcGM:Dlaf-_zjfPA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=PpyrjF3bcGM:Dlaf-_zjfPA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=PpyrjF3bcGM:Dlaf-_zjfPA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=PpyrjF3bcGM:Dlaf-_zjfPA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=PpyrjF3bcGM:Dlaf-_zjfPA:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=PpyrjF3bcGM:Dlaf-_zjfPA:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=PpyrjF3bcGM:Dlaf-_zjfPA:Y59mnZtVT5U"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/PpyrjF3bcGM" height="1" width="1"/&gt;</description>
      <pubDate>Tue, 13 Sep 2011 21:39:00 +0200</pubDate>
      <link rel="replies" type="application/atom+xml" title="Post Comments" href="http://blog.jonasbandi.net/feeds/5564863451999976544/comments/default" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="replies" type="text/html" title="1 Comments" href="http://www.blogger.com/comment.g?blogID=5763764290649132593&amp;postID=5564863451999976544" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/5564863451999976544?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/5564863451999976544?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <updated xmlns="http://www.w3.org/2005/Atom">2011-09-15T22:03:02+02:00</updated>
      <content type="html" xmlns="http://www.w3.org/2005/Atom">
&lt;p&gt;Some time ago I claimed that the &lt;a href="http://jcp.org/en/jsr/detail?id=317"&gt;
JPA 2.0&lt;/a&gt; metamodel API &lt;a href="http://blog.jonasbandi.net/2009/05/jpa2-potential-to-revolutionize-java.html"&gt;
has the potential to revolutionize Java development&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I still think that the concept is very interesting by showing an approach to strongly typed meta programming in Java. However I think it does not have any relevance in real world projects. One reason is that strongly typed JPA criteria queries are very verbose
 and bring their own accidental complexity compared with JPQL. The other reason is the actual usage of an annotation processor in any build environment is still too complicated.&lt;/p&gt;
&lt;p&gt;In the following I show how to configure the &lt;a href="http://wiki.eclipse.org/UserGuide/JPA/Using_the_Canonical_Model_Generator_(ELUG)"&gt;
JPA metamodel annotation processor of EclipseLink&lt;/a&gt; for different environments.
&lt;strong&gt;A working example for this is &lt;a href="https://code.google.com/p/jpaworkshop/source/browse/trunk/exercise/06.3-queries-metamodel/"&gt;
exercise 6.3&lt;/a&gt; in our &lt;a href="https://code.google.com/p/jpaworkshop/"&gt;jpaworkshop&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong style="font-size:130%"&gt;Maven&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;EclipseLink documentation is (once again) lacking, ignoring the reality that Maven is currently the most prominent build environment in the enterprise.&lt;/p&gt;
&lt;p&gt;Fortunately this is well documented &lt;a href="http://agoncal.wordpress.com/2010/05/28/jpa-2-0-criteria-api-with-maven-and-eclipselink/"&gt;
here&lt;/a&gt; and &lt;a href="http://blog.gueck.com/2009/12/generating-jpa-20-criteria-canonical.html"&gt;
here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You need to configure a maven processor plugin in &lt;a href="https://code.google.com/p/jpaworkshop/source/browse/trunk/exercise/06.3-queries-metamodel/pom.xml"&gt;
the pom&lt;/a&gt; that triggers the annotation processor in the &lt;code&gt;generate-sources&lt;/code&gt; phase:&lt;/p&gt;
&lt;p&gt;There are different maven processor plugins. I am using &lt;a href="http://code.google.com/p/maven-annotation-plugin/"&gt;
maven-annotation-plugin&lt;/a&gt;, an alternative is the &lt;a href="http://mojo.codehaus.org/apt-maven-plugin/"&gt;
Apt Maven Plugin&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Now Maven was easy, lets tackle the IDEs...&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong style="font-size:130%"&gt;NetBeans&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;NetBeans excels in this task. When opening the Maven pom, it automatically recognizes the above configuration with the maven-processor-plugin and configures itself to use the EclipseLink annotation processor:
&lt;a href="https://lh3.googleusercontent.com/-9HH-_QsDNf4/TnJYbCf0tlI/AAAAAAAABDk/dPtmUvruZOs/Screen%252520shot%2525202011-09-05%252520at%2525205.22.59%252520PM.png"&gt;
&lt;img src="http://lh6.ggpht.com/-u-I4XgJGfMY/Tm-xXrPAPPI/AAAAAAAABDI/NXoLIFrYKFk/Screen%252520shot%2525202011-09-05%252520at%2525205.22.59%252520PM.png?imgmax=800" border="0" alt="" width="315" height="210" style="display:block; margin-top:5px; margin-bottom:5px; margin-left:auto; margin-right:auto"&gt;&lt;/a&gt;
 No additional configuration whatsoever needed! Metadata API classes get generated on the fly with each compilation and even with background compilation ... I wish NetBeans was my favorite IDE :-)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong style="font-size:130%"&gt;IntelliJ IDEA&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Configuration of an annotation processor is nicely documented in &lt;a href="http://blogs.jetbrains.com/idea/tag/annotation-processing/"&gt;
this post by JetBrains&lt;/a&gt;. &lt;a href="https://lh5.googleusercontent.com/-zCEZuZhBLCg/TnJYcIxmwhI/AAAAAAAABDo/kejAKCFJHTo/s800/Screen%252520shot%2525202011-09-07%252520at%2525208.52.36%252520PM.png"&gt;
&lt;img src="http://lh6.ggpht.com/-Vpze86zbhSs/Tm-xZEumN_I/AAAAAAAABDM/JlyaARL6y6g/Screen%252520shot%2525202011-09-07%252520at%2525208.52.36%252520PM.png?imgmax=800" border="0" alt="Screen shot 2011 09 07 at 8 52 36 PM" width="400" height="244" style="display:block; margin-left:auto; margin-right:auto"&gt;&lt;/a&gt;
 The good things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;annotation processors get picked up from the classpath, you dont have to specify the jar (which is a good thing, since the jar name might change when updating the version)&lt;/li&gt;&lt;li&gt;In combination with IDEA the EclipseLink annotation processor detects the default META-INF/persistence.xml automatically without explicit configuration.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;The bad thing:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You need to know the exact full qualified name of the annotation processor class.&lt;/li&gt;&lt;li&gt;Generation of JPA metadata API classes works only on compilation (or on explicitly triggering annotation processing). It does not work on the fly when editing files, since IDEA does not have real background compilation.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong style="font-size:130%"&gt;Eclipse IDE&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;One might be tempted to think that configuration should be especially easy since Eclipse IDE and EclipseLink imply some kind of close relation...&lt;/p&gt;
&lt;p&gt;The EclipseLink documentation &lt;a href="http://wiki.eclipse.org/UserGuide/JPA/Using_the_Canonical_Model_Generator_%28ELUG%29#Configuring_and_using_within_Eclipse_Galileo"&gt;
explains how to configure the annotation processor&lt;/a&gt; ... except it does not work:&lt;/p&gt;
&lt;p&gt;In combination with Eclipse&amp;nbsp;the EclipseLink annotation processor does not detect the default META-INF/persistence.xml. You have to configure it manually. This is not documented and not trivial. The problem
&lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=311020"&gt;is reported as bug&lt;/a&gt;,
&lt;strong&gt;but the bug was closed without fixing the problem!&lt;/strong&gt;&lt;strong&gt; I wonder how many people gave up on using the metadata API just because of that shortcoming...&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Here is how to configure the EclipseLink annotation processor in Eclipse:&lt;/p&gt;
&lt;p&gt;As described in the documentation you have to include three jars on the factory path of the annotation processing configuration:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://lh6.googleusercontent.com/-t_YlxPFqGwQ/TnJYh3tQ50I/AAAAAAAABDs/nohbNoNo72M/s912/Screen%252520shot%2525202011-09-07%252520at%2525209.51.28%252520PM.png"&gt;&lt;img src="http://lh3.ggpht.com/-IBhbqREwBKo/Tm-xa6FYEPI/AAAAAAAABDU/MXQb4TJ47mY/Screen%252520shot%2525202011-09-07%252520at%2525209.51.28%252520PM.png?imgmax=800" border="0" alt="Screen shot 2011 09 07 at 9 51 28 PM" width="400" height="234" style="display:block; margin-left:auto; margin-right:auto"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This approach is bad from the beginning, since those jars might change their name when you update them and they might not versioned together with your sources&amp;nbsp;(this is the case when using Maven) . The approach of IDEA of locating annotation processors in
 the classpath by their class name is much better in this regard.&lt;/p&gt;
&lt;p&gt;But as mentioned above, this does not yet work. You get the following error written in the eclipse error log:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;The persistence xml file [META-INF/persistence.xml] was not found. NO GENERATION will occur!!&amp;nbsp;Please ensure a persistence xml file is available either from the CLASS_OUTPUT directory [META-INF/persistence.xml]&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://lh4.googleusercontent.com/-jwHSMPohIIY/TnJYm636zOI/AAAAAAAABDw/PPQw38eaVIY/Screen%252520shot%2525202011-09-07%252520at%2525209.47.43%252520PM.png"&gt;&lt;img src="http://lh4.ggpht.com/-KypWBjViCuo/Tm-xZ_s9uuI/AAAAAAAABDQ/nPExs2xbsts/Screen%252520shot%2525202011-09-07%252520at%2525209.47.43%252520PM.png?imgmax=800" border="0" alt="Screen shot 2011 09 07 at 9 47 43 PM" width="400" height="114" style="display:block; margin-left:auto; margin-right:auto"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The solution is to pass the persistence.xml explicitly to the annotation processor. This is achieved by configuring an annotation processor option. The key is
&lt;code&gt;eclipselink.persistencexml&lt;/code&gt;. The value is the path to your persistence.xml
&lt;em&gt;relative from your CLASS_OUTPUT directory&lt;/em&gt;. In case of using Maven, your&amp;nbsp;CLASS_OUTPUT directory is target/classes, so you have to prepend
&lt;code style="border:solid 1px silver"&gt;../../&lt;/code&gt; to your path to arrive in the project root directory ...
&lt;em&gt;not trivial indeed&lt;/em&gt; ... &lt;span style="font-size:small"&gt;(note that the path separator might vary on Windows)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://lh3.googleusercontent.com/-HYMe2hXCwyg/TnJYrNDwY2I/AAAAAAAABD0/3L9kPPh7Qn0/s720/Screen%252520shot%2525202011-09-05%252520at%2525205.03.57%252520PM.png"&gt;&lt;img src="http://lh5.ggpht.com/-ubMpWK1uPlU/Tm-xbyWS_ZI/AAAAAAAABDY/icEdWULCGb8/Screen%252520shot%2525202011-09-05%252520at%2525205.03.57%252520PM.png?imgmax=800" border="0" alt="Screen shot 2011 09 05 at 5 03 57 PM" width="400" height="300" style="display:block; margin-left:auto; margin-right:auto"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Finally generation of JPA metadata API classes is also working in Eclipse. With the great background compilation of Eclipse it is nicely working on the fly when editing files.&lt;/p&gt;
&lt;div style="font-size:10px; clear:right"&gt;
&lt;p&gt;&lt;a href="http://twitter.com/jbandi"&gt;&lt;img src="http://www.google.com/s2/favicons?domain=twitter.com" border="0" alt="http://www.google.com/s2/favicons?domain=twitter.com" height="13px" align="left" style="margin:0px 0px 0px 0px; border:none"&gt; If you like
 this, follow me on twitter...&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="x_blogger-post-footer"&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/5763764290649132593-5564863451999976544?l=blog.jonasbandi.net" alt=""&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/qzTgkoXBShg9JLKOtZuWe7jqKT0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qzTgkoXBShg9JLKOtZuWe7jqKT0/0/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/qzTgkoXBShg9JLKOtZuWe7jqKT0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qzTgkoXBShg9JLKOtZuWe7jqKT0/1/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="x_feedflare"&gt;&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=PpyrjF3bcGM:Dlaf-_zjfPA:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=PpyrjF3bcGM:Dlaf-_zjfPA:4cEx4HpKnUU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=PpyrjF3bcGM:Dlaf-_zjfPA:yIl2AUoC8zA"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=PpyrjF3bcGM:Dlaf-_zjfPA:I9og5sOYxJI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=PpyrjF3bcGM:Dlaf-_zjfPA:F7zBnMyn0Lo"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=PpyrjF3bcGM:Dlaf-_zjfPA:F7zBnMyn0Lo" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=PpyrjF3bcGM:Dlaf-_zjfPA:V_sGLiPBpWU"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=PpyrjF3bcGM:Dlaf-_zjfPA:V_sGLiPBpWU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=PpyrjF3bcGM:Dlaf-_zjfPA:gIN9vFwOqvQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=PpyrjF3bcGM:Dlaf-_zjfPA:gIN9vFwOqvQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=PpyrjF3bcGM:Dlaf-_zjfPA:cGdyc7Q-1BI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=PpyrjF3bcGM:Dlaf-_zjfPA:G79ilh31hkQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=PpyrjF3bcGM:Dlaf-_zjfPA:Y59mnZtVT5U"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/PpyrjF3bcGM" height="1" width="1"&gt;</content>
      <app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-15T22:03:02.581+02:00</app:edited>
      <media:thumbnail url="http://lh6.ggpht.com/-u-I4XgJGfMY/Tm-xXrPAPPI/AAAAAAAABDI/NXoLIFrYKFk/s72-c/Screen%252520shot%2525202011-09-05%252520at%2525205.22.59%252520PM.png?imgmax=800" height="72" width="72" xmlns:media="http://search.yahoo.com/mrss/"></media:thumbnail>
      <thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total>
      <feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blog.jonasbandi.net/2011/09/using-jpa-metamodel-annotation.html</feedburner:origLink>
    </item>
    <item xml:base="http://www.dnug-bern.ch/Event2011.aspx#634514472000000000">
      <guid isPermaLink="true">http://www.dnug-bern.ch/Event2011.aspx#634514472000000000</guid>
      <link>http://www.dnug-bern.ch/Event2011.aspx#634514472000000000</link>
      <category>.NET User Group Bern Event</category>
      <title>Das Agile Development Framework (ADF)</title>
      <description>
&lt;div style="width:100%; padding:0; border-bottom:1px solid #666; display:block; margin-bottom:16px"&gt;
&lt;img src="http://www.dnug-bern.ch/images/be_silhouette.gif" alt="" style="border:0; float:left"&gt;
&lt;h1 style="margin:0; padding-top:5px; color:#666"&gt;.NET User Group Bern Event&lt;/h1&gt;
&lt;/div&gt;
&lt;br style="clear:left"&gt;
&lt;h2 id="x_20010912"&gt;Montag, 12. September 2011 (18:00 bis 22:00 Uhr)&lt;/h2&gt;
&lt;h3&gt;Das Agile Development Framework (ADF) mit Golo Roden&lt;/h3&gt;
&lt;p&gt;Am Montag, den 12. September 2011 wird uns Golo Roden durch das Thema &amp;quot;Das Agile Development Framework (ADF)&amp;quot; führen. Doch bevor wir mit den Thema beginnen, wird uns
&lt;a href="https://www.xing.com/profile/Stefan_Stegmueller"&gt;Stefan&lt;/a&gt; einen Überblick in die
&lt;strong&gt;Kinect-Programmierung&lt;/strong&gt; geben. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Abstract ADF: &lt;/strong&gt;&lt;br&gt;
Bestehende agile Methoden wie Scrum und Extreme Programming (XP) bedienen verschiedene Zielgruppen und Aspekte der Softwareentwicklung. Daher werden sie in der Regel kombiniert, um ein umfassendes Rahmenwerk zu erhalten – dies ist jedoch aufwändig, fehleranfällig
 und erfordert viel Erfahrung. &lt;/p&gt;
&lt;p&gt;Zudem enthält jede der bestehenden agilen Methoden Aspekte, die kritisch oder wenig praktikabel sind – wie beispielsweise die Forderung von XP nach dem generellen Programmieren in Paaren. Was also fehlt ist ein umfassendes Rahmenwerk, das die erfolgreichen
 Elemente der bestehenden agilen Methoden vereint, das jedoch – wenn erforderlich – auch eigene Wege einschlägt.
&lt;/p&gt;
&lt;p&gt;Das Agile Development Framework (ADF) ist eine mehrstufige, den gesamten Entwicklungsprozess und alle beteiligten Rollen umfassende Stream-basierte agile Methode für vereinte, verstreute und verteilte Teams zur flexiblen, konstruktiven und evolutionären
 Entwicklung qualitativ hochwertiger Software. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Über Golo Roden&lt;/strong&gt;&lt;br&gt;
&lt;a href="http://www.goloroden.de"&gt;Golo Roden&lt;/a&gt; ist freiberuflicher Wissensvermittler und Technologieberater für .NET, Codequalität und agile Methoden. Zu diesen Themen berät er Firmen bei der Evaluierung, Erforschung und Verwendung geeigneter Technologien
 und Methoden. Darüber hinaus ist er journalistisch für Fachzeitschriften und als Referent und Content Manager für Konferenzen tätig. Für sein qualitativ hochwertiges Engagement in der Community wurde Golo von Microsoft als Most Valuable Professional (MVP)
 für C# ausgezeichnet. &lt;/p&gt;
&lt;p&gt;Bitte beachte, dass für dieses Treffen eine &lt;a class="x_external" title="Zur Anmeldung auf Xing" href="https://www.xing.com/events/agile-development-framework-adf-golo-roden-798758"&gt;
Anmeldung&lt;/a&gt; erforderlich ist. &lt;/p&gt;
&lt;p&gt;Das Twitter-Hashtag für diese Veranstaltung: &lt;strong&gt;#dnugbeadf&lt;/strong&gt;. Die Aktivitäten können während der Veranstaltung
&lt;a title="Zum Twitter Stream der Veranstaltung" href="TwitterWall.aspx"&gt;hier&lt;/a&gt; betrachtet werden.
&lt;/p&gt;
&lt;p&gt;Wir freuen uns auf deine Teilnahme! &lt;/p&gt;
&lt;br&gt;
</description>
      <pubDate>Mon, 12 Sep 2011 18:00:00 +0200</pubDate>
    </item>
    <item p3:etag="W/&quot;DU4MQXgyfip7ImA9WhdWFUU.&quot;" xmlns:p3="http://schemas.google.com/g/2005">
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5763764290649132593.post-7790177536535566328</guid>
      <link>http://feedproxy.google.com/~r/closed-loop/~3/SxAOlhjeIig/quotes-of-week-bashing-hibernate.html</link>
      <author>noreply@blogger.com</author>
      <category domain="http://www.blogger.com/atom/ns#">hibernate</category>
      <category domain="http://www.blogger.com/atom/ns#">quote</category>
      <category domain="http://www.blogger.com/atom/ns#">object-relational mapping</category>
      <title>Quotes of the Week: Bashing Hibernate</title>
      <description>&lt;div style="width: 400px;"&gt;&lt;p&gt;&lt;img style="margin: 0px 0px 10px 10px;" src="http://lh4.ggpht.com/_X3kaawac_g4/S8uT4AW4WKI/AAAAAAAAA0I/PbqnbnH3BdI/quotes2.jpg?imgmax=800" border="0" alt="quotes2.jpg" width="120" align="right" /&gt;&lt;/p&gt;&lt;div style="width: 260px;"&gt;&lt;blockquote style="font-size: 14px;"&gt;Abstracting SQL often isn't a good idea from my experience.&lt;/blockquote&gt;&lt;div style="text-align: right;"&gt;- &lt;a href="http://twitter.com/#%21/codemonkeyism"&gt;@codemonkeyism&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="align: right;  clear: right;"&gt; &lt;/p&gt;&lt;blockquote style="font-size: 14px;"&gt;&lt;p&gt;Hibernate should be to programmers what cake mixes are to bakers: beneath their dignity. [...] As professional programmers, we should be more sceptical of generic frameworks like hibernate.&lt;/p&gt;&lt;/blockquote&gt;&lt;div style="text-align: right;"&gt;- &lt;a href="http://javazone.no/incogito10/events/JavaZone%202011/sessions#73db65c7-8672-4024-86b5-84d97c3013ff"&gt;Session at JavaZone 2011&lt;/a&gt;&lt;/div&gt;&lt;p&gt; &lt;/p&gt;&lt;blockquote style="font-size: 14px;"&gt;There are easier ways to do it, rather than hitting your domain model over the head with NHibernate.&lt;/blockquote&gt;&lt;div style="text-align: right;"&gt;- Rob Conery, &lt;a href="http://www.hanselminutes.com/default.aspx?showID=268"&gt;Hanselminutes 249&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt; &lt;/p&gt;&lt;div style="align: right; font-size: 10px; clear: right;"&gt;&lt;p&gt;&lt;a href="http://twitter.com/jbandi"&gt;&lt;img style="margin: 0px 0px 0px 0px; border: none;" src="http://www.google.com/s2/favicons?domain=twitter.com" border="0" alt="http://www.google.com/s2/favicons?domain=twitter.com" height="13px" align="left" /&gt;If you like this, follow me on twitter ...&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5763764290649132593-7790177536535566328?l=blog.jonasbandi.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ghD3_LnTyg1hQXkS8iy6lE9HfVY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ghD3_LnTyg1hQXkS8iy6lE9HfVY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ghD3_LnTyg1hQXkS8iy6lE9HfVY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ghD3_LnTyg1hQXkS8iy6lE9HfVY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=SxAOlhjeIig:jryBfanXx7A:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=SxAOlhjeIig:jryBfanXx7A:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=SxAOlhjeIig:jryBfanXx7A:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=SxAOlhjeIig:jryBfanXx7A:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=SxAOlhjeIig:jryBfanXx7A:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=SxAOlhjeIig:jryBfanXx7A:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=SxAOlhjeIig:jryBfanXx7A:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=SxAOlhjeIig:jryBfanXx7A:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=SxAOlhjeIig:jryBfanXx7A:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=SxAOlhjeIig:jryBfanXx7A:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=SxAOlhjeIig:jryBfanXx7A:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=SxAOlhjeIig:jryBfanXx7A:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=SxAOlhjeIig:jryBfanXx7A:Y59mnZtVT5U"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/SxAOlhjeIig" height="1" width="1"/&gt;</description>
      <pubDate>Fri, 09 Sep 2011 19:03:00 +0200</pubDate>
      <link rel="replies" type="application/atom+xml" title="Post Comments" href="http://blog.jonasbandi.net/feeds/7790177536535566328/comments/default" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="replies" type="text/html" title="0 Comments" href="http://www.blogger.com/comment.g?blogID=5763764290649132593&amp;postID=7790177536535566328" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/7790177536535566328?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/7790177536535566328?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <updated xmlns="http://www.w3.org/2005/Atom">2011-09-09T19:06:20+02:00</updated>
      <content type="html" xmlns="http://www.w3.org/2005/Atom">
&lt;div style="width:400px"&gt;
&lt;p&gt;&lt;img src="http://lh4.ggpht.com/_X3kaawac_g4/S8uT4AW4WKI/AAAAAAAAA0I/PbqnbnH3BdI/quotes2.jpg?imgmax=800" border="0" alt="quotes2.jpg" width="120" align="right" style="margin:0px 0px 10px 10px"&gt;&lt;/p&gt;
&lt;div style="width:260px"&gt;
&lt;blockquote style="font-size:14px"&gt;Abstracting SQL often isn't a good idea from my experience.&lt;/blockquote&gt;
&lt;div style="text-align:right"&gt;-&amp;nbsp;&lt;a href="http://twitter.com/#%21/codemonkeyism"&gt;@codemonkeyism&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p style="clear:right"&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote style="font-size:14px"&gt;
&lt;p&gt;Hibernate should be to programmers what cake mixes are to bakers: beneath their dignity. [...] As professional programmers, we should be more sceptical of generic frameworks like hibernate.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div style="text-align:right"&gt;-&amp;nbsp;&lt;a href="http://javazone.no/incogito10/events/JavaZone%202011/sessions#73db65c7-8672-4024-86b5-84d97c3013ff"&gt;Session at JavaZone 2011&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote style="font-size:14px"&gt;There are easier ways to do it, rather than hitting your domain model over the head with NHibernate.&lt;/blockquote&gt;
&lt;div style="text-align:right"&gt;-&amp;nbsp;Rob Conery, &lt;a href="http://www.hanselminutes.com/default.aspx?showID=268"&gt;
Hanselminutes 249&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="font-size:10px; clear:right"&gt;
&lt;p&gt;&lt;a href="http://twitter.com/jbandi"&gt;&lt;img src="http://www.google.com/s2/favicons?domain=twitter.com" border="0" alt="http://www.google.com/s2/favicons?domain=twitter.com" height="13px" align="left" style="margin:0px 0px 0px 0px; border:none"&gt;If you like this,
 follow me on twitter ...&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="x_blogger-post-footer"&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/5763764290649132593-7790177536535566328?l=blog.jonasbandi.net" alt=""&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ghD3_LnTyg1hQXkS8iy6lE9HfVY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ghD3_LnTyg1hQXkS8iy6lE9HfVY/0/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ghD3_LnTyg1hQXkS8iy6lE9HfVY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ghD3_LnTyg1hQXkS8iy6lE9HfVY/1/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="x_feedflare"&gt;&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=SxAOlhjeIig:jryBfanXx7A:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=SxAOlhjeIig:jryBfanXx7A:4cEx4HpKnUU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=SxAOlhjeIig:jryBfanXx7A:yIl2AUoC8zA"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=SxAOlhjeIig:jryBfanXx7A:I9og5sOYxJI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=SxAOlhjeIig:jryBfanXx7A:F7zBnMyn0Lo"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=SxAOlhjeIig:jryBfanXx7A:F7zBnMyn0Lo" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=SxAOlhjeIig:jryBfanXx7A:V_sGLiPBpWU"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=SxAOlhjeIig:jryBfanXx7A:V_sGLiPBpWU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=SxAOlhjeIig:jryBfanXx7A:gIN9vFwOqvQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=SxAOlhjeIig:jryBfanXx7A:gIN9vFwOqvQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=SxAOlhjeIig:jryBfanXx7A:cGdyc7Q-1BI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=SxAOlhjeIig:jryBfanXx7A:G79ilh31hkQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=SxAOlhjeIig:jryBfanXx7A:Y59mnZtVT5U"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/SxAOlhjeIig" height="1" width="1"&gt;</content>
      <app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-09T19:06:20.696+02:00</app:edited>
      <media:thumbnail url="http://lh4.ggpht.com/_X3kaawac_g4/S8uT4AW4WKI/AAAAAAAAA0I/PbqnbnH3BdI/s72-c/quotes2.jpg?imgmax=800" height="72" width="72" xmlns:media="http://search.yahoo.com/mrss/"></media:thumbnail>
      <thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total>
      <feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blog.jonasbandi.net/2011/09/quotes-of-week-bashing-hibernate.html</feedburner:origLink>
    </item>
    <item>
      <guid isPermaLink="true">http://www.databinding.net/blog/post/2011/09/07/entity-framework-praesentationen.html</guid>
      <link>http://www.databinding.net/blog/post/2011/09/07/entity-framework-praesentationen.html</link>
      <author>ipt:linkTo_UnCryptMailto('nbjmup+'); (René)</author>
      <category>.NET Development</category>
      <category>Entity Framework</category>
      <title>Entity Framework Präsentationen</title>
      <description>Die TechDays 2011 in Basel liegen schon einige Zeit zurück und wir haben es als .NET User Group Bern nun endlich geschafft, einen kleinen Rückblick online zu stellen.</description>
      <pubDate>Wed, 07 Sep 2011 23:24:00 +0200</pubDate>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"> Die TechDays 2011 in Basel liegen schon einige Zeit zurück und wir haben es als .NET User Group Bern nun endlich geschafft, einen kleinen Rückblick online zu stellen.</content:encoded>
    </item>
    <item p3:etag="W/&quot;DU4GSHc4cSp7ImA9WhdWE0o.&quot;" xmlns:p3="http://schemas.google.com/g/2005">
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5763764290649132593.post-8730644810748249495</guid>
      <link>http://feedproxy.google.com/~r/closed-loop/~3/OezyHTi1z9s/quicktip-logging-sql-statements-in.html</link>
      <author>noreply@blogger.com</author>
      <category domain="http://www.blogger.com/atom/ns#">object-relational mapping</category>
      <category domain="http://www.blogger.com/atom/ns#">quicktip</category>
      <title>QuickTip: Logging SQL statements in EclipseLink</title>
      <description>&lt;p&gt;&lt;img style="float: right; margin-left: 10px; margin-bottom: 10px;" src="http://lh6.ggpht.com/_X3kaawac_g4/TWQ2pInJsjI/AAAAAAAAA8A/E_2L681OTJQ/1279316_question_mark.jpg?imgmax=800" border="0" alt="1279316 question mark" width="130" /&gt;&lt;/p&gt;&lt;p&gt;Documentation for &lt;a href="http://www.eclipse.org/eclipselink/"&gt;EclipseLink&lt;/a&gt; is quite lacking.&lt;/p&gt;&lt;p&gt;While for Hibernate it is &lt;a href="http://docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html#configuration-optional"&gt;quite easy&lt;/a&gt; to &lt;a href="http://www.mkyong.com/hibernate/how-to-display-hibernate-sql-parameter-values-log4j/"&gt;find out&lt;/a&gt; how &lt;a href="http://stackoverflow.com/questions/2536829/hibernate-show-real-sql"&gt;to log SQL statements&lt;/a&gt;, I had some trouble &lt;a href="http://stackoverflow.com/questions/2374395/is-it-possible-to-output-generated-sql-using-eclipselink-without-having-to-increa"&gt;to find out&lt;/a&gt; how to accomplish this in EclipseLink.&lt;/p&gt;&lt;p&gt;The solution are the following properties in &lt;code&gt;persistence.xml&lt;/code&gt;:&lt;/p&gt;&lt;div style="border: solid 1px silver; width: 410px; overflow: auto;"&gt;&lt;code&gt;&lt;pre&gt; &amp;lt;property name="eclipselink.logging.level.sql" value="FINE"/&amp;gt;
 &amp;lt;property name="eclipselink.logging.parameters" value="true"/&amp;gt;
&lt;/pre&gt;&lt;/code&gt;&lt;/div&gt;&lt;p style="font-size: 10px;"&gt;This solution I finally found &lt;a href="http://web.archiveorange.com/archive/v/N2Kao4wIbJyy3j4mrCLR"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;An alternative is also to use &lt;a href="http://code.google.com/p/log4jdbc/"&gt;log4jdbc&lt;/a&gt; or &lt;a href="http://code.google.com/p/log4jdbc-remix/"&gt;log4jdbc-remix&lt;/a&gt; (the latter is available in the sonatype maven repository). An &lt;a href="https://code.google.com/p/jpaworkshop/source/browse/trunk/exercise/10-eager-loading/src/main/resources/META-INF/persistence.xml?r=40"&gt;example is available&lt;/a&gt; in exercise 10 of my &lt;a href="https://code.google.com/p/jpaworkshop/"&gt;jpaworkshop&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5763764290649132593-8730644810748249495?l=blog.jonasbandi.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/3Po5HzKzsJmHcvW62p-lctk9yjA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3Po5HzKzsJmHcvW62p-lctk9yjA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/3Po5HzKzsJmHcvW62p-lctk9yjA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3Po5HzKzsJmHcvW62p-lctk9yjA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=OezyHTi1z9s:t2v7QyWPDFs:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=OezyHTi1z9s:t2v7QyWPDFs:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=OezyHTi1z9s:t2v7QyWPDFs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=OezyHTi1z9s:t2v7QyWPDFs:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=OezyHTi1z9s:t2v7QyWPDFs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=OezyHTi1z9s:t2v7QyWPDFs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=OezyHTi1z9s:t2v7QyWPDFs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=OezyHTi1z9s:t2v7QyWPDFs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=OezyHTi1z9s:t2v7QyWPDFs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=OezyHTi1z9s:t2v7QyWPDFs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=OezyHTi1z9s:t2v7QyWPDFs:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=OezyHTi1z9s:t2v7QyWPDFs:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=OezyHTi1z9s:t2v7QyWPDFs:Y59mnZtVT5U"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/OezyHTi1z9s" height="1" width="1"/&gt;</description>
      <pubDate>Wed, 07 Sep 2011 08:41:00 +0200</pubDate>
      <link rel="replies" type="application/atom+xml" title="Post Comments" href="http://blog.jonasbandi.net/feeds/8730644810748249495/comments/default" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="replies" type="text/html" title="0 Comments" href="http://www.blogger.com/comment.g?blogID=5763764290649132593&amp;postID=8730644810748249495" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/8730644810748249495?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/8730644810748249495?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <updated xmlns="http://www.w3.org/2005/Atom">2011-09-07T08:45:29+02:00</updated>
      <content type="html" xmlns="http://www.w3.org/2005/Atom">
&lt;p&gt;&lt;img src="http://lh6.ggpht.com/_X3kaawac_g4/TWQ2pInJsjI/AAAAAAAAA8A/E_2L681OTJQ/1279316_question_mark.jpg?imgmax=800" border="0" alt="1279316 question mark" width="130" style="float:right; margin-left:10px; margin-bottom:10px"&gt;&lt;/p&gt;
&lt;p&gt;Documentation for &lt;a href="http://www.eclipse.org/eclipselink/"&gt;EclipseLink&lt;/a&gt; is quite lacking.&lt;/p&gt;
&lt;p&gt;While for Hibernate it is &lt;a href="http://docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html#configuration-optional"&gt;
quite easy&lt;/a&gt; to &lt;a href="http://www.mkyong.com/hibernate/how-to-display-hibernate-sql-parameter-values-log4j/"&gt;
find out&lt;/a&gt; how &lt;a href="http://stackoverflow.com/questions/2536829/hibernate-show-real-sql"&gt;
to log SQL statements&lt;/a&gt;, I had some trouble &lt;a href="http://stackoverflow.com/questions/2374395/is-it-possible-to-output-generated-sql-using-eclipselink-without-having-to-increa"&gt;
to find out&lt;/a&gt; how to accomplish this in EclipseLink.&lt;/p&gt;
&lt;p&gt;The solution are the following properties in &lt;code&gt;persistence.xml&lt;/code&gt;:&lt;/p&gt;
&lt;div style="border:solid 1px silver; width:410px; overflow:auto"&gt;&lt;code&gt;
&lt;pre&gt; 
 
&lt;/pre&gt;
&lt;/code&gt;&lt;/div&gt;
&lt;p style="font-size:10px"&gt;This solution I finally found &lt;a href="http://web.archiveorange.com/archive/v/N2Kao4wIbJyy3j4mrCLR"&gt;
here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;An alternative is also to use &lt;a href="http://code.google.com/p/log4jdbc/"&gt;log4jdbc&lt;/a&gt; or
&lt;a href="http://code.google.com/p/log4jdbc-remix/"&gt;log4jdbc-remix&lt;/a&gt; (the latter is available in the sonatype maven repository). An
&lt;a href="https://code.google.com/p/jpaworkshop/source/browse/trunk/exercise/10-eager-loading/src/main/resources/META-INF/persistence.xml?r=40"&gt;
example is available&lt;/a&gt; in exercise 10 of my &lt;a href="https://code.google.com/p/jpaworkshop/"&gt;
jpaworkshop&lt;/a&gt;.&lt;/p&gt;
&lt;div class="x_blogger-post-footer"&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/5763764290649132593-8730644810748249495?l=blog.jonasbandi.net" alt=""&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/3Po5HzKzsJmHcvW62p-lctk9yjA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3Po5HzKzsJmHcvW62p-lctk9yjA/0/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/3Po5HzKzsJmHcvW62p-lctk9yjA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3Po5HzKzsJmHcvW62p-lctk9yjA/1/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="x_feedflare"&gt;&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=OezyHTi1z9s:t2v7QyWPDFs:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=OezyHTi1z9s:t2v7QyWPDFs:4cEx4HpKnUU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=OezyHTi1z9s:t2v7QyWPDFs:yIl2AUoC8zA"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=OezyHTi1z9s:t2v7QyWPDFs:I9og5sOYxJI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=OezyHTi1z9s:t2v7QyWPDFs:F7zBnMyn0Lo"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=OezyHTi1z9s:t2v7QyWPDFs:F7zBnMyn0Lo" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=OezyHTi1z9s:t2v7QyWPDFs:V_sGLiPBpWU"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=OezyHTi1z9s:t2v7QyWPDFs:V_sGLiPBpWU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=OezyHTi1z9s:t2v7QyWPDFs:gIN9vFwOqvQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=OezyHTi1z9s:t2v7QyWPDFs:gIN9vFwOqvQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=OezyHTi1z9s:t2v7QyWPDFs:cGdyc7Q-1BI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=OezyHTi1z9s:t2v7QyWPDFs:G79ilh31hkQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=OezyHTi1z9s:t2v7QyWPDFs:Y59mnZtVT5U"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/OezyHTi1z9s" height="1" width="1"&gt;</content>
      <app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-07T08:45:29.939+02:00</app:edited>
      <media:thumbnail url="http://lh6.ggpht.com/_X3kaawac_g4/TWQ2pInJsjI/AAAAAAAAA8A/E_2L681OTJQ/s72-c/1279316_question_mark.jpg?imgmax=800" height="72" width="72" xmlns:media="http://search.yahoo.com/mrss/"></media:thumbnail>
      <thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total>
      <feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blog.jonasbandi.net/2011/09/quicktip-logging-sql-statements-in.html</feedburner:origLink>
    </item>
    <item p3:etag="W/&quot;C0MARXw6fyp7ImA9WhdXGEQ.&quot;" xmlns:p3="http://schemas.google.com/g/2005">
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5763764290649132593.post-2986837454321800365</guid>
      <link>http://feedproxy.google.com/~r/closed-loop/~3/YYGNVx0zWUE/programming-humor-private-coder.html</link>
      <author>noreply@blogger.com</author>
      <category domain="http://www.blogger.com/atom/ns#">dysfunction</category>
      <category domain="http://www.blogger.com/atom/ns#">humor</category>
      <title>Programming Humor: Private Coder Soundtrack</title>
      <description>
&lt;iframe width="400" height="325" src="http://www.youtube.com/embed/d4QnalIHlVc" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;br /&gt;
&lt;br /&gt;
A while back &lt;a href="http://blog.jonasbandi.net/2010/06/craftsmanship-means-we-should-refuse-to.html"&gt;on a dysfunctional project&lt;/a&gt; some colleagues of mine started being creative and adapted the lyrics of the famous &lt;a href="http://www.youtube.com/watch?v=d4QnalIHlVc"&gt;Tina Turner song "Private Dancer"&lt;/a&gt; (&lt;a href="http://www.lyricsfreak.com/t/tina+turner/private+dancer_20137652.html"&gt;lyrics&lt;/a&gt;) to our sad project environment:
&lt;br /&gt;
&lt;br /&gt;



WELL THE Managers COME IN THESE PLACES&lt;br /&gt;
AND THE MEN ARE ALL THE SAME&lt;br /&gt;
YOU DON`T LOOK AT THEIR certifications&lt;br /&gt;
AND YOU DON`T ASK THEIR qualifications&lt;br /&gt;
YOU DON`T THINK OF THEM AS equal&lt;br /&gt;
YOU DON`T THINK OF THEM AT ALL&lt;br /&gt;
YOU KEEP YOUR MIND ON THE MONEY&lt;br /&gt;
KEEPING YOUR EYES ON THE Screen&lt;br /&gt;
&lt;br /&gt;
[CHORUS]&lt;br /&gt;
&lt;br /&gt;
I`M YOUR &lt;span class="il"&gt;PRIVATE&lt;/span&gt; &lt;span class="il"&gt;Coder&lt;/span&gt;&lt;br /&gt;
A &lt;span class="il"&gt;Coder&lt;/span&gt; FOR MONEY&lt;br /&gt;
I`LL DO WHAT YOU WANT ME TO DO&lt;br /&gt;
I`M YOUR &lt;span class="il"&gt;PRIVATE&lt;/span&gt; &lt;span class="il"&gt;Coder&lt;/span&gt;&lt;br /&gt;
A &lt;span class="il"&gt;Coder&lt;/span&gt; FOR MONEY&lt;br /&gt;
AND ANY OLD PC WILL DO&lt;br /&gt;
&lt;br /&gt;
I WANT TO MAKE A MILLION DOLLARS&lt;br /&gt;
I WANT TO LIVE OUT BY THE SEA&lt;br /&gt;
HAVE An IPhone AND SOME IPods&lt;br /&gt;
YEAH I GUESS I WANT A Widescreen TV&lt;br /&gt;
ALL THE Managers COME IN THESE PLACES&lt;br /&gt;
AND THE MEN ARE ALL THE SAME&lt;br /&gt;
YOU DON`T LOOK AT THEIR FACES&lt;br /&gt;
AND YOU DON`T ASK THEIR NAMES&lt;br /&gt;
&lt;br /&gt;
[CHORUS TWICE]&lt;br /&gt;
&lt;br /&gt;
Swissfrancs OR DOLLARS&lt;br /&gt;
WTO or PBroker WILL DO NICELY - THANK YOU&lt;br /&gt;
LET ME LOOSEN UP YOUR processes&lt;br /&gt;
TELL ME DO YOU WANT TO SEE THE flipchart AGAIN&lt;br /&gt;
&lt;br /&gt;
[CHORUS]&lt;br /&gt;
&lt;br /&gt;
... now we are looking for a director to create the music video, the cast would be ready :-)&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-DGAIB_H4zvQ/TbCKSCTizgI/AAAAAAAAA94/ljRbMKWrJ24/s1600/Roy2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-DGAIB_H4zvQ/TbCKSCTizgI/AAAAAAAAA94/ljRbMKWrJ24/s320/Roy2.jpg" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style="clear: right; font-size: 10px;"&gt;
&lt;br /&gt;
&lt;a href="http://twitter.com/jbandi"&gt;&lt;img align="left" alt="http://www.google.com/s2/favicons?domain=twitter.com" border="0" height="13px" src="http://www.google.com/s2/favicons?domain=twitter.com" style="margin: 0px;" /&gt; follow me on twitter, I need some friends :-)&lt;/a&gt;&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5763764290649132593-2986837454321800365?l=blog.jonasbandi.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/QEs6hczPql5Mi3o2gIAOI3SNLgg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QEs6hczPql5Mi3o2gIAOI3SNLgg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/QEs6hczPql5Mi3o2gIAOI3SNLgg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QEs6hczPql5Mi3o2gIAOI3SNLgg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=YYGNVx0zWUE:824bbMH6swU:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=YYGNVx0zWUE:824bbMH6swU:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=YYGNVx0zWUE:824bbMH6swU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=YYGNVx0zWUE:824bbMH6swU:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=YYGNVx0zWUE:824bbMH6swU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=YYGNVx0zWUE:824bbMH6swU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=YYGNVx0zWUE:824bbMH6swU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=YYGNVx0zWUE:824bbMH6swU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=YYGNVx0zWUE:824bbMH6swU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=YYGNVx0zWUE:824bbMH6swU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=YYGNVx0zWUE:824bbMH6swU:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=YYGNVx0zWUE:824bbMH6swU:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=YYGNVx0zWUE:824bbMH6swU:Y59mnZtVT5U"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/YYGNVx0zWUE" height="1" width="1"/&gt;</description>
      <pubDate>Thu, 01 Sep 2011 17:37:00 +0200</pubDate>
      <link rel="replies" type="application/atom+xml" title="Post Comments" href="http://blog.jonasbandi.net/feeds/2986837454321800365/comments/default" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="replies" type="text/html" title="3 Comments" href="http://www.blogger.com/comment.g?blogID=5763764290649132593&amp;postID=2986837454321800365" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/2986837454321800365?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/2986837454321800365?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <updated xmlns="http://www.w3.org/2005/Atom">2011-09-01T17:37:24+02:00</updated>
      <content type="html" xmlns="http://www.w3.org/2005/Atom">&lt;br&gt;
&lt;br&gt;
A while back &lt;a href="http://blog.jonasbandi.net/2010/06/craftsmanship-means-we-should-refuse-to.html"&gt;
on a dysfunctional project&lt;/a&gt; some colleagues of mine started being creative and adapted the lyrics of the famous
&lt;a href="http://www.youtube.com/watch?v=d4QnalIHlVc"&gt;Tina Turner song &amp;quot;Private Dancer&amp;quot;&lt;/a&gt; (&lt;a href="http://www.lyricsfreak.com/t/tina&amp;#43;turner/private&amp;#43;dancer_20137652.html"&gt;lyrics&lt;/a&gt;) to our sad project environment:
&lt;br&gt;
&lt;br&gt;
WELL THE Managers COME IN THESE PLACES&lt;br&gt;
AND THE MEN ARE ALL THE SAME&lt;br&gt;
YOU DON`T LOOK AT THEIR certifications&lt;br&gt;
AND YOU DON`T ASK THEIR qualifications&lt;br&gt;
YOU DON`T THINK OF THEM AS equal&lt;br&gt;
YOU DON`T THINK OF THEM AT ALL&lt;br&gt;
YOU KEEP YOUR MIND ON THE MONEY&lt;br&gt;
KEEPING YOUR EYES ON THE Screen&lt;br&gt;
&lt;br&gt;
[CHORUS]&lt;br&gt;
&lt;br&gt;
I`M YOUR &lt;span class="x_il"&gt;PRIVATE&lt;/span&gt; &lt;span class="x_il"&gt;Coder&lt;/span&gt;&lt;br&gt;
A &lt;span class="x_il"&gt;Coder&lt;/span&gt; FOR MONEY&lt;br&gt;
I`LL DO WHAT YOU WANT ME TO DO&lt;br&gt;
I`M YOUR &lt;span class="x_il"&gt;PRIVATE&lt;/span&gt; &lt;span class="x_il"&gt;Coder&lt;/span&gt;&lt;br&gt;
A &lt;span class="x_il"&gt;Coder&lt;/span&gt; FOR MONEY&lt;br&gt;
AND ANY OLD PC WILL DO&lt;br&gt;
&lt;br&gt;
I WANT TO MAKE A MILLION DOLLARS&lt;br&gt;
I WANT TO LIVE OUT BY THE SEA&lt;br&gt;
HAVE An IPhone AND SOME IPods&lt;br&gt;
YEAH I GUESS I WANT A Widescreen TV&lt;br&gt;
ALL THE Managers COME IN THESE PLACES&lt;br&gt;
AND THE MEN ARE ALL THE SAME&lt;br&gt;
YOU DON`T LOOK AT THEIR FACES&lt;br&gt;
AND YOU DON`T ASK THEIR NAMES&lt;br&gt;
&lt;br&gt;
[CHORUS TWICE]&lt;br&gt;
&lt;br&gt;
Swissfrancs OR DOLLARS&lt;br&gt;
WTO or PBroker WILL DO NICELY - THANK YOU&lt;br&gt;
LET ME LOOSEN UP YOUR processes&lt;br&gt;
TELL ME DO YOU WANT TO SEE THE flipchart AGAIN&lt;br&gt;
&lt;br&gt;
[CHORUS]&lt;br&gt;
&lt;br&gt;
... now we are looking for a director to create the music video, the cast would be ready :-)&lt;br&gt;
&lt;div class="x_separator" style="clear:both; text-align:center"&gt;&lt;a href="http://2.bp.blogspot.com/-DGAIB_H4zvQ/TbCKSCTizgI/AAAAAAAAA94/ljRbMKWrJ24/s1600/Roy2.jpg" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-DGAIB_H4zvQ/TbCKSCTizgI/AAAAAAAAA94/ljRbMKWrJ24/s320/Roy2.jpg" width="240"&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;div style="clear:right; font-size:10px"&gt;&lt;br&gt;
&lt;a href="http://twitter.com/jbandi"&gt;&lt;img align="left" alt="http://www.google.com/s2/favicons?domain=twitter.com" border="0" height="13px" src="http://www.google.com/s2/favicons?domain=twitter.com" style="margin:0px"&gt; follow me on twitter, I need some friends
 :-)&lt;/a&gt;&lt;/div&gt;
&lt;div class="x_blogger-post-footer"&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/5763764290649132593-2986837454321800365?l=blog.jonasbandi.net" alt=""&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/QEs6hczPql5Mi3o2gIAOI3SNLgg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QEs6hczPql5Mi3o2gIAOI3SNLgg/0/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/QEs6hczPql5Mi3o2gIAOI3SNLgg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QEs6hczPql5Mi3o2gIAOI3SNLgg/1/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="x_feedflare"&gt;&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=YYGNVx0zWUE:824bbMH6swU:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=YYGNVx0zWUE:824bbMH6swU:4cEx4HpKnUU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=YYGNVx0zWUE:824bbMH6swU:yIl2AUoC8zA"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=YYGNVx0zWUE:824bbMH6swU:I9og5sOYxJI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=YYGNVx0zWUE:824bbMH6swU:F7zBnMyn0Lo"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=YYGNVx0zWUE:824bbMH6swU:F7zBnMyn0Lo" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=YYGNVx0zWUE:824bbMH6swU:V_sGLiPBpWU"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=YYGNVx0zWUE:824bbMH6swU:V_sGLiPBpWU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=YYGNVx0zWUE:824bbMH6swU:gIN9vFwOqvQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=YYGNVx0zWUE:824bbMH6swU:gIN9vFwOqvQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=YYGNVx0zWUE:824bbMH6swU:cGdyc7Q-1BI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=YYGNVx0zWUE:824bbMH6swU:G79ilh31hkQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=YYGNVx0zWUE:824bbMH6swU:Y59mnZtVT5U"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/YYGNVx0zWUE" height="1" width="1"&gt;</content>
      <app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-01T17:37:24.217+02:00</app:edited>
      <media:thumbnail url="http://img.youtube.com/vi/d4QnalIHlVc/default.jpg" height="72" width="72" xmlns:media="http://search.yahoo.com/mrss/"></media:thumbnail>
      <thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total>
      <feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blog.jonasbandi.net/2011/09/programming-humor-private-coder.html</feedburner:origLink>
    </item>
    <item p3:etag="W/&quot;CEAHSXYzcSp7ImA9WhdXFkg.&quot;" xmlns:p3="http://schemas.google.com/g/2005">
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5763764290649132593.post-7528013320075119085</guid>
      <link>http://feedproxy.google.com/~r/closed-loop/~3/utmIexQLuS4/from-svn-to-tfs-good-bad-and-ugly.html</link>
      <author>noreply@blogger.com</author>
      <category domain="http://www.blogger.com/atom/ns#">technology</category>
      <category domain="http://www.blogger.com/atom/ns#">programming</category>
      <title>From SVN to TFS: The Good, The Bad and The Ugly</title>
      <description>&lt;p&gt;For my &lt;a href="http://msdn.microsoft.com/de-ch/aa570302.aspx?EventID=1032382726&amp;amp;WT.mc_id=eml-n-ch-loc--MSDNE"&gt;recent MSDN TechTalk&lt;/a&gt; I did some research how to migrate a source control repository from SVN to TFS. While I am not advocating this migration, here are the options:&lt;/p&gt;&lt;h4&gt;The Good:&lt;/h4&gt;&lt;p&gt;Currently you have a choice of three tools:&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/-C_96ql5m7EE/Tlv-kb_QMxI/AAAAAAAABCo/MwMc5ZKzQAw/s1600-h/image%25255B23%25255D.png"&gt;&lt;img style="display: inline; margin-left: 0px; margin-right: 5px; border-width: 0px;" title="image" src="http://lh4.ggpht.com/-s0i6xVNcNJY/Tlv-kyfBzPI/AAAAAAAABCs/q9X3nUDEjt0/image_thumb%25255B17%25255D.png?imgmax=800" border="0" alt="image" width="125" height="70" align="left" /&gt;&lt;/a&gt;&lt;strong&gt;&lt;a href="http://svn2tfs.codeplex.com/"&gt;svn2tfs:&lt;/a&gt;&lt;/strong&gt;&lt;br/&gt;
svn2tfs is a simple tool written in VB.NET. You need to have SVN installed in order for this tool to work. It basically replays every revision from SVN as changeset into TFS.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="http://lh6.ggpht.com/-mQ0LarD3Z9Q/Tlv-m_CHlvI/AAAAAAAABCw/dhDmdVsrv-U/s1600-h/image%25255B20%25255D.png"&gt;&lt;img style="display: inline; margin-left: 0px; margin-right: 5px; border-width: 0px;" title="image" src="http://lh6.ggpht.com/-uBmdnHEXjZ0/Tlv-nMXaDFI/AAAAAAAABC0/DZPmtYsk0Tg/image_thumb%25255B14%25255D.png?imgmax=800" border="0" alt="image" width="189" height="56" align="left" /&gt;&lt;/a&gt;&lt;a href="http://tfsintegration.codeplex.com/"&gt;TFS Integration Platform:&lt;/a&gt;&lt;/strong&gt;&lt;br/&gt;
The TFS Integration Platform is the Swiss army knife for many possibilities to get data in and out of TFS. The TFS integration platform is available as supported Microsoft &lt;a href="http://visualstudiogallery.msdn.microsoft.com/f854dd59-8eeb-4673-8d9a-ae012989bfa2"&gt;product on Visual Studio Code Gallery&lt;/a&gt; and as bleeding-edge release on Codeplex. The SVN adapter is currently only part of the codeplex release.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="http://lh4.ggpht.com/-mGTjHxcrw_s/Tlv-nuVqUBI/AAAAAAAABC4/t7Y-18ZKsOU/s1600-h/image%25255B26%25255D.png"&gt;&lt;img style="display: inline; margin-left: 0px; margin-right: 5px; border: 0px;" title="image" src="http://lh4.ggpht.com/-STvTj4rtWkg/Tlv-oFXkOII/AAAAAAAABC8/VSaLJWv1FtY/image_thumb%25255B20%25255D.png?imgmax=800" border="0" alt="image" width="194" height="66" align="left" /&gt;&lt;/a&gt;&lt;a href="http://www.timelymigration.com/"&gt;Timely Migration: &lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;Timely Migration is a commercial tool. There are different modules for different source version control systems. To migrate from SVN to TFS the SVNToTFS module is needed. It costs $1995. Trial versions can be requested, but they do not migrate the content of the files.&lt;/p&gt;&lt;table border="1" cellspacing="0" cellpadding="2" width="400" &gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="133" valign="top"&gt;&lt;strong&gt;svn2tfs&lt;/strong&gt;&lt;/td&gt;&lt;td width="133" valign="top"&gt;&lt;strong&gt;Integration Platform&lt;/strong&gt;&lt;/td&gt;&lt;td width="133" valign="top"&gt;&lt;strong&gt;Timely Migration&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="133" valign="top"&gt;open source&lt;/td&gt;&lt;td width="133" valign="top"&gt;open source, from Microsoft&lt;/td&gt;&lt;td width="133" valign="top"&gt;commercial, $1995&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="133" valign="top"&gt;simple and easy to use&lt;/td&gt;&lt;td width="133" valign="top"&gt;many features, complex, complicated&lt;/td&gt;&lt;td width="133" valign="top"&gt;powerful features, easy to use&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="133" valign="top"&gt;enough documentation&lt;/td&gt;&lt;td width="133" valign="top"&gt;sparse documentation&lt;/td&gt;&lt;td width="133" valign="top"&gt;good documentaion&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="133" valign="top"&gt;SVN tags can be migrated as branches&lt;/td&gt;&lt;td width="133" valign="top"&gt;SVN tags are migrated as branches&lt;/td&gt;&lt;td width="133" valign="top"&gt;SVN tags are migrated to TFS labels&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="133" valign="top"&gt;user-mapping is enforced&lt;/td&gt;&lt;td width="133" valign="top"&gt;user-mapping is possible but not enforced&lt;/td&gt;&lt;td width="133" valign="top"&gt;user-mapping is enforced and comfortable&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="133" valign="top"&gt;migration is aborted in case of an error&lt;/td&gt;&lt;td width="133" valign="top"&gt;some errors can be manually resolved and migration can be then be resumed&lt;/td&gt;&lt;td width="133" valign="top"&gt;migration gets resumed when restarting after error resolution&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;With each tool I was able to successfully migrate an example project from a local SVN repository.&lt;/p&gt;&lt;h4&gt;The Bad:&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;svn2tfs:&lt;/strong&gt; I was not able to migrate SVN repositories from Google Code. The tool systematically failed, because the initial repository revision for the project layout (dirs for trunk, tags and labels) has not author. The tool can not deal with that. On the positive side was, that the source code of the tool is very simple so that I was quickly &lt;a href="http://svn2tfs.codeplex.com/SourceControl/list/patches"&gt;able to create a patch&lt;/a&gt;, that fixed this problem. On the negative side was, that there was &lt;a href="http://svn2tfs.codeplex.com/SourceControl/list/patches"&gt;no reaction on the patch I submitted&lt;/a&gt;. The project seem pretty dead.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;TFS Integration Platform:&lt;/strong&gt; It seems not possible to do an aynonymous login to SVN. If you do not provide valid user/password, the migration fails with an ugly “NullReferenceException”. The documentation for the SVN adapter is sparse. For instance there was no documentation at all how to map svn users to TFS users. fortunately (after some nudging from my contact at Microsoft) &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/tfsintegration/thread/3e35cb27-6733-44a3-b364-936951288427/"&gt;my question in the forum was answered&lt;/a&gt;. Some days later even &lt;a href="http://blogs.msdn.com/b/willy-peter_schaub/archive/2011/08/15/tfs-integration-tools-how-do-i-define-user-mappings-for-version-control-using-the-svn-adapter.aspx"&gt;a blog post about the topic was published&lt;/a&gt;. Another shortcoming is, that the mapping from svn users to TFS users is not enforced. If no mapping is specified, each svn user is silently mapped to the user that is running the migration tool. There is no support in checking if all users from svn are mapped to TFS users.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Timely Migration:&lt;/strong&gt; The only negative thing is the price since you probably need the tool only once.&lt;/p&gt;&lt;h4&gt;The Ugly:&lt;/h4&gt;&lt;p&gt;With none of the tools I was able to migrate the &lt;a href="http://nerddinner.codeplex.com/"&gt;Nerd Dinner&lt;/a&gt; repository from Codeplex. Each tool either reported an error or froze indefinitely.&lt;/p&gt;&lt;div style="align:right; font-size: 10px; clear:right; "&gt;&lt;br/&gt;&lt;p&gt;&lt;a  href="http://twitter.com/jbandi"&gt;&lt;img style="margin: 0px 0px 0px 0px; border:none" src="http://www.google.com/s2/favicons?domain=twitter.com" alt="http://www.google.com/s2/favicons?domain=twitter.com" border="0" align="left" height="13px"/&gt; If you like this, follow me on twitter...&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5763764290649132593-7528013320075119085?l=blog.jonasbandi.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/vl5uH91bNTo_JNRrKWxo-M5eMY8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vl5uH91bNTo_JNRrKWxo-M5eMY8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/vl5uH91bNTo_JNRrKWxo-M5eMY8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vl5uH91bNTo_JNRrKWxo-M5eMY8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=utmIexQLuS4:3xNEsRRDGBg:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=utmIexQLuS4:3xNEsRRDGBg:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=utmIexQLuS4:3xNEsRRDGBg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=utmIexQLuS4:3xNEsRRDGBg:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=utmIexQLuS4:3xNEsRRDGBg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=utmIexQLuS4:3xNEsRRDGBg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=utmIexQLuS4:3xNEsRRDGBg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=utmIexQLuS4:3xNEsRRDGBg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=utmIexQLuS4:3xNEsRRDGBg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=utmIexQLuS4:3xNEsRRDGBg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=utmIexQLuS4:3xNEsRRDGBg:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=utmIexQLuS4:3xNEsRRDGBg:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=utmIexQLuS4:3xNEsRRDGBg:Y59mnZtVT5U"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/utmIexQLuS4" height="1" width="1"/&gt;</description>
      <pubDate>Mon, 29 Aug 2011 23:03:00 +0200</pubDate>
      <link rel="replies" type="application/atom+xml" title="Post Comments" href="http://blog.jonasbandi.net/feeds/7528013320075119085/comments/default" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="replies" type="text/html" title="1 Comments" href="http://www.blogger.com/comment.g?blogID=5763764290649132593&amp;postID=7528013320075119085" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/7528013320075119085?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/7528013320075119085?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <updated xmlns="http://www.w3.org/2005/Atom">2011-08-29T23:18:58+02:00</updated>
      <content type="html" xmlns="http://www.w3.org/2005/Atom">
&lt;p&gt;For my &lt;a href="http://msdn.microsoft.com/de-ch/aa570302.aspx?EventID=1032382726&amp;amp;WT.mc_id=eml-n-ch-loc--MSDNE"&gt;
recent MSDN TechTalk&lt;/a&gt; I did some research how to migrate a source control repository from SVN to TFS. While I am not advocating this migration, here are the options:&lt;/p&gt;
&lt;h4&gt;The Good:&lt;/h4&gt;
&lt;p&gt;Currently you have a choice of three tools:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://lh5.ggpht.com/-C_96ql5m7EE/Tlv-kb_QMxI/AAAAAAAABCo/MwMc5ZKzQAw/s1600-h/image%25255B23%25255D.png"&gt;&lt;img title="image" src="http://lh4.ggpht.com/-s0i6xVNcNJY/Tlv-kyfBzPI/AAAAAAAABCs/q9X3nUDEjt0/image_thumb%25255B17%25255D.png?imgmax=800" border="0" alt="image" width="125" height="70" align="left" style="display:inline; margin-left:0px; margin-right:5px; border-width:0px"&gt;&lt;/a&gt;&lt;strong&gt;&lt;a href="http://svn2tfs.codeplex.com/"&gt;svn2tfs:&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
svn2tfs is a simple tool written in VB.NET. You need to have SVN installed in order for this tool to work. It basically replays every revision from SVN as changeset into TFS.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://lh6.ggpht.com/-mQ0LarD3Z9Q/Tlv-m_CHlvI/AAAAAAAABCw/dhDmdVsrv-U/s1600-h/image%25255B20%25255D.png"&gt;&lt;img title="image" src="http://lh6.ggpht.com/-uBmdnHEXjZ0/Tlv-nMXaDFI/AAAAAAAABC0/DZPmtYsk0Tg/image_thumb%25255B14%25255D.png?imgmax=800" border="0" alt="image" width="189" height="56" align="left" style="display:inline; margin-left:0px; margin-right:5px; border-width:0px"&gt;&lt;/a&gt;&lt;a href="http://tfsintegration.codeplex.com/"&gt;TFS
 Integration Platform:&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
The TFS Integration Platform is the Swiss army knife for many possibilities to get data in and out of TFS. The TFS integration platform is available as supported Microsoft
&lt;a href="http://visualstudiogallery.msdn.microsoft.com/f854dd59-8eeb-4673-8d9a-ae012989bfa2"&gt;
product on Visual Studio Code Gallery&lt;/a&gt; and as bleeding-edge release on Codeplex. The SVN adapter is currently only part of the codeplex release.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://lh4.ggpht.com/-mGTjHxcrw_s/Tlv-nuVqUBI/AAAAAAAABC4/t7Y-18ZKsOU/s1600-h/image%25255B26%25255D.png"&gt;&lt;img title="image" src="http://lh4.ggpht.com/-STvTj4rtWkg/Tlv-oFXkOII/AAAAAAAABC8/VSaLJWv1FtY/image_thumb%25255B20%25255D.png?imgmax=800" border="0" alt="image" width="194" height="66" align="left" style="display:inline; margin-left:0px; margin-right:5px; border:0px"&gt;&lt;/a&gt;&lt;a href="http://www.timelymigration.com/"&gt;Timely
 Migration: &lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
Timely Migration is a commercial tool. There are different modules for different source version control systems. To migrate from SVN to TFS the SVNToTFS module is needed. It costs $1995. Trial versions can be requested, but they do not migrate the content of
 the files.&lt;/p&gt;
&lt;table border="1" cellspacing="0" cellpadding="2" width="400"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="133" valign="top"&gt;&lt;strong&gt;svn2tfs&lt;/strong&gt;&lt;/td&gt;
&lt;td width="133" valign="top"&gt;&lt;strong&gt;Integration Platform&lt;/strong&gt;&lt;/td&gt;
&lt;td width="133" valign="top"&gt;&lt;strong&gt;Timely Migration&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="133" valign="top"&gt;open source&lt;/td&gt;
&lt;td width="133" valign="top"&gt;open source, from Microsoft&lt;/td&gt;
&lt;td width="133" valign="top"&gt;commercial, $1995&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="133" valign="top"&gt;simple and easy to use&lt;/td&gt;
&lt;td width="133" valign="top"&gt;many features, complex, complicated&lt;/td&gt;
&lt;td width="133" valign="top"&gt;powerful features, easy to use&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="133" valign="top"&gt;enough documentation&lt;/td&gt;
&lt;td width="133" valign="top"&gt;sparse documentation&lt;/td&gt;
&lt;td width="133" valign="top"&gt;good documentaion&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="133" valign="top"&gt;SVN tags can be migrated as branches&lt;/td&gt;
&lt;td width="133" valign="top"&gt;SVN tags are migrated as branches&lt;/td&gt;
&lt;td width="133" valign="top"&gt;SVN tags are migrated to TFS labels&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="133" valign="top"&gt;user-mapping is enforced&lt;/td&gt;
&lt;td width="133" valign="top"&gt;user-mapping is possible but not enforced&lt;/td&gt;
&lt;td width="133" valign="top"&gt;user-mapping is enforced and comfortable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="133" valign="top"&gt;migration is aborted in case of an error&lt;/td&gt;
&lt;td width="133" valign="top"&gt;some errors can be manually resolved and migration can be then be resumed&lt;/td&gt;
&lt;td width="133" valign="top"&gt;migration gets resumed when restarting after error resolution&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;With each tool I was able to successfully migrate an example project from a local SVN repository.&lt;/p&gt;
&lt;h4&gt;The Bad:&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;svn2tfs:&lt;/strong&gt; I was not able to migrate SVN repositories from Google Code. The tool systematically failed, because the initial repository revision for the project layout (dirs for trunk, tags and labels) has not author. The tool can not deal
 with that. On the positive side was, that the source code of the tool is very simple so that I was quickly
&lt;a href="http://svn2tfs.codeplex.com/SourceControl/list/patches"&gt;able to create a patch&lt;/a&gt;, that fixed this problem. On the negative side was, that there was
&lt;a href="http://svn2tfs.codeplex.com/SourceControl/list/patches"&gt;no reaction on the patch I submitted&lt;/a&gt;. The project seem pretty dead.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TFS Integration Platform:&lt;/strong&gt; It seems not possible to do an aynonymous login to SVN. If you do not provide valid user/password, the migration fails with an ugly “NullReferenceException”. The documentation for the SVN adapter is sparse. For
 instance there was no documentation at all how to map svn users to TFS users. fortunately (after some nudging from my contact at Microsoft)
&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/tfsintegration/thread/3e35cb27-6733-44a3-b364-936951288427/"&gt;
my question in the forum was answered&lt;/a&gt;. Some days later even &lt;a href="http://blogs.msdn.com/b/willy-peter_schaub/archive/2011/08/15/tfs-integration-tools-how-do-i-define-user-mappings-for-version-control-using-the-svn-adapter.aspx"&gt;
a blog post about the topic was published&lt;/a&gt;. Another shortcoming is, that the mapping from svn users to TFS users is not enforced. If no mapping is specified, each svn user is silently mapped to the user that is running the migration tool. There is no support
 in checking if all users from svn are mapped to TFS users.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Timely Migration:&lt;/strong&gt; The only negative thing is the price since you probably need the tool only once.&lt;/p&gt;
&lt;h4&gt;The Ugly:&lt;/h4&gt;
&lt;p&gt;With none of the tools I was able to migrate the &lt;a href="http://nerddinner.codeplex.com/"&gt;
Nerd Dinner&lt;/a&gt; repository from Codeplex. Each tool either reported an error or froze indefinitely.&lt;/p&gt;
&lt;div style="font-size:10px; clear:right"&gt;&lt;br&gt;
&lt;p&gt;&lt;a href="http://twitter.com/jbandi"&gt;&lt;img src="http://www.google.com/s2/favicons?domain=twitter.com" alt="http://www.google.com/s2/favicons?domain=twitter.com" border="0" align="left" height="13px" style="margin:0px 0px 0px 0px; border:none"&gt; If you like
 this, follow me on twitter...&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="x_blogger-post-footer"&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/5763764290649132593-7528013320075119085?l=blog.jonasbandi.net" alt=""&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/vl5uH91bNTo_JNRrKWxo-M5eMY8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vl5uH91bNTo_JNRrKWxo-M5eMY8/0/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/vl5uH91bNTo_JNRrKWxo-M5eMY8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vl5uH91bNTo_JNRrKWxo-M5eMY8/1/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="x_feedflare"&gt;&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=utmIexQLuS4:3xNEsRRDGBg:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=utmIexQLuS4:3xNEsRRDGBg:4cEx4HpKnUU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=utmIexQLuS4:3xNEsRRDGBg:yIl2AUoC8zA"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=utmIexQLuS4:3xNEsRRDGBg:I9og5sOYxJI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=utmIexQLuS4:3xNEsRRDGBg:F7zBnMyn0Lo"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=utmIexQLuS4:3xNEsRRDGBg:F7zBnMyn0Lo" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=utmIexQLuS4:3xNEsRRDGBg:V_sGLiPBpWU"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=utmIexQLuS4:3xNEsRRDGBg:V_sGLiPBpWU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=utmIexQLuS4:3xNEsRRDGBg:gIN9vFwOqvQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=utmIexQLuS4:3xNEsRRDGBg:gIN9vFwOqvQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=utmIexQLuS4:3xNEsRRDGBg:cGdyc7Q-1BI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=utmIexQLuS4:3xNEsRRDGBg:G79ilh31hkQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=utmIexQLuS4:3xNEsRRDGBg:Y59mnZtVT5U"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/utmIexQLuS4" height="1" width="1"&gt;</content>
      <app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-29T23:18:58.889+02:00</app:edited>
      <media:thumbnail url="http://lh4.ggpht.com/-s0i6xVNcNJY/Tlv-kyfBzPI/AAAAAAAABCs/q9X3nUDEjt0/s72-c/image_thumb%25255B17%25255D.png?imgmax=800" height="72" width="72" xmlns:media="http://search.yahoo.com/mrss/"></media:thumbnail>
      <thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total>
      <feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blog.jonasbandi.net/2011/08/from-svn-to-tfs-good-bad-and-ugly.html</feedburner:origLink>
    </item>
    <item p3:etag="W/&quot;CkcESX89eCp7ImA9WhdXEkQ.&quot;" xmlns:p3="http://schemas.google.com/g/2005">
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5763764290649132593.post-413954154911889868</guid>
      <link>http://feedproxy.google.com/~r/closed-loop/~3/72Nc4xDA2OE/is-there-any-hope-for-other-dvcs-in-git.html</link>
      <author>noreply@blogger.com</author>
      <category domain="http://www.blogger.com/atom/ns#">technology</category>
      <category domain="http://www.blogger.com/atom/ns#">programming</category>
      <title>Is there any hope for other DVCS in the Git imperium?</title>
      <description>&lt;p&gt;&lt;img style="float: right; margin-left: 10px;" src="http://lh3.ggpht.com/-TRLvOVgVa_U/TkfqA08or4I/AAAAAAAABCY/eU4xZ-x-ubc/lego-star-wars-chr1.jpg?imgmax=800" border="0" alt="Lego star wars chr1" width="250" height="179" /&gt;&lt;/p&gt;&lt;p&gt;As we are &lt;a href="http://blog.jonasbandi.net/2011/07/entering-age-of-jvm-language-wars.html"&gt;entering the era of language wars on the JVM&lt;/a&gt; there is another war looming on the horizon...&lt;/p&gt;&lt;p&gt;This new war is coming out of the realm of &lt;a href="http://en.wikipedia.org/wiki/Distributed_revision_control"&gt;distributed version control systems&lt;/a&gt;:&lt;/p&gt;&lt;p&gt;&lt;a href="http://git-scm.com/"&gt;Git&lt;/a&gt; seems to have a nearly undisputed imperium in this realm and recently has squished its known competitors:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://github.com/"&gt;GitHub&lt;/a&gt; is &lt;em&gt;THE&lt;/em&gt; repository for thriving open source projects. Recently I find me browsing on GitHub much more often than on &lt;a href="http://code.google.com/"&gt;Google Code&lt;/a&gt; or &lt;a href="http://www.codeplex.com/"&gt;CodePlex&lt;/a&gt; ... while &lt;a href="https://bitbucket.org/"&gt;BitBucket&lt;/a&gt; as the main &lt;a href="http://mercurial.selenic.com/"&gt;Mercurial&lt;/a&gt; contener only plays a marginal role in my experience.&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/"&gt;Google Code&lt;/a&gt;, who was favoring &lt;a href="http://subversion.apache.org/"&gt;SVN&lt;/a&gt; and &lt;a href="http://mercurial.selenic.com/"&gt;Mercurial&lt;/a&gt; for some time, &lt;a href="http://google-opensource.blogspot.com/2011/07/announcing-git-support-for-google-code.html"&gt;recently added Git support&lt;/a&gt; ...&lt;/li&gt;&lt;li&gt;A lot of the new &lt;em&gt;hot-and-hyped&lt;/em&gt; cloud based &lt;a href="http://en.wikipedia.org/wiki/Platform_as_a_service"&gt;PaaS&lt;/a&gt; are using Git as their tool of choice for deployment: &lt;a href="http://www.heroku.com/"&gt;Heroku&lt;/a&gt;, &lt;a href="https://openshift.redhat.com/app/"&gt;JBoss OpenShift&lt;/a&gt;, &lt;a href="https://appharbor.com/"&gt;AppHarbor&lt;/a&gt; ...&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Despite the seemingly striking dominance of &lt;a href="http://git-scm.com/"&gt;Git&lt;/a&gt;, there are still brave contenders sprouting out of the dvcs land:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://veracity-scm.com/"&gt;Veracity&lt;/a&gt; by sourcegear&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.plasticscm.com/"&gt;Plastic SCM&lt;/a&gt;&lt;/li&gt;&lt;li&gt;and older, yet still thriving: &lt;a href="http://mercurial.selenic.com/"&gt;Mercurial&lt;/a&gt;, &lt;a href="http://bazaar.canonical.com/"&gt;Bazaar&lt;/a&gt;, &lt;a href="http://www.fossil-scm.org/"&gt;Fossil&lt;/a&gt; ...&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;All of them featuring some unique features (although features I am not always sure I would like to see coupled to a source control system ...) and most of them somehow promising more simplicity compared to Git.&lt;/p&gt;&lt;p&gt;I wonder if they have any chance against the massive momentum of Git and its ecosystem ...&lt;/p&gt;&lt;div style="align: right; font-size: 10px; clear: right;"&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://twitter.com/jbandi"&gt;&lt;img style="margin: 0px 0px 0px 0px; border: none;" src="http://www.google.com/s2/favicons?domain=twitter.com" border="0" alt="http://www.google.com/s2/favicons?domain=twitter.com" height="13px" align="left" /&gt; If you like this, follow me on twitter...&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5763764290649132593-413954154911889868?l=blog.jonasbandi.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/tMakN_ohClpFZF8KktOJVsT4LEw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tMakN_ohClpFZF8KktOJVsT4LEw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/tMakN_ohClpFZF8KktOJVsT4LEw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tMakN_ohClpFZF8KktOJVsT4LEw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=72Nc4xDA2OE:oB79Z52Sffw:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=72Nc4xDA2OE:oB79Z52Sffw:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=72Nc4xDA2OE:oB79Z52Sffw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=72Nc4xDA2OE:oB79Z52Sffw:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=72Nc4xDA2OE:oB79Z52Sffw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=72Nc4xDA2OE:oB79Z52Sffw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=72Nc4xDA2OE:oB79Z52Sffw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=72Nc4xDA2OE:oB79Z52Sffw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=72Nc4xDA2OE:oB79Z52Sffw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=72Nc4xDA2OE:oB79Z52Sffw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=72Nc4xDA2OE:oB79Z52Sffw:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=72Nc4xDA2OE:oB79Z52Sffw:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=72Nc4xDA2OE:oB79Z52Sffw:Y59mnZtVT5U"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/72Nc4xDA2OE" height="1" width="1"/&gt;</description>
      <pubDate>Thu, 25 Aug 2011 18:32:00 +0200</pubDate>
      <link rel="replies" type="application/atom+xml" title="Post Comments" href="http://blog.jonasbandi.net/feeds/413954154911889868/comments/default" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="replies" type="text/html" title="3 Comments" href="http://www.blogger.com/comment.g?blogID=5763764290649132593&amp;postID=413954154911889868" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/413954154911889868?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/413954154911889868?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <updated xmlns="http://www.w3.org/2005/Atom">2011-08-25T18:33:28+02:00</updated>
      <content type="html" xmlns="http://www.w3.org/2005/Atom">
&lt;p&gt;&lt;img src="http://lh3.ggpht.com/-TRLvOVgVa_U/TkfqA08or4I/AAAAAAAABCY/eU4xZ-x-ubc/lego-star-wars-chr1.jpg?imgmax=800" border="0" alt="Lego star wars chr1" width="250" height="179" style="float:right; margin-left:10px"&gt;&lt;/p&gt;
&lt;p&gt;As we are &lt;a href="http://blog.jonasbandi.net/2011/07/entering-age-of-jvm-language-wars.html"&gt;
entering the era of language wars on the JVM&lt;/a&gt; there is another war looming on the horizon...&lt;/p&gt;
&lt;p&gt;This new war is coming out of the realm of&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Distributed_revision_control"&gt;distributed version control systems&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://git-scm.com/"&gt;Git&lt;/a&gt; seems to have a nearly undisputed imperium in this realm and recently has squished its known competitors:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/"&gt;GitHub&lt;/a&gt; is &lt;em&gt;THE&lt;/em&gt; repository for thriving open source projects. Recently I find me browsing on GitHub much more often than on
&lt;a href="http://code.google.com/"&gt;Google Code&lt;/a&gt; or &lt;a href="http://www.codeplex.com/"&gt;
CodePlex&lt;/a&gt; ... while &lt;a href="https://bitbucket.org/"&gt;BitBucket&lt;/a&gt; as the main
&lt;a href="http://mercurial.selenic.com/"&gt;Mercurial&lt;/a&gt; contener only plays a marginal role in my experience.&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/"&gt;Google Code&lt;/a&gt;, who was favoring &lt;a href="http://subversion.apache.org/"&gt;
SVN&lt;/a&gt; and &lt;a href="http://mercurial.selenic.com/"&gt;Mercurial&lt;/a&gt; for some time, &lt;a href="http://google-opensource.blogspot.com/2011/07/announcing-git-support-for-google-code.html"&gt;
recently added Git support&lt;/a&gt; ...&lt;/li&gt;&lt;li&gt;A lot of the new &lt;em&gt;hot-and-hyped&lt;/em&gt; cloud based &lt;a href="http://en.wikipedia.org/wiki/Platform_as_a_service"&gt;
PaaS&lt;/a&gt; are using Git as their tool of choice for deployment:&amp;nbsp;&lt;a href="http://www.heroku.com/"&gt;Heroku&lt;/a&gt;,
&lt;a href="https://openshift.redhat.com/app/"&gt;JBoss OpenShift&lt;/a&gt;, &lt;a href="https://appharbor.com/"&gt;
AppHarbor&lt;/a&gt; ...&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Despite the seemingly striking dominance of &lt;a href="http://git-scm.com/"&gt;Git&lt;/a&gt;, there are still brave contenders sprouting out of the dvcs land:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://veracity-scm.com/"&gt;Veracity&lt;/a&gt; by sourcegear&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.plasticscm.com/"&gt;Plastic SCM&lt;/a&gt;&lt;/li&gt;&lt;li&gt;and older, yet still thriving: &lt;a href="http://mercurial.selenic.com/"&gt;Mercurial&lt;/a&gt;,
&lt;a href="http://bazaar.canonical.com/"&gt;Bazaar&lt;/a&gt;,&amp;nbsp;&lt;a href="http://www.fossil-scm.org/"&gt;Fossil&lt;/a&gt; ...&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;All of them featuring some unique features (although features I am not always sure I would like to see coupled to a source control system ...) and most of them somehow promising more simplicity compared to Git.&lt;/p&gt;
&lt;p&gt;I wonder if they have any chance against the massive momentum of Git and its ecosystem ...&lt;/p&gt;
&lt;div style="font-size:10px; clear:right"&gt;&lt;br&gt;
&lt;p&gt;&lt;a href="http://twitter.com/jbandi"&gt;&lt;img src="http://www.google.com/s2/favicons?domain=twitter.com" border="0" alt="http://www.google.com/s2/favicons?domain=twitter.com" height="13px" align="left" style="margin:0px 0px 0px 0px; border:none"&gt; If you like
 this, follow me on twitter...&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="x_blogger-post-footer"&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/5763764290649132593-413954154911889868?l=blog.jonasbandi.net" alt=""&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/tMakN_ohClpFZF8KktOJVsT4LEw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tMakN_ohClpFZF8KktOJVsT4LEw/0/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/tMakN_ohClpFZF8KktOJVsT4LEw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tMakN_ohClpFZF8KktOJVsT4LEw/1/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="x_feedflare"&gt;&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=72Nc4xDA2OE:oB79Z52Sffw:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=72Nc4xDA2OE:oB79Z52Sffw:4cEx4HpKnUU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=72Nc4xDA2OE:oB79Z52Sffw:yIl2AUoC8zA"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=72Nc4xDA2OE:oB79Z52Sffw:I9og5sOYxJI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=72Nc4xDA2OE:oB79Z52Sffw:F7zBnMyn0Lo"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=72Nc4xDA2OE:oB79Z52Sffw:F7zBnMyn0Lo" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=72Nc4xDA2OE:oB79Z52Sffw:V_sGLiPBpWU"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=72Nc4xDA2OE:oB79Z52Sffw:V_sGLiPBpWU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=72Nc4xDA2OE:oB79Z52Sffw:gIN9vFwOqvQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=72Nc4xDA2OE:oB79Z52Sffw:gIN9vFwOqvQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=72Nc4xDA2OE:oB79Z52Sffw:cGdyc7Q-1BI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=72Nc4xDA2OE:oB79Z52Sffw:G79ilh31hkQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=72Nc4xDA2OE:oB79Z52Sffw:Y59mnZtVT5U"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/72Nc4xDA2OE" height="1" width="1"&gt;</content>
      <app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-25T18:33:28.160+02:00</app:edited>
      <media:thumbnail url="http://lh3.ggpht.com/-TRLvOVgVa_U/TkfqA08or4I/AAAAAAAABCY/eU4xZ-x-ubc/s72-c/lego-star-wars-chr1.jpg?imgmax=800" height="72" width="72" xmlns:media="http://search.yahoo.com/mrss/"></media:thumbnail>
      <thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total>
      <feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blog.jonasbandi.net/2011/08/is-there-any-hope-for-other-dvcs-in-git.html</feedburner:origLink>
    </item>
    <item p3:etag="W/&quot;D04ARHg9fSp7ImA9WhdXEUQ.&quot;" xmlns:p3="http://schemas.google.com/g/2005">
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5763764290649132593.post-6205297622397194611</guid>
      <link>http://feedproxy.google.com/~r/closed-loop/~3/W8lLhFvawRs/agile-in-real-world-construction.html</link>
      <author>noreply@blogger.com</author>
      <category domain="http://www.blogger.com/atom/ns#">agile</category>
      <title>Agile in the real world (construction analogy again)</title>
      <description>&lt;p&gt;&lt;img style="margin: 0px 0px 10px 10px;" src="http://lh4.ggpht.com/_X3kaawac_g4/S6VhgpzoQ6I/AAAAAAAAAx8/ndOHd624KT0/Hardbruecke.JPG?imgmax=800" border="0" alt="Hardbruecke.JPG" height="280" align="right" /&gt; There is a common claim that we should learn more from classical engineering disciplines like civil engineering. According to that claim the IT industry would be a better place if we would adopt best practices from the latter.&lt;/p&gt;&lt;p&gt;But when we look closer, then we can see similar problems in those real engineering disciplines ... this picture is a poignant example of that.&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;div style="width: 390px; align: right; font-size: 14px; clear: right;"&gt;&lt;br /&gt;&lt;blockquote&gt;Prediction is difficult, especially of the future.&lt;/blockquote&gt;&lt;div style="font-size: 10px; text-align: right;"&gt;&lt;a href="http://twitter.com/unclebobmartin/status/7271083177"&gt;–Niels Bohr&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;br/&gt;&lt;br/&gt;&lt;div style="align: right; font-size: 10px; clear: right;"&gt;&lt;p&gt;&lt;a href="http://twitter.com/jbandi"&gt;&lt;img style="margin: 0px 0px 0px 0px; border: none;" src="http://www.google.com/s2/favicons?domain=twitter.com" border="0" alt="http://www.google.com/s2/favicons?domain=twitter.com" height="13px" align="left" /&gt; If you like this, follow me on twitter...&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5763764290649132593-6205297622397194611?l=blog.jonasbandi.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/550ZE_zhjZnQUWNSBrHZIsXl1iQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/550ZE_zhjZnQUWNSBrHZIsXl1iQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/550ZE_zhjZnQUWNSBrHZIsXl1iQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/550ZE_zhjZnQUWNSBrHZIsXl1iQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=W8lLhFvawRs:4VqT9INh_Is:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=W8lLhFvawRs:4VqT9INh_Is:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=W8lLhFvawRs:4VqT9INh_Is:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=W8lLhFvawRs:4VqT9INh_Is:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=W8lLhFvawRs:4VqT9INh_Is:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=W8lLhFvawRs:4VqT9INh_Is:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=W8lLhFvawRs:4VqT9INh_Is:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=W8lLhFvawRs:4VqT9INh_Is:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=W8lLhFvawRs:4VqT9INh_Is:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=W8lLhFvawRs:4VqT9INh_Is:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=W8lLhFvawRs:4VqT9INh_Is:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=W8lLhFvawRs:4VqT9INh_Is:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=W8lLhFvawRs:4VqT9INh_Is:Y59mnZtVT5U"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/W8lLhFvawRs" height="1" width="1"/&gt;</description>
      <pubDate>Tue, 23 Aug 2011 23:06:00 +0200</pubDate>
      <link rel="replies" type="application/atom+xml" title="Post Comments" href="http://blog.jonasbandi.net/feeds/6205297622397194611/comments/default" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="replies" type="text/html" title="0 Comments" href="http://www.blogger.com/comment.g?blogID=5763764290649132593&amp;postID=6205297622397194611" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/6205297622397194611?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/6205297622397194611?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <updated xmlns="http://www.w3.org/2005/Atom">2011-08-24T16:25:45+02:00</updated>
      <content type="html" xmlns="http://www.w3.org/2005/Atom">
&lt;p&gt;&lt;img src="http://lh4.ggpht.com/_X3kaawac_g4/S6VhgpzoQ6I/AAAAAAAAAx8/ndOHd624KT0/Hardbruecke.JPG?imgmax=800" border="0" alt="Hardbruecke.JPG" height="280" align="right" style="margin:0px 0px 10px 10px"&gt; There is a common claim that we should learn more from
 classical engineering disciplines like civil engineering. According to that claim the IT industry would be a better place if we would adopt best practices from the latter.&lt;/p&gt;
&lt;p&gt;But when we look closer, then we can see similar problems in those real engineering disciplines ... this picture is a poignant example of that.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="width:390px; font-size:14px; clear:right"&gt;&lt;br&gt;
&lt;blockquote&gt;Prediction is difficult, especially of the future.&lt;/blockquote&gt;
&lt;div style="font-size:10px; text-align:right"&gt;&lt;a href="http://twitter.com/unclebobmartin/status/7271083177"&gt;–Niels Bohr&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;br&gt;
&lt;div style="font-size:10px; clear:right"&gt;
&lt;p&gt;&lt;a href="http://twitter.com/jbandi"&gt;&lt;img src="http://www.google.com/s2/favicons?domain=twitter.com" border="0" alt="http://www.google.com/s2/favicons?domain=twitter.com" height="13px" align="left" style="margin:0px 0px 0px 0px; border:none"&gt; If you like
 this, follow me on twitter...&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="x_blogger-post-footer"&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/5763764290649132593-6205297622397194611?l=blog.jonasbandi.net" alt=""&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/550ZE_zhjZnQUWNSBrHZIsXl1iQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/550ZE_zhjZnQUWNSBrHZIsXl1iQ/0/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/550ZE_zhjZnQUWNSBrHZIsXl1iQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/550ZE_zhjZnQUWNSBrHZIsXl1iQ/1/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="x_feedflare"&gt;&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=W8lLhFvawRs:4VqT9INh_Is:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=W8lLhFvawRs:4VqT9INh_Is:4cEx4HpKnUU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=W8lLhFvawRs:4VqT9INh_Is:yIl2AUoC8zA"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=W8lLhFvawRs:4VqT9INh_Is:I9og5sOYxJI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=W8lLhFvawRs:4VqT9INh_Is:F7zBnMyn0Lo"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=W8lLhFvawRs:4VqT9INh_Is:F7zBnMyn0Lo" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=W8lLhFvawRs:4VqT9INh_Is:V_sGLiPBpWU"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=W8lLhFvawRs:4VqT9INh_Is:V_sGLiPBpWU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=W8lLhFvawRs:4VqT9INh_Is:gIN9vFwOqvQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=W8lLhFvawRs:4VqT9INh_Is:gIN9vFwOqvQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=W8lLhFvawRs:4VqT9INh_Is:cGdyc7Q-1BI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=W8lLhFvawRs:4VqT9INh_Is:G79ilh31hkQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=W8lLhFvawRs:4VqT9INh_Is:Y59mnZtVT5U"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/W8lLhFvawRs" height="1" width="1"&gt;</content>
      <app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-24T16:25:45.665+02:00</app:edited>
      <media:thumbnail url="http://lh4.ggpht.com/_X3kaawac_g4/S6VhgpzoQ6I/AAAAAAAAAx8/ndOHd624KT0/s72-c/Hardbruecke.JPG?imgmax=800" height="72" width="72" xmlns:media="http://search.yahoo.com/mrss/"></media:thumbnail>
      <thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total>
      <feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blog.jonasbandi.net/2011/08/agile-in-real-world-construction.html</feedburner:origLink>
    </item>
    <item>
      <guid isPermaLink="false">http://schaedlerdaniel.wordpress.com/?p=417</guid>
      <link>http://schaedlerdaniel.wordpress.com/2011/08/21/mein-erstes-mal/</link>
      <category>Allgemein</category>
      <title>Mein erstes Mal….</title>
      <description>an der See # Party in Kreuzlingen war super und ich werde auf jeden fall, sollte sie auch nächstes Jahr statt finden wieder hingegen Wieso denn? Ganz einfach man sieht dort wirklich alle die in der Community aktiv sind und mit denen man per Facebook, Twitter
 oder irgendeinem Social Tool in Kontakt steht und kann [...]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=schaedlerdaniel.wordpress.com&amp;amp;blog=16378069&amp;amp;post=417&amp;amp;subd=schaedlerdaniel&amp;amp;ref=&amp;amp;feed=1" width="1" height="1"&gt;</description>
      <pubDate>Sun, 21 Aug 2011 10:00:04 Z</pubDate>
      <comments>http://schaedlerdaniel.wordpress.com/2011/08/21/mein-erstes-mal/#comments</comments>
      <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">schaedlerdaniel</dc:creator>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;an der &lt;a href="http://www.seesharpparty.de/de/Start/page38393.htm" title="See # Party" target="_blank"&gt;See # Party&lt;/a&gt; in Kreuzlingen war super und ich werde auf jeden fall, sollte sie auch nächstes Jahr statt finden wieder hingegen &lt;/p&gt;
&lt;p&gt;Wieso denn? Ganz einfach man sieht dort wirklich alle die in der Community aktiv sind und mit denen man per Facebook, Twitter oder irgendeinem Social Tool in Kontakt steht und kann ein wenig fachsimpeln oder auch über Gott und die Welt reden. Schon fast familiäre Stimmung &lt;/p&gt;
&lt;p&gt;
&lt;h1&gt;Welche Session&amp;#8217;s habe ich den besucht?&lt;/h1&gt;
&lt;/p&gt;
&lt;p&gt;Da die Autofahr ziemlich reibungslos verlief, trudelten ich und mein Fahrer bereits um 07.45 Uhr in Kreuzlingen ein. Ein bisschen früh für den Einlass. &lt;/p&gt;
&lt;p&gt;Um 08.25 Uhr blickten wir noch mal rein und konnten uns dann die Badges für SFr. 110.&amp;#8211; (was ich für einen sehr günstigen Preis halte) abholen. &lt;/p&gt;
&lt;p&gt;
&lt;h2&gt;Begrüssungsfazit&lt;/h2&gt;
&lt;/p&gt;
&lt;p&gt;War nicht so show geladen wie an den Techdays und dass macht die Veranstaltung auch so sympathisch! Weiter so Jungs!&lt;/p&gt;
&lt;p&gt;
&lt;h2&gt;Keynote&lt;/h2&gt;
&lt;/p&gt;
&lt;p&gt;Die Keynote war mal ein ganz anderes Thema als, C#, Silverlight und dergleichen. Es ging um den Stress den man sich selber machen kann, oder der durch äussere Faktoren ausgelöst wird. Sehr interessant fand ich dann auch wie sich der Wandel in der IT-Branche vollzogen hat (bis auf ein paar Namensänderungen der Ziele und Verschiebung unter den Top 15 Themen gabs keine grossen Wandel).
&lt;p&gt;Nun ja, da ich meine Mail&amp;#8217;s erst am Morgen und dann wieder am Abend kontrolliere und mein Handy so oder so auf lautlos eingestellt ist, hält sich mein Stressfaktor zum Glück in Grenzen. &lt;/p&gt;
&lt;p&gt;Danach mal den Plan hervorgenommen und die Session&amp;#8217;s gemerkt. Lustigerweise hatte ich 4 mal die Gelegenheit im gleichen Raum die Vorlesungen zu geniessen, was wiederum der Suche für die Örtlichkeit der nächsten Session, erheblich vereinfacht.&lt;/p&gt;
&lt;p&gt;
&lt;h2&gt;Die Sessions&lt;/h2&gt;
&lt;p&gt;&lt;p&gt;Beruflich habe ich eigentlich immer mit &lt;a href="http://www.asp.net" target="_blank"&gt;ASP.NET WebForms&lt;/a&gt; zu tun. Da auch ich im Wandel bin habe ich die Sessions die sich mit ASP.NET befassten aussen vor gelassen und richtetet meinen Fokus eher Silverlight, XAML, Workflow Foundation.&lt;/p&gt;
&lt;p&gt;
&lt;h3&gt;XAML Deep Dive &amp;#8211; Mehr als nur WPF&lt;/h3&gt;
&lt;/p&gt;
&lt;p&gt;Dieser Vortrag war sehr lehrreich. Ich fand es super, dass die Einsatzmöglichkeiten von XAML, auch ausserhalb von WPF /Silverlight /Workflow Foundation verwendet werden kann und es ein offener Standard ist. Mein Fazit zu dieser Session: Gut&lt;/p&gt;
&lt;p&gt;Falls man die Folien nicht herunterladen kann, findet man auf &lt;a href="http://www.neovelop.de/blog/xaml-mehr-als-nur-eine-einfache-beschreibungssprache" Title="XAML mehr als nur WPF" target="_blank"&gt;XAML &amp;#8211; Mehr als nur eine einfache Beschreibungssprache&lt;/a&gt; einen sehr guten Blogartikel.&lt;/p&gt;
&lt;p&gt;
&lt;h3&gt;Windows Communication Foundation 4.0 &amp;#8211; Die Neuerungen&lt;/h3&gt;
&lt;/p&gt;
&lt;p&gt;Die Session hat sich mit den Neuerungen der Windows Communication Foundation 4.0 befasst und deren Änderungen die eingeflossen sind. Die Codebeispiele, liefen zu 80%. Es war für mich in dieser Hinsicht schade dass nicht alles funktioniert hat, aber einen positiven Teil kann man dem Ganzen auch abgewinnen: So qualifiziert und auch hohes Fachwissen die Speaker auch habe, auch sie sind Menschen denen Fehler passieren können und das ist sicherlich auch ein guter Aspekt. Schön fand ich wie die einzelnen WCF Neuerungen vorgeführt worden sind. Der Router blieb mir besonders, wegen Performanceeinschränkunen wenn man nicht alles bachtet im Gedächtnis und ich denke dass man dann diesen auch eher seltener einsetzen wird.&lt;/p&gt;
&lt;p&gt;Mein Fazit zu dieser Session: Gut (Ich wusste gar nicht das hochdeutsch eine gleiche Geschwindigkeit wie Französisch an den Tag legen kann &lt;img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /&gt;  )&lt;/p&gt;
&lt;p&gt;
&lt;h3&gt;Accessebility&lt;/h3&gt;
&lt;/p&gt;
&lt;p&gt;Auf diese Session habe ich mich besonders gefreut, zumal man den Jürgen mal live sehen konnte. Die Aspekte unter welchen man eine barriere freie Webseite baut sind sehr gut dargestellt worden. Auch die anschliessende Diskussion und Fragerunde war sehr aufschluss- und lehrreich. Was habe ich für mich mitgenommen? Am besten Back to the roots, die Webseite in purem HTML erstellen und dynamische Inhalte soweit es geht per CSS zu erstellen. Eine weitere Erkenntnis von mir auch ist dass ASP.NET WebForms eher weniger dazu geeignet ist mit den Boardmitteln einen solche barriere freie Webseite zu erstellen, da muss man eben bei der Generierung der Controls auf der Seite Einfluss nehmen und so kann man in ASP.NET MVC das Ziel einer barriere freien optimaler erreichen.&lt;/p&gt;
&lt;p&gt;Mein Fazit zu dieser Session: Gut (ein paar Einstiegslacher lockerten das ganze ein wenig auf (obwohl es wohl Insiderlacher von Jürgen und Karsten waren)).&lt;/p&gt;
&lt;p&gt;
&lt;h3&gt;User Interface Pattern mit Silverlight&lt;/h3&gt;
&lt;/p&gt;
&lt;p&gt;Eigentlich hätte ich es mir sparen können diese Session zu besuchen&amp;#8230;. Dachte ich zumindest in den ersten 5 Minuten. Aber weit gefehlt: Denn es ist immer wieder gut wenn man die Do&amp;#8217;s und Dont&amp;#8217;s der UI-Erstellung auf erfrischende Art präsentiert bekommt. Der Sprecher war sehr versiert und auch die Fokusierung von Inhalten durch das menschliche Auge hat, hat mir einen anderen Einblick gegeben.&lt;/p&gt;
&lt;p&gt;Rein theoretisch hätte man aber nicht unbedingt &lt;a href="http://www.silverlight.net" title="Silverlight" target="_blank"&gt;Silverlight&lt;/a&gt; nehmen müssen.&lt;/p&gt;
&lt;p&gt;Mein Fazit zu dieser Session: Gut &lt;/p&gt;
&lt;p&gt;
&lt;h3&gt;Workflow Foundation 4.0&lt;/h3&gt;
&lt;/p&gt;
&lt;p&gt;Das Ziel war eine Getting Started Session zu machen die einen Einblick in die Workflow Fondatin 4.0 bieten soll. Dieser Einblick ist nur teilweise geglückt. Dies hat zum einen damit zu tun, dass Features die selbstverständlich sind, also das suchen von Namepsaces à la Expression Blend, nicht wirklich neu waren. Es hätte mir auch mehr gefallen, wenn man eventuell nicht dass klassische Hellow World Beispiel genommen hätte, sonder ein wenig einen kleinen Geschäftsfall erstellt hätte.&lt;/p&gt;
&lt;p&gt;Mein Fazit zu dieser Session: Schlecht&lt;/p&gt;
&lt;p&gt;
&lt;h2&gt;Schlusswort&lt;/h3&gt;
&lt;/p&gt;
&lt;p&gt;Ich finde es war ein gelungeren Anlass und es hätte auch paar mehr Entwickler kommen können. Meiner Meinung hat ausser berufliche Besuch an einer Koferenz nicht&amp;#8217;s mit Geek zu tun sondern mit Interesse an der Arbeit die man macht. Ein Koch der leidenschaftlich kocht, der wird auch zuhause noch gerne kochen und sich auch ausserhalb der Arbeitszeit weiter bilden, weil es ihm Spass macht. Wenn man das nun so auf die Entwickler abmüntzen möchte, dann könnte man es überspitzt sagen, dass diese den Job gar nicht gerne machen (ich weiss es ist überspitzt, aber ich denke dass entspricht so dem Wahrheit). &lt;/p&gt;
&lt;p&gt;Auch möchte ich erwähnen dass die geübte Kritik an den Sessions keinesfalls persönlich gemeint sind. Ich selber könnte nicht vor so vielen reden ohne Schweissperlen zu entwickeln, also jedem der vor so vielen Leuten redet, der ist schon, unabhängig von der Kritik, ein Gewinner. &lt;/p&gt;
&lt;p&gt;Es würde mich sehr freuen, wenn auch nächstes Jahr wieder eine See # Party statt finden und vielleicht ein wenig mehr Entwickler den Weg dorthin finden würden.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/schaedlerdaniel.wordpress.com/417/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/schaedlerdaniel.wordpress.com/417/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/schaedlerdaniel.wordpress.com/417/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/schaedlerdaniel.wordpress.com/417/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/schaedlerdaniel.wordpress.com/417/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/schaedlerdaniel.wordpress.com/417/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/schaedlerdaniel.wordpress.com/417/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/schaedlerdaniel.wordpress.com/417/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/schaedlerdaniel.wordpress.com/417/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/schaedlerdaniel.wordpress.com/417/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/schaedlerdaniel.wordpress.com/417/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/schaedlerdaniel.wordpress.com/417/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/schaedlerdaniel.wordpress.com/417/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/schaedlerdaniel.wordpress.com/417/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=schaedlerdaniel.wordpress.com&amp;amp;blog=16378069&amp;amp;post=417&amp;amp;subd=schaedlerdaniel&amp;amp;ref=&amp;amp;feed=1" width="1" height="1" /&gt;</content:encoded>
      <wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://schaedlerdaniel.wordpress.com/2011/08/21/mein-erstes-mal/feed/</wfw:commentRss>
      <slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">3</slash:comments>
      <media:content url="http://0.gravatar.com/avatar/e50530c3e478a8a210b7df39006fdc68?s=96&amp;d=identicon&amp;r=G" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">schaedlerdaniel</media:title>
      </media:content>
    </item>
    <item p3:etag="W/&quot;DkINQHs7eip7ImA9WhdQFkw.&quot;" xmlns:p3="http://schemas.google.com/g/2005">
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5763764290649132593.post-5289507373143642472</guid>
      <link>http://feedproxy.google.com/~r/closed-loop/~3/OLBYz4MTheU/tidbit-big-data.html</link>
      <author>noreply@blogger.com</author>
      <category domain="http://www.blogger.com/atom/ns#">tidbit</category>
      <title>Tidbit: Big Data</title>
      <description>&lt;p&gt;&lt;img style="float: right; margin-left: 10px;" src="http://lh6.ggpht.com/_X3kaawac_g4/TS4htJ3nK8I/AAAAAAAAA6c/d0duKh9vaCQ/315116528_480edcad4d.jpg?imgmax=800" border="0" alt="315116528_480edcad4d.jpg" width="120" /&gt;&lt;/p&gt;&lt;p&gt;The amounts of data that Twitter handles is astonishing:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;12 TB per day (= 4 PB per year) 
&lt;ul&gt;&lt;li&gt;... this equals 17'000 CDs per day&lt;/li&gt;&lt;li&gt;... this equals 9 mio floppy disks per day ( = 26.5 miles high)&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;And the amount is doubling multiple times a year.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;... this is according to the presentation &lt;a href="http://www.infoq.com/presentations/NoSQL-at-Twitter"&gt;NoSQL at Twitter&lt;/a&gt; from October 2010, so today the pile of floppy disks would probably already be 50 miles high...&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5763764290649132593-5289507373143642472?l=blog.jonasbandi.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/1-7x7PkmT6Y-vvA2TmfZ7eThH_Y/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1-7x7PkmT6Y-vvA2TmfZ7eThH_Y/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/1-7x7PkmT6Y-vvA2TmfZ7eThH_Y/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1-7x7PkmT6Y-vvA2TmfZ7eThH_Y/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=OLBYz4MTheU:QajfR64-Jm4:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=OLBYz4MTheU:QajfR64-Jm4:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=OLBYz4MTheU:QajfR64-Jm4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=OLBYz4MTheU:QajfR64-Jm4:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=OLBYz4MTheU:QajfR64-Jm4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=OLBYz4MTheU:QajfR64-Jm4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=OLBYz4MTheU:QajfR64-Jm4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=OLBYz4MTheU:QajfR64-Jm4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=OLBYz4MTheU:QajfR64-Jm4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=OLBYz4MTheU:QajfR64-Jm4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=OLBYz4MTheU:QajfR64-Jm4:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=OLBYz4MTheU:QajfR64-Jm4:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=OLBYz4MTheU:QajfR64-Jm4:Y59mnZtVT5U"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/OLBYz4MTheU" height="1" width="1"/&gt;</description>
      <pubDate>Wed, 17 Aug 2011 22:56:00 +0200</pubDate>
      <link rel="replies" type="application/atom+xml" title="Post Comments" href="http://blog.jonasbandi.net/feeds/5289507373143642472/comments/default" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="replies" type="text/html" title="0 Comments" href="http://www.blogger.com/comment.g?blogID=5763764290649132593&amp;postID=5289507373143642472" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/5289507373143642472?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/5289507373143642472?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <updated xmlns="http://www.w3.org/2005/Atom">2011-08-17T22:56:31+02:00</updated>
      <content type="html" xmlns="http://www.w3.org/2005/Atom">
&lt;p&gt;&lt;img src="http://lh6.ggpht.com/_X3kaawac_g4/TS4htJ3nK8I/AAAAAAAAA6c/d0duKh9vaCQ/315116528_480edcad4d.jpg?imgmax=800" border="0" alt="315116528_480edcad4d.jpg" width="120" style="float:right; margin-left:10px"&gt;&lt;/p&gt;
&lt;p&gt;The amounts of data that Twitter handles is astonishing:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;12 TB per day (= 4 PB per year)
&lt;ul&gt;
&lt;li&gt;... this equals 17'000 CDs per day&lt;/li&gt;&lt;li&gt;... this equals 9 mio floppy disks per day ( = 26.5 miles high)&lt;/li&gt;&lt;/ul&gt;
&lt;br&gt;
&lt;/li&gt;&lt;li&gt;And the amount is doubling multiple times a year.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;... this is according to the presentation&amp;nbsp;&lt;a href="http://www.infoq.com/presentations/NoSQL-at-Twitter"&gt;NoSQL at Twitter&lt;/a&gt; from October 2010, so today the pile of floppy disks would probably already be 50 miles high...&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;div class="x_blogger-post-footer"&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/5763764290649132593-5289507373143642472?l=blog.jonasbandi.net" alt=""&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/1-7x7PkmT6Y-vvA2TmfZ7eThH_Y/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1-7x7PkmT6Y-vvA2TmfZ7eThH_Y/0/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/1-7x7PkmT6Y-vvA2TmfZ7eThH_Y/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1-7x7PkmT6Y-vvA2TmfZ7eThH_Y/1/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="x_feedflare"&gt;&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=OLBYz4MTheU:QajfR64-Jm4:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=OLBYz4MTheU:QajfR64-Jm4:4cEx4HpKnUU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=OLBYz4MTheU:QajfR64-Jm4:yIl2AUoC8zA"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=OLBYz4MTheU:QajfR64-Jm4:I9og5sOYxJI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=OLBYz4MTheU:QajfR64-Jm4:F7zBnMyn0Lo"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=OLBYz4MTheU:QajfR64-Jm4:F7zBnMyn0Lo" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=OLBYz4MTheU:QajfR64-Jm4:V_sGLiPBpWU"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=OLBYz4MTheU:QajfR64-Jm4:V_sGLiPBpWU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=OLBYz4MTheU:QajfR64-Jm4:gIN9vFwOqvQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=OLBYz4MTheU:QajfR64-Jm4:gIN9vFwOqvQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=OLBYz4MTheU:QajfR64-Jm4:cGdyc7Q-1BI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=OLBYz4MTheU:QajfR64-Jm4:G79ilh31hkQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=OLBYz4MTheU:QajfR64-Jm4:Y59mnZtVT5U"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/OLBYz4MTheU" height="1" width="1"&gt;</content>
      <app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-17T22:56:31.502+02:00</app:edited>
      <media:thumbnail url="http://lh6.ggpht.com/_X3kaawac_g4/TS4htJ3nK8I/AAAAAAAAA6c/d0duKh9vaCQ/s72-c/315116528_480edcad4d.jpg?imgmax=800" height="72" width="72" xmlns:media="http://search.yahoo.com/mrss/"></media:thumbnail>
      <thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total>
      <feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blog.jonasbandi.net/2011/08/tidbit-big-data.html</feedburner:origLink>
    </item>
    <item xml:base="http://www.dnug-bern.ch/Event2011.aspx#634491792000000000">
      <guid isPermaLink="true">http://www.dnug-bern.ch/Event2011.aspx#634491792000000000</guid>
      <link>http://www.dnug-bern.ch/Event2011.aspx#634491792000000000</link>
      <category>.NET User Group Bern Event</category>
      <title>.NETworking Lunch Sharepoint 2010</title>
      <description>
&lt;div style="width:100%; padding:0; border-bottom:1px solid #666; display:block; margin-bottom:16px"&gt;
&lt;img src="http://www.dnug-bern.ch/images/be_silhouette.gif" alt="" style="border:0; float:left"&gt;
&lt;h1 style="margin:0; padding-top:5px; color:#666"&gt;.NET User Group Bern Event&lt;/h1&gt;
&lt;/div&gt;
&lt;br style="clear:left"&gt;
&lt;h2 id="x_20110817"&gt;Mittwoch, 17. August 2011 (12:00 bis 14:00 Uhr)&lt;/h2&gt;
&lt;h3&gt;.NETworking Lunch Sharepoint 2010&lt;/h3&gt;
&lt;p&gt;Wir wollen was Neues ausprobieren und starten unseren ersten .NETworking Lunch. Samuel Zürcher wird uns bei dieser Gelegenheit eine 360° Sicht zum Thema Sharepoint 2010 vermitteln.
&lt;/p&gt;
&lt;p&gt;SharePoint 2010 löst an verschiedenen Orten Euphorie aus. Hält das neue Produkt, was es verspricht? Wie integriert es sich in bestehende IT Umgebungen?
&lt;/p&gt;
&lt;p&gt;Die Rundumsicht: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Was macht SharePoint 2010 überhaupt &lt;/li&gt;&lt;li&gt;Das Instrument zum Verwalten Ihrer Geschäftsinformationen: Enterprise Content Management und Search
&lt;/li&gt;&lt;li&gt;Die Automation Ihrer Geschäftsprozesse: SharePoint Formulare und Workflows &lt;/li&gt;&lt;li&gt;Ihr Web-Auftritt mit SharePoint: Web 2.0 und Social Networks &lt;/li&gt;&lt;li&gt;Die Kontrolle Ihrer Geschäftszahlen: Business Intelligence - und Self Service Dashboard
&lt;/li&gt;&lt;li&gt;Die Integration: Schnittstellen zu Office und Exchange 2010. Kann SharePoint 2010 die Exchange Public Folder ersetzen?
&lt;/li&gt;&lt;li&gt;Architektur und Systemaufbau: Von Single Server bis zur Enterprise Farm &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Samuel Zürcher hat Langjährige Erfahrung mit SharePoint seit der Version 2.0, breites IT Know-how und ist seit über 12 Jahren in der IT tätig. Er ist im Projektmanagement in verschiedenen Projektgrössen und Komplexitätsstufen daheim, kennt sich aber auch
 mit dem innersten Kern von SharePoint aus. Verschiedene Zertifizierungen für SharePoint und der Microsoft Certified Trainer runden sein Profil ab, er ist bereits für SharePoint 2010 zertifiziert (MCTS, MCITP) und ist zudem SharePoint MVP. Er ist der Initiant
 und zusammen mit Stefan Heinz Begründer der &lt;a class="x_external" href="http://www.sharepointcommunity.ch"&gt;
www.sharepointcommunity.ch&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;Unser Treffen findet dieses Mal in der Schmiedstube statt. Die Anfahrtdetails sind
&lt;a class="x_external" href="http://www.schmiedstube.com/standort.html"&gt;hier&lt;/a&gt; beschrieben.
&lt;/p&gt;
&lt;p&gt;Bitte beachte, dass für dieses Treffen eine &lt;a href="https://www.xing.com/events/networking-lunch-sharepoint-2010-788983"&gt;
Anmeldung&lt;/a&gt; erforderlich ist und gebe unter Bemerkungen und Hinweise deinen Menüwunsch an (Menu 1 oder Menu 2 (Vegetarisch) ca. CHF 30.-).
&lt;/p&gt;
&lt;p&gt;Das Mittagessen wird von jedem Teilnehmenden direkt vom Restaurant verrechnet und muss vor Ort in bar bezahlt werden.
&lt;/p&gt;
&lt;h3&gt;Abmeldung&lt;/h3&gt;
&lt;p&gt;Bei Nichterscheinen ohne Abmeldung bis 3 Arbeitstage vor dem Anlass werden allfällige Unkosten, die uns dadurch entstehen, bis CHF 50.- weiterverrechnet.
&lt;/p&gt;
&lt;p&gt;Das Twitter-Hashtag für diese Veranstaltung: &lt;strong&gt;#dnugbelunch&lt;/strong&gt;. Die Aktivitäten können
&lt;a title="Zum Twitter Stream der Veranstaltung" href="TwitterWall.aspx"&gt;hier&lt;/a&gt; betrachtet werden.
&lt;/p&gt;
&lt;p&gt;Wir freuen uns auf deine Teilnahme! &lt;/p&gt;
&lt;br&gt;
</description>
      <pubDate>Wed, 17 Aug 2011 12:00:00 +0200</pubDate>
    </item>
    <item p3:etag="W/&quot;C04FQns_cCp7ImA9WhdQFUw.&quot;" xmlns:p3="http://schemas.google.com/g/2005">
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5763764290649132593.post-3789801173700713954</guid>
      <link>http://feedproxy.google.com/~r/closed-loop/~3/7UEvtWioU30/test-driven-it-is-mindset-not-tool.html</link>
      <author>noreply@blogger.com</author>
      <category domain="http://www.blogger.com/atom/ns#">methodology</category>
      <category domain="http://www.blogger.com/atom/ns#">TDD</category>
      <title>Test Driven: It is the mindset not the tool!</title>
      <description>&lt;p&gt;It is amazing to realize how old the notion of &lt;a href="http://en.wikipedia.org/wiki/Test-driven_development"&gt;Test Driven Development&lt;/a&gt; (TDD) really is. Here are two quotes, that are older than I am, describing the ideas behind TDD :&lt;/p&gt;&lt;p&gt;&lt;a href="http://homepages.cs.ncl.ac.uk/brian.randell/NATO/"&gt;Report of the NATO Software Engineering Conference 1968&lt;/a&gt;:&lt;/p&gt;&lt;blockquote&gt;A software system can best be designed if the testing is interlaced with the designing instead of being used after the design.   Through successive repetitions of this process of interlaced testing and design the model ultimately becomes the software system itself. I think that it is the key of the approach that has been suggested, that there is no such question as testing things after the fact with simulation models, but that in effect the testing and the replacement of simulations with modules that are deeper and more detailed goes on with the simulation model controlling, as it were, the place and order in which these things are done.&lt;/blockquote&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cs.utexas.edu/~EWD/transcriptions/EWD03xx/EWD340.html"&gt;The humble Programmer, Edsger W. Dijkstra 1972:&lt;/a&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;cite style="font-style: normal;"&gt;But one should not first make the program and then prove its  correctness, because then the requirement of providing the proof would  only increase the poor programmer's burden. On the contrary: the  programmer should let correctness proof and program grow hand in hand.  [...] If one first asks oneself what the structure of a convincing proof  would be and, having found this, then constructs a program satisfying  this proof's requirements, then these correctness concerns turn out to  be a very effective heuristic guidance. By definition this approach is  only applicable when we restrict ourselves to intellectually manageable  programs, but it provides us with effective means for finding a  satisfactory one among these.&lt;/cite&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;Today we mostly associate TDD with automated unit-tests and the &lt;a href="http://en.wikipedia.org/wiki/XUnit"&gt;family of xUnit Frameworks&lt;/a&gt;. We associate TDD with writing code.&lt;/p&gt;&lt;p&gt;Yet TDD today is far from being mainstream in my experience. And even teams that decided to adopt TDD are constantly struggling with implementing it in reality.&lt;/p&gt;&lt;p&gt;The participants of the NATO Software Engineering Conference from 1968 probably had quite a different notion of implementing TDD than we have today. Their implementation of TDD was probably far away from the automated unit-tests we strive for today. Yet they had the same mindset that we pursue today.&lt;/p&gt;&lt;p&gt;When Dijkstra was already preaching TDD, the xUnit-Frameworks were not to be born for another 26 years.&lt;/p&gt;&lt;p&gt;&lt;img style="float: right; margin-left: 10px;" src="http://lh6.ggpht.com/-56GTA7lZiAc/TklGtJbQfAI/AAAAAAAABCg/GFlxfwIp7MI/totem.jpg?imgmax=800" border="0" alt="Totem" width="180" /&gt;&lt;/p&gt;&lt;p&gt;In the last few years I have come to the conclusion, that the most important aspect of TDD is the mindset that comes along with TDD.&lt;/p&gt;&lt;p&gt;This mindset is much more valuable than any tool, technology or methodology that is commonly associated with TDD today.&lt;/p&gt;&lt;p&gt;With the right mindset we can practice TDD even in environments where we can't write unit-tests (Lo and behold, I am even thinking of SharePoint Development). TDD does not have to be realized by writing code. Nor is writing unit-test always the best way to implement TDD.&lt;/p&gt;&lt;p&gt;With the right mindset we can even practice TDD with manual testing!&lt;/p&gt;&lt;p&gt;The actual implementation of the test is rather a detail of TDD. Much more important is the mindset of practicing &lt;a href="http://c2.com/cgi/wiki?BabySteps"&gt;&lt;strong&gt;baby steps&lt;/strong&gt;&lt;/a&gt;, the mindset of &lt;strong&gt;gaining insights and evolving through rapid feedback&lt;/strong&gt;, the mindset of leveraging &lt;strong&gt;trial &amp;amp; error as a methodology&lt;/strong&gt;, where errors are not failures but valuable insights that guide the evolution of the project.&lt;/p&gt;&lt;p&gt;This mindset is the reason why children in kindergarden are scoring better than MBA graduates in the &lt;a href="http://marshmallowchallenge.com/Welcome.html"&gt;Marshmallow Challenge&lt;/a&gt;:&lt;/p&gt;&lt;div style="text-align: center;"&gt;&lt;object width="380" height="290"&gt;&lt;param name="movie" value="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;param name="wmode" value="transparent" /&gt;&lt;param name="bgColor" value="#ffffff" /&gt;&lt;param name="flashvars" value="vu=http://video.ted.com/talk/stream/2010U/Blank/TomWujec_2010U-320k.mp4&amp;amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/TomWujec-2010U.embed_thumbnail.jpg&amp;amp;vw=360&amp;amp;vh=201&amp;amp;ap=0&amp;amp;ti=837&amp;amp;lang=&amp;amp;introDuration=15330&amp;amp;adDuration=4000&amp;amp;postAdDuration=830&amp;amp;adKeys=talk=tom_wujec_build_a_tower;year=2010;theme=a_taste_of_ted2010;theme=not_business_as_usual;event=TED2010;tag=Business;tag=Culture;tag=Design;tag=Entertainment;tag=collaboration;tag=psychology;&amp;amp;preAdTag=tconf.ted/embed;tile=1;sz=360x201;" /&gt;&lt;embed type="application/x-shockwave-flash" width="380" height="290" src="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" pluginspace="http://www.macromedia.com/go/getflashplayer" wmode="transparent" bgcolor="#ffffff" allowfullscreen="true" allowscriptaccess="always" flashvars="vu=http://video.ted.com/talk/stream/2010U/Blank/TomWujec_2010U-320k.mp4&amp;amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/TomWujec-2010U.embed_thumbnail.jpg&amp;amp;vw=360&amp;amp;vh=201&amp;amp;ap=0&amp;amp;ti=837&amp;amp;lang=&amp;amp;introDuration=15330&amp;amp;adDuration=4000&amp;amp;postAdDuration=830&amp;amp;adKeys=talk=tom_wujec_build_a_tower;year=2010;theme=a_taste_of_ted2010;theme=not_business_as_usual;event=TED2010;tag=Business;tag=Culture;tag=Design;tag=Entertainment;tag=collaboration;tag=psychology;&amp;amp;preAdTag=tconf.ted/embed;tile=1;sz=360x201;"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;p&gt;And it is our &lt;a href="http://www.ted.com/talks/tim_harford.html"&gt;God Complex&lt;/a&gt; that prevents us from keeping that mindset.&lt;/p&gt;&lt;p&gt;But when we embrace this mindset, we realize that it is applicable in many other areas than writing software. It is applicable to any goals that we try to accomplish in &lt;em&gt;unordered domains&lt;/em&gt;, where the result of an action is literally unknowable. Internet startups are the perfect example for this: In a lot of cases it is he best option to ship something, and then respond to the market reaction. The crucial requirement for this fast-feedback cycle is to establish a &lt;em&gt;"safe-fail"&lt;/em&gt; environment, where we can embrace failure and leverage failures to guide us to success.&lt;/p&gt;&lt;p&gt;Steve Freeman writes about &lt;a href="http://www.higherorderlogic.com/2011/04/tdd-embracing-failure/"&gt;Test-Driven Development and Embracing Failure&lt;/a&gt; and Obie Fernandez writes about &lt;a href="http://blog.obiefernandez.com/content/2011/05/the-dark-side-beckons.html"&gt;Testing against business metrics&lt;/a&gt; that has nothing to do with code.&lt;/p&gt;&lt;div style="align: right; font-size: 10px; clear: right;"&gt;&lt;p&gt;&lt;a href="http://twitter.com/jbandi"&gt;&lt;img style="margin: 0px 0px 0px 0px; border: none;" src="http://www.google.com/s2/favicons?domain=twitter.com" border="0" alt="http://www.google.com/s2/favicons?domain=twitter.com" height="13px" align="left" /&gt; If you like this, follow me on twitter...&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5763764290649132593-3789801173700713954?l=blog.jonasbandi.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Tuv9JIniqwmfMKbPZz5HloyAkJ8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Tuv9JIniqwmfMKbPZz5HloyAkJ8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Tuv9JIniqwmfMKbPZz5HloyAkJ8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Tuv9JIniqwmfMKbPZz5HloyAkJ8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=7UEvtWioU30:5Tcp4HHq84I:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=7UEvtWioU30:5Tcp4HHq84I:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=7UEvtWioU30:5Tcp4HHq84I:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=7UEvtWioU30:5Tcp4HHq84I:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=7UEvtWioU30:5Tcp4HHq84I:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=7UEvtWioU30:5Tcp4HHq84I:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=7UEvtWioU30:5Tcp4HHq84I:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=7UEvtWioU30:5Tcp4HHq84I:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=7UEvtWioU30:5Tcp4HHq84I:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=7UEvtWioU30:5Tcp4HHq84I:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=7UEvtWioU30:5Tcp4HHq84I:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=7UEvtWioU30:5Tcp4HHq84I:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=7UEvtWioU30:5Tcp4HHq84I:Y59mnZtVT5U"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/7UEvtWioU30" height="1" width="1"/&gt;</description>
      <pubDate>Mon, 15 Aug 2011 18:17:00 +0200</pubDate>
      <link rel="replies" type="application/atom+xml" title="Post Comments" href="http://blog.jonasbandi.net/feeds/3789801173700713954/comments/default" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="replies" type="text/html" title="1 Comments" href="http://www.blogger.com/comment.g?blogID=5763764290649132593&amp;postID=3789801173700713954" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/3789801173700713954?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/3789801173700713954?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <updated xmlns="http://www.w3.org/2005/Atom">2011-08-16T18:25:13+02:00</updated>
      <content type="html" xmlns="http://www.w3.org/2005/Atom">
&lt;p&gt;It is amazing to realize how old the notion of &lt;a href="http://en.wikipedia.org/wiki/Test-driven_development"&gt;
Test Driven Development&lt;/a&gt; (TDD) really is. Here are two quotes, that are older than I am,&amp;nbsp;describing the ideas behind TDD :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://homepages.cs.ncl.ac.uk/brian.randell/NATO/"&gt;Report of the NATO Software Engineering Conference 1968&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;A software system can best be designed if the testing is interlaced with the designing instead of being used after the design. Through successive repetitions of this process of interlaced testing and design the model ultimately becomes the software
 system itself. I think that it is the key of the approach that has been suggested, that there is no such question as testing things after the fact with simulation models, but that in effect the testing and the replacement of simulations with modules that are
 deeper and more detailed goes on with the simulation model controlling, as it were, the place and order in which these things are done.&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cs.utexas.edu/~EWD/transcriptions/EWD03xx/EWD340.html"&gt;The humble Programmer,&amp;nbsp;Edsger W. Dijkstra 1972:&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;cite style="font-style:normal"&gt;But one should not first make the program and then prove its correctness, because then the requirement of providing the proof would only increase the poor programmer's burden. On the contrary: the programmer should let correctness
 proof and program grow hand in hand. [...] If one first asks oneself what the structure of a convincing proof would be and, having found this, then constructs a program satisfying this proof's requirements, then these correctness concerns turn out to be a
 very effective heuristic guidance. By definition this approach is only applicable when we restrict ourselves to intellectually manageable programs, but it provides us with effective means for finding a satisfactory one among these.&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Today we mostly associate TDD with automated unit-tests and the &lt;a href="http://en.wikipedia.org/wiki/XUnit"&gt;
family of xUnit Frameworks&lt;/a&gt;. We associate TDD with writing code.&lt;/p&gt;
&lt;p&gt;Yet TDD today is far from being mainstream in my experience. And even teams that decided to adopt TDD are constantly struggling with implementing it in reality.&lt;/p&gt;
&lt;p&gt;The participants of the NATO Software Engineering Conference from 1968 probably had quite a different notion of implementing TDD than we have today. Their implementation of TDD was probably far away from the automated unit-tests we strive for today. Yet
 they had the same mindset that we pursue today.&lt;/p&gt;
&lt;p&gt;When Dijkstra was already preaching TDD, the xUnit-Frameworks were not to be born for another 26 years.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://lh6.ggpht.com/-56GTA7lZiAc/TklGtJbQfAI/AAAAAAAABCg/GFlxfwIp7MI/totem.jpg?imgmax=800" border="0" alt="Totem" width="180" style="float:right; margin-left:10px"&gt;&lt;/p&gt;
&lt;p&gt;In the last few years I have come to the conclusion, that the most important aspect of TDD is the mindset that comes along with TDD.&lt;/p&gt;
&lt;p&gt;This mindset is much more valuable than any tool, technology or methodology that is commonly associated with TDD today.&lt;/p&gt;
&lt;p&gt;With the right mindset we can practice TDD even in environments where we can't write unit-tests (Lo and behold, I am even thinking of SharePoint Development). TDD does not have to be realized by writing code. Nor is writing unit-test always the best way
 to implement TDD.&lt;/p&gt;
&lt;p&gt;With the right mindset we can even practice TDD with manual testing!&lt;/p&gt;
&lt;p&gt;The actual implementation of the test is rather a detail of TDD. Much more important is the mindset of practicing
&lt;a href="http://c2.com/cgi/wiki?BabySteps"&gt;&lt;strong&gt;baby steps&lt;/strong&gt;&lt;/a&gt;, the mindset of
&lt;strong&gt;gaining insights and evolving through rapid feedback&lt;/strong&gt;, the mindset of leveraging
&lt;strong&gt;trial &amp;amp; error as a methodology&lt;/strong&gt;, where errors are not failures but valuable insights that guide the evolution of the project.&lt;/p&gt;
&lt;p&gt;This mindset is the reason why children in kindergarden are scoring better than MBA graduates in the
&lt;a href="http://marshmallowchallenge.com/Welcome.html"&gt;Marshmallow Challenge&lt;/a&gt;:&lt;/p&gt;
&lt;div style="text-align:center"&gt;&lt;/div&gt;
&lt;p&gt;And it is our &lt;a href="http://www.ted.com/talks/tim_harford.html"&gt;God Complex&lt;/a&gt; that prevents us from keeping that mindset.&lt;/p&gt;
&lt;p&gt;But when we embrace this mindset, we realize that it is applicable in many other areas than writing software. It is applicable to any goals that we try to accomplish in
&lt;em&gt;unordered domains&lt;/em&gt;,&amp;nbsp;where the result of an action is literally unknowable. Internet startups are the perfect example for this: In a lot of cases it is&amp;nbsp;he best option to ship something, and then respond to the market reaction. The crucial requirement
 for this fast-feedback cycle is to establish a &lt;em&gt;&amp;quot;safe-fail&amp;quot;&lt;/em&gt; environment, where we can embrace failure and leverage failures to guide us to success.&lt;/p&gt;
&lt;p&gt;Steve Freeman writes about&amp;nbsp;&lt;a href="http://www.higherorderlogic.com/2011/04/tdd-embracing-failure/"&gt;Test-Driven Development and Embracing Failure&lt;/a&gt; and&amp;nbsp;Obie Fernandez writes about&amp;nbsp;&lt;a href="http://blog.obiefernandez.com/content/2011/05/the-dark-side-beckons.html"&gt;Testing
 against business metrics&lt;/a&gt; that has nothing to do with code.&lt;/p&gt;
&lt;div style="font-size:10px; clear:right"&gt;
&lt;p&gt;&lt;a href="http://twitter.com/jbandi"&gt;&lt;img src="http://www.google.com/s2/favicons?domain=twitter.com" border="0" alt="http://www.google.com/s2/favicons?domain=twitter.com" height="13px" align="left" style="margin:0px 0px 0px 0px; border:none"&gt; If you like
 this, follow me on twitter...&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="x_blogger-post-footer"&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/5763764290649132593-3789801173700713954?l=blog.jonasbandi.net" alt=""&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Tuv9JIniqwmfMKbPZz5HloyAkJ8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Tuv9JIniqwmfMKbPZz5HloyAkJ8/0/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Tuv9JIniqwmfMKbPZz5HloyAkJ8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Tuv9JIniqwmfMKbPZz5HloyAkJ8/1/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="x_feedflare"&gt;&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=7UEvtWioU30:5Tcp4HHq84I:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=7UEvtWioU30:5Tcp4HHq84I:4cEx4HpKnUU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=7UEvtWioU30:5Tcp4HHq84I:yIl2AUoC8zA"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=7UEvtWioU30:5Tcp4HHq84I:I9og5sOYxJI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=7UEvtWioU30:5Tcp4HHq84I:F7zBnMyn0Lo"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=7UEvtWioU30:5Tcp4HHq84I:F7zBnMyn0Lo" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=7UEvtWioU30:5Tcp4HHq84I:V_sGLiPBpWU"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=7UEvtWioU30:5Tcp4HHq84I:V_sGLiPBpWU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=7UEvtWioU30:5Tcp4HHq84I:gIN9vFwOqvQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=7UEvtWioU30:5Tcp4HHq84I:gIN9vFwOqvQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=7UEvtWioU30:5Tcp4HHq84I:cGdyc7Q-1BI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=7UEvtWioU30:5Tcp4HHq84I:G79ilh31hkQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=7UEvtWioU30:5Tcp4HHq84I:Y59mnZtVT5U"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/7UEvtWioU30" height="1" width="1"&gt;</content>
      <app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-16T18:25:13.548+02:00</app:edited>
      <media:thumbnail url="http://lh6.ggpht.com/-56GTA7lZiAc/TklGtJbQfAI/AAAAAAAABCg/GFlxfwIp7MI/s72-c/totem.jpg?imgmax=800" height="72" width="72" xmlns:media="http://search.yahoo.com/mrss/"></media:thumbnail>
      <thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total>
      <feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blog.jonasbandi.net/2011/08/test-driven-it-is-mindset-not-tool.html</feedburner:origLink>
    </item>
    <item>
      <guid isPermaLink="true">http://www.databinding.net/blog/post/2011/08/11/entity-framework-versionierung.html</guid>
      <link>http://www.databinding.net/blog/post/2011/08/11/entity-framework-versionierung.html</link>
      <author>ipt:linkTo_UnCryptMailto('nbjmup+'); (René)</author>
      <category>.NET Development</category>
      <category>Entity Framework</category>
      <category>Code First</category>
      <title>Entity Framework Versionierung</title>
      <description>Versionierung ist in manchen Situationen nicht einfach. Ein Beispiel wie das Ganze recht komplex und mühsam für einen Anwender oder Developer werden kann, ist das Entity Framework. Um ein wenig Licht ins Dunk...</description>
      <pubDate>Thu, 11 Aug 2011 10:58:00 +0200</pubDate>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"> Versionierung ist in manchen Situationen nicht einfach. Ein Beispiel wie das Ganze recht komplex und mühsam für einen Anwender oder Developer werden kann, ist das Entity Framework. 
Um ein wenig Licht ins Dunkel zu bekommen, hat das ADO.NET - Team einen Blogpost verfasst und um Feedback gebeten. Weitere Informationen gibt es hier.</content:encoded>
    </item>
    <item>
      <guid isPermaLink="true">http://www.dotnet-zentral.ch/?cat=4</guid>
      <link>http://www.dotnet-zentral.ch/?cat=4</link>
      <author>info@dnug-bern.ch</author>
      <category>.NET User Group Bern Veranstaltungshinweis</category>
      <title>Erstes .NET Usergroup Event der .NET User Group Zentralschweiz</title>
      <description>
&lt;div style="background-color:#eee; padding:5px"&gt;
&lt;p&gt;Die UG Zentralschweiz freut sich auf ihr erstes .NET Usergroup Treffen am Freitag 09. September um 18:00 Uhr. Zusammen mit Golo Roden werden sie in die Tiefen von C# eintauchen.
&lt;/p&gt;
&lt;/div&gt;
</description>
      <pubDate>Mon, 08 Aug 2011 06:00:00 Z</pubDate>
    </item>
    <item p3:etag="W/&quot;C0cGQ3w8fyp7ImA9WhdRE0w.&quot;" xmlns:p3="http://schemas.google.com/g/2005">
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5763764290649132593.post-2243925151746285709</guid>
      <link>http://feedproxy.google.com/~r/closed-loop/~3/gyy_yOuIjaQ/quotes-of-week-from-ndc-2011.html</link>
      <author>noreply@blogger.com</author>
      <category domain="http://www.blogger.com/atom/ns#">quote</category>
      <title>Quotes of the Week: From NDC 2011</title>
      <description>

&lt;div style="width: 400px"&gt;&lt;p&gt;&lt;img style="margin: 0px 0px 10px 10px;" src="http://lh4.ggpht.com/_X3kaawac_g4/S8uT4AW4WKI/AAAAAAAAA0I/PbqnbnH3BdI/quotes2.jpg?imgmax=800" border="0" alt="quotes2.jpg" width="150" align="right" /&gt;&lt;/p&gt;
My favorite quotes from &lt;a href="http://www.ndc2011.no/"&gt;NDC 2011&lt;/a&gt;:
&lt;br/&gt;&lt;br/&gt;&lt;div style="width: 200px;"&gt;&lt;blockquote style="font-size: 14px;"&gt;&lt;p&gt;There is no measurement for technical dept. But the closest measurement is lines of code.&lt;/p&gt;&lt;/blockquote&gt;&lt;div style="text-align: right;"&gt;- James Shore&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt; &lt;/p&gt;&lt;blockquote style="font-size: 14px;"&gt;It is all very complicated but not magical!&lt;/blockquote&gt;&lt;div style="text-align: right;"&gt;- John Skeet&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="font-size: 14px;"&gt;Their "one-click-deploy" involved a telephone call, copy-paste sql-scripts and chanting &amp; praying.&lt;/blockquote&gt;&lt;div style="text-align: right;"&gt;- Gojko Adzic&lt;/a&gt;&lt;/div&gt;&lt;p&gt; &lt;/p&gt;&lt;blockquote style="font-size: 14px;"&gt;Software development is about creating something specific not something generic.
&lt;br/&gt;
(Else you can send the customer a virtual machine, that´s generic.)
&lt;/blockquote&gt;&lt;div style="text-align: right;"&gt;- Kevlin Henney&lt;/a&gt;&lt;/div&gt;&lt;p&gt; &lt;/p&gt;&lt;blockquote style="font-size: 14px;"&gt;Take your last shipping project: Probably you could power-type all the code in one day … How do we spend our time?&lt;/blockquote&gt;&lt;div style="text-align: right;"&gt;- Douglas Crockford&lt;/div&gt;&lt;p&gt; &lt;/p&gt;&lt;blockquote style="font-size: 14px;"&gt;About productivity: How good are you in thinking while typing?&lt;/blockquote&gt;&lt;div style="text-align: right;"&gt;- Kevlin Henney&lt;/a&gt;&lt;/div&gt;&lt;p&gt; &lt;/p&gt;&lt;blockquote style="font-size: 14px;"&gt;If you have git, you have source control - if you have TFS, you have my condolences.&lt;/blockquote&gt;&lt;div style="text-align: right;"&gt;- Hadi Hariri&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt; &lt;/p&gt;&lt;div style="align: right; font-size: 10px; clear: right;"&gt;&lt;p&gt;&lt;a href="http://twitter.com/jbandi"&gt;&lt;img style="margin: 0px 0px 0px 0px; border: none;" src="http://www.google.com/s2/favicons?domain=twitter.com" border="0" alt="http://www.google.com/s2/favicons?domain=twitter.com" height="13px" align="left" /&gt;If you like this, follow me on twitter ...&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5763764290649132593-2243925151746285709?l=blog.jonasbandi.net' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/sqMjLnwMYmP07fwZiVGS9VHiCr4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/sqMjLnwMYmP07fwZiVGS9VHiCr4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/sqMjLnwMYmP07fwZiVGS9VHiCr4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/sqMjLnwMYmP07fwZiVGS9VHiCr4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=gyy_yOuIjaQ:dx7aRfa3_4o:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=gyy_yOuIjaQ:dx7aRfa3_4o:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=gyy_yOuIjaQ:dx7aRfa3_4o:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=gyy_yOuIjaQ:dx7aRfa3_4o:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=gyy_yOuIjaQ:dx7aRfa3_4o:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=gyy_yOuIjaQ:dx7aRfa3_4o:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=gyy_yOuIjaQ:dx7aRfa3_4o:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=gyy_yOuIjaQ:dx7aRfa3_4o:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=gyy_yOuIjaQ:dx7aRfa3_4o:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=gyy_yOuIjaQ:dx7aRfa3_4o:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=gyy_yOuIjaQ:dx7aRfa3_4o:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=gyy_yOuIjaQ:dx7aRfa3_4o:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=gyy_yOuIjaQ:dx7aRfa3_4o:Y59mnZtVT5U"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/gyy_yOuIjaQ" height="1" width="1"/&gt;</description>
      <pubDate>Tue, 02 Aug 2011 20:46:00 +0200</pubDate>
      <link rel="replies" type="application/atom+xml" title="Post Comments" href="http://blog.jonasbandi.net/feeds/2243925151746285709/comments/default" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="replies" type="text/html" title="1 Comments" href="http://www.blogger.com/comment.g?blogID=5763764290649132593&amp;postID=2243925151746285709" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/2243925151746285709?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5763764290649132593/posts/default/2243925151746285709?v=2" xmlns="http://www.w3.org/2005/Atom" />
      <updated xmlns="http://www.w3.org/2005/Atom">2011-08-02T20:50:22+02:00</updated>
      <content type="html" xmlns="http://www.w3.org/2005/Atom">
&lt;div style="width:400px"&gt;
&lt;p&gt;&lt;img src="http://lh4.ggpht.com/_X3kaawac_g4/S8uT4AW4WKI/AAAAAAAAA0I/PbqnbnH3BdI/quotes2.jpg?imgmax=800" border="0" alt="quotes2.jpg" width="150" align="right" style="margin:0px 0px 10px 10px"&gt;&lt;/p&gt;
My favorite quotes from &lt;a href="http://www.ndc2011.no/"&gt;NDC 2011&lt;/a&gt;: &lt;br&gt;
&lt;br&gt;
&lt;div style="width:200px"&gt;
&lt;blockquote style="font-size:14px"&gt;
&lt;p&gt;There is no measurement for technical dept. But the closest measurement is lines of code.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div style="text-align:right"&gt;-&amp;nbsp;James Shore&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote style="font-size:14px"&gt;It is all very complicated but not magical!&lt;/blockquote&gt;
&lt;div style="text-align:right"&gt;-&amp;nbsp;John Skeet&lt;/div&gt;
&lt;br&gt;
&lt;br&gt;
&lt;blockquote style="font-size:14px"&gt;Their &amp;quot;one-click-deploy&amp;quot; involved a telephone call, copy-paste sql-scripts and chanting &amp;amp; praying.&lt;/blockquote&gt;
&lt;div style="text-align:right"&gt;- Gojko Adzic&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote style="font-size:14px"&gt;Software development is about creating something specific not something generic.
&lt;br&gt;
(Else you can send the customer a virtual machine, that´s generic.) &lt;/blockquote&gt;
&lt;div style="text-align:right"&gt;- Kevlin Henney&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote style="font-size:14px"&gt;Take your last shipping project: Probably you could power-type all the code in one day … How do we spend our time?&lt;/blockquote&gt;
&lt;div style="text-align:right"&gt;-&amp;nbsp;Douglas Crockford&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote style="font-size:14px"&gt;About productivity: How good are you in thinking while typing?&lt;/blockquote&gt;
&lt;div style="text-align:right"&gt;- Kevlin Henney&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote style="font-size:14px"&gt;If you have git, you have source control - if you have TFS, you have my condolences.&lt;/blockquote&gt;
&lt;div style="text-align:right"&gt;- Hadi Hariri&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="font-size:10px; clear:right"&gt;
&lt;p&gt;&lt;a href="http://twitter.com/jbandi"&gt;&lt;img src="http://www.google.com/s2/favicons?domain=twitter.com" border="0" alt="http://www.google.com/s2/favicons?domain=twitter.com" height="13px" align="left" style="margin:0px 0px 0px 0px; border:none"&gt;If you like this,
 follow me on twitter ...&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="x_blogger-post-footer"&gt;&lt;img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/5763764290649132593-2243925151746285709?l=blog.jonasbandi.net" alt=""&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/sqMjLnwMYmP07fwZiVGS9VHiCr4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/sqMjLnwMYmP07fwZiVGS9VHiCr4/0/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/sqMjLnwMYmP07fwZiVGS9VHiCr4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/sqMjLnwMYmP07fwZiVGS9VHiCr4/1/di" border="0" ismap=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="x_feedflare"&gt;&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=gyy_yOuIjaQ:dx7aRfa3_4o:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=gyy_yOuIjaQ:dx7aRfa3_4o:4cEx4HpKnUU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=gyy_yOuIjaQ:dx7aRfa3_4o:yIl2AUoC8zA"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=gyy_yOuIjaQ:dx7aRfa3_4o:I9og5sOYxJI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=I9og5sOYxJI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=gyy_yOuIjaQ:dx7aRfa3_4o:F7zBnMyn0Lo"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=gyy_yOuIjaQ:dx7aRfa3_4o:F7zBnMyn0Lo" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=gyy_yOuIjaQ:dx7aRfa3_4o:V_sGLiPBpWU"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=gyy_yOuIjaQ:dx7aRfa3_4o:V_sGLiPBpWU" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=gyy_yOuIjaQ:dx7aRfa3_4o:gIN9vFwOqvQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?i=gyy_yOuIjaQ:dx7aRfa3_4o:gIN9vFwOqvQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=gyy_yOuIjaQ:dx7aRfa3_4o:cGdyc7Q-1BI"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=cGdyc7Q-1BI" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=gyy_yOuIjaQ:dx7aRfa3_4o:G79ilh31hkQ"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=G79ilh31hkQ" border="0"&gt;&lt;/a&gt;
&lt;a href="http://feeds.feedburner.com/~ff/closed-loop?a=gyy_yOuIjaQ:dx7aRfa3_4o:Y59mnZtVT5U"&gt;
&lt;img src="http://feeds.feedburner.com/~ff/closed-loop?d=Y59mnZtVT5U" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/closed-loop/~4/gyy_yOuIjaQ" height="1" width="1"&gt;</content>
      <app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-02T20:50:22.277+02:00</app:edited>
      <media:thumbnail url="http://lh4.ggpht.com/_X3kaawac_g4/S8uT4AW4WKI/AAAAAAAAA0I/PbqnbnH3BdI/s72-c/quotes2.jpg?imgmax=800" height="72" width="72" xmlns:media="http://search.yahoo.com/mrss/"></media:thumbnail>
      <thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total>
      <feedburner:origLink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://blog.jonasbandi.net/2011/08/quotes-of-week-from-ndc-2011.html</feedburner:origLink>
    </item>
    <item>
      <guid isPermaLink="true">http://www.databinding.net/blog/post/2011/07/26/entity-framework-dbcontext-und-der-2nd-level-cache-mit-dem-efcachingprovider.html</guid>
      <link>http://www.databinding.net/blog/post/2011/07/26/entity-framework-dbcontext-und-der-2nd-level-cache-mit-dem-efcachingprovider.html</link>
      <author>ipt:linkTo_UnCryptMailto('nbjmup+'); (René)</author>
      <category>.NET Development</category>
      <category>Entity Framework</category>
      <category>Code First</category>
      <category>T4</category>
      <title>Entity Framework - DbContext und der 2nd-Level Cache mit dem EFCachingProvider</title>
      <description>Der DbContext stellt eigentlich ein Wrapper auf den ObjectContext dar. Ich bevorzuge mittlerweile den DbContext, da dieser einige Funktionalitäten bietet, die ich beim ObjectContext vermisse. Da wären bs...</description>
      <pubDate>Tue, 26 Jul 2011 00:44:00 +0200</pubDate>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"> Der DbContext stellt eigentlich ein Wrapper auf den ObjectContext dar. Ich bevorzuge mittlerweile den DbContext, da dieser einige Funktionalitäten bietet, die ich beim ObjectContext vermisse. Da wären bspw. das vereinfachte Change Tracking, der Support der DataAnnotations, der veinfachte Zugriff auf dem Context-Cache über die Local-Eigenschaft und das dieser neben Code First auch mit dem EDM-Designer verwendet werden kann. 
Ein Nachteil ist jedoch die fehlende Unterstützung für das Caching. Für den ObjectContext gibt es den EFCachingProvider, der seine Aufgaben relativ gut verrichtet. Über den Konstruktor im ObjectContext wird dieser aktiviert. 
Nun ist der DbContext ja nichts anderes als ein Wrapper und diesen kann auch eine ObjectContext-Instanz übergeben werden. Also kam ich auf eine ganz wilde Idee, um den DbContext mit einer Zusammenarbeit mit dem EFCachingProvider zu überreden. Alternativ liesse sich das auch mit dem Proxy-Pattern realisieren, aber ich gebe die Hoffnung nicht auf, dass der EFCachingProvider ein fester Bestandteil vom EF werden wird. 
Mit Hilfe der mitgelieferten T4-Vorlage, die den Einsatz des DbContext für DbFirst und ModelFirst ermöglicht, lässt sich der Caching-Support sehr einfach realisieren. Die angepasste T4-Vorlage sieht so aus:</content:encoded>
    </item>
    <item>
      <guid isPermaLink="true">http://www.databinding.net/blog/post/2011/07/24/t4-und-der-zugriff-auf-die-appconfig.html</guid>
      <link>http://www.databinding.net/blog/post/2011/07/24/t4-und-der-zugriff-auf-die-appconfig.html</link>
      <author>ipt:linkTo_UnCryptMailto('nbjmup+'); (René)</author>
      <category>.NET Development</category>
      <category>T4</category>
      <title>T4 und der Zugriff auf die App.config</title>
      <description>Zur Zeit sitze ich mal wieder tief in der T4-Materie. Dabei war mal wieder die zufällige Erstellung von AppDomains eine kleine Bremse. Das ist eine ganz spezielle Eigenart, die zum Beispiel auch dafür sorgt...</description>
      <pubDate>Sun, 24 Jul 2011 15:03:00 +0200</pubDate>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"> Zur Zeit sitze ich mal wieder tief in der T4-Materie. Dabei war mal wieder die zufällige Erstellung von AppDomains eine kleine Bremse. Das ist eine ganz spezielle Eigenart, die zum Beispiel auch dafür sorgt, dass auf die App.config der Solution nicht direkt zugegriffen werden kann.
Im Blog von Sky Sander fand ich einen schönen Workaround, damit der Zugriff doch wieder ermöglicht werden kann.
Bei Gelegenheit muss ich mal überprüfen, ob sich die zufällige Erstellung der T4-AppDomains irgendwie in den Griff bekommen lässt.
Nachfolgend der Workaround, der bei mir in Form einer Include-Datei mit Namen ConfigurationAccessor.CS.ttinclude verwendet wird:</content:encoded>
    </item>
    <item>
      <guid isPermaLink="true">http://www.databinding.net/blog/post/2011/07/18/entity-framework-42-facelifting-am-edm-designer.html</guid>
      <link>http://www.databinding.net/blog/post/2011/07/18/entity-framework-42-facelifting-am-edm-designer.html</link>
      <author>ipt:linkTo_UnCryptMailto('nbjmup+'); (René)</author>
      <category>.NET Development</category>
      <category>Entity Framework</category>
      <title>Entity Framework 4.2 - Facelifting am EDM-Designer</title>
      <description>Die JuneCTP des Entity Frameworks ist nun schon ein Moment verfügbar und ich nutzte die Gelegenheit, mir zuerst die Neuerungen im Designer zu betrachten. Ein Nachteil, der sich abzuzeichnen scheint ist di...</description>
      <pubDate>Mon, 18 Jul 2011 23:08:00 +0200</pubDate>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"> Die JuneCTP des Entity Frameworks ist nun schon ein Moment verfügbar und ich nutzte die Gelegenheit, mir zuerst die Neuerungen im Designer zu betrachten. Ein Nachteil, der sich abzuzeichnen scheint ist die Tatsache, dass die zukünftige Version mit aller Wahrscheinlichkeit nicht mehr auf Rechnern mit Windows XP laufen wird. Einige werden denken: Wer hat noch so ein altes Betriebssystem installiert? Auf jeden Fall ein Teil der Fortune Global 500. ;-) In dieser Hinsicht könnte das recht interessant werden. 
Betrachten wir die Neuerungen. Neu gibt es bei den Datenbankobjekten eine Hierarchie nach Schema, das erleichtert schon mal die Übersicht der Schemaobjekte. Zusätzlich gibt es nun auch eine neue Checkbox, damit ausgewählte Prozeduren gleich in das Model importiert werden. Der bisherige Zwischenschritt über den Modellbrowser ist somit nicht mehr zwingend notwendig.</content:encoded>
    </item>
    <item>
      <guid isPermaLink="false">http://schaedlerdaniel.wordpress.com/?p=394</guid>
      <link>http://schaedlerdaniel.wordpress.com/2011/07/12/prism-4-0-navigation/</link>
      <category>WPF /SilverLight</category>
      <title>Prism 4.0 Navigation</title>
      <description>Momentan sitze ich gerade an der Navigation für Prism 4.0. Der Blogpost auf MSDN-Blogs war dafür sehr hilfreich. Mein Ziel war es wie so etwas darzustellen: - Erste Seite - Zweite Seite - Dritte Seite Diese sollten von sich aus auf die nächste navigieren
 können. Hierfür wurden die ViewModel erstellt die von der ViewModelBase erben. [...]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=schaedlerdaniel.wordpress.com&amp;amp;blog=16378069&amp;amp;post=394&amp;amp;subd=schaedlerdaniel&amp;amp;ref=&amp;amp;feed=1" width="1" height="1"&gt;</description>
      <pubDate>Tue, 12 Jul 2011 11:17:06 Z</pubDate>
      <comments>http://schaedlerdaniel.wordpress.com/2011/07/12/prism-4-0-navigation/#comments</comments>
      <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">schaedlerdaniel</dc:creator>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;Momentan sitze ich gerade an der Navigation für &lt;a href="http://compositewpf.codeplex.com/" title="Prism 4.0" target="_blank"&gt;Prism 4.0&lt;/a&gt;. Der Blogpost auf &lt;a href="http://blogs.msdn.com/b/kashiffl/archive/2010/10/04/prism-v4-region-navigation-pipeline.aspx" title="MSDN-Blogs" target="_blank"&gt;MSDN-Blogs&lt;/a&gt; war dafür sehr hilfreich. Mein Ziel war es wie so etwas darzustellen:&lt;br /&gt;
- Erste Seite&lt;br /&gt;
- Zweite Seite&lt;br /&gt;
- Dritte Seite&lt;/p&gt;
&lt;p&gt;Diese sollten von sich aus auf die nächste navigieren können. Hierfür wurden die ViewModel erstellt die von der ViewModelBase erben. Wichtig hierbei ist, dass die ViewModelBase Klasse das Interface INavigateAsync implementiert (gemäss diesem &lt;a href="http://i.msdn.microsoft.com/dynimg/IC448592.png" title="Flow-Diagramm" target="_blank"&gt;Flow-Diagramm&lt;/a&gt;, das einzig zwingend notwendige für die Navigation unter Prism 4.0).&lt;/p&gt;
&lt;p&gt;Damit die Views an der Navigation partizipieren können, dürfen sie nicht wie nachstehend in der InitializeModule-Methode registriert werden:&lt;/p&gt;
&lt;h5&gt; Falsch &lt;/h5&gt;
&lt;p&gt;&lt;pre class="brush: csharp;"&gt;
regionManager.Regions[&amp;quot;MainRegion&amp;quot;].Add(new MainView(), &amp;quot;MainView&amp;quot;);
&lt;/pre&gt;&lt;/p&gt;
&lt;h5&gt; Richtig &lt;/h5&gt;
&lt;p&gt;&lt;pre class="brush: csharp;"&gt;
regionManager.Regions[&amp;quot;MainRegion&amp;quot;].RequestNavigate(new Uri(&amp;quot;MainView&amp;quot;, UriKind.Relative));
&lt;/pre&gt;&lt;br /&gt;
Der kleine, aber feine Unterschied liegt darin, dass mit RequestNavigate bereits das NavigationJournal &amp;#8220;gefüttert&amp;#8221; wird und man später darauf zugreifen kann. Der Nachteil an der Sache ist, dass die Views nicht in der Views-Collection der Region mit einem Schlüssel auffindbar sind.&lt;/p&gt;
&lt;p&gt;Ein kleines Beispiel soll zeigen, wie man auf einfache Art und Weise eine Navigation mit den ViewModels in Prism erstellt.&lt;/p&gt;
&lt;p&gt;Schlussendlich soll von Seite eins bis Seite 3 navigiert werden können, hierfür kann man wie folgt vorgehen:&lt;br /&gt;
1.) Erstellen eines WPF Projektes (Referenzen auf Prism und Prism Unity Extension mit NuGet durchführen)&lt;br /&gt;
2.) Erstellen eines WPF Projektes (In den Eigenschaften keine Windows Applikation auswählen, sondern anschliessend die Main.xaml und die App.xaml löschen, NuGetReferenzen wie vorhin hinzufügen).&lt;/p&gt;
&lt;p&gt;Anschliessend kann mit dem WPF Projekt begonnen werden:&lt;br /&gt;
1.) Öffnen Sie die App.xaml und ändern sie diese so ab, dass sie wie unten aufgeführt aussieht (Ansonsten wird das MainWindow zwei mal gestartet).&lt;br /&gt;
&lt;pre class="brush: xml;"&gt;
&amp;lt;Application x:Class=&amp;quot;Prism.NavigationTryOut.App&amp;quot;
             xmlns=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;
             xmlns:x=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;&amp;gt;
    &amp;lt;Application.Resources&amp;gt;
         
    &amp;lt;/Application.Resources&amp;gt;
&amp;lt;/Application&amp;gt;
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;2.) Erstellen Sie eine Klasse die von UnityBootstrapper erbt und implementieren diese wie folgt:&lt;br /&gt;
&lt;pre class="brush: csharp;"&gt;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Practices.Prism.UnityExtensions;
using System.Windows;
using Microsoft.Practices.Unity;
using Microsoft.Practices.ServiceLocation;
using Prism.NavigationTryOut.NavigationModule;

namespace Prism.NavigationTryOut
{
    public class BootStrapper : UnityBootstrapper
    {
        protected override void InitializeShell()
        {
            base.InitializeShell();
            App.Current.MainWindow = (Window)Shell;
            App.Current.MainWindow.Show();
        }

        protected override DependencyObject CreateShell()
        {
            return ServiceLocator.Current.GetInstance&amp;lt;Shell&amp;gt;();
        }

        protected override void ConfigureModuleCatalog()
        {
            base.ConfigureModuleCatalog();       

            Microsoft.Practices.Prism.Modularity.ModuleCatalog catalog = (Microsoft.Practices.Prism.Modularity.ModuleCatalog)this.ModuleCatalog;

            // Nicht geeignet! Nehmen Sie stattdessen die Möglichkeit den catalog per XAML auszulesen.
            catalog.AddModule(typeof(NavigationModuleInitializer));
        }

        protected override void InitializeModules()
        {
            base.InitializeModules();
            
        }
    }
}
&lt;/pre&gt;&lt;br /&gt;
Anmerkung: Zum jetztigen Zeitpunkt kann noch nicht kompilliert werden.&lt;/p&gt;
&lt;p&gt;3.) Öffnen Sie die App.xaml.cs Codebehind und ändern Sie diese wie folgt ab:&lt;br /&gt;
&lt;pre class="brush: csharp;"&gt;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Windows;

namespace Prism.NavigationTryOut
{
    /// &amp;lt;summary&amp;gt;
    /// Interaction logic for App.xaml
    /// &amp;lt;/summary&amp;gt;
    public partial class App : Application
    {
        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);
            BootStrapper bootstrapper = new BootStrapper();
            bootstrapper.Run();
        }
    }
}
&lt;/pre&gt;&lt;br /&gt;
Wir sind fast am Ziel und müssen noch zwei kleine Sachen erledigen. Die eine wäre&lt;br /&gt;
4.) Benennen Sie die Datei MainWindow.xaml um in Shell und machen Sie dies auch im Codebehind mit der von Visual Studio 2010 gebotenen Funktion &amp;#8220;refactore&amp;#8221; &amp;#8211;&amp;gt; rename.&lt;/p&gt;
&lt;p&gt;Jetzt haben wir das StartUp Projekt fertig konfiguriert und müssen uns an das zu implementierende Module zuwenden (ACHTUNG: in diesem Post wird eine Referenz, der Einfachheit halber auf das Module erstellt, was in der Praxis vermieden werden sollte).&lt;/p&gt;
&lt;p&gt;5.) Erstellen Sie eine Klasse die das Initialisieren des Moduls und das Registrieren der Views übernimmt.&lt;br /&gt;
&lt;pre class="brush: csharp;"&gt;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Practices.Prism.Modularity;
using Microsoft.Practices.Unity;
using Microsoft.Practices.Prism.Regions;
using System.Windows.Input;
using Prism.NavigationTryOut.NavigationModule.Views;
using System.Windows.Controls;

namespace Prism.NavigationTryOut.NavigationModule
{
    public class NavigationModuleInitializer : IModule
    {
        private readonly IUnityContainer container;
        private readonly IRegionManager regionManager;      

        public NavigationModuleInitializer(IUnityContainer container, IRegionManager regionManager)
        {
            this.container = container;
            this.regionManager = regionManager;
        }

        public void Initialize()
        {
            this.container.RegisterType&amp;lt;Object, MainView&amp;gt;(&amp;quot;MainView&amp;quot;);
            this.container.RegisterType&amp;lt;Object, ViewOne&amp;gt;(&amp;quot;ViewOne&amp;quot;);
            this.container.RegisterType&amp;lt;Object, ViewTwo&amp;gt;(&amp;quot;ViewTwo&amp;quot;);
            
            regionManager.Regions[&amp;quot;MainRegion&amp;quot;].RequestNavigate(new Uri(&amp;quot;MainView&amp;quot;, UriKind.Relative));
        }
    }
}
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;6.) Anschliessen können wir auch gleich die ViewModelBase Klasse erstellen, die von jeder anderen ViewModel Klasse geertbt wird. Diese sieht dann so aus:&lt;br /&gt;
&lt;pre class="brush: csharp;"&gt;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Practices.Prism.Regions;
using Microsoft.Practices.ServiceLocation;
using System.Windows.Input;
using Microsoft.Practices.Unity;

namespace Prism.NavigationTryOut.NavigationModule
{
    public class ViewModelBase : INavigateAsync 
    {        
        private IRegionManager regionManager;
        private IUnityContainer container;
        protected IRegion mainRegion;

        /// &amp;lt;summary&amp;gt;
        /// Das NavigationsJournal beeinhaltet alle relevanten Uri's
        /// die in der Navigation betroffen sind und waren.
        /// &amp;lt;/summary&amp;gt;
        public virtual IRegionNavigationJournal NavigationJournal
        {
            get;
            private set;
        }

        /// &amp;lt;summary&amp;gt;
        /// Command für das Anzeigen der nächsten Seite.
        /// &amp;lt;/summary&amp;gt;
        public virtual ICommand NextCommand
        {
            get;
            private set;
        }

        /// &amp;lt;summary&amp;gt;
        /// Command für das Schliessen der Applikation.
        /// &amp;lt;/summary&amp;gt;
        public virtual ICommand CloseCommand
        {
            get;
            private set;
        }

        /// &amp;lt;summary&amp;gt;
        /// Command für das Navigieren zur vorherigen Seite.
        /// &amp;lt;/summary&amp;gt;
        public virtual ICommand PreviousCommand
        {
            get;
            private set;
        }        

        /// &amp;lt;summary&amp;gt;
        /// Konstruktor lokalisiert mit dem ServiceLocator bereits instantiierte Klassen
        /// die mit dem UnityContainer bereits registriert worden sind.
        /// &amp;lt;/summary&amp;gt;
        public ViewModelBase()
        {
            regionManager = ServiceLocator.Current.GetInstance&amp;lt;IRegionManager&amp;gt;();
            IRegionNavigationService navigationService = regionManager.Regions[&amp;quot;MainRegion&amp;quot;].NavigationService;           

            this.NavigationJournal = navigationService.Journal;
            mainRegion = regionManager.Regions[&amp;quot;MainRegion&amp;quot;];
        }

        public void RequestNavigate(Uri target, Action&amp;lt;NavigationResult&amp;gt; NavigationCallback)
        {
            regionManager.RequestNavigate(mainRegion.Name, target, NavigationCallback);
        }

        /// &amp;lt;summary&amp;gt;
        /// Notwendige Methode um auf .RequestNavigate reagiren zu können.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name=&amp;quot;res&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;
        public void NavigationCallback(NavigationResult res)
        {
            ClearUnusedViewsFromReagion(mainRegion, res.Context.Uri.OriginalString);
        }

        /// &amp;lt;summary&amp;gt;
        /// Diese Methode übernimmt, das Entfernen von Views, die nicht mehr angezeigt
        /// werden sollen. Da die Views nicht mit .Add zur Region hinzugefügt wurden, 
        /// werden hier die Namen mit dem ViewModel verglichen.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name=&amp;quot;region&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;
        /// &amp;lt;param name=&amp;quot;viewName&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;
        protected void ClearUnusedViewsFromReagion(IRegion region, string viewName)
        {
            foreach (var view in region.Views.ToList())
            {
                if (!view.GetType().Name.Contains(viewName))
                {
                    region.Remove(view);
                }                
            }
        }
    }
}
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;7.) Erstellen der VieModels (vgl. SourceCode zum herunterladen). Exemplarische zeige ich hier nur das erste ViewModel (die anderen sind ähnlich aufgebaut)&lt;br /&gt;
&lt;pre class="brush: csharp;"&gt;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Input;
using Microsoft.Practices.Prism.Commands;

namespace Prism.NavigationTryOut.NavigationModule.ViewModel
{
    public class MainViewModel : ViewModelBase
    {
        private ICommand _nextCommand;
        public override ICommand NextCommand
        {
            get { return _nextCommand; }
        }

        private ICommand _closeCommand;
        public override ICommand CloseCommand
        {
            get { return _closeCommand; }
        }

        private ICommand _previousCommand;
        public override ICommand PreviousCommand
        {
            get { return _previousCommand; }
        }

        public MainViewModel()
        {
            _nextCommand = new DelegateCommand(new Action(OnNavigateNext));
            _closeCommand = new DelegateCommand(new Action(OnClose));
            _previousCommand = new DelegateCommand(new Action(OnPrevious));
        }

        private void OnNavigateNext()
        {
            base.RequestNavigate(new Uri(&amp;quot;ViewOne&amp;quot;, UriKind.Relative), base.NavigationCallback);
        }

        private void OnClose()
        {
            
        }

        private void OnPrevious()
        {
            base.NavigationJournal.GoBack();
        }
    }
}
&lt;/pre&gt;&lt;br /&gt;
Die entsprechende View (die anderen zeigen nur ein aderes Bild an) werden wie in Punkt 8.) erstellt:&lt;br /&gt;
&lt;pre class="brush: xml;"&gt;
&amp;lt;UserControl x:Class=&amp;quot;Prism.NavigationTryOut.NavigationModule.Views.MainView&amp;quot;
             xmlns=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;
             xmlns:x=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;
             xmlns:mc=&amp;quot;http://schemas.openxmlformats.org/markup-compatibility/2006&amp;quot; 
             xmlns:d=&amp;quot;http://schemas.microsoft.com/expression/blend/2008&amp;quot; 
             mc:Ignorable=&amp;quot;d&amp;quot; 
             xmlns:mvvm=&amp;quot;clr-namespace:Prism.NavigationTryOut.NavigationModule.ViewModel&amp;quot;
             d:DesignHeight=&amp;quot;300&amp;quot; d:DesignWidth=&amp;quot;300&amp;quot; Background=&amp;quot;Beige&amp;quot;&amp;gt;
    &amp;lt;UserControl.Resources&amp;gt;
        &amp;lt;mvvm:MainViewModel x:Key=&amp;quot;MainMvvM&amp;quot;&amp;gt;&amp;lt;/mvvm:MainViewModel&amp;gt;
    &amp;lt;/UserControl.Resources&amp;gt;
    &amp;lt;DockPanel&amp;gt;
        &amp;lt;Image Source=&amp;quot;/Prism.NavigationTryOut.NavigationModule;component/Images/Autumn Leaves.jpg&amp;quot; DockPanel.Dock=&amp;quot;Top&amp;quot; MaxHeight=&amp;quot;400&amp;quot; MaxWidth=&amp;quot;600&amp;quot;&amp;gt;&amp;lt;/Image&amp;gt;
        &amp;lt;Grid x:Name=&amp;quot;NavigationGrid&amp;quot; VerticalAlignment=&amp;quot;Bottom&amp;quot; DataContext=&amp;quot;{Binding Source={StaticResource MainMvvM}}&amp;quot;&amp;gt;
            &amp;lt;Grid.ColumnDefinitions&amp;gt;
                &amp;lt;ColumnDefinition Width=&amp;quot;0.3*&amp;quot; /&amp;gt;
                &amp;lt;ColumnDefinition Width=&amp;quot;*&amp;quot; /&amp;gt;
                &amp;lt;ColumnDefinition Width=&amp;quot;0.3*&amp;quot; /&amp;gt;
            &amp;lt;/Grid.ColumnDefinitions&amp;gt;
            &amp;lt;Grid.RowDefinitions&amp;gt;
                &amp;lt;RowDefinition Height=&amp;quot;0.2*&amp;quot; /&amp;gt;
            &amp;lt;/Grid.RowDefinitions&amp;gt;
            &amp;lt;Button x:Name=&amp;quot;Previous&amp;quot; Content=&amp;quot;Previous&amp;quot; Grid.Column=&amp;quot;0&amp;quot; Grid.Row=&amp;quot;0&amp;quot; Margin=&amp;quot;5&amp;quot; Command=&amp;quot;{Binding PreviousCommand}&amp;quot; IsEnabled=&amp;quot;{Binding NavigationJournal.CanGoBack}&amp;quot;&amp;gt;&amp;lt;/Button&amp;gt;
            &amp;lt;Button x:Name=&amp;quot;Close&amp;quot; Content=&amp;quot;Close&amp;quot; Grid.Column=&amp;quot;1&amp;quot; Grid.Row=&amp;quot;0&amp;quot; Margin=&amp;quot;5&amp;quot; Command=&amp;quot;{Binding CloseCommand}&amp;quot;&amp;gt;&amp;lt;/Button&amp;gt;
            &amp;lt;Button x:Name=&amp;quot;Next&amp;quot; Content=&amp;quot;Next&amp;quot; Grid.Column=&amp;quot;2&amp;quot; Grid.Row=&amp;quot;0&amp;quot; Margin=&amp;quot;5&amp;quot; Command=&amp;quot;{Binding NextCommand}&amp;quot;&amp;gt;&amp;lt;/Button&amp;gt;
        &amp;lt;/Grid&amp;gt;
    &amp;lt;/DockPanel&amp;gt;
&amp;lt;/UserControl&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
Anmerkung: Das ViewModel kann nicht erstellt werden, da im Konstruktor der ServiceLocator von Unity für das Auflösen des IRegionManagers verwendet wird. Dieser wird erst zur Laufzeit erstellt und daher erhält man eine NULL-Reference-Exeption im GUI-Design.&lt;/p&gt;
&lt;p&gt;So damit hätten wir eine kleine, aber noch mit Verbesserungspotenzial versehene Navigationslösung erstellt, deren Ansatz man sicher weiter verfolgen kann. In diesem Sinne danke ich für das Lesen des Blogpost&amp;#8217;s und freue mich auf konstruktive Kritiken.&lt;/p&gt;
&lt;p&gt;Die dazugehörige Solution kann &lt;a href="https://skydrive.live.com/?cid=ce67b0bb158a026d&amp;amp;sc=documents&amp;amp;id=CE67B0BB158A026D%214673#" title="hier" target="_blank"&gt;hier&lt;/a&gt; heruntergeladen werden.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dotnet-kicks.de/kick/?url=http%3a%2f%2fschaedlerdaniel.wordpress.com%2f2011%2f07%2f12%2fprism-4-0-navigation%2f"&gt;&lt;img src="http://dotnet-kicks.de/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fschaedlerdaniel.wordpress.com%2f2011%2f07%2f12%2fprism-4-0-navigation%2f" border="0" alt="kick it on dotnet-kicks.de" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;br /&gt;  &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/schaedlerdaniel.wordpress.com/394/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/schaedlerdaniel.wordpress.com/394/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/schaedlerdaniel.wordpress.com/394/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/schaedlerdaniel.wordpress.com/394/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/schaedlerdaniel.wordpress.com/394/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/schaedlerdaniel.wordpress.com/394/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/schaedlerdaniel.wordpress.com/394/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/schaedlerdaniel.wordpress.com/394/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/schaedlerdaniel.wordpress.com/394/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/schaedlerdaniel.wordpress.com/394/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/schaedlerdaniel.wordpress.com/394/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/schaedlerdaniel.wordpress.com/394/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/schaedlerdaniel.wordpress.com/394/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/schaedlerdaniel.wordpress.com/394/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=schaedlerdaniel.wordpress.com&amp;amp;blog=16378069&amp;amp;post=394&amp;amp;subd=schaedlerdaniel&amp;amp;ref=&amp;amp;feed=1" width="1" height="1" /&gt;</content:encoded>
      <wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://schaedlerdaniel.wordpress.com/2011/07/12/prism-4-0-navigation/feed/</wfw:commentRss>
      <slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">4</slash:comments>
      <media:content url="http://0.gravatar.com/avatar/e50530c3e478a8a210b7df39006fdc68?s=96&amp;d=identicon&amp;r=G" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">schaedlerdaniel</media:title>
      </media:content>
      <media:content url="http://dotnet-kicks.de/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fschaedlerdaniel.wordpress.com%2f2011%2f07%2f12%2fprism-4-0-navigation%2f" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">kick it on dotnet-kicks.de</media:title>
      </media:content>
    </item>
    <item>
      <guid isPermaLink="true">http://www.databinding.net/blog/post/2011/07/05/entity-framework-4-orm-und-die-unterschiede-zwischen-domaenen-und-er-modell.html</guid>
      <link>http://www.databinding.net/blog/post/2011/07/05/entity-framework-4-orm-und-die-unterschiede-zwischen-domaenen-und-er-modell.html</link>
      <author>ipt:linkTo_UnCryptMailto('nbjmup+'); (René)</author>
      <category>.NET Development</category>
      <category>Entity Framework</category>
      <category>SQL Server</category>
      <title>Entity Framework 4 - ORM und die Unterschiede zwischen Domänen- und ER-Modell</title>
      <description>Brownfield bzw. DB First ist unter vielen Entwicklern unbeliebt. Am liebsten würden sie auf der grünen Wiese beginnen. Es gibt viele Begriffe und Ideologien, häufig stellt es aber eine Herausforderung dar, diese...</description>
      <pubDate>Tue, 05 Jul 2011 23:05:00 +0200</pubDate>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"> Brownfield bzw. DB First ist unter vielen Entwicklern unbeliebt. Am liebsten würden sie auf der grünen Wiese beginnen. Es gibt viele Begriffe und Ideologien, häufig stellt es aber eine Herausforderung dar, diese in der Praxis zu vereinen.</content:encoded>
    </item>
    <item>
      <guid isPermaLink="true">http://www.databinding.net/blog/post/2011/07/04/entity-framework-4-efcachingprovider-und-die-systemnotsupportedexception-command-tree-type-syst.html</guid>
      <link>http://www.databinding.net/blog/post/2011/07/04/entity-framework-4-efcachingprovider-und-die-systemnotsupportedexception-command-tree-type-syst.html</link>
      <author>ipt:linkTo_UnCryptMailto('nbjmup+'); (René)</author>
      <category>.NET Development</category>
      <category>Entity Framework</category>
      <title>Entity Framework 4 - EfCachingProvider und die System.NotSupportedException:  Command tree type System.Data.Common.CommandTrees. DbFunctionCommandTree is not supported bei Ausführung von gespeicherten Prozeduren</title>
      <description>Ich habe die neue Version des EFProviderToolkits heruntergeladen. Bei der Ausführung von Prozeduren hatte auch die frühere Version Probleme. Wie ich es dennoch in den Griff bekommen habe, ist hier beschrieben....</description>
      <pubDate>Mon, 04 Jul 2011 15:01:00 +0200</pubDate>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"> Ich habe die neue Version des EFProviderToolkits heruntergeladen. Bei der Ausführung von Prozeduren hatte auch die frühere Version Probleme. Wie ich es dennoch in den Griff bekommen habe, ist hier beschrieben. 
Nun stand ich wieder an einer ähnlichen Stelle an. Der Code wurde überarbeitet, theoretisch lassen sich auch die gespeicherten Prozeduren ausführen. Theoretisch, denn der Caching Provider quittiert mir die Ausführung mit der Fehlermeldung: 
System.NotSupportedException: Command tree type System.Data.Common.CommandTrees.DbFunctionCommandTree is not supported. 
Bei der neuen Version tritt der Fehler jedoch in der Datei EFCommandDefinition.cs auf, also machte ich mich dort auf die Suche. Fündig wurde ich in der Methode GetAffectedEntitySets. 
Dort werden die Tree-Kommandos geparst und der Visitor angeheftet. Die Methode DbFunctionCommandTree fehlt jedoch in dieser Methode und dadurch wird eine Ausnahme ausgelöst, die in Zeile 170 steht. 
Also habe ich in der Methode diesen Part hinzugefügt und konnte so das Problem in den Griff bekommen. Da ich in diesem Projekt nur gespeicherte Prozeduren ohne Rückgabewert aufrufe, bleibt die Basisfunktionalität des Caching Providers erhalten. 
Die angepasste Methode im Projekt EFCachingProivder sieht wie folgt aus:</content:encoded>
    </item>
    <item>
      <guid isPermaLink="true">http://www.databinding.net/blog/post/2011/07/03/cloud-security-aus-der-marketingperspektive.html</guid>
      <link>http://www.databinding.net/blog/post/2011/07/03/cloud-security-aus-der-marketingperspektive.html</link>
      <author>ipt:linkTo_UnCryptMailto('nbjmup+'); (René)</author>
      <category>Sicherheit</category>
      <category>Mind Map</category>
      <category>Qualität</category>
      <title>Cloud Security aus der Marketingperspektive</title>
      <description>Ich habe mir die 3 teilige Webcastserie zu Sicherheitsgedanken in der Cloud angesehen und daraus ein grobes Mindmap erstellt. Eins vorweg, diese Serie reicht nicht aus, um sich mit der Cloud-Sicherhe...</description>
      <pubDate>Sun, 03 Jul 2011 13:22:00 +0200</pubDate>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"> Ich habe mir die 3 teilige Webcastserie zu Sicherheitsgedanken in der Cloud angesehen und daraus ein grobes Mindmap erstellt. Eins vorweg, diese Serie reicht nicht aus, um sich mit der Cloud-Sicherheit auseinanderzusetzen. Ich werde mich jetzt auf die Suche nach Literatur von Gray-Hats machen, um einen objektiveren Überblick zu erhalten. ;-) Gut ich gebe es zu, die habe ich schon längst, aber noch nicht vollständig gelesen. 
Gut an der Serie ist, dass sie die 3 Bereiche Kunde, Applikation und Cloud im Bezug auf die Sicherheit betrachtet. Weniger gelungen finde ich allerdings die Sicherheitsaspekte des Cloud Providers, da wird im Bezug auf Azure mit Fachchinesisch um sich geworfen, damit lässt sich das Management nur schwer überzeugen. 
Der eigentliche Schwerpunkt liegt dann auch auf der Anwendungssicherheit und diese vermittelt einen soliden Eindruck. Nur sollten diese Punkte bei der Entwicklung von Webanwendungen jeden Entwickler bekannt sein, leider ist dies nicht so. In der Folge kann hier die Gefahr eines Ping Pong's zwischen Applikations- und Cloud-Provider bestehen. 
In dieser Hinsicht freue ich mich auf den Tag, an dem bei Gesprächen unter Entwicklern Begriffe wie SDL, CIA, AAA usw. zum Grundwortschatz gehören und nicht mit einem "Hää" beantwortet werden. Bei SOLID funktioniert es ja auch.</content:encoded>
    </item>
    <item>
      <guid isPermaLink="true">http://www.databinding.net/blog/post/2011/07/02/entity-framework-lange-war-es-ruhig-aber-jetzt-tut-sich-wieder-was.html</guid>
      <link>http://www.databinding.net/blog/post/2011/07/02/entity-framework-lange-war-es-ruhig-aber-jetzt-tut-sich-wieder-was.html</link>
      <author>ipt:linkTo_UnCryptMailto('nbjmup+'); (René)</author>
      <category>.NET Development</category>
      <category>Entity Framework</category>
      <title>Entity Framework - Lange war es ruhig, aber jetzt tut sich wieder was</title>
      <description>Kurz bevor der Juli begann, wurde noch schnell die JuneCTP für das Entity Framework veröffentlicht. Da ich bisher alle Download-Links in meinen Blog hinterlegt habe und das jetzt bei der Einrichtung eines ne...</description>
      <pubDate>Sat, 02 Jul 2011 13:28:00 +0200</pubDate>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"> Kurz bevor der Juli begann, wurde noch schnell die JuneCTP für das Entity Framework veröffentlicht. Da ich bisher alle Download-Links in meinen Blog hinterlegt habe und das jetzt bei der Einrichtung eines neuen VM-Image für mich sehr hilfreich war, werde ich den Link auch hinterlegen. ;-)
Details und die Downloadlinks zur EF June CTP 2011 gibt es hier.
Liebevoll wird diese CTP bereits EF Enum Edition genannt. *fg*
Eigentlich schon ein wenig unterhaltsam, da spricht man überall von Anwendungsintegration, Auswertungen, Data Mining, DWH und jetzt Enum. 
Ich hoffe nur, dass diejenigen Entwickler die so lauthals den Support dafür gefordert haben, auch Verantwortungsbewusst damit umgehen werden.
</content:encoded>
    </item>
    <item>
      <guid isPermaLink="true">http://www.databinding.net/blog/post/2011/06/29/t4-entityframworktemplatefilemanager-durch-den-templatefilemanager-ersetzen.html</guid>
      <link>http://www.databinding.net/blog/post/2011/06/29/t4-entityframworktemplatefilemanager-durch-den-templatefilemanager-ersetzen.html</link>
      <author>ipt:linkTo_UnCryptMailto('nbjmup+'); (René)</author>
      <category>.NET Development</category>
      <category>T4</category>
      <title>T4 - EntityFramworkTemplateFileManager durch den TemplateFileManager ersetzen</title>
      <description>Eigene Code-Generierungsvorlagen für das Entity Framework können sehr einfach erstellt werden. Es gilt nur eine Konvention zu beachten. Details dazu gibt es in diesem Beitrag. In der Basis arbeitet der Enti...</description>
      <pubDate>Wed, 29 Jun 2011 22:48:00 +0200</pubDate>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"> Eigene Code-Generierungsvorlagen für das Entity Framework können sehr einfach erstellt werden. Es gilt nur eine Konvention zu beachten. Details dazu gibt es in diesem Beitrag. 
In der Basis arbeitet der EntityFrameworkTemplateFileManager, der in Verbindung mit den Code-Generierungsvorlagen häufig zur Anwendung kommt. Die Vorlagen für den Kontext und die Businessobjekte sind in der Regel auf zwei T4-Vorlagen aufgeteilt, damit ein gewisses Mass an Flexiblilät erreicht werden kann. So lässt sich bspw. die Vorlage für die Business-Objekte in eine andere Solution verschieben. Nach der Anpassung des Pfades zur EDMX-Datei funktioniert diese auch wieder. Bei grossen Modellen ist dieser Ansatz auch nicht immer die beste Lösung, da alle Klassen der Vorlage untergeordnet sind und die Generierung in einzelne Verzeichnisse nicht möglich ist. Da der EDM-Designer erweitert werden kann, wie es in diesem Beitrag beschreiben wird, besteht die Möglichkeit, dass für die Klassen ein Package-Namespace definiert werden kann, in dem die Klassen später hinein generiert werden. 
Mit dem EntityFrameworkTemplateFileManager ist das jedoch nicht möglich, sodass für die Vorlage ein anderer Lösungsansatz verwendet werden muss. Da der TemplateFileManager auf dem EntityFramworkTemplateFileManager basiert, kann dieser für die Aufgabe herangezogen werden. 
Der Austausch erfolgt nach dem klassischen Muster Suchen und Ersetzen. Warum das so ist, erläutere ich nicht noch mal. ;-) 
Betrachten wir diesen klassischen Ansatz an der mitgelieferten Code-Generierungsvorlage "Self Tracking Entities". Für die Klassen soll neu die Möglichkeit bestehen, dass diese in eine andere Projektmappe und der entsprechenden Unterverzeichnisse gem. Package-Namespace generiert werden. 
Dazu öffne ich die T4-Vorlage für die Klassen.</content:encoded>
    </item>
    <item>
      <guid isPermaLink="true">http://www.databinding.net/blog/post/2011/06/25/t4-wo-steht-die-version-2-des-templatefilemanager-zur-verfuegung.html</guid>
      <link>http://www.databinding.net/blog/post/2011/06/25/t4-wo-steht-die-version-2-des-templatefilemanager-zur-verfuegung.html</link>
      <author>ipt:linkTo_UnCryptMailto('nbjmup+'); (René)</author>
      <category>.NET Development</category>
      <category>T4</category>
      <title>T4 - Wo steht die Version 2 des TemplateFileManager zur Verfügung</title>
      <description>Über die neuen Funktionen des TemplateFileManagers habe ich bisher nur geschrieben, öffentlich war dieser nicht. Das hole ich mit diesem Beitrag nach. Neben der Veröffentlichung in der Code Gallery des tan...</description>
      <pubDate>Sat, 25 Jun 2011 03:47:00 +0200</pubDate>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"> Über die neuen Funktionen des TemplateFileManagers habe ich bisher nur geschrieben, öffentlich war dieser nicht. Das hole ich mit diesem Beitrag nach. 
Neben der Veröffentlichung in der Code Gallery des tangible T4 Editors steht die neue Version des TemplateFileManagers auch hier zum Download bereit.</content:encoded>
    </item>
    <item>
      <guid isPermaLink="true">http://www.databinding.net/blog/post/2011/06/21/t4-benutzerdefinierte-parameter-fuer-die-startheader-methode-im-templatefilemanager.html</guid>
      <link>http://www.databinding.net/blog/post/2011/06/21/t4-benutzerdefinierte-parameter-fuer-die-startheader-methode-im-templatefilemanager.html</link>
      <author>ipt:linkTo_UnCryptMailto('nbjmup+'); (René)</author>
      <category>.NET Development</category>
      <category>T4</category>
      <title>T4 - Benutzerdefinierte Parameter für die StartHeader-Methode im TemplateFileManager</title>
      <description>Wie der einzige Standardparameter $filename$ verwendet werden kann, ist in diesem Beitrag beschrieben. Im Header können wiederkehrende Teile wie zum Beispiel der Dateikopf bzw. die Namensraumdefinition ...</description>
      <pubDate>Tue, 21 Jun 2011 21:58:00 +0200</pubDate>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"> Wie der einzige Standardparameter $filename$ verwendet werden kann, ist in diesem Beitrag beschrieben. Im Header können wiederkehrende Teile wie zum Beispiel der Dateikopf bzw. die Namensraumdefinition hinterlegt werden. 
Der Standardparameter wird dafür sicherlich nicht ausreichen und so können über die FileProperties weitere benutzerdefinierte Parameter festgelegt werden. 
Folgendes Szenario soll die Verwendung veranschaulichen. 
Im Bereich, der durch die Methode StartHeader festgelegt wird, sollen pro Datei weitere Parameter für den Namensraum und den Klassennamen verwendet werden. Der Aufbau könnte wie folgt aussehen:</content:encoded>
    </item>
    <item>
      <guid isPermaLink="true">http://www.databinding.net/blog/post/2011/06/16/t4-custom-tool-ein-weiteres-neues-feature-im-templatefilemanager.html</guid>
      <link>http://www.databinding.net/blog/post/2011/06/16/t4-custom-tool-ein-weiteres-neues-feature-im-templatefilemanager.html</link>
      <author>ipt:linkTo_UnCryptMailto('nbjmup+'); (René)</author>
      <category>.NET Development</category>
      <category>T4</category>
      <title>T4 - Custom Tool ein weiteres neues Feature im TemplateFileManager</title>
      <description>Custom Tool, dabei handelt es sich um eine Komponente für Visual Studio mit der eine dem Projektitem untergeordnete Quellcode-Datei erstellt werden kann. Für T4-Templates zum Beispiel heisst das Custom Tool Te...</description>
      <pubDate>Thu, 16 Jun 2011 23:18:00 +0200</pubDate>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"> Custom Tool, dabei handelt es sich um eine Komponente für Visual Studio mit der eine dem Projektitem untergeordnete Quellcode-Datei erstellt werden kann. Für T4-Templates zum Beispiel heisst das Custom Tool TextTemplatingFileGenerator und ist für den Output zuständig (Im Fall von T4 die Ausgabe anstossen). 
Es gibt Situationen, da ist es richtig praktisch, wenn bei der Codegenerierung so ein Custom Tool verwendet werden kann. In meinen Beispielen der ADC 2010 befindet sich dazu ein Szenario für Ressource-Dateien. In einem Beispiel benutze ich meinen VsAutomationHelper, um nach der Fertigstellung der Generierung das Custom Tool auf die Standardressource zu setzen. 
Der Vorteil sollte eigentlich jedem ersichtlich werden. Ich spare mir Zeit, in dem ich keine Templates schreibe, wofür in Visual Studio bereits ein fertiges Konzept besteht. 
Das Custom Tool habe ich bisher mit den AutomationHelper mit folgender Zeile gesetzt:</content:encoded>
    </item>
    <item>
      <guid isPermaLink="true">http://www.databinding.net/blog/post/2011/06/14/t4-format-document-dass-zweite-neue-feature-im-templatefilemanager.html</guid>
      <link>http://www.databinding.net/blog/post/2011/06/14/t4-format-document-dass-zweite-neue-feature-im-templatefilemanager.html</link>
      <author>ipt:linkTo_UnCryptMailto('nbjmup+'); (René)</author>
      <category>T4</category>
      <category>.NET Development</category>
      <title>T4  Format Document, dass zweite neue Feature im TemplateFileManager</title>
      <description>Beim erstellen der Vorlagen muss man selbst darauf achten, wenn die Ausgabedatei &amp;quot;wohlgeformt&amp;quot; sein soll. Ein Problem, welches dadurch auftreten kann, ist die verschlechterte Lesbarkeit der eigentlic...</description>
      <pubDate>Tue, 14 Jun 2011 22:43:00 +0200</pubDate>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"> Beim erstellen der Vorlagen muss man selbst darauf achten, wenn die Ausgabedatei "wohlgeformt" sein soll. Ein Problem, welches dadurch auftreten kann, ist die verschlechterte Lesbarkeit der eigentlichen T4-Vorlage. 
Betrachen lässt sich das an folgendem Beispiel:</content:encoded>
    </item>
    <item>
      <guid isPermaLink="false">http://schaedlerdaniel.wordpress.com/?p=385</guid>
      <link>http://schaedlerdaniel.wordpress.com/2011/06/12/dynamisch-generiertes-bilder-menu-erweitern-mit-jqueryui/</link>
      <category>ASP.NET /AJAX /ASP.NET MVC</category>
      <category>Bildergallery</category>
      <category>dynamisches Bildermenu</category>
      <category>JQuery</category>
      <category>Modaler PopUpExtender auf selektiertes Bild</category>
      <title>Dynamisch generiertes Bilder-Menu erweitern mit JQueryUI</title>
      <description>Im letzten Blogbeitrag wurden die Bilder im Verzeichnisbaum in das Menu gerendert (also die Struktur). Damit man noch ein wenig mehr Pepp in das Ganze bringen kann, ist es möglich JQueryUI zu verwenden. Zu diesem Zweck habe ich mir den Modal Dialog ausgesucht,
 dass wenn der Benutzer ein Bild, das verkleinert dargestellt wird, in einem [...]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=schaedlerdaniel.wordpress.com&amp;amp;blog=16378069&amp;amp;post=385&amp;amp;subd=schaedlerdaniel&amp;amp;ref=&amp;amp;feed=1" width="1" height="1"&gt;</description>
      <pubDate>Sun, 12 Jun 2011 16:55:09 Z</pubDate>
      <comments>http://schaedlerdaniel.wordpress.com/2011/06/12/dynamisch-generiertes-bilder-menu-erweitern-mit-jqueryui/#comments</comments>
      <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">schaedlerdaniel</dc:creator>
      <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/">&lt;p&gt;Im letzten Blogbeitrag wurden die Bilder im Verzeichnisbaum in das Menu gerendert (also die Struktur). Damit man noch ein wenig mehr Pepp in das Ganze bringen kann, ist es möglich &lt;a href="http://jqueryui.com/home"&gt;JQueryUI&lt;/a&gt; zu verwenden. Zu diesem Zweck habe ich mir den &lt;a href="http://jqueryui.com/demos/dialog/"&gt;Modal Dialog&lt;/a&gt; ausgesucht, dass wenn der Benutzer ein Bild, das verkleinert dargestellt wird, in einem Dialog angezeigt bekommt.&lt;/p&gt;
&lt;h5&gt;Was ist denn da alles notwendig?&lt;/h5&gt;
&lt;p&gt;Eigentlich nicht ganz viel:&lt;br /&gt;
1.) Man lade eines der vielen &lt;a href="http://jqueryui.com/themeroller/"&gt;Themen&lt;/a&gt; herunter, dass von JQueryUI schon zur Verfügung gestellt wird.&lt;br /&gt;
2.) Grundlage bildet der vorherige Blogpost &amp;#8220;Dynamisch generiertes Bilder-Menu&amp;#8221;. Die Source kann &lt;a href="http://cid-ce67b0bb158a026d.office.live.com/self.aspx/Public/Development/Blog%20Post%20Solutions/DynamicImageGalleryMenu.zip" target="blank"&gt;hier&lt;/a&gt; herunter geladen werden.&lt;br /&gt;
Wie kommen wir denn nun zu dem modalen Bild&lt;/h5&gt;
&lt;p&gt;Als erstes passen wird den Menu-Click Event an. Hier werden dann dynamisch anhand der Anzahl Bilder die IMAGE-ASP.NET Controls in das entsprechende DIV gerendert.&lt;br /&gt;
&lt;pre class="brush: csharp;"&gt;
        /// &amp;lt;summary&amp;gt;
        /// If menu is clicked the image will be rendered as image tag into the site
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name=&amp;quot;sender&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;
        /// &amp;lt;param name=&amp;quot;e&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;
        protected void GalleryMenu_ItemClick(object sender, MenuEventArgs e)
        {
            MenuItem menuItem = (MenuItem)e.Item;
            string path = string.Format(@&amp;quot;Images/{0}&amp;quot;, menuItem.ValuePath);
            DirectoryInfo directoryInfo = new DirectoryInfo(Server.MapPath(path));
            FileInfo[] files = directoryInfo.GetFiles(&amp;quot;*.jpg&amp;quot;);

            foreach (var picture in files)
            {
                Image image = new Image();
                image.Height = 200;
                image.Width = 200;
                image.ClientIDMode = System.Web.UI.ClientIDMode.AutoID;
                image.ID = string.Format(@&amp;quot;Image_{0}&amp;quot;, picture.Length);
                image.ImageUrl = string.Format(&amp;quot;{0}/{1}&amp;quot;, path, picture.Name);
                image.Attributes.Add(&amp;quot;onclick&amp;quot;, string.Format(@&amp;quot;ShowImageInOriginalSize('{0}')&amp;quot;, image.ClientID));
                ImageResultDiv.Controls.Add(image);
            }
        }
&lt;/pre&gt;&lt;br /&gt;
Das Ganze kann dann noch mit ein wenig JavaScript (JQuery) gepfeffert werden und sie dann auch entsprechend schön aus (sofern man das entsprechende Thema anhand der &lt;a href="http://jqueryui.com/docs/Getting_Started"&gt;JQueryUI Hilfe&lt;/a&gt; eingebunden hat).&lt;br /&gt;
&lt;pre class="brush: xml;"&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;
        function ShowImageInOriginalSize(imageClientId) {
            var image = $('#' + imageClientId + '');

            var modalPopUpImage = $('#ModalPopUpImage');
            modalPopUpImage[0].width = image[0].naturalWidth;
            modalPopUpImage[0].height = image[0].naturalHeight;
            modalPopUpImage[0].src = image[0].src;

            $('#ModalPopUp').dialog({ modal: true, height: image[0].naturalWidth, width: image[0].naturalWidth, maxHeight: image[0].naturalHeight, maxWidth: image[0].naturalWidth });
        }
    &amp;lt;/script&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
ACHTUNG:Die Stolperfalle, wenn man das angeklickte Bild dem ModalpopUp-Extender übergeben hat, dann wird es zwar angezeigt, aber nicht mehr in die Source (dort wo es angeklickt worden ist) &amp;#8220;zurück&amp;#8221; gelegt. Aus diesem Grund ist es wichtig ein modales Bild zu haben dass die Höhe und die Breite als 0 aufweist und erst, wenn der Dialog angezeigt wird, in die entsprechende Grösse verändert wird.&lt;br /&gt;
&lt;pre class="brush: xml;"&gt;
&amp;lt;body&amp;gt;
    &amp;lt;form id=&amp;quot;form1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;
    &amp;lt;div runat=&amp;quot;server&amp;quot;  id=&amp;quot;ResultDiv&amp;quot;&amp;gt;
    &amp;lt;div style=&amp;quot;float:left; margin:5px;&amp;quot;&amp;gt;
        &amp;lt;asp:Menu ID=&amp;quot;GalleryMenu&amp;quot; runat=&amp;quot;server&amp;quot; RenderingMode=&amp;quot;List&amp;quot; 
            OnMenuItemClick=&amp;quot;GalleryMenu_ItemClick&amp;quot;&amp;gt;
        &amp;lt;/asp:Menu&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;div id=&amp;quot;ImageResultDiv&amp;quot; runat=&amp;quot;server&amp;quot; style=&amp;quot;float:left; position:relative; margin-left:200px; margin-top:5px;&amp;quot;&amp;gt;            
        &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;/form&amp;gt;
    &amp;lt;div id=&amp;quot;ModalPopUp&amp;quot; style=&amp;quot;margin-bottom:2px;&amp;quot;&amp;gt;
        &amp;lt;img id=&amp;quot;ModalPopUpImage&amp;quot; src=&amp;quot;#&amp;quot; alt=&amp;quot;Alternate Text&amp;quot; width=&amp;quot;0&amp;quot; height=&amp;quot;0&amp;quot; /&amp;gt;
    &amp;lt;/div&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
Somit kann das &amp;#8220;Fake&amp;#8221;-Bildchen versteckt und spielt erst wieder eine Rolle, wenn es gebraucht wird. Für Anregungen und Kritik bin ich offen und hoffe auf Rückmeldungen.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dotnet-kicks.de/kick/?url=http%3a%2f%2fschaedlerdaniel.wordpress.com%2f2011%2f06%2f12%2fdynamisch-generiertes-bilder-menu-erweitern-mit-jqueryui%2f"&gt;&lt;img src="http://dotnet-kicks.de/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fschaedlerdaniel.wordpress.com%2f2011%2f06%2f12%2fdynamisch-generiertes-bilder-menu-erweitern-mit-jqueryui%2f" border="0" alt="kick it on dotnet-kicks.de" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;br /&gt;  &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/schaedlerdaniel.wordpress.com/385/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/schaedlerdaniel.wordpress.com/385/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/schaedlerdaniel.wordpress.com/385/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/schaedlerdaniel.wordpress.com/385/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/schaedlerdaniel.wordpress.com/385/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/schaedlerdaniel.wordpress.com/385/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/schaedlerdaniel.wordpress.com/385/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/schaedlerdaniel.wordpress.com/385/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/schaedlerdaniel.wordpress.com/385/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/schaedlerdaniel.wordpress.com/385/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/schaedlerdaniel.wordpress.com/385/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/schaedlerdaniel.wordpress.com/385/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/schaedlerdaniel.wordpress.com/385/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/schaedlerdaniel.wordpress.com/385/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=schaedlerdaniel.wordpress.com&amp;amp;blog=16378069&amp;amp;post=385&amp;amp;subd=schaedlerdaniel&amp;amp;ref=&amp;amp;feed=1" width="1" height="1" /&gt;</content:encoded>
      <wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://schaedlerdaniel.wordpress.com/2011/06/12/dynamisch-generiertes-bilder-menu-erweitern-mit-jqueryui/feed/</wfw:commentRss>
      <slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments>
      <media:content url="http://0.gravatar.com/avatar/e50530c3e478a8a210b7df39006fdc68?s=96&amp;d=identicon&amp;r=G" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">schaedlerdaniel</media:title>
      </media:content>
      <media:content url="http://dotnet-kicks.de/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fschaedlerdaniel.wordpress.com%2f2011%2f06%2f12%2fdynamisch-generiertes-bilder-menu-erweitern-mit-jqueryui%2f" medium="image" xmlns:media="http://search.yahoo.com/mrss/">
        <media:title type="html">kick it on dotnet-kicks.de</media:title>
      </media:content>
    </item>
  </channel>
</rss>
