<?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>Aftab Ahmed&#039;s Blog</title>
	<atom:link href="http://techknowlog.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://techknowlog.wordpress.com</link>
	<description>modern software development</description>
	<lastBuildDate>Fri, 06 Jan 2012 16:00:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='techknowlog.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Aftab Ahmed&#039;s Blog</title>
		<link>http://techknowlog.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://techknowlog.wordpress.com/osd.xml" title="Aftab Ahmed&#039;s Blog" />
	<atom:link rel='hub' href='http://techknowlog.wordpress.com/?pushpress=hub'/>
		<item>
		<title>An Interesting Discussion on Software Estimation</title>
		<link>http://techknowlog.wordpress.com/2009/06/05/an-interesting-discussion-on-software-estimation/</link>
		<comments>http://techknowlog.wordpress.com/2009/06/05/an-interesting-discussion-on-software-estimation/#comments</comments>
		<pubDate>Fri, 05 Jun 2009 04:01:55 +0000</pubDate>
		<dc:creator>aftab</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[planix]]></category>
		<category><![CDATA[planning poker]]></category>
		<category><![CDATA[software estimation]]></category>
		<category><![CDATA[tagets]]></category>

		<guid isPermaLink="false">http://techknowlog.wordpress.com/2009/06/05/an-interesting-discussion-on-software-estimation/</guid>
		<description><![CDATA[Scott Hanselman has an interesting discussion on the ever elusive mirage of accurate software esitmation here. It also points to a number of software estimation techniques like Wideband Delphi, Proxy etc along with softwares that can help you with the estimation, like Planix, planningpoker, Steve McConnel’s Construx Estimate and SpreadsheetGear. The post is very accurately [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=techknowlog.wordpress.com&amp;blog=6266169&amp;post=34&amp;subd=techknowlog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Scott Hanselman has an interesting discussion on the ever elusive mirage of accurate software esitmation <a href="http://www.hanselman.com/blog/SoftwareEstimationRememberThatTargetsAreNotEstimates.aspx" target="_blank">here</a>.</p>
<p>It also points to a number of software estimation techniques like Wideband Delphi, Proxy etc along with softwares that can help you with the estimation, like <a href="http://app.planixonline.com" target="_blank">Planix</a>, <a href="http://www.planningpoker.com" target="_blank">planningpoker</a>, <a href="http://stevemcconnell.com/" target="_blank">Steve McConnel’s</a> <a href="http://www.construx.com/Page.aspx?nid=68" target="_blank">Construx Estimate</a> and <a href="http://www.spreadsheetgear.com" target="_blank">SpreadsheetGear</a>. </p>
<p>The post is very accurately titled as <a href="http://www.hanselman.com/blog/SoftwareEstimationRememberThatTargetsAreNotEstimates.aspx">Software Estimation: Remember that Targets are not Estimates</a>.</p>
<p>I liked the quote from Steve McConnel’s Book, <a href="http://www.amazon.com/Software-Estimation-Demystifying-Practices-Microsoft/dp/0735605351" target="_blank">Software Estimation: Demystifying the Black Art</a>: </p>
<blockquote><p><i>Considering that <strong>optimism is a near-universal fact of human nature</strong>, software estimates are often undermined by what I think of as a Collusion of Optimists. Developers present estimates that are optimistic. Executives like the optimistic estimates because they imply that desirable business targets are achievable. Managers like the estimates because they imply that they can support upper management&#8217;s objectives. And so the software project is off and running with no one ever taking a critical look at whether the estimates were well founded in the first place.</i></p>
</blockquote>
<p>This post is a nice reminder that, Targets are not estimates.</p>
<p>Happy Programming!</p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/techknowlog.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/techknowlog.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/techknowlog.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/techknowlog.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/techknowlog.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/techknowlog.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/techknowlog.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/techknowlog.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/techknowlog.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/techknowlog.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/techknowlog.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/techknowlog.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/techknowlog.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/techknowlog.wordpress.com/34/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=techknowlog.wordpress.com&amp;blog=6266169&amp;post=34&amp;subd=techknowlog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://techknowlog.wordpress.com/2009/06/05/an-interesting-discussion-on-software-estimation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8873e31be5e3fa081c0cc227841490ea?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">aftab</media:title>
		</media:content>
	</item>
		<item>
		<title>A very quick guide to Agile Development</title>
		<link>http://techknowlog.wordpress.com/2009/06/04/a-very-quick-guide-to-agile-development/</link>
		<comments>http://techknowlog.wordpress.com/2009/06/04/a-very-quick-guide-to-agile-development/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 23:58:52 +0000</pubDate>
		<dc:creator>aftab</dc:creator>
				<category><![CDATA[Agile Development]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[agile estimation]]></category>
		<category><![CDATA[extreme programming]]></category>

		<guid isPermaLink="false">http://techknowlog.wordpress.com/2009/06/04/a-very-quick-guide-to-agile-development/</guid>
		<description><![CDATA[Here at RocketResearch.com you can find a very quick overview of agile development, It has everything to get a quick head start,&#160; like a five minute guide to scrum, getting started with XP, agile estimation etc. Happy Programming!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=techknowlog.wordpress.com&amp;blog=6266169&amp;post=33&amp;subd=techknowlog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.redrockresearch.com/.%5CfrmAgileDevelopmentModel.aspx">Here</a> at RocketResearch.com you can find a very quick overview of agile development,</p>
<p>It has everything to get a quick head start,&#160; like a five minute guide to scrum, getting started with XP, agile estimation etc.</p>
<p>Happy Programming!</p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/techknowlog.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/techknowlog.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/techknowlog.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/techknowlog.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/techknowlog.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/techknowlog.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/techknowlog.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/techknowlog.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/techknowlog.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/techknowlog.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/techknowlog.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/techknowlog.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/techknowlog.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/techknowlog.wordpress.com/33/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=techknowlog.wordpress.com&amp;blog=6266169&amp;post=33&amp;subd=techknowlog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://techknowlog.wordpress.com/2009/06/04/a-very-quick-guide-to-agile-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8873e31be5e3fa081c0cc227841490ea?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">aftab</media:title>
		</media:content>
	</item>
		<item>
		<title>Client Callbacks in ASP.Net</title>
		<link>http://techknowlog.wordpress.com/2009/06/02/client-callbacks-in-asp-net/</link>
		<comments>http://techknowlog.wordpress.com/2009/06/02/client-callbacks-in-asp-net/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 17:50:56 +0000</pubDate>
		<dc:creator>aftab</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[ASP.Net]]></category>
		<category><![CDATA[Codeproject]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[callback]]></category>
		<category><![CDATA[clientside]]></category>
		<category><![CDATA[ecmascript]]></category>
		<category><![CDATA[ICallbackEventHandler]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://techknowlog.wordpress.com/2009/06/02/client-callbacks-in-asp-net/</guid>
		<description><![CDATA[By Default ASP.Net pages communicate with the server through a mechanism call “PostBack”. Postback is very useful and efficient, except for the cases, where 1) You have a huge page, with a lot of processing required at server, so doing all that processing on every postback is not only waste of resources on the server, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=techknowlog.wordpress.com&amp;blog=6266169&amp;post=32&amp;subd=techknowlog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>By Default ASP.Net pages communicate with the server through a mechanism call “PostBack”. Postback is very useful and efficient, except for the cases, where 1) You have a huge page, with a lot of processing required at server, so doing all that processing on every postback is not only waste of resources on the server, but also hurts the user experience. 2) You have client side variable, which will be lost on page refresh(i.e. postback).</p>
<p>You can avoid both these limitations by introducing Client <strong>Callbacks</strong> in your application. In a client callback a client side event makes a request to the server, at server the page is initiated, it members are created, however page runs a modified version of its life cycle and only method that is marked for invocation is called; that, then can return a value that can be read using another client side function. </p>
<p>Through out this process, page is available to the user and results are quick in most of the cases as on a small amount of data is being exchanged between client and the server.</p>
<p>To implement client callbacks you need to do some work both on server side as well as client side. </p>
<p>On server side, you need to: </p>
<blockquote><ol>
<li><font color="#400040">Implement ICallBackEventHandler in the page, that you want to use callbacks in. It have two methods i.e. RaiseCallbackEvent and GetCallbackResults </font></li>
<li><font color="#400040">Provide implementation for RaiseCallBackEvent, this is the method is invoked by the client to perform callbacks. This method accepts string as an argument. </font></li>
<li><font color="#400040">Provide implementation for GetCallbackResults, this method is invoked by the server, to process the request and return the results to the client as a string </font></li>
<li><font color="#400040">Retrieve a reference of a client side function (Using ClientScript.GetCallbackEventReference method), this function will be invoked as the result of server side processing, and it can be used to process any results coming back from server </font></li>
<li><font color="#0080ff"><font color="#400040">Register a client side script, using Page.ClientScript.RegisterClientScriptBlock method, that will make a call to the server.</font>&#160;</font></li>
</ol>
</blockquote>
<p>On ClientSide, you need to:</p>
<blockquote><ol>
<li><font color="#400040">Implement the function that you provided as an argument in step 4 above </font></li>
<li><font color="#400040">Call the function you registered in step 5 above, on a client side event.</font></li>
</ol>
</blockquote>
<p>Lets look at the code that you will use to implement your client call backs. In our demo project, we have two comboboxes on our asp.net page. One contains a list of departments and other a list of employees in the selected department. What we want to do is, fill employee combobox with the respective department employees, whenever our user changes department in Department combobox, without doing a postback.</p>
<p>First things First; Implement ICallbackEventHandler interface</p>
<blockquote><p><font color="#0080ff">public partial class _Default : System.Web.UI.Page,ICallbackEventHandler</font></p>
</blockquote>
<p>Implement two methods of ICallbackEventHandler</p>
<blockquote><p><font color="#0080ff">#region ICallbackEventHandler Members       <br />&#160;&#160;&#160; /// &lt;summary&gt;        <br />&#160;&#160;&#160; /// this method Returns the results of a callback event.        <br />&#160;&#160;&#160; /// &lt;/summary&gt;        <br />&#160;&#160;&#160; /// &lt;returns&gt;&lt;/returns&gt;        <br />&#160;&#160;&#160; public string </font><font color="#0080ff"><strong>GetCallbackResult()         <br /></strong>&#160;&#160;&#160; {        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; //as only strings can be sent back to the client, we are will iterate through the list of        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; //employees and convert it into comma delimited string        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; string employeelist=&quot;&quot;; </font></p>
<p><font color="#0080ff">&#160;&#160;&#160;&#160;&#160;&#160;&#160; foreach (Department dept in departmetList)       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; {        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (dept.Name == deptArg)        <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; foreach (Employee emp in dept.Employeelist)        <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; employeelist += emp.Name;        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; employeelist += &quot;,&quot;;        <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; } </font></p>
<p><font color="#0080ff">&#160;&#160;&#160;&#160;&#160;&#160;&#160; return employeelist;       <br />&#160;&#160;&#160; } </font></p>
<p><font color="#0080ff">&#160;&#160;&#160; /// &lt;summary&gt;       <br />&#160;&#160;&#160; /// This method is invoked by the client, this will be used to receive parameter values from the client        <br />&#160;&#160;&#160; /// &lt;/summary&gt;        <br />&#160;&#160;&#160; /// &lt;param name=&quot;eventArgument&quot;&gt;&lt;/param&gt;        <br />&#160;&#160;&#160; public void </font><font color="#0080ff"><strong>RaiseCallbackEvent(string eventArgument)         <br /></strong>&#160;&#160;&#160; {        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; //right now all we are doing is to set the class level variable to eventArgument        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; //that was sent by the client, recall that it is departments name.        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; deptArg = eventArgument;        <br />&#160;&#160;&#160; }</font></p>
</blockquote>
<p>In your page_load event handler, first retrieve the reference of client function that will be invoked as the result of call back using ClientScriptManager.GetCallbackEventReference, </p>
<blockquote><p><font color="#0080ff">string callbackEventReference = Page.ClientScript.GetCallbackEventReference(this, &quot;arg&quot;, &quot;GetResults&quot;, &quot;&quot;); </font></p>
</blockquote>
<p>this method has several overloads, the one we have used takes target (in this case “page”), the “argument” that was passed by the client, name of the client side event handler that received the result of callback event and context as arguments. Context is any client script that will be evaluated prior to making a callback request. In this case we have passed an empty string.</p>
<p>Then you need to build and register a client side script, that will call this CallBackEventReference, this is the script that will make the call to the server.</p>
<blockquote><p><font color="#0080ff">string callbackScript; </font></p>
<p><font color="#0080ff">callbackScript = &quot;function CallServer(arg){&quot; + callbackEventReference + &quot;;}&quot;; </font></p>
<p><font color="#0080ff">//register callbackScript with the client using ClientScriptManager.RegisterClientScriptBlock       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; Page.ClientScript.RegisterClientScriptBlock(this.GetType(), &quot;CallServer&quot;, callbackScript, true);</font></p>
</blockquote>
<p>So this was all that you need to do in our server side code, and now we will look at the client side code that we need to write to complete our client Callback.</p>
<p>First we will write the function (using ECMAScript) in script block of our aspx file, GetResults; that we have been referencing in our code above, </p>
<blockquote><p>&#160;&#160;&#160; <font color="#0080ff">function GetResults(result)       <br />&#160;&#160;&#160; {        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; if(result!=&quot;&quot;)        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; {        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; var array=result.split(&quot;,&quot;);        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; for (var i=0;i&lt;array.length;i++) {        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; option = new Option(array[i],array[i]);        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; var slc_target = document.getElementById(&quot;ddlEmployee&quot;);        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; slc_target.options[i] = option;        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></p>
<p><font color="#0080ff">&#160;&#160;&#160;&#160;&#160;&#160;&#160; }       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; else        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; {        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; //do something        <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; }        <br />&#160;&#160;&#160; }</font></p>
</blockquote>
<p>This function is accepting results; which is a string and it is splitting it into an array. Then all it does is, bind “ddlEmployee” a combobox on the page, with this array.</p>
<p>and finally on a client side event of another combobox, “ddlDept”, we will invoke “CallServer” client side function that we registered using our serverside code and we will pass department as an argument.</p>
<blockquote><p><font color="#0080ff">&lt;asp:DropDownList Width=&quot;100&quot; ID=&quot;ddlDept&quot; runat=&quot;server&quot; OnChange=&quot;CallServer(ddlDept.value)&quot;&gt;</font></p>
</blockquote>
<p>I have attached the demo VS 2008 sollution <a href="http://cid-48ce8b09baf1e580.skydrive.live.com/self.aspx/Public/ClientCallBack.rar">here</a>, when you run the project, you can see that, whenever you change any value in the Department Combo box, values in Employees combobox are refereshed without making a postback to the server.</p>
<p>Download demo project <a href="http://cid-48ce8b09baf1e580.skydrive.live.com/self.aspx/Public/ClientCallBack.rar">here</a></p>
<p>And Happy Programming!</p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/techknowlog.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/techknowlog.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/techknowlog.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/techknowlog.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/techknowlog.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/techknowlog.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/techknowlog.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/techknowlog.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/techknowlog.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/techknowlog.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/techknowlog.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/techknowlog.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/techknowlog.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/techknowlog.wordpress.com/32/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=techknowlog.wordpress.com&amp;blog=6266169&amp;post=32&amp;subd=techknowlog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://techknowlog.wordpress.com/2009/06/02/client-callbacks-in-asp-net/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8873e31be5e3fa081c0cc227841490ea?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">aftab</media:title>
		</media:content>
	</item>
		<item>
		<title>15 Tips to be great software developer</title>
		<link>http://techknowlog.wordpress.com/2009/06/02/15-tips-to-be-great-software-developer/</link>
		<comments>http://techknowlog.wordpress.com/2009/06/02/15-tips-to-be-great-software-developer/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 04:47:59 +0000</pubDate>
		<dc:creator>aftab</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[great]]></category>
		<category><![CDATA[skills]]></category>

		<guid isPermaLink="false">http://techknowlog.wordpress.com/2009/06/02/15-tips-to-be-great-software-developer/</guid>
		<description><![CDATA[I just bumped into a great article by Miguel Angel Carrasco of http://www.realsoftwaredevelopment.com. It put forwards 15 tips, that if followed help you become not just good software developer but Great Software Developer, here is a summary and you can check the whole article here. Great quality code at lightening speed “100%” Correct interpretation of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=techknowlog.wordpress.com&amp;blog=6266169&amp;post=31&amp;subd=techknowlog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I just bumped into a great <a href="http://www.realsoftwaredevelopment.com/how-to-rate-a-software-developer/">article</a> by <a href="http://www.realsoftwaredevelopment.com/about/">Miguel Angel Carrasco</a> of <a href="http://www.realsoftwaredevelopment.com">http://www.realsoftwaredevelopment.com</a>. It put forwards 15 tips, that if followed help you become not just good software developer but Great Software Developer, here is a summary and you can check the whole article <a href="http://www.realsoftwaredevelopment.com/how-to-rate-a-software-developer/">here</a>.</p>
<blockquote><ol>
<li>Great quality code at lightening speed</li>
<li>“100%” Correct interpretation of problem</li>
<li>Look at the solution(s) from all possible angles before you start coding.</li>
<li>How much confidence your manager has in your code</li>
<li>How much confidence others have in your solution</li>
<li>Always meet users requirements</li>
<li>Staying up to date</li>
<li>Contributions towards the team</li>
<li>Make great meeting minutes</li>
<li>Be teachable and take criticism well</li>
<li>Be always available when needed</li>
<li>Dress professionally everyday</li>
<li>Communication abilities</li>
<li>Goal Settings skills</li>
<li>Organizational skills</li>
</ol>
</blockquote>
<p>Great list, Good job <a href="http://www.realsoftwaredevelopment.com/about/">Miguel Angel Carrasco</a></p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/techknowlog.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/techknowlog.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/techknowlog.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/techknowlog.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/techknowlog.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/techknowlog.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/techknowlog.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/techknowlog.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/techknowlog.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/techknowlog.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/techknowlog.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/techknowlog.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/techknowlog.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/techknowlog.wordpress.com/31/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=techknowlog.wordpress.com&amp;blog=6266169&amp;post=31&amp;subd=techknowlog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://techknowlog.wordpress.com/2009/06/02/15-tips-to-be-great-software-developer/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8873e31be5e3fa081c0cc227841490ea?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">aftab</media:title>
		</media:content>
	</item>
		<item>
		<title>Writing a complex custom configuration section</title>
		<link>http://techknowlog.wordpress.com/2009/05/29/writing-a-complex-custom-configuration-section/</link>
		<comments>http://techknowlog.wordpress.com/2009/05/29/writing-a-complex-custom-configuration-section/#comments</comments>
		<pubDate>Fri, 29 May 2009 02:43:32 +0000</pubDate>
		<dc:creator>aftab</dc:creator>
				<category><![CDATA[.Net Framework]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Codeproject]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[configuration]]></category>
		<category><![CDATA[ConfigurationElementCollection]]></category>
		<category><![CDATA[configurationmanager]]></category>
		<category><![CDATA[ConfigurationProperty]]></category>
		<category><![CDATA[configurationsection]]></category>

		<guid isPermaLink="false">http://techknowlog.wordpress.com/2009/05/29/writing-a-complex-custom-configuration-section/</guid>
		<description><![CDATA[Technorati Tags: C#,.Net Framework Here i posted another entry, showing implementation of a simple configuration section, now consider following listing &#60;customSection&#62;     &#60;elements&#62;       &#60;add name=&#8221;FirstAssembly.FirstType&#8221; assembly=&#8221;FirstAssembly&#8221; shouldrun=&#8221;true&#8221;&#62;&#60;/add&#62;     &#60;add name=&#8221;SecondAssembly.SecondType&#8221; assembly=&#8221;SecondAssembly&#8221; shouldrun=&#8221;true&#8221;&#62;&#60;/add&#62;     &#60;/elements&#62;   &#60;/customSection&#62; here we have “n” number of elements in the custom configuration section. To handle this kind of scenario, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=techknowlog.wordpress.com&amp;blog=6266169&amp;post=20&amp;subd=techknowlog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:ff975553-9ff1-4354-a2e2-06c31b853b07" class="wlWriterSmartContent" style="display:inline;float:none;margin:0;padding:0;">Technorati Tags: <a rel="tag" href="http://technorati.com/tags/C%23">C#</a>,<a rel="tag" href="http://technorati.com/tags/.Net+Framework">.Net Framework</a></div>
<p><a href="http://techknowlog.wordpress.com/2009/05/28/writing-a-custom-configuration-section/">Here</a> i posted another entry, showing implementation of a simple configuration section, now consider following listing</p>
<blockquote><p><span style="color:#0080ff;">&lt;customSection&gt;<br />
    &lt;elements&gt;<br />
      &lt;add name=&#8221;FirstAssembly.FirstType&#8221; assembly=&#8221;FirstAssembly&#8221; shouldrun=&#8221;true&#8221;&gt;&lt;/add&gt;<br />
    &lt;add name=&#8221;SecondAssembly.SecondType&#8221; assembly=&#8221;SecondAssembly&#8221; shouldrun=&#8221;true&#8221;&gt;&lt;/add&gt;<br />
    &lt;/elements&gt;<br />
  &lt;/customSection&gt;</span></p></blockquote>
<p>here we have “n” number of elements in the custom configuration section. To handle this kind of scenario, System.Configuration namespace provides you with ConfigurationPropertyCollection class and ConfigurationPropertyCollectionAttribute class. Your can use ConfigurationPropertyCollection to programmatically write you configuration section and ConfigurationPropertyCollectionAttribute  can be used to do the same job declaratively.</p>
<p>There are following steps involved in creating a custom configuration section handler with multiple entries.</p>
<blockquote>
<ol>
<li><span style="color:#0080ff;">Define a class (say CustomElement) to represent configuration section by inheriting it from ConfigurationElement class</span></li>
<li><span style="color:#0080ff;">Define a class to represent your configuration collection (say CustomeElementCollection) by inheriting it from ConfigurationElementCollection, this will hold a collection of the type you defined in step 1.</span></li>
<li><span style="color:#0080ff;">Define a class to represent your custom section (say CustomSection) by inheriting it from ConfigurationSection and Implement a property of type that you defined in step 2.</span></li>
</ol>
</blockquote>
<p>Here is the listing for CustomeElement Class</p>
<blockquote><p><span style="color:#0080ff;">public class CustomElement : ConfigurationElement<br />
    {<br />
        public CustomElement()<br />
        { </span></p>
<p><span style="color:#0080ff;">        } </span></p>
<p><span style="color:#0080ff;">        [ConfigurationProperty("name", IsRequired = true)]<br />
        public string Name<br />
        {<br />
            get { return (string)this["name"]; }<br />
            set { this["name"] = value; }<br />
        } </span></p>
<p><span style="color:#0080ff;">        [ConfigurationProperty("assembly", IsRequired = true)]<br />
        public string Assembly<br />
        {<br />
            get { return (string)this["assembly"]; }<br />
            set { this["assembly"] = value; }<br />
        } </span></p>
<p><span style="color:#0080ff;">        [ConfigurationProperty("shouldrun", IsRequired = true)]<br />
        public bool ShouldRun<br />
        {<br />
            get { return (bool)this["shouldrun"]; }<br />
            set { this["shouldrun"] = value; }<br />
        }<br />
    }</span></p></blockquote>
<p>and here is the listing for CustomElementCollection Class, its implementation is similar to any other Collection class,</p>
<blockquote><p><span style="color:#0080ff;">public class CustomeElementCollection : ConfigurationElementCollection<br />
    {<br />
        public CustomeElementCollection()<br />
        {<br />
            CustomElement myElement = (CustomElement)CreateNewElement();<br />
            Add(myElement);<br />
        }<br />
        public void Add(CustomElement customElement)<br />
        {<br />
            BaseAdd(customElement);<br />
        } </span></p>
<p><span style="color:#0080ff;">        protected override void BaseAdd(ConfigurationElement element)<br />
        {<br />
            base.BaseAdd(element, false);<br />
        } </span></p>
<p><span style="color:#0080ff;">        public override ConfigurationElementCollectionType CollectionType<br />
        {<br />
            get<br />
            {<br />
                return ConfigurationElementCollectionType.AddRemoveClearMap;<br />
            }<br />
        } </span></p>
<p><span style="color:#0080ff;">        protected override ConfigurationElement CreateNewElement()<br />
        {<br />
            return new CustomElement();<br />
        } </span></p>
<p><span style="color:#0080ff;">        protected override object GetElementKey(ConfigurationElement element)<br />
        {<br />
            return ((CustomElement)element).Name;<br />
        } </span></p>
<p><span style="color:#0080ff;">        public CustomElement this[int Index]<br />
        {<br />
            get<br />
            {<br />
                return (CustomElement)BaseGet(Index);<br />
            }<br />
            set<br />
            {<br />
                if (BaseGet(Index) != null)<br />
                {<br />
                    BaseRemoveAt(Index);<br />
                }<br />
                BaseAdd(Index,value);<br />
            }<br />
        } </span></p>
<p><span style="color:#0080ff;">        new public CustomElement this[string Name]<br />
        {<br />
            get<br />
            {<br />
                return (CustomElement)BaseGet(Name);<br />
            }<br />
        } </span></p>
<p><span style="color:#0080ff;">        public int indexof(CustomElement element)<br />
        {<br />
            return BaseIndexOf(element);<br />
        } </span></p>
<p><span style="color:#0080ff;">        public void Remove(CustomElement url)<br />
        {<br />
            if (BaseIndexOf(url) &gt;= 0)<br />
                BaseRemove(url.Name);<br />
        } </span></p>
<p><span style="color:#0080ff;">        public void RemoveAt(int index)<br />
        {<br />
            BaseRemoveAt(index);<br />
        } </span></p>
<p><span style="color:#0080ff;">        public void Remove(string name)<br />
        {<br />
            BaseRemove(name);<br />
        } </span></p>
<p><span style="color:#0080ff;">        public void Clear()<br />
        {<br />
            BaseClear();<br />
        } </span></p>
<p><span style="color:#0080ff;">    }</span></p></blockquote>
<p>and Finally, here is the listing for CustomSection Class,</p>
<blockquote><p><span style="color:#0080ff;">class CustomSection:ConfigurationSection<br />
    {<br />
        CustomElement element;<br />
        public CustomSection()<br />
        {<br />
            element = new CustomElement();<br />
        } </span></p>
<p><span style="color:#0080ff;">        [ConfigurationProperty("elements", IsDefaultCollection = false)]<br />
        [ConfigurationCollection(typeof(CustomeElementCollection),AddItemName="add",<br />
            ClearItemsName="clear",<br />
            RemoveItemName="remove")]<br />
        public CustomeElementCollection Elements<br />
        {<br />
            get {<br />
                return (CustomeElementCollection)base["elements"]; }<br />
        }<br />
    }</span></p></blockquote>
<p>Next add following settings to your configuration file</p>
<blockquote><p><span style="color:#0080ff;">&lt;configSections&gt;<br />
    &lt;section name=&#8221;customSection&#8221; type=&#8221;ConfigurationDemo.CustomSection, ConfigurationDemo&#8221; /&gt;<br />
  &lt;/configSections&gt;</span></p>
<p><span style="color:#0080ff;">  &lt;customSection&gt;<br />
    &lt;elements&gt;<br />
      &lt;add name=&#8221;FirstAssembly.FirstType&#8221; assembly=&#8221;FirstAssembly&#8221; shouldrun=&#8221;true&#8221;&gt;&lt;/add&gt;<br />
    &lt;add name=&#8221;SecondAssembly.SecondType&#8221; assembly=&#8221;SecondAssembly&#8221; shouldrun=&#8221;true&#8221;&gt;&lt;/add&gt;<br />
    &lt;/elements&gt;<br />
  &lt;/customSection&gt;</span></p></blockquote>
<p>in the end put this custom section to use like this,</p>
<blockquote><p><span style="color:#0080ff;">CustomSection myCustomSection = (CustomSection)ConfigurationManager.GetSection(&#8220;customSection2&#8243;); </span></p>
<p><span style="color:#0080ff;">            foreach (CustomElement element in mySecondSectionHandler.Elements)<br />
            {<br />
                if (element.Name != null &amp;&amp; element.Name != &#8220;&#8221;)<br />
                {<br />
                    string name = element.Name;<br />
                    string assembly = element.Assembly;<br />
                    bool shouldrun = element.ShouldRun;<br />
                }<br />
            }</span></p></blockquote><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/techknowlog.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/techknowlog.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/techknowlog.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/techknowlog.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/techknowlog.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/techknowlog.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/techknowlog.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/techknowlog.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/techknowlog.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/techknowlog.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/techknowlog.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/techknowlog.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/techknowlog.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/techknowlog.wordpress.com/20/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=techknowlog.wordpress.com&amp;blog=6266169&amp;post=20&amp;subd=techknowlog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://techknowlog.wordpress.com/2009/05/29/writing-a-complex-custom-configuration-section/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8873e31be5e3fa081c0cc227841490ea?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">aftab</media:title>
		</media:content>
	</item>
		<item>
		<title>Writing a Custom Configuration Section</title>
		<link>http://techknowlog.wordpress.com/2009/05/28/writing-a-custom-configuration-section/</link>
		<comments>http://techknowlog.wordpress.com/2009/05/28/writing-a-custom-configuration-section/#comments</comments>
		<pubDate>Thu, 28 May 2009 22:41:33 +0000</pubDate>
		<dc:creator>aftab</dc:creator>
				<category><![CDATA[.Net Framework]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[configuration]]></category>
		<category><![CDATA[configurationmanager]]></category>
		<category><![CDATA[ConfigurationProperty]]></category>
		<category><![CDATA[configurationsection]]></category>

		<guid isPermaLink="false">http://techknowlog.wordpress.com/2009/05/28/writing-a-custom-configuration-section/</guid>
		<description><![CDATA[Writing your own configuration section involves following steps: - Define xml structure that will fulfill your configuration needs Write a class that will represent your custom section by inheriting it from System.Configuration.ConfigurationSection Add your section, assembly and type representing it, in configSections in your config file. Add your section anywhere in your config file, within [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=techknowlog.wordpress.com&amp;blog=6266169&amp;post=17&amp;subd=techknowlog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Writing your own configuration section involves following steps: -</p>
<blockquote>
<ol>
<li><span style="color:#0080ff;">Define xml structure that will fulfill your configuration needs </span></li>
<li><span style="color:#0080ff;">Write a class that will represent your custom section by inheriting it from System.Configuration.ConfigurationSection </span></li>
<li><span style="color:#0080ff;">Add your section, assembly and type representing it, in configSections in your config file. </span></li>
<li><span style="color:#0080ff;">Add your section anywhere in your config file, within &lt;configuration&gt; root. </span></li>
<li><span style="color:#0080ff;">Retrieve your custom section using ConfigurationManager.GetSection(&#8220;&lt;SectionName&#8221;&gt;”) </span></li>
</ol>
</blockquote>
<p>Please note that to use ConfigurationSection class you need to add reference to System.Configuration.dll in your project.</p>
<p>Consider Following xml structure:</p>
<blockquote><p><span style="color:#0080ff;">&lt;customSection assembly=&#8221;FirstAssembly&#8221; type=&#8221;FirstAssembly.FirstClass&#8221; shouldrun=&#8221;true&#8221;/&gt; </span></p></blockquote>
<p>Following code snippet defines handler for this configuration structure.</p>
<blockquote><p><span style="color:#0080ff;">class CustomSectionHandler:ConfigurationSection<br />
    {<br />
        public CustomSectionHandler()<br />
        {<br />
        } </span></p>
<p><span style="color:#0080ff;">        [ConfigurationProperty("assembly", IsRequired = true)]<br />
        public string Assembly<br />
        {<br />
            get { return (string)this["assembly"]; }<br />
            set { this["assembly"] = value; }<br />
        } </span></p>
<p><span style="color:#0080ff;">        [ConfigurationProperty("type",IsRequired=true)]<br />
        public string Type<br />
        {<br />
            get { return (string)this["type"]; }<br />
            set { this["type"] = value; }<br />
        } </span></p>
<p><span style="color:#0080ff;">        [ConfigurationProperty("shouldrun",IsRequired=true)]<br />
        public bool ShouldRun<br />
        {<br />
            get {return (bool)this["shouldrun"];}<br />
            set{this["shouldrun"]=value;}<br />
        }<br />
    }</span></p></blockquote>
<p>Here you have define a CustomSectionHandler class that is inheriting from Configuration.ConfigurationSection class then you have define three properties (representing three attributes of the custom section) and you have decorated all these properties with ConfigurationProperty Attribute.</p>
<p>Next add your section in your .config file in the configSections</p>
<blockquote><p><span style="color:#0080ff;">&lt;configSections&gt;<br />
    &lt;section name=&#8221;customSection&#8221; type=&#8221;ConfigurationDemo.CustomSectionHandler, ConfigurationDemo&#8221;/&gt;<br />
  &lt;/configSections&gt;</span></p></blockquote>
<p>where name is; just name of your section using which you can refer to it in your code and your configuration files while type is “&lt;fully qualified name of handler type&gt;,&lt;Assembly that contains it&gt;”.</p>
<p>SO that was it, your custom section handler is ready, now you can put it to your service like this,</p>
<blockquote><p><span style="color:#0080ff;">CustomSectionHandler mySectionHandler = (CustomSectionHandler) ConfigurationManager.GetSection(&#8220;customSection&#8221;); <br />
</span></p>
<p><span style="color:#0080ff;">string assembly = mySectionHandler.Assembly; <br />
string type = mySectionHandler.Type; <br />
bool shouldRun = mySectionHandler.ShouldRun;</span></p></blockquote>
<p> </p>
<p>Happy Programming!</p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/techknowlog.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/techknowlog.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/techknowlog.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/techknowlog.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/techknowlog.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/techknowlog.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/techknowlog.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/techknowlog.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/techknowlog.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/techknowlog.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/techknowlog.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/techknowlog.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/techknowlog.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/techknowlog.wordpress.com/17/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=techknowlog.wordpress.com&amp;blog=6266169&amp;post=17&amp;subd=techknowlog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://techknowlog.wordpress.com/2009/05/28/writing-a-custom-configuration-section/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8873e31be5e3fa081c0cc227841490ea?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">aftab</media:title>
		</media:content>
	</item>
		<item>
		<title>How to Finish a book?</title>
		<link>http://techknowlog.wordpress.com/2009/04/14/how-to-finish-a-book/</link>
		<comments>http://techknowlog.wordpress.com/2009/04/14/how-to-finish-a-book/#comments</comments>
		<pubDate>Tue, 14 Apr 2009 17:56:01 +0000</pubDate>
		<dc:creator>aftab</dc:creator>
				<category><![CDATA[Others]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[reading]]></category>

		<guid isPermaLink="false">http://techknowlog.wordpress.com/2009/04/14/how-to-finish-a-book/</guid>
		<description><![CDATA[I read a lot books, articles, blogs, everything that i can get my hand (and in good old days shopping bags made out of newspapers) , eyes(which includes people’s shirts) or browser (most notably codeproject.com) on. However in case of larger books, it was always rare that i will “finish” a book (with the curious [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=techknowlog.wordpress.com&amp;blog=6266169&amp;post=16&amp;subd=techknowlog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I read a lot books, articles, blogs, everything that i can get my hand (and in good old days shopping bags made out of newspapers) , eyes(which includes people’s shirts) or browser (most notably <a href="http://www.codeproject.com">codeproject.com</a>) on.</p>
<p>However in case of larger books, it was always rare that i will “finish” a book (with the curious exception of novels).</p>
<p>I used to wonder why? I am still not sure but probably i will loose interest due to continuous bombardment of information on a certain subject, may be our brain (my brain at least!) is not capable of handling too much information on a certain subject in one go or it doesn’t like information to be continuously presented in only one style. One thing was for sure, after staying with a book for some days, i will start longing for a switch (to another book). So i will keep switching from one book to another book, without finishing most of them.</p>
<p>One day i somehow bumped into this blog article,</p>
<p><a href="http://www.markforster.net/blog/2007/2/14/how-to-finish-books-once-you-start-them.html">How To Finish Books Once You Start Them</a></p>
<p>and Wow, i was able to finish a decently big (1000+ pages) book lately following this approach.</p>
<p>Following are the rules of this approach: -</p>
<ol>
<li>Have five active books.</li>
<li>Keep them in a pile (not stack, you can follow any order to read one of your active book)</li>
<li>After finishing a session with a book, put that book on top of the pile.</li>
<li>You can not read any book, but one of these five active books.</li>
<li>If you want to read a book, which is not in the pile, either wait until you finish one of them, or take out the book at the bottom of the pile and add a new one.</li>
</ol>
<p>may be you should try this approach and let me know if it worked for you or not?</p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/techknowlog.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/techknowlog.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/techknowlog.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/techknowlog.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/techknowlog.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/techknowlog.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/techknowlog.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/techknowlog.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/techknowlog.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/techknowlog.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/techknowlog.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/techknowlog.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/techknowlog.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/techknowlog.wordpress.com/16/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=techknowlog.wordpress.com&amp;blog=6266169&amp;post=16&amp;subd=techknowlog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://techknowlog.wordpress.com/2009/04/14/how-to-finish-a-book/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8873e31be5e3fa081c0cc227841490ea?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">aftab</media:title>
		</media:content>
	</item>
		<item>
		<title>New round of browser war</title>
		<link>http://techknowlog.wordpress.com/2008/09/09/3/</link>
		<comments>http://techknowlog.wordpress.com/2008/09/09/3/#comments</comments>
		<pubDate>Tue, 09 Sep 2008 13:52:36 +0000</pubDate>
		<dc:creator>aftab</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Browser war]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[IE 8]]></category>
		<category><![CDATA[Mozilla]]></category>

		<guid isPermaLink="false">http://techknowlog.wordpress.com/?p=3</guid>
		<description><![CDATA[Start of a new browser war, this time its going to be different.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=techknowlog.wordpress.com&amp;blog=6266169&amp;post=3&amp;subd=techknowlog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Google, by launching Chrome, has brought the old forgotten browser war back. It will be interesting to see how it changes the evolution of web and web browser in  the future.</p>
<p>One key difference however, between old and new browser war is, instead of two, this time we have four big players in the field; that is MS IE , Mozilla Firefox, Apple Safari and Google Chrome.</p>
<p>Microsoft, Mozilla and Google have respectively released IE 8 (beta), FF 3.0 and Chrome (beta) almost simultaneously.  If you ask me who is the winner, my answer would be Chrome is a clear winner at least in this round.</p>
<p>I first tried IE8 when IE Beta for developer was released but i could not use it any further as it was crashing again and again, whenever i will try to search anything using my Google Toolbar. So i had to uninstall it. I tried it again when IE 8 Beta 2 was released and i had to remove it again, as despite of MS claim that IE wont crash if one tab freezes due to some badly written script, it won&#8217;t crash the browser but only one tab,  in reality it was crashing every now and then. Out of frustration i would have to reopen all those sites again (in FF or Chrome).</p>
<p>Most noticeable aspect in the newest browser on the block, Chrome, is its speed as compared to IE 8 and even Firefox (which takes too long to start up). It was way faster then both of them.</p>
<p>Second most noticeable feature is its minimalistic design, with Tabs at the Top, a super address bar, which lets you add addresses and search strings in the same box and simple navigation. While using Google chrome, you will feel like being on your desktop with your applications arranged in different tabs. That fits very well in Google&#8217;s long term plans, where it wants web as the desktop and center of all kinds of computing.<br />
Chrome has another advantage; It is based on Web Toolkit, which conforms to W3 standards, so as far as rendering is concerned Chrome will be easier to develop applications against while IE is hardest in that regards due to many proprietary extensions by Microsoft (Even though they have announced that IE 8 is going to be standard conforming).</p><br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/techknowlog.wordpress.com/3/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/techknowlog.wordpress.com/3/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/techknowlog.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/techknowlog.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/techknowlog.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/techknowlog.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/techknowlog.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/techknowlog.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/techknowlog.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/techknowlog.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/techknowlog.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/techknowlog.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/techknowlog.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/techknowlog.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/techknowlog.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/techknowlog.wordpress.com/3/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=techknowlog.wordpress.com&amp;blog=6266169&amp;post=3&amp;subd=techknowlog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://techknowlog.wordpress.com/2008/09/09/3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8873e31be5e3fa081c0cc227841490ea?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">aftab</media:title>
		</media:content>
	</item>
	</channel>
</rss>
