<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-1583985620863717838</atom:id><lastBuildDate>Thu, 24 Oct 2024 15:00:48 +0000</lastBuildDate><category>ASP.Net</category><category>codeigniter</category><category>OAuth</category><category>Twitter</category><category>Dot Net 4.0</category><category>Scott Guthrie</category><category>Single Sign On</category><category>VS2010</category><category>A Short History of Nearly Everything</category><category>Albert Einestine</category><category>Bill Bryson</category><category>Binary Search</category><category>Business Intelligence</category><category>Caching</category><category>Call for Papers</category><category>Compilation</category><category>Cookies</category><category>Dot Net 3.5</category><category>Extension less URL</category><category>FaceBook</category><category>Forms Authentication</category><category>General law of relativity</category><category>Gmail</category><category>How to be a better programmer</category><category>ISessionIDManager</category><category>MVC</category><category>Menu</category><category>Microsoft</category><category>Microsoft Architecture Journal</category><category>PHP framework</category><category>Recommended Links</category><category>Robert Sedgewick</category><category>Session Management across sub domains</category><category>SessionIDManager</category><category>URL rewriting</category><category>cakePHP</category><title>The good old software engineer</title><description>There is no place like 127.0.0.1 :)</description><link>http://beenishkhan-technical.blogspot.com/</link><managingEditor>noreply@blogger.com (Beenish Khan)</managingEditor><generator>Blogger</generator><openSearch:totalResults>18</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1583985620863717838.post-3250246876574184052</guid><pubDate>Wed, 07 Apr 2010 01:37:00 +0000</pubDate><atom:updated>2010-04-06T18:58:11.254-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">A Short History of Nearly Everything</category><category domain="http://www.blogger.com/atom/ns#">Albert Einestine</category><category domain="http://www.blogger.com/atom/ns#">Bill Bryson</category><category domain="http://www.blogger.com/atom/ns#">General law of relativity</category><title>A Short History of Nearly Everything</title><description>&lt;a target=&quot;_blank&quot; href=&quot;http://en.wikipedia.org/wiki/A_Short_History_of_Nearly_Everything&quot;&gt;A short history of nearly everything&lt;/a&gt; is &lt;a target=&quot;_blank&quot; href=&quot;http://en.wikipedia.org/wiki/Bill_Bryson&quot;&gt;Bill Bryson&lt;/a&gt;&#39;s guide to scientific history which any layman could understand but that doesn&#39;t mean that the book is just too simple. It in fact goes on to discuss topics like Big Bang, General and special relativity, E = mc square, brownian motion, fossils, methods for finding the age of Earth etc. etc. but it&#39;s more about how masterfully Bryson has covered and explained all this. From scientific laws to personal details of scientists, it tells everything in an interesting style. And it managed to did what none of my Physics teachers could do, it made me understand Einestine&#39;s General law of relativity!&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When I was reading the book, I ended up making all these charts and hierarchies of how different scientist over a certain period managed to come across a discovery and it was just too much fun to not to share it here. So here&#39;s what I have decided, using this book, I&#39;ll chart out that how a certain discovery was made and some details about the scientist involved. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I see three advantages here, &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. It will make me remember all the information.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2. You or I can always refer back to these posts whenever in a hurry.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3. It would save you the time to do all this work, you&#39;ll get to the details directly!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It will be a slow and tedious process but I know I&#39;ll enjoy it and I hope you would too.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Saying all this, if you have to read just one book in your life then make sure that it&#39;s &#39;&lt;a target=&quot;_blank&quot; href=&quot;http://en.wikipedia.org/wiki/A_Short_History_of_Nearly_Everything&quot;&gt;A short history of nearly everything&lt;/a&gt;&#39;&lt;/div&gt;</description><link>http://beenishkhan-technical.blogspot.com/2010/04/short-history-of-nearly-everything.html</link><author>noreply@blogger.com (Beenish Khan)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1583985620863717838.post-8526710152332173228</guid><pubDate>Sun, 28 Mar 2010 12:30:00 +0000</pubDate><atom:updated>2010-03-28T06:01:35.201-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">codeigniter</category><category domain="http://www.blogger.com/atom/ns#">OAuth</category><category domain="http://www.blogger.com/atom/ns#">Twitter</category><title>Twitter OAuth Login - Part 3</title><description>1. &lt;a href=&quot;http://beenishkhan-technical.blogspot.com/2010/03/twitter-oauth-login-part-2.html&quot;&gt;Part 1&lt;/a&gt;&lt;br /&gt;2. &lt;a href=&quot;http://beenishkhan-technical.blogspot.com/2010/03/twitter-oauth-login-part-1.html&quot;&gt;Part 2&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Note : As mentioned in part 2 , we will be using Elliot Haughin&#39;s &lt;a target=&quot;_blank&quot; href=&quot;http://www.haughin.com/code/twitter/&quot;&gt;twitter library&lt;/a&gt; for this article. Please note that library uses &lt;a target=&quot;_blank&quot; href=&quot;http://www.codeigniter.com/&quot;&gt;codeigniter&lt;/a&gt; framework.&lt;br /&gt;&lt;br /&gt;So the actual coding integration is actually consist of totally three functions or actions.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;1. Create a Twitter login Button.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;All you need to do is this,&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;lt;a href=&quot;index.php/login/twitterLogin&quot; &amp;gt;&lt;br /&gt;&amp;lt;img style=&quot;border: 0px none ;&quot; src=&quot;images/connenct-twitter.jpg&quot; /&amp;gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;2. Create a function to handle Twitter button click&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In our above code, that function or page is, &#39;&lt;span style=&quot;font-weight: bold;&quot;&gt;index.php/login/twitterLogin&lt;/span&gt;&#39;. So when the user will click the link, this function will be called.&lt;br /&gt;&lt;br /&gt;This function will redirect the user to Twitter along with sending the consumer key and consumer secret key information. Now from where to get these keys ? If you remember in the last part we registered an application with Twitter, so when Twitter registers an application, it assigns the application a consumer and consumer secret . You can get this information from the application page.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO7uYw4KgrHuWfjlor0rmpEzmVTJ8XCsl4cPPBOAjclzOkAMiJTiwiOK8eGdZ4Dhs5ztpn6y26q7yLVy-ps4YqiSjZyvseuHuBwM6tT8-XR5lvlbtEWRhMH-OEYIo-hxgD7zLwp2oUQV1e/s1600/untitled.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 366px; height: 400px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO7uYw4KgrHuWfjlor0rmpEzmVTJ8XCsl4cPPBOAjclzOkAMiJTiwiOK8eGdZ4Dhs5ztpn6y26q7yLVy-ps4YqiSjZyvseuHuBwM6tT8-XR5lvlbtEWRhMH-OEYIo-hxgD7zLwp2oUQV1e/s400/untitled.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5453666204847418418&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Our function will look like this&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;function twitterLogin()&lt;br /&gt; {&lt;br /&gt;     try&lt;br /&gt;     {&lt;br /&gt;&lt;br /&gt;         $consumer_key = $this-&gt;config-&gt;item(&#39;twitter_consumer_key&#39;);&lt;br /&gt;         $consumer_key_secret = $this-&gt;config-&gt;item(&#39;twitter_consumer_secret&#39;);&lt;br /&gt;&lt;br /&gt;         $this-&gt;load-&gt;library(&#39;twitter&#39;);&lt;br /&gt;         $this-&gt;twitter-&gt;oauth($consumer_key,$consumer_key_secret);&lt;br /&gt;     }&lt;br /&gt;     catch(Exception $ex)&lt;br /&gt;     {&lt;br /&gt;         log_message(&#39;error&#39;, $ex-&gt;getMessage());&lt;br /&gt;          $error = &#39;Unable to connect to Twitter, please try after a while.&#39;;&lt;br /&gt;     }&lt;br /&gt; }&lt;br /&gt;&lt;/blockquote&gt;That&#39;s all! User will be redirected to Twitter where he will be asked to authorize your application. Once the user allows or denies the access, he will be redirected back to your website. This url will be the &#39;callback&#39; url you provided at the time of application registration.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;3. Create a function to handle User redirection from Twitter&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In this function, you will know if the user allowed the access or denied. If allowed then you will talk back to Twitter to send you access token for user. You may want to store this access token in database in order to to use it for future actions like updating his twitter status from your application.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;function twitterCallBack()&lt;br /&gt; {&lt;br /&gt;     try&lt;br /&gt;     {&lt;br /&gt;&lt;br /&gt;         if(isset($_GET[&#39;denied&#39;]))&lt;br /&gt;         {&lt;br /&gt;               header(&#39;Location: &#39; . $this-&gt;config-&gt;item(&#39;base_url&#39;));&lt;br /&gt;             return;&lt;br /&gt;         }&lt;br /&gt;&lt;br /&gt;         $consumer_key = $this-&gt;config-&gt;item(&#39;twitter_consumer_key&#39;);&lt;br /&gt;         $consumer_key_secret = $this-&gt;config-&gt;item(&#39;twitter_consumer_secret&#39;);&lt;br /&gt;&lt;br /&gt;         $this-&gt;load-&gt;library(&#39;session&#39;);&lt;br /&gt; &lt;br /&gt;         $tokens[&#39;access_token&#39;] = NULL;&lt;br /&gt;         $tokens[&#39;access_token_secret&#39;] = NULL;&lt;br /&gt;&lt;br /&gt;         // GET THE ACCESS TOKENS&lt;br /&gt; &lt;br /&gt;         $oauth_tokens = $this-&gt;session-&gt;userdata(&#39;twitter_oauth_tokens&#39;);&lt;br /&gt;&lt;br /&gt;         if ( $oauth_tokens !== FALSE ) $tokens = $oauth_tokens;&lt;br /&gt;&lt;br /&gt;         $this-&gt;load-&gt;library(&#39;twitter&#39;);&lt;br /&gt;&lt;br /&gt;         $auth = $this-&gt;twitter-&gt;oauth($consumer_key, $consumer_key_secret, $tokens[&#39;access_token&#39;], $tokens[&#39;access_token_secret&#39;]);&lt;br /&gt;&lt;br /&gt;         if ( isset($auth[&#39;access_token&#39;]) &amp;amp;&amp;amp; isset($auth[&#39;access_token_secret&#39;]) )&lt;br /&gt;         {&lt;br /&gt;             // SAVE THE ACCESS TOKENS&lt;br /&gt; &lt;br /&gt;             $this-&gt;session-&gt;set_userdata(&#39;twitter_oauth_tokens&#39;, $auth);&lt;br /&gt;&lt;br /&gt;             if ( isset($_GET[&#39;oauth_token&#39;]) )&lt;br /&gt;             {&lt;br /&gt;                 $uri = $_SERVER[&#39;REQUEST_URI&#39;];&lt;br /&gt;                 $parts = explode(&#39;?&#39;, $uri);&lt;br /&gt;&lt;br /&gt;                 // Now we redirect the user since we&#39;ve saved their stuff!&lt;br /&gt;&lt;br /&gt;                 header(&#39;Location: &#39;.$parts[0]);&lt;br /&gt;                 return;&lt;br /&gt;             }&lt;br /&gt;         }&lt;br /&gt;&lt;br /&gt;             header(&#39;Location: &#39; . $this-&gt;config-&gt;item(&#39;base_url&#39;).&#39;index.php/dashboard&#39;);&lt;br /&gt;     }&lt;br /&gt;     catch(Exception $ex)&lt;br /&gt;     {&lt;br /&gt;         log_message(&#39;error&#39;, $ex-&gt;getMessage());&lt;br /&gt;&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;/blockquote&gt;...And you are done!</description><link>http://beenishkhan-technical.blogspot.com/2010/03/twitter-oauth-login-part-3.html</link><author>noreply@blogger.com (Beenish Khan)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO7uYw4KgrHuWfjlor0rmpEzmVTJ8XCsl4cPPBOAjclzOkAMiJTiwiOK8eGdZ4Dhs5ztpn6y26q7yLVy-ps4YqiSjZyvseuHuBwM6tT8-XR5lvlbtEWRhMH-OEYIo-hxgD7zLwp2oUQV1e/s72-c/untitled.JPG" height="72" width="72"/><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1583985620863717838.post-5806839666908802707</guid><pubDate>Sat, 27 Mar 2010 06:20:00 +0000</pubDate><atom:updated>2010-03-28T06:06:55.148-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">codeigniter</category><category domain="http://www.blogger.com/atom/ns#">OAuth</category><category domain="http://www.blogger.com/atom/ns#">Twitter</category><title>Twitter OAuth Login - Part 2</title><description>&lt;span style=&quot;font-weight: bold;&quot;&gt;The part 1 of this post can be checked &lt;a href=&quot;http://beenishkhan-technical.blogspot.com/2010/03/twitter-oauth-login-part-1.html&quot;&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;1. First Step  : Get a Twitter Account&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you already have a twitter account then you can ignore it else you need to create one at &lt;a target=&quot;_blank&quot; href=&quot;http://www.twitter.com/&quot;&gt;twitter&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;2. Second Step  : Register your application with Twitter&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;a. Log in to Twitter.&lt;br /&gt;b. On the top menu, click &#39;&lt;span style=&quot;font-weight: bold;&quot;&gt;settings&lt;/span&gt;&#39;&lt;br /&gt;c. On the settings page, you will see another menu, click &#39;&lt;span style=&quot;font-weight: bold;&quot;&gt;connections.&lt;/span&gt;&#39;&lt;br /&gt;d. On the right hand, you will see a heading &#39;&lt;span style=&quot;font-weight: bold;&quot;&gt;Developers&lt;/span&gt;&#39; with a link to manage your application, click it.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJFcLhsiqmB0IGEeeBEIPANJzecFVyBJf6nmNJYm2mM5JWDxQuwdyb0MdbemjnGMYhD7KTRZdO9jypcIYvb_cCfMUHuM-Yf3LKefjh7xfIQVJ1A2LrY7ToOc0OCp4MlTobgTPn0nQedfFl/s1600/untitled.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 230px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJFcLhsiqmB0IGEeeBEIPANJzecFVyBJf6nmNJYm2mM5JWDxQuwdyb0MdbemjnGMYhD7KTRZdO9jypcIYvb_cCfMUHuM-Yf3LKefjh7xfIQVJ1A2LrY7ToOc0OCp4MlTobgTPn0nQedfFl/s400/untitled.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5453197159796404242&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;e. You will be redirected to a page with a link to &#39;register new application,&#39; click it.&lt;br /&gt;&lt;br /&gt;f. Fill in the application registration form, it asks for some general information about your website like name and website url. Some important fields you need to fill in correctly are,&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Call back URL &lt;/span&gt;- That&#39;s the page user will be redirected to once he will provide twitter his authentication details. This url will eventually be talking back to Twitter in order to get the access token for the user.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Application Type&lt;/span&gt; : Select &#39;browser.&#39; &#39;Client&#39; in other words desktop applications are out of the scope of this document.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Default Access Type&lt;/span&gt; : If you want to allow user to update his Twitter status right from your application then select &#39;Read &amp;amp; Write&#39; else just &#39;Read.&#39;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Use Twitter for login&lt;/span&gt; : Select it.&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjG8OSlhof7VaqP9DVD5wobfnjMDaK_xwlSp5sEMOZ6OAUl0audElQGLQUv2VMePaN-q7bkxOJwVUPR1eo65HcELETM_TzYlOEX3HB_IUXDw-d8wkVdWQAoWuBeqA2tdwBHJP2MGeGbfH1b/s1600/untitled1.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 242px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjG8OSlhof7VaqP9DVD5wobfnjMDaK_xwlSp5sEMOZ6OAUl0audElQGLQUv2VMePaN-q7bkxOJwVUPR1eo65HcELETM_TzYlOEX3HB_IUXDw-d8wkVdWQAoWuBeqA2tdwBHJP2MGeGbfH1b/s400/untitled1.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5453200258630166626&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimeV2Qdnd8gyw7SkhDL_W71q7tjVZncb2yxm1CLdemRck9ZiUpIJEgWiUp2lilGoiroZ0jqbU-ozb-NVPo1ZpUc_5YdI4YNRcMs9zXzHoyxrXqy1H_bBLLQKNTNOZo_hUJsdKqk6jOPtwR/s1600/untitled1.JPG&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;g. Once the form has been filled, submit it. If the application has been registered successfully, it will start appearing on Manage Applications page.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;3. Third Step  : Integrate it into your website&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;In order to integrate Twitter, you need a Twitter library with OAuth support. You may decide to write everything from scratch but hopefully you wouldn&#39;t want to reinvent the wheel. The one that I used is written by &#39;Elliot Haughin&#39; and you can download it from here : &lt;a target=&quot;_blank&quot; href=&quot;http://www.haughin.com/code/twitter/&quot;&gt;http://www.haughin.com/code/twitter/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;He developed it mainly for &lt;a target=&quot;_blank&quot; href=&quot;http://www.codeigniter.com/&quot;&gt;codeigniter&lt;/a&gt; framework but it would work just fine if used otherwise, you may just have to replace some codeigniter keywords. If you want to use a non codeigniter library then check out this one : &lt;a target=&quot;_blank&quot; href=&quot;http://github.com/abraham/twitteroauth&quot;&gt;http://github.com/abraham/twitteroauth&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I would be using Elliot&#39;s library in rest of the article.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;/span&gt;The next post will be the last in the series and would be discussing the code we need to write.&lt;br /&gt;&lt;br /&gt;1. &lt;a href=&quot;http://beenishkhan-technical.blogspot.com/2010/03/twitter-oauth-login-part-1.html&quot;&gt;Part 1&lt;/a&gt;&lt;br /&gt;2. &lt;a href=&quot;http://beenishkhan-technical.blogspot.com/2010/03/twitter-oauth-login-part-2.html&quot;&gt;Part 2&lt;/a&gt;&lt;br /&gt;3. &lt;a href=&quot;http://beenishkhan-technical.blogspot.com/2010/03/twitter-oauth-login-part-3.html&quot;&gt;Part 3&lt;/a&gt;</description><link>http://beenishkhan-technical.blogspot.com/2010/03/twitter-oauth-login-part-2.html</link><author>noreply@blogger.com (Beenish Khan)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJFcLhsiqmB0IGEeeBEIPANJzecFVyBJf6nmNJYm2mM5JWDxQuwdyb0MdbemjnGMYhD7KTRZdO9jypcIYvb_cCfMUHuM-Yf3LKefjh7xfIQVJ1A2LrY7ToOc0OCp4MlTobgTPn0nQedfFl/s72-c/untitled.JPG" height="72" width="72"/><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1583985620863717838.post-8478649985327879631</guid><pubDate>Thu, 25 Mar 2010 17:00:00 +0000</pubDate><atom:updated>2010-03-28T06:07:10.522-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">codeigniter</category><category domain="http://www.blogger.com/atom/ns#">OAuth</category><category domain="http://www.blogger.com/atom/ns#">Twitter</category><title>Twitter OAuth Login - Part 1</title><description>You must have noticed that lately a lot of sites have started to use login via Twitter and you migt already have used a screen like the following,&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4Fm0HKyIve6PRFQ-JIpSUwj9v2rhMbjgcIbyhY2TA_ZMokL0hODiyh0iw6507szeUFl1lacSoYbJ8RdnhiGIiQOcxR4pbtufnZ_cyugpMaoyRw0FKq-7YQj1PScRFjoERr3FWgco_xZ8g/s1600/20090402-k5gufygc3cj7taef4uy6f38st.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 181px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4Fm0HKyIve6PRFQ-JIpSUwj9v2rhMbjgcIbyhY2TA_ZMokL0hODiyh0iw6507szeUFl1lacSoYbJ8RdnhiGIiQOcxR4pbtufnZ_cyugpMaoyRw0FKq-7YQj1PScRFjoERr3FWgco_xZ8g/s400/20090402-k5gufygc3cj7taef4uy6f38st.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5452627285160416546&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So that&#39;s what we will be discussing today, that&#39;s how to integrate Twitter login.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Why should we go for login via Twitter (or for that matter any other service like FaceBook)?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Login using a popular third party website is a good option both for the site and the user. User wouldn&#39;t have to go through the pain of entering all the sign up details and thus site wouldn&#39;t loose a user just because he was too lazy to fill in the sign up information. But offcourse no user wouldn&#39;t want to give their Twitter login credentials to just about any site who may end up storing your details in their database and misuse it or their database get hacked. Twitter understands it and therefore supports OAuth.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;So what&#39;s OAuth and how does this address this issue?&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;If you&#39;re storing protected data on your users&#39; behalf, they shouldn&#39;t be spreading their passwords around the web to get access to it. Use OAuth to give your users access to their data while protecting their account credentials.&lt;/blockquote&gt;If you want to understand the A-Z of how OAuth works, go here : &lt;a href=&quot;http://www.oauth.net/core/1.0/&quot; target=&quot;_blank&quot;&gt;http://www.oauth.net/core/1.0/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Let me give you a short summary in plain English. In order to understand how OAuth works, let&#39;s define two terminologies in terms of integrating Twitter login,&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Consumer&lt;/span&gt; - This is the site which wants to integrate Twitter login.&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Service provider&lt;/span&gt; - Twitter.&lt;br /&gt;&lt;br /&gt;Here&#39;s the OAuth cycle.&lt;br /&gt;&lt;br /&gt;1. Consumer sends a &lt;span style=&quot;font-weight: bold;&quot;&gt;request token&lt;/span&gt; to Service provider.&lt;br /&gt;&lt;br /&gt;2. Service provider &lt;span style=&quot;font-weight: bold;&quot;&gt;grants a request token&lt;/span&gt;. This token is mainly to authorize the consumer using an id and secret key combination. It would be use to get Access token for user.&lt;br /&gt;&lt;br /&gt;3. End user gets &lt;span style=&quot;font-weight: bold;&quot;&gt;redirected&lt;/span&gt; to service provider&#39;s website.&lt;br /&gt;&lt;br /&gt;4. User authorizes and gets &lt;span style=&quot;font-weight: bold;&quot;&gt;redirected back&lt;/span&gt; to the consumer site&lt;br /&gt;&lt;br /&gt;4. Consumer site requests service provider for a &lt;span style=&quot;font-weight: bold;&quot;&gt;access token&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;5. Service provider grants the token.&lt;br /&gt;&lt;br /&gt;6. User is redirected to protected site pages.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;So how could we integrate Twitter login to our website ?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Twitter is a good service but when it comes to API it&#39;s quite a pain mainly because it doesn&#39;t really have an official library, so you are left with two options: either to build one yourself or try to find a good an reliable library on the net. Twitter suggests some libraries but they aren&#39;t official. Secondly Twitter OAuth login is still a ...... beta! And beta services mean only one thing : they can change anytime! But as everybody is using it these days so I hope Twitter will not make any ground breaking changes.&lt;br /&gt;&lt;br /&gt;So this post was to give you all the introduction. In &lt;a href=&quot;http://beenishkhan-technical.blogspot.com/2010/03/twitter-oauth-login-part-1.html&quot;&gt;next post&lt;/a&gt; we will be discussing the actual integration.&lt;br /&gt;&lt;br /&gt;1. &lt;a href=&quot;http://beenishkhan-technical.blogspot.com/2010/03/twitter-oauth-login-part-2.html&quot;&gt;Part 2&lt;/a&gt;&lt;br /&gt;2. &lt;a href=&quot;http://beenishkhan-technical.blogspot.com/2010/03/twitter-oauth-login-part-3.html&quot;&gt;Part 3&lt;/a&gt;</description><link>http://beenishkhan-technical.blogspot.com/2010/03/twitter-oauth-login-part-1.html</link><author>noreply@blogger.com (Beenish Khan)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4Fm0HKyIve6PRFQ-JIpSUwj9v2rhMbjgcIbyhY2TA_ZMokL0hODiyh0iw6507szeUFl1lacSoYbJ8RdnhiGIiQOcxR4pbtufnZ_cyugpMaoyRw0FKq-7YQj1PScRFjoERr3FWgco_xZ8g/s72-c/20090402-k5gufygc3cj7taef4uy6f38st.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1583985620863717838.post-4425425747555214327</guid><pubDate>Thu, 25 Mar 2010 16:26:00 +0000</pubDate><atom:updated>2010-03-25T09:50:49.601-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">cakePHP</category><category domain="http://www.blogger.com/atom/ns#">codeigniter</category><category domain="http://www.blogger.com/atom/ns#">MVC</category><category domain="http://www.blogger.com/atom/ns#">PHP framework</category><title>Codeigniter</title><description>I have some experience with cakePHP and I eventually get to play with code igniter - another php framework and I think it&#39;s just too brilliant!&lt;br /&gt;&lt;br /&gt;It&#39;s faster, flexible and much easier than cakePHP but the best part is their detailed guide, just about everything is in there. A codeigniter site is installed as soon as you  copy and paste it and writing it&#39;s hello world program hardly takes 30 seconds. Learning it is not really a dedicated job, you could learn it on the go thanks to it&#39;s extremely well written guide.&lt;br /&gt;&lt;br /&gt;Most of the helper functions like emails engine is already there and you don&#39;t really have to install any pear library. Unlike cakePHP it is much optimized, eg. it supports persistent db connection by default while cakePHP&#39;s default option is non persistent.&lt;br /&gt;&lt;br /&gt;So if you are into php coding, this is one framework which you must check : &lt;a target=&#39;_blank&#39; href=&quot;http://codeigniter.com/downloads/&quot;&gt;http://codeigniter.com/downloads/&lt;/a&gt;</description><link>http://beenishkhan-technical.blogspot.com/2010/03/codeigniter.html</link><author>noreply@blogger.com (Beenish Khan)</author><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1583985620863717838.post-8046513601840862746</guid><pubDate>Mon, 28 Dec 2009 13:58:00 +0000</pubDate><atom:updated>2009-12-28T08:34:50.544-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">How to be a better programmer</category><title>How to be a better programmer</title><description>Most of us think that we are very good developers but honestly speaking, it&#39;s quite a bit other way round. It&#39;s very common to see following piece of code,&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;bool myFlag;&lt;/div&gt;&lt;div&gt;if(MyFunction() == true)&lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;myFlag = true;&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;else&lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;myFlag = false;&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;If you write this kind of code then.....you obviously need &lt;strike&gt;help&lt;/strike&gt; some hard work. If you don&#39;t and you are actually a decent developer, even then there is always room for improvement. So here&#39;s a guide for all those who believe in improving themselves.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Just like any other craft, there is no shortcut to becoming a better programmer, it&#39;s all good old classic hard work. Here are some tips which I have gathered over the years and which many other top coders recommend,&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;1. Read the Code&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Read , read and read the code you write. Just like a normal essay writing, code gets better when you review it over and over. Reading the code helps in understanding the overall structure and catching errors which may come during run time. It infact directly affects your unit testing time as chances are that you will pass the testing in first attempt. My personal experience says that reading the code makes me catch errors which would otherwise be very tough to be produced by normal QA testing, mostly because of complex scenarios. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;2. Read the Code....that&#39;s others Code&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Going everyday to your job and writing code all day long doesn&#39;t make you a better developer. You would have to see what others are doing. Take up others code, that&#39;s of people who have a good reputation as a programmer and read their code. Internet is full of  open sourced projects, many companies have opened the source code of many of their products, pick any product that you might have enjoyed using or about which you might have wondered that exactly how it was done and just read the code and play with it. This will teach what smart techniques people are using.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Apart from that, reading others code is an art which isn&#39;t that common. Some developers say that it&#39;s a gift. If you disagree with me then recall the last time when your manager tried to give you an existing code base and asked to change one of the major functions, chances are that it wasn&#39;t your favorite assignment. I believe, the fear of reading others code is more to do with the fear of unknown than anything else. So kill that fear of yours by reading codes of other developers including your colleagues, but just for the sake of keeping your social ranking intact, don&#39;t be too emphatic in terms of pointing their mistakes or rather don&#39;t point them at all unless you think that it&#39;s critical to the project.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold; &quot;&gt;3. Join an open source project&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;By joining an open source project you can get to experience many things very early in your career such as participating in more than one phase of SDLC, direct interaction with the client that&#39;s end user in this case, and a coding approach of your choice that&#39;s you don&#39;t really have to follow the red tapped process of the company. You could also see the results of your efforts much more quickly than normal long term projects which usually come software houses way. Overall open source project not only gives you first hand experience in terms of working with a team with a more active role than a normal junior or mid level developer and it also helps you in getting your communication skills fine tuned and understand end users requirements better. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You may say that it&#39;s not important to get to know end user in order to sharpen coding skills, but it in fact gives another perspective to your work because now you also have an idea of how the users are using your applications and what other future expansions are expected. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold; &quot;&gt;4. Learn more than one language&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;I can&#39;t emphasize more that how important it is to know more than one language. And if you are a computer science graduate then learning a new language should be second to your nature. Knowing more than one language gives you a new perspective in terms of approaching a problem and figuring out a solution. Every language has it&#39;s own constructs but it&#39;s always possible that a concept of Java can be used in some form in Dot Net. Similarly, your ASP.Net will definitely see a boast if you know how the underlying response/request process works.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So don&#39;t make the mistake of sticking to one language, try to keep your language profile diverse.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold; &quot;&gt;5. Basics first&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;If the only data structure you use is ArrayList or Hashtable then shame on you (seriously!). Keep your knowledge of basic data structures always updated, using a B+ tree instead of a binary tree might make all the difference in the performance of your algorithm but in order to do that you need to know what exactly B+ tree is.  Similarly it&#39;s also good to know basic algorithms.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;With the ultra fast machines we have these days, it&#39;s not really critical to have highly optimized code and any efforts in that regard would eventually make it difficult for you to maintain the code. But you still would have to keep a check e.g. O(N square) is definitely something to avoid. So you should be able to do some basic code profiling.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Enjoy programming!&lt;/div&gt;</description><link>http://beenishkhan-technical.blogspot.com/2009/12/how-to-be-better-programmer.html</link><author>noreply@blogger.com (Beenish Khan)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1583985620863717838.post-8749444655111386636</guid><pubDate>Mon, 28 Dec 2009 08:14:00 +0000</pubDate><atom:updated>2009-12-28T00:25:44.828-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Dot Net 4.0</category><category domain="http://www.blogger.com/atom/ns#">Microsoft</category><category domain="http://www.blogger.com/atom/ns#">VS2010</category><title>Visual Studio 2010 and .NET Framework 4 Beta period extended</title><description>Dr. Somasegar, senior vice president of Microsoft recently mentioned on his blog that the release of VS 2010 has been moved back by a few weeks, as they are focusing on including user feedback after Beta 2 release. The fact is that VS IDE consumes alot of memory and has a habit of getting slow which kills the whole purpose of the IDE that&#39;s making programmers productive. And this is pretty much the problem users faced with VS 2010. The virtual memory usage has a lot of problems (IDE crashes are an evidence in that direction) and that&#39;s what Microsoft wants to look at and fix. I think it&#39;s better to delay the release and get it right than meet the deadline and push over the shit to the poor programmers.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here&#39;s the note,&lt;br /&gt;&lt;blockquote&gt;At the same time, you have also given us feedback around performance issues, specifically in a few key scenarios including virtual memory usage.  As you may have seen, we significantly improved performance between Beta 1 and Beta 2.  Based on what we’ve heard, we clearly needed to do more work.  Over the last couple of months, our engineering team has been doing a push to improve performance.  We have made significant progress in this space since Beta 2.&lt;br /&gt;&lt;br /&gt;With these improvements in the product, we do want to make sure that they truly address the performance issues while continuing to maintain a high quality bar.  As a result, we are going to extend the beta period by adding another interim checkpoint release, a Release Candidate with a broad “go live” license, which will be publicly available in the February 2010 timeframe.&lt;br /&gt;&lt;br /&gt;Since the goal of the Release Candidate is to get more feedback from you, the team will need some time to react to that feedback before creating the final release build.  We are therefore moving the launch of Visual Studio 2010 and .NET Framework 4 back a few weeks.&lt;/blockquote&gt;  Link to Post : &lt;a target=&quot;_blank&quot; href=&quot;http://blogs.msdn.com/somasegar/archive/2009/12/17/visual-studio-2010-and-net-framework-4-beta-period-extended.aspx&quot;&gt;Visual Studio 2010 and .NET Framework 4 Beta period extended &lt;/a&gt;&lt;/div&gt;</description><link>http://beenishkhan-technical.blogspot.com/2009/12/visual-studio-2010-and-net-framework-4.html</link><author>noreply@blogger.com (Beenish Khan)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1583985620863717838.post-5621895743247012747</guid><pubDate>Fri, 11 Dec 2009 12:40:00 +0000</pubDate><atom:updated>2009-12-11T04:54:31.666-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">FaceBook</category><category domain="http://www.blogger.com/atom/ns#">Gmail</category><title>Google Vs. Facebook</title><description>Google and &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_0&quot;&gt;Facebook&lt;/span&gt; are probably not competitors in the truest sense but they are definitely two sites which are always open on my desktop. A few weeks back, I was in Thailand on vacations and well I figured out that in terms of being smart, &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_1&quot;&gt;Facebook&lt;/span&gt; somewhat beats Google or GMail to be exact.&lt;br /&gt;&lt;br /&gt;As soon as I logged into the two services for the first time from Thailand, here&#39;s what happened,&lt;br /&gt;&lt;br /&gt;1. &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_2&quot;&gt;FaceBook&lt;/span&gt; took me to a new page stating that current location of my &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_3&quot;&gt;login&lt;/span&gt; is &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_4&quot;&gt;alot&lt;/span&gt; different from my usual &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_5&quot;&gt;login&lt;/span&gt; locations, so I need to submit my date of birth (along with year) in order to verify that I am actually &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_6&quot;&gt;Beenish&lt;/span&gt;. In contrast GMail must have noticed but didn&#39;t bother to raise the issue. So that&#39;s extra security measure on &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_7&quot;&gt;FB&#39;s&lt;/span&gt; part.&lt;br /&gt;&lt;br /&gt;2. Once I verified, &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_8&quot;&gt;FaceBook&lt;/span&gt; then wondered if I know Thai and would like to switch to Thai, which is again a plus point. &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_9&quot;&gt;FaceBook&lt;/span&gt; was offering a functionality on the basis of demographic data, so now user can get advantage of it even if they didn&#39;t know about it. And no, GMail didn&#39;t mention anything.&lt;br /&gt;&lt;br /&gt;3. The point where &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_10&quot;&gt;FaceBook&lt;/span&gt; completely outclassed GMail was the speed. As soon as &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_11&quot;&gt;FB&lt;/span&gt; identified my new location, it started fetching data from the servers near to that location and not servers near to Pakistan (my previous or default location.) All the members of my party complained that something is wrong with the &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_12&quot;&gt;internet&lt;/span&gt;, GMail is just not working and then I identified from the footer bar that GMail is trying to reach the servers which are near to Pakistan (or may have been dedicated for Pakistan)!!!! The service difference was just so obvious, GMail pages were taking like 5 minutes to load during which you are perfectly done with checking &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_13&quot;&gt;FaceBook&lt;/span&gt; and writing on a few walls.&lt;br /&gt;&lt;br /&gt;So &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_14&quot;&gt;FaceBook&lt;/span&gt; is definitely smarter than Google or GMail to be exact :).</description><link>http://beenishkhan-technical.blogspot.com/2009/12/google-vs-facebook.html</link><author>noreply@blogger.com (Beenish Khan)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1583985620863717838.post-1695832561136858879</guid><pubDate>Sat, 29 Aug 2009 19:11:00 +0000</pubDate><atom:updated>2009-08-29T12:48:51.713-07:00</atom:updated><title>There is no place like 127.0.0.1 :) - errr....come again</title><description>&lt;span style=&quot;font-weight: bold;&quot;&gt;Q : &#39;There is no place like 127.0.0.1 :)&#39; ....errr...come again&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Chances are that either you are a techie, and you exactly know what this statement mean, which means that you can totally understand how true it is. And there is also a chance that you are not-so-techie, you saw this statement and thought, &#39;uh huh, some other stupid, stinky, meaningless tech/mathematical  gibberish - oh God! why don&#39;t we just keep the technology but get rid of the tech crowd.&#39; In that case, let me explain the statement to you.&lt;br /&gt;&lt;br /&gt;We all have heard  and believed the phrase that &#39;There is no place like &lt;span style=&quot;font-weight: bold;&quot;&gt;home&lt;/span&gt;.&#39; In the tech world, what&#39;s your home ?....mmm....your PC.  And in simple, plain &lt;span class=&quot;blsp-spelling-corrected&quot; id=&quot;SPELLING_ERROR_0&quot;&gt;English&lt;/span&gt;, 127.0.0.1 == your personal PC. For a more technical definition,&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;127.0.0.1 is a special Internet Protocol (&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_1&quot;&gt;IP&lt;/span&gt;) address that points to your own computer. It is also referred to as the local host or &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_2&quot;&gt;loopback&lt;/span&gt; address. Local host is sometimes commonly referred to as &lt;span style=&quot;font-weight: bold;&quot;&gt;My computer&lt;/span&gt;.&lt;/blockquote&gt;So..now...you see...it wasn&#39;t such a meaningless gibberish :) There is definitely no place like &lt;strike&gt;my personal computer&lt;/strike&gt; 127.0.0.1&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Q : ...mmmmk...so did you really came up with this statement all by yourself ?&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Good Question. Though I do like to &lt;span style=&quot;font-weight: bold;&quot;&gt;think&lt;/span&gt; that I can come up much cooler statements, but still, I didn&#39;t came up with this one. It&#39;s quite a well known saying in the tech crowd. I saw it on a website selling T-Shirts for geeks, and there were some other shirts with statements like &#39;I failed the &lt;a href=&quot;http://www.google.com.pk/url?sa=t&amp;amp;source=web&amp;amp;ct=res&amp;amp;cd=1&amp;amp;url=http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FTuring_test&amp;amp;ei=woSZSo7hM8OAkQWD2bycBw&amp;amp;rct=j&amp;amp;q=What+is+Turing+test&amp;amp;usg=AFQjCNFsdgk8LY5jYhDCPp4LCpYySvZ0SA&quot;&gt;&lt;span class=&quot;blsp-spelling-corrected&quot; id=&quot;SPELLING_ERROR_3&quot;&gt;Turing&lt;/span&gt; test&lt;/a&gt;&#39; or &#39;No, I won&#39;t fix your computer!&#39; and yes it took some gigantic efforts on my part to not go ahead and place an order for each and every one of them....:S&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Q : .Okay, whatever! I always knew you are a geek.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Nopes, I&#39;m still not a geek! Here are my reasons,&lt;br /&gt;&lt;br /&gt;1. I have never watched Star Trek (though I do have a feeling that I&#39;ll love it if I ever got to watch it :s)&lt;br /&gt;&lt;br /&gt;2. I have no interests in &lt;span class=&quot;blsp-spelling-corrected&quot; id=&quot;SPELLING_ERROR_4&quot;&gt;Diana sours&lt;/span&gt;, animated or real, never even watched &lt;span class=&quot;blsp-spelling-corrected&quot; id=&quot;SPELLING_ERROR_5&quot;&gt;Jurassic&lt;/span&gt; Park!&lt;br /&gt;&lt;br /&gt;3. I do not have any weird collection of comic characters&lt;br /&gt;&lt;br /&gt;4.I never played the quiz &#39;The one super hero who could become your life partner.&#39;&lt;br /&gt;&lt;br /&gt;So...nopes...not a geek!&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;/span&gt;</description><link>http://beenishkhan-technical.blogspot.com/2009/08/there-is-no-place-like-127001-errrcome.html</link><author>noreply@blogger.com (Beenish Khan)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1583985620863717838.post-4088852740565982463</guid><pubDate>Sat, 29 Aug 2009 18:41:00 +0000</pubDate><atom:updated>2009-08-29T11:54:20.027-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Business Intelligence</category><category domain="http://www.blogger.com/atom/ns#">Call for Papers</category><category domain="http://www.blogger.com/atom/ns#">Microsoft Architecture Journal</category><title>Microsoft Architecture Journal - Business Intelligence   - Call for Paper</title><description>First thing first, If you work on Microsoft technologies and don&#39;t know about &lt;a target=&quot;_blank&quot; href=&quot;http://msdn.microsoft.com/en-us/architecture/default.aspx&quot;&gt;Microsoft Architecture &lt;span class=&quot;blsp-spelling-corrected&quot; id=&quot;SPELLING_ERROR_0&quot;&gt;Journal&lt;/span&gt;&lt;/a&gt;, then you should definitely go ahead and immediately get all the necessary information from their site. Here is a small excerpt from their site,&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;The Platform Architecture Team is composed of architects focused on architecture guidance and research on upcoming technologies and trends. We are committed to providing thought leadership in order to help every stakeholder in this value chain (users, business managers, IT managers, developers, etc.) understand how today’s business challenges are being addressed by the upcoming wave of technologies and practices. Our intention with all these is to help you get better software that is timely, more maintainable and &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_1&quot;&gt;evolvable&lt;/span&gt;.&lt;/blockquote&gt;More details can be found &lt;a href=&quot;http://msdn.microsoft.com/en-us/architecture/cc982177.aspx#Who&quot;&gt;here&lt;/a&gt; . And every quarter, they issue a really very valuable magazine, comprising of articles addressing a specific concept from the perspective of different stake holders.  You can see all their past magazines on their site and I&#39;ll recommend you to take out time and go through them all. They are truly informative.&lt;br /&gt;&lt;br /&gt;So, they are making a call for articles for their upcoming issue, it&#39;s main theme is &#39;&lt;span style=&quot;font-weight: bold;&quot;&gt;Business Intelligence&lt;/span&gt;&#39;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;padding: 0px; font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 11px; line-height: 140%;&quot;&gt;                         &lt;div style=&quot;padding: 0px 0px 1em; font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 11px; line-height: 140%;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div style=&quot;padding: 0px; font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 11px; line-height: 140%;&quot;&gt;&lt;div style=&quot;padding: 0px 0px 1em; font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 11px; line-height: 140%;&quot;&gt;Dear architect,&lt;br /&gt;&lt;br /&gt;We are pleased to announce the call for papers for the &lt;b&gt;22&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_2&quot;&gt;nd&lt;/span&gt; Microsoft Architecture Journal&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Information is at the core of a business&#39;s ability to make effective decisions. Architecture initiatives that increase the quality, timeliness, and usefulness of information have a direct correlation to increased revenue and competitiveness. As a result, &lt;b&gt;Business Intelligence&lt;/b&gt; is top of mind for business and technology leaders.&lt;br /&gt;&lt;br /&gt;For this edition of the Microsoft Architecture Journal, we are looking for interesting, thought-provoking, and insightful articles about effective architecture and &lt;b&gt;Business Intelligence&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Some suggestions for &lt;b&gt;Business Intelligence focus areas&lt;/b&gt; include (but are not limited to):&lt;br /&gt;&lt;/div&gt;                         &lt;table border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;&gt;                           &lt;tbody&gt;&lt;tr&gt;                             &lt;td style=&quot;color: rgb(166, 166, 166); font-size: 11px; padding-right: 4px; padding-bottom: 10px;&quot; align=&quot;right&quot; valign=&quot;top&quot;&gt;•&lt;/td&gt;                             &lt;td valign=&quot;top&quot; width=&quot;100%&quot;&gt;                               &lt;div style=&quot;font-size: 11px; padding-bottom: 10px;&quot;&gt;                                 &lt;b&gt;Enterprise Business Intelligence strategy and architecture&lt;/b&gt;: Effectively reconciling the explosion of data across Operational Data Stores (ODS) and Data Warehouses (&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_3&quot;&gt;DW&lt;/span&gt;), building BI solutions that consolidate and work across heterogeneous data sources, successfully leveraging &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_4&quot;&gt;MOLAP&lt;/span&gt;, &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_5&quot;&gt;ROLAP&lt;/span&gt; and &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_6&quot;&gt;HOLAP&lt;/span&gt; for analysis, and integrating enterprise data with integration services, and Information As A Service (&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_7&quot;&gt;IaaS&lt;/span&gt;) across on-premises and cloud models.&lt;/div&gt;                             &lt;/td&gt;                           &lt;/tr&gt;                           &lt;tr&gt;                             &lt;td style=&quot;color: rgb(166, 166, 166); font-size: 11px; padding-right: 4px; padding-bottom: 10px;&quot; align=&quot;right&quot; valign=&quot;top&quot;&gt;•&lt;/td&gt;                             &lt;td valign=&quot;top&quot; width=&quot;100%&quot;&gt;                               &lt;div style=&quot;font-size: 11px; padding-bottom: 10px;&quot;&gt;                                 &lt;b&gt;Embedding business insights into your applications&lt;/b&gt;: How to embed reports and analysis capabilities into your custom and line of business applications.&lt;/div&gt;                             &lt;/td&gt;                           &lt;/tr&gt;                           &lt;tr&gt;                             &lt;td style=&quot;color: rgb(166, 166, 166); font-size: 11px; padding-right: 4px; padding-bottom: 10px;&quot; align=&quot;right&quot; valign=&quot;top&quot;&gt;•&lt;/td&gt;                             &lt;td valign=&quot;top&quot; width=&quot;100%&quot;&gt;                               &lt;div style=&quot;font-size: 11px; padding-bottom: 10px;&quot;&gt;                                 &lt;b&gt;Infrastructure and performance&lt;/b&gt;: Architectural considerations for  BI &amp;amp; data warehouse solutions with high-volume, low-latency, low-cost access to data.&lt;/div&gt;                             &lt;/td&gt;                           &lt;/tr&gt;                           &lt;tr&gt;                             &lt;td style=&quot;color: rgb(166, 166, 166); font-size: 11px; padding-right: 4px; padding-bottom: 10px;&quot; align=&quot;right&quot; valign=&quot;top&quot;&gt;•&lt;/td&gt;                             &lt;td valign=&quot;top&quot; width=&quot;100%&quot;&gt;                               &lt;div style=&quot;font-size: 11px; padding-bottom: 10px;&quot;&gt;                                 &lt;b&gt;End-user and self-service Business Intelligence&lt;/b&gt;: Empowering end users to build BI solutions with little to no dependence on IT while enabling IT to maintain monitoring &amp;amp; management of end user built solutions. Helping people access, visualize and model disparate data to improve their ability to quickly make decisions and take action.&lt;/div&gt;                             &lt;/td&gt;                           &lt;/tr&gt;                           &lt;tr&gt;                             &lt;td style=&quot;color: rgb(166, 166, 166); font-size: 11px; padding-right: 4px; padding-bottom: 10px;&quot; align=&quot;right&quot; valign=&quot;top&quot;&gt;•&lt;/td&gt;                             &lt;td valign=&quot;top&quot; width=&quot;100%&quot;&gt;                               &lt;div style=&quot;font-size: 11px; padding-bottom: 10px;&quot;&gt;                                 &lt;b&gt;Delivering an effective Business Intelligence project&lt;/b&gt;: Structuring an effective BI project, including building an effective team, requirements gathering, change management, customer-connected engineering, success criteria, etc.&lt;/div&gt;                             &lt;/td&gt;                           &lt;/tr&gt;                         &lt;/tbody&gt;&lt;/table&gt;                         &lt;span style=&quot;overflow: hidden;&quot;&gt;                         &lt;/span&gt;                         &lt;div style=&quot;padding: 0px 0px 1em; font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 11px; line-height: 140%;&quot;&gt;If you like to share your wisdom and experience with &lt;b&gt;Business Intelligence&lt;/b&gt; with the architecture community, this is your chance. To submit your proposal, please send the following &lt;b&gt;before September 11, 2009&lt;/b&gt;:&lt;br /&gt;&lt;/div&gt;                         &lt;table border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;&gt;                           &lt;tbody&gt;&lt;tr&gt;                             &lt;td style=&quot;color: rgb(166, 166, 166); font-size: 11px; padding-right: 4px; padding-bottom: 10px;&quot; align=&quot;right&quot; valign=&quot;top&quot;&gt;•&lt;/td&gt;                             &lt;td valign=&quot;top&quot; width=&quot;100%&quot;&gt;                               &lt;div style=&quot;font-size: 11px; padding-bottom: 10px;&quot;&gt;An &lt;b&gt;abstract&lt;/b&gt; of between two and four paragraphs.&lt;/div&gt;                             &lt;/td&gt;                           &lt;/tr&gt;                           &lt;tr&gt;                             &lt;td style=&quot;color: rgb(166, 166, 166); font-size: 11px; padding-right: 4px; padding-bottom: 10px;&quot; align=&quot;right&quot; valign=&quot;top&quot;&gt;•&lt;/td&gt;                             &lt;td valign=&quot;top&quot; width=&quot;100%&quot;&gt;                               &lt;div style=&quot;font-size: 11px; padding-bottom: 10px;&quot;&gt;A short list (2-3 items) of &lt;b&gt;reader&#39;s takeaways&lt;/b&gt; from business and technical perspectives. This determines the relevance of your value proposition.&lt;/div&gt;                             &lt;/td&gt;                           &lt;/tr&gt;                           &lt;tr&gt;                             &lt;td style=&quot;color: rgb(166, 166, 166); font-size: 11px; padding-right: 4px; padding-bottom: 10px;&quot; align=&quot;right&quot; valign=&quot;top&quot;&gt;•&lt;/td&gt;                             &lt;td valign=&quot;top&quot; width=&quot;100%&quot;&gt;                               &lt;div style=&quot;font-size: 11px; padding-bottom: 10px;&quot;&gt;A short &lt;b&gt;bio&lt;/b&gt; (1-2 paragraphs).&lt;/div&gt;                             &lt;/td&gt;                           &lt;/tr&gt;                           &lt;tr&gt;                             &lt;td style=&quot;color: rgb(166, 166, 166); font-size: 11px; padding-right: 4px; padding-bottom: 10px;&quot; align=&quot;right&quot; valign=&quot;top&quot;&gt;•&lt;/td&gt;                             &lt;td valign=&quot;top&quot; width=&quot;100%&quot;&gt;                               &lt;div style=&quot;font-size: 11px; padding-bottom: 10px;&quot;&gt;A list of previously &lt;b&gt;published articles&lt;/b&gt;, if any.&lt;/div&gt;                             &lt;/td&gt;                           &lt;/tr&gt;                         &lt;/tbody&gt;&lt;/table&gt;                         &lt;span style=&quot;overflow: hidden;&quot;&gt;                         &lt;/span&gt;                         &lt;div style=&quot;padding: 0px 0px 1em; font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 11px; line-height: 140%;&quot;&gt;Submissions must be made to &lt;a href=&quot;mailto:archjrnl@microsoft.com&quot; target=&quot;_blank&quot;&gt;archjrnl@microsoft.com&lt;/a&gt; (we receive many submissions for each issue, so we encourage you to put time and thought into yours).&lt;br /&gt;&lt;br /&gt;After the call for articles has ended, everyone who has submitted an idea will be notified via e-mail as to whether their submission was accepted or not. If it is accepted, your article must follow this schedule:&lt;br /&gt;&lt;/div&gt;                         &lt;table border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;&gt;                           &lt;tbody&gt;&lt;tr&gt;                             &lt;td style=&quot;color: rgb(166, 166, 166); font-size: 11px; padding-right: 4px; padding-bottom: 10px;&quot; align=&quot;right&quot; valign=&quot;top&quot;&gt;•&lt;/td&gt;                             &lt;td valign=&quot;top&quot; width=&quot;100%&quot;&gt;                               &lt;div style=&quot;font-size: 11px; padding-bottom: 10px;&quot;&gt;                                 &lt;b&gt;September 18&lt;/b&gt;. Acceptance notified.&lt;/div&gt;                             &lt;/td&gt;                           &lt;/tr&gt;                           &lt;tr&gt;                             &lt;td style=&quot;color: rgb(166, 166, 166); font-size: 11px; padding-right: 4px; padding-bottom: 10px;&quot; align=&quot;right&quot; valign=&quot;top&quot;&gt;•&lt;/td&gt;                             &lt;td valign=&quot;top&quot; width=&quot;100%&quot;&gt;                               &lt;div style=&quot;font-size: 11px; padding-bottom: 10px;&quot;&gt;                                 &lt;b&gt;October 8&lt;/b&gt;. A first draft (possibly unfinished) is due.&lt;/div&gt;                             &lt;/td&gt;                           &lt;/tr&gt;                           &lt;tr&gt;                             &lt;td style=&quot;color: rgb(166, 166, 166); font-size: 11px; padding-right: 4px; padding-bottom: 10px;&quot; align=&quot;right&quot; valign=&quot;top&quot;&gt;•&lt;/td&gt;                             &lt;td valign=&quot;top&quot; width=&quot;100%&quot;&gt;                               &lt;div style=&quot;font-size: 11px; padding-bottom: 10px;&quot;&gt;                                 &lt;b&gt;October 22&lt;/b&gt;. Final draft is due.*&lt;/div&gt;                             &lt;/td&gt;                           &lt;/tr&gt;                           &lt;tr&gt;                             &lt;td style=&quot;color: rgb(166, 166, 166); font-size: 11px; padding-right: 4px; padding-bottom: 10px;&quot; align=&quot;right&quot; valign=&quot;top&quot;&gt;•&lt;/td&gt;                             &lt;td valign=&quot;top&quot; width=&quot;100%&quot;&gt;                               &lt;div style=&quot;font-size: 11px; padding-bottom: 10px;&quot;&gt;                                 &lt;b&gt;Mid December&lt;/b&gt;. The Journal containing your article is ready and published.&lt;/div&gt;                             &lt;/td&gt;                           &lt;/tr&gt;                         &lt;/tbody&gt;&lt;/table&gt;                         &lt;span style=&quot;overflow: hidden;&quot;&gt;                         &lt;/span&gt;                         &lt;div style=&quot;padding: 0px 0px 1em; font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 11px; line-height: 140%;&quot;&gt;* We recommend that articles be between 2,500 and 3,500 words in length.&lt;br /&gt;&lt;br /&gt;For more information, check out &lt;a href=&quot;http://msdn.microsoft.com/en-us/architecture/bb219087.aspx&quot; target=&quot;_blank&quot;&gt;this link&lt;/a&gt; or contact us at &lt;a href=&quot;mailto:archjrnl@microsoft.com&quot; target=&quot;_blank&quot;&gt;archjrnl@microsoft.com&lt;/a&gt;. Good luck!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sincerely,&lt;br /&gt;Diego &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_8&quot;&gt;Dagum&lt;/span&gt;&lt;br /&gt;Editor-in-chief&lt;/div&gt;                       &lt;/div&gt;&lt;/blockquote&gt;So if the topic comes under your expertise and you do feel like writing a paper then this might be a chance of addressing a large number of reader. Best of luck!</description><link>http://beenishkhan-technical.blogspot.com/2009/08/microsoft-architecture-journal-business.html</link><author>noreply@blogger.com (Beenish Khan)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1583985620863717838.post-6964730623579383705</guid><pubDate>Sat, 29 Aug 2009 18:16:00 +0000</pubDate><atom:updated>2009-08-29T11:38:28.669-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Caching</category><category domain="http://www.blogger.com/atom/ns#">Dot Net 4.0</category><category domain="http://www.blogger.com/atom/ns#">Recommended Links</category><category domain="http://www.blogger.com/atom/ns#">Scott Guthrie</category><category domain="http://www.blogger.com/atom/ns#">VS2010</category><title>Weekly Article Recommendation</title><description>1. &lt;a target=&quot;_blank&quot; href=&quot;http://weblogs.asp.net/scottgu/archive/2009/08/27/multi-targeting-support-vs-2010-and-net-4-series.aspx&quot;&gt;Multi-Targeting Support (VS 2010 and .NET 4 Series) from ScottGu&#39;s Blog &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Microsoft&#39;s Scott Guthrie talks about the improvements in VS 2010 with regards to multi targeting of Dot Net version&#39;s.&lt;br /&gt;&lt;br /&gt;2. &lt;a href=&quot;http://msdn.microsoft.com/en-us/magazine/dd942840.aspx&quot;&gt;Distributed Caching On The Path To Scalability&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;An article in MSDN, discussing pretty much everything major about distributed caching for large size applications.&lt;br /&gt;&lt;br /&gt;3. &lt;a href=&quot;http://feeds.feedburner.com/%7Er/JohnMWillis/%7E3/486552745/&quot; target=&quot;_blank&quot;&gt;Cloud Computing with Amazon Web Services&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;All that you need to know about cloud computing with Amazon web services.&lt;br /&gt;&lt;br /&gt;That&#39;s all for this week.</description><link>http://beenishkhan-technical.blogspot.com/2009/08/weekly-article-recommendation.html</link><author>noreply@blogger.com (Beenish Khan)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1583985620863717838.post-4017333564087184259</guid><pubDate>Tue, 18 Aug 2009 18:42:00 +0000</pubDate><atom:updated>2009-08-18T12:12:25.608-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ASP.Net</category><category domain="http://www.blogger.com/atom/ns#">Extension less URL</category><category domain="http://www.blogger.com/atom/ns#">Scott Guthrie</category><category domain="http://www.blogger.com/atom/ns#">URL rewriting</category><title>Extension less URLs in ASP.Net</title><description>&lt;span style=&quot;font-weight: bold;&quot;&gt;Problem Statement&lt;br /&gt;Your Web Server :&lt;/span&gt; &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_0&quot;&gt;IIS&lt;/span&gt; 6 or below&lt;br /&gt;&lt;br /&gt;You need extension less URLs, like they have in twitter, &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_1&quot;&gt;eg&lt;/span&gt;. &lt;a href=&quot;http://www.twitter.com/beenish&quot;&gt;www.twitter.com/beenish&lt;/a&gt; ,. If you notice, it doesn&#39;t have any extension like &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_2&quot;&gt;PHP&lt;/span&gt; or &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_3&quot;&gt;ASPX&lt;/span&gt;, so &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_4&quot;&gt;IIS&lt;/span&gt; won&#39;t know which &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_5&quot;&gt;dll&lt;/span&gt; to call and execute this request, it will simply show you a Page not found - 404 error.&lt;br /&gt;&lt;br /&gt;Note : &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_6&quot;&gt;IIS&lt;/span&gt;7 supports this feature and Apache has a very simple rewrite module for it.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Solution&lt;br /&gt;&lt;/span&gt;Your best bet would be to use an &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_7&quot;&gt;ISAPI&lt;/span&gt; &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_8&quot;&gt;rewriter&lt;/span&gt;. &lt;a target=&quot;_blank&quot; href=&quot;http://cheeso.members.winisp.net/IIRF.aspx&quot;&gt;Ionic &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_9&quot;&gt;ISAPI&lt;/span&gt;&lt;/a&gt; rewrite is probably the best free one out there. The one drawback it has is the &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_10&quot;&gt;regex&lt;/span&gt; formats used, which are a little different from the ones used in Apache, so if you are use to Apache&#39;s rewrite module, you might have to make some adjustments. I found it&#39;s installation to be quite simple.&lt;br /&gt;&lt;br /&gt;You can find all the help at their site.&lt;br /&gt;&lt;br /&gt;Apart from this, Scott Guthrie has discussed some nice tips and tricks for URL rewriting, which you can check here : &lt;a target=&quot;_blank&quot; href=&quot;http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx&quot;&gt;URL Rewriting - Tips/ Tricks&lt;/a&gt;</description><link>http://beenishkhan-technical.blogspot.com/2009/08/extension-less-urls-in-aspnet.html</link><author>noreply@blogger.com (Beenish Khan)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1583985620863717838.post-112419707850235378</guid><pubDate>Tue, 18 Aug 2009 18:16:00 +0000</pubDate><atom:updated>2009-08-18T11:40:24.816-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ASP.Net</category><category domain="http://www.blogger.com/atom/ns#">ISessionIDManager</category><category domain="http://www.blogger.com/atom/ns#">Session Management across sub domains</category><category domain="http://www.blogger.com/atom/ns#">SessionIDManager</category><category domain="http://www.blogger.com/atom/ns#">Single Sign On</category><title>ASP.Net - Single Sign On &amp; Session Handling</title><description>The part 1 of this post can be read &lt;a target=&quot;_blank&quot; href=&quot;http://beenishkhan-technical.blogspot.com/2009/06/aspnet-single-sign-on.html&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Problem Statement&lt;br /&gt;&lt;/span&gt;So single sign on is all up and running and users are able to login once and access all the sub domains.  Now, if you are saving any user data in session then you should remember that every time the user jumps to another sub domain, &lt;span style=&quot;font-weight: bold;&quot;&gt;application reloads the session&lt;/span&gt;, which means that your application would be performing the tasks added to any session based event every time user changes the domain. This can become a performance nightmare depending on how much data you are storing and if you are making any db calls.&lt;br /&gt;&lt;br /&gt;Another problem would be that you won&#39;t be able to share data across sub domains like some kind of flag etc., because session is getting initialized every time the sub domain changes.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Solution&lt;br /&gt;&lt;/span&gt;The simplest solution is that you share the session across all sub domains. Here&#39;s what you need to do,&lt;br /&gt;&lt;br /&gt;1.  Make your custom session class by simply inheriting the&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.google.com.pk/url?sa=t&amp;amp;source=web&amp;amp;ct=res&amp;amp;cd=1&amp;amp;url=http%3A%2F%2Fmsdn.microsoft.com%2Fen-us%2Flibrary%2Fsystem.web.sessionstate.sessionidmanager.aspx&amp;amp;ei=RvSKSongDsa9kAWmmIUr&amp;amp;rct=j&amp;amp;q=System.Web.SessionState.SessionIDManager&amp;amp;usg=AFQjCNG1OVNbDzH8Lamc0fNvLOdlRG7e6g&quot;&gt;System.Web.SessionState.SessionIDManager&lt;/a&gt;, &lt;a href=&quot;http://www.google.com.pk/url?sa=t&amp;amp;source=web&amp;amp;ct=res&amp;amp;cd=3&amp;amp;url=http%3A%2F%2Fmsdn.microsoft.com%2Fen-us%2Flibrary%2Fsystem.web.sessionstate.isessionidmanager.aspx&amp;amp;ei=XvSKSpShNY6PkAXA_tk0&amp;amp;rct=j&amp;amp;q=System.Web.SessionState.ISessionIDManager&amp;amp;usg=AFQjCNHZllUa8AkQQSLigoPP02tyJ56YEQ&quot;&gt;System.Web.SessionState.ISessionIDManager&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;and implement the ISessionIDManager interface&#39;s methods. Here&#39;s what the end result will be,&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;using System;&lt;br /&gt;using System.Data;&lt;br /&gt;using System.Configuration;&lt;br /&gt;using System.Web;&lt;br /&gt;using System.Web.Security;&lt;br /&gt;using System.Web.UI;&lt;br /&gt;using System.Web.UI.WebControls;&lt;br /&gt;using System.Web.UI.WebControls.WebParts;&lt;br /&gt;using System.Web.UI.HtmlControls;&lt;br /&gt;&lt;br /&gt;public class MySession : System.Web.SessionState.SessionIDManager, System.Web.SessionState.ISessionIDManager   &lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;   &lt;br /&gt;    #region ISessionIDManager Members&lt;br /&gt;&lt;br /&gt;    string System.Web.SessionState.ISessionIDManager.CreateSessionID(HttpContext context)&lt;br /&gt;    {&lt;br /&gt;       return base.CreateSessionID(context);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    string System.Web.SessionState.ISessionIDManager.GetSessionID(HttpContext context)&lt;br /&gt;    {&lt;br /&gt;        return base.GetSessionID(context);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    void System.Web.SessionState.ISessionIDManager.Initialize()&lt;br /&gt;    {&lt;br /&gt;        base.Initialize();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    bool System.Web.SessionState.ISessionIDManager.InitializeRequest(HttpContext context, bool suppressAutoDetectRedirect, out bool supportSessionIDReissue)&lt;br /&gt;    {&lt;br /&gt;        return base.InitializeRequest(context, suppressAutoDetectRedirect, out supportSessionIDReissue);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    void System.Web.SessionState.ISessionIDManager.RemoveSessionID(HttpContext context)&lt;br /&gt;    {&lt;br /&gt;        base.RemoveSessionID(context);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    void System.Web.SessionState.ISessionIDManager.SaveSessionID(HttpContext context, string id, out bool redirected, out bool cookieAdded)&lt;br /&gt;    {&lt;br /&gt;        base.SaveSessionID(context, id, out redirected, out cookieAdded);&lt;br /&gt;        HttpContext.Current.Response.Cookies[&quot;ARSessionCookie&quot;].Domain = FormsAuthentication.CookieDomain;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    bool System.Web.SessionState.ISessionIDManager.Validate(string id)&lt;br /&gt;    {&lt;br /&gt;        return base.Validate(id);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    #endregion&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;2. Add the following to your web.config&lt;br /&gt;&lt;br /&gt;[sessionState sessionIDManagerType=&quot;MySession&quot; cookieName=&quot;MySessionCookie&quot;][/sessionState&gt;]&lt;br /&gt;&lt;br /&gt;Note : Replace [ with &lt;&gt; .&lt;br /&gt;&lt;br /&gt;You are done! Now user&#39;s session will be shared across all the sub domains (considering that it&#39;s the same server) .&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;/span&gt;</description><link>http://beenishkhan-technical.blogspot.com/2009/08/aspnet-single-sign-on-session-handling.html</link><author>noreply@blogger.com (Beenish Khan)</author><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1583985620863717838.post-1591694688709110334</guid><pubDate>Fri, 07 Aug 2009 14:25:00 +0000</pubDate><atom:updated>2009-08-07T08:03:28.169-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Binary Search</category><category domain="http://www.blogger.com/atom/ns#">Robert Sedgewick</category><title>Binary Search</title><description>&lt;span style=&quot;font-weight: bold;&quot;&gt;The Algo as I can recall&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;So this quick discussion about Binary search is because one of the &lt;a target=&quot;_blank&quot; href=&quot;https://www.blogger.com/comment.g?blogID=5304136848933754116&amp;amp;postID=6861151297075196780&amp;amp;isPopup=true&amp;amp;pli=1&quot;&gt;readers namely &#39;alifnoon&#39; on my other blog&lt;/a&gt;  wanted to see how many software engineers can actually write a correct binary search algorithm, which we all feel is quite simple. I agreed to do the exercise and post the results on this blog.&lt;br /&gt;&lt;br /&gt;This code piece is something which I studied in Robert Sedgwick&#39;s book some years back,&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;public  bool SearchItem(object itemToSearch, object[] itemList)&lt;br /&gt;{&lt;br /&gt; int leftIndex =1;&lt;br /&gt;int rightIndex = itemList.Length;&lt;br /&gt;int median=0;&lt;br /&gt;&lt;br /&gt; while(rightIndex &gt;= leftIndex)&lt;br /&gt; {&lt;br /&gt;  median = (leftIndex + rightIndex) / 2;&lt;br /&gt;&lt;br /&gt;  if(itemToSearch == itemList[median])&lt;br /&gt;    return true;&lt;br /&gt;&lt;br /&gt;  if(itemToSearch &lt; itemList[median])&lt;br /&gt;     rightIndex = median - 1;&lt;br /&gt;else                        &lt;br /&gt;    leftIndex = median + 1;    &lt;br /&gt;&lt;br /&gt;}      &lt;br /&gt;&lt;br /&gt;return false;  &lt;br /&gt;&lt;br /&gt;}&lt;/blockquote&gt;I believe this is the code which follows divide and conquer approach. I stayed true to my words and gave you what I had in my mind.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;My Two Cents&lt;/span&gt;&lt;br /&gt;In the second part of this post, let me add a few things. I went ahead and searched around and came across this&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://googleresearch.blogspot.com/2006/06/extra-extra-read-all-about-it-nearly.html&quot;&gt;http://googleresearch.blogspot.com/2006/06/extra-extra-read-all-about-it-nearly.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;where the writer has mentioned that there is a major flaw in binary search.&lt;br /&gt;&lt;br /&gt;So alifnoon, I do want to give my two cents. I don&#39;t think that this is a flaw in the algo , it&#39;s more about scope definition. We can easily add the information to algo that it will work for values up to XYZ. It&#39;s understandable that they couldn&#39;t cover such scenarios mainly because they never really had to deal with such large values. If I look in this direction then right and left indexes are defined as int, and their values can become too large to beat an int.&lt;br /&gt;&lt;br /&gt;If we would try to come up with applications which would work for every scenario and would have undefined scope then I doubt there is any chance of making one.&lt;br /&gt;&lt;br /&gt;So just like any other field, algorithms are continuously evolving depending on changing requirements. That&#39;s how I feel :)&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Conclusion&lt;br /&gt;&lt;/span&gt;Thanks alifnoon for raising this issue, I sort of enjoyed this exercise and have decided to do some exercises out of programming pearls, it&#39;s almost an year that I last touched it.&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;br /&gt;&lt;/span&gt;</description><link>http://beenishkhan-technical.blogspot.com/2009/08/binary-search.html</link><author>noreply@blogger.com (Beenish Khan)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1583985620863717838.post-7992590272613935556</guid><pubDate>Fri, 19 Jun 2009 18:07:00 +0000</pubDate><atom:updated>2009-08-18T11:42:17.116-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ASP.Net</category><category domain="http://www.blogger.com/atom/ns#">Cookies</category><category domain="http://www.blogger.com/atom/ns#">Forms Authentication</category><category domain="http://www.blogger.com/atom/ns#">Single Sign On</category><title>ASP.Net - Single Sign On</title><description>&lt;strong&gt;Task  : &lt;/strong&gt;As soon as user logs into the website, he  remains logged in even if he move across sub domains.&lt;br /&gt;&lt;br /&gt;eg. if user logged in to the website using www.domain.com, now via a link, he moves to subdomain.domain.com then he should not be required to re login.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Solution :&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;In order to achieve this, you need to take two actions,&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1. Make the following changes in web.config :&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Within System.web element, add the following,&lt;br /&gt;&lt;br /&gt;&amp;lt;authentication mode=&quot;Forms&quot;&amp;gt;&lt;br /&gt;&amp;lt;forms path=&quot;/&quot; name=&quot;.cookieName&quot;  cookieless=&quot;UseCookies&quot; &lt;strong&gt;&lt;span style=&quot;color: rgb(153, 51, 0);&quot;&gt;domain=&quot;.domainname.com&lt;/span&gt;&lt;/strong&gt;&quot;/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/authentication&amp;gt;&lt;br /&gt;&lt;br /&gt;If your site&#39;s domain address is &quot;www.sitename.com&quot; then domain will be set as &quot;.sitename.com&quot;&lt;br /&gt;&lt;br /&gt;2. Add the following code piece to the code which runs on logout,&lt;br /&gt;&lt;br /&gt;HttpCookie cookie = Request.Cookies[FormsAuthentication.FormsCookieName];&lt;br /&gt;&lt;br /&gt;if (cookie != null)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;cookie.Domain = FormsAuthentication.CookieDomain;&lt;br /&gt;&lt;br /&gt;cookie.Expires = DateTime.Now.AddDays(-360);&lt;br /&gt;&lt;br /&gt;Response.Cookies.Add(cookie);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;FormsAuthentication.SignOut();&lt;br /&gt;&lt;br /&gt;If you use a single domain then it&#39;s not required that you explicitly expire the authentication cookie, a simple ForsmAuthentication.SignOut() should work fine, but once the cookie domain is set then you will need to expire the cookie explicitly, otherwise your user will remain logged in.&lt;br /&gt;&lt;br /&gt;Once you have done both the actions, your job is done and your user&#39;s login should work for the main domain and all the sub domains.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Next Problem &amp;gt;&amp;gt; &lt;/strong&gt;Though this solution will keep the user logged in but every time when he will move to a new sub domain, his session will renew, any information which you placed into the session at the time of logging in will be lost too. The informatino can be refilled but more than that it&#39;s a performance issue.&lt;br /&gt;&lt;br /&gt;Let&#39;s discuss this in &lt;a href=&quot;http://beenishkhan-technical.blogspot.com/2009/08/aspnet-single-sign-on-session-handling.html&quot;&gt;Part 2&lt;/a&gt;.</description><link>http://beenishkhan-technical.blogspot.com/2009/06/aspnet-single-sign-on.html</link><author>noreply@blogger.com (Beenish Khan)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1583985620863717838.post-3946382868632472563</guid><pubDate>Mon, 15 Jun 2009 18:34:00 +0000</pubDate><atom:updated>2009-06-15T11:42:21.962-07:00</atom:updated><title>ASP.Net - Calculate label width dynamically using the text</title><description>Sometimes, we have to calculate a label&#39;s width dynamically , depending on the provided text. In order to do that,  use the following,&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 102);&quot;&gt;float width = Graphics.FromImage(new Bitmap(1, 1)).MeasureString(&quot;Hello world!&quot;, new Font(&quot;Verdana&quot;, 14)).Width &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You will have to mention the font family and the desired size.</description><link>http://beenishkhan-technical.blogspot.com/2009/06/aspnet-calculate-label-width.html</link><author>noreply@blogger.com (Beenish Khan)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1583985620863717838.post-8716232711895157101</guid><pubDate>Mon, 15 Jun 2009 18:05:00 +0000</pubDate><atom:updated>2009-06-15T11:50:06.982-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ASP.Net</category><category domain="http://www.blogger.com/atom/ns#">Menu</category><title>ASP.Net Menu Control - Rounded Corners</title><description>So it&#39;s a little hard to play with ASP.Net&#39;s menu and there is no simple way to have tab with rounded corners unless you decide to do something with the render method of menu control, which is time consuming. And it doesn&#39;t help that menu item class is sealed and you can&#39;t do anything to it.&lt;br /&gt;&lt;br /&gt;So here is this simple hack which will make the selected item&#39;s corner as image based, but with this simple trick, you can do alot of other creative things.&lt;br /&gt;&lt;br /&gt;The whole idea is to set the selected item&#39;s text  and you can specify any type of HTML using this!&lt;br /&gt;&lt;br /&gt;Handle the menu&#39;s databound event and add the following code, as a side note, the HTML used here is not good and is not the suggested way of doing it, go for div based HTML with everything handled via CSS&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;protected void mainMenu_DataBound(object sender, EventArgs e)&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;if (!Page.IsPostBack)&lt;br /&gt;&lt;br /&gt;      if (mainMenu.SelectedItem != null)&lt;br /&gt;      {&lt;br /&gt;          MenuItem selectedItem = mainMenu.SelectedItem;&lt;br /&gt;&lt;br /&gt;          if (mainMenu.SelectedItem.Parent != null) //assuming two level menu&lt;br /&gt;              selectedItem = mainMenu.SelectedItem.Parent;&lt;br /&gt;&lt;br /&gt;          if (selectedItem != null)&lt;br /&gt;          {&lt;br /&gt;              string imgBg = &quot;images/menubg.jpg&quot;;&lt;br /&gt;              string imgLeft = &quot;images/menuleft.jpg&quot;;&lt;br /&gt;              string imgRight = &quot;images/menuright.jpg&quot;;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;_width = 240; //You may want to calculate it dynamically&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;selectedItem.Text = String.Format&lt;br /&gt;(@&quot;&amp;lt;table width=&#39;{5}&#39; border=&#39;0&#39; cellspacing=&#39;0&#39; cellpadding=&#39;0&#39;&amp;gt;&lt;br /&gt;                                              &amp;lt;tr&amp;gt;&lt;br /&gt;                                              &amp;lt;td width=&#39;6px&#39; valign=&#39;top&#39; background=&#39;&#39;&gt;&amp;lt;img src=&#39;{1}&#39; width=&#39;6&#39; height=&#39;41&#39; style=&#39;border:0px;&#39; /&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;                                              &amp;lt;td width=&#39;{4}px&#39; align=&#39;center&#39; background=&#39;{2}&#39; class=&#39;links&#39;&amp;gt;&amp;lt;div align=&#39;center&#39;&amp;gt;&amp;lt;strong&amp;gt;{0}&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;                                              &amp;lt;td width=&#39;11px&#39; valign=&#39;top&#39;&amp;gt;&amp;lt;img src=&#39;{3}&#39; width=&#39;11&#39; height=&#39;41&#39;  style=&#39;border:0px;&#39; /&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;                                              &amp;lt;/tr&amp;gt;&lt;br /&gt;                                              &amp;lt;/table&amp;gt;&quot;, selectedItem.Text, imgLeft, imgBg, imgRight, _width, _width + 20);&lt;br /&gt;&lt;br /&gt;          }&lt;br /&gt;      }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;Not the best solution out there, but it&#39;s definitely quick and dirty.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: bold;font-size:100%;&quot; &gt;Update :&lt;/span&gt;&lt;span style=&quot;font-size:100%;&quot;&gt; As one of my friends just mentioned to me, apart from tables/div, you can also use JQuery to get rounded corners (which is actually the preferred approach these days,) but the approach of getting the rounded corner could be anything you want, using the selectedItem.Text property will allow you to set the  Item&#39;s HTML according to your desire as you can&#39;t inherit MenuItem control and overwrite it&#39;s Render method.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;</description><link>http://beenishkhan-technical.blogspot.com/2009/06/aspnet-menu-rounded-corners.html</link><author>noreply@blogger.com (Beenish Khan)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1583985620863717838.post-7911996955107927433</guid><pubDate>Mon, 15 Jun 2009 17:17:00 +0000</pubDate><atom:updated>2009-06-15T11:03:28.660-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Compilation</category><category domain="http://www.blogger.com/atom/ns#">Dot Net 3.5</category><title>Latest Move : Dot Net 2.0 to Dot Net 3.5</title><description>So we moved one of our products from Dot Net 2.0 to Dot Net 3.5. Our move planning was simple,&lt;br /&gt;&lt;br /&gt;1. Study the breaking changes list and see if anything is critical to our application - apparently nothing was.&lt;br /&gt;&lt;br /&gt;2.  Make a copy of application and export it to VS 2008 - This worked fine too&lt;br /&gt;&lt;br /&gt;3. Provide a copy to QA for testing and see that how it works.&lt;br /&gt;&lt;br /&gt;And with some minor issues, everything turned out to be quite fine. Here let me tell you a few more things ,&lt;br /&gt;&lt;br /&gt;1. If you have installed 3.5 on your machine and then went to IIS &gt;&gt; ASP.Net tab, and surprisingly version 3.5 was not there, then don&#39;t be surprised. Version 3.5 actually uses 2.0 engine, there is no change with regards to &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_0&quot;&gt;IIS&lt;/span&gt;, so leave the version at 2.0.&lt;br /&gt;&lt;br /&gt;2. You&#39;ll need to change the compilation version to 3.5, for that you just need to add the following to your web.config&lt;br /&gt;&lt;br /&gt;&amp;lt;system.codedom&amp;gt;&lt;br /&gt;&amp;lt;compilers&amp;gt;&lt;br /&gt; &amp;lt;compiler language=&quot;c#;cs;csharp&quot; extension=&quot;.cs&quot; type=&quot;Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089&quot;&amp;gt;&lt;br /&gt;   &amp;lt;provideroption name=&quot;CompilerVersion&quot; value=&quot;v3.5&quot;&amp;gt;&lt;br /&gt; &amp;lt;/provideroption&amp;gt;&lt;br /&gt;&amp;lt;/compiler&amp;gt;&lt;br /&gt;&amp;lt;/compilers&amp;gt;&lt;br /&gt;&amp;lt;/system.codedom &amp;gt;&lt;br /&gt;&lt;br /&gt;And your job is done!</description><link>http://beenishkhan-technical.blogspot.com/2009/06/latest-move-dot-net-20-to-dot-net-35.html</link><author>noreply@blogger.com (Beenish Khan)</author><thr:total>0</thr:total></item></channel></rss>