<?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>Bin-Blog &#187; Opinion</title>
	<atom:link href="http://www.bin-co.com/blog/category/opinion/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bin-co.com/blog</link>
	<description>Learn about the latest in Web Development - as soon as I do.</description>
	<lastBuildDate>Tue, 13 Oct 2009 18:55:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>How To Use Twitter To Create Link-Baiting Articles</title>
		<link>http://www.bin-co.com/blog/2009/10/how-to-use-twitter-to-create-link-baiting-articles/</link>
		<comments>http://www.bin-co.com/blog/2009/10/how-to-use-twitter-to-create-link-baiting-articles/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 18:51:15 +0000</pubDate>
		<dc:creator>anand</dc:creator>
				<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Opinion]]></category>
		<category><![CDATA[link-bait]]></category>
		<category><![CDATA[social]]></category>
		<category><![CDATA[social-media]]></category>

		<guid isPermaLink="false">http://www.bin-co.com/blog/?p=341</guid>
		<description><![CDATA[One of the problems with using social media to promote our articles is that most of us do not command the kind of authority that the top notch bloggers in our niche claim. A recent case at hand was when Google Wave was launched in public beta. We had several hundreds of blogs writing on the same subject, yet it was only the most popular blogs that garnered all the attention on the social media.]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.bin-co.com/blog/wp-content/uploads/2009/02/twitter.png" alt="Twitter" title="Twitter" width="155" height="59" align="right" class="size-full wp-image-228 intro" /><br />
<em>Guest post by Anand Srinivasan. He blogs on <a href="http://techcrunchies.com">Internet media statistics</a> at TechCrunchies.com. His new startup on <a href="http://knewthis.com">online buying how-to&#8217;s</a>, shall be launching later this month.</em></p>
<p class="intro">One of the problems with using social media to promote our articles is that <strong class="highlight">most of us do not command the kind of authority that the top notch bloggers in our niche claim</strong>. A recent case at hand was when Google Wave was launched in public beta. We had <strong class="highlight">several hundreds of blogs writing on the same subject</strong>, yet it was<strong class="highlight"> only the most popular blogs that garnered all the attention</strong> on the social media.</p>
<p>The problem here is a lack of perspective. In this particular case, <strong class="highlight">most bloggers merely parrotted the same news</strong> that readers already knew, thus losing out in the social media traffic race. When the same news is presented with a different perspective, it is received much better. So here are two tips that you can make use of while writing on a topic that is likely to be on something written everywhere else and still be seen as unique. </p>
<h3>Twitter Search</h3>
<p>One of the easiest ways to capture attention is to <strong class="highlight">be counter-intuitive</strong> in your posts. Let us take the example of ‘Google wave invites’ again. On that particular day, a Twitter search for Google Wave will show most twitterers saying one of these : “Google wave releases 100,000 invites” or “Need a Google wave invite”. This gives you the general mood of the &#8216;herd&#8217;. An article at this point about ‘Why it is better not to get a Google wave immediately’ or ‘Why a Google wave invite now makes no sense’ will surely catch your audience off-guard and it is likely to be shared more on social media.</p>
<h3>TweetMeme</h3>
<p>If you have not already known, <strong class="highlight">Tweetmeme is like a Digg for tweets</strong> and lists links that are making the maximum wave on Twitter. While the homepage (or the category page) of Tweetmeme can give you the currently popular stories, what you should be interested is the search option. As you might know ‘How-to’ articles are among the most popular articles and tend to get shared pretty quickly. Search for “How to” followed by the topic you wish to cover. In the example mentioned above ‘How to Google wave’ will give you lesser known website links that have been covering an interesting perspective. You may write on a similar subject or you may use the titles to form your own clever how-to titles. While the same is possible with Google Blogsearch as well, in my experience, TweetMeme tends to be less spammy and more relevant to the keywords I look for.</p>
<p>The above two are just among the hundreds of different ways to use Twitter to find interesting topics for you to write on. However, as a means to providing a perspective to what you write, the above two tools can go a long way in helping you write articles that can be social media friendly.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bin-co.com/blog/2009/10/how-to-use-twitter-to-create-link-baiting-articles/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Paypal Integration: IPN&#8217;s notify_url Not Being Called</title>
		<link>http://www.bin-co.com/blog/2009/05/paypal-integration-ipns-notify_url-not-being-called/</link>
		<comments>http://www.bin-co.com/blog/2009/05/paypal-integration-ipns-notify_url-not-being-called/#comments</comments>
		<pubDate>Sun, 10 May 2009 18:09:09 +0000</pubDate>
		<dc:creator>Binny V A</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Sites]]></category>
		<category><![CDATA[cart]]></category>
		<category><![CDATA[integration]]></category>
		<category><![CDATA[ipn]]></category>
		<category><![CDATA[notify_url]]></category>
		<category><![CDATA[paypal]]></category>
		<category><![CDATA[shopping]]></category>
		<category><![CDATA[troubleshooting]]></category>

		<guid isPermaLink="false">http://www.bin-co.com/blog/?p=268</guid>
		<description><![CDATA[I am working on a mini shopping cart plugin for WordPress with Paypal integration. Its been a while since I worked with paypal - so I ran into trouble. I have a couple of <a href="https://developer.paypal.com/">sandbox accounts</a> - and the <strong class="highlight">payment goes through</strong> without any visible issues. But the <strong class="highlight">IPN's notify_url was not being called</strong> no matter what I did.]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.bin-co.com/blog/wp-content/uploads/2009/05/paypal_logo.gif" alt="Paypal Logo" title="Paypal Logo" width="200" height="50" class="aligncenter size-full wp-image-270" /></p>
<p class="intro">I am working on a mini shopping cart plugin for WordPress with Paypal integration. Its been a while since I worked with paypal &#8211; so I ran into trouble. I have a couple of <a href="https://developer.paypal.com/">sandbox accounts</a> &#8211; and the <strong class="highlight">payment goes through</strong> without any visible issues. But the <strong class="highlight">IPN&#8217;s notify_url was not being called</strong> no matter what I did.</p>
<p>And I was not the only guy with the problem &#8211; <a href="http://paypal.lithium.com/pdn/board/message?board.id=ipn&amp;message.id=17717">plenty</a> of <a href="http://www.pdncommunity.com/pdn/board/message?board.id=sandbox&amp;thread.id=14272">other</a> <a href="http://www.pdncommunity.com/pdn/board/message?board.id=sandbox&amp;thread.id=10556">people</a> have it too. I managed to solve the issue &#8211; but I decided to document the process &#8211; for the benefit of the people who fall into the same trap.</p>
<h2>Make Sure the URL You Specified is Working</h2>
<p>Yes, its obvious &#8211; but it needs to be said.<strong class="highlight"> Make sure the URL you gave as the value of notify_url is a working URL</strong>. Sample usage&#8230;</p>
<p>&lt;input type=&#8221;hidden&#8221; name=&#8221;notify_url&#8221; value=&#8221;http://www.yoursite.com/cart/ipn.php&#8221; /&gt;</p>
<p>Here &#8216;http://www.yoursite.com/cart/ipn.php&#8217; is the url &#8211; <strong class="highlight">make sure it works</strong>! There is an easy way to <strong class="highlight">test it &#8211; just go to <a href="http://www.belahost.com/pp/">IPN Testing Environment</a> and enter your IPN notify_url</strong> there. When you submit the data, you&#8217;ll know wether the script is being called or not.</p>
<h2>Verify the Email Address of Sandbox Account</h2>
<p>When you make a sandbox account, you have to give a email address. But if you have selected a business account, make sure that you <strong class="highlight">verify that email address</strong>. Just login using the given email and go to the home tab. There should be a <strong class="highlight">&#8216;To do list&#8217;</strong> to the right side. Make sure you complete all the stuff(usually just 2) there&#8230;</p>
<p><img src="http://www.bin-co.com/blog/wp-content/uploads/2009/05/todo_paypal.png" alt="Todo List Paypal" title="Todo List Paypal" width="475" height="223" class="aligncenter size-full wp-image-269" /></p>
<p>When you confirm your email address &#8211; remember that its simulated &#8211; <strong class="highlight">you don&#8217;t have to check the actual email account. Just go to the <a href="https://developer.paypal.com/devscr?cmd=_email-session">Test Email page in Paypal sandbox</a></strong> itself to check the mail.</p>
<p>Once this is done, IPN notify_url worked for me. Hopefully, this will fix your issues as well.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bin-co.com/blog/2009/05/paypal-integration-ipns-notify_url-not-being-called/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Using Linux for a better Windows Experience</title>
		<link>http://www.bin-co.com/blog/2009/01/using-linux-for-a-better-windows-experience/</link>
		<comments>http://www.bin-co.com/blog/2009/01/using-linux-for-a-better-windows-experience/#comments</comments>
		<pubDate>Sat, 17 Jan 2009 16:05:50 +0000</pubDate>
		<dc:creator>Binny V A</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[stability]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.bin-co.com/blog/?p=220</guid>
		<description><![CDATA[If you are a Windows user who want more stability(but unwilling to switch to Linux completely), this post is for you. Basically, you have to <strong class="highlight">create a dual boot system with Linux and Windows - and use Linux for doing the more 'unsafe' operations</strong>. The end result is windows remains stable - and you will be able to do things that are potentially dangerous.]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.bin-co.com/blog/wp-content/uploads/2009/01/windows_logo.jpg" alt="" title="Windows Logo" width="119" height="106" class="alignnone size-full wp-image-213 intro" align="right" /></p>
<p class="intro">If you are a Windows user who want more stability(but unwilling to switch to Linux completely), this post is for you. Basically, you have to <strong class="highlight">create a dual boot system with Linux and Windows &#8211; and use Linux for doing the more &#8216;unsafe&#8217; operations</strong>. The end result is windows remains stable &#8211; and you will be able to do things that are potentially dangerous.</p>
<h2>Dual Boot System</h2>
<p>Install a Linux distro on your system. I would recommend Ubuntu if you are a beginner and Fedora if you are not. There are many tutorials on the net that will take you through the process of installing &#8211; so I am not going into it. Now boot into Linux when ever you wish to do stuff that might run the risk of infecting your system&#8230;</p>
<h3>Browsing</h3>
<p>Unfortunately, the net is currently the number one source of virus infection. So, <strong class="highlight">if you want to browse, boot into linux and browse</strong> &#8211; this will make it impossible for virus to infect the system. But there are some problems with this approach&#8230;</p>
<ul>
<li>Might be impractical for full time broadband users</li>
<li>Some special applications might not have linux alternatives(eg. Online games, Yahoo Video Chat software etc.</li>
<li>Some ISP&#8217;s dialup applications might not work on Linux</li>
</ul>
<p>My brother uses this method &#8211; and he swears by it. It will cut down virus infections by about 75%.</p>
<h3>Using Pen Drives/External Hard Drives</h3>
<p>Another method that virus use to propagate itself is pen drives. Everytime you connect a pen drive to your system, you run the risk of getting a virus infection. <strong class="highlight">Using linux to check out pen drives will make sure you will not get infected</strong> this way. Its so effective that my brother prefers to check the pen drive in linux over checking it with a anti-virus.</p>
<h3>Troubleshooting Help</h3>
<p>Another advantage of having Linux in your system is that you can use it to troubleshoot hardware. Say that you mouse stops working &#8211; now you have to decide if its a hardware or a software issue. It could be a symptom of a virus &#8211; or it could be a problem with the mouse. If you just have windows, the only way to find out is to connect a different mouse &#8211; not the most convenient way. But if you have linux, just boot into it. <strong class="highlight">If the mouse is working in Linux, its a software issue. If not, then the hardware is to blame</strong>.</p>
<h3>Emergency Computing</h3>
<p>When disaster strikes(in case of windows, once every six months) and <strong class="highlight">your windows system is rendered unbootable, you have a bailout mechanism. You can use Linux</strong> to work on that urgent presentation, or backup the files, or send that email, etc. Point is, you have a working system &#8211; until you re-install Windows &#8211; or choose to abandon it for Linux.</p>
<h2>Linux Live CD/DVD</h2>
<p>If you don&#8217;t want to install linux due to some(propably invalid) reason, then your next best bet is to have a Linux Live CD handy. <strong class="highlight">Live CDs enable you to have a complete OS that boots directly from the CD/DVD</strong>. I would recommend Knopix for this. Just make sure that it works on your system &#8211; and you are able to mount your partitions and do read/write operations using the Live CD.</p>
<p>You can use the live CD to troubleshoot hardware and to backup the files in case your &#8216;Window is broken&#8217;. It might not be practical for the other reasons outlined above &#8211; because its slower than a permanent solution.</p>
<p>Ironically, we have reached a point that, <strong class="highlight">if you want a stable Windows system, you need to have Linux</strong> installed.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bin-co.com/blog/2009/01/using-linux-for-a-better-windows-experience/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows Hacks: &#8216;The Escape&#8217;</title>
		<link>http://www.bin-co.com/blog/2009/01/windows-hacks-the-escape/</link>
		<comments>http://www.bin-co.com/blog/2009/01/windows-hacks-the-escape/#comments</comments>
		<pubDate>Thu, 08 Jan 2009 18:26:40 +0000</pubDate>
		<dc:creator>Binny V A</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[dll]]></category>
		<category><![CDATA[escape]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[resource hacker]]></category>
		<category><![CDATA[shortcut]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.bin-co.com/blog/?p=215</guid>
		<description><![CDATA[What's the keyboard shortcut to close an application? Yes, its Alt+F4. Its not an easy shortcut to hit. I always thought that the Escape key was a much better shortcut to close applications. Once I convinced myself that it was the 'One-True-Way'<sup>TM</sup>, I decided to impose that shortcut on the applications that I use. Metapad and Irfan View already had that option - the other application I had my sight on was the Windows Explorer(explorer.exe). <strong class="highlight">This tutorial will teach you how to add the Escape key as a shortcut to close Windows Explorer</strong>.]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.bin-co.com/blog/wp-content/uploads/2009/01/windows_logo.jpg" alt="" title="Windows Logo" width="119" height="106" class="alignnone size-medium wp-image-213 intro" align="right" /></p>
<p class="intro">What&#8217;s the keyboard shortcut to close an application? Yes, its Alt+F4. Its not an easy shortcut to hit. I always thought that the Escape key was a much better shortcut to close applications. Once I convinced myself that it was the &#8216;One-True-Way&#8217;<sup>TM</sup>, I decided to impose that shortcut on the applications that I use. Metapad and Irfan View already had that option &#8211; the other application I had my sight on was the Windows Explorer(explorer.exe). <strong class="highlight">This tutorial will teach you how to add the Escape key as a shortcut to close Windows Explorer</strong>.</p>
<p>By the way, this is a post about my <a href="http://www.bin-co.com/blog/2009/01/3-windows-speed-tips-from-linux-user/">Windows days</a> &#8211; this is much easier to do in Linux &#8211; but thats another story.</p>
<h2>Stuff you need to know before continuing</h2>
<p>This is a fairly advanced hack &#8211; its not for everyone. It involves <strong class="highlight">editing core Windows files</strong> &#8211; which might be dangerous if done incorrectly. It also involves a bit of reverse engineering which <strong class="highlight">might be considered illegal</strong> by some lawyers. So continue only if you are sure.</p>
<p>This hack involes modifying Windows core files &#8211; which might some problems if done incorrectly. I cannot be held accountable for the outcome &#8211; be it good or bad. Actually, scratch that. Ff the result was a success, feel free to hold me accountable.</p>
<p>If you decide to continue, I would say that the result is worth the risk &#8211; <strong class="highlight">you will learn a method that will let you add custom shortcuts to application</strong> that don&#8217;t provide you with the source code. And it gives you a really cool feeling if you actually manage to pull the hack successfully.</p>
<p>I originally made this hack for Windows 98 &#8211; but it works on Windows XP as well. I have not tested it in Vista &#8211; I would be very grateful if anyone lets me know if it works in Vista or not.</p>
<h3>Stuff you are going to need&#8230;</h3>
<ul>
<li>Get <a href="http://angusj.com/resourcehacker/">Resource Hacker</a> &#8211; you will be editing core windows DLLs with this tool.</li>
<li>FreeDOS or Linux Live CD/DVD &#8211; you have to save the file to the original location when windows is not running. You must also know how to work in the Live OS &#8211; be it DOS or Linux.</li>
<li>Courage &#8211; As I said before, this hack is not for the faint of heart.</li>
</ul>
<h2>Lets Begin</h2>
<p>Install <a href="http://angusj.com/resourcehacker/">Resource Hacker</a>. </p>
<p>Make a backup of &#8216;<code>C:\WINDOWS\system32\browselc.dll</code>&#8216; and &#8216;<code>C:\WINDOWS\system32\Restore\filelist.xml</code>&#8216; before doing anything &#8211; just in case.</p>
<p>Go to <code>C:\WINDOWS\system32</code></p>
<p>Make sure that you are seeing all the files there&#8230;<br />
Tools -&gt; Folder Options -&gt; &#8216;View&#8217; Tab -&gt; Hidden Files and folders -&gt; Show hidden files and folders(must be checked)</p>
<p><img src="http://www.bin-co.com/blog/wp-content/uploads/2009/01/show_hidden_files.png" alt="" title="Show Hidden Files in Windows" width="287" height="143" class="alignnone size-full wp-image-216" /></p>
<p>Refresh the folder and then find the file &#8216;<code>browselc.dll</code>&#8216;</p>
<p>Make a copy of that file in some other folder &#8211; say <code>C:/Hacks/</code></p>
<p>Now open Resource Hacker</p>
<p>Open the DLL file in Resource Hacker&#8230;<br />
File -&gt; Open -&gt; <code>C:/Hacks/browselc.dll</code></p>
<p>In the &#8216;Menu&#8217; find look through all sections to find a menu with the &#8216;File-&gt;Close&#8217; item. </p>
<p>It should be at Menu -&gt; 263 -&gt; 1033</p>
<p>Find the string<br />
<code>MENUITEM "&amp;Close", 40993, MFT_STRING, MFS_ENABLED</code></p>
<p><img src="http://www.bin-co.com/blog/wp-content/uploads/2009/01/close_menu_number.png" alt="" title="Close Menu Item Number" width="500" height="270" class="alignnone size-full wp-image-217" /></p>
<p>In this <strong class="highlight">the number 40993 is what we want</strong>. Write the number down somewhere. <strong class="highlight">Think of it as the function that gets executed when that menu item is clicked</strong>. You can create a shortcut for any menu item by find out this number for that menu item. </p>
<p>Now we have to add a shortcut for this &#8216;function&#8217; &#8211; go to the &#8216;Accelerators&#8217; section &#8211; &#8216;Accelerators -&gt; 256 -&gt; 1033&#8242;. We found the menu at Menu -&gt; 263 -&gt; 1033 &#8211; so the Shortcut should be at Accelerators -&gt; 256 -&gt; 1033. See the pattern?</p>
<p>Find the line<br />
<code>VK_ESCAPE, 41498, NOINVERT, VIRTKEY</code></p>
<p><img src="http://www.bin-co.com/blog/wp-content/uploads/2009/01/escape_key_line.png" alt="" title="Escape Key Line" width="500" height="139" class="alignnone size-full wp-image-218" /></p>
<p>Modify it to read<br />
<code>VK_ESCAPE, 40993, NOINVERT, VIRTKEY</code></p>
<p>I have changed the number to 40993 &#8211; the call for the &#8216;Close&#8217; action.</p>
<p>Now hit the &#8216;Compile Script&#8217; button on the top. If you have done it correctly, you should not get any errors.</p>
<p>Save the new version using File -&gt; Save</p>
<p>Congratulations, you have successfully created a new &#8216;Accelerator&#8217;(shortcut). Now the hard part &#8211; putting the file back into &#8216;C:\WINDOWS\system32&#8242;.</p>
<p>If you are on Windows XP, it monitors for changed files &#8211; so if we put the changed DLL file back, it will be reverted to the original file on the next boot. To get around it, follow the steps below&#8230;</p>
<p>Open up the file <code>C:\WINDOWS\system32\Restore\filelist.xml</code> in a editor like notepad</p>
<p>Find these lines&#8230;</p>
<pre><code class="xml">&lt;Exclude&gt;
	&lt;REC&gt;%windir%\system.ini&lt;/REC&gt;
	&lt;REC&gt;%windir%\tasks\desktop.ini&lt;/REC&gt;
	&lt;REC&gt;%windir%\win.ini&lt;/REC&gt;
	&lt;REC&gt;*:\AUTOEXEC.BAT&lt;/REC&gt;
	&lt;REC&gt;*:\CONFIG.MSI&lt;/REC&gt;
	&lt;REC&gt;*:\CONFIG.SYS&lt;/REC&gt;
&lt;/Exclude&gt;</code></pre>
<p>Add the line&#8230;<br />
&lt;REC&gt;%windir%\system32\browselc.dll&lt;/REC&gt;<br />
after the line &lt;REC&gt;*:\CONFIG.SYS&lt;/REC&gt;</p>
<p>After doing this you may not be able to save the file. Curse windows for a bit and continue.</p>
<p>Open up a DOS Shell and enter these commands in order&#8230;</p>
<pre><code class="batch">attrib -S -H C:\WINDOWS\system32\Restore\filelist.xml
attrib -R C:\WINDOWS\system32\Restore\filelist.xml</code></pre>
<p>Now you will be able to save this file &#8211; do so.</p>
<h2>Replace Original <code>browselc.dll</code> with Modified Version</h2>
<p>The next thing to do is replace the original browselc.dll file with our hacked version. This cannot be done when windows is running. It must be done when windows is down &#8211; that&#8217;s where FreeDOS CD or Linux Live CDs comes in.</p>
<h4>FreeDOS</h4>
<p>If you have FreeDOS CD, boot into that as the LiveCD(I hope you know how to do this &#8211; basically, you <strong class="highlight">put in the CD, reboot the system, change the setting in the BIOS to make the CD the primary boot device and boot into the CD</strong>. Needless to say, you need a bootable CD for this to work.)</p>
<p>After you have booted into DOS, execute the command&#8230;<br />
<code>copy C:\Hacks\browselc.dll C:\Windows\system32\browselc.dll</code></p>
<p>Now remove the FreeDOS CD, reboot back into windows.</p>
<h4>Linux</h4>
<p>If you have a live Linux CD, pop it in and boot into that. Now mount the partition that&#8217;s the C partition in windows(usually sda1 or hda1). Then all you have to do is <strong class="highlight">copy the modified DLL file from the &#8216;Hacks&#8217; folder to &#8216;Windows\system32\&#8217; folder</strong> in that partition using the File manager for that distribution.</p>
<p>Once that is done, you reboot into windows.</p>
<h3>All Done</h3>
<p>Finally, its all over. All you have to do is <strong class="highlight">open up a folder &#8211; and press the Escape key. If all went well, the explorer application will be closed</strong>.</p>
<p>This is a rather complicated way to do a rather simple thing &#8211; you set custom shortcuts easily using tools like <a href="http://www.autohotkey.com/">AutoHotKey</a> and setting up macros. But by doing it my way, you will learn a method to peek into exe and dll files. And if you are a programmer like me &#8211; it will give you hours of entertainment. I have actually found left over stuff from Windows 3.1 in Windows XP DLLs &#8211; but that&#8217;s a post for another time.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bin-co.com/blog/2009/01/windows-hacks-the-escape/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>3 Windows Speed Tips from a Linux User</title>
		<link>http://www.bin-co.com/blog/2009/01/3-windows-speed-tips-from-linux-user/</link>
		<comments>http://www.bin-co.com/blog/2009/01/3-windows-speed-tips-from-linux-user/#comments</comments>
		<pubDate>Sat, 03 Jan 2009 17:18:33 +0000</pubDate>
		<dc:creator>Binny V A</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[98]]></category>
		<category><![CDATA[fast]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[optimize]]></category>
		<category><![CDATA[speed]]></category>
		<category><![CDATA[tip]]></category>
		<category><![CDATA[trick]]></category>
		<category><![CDATA[tweak]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[xp]]></category>

		<guid isPermaLink="false">http://www.bin-co.com/blog/?p=212</guid>
		<description><![CDATA[Most of my regular readers know that <strong class="highlight">I do most of my work in <a href="http://lindesk.com/">Linux</a>. After all, my development platform is LAMP(L being Linux)</strong>. But it was not always so - <strong class="highlight">I used to be on Windows</strong>(in a period now referred to as the dark ages). Being a power user, I found a lot of tweaks on Windows. But I never managed to share them on any of my blogs - because I started almost all of them after I moved to Linux. So here is three tips on how to make Windows a bit better(or at least less painful).]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.bin-co.com/blog/wp-content/uploads/2009/01/windows_logo.jpg" alt="" title="Windows Logo" width="119" height="106" class="alignnone size-full wp-image-213 intro" align="right" /></p>
<p class="intro">Most of my regular readers know that <strong class="highlight">I do most of my work in <a href="http://lindesk.com/">Linux</a>. After all, my development platform is LAMP(L being Linux)</strong>. But it was not always so &#8211; <strong class="highlight">I used to be on Windows</strong>(in a period now referred to as the dark ages). Being a power user, I found a lot of tweaks on Windows. But I never managed to share them on any of my blogs &#8211; because I started almost all of them after I moved to Linux. So here is three tips on how to make Windows a bit better(or at least less painful).</p>
<p>I started on Windows 95 &#8211; my first computer(400 MHz, 32 MB RAM, 4 GB HDD) had it pre-installed. That was my introduction to computers. But soon I migrated to Windows 98. I have very fond memories of that OS &#8211; Windows 98 is my favorite OS in the windows family. As a matter of fact, even now, my systems have that green background of Windows 98. I moved to Linux(Fedora Core 1) after that. So most of the tips shared here was tested on Windows 98 &#8211; but I am sure it still applies to the later versions as well. I don&#8217;t use these tricks anymore(I don&#8217;t use Windows that much now) &#8211; so I wanted document them before I forget them.</p>
<p>Being a speed junkie &#8211; and having a 32 MB RAM &#8211; made me optimize my system a lot. I found most of the tips below with a lot of trial and error(we did not have the internet back then &#8211; why do you think I call it the dark ages?). Anyway, here are my top 3 tips to make your windows a little better&#8230;</p>
<h2>Speed Up Explorer.exe</h2>
<p>You can <strong class="highlight">speed up the time taken to show a folder contents</strong> using this trick&#8230;</p>
<ul>
<li>Open a folder in Explorer</li>
<li>Choose Tools &gt; Folder Options</li>
<li>Select the &#8216;Use Windows classic folders&#8217; in the Tasks section</li>
<li>Press OK.</li>
</ul>
<p>This will get rid of the &#8216;Common Tasks&#8217; to the left of the explorer. Now try browsing for files &#8211; you will notice a considerable difference in speed.</p>
<h2>Startup Optimization</h2>
<p>You might already know this tip if you are a &#8216;Power User&#8217; &#8211; msconfig. To <strong class="highlight">make your system more responsive and consume less memory</strong>, you can remove unwanted tasks from startup&#8230;</p>
<ul>
<li>Go to Start &gt; Run.</li>
<li>Type in &#8216;msconfig&#8217; without the quotes</li>
<li>Go to the Startup tab</li>
<li>Unselect the application that you know you don&#8217;t need. </li>
<li>Press OK &#8211; you don&#8217;t have to restart.</li>
</ul>
<p>The deactivated apps will not start from the next boot. In some cases, this will really speed up your system.</p>
<h2>Replace Default File Viewers</h2>
<p><strong class="highlight">Notepad should be replaced with <a href="http://www.liquidninja.com/metapad/">Metapad Lite</a></strong>. Not Notepad++ or other &#8216;Advanced Editors&#8217; &#8211; they take half a second to load. Metapad Lite is much faster &#8211; as fast as notepad &#8211; but with more features.</p>
<p>Use <strong class="highlight">Irfan View as your default Image viewer</strong>. I am sure most of you guys are doing this already.</p>
<p><strong class="highlight">Replace Internet Explorer with Firefox</strong>. You will not see a immediate speed improvement. But in the long run, Firefox will prevent many virus from getting access to your system &#8211; giving you a stabler, faster system.</p>
<p><a href="http://www.foobar2000.org/">Foobar2000</a> is a better and faster audio player than default audio player provided by Windows. But then again, do anyone use Windows Media Player?</p>
<p>If you are a programmer I would recommend <strong class="highlight"><a href="http://notepad-plus.sourceforge.net/uk/site.htm">Notepad++</a> &#8211; as an editor</strong> &#8211; not as a Notepad replacement.</p>
<h2>Other Tweaks</h2>
<p>There are many other tweaks as well &#8211; but most of them are obsolete due to faster machines and newer OSes. Some of them include&#8230;</p>
<ul>
<li>Disabling Wallpaper/Screensaver</li>
<li>Use <a href="http://www.x-setup.net/">XSetup</a> to optimize hidden settings</li>
<li>Using a better terminal than Command Prompt</li>
<li>Disabling the &#8216;Effects&#8217; &#8211; Fade effects, Menu Shadow, etc.</li>
<li>Disabling File Indexing</li>
<li>Disabling HDD Paging(Virtual Memory)</li>
<li>And more&#8230;</li>
</ul>
<p>In my next post, I will introduce you to my great Windows Hack &#8211; &#8216;The Escape&#8217;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bin-co.com/blog/2009/01/3-windows-speed-tips-from-linux-user/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>A New Blogging Tradition &#8211; Subscription Notification</title>
		<link>http://www.bin-co.com/blog/2008/10/blogging-tradition-subscription-notification/</link>
		<comments>http://www.bin-co.com/blog/2008/10/blogging-tradition-subscription-notification/#comments</comments>
		<pubDate>Sun, 19 Oct 2008 20:15:52 +0000</pubDate>
		<dc:creator>Binny V A</dc:creator>
				<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Opinion]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[subscribe]]></category>
		<category><![CDATA[tradition]]></category>

		<guid isPermaLink="false">http://www.bin-co.com/blog/?p=141</guid>
		<description><![CDATA[For the last week, I have been following a new tradition - <strong class="highlight">whenever I subscribe to a site, I send off an email to the sites author letting him/her know that I have subscribed</strong>. The main benefit of doing this is networking. Also, you can send the link to your blog in that mail.]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.bin-co.com/blog/wp-content/uploads/2008/10/handshake.jpg" alt="" title="Handshake" width="363" height="330" class="alignnone size-full wp-image-142 intro" align="right" /></p>
<p class="intro">For the last week, I have been following a new tradition &#8211; <strong class="highlight">whenever I subscribe to a site, I send off an email to the sites author letting him/her know that I have subscribed</strong>. The main benefit of doing this is networking. Also, you can send the link to your blog in that mail.</p>
<p>Last week, I subscribed to a few new blogs &#8211; and I send them an email notifying them that I subscribed &#8211; along with my link. Here is a list of those blogs&#8230;</p>
<ul>
<li><a href="http://wftlbytes.com/">WFTL Bytes!</a></li>
<li><a href="http://amit-agarwal.co.in/wordpress/">Amit Agarwal</a></li>
<li><a href="http://anantshri.info/">Anant Shrivastava</a></li>
<li><a href="http://www.komodomedia.com/">Komodomedia</a></li>
<li><a href="http://albertux.ayalasoft.com/">Albertux Blog</a></li>
</ul>
<p>This is the basic template of the email I send &#8211; feel free to modify it and use it if you want to do this as well&#8230;</p>
<blockquote><p>Hi [Name],</p>
<p>I am Binny V A(<a href="http://blog.binnyva.com">http://blog.binnyva.com</a>). I wrote this to let you know that I just subscribed to your site. I really enjoyed the [name of an article you really enjoyed] article.</p>
<p>Also, I have a blog in this field &#8211; <a href="http://lindesk.com/">http://lindesk.com/</a> &#8211; check it out.</p>
<p>Thanks &#8211; and keep up the good work.</p>
<p>&#8211;<br />
Binny V A<br />
<a href="http://binnyva.com/">http://binnyva.com/</a>
</p></blockquote>
<p>Sometimes, I also ask them to consider switching to full feeds(if they are using partial feeds). Or if I find a bug in their site(like a broken link or something), I let them know in this mail.</p>
<p>In some cases I could not send these &#8211; because I can&#8217;t find the email of the admin. In such cases, I am thinking about leaving a comment to let them know &#8211; but I am not sure about it.</p>
<h2>Advantages of Subscription Notification</h2>
<dl>
<dt>Networking</dt>
<dd>You can contact someone else in the same field as you &#8211; this relation can later lead to backlinks, guest blogging opportunities, etc.</dd>
<dt>A Possible New Reader</dt>
<dd>You are sending your link to another blogger in the same field as you &#8211; chances are, he will subscribe to your blog as well.</dd>
<dt>World Peace</dt>
<dd>When someone sends you an email telling you how much they loved your blog and so on, you get a warm fuzzy feeling. The sender also gets a bit of this &#8216;<abbr title="Warm Fuzzy Feeling">WFF</abbr>&#8216; by sending it.</dd>
<dt>And More</dt>
<dd>I have only started doing this for a week &#8211; I&#8217;ll find out its hidden advantages later on.</dd>
</dl>
<h2>What do you think?</h2>
<p>This is the part I want your help in &#8211; <strong class="highlight">what do you think</strong> of the idea? Some points I would like your feedback on&#8230;</p>
<ul>
<li>Will these emails be <strong class="highlight">considered spammy?</strong></li>
<li><strong class="highlight">How will you respond if you get an email like this</strong>? Will you think someone is pushing you their site &#8211; or will you be glad to put a face on one of your feedburner stats?</li>
<li>Will you <strong class="highlight">consider doing this?</strong></li>
</ul>
<p class="footnote">Image Credit: <a href="http://www.flickr.com/photos/ooohoooh/1350774613/">oooh.oooh</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.bin-co.com/blog/2008/10/blogging-tradition-subscription-notification/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Rules for Creating an RSS Feed</title>
		<link>http://www.bin-co.com/blog/2008/07/rules-for-creating-an-rss-feed/</link>
		<comments>http://www.bin-co.com/blog/2008/07/rules-for-creating-an-rss-feed/#comments</comments>
		<pubDate>Thu, 17 Jul 2008 17:51:29 +0000</pubDate>
		<dc:creator>Binny V A</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[atom]]></category>
		<category><![CDATA[feed]]></category>
		<category><![CDATA[format]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[rule]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.bin-co.com/blog/?p=117</guid>
		<description><![CDATA[Some rules for creating an RSS feed.]]></description>
			<content:encoded><![CDATA[<p><a href='http://feeds.feedburner.com/bin-blog'><img src="http://www.bin-co.com/blog/wp-content/uploads/2008/07/rss_feed.png" alt="" title="RSS Feed" width="158" height="158" class="alignnone size-full wp-image-118 intro" align="right" /></a></p>
<p class="intro">Most of us don&#8217;t have to worry about creating an RSS feed for our sites &#8211; the <abbr title="Content Management System">CMS</abbr> tool will do that automatically. But there are times when you are creating a custom application &#8211; when you have to create an RSS feed yourself. Creating it is easy &#8211; they don&#8217;t call it <strong>Really Simple</strong> Syndication for nothing. But there are a few rules(or rather, guidelines) that are ignored by most &#8211; make sure you follow them.</p>
<p>I am by no means an expert on this format &#8211; but I have created <a href="http://www.openjs.com/rss.php?no_redirect=1">RSS feeds</a> and have <a href="http://www.bin-co.com/blog/2008/02/alertle-launched/">worked</a> on  <a href="http://www.alertle.com/">applications</a> to <a href="http://www.bin-co.com/php/scripts/xml2array/">parse</a> it. So I have seen my share of bad implementations.</p>
<h2>Use RSS rather than Atom</h2>
<p>I prefer using <a href="http://en.wikipedia.org/wiki/RSS_(file_format)">RSS</a> as opposed to the <a href="http://en.wikipedia.org/wiki/Atom_(standard)">Atom format</a>. But Atom is now supported on almost all feed readers &#8211; so this preference may change. But for now, I like RSS better than Atom.</p>
<h2>Last-Modified</h2>
<p>Make sure your feed has the <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.29">last modified header</a>. This will prevent unnecessary downloading of the feed if there are no new articles. It <a href="http://feedparser.org/docs/http-etag.html">saves both the site&#8217;s and the user&#8217;s bandwidth</a>.</p>
<p>This is extremely easy in PHP&#8230;</p>
<pre><code class="php">$last_edited = '2008-07-17 01:02:03'; // This should be the time of the latest post.
header("Last-Modified: " . date('r',strtotime($last_edited)));</code></pre>
<h2>10 Posts</h2>
<p>Make sure you provide a limited number of posts in the feed &#8211; the perfect number, in my opinion, is 10. It can increase or decrease a bit &#8211; its no big deal. If your posting frequency is high, the number should increase. And if the frequency is low, the number of items in the feed can go down.</p>
<p>But make sure that you are not including all the posts from the beginning of time until now. This is a big waste of bandwidth. Unfortunately, many have adopted this method. For example, take this feed &#8211; <a href="http://www.catandgirl.com/rss.php">Cat and Girl Comic feed</a>.</p>
<p>The other extream is just as bad &#8211; providing just the latest item in the feed. If the author writes two posts in quick succession, the viewers may not get an article. An example for this in the <a href="http://www.viruscomix.com/rss.xml">subnormality comic</a>.</p>
<h2>Validate it</h2>
<p>XML is not as forgiving as HTML &#8211; so make sure you <a href="http://www.feedvalidator.org/">validate your feed</a> before releasing it upon the world.</p>
<h2>Use FeedBurner</h2>
<p>When it comes to deployment, using <a href="http://www.feedburner.com/fb/a/home">FeedBurner</a> is a better option that using your own server. In addition to its statistics, it will also act as a <abbr title="Content Distribution Network">CDN</abbr> lowering the load on your server.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bin-co.com/blog/2008/07/rules-for-creating-an-rss-feed/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Python Reference Manual has a lot to Learn From PHP</title>
		<link>http://www.bin-co.com/blog/2008/06/python-reference-manual-has-a-lot-to-learn-from-php/</link>
		<comments>http://www.bin-co.com/blog/2008/06/python-reference-manual-has-a-lot-to-learn-from-php/#comments</comments>
		<pubDate>Tue, 03 Jun 2008 18:34:49 +0000</pubDate>
		<dc:creator>Binny V A</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[documentation]]></category>
		<category><![CDATA[manual]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[reference]]></category>

		<guid isPermaLink="false">http://www.bin-co.com/blog/?p=110</guid>
		<description><![CDATA[Unlike the other scripting languages I work with(like PHP, Ruby, JavaScript, etc.), I am not comfortable using Python. I have made some stuff in Python(for example, frees) &#8211; but I could get into the flow as easily as with other languages. For the longest time, I thought it was because of the whitespace issue. But [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.bin-co.com/blog/wp-content/uploads/2008/03/python-logo.gif" alt="" title="Python Logo" width="211" height="71" class="alignnone wp-image-97 intro" align="right"  /></p>
<p class="intro">Unlike the other scripting languages I work with(like PHP, Ruby, JavaScript, etc.), I am not comfortable using Python. I have made some stuff in Python(for example, <a href="http://lindesk.com/2008/04/frees-hard-disk-drives-free-space-viewer/">frees</a>) &#8211; but I could get into the flow as easily as with other languages. For the longest time, I thought it was because of the whitespace issue. But recently, I created a small Python script &#8211; that&#8217;s when I understood that whitespace does not concern me. <strong class="highlight">What make me angry at python is its documentation/manual</strong>.</p>
<p>By Python Manual, I mean the official Python Manual available at <a href="http://docs.python.org/">http://docs.python.org/</a>. I have <strong class="highlight">downloaded the entire <a href="http://www.python.org/doc/2.5.2/download/">manual to my system as HTML files</a> and use that as a reference</strong> when working with Python. This is what I have done for all the other languages I work with&#8230;</p>
<ul>
<li><a href="http://perldoc.perl.org/">Perl</a></li>
<li><a href="http://www.php.net/manual/en/">PHP</a></li>
<li><a href="http://www.ruby-doc.org/docs/ProgrammingRuby/">Ruby</a></li>
<li><a href="http://docs.sun.com/source/816-6408-10/">JavaScript</a> </li>
<li><a href="http://www.w3.org/TR/REC-CSS2/">CSS</a></li>
<li>etc.</li>
</ul>
<h2>Finding a Function</h2>
<p>There is one big problem with using HTML files as your reference &#8211; you cannot search through it. So I try to find a page in the documentation that <strong class="highlight">lists all the functions in a single page</strong>. When I need to find a function, all I have to do is <strong class="highlight">search through this page</strong>. These pages in the documentation serves this purpose&#8230;</p>
<ul>
<li><a href="http://www.php.net/manual/en/indexes.php">PHP</a></li>
<li><a href="http://perldoc.perl.org/index-functions.html">Perl</a></li>
<li><a href="http://docs.sun.com/source/816-6408-10/bklast.htm">JavaScript</a></li>
<li><a href="http://www.ruby-doc.org/docs/ProgrammingRuby/html/builtins.html">Ruby</a></li>
</ul>
<p>What about Python? Well, <strong class="highlight">Python don&#8217;t have such a page</strong> in their manual. The nearest one I could find a combination of four pages &#8211; <a href="http://docs.python.org/modindex.html">Module Index</a> + <a href="http://docs.python.org/lib/genindex.html">Library Index</a> + <a href="http://docs.python.org/tut/node19.html">Tutorial Index</a> + <a href="http://docs.python.org/ref/genindex.html">Language Index</a>. Its no where near as useful.</p>
<p>Even if you are online(remember, many people are not connected all the time), its still <strong class="highlight">not easy to find a function in Python documentation &#8211; even with searching</strong> capabilities. Don&#8217;t believe me? OK &#8211; go to <a href="http://docs.python.org/">Python Docs</a> and try to find the documentation for the function that, say, reverses an array. Now go to the <a href="http://php.net/manual/en/">PHP site</a> and do the same.</p>
<h2>Reference Formats</h2>
<p>Anyway, I cannot really complain about the the availability of the &#8216;function page&#8217;. Its just the way I prefer &#8211; other people may not want such a page. But I can complain about the fact that <strong class="highlight">they don&#8217;t provide a CHM file</strong> in their <a href="http://www.python.org/doc/2.5.2/download/">downloads section</a>. CHM solves the problem as you can search through them easily.</p>
<p>PHP, on other hand, <a href="http://www.php.net/download-docs.php">provides the CHM file</a>. This makes the PHP manual much more easier to use.</p>
<p>Even though Python don&#8217;t officially provide a CHM file, others have made it available on the net. Its just a <a href="http://www.google.com/q=python+reference+chm">google search away</a>. But I prefer to get these stuff from an official source.</p>
<h2>Level of Detail in the Documentation</h2>
<p>The worst sin of the Python manual is that the <strong class="highlight">documentation is not detailed enough</strong>. To better understand this, let&#8217;s take an example &#8211; say the array reversal function. First we take a look at the Python <a href="http://docs.python.org/lib/module-array.html#l2h-779">documentation for this function</a>&#8230;</p>
<dl>
<dt>reverse()</dt>
<dd>Reverse the order of the items in the array.</dd>
</dl>
<p>One line. That&#8217;s it! If you are not well versed in Python, you will have no idea of how to use this function &#8211; because there is no example. Most people will expect that the array must be given as the argument. But the argument list is empty in the documentation. That&#8217;s because the array is not passed as an argument &#8211; rather, in Python, this function is a member function of the array object &#8211; so the proper usage will be something like this&#8230;</p>
<pre><code class="python">x = [1,2,4]
x.reverse()
#Now x has the value [4,2,1]</code></pre>
<p>I know that because I know Python &#8211; but if a new user manages to find the documentation for this function, he will be confused. Another thing &#8211; I am not saying that there are no examples in the documentation &#8211; examples are given for a lot of functions. But its no where near the level that PHP has achieved.</p>
<p>OK &#8211; now lets see the PHP manual for the same function &#8211; <a href="http://php.net/manual/en/function.array-reverse.php">array_reverse()</a>. There is an entire page for that function. Not just for this function &#8211; there is <strong class="highlight">one page of documentation for every function</strong> in PHP. And <strong class="highlight">there are examples</strong>. And at the end, <strong class="highlight">there is a collection of &#8216;user notes&#8217;</strong> &#8211; making each function much clearer. Beautiful!</p>
<p>I feel a bit guilty about comparing Python with PHP documentation &#8211; <strong class="highlight">PHP has the best documentation in its class</strong> of languages. But still, Python has a lot to learn from PHP(I wanted to say that for a long time <img src='http://www.bin-co.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bin-co.com/blog/2008/06/python-reference-manual-has-a-lot-to-learn-from-php/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Document Formats</title>
		<link>http://www.bin-co.com/blog/2008/04/document-formats/</link>
		<comments>http://www.bin-co.com/blog/2008/04/document-formats/#comments</comments>
		<pubDate>Thu, 03 Apr 2008 18:20:39 +0000</pubDate>
		<dc:creator>Binny V A</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Opinion]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[document]]></category>
		<category><![CDATA[format]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[online]]></category>
		<category><![CDATA[text]]></category>

		<guid isPermaLink="false">http://www.bin-co.com/blog/2008/04/document-formats/</guid>
		<description><![CDATA[In FLOSS circles, March 26 is celebrated as the Document Freedom Day. Document Freedom Day (DFD) is a global day for document liberation. It will be a day of grassroots effort to educate the public about the importance of Free Document Formats and Open Standards in general. This is when I realized that people actually [...]]]></description>
			<content:encoded><![CDATA[<p><img class="intro" align="right"  src='http://www.bin-co.com/blog/wp-content/uploads/2008/04/documents.jpg' alt='Documents' /></p>
<p class="intro">In FLOSS circles, March 26 is celebrated as the <a href="http://www.documentfreedom.org/">Document Freedom Day</a>. </p>
<blockquote><p>Document Freedom Day (DFD) is a global day for document liberation. It will be a day of grassroots effort to educate the public about the importance of Free Document Formats and Open Standards in general.</p></blockquote>
<p>This is when I realized that people actually use the office packages daily. I almost never use it. According to me there are three options to store text data.</p>
<ul>
<li>Plain Text</li>
<li>HTML</li>
<li>Database</li>
</ul>
<h2>Plain Text</h2>
<p>The <strong class="highlight">simplest format</strong> there is. If there is something I should remember, I just put it in a text file and save it to the desktop. I used to use it a lot earlier &#8211; but I don&#8217;t use it much nowadays due to searchability issues. There are quite a few <a href="http://ifacethoughts.net/2007/09/27/we-need-more-txt/">advantages in using the text format</a></p>
<h2>HTML</h2>
<p>If I <strong class="highlight">need any formatting in the text, I create the document in HTML</strong>. It is easier for me to create the formatting using HTML code that using WYSIWYG Word Processors(like MS Word). I write all my blog posts in HTML &#8211; perhaps the only occasion where I need formatting.</p>
<h3>Database</h3>
<p>My favorite method to store text data is in a database. I am a web developer &#8211; so I always have a Web Server and Database server running on my system &#8211; so this system is perfect for me. </p>
<h3>Interface</h3>
<p>Remove that scared look on your face &#8211; I don&#8217;t use <a href="http://binnyva.blogspot.com/2006/08/managing-databases-with-mysql-clients.html">phpMyAdmin</a> or any Database Administration tools as the interface to save/view the data. I use my own custom scripts or WordPress.</p>
<p>The best example of this is <a href="http://txt.binnyva.com/">txt</a>. Txt is my code snippets/commands repository. You can view the full story in the <a href="http://binnyva.blogspot.com/2007/03/saving-code-snippets-part-2.html">Saving Code Snippets</a> post.</p>
<p>That&#8217;s an online example &#8211; I also have a personal wordpress blog running in my local server. I use it to record events, purchases, store receipts etc.</p>
<h3>Advantages</h3>
<dl>
<dt>Tagging</dt>
<dd><strong class="highlight">Tagging is heaven-sent to make information more findable</strong> &#8211; any del.icio.us user should know that. I used to install Ultimate Tag Warrior to get this feature &#8211; but WordPress now supports tags natively.</dd>
<dt>Searching</dt>
<dd><strong class="highlight">Searching for data within a database is much more easier, faster and provides more relevent results</strong> than searching for the data in a collection of file. Even if you are using a file indexing software like Google Desktop Search or Beagle/<a href="http://lindesk.com/2007/04/desktop-searching-in-linux-with-recoll/">Recoll</a>(for linux users), I find database searching more easier. Another advantage of using database to search is that you can <strong class="highlight">create complex queries if you know SQL</strong>.</dd>
</dl>
<h3>Disadvantages</h3>
<dl>
<dt>Not for everyone</dt>
<dd>Let&#8217;s face it &#8211; installing and maintaining a web/database server is a tad in the geek zone. An average Joe will find it just a little bit out of their league.</dd>
<dt>Overhead</dt>
<dd>Running a web server and a database server is a bit demanding on the RAM.</dd>
<dt>Backing up a little more complicated &#8211; but easier</dt>
<dd><a href="http://txt.binnyva.com/2007/03/mysql-database-backuprestore/">Backing up the data in a Database</a> is not as straight forward as backing up files &#8211; but its actually easier if you know how.</dd>
</dl>
<h2>Online</h2>
<p>One extra method to store the data &#8211; online.  This <strong class="highlight">data is stored in a database &#8211; but you don&#8217;t have the disadvantages associated with using a database</strong>. More and more people are turning to this method now. I did not include it in the initial list because its not a data format &#8211; its more of a data storing method.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bin-co.com/blog/2008/04/document-formats/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Learning a New Programming Language: The &#8216;Hello World&#8217; Method</title>
		<link>http://www.bin-co.com/blog/2008/03/learning-a-new-programming-language-the-hello-world-method/</link>
		<comments>http://www.bin-co.com/blog/2008/03/learning-a-new-programming-language-the-hello-world-method/#comments</comments>
		<pubDate>Thu, 06 Mar 2008 17:15:39 +0000</pubDate>
		<dc:creator>Binny V A</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[hello]]></category>
		<category><![CDATA[language]]></category>
		<category><![CDATA[learning]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[world]]></category>

		<guid isPermaLink="false">http://www.bin-co.com/blog/2008/03/learning-a-new-programming-language-the-hello-world-method/</guid>
		<description><![CDATA[Learning a new programming language is fun &#8211; and essential if you want to stay competitive. I try to learn new languages all the time(my latest target is Haskell). As a result, I have a system to make learning new languages easier. This is for people who already know a programming language and want to [...]]]></description>
			<content:encoded><![CDATA[<p><img class="intro" align="right" src='http://www.bin-co.com/blog/wp-content/uploads/2008/03/hello.jpg' alt='Hello World Learning' /></p>
<p class="intro">Learning a new programming language is fun &#8211; and essential if you want to stay competitive. I try to learn new languages all the time(my latest target is Haskell). As a result, I have a system to make learning new languages easier. This is for people who already know a programming language and want to learn another one.</p>
<h2>Requirements</h2>
<h3>What you must have&#8230;</h3>
<dl>
<dt>The interpreter/compiler of the language you are learning</dt>
<dd>You must be able to run the program after writing it.</dd>
<dt>Language reference manual/documentation</dt>
<dd>Usually found at the site of the language. Put a shortcut to that on your desktop &#8211; because you will be using this all the time.</dd>
<dt>An easy to follow tutorial</dt>
<dd>Search for it in Google. If you find one and its hard to follow, ditch it and get another. You may not need this &#8211; as manual for most languages have a tutorial in them.</dd>
<dt>A &#8216;todo&#8217; project that you cannot live without</dt>
<dd>This is what forces you to learn the language &#8211; more on this later.</dd>
</dl>
<h3>What I would recommend you have&#8230;</h3>
<p>Having this will help you learn &#8211; but its not necessary.</p>
<dl>
<dt>A Net Connection</dt>
<dd>You may want to ask your doubt on the IRC channel. Or on a forum. Or to google the error message you got.</dd>
<dt>A Decent IDE</dt>
<dd>This may make your job easier &#8211; but if you have notepad, that&#8217;s enough.</dd>
</dl>
<h3>What you don&#8217;t need</h3>
<dl>
<dt>Books on the language</dt>
<dd>You may need a book to master the language &#8211; but you don&#8217;t need one to learn it.</dd>
<dt>A Teacher</dt>
<dd>Its helpful to have someone to clarify the doubts you may have &#8211; but <strong class="highlight">no one can teach you anything you cannot learn yourself</strong>.</dd>
</dl>
<h2>The Hello World Script</h2>
<p>First you have to create the &#8216;hello world&#8217; application. This is more than just &#8216;print &#8220;Hello World&#8221;&#8216; &#8211; it will act as a <strong class="highlight">cheatsheet for you until you familiarize yourself with the language</strong>. The point of this application is to use <strong class="highlight">all the most commonly used elements of a language and putting it in a single place</strong> so that you can refer to it later.</p>
<p>Your first job is to go to the tutorial, the manual and the internet until you create the Hello World application with the following stuff in it. I will provide an example &#8211; how the &#8216;hello world&#8217; application will look in PHP.</p>
<p>After each step run the application and make sure it works.</p>
<dl>
<dt>Print &#8220;Hello World\n&#8221;</dt>
<dd>
<p>Why do you think we call it a hello world application? Write the code to <strong class="highlight">print a string &#8216;hello world&#8217; and save it</strong> to a file. Now <strong class="highlight">run it using the interpreter</strong> &#8211; and make sure it works &#8211; see it in action.</p>
<pre><code class="php">
// Printing(IO)
print "Hello World!\n";
	</code></pre>
</dd>
<dt>Comments</dt>
<dd>
<p>Put a single line comment(like //) on top of the &#8220;print &#8216;hello world&#8217;&#8221; code and if your language supports it, a multiline comment(/* &#8211; */) as well. Run the script to make sure the comments work as advertised.</p>
<pre><code class="php">
// Single line comment.
/*
Mulitline comment.
*/
	</code></pre>
<p>I was just kidding about running the script to test the comments &#8211; you did&#8217;nt do it, did you?</p>
</dd>
<dt>Use a variable(a string and an integer) and a concatenation operator.</dt>
<dd>
<p>Create a variable called name(string) &#8211; and give it your name as the value. Create another integer variable and give it the current year. You don&#8217;t have to find it programatically &#8211; just put it as 2008 or something. Now you have to print out the a string &#8220;Hello, &lt;name&gt; &#8211; Welcome to year &lt;$year&gt;&#8221;. This string will let you concatenate two different type variable to a string &#8211; and it makes me feel like a time traveler <img src='http://www.bin-co.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> .</p>
<p>Yeah &#8211; the value of variable name should appear at &lt;name&gt;. Use the concatenation operator if possible &#8211; in PHP, write</p>
<pre><code class="php">print "Hello, " . $name . " - welcome to year " . $year;</code></pre>
<p>instead of </p>
<pre><code class="php">print "Hello, $name - welcome to year $year";</code></pre>
<p>This is because different languages have different concatenation operators. The other stuff is the same almost universally. + refers to addition. &#8211; refers to subtraction. * is multiplication. My point is that <strong class="highlight">if you know the operators for one language, you know the operators for almost all languages</strong>. But the concatenation operator differs from language to language &#8211; its &#8216;+&#8217; in javascript, ruby. Its &#8216;.&#8217; in Perl, PHP, etc.</p>
<p>There are exceptions to this rule &#8211; &#8216;=&#8217; is the equality operator in SQL while it all other language its &#8216;==&#8217;. The assignment operator is &#8216;:=&#8217; in pascal &#8211; in all other it is &#8216;=&#8217;. If you notice any difference in any operator write some code using that operator in this section.</p>
</dd>
<dt>Use if/else if/else</dt>
<dd>
<p>Create something like this pseudo code&#8230;</p>
<pre><code class="pseudo">if (year &gt; 2008) {
	print "Welcome to the future - yes we have flying cars!"
}
else if(year &lt; 2008) {
	print "The past - please don't change anything. Don't step on any butterflies. And for the sake of all that's good and holy, stay away from your parents!"
}
else {
	print "Anything wrong with your time machine? You have not gone anywhere, kiddo."
}</code></pre>
<p>In PHP, this section will look like this&#8230;</p>
<pre><code class="php">//If,else conditions
if ($year &gt; 2008) {
	print "Welcome to the future - yes, we have flying cars!";
}
else if($year &lt; 2008) {
	print "The past - please don't change anything. Don't step on any butterflies. And for the sake of all that's good and decent, stay away from your parents!";
}
else {
	print "Anything wrong with your time machine? You have not gone anywhere, kiddo.";
}
print "\n";
	</code></pre>
<p>If you use switch(and the new language supports switch), you can write an example of switch here. </p>
</dd>
<dt>Print &#8216;Hi there!&#8217; 3 times using a for loop</dt>
<dd>
<p>A PHP example of using for loop(my all time favorite loop)&#8230;</p>
<pre><code class="php">// For loop
for($i=0; $i&lt;3; $i++) {
	print "$i) Hi there!\n";
}
	</code></pre>
</dd>
<dt>Create a list(array) and iterate through it using while/for/foreach loop.</dt>
<dd>
<p>I am using a while loop here &#8211; to keep things different&#8230;</p>
<pre><code class="php">
//Numerical Array, While
$rules = array(
	'Do no harm',
	'Obey',
	'Continue Living'
);
$i = 0;
while($i&lt;count($rules)) {
	print "Rule " . ($i+1) . " : " . $rules[$i] . "\n";
	$i++;
}	</code></pre>
</dd>
<dt>Create a hash(associative array) and iterate through it.</dt>
<dd>
<p>If the language you are going to learn have &#8216;foreach&#8217;, this maybe the best time to use it&#8230;</p>
<pre><code class="php">// Associated array, foreach
$associated = array(
	'hello'	=>	'world',
	'foo'	=>	'bar',
	'lorem'	=>	'ipsum'
);
foreach($associated as $key => $value) {
	print "$key: $value\n";
}</code></pre>
</dd>
<dt>Create a function with an argument and a return.</dt>
<dd>
<p>If you need, you can create an example for call by reference, optional arguments, default argument value, variable argument count etc. as well &#8211; but they are not essential. Make sure you include the code to call a function as well.</p>
<pre><code class="php">// Function, argument, return, call
function hello($name) {
	return "Hello " . $name;
}
$hello_string = hello("Binny");</code></pre>
</dd>
</dl>
<h3>Optional Code</h3>
<p>I don&#8217;t usually included some of these in my &#8216;hello world&#8217; scripts &#8211; but they can be useful in some cases. Some may find them useful &#8211; so if you think you are going to use any of these, include it in your file.</p>
<dl>
<dt>Class, Objects, Member variables and functions</dt>
<dd>
<p>If you are a big fan of OOP, create the code for a class. Make sure it has all the following elements&#8230;</p>
<ul>
<li>At least one member variable</li>
<li>At least two member functions</li>
<li>Access the member variable and the other function from within a member function.</li>
<li>Create an object of this class</li>
<li>Call a member function using the object.</li>
</ul>
<pre><code class="php">// One for the OOP fanboys - Class, members, objects and stuff.
class Movie {
	public $name = '';
	public $rating = 0;

	function __construct($name) {
		$this-&gt;name = $name;
		$this-&gt;rateMovie();
	}
	function rateMovie() {
		$this-&gt;rating = (strlen($this-&gt;name) % 10) + 1; //IMDBs rating algorithm. True story!
	}

	function printMovieDetails() {
		print "Movie : {$this-&gt;name}\n";
		print "Rating : " . str_repeat('*', $this-&gt;rating) . "({$this-&gt;rating})\n\n";
	}
}
//Create the object
$ncfom = new Movie("New Country for Old Men"); //It's a sequel!
$ncfom-&gt;printMovieDetails();
</code></pre>
</dd>
<dt>File IO</dt>
<dd>
<p>Include this code &#8211; it is sure to come in useful someday. Unless you are learning JavaScript.</p>
<pre><code class="php">// File IO
// File reading, easy method...
$contents = file_get_contents('hello.php');
// Writing to a file
$file_handle = fop<span></span>en('/tmp/hello.txt', 'w');
fputs($file_handle, "Hello World");
fclose($file_handle);
	</code></pre>
</dd>
<dt>Command Execution</dt>
<dd>
<p>I tend to include this &#8211; but it may be unnecessary for you.</p>
<pre><code class="php">// Command Executing
print `ls`; //Execute the command 'ls' and print its output</code></pre>
</dd>
<dt>Regular Expressions</dt>
<dd>
<p>I always include them &#8211; I am a big fan of regular expressions. I have lost count of how many times <a href="http://xkcd.com/208/">they have saved the day</a>.</p>
<pre><code class="php">// Regular Expressions
$string = "Hello World";
if(preg_match('/^Hell/', $string)) print "Yup - its evil\n";
print preg_replace('/l([^l])/', "$1", $string); //Remove an 'l' from both words. Should print 'Helo Word'
	</code></pre>
</dd>
</dl>
<h3>Specialized Code</h3>
<p>The language you learn may have a specialized field which we may have not used yet. If so, put it down here.</p>
<p>If you are learning javascript, write some code to access DOM nodes here. If you are using PHP, database connectivity will go well here. If you are learning any web server side languages, write the code to fetch the POST/GET request values. For PHP, it may look something like this&#8230;</p>
<pre><code class="php">
// Database connectivity(native)
mysql_connect('localhost', 'root', '') or die("Cannot connect to the Database server");
mysql_select_db('Data') or die('Could not find a database called "Data"');

// Executing Query
$sql_handle = mysql_query('SELECT name,url,description FROM Comment LIMIT 1') or die('Query Error: ' . mysql_error());
while($row = mysql_fetch_assoc($sql_handle)) {
	print "Name	:	$row[name]\n";
	print "URL	:	$row[url]\n";
	print "Desc	:	$row[description]\n\n";
}
// Just a note here - if you are going to use PHP with database in a production system(and you will, trust me), use a Database abstraction layer rather than the above mentioned native methods.

print $_REQUEST['username']; // Method to get the value of the field 'username' after a form submit. Will not work at CLI execution
	</code></pre>
<h2>Project</h2>
<p>Next thing you need is <strong class="highlight">a project &#8211; which you are going to build using the new language</strong>. Some points that you have to look for when choosing the new project&#8230;</p>
<ol>
<li>It should not be a huge project.</li>
<li>At the same time, it should not be something trivial.</li>
<li>There must be something about the project which would force you to finish it.</li>
</ol>
<p>The third point needs a little explaining. You should not just pick any project that pops into your mind. It must be something that you need &#8211; something you could not live without. If it is important to you, you will have a <strong class="highlight">motivation to finish the project</strong>. Otherwise, you will drop the project at the first sign of trouble. But if its important to you, you will spend more time on it &#8211; you will look at documentation, post the problem in forums, ask others in IRC channels. And eventually, you will fix the problem. And you will finish the project.</p>
<p>While working on the project, keep the &#8216;hello world&#8217; open &#8211; you will find yourself referring to it often.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bin-co.com/blog/2008/03/learning-a-new-programming-language-the-hello-world-method/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
	</channel>
</rss>

