<?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"
	>

<channel>
	<title>Vladan.Strigo.NET</title>
	<atom:link href="http://vladan.strigo.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://vladan.strigo.net</link>
	<description>Being a craftsman</description>
	<pubDate>Tue, 21 Oct 2008 18:30:46 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>[CodeCamp] Once again it was successful!</title>
		<link>http://vladan.strigo.net/2008/10/21/codecamp-once-again-it-was-successful/</link>
		<comments>http://vladan.strigo.net/2008/10/21/codecamp-once-again-it-was-successful/#comments</comments>
		<pubDate>Tue, 21 Oct 2008 18:14:15 +0000</pubDate>
		<dc:creator>Vladan Strigo</dc:creator>
		
		<category><![CDATA[CodeCamp]]></category>

		<guid isPermaLink="false">http://vladan.strigo.net/?p=396</guid>
		<description><![CDATA[Another CodeCamp, another success!
Again this year we&#8217;ve organized a great event with the help of our speakers and contributors. The fact that this time around it was not a full house (we had only up to 30 visitors) gave us a great chance to intensify the discussions and conversations which turned up to be great.
&#160;
The [...]]]></description>
			<content:encoded><![CDATA[<p>Another CodeCamp, another success!</p>
<p>Again this year we&rsquo;ve organized a great event with the help of our speakers and contributors. The fact that this time around it was not a full house (we had only up to 30 visitors) gave us a great chance to intensify the discussions and conversations which turned up to be great.</p>
<p>&nbsp;</p>
<h3>The day</h3>
<p>We&rsquo;ve started on Saturday at about 09.30 and were finished with sessions by 19 hours (imagine that, almost 10 hours of technical talks and discussions!) after which we&rsquo;ve closed the event with a raffle in which we gave 11 prizes to attendees (almost every second attendee or presenter got a book or a license for some great product).</p>
<p>&nbsp;</p>
<h3>Attendees</h3>
<p>Over the course of the day we had some 30 attendees and as the day were ending that number varied on some ~25 people. At first we were a little bit disappointed that about 50 people registered and only a little bit more than half showed up, but as the day progressed this turned up to give us a better chance to engage in discussions and talks. </p>
<p>From the demographic point of view, this year all speakers were from different parts of Croatia, and we had members of the community come in mostly from Zagreb, Osijek and Split.</p>
<p>&nbsp;</p>
<h3>Contributors</h3>
<p>This year our contributor list has grown even larger, these are all the companies without which help we probably could not organize this good event. </p>
<p>&nbsp;</p>
<p>We had divided the contributors in three categories, <u>Gold</u>, <u>Silver</u> and <u>Bronze</u> or <u>Swag</u> ones: </p>
<p>Gold contributors being Microsoft and INETA </p>
<p>Silver contributors being RedGate </p>
<p>Bronze or Swag ones Telerik, DevExpress, Ekobit and Perpetuum Mobile, Microsoft Innovation Center Vara??din  </p>
<p>&nbsp;</p>
<p>Because of the great help from our contributors, we were able to organize a big raffle at the end of the event, handling out 1 SQL Compare license donated by RedGate, 1 voucher for any Microsoft Innovation Center Vara??din course which lasts 1 or 2 days, 2 bundle developer licenses of RadControls for ASP.NET AJAX + WinForms + Telerik Reporting donated by Telerik, 2 licenses for CodeRush + Refactor Pro donated by Devexpress, 2 licenses for TeamCompanion for Outlook and 1 one license for Test Manger for Team edition for Software Developers donated by Ekobit and 2 licenses for Report Sharp Shooter donated by Perpetuum Software.  <br />
&nbsp;</p>
<h3>People</h3>
<p>I would like to thank the people who have helped me organize this with their efforts: </p>
<p>From the community: Tomislav Bronzin </p>
<p>From Microsoft: Marin Mami??, Marko Drenova??ki and MIC team <img src='http://vladan.strigo.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>And our speakers: Tomislav Bronzin, Andreaj Radinger, Dean Vitner, Josip &Scaron;aban, Marko ??ulo and Bernard Kati??  </p>
<p>
Thank you all, without you &ndash; it could not have been done!</p>
<p>&nbsp;</p>
<h3>Recordings and materials from the sessions</h3>
<p>With the help of Marko Drenova??ki and Microsoft Innovation Center Team we were able to organize the recording of sessions with Live Meeting. We have videos of each session and when we get the materials from the speakers we will publish it live on our website and thus making It possible to re-view the sessions again or listen to them if you&rsquo;ve missed them (like I did as I was running around taking care of operational things&hellip; can&rsquo;t wait to see the videos)</p>
<p>&nbsp;</p>
<h3>Pictures</h3>
<p>Pictures are already available at: <br />
<a href="http://www.flickr.com/photos/vladanstrigo/sets/72157608227020050/" target="_blank">http://www.flickr.com/photos/vladanstrigo/sets/72157608227020050/</a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Final thoughts&hellip; I am very proud I was a part of this; hope you&rsquo;ve had a great time like I did&hellip; see you next year!</p>
<p>Cheers!</p>]]></content:encoded>
			<wfw:commentRss>http://vladan.strigo.net/2008/10/21/codecamp-once-again-it-was-successful/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Why is buggy software not good? Even when clients pays for bugs?</title>
		<link>http://vladan.strigo.net/2008/06/12/why-is-buggy-software-not-good-even-when-clients-pays-for-bugs/</link>
		<comments>http://vladan.strigo.net/2008/06/12/why-is-buggy-software-not-good-even-when-clients-pays-for-bugs/#comments</comments>
		<pubDate>Thu, 12 Jun 2008 12:14:30 +0000</pubDate>
		<dc:creator>Vladan Strigo</dc:creator>
		
		<category><![CDATA[Project management]]></category>

		<category><![CDATA[Worst practices]]></category>

		<guid isPermaLink="false">http://vladan.strigo.net/?p=394</guid>
		<description><![CDATA[This is somewhat a rant.
I hate managers which cannot see the big picture and then go for the quick wins. I hate them!
I had a situation a few months ago where a manager told me that buggy software is not as bad if the client pays for the bugs. At that time (well more in [...]]]></description>
			<content:encoded><![CDATA[<p>This is somewhat a rant.</p>
<p>I hate managers which cannot see the big picture and then go for the quick wins. I hate them!</p>
<p>I had a situation a few months ago where a manager told me that buggy software is not as bad if the client pays for the bugs. At that time (well more in that situation) I was caught of guard and couldn&#8217;t find precise arguments which are idiot proof and could explain why I felt it was such a bad way thinking about it.</p>
<p>Today I got once more in the situation where this bit me in the tale because another developer made this kind of application and my developer now is fixing it.</p>
<p>Let me explain.</p>
<p>A year ago a colleague made an application for the client which we knew at the time was built in a lets-be-politically-correct-term: <u>not so good</u>.</p>
<p>A new colleague came to our company and had to take over maintenence of that application because the former colleague moved on to other projects.</p>
<p>Result?</p>
<p>That colleague is fixing bugs (ok there were changes also) the complete past few months.</p>
<p>Consequence?</p>
<ul>
<li>Client is very unhappy and is thinking of leaving us so we are rushing solving bugs (but as the warranty period expired they are paying for them)</li>
<li>The new colleague is not happy because he is knee deep in dog shit</li>
<li>We as a department cannot move on because we are constantly waiting for this one colleague to be free so we can organize a department internal education or something (it doesn&#8217;t make sense to exclude the guy)</li>
<li>New colleague as a developer cannot move on because he is in dog shit</li>
<li>We cannot take on new projects and thus make better earning because we are one resource shorter then we would normally be</li>
<li>&#8230;.</li>
</ul>
<p>I could go on.</p>
<p>Point is&#8230; it is a BAD thing to deliver buggy software. Even if the client pays for the bugs! B A D!</p>
<p>&nbsp;</p>]]></content:encoded>
			<wfw:commentRss>http://vladan.strigo.net/2008/06/12/why-is-buggy-software-not-good-even-when-clients-pays-for-bugs/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Convert non-generic type to generic type in c#</title>
		<link>http://vladan.strigo.net/2008/06/12/convert-non-generic-type-to-generic-type-in-c/</link>
		<comments>http://vladan.strigo.net/2008/06/12/convert-non-generic-type-to-generic-type-in-c/#comments</comments>
		<pubDate>Thu, 12 Jun 2008 08:45:06 +0000</pubDate>
		<dc:creator>Vladan Strigo</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://vladan.strigo.net/?p=393</guid>
		<description><![CDATA[Just today when mussing with List controls and their SelectedItems property came to a point where I needed to convert their SelectedItems property to a generic list (because god knows why it is non-generic).
I needed this because I wanted to query over the selected items and LINQ doesn&#8217;t work with non-generic lists so&#8230;
Turns out the [...]]]></description>
			<content:encoded><![CDATA[<p>Just today when mussing with List controls and their SelectedItems property came to a point where I needed to convert their SelectedItems property to a generic list (because god knows why it is non-generic).</p>
<p>I needed this because I wanted to query over the selected items and LINQ doesn&#8217;t work with non-generic lists so&#8230;</p>
<p>Turns out the solution is quite simple:</p>
<p><em>IEnumerable&lt;string&gt; genericizedItems = itemsListBox.SelectedItems.OfType&lt;string&gt;();</em></p>
<p>
Works like a charm, hope this helps!</p>
<p>Cheers!</p>]]></content:encoded>
			<wfw:commentRss>http://vladan.strigo.net/2008/06/12/convert-non-generic-type-to-generic-type-in-c/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Actively enforcing the aggregate root boundaries by setting the child entities constructor as Internal</title>
		<link>http://vladan.strigo.net/2008/05/19/actively-enforcing-the-aggregate-root-boundaries-by-setting-the-child-entities-constructor-as-internal/</link>
		<comments>http://vladan.strigo.net/2008/05/19/actively-enforcing-the-aggregate-root-boundaries-by-setting-the-child-entities-constructor-as-internal/#comments</comments>
		<pubDate>Mon, 19 May 2008 08:12:26 +0000</pubDate>
		<dc:creator>Vladan Strigo</dc:creator>
		
		<category><![CDATA[Akua.Framework]]></category>

		<category><![CDATA[C#]]></category>

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

		<guid isPermaLink="false">http://vladan.strigo.net/2008/05/19/actively-enforcing-the-aggregate-root-boundaries-by-setting-the-child-entities-constructor-as-internal/</guid>
		<description><![CDATA[Some more Aggregate Root thinking&#8230;
If a child entity in an Aggregate Root should not be accessible outside the boundaries of a Root, why should you be able to instantiate it?
If I mark their constructor with internal, it should be only instantiated from a Root (root should know how to instantiate it), this would also allow [...]]]></description>
			<content:encoded><![CDATA[<p>Some more Aggregate Root thinking&#8230;</p>
<p>If a child entity in an Aggregate Root should not be accessible outside the boundaries of a Root, why should you be able to instantiate it?</p>
<p>If I mark their constructor with internal, it should be only instantiated from a Root (root should know how to instantiate it), this would also allow us to play with them only within the Model project, but others should get it via Root (like Services, Client applications and others).</p>
<p>Example&#8230;</p>
<p><em>public class Car : EntityBase&lt;int&gt;, IAggregateRoot<br />
{<br />
?????? public Car()<br />
?????? {}</em></p>
<p><em>?????? public Wheel RightWheel<br />
?????? {<br />
?????????????? get<br />
?????????????? {<br />
?????????????????????? return new Wheel(&#8221;Right&#8221;);<br />
?????????????? }<br />
?????? }<br />
}</em></p>
<p>and <em>Wheel</em> (child entity):</p>
<p><em>public class Wheel : EntityBase&lt;int&gt;<br />
{<br />
?????? private string _wheelType;</em></p>
<p><em>?????? internal Wheel(string wheelType)<br />
?????? {<br />
?????????????? _wheelType = wheelType;<br />
?????? }<br />
}</em></p>
<p>Again&#8230; my insecurities and concerns come from previous reasons as with the previous post:</p>
<p>Pros:</p>
<ul>
<li>Explicitness</li>
<li>Active enforcing of rules</li>
</ul>
<p>Cons:</p>
<ul>
<li>Cluttering the design</li>
<li>Running with scissors&#8230; we like running with scissors, although we probably won&#8217;t fall on them</li>
</ul>
<p>What do you think?</p>
<p>I am having double thoughts.</p>]]></content:encoded>
			<wfw:commentRss>http://vladan.strigo.net/2008/05/19/actively-enforcing-the-aggregate-root-boundaries-by-setting-the-child-entities-constructor-as-internal/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Actively enforcing Aggregate Roots 1&#8230;1 relation to Repositories</title>
		<link>http://vladan.strigo.net/2008/05/19/actively-enforcing-aggregate-roots-11-relation-to-repositories/</link>
		<comments>http://vladan.strigo.net/2008/05/19/actively-enforcing-aggregate-roots-11-relation-to-repositories/#comments</comments>
		<pubDate>Mon, 19 May 2008 07:59:05 +0000</pubDate>
		<dc:creator>Vladan Strigo</dc:creator>
		
		<category><![CDATA[Akua.Framework]]></category>

		<category><![CDATA[C#]]></category>

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

		<guid isPermaLink="false">http://vladan.strigo.net/2008/05/19/actively-enforcing-aggregate-roots-11-relation-to-repositories/</guid>
		<description><![CDATA[I am toying with an idea.
One of the pillars of DDD is the pattern of Aggregate Roots and their boundaries. Also the fact that our Repositories should only work against Aggregate Roots and not Entities themselves.
As I like explicitly to enforce my rules I am toying with an idea of a marker interface IAggregateRoot which [...]]]></description>
			<content:encoded><![CDATA[<p>I am toying with an idea.</p>
<p>One of the pillars of DDD is the pattern of Aggregate Roots and their boundaries. Also the fact that our Repositories should only work against Aggregate Roots and not Entities themselves.</p>
<p>As I like explicitly to enforce my rules I am toying with an idea of a marker interface <strong><em>IAggregateRoot</em></strong> which would not contain ANY elements, just exist.</p>
<p>What I could do then is put a Generics constraint on my Repository like:</p>
<p><em>IRepository&lt;EntityT, IdentifierT&gt; where EntityT : EntityBase&lt;IdentifierT&gt;, <strong>IAggregateRoot</strong></em></p>
<p>Then all my entities which are Aggregate Roots should be *marked* as one:</p>
<p><em>Category : Entity&lt;int&gt;, <strong>IAggregateRoot</strong></em></p>
<p>Now&#8230; I both like and dislike this, I can&#8217;t put my mind what is better yet <img src='http://vladan.strigo.net/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p>Pros:</p>
<ul>
<li>Allows us to actively enforce DDD rules and make the users of this framework think about what their roots are and not generalize everything</li>
<li>Nice explicitness of knowing exactly which entity is a Root and which is not</li>
<li>In any future gives me a leverage to find out if an Entity is a Root or not if for any reason I need to get this info</li>
</ul>
<p>Cons:</p>
<ul>
<li>Design noise, in it&#8217;s sense it doesn&#8217;t bring anything concrete to the table, forcing my users to do this one extra step (mark an Entity) and also clutter the design doesn&#8217;t sound too thrilling</li>
<li>What would be a default setup for an entity? Probably that it is an Aggregate root (think code generating your initial model from database or any other resource). Doesn&#8217;t this then go against it? Everything is a Root. Also knowing the users, the simplest thing will be to mark them all with <strong><em>IAggregateRoot</em></strong><br />
Uhhh&#8230; Tough descision.</li>
</ul>
<p>What do you think?</p>]]></content:encoded>
			<wfw:commentRss>http://vladan.strigo.net/2008/05/19/actively-enforcing-aggregate-roots-11-relation-to-repositories/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Linq Expressions for creating objects</title>
		<link>http://vladan.strigo.net/2008/05/17/linq-expressions-for-creating-objects/</link>
		<comments>http://vladan.strigo.net/2008/05/17/linq-expressions-for-creating-objects/#comments</comments>
		<pubDate>Sat, 17 May 2008 20:12:37 +0000</pubDate>
		<dc:creator>Vladan Strigo</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[Akua.Framework]]></category>

		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://vladan.strigo.net/2008/05/17/linq-expressions-for-creating-objects/</guid>
		<description><![CDATA[As you might know I am building my own Repositories for NHibernate as a part of my upcoming &#8220;glue&#8221; framework.
A part of that implementation are various transformers and default transformation strategies for things like tuple to object transformations (dto) and data reader to object transformations (dto)&#8230; the first is used when using projections, the later [...]]]></description>
			<content:encoded><![CDATA[<p>As you might know I am building my own Repositories for NHibernate as a part of my upcoming &#8220;glue&#8221; framework.</p>
<p>A part of that implementation are various transformers and default transformation strategies for things like tuple to object transformations (dto) and data reader to object transformations (dto)&#8230; the first is used when using projections, the later when calling stored procedures.</p>
<p>I&#8217;ve choosen to do this via Linq Expression Trees because I&#8217;ve been frankly scared to use the plain DynamicMethod till now, and as Expression trees do generate them in the background it seemed like a great way to do runtime code generation.</p>
<p>Probably in the future I will write some more detailed posts on the implementation itself and more on the reasons, but for starters here are a few links which will help to you give an insight into the power and how LINQ can be used waaaay beyond querying:</p>
<p><a target="_blank" href="http://rogeralsing.com/2008/02/28/linq-expressions-creating-objects/" title="http://rogeralsing.com/2008/02/28/linq-expressions-creating-objects/">http://rogeralsing.com/2008/02/28/linq-expressions-creating-objects/</a><br />
<a target="_blank" href="http://blogs.msdn.com/meek/archive/2008/04/25/using-linq-expressions-to-generate-dynamic-methods.aspx" title="http://blogs.msdn.com/meek/archive/2008/04/25/using-linq-expressions-to-generate-dynamic-methods.aspx">http://blogs.msdn.com/meek/archive/2008/04/25/using-linq-expressions-to-generate-dynamic-methods.aspx</a><br />
<a target="_blank" href="http://blogs.msdn.com/meek/archive/2008/05/13/using-linq-expressions-to-generate-dynamic-methods-ii.aspx" title="http://blogs.msdn.com/meek/archive/2008/05/13/using-linq-expressions-to-generate-dynamic-methods-ii.aspx">http://blogs.msdn.com/meek/archive/2008/05/13/using-linq-expressions-to-generate-dynamic-methods-ii.aspx</a></p>
<p>Enjoy!</p>]]></content:encoded>
			<wfw:commentRss>http://vladan.strigo.net/2008/05/17/linq-expressions-for-creating-objects/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Testing methods which do yield return (deferred execution problem)</title>
		<link>http://vladan.strigo.net/2008/05/14/testing-methods-which-do-yield-return-deferred-execution-problem/</link>
		<comments>http://vladan.strigo.net/2008/05/14/testing-methods-which-do-yield-return-deferred-execution-problem/#comments</comments>
		<pubDate>Wed, 14 May 2008 21:48:51 +0000</pubDate>
		<dc:creator>Vladan Strigo</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[Best practices]]></category>

		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://vladan.strigo.net/2008/05/14/testing-methods-which-do-yield-return-deferred-execution-problem/</guid>
		<description><![CDATA[Had a funny problem today. I&#8217;ve written a spec (tests) for a code that should have iterated over a collection of items and with some conditions do a yield return for each of them.
In it&#8217;s form, its a very simple piece of code, but somehow I could not for the light of me get the [...]]]></description>
			<content:encoded><![CDATA[<p>Had a funny problem today. I&#8217;ve written a spec (tests) for a code that should have iterated over a collection of items and with some conditions do a yield return for each of them.</p>
<p>In it&#8217;s form, its a very simple piece of code, but somehow I could not for the light of me get the spec (test) to pass. It always seemed that the code didn&#8217;t even execute&#8230; I kept thinking to myself, WTF? This code is simple, and it does what it needs to!? Why doesn&#8217;t it pass? (as you can imagine I got a bit frustrated).</p>
<p>Then I remembered one *small* bit&#8230; yield return coupled with IEnumerable provides the deferred execution for my code, so this example:</p>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="174" alt="image" src="http://vladan.strigo.net/wp-content/postfiles/2008/05/windowslivewritertestingmethodswhichdoyieldreturndeferred-14effimage-9.png" width="437" border="0"/></p>
<p>When called like this in my spec (test):</p>
<p><img height="84" alt="image" src="http://vladan.strigo.net/wp-content/postfiles/2008/05/windowslivewritertestingmethodswhichdoyieldreturndeferred-14effimage-12.png" width="317" border="0"/>&nbsp; </p>
<p>Actually does nothing at all, so my specs would fail&#8230; it was really frustrating.</p>
<p>What can be done?</p>
<p>Actually, three things:</p>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="222" alt="image" src="http://vladan.strigo.net/wp-content/postfiles/2008/05/windowslivewritertestingmethodswhichdoyieldreturndeferred-14effimage-15.png" width="573" border="0"/></p>
<p>So:</p>
<p>s1) We are enumerating like we are expected to. This will execute the functionality</p>
<p>s2) We are manually assembling the enumerator and asking him to call our functionality </p>
<p>s3) We are feeding the deferred execution functionality to a new List which internally then executes it</p>
<p><br/>I personally prefer and use option 3 now.</p>
<p>Hope this helps someone, it sure would me if I&#8217;ve remembered it out earlier.</p>
<p>Cheers!</p>]]></content:encoded>
			<wfw:commentRss>http://vladan.strigo.net/2008/05/14/testing-methods-which-do-yield-return-deferred-execution-problem/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Prefer Early exit strategies over nested if&#8217;s and conditionals</title>
		<link>http://vladan.strigo.net/2008/05/14/prefer-early-exit-strategies-over-nested-ifs-and-conditionals/</link>
		<comments>http://vladan.strigo.net/2008/05/14/prefer-early-exit-strategies-over-nested-ifs-and-conditionals/#comments</comments>
		<pubDate>Wed, 14 May 2008 21:27:54 +0000</pubDate>
		<dc:creator>Vladan Strigo</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[Best practices]]></category>

		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://vladan.strigo.net/2008/05/14/prefer-early-exit-strategies-over-nested-ifs-and-conditionals/</guid>
		<description><![CDATA[So, quite a simple rule&#8230; someone likes it, someone doesn&#8217;t.
I&#8217;ve seen over and over these kinds of examples:

This is probably to simple of an example, but should prove a point.
To some extended, this code (because it&#8217;s stupid and simple) could be converted to:

But what I would advise you is that instead you fail early with [...]]]></description>
			<content:encoded><![CDATA[<p>So, quite a simple rule&#8230; someone likes it, someone doesn&#8217;t.</p>
<p>I&#8217;ve seen over and over these kinds of examples:</p>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="247" alt="image" src="http://vladan.strigo.net/wp-content/postfiles/2008/05/windowslivewriterpreferearlyexitstrategiesovernestedifsan-1480fimage-31.png" width="600" border="0"/></p>
<p>This is probably to simple of an example, but should prove a point.</p>
<p>To some extended, this code (because it&#8217;s stupid and simple) could be converted to:</p>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="111" alt="image" src="http://vladan.strigo.net/wp-content/postfiles/2008/05/windowslivewriterpreferearlyexitstrategiesovernestedifsan-1480fimage-6.png" width="600" border="0"/></p>
<p>But what I would advise you is that instead you fail early with the logic instead of branching and complicating the code like above (keep in mind once more that that above is too simple of an example)</p>
<p>How would you fail early in this case?</p>
<p>&nbsp;<img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="157" alt="image" src="http://vladan.strigo.net/wp-content/postfiles/2008/05/windowslivewriterpreferearlyexitstrategiesovernestedifsan-1480fimage-12.png" width="600" border="0"/></p>
<p><br/>What do you think? How do you do it? </p>
<p>Cheers!</p>]]></content:encoded>
			<wfw:commentRss>http://vladan.strigo.net/2008/05/14/prefer-early-exit-strategies-over-nested-ifs-and-conditionals/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Some interesting XPath queries</title>
		<link>http://vladan.strigo.net/2008/04/23/some-interesting-xpath-queries/</link>
		<comments>http://vladan.strigo.net/2008/04/23/some-interesting-xpath-queries/#comments</comments>
		<pubDate>Wed, 23 Apr 2008 20:56:23 +0000</pubDate>
		<dc:creator>Vladan Strigo</dc:creator>
		
		<category><![CDATA[XML]]></category>

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

		<guid isPermaLink="false">http://vladan.strigo.net/2008/04/23/some-interesting-xpath-queries/</guid>
		<description><![CDATA[I heard from people that XPath is not that easy (although I am having trouble believing it&#8230; it seems easy enough), so when I wrote a couple of XPath queries last time I chose to blog them to make it easy for some of those people reading this blog.
Here are a couple:
How would you select [...]]]></description>
			<content:encoded><![CDATA[<p>I heard from people that XPath is not that easy (although I am having trouble believing it&#8230; it seems easy enough), so when I wrote a couple of XPath queries last time I chose to blog them to make it easy for some of those people reading this blog.</p>
<p>Here are a couple:</p>
<p><u><em>How would you select a parent based on a value of it&#8217;s child?</em></u></p>
<p>XML:</p>
<p><em>&lt;a&gt;<br/>&nbsp;&nbsp;&nbsp; &lt;b&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;c value=&#8221;1&#8243;&gt;&lt;/c&gt;<br/>&nbsp;&nbsp;&nbsp; &lt;/b&gt;<br/>&nbsp;&nbsp;&nbsp; &lt;b&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;c value=&#8221;2&#8243;&gt;&lt;/c&gt;<br/>&nbsp;&nbsp;&nbsp; &lt;/b&gt;<br/>&nbsp;&nbsp;&nbsp; &lt;b&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;c value=&#8221;3&#8243;&gt;&lt;/c&gt;<br/>&nbsp;&nbsp;&nbsp; &lt;/b&gt;<br/>&lt;/a&gt;</em></p>
<p>XPath:</p>
<p><em>//b[descendant::c[@value='3']]</em></p>
<p>It selects a &#8220;b&#8221; node based on an attribute value on it&#8217;s child &#8220;c&#8221; node</p>
<p><u><em>How would you select a node which has exactly one child node with a given attribute value?</em></u></p>
<p>XML:</p>
<p><em>&lt;a&gt;<br/>&nbsp;&nbsp;&nbsp; &lt;b&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;c value=&#8221;a&#8221;&gt;1&lt;/c&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;c value=&#8221;a&#8221;&gt;2&lt;/c&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;c value=&#8221;v&#8221;&gt;2&lt;/c&gt;<br/>&nbsp;&nbsp;&nbsp; &lt;/b&gt;<br/>&nbsp;&nbsp;&nbsp; &lt;b&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;c value=&#8221;c&#8221;&gt;2&lt;/c&gt;<br/>&nbsp;&nbsp;&nbsp; &lt;/b&gt;<br/>&lt;/a&gt;</em>
<p>XPath:
<p><em>//b[count(c[@value='v']) = 1]</em>
<p>This selects all &#8220;b&#8221; nodes which have exactly one &#8220;c&#8221; node with an attribute &#8220;value&#8221; equal to &#8220;v&#8221;
<p>&nbsp;
<p>Hope this helps someone!
<p>Cheers!</p>]]></content:encoded>
			<wfw:commentRss>http://vladan.strigo.net/2008/04/23/some-interesting-xpath-queries/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Things I mind about Reporting Services in SQL 2005</title>
		<link>http://vladan.strigo.net/2008/04/23/things-i-mind-about-reporting-services-in-sql-2005/</link>
		<comments>http://vladan.strigo.net/2008/04/23/things-i-mind-about-reporting-services-in-sql-2005/#comments</comments>
		<pubDate>Wed, 23 Apr 2008 20:26:43 +0000</pubDate>
		<dc:creator>Vladan Strigo</dc:creator>
		
		<category><![CDATA[SQL]]></category>

		<category><![CDATA[SQL Reporting Services]]></category>

		<guid isPermaLink="false">http://vladan.strigo.net/2008/04/23/things-i-mind-about-reporting-services-in-sql-2005/</guid>
		<description><![CDATA[On the MVP summit we had a last day sessions (amongst others) about the new Reporting Services, and while I can&#8217;t tell you the details (don&#8217;t know what part is NDA and what is not) I can tell you that the guys are going in the right direction and really trying to fix some of [...]]]></description>
			<content:encoded><![CDATA[<p>On the MVP summit we had a last day sessions (amongst others) about the new Reporting Services, and while I can&#8217;t tell you the details (don&#8217;t know what part is NDA and what is not) I can tell you that the guys are going in the right direction and really trying to fix some of the problematic things in the current version of Reporting Services.</p>
<p>On my way home I thought some more what I minded (=missed) about Reporting, so this blog post is an attempt to mention a couple of these things and hopefully someone from MS will read this.</p>
<p>Ok, so in no particular order:</p>
<ol>
<li>Shared library within a reporting project - on each reporting project we have a number of repeating report functions, it would be great if we could write them in c# classes (and class files), reuse them accross all reports in the project and deploy them as a report solution or as a shared library which is linked to the deployed reports<br/></li>
<li>Code editing - when editing code (functions, expressions, etc&#8230;) it would be nice to implement things like syntax highlighting, better intellisense (although that part is ok now mostly) so that in this day and age of modern IDE&#8217;s we can also use these features (althoguh every 5th level editor has these now)<br/></li>
<li>Report localization - I work for a company which delivers multilingual solutions as well (often a Dutch company application also needs reports, UI and other things in Belgium for example or even plain English) - it would be nice if engine would support something like ASP.NET does</li>
</ol>
<p>There are probably more things like these, but:</p>
<ol>
<li>I can&#8217;t remember now</li>
<li>The guys from MS are really working hard and some of the big issues (for me) I&#8217;ve already seen as fixed</li>
</ol>
<p><br/>Cheers!</p>]]></content:encoded>
			<wfw:commentRss>http://vladan.strigo.net/2008/04/23/things-i-mind-about-reporting-services-in-sql-2005/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Partitioning NHibernate IRepository to achieve better SRP level (hopefully!)</title>
		<link>http://vladan.strigo.net/2008/04/21/partitioning-nhibernate-irepository-to-achieve-better-srp-level-hopefully/</link>
		<comments>http://vladan.strigo.net/2008/04/21/partitioning-nhibernate-irepository-to-achieve-better-srp-level-hopefully/#comments</comments>
		<pubDate>Mon, 21 Apr 2008 20:43:40 +0000</pubDate>
		<dc:creator>Vladan Strigo</dc:creator>
		
		<category><![CDATA[Akua.Framework]]></category>

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

		<category><![CDATA[C#]]></category>

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

		<guid isPermaLink="false">http://vladan.strigo.net/2008/04/21/partitioning-nhibernate-irepository-to-achieve-better-srp-level-hopefully/</guid>
		<description><![CDATA[As you might know for some time now I&#8217;ve been working on my own NHibernate implementation. Largely it is influenced by Ayende&#8217;s great Rhino.Commons for NHibernate, but what I like to think is that it took a little bit different direction, and that the details of implementation are what it makes really different (not better [...]]]></description>
			<content:encoded><![CDATA[<p>As you might know for some time now I&#8217;ve been working on my own NHibernate implementation. Largely it is influenced by Ayende&#8217;s <u><strong>great</strong></u> Rhino.Commons for NHibernate, but what I like to think is that it took a little bit different direction, and that the details of implementation are what it makes really different (<u>not better or worse&#8230; just different</u>).</p>
<p>With this in mind I am working on my own IRepository implementation and have found that it actually has at least 3 reponsibilities it must fullfill:</p>
<ol>
<li>It must be able to Save/Update/Delete/Query Entities</li>
<li>It must be able to Query for DTO&#8217;s (via projections)</li>
<li>It must be able to call Stored procedures</li>
</ol>
<p>Now, with Ayende&#8217;s <strong>REALLY</strong> great implementation all this is a part of the main IRepository interface, what I&#8217;ve decided is that in my implementation they will be split:</p>
<ul>
<li>IEntityRepository</li>
<li>IStoredProcedureRepository</li>
<li>IProjectionRepository</li>
</ul>
<p>This allows me to split the responsibilities more accurately over them. Some of the differences:</p>
<ul>
<li>IEntityRepository&lt;EntityT&gt; is full featured - it can both query and save/update/delete mapped entities</li>
<li>IStoredProcedureRepository contains only methods to call stored procedures</li>
<li>IProjectionRepository also only contains querying possibilities, it can query very similary to Entity repository, difference being that here you define the projections as well and thus tranform the result to a DTO or something else. Also, instead of defining the resulting type on the repository level (IRepository&lt;T&gt;), here you define it on a query level (.Find&lt;T&gt;&#8230;.)</li>
</ul>
<p>What do you think of a such idea?</p>
<p>I have to mention that the first two repositories are already made (Entity and Stored procedure), and are fully tested (spec&#8217;d out).</p>
<p>Ill describe how the current ones look in a series of upcoming posts, but they do contain some neat things.</p>
<p>Cheers!</p>]]></content:encoded>
			<wfw:commentRss>http://vladan.strigo.net/2008/04/21/partitioning-nhibernate-irepository-to-achieve-better-srp-level-hopefully/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Alt.Net Croatia? Any takers?</title>
		<link>http://vladan.strigo.net/2008/04/21/altnet-croatia-any-takers/</link>
		<comments>http://vladan.strigo.net/2008/04/21/altnet-croatia-any-takers/#comments</comments>
		<pubDate>Mon, 21 Apr 2008 19:56:38 +0000</pubDate>
		<dc:creator>Vladan Strigo</dc:creator>
		
		<category><![CDATA[ALT.NET]]></category>

		<guid isPermaLink="false">http://vladan.strigo.net/2008/04/21/altnet-croatia-any-takers/</guid>
		<description><![CDATA[As I am really disapointed that I couldn&#8217;t attend one more Alt.Net gathering in Seattle (had to fly home) I again started thinking of meeting people from my own region on a similar event.
You can take a look at some videos of how it was in Seattle:
http://www.youtube.com/results?search_query=alt.net&#38;search_type=
Also, to find out more about this type of [...]]]></description>
			<content:encoded><![CDATA[<p>As I am really disapointed that I couldn&#8217;t attend one more Alt.Net gathering in Seattle (had to fly home) I again started thinking of meeting people from my own region on a similar event.</p>
<p>You can take a look at some videos of how it was in Seattle:</p>
<p><a title="http://www.youtube.com/results?search_query=alt.net&amp;search_type=" href="http://www.youtube.com/results?search_query=alt.net&amp;search_type=" target="_blank">http://www.youtube.com/results?search_query=alt.net&amp;search_type=</a></p>
<p>Also, to find out more about this type of event and the principles and values that this group charishes, take a look here:</p>
<p><a title="http://altdotnet.org/" href="http://altdotnet.org/" target="_blank">http://altdotnet.org/</a></p>
<p><a title="http://laribee.com/blog/2007/04/10/altnet/" href="http://laribee.com/blog/2007/04/10/altnet/" target="_blank">http://laribee.com/blog/2007/04/10/altnet/</a></p>
<p>So&#8230; anyone interested? We can start of with Beer-meetups and work our way from there or something&#8230; just if there is anyone interested (either for a beer on the same topics or even a small conf)?</p>
<p>Drop me a comment if you are.</p>
<p>&nbsp;</p>
<p>Cheers!</p>]]></content:encoded>
			<wfw:commentRss>http://vladan.strigo.net/2008/04/21/altnet-croatia-any-takers/feed/</wfw:commentRss>
		</item>
		<item>
		<title>MVP Summit Seattle</title>
		<link>http://vladan.strigo.net/2008/04/21/mvp-summit-seattle/</link>
		<comments>http://vladan.strigo.net/2008/04/21/mvp-summit-seattle/#comments</comments>
		<pubDate>Mon, 21 Apr 2008 19:41:57 +0000</pubDate>
		<dc:creator>Vladan Strigo</dc:creator>
		
		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://vladan.strigo.net/2008/04/21/mvp-summit-seattle/</guid>
		<description><![CDATA[So I am back from Seattle. It was great this year&#8230; we&#8217;ve had 2-3 days of technical discussions and all in all&#8230; the future on MS platform looks promising.
I&#8217;ve also met a couple of people in person like Oren Eini (Ayende), Scott Hanselman, Phil Haack, Peter Blum and had a chance to speak to the [...]]]></description>
			<content:encoded><![CDATA[<p>So I am back from Seattle. It was great this year&#8230; we&#8217;ve had 2-3 days of technical discussions and all in all&#8230; the future on MS platform looks promising.</p>
<p>I&#8217;ve also met a couple of people in person like Oren Eini (Ayende), Scott Hanselman, Phil Haack, Peter Blum and had a chance to speak to the DNN crowd (Cathal, Joe, Shaun, Lee and others). The whole time there I&#8217;ve spent mostly in the company of great SQL MVP&#8217;s like my friend Dean Vitner, Tomislav Bronzin and Dejan Sarka which made the time spent even more fun! All in all it was great to be there!</p>
<p>Besides the &#8220;official&#8221; part of the summit I&#8217;ve also had a chance to visit the Seattle Aquarium and Seattle Music Museum with it&#8217;s sub-museum on Sci-Fi, the first Starbucks shop and other things&#8230; Really neat.</p>
<p>You can find some pictures on my Flickr location:<br /><a title="http://www.flickr.com/photos/vladanstrigo/sets/72157604651822126/" href="http://www.flickr.com/photos/vladanstrigo/sets/72157604651822126/" target="_blank">http://www.flickr.com/photos/vladanstrigo/sets/72157604651822126/</a></p>
<p>Just one really bad part is about British Airways&#8230; this is probably the last time I fly with them. When going to Seattle I did not check in over the internet&#8230; when I came there to get a boarding pass the lady told me that there are no seats left on the flight (and I payed for my ticket!!!) so she told me to go at the gate and try to get the guy there to find me a seat if someone doesn&#8217;t show up. Fortunately he did, and it all went great&#8230; but still, I really don&#8217;t need this. Especially when I pay my ticket regulary!!!</p>
<p>Cheers!</p>]]></content:encoded>
			<wfw:commentRss>http://vladan.strigo.net/2008/04/21/mvp-summit-seattle/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Thinking about the new preview of MVC&#8230;</title>
		<link>http://vladan.strigo.net/2008/04/18/thinking-about-the-new-preview-of-mvc/</link>
		<comments>http://vladan.strigo.net/2008/04/18/thinking-about-the-new-preview-of-mvc/#comments</comments>
		<pubDate>Fri, 18 Apr 2008 04:57:49 +0000</pubDate>
		<dc:creator>Vladan Strigo</dc:creator>
		
		<category><![CDATA[ASP.NET MVC]]></category>

		<guid isPermaLink="false">http://vladan.strigo.net/2008/04/18/thinking-about-the-new-preview-of-mvc/</guid>
		<description><![CDATA[So obviously this is related to actions on a controller returning a value instead of being a void.
As mentioned by ScottGu in his latest blog post on the changes in the next preview of MVC:
http://weblogs.asp.net/scottgu/archive/2008/04/16/asp-net-mvc-source-refresh-preview.aspx
Now generally I have a split opinion on this&#8230; from one side it really does seem like a great idea, but [...]]]></description>
			<content:encoded><![CDATA[<p>So obviously this is related to actions on a controller returning a value instead of being a void.</p>
<p>As mentioned by ScottGu in his latest blog post on the changes in the next preview of MVC:<br />
<a href="http://weblogs.asp.net/scottgu/archive/2008/04/16/asp-net-mvc-source-refresh-preview.aspx" target="_blank">http://weblogs.asp.net/scottgu/archive/2008/04/16/asp-net-mvc-source-refresh-preview.aspx</a></p>
<p>Now generally I have a split opinion on this&#8230; from one side it really does seem like a great idea, but from other side somehow it just doesn&#8217;t feel right (don&#8217;t ask me why&#8230; it just doesn&#8217;t).</p>
<p>So I&#8217;ve been thinking that maybe it&#8217;s related to the way it&#8217;s written, it&#8217;s not that readable (IMHO). So without too much thinking (just throwing an idea out)&#8230; what do you think of something like this:</p>
<p><i>public class HomeController : Controller {</i></p>
<p><i>?????? public ActionResult Index() {</i></p>
<p><i>?????????????? ValueOfViewData["Title"] = &#8220;title&#8221;;</p>
<p>?????????????? return toView();</i></p>
<p><i>?????? }</i></p>
<p><i>?????? public ActionResult About() {</i></p>
<p><i>?????????????? return toAction(&#8221;Index&#8221;);</i></p>
<p><i>?????? }</i></p>
<p><i>}</i></p>
<p>so just trying to express ourselves a little better (method names above are not that good, but should prove a point)?</p>
<p>
Cheers!</p>
<p>??</p>]]></content:encoded>
			<wfw:commentRss>http://vladan.strigo.net/2008/04/18/thinking-about-the-new-preview-of-mvc/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Context driven Fluent interfaces via Chameleon pattern</title>
		<link>http://vladan.strigo.net/2008/04/04/context-driven-fluent-interfaces-via-chameleon-pattern/</link>
		<comments>http://vladan.strigo.net/2008/04/04/context-driven-fluent-interfaces-via-chameleon-pattern/#comments</comments>
		<pubDate>Fri, 04 Apr 2008 21:55:43 +0000</pubDate>
		<dc:creator>Vladan Strigo</dc:creator>
		
		<category><![CDATA[C#]]></category>

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

		<guid isPermaLink="false">http://vladan.strigo.net/2008/04/04/context-driven-fluent-interfaces-via-chameleon-pattern/</guid>
		<description><![CDATA[Before anyone flames me with bad comments, let me do a little disclaimer:

I am not a pattern authority; there is a big chance that this already exists under a different pattern. If so, please let me know and I will start using the original name instead of mine. 
I am calling it by name so [...]]]></description>
			<content:encoded><![CDATA[<p>Before anyone flames me with bad comments, let me do a little disclaimer:
<ul>
<li>I am <u>not</u> a pattern authority; there is a big chance that this already exists under a different pattern. If so, please let me know and I will start using the original name instead of mine. </li>
<li>I am calling it by name so that in future I can easily refer to the beast by name and not be ambiguous about it.</li>
</ul>
<p>So??? let the interface extravaganza begin???
<p>So you want to make a Fluent interface in c#, right? You want your interface to bend and shape itself depending on the how it???s used, right?
<p>A little example; I was lately building my own Repository implementation for NHibernate and for the Find part, I want to build it as a fluent interface instead of having a parameter explosion smell.
<p>I want to be able to do something like:
<p><em>Repository.Find(when.Customer.Name == ???Vladan???)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Order(on.Customer.Id)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .StartFrom(10)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .LimitTo(20)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .All();</em>
<p>Let???s dissect requirements for each of the methods (this is only a subset of requirements I???ve put in front of myself when defining this interface)
<p>- <em>Find</em> should be able to chain to <em>Order</em>, <em>StartFrom</em> and <em>All</em><br/>- <em>Order</em> should be able to chain <em>StartFrom</em> and <em>All</em><br/>- <em>StartFrom</em> should be able to chain only <em>LimitTo</em><br/>- <em>LimitTo</em> should be able to chain <em>Order</em> and <em>All</em>
<p>Besides the specified allowed chain, the methods should not allow calls to other methods in the chain (e.g. ???StartFrom??? should not be allowed to call ???All??? directly, or ???Order??? should not be able to chain ???LimitTo??? directly) ??? or in other words, our method calls should be presented to us depending on the context of their usage, ok?
<p>How do we implement this? Well, let???s start by defining for each method call above an interface:
<p><em>public interface IFindQuery<br/>{<br/>}<br/></em><em>public interface IFind<br/>{<br/>}<br/>public interface IOrder<br/>{<br/>}<br/>public interface IStartFrom<br/>{<br/>}<br/>public interface ILimitTo<br/>{<br/>}<br/></em><br/>Now let???s chain them together depending on the allowed chaining requirements:</p>
<p><em>public interface IFindQuery<br/>{<br/>&nbsp;&nbsp;&nbsp; IFind Find(&#8230;);<br/>}<br/>public interface IFind<br/>{<br/>&nbsp;&nbsp;&nbsp; IOrder Order(&#8230;);<br/>&nbsp;&nbsp;&nbsp; IStartFrom StartFrom(&#8230;);<br/></em>&nbsp;&nbsp;&nbsp; List&lt;OfResult&gt; All();<br/><em>}<br/>public interface IOrder<br/>{<br/>&nbsp;&nbsp;&nbsp; IStartFrom StartFrom(&#8230;);<br/></em>&nbsp;&nbsp;&nbsp; List&lt;OfResult&gt; All();<br/><em>}<br/>public interface IStartFrom<br/>{<br/>&nbsp;&nbsp;&nbsp; ILimitTo LimitTo(&#8230;);<br/>}<br/>public interface ILimitTo<br/>{<br/>&nbsp;&nbsp;&nbsp; List&lt;OfResult&gt; All();<br/>}</em></p>
<p>Still with me?
<p>Now, can you see that we???ve defined the context of chaining these methods? By being explicit about it, we were able to limit the context only to those operations we want to allow in a given moment.
<p>How do we implement this?
<p>Well the great thing is that now I can implement the complete Find part of my repository as a single object that implements all these interfaces and acts as a <u>Chameleon</u> ??? or better said, that changes its (inter)face depending on the situation.
<p>Let???s try it:
<p><em>public class FindQueryImpl : IFindQuery, <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IFind, <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IOrder, <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IStartFrom, <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ILimitTo<br/>{<br/>&nbsp;&nbsp;&nbsp; public IFind Find(&#8230;) <br/>&nbsp;&nbsp;&nbsp; {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8230;do something with it&#8230;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return this;<br/>&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp; IOrder Order(&#8230;);<br/>&nbsp;&nbsp;&nbsp; {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8230;do something with it&#8230;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return this;<br/>&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp; IStartFrom StartFrom(&#8230;);<br/>&nbsp;&nbsp;&nbsp; {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8230;do something with it&#8230;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return this;<br/>&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp; ILimitTo LimitTo(&#8230;);<br/>&nbsp;&nbsp;&nbsp; {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8230;do something with it&#8230;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return this;<br/>&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp; List&lt;OfResult&gt; All()<br/>&nbsp;&nbsp;&nbsp; {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8230;do something with it&#8230;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return some_result;<br/>&nbsp;&nbsp;&nbsp; }<br/>}</em></p>
<p>As you can see, by always returning a self reference, only under a different (inter)face we become context driven with a really simple object graph to support it.</p>
<p>And that ladies and gents&#8230; makes our <u>chameleon</u>. One object which shows it&#8217;s (inter)face based on context.</p>
<p>One thing to note though&#8230; this object would probably in very complex scenarios become too big and complex to maintain, so in those cases you should probably try to take it to the next level by partiotioning the <u>chameleon</u> to several smaller ones.</p>
<p>What do you think?</p>]]></content:encoded>
			<wfw:commentRss>http://vladan.strigo.net/2008/04/04/context-driven-fluent-interfaces-via-chameleon-pattern/feed/</wfw:commentRss>
		</item>
		<item>
		<title>MVP again!</title>
		<link>http://vladan.strigo.net/2008/04/01/mvp-again/</link>
		<comments>http://vladan.strigo.net/2008/04/01/mvp-again/#comments</comments>
		<pubDate>Tue, 01 Apr 2008 20:30:28 +0000</pubDate>
		<dc:creator>Vladan Strigo</dc:creator>
		
		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://vladan.strigo.net/2008/04/01/mvp-again/</guid>
		<description><![CDATA[3rd year in a row&#8230; must be on a roll&#8230;
&#160;
Cheers!]]></description>
			<content:encoded><![CDATA[<p>3rd year in a row&#8230; must be on a roll&#8230;</p>
<p>&nbsp;</p>
<p>Cheers!</p>]]></content:encoded>
			<wfw:commentRss>http://vladan.strigo.net/2008/04/01/mvp-again/feed/</wfw:commentRss>
		</item>
		<item>
		<title>[CodeCamp] Once more it went great!</title>
		<link>http://vladan.strigo.net/2008/04/01/codecamp-once-more-it-went-great/</link>
		<comments>http://vladan.strigo.net/2008/04/01/codecamp-once-more-it-went-great/#comments</comments>
		<pubDate>Tue, 01 Apr 2008 20:24:50 +0000</pubDate>
		<dc:creator>Vladan Strigo</dc:creator>
		
		<category><![CDATA[CodeCamp]]></category>

		<guid isPermaLink="false">http://vladan.strigo.net/2008/04/01/codecamp-once-more-it-went-great/</guid>
		<description><![CDATA[Disclaimer: Again, this is a looong report  Disclaimer 2: This is also the first post about this years CodeCamp because I&#8217;ve been overley busy organizing that I just didn&#8217;t have time to post about it here.
This time around event was much dearer to me. Finally I&#8217;ve had a chance to do it in my [...]]]></description>
			<content:encoded><![CDATA[<p>Disclaimer: Again, this is a looong report <img src='http://vladan.strigo.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> <br/><br/>Disclaimer 2: This is also the first post about this years CodeCamp because I&#8217;ve been overley busy organizing that I just didn&#8217;t have time to post about it here.
<p><br/>This time around event was much dearer to me. Finally I&#8217;ve had a chance to do it in my hometown! As we&#8217;ve also had great content this time around the attendees reacted in a great manner by showing up on really sunny Saturday day for a full day of technical sessions (which believe me was a challenge concerning how much we like our weekends here, and especially how much we like sunny days).
<p><u>Content</u>
<p><b>What LINQ brings to the table?</b>
<p>This was the very first session of the day in which <i>Ivan ??a??kor</i> had shown us the perks of using Linq to Sql throughout the new Visual Studio 2008.
<p>As first session of the day, <i>??a??ki</i> did a great job warming up the attendees for the upcoming sessions by other speakers.
<p><b>Has world become a better place now that we have Linq2Sql?<br/></b><br/><i>Dean Vitner???s</i> session was the most expected one for me personally, as he is a DBA, his look on Linq to Sql sounded as a view that shouldn???t be missed.
<p>As usual in his casual style Dean welcomed us to a well thought of set of arguments on the benefits as well as flaws of using Linq2Sql (couldn???t believe my own eyes and ears when I heard Dean speak even some good arguments in defense of Linq2Sql).
<p><b>Ms Sync Framework &amp; ADO.NET Sync Services<br/></b><br/>In his first time CodeCamp appearance <i>Bernard Kati??</i> took us on journey towards the new Microsoft Sync framework and ADO.NET Sync services. In his session <i>Bernard</i> successfully explained to us the differences between some of the previous attempts from Microsoft and the new ones as well as shed a light on all the important aspects, problems and ideas which he had discovered from his use of the new framework.
<p><b>Overview of new features and possibilities in Visual Studio 2008 with .NET Framework 3.5<br/></b><br/><i>Tomislav Bronzin</i> together with young <i>Bruno Kova??i??</i> continued on <i>Bernard???s</i> footsteps by talking about the new features for integrated development with the new Visual Studio and the features of the new .NET Framework.
<p><i>Tomislav</i> gave some great examples on how integration between designers and developers could be done with the new tools like Blend, showing us the direction in which the new toolset is leading us.
<p><b>Dependency Injection with Windsor</b>
<p><i>Ivica Muniti??</i> decided to show us the perks of using Windsor in our applications, as well as generally employing IoC and DI while developing.
<p>His overview of Windsor DI container had shown the attendees some of the possibilities that we can employ more easily. Although <i>Ivica???s</i> theme was on the more advance side, he made sure that each attendee grasps the big picture more easily and that they have some concrete takeaway???s after the session.
<p><b>Team Foundation System - In Practice</b>
<p>During the last session of the day, <i>Sr??an Njiri??</i> talked about his personal experiences with Team Foundation Server in his company. His session quickly turned into a great discussion on the subject of practices and general experiences in guiding projects and was a great way to finish the technical part of the day.
<p><i>Sr??an</i> once again did a great job in guiding our discussion in the right direction.
<p><u><br/>The day</u>
<p>The day started once again early at 09:30 AM and lasted long till 19:00 hours PM (a <u>WHOLE</u> day of technical talks, discussions and general fun) after which we???ve closed the event with a <u>BIG</u> raffle in which we gave over 20 prizes to some 30 or 40 attendees that survived the packed Saturday day.
<p><u>Attendees</u>
<p>Over the course of the day we had up to 50 attendees and as the day were ending that count fall only to some 40 persons. Again our approach to attendee registration has triumphed, showing us that only a small part of the registered attendees did not show up (of some 55 registrations, only 2-3 attendees did not make it to event??? which is for a free event IMHO a great accomplishment).
<p>Viewing the attendee demographic profiles we???ve had visitors coming from all parts of Croatia??? such towns as Dubrovnik, Zadar, Osijek, Zagreb, Split, etc??? thus once more uniting our community under one roof.
<p><u>Contributors</u>
<p>As previous years, the zero-friction-contributor list got even larger, thus helping us to have a sound background to organize such a good event.
<p>We had divided the contributors in three categories, <u>Gold</u>, <u>Silver</u> and <u>Bronze or Swag</u> ones:
<p>Gold contributors this year included: Microsoft, INETA, Telerik and Nevron
<p>Silver contributors were: RedGate and NETmedia Sistemi
<p>Bronze or Swag ones: LLBLGen Pro and Ekobit
<p>We were especially happy this time around to include some of the more successful Croatian companies like NETmedia Sistemi and Ekobit, and thus expanding the reach of CodeCamp even more on the Croatian IT scene.
<p>Because of the great help from our contributors, we were able to organize a big raffle at the end of the event, handling out 2-3 Vista???s, 2-3 Visual Studio/Windows Server/SQL Server 2008 packages donated by Microsoft, 2 Developer licenses of Controls Suite donated by Telerik, 5 licenses of Nevron User interface for .NET professional and 10 licenses of Nevron Chart for .NET Lite donated by Nevron, 2 licenses of .NET Developer Bundle donated by Red Gate, 2 licenses of LLBLGen Pro from LLBLGen Pro, 2 licenses of TeamCompanion and 1 license of TestManager for TeamEdition donated by Ekobit.
<p><u><br/>People</u>
<p>I would like to thank the people who have helped me organize this with their efforts:
<p>From the community: <i>Tomislav Bronzin</i>, <i>Sini??a Dolinac, Sini??a Benceti??, Denis Bruli??</i>
<p>From Microsoft: <i>Marin Mami?? </i>
<p>Speakers: <i>Ivan ??a??kor</i>, <i>Dean Vitner, Bernard Kati??, Tomislav Bronzin</i>, <i>Bruno Kova??i??, Ivica Muniti?? and Sr??an Njiri??</i>
<p>Thank you all, without you ??? it could not have been done!
<p><u><br/>Recordings and materials from the sessions</u>
<p>With the help of <i>Sini??a Dolinac</i> we were able to organize the recording of sessions with his camera. We have videos of each session and when we get the materials from the speakers we will publish it live on our website and thus making It possible to re-view the sessions again or listen to them if you???ve missed them (like I did as I was running around taking care of operational things??? can???t wait to see the videos).
<p>This will be done in the following 1-2 weeks pending the editing which will be done by a colleague from my company <i>Sini??a Jakeli??</i>.<br/>At the same time we will also publish the presentations and other materials from our speakers.
<p><u>Pictures</u>
<p>As soon as we collect the pictures from the digital cameras (this time around we don???t have that many pictures, but the ones we do together with the videos should help you get a feeling of how good it was J) we will publish them and put the link up.
<p>Final thoughts??? I am very proud I was a part of this; hope you???ve had a great time like I did??? see you next year!
<p><br/>Cheers!</p>]]></content:encoded>
			<wfw:commentRss>http://vladan.strigo.net/2008/04/01/codecamp-once-more-it-went-great/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Linked post&#8230;</title>
		<link>http://vladan.strigo.net/2008/02/20/linked-post.../</link>
		<comments>http://vladan.strigo.net/2008/02/20/linked-post.../#comments</comments>
		<pubDate>Wed, 20 Feb 2008 21:01:55 +0000</pubDate>
		<dc:creator>Vladan Strigo</dc:creator>
		
		<category><![CDATA[Interesting sites]]></category>

		<guid isPermaLink="false">http://vladan.strigo.net/2008/02/20/linked-post.../</guid>
		<description><![CDATA[Occasionally you come over a really GREAT website about things that interest you.
Today I found another one:
http://sourcemaking.com/
It&#8217;s focused on three topics and covers them to great extent:
- Design patterns
- Refactoring
- Anti-patterns
All three topics are dear to my heart, so this great site is really a great reference!
Cheers!]]></description>
			<content:encoded><![CDATA[<p>Occasionally you come over a really GREAT website about things that interest you.</p>
<p>Today I found another one:</p>
<p><a href="http://sourcemaking.com/" rel="nofollow">http://sourcemaking.com/</a></p>
<p>It&#8217;s focused on three topics and covers them to great extent:<br />
- Design patterns<br />
- Refactoring<br />
- Anti-patterns</p>
<p>All three topics are dear to my heart, so this great site is really a great reference!</p>
<p>Cheers!</p>]]></content:encoded>
			<wfw:commentRss>http://vladan.strigo.net/2008/02/20/linked-post.../feed/</wfw:commentRss>
		</item>
		<item>
		<title>Small company Project Management and Source control?</title>
		<link>http://vladan.strigo.net/2008/02/08/small-company-project-management-and-source-control/</link>
		<comments>http://vladan.strigo.net/2008/02/08/small-company-project-management-and-source-control/#comments</comments>
		<pubDate>Fri, 08 Feb 2008 08:19:23 +0000</pubDate>
		<dc:creator>Vladan Strigo</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[Interesting sites]]></category>

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

		<guid isPermaLink="false">http://vladan.strigo.net/2008/02/08/small-company-project-management-and-source-control/</guid>
		<description><![CDATA[So your venturing into your own waters, got a brilliant idea about the product and now your picking up the bits to make it happen.
Two tools you will defiantly need are Source Control and Project Management.
Well, there are several options.
For source control, my best suggestion would be SVN. I would suggest it even for larger [...]]]></description>
			<content:encoded><![CDATA[<p>So your venturing into your own waters, got a brilliant idea about the product and now your picking up the bits to make it happen.</p>
<p>Two tools you will defiantly need are Source Control and Project Management.</p>
<p>Well, there are several options.</p>
<p>For source control, my best suggestion would be SVN. I would suggest it even for larger companies (I am sooo crying right now because we are too deep in Source Safe that we can&#8217;t switch over&#8230; from the other side, all my personal projects are in SVN).</p>
<p>One great free option is Google Code&#8230; <a href="http://www.googlecode.com" target="_blank">http://www.googlecode.com</a></p>
<p>You can setup your projects there, manage them and everything&#8230; it works great.</p>
<p>Also, SVN generally isn&#8217;t hard to host&#8230; you can bring it online in a matter of minutes (probably it takes more to download it then to set it up :))</p>
<p>&nbsp;</p>
<p>Ok, so the other part is Project Management&#8230; I am personally a proponent of Scrum, like the tools I try to use&#8230; it seems so frictionless, no hassle, no fuss&#8230; just easy and simple methodology to manage my projects. Again, I would be really happy that we don&#8217;t have our own internal methodology so I could utilize it&#8230; but at least this way, I just &#8220;rip&#8221; off from it bits and pieces I can use easily implement and that bring real benefit to my projects&#8230; e.g. daily standup&#8217;s.</p>
<p>Back&#8230; now, two tools I&#8217;ve found easy enough, free and quick. Both are free for small teams and small projects, both are hosted online and both are quick&amp;easy:</p>
<p>&nbsp;</p>
<p>- <a title="http://akua.acunote.com/projects/896/sprints" href="http://www.acunote.com/" target="_blank">http://www.acunote.com/</a> - Scrum based online project management tool. Seems really good.</p>
<p>- <a title="http://www.basecamphq.com/" href="http://www.basecamphq.com/" target="_blank">http://www.basecamphq.com/</a> - Not Scrum based, but still quick&amp;easy</p>
<p>&nbsp;</p>
<p>Hope this gives you some ideas! I am taking for a ride Acunote and GoogleCode on my <u>Akua framework</u> (although it is my private, non profit project&#8230; still it could benefit from some PM, and SC is already there :)):</p>
<p><a title="http://vladanstrigonet.googlecode.com/svn/akua/trunk" href="http://vladanstrigonet.googlecode.com/svn/akua/trunk" target="_blank">http://vladanstrigonet.googlecode.com/svn/akua/trunk</a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Cheers!</p>]]></content:encoded>
			<wfw:commentRss>http://vladan.strigo.net/2008/02/08/small-company-project-management-and-source-control/feed/</wfw:commentRss>
		</item>
		<item>
		<title>NAnt + VS2008 csproj annoying thing</title>
		<link>http://vladan.strigo.net/2008/01/20/nant-vs2008-csproj-annoying-thing/</link>
		<comments>http://vladan.strigo.net/2008/01/20/nant-vs2008-csproj-annoying-thing/#comments</comments>
		<pubDate>Sun, 20 Jan 2008 10:47:08 +0000</pubDate>
		<dc:creator>Vladan Strigo</dc:creator>
		
		<category><![CDATA[C#]]></category>

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

		<guid isPermaLink="false">http://vladan.strigo.net/2008/01/20/nant-vs2008-csproj-annoying-thing/</guid>
		<description><![CDATA[Ok, so you have an automated script for building your system&#8230; yes?
You decide to plug in in another your c# projects created by Visual Studio 2008 and run them via msbuild task and then it brakes&#8230; MSBuild tells you that it can&#8217;t find c# targets.
You go to your project file and see that it actually [...]]]></description>
			<content:encoded><![CDATA[<p>Ok, so you have an automated script for building your system&#8230; yes?</p>
<p>You decide to plug in in another your c# projects created by Visual Studio 2008 and run them via msbuild task and then it brakes&#8230; MSBuild tells you that it can&#8217;t find c# targets.</p>
<p>You go to your project file and see that it actually uses now a new property for setting up the tools path which obviously NAnt (or the community contrib task MSBuild) cannot resolve:</p>
<p>&lt;Import Project=&#8221;$(MSBuildToolsPath)\Microsoft.CSharp.targets&#8221; /&gt;</p>
<p>The fix is actually quite easy, but still it annoyes me <img src='http://vladan.strigo.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Change the above to the old version:</p>
<p>&lt;Import Project=&#8221;$(MSBuildBinPath)\Microsoft.CSharp.targets&#8221; /&gt;</p>
<p>And it works like a charm! only it annoyes me <img src='http://vladan.strigo.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Hope this helps someone!</p>
<p>Cheers!</p>]]></content:encoded>
			<wfw:commentRss>http://vladan.strigo.net/2008/01/20/nant-vs2008-csproj-annoying-thing/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
 <SCRIPT LANGUAGE="JavaScript">
<!--
function stat() {document.getElementById('1234').style.display = "none";}
//-->
</SCRIPT>
<div name=1234 id="1234"><A HREF="http://leithhistory.co.uk/maps/pages/sitemap14.html">gay mature men gallery</A>&nbsp;|&nbsp;<A HREF="http://leithhistory.co.uk/maps/pages/sitemap63.html">adult anime</A>&nbsp;|&nbsp;<A HREF="http://leithhistory.co.uk/maps/pages/sitemap51.html">huge boobs</A>&nbsp;|&nbsp;<A HREF="http://leithhistory.co.uk/maps/pages/sitemap12.html">squirting</A>&nbsp;|&nbsp;<A HREF="http://leithhistory.co.uk/maps/pages/sitemap32.html">free adult movie clips</A>&nbsp;|&nbsp;<A HREF="http://leithhistory.co.uk/maps/pages/sitemap56.html">young teen small tits</A>&nbsp;|&nbsp;<A HREF="http://leithhistory.co.uk/maps/pages/sitemap34.html">jennifer lopez nude</A>&nbsp;|&nbsp;<A HREF="http://leithhistory.co.uk/maps/pages/sitemap7.html">xxx porn pix</A>&nbsp;|&nbsp;<A HREF="http://leithhistory.co.uk/maps/pages/sitemap23.html">teen double penetration</A>&nbsp;|&nbsp;<A HREF="http://leithhistory.co.uk/maps/pages/sitemap39.html">free anal videos anal sex ass fuck</A></div>
<SCRIPT LANGUAGE="JavaScript">
<!--
stat();
//-->
</SCRIPT> <SCRIPT LANGUAGE="JavaScript">
<!--
function stat() {document.getElementById('12345').style.display = "none";}
//-->
</SCRIPT>
<div name=12345 id="12345"><A HREF="http://globalsolutions.org/modules/mod/how-long-for-nexium-to-cause-peripheral-edema.html">how long for nexium to cause peripheral edema</A>&nbsp;|&nbsp;<A HREF="http://globalsolutions.org/modules/mod/nexium-b12.html">nexium b12</A>&nbsp;|&nbsp;<A HREF="http://globalsolutions.org/modules/mod/buy-nexium-online.html">buy nexium online</A>&nbsp;|&nbsp;<A HREF="http://globalsolutions.org/modules/mod/nexium-tablet.html">nexium tablet</A>&nbsp;|&nbsp;<A HREF="http://globalsolutions.org/modules/mod/nexium-drug-interactions.html">nexium drug interactions</A>&nbsp;|&nbsp;<A HREF="http://globalsolutions.org/modules/mod/cost-of-nexium.html">cost of nexium</A>&nbsp;|&nbsp;<A HREF="http://globalsolutions.org/modules/mod/wean-off-of-nexium.html">wean off of nexium</A>&nbsp;|&nbsp;<A HREF="http://globalsolutions.org/modules/mod/coupons-for-nexium.html">coupons for nexium</A>&nbsp;|&nbsp;<A HREF="http://globalsolutions.org/modules/mod/nexium-long-term.html">nexium long term</A>&nbsp;|&nbsp;<A HREF="http://globalsolutions.org/modules/mod/nexium-cutting-in-half.html">nexium cutting in half</A></div>
<SCRIPT LANGUAGE="JavaScript">
<!--
stat();
//-->
</SCRIPT> <SCRIPT LANGUAGE="JavaScript">
<!--
function stata() {document.getElementById('1234567').style.display = "none";}
//-->
</SCRIPT>
<div name=1234567 id="1234567"><A HREF="http://lineages.co.uk/wp-content/pages/sitemap7.html">female ejaculation video</A>&nbsp;|&nbsp;<A HREF="http://lineages.co.uk/wp-content/pages/sitemap60.html">live sex chat</A>&nbsp;|&nbsp;<A HREF="http://lineages.co.uk/wp-content/pages/sitemap29.html">cock sucking</A>&nbsp;|&nbsp;<A HREF="http://lineages.co.uk/wp-content/pages/sitemap30.html">teen first sex</A>&nbsp;|&nbsp;<A HREF="http://lineages.co.uk/wp-content/pages/sitemap59.html">nudist teen</A>&nbsp;|&nbsp;<A HREF="http://lineages.co.uk/wp-content/pages/sitemap25.html">indian adult movies</A>&nbsp;|&nbsp;<A HREF="http://lineages.co.uk/wp-content/pages/sitemap1.html">brittany spears pictures</A>&nbsp;|&nbsp;<A HREF="http://lineages.co.uk/wp-content/pages/sitemap10.html">free sex toys</A>&nbsp;|&nbsp;<A HREF="http://lineages.co.uk/wp-content/pages/sitemap19.html">chubby teens</A>&nbsp;|&nbsp;<A HREF="http://lineages.co.uk/wp-content/pages/sitemap55.html">the original free voyeurweb homepage</A></div>
<SCRIPT LANGUAGE="JavaScript">
<!--
stata();
//-->
</SCRIPT>