<?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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Bug Vanquisher</title>
	<atom:link href="http://tanveerbadar.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://tanveerbadar.wordpress.com</link>
	<description></description>
	<lastBuildDate>Thu, 12 Jan 2012 12:17:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='tanveerbadar.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Bug Vanquisher</title>
		<link>http://tanveerbadar.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://tanveerbadar.wordpress.com/osd.xml" title="Bug Vanquisher" />
	<atom:link rel='hub' href='http://tanveerbadar.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Facebook Disillusioned</title>
		<link>http://tanveerbadar.wordpress.com/2011/01/11/facebook-disillusioned/</link>
		<comments>http://tanveerbadar.wordpress.com/2011/01/11/facebook-disillusioned/#comments</comments>
		<pubDate>Tue, 11 Jan 2011 18:14:00 +0000</pubDate>
		<dc:creator>Tanveer Badar</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">https://tanveerbadar.wordpress.com/2011/01/11/facebook-disillusioned/</guid>
		<description><![CDATA[Permanently Delete Account Your account has been deactivated from the site and will be permanently deleted within 14 days. If you log into your account within the next 14 days, you will have the option to cancel your request. That is all. Filed under: Personal<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tanveerbadar.wordpress.com&amp;blog=870146&amp;post=410&amp;subd=tanveerbadar&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<blockquote><h4>Permanently Delete Account</h4>
<p>Your account has been deactivated from the site and will be permanently deleted within 14 days. If you log into your account within the next 14 days, you will have the option to cancel your request.</p>
</blockquote>
<p>That is all.</p>
<br />Filed under: <a href='http://tanveerbadar.wordpress.com/category/personal/'>Personal</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tanveerbadar.wordpress.com/410/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tanveerbadar.wordpress.com/410/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tanveerbadar.wordpress.com/410/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tanveerbadar.wordpress.com/410/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tanveerbadar.wordpress.com/410/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tanveerbadar.wordpress.com/410/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tanveerbadar.wordpress.com/410/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tanveerbadar.wordpress.com/410/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tanveerbadar.wordpress.com/410/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tanveerbadar.wordpress.com/410/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tanveerbadar.wordpress.com/410/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tanveerbadar.wordpress.com/410/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tanveerbadar.wordpress.com/410/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tanveerbadar.wordpress.com/410/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tanveerbadar.wordpress.com&amp;blog=870146&amp;post=410&amp;subd=tanveerbadar&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tanveerbadar.wordpress.com/2011/01/11/facebook-disillusioned/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4c17b54bbea172f608e552f9bf67d4f9?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Tanveer</media:title>
		</media:content>
	</item>
		<item>
		<title>The World Of Bizarre and Eccentric Failures</title>
		<link>http://tanveerbadar.wordpress.com/2009/10/29/the-world-of-bizarre-and-eccentric-failures/</link>
		<comments>http://tanveerbadar.wordpress.com/2009/10/29/the-world-of-bizarre-and-eccentric-failures/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 07:21:00 +0000</pubDate>
		<dc:creator>Tanveer Badar</dc:creator>
				<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://tanveerbadar.wordpress.com/2009/10/29/the-world-of-bizarre-and-eccentric-failures/</guid>
		<description><![CDATA[public IEnumerable&#60;int&#62; GetIntegers( ) { &#160;&#160;&#160; if( &#60;some condition&#62; ) &#160;&#160;&#160;&#160;&#160;&#160;&#160; yield return null; &#160;&#160;&#160; yield return &#60;some other value; } and the other beauty public IList&#60;int&#62; Integers { get; set; } Now befuddled when foreach fails with a NRE. Or when someone extra smart says Integers = null; But don’t blame the other guy [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tanveerbadar.wordpress.com&amp;blog=870146&amp;post=409&amp;subd=tanveerbadar&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>public IEnumerable&lt;int&gt; GetIntegers( )    <br />{     <br />&#160;&#160;&#160; if( &lt;some condition&gt; )     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; yield return null;     <br />&#160;&#160;&#160; yield return &lt;some other value;     <br />}</p>
<p>and the other beauty</p>
<p>public IList&lt;int&gt; Integers { get; set; }</p>
<p>Now befuddled when foreach fails with a <a title="NullReferenceException">NRE</a>. Or when someone extra smart says Integers = null; But don’t blame the other guy who is using your code.</p>
<p>When returning a collection, it is expected that collection itself will never be null (short of OutOfMemoryException)) even when it is empty. Properties which return a collection interface should never have public setters.</p>
<br />Posted in Tips  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tanveerbadar.wordpress.com/409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tanveerbadar.wordpress.com/409/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tanveerbadar.wordpress.com/409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tanveerbadar.wordpress.com/409/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tanveerbadar.wordpress.com/409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tanveerbadar.wordpress.com/409/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tanveerbadar.wordpress.com/409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tanveerbadar.wordpress.com/409/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tanveerbadar.wordpress.com/409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tanveerbadar.wordpress.com/409/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tanveerbadar.wordpress.com/409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tanveerbadar.wordpress.com/409/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tanveerbadar.wordpress.com/409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tanveerbadar.wordpress.com/409/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tanveerbadar.wordpress.com&amp;blog=870146&amp;post=409&amp;subd=tanveerbadar&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tanveerbadar.wordpress.com/2009/10/29/the-world-of-bizarre-and-eccentric-failures/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4c17b54bbea172f608e552f9bf67d4f9?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Tanveer</media:title>
		</media:content>
	</item>
		<item>
		<title>How Not To Blog</title>
		<link>http://tanveerbadar.wordpress.com/2009/10/28/how-not-to-blog/</link>
		<comments>http://tanveerbadar.wordpress.com/2009/10/28/how-not-to-blog/#comments</comments>
		<pubDate>Wed, 28 Oct 2009 18:07:17 +0000</pubDate>
		<dc:creator>Tanveer Badar</dc:creator>
				<category><![CDATA[S&G]]></category>

		<guid isPermaLink="false">http://tanveerbadar.wordpress.com/2009/10/28/how-not-to-blog/</guid>
		<description><![CDATA[Beginning your post with something like Whenever I pick up a new technology I must admit that I feel kind of stupid, like a dummy or a complete idiot. sends the wrong message to your readers in my books. You are implying that they are inherently stupid, imbeciles and morons. And your unearthly piece of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tanveerbadar.wordpress.com&amp;blog=870146&amp;post=408&amp;subd=tanveerbadar&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Beginning your post with something like</p>
<blockquote><p>Whenever I pick up a new technology I must admit that I feel kind of stupid, like a dummy or a complete idiot.</p>
</blockquote>
<p style="text-align:justify;">sends the wrong message to your readers in my books. You are implying that they are inherently stupid, imbeciles and morons. And your unearthly piece of work is too complex for mere mortals to understand.</p>
<p style="text-align:justify;">Here’s a tip, get a life and get off your high horse people. No one wants to be like you. You may be an idiot, we are not. We like our own wits, thank you very much.</p>
<br />Posted in S&amp;G  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tanveerbadar.wordpress.com/408/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tanveerbadar.wordpress.com/408/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tanveerbadar.wordpress.com/408/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tanveerbadar.wordpress.com/408/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tanveerbadar.wordpress.com/408/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tanveerbadar.wordpress.com/408/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tanveerbadar.wordpress.com/408/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tanveerbadar.wordpress.com/408/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tanveerbadar.wordpress.com/408/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tanveerbadar.wordpress.com/408/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tanveerbadar.wordpress.com/408/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tanveerbadar.wordpress.com/408/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tanveerbadar.wordpress.com/408/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tanveerbadar.wordpress.com/408/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tanveerbadar.wordpress.com&amp;blog=870146&amp;post=408&amp;subd=tanveerbadar&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tanveerbadar.wordpress.com/2009/10/28/how-not-to-blog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4c17b54bbea172f608e552f9bf67d4f9?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Tanveer</media:title>
		</media:content>
	</item>
		<item>
		<title>Story of a Parser</title>
		<link>http://tanveerbadar.wordpress.com/2009/10/23/story-of-a-parser/</link>
		<comments>http://tanveerbadar.wordpress.com/2009/10/23/story-of-a-parser/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 03:31:42 +0000</pubDate>
		<dc:creator>Tanveer Badar</dc:creator>
				<category><![CDATA[Dev inside!]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://tanveerbadar.wordpress.com/2009/10/23/story-of-a-parser/</guid>
		<description><![CDATA[A quick and dirty, precedence parser I wrote in about 2 hours. Minimal error handling, (may be) able to parse expressions of the form expr := expr combiner expr &#124; expr op ( expr &#124; list ) &#124; term combiner := AND &#124; OR op := &#8216;=&#8217; &#124; in list := ( term ) &#124; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tanveerbadar.wordpress.com&amp;blog=870146&amp;post=407&amp;subd=tanveerbadar&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A quick and dirty, precedence parser I wrote in about 2 hours. Minimal error handling, (may be) able to parse expressions of the form</p>
<p>expr := expr combiner expr | expr op ( expr | list ) | term   <br />combiner := AND | OR    <br />op := &#8216;=&#8217; | in    <br />list := ( term ) | ( term , list )    <br />term := &#8216;identifer or literal&#8217;</p>
<p>op will include usual comparison operators soon. List can only be specified if op is ‘in’. Code follows, you should be able to add the missing pieces yourself as not much more can be revealed.:</p>
<p>public static partial class Parser   <br />{    <br />&#160;&#160;&#160; static Expression BuildTree( string expr )    <br />&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; int startIndex = 0;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; Stack&lt;Expression&gt; stack = new Stack&lt;Expression&gt;( );    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; BuildTreeRecursive( expr , ref startIndex , stack );    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; return stack.Pop( );    <br />&#160;&#160;&#160; } </p>
<p>&#160;&#160;&#160; private static void BuildTreeRecursive( string expr , ref int startIndex , Stack&lt;Expression&gt; stack )   <br />&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; string combiner = null;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; while( startIndex &lt; expr.Length )    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Expression expr1 = null;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if( string.IsNullOrEmpty( combiner ) )    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; expr1 = RecognizeExpression( expr , ref startIndex );    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; EatWhiteSpace( expr , ref startIndex );    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; combiner = RecognizeOperator( expr , ref startIndex );    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Expression expr2 = null;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; switch( combiner.ToUpper( ) )    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; case &quot;AND&quot;:    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; expr2 = RecognizeExpression( expr , ref startIndex );    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; stack.Push( new BinaryExpression    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; LeftSide = expr1 ,    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; RightSide = expr2 ,    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Type = Expression.Operator.And    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; } );    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; EatWhiteSpace( expr , ref startIndex );    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; combiner = RecognizeOperator( expr , ref startIndex );    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; EatWhiteSpace( expr , ref startIndex );    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; break;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; case &quot;OR&quot;:    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; BuildTreeRecursive( expr , ref startIndex , stack );    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if( stack.Count &gt; 0 )    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; expr2 = stack.Pop( );    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if( stack.Count &gt; 0 )    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; expr1 = stack.Pop( );    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; stack.Push( new BinaryExpression    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; LeftSide = expr2 ,    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; RightSide = expr1 ,    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Type = Expression.Operator.Or    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; } );    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; EatWhiteSpace( expr , ref startIndex );    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; combiner = RecognizeOperator( expr , ref startIndex );    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; EatWhiteSpace( expr , ref startIndex );    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; break;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; }    <br />&#160;&#160;&#160; } </p>
<p>&#160;&#160;&#160; private static Expression RecognizeExpression( string expr , ref int startIndex )   <br />&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; EatWhiteSpace( expr , ref startIndex );    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; string attrib = RecognizeAttribute( expr , ref startIndex );    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; EatWhiteSpace( expr , ref startIndex );    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; string op = RecognizeOperator( expr , ref startIndex );    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; EatWhiteSpace( expr , ref startIndex );    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; switch( op.ToUpper( ) )    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; case &quot;=&quot;:    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; string value = RecognizeWord( expr , ref startIndex );    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return new BinaryExpression    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; LeftSide = new ConstantExpression( attrib ) ,    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; RightSide = new ConstantExpression( value ) ,    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Type = Expression.Operator.Equal    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; };    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; case &quot;IN&quot;:    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; List&lt;string&gt; values = RecognizeList( expr , ref startIndex );    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return new BinaryExpression    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; LeftSide = new ConstantExpression( attrib ) ,    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Type = Expression.Operator.In    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; };    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; }    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; return new Expression( );    <br />&#160;&#160;&#160; } </p>
<p>&#160;&#160;&#160; private static List&lt;string&gt; RecognizeList( string expr , ref int startIndex )   <br />&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; List&lt;string&gt; values = new List&lt;string&gt;( );    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; if( expr.Length &lt;= startIndex || expr [ startIndex ] != &#8216;(&#8216; )    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return values; </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; ++startIndex; </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; do   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; EatWhiteSpace( expr , ref startIndex );    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; values.Add( RecognizeWord( expr , ref startIndex ) );    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if( expr.Length &lt;= startIndex || expr [ startIndex ] != &#8216;,&#8217; )    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; break;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; } while( startIndex &lt; expr.Length ); </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; EatWhiteSpace( expr , ref startIndex ); </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; if( expr.Length &lt;= startIndex || expr [ startIndex ] != &#8216;)&#8217; )   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return values; </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; ++startIndex; </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; return values;   <br />&#160;&#160;&#160; } </p>
<p>&#160;&#160;&#160; private static string RecognizeAttribute( string expr , ref int startIndex )   <br />&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; return RecognizeWord( expr , ref startIndex );    <br />&#160;&#160;&#160; } </p>
<p>&#160;&#160;&#160; private static string RecognizeOperator( string expr , ref int startIndex )   <br />&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; int start = startIndex;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; while( startIndex &lt; expr.Length &amp;&amp; !char.IsWhiteSpace( expr [ startIndex ] ) )    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ++startIndex;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; if( start != startIndex )    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return expr.Substring( start , startIndex &#8211; start );    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; return string.Empty;    <br />&#160;&#160;&#160; } </p>
<p>&#160;&#160;&#160; private static void EatWhiteSpace( string expr , ref int startIndex )   <br />&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; while( startIndex &lt; expr.Length &amp;&amp; char.IsWhiteSpace( expr [ startIndex ] ) )    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ++startIndex;    <br />&#160;&#160;&#160; } </p>
<p>&#160;&#160;&#160; private static string RecognizeWord( string expr , ref int startIndex )   <br />&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; int first = expr.IndexOf( &quot;&#8217;&quot; , startIndex ) , second = first != -1 ? expr.IndexOf( &quot;&#8217;&quot; , first + 1 ) : -1;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; if( first != -1 )    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if( second != -1 )    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; startIndex = second + 1;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return expr.Substring( first , second &#8211; first );    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; else    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; startIndex = expr.Length;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return expr.Substring( first );    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; return string.Empty;    <br />&#160;&#160;&#160; }    <br />}</p>
<p>This is what you should pass.</p>
<p>string expr = &quot;&#8217;attribute1&#8242; = &#8216;value1&#8242; and &#8216;attribute2&#8242; = &#8216;value2&#8242; or &#8216;attribute3&#8242; in (&#8216;value3&#8242;) or &#8216;attribute4&#8242; = &#8216;value4&#8242;&quot;; </p>
<p>Expression expression = Parser.BuildTree( expr );</p>
<br />Posted in Dev inside!, Tips  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tanveerbadar.wordpress.com/407/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tanveerbadar.wordpress.com/407/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tanveerbadar.wordpress.com/407/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tanveerbadar.wordpress.com/407/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tanveerbadar.wordpress.com/407/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tanveerbadar.wordpress.com/407/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tanveerbadar.wordpress.com/407/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tanveerbadar.wordpress.com/407/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tanveerbadar.wordpress.com/407/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tanveerbadar.wordpress.com/407/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tanveerbadar.wordpress.com/407/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tanveerbadar.wordpress.com/407/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tanveerbadar.wordpress.com/407/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tanveerbadar.wordpress.com/407/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tanveerbadar.wordpress.com&amp;blog=870146&amp;post=407&amp;subd=tanveerbadar&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tanveerbadar.wordpress.com/2009/10/23/story-of-a-parser/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4c17b54bbea172f608e552f9bf67d4f9?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Tanveer</media:title>
		</media:content>
	</item>
		<item>
		<title>Extension Method Abuse</title>
		<link>http://tanveerbadar.wordpress.com/2009/10/21/extension-method-abuse/</link>
		<comments>http://tanveerbadar.wordpress.com/2009/10/21/extension-method-abuse/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 11:03:04 +0000</pubDate>
		<dc:creator>Tanveer Badar</dc:creator>
				<category><![CDATA[Dev inside!]]></category>

		<guid isPermaLink="false">http://tanveerbadar.wordpress.com/2009/10/21/extension-method-abuse/</guid>
		<description><![CDATA[public static &#60;Return Type&#62; GetColumns( this int column , IList&#60; Conditions &#62; conditions ) { /* blah blah blah */ } Posted in Dev inside!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tanveerbadar.wordpress.com&amp;blog=870146&amp;post=406&amp;subd=tanveerbadar&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>public static &lt;Return Type&gt; GetColumns( this int column , IList&lt; Conditions &gt; conditions ) { /* blah blah blah */ }</p>
<br />Posted in Dev inside!  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tanveerbadar.wordpress.com/406/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tanveerbadar.wordpress.com/406/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tanveerbadar.wordpress.com/406/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tanveerbadar.wordpress.com/406/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tanveerbadar.wordpress.com/406/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tanveerbadar.wordpress.com/406/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tanveerbadar.wordpress.com/406/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tanveerbadar.wordpress.com/406/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tanveerbadar.wordpress.com/406/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tanveerbadar.wordpress.com/406/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tanveerbadar.wordpress.com/406/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tanveerbadar.wordpress.com/406/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tanveerbadar.wordpress.com/406/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tanveerbadar.wordpress.com/406/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tanveerbadar.wordpress.com&amp;blog=870146&amp;post=406&amp;subd=tanveerbadar&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tanveerbadar.wordpress.com/2009/10/21/extension-method-abuse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4c17b54bbea172f608e552f9bf67d4f9?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Tanveer</media:title>
		</media:content>
	</item>
		<item>
		<title>The Story of System.IO.FileNotFoundException</title>
		<link>http://tanveerbadar.wordpress.com/2009/10/21/the-story-of-system-io-filenotfoundexception/</link>
		<comments>http://tanveerbadar.wordpress.com/2009/10/21/the-story-of-system-io-filenotfoundexception/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 08:37:32 +0000</pubDate>
		<dc:creator>Tanveer Badar</dc:creator>
				<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://tanveerbadar.wordpress.com/2009/10/21/the-story-of-system-io-filenotfoundexception/</guid>
		<description><![CDATA[‘Impaled by my own sword’, ‘shot myself in the foot’ would be some fine explanations for this exception. Ages ago, I checked ‘break on first chance exception’ for Debug &#62; Exceptions &#62; System.IO.FileNotFoundException. Then, I spent 30 minutes wondering and arguing with others why there was this exception when my code was doing exactly what [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tanveerbadar.wordpress.com&amp;blog=870146&amp;post=405&amp;subd=tanveerbadar&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;margin-left:auto;margin-right:auto;"><em>‘Impaled by my own sword’, ‘shot myself in the foot’</em> would be some fine explanations for this exception. Ages ago, I checked ‘break on first chance exception’ for Debug &gt; Exceptions &gt; System.IO.FileNotFoundException. Then, I spent 30 minutes wondering and arguing with others why there was this exception when my code was doing exactly what it should have been doing and nothing changed.</p>
<p style="text-align:justify;margin-left:auto;margin-right:auto;">It was long before I remembered to check this setting. So, next time you are bitten by some unexplained exception better see if it is a first chance catch and whether you are catching it as such. Setting is global in VS and persists across projects.</p>
<br />Posted in Tips  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tanveerbadar.wordpress.com/405/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tanveerbadar.wordpress.com/405/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tanveerbadar.wordpress.com/405/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tanveerbadar.wordpress.com/405/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tanveerbadar.wordpress.com/405/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tanveerbadar.wordpress.com/405/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tanveerbadar.wordpress.com/405/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tanveerbadar.wordpress.com/405/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tanveerbadar.wordpress.com/405/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tanveerbadar.wordpress.com/405/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tanveerbadar.wordpress.com/405/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tanveerbadar.wordpress.com/405/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tanveerbadar.wordpress.com/405/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tanveerbadar.wordpress.com/405/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tanveerbadar.wordpress.com&amp;blog=870146&amp;post=405&amp;subd=tanveerbadar&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tanveerbadar.wordpress.com/2009/10/21/the-story-of-system-io-filenotfoundexception/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4c17b54bbea172f608e552f9bf67d4f9?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Tanveer</media:title>
		</media:content>
	</item>
		<item>
		<title>The Composition Which Isn&#8217;t</title>
		<link>http://tanveerbadar.wordpress.com/2009/10/10/the-composition-which-isnt/</link>
		<comments>http://tanveerbadar.wordpress.com/2009/10/10/the-composition-which-isnt/#comments</comments>
		<pubDate>Sat, 10 Oct 2009 12:11:35 +0000</pubDate>
		<dc:creator>Tanveer Badar</dc:creator>
				<category><![CDATA[Dev inside!]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://tanveerbadar.wordpress.com/2009/10/10/the-composition-which-isnt/</guid>
		<description><![CDATA[Imagine someone trying to write a class which composes two streams together. You better make it a stream itself, meaning something like this: class CompositeStream : IStream { public: &#160;&#160;&#160; CompositeStream( IStream* first , IStream* second ); &#160;&#160;&#160; // blah blah blah }; Or people will find it amusing that your class isn’t a stream [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tanveerbadar.wordpress.com&amp;blog=870146&amp;post=403&amp;subd=tanveerbadar&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Imagine someone trying to write a class which composes two streams together. You better make it a stream itself, meaning something like this:</p>
<p>class CompositeStream <strong>: IStream</strong>    <br />{    <br />public:    <br />&#160;&#160;&#160; CompositeStream( IStream* first , IStream* second );    <br />&#160;&#160;&#160; // blah blah blah    <br />};</p>
<p>Or people will find it amusing that your class isn’t a stream itself.</p>
<p>Similarly, for a mathematical library if you provide a composing function it better be a math-op itself or someone is going to end up in a sticky situation.</p>
<p>class SuperDuperComposingFunction <strong>: MathOp</strong>    <br />{    <br />public:    <br />&#160;&#160;&#160; SuperDuperComposingFunction( const std::vector&lt; MathOp* &gt;&amp; operations );    <br />&#160;&#160;&#160; // blah blah blah    <br />};</p>
<p>Or a cache manager for that matter. It is easy to provide default implementations for simple cache algorithms like LFU, LRU, FIFO etc. But things get interesting if you provide an extensibility point for others to compose them together. Who knows whether I want to archive emails which are older than 3 weeks and I haven’t read them more than once. Things are even more interesting if people need to sub-class your cache manage in order to use composite cache policies.</p>
<p>In the end, it helps to read these things instead of arguing when someone says “yeah sure, great idea. Just one thing, make it a ICachePolicy itself.”.</p>
<p>This post was brought to you by “Working with goons”.</p>
<br />Posted in Dev inside!, Tips  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tanveerbadar.wordpress.com/403/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tanveerbadar.wordpress.com/403/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tanveerbadar.wordpress.com/403/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tanveerbadar.wordpress.com/403/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tanveerbadar.wordpress.com/403/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tanveerbadar.wordpress.com/403/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tanveerbadar.wordpress.com/403/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tanveerbadar.wordpress.com/403/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tanveerbadar.wordpress.com/403/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tanveerbadar.wordpress.com/403/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tanveerbadar.wordpress.com/403/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tanveerbadar.wordpress.com/403/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tanveerbadar.wordpress.com/403/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tanveerbadar.wordpress.com/403/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tanveerbadar.wordpress.com&amp;blog=870146&amp;post=403&amp;subd=tanveerbadar&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tanveerbadar.wordpress.com/2009/10/10/the-composition-which-isnt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4c17b54bbea172f608e552f9bf67d4f9?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Tanveer</media:title>
		</media:content>
	</item>
		<item>
		<title>Infinite Circular Looping</title>
		<link>http://tanveerbadar.wordpress.com/2009/09/30/infinite-circular-looping/</link>
		<comments>http://tanveerbadar.wordpress.com/2009/09/30/infinite-circular-looping/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 17:19:26 +0000</pubDate>
		<dc:creator>Tanveer Badar</dc:creator>
				<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://tanveerbadar.wordpress.com/2009/09/30/infinite-circular-looping/</guid>
		<description><![CDATA[Want to turn a linear sequence into a circular one so you have go round and round over it as long as needed? Here is how (with the added bonus of resetting and stopping the iteration) &#160;&#160; IEnumerable&#60;T&#62; GetNextInterval&#60;T&#62;( IEnumerable&#60;T&#62; input ) &#160;&#160;&#160;&#160;&#160;&#160;&#160; { &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; bool flag = true; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; while( flag ) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; { [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tanveerbadar.wordpress.com&amp;blog=870146&amp;post=400&amp;subd=tanveerbadar&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Want to turn a linear sequence into a circular one so you have go round and round over it as long as needed? Here is how (with the added bonus of resetting and stopping the iteration)</p>
<p>&#160;&#160; IEnumerable&lt;T&gt; GetNextInterval&lt;T&gt;( IEnumerable&lt;T&gt; input )   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; bool flag = true;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; while( flag )    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; input.Reset( );    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; foreach( T t in input )    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if( end )    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; flag = false;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; end = false;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; break;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if( reset )    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; reset = false;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; break;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; yield return t;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</p>
<p>Setting reset to true short circuits the loop and starts from beginning again. Setting end to true terminates it entirely. </p>
<br />Posted in Tips  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tanveerbadar.wordpress.com/400/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tanveerbadar.wordpress.com/400/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tanveerbadar.wordpress.com/400/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tanveerbadar.wordpress.com/400/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tanveerbadar.wordpress.com/400/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tanveerbadar.wordpress.com/400/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tanveerbadar.wordpress.com/400/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tanveerbadar.wordpress.com/400/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tanveerbadar.wordpress.com/400/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tanveerbadar.wordpress.com/400/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tanveerbadar.wordpress.com/400/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tanveerbadar.wordpress.com/400/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tanveerbadar.wordpress.com/400/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tanveerbadar.wordpress.com/400/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tanveerbadar.wordpress.com&amp;blog=870146&amp;post=400&amp;subd=tanveerbadar&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tanveerbadar.wordpress.com/2009/09/30/infinite-circular-looping/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4c17b54bbea172f608e552f9bf67d4f9?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Tanveer</media:title>
		</media:content>
	</item>
		<item>
		<title>Solution to XmlTextReader&#8217;s Fiasco</title>
		<link>http://tanveerbadar.wordpress.com/2009/09/28/solution-to-xmltextreaders-fiasco/</link>
		<comments>http://tanveerbadar.wordpress.com/2009/09/28/solution-to-xmltextreaders-fiasco/#comments</comments>
		<pubDate>Mon, 28 Sep 2009 17:22:00 +0000</pubDate>
		<dc:creator>Tanveer Badar</dc:creator>
				<category><![CDATA[Fun]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://tanveerbadar.wordpress.com/2009/09/28/solution-to-xmltextreaders-fiasco/</guid>
		<description><![CDATA[He’s not that knowledgeable. Mr. pretentious. And he didn’t try this either: &#8221;, hexadecimal value 0x1B, is an invalid character. Line 46, position 128. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tanveerbadar.wordpress.com&amp;blog=870146&amp;post=399&amp;subd=tanveerbadar&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>He’s not that knowledgeable. <a href="http://www.blogger.com/profile/00801838911557326371" target="_blank">Mr. pretentious</a>. And he didn’t try this either: </p>
<blockquote><h2><i>&#8221;, hexadecimal value 0x1B, is an invalid character. Line 46, position 128.</i> </h2>
<p> <font face="Arial, Helvetica, Geneva, SunSans-Regular, sans-serif "><b>Description: </b>An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.       </p>
<p><b>Exception Details: </b>System.Xml.XmlException: &#8221;, hexadecimal value 0x1B, is an invalid character. Line 46, position 128.       <br /></font></p></blockquote>
<p>The simple solution is to set CheckCharacters = false; And since you would like to know what the heck am I talking about? XmlTextReader is in the bad habit of failing over Unicode characters.</p>
<br />Posted in Fun, Tips  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tanveerbadar.wordpress.com/399/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tanveerbadar.wordpress.com/399/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tanveerbadar.wordpress.com/399/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tanveerbadar.wordpress.com/399/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tanveerbadar.wordpress.com/399/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tanveerbadar.wordpress.com/399/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tanveerbadar.wordpress.com/399/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tanveerbadar.wordpress.com/399/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tanveerbadar.wordpress.com/399/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tanveerbadar.wordpress.com/399/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tanveerbadar.wordpress.com/399/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tanveerbadar.wordpress.com/399/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tanveerbadar.wordpress.com/399/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tanveerbadar.wordpress.com/399/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tanveerbadar.wordpress.com&amp;blog=870146&amp;post=399&amp;subd=tanveerbadar&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tanveerbadar.wordpress.com/2009/09/28/solution-to-xmltextreaders-fiasco/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4c17b54bbea172f608e552f9bf67d4f9?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Tanveer</media:title>
		</media:content>
	</item>
		<item>
		<title>Amazing Trace</title>
		<link>http://tanveerbadar.wordpress.com/2009/09/23/amazing-trace/</link>
		<comments>http://tanveerbadar.wordpress.com/2009/09/23/amazing-trace/#comments</comments>
		<pubDate>Wed, 23 Sep 2009 18:33:19 +0000</pubDate>
		<dc:creator>Tanveer Badar</dc:creator>
				<category><![CDATA[Funnier]]></category>

		<guid isPermaLink="false">http://tanveerbadar.wordpress.com/2009/09/23/amazing-trace/</guid>
		<description><![CDATA[3&#160;&#160;&#160; 39 ms&#160;&#160;&#160; 34 ms&#160;&#160;&#160; 42 ms&#160; 203.99.170.110 4&#160;&#160;&#160; 42 ms&#160;&#160;&#160; 42 ms&#160;&#160;&#160; 42 ms&#160; 221.120.251.9 5&#160;&#160;&#160; 41 ms&#160;&#160;&#160; 42 ms&#160;&#160;&#160; 42 ms&#160; 202.125.128.131 6&#160;&#160;&#160; 43 ms&#160;&#160;&#160; 42 ms&#160;&#160;&#160; 41 ms&#160; 221.120.250.254 7&#160;&#160; 174 ms&#160;&#160; 179 ms&#160;&#160; 178 ms&#160; 166.49.170.17 8&#160;&#160; 184 ms&#160;&#160; 178 ms&#160;&#160; 179 ms&#160; 166.49.135.139 9&#160;&#160; 175 ms&#160;&#160; 179 ms&#160;&#160; 178 ms&#160; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tanveerbadar.wordpress.com&amp;blog=870146&amp;post=398&amp;subd=tanveerbadar&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>3&#160;&#160;&#160; 39 ms&#160;&#160;&#160; 34 ms&#160;&#160;&#160; 42 ms&#160; 203.99.170.110    <br />4&#160;&#160;&#160; 42 ms&#160;&#160;&#160; 42 ms&#160;&#160;&#160; 42 ms&#160; 221.120.251.9     <br />5&#160;&#160;&#160; 41 ms&#160;&#160;&#160; 42 ms&#160;&#160;&#160; 42 ms&#160; 202.125.128.131     <br />6&#160;&#160;&#160; 43 ms&#160;&#160;&#160; 42 ms&#160;&#160;&#160; 41 ms&#160; 221.120.250.254     <br />7&#160;&#160; 174 ms&#160;&#160; 179 ms&#160;&#160; 178 ms&#160; 166.49.170.17     <br />8&#160;&#160; 184 ms&#160;&#160; 178 ms&#160;&#160; 179 ms&#160; 166.49.135.139     <br />9&#160;&#160; 175 ms&#160;&#160; 179 ms&#160;&#160; 178 ms&#160; 166.49.208.125     <br />10&#160;&#160; 269 ms&#160;&#160; 272 ms&#160;&#160; 264 ms&#160; 166.49.164.65     <br />11&#160;&#160; 414 ms&#160;&#160; 417 ms&#160;&#160; 418 ms&#160; 206.223.115.17     <br />12&#160;&#160; 415 ms&#160;&#160; 408 ms&#160;&#160; 409 ms&#160; 209.240.199.162     <br />13&#160;&#160; 422 ms&#160;&#160; 426 ms&#160;&#160; 434 ms&#160; 207.46.43.3     <br />14&#160;&#160; 419 ms&#160;&#160; 417 ms&#160;&#160; 418 ms&#160; 207.46.43.39     <br />15&#160;&#160; 432 ms&#160;&#160; 434 ms&#160;&#160; 443 ms&#160; 207.46.43.117     <br />16&#160;&#160; 441 ms&#160;&#160; 443 ms&#160;&#160; 443 ms&#160; 207.46.43.184     <br />17&#160;&#160; 439 ms&#160;&#160; 435 ms&#160;&#160; 434 ms&#160; 207.46.43.172     <br />18&#160;&#160; 438 ms&#160;&#160; 435 ms&#160;&#160; 434 ms&#160; <strong>10.22.8.50</strong></p>
<p>Have you ever seen 10.x.y.z appearing on tracert output before?</p>
<br />Posted in Funnier  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tanveerbadar.wordpress.com/398/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tanveerbadar.wordpress.com/398/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tanveerbadar.wordpress.com/398/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tanveerbadar.wordpress.com/398/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tanveerbadar.wordpress.com/398/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tanveerbadar.wordpress.com/398/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tanveerbadar.wordpress.com/398/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tanveerbadar.wordpress.com/398/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tanveerbadar.wordpress.com/398/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tanveerbadar.wordpress.com/398/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tanveerbadar.wordpress.com/398/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tanveerbadar.wordpress.com/398/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tanveerbadar.wordpress.com/398/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tanveerbadar.wordpress.com/398/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tanveerbadar.wordpress.com&amp;blog=870146&amp;post=398&amp;subd=tanveerbadar&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tanveerbadar.wordpress.com/2009/09/23/amazing-trace/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4c17b54bbea172f608e552f9bf67d4f9?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Tanveer</media:title>
		</media:content>
	</item>
	</channel>
</rss>
