<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>

<channel>
	<title>EBb - Erik Bollow blogs</title>
	<atom:link href="http://blog.bollow.name/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.bollow.name</link>
	<description>Computer Science as Passion</description>
	<pubDate>Wed, 09 May 2012 16:35:04 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>The dotnet Cologne 2012</title>
		<link>http://blog.bollow.name/2012/05/the-dotnet-cologne-2012/</link>
		<comments>http://blog.bollow.name/2012/05/the-dotnet-cologne-2012/#comments</comments>
		<pubDate>Fri, 04 May 2012 19:39:00 +0000</pubDate>
		<dc:creator>Erik Bollow</dc:creator>
		
		<category><![CDATA[Event]]></category>

		<category><![CDATA[.NET]]></category>

		<category><![CDATA[Software Technology]]></category>

		<category><![CDATA[Visual Studio]]></category>

		<category><![CDATA[Windows 8]]></category>

		<guid isPermaLink="false">http://blog.bollow.name/?p=451</guid>
		<description><![CDATA[Wow, wow, wow. The 4th dotnet Cologne was a great event - once again! It was held at the KOMED for the second time. It is a location quite good to reach by car or public transport. 350 people met there to get information and ideas from speakers who are developers themselves. This year, a [...]]]></description>
			<content:encoded><![CDATA[<p style="TEXT-ALIGN: justify">Wow, wow, wow. The 4th <a title="dotnet Cologne" href="http://www.dotnet-cologne.de" target="_blank">dotnet Cologne</a> was a <strong>great event</strong> - once again! It was held at the <a title="KOMED" href="http://www.komed.de" target="_blank">KOMED</a> for the second time. It is a location quite good to reach by car or public transport. <strong>350 people</strong> met there to get information and ideas from speakers who are developers themselves. This year, a great number of the sessions dealt with the <strong>new Microsoft technologies and products</strong> such as Windows 8, WinRT, Visual Studio 2011, and SQL Server 2012. The other session topics were a mixture of <strong>agility</strong>, <strong>software technology</strong>, etc., as usual. The conference was organised in five tracks plus one additional Microsoft track. The latter comprised of sessions held by Microsoft Evangelists. Bad thing, you were spoilt for choice&#8230;</p>
<p style="TEXT-ALIGN: justify">It was nice to see that <a title="JetBrains" href="http://www.jetbrains.com" target="_blank">JetBrains</a> was present with a booth and two talks (on their products ReSharper and YouTrack). It was for the first time, so I went to their booth and had an interesting conversation. Anyway, talking to other participants and exhibitors is as much important as the conference sessions.</p>
<p style="TEXT-ALIGN: justify">My <strong>highlight session</strong> was <strong>Rainer Stropek</strong> talking about <strong>WinRT</strong>! It was a great technical deep dive. <strong>Johannes Hofmeister</strong> shared his thoughts about <strong>Empathic Code</strong> (i.e. how code should look like with respect to readability) with us which urged me to nod the whole time. Besides that, I was interested in <strong>CQRS</strong>, some <strong>C# goodies</strong>, <strong>Windows 8 for .NET developers</strong>, and in what is new in Visual Studio 2011. Again, it was hard to pick the best sessions of that broad offering.</p>
<p style="TEXT-ALIGN: justify">PS: The next dotnet Cologne is on 3 May 2013!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bollow.name/2012/05/the-dotnet-cologne-2012/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Googled by &#8217;scrum master coding ability&#8217;</title>
		<link>http://blog.bollow.name/2011/03/googled-by-scrum-master-coding-ability/</link>
		<comments>http://blog.bollow.name/2011/03/googled-by-scrum-master-coding-ability/#comments</comments>
		<pubDate>Wed, 09 Mar 2011 17:20:00 +0000</pubDate>
		<dc:creator>Erik Bollow</dc:creator>
		
		<category><![CDATA[Scrum]]></category>

		<category><![CDATA[Scrum Roles]]></category>

		<guid isPermaLink="false">http://blog.bollow.name/?p=410</guid>
		<description><![CDATA[Recently, my blog was found by a search engine using the search term &#8216;scrum master coding ability&#8216;. I think, somebody asked here for the programming skills of a Scrum Master. This makes me feel urged to a short reply.
So, should a Scrum Master be a skilled programmer? In my eyes: Definitely yes!
Why? Well, I think, [...]]]></description>
			<content:encoded><![CDATA[<p style="TEXT-ALIGN: justify">Recently, my blog was found by a search engine using the search term &#8216;<em>scrum master coding ability</em>&#8216;. I think, somebody asked here for the programming skills of a Scrum Master. This makes me feel urged to a short reply.</p>
<p style="TEXT-ALIGN: justify">So, should a <strong>Scrum Master</strong> be <strong>a skilled programmer</strong>? In my eyes: <strong>Definitely yes</strong>!</p>
<p style="TEXT-ALIGN: justify">Why? Well, I think, that is quite obvious. One aspect of the the Scrum Master role is his responsibility for the team. The Scrum Master has to improve the team. There are a lot of facets of what can be improved, one of these are programming skills for sure. Improving the programming skills lead to better code, to clean code in best case. If a <strong>Scrum Master finds his team</strong> (or a part of it) <strong>needing some help</strong> in that area, he has to <strong>coach it</strong>. First, this requires that a Scrum Master is able to recognise this. And second, the Scrum Master must be able to demonstrate to the team better techniques, best practices, and so on. (This is not meant as a prescript for the team. It is more a hint how things may go better. Still, the team can decide in what way it wants to work.) <strong>Therefore</strong>, to fulfil this part of his role, the <strong>Scrum Master must own programming skills</strong>!</p>
<p style="TEXT-ALIGN: justify">By the way: Meanwhile, it should be clear what <strong>my understanding</strong> of a <strong>skilled programmer</strong> (or better: <strong>skilled developer</strong>) is. It is not only the knowledge of one or more programming languages, frameworks, and development environments. It is rather the things, that CCD comprises, behaviour/test driven development, domain driven design, design patterns/principles, just to name a few&#8230; I think, both sorts of skill are requirements for a skilled programmer which make him a <em>skilled developer</em> then.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bollow.name/2011/03/googled-by-scrum-master-coding-ability/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Gandalf the White (in CCD terms)</title>
		<link>http://blog.bollow.name/2010/07/gandalf-the-white-in-ccd-terms/</link>
		<comments>http://blog.bollow.name/2010/07/gandalf-the-white-in-ccd-terms/#comments</comments>
		<pubDate>Thu, 01 Jul 2010 15:16:00 +0000</pubDate>
		<dc:creator>Erik Bollow</dc:creator>
		
		<category><![CDATA[Soft Skills]]></category>

		<category><![CDATA[Software Development]]></category>

		<category><![CDATA[Clean Code Developer]]></category>

		<guid isPermaLink="false">http://blog.bollow.name/?p=391</guid>
		<description><![CDATA[By reaching the final white CCD degree I put on my white wristband today. So, from now on I have to obey all the principles and practices that the previous CCD degrees comprise. That is quite challenging in my eyes, for I have to keep an eye on many aspects of the whole development process. [...]]]></description>
			<content:encoded><![CDATA[<p style="TEXT-ALIGN: justify">By reaching the final <a title="CCD white degree" href="http://clean-code-developer.de/Wei%C3%9Fer-Grad.ashx" target="_blank"><strong>white CCD degree</strong></a> I put on my white wristband today. So, from now on I have to <strong>obey all the principles and practices</strong> that the previous CCD degrees comprise. That is quite challenging in my eyes, for I have to keep an eye on <strong>many aspects of the whole development process</strong>. But it is worth it! It is obvious that my code has become cleaner since I read Uncle Bob&#8217;s <a title="My blog entry on the book Clean Code" href="http://blog.bollow.name/2009/01/clean-code-as-fundament-for-professional-software-development/" target="_blank"><em>Clean Code</em></a> which was the source for the CCD idea.</p>
<p style="TEXT-ALIGN: justify">Regarding the title of this post, it really feels like being on the developer&#8217;s next evolution level. Many things have become clearer to me. As I wrote before, most of the clean code ideas are not new, but they are brought together and verbalised in a quite concise way now.</p>
<p style="TEXT-ALIGN: justify">One of the main points of the CCD approach is the <strong>perpetual focusing on a subset of the CCD principles and practices</strong>, i.e. on the different CCD degrees. That means, although having reached the final degree and thus keeping in mind all principles and practices, one works on the &#8220;coloured&#8221; degrees with their specific focus again and again. This is because repetition is a good teacher. Additionally, the principles and practices are not fixed, they are changed or modified from time to time. For example, the degrees comprised rules at the beginning; these have merged into the principles and practices completely.</p>
<p style="TEXT-ALIGN: justify">Definitely, I will follow this track!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bollow.name/2010/07/gandalf-the-white-in-ccd-terms/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The dotnet Cologne 2010</title>
		<link>http://blog.bollow.name/2010/05/the-dotnet-cologne-2010/</link>
		<comments>http://blog.bollow.name/2010/05/the-dotnet-cologne-2010/#comments</comments>
		<pubDate>Fri, 28 May 2010 20:24:00 +0000</pubDate>
		<dc:creator>Erik Bollow</dc:creator>
		
		<category><![CDATA[Event]]></category>

		<category><![CDATA[.NET]]></category>

		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://blog.bollow.name/?p=354</guid>
		<description><![CDATA[What an event! Round about 300 people met at the Holiday Inn - Am Stadtwald, Cologne. And I am sure, none of them regrets his participance.
Some of the sponsors were present with exhibition stands. For me, that was informative and useful; e.g. I took home some information about a WPF control collection which could help [...]]]></description>
			<content:encoded><![CDATA[<p style="TEXT-ALIGN: justify"><strong>What an event!</strong> Round about <strong>300 people</strong> met at the Holiday Inn - Am Stadtwald, Cologne. And I am sure, none of them regrets his participance.</p>
<p style="TEXT-ALIGN: justify">Some of the sponsors were present with exhibition stands. For me, that was informative and useful; e.g. I took home some information about a WPF control collection which could help us to solve a problem we a currently facing in my company.</p>
<p style="TEXT-ALIGN: justify">I really like these <strong>community conferences</strong>. The <strong>information</strong> given there are <strong>absolutely useful for</strong> the <strong>daily work</strong> for the speakers take their topics &#8220;from life&#8221;. Additionally, it is nice to share experiences with other participants.</p>
<p style="TEXT-ALIGN: justify"><img class="alignright" src="http://blog.bollow.name/wp-content/uploads/2010/06/dotnetcologne2010.jpg" alt="dotnetCologne2010" width="265" height="202" align="right" />The <a title="dotnet Cologne" href="http://www.dotnet-cologne.de" target="_blank">dotnet Cologne</a> this year was held on the occasion of the launch of <strong>Visual Studio 2010</strong> and the <strong>.NET framework 4</strong>. So, the talks, which were organised in altogether 30 sessions and 4 tracks, more or less dealt with these two aspects. That was a quite condensed programme. Even the lunch break was used for sessions! I was this time mostly interested in parallel programming, code contracts, and some goodies of the new .NET framework.</p>
<p style="TEXT-ALIGN: justify">As last year, the <strong>sessions were great</strong> due to the <strong>high expertise</strong> of the speakers! The whole conference gave you the feeling of bringing you to the technological state of the art.</p>
<p style="TEXT-ALIGN: justify">What was the <strong>benefit at the end of the day</strong>? First contact to new technologies or a deeper insight into it, new programming techniques, hints for your daily work - just to name a few.</p>
<p style="TEXT-ALIGN: justify">Of course, there was a raffle at the end of the conference. And you may guess right that I was one of the numerous winners - this time, it was a book.</p>
<p style="TEXT-ALIGN: justify">Not only from my point of view, the <strong>conference</strong> was a <strong>great success</strong>. <strong>Thanks to the organisation team</strong> - absolutely well done (again)!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bollow.name/2010/05/the-dotnet-cologne-2010/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The CCD blues</title>
		<link>http://blog.bollow.name/2009/12/the-ccd-blues/</link>
		<comments>http://blog.bollow.name/2009/12/the-ccd-blues/#comments</comments>
		<pubDate>Wed, 02 Dec 2009 16:27:00 +0000</pubDate>
		<dc:creator>Erik Bollow</dc:creator>
		
		<category><![CDATA[Soft Skills]]></category>

		<category><![CDATA[Software Development]]></category>

		<category><![CDATA[Clean Code Developer]]></category>

		<guid isPermaLink="false">http://blog.bollow.name/?p=309</guid>
		<description><![CDATA[Today, I started to work on the blue CCD degree. It is the 5th and last sectional one.
Thus, I currently focus on these principles and practices:

Principles

Architecture and Implementation do not overlap
Implementation reflects Architecture
YAGNI (you ain&#8217;t gonna need it)


Practices

Continuous Integration (Setup &#38; Deployment)
Iterative Development
Component-oriented Development
Test First



Here, we find a perspective slightly apart from the mere coding. [...]]]></description>
			<content:encoded><![CDATA[<p style="TEXT-ALIGN: justify">Today, I started to work on the <strong><a title="CCD blue degree" href="http://www.clean-code-developer.de/Blauer-Grad.ashx" target="_blank">blue CCD degree</a></strong>. It is the 5th and last sectional one.</p>
<p style="TEXT-ALIGN: justify">Thus, I currently focus on these principles and practices:</p>
<ul style="TEXT-ALIGN: justify">
<li><strong>Principles</strong>
<ul>
<li>Architecture and Implementation do not overlap</li>
<li>Implementation reflects Architecture</li>
<li>YAGNI (you ain&#8217;t gonna need it)</li>
</ul>
</li>
<li><strong>Practices</strong>
<ul>
<li>Continuous Integration (Setup &amp; Deployment)</li>
<li>Iterative Development</li>
<li>Component-oriented Development</li>
<li>Test First</li>
</ul>
</li>
</ul>
<p style="TEXT-ALIGN: justify">Here, we find a <strong>perspective slightly apart from</strong> the <strong>mere coding</strong>. Principles and practices both point out in their own way the <strong>relation of design/architecture</strong> on the one hand <strong>and realisation/implementation</strong> (in terms of program code) on the other. Design/architecture may be regarded as being one abstraction level higher than realisation/implementation.</p>
<p style="TEXT-ALIGN: justify">The principles make you keep an eye on the <strong>distinction between architecture and realisation</strong>. In my point of view, at least the <em>component-oriented development</em> practice can be seen as a result of the <em>implementation reflects architecture</em> principle.</p>
<p style="TEXT-ALIGN: justify">Besides architecture, <strong>other aspects of the software development process</strong> are involved here. <em>Iterative development</em> and <em>test first</em> address <strong>specification</strong>: Tests can be regarded as some sort of specification; iterative development results from continuous specification refinement. Finally, continuous integrations reminds you to install an <strong>automated setup and deployment mechanism</strong> here.</p>
<p style="TEXT-ALIGN: justify">Just to mention it: The YAGNI principle is quite important, so it is repeated within the blue degree.</p>
<p style="TEXT-ALIGN: justify">In summary, this CCD degree <strong>focuses on the embedding of the coding part in other aspects of the software development process</strong> such as specification, deployment, and architecture.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bollow.name/2009/12/the-ccd-blues/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The particularity of the Product Owner</title>
		<link>http://blog.bollow.name/2009/08/the-particularity-of-the-product-owner/</link>
		<comments>http://blog.bollow.name/2009/08/the-particularity-of-the-product-owner/#comments</comments>
		<pubDate>Fri, 14 Aug 2009 17:55:00 +0000</pubDate>
		<dc:creator>Erik Bollow</dc:creator>
		
		<category><![CDATA[Scrum]]></category>

		<category><![CDATA[Scrum Roles]]></category>

		<guid isPermaLink="false">http://blog.bollow.name/?p=257</guid>
		<description><![CDATA[In Scrum, the three roles Product Owner, Scrum Master, and Team are all important in their own way. In few words: The Product Owner is responsible for the project roadmap, i.e. he has to decide which features from the Product Backlog should be realised next depending on his prioritisation. The most important jobs for the [...]]]></description>
			<content:encoded><![CDATA[<p style="TEXT-ALIGN: justify">In Scrum, the three roles Product Owner, Scrum Master, and Team are all important in their own way. In few words: The Product Owner is responsible for the project roadmap, i.e. he has to decide which features from the Product Backlog should be realised next depending on his prioritisation. The most important jobs for the Scrum Master are to keep the Scrum Process running, to protect the Team from impediments (or resolve them), and to act as a moderator. Last, but not least, the Team is responsible for the technical decisions and the accomplishment of the Sprint Goal.</p>
<p style="TEXT-ALIGN: justify">But there is one thing that makes the <strong>Product Owner role quite particular</strong> for a project: The <strong>quality of the Product Backlog Items</strong> is <strong>crucial for the project progress</strong>. When put into the Selected Product Backlog of a Sprint, these items have to be worked on by the Team during the Sprint.</p>
<p style="TEXT-ALIGN: justify">So, what <strong>happens if the items are of poor quality</strong>? And what do I mean by <em>poor quality</em>?</p>
<p style="TEXT-ALIGN: justify">The description of a Product Backlog Item of poor quality is incomplete, ambiguous, unclear in such a way that the Team is not enabled to satisfy the Product Owner&#8217;s idea regarding that item. If such an item is part of the Sprint, it causes - in best case - a lot of unnecessary communication during the Sprint which as a result decreases the Team Speed. But normally, the effect is even worse. If the <strong>Team does not hit the Product Owner&#8217;s need</strong>, the delivered piece of <strong>software will not work as desired</strong>. Agile Processes often measure the project progress in terms of software features. Using this definition of project progress, there is no or slow progress in case the implemented features do not work as expected by the Product Owner!</p>
<p style="TEXT-ALIGN: justify">To gain <strong>high quality Product Backlog Items</strong>, these are some <strong>basic demands on the Product Owner</strong>:</p>
<ul>
<li>The Product Owner <strong>has to know what he wants</strong>.</li>
<li>Yet more important: He <strong>must be able to tell the Team what he wants</strong>.</li>
<li>Most important: The Product Owner <strong>must have an urgent need for high quality Product Backlog Items</strong>. He must feel the necessity for items of high quality; he must recognise that poor quality items hinder the project progress. So, it is in the Product Owner&#8217;s interest to have good items and in some way he should feel responsible for that.</li>
</ul>
<p style="TEXT-ALIGN: justify">The Product Owner does not need to be left alone with the task of producing high quality Product Backlog Items. <strong>The Team can help</strong>: It just has to insist on good or exact descriptions. Moreover, the definition of acceptance criteria is crucial. The Team may work with the Product Owner on their respective formulation (at best during Estimation Meetings). The goal of Estimation Meetings is to produce high quality Product Backlog Items. Furthermore, the Team can improve its knowledge of the business domain which in turn leads to Product Backlog Items of better quality. A ubiquitous language is quite helpful here.</p>
<p style="TEXT-ALIGN: justify">So, for short and as a <strong>summary</strong>, in my eyes the Product Owner role is the most important one in Scrum with respect to the project progress. The Product Owner has to internalise the need for high quality Product Backlog Items. He must not be content with poor quality Items. He must recognise that the latter slow down the project progress. Together with the Team, the Product Owner can produce high quality Product Backlog Items.</p>
<p style="TEXT-ALIGN: justify">
]]></content:encoded>
			<wfw:commentRss>http://blog.bollow.name/2009/08/the-particularity-of-the-product-owner/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Green is my current CCD degree</title>
		<link>http://blog.bollow.name/2009/07/green-is-my-current-ccd-degree/</link>
		<comments>http://blog.bollow.name/2009/07/green-is-my-current-ccd-degree/#comments</comments>
		<pubDate>Fri, 03 Jul 2009 18:55:00 +0000</pubDate>
		<dc:creator>Erik Bollow</dc:creator>
		
		<category><![CDATA[Soft Skills]]></category>

		<category><![CDATA[Software Development]]></category>

		<category><![CDATA[Clean Code Developer]]></category>

		<guid isPermaLink="false">http://blog.bollow.name/?p=216</guid>
		<description><![CDATA[I have reached the upper half of the ladder. (I do not count the CCD black degree.)
Green is the 4th CCD degree and emphasises:

Principles

Open Closed Principle
Tell, don&#8217;t ask
Law of Demeter


Practices

Continuous Integration (Build &#38; Test)
Static Code Analysis (Metrics)
Inversion of Control Container
Share experiences



The principles focus proper class design and lead to loose coupling. The same is true [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">I have reached the upper half of the ladder. (I do not count the <a title="CCD black degree" href="http://www.clean-code-developer.de/Schwarzer-Grad.ashx" target="_blank">CCD black degree</a>.)</p>
<p style="text-align: justify;"><strong>Green</strong> is the <a title="CCD green degree" href="http://www.clean-code-developer.de/Grüner-Grad.ashx" target="_blank">4th CCD degree</a> and emphasises:</p>
<ul style="text-align: justify;">
<li><strong>Principles</strong>
<ul>
<li>Open Closed Principle</li>
<li>Tell, don&#8217;t ask</li>
<li>Law of Demeter</li>
</ul>
</li>
<li><strong>Practices</strong>
<ul>
<li>Continuous Integration (Build &amp; Test)</li>
<li>Static Code Analysis (Metrics)</li>
<li>Inversion of Control Container</li>
<li>Share experiences</li>
</ul>
</li>
</ul>
<p style="text-align: justify;">The principles focus <strong>proper class design</strong> and lead to <strong>loose coupling</strong>. The same is true when making use of a container. Continuous integration and metrics <strong>increase productivity</strong>, for they check your software quality automatically. Once more, there are no rules at this degree.</p>
<p style="text-align: justify;">I think I can rush through this degree, because I use these principles and practices (almost) every day. There is one exception: I have to get more interested in the code metrics, for I have really lost sight of that.</p>
<p style="text-align: justify;">Sharing experiences - that is what a blog is for, isn&#8217;t it?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bollow.name/2009/07/green-is-my-current-ccd-degree/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The dotnet Cologne 2009</title>
		<link>http://blog.bollow.name/2009/05/the-dotnet-cologne-2009/</link>
		<comments>http://blog.bollow.name/2009/05/the-dotnet-cologne-2009/#comments</comments>
		<pubDate>Fri, 15 May 2009 21:09:00 +0000</pubDate>
		<dc:creator>Erik Bollow</dc:creator>
		
		<category><![CDATA[Event]]></category>

		<category><![CDATA[.NET]]></category>

		<category><![CDATA[Silverlight]]></category>

		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://blog.bollow.name/?p=83</guid>
		<description><![CDATA[Today, I attended the dotnet Cologne 2009. It was a one-day  community conference (in German) on WPF and Silverlight.
About 180 people gathered at the Microsoft building in Cologne. They were presented a very good programme. The speakers were great, the topics of the talks were great, too. The talks were arranged on two tracks [...]]]></description>
			<content:encoded><![CDATA[<p style="TEXT-ALIGN: justify">Today, I attended the <a title="dotnet Cologne 2009" href="http://www.dotnet-cologne.de" target="_blank">dotnet Cologne 2009</a>. It was a one-day  <strong>community conference</strong> (in German) on <strong>WPF</strong> and <strong>Silverlight</strong>.</p>
<p style="TEXT-ALIGN: justify">About <strong>180 people</strong> gathered at the Microsoft building in Cologne. They were presented a very good programme. The speakers were great, the topics of the talks were great, too. The talks were arranged on two tracks most of the time.</p>
<p style="TEXT-ALIGN: justify">For me, it was a quite valuable event. I gained a lot of <strong>practical insights</strong> into WPF and Silverlight. In particular, the talk on the data binding mechanism in WPF attracted my special interest. As usual, the discussions with the participants during the breaks were interesting as well as inspiring.</p>
<p style="TEXT-ALIGN: justify">In addition, which made the day valuable for me in terms of money or development tools, I won a <a title="ComponentOne Studio Enterprise" href="http://www.componentone.com/SuperProducts/StudioEnterprise" target="_blank">ComponentOne Studio Enterprise</a> licence from the closing raffle. <img src='http://blog.bollow.name/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p style="TEXT-ALIGN: justify">Thanks to the organisers and I&#8217;m looking forward to the dotnet Cologne next year!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bollow.name/2009/05/the-dotnet-cologne-2009/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Now it&#8217;s CCD yellow degree</title>
		<link>http://blog.bollow.name/2009/05/now-its-ccd-yellow-degree/</link>
		<comments>http://blog.bollow.name/2009/05/now-its-ccd-yellow-degree/#comments</comments>
		<pubDate>Tue, 12 May 2009 18:15:00 +0000</pubDate>
		<dc:creator>Erik Bollow</dc:creator>
		
		<category><![CDATA[Soft Skills]]></category>

		<category><![CDATA[Software Development]]></category>

		<category><![CDATA[Clean Code Developer]]></category>

		<guid isPermaLink="false">http://blog.bollow.name/?p=89</guid>
		<description><![CDATA[I started to wear my yellow CCD wristband today. So my focus is on the principles and practices of the 3rd CCD degree currently.
The yellow degree emphasises:

Principles

Interface Segregation Principle
Dependency Inversion Principle
Dependency Injection (without Locator or Container)
Liskov Substitution Principle


Practices

Automated Unit Tests
Mockups
Code Coverage Analysis
Partiticipation in technical conferences and meetings



Here is my attempt of a very short subsumption [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">I started to wear my yellow <strong><a title="CCD" href="http://www.clean-code-developer.de" target="_blank">CCD</a></strong> wristband today. So my focus is on the principles and practices of the 3rd CCD degree currently.</p>
<p style="text-align: justify;">The <a title="CCD yellow degree" href="http://clean-code-developer.de/Gelber-Grad.ashx" target="_blank"><strong>yellow degree</strong></a> emphasises:</p>
<ul>
<li><strong>Principles</strong>
<ul>
<li>Interface Segregation Principle</li>
<li>Dependency Inversion Principle</li>
<li>Dependency Injection (without Locator or Container)</li>
<li>Liskov Substitution Principle</li>
</ul>
</li>
<li><strong>Practices</strong>
<ul>
<li>Automated Unit Tests</li>
<li>Mockups</li>
<li>Code Coverage Analysis</li>
<li>Partiticipation in technical conferences and meetings</li>
</ul>
</li>
</ul>
<p style="text-align: justify;">Here is my attempt of a very short subsumption as I did in my <a title="Now working on CCD orange degree" href="http://blog.bollow.name/2009/03/now-working-on-ccd-orange-degree" target="_blank">post on the previous degree</a>: The principles of the yellow degree support <strong>proper design and architecture</strong>, they <strong>enhance testability</strong> in the same way. This is required for the practices (except the participation in conferences), for these concentrate on <strong>(automated) code testing</strong>. (There are no <em>rules</em> here.)</p>
<p style="text-align: justify;"><a title="Stefan Lieser" href="http://www.lieser-online.de" target="_blank">Stefan Lieser</a> told me, that together with <a title="Ralf Westphal" href="http://www.ralfw.de" target="_blank">Ralf Westphal</a> he tried to build thematic bundles for each CCD degree. As I can see so far, they did a good job.</p>
<p style="text-align: justify;">Once more, I am aware of almost all the elements focussed at my current degree. In general, most of the principles, rules, and practices presented on CCD are well-known. The purpose of a CCD degree is to <strong>concentrate on the elements</strong> of that degree and to try not to violate them. By this, they hopefully <strong>will become second nature</strong> to you.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bollow.name/2009/05/now-its-ccd-yellow-degree/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Nice tool: NHibernate Profiler</title>
		<link>http://blog.bollow.name/2009/03/nice-tool-nhibernate-profiler/</link>
		<comments>http://blog.bollow.name/2009/03/nice-tool-nhibernate-profiler/#comments</comments>
		<pubDate>Mon, 30 Mar 2009 18:31:28 +0000</pubDate>
		<dc:creator>Erik Bollow</dc:creator>
		
		<category><![CDATA[Tools]]></category>

		<category><![CDATA[.NET]]></category>

		<category><![CDATA[NHibernate]]></category>

		<guid isPermaLink="false">http://blog.bollow.name/?p=79</guid>
		<description><![CDATA[A few weeks ago, we started to use a new tool by Ayende: The NHibernate Profiler (currently beta). It is a real-time debugger to debug and improve the usage of NHibernate in our modules.
The NHibernate Profiler provides a lot of valuable (technical and statistical) data on the current activity:

SQL statements per session with additional information: [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">A few weeks ago, we started to use a new tool by <a title="Ayende Rahien" href="http://ayende.com" target="_blank">Ayende</a>: The <a title="NHibernate Profiler website" href="http://nhprof.com" target="_blank">NHibernate Profiler</a> (currently beta). It is a real-time debugger to debug and improve the usage of NHibernate in our modules.</p>
<p style="text-align: justify;">The NHibernate Profiler provides a lot of valuable (technical and statistical) data on the current activity:</p>
<ul style="text-align: justify;">
<li>SQL statements per session with additional information: Details, stack trace, and alerts. Alerts are some warnings which Ayende explains on his website.</li>
<li>A session usage report: Number of entities loaded, entities loaded, duration, etc.</li>
<li>A session analysis, e.g. <em>View by Method</em> which displays all SQL statements generated by a particular method of a module.</li>
<li>Statistics not only on the sessions, but also on the session factory.</li>
</ul>
<p style="text-align: justify;">We have used it several times to see, what our modules using NHibernate internally do. In particular, the alert information have been extremely valuable for us.</p>
<p style="text-align: justify;">Obviously, there are still some minor bugs in the beta version of the tool. For example, we get a <em>Use of implicit transactions is discouraged</em> alert although we only have explicit transactions.</p>
<h3>Usage</h3>
<p style="text-align: justify;">In order to debug an application, the client for monitoring the activity has to be started. This client provides all the information explained above.</p>
<p style="text-align: justify;">The best way to make your application communicate with the client is to <strong>use log4net</strong>, for the <strong>application</strong> (and the solution/project) <strong>does not need to be changed</strong> in any way in this case (provided that you already use log4net in your application). Just <strong>add an appender</strong> in the <strong>log4net.config</strong> file and make the required loggers <strong>use that appender</strong>.</p>
<p style="text-align: justify;">Example:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;appender</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;NHibernate.Profiler&quot;</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;HibernatingRhinos.NHibernate.Profiler.Appender.NHibernateProfilerAppender, HibernatingRhinos.NHibernate.Profiler.Appender&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;sink</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;tcp://localhost:22897/NHibernateAppenderLoggingSink&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/appender<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;logger</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;NHibernate.Transaction.AdoTransaction&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;level</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;DEBUG&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;appender-ref</span> <span style="color: #000066;">ref</span>=<span style="color: #ff0000;">&quot;NHibernate.Profiler&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/logger<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;logger</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;NHibernate.Loader.Loader&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;level</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;DEBUG&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;appender-ref</span> <span style="color: #000066;">ref</span>=<span style="color: #ff0000;">&quot;NHibernate.Profiler&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/logger<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;logger</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;NHibernate.SQL&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;level</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;DEBUG&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;appender-ref</span> <span style="color: #000066;">ref</span>=<span style="color: #ff0000;">&quot;NHibernate.Profiler&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/logger<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;logger</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;NHibernate.Impl.SessionImpl&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;level</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;DEBUG&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;appender-ref</span> <span style="color: #000066;">ref</span>=<span style="color: #ff0000;">&quot;NHibernate.Profiler&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/logger<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;logger</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;NHibernate.Persister.Entity.AbstractEntityPersister&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;level</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;DEBUG&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;appender-ref</span> <span style="color: #000066;">ref</span>=<span style="color: #ff0000;">&quot;NHibernate.Profiler&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/logger<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p style="text-align: justify;">As this example shows, the profiler appender class has to be referenced and a TCP sink for the communication with the client has to be declared. The defined loggers redirect the  required information to the profiler. Finally, the DLL containing the profiler appender class has to be stored in the application directory. That&#8217;s all. When running the application, the NHibernate activities are monitored by the client.</p>
<p style="text-align: justify;">You can (and due to the licence, you probably must) ship your application without the profiler appender class DLL. There is no need to modify the log4net.config file, though. The profiler appender does not have to be removed. log4net just complains (within its log file), that the particular appender could not be instantiated (because it was not found). If you do not want that message in the log file, you have to ship your application with a log4net.config which does not contain the profiler appender.</p>
<p style="text-align: justify;"><strong>Another way</strong> to use the profiler is to reference the HibernatingRhinos.NHibernate.Profiler.Appender.dll and make the following call within the application startup:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">HibernatingRhinos.<span style="color: #0000FF;">NHibernate</span>.<span style="color: #0000FF;">Profiler</span>.<span style="color: #0000FF;">Appender</span>.<span style="color: #0000FF;">NHibernateProfiler</span>.<span style="color: #0000FF;">Initialize</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

<p style="text-align: justify;">But as this means a change of the application code and requires a reference within the project, I do prefer the first kind of usage. Additionally, the application cannot be shipped when modified in this way. (Remember, you may not ship the profiler appender class DLL with your application.)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bollow.name/2009/03/nice-tool-nhibernate-profiler/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>

