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

<channel>
	<title>Public MindNitin&#8217;s Blog</title>
	<atom:link href="http://publicmind.in/blog/category/nitins-blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://publicmind.in/blog</link>
	<description>Simple and Sophisticated</description>
	<lastBuildDate>Fri, 27 May 2011 08:28:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Google Summer of Code 2011 Announced</title>
		<link>http://publicmind.in/blog/google-summer-of-code-2011-announced/</link>
		<comments>http://publicmind.in/blog/google-summer-of-code-2011-announced/#comments</comments>
		<pubDate>Sun, 06 Feb 2011 17:08:03 +0000</pubDate>
		<dc:creator>Nitin</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Nitin's Blog]]></category>
		<category><![CDATA[gsoc]]></category>

		<guid isPermaLink="false">http://publicmind.in/blog/?p=733</guid>
		<description><![CDATA[Do you feel passionate about any open source technology? Or you want to explore one during your summer vacations? On the top of it, if you get a mentor to guide you all along and a stipend of 5000 USD, would you be interested? Yeah! Keep reading then. Google announced its consecutive 7th year for Summer [...]]]></description>
			<content:encoded><![CDATA[<p>Do you feel passionate about any open source technology? Or you want to explore one during your summer vacations? On the top of it, if you get a mentor to guide you all along and a stipend of 5000 USD, would you be interested? Yeah! Keep reading then.</p>
<div id="attachment_741" class="wp-caption alignright" style="width: 208px"><a href="http://publicmind.in/blog/wp-content/uploads/2011/02/GSoC2011_198x128.png"><img class="size-full wp-image-741" title="GSoC 2011" src="http://publicmind.in/blog/wp-content/uploads/2011/02/GSoC2011_198x128.png" alt="GSoC 2011 " width="198" height="128" /></a><p class="wp-caption-text">GSoC 2011</p></div>
<p>Google announced its consecutive 7th year for Summer of Code program on January 24, 2011. Google Summer of Code program encourages students from all over the world to engage in open source project development of their choice for 3 months.</p>
<p>Look out for the details of the program here: <a href="http://socghop.appspot.com/">http://socghop.appspot.com/</a> and the timeline: <a href="http://www.google-melange.com/document/show/gsoc_program/google/gsoc2011/timeline">http://www.google-melange.com/document/show/gsoc_program/google/gsoc2011/timeline</a></p>
<p><span id="more-733"></span>Although the applications for students will be accepted only after 28th March, here are a few tips that might help you:</p>
<ol>
<li> Accepted list of organizations will be announced on 18th March, but it is expected to remain almost similar to the last year. So you should find out more about the organizations before hand (<a href="http://socghop.appspot.com/gsoc/program/accepted_orgs/google/gsoc2010">http://socghop.appspot.com/gsoc/program/accepted_orgs/google/gsoc2010</a>).</li>
<li>If you feel passionate about an organization/technology or even a bit interested, get in touch with people on respected forums/IRC. It will let you know more about the organization, expectations from the program and in certain cases, you are expected to submit patches/code which is reviewed before your application is accepted by an organization. Moreover if you are really interested then start contributing now, and everybody will know you when you finally apply for the program.</li>
<li>If you have an idea, put it forward asap. Try to put as much details as possible or even a proof of concept. Even if your idea is rejected by the community, you know it before the GSoC program even starts. And if you get support for it, there are much more chances that your project will be selected by the organization. A win-win situation for you, isn&#8217;t that amazing!!!</li>
<li>Don&#8217;t be disheartened if you do not have an idea (most of us don&#8217;t). Many organizations will publish a list of ideas, which they want the potential GSoC students to work on. Make sure you research a lot, take part in discussion on forums on the idea before submitting your application. If possible set up a personal repository, code something and provide a link to it with your application. This will not only show that you are interested in the project but will also showcase your coding skills.</li>
<li>Do not forget to follow the coding practices if published by the organization or common guidelines which will make your code more legible. <a href="http://drupal.org/coding-standards">http://drupal.org/coding-standards</a></li>
<li>Last, communicate yourself properly. As you would be working online for 3 months, and mostly you &amp; your mentor will be interacting online, try not to be confusing while explaining yourself in writing. <a href="http://www.codinghorror.com/blog/2011/02/how-to-write-without-writing.html">http://www.codinghorror.com/blog/2011/02/how-to-write-without-writing.html</a></li>
</ol>
<p>I will go over the list of reasons on why you should apply for the program in short. You get to work on what you like and you get paid for that. You will also meet a lot of interesting and intelligent people and will be amazed how helpful they are to your silly questions. Last but not the least, you will have something big on your CV after college, NICE.</p>
<p>If you are looking for inspiration, you can go through this discussion which I started when I was about to apply for the program last year: <a href="http://groups.drupal.org/node/57743">http://groups.drupal.org/node/57743</a>. I received a lot of suggestions and criticism which mostly turned into features for the project: <a href="http://drupal.org/project/fbsmp">http://dupal.org/project/fbsmp</a>.</p>
<p>I am proud to be a Google Summer of Code student, would you like to be next?</p>
]]></content:encoded>
			<wfw:commentRss>http://publicmind.in/blog/google-summer-of-code-2011-announced/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>shared thoughts</title>
		<link>http://publicmind.in/blog/shared-thoughts/</link>
		<comments>http://publicmind.in/blog/shared-thoughts/#comments</comments>
		<pubDate>Sat, 25 Dec 2010 19:37:30 +0000</pubDate>
		<dc:creator>Nitin</dc:creator>
				<category><![CDATA[Nitin's Blog]]></category>

		<guid isPermaLink="false">http://publicmind.in/blog/?p=711</guid>
		<description><![CDATA[a few videos and images for all of you this holiday season, few to giggle, few to laugh and other to ponder over. merry christmas and a happy new year. 300 years of fossil fuel in 300 seconds google shit revenge of the spider &#8211; fya for those of you wondering where the heck uppercase [...]]]></description>
			<content:encoded><![CDATA[<p>a few videos and images for all of you this holiday season, few to giggle, few to laugh and other to ponder over. merry christmas and a happy new year.</p>
<ol>
<li><strong>300 years of fossil fuel in 300 seconds</strong>
</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="440" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://www.youtube.com/v/cJ-J91SwP8w&amp;hl=en_US&amp;feature=player_embedded&amp;version=3" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="440" height="300" src="http://www.youtube.com/v/cJ-J91SwP8w&amp;hl=en_US&amp;feature=player_embedded&amp;version=3" allowscriptaccess="always" allowfullscreen="true"></embed></object></li>
<li><strong>google shit</strong>
</p>
<p><object id="ordie_player_37faa01ec6" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="384" height="256" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="flashvars" value="key=37faa01ec6" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://player.ordienetworks.com/flash/fodplayer.swf" /><param name="name" value="ordie_player_37faa01ec6" /><param name="quality" value="high" /><embed id="ordie_player_37faa01ec6" type="application/x-shockwave-flash" width="384" height="256" src="http://player.ordienetworks.com/flash/fodplayer.swf" quality="high" name="ordie_player_37faa01ec6" allowscriptaccess="always" allowfullscreen="true" flashvars="key=37faa01ec6"></embed></object></li>
<li><strong>revenge of the spider</strong>
<div id="attachment_713" class="wp-caption aligncenter" style="width: 310px"><a href="http://publicmind.in/blog/wp-content/uploads/2010/12/tumblr_ldaw6swoQy1qanb21o1_500.jpg"><img class="size-medium wp-image-713  " src="http://publicmind.in/blog/wp-content/uploads/2010/12/tumblr_ldaw6swoQy1qanb21o1_500-300x191.jpg" alt="" width="300" height="191" /></a><p class="wp-caption-text">i remember too.</p></div>
<p>&#8211; <a href="http://fuckyeahalbuquerque.tumblr.com/">fya</a></li>
</ol>
<p>for those of you wondering where the heck  uppercase letters went, <a href="http://www.slate.com/id/2277926/pagenum/all/">google killed them</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://publicmind.in/blog/shared-thoughts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mobile number portability and Data mining</title>
		<link>http://publicmind.in/blog/mobile-number-portability-and-data-mining/</link>
		<comments>http://publicmind.in/blog/mobile-number-portability-and-data-mining/#comments</comments>
		<pubDate>Fri, 29 Oct 2010 22:19:09 +0000</pubDate>
		<dc:creator>Nitin</dc:creator>
				<category><![CDATA[Nitin's Blog]]></category>
		<category><![CDATA[mining]]></category>
		<category><![CDATA[mnp]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://publicmind.in/blog/?p=626</guid>
		<description><![CDATA[I am much excited about the long delayed Mobile Number Portability (MNP) in India which is now pretty much ready for arrival next month during 2nd week of November (http://goo.gl/DuUo). I am not sure if it will be free (as it is in most of the countries, http://goo.gl/2ihz), but even if it isn&#8217;t I am [...]]]></description>
			<content:encoded><![CDATA[<p>I am much excited about the long delayed Mobile Number Portability (MNP) in India which is now pretty much ready for arrival next month during 2nd week of November (<a href="http://goo.gl/DuUo">http://goo.gl/DuUo</a>). I am not sure if it will be free (as it is in most of the countries, <a href="http://goo.gl/2ihz">http://goo.gl/2ihz</a>), but even if it isn&#8217;t I am expecting a lot of people would switch their <a href="http://goo.gl/5G2Z" target="_blank">mobile network operator</a> in-spite of the few disadvantages the service will bring(<a href="http://goo.gl/w5Si">http://goo.gl/w5Si</a>).</p>
<p>In such times, IMHO, the mobile network operators are forced to either improve their services or put lucrative offers in front of transitioning users which they are unable to resist. The former can&#8217;t be done in a day (which user won&#8217;t wait before switching) and latter brings an interesting problem from our data mining class, back in 2009.<br />
<span id="more-626"></span><br />
<a href="http://www.linkedin.com/pub/vijay-iyengar/9/36b/195">Dr. V. Iyenger</a>, once in our class posed an interesting problem, which was quite similar to the above. &#8220;How will a mobile company choose the customers to offer free promotional coupons, so that they are not lost?&#8221; The promotional coupons offer sounded plausible, I mean if I am offered no less than Rs. 1000 recharge, I won&#8217;t change my service provider for at least another one month.</p>
<p>All of us (okay, just the few frontbenchers!!) came up with a lots of different parameters with lots of different algorithms but they all could agree upon at least &#8220;the customers who made the most complaints in the past few months&#8221;. Of course, we didn&#8217;t know about MNP then otherwise we could have disappointed our professor a little less with more satisfactory answers.</p>
<p><strong>Moral</strong>: So even if you are happy with your mobile operator but want free recharge, START COMPLAINING. Damn, flood those customer care <strong>executives</strong> now. </p>
]]></content:encoded>
			<wfw:commentRss>http://publicmind.in/blog/mobile-number-portability-and-data-mining/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Price match guarantee with a bug @Hotels.com</title>
		<link>http://publicmind.in/blog/price-match-guarantee-with-a-bug-hotels-com/</link>
		<comments>http://publicmind.in/blog/price-match-guarantee-with-a-bug-hotels-com/#comments</comments>
		<pubDate>Sat, 18 Sep 2010 17:16:22 +0000</pubDate>
		<dc:creator>Nitin</dc:creator>
				<category><![CDATA[Nitin's Blog]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[hotels]]></category>
		<category><![CDATA[trip]]></category>

		<guid isPermaLink="false">http://publicmind.in/blog/?p=640</guid>
		<description><![CDATA[I just came across this website (Hotels.com), so went ahead and started playing around the website. I really liked the interface, though a little cluttered homepage, it gave a complete overview of the offers on the website. I saw the &#8220;Price Match Guarantee&#8220;, so went ahead to check their rates for the hotel I stayed [...]]]></description>
			<content:encoded><![CDATA[<p><!-- Digg Digg Disabled1 -->I just came across this website (<a href="http://hotels.com" target="_blank">Hotels.com</a>), so went ahead and started playing around the website. I really liked the interface, though a little cluttered homepage, it gave a complete overview of the offers on the website. I saw the &#8220;<strong>Price Match Guarantee</strong>&#8220;, so went ahead to check their rates for the hotel I stayed in Puducherry (Ginger Hotel). I was shocked to see the results for Jayaram Hotel which was Rs. 1 lakh per night:</p>
<div id="attachment_643" class="wp-caption aligncenter" style="width: 310px"><a href="http://publicmind.in/blog/wp-content/uploads/2010/09/hotels_com_hotel_jayaram2.jpg"><img class="size-medium wp-image-643" title="Hotel Jayaram @Hotels.com" src="http://publicmind.in/blog/wp-content/uploads/2010/09/hotels_com_hotel_jayaram2-300x181.jpg" alt="Hotel Jayaram @Hotels.com" width="300" height="181" /></a><p class="wp-caption-text">Hotel Jayaram @Hotels.com</p></div>
<p>Before I could call it a bug with the site, I jumped on <a href="http://travelguru.com" target="_blank">travelguru.com</a> and checked their rates. It was less than Rs 1200 per night for the same hotel and same dates. I am left wondering if I can somehow get the difference in the amount per night for the hotel I didn&#8217;t book <img src='http://publicmind.in/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://publicmind.in/blog/price-match-guarantee-with-a-bug-hotels-com/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Is your sales chat losing customers?</title>
		<link>http://publicmind.in/blog/welcome-to-the-sales-chat/</link>
		<comments>http://publicmind.in/blog/welcome-to-the-sales-chat/#comments</comments>
		<pubDate>Fri, 17 Sep 2010 18:25:52 +0000</pubDate>
		<dc:creator>Nitin</dc:creator>
				<category><![CDATA[Nitin's Blog]]></category>

		<guid isPermaLink="false">http://publicmind.in/blog/?p=627</guid>
		<description><![CDATA[Most of the websites today have the the pre-sales chat options on their site. These chats usually do not assure you about the quality of the product/service you are going to receive but still if the sales person can convince you to buy the product and can answer all the questions you may have about [...]]]></description>
			<content:encoded><![CDATA[<p><!-- Digg Digg Disabled1 -->Most of the websites today have the the pre-sales chat options on their site. These chats usually do not assure you about the quality of the product/service you are going to receive but still if the sales person can convince you to buy the product and can answer all the questions you may have about the product/service, I would say that they are giving good ROI.</p>
<p>But what if you have a bad (read horrible) experience during the pre-sales chat? Would you still pay for the product, no matter how good you have heard about it?<br />
<span id="more-627"></span><br />
<div id="attachment_628" class="wp-caption alignright" style="width: 310px"><img class="size-medium wp-image-628" title="Live Chat" src="../wp-content/uploads/2010/09/livechat_livehelp-300x187.jpg" alt="Live Chat" width="300" height="187" /><p class="wp-caption-text">Live Sales Chat</p></div></p>
<p>I was recently looking for a change in web hosts. Although I have no problem with my present host, <a href="http://goo.gl/hdnvI">HostGator</a>, I just wanted to cut the cost of hosting a little (I was on a Business plan which costs 15$ a month). But believe me, if you can afford, you won&#8217;t get a better shared hosting service in the industry. I went through a lot of reviews and narrowed down my search to two hosts, <a href="http://dreamhost.com" target="_blank">DreamHost</a> and <a href="http://bluehost.com" target="_blank">Bluehost</a>. Both were priced around 7-9 $ a month, offered 99.9% uptime, unlimited disk/bandwidth, etc, etc and were good for me. I still had a couple of questions about their server configuration, so I jumped on their website and clicked the button which said &#8220;Live chat&#8221;.</p>
<p>I started with Dreamhost, asked the guy(or girl) if he would be able to answer a few technical questions and then asked him a couple like the memory limit, cURL support, image library (GD or ImageMagick), etc and he wasn&#8217;t able to answer one of them. Only after I showed discomfort on his lack of knowledge about the product the company was selling, he did some search for the answers. The answers were satisfactory and were upto my hosting needs. But overall, it was a very bad experience and took 44  minutes to get answers to a few basic questions (not more than 5). I was seriously turned off and stroked DreamHost off the list. I may have over-reacted but how can I trust a company who can&#8217;t even train their sales people about the products/services they are offering?</p>
<p>I turned to Bluehost&#8217;s sales person, and asked if she would be able to answer a few technical questions. She wasn&#8217;t sure if she can but still asked me to fire those questions. I was amazed to see the thoroughness of the responses and all I could say at the end was &#8220;<strong>I guess, I would be soon associated with Bluehost</strong>&#8220;. JFYI, I asked the same set of questions and it took less than 10 minutes for the whole chat. Within minutes, I signed up for a 2 year contract on Bluehost.</p>
<p>All I want to say is that if you decide to provide the option of live sales chat on your site, make sure you are offering nothing but the best. A customer creates an impression about the whole company from this chat and you don&#8217;t want to spoil it if you are offering the best services in the industry. Do Not Lose Customers, at least not from your sales chat!!</p>
]]></content:encoded>
			<wfw:commentRss>http://publicmind.in/blog/welcome-to-the-sales-chat/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PHP: Encoding a URL before accessing it</title>
		<link>http://publicmind.in/blog/url-encoding/</link>
		<comments>http://publicmind.in/blog/url-encoding/#comments</comments>
		<pubDate>Sat, 08 May 2010 16:56:34 +0000</pubDate>
		<dc:creator>Nitin</dc:creator>
				<category><![CDATA[Nitin's Blog]]></category>
		<category><![CDATA[encoding]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[URL]]></category>

		<guid isPermaLink="false">http://publicmind.in/blog/?p=605</guid>
		<description><![CDATA[I discussed a little about URL encoding in my recent post Facebook: Bug with URL encoding, although it seems like the bug still exists. In this post I will discuss &#8220;how to encode a given URL before accessing it using CURL or fsockopen&#8221;. The problem with URLs is that they might contain certain disallowed characters [...]]]></description>
			<content:encoded><![CDATA[<p>I discussed a little about URL encoding in my recent post <a title="Facebook: Bug with URL encoding" href="http://publicmind.in/blog/facebook-bug-with-url-encoding/">Facebook: Bug with URL encoding</a>, although it seems like the bug still exists. In this post I will discuss &#8220;how to encode a given URL before accessing it using CURL or fsockopen&#8221;. The problem with URLs is that they might contain certain disallowed characters like spaces, according to RFC 3986. Our aim is to convert these invalid characters to their <a href="http://en.wikipedia.org/wiki/Percent-encoding" target="_blank">percentage encoded values</a> in a given URL , so that we can access the URL using our regular HTTP request methods. For example the URL [http://example.com/space space] should be converted to [http://example.com/space%20space] before we can access it using CURL. However, the URL [http://example.com/percents%25percent] is perfectly valid as it doesn&#8217;t contains any of the disallowed characters.<br />
<span id="more-605"></span><br />
The given URL can only contain characters which are allowed by RFC 3986 which includes alpha-numeric characters along with reserved characters and delimiters  (<strong>:</strong> | <strong>/</strong> | <strong>?</strong> | <strong>#</strong> | <strong>[</strong> | <strong>]</strong> | <strong>@ </strong>| <strong>!</strong> | <strong>$</strong> | <strong>&amp;</strong> | <strong>&#8216; </strong>| <strong>(</strong> | <strong>)</strong> | <strong>*</strong> | <strong>+</strong> | <strong>,</strong> | <strong>;</strong> | <strong>=</strong> | <strong>%</strong>).  The following piece of code changes the disallowed characters in the URL to their corresponding percentage encoded values. The characters and delimiters which are allowed are left untouched.</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:500px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009933; font-style: italic;">/**<br />
* @param $url<br />
* &nbsp; &nbsp; The URL to encode<br />
*<br />
* @return<br />
* &nbsp; &nbsp; A string containing the encoded URL with disallowed<br />
* &nbsp; &nbsp; characters converted to their percentage encodings.<br />
*/</span><br />
<span style="color: #000000; font-weight: bold;">function</span> encode_url<span style="color: #009900;">&#40;</span><span style="color: #000088;">$url</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
<span style="color: #000088;">$reserved</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><br />
<span style="color: #0000ff;">&quot;:&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'!%3A!ui'</span><span style="color: #339933;">,</span><br />
<span style="color: #0000ff;">&quot;/&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'!%2F!ui'</span><span style="color: #339933;">,</span><br />
<span style="color: #0000ff;">&quot;?&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'!%3F!ui'</span><span style="color: #339933;">,</span><br />
<span style="color: #0000ff;">&quot;#&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'!%23!ui'</span><span style="color: #339933;">,</span><br />
<span style="color: #0000ff;">&quot;[&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'!%5B!ui'</span><span style="color: #339933;">,</span><br />
<span style="color: #0000ff;">&quot;]&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'!%5D!ui'</span><span style="color: #339933;">,</span><br />
<span style="color: #0000ff;">&quot;@&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'!%40!ui'</span><span style="color: #339933;">,</span><br />
<span style="color: #0000ff;">&quot;!&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'!%21!ui'</span><span style="color: #339933;">,</span><br />
<span style="color: #0000ff;">&quot;$&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'!%24!ui'</span><span style="color: #339933;">,</span><br />
<span style="color: #0000ff;">&quot;&amp;&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'!%26!ui'</span><span style="color: #339933;">,</span><br />
<span style="color: #0000ff;">&quot;'&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'!%27!ui'</span><span style="color: #339933;">,</span><br />
<span style="color: #0000ff;">&quot;(&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'!%28!ui'</span><span style="color: #339933;">,</span><br />
<span style="color: #0000ff;">&quot;)&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'!%29!ui'</span><span style="color: #339933;">,</span><br />
<span style="color: #0000ff;">&quot;*&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'!%2A!ui'</span><span style="color: #339933;">,</span><br />
<span style="color: #0000ff;">&quot;+&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'!%2B!ui'</span><span style="color: #339933;">,</span><br />
<span style="color: #0000ff;">&quot;,&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'!%2C!ui'</span><span style="color: #339933;">,</span><br />
<span style="color: #0000ff;">&quot;;&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'!%3B!ui'</span><span style="color: #339933;">,</span><br />
<span style="color: #0000ff;">&quot;=&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'!%3D!ui'</span><span style="color: #339933;">,</span><br />
<span style="color: #0000ff;">&quot;%&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'!%25!ui'</span><span style="color: #339933;">,</span><br />
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000088;">$url</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/rawurlencode"><span style="color: #990000;">rawurlencode</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$url</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$url</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/preg_replace"><span style="color: #990000;">preg_replace</span></a><span style="color: #009900;">&#40;</span><a href="http://www.php.net/array_values"><span style="color: #990000;">array_values</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$reserved</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <a href="http://www.php.net/array_keys"><span style="color: #990000;">array_keys</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$reserved</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$url</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #b1b100;">return</span> <span style="color: #000088;">$url</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span></div></div>
<p>One thing to notice here is that the &#8216;%&#8217; character must be the last in the <em>$reserved</em> array. This makes sure that the already encoded values are not lost or encoded again.</p>
<p><strong>Note</strong>: This might not be the best solution but well, it works. If you are using something better, let me know in the comments.</p>
]]></content:encoded>
			<wfw:commentRss>http://publicmind.in/blog/url-encoding/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Firefox extensions to improve history tools</title>
		<link>http://publicmind.in/blog/firefox-extensions-to-improve-history-tools/</link>
		<comments>http://publicmind.in/blog/firefox-extensions-to-improve-history-tools/#comments</comments>
		<pubDate>Sun, 02 May 2010 21:05:20 +0000</pubDate>
		<dc:creator>Nitin</dc:creator>
				<category><![CDATA[Nitin's Blog]]></category>
		<category><![CDATA[addons]]></category>
		<category><![CDATA[extensions]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[history]]></category>

		<guid isPermaLink="false">http://publicmind.in/blog/?p=593</guid>
		<description><![CDATA[We visit and revisit web pages. You will find that more than 60% of your web visits are actually revisits of some sort. But web browsers support for such revisitations is limited to bookmarks, history list, URL auto-completion and back button. Here are a few history tools which can greatly improve your experience during web [...]]]></description>
			<content:encoded><![CDATA[<p>We visit and revisit web pages. You will find that more than 60% of your web visits are actually revisits of some sort. But web browsers support for such revisitations is limited to bookmarks, history list, URL auto-completion and <strong>back</strong> button. Here are a few history tools which can greatly improve your experience during web browsing.</p>
<ul>
<li><strong><a href="https://addons.mozilla.org/en-US/firefox/addon/1859" target="_blank">Tab History</a></strong>: It is the simplest yet very useful extension. Usually when we open a link in a new tab, the back button history for the new tab is empty. This extensions adds the session history from the parent tab to this new tab, so that you are not lost with the question &#8220;where do i come from?&#8221;.</li>
<li><strong><a href="https://addons.mozilla.org/en-US/firefox/addon/5890" target="_blank">Tree Style Tab:</a> </strong>This extension arranges your tabs in a tree structure, like a folder tree of Windows explorer. So whenever you open a new tab from a link, this tab is added as &#8216;child&#8217; node in the tab tree of the parent node.
<div id="attachment_595" class="wp-caption aligncenter" style="width: 210px"><img class="size-full wp-image-595  " title="Tree style tab" src="http://publicmind.in/blog/wp-content/uploads/2010/05/1192921260.png" alt="Tree style tab" width="200" height="134" /><p class="wp-caption-text">Tree style tab</p></div>
<p>You can conveniently arrange these tabs in the tree using the simple drap and drop feature. You can go through  an extensive list of features on the official site. One thing I would like to mention is that if you close a tab, its children are orphaned. As the father is gone, no way children would know about their grandparents <img src='http://publicmind.in/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .<span id="more-593"></span></li>
<li><strong><a href="https://addons.mozilla.org/en-US/firefox/addon/13316" target="_blank">History Tree:</a> </strong>History tree visualizes your history as a tree of tabs with thumbnails of web pages which makes it pretty easier for you to recognize what you are looking for. It is a very easy to use extension and provides four different visualizations for your history. It also shows the part of the history which is lost by back and forward buttons due to their LIFO implementation. For example, if you visit &lt;A&gt;, &lt;B&gt;, &lt;C&gt;, &lt;D&gt;, &lt;BACK to D&gt;, &lt;BACK to C&gt; , E. This sequence will loose &lt;C&gt; and &lt;D&gt; from the back button&#8217;s history but History tree will not. <img src='http://publicmind.in/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />
<p><div id="attachment_599" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-599" title="History Tree" src="http://publicmind.in/blog/wp-content/uploads/2010/05/IntroTV-300x187.png" alt="History Tree" width="300" height="187" /><p class="wp-caption-text">History Tree</p></div></li>
<li><strong><a href="/en-US/firefox/images/t/35086/1248779093" target="_blank">Infoaxe:</a> </strong>Infoaxe belongs to a family of history tools which provide a lot of cool features but ask you to register on their website so your history can be uploaded and processed on their servers. With Infoaxe, you can browse through all of your history in your browser or online. It also supports IE, so it doesn&#8217;t matter if you were browsing a page on which computer or browser, it will all be recorded by Infoaxe and made available to you &#8220;exactly when you need it&#8221;. It supports full text search on the web pages you browse and not just titles or keywords like your history list, which makes it pretty impressive.<br />
It provides a Google widget which adds result for your queries on Google search results page (SERP) with results from your local history. Read more about it here: http://infoaxe.wordpress.com/2008/12/23/the-infoaxe-vs-google-challenge-be-lazy-while-searching/</p>
<p><div id="attachment_597" class="wp-caption aligncenter" style="width: 514px"><img class="size-full wp-image-597   " title="infoaxe-lazy1" src="http://publicmind.in/blog/wp-content/uploads/2010/05/infoaxe-lazy1.jpg" alt="Infoaxe Google widget" width="504" height="315" /><p class="wp-caption-text">Infoaxe Google Widget</p></div></li>
<li><strong><a href="https://addons.mozilla.org/en-US/firefox/addon/5847" target="_blank">Hooeey</a></strong>: Hooeey is quite similar to Infoaxe in the way that it is also an online web browser history management tool. But it gives you full control over what part of your history is uploaded to their servers. I also like the analytics they provide about my browsing behavior.</li>
</ul>
<p>There are several more to explore like <a href="https://addons.mozilla.org/en-US/firefox/addon/5045">Thumbstribs</a> which provide a filmstrip from your browsing history or <a href="http://www.webmynd.com/html/index.html" target="_blank">Webmynd</a> which provides integration with Twitter, Wikipedia, Youtube and provides top results from these websites whenever you search with Google. But I leave them up to you to find out and report.</p>
]]></content:encoded>
			<wfw:commentRss>http://publicmind.in/blog/firefox-extensions-to-improve-history-tools/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>&#8220;Hey Chef&#8221;, South Park</title>
		<link>http://publicmind.in/blog/hey-chef-south-park/</link>
		<comments>http://publicmind.in/blog/hey-chef-south-park/#comments</comments>
		<pubDate>Sun, 25 Apr 2010 17:42:45 +0000</pubDate>
		<dc:creator>Nitin</dc:creator>
				<category><![CDATA[Nitin's Blog]]></category>
		<category><![CDATA[chef]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[south park]]></category>

		<guid isPermaLink="false">http://publicmind.in/blog/?p=578</guid>
		<description><![CDATA[Some of the &#8220;quotes&#8221; I like from South Park, by Chef. Disclaimer: The following contains coarse language and due to its content it should not be viewed by anyone. Episode 401 Chef: Well look at you cute little crackers with your money and your fancy clothes and your cell phones. It&#8217;s almost like you were&#8230; [...]]]></description>
			<content:encoded><![CDATA[<p><!-- Digg Digg Disabled1 -->Some of the &#8220;quotes&#8221; I like from South Park, by Chef.<br />
<strong>Disclaimer</strong>: The following contains coarse language and due to its content it should not be viewed by anyone.<div id="attachment_585" class="wp-caption alignright" style="width: 160px"><a href="http://publicmind.in/blog/wp-content/uploads/2010/04/chef.jpg"><img src="http://publicmind.in/blog/wp-content/uploads/2010/04/chef-150x150.jpg" alt="" title="Chef with Boys" width="150" height="150" class="size-thumbnail wp-image-585" /></a><p class="wp-caption-text">Chef with Boys</p></div></p>
<h3>Episode 401</h3>
<p><strong>Chef</strong>: Well look at you cute little crackers with your money and your fancy clothes and your cell phones. It&#8217;s almost like you were&#8230; Oh my God! Children, what have I told you about drugs<br />
<strong>Stan, Kyle, Cartman, and Kenny</strong>: There&#8217;s a time and a place for everything and it&#8217;s called college.<br />
<span id="more-578"></span></p>
<h3>Episode 405</h3>
<p><strong>Stan</strong>: Chef, what&#8217;s a prostitute?<strong><br />
Chef sings</strong>: But a prostitute is someone who would love you,<br />
No matter who you are, or what you look like.<br />
Yes, it&#8217;s true, children.<br />
That&#8217;s not why you pay a prostitute,<br />
No, you don&#8217;t pay her to stay;<br />
you pay her to leave afterwards<br />
That&#8217;s why I pay&#8217;s a lot for prostitutes!<br />
Ladies and Gentlemen, Mr. James Taylor<br />
<strong>James Taylor</strong>: A prostitute is like any other woman,<br />
They all trade something for sex and they do it well.<strong><br />
Chef</strong>: And that&#8217;s why I say-<br />
<strong>Chef and James Taylor</strong>: Prostitutes! Prostitutes!</p>
<h3>Episode 204</h3>
<p><strong>Chef</strong>: Hello there, children!<br />
<strong>Boys</strong>: Hey, Chef!<br />
<strong>Kyle</strong>: How&#8217;s it going?<br />
<strong>Chef</strong>: Bad<br />
<strong>Kyle</strong>: Why bad?<strong><br />
Chef</strong>: Children, I heard about what happened at school today! Now none of you tooked that nasty marijuana, did you?<strong><br />
Stan</strong>: No, dude! We never even saw it!<strong><br />
Chef</strong>: Okay, because I just want to tell you that drugs are bad.<br />
<strong>Stan</strong>: We know, we know, that&#8217;s what everybody says!<br />
<strong>Chef</strong>: Right. But do you know WHY they&#8217;re bad?<strong><br />
Kyle</strong>: Because they&#8217;re an addictive solution to a greater problem, causing disease of both body and mind, the consequences far outweighing their supposed benefits.<strong><br />
Chef</strong>: And do you have ANY idea what that means?<strong><br />
Kyle</strong>: No.<br />
<strong>Cartman</strong>: I know! Drugs are bad, because if you do drugs, you&#8217;re a hippie; and hippies suck!</p>
<p>P.S.: It was damn hard to write this post, given that my mouse has gone crazy with clicks.</p>
]]></content:encoded>
			<wfw:commentRss>http://publicmind.in/blog/hey-chef-south-park/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Facebook: Bug with URL encoding</title>
		<link>http://publicmind.in/blog/facebook-bug-with-url-encoding/</link>
		<comments>http://publicmind.in/blog/facebook-bug-with-url-encoding/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 05:33:48 +0000</pubDate>
		<dc:creator>Nitin</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Nitin's Blog]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[encoding]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[fbsl]]></category>

		<guid isPermaLink="false">http://publicmind.in/blog/?p=548</guid>
		<description><![CDATA[Today, while I was working on the URL encoding for the recently released Facebook-style Links module, I realized a bug with Link Attachments feature on Facebook. Before I explain, let us reproduce it: Try to attach the following link on Facebook: http://google.com/search?q=blenders%26pride. This URL actually queries Google for &#8216;blenders&#038;pride&#8217;. Facebook converts/encodes the above URL to [...]]]></description>
			<content:encoded><![CDATA[<p>Today, while I was working on the URL encoding for the recently released <a href="http://publicmind.in/blog/drupal-facebook-link">Facebook-style Links</a> module, I realized a bug with Link Attachments feature on Facebook. Before I explain, let us reproduce it:</p>
<p>Try to attach the following link on Facebook: <a href="http://google.com/search?q=blenders%26pride">http://google.com/search?q=blenders%26pride</a>. This URL actually queries Google for &#8216;blenders&#038;pride&#8217;. Facebook converts/encodes the above URL to <a href="http://google.com/search?q=blenders&#038;pride">http://google.com/search?q=blenders&#038;pride </a> which is not the same as above and queries Google for just &#8216;blenders&#8217;.</p>
<p>So, why Facebook does this? Probably Facebook tries to encode the URL to remove the characters which are not allowed by RFC 3986 and replaces them with their percent encoding. But there are certain characters which should not be encoded, such as &#8216;/&#8217;, &#8216;?&#8217;, &#8216;#&#8217;, &#8216;@&#8217; which are the reserved characters and used as delimiters in the URL. So, it decodes these characters and converts their encoding to the original character which gives rise to the problem. Let us see an example:<br />
<span id="more-548"></span><br />
&#8216;<a href="http://google.com/search?q= %2B">http://google.com/search?q= %2B</a>&#8216; is first encoded to replace unwanted character with their percent encoding, turns into &#8216;http%3A%2F%2Fgoogle.com%2Fsearch%3Fq%3D%20%2B&#8217;. (Note: I assume that already encoded characters are not encoded again in order to reproduce the bug, i.e.%2B does not gets converted to %252B). Then, the reserved characters (/,:,?,=,@,+) must be decoded again, therefore it gets converted to &#8216;<a href="http://google.com/search?q=%20+">http://google.com/search?q=%20+</a>&#8216; which as we see is not the same. It ideally should have been &#8216;http://google.com/search?q=%20%2B&#8217;.</p>
<p>I have already reported it in the bugs on Facebook. I will like to hear your views on URL encoding. Do you consider this as bug? Why does such URLs are not properly formatted at source making lives of developers difficult? Why does URLs with spaces and other disallowed characters exists?</p>
<p>Enjoy.</p>
<p><strong>Related Resources:</strong></p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Percent-encoding">http://en.wikipedia.org/wiki/Percent-encoding</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://publicmind.in/blog/facebook-bug-with-url-encoding/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Dumping a remote SVN repository without admin access</title>
		<link>http://publicmind.in/blog/dumping-a-remote-svn-repository-without-admin-access/</link>
		<comments>http://publicmind.in/blog/dumping-a-remote-svn-repository-without-admin-access/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 20:49:47 +0000</pubDate>
		<dc:creator>Nitin</dc:creator>
				<category><![CDATA[Nitin's Blog]]></category>
		<category><![CDATA[cvsdude]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://publicmind.in/blog/?p=415</guid>
		<description><![CDATA[When you need to dump a SVN repository, all you have to do is svnadmin dump REPOS_PATH But wait, then you need to have admin access to the server on which your SVN repository is hosted. Often, that is not the case and you have to contact the company which hosts your repository to do [...]]]></description>
			<content:encoded><![CDATA[<p>When you need to dump a SVN repository, all you have to do is</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">svnadmin dump REPOS_PATH</div></div>
<p>But wait, then you need to have admin access to the server on which your SVN repository is hosted. Often, that is not the case and you have to contact the company which hosts your repository to do it for you. I have a repository hosted at <a href="http://cvsdude.com">CVSdude</a> and I needed to dump it. As I am on the Developer Edition plan, I do not enjoy the privileges to backup my repositories from my admin panel. I could have mailed the guys at cvsdude, who according to me are quite supportive and quick to respond, but that would have taken longer than what I am going to describe next.</p>
<p>SVN provides a unique utility, <strong>svnsync</strong> which is a Subversion remote repository mirroring tool. Put simply, it allows you to replay the revisions of one repository into another one. Now, we can create an empty repository on our local system, synchronize it with the remote repository and then dump the local repository. Follow the following 4 step process to have a dump of your repository:<br />
<span id="more-415"></span></p>
<ol>
<li><strong>Create a local repository</strong>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">svnadmin create c:/repos</div></div>
<p>It will create an empty repository on your local system.</li>
<li><strong>Add “pre-revprop-change” hook to your local repository</strong><br />
You need to add an empty file into the hooks folder of your repository. This file should be named <strong>pre-revprop-change.cmd</strong> on Windows and <strong>pre-revprop-change</strong> on Linux systems.<br />
For Linux users:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">echo ‘#!/bin/sh’ &gt; repos/hooks/pre-revprop-change<br />
chmod +x repos/hooks/pre-revprop-change</div></div>
<p>This allows <strong><em>svnsync</em></strong> to make revision changes to your local repository. Note that your remote repository is never modified during this process, in fact we just need read access to the remote repository.</li>
<li><strong>Synchronize your local repository with the remote repository</strong>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">svnsync init file:///c:/repos https://test.cvsdude.com/fbl<br />
svnsync sync file:///c:/repos</div></div>
</li>
<li><strong>Dump your local repository</strong>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">svnadmin dump file:///c:/repos &amp;gt; repos.dmp</div></div>
</li>
</ol>
<p>That would be all, you can now have a cup of coffee. <img src='http://publicmind.in/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://publicmind.in/blog/dumping-a-remote-svn-repository-without-admin-access/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

