<?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>Me.Tech() &#187; Tips,Tricks and code</title>
	<atom:link href="http://riteshnayak.com/blog/category/tipstricks-and-code/feed/" rel="self" type="application/rss+xml" />
	<link>http://riteshnayak.com/blog</link>
	<description>my technology blog</description>
	<lastBuildDate>Fri, 20 Jan 2012 12:04:34 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>How to pick a domain name for your next web product  &#8211; Tips</title>
		<link>http://riteshnayak.com/blog/2012/01/20/how-to-pick-a-domain-name-for-your-next-web-product-tips/</link>
		<comments>http://riteshnayak.com/blog/2012/01/20/how-to-pick-a-domain-name-for-your-next-web-product-tips/#comments</comments>
		<pubDate>Fri, 20 Jan 2012 11:54:47 +0000</pubDate>
		<dc:creator>Ritesh</dc:creator>
				<category><![CDATA[Tips,Tricks and code]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://riteshnayak.com/blog/?p=534</guid>
		<description><![CDATA[Picking an effective domain name for your web product/service/company is currently at the top of on my list of the hardest things to do for a web startup. For a web startup, domain names can make or break a business. You don&#8217;t want a name like expertsexchange (figure this out). Here is a simple checklist [...]]]></description>
			<content:encoded><![CDATA[<p>Picking an effective domain name for your web product/service/company is currently at the top of on my list of the hardest things to do for a web startup. For a web startup, domain names can make or break a business. You don&#8217;t want a name like expertsexchange (figure this out). Here is a simple checklist for picking a good name:</p>
<ul>
<li>Sit with 3 people at least, preferably from different backgrounds. They will tell you what a shortlisted name signifies to them. <a href="http://flagtrue.com" target="_blank">FlagTrue</a>, the name of my company was picked by a biased set of Computer Science students, but we did it specifically to appeal to the computer science audience. I had a hard time explaining it to my mom.</li>
<li>Use a bulk name checker instead of trying a single one each time. It can get annoying and demotivating trying out individual names. GoDaddy has a Bulk Search option. Works well but doesn&#8217;t store stuff.</li>
<li>Every domain name you can think of will be taken. Domain squatters  are the plague of this earth, but you cannot do anything. Don&#8217;t fret. Try combination of words or clever plays on words.</li>
<li>A good domain name is one which is <strong>short</strong> (preferably under 10 characters), <strong>sticky</strong> (meaning people will not easily forget it), <strong>unique in the line of business</strong> and something that<strong> conveys what the product is about</strong>. Keep a score board of all these attributes for each domain name you pick.</li>
<li>Do not use numbers or short forms. People won&#8217;t know whether the number is a number or characters. For ex: If I saw level3.com on the phone, the other person might think it is levelthree.com. If you are going with the name level3 then ensure you buy levelthree also and redirect it back to the original name.</li>
<li>Same goes for names in languages other than english. When we picked the name Samparkh, we aded the trailing &#8216;H&#8217; but a lot were expecting the domain to just be Sampark. These minor cultural differences can send traffic to a totally different website. A classic example of this is to spell &#8220;Agarwal&#8221;.</li>
<li>Check if there are any premium names that squatters are selling for a good deal. It might be worth investing in a good domain name if it can mean better reach. Also, it&#8217;s better if you can negotiate something before your product/service/company launches and makes some noise.</li>
<li>Try to get a .COM as most people and browsers default to it. Del.icio.us with its quirky and confusing name was still a hit.</li>
<li>Once you decide on a name, disable auto transfer and buy it for 2 to 3 years.  Most popular domain provider&#8217;s mails are borderline spam and you might miss important renewal mails. It is always good to add a reminder on your calendar about 10 days before the domain expires.</li>
</ul>
<p>These are just suggestions. This template is what has helped me and many others pick a good name for their web business. Best of luck!</p>
]]></content:encoded>
			<wfw:commentRss>http://riteshnayak.com/blog/2012/01/20/how-to-pick-a-domain-name-for-your-next-web-product-tips/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Nexus S &#8211; My Experience</title>
		<link>http://riteshnayak.com/blog/2011/10/19/google-nexus-s-my-experience/</link>
		<comments>http://riteshnayak.com/blog/2011/10/19/google-nexus-s-my-experience/#comments</comments>
		<pubDate>Wed, 19 Oct 2011 15:53:53 +0000</pubDate>
		<dc:creator>Ritesh</dc:creator>
				<category><![CDATA[Tips,Tricks and code]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[rant]]></category>

		<guid isPermaLink="false">http://riteshnayak.com/blog/?p=527</guid>
		<description><![CDATA[I ordered my first Android phone, the Google Nexus S about a 4 months ago. Part of my phone was paid for using the prize money I won for building our Augmented Reality Android application.
This is my first smart phone and I thought I should share my experiences around my phone.
I live in India, a [...]]]></description>
			<content:encoded><![CDATA[<p>I ordered my first Android phone, the Google Nexus S about a 4 months ago. Part of my phone was paid for using the prize money I won for building our <a href="http://riteshnayak.com/blog/2011/07/10/panacea-augmented-reality-contacts-management-and-location-service/" target="_blank">Augmented Reality Android application</a>.</p>
<p>This is my first smart phone and I thought I should share my experiences around my phone.</p>
<div id="attachment_528" class="wp-caption aligncenter" style="width: 410px"><a href="http://riteshnayak.com/blog/wp-content/uploads/large.png"><img class="size-full wp-image-528" title="large" src="http://riteshnayak.com/blog/wp-content/uploads/large.png" alt="" width="400" height="400" /></a><p class="wp-caption-text">Google Nexus S </p></div>
<p>I live in India, a country with an abundance of power outages in the name of load shedding and repair. A feature that I never thought I would use came to my rescue during these dark times. The Wifi hotspot tethering feature. With my 2G connection, on multiple occasions, I was able to connect my laptop to the internet to do some just in time work.</p>
<p>I also use Twitter a lot, so without question the Twitter android app has probably been my most used application. I was able to use applications like <a href="http://foursquare.com" target="_blank">FourSquare</a>, <a href="http://picplz.com/user/itsmeritesh/" target="_blank">PicPlz</a> etc to post pictures and to check for tips and tricks at a given location. My wife and I went to this place where I ordered a dish from a FourSquare tip and loved it.</p>
<p>I have also started fulltime on my own software venture. With my Android, I have been able to stay on top of all the important emails that I get. Helped me a lot when I was meeting investors and prospective customers; Blackberry wielding folk who prefer Email to texting or calls.</p>
<p>I cannot forget Google Maps, that has helped many a times when I was lost in the outskirts of Bangalore and Pune(A city which I knew nothing about, direction wise). I also downloaded an app to control PowerPoint slides which I used once. And thanks to that critical <a href="https://market.android.com/details?id=com.rackspace.cloud.android" target="_blank">Rackspace app</a> that I once used to restart a cloud server in distress. Special mention to <a href="http://shazam.com" target="_blank">Shazam</a> and <a href="http://www.soundhound.com/" target="_blank">SoundHound </a>that I use ever so often to identify those familiar sounding tunes I overhear.</p>
<p>Now with the new Ice Cream Sandwich launch, I am really excited about the reworked OS and can&#8217;t wait to get it on my phone.</p>
<p>Go Android!</p>
]]></content:encoded>
			<wfw:commentRss>http://riteshnayak.com/blog/2011/10/19/google-nexus-s-my-experience/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Continuous Deployment : My first experience</title>
		<link>http://riteshnayak.com/blog/2011/01/30/continuous-deployment-my-first-experience/</link>
		<comments>http://riteshnayak.com/blog/2011/01/30/continuous-deployment-my-first-experience/#comments</comments>
		<pubDate>Sun, 30 Jan 2011 10:26:50 +0000</pubDate>
		<dc:creator>Ritesh</dc:creator>
				<category><![CDATA[Architecture - Design]]></category>
		<category><![CDATA[Tips,Tricks and code]]></category>
		<category><![CDATA[continuous delivery]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[gradle]]></category>
		<category><![CDATA[hudson]]></category>
		<category><![CDATA[tomcat]]></category>

		<guid isPermaLink="false">http://riteshnayak.com/blog/?p=495</guid>
		<description><![CDATA[After following a lot of discussions around the devops role, I was eager to put my new found knowledge to use. After i attended a talk by Jez Humble about his new book Continuous Delivery, I was fascinated by the concept of a fully automated deployment script for applications. I am still yet to get [...]]]></description>
			<content:encoded><![CDATA[<p>After following a lot of discussions around the devops role, I was eager to put my new found knowledge to use. After i attended a talk by <a href="http://twitter.com/#!/jezhumble" target="_blank">Jez Humble</a> about his new book<a href="http://continuousdelivery.com/" target="_blank"> Continuous Delivery</a>, I was fascinated by the concept of a fully automated deployment script for applications. I am still yet to get my hands dirty with infrastructure automation tools like <a href="http://www.puppetlabs.com/puppet/introduction/" target="_blank">Puppet</a> and <a href="http://www.opscode.com/chef" target="_blank">Chef</a> but wanted to give Continuous Deployment a shot. Eventually, I hope to utilize this deployment script , along with Puppet and Chef code, and make a self deploying machine configuration. First, the problem.</p>
<p>One of my side projects has a very active code base. We use <a href="http://git-scm.org" target="_blank">Git</a> as our Source Code Management system and <a href="http://hudson-ci.org/" target="_blank">Hudson</a> for Continuous Integration. Since most of the application backend is pretty stable, the bulk of the changes on our trunk are mostly changes in logic, new features , enhancements and bug fixes. We also run a dogfooding instance where we push the latest changes and test our changes. On our Linux server, we use Tomcat as our app container, MySql and <a href="http://cassandra.apache.org" target="_blank">Cassandra</a> for datastores, Solr for indexing and all builds use <a href="http://gradle.org" target="_blank">Gradle</a>. Till now, pushing changes was a manual task. Here is how I automated this task. @<a href="http://twitter.com/prateeksha" target="_blank">prateeksha</a> , who is a unix command line ninja, was kind enough to guide me through the entire process.</p>
<p>Pushing changes involved , updating the code base to the latest master branch, doing the database migrations and restarting the App Container. Though I still have to get my head around database migrations, here is where automation stands now.</p>
<p>- The continuous deployment script can either be triggered by a git Post-Receive hook or by using a Cron Job.</p>
<p>-  If triggered by a Cron job, we need to poll git for changes. I found this neat little script that figures out whether there have been changes to the source repository and prints out the status of the repository.The script is shown below:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/sh</span>
        <span style="color: #007800;">remote</span>=$<span style="color: #000000;">1</span>
        <span style="color: #007800;">o</span>=.git<span style="color: #000000; font-weight: bold;">/</span>remote_cache.<span style="color: #007800;">$remote</span>
        <span style="color: #007800;">n</span>=<span style="color: #007800;">$o</span>.new<span style="color: #007800;">$$</span>
        git ls-remote <span style="color: #007800;">$remote</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #007800;">$n</span>
        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-f</span> <span style="color: #007800;">$o</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
        <span style="color: #000000; font-weight: bold;">then</span>
                <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #c20cb9; font-weight: bold;">diff</span> <span style="color: #007800;">$o</span> <span style="color: #007800;">$n</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>null
                <span style="color: #000000; font-weight: bold;">then</span>
                        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;No Changes&quot;</span>
                <span style="color: #000000; font-weight: bold;">else</span>
                        <span style="color: #c20cb9; font-weight: bold;">mv</span> <span style="color: #007800;">$n</span> <span style="color: #007800;">$o</span>
                        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Updated&quot;</span>
                <span style="color: #000000; font-weight: bold;">fi</span>
        <span style="color: #000000; font-weight: bold;">else</span>
                <span style="color: #c20cb9; font-weight: bold;">mv</span> <span style="color: #007800;">$n</span> <span style="color: #007800;">$o</span>
                <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;New remote remembered...&quot;</span>
        <span style="color: #000000; font-weight: bold;">fi</span></pre></div></div>

<p>If the return value from this script is &#8220;Updated&#8221; then changes from Git are pulled, Gradle build scripts are run, and the app container(Tomcat) is restarted. Using Hudson&#8217;s wonderful API&#8217;s, you can check whether the latest build of the entire project is successful or not. If it is successful, we can either take Hudson&#8217;s build artifact, or build the project again and deploy it.  Also, a small little utility extracts the log information, date and time of the push and presents it on the App itself. At any point in time, if you want to know what version of the App is actually deployed, you can see a version page which displays deployment time and commit log. Screen shot below.</p>
<div id="attachment_500" class="wp-caption aligncenter" style="width: 310px"><a href="http://riteshnayak.com/blog/wp-content/uploads/Selection_002.png"><img class="size-medium wp-image-500" title="Version infomration of the Continuously deployed Application" src="http://riteshnayak.com/blog/wp-content/uploads/Selection_002-300x71.png" alt="Version infomration of the Continuously deployed Application" width="300" height="71" /></a><p class="wp-caption-text">Click to Enlarge - Version info of the App</p></div>
<p>This has been my first experiment with Continuous deployment, I still need to understand and solve the migrations issue. Next? More experiments with Chef and Puppet coming up.</p>
]]></content:encoded>
			<wfw:commentRss>http://riteshnayak.com/blog/2011/01/30/continuous-deployment-my-first-experience/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Shutter &#8211; open source alternative to skitch</title>
		<link>http://riteshnayak.com/blog/2011/01/08/shutter-open-source-alternative-to-skitch/</link>
		<comments>http://riteshnayak.com/blog/2011/01/08/shutter-open-source-alternative-to-skitch/#comments</comments>
		<pubDate>Sat, 08 Jan 2011 09:48:11 +0000</pubDate>
		<dc:creator>Ritesh</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Tips,Tricks and code]]></category>
		<category><![CDATA[UX-Design-Usability]]></category>

		<guid isPermaLink="false">http://riteshnayak.com/blog/?p=490</guid>
		<description><![CDATA[
Shutter is an open source alternative to Skitch, which is a mac only advanced Screenshot utility. This tool will help you capture screenshots  in sections, full screen or multi-monitor mode. You can then do some minor modifications such as adding annotations, highlighting specific regions, adding small icons , free form drawing , cropping etc. It&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://shutter-project.org/" target="_blank"><img class="alignleft" title="Shutter Webiste" src="http://shutter-project.org/wp-content/themes/TheProfessional/images/logo.png" alt="Shutter for Ubuntu" width="568" height="56" /></a></p>
<p><a href="http://shutter-project.org/" target="_blank">Shutter</a> is an open source alternative to <a href="http://skitch.com" target="_blank">Skitch</a>, which is a mac only advanced Screenshot utility. This tool will help you capture screenshots  in sections, full screen or multi-monitor mode. You can then do some minor modifications such as adding annotations, highlighting specific regions, adding small icons , free form drawing , cropping etc. It&#8217;s a great utility especially on Ubuntu and will save you the time learning other advanced tools like Gimp. It is also well maintained and is a fairly small install with all its dependencies. I use it intensively especially my work involves a lot of Prototyping, User Experience Design and WireFraming. Great find indeed!</p>
]]></content:encoded>
			<wfw:commentRss>http://riteshnayak.com/blog/2011/01/08/shutter-open-source-alternative-to-skitch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>De-Google yourself</title>
		<link>http://riteshnayak.com/blog/2010/12/16/de-google-yourself/</link>
		<comments>http://riteshnayak.com/blog/2010/12/16/de-google-yourself/#comments</comments>
		<pubDate>Thu, 16 Dec 2010 05:17:57 +0000</pubDate>
		<dc:creator>Ritesh</dc:creator>
				<category><![CDATA[Tips,Tricks and code]]></category>
		<category><![CDATA[Trends-Predictions-Inferences]]></category>

		<guid isPermaLink="false">http://riteshnayak.com/blog/?p=486</guid>
		<description><![CDATA[A trend I am seeing nowadays involves people De-Googling themselves. The intention is to not let one public company own all of your private data. By data, I mean everything from your private Email, Calendar , Blog feeds, web search personalization, facebook tracking etc. Luckily I happen to know a few of them who de-googled [...]]]></description>
			<content:encoded><![CDATA[<p>A trend I am seeing nowadays involves people De-Googling themselves. The intention is to not let one public company own all of your private data. By data, I mean everything from your private Email, Calendar , Blog feeds, web search personalization, facebook tracking etc. Luckily I happen to know a few of them who de-googled themselves. Here&#8217;s how they did it, and the tools they used.</p>
<p>- E-mail : It is very hard to let go of Gmail, its wonderful conversation threading and spam filter, but it is possible. For a meager $6 a year you get your<a href="http://godaddy.com" target="_blank"> own custom domain name</a>, something like mine, riteshnayak.com. Then comes the $24 a year email hosting account. You can run multiple email clients like <a href="http://squirrelmail.org/" target="_blank">SquirrelMail</a>, <a href="http://www.horde.org/webmail/" target="_blank">Horde</a> or <a href="http://roundcube.net/" target="_blank">Roundcube</a>. Rackspace also provides their own <a href="http://www.rackspace.com/apps" target="_blank">web + desktop email and calendar </a>services for $2 a month.</p>
<p>-  For reading blog subscriptions (via RSS) there are multiple desktop clients that are available. Newsgator and Opera&#8217;s Blog reader come to mind immediately. If you want a web based solution just like Google reader, try the self hosted <a href="http://feedonfeeds.com/" target="_blank">Feed on Feeds</a>.</p>
<p>- Another important thing would be to make sure your activities are not tracked while you are online. There are multiple ways of achieving this. You could start by using the private browsing mode on Firefox, IE and Chrome. You could also get extensions like <a href="http://www.disconnectere.com/" target="_blank">Disconnect</a>, which disables any third party tracking.</p>
<p>Thats it for now! If you have tools of your own that you use, please share them via comments.</p>
]]></content:encoded>
			<wfw:commentRss>http://riteshnayak.com/blog/2010/12/16/de-google-yourself/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Extending jQuery validation plugin &#8211; custom validation</title>
		<link>http://riteshnayak.com/blog/2010/01/05/extending-jquery-validation-plugin-custom-validation/</link>
		<comments>http://riteshnayak.com/blog/2010/01/05/extending-jquery-validation-plugin-custom-validation/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 09:27:50 +0000</pubDate>
		<dc:creator>Ritesh</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Tips,Tricks and code]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://riteshnayak.com/blog/?p=479</guid>
		<description><![CDATA[JQuery validation plugin has saved me hours of development time on projects. It contains definitions for most validation tasks that you would need, including AJAX based validations. But if you have to do anything more than the ordinary, you have extend the library yourself. Here&#8217;s an example of an extension I wrote :
Functionality : I [...]]]></description>
			<content:encoded><![CDATA[<p>JQuery validation plugin has saved me hours of development time on projects. It contains definitions for most validation tasks that you would need, including AJAX based validations. But if you have to do anything more than the ordinary, you have extend the library yourself. Here&#8217;s an example of an extension I wrote :</p>
<p>Functionality : I want to capture the twitter handle of a user on a form. Most users will enthusiastically enter the entire URL like http://twitter.com/itsmeritesh, some will leave out the http:// and enter the rest. I wanted to validate that the username was a single word, didn&#8217;t contain parts of a URL (mainly slashes) and didn&#8217;t mind it being empty.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"> <span style="color: #006600; font-style: italic;">// HTML Code</span>
<span style="color: #006600; font-style: italic;">// &lt;form name=&quot;myform&quot;&gt; </span>
<span style="color: #006600; font-style: italic;">// &lt;input type=&quot;text&quot; id=&quot;twitterUrl&quot;&gt; &lt;label for=&quot;twitterUrl&quot; /&gt;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">function</span> isEmpty<span style="color: #009900;">&#40;</span>Val<span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
	    <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>Val.<span style="color: #660066;">length</span><span style="color: #339933;">==</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">;</span>
	      <span style="color: #000066; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> i<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span> Val.<span style="color: #660066;">length</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
	      <span style="color: #009900;">&#123;</span>
	            <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span> <span style="color: #3366CC;">&quot; <span style="color: #000099; font-weight: bold;">\t</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>.<span style="color: #660066;">indexOf</span><span style="color: #009900;">&#40;</span> Val.<span style="color: #660066;">charAt</span><span style="color: #009900;">&#40;</span>i<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #339933;">-</span><span style="color: #CC0000;">1</span> <span style="color: #009900;">&#41;</span> 
	            <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span>
	      <span style="color: #009900;">&#125;</span>
	       <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
 jQuery.<span style="color: #660066;">validator</span>.<span style="color: #660066;">addMethod</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;handleOnly&quot;</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>value<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		 <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>isEmpty<span style="color: #009900;">&#40;</span>value<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">;</span>
&nbsp;
		 <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>value.<span style="color: #660066;">split</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot; &quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">length</span> <span style="color: #339933;">==</span> <span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #009900;">&#40;</span>value.<span style="color: #660066;">search</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'/'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">==-</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
			  <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">;</span>
		 <span style="color: #000066; font-weight: bold;">else</span>
			 <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span>	  
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;Please specify only one word&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
$<span style="color: #009900;">&#40;</span>document<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">ready</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#myform&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">validate</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
    	rules<span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>		
    		twitterUrl <span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>  handleOnly<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span> <span style="color: #009900;">&#125;</span>
                 <span style="color: #009900;">&#125;</span>
      messages<span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
		twitterUrl<span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span> handleOnly <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Only your twitter handle &quot;</span> <span style="color: #009900;">&#125;</span>
               <span style="color: #009900;">&#125;</span>
         <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
  <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>handleOnly is a new extension written by using the jQuery.validator.addMethod() method. The rule then specifies whether the return from the function must be true or false, in my case its true. The message is displayed when the condition is not met by the value. </p>
]]></content:encoded>
			<wfw:commentRss>http://riteshnayak.com/blog/2010/01/05/extending-jquery-validation-plugin-custom-validation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bookmarklets are as bad as software on a CD</title>
		<link>http://riteshnayak.com/blog/2009/12/19/bookmarklets-are-as-bad-as-software-on-a-cd/</link>
		<comments>http://riteshnayak.com/blog/2009/12/19/bookmarklets-are-as-bad-as-software-on-a-cd/#comments</comments>
		<pubDate>Sat, 19 Dec 2009 07:57:54 +0000</pubDate>
		<dc:creator>Ritesh</dc:creator>
				<category><![CDATA[Architecture - Design]]></category>
		<category><![CDATA[Tips,Tricks and code]]></category>

		<guid isPermaLink="false">http://riteshnayak.com/blog/?p=467</guid>
		<description><![CDATA[Bookmarklets are funny pieces of software. Even though its primarily used in the web browser, mainly to perform small nifty tasks, its one resource that you have no control over after its deployed. Unlike Mozilla addon&#8217;s that prompt for an update, general websites which update when refreshed, bookmarklets are almost as archaic as delivering software [...]]]></description>
			<content:encoded><![CDATA[<p>Bookmarklets are funny pieces of software. Even though its primarily used in the web browser, mainly to perform small nifty tasks, its one resource that you have no control over after its deployed. Unlike Mozilla addon&#8217;s that prompt for an update, general websites which update when refreshed, bookmarklets are almost as archaic as delivering software over a CD. Lets take an example of a badly designed bookmarklet: The example below is the Press This bookmarklet distributed by wordpress initially. ( I have changed some of the values of course)</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">javascript<span style="color: #339933;">:</span>
   <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>navigator.<span style="color: #660066;">userAgent</span>.<span style="color: #660066;">indexOf</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Safari'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">%</span>20<span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;=%</span>200<span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
         Q<span style="color: #339933;">=</span>getSelection<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   <span style="color: #009900;">&#125;</span><span style="color: #000066; font-weight: bold;">else</span><span style="color: #009900;">&#123;</span>
    Q<span style="color: #339933;">=</span>document.<span style="color: #660066;">selection</span><span style="color: #339933;">?</span>document.<span style="color: #660066;">selection</span>.<span style="color: #660066;">createRange</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">text</span><span style="color: #339933;">:</span>document.<span style="color: #660066;">getSelection</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
   location.<span style="color: #660066;">href</span><span style="color: #339933;">=</span><span style="color: #3366CC;">'http://wordpress.php?username=blah&amp;amp;text='</span><span style="color: #339933;">+</span>encodeURIComponent<span style="color: #009900;">&#40;</span>Q<span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #3366CC;">'&amp;amp;popupurl='</span><span style="color: #339933;">+</span>encodeURIComponent<span style="color: #009900;">&#40;</span>location.<span style="color: #660066;">href</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>You will see that this is calling a RESTful implementation of some service with query parameters and the whole code is stored and rendered from inside the bookmarklet. Lets leave the security aspects of this implementation aside, that will require another post in itself. Such a bookmark is a nightmare waiting to happen. Imagine the trouble you would face if you changed the implementation tomorrow. You will have to write to ensure backward compatibility or take the user to a page where he/she can upgrade to the newest version of the bookmarklet. This is a bad way of delivering software.  </p>
<p> Ideally, the bookmarklet in accordance with a shortcut/bookmark must mainly be a pointer to the actual web resource. Even for trivial bookmarklets, make sure you follow this design principle because you might want to do something different or more advanced later on. I am sure you have come across situations where you realized the bookmarklet you wrote didn&#8217;t work on a browser like Opera or Safari. It may be too late to correct it later on if people have already installed it on their browsers. </p>
<p>Lets now take a bookmarklet that loads the code to be executed from a script on the web. This is now the preferred means of deploying bookmarklets as it puts the control back into the hands of the web developer. This example is from the Friendfeed bookmarklet that lets you share things on FriendFeed.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"> javascript<span style="color: #339933;">:</span><span style="color: #000066; font-weight: bold;">void</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#123;</span>
    var<span style="color: #339933;">%</span>20e<span style="color: #339933;">=</span>document.<span style="color: #660066;">createElement</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'script'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    e.<span style="color: #660066;">setAttribute</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'type'</span><span style="color: #339933;">,</span><span style="color: #3366CC;">'text/javascript'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    e.<span style="color: #660066;">setAttribute</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'src'</span><span style="color: #339933;">,</span><span style="color: #3366CC;">'http://someserver.com/bookmarkletcode.js'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   document.<span style="color: #660066;">body</span>.<span style="color: #660066;">appendChild</span><span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span></pre></td></tr></table></div>

<p>All this bookmarklet does is to append a new script tag in your html page and assigns the source to the bookmarklet source. The difference now is that there is no code on the client side that is tied to an implementation. You can change the code in the bookmarkletcode.js as and when you feel necessary and be assured that the people using your bookmarklet will always use the latest version. </p>
]]></content:encoded>
			<wfw:commentRss>http://riteshnayak.com/blog/2009/12/19/bookmarklets-are-as-bad-as-software-on-a-cd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Design Patterns Quick Reference</title>
		<link>http://riteshnayak.com/blog/2009/05/26/design-patterns-quick-reference/</link>
		<comments>http://riteshnayak.com/blog/2009/05/26/design-patterns-quick-reference/#comments</comments>
		<pubDate>Tue, 26 May 2009 10:10:30 +0000</pubDate>
		<dc:creator>Ritesh</dc:creator>
				<category><![CDATA[Architecture - Design]]></category>
		<category><![CDATA[Tips,Tricks and code]]></category>

		<guid isPermaLink="false">http://riteshnayak.com/blog/?p=447</guid>
		<description><![CDATA[I am back to designing some software and want to use all my knowledge of Object Orientation and patterns to tackle common problems with design. I found this great reference for the most commonly used design patterns that I must share. It lists all of the core design patterns, all 23 of them,  listed in [...]]]></description>
			<content:encoded><![CDATA[<p>I am back to designing some software and want to use all my knowledge of Object Orientation and patterns to tackle common problems with design. I found this great reference for the most commonly used design patterns that I must share. It lists all of the core design patterns, all 23 of them,  listed in the gang of four book. If you know what this is, take a print out of this and revisit your designs. Thanks to Mark Turansky for the <a href="http://blog.markturansky.com/archives/32" target="_blank">original upload</a>.</p>
<table border="0">
<tbody>
<tr>
<td>
<p><div id="attachment_449" class="wp-caption alignnone" style="width: 236px"><a href="http://riteshnayak.com/blog/wp-content/uploads/designpatterns2_sm.jpg"><img class="size-medium wp-image-449" title="designpatterns2_sm" src="http://riteshnayak.com/blog/wp-content/uploads/designpatterns2_sm-226x300.jpg" alt="Design Patterns card 2" width="226" height="300" /></a><p class="wp-caption-text">Design Patterns card 2</p></div></td>
<td>
<p><div id="attachment_448" class="wp-caption alignnone" style="width: 238px"><a href="http://riteshnayak.com/blog/wp-content/uploads/designpatterns1_sm.jpg"><img class="size-medium wp-image-448" title="designpatterns1_sm" src="http://riteshnayak.com/blog/wp-content/uploads/designpatterns1_sm-228x300.jpg" alt="Design patterns card 1" width="228" height="300" /></a><p class="wp-caption-text">Design patterns card 1</p></div></td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://riteshnayak.com/blog/2009/05/26/design-patterns-quick-reference/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>What goes into a good resume</title>
		<link>http://riteshnayak.com/blog/2009/04/28/what-goes-into-a-good-resume/</link>
		<comments>http://riteshnayak.com/blog/2009/04/28/what-goes-into-a-good-resume/#comments</comments>
		<pubDate>Tue, 28 Apr 2009 13:10:44 +0000</pubDate>
		<dc:creator>Ritesh</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Tips,Tricks and code]]></category>

		<guid isPermaLink="false">http://riteshnayak.com/blog/?p=444</guid>
		<description><![CDATA[I will be graduating soon and I am looking out for good positions in Bangalore. My areas of interest can be found here. As a result, its time for me to do my resume again. I have always wondered as to what makes a good resume. Should there be an objective? I mean, its a [...]]]></description>
			<content:encoded><![CDATA[<p>I will be graduating soon and I am looking out for good positions in Bangalore. My areas of interest can be found <a title="About me" href="http://riteshnayak.com/about.html" target="_blank">here</a>. As a result, its time for me to do my resume again. I have always wondered as to what makes a good resume. Should there be an objective? I mean, its a resume and it means you are looking for a job, so why the objective? Or should you put your achievements ? The right question would be, what have you achieved that will be looked upon as achievements by others? Should I put experience above education? Should I put that section called personal info at the end?</p>
<p>Give me your inputs as to what should go into a resume and what shouldn&#8217;t. If this turns out to be a good discussion, I am sure it will help out a lot of people like me.</p>
<p>Update: After receiving some feedback about my own resume, I am adding some more tips.</p>
<ul>
<li>Even if you don&#8217;t believe that technology matters ( like I do), you have to put technologies that you know in your resume. This is required as the HR&#8217;s who look at the resume&#8217;s usually filter out resumes based on skills mentioned. Not having the skills column is only going to get your resume away from good opportunities.</li>
<li>Its very important that you provide your contact information in multiple forms. Phone number, at least two email id&#8217;s, home phone etc.</li>
<li>Nobody cares that you won a first prize in your school&#8217;s annual dancing competition or that you have helped organize your college fest. A recruiter told me that such things are good only if you are applying for BPO jobs where you have to prove your leadership skills.</li>
<li>Do not write essays about your projects. Leave it short and let the recruiters/interviewers quiz you about the same. This gives more time for conversation and a healthy dialogue.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://riteshnayak.com/blog/2009/04/28/what-goes-into-a-good-resume/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Limitations and Challenges in Cloud Computing for Applications</title>
		<link>http://riteshnayak.com/blog/2009/04/13/limitations-and-challenges-in-cloud-computing-for-applications/</link>
		<comments>http://riteshnayak.com/blog/2009/04/13/limitations-and-challenges-in-cloud-computing-for-applications/#comments</comments>
		<pubDate>Mon, 13 Apr 2009 14:06:04 +0000</pubDate>
		<dc:creator>Ritesh</dc:creator>
				<category><![CDATA[Architecture - Design]]></category>
		<category><![CDATA[Tips,Tricks and code]]></category>
		<category><![CDATA[Trends-Predictions-Inferences]]></category>
		<category><![CDATA[Unsolved problems]]></category>

		<guid isPermaLink="false">http://riteshnayak.com/blog/?p=441</guid>
		<description><![CDATA[I was supposed to be involved in a discussion about cloud computing at Cloudcamp Bangalore, but due to other commitments, I could not attend the event. I had a small writeup about the limitations and challenges in Application clouds. Here is the full text of it.
Cloud Computing is a way of providing dynamically scalable and [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><em>I was supposed to be involved in a discussion about cloud computing at Cloudcamp Bangalore, but due to other commitments, I could not attend the event. I had a small writeup about the limitations and challenges in Application clouds. Here is the full text of it.</em></p></blockquote>
<p>Cloud Computing is a way of providing dynamically scalable and available resources such as computation, storage etc as a service to users who can use it to deploy their applications and data. Cloud Computing can handle data in both the public and the private domain. But this seemingly harmless way of thinking about building applications has its own set of issues.I am primarily referring to application cloud providers, the kind where you deploy your applications. Not storage and service clouds. Google AppEngine would be a good example for the cloud that I am describing. I note some of them here :</p>
<p><strong>From the Users perspective:</strong></p>
<ol>
<li>New unstructured and non standard paradigm of programming: Each cloud has its own supported programming language and syntax requirements for programming, though most of these clouds expose the typical hashtable based cache and datastore interfaces. There is an urgent need for standardization of interfaces and methods of programming them. One of the reasons why shared hosting environments work great is because , as a programmer, I know that I can move my PHP/PERL code to another server and it will work without too much of a fuss. Moving from one of the dozen odd cloud providers to another requires considerable developmental efforts, not to forget time (for businesses, this could spell doom).  A look back at history shows languages like SQL, C etc being standardized to stop exactly this sort of undesirable proliferation.</li>
<li>Restrictions on the programming model : For cloud based applications to be highly available, they must be easy to dynamically mirror on multiple machines. Once these applications are mirrored, they can be served on demand by load balancing servers which makes them highly available and the user doesn&#8217;t face delays in being serviced. This is an old trick used by busy websites from the early days of web publishing but these solutions were custom built for websites. So, extending this concept to cloud based platforms, servicing thousands of applications, mandates the platform providers to automate this task of replication and mirroring. This job is easier said than done. This process can be made seamless when the program stores as little state information as possible. By state, I mean transactional variables, static variables, variables in the context of the entire application etc. These things are almost a given in traditional programming environments but are very hard to come by in cloud based environments. The unnatural way of dealing with this situation is using the datastore or the cache to store state of an application. There are a lot of restrictions like lack of privileges to install third party libraries, no access to file system to write files etc ( which forces you to use the datastore and pay for it)</li>
<li>A good local debugging experience: A good local development environment, debugging experience is a must for programming on the cloud. Most cloud providers do not provide good local development environments. There is also a lack of good IDE&#8217;s that can help with programming and debugging programs written for the cloud. The providers that do provide a local debug experience, do not simulate real cloud like conditions. Both from my personal experience and from conversations with other developers, I have come to realize that most people face problems when moving code from their local development servers to the actual cloud. This is only due to inconsistencies in the behavior of the local dev env compared to the cloud.</li>
<li>Appropriate metrics and documentation of programming best practices : On a cloud, since a user pays for almost every CPU cycle, appropriate metrics on usage of processing time and memory must be presented to the users. Typically a profile of the application with function names and their corresponding time taken, memory used, processing cycles used will definitely help the developer tune his/her code to optimize on usage of processing power. The best solution for this is for cloud providers to abstract common code patterns into optimal libraries so that the users can be assured that they are running the most optimal code for a certain operation. An example of this is Apache PIG, which gives a scripting like interface to Apache Hadoop&#8217;s HDFS for data analysis. Also, Most cloud providers do not provide enough statistics and also profiling capabilities.</li>
</ol>
<p><strong>From the providers perspective:</strong></p>
<p>Here I look at challenges that cloud providers have to face:</p>
<ol>
<li>Ensuring availability of the cloud: This proves to be crucial as Clouds host critical business applications, for whom, downtime would mean monetary losses. Effective monitoring and load balancing solutions are to be built. Most clouds employ virtualization technology to get the most out of any resource. In such cases, tools should be written to figure out a resource hog early and move the application to a more powerful grid or a machine, so that the other users get their share of the cloud without delays.</li>
<li>Ensuring Consistency: Both the data and code is replicated on the cloud and maintaining consistency of data is extremely crucial. This is the reason why most transactional updates are not allowed on the cloud. Example: sequence objects, which are almost a given in traditional databases are not provided, probably because maintaining state across machines for such statements is non trivial. Problems like distributed updates, locking, partitioning, sharding etc  arise when dealing with data. Such constructs are to be provided to the users as most of it is given in the non cloud deployment space.<br />
Most datastores provided by cloud vendors (except the ones that provide cloud based database services) do not support relational models. Which means all object relations have to be programmatically established. This could always lead to bad code, unnecessary joins, cascading problems and tons of other problems that developers faced before working with relational datastores.</li>
<li>Program verification : One of the biggest worries about deploying applications on the cloud is the correctness of the program in execution. Erroneous conditions, like infinite loops, can not only put the machine at the risk of being overloaded and unavailable, but also cost the user a significant amount of money. Tools like static analysis should be used to analyze code uploaded on the cloud and it should be checked for infinite loops, possible race conditions,  null references, unreachable code etc. The code uploaded should also be optimized or suggestions should be provided to the users about how they could optimize code to best utilize the available resources.</li>
</ol>
<p><strong>Conclusion </strong>: The cloud should become a complete nonrestrictive platform for applications. There should be no restrictions on the constructs, functionality and privileges on the cloud. Also, it should be dead simple to move everyday applications onto the cloud without too much of rework. This could mean writing migration utilities, import/export options and other artifacts that make the transition to a cloud much easier.  This will prove essential as most live applications, at least currently, do not run on a cloud and helping them migrate easily will mean more revenue and adoption.</p>
]]></content:encoded>
			<wfw:commentRss>http://riteshnayak.com/blog/2009/04/13/limitations-and-challenges-in-cloud-computing-for-applications/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Moffe &#8211; My own friendfeed emulator.</title>
		<link>http://riteshnayak.com/blog/2009/03/27/moffe-my-own-friendfeed-emulator/</link>
		<comments>http://riteshnayak.com/blog/2009/03/27/moffe-my-own-friendfeed-emulator/#comments</comments>
		<pubDate>Fri, 27 Mar 2009 10:40:58 +0000</pubDate>
		<dc:creator>Ritesh</dc:creator>
				<category><![CDATA[Tips,Tricks and code]]></category>
		<category><![CDATA[Unsolved problems]]></category>

		<guid isPermaLink="false">http://riteshnayak.com/blog/?p=435</guid>
		<description><![CDATA[I started using friendfeed recently and have been using ff to post links and other interesting artifacts I find on the net. The ease with which I can post links from ff not only  increased my posts on ff, and indirectly on twitter, but also the frustration of my friends. Now instead of going directly [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://riteshnayak.com/moffe/" target="_blank"><img class="alignnone size-full wp-image-438" title="moffe" src="http://riteshnayak.com/blog/wp-content/uploads/moffe.gif" alt="moffe" width="173" height="66" /></a>I started using <a title="friendfeed" href="http://friendfeed.com" target="_blank">friendfeed</a> recently and have been using ff to post links and other interesting artifacts I find on the net. The ease with which I can post links from ff not only  increased my posts on ff, and indirectly on twitter, but also the frustration of my friends. Now instead of going directly to the link I share, they now had to go to friendfeed and then after another click go the address that I had shared.</p>
<p>I used friendfeed because I wanted to start a conversation based on the items I shared. But, again like all social media sites, my ability to get the conversation started depended directly on the number of people who were using friendfeed. So, I sat down to fix the problem myself and after one nights work, <a title="Moffe" href="http://riteshnayak.com/moffe" target="_blank">Moffe</a> was born.</p>
<p>For the unitiated moffe stands for <strong>My Own FriendFeed Emulator</strong>. It gives the same features that friendfeed provides and also provides an easy way for people to leave comments on the items I share. Plus, the link that I shared, is federated directly into the page. The outcome is that now people can leave comments on items I share plus see the page all with one click. I have also incorporated canned comments for that restless user who doesn&#8217;t have time to write in comments. Plus, I get to monitor moffe on this cool <a href="http://riteshnayak.com/moffe">dashboard</a>.</p>
<p>In essence, its a microsharing service which lets me keep my content on my site and not rely on other services like friendfeed ,twitblogs etc. Thanks to Easy on the Slaw for giving me the <a href="http://blog.slawcup.com/2007/04/full-twitter-php-library-ver-01/" target="_blank">twitter wrapper in PHP</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://riteshnayak.com/blog/2009/03/27/moffe-my-own-friendfeed-emulator/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>New Programming Paradigms</title>
		<link>http://riteshnayak.com/blog/2009/01/14/new-programming-paradigms/</link>
		<comments>http://riteshnayak.com/blog/2009/01/14/new-programming-paradigms/#comments</comments>
		<pubDate>Wed, 14 Jan 2009 06:57:56 +0000</pubDate>
		<dc:creator>Ritesh</dc:creator>
				<category><![CDATA[Tips,Tricks and code]]></category>
		<category><![CDATA[rant]]></category>

		<guid isPermaLink="false">http://riteshnayak.com/blog/?p=404</guid>
		<description><![CDATA[Over the last two or three years, I have seen introduction of many new psuedo programming languages(if I can call it that) that help users build applications over the web. Most of these languages are built to work with or as a service. I shall wildly switch between a web service and also the langauge [...]]]></description>
			<content:encoded><![CDATA[<p>Over the last two or three years, I have seen introduction of many new psuedo programming languages(if I can call it that) that help users build applications over the web. Most of these languages are built to work with or as a service. I shall wildly switch between a web service and also the langauge to interact with that webservice; so get the message when I switch from one to another. Let me take one of these languages called <a title="Yahoo Query Language" href="http://developer.yahoo.com/yql/" target="_blank">YQL</a>. A sample instruction would look like this:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/* Get the latest 10 photos from flickr where the photo name contains cat */</span>
<span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">*</span> <span style="color: #993333; font-weight: bold;">FROM</span> flickr<span style="color: #66cc66;">.</span>photos<span style="color: #66cc66;">.</span>search <span style="color: #993333; font-weight: bold;">WHERE</span> text<span style="color: #66cc66;">=</span><span style="color: #ff0000;">'Cat'</span> <span style="color: #993333; font-weight: bold;">LIMIT</span> <span style="color: #cc66cc;">10</span></pre></div></div>

<p>As you can clearly see the language makes querying a service and receiving its response really really simple. This is how most new psuedo languages are. They work with service end points and emulate an existing programming language&#8217;s syntax to do that. These languages are built with mashup&#8217;s in mind. The dangers of such an offering are already imminent. Services are good as long as they are up and live.   Take for example any of the Google or yahoo  Api&#8217;s and you will find wrappers written by people in such pseudo langauges to make your life simple. Even in the enterprise space there are such languages being built which query custom services and makes building applications really really simple.</p>
<p>Another observation of mine involves loose typing in these languages. Most new languages are loosely typed. Most of them take from python which lets the user take care of the typing. SQL by far has been the most emulated language amongst these pseudo langauges. Take for example JoSql to add SQL like capabilities to operations like file handling or Linq in .NET which exposes a sql like interface to datastructures. These improvisations have dramatically reduced time to turn ideas into code and rapidly prototype the application.</p>
<p>There are limitations to using such improvisations; some that even I can vouch for. Loosely typed and unstructured languages are good as long as you are not working on large scale systems. If you are hacking up a solution to a problem that you are facing, these pseudo languages look to be real problem solvers but when it comes to working in teams, projects that need to go into production, you start getting into big problems. Though I am a python fanboy, I faced problems when I was working on python and perl on a large project with a team. Interfaces would be unclear, poor documentation would literally spell doom and tons of other problems that we never thought we would face. <a href="http://teddziuba.com/2008/12/python-makes-me-nervous.html" target="_blank">There are others who complain of the very same thing</a>. I am guessing we will see a flood of such languages in the future thanks largely to applications evolving slowly into services and it will be difficult to guage the quality of these services. Twitter&#8217;s API tried to make their service more stable but the mechanism they chose <a href="http://search.twitter.com/search?q=twitter+api+limit" target="_blank">didn&#8217;t satisfy many developers</a>.  Lets hope we figure out a way to make these more reliable and stable. I guess its the developers call to be judicious about what language and service to choose when building applications.</p>
]]></content:encoded>
			<wfw:commentRss>http://riteshnayak.com/blog/2009/01/14/new-programming-paradigms/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Sharing some Wordpress love</title>
		<link>http://riteshnayak.com/blog/2008/10/10/sharing-some-wordpress-love/</link>
		<comments>http://riteshnayak.com/blog/2008/10/10/sharing-some-wordpress-love/#comments</comments>
		<pubDate>Fri, 10 Oct 2008 11:51:19 +0000</pubDate>
		<dc:creator>Ritesh</dc:creator>
				<category><![CDATA[Tips,Tricks and code]]></category>

		<guid isPermaLink="false">http://riteshnayak.com/blog/?p=400</guid>
		<description><![CDATA[I have been blogging for about three years now, started here in Nov of 2005. But, the day I saw wordpress, was the day my blogging actually took shape. After a controversial blogpost saw a lot of activity on my personal blog, I decided to share some of the plugins that I think helped complete [...]]]></description>
			<content:encoded><![CDATA[<p>I have been blogging for about three years now, started <a href="http://rithy.blogspot.com" target="_blank">here </a>in Nov of 2005. But, the day I saw <a href="http://wordpress.com" target="_blank">wordpress</a>, was the day my blogging actually <a href="http://rnayak.wordpress.com" target="_blank">took shape</a>. After a <a href="http://riteshnayak.com/personal/?p=42" target="_blank">controversial blogpost</a> saw a lot of activity on my personal blog, I decided to share some of the plugins that I think helped complete my blogging experience.</p>
<p>First and fore most you need to to get Wordpress. Wait for 2.7, its awesome, with Quickiepress and customizable screens, blogging will never be the same again. If you dont own your own site, then get a wordpress subdomain. Though such a step will mean you wont be able to use most of what I write about next. Good, now lets get some plugins :</p>
<p>1. Akismet : I think this is shipped with wordpress by default but is seriously one plugin that you need. Its stopped nearly 50,000 spam comments.</p>
<p>2. <a href="http://www.acmetech.com/blog/adsense-deluxe/" target="_blank">Adsense- deluxe</a> : Manage ads in your Wordpress posts by using simple shortcuts to insert different types of ads. Really useful for people displaying ads ( multiple ads ) on a post.</p>
<p>3. <a href="http://www.u-g-h.com/index.php/wordpress-plugins/wordpress-plugin-comment-email-responder/" target="_blank">Comment-email-responder</a> : This plugin lets the author reply to a comment via mail if the user has provided his/her mail id. Its useful as it drives the discussion forward and also is a way to bring people back for a good discussion.</p>
<p>4. <a href="http://wordpress.org/extend/plugins/google-syntax-highlighter" target="_blank">Syntax highlighte</a>r : Syntax highlighter is an awesome plugin for developers. Most developers end up writing some code on their blogs and lets admit it, code is not so elegantly displayed on most blogging engines. Syntax highlighter make code look really pretty on you blog. It supports C++ (cpp, c, c++), C# (c#, c-sharp, csharp), CSS (css), Delphi (delphi, pascal), Java (java), Java Script (js, jscript, javascript), PHP (php) Python (py, python), Ruby (rb, ruby, rails, ror), Sql (sql),VB (vb, vb.net),XML/HTML (xml, html, xhtml, xslt). Take a look at this section of code.</p>
<pre name="code" class="python">
 # python's functional programming support is awesome
 # you can use three functions map, reduce and filter

 # map(function, sequence) calls function(item) for each of the sequence's items
 #returns a list of the return values

  >>> map(lambda x: x*x*x, range(1, 11))
  [1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]

 #reduce(function, sequence) returns a single value by performing tree based reduction on f(item)
 #For example, to compute the sum of the numbers 1 through 10: 

 >>> reduce(lambda x, y: x+y, range(1, 11))
  55
</pre>
<p>5. <a href="http://www.semiologic.com/software/marketing/google-analytics/" target="_blank">Google-Analytics plugin</a> : This plugin lets you put your adsense code in a single place without having to edit any of the files. If you are using analytics for your blog then get this plugin, makes the job hasslefree.</p>
<p>6. <a href="http://www.google.co.in/url?sa=t&amp;source=web&amp;ct=res&amp;cd=1&amp;url=http%3A%2F%2Fwordpress.org%2Fextend%2Fplugins%2Fsubscribe-to-comments%2F&amp;ei=kkDvSIz0HIL-6QPAs4yoBg&amp;usg=AFQjCNGgDXsaRZwVJLU5FVMoKItqFBvuQA&amp;sig2=00cMhq8qhdtR2LRNzQ9_lQ" target="_blank">Subscribe to comments</a>: I subscribe to comments feed for a post when I am interested in a discussion, but for users who dont want to take the pain of managing rss, you can give them an option to follow further comments by email. Its great to drive a good discussion again.</p>
<p>Well thats about it, have fun blogging!!</p>
<p><!--adsense--></p>
]]></content:encoded>
			<wfw:commentRss>http://riteshnayak.com/blog/2008/10/10/sharing-some-wordpress-love/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Ruby on Rails &#8211; Comprehensive tutorial</title>
		<link>http://riteshnayak.com/blog/2008/09/22/ruby-on-rails-comprehensive-tutorial/</link>
		<comments>http://riteshnayak.com/blog/2008/09/22/ruby-on-rails-comprehensive-tutorial/#comments</comments>
		<pubDate>Mon, 22 Sep 2008 07:23:30 +0000</pubDate>
		<dc:creator>Ritesh</dc:creator>
				<category><![CDATA[Tips,Tricks and code]]></category>

		<guid isPermaLink="false">http://riteshnayak.com/blog/2008/09/22/ruby-on-rails-comprehensive-tutorial/</guid>
		<description><![CDATA[I recently gave a tutorial on Ruby on Rails at my school. Its pretty comprehensive and most of the material I used for the tutorial is present on my personal Wiki. Please find the tutorial on my wiki here
&#160;http://riteshnayak.com/wiki/index.php?title=Ruby_on_Rails
Also, people who are using rails 2.0, please go the 2.0 section directly. If you start using [...]]]></description>
			<content:encoded><![CDATA[<p>I recently gave a tutorial on Ruby on Rails at my school. Its pretty comprehensive and most of the material I used for the tutorial is present on my personal Wiki. Please find the tutorial on my wiki here<br />
<a href="http://riteshnayak.com/wiki/index.php?title=Ruby_on_Rails">&nbsp;http://riteshnayak.com/wiki/index.php?title=Ruby_on_Rails</a></p>
<p>Also, people who are using rails 2.0, please go the 2.0 section directly. If you start using 1.0 tutorial, you may get lost after a certain time and the results wont show. Check what version of rails you have installed and then use the corresponding section. Best of luck!!<br />
<!--adsense--><!-- technorati tags begin -->
<p style="font-size:10px;text-align:right;">Tags: <a href="http://technorati.com/tag/rubyon%20rails" rel="tag">rubyon rails</a>, <a href="http://technorati.com/tag/%20ror" rel="tag"> ror</a>, <a href="http://technorati.com/tag/%20rails" rel="tag"> rails</a>, <a href="http://technorati.com/tag/%20itsmeritesh" rel="tag"> itsmeritesh</a></p>
<p><!-- technorati tags end --></p>
]]></content:encoded>
			<wfw:commentRss>http://riteshnayak.com/blog/2008/09/22/ruby-on-rails-comprehensive-tutorial/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yahoo BOSS &#8211; simple, open and awesome</title>
		<link>http://riteshnayak.com/blog/2008/08/05/yahoo-boss-simple-open-and-awesome/</link>
		<comments>http://riteshnayak.com/blog/2008/08/05/yahoo-boss-simple-open-and-awesome/#comments</comments>
		<pubDate>Tue, 05 Aug 2008 09:56:45 +0000</pubDate>
		<dc:creator>Ritesh</dc:creator>
				<category><![CDATA[Tips,Tricks and code]]></category>

		<guid isPermaLink="false">http://riteshnayak.com/blog/2008/08/05/yahoo-boss-simple-open-and-awesome/</guid>
		<description><![CDATA[Reached home early yesterday and read an article about Yahoo BOSS and its open nature. In my effort to kill time, till dinner, I sat and read through the documentation for BOSS and it turns out its the easiest open search ever. I used the Google Coop as my site search but, somehow the techie [...]]]></description>
			<content:encoded><![CDATA[<p>Reached home early yesterday and read an article about <a href="http://feedproxy.google.com/%7Er/Techcrunch/%7E3/JoKwzo5lCRc/">Yahoo BOSS and its open nature</a>. In my effort to kill time, till dinner, I sat and read through the <a href="http://developer.yahoo.com/search/boss/boss_guide/">documentation for BOSS</a> and it turns out its the easiest open search ever. I used the <a href="http://www.google.com/url?sa=t&amp;ct=res&amp;cd=3&amp;url=http%3A%2F%2Fwww.google.com%2Fcoop%2Fcse%3Fcx%3D010687943935697476799%253Awtrvyq17qyc&amp;ei=NCKYSPGACYryiQHQx7DODw&amp;usg=AFQjCNFAAqTnZaM6oSIoYfTqv5PI3CkiHw&amp;sig2=h_OGhGhp5-fguiMIQH2C1Q">Google Coop as my site search</a> but, somehow the techie inside me couldn&#8217;t rest at the thought of someone else doing the tech for me. BOSS looked really tempting with its good results and recent indexes; I sat down to build my site search.<br />
<a href="http://developer.yahoo.com/search/boss/"><img style="width: 498px; height: 121px;" src="http://l.yimg.com/a/i/ydn/boss/boss_info4.gif" border="0" alt="" /></a></p>
<p>BOSS is simple. Really really simple and can do wonders if you are planning to build a search engine with your own flavor. Unlike other searches, BOSS gives you XML/JSON, meaning you can re-order results and present them in any way you like. Add flash, css, javascript, canvas elements whatever to build that unique search experience. After the <a href="http://cuil.com">cuil</a> ripoff Yuil, which got taken down and was relaunched again as <a href="http://4hoursearch.com">4Hoursearch</a> (why did they call it that ? figure it out Einstein !!), I was sure BOSS would be easy, but didn&#8217;t know it would be this easy.</p>
<p>Its only recently that I started learning Python, and I suck at it,  so I picked my old favorite PHP as the language of choice ( I suck at PHP too, but suck less compared to Python). Got myself an <a href="http://developer.yahoo.com/wsregapp/">Application ID to use BOSS.</a> Used PHP SimpleXML parser to get a URL of choice and Voila, I had my results in an array. Wrote some really rudimentary CSS to match the aesthetics of my site and my site search was done .</p>
<p><a href="http://riteshnayak.com/boss.php">Check out my Yahoo BOSS powered site search here !!</a></p>
<p>If it wasn&#8217;t for my crappy PHP skill level, Im sure I could have wrapped up the entire thing, right from &#8220;Duh, what is BOSS ?&#8221;  to the implementation, in under an hour. If I do find more time to kill whilst I wait for dinner, I shall experiment with different displays for search results from BOSS. <a href="http://developer.yahoo.com/search/boss/">Y! BOSS</a> is truly open and in keeping with the Open Source spirit, I have shared my rudimentary site search code. You wont believe it but the code , with proper convention, HTML and CSS comes up to <span style="font-weight: bold;">65 lines</span> . Isn&#8217;t it awesome ??</p>
<p><a href="http://riteshnayak.com/boss_src.zip">Get the code for site search here.</a></p>
<p>Another wonderful manifestation of this concept is that you can now build custom search engines that will search only the sites that you catalog for information you need. Check out Y! BOSS.<br />
<!--adsense--></p>
<p><!-- technorati tags begin --></p>
<p style="font-size:10px;text-align:right;">Tags: <a rel="tag" href="http://technorati.com/tag/yahoo">yahoo</a>, <a rel="tag" href="http://technorati.com/tag/BOSS">BOSS</a>, <a rel="tag" href="http://technorati.com/tag/%20sitesearch"> sitesearch</a>, <a rel="tag" href="http://technorati.com/tag/%20search"> search</a></p>
<p><!-- technorati tags end --></p>
]]></content:encoded>
			<wfw:commentRss>http://riteshnayak.com/blog/2008/08/05/yahoo-boss-simple-open-and-awesome/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>Do not forget to Remember the Milk</title>
		<link>http://riteshnayak.com/blog/2008/07/29/do-not-forget-to-remember-the-milk/</link>
		<comments>http://riteshnayak.com/blog/2008/07/29/do-not-forget-to-remember-the-milk/#comments</comments>
		<pubDate>Tue, 29 Jul 2008 09:09:16 +0000</pubDate>
		<dc:creator>Ritesh</dc:creator>
				<category><![CDATA[Tips,Tricks and code]]></category>

		<guid isPermaLink="false">http://riteshnayak.com/blog/2008/07/29/do-not-forget-to-remember-the-milk/</guid>
		<description><![CDATA[&#160;&#160;&#160; I am over obsessed with organizing things that I deal with. I love doing things like organizing my bookmarks, tagging all my photos/blogs/folders, documenting every piece of software &#8211; things that other people consider to be a chore. I feel organizing and optimization both add a lot to personal productivity. Ok, to be really [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://rememberthemilk.com"><img alt="Remember The Milk" src="http://static.rememberthemilk.com/img/logo.png" border="0" /></a>&nbsp;&nbsp;&nbsp; I am over obsessed with organizing things that I deal with. I love doing things like organizing my bookmarks, tagging all my photos/blogs/folders, documenting every piece of software &#8211; things that other people consider to be a chore. I feel organizing and optimization both add a lot to personal productivity. Ok, to be really honest, I hate having to look for things, especially things that I know I have. I also hate it when it takes me more than 5 minutes to find what I want and being organized is a clever way to take out all the hard work in being lazy. I am also involved in a zillion things at once and usually forget a lot of important events ( think its time to invest in a personal secretary ). For that reason I just love the online calendar, I am currently using the <a href="http://calendar.google.com">Google Calendar</a> which is just really awesome and wanted a quick way to add things to my calendar. Then I found <a href="http://rememberthemilk.com">Remember the Milk </a></p>
<p><a href="http://www.rememberthemilk.com/about/" title="Remember The Milk interface"><img alt="Remember The Milk interface" src="http://static.rememberthemilk.com/img/hp_screen2.png" border="0" /></a></p>
<p>&nbsp;The reminder service is awesome. Firstly it integrates to my Google as well as my outlook calendar. Next, there is a firefox addon that lets you <a href="http://www.rememberthemilk.com/services/gmail/">see your task schedule in gmail.</a> And to top it off I can post events from <a href="http://twitter.com/itsmeritesh">twitter</a> and also my messenger. Its just truly awesome.<br />
&nbsp;<br />
The service also understand common sentences and converts it to a date time equivalent. If I write say &#8221; do this day after tomorrow&#8221;, it adds do this to two days later. I haven&#8217;t yet seen the complete capability of the service, but almost all the english sentences I have typed have ended up in dates. Its pretty clever when you think of it. If you are like me and want to get organized use <a href="http://rtmilk.com">rtmilk</a>. </p>
<p>Others tools that I use for organizing information around me<br />
1. Outlook and Google Calendar<br />
2. Tagging files in Vista ( not in xp )<br />
3. <a href="http://www.google.com/coop/cse?cx=010687943935697476799%3Awtrvyq17qyc">Personal site search</a> ( which helps me more than it helps others )<br />
4. Post its<br />
5. Reminders on my phone<br />
<!--adsense--><!-- technorati tags begin -->
<p style="font-size:10px;text-align:right;">Tags: <a href="http://technorati.com/tag/rememberthemilk" rel="tag">rememberthemilk</a>, <a href="http://technorati.com/tag/rtm" rel="tag">rtm</a>, <a href="http://technorati.com/tag/%20organizing" rel="tag"> organizing</a>, <a href="http://technorati.com/tag/%20calendar" rel="tag"> calendar</a>, <a href="http://technorati.com/tag/%20schedule" rel="tag"> schedule</a></p>
<p><!-- technorati tags end --></p>
]]></content:encoded>
			<wfw:commentRss>http://riteshnayak.com/blog/2008/07/29/do-not-forget-to-remember-the-milk/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Ruby on Rails &#8211; Getting started</title>
		<link>http://riteshnayak.com/blog/2008/07/04/ruby-on-rails-getting-started/</link>
		<comments>http://riteshnayak.com/blog/2008/07/04/ruby-on-rails-getting-started/#comments</comments>
		<pubDate>Fri, 04 Jul 2008 09:09:53 +0000</pubDate>
		<dc:creator>Ritesh</dc:creator>
				<category><![CDATA[Tips,Tricks and code]]></category>

		<guid isPermaLink="false">http://riteshnayak.com/blog/2008/07/04/ruby-on-rails-getting-started/</guid>
		<description><![CDATA[
Every night now, for the past three days, I am sitting religiously in front of my 8 year old desktop running gutsy (both my laptops are&#8217;nt with me now   ) trying to learn Ruby on Rails &#8211; ror in short. I must say, I have been completely fascinated by its possibilities and look [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6.tar.gz" title=""><img alt="" src="http://rubyonrails.com/assets/2007/2/20/ruby.png" border="0" /></a><a href="http://rubyonrails.com/" title="Rails"><img alt="Rails" src="http://rubyonrails.com/images/rails.png" border="0" /></a><br />
Every night now, for the past three days, I am sitting religiously in front of my 8 year old desktop running gutsy (both my laptops are&#8217;nt with me now <img src='http://riteshnayak.com/blog/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' />  ) trying to learn Ruby on Rails &#8211; ror in short. I must say, I have been completely fascinated by its possibilities and look forward to building some really cool and useful apps with it in the near future. I have also been trying to look for tutorials on ror and not finding much help online. A <a href="http://ashwinrajiv.com">friend of mine</a> pointed me to <a href="http://www.pragmaticprogrammer.com/titles/rails/index.html">The Book for ror</a> which I am trying to get my hands on. I have never been the type that learns a new language from a book; I like to get my hands dirty and try out things &#8211; thats the way I learn. So, based on my experience learning ror , Im penning down my getting started with ror.</p>
<p>&nbsp;What can ror do ? It makes developing web applications really, and I mean really simple. You give it a table structure and rails automatically builds a table, forms for insert, delete and display for the fields and also build MVC architecture by default. Controllers and views are built and all you have to do as a web developer is to add CSS to the generated files so that they look awesome. There is demo which shows <a href="http://media.rubyonrails.org/video/rails_take2_with_sound.mov">how you can build a blogging engine using rails in under 15 minutes</a>. Now isnt that cool !! Its a really cool hack that has made the job of writing everyday web applications really easy. Well two of my favorite applications online have been built using ror. Check them out .<br />
&nbsp;<br />
<a href="http://www.basecamphq.com" title="Basecamp"><img alt="Basecamp" src="http://rubyonrails.com/assets/2007/2/20/basecamp.gif" border="0" /></a><a href="http://rubyonrails.com/" title="Twitter"> &nbsp; &nbsp; &nbsp;</a><a href="http://rubyonrails.com/" title="Basecamp"> &nbsp;&nbsp;&nbsp;&nbsp; </a><a href="http://twitter.com/itsmeritesh" title="Twitter"><img alt="Twitter" src="http://rubyonrails.com/assets/2008/2/27/twitter.jpg" border="0" /></a><br />
&nbsp;</p>
<p>Well for starters ruby is a programming language &#8211; older than java, very english like and mostly interpreted I guess. Rails is this wonderful platform like hack which does a lot of cool things and ruby sits on top of rails and you can build applications using them. </p>
<p>&nbsp; Installation : I found many places which listed installation instructions but this one worked best.<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; <a href="http://wiki.rubyonrails.org/rails/pages/RailsOnUbuntu">http://wiki.rubyonrails.org/rails/pages/RailsOnUbuntu</a></p>
<p>&nbsp;<a href="http://docs.rubygems.org/" title=""><img alt="" src="http://docs.rubygems.org/images/rubygems-125x125t.png" border="0" /></a><br />
&nbsp; This brings me to another wonderful piece of software that runs under 400kb, Gems. A apt styled package manager built to get ruby related software.<br />
Once you are setup, I guess its time to learn the language and to learn ruby, I would definitely suggest <a href="http://poignantguide.net/ruby/">why&#8217;s (poignant) guide to Ruby</a>. Nothing beats this online book &#8230; sorry online masterpiece in explaining the aspects of the ruby language. Im still not done with this but I cant wait to read more of it. </p>
<p>&nbsp;Since ror is for web development, its obvious you need a webserver, so you can use the prepackaged WEBrick server ( good for small dev). For more serious programming use <a href="http://mongrel.rubyforge.org/">Mongrel</a>, Apache or lighttpd. Instructions to configure Apache and Lighttpd for ror can be found <a href="https://help.ubuntu.com/community/RubyOnRails">here</a>. Get MySql for the database and you will be done.</p>
<p>&nbsp;Lastly you need a very good article to get you started and <a href="http://godbit.com/article/beginners-guide-to-rails-part-1">this is the one that got me started out</a>. Its not perfect considering its almost 2 years old but the errors that show up will help you learn much better. And thats it , we are done. Best of luck learning ror.<br />
&nbsp; </p>
<p>&nbsp;</p>
<p><!--adsense--><!-- technorati tags begin -->
<p style="font-size:10px;text-align:right;">Tags: <a href="http://technorati.com/tag/ruby" rel="tag">ruby</a>, <a href="http://technorati.com/tag/rails%20" rel="tag">rails </a>, <a href="http://technorati.com/tag/%20ruby%20on%20rails" rel="tag"> ruby on rails</a>, <a href="http://technorati.com/tag/%20getting%20started" rel="tag"> getting started</a>, <a href="http://technorati.com/tag/%20tutorials" rel="tag"> tutorials</a></p>
<p><!-- technorati tags end --></p>
]]></content:encoded>
			<wfw:commentRss>http://riteshnayak.com/blog/2008/07/04/ruby-on-rails-getting-started/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
<enclosure url="http://media.rubyonrails.org/video/rails_take2_with_sound.mov" length="54364199" type="video/quicktime" />
		</item>
		<item>
		<title>Email Checklist from Seth Godin</title>
		<link>http://riteshnayak.com/blog/2008/06/18/382/</link>
		<comments>http://riteshnayak.com/blog/2008/06/18/382/#comments</comments>
		<pubDate>Wed, 18 Jun 2008 09:47:52 +0000</pubDate>
		<dc:creator>Ritesh</dc:creator>
				<category><![CDATA[Tips,Tricks and code]]></category>
		<category><![CDATA[gyaan]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://riteshnayak.com/blog/2008/06/18/382/</guid>
		<description><![CDATA[Great tips on sending an Email from Seth Godin himself- I realized a lot of my own follies.

Before you hit send on that next email, perhaps you should run down this list, just to be sure:

Is it going to just one person? (If yes, jump to #10)
Since it&#8217;s going to a group, have I thought [...]]]></description>
			<content:encoded><![CDATA[<p>Great tips on sending an Email from <a title="Seth Godins blog" href="http://sethgodin.typepad.com/" target="_blank">Seth Godin</a> himself- I realized a lot of my own follies.</p>
<div class="entry-body">
<blockquote><p>Before you hit send on that next email, perhaps you should run down this list, just to be sure:</p>
<ol>
<li>Is it going to just one person? (If yes, jump to #10)</li>
<li>Since it&#8217;s going to a group, have I thought about who is on my list?</li>
<li>Are they blind copied?</li>
<li>Did every person on the list really and truly opt in? Not like sort of, but really ask for it?</li>
<li>So that means that if I <em>didn&#8217;t</em> send it to them, they&#8217;d complain about not getting it?</li>
<li>See #5. If they wouldn&#8217;t complain, take them off!</li>
<li>That means, for example, that sending bulk email to a list of bloggers just cause they have blogs is not okay.</li>
<li>Aside: the definition of permission marketing: Anticipated, personal and relevant messages delivered to people who actually want to get them. Nowhere does it say anything about you and your needs as a sender. Probably none of my business, but I&#8217;m just letting you know how I feel. (And how your prospects feel).</li>
<li>Is the email from a real person? If it is, will hitting reply get a note back to that person? (if not, change it please).</li>
<li>Have I corresponded with this person before?</li>
<li>Really? They&#8217;ve written back? (if no, reconsider email).</li>
<li>If it is a cold-call email, and I&#8217;m sure it&#8217;s welcome, and I&#8217;m sure it&#8217;s not spam, then don&#8217;t apologize. If I need to apologize, then yes, it&#8217;s spam, and I&#8217;ll get the brand-hurt I deserve.</li>
<li>Am I angry? (If so, save as draft and come back to the note in one hour).</li>
<li>Could I do this note better with a phone call?</li>
<li>Am I blind-ccing my boss? If so, what will happen if the recipient finds out?</li>
<li>Is there anything in this email I don&#8217;t want the attorney general, the media or my boss seeing? (If so, hit delete).</li>
<li>Is any portion of the email in all caps? (If so, consider changing it.)</li>
<li>Is it in black type at a normal size?</li>
<li>Do I have my contact info at the bottom? (If not, consider adding it).</li>
<li>Have I included the line, &#8220;Please save the planet. Don&#8217;t print this email&#8221;? (If so, please delete the line and consider a job as a forest ranger or flight attendant).</li>
<li>Could this email be shorter?</li>
<li>Is there anyone copied on this email who could be left off the list?</li>
<li>Have I attached any files that are very big? (If so, google something like &#8217;send big files&#8217; and consider your options.)</li>
<li>Have I attached any files that would work better in PDF format?</li>
<li>Are there any <img src='http://riteshnayak.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  or other emoticons involved? (If so, reconsider).</li>
<li>Am I forwarding someone else&#8217;s mail? (If so, will they be happy when they find out?)</li>
<li>Am I forwarding something about religion (mine or someone else&#8217;s)? (If so, delete).</li>
<li>Am I forwarding something about a virus or worldwide charity effort or other potential hoax? (If so, visit <a href="http://www.snopes.com/">snopes</a> and check to see if it&#8217;s &#8216;actually true).</li>
<li>Did I hit &#8216;reply all&#8217;? If so, am I glad I did? Does every person on the list need to see it?</li>
<li>Am I quoting back the original text in a helpful way? (Sending an email that says, in its entirety, &#8220;yes,&#8221; is not helpful).</li>
<li>If this email is to someone like Seth, did I check to make sure I know the difference between its and it&#8217;s? Just wondering.</li>
<li>If this is a press release, am I really sure that the recipient is going to be delighted to get it? Or am I taking advantage of the asymmetrical nature of email&#8211;free to send, expensive investment of time to read or delete?</li>
<li>Are there any little animated creatures in the footer of this email? Adorable kittens? Endangered species of any kind?</li>
<li>Bonus: Is there a long legal disclaimer at the bottom of my email? Why?</li>
<li>Bonus: Does the subject line make it easy to understand what&#8217;s to come and likely it will get filed properly?</li>
<li>If I had to pay 42 cents to send this email, would I?</li>
</ol>
</blockquote>
</div>
]]></content:encoded>
			<wfw:commentRss>http://riteshnayak.com/blog/2008/06/18/382/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>OpenId a must for new properties</title>
		<link>http://riteshnayak.com/blog/2008/01/18/openid-a-must-for-new-properties/</link>
		<comments>http://riteshnayak.com/blog/2008/01/18/openid-a-must-for-new-properties/#comments</comments>
		<pubDate>Fri, 18 Jan 2008 08:10:27 +0000</pubDate>
		<dc:creator>Ritesh</dc:creator>
				<category><![CDATA[Tips,Tricks and code]]></category>
		<category><![CDATA[Web News]]></category>

		<guid isPermaLink="false">http://riteshnayak.com/blog/2008/01/18/openid-a-must-for-new-properties/</guid>
		<description><![CDATA[I have been a big fan of OpenId for a long time and also advice many people about the benefits of using it. What I really disliked was the fact that big names were missing from the OpenId directories. That changed as Yahoo is beta testing being an OpenId provider and the news is Great. [...]]]></description>
			<content:encoded><![CDATA[<p>I have been a big fan of OpenId for a long time and also advice many people about the benefits of using it. What I really disliked was the fact that big names were missing from the OpenId directories. That changed as Yahoo is beta testing being an OpenId provider and the news is Great. First of all it almost triples the number of users who have OpenIds and also almost every internet user has a yahoo account (approx 30 million) , which makes the proposition a whole lot better.</p>
<p>I have been trying to make a web property OpenId enabled and its a cinch. Just download and install libraries for the multitde of programming languages and then just follow some basic configuration steps , map the OpenId users to your user management system and you are done. <a href="http://wiki.openid.net/Libraries" target="_blank">Here is a list of all the plugins available for OpenId enabling your site</a>.</p>
<p>OpenId has really come of age and with Yahoo announcing support its become a neccesity for almost every web App. I would even go so far as to mandate websites , old and new , to enable OpenId on their sites and save the users from the painful signup and confirm cycle. The sheer number of OpenId holders should be motivation enough for properties to go the OpenId way.<br />
<!--adsense#center--></p>
]]></content:encoded>
			<wfw:commentRss>http://riteshnayak.com/blog/2008/01/18/openid-a-must-for-new-properties/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Performance and its importance for websites</title>
		<link>http://riteshnayak.com/blog/2007/09/20/performance-and-its-importance-for-websites/</link>
		<comments>http://riteshnayak.com/blog/2007/09/20/performance-and-its-importance-for-websites/#comments</comments>
		<pubDate>Thu, 20 Sep 2007 11:41:35 +0000</pubDate>
		<dc:creator>Ritesh</dc:creator>
				<category><![CDATA[Tips,Tricks and code]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[rant]]></category>

		<guid isPermaLink="false">http://riteshnayak.com/blog/2007/09/20/performance-and-its-importance-for-websites/</guid>
		<description><![CDATA[Recently, the field of performance has been taken by storm. Right from the people in my company who came to improve performance of our websites to the people who gave talks about performance in unconferences held in the city, performance seems to be the thing to talk about.

   A recent trip to the [...]]]></description>
			<content:encoded><![CDATA[<p>Recently, the field of performance has been taken by storm. Right from the people in my company who came to improve performance of our websites to the people who gave talks about performance in unconferences held in the city, performance seems to be the thing to talk about.
</p>
<p>   A recent trip to the Yahoo Developer network portal also showed some glaringly visible tributes to the field of performance. First , there is YSlow, a plugin which works along with firebug and tells you why a website is slow based on certain pre defined parameters. How about an <a href="http://developer.yahoo.com/performance/" target="_blank">entire section of a site dedicated to performance</a>. Blogs, presentations, talks, podcasts, videos on performance and its related fields. Do you want to <a href="http://developer.yahoo.com/performance/rules.html">know the thirteen rules to speed up your website, then do read this</a>. You are likely to find one of the reasons in this showing up in YSlow.
</p>
<p>  Also feel free to join the<a href="http://tech.groups.yahoo.com/group/exceptional-performance/"> exceptional performance group</a> to discuss more on high performance websites.
</p>
<p> People are moving to more open source technologies and are beginning to discard enterprise software. Take for example a migration in my company, people moved from Weblogic to Tomcat, Oracle to MySql and other host of open source technologies. Problem – open source software isn&#8217;t usually made with a lot of scalability in mind, unlike enterprise software that is meant to be scaled. So , when this bunch of non scalable software sits on an enterprise bus, you need performance to match if not better the enterprise counterpart. This is where performance tuning comes into play and as more and more open source finds ground in the enterprise, more such challenges  with regards to performance have to be addressed.
</p>
<p>
 </p>
]]></content:encoded>
			<wfw:commentRss>http://riteshnayak.com/blog/2007/09/20/performance-and-its-importance-for-websites/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

