<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Nerds To Geeks - Blog</title><link>http://blog.nerdstogeeks.com/</link><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/NerdsToGeeks" /><description>Tips • Tricks • Code Snippets</description><language>en</language><managingEditor>noreply@blogger.com (Srikanth Rayabhagi)</managingEditor><lastBuildDate>Mon, 30 Jan 2012 14:37:28 PST</lastBuildDate><generator>Blogger</generator><atom:id xmlns:atom="http://www.w3.org/2005/Atom">tag:blogger.com,1999:blog-5209441328299776693</atom:id><openSearch:totalResults xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">137</openSearch:totalResults><openSearch:startIndex xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">1</openSearch:startIndex><openSearch:itemsPerPage xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/NerdsToGeeks" /><feedburner:info uri="nerdstogeeks" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><image><link>http://srikanthrayabhagi.blogspot.com</link><url>http://feeds.feedburner.com/~fc/ProstuntsTechnicalBlog?bg=669999&amp;amp;fg=FFFFFF&amp;amp;anim=1" height="26" width="88" style="border:0"</url><title>Prostunts Technical Blog</title></image><item><title>Basic and Useful Plugins for gEdit</title><link>http://feedproxy.google.com/~r/NerdsToGeeks/~3/jaDcbos6MXU/basic-and-useful-plugins-for-gedit.html</link><category>Developers</category><category>Linux</category><author>noreply@blogger.com (Srikanth Rayabhagi)</author><pubDate>Sun, 29 Jan 2012 09:00:00 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5209441328299776693.post-5614683038258374333</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div style="text-align: justify;"&gt;
If you are starting on Linux and getting used to gedit, you should try installing the basic official plugins which will make you love the gedit even more. To start, how about python console in the editor? Autocomplete the words you type in? You can have all of these in gedit. Here are the steps.&lt;/div&gt;
&lt;ol style="text-align: left;"&gt;
&lt;li&gt;Open Terminal.&lt;/li&gt;
&lt;li&gt;Run &lt;pre class="codeSnip codeSnipInline"&gt;sudo apt-get install gedit-plugins&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Now open to &lt;b&gt;gedit&lt;/b&gt; and go to &lt;b&gt;preferences.&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;In the plugins tab, you can find all new plugins.&lt;/li&gt;
&lt;li&gt;Just select what ever you want and have fun.&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;div style="text-align: justify;"&gt;
I would recommend these plugins if you are starting.&lt;/div&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li style="text-align: justify;"&gt;Snippets - An easy way to use the code snippets, would be great if you are used to textmate.&lt;/li&gt;
&lt;li style="text-align: justify;"&gt;Word Completion - As the name says, complete your words with a tab.&lt;/li&gt;
&lt;li style="text-align: justify;"&gt;Python Console - Run the console in your editor as a tab.&lt;/li&gt;
&lt;li style="text-align: justify;"&gt;Bracket Completion - Though irritating at times, useful and must have.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;div style="text-align: justify;"&gt;
I hope you find this useful and if you wanna see more of these follow us on &lt;a href="http://nerdstogeeks.com/+"&gt;nerdstogeeks.com/+&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209441328299776693-5614683038258374333?l=blog.nerdstogeeks.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NerdsToGeeks/~4/jaDcbos6MXU" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2012-01-29T22:39:56.485+05:30</atom:updated><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.nerdstogeeks.com/2012/01/basic-and-useful-plugins-for-gedit.html</feedburner:origLink></item><item><title>Pangrams and Python Way</title><link>http://feedproxy.google.com/~r/NerdsToGeeks/~3/2ZWDuVgepL8/pangrams-and-python-way.html</link><category>Web Surfer</category><category>Python</category><author>noreply@blogger.com (Srikanth Rayabhagi)</author><pubDate>Sun, 15 Jan 2012 09:56:00 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5209441328299776693.post-3198774373639913059</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div style="text-align: justify;"&gt;
'Lorem Ipsum' - the same old content used to fill up the templates, this is what you and I know till today. This kind of content has a name that I never knew, if you are one of those who don't know anything about pangrams, this post is for you.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
While browsing through the &lt;a href="http://www.google.com/webfonts#ChoosePlace:select" target="_blank"&gt;web fonts&lt;/a&gt; of Google, I was expecting the same world sentence - "The quick brown&amp;nbsp;fox&amp;nbsp;jumps over&amp;nbsp;the lazy&amp;nbsp;dog", which has all the letters, but to my&amp;nbsp;surprise there is a new sentence or rather paragraph which is neither lorem ipsum nor the quick brown fox -&amp;nbsp;"Grumpy wizards make toxic brew for the evil Queen and Jack." So, I searched for the snippet of text and landed on a &lt;a href="http://www.fun-with-words.com/pang_visitor.html" target="_blank"&gt;website&lt;/a&gt; that talks about the pangrams and found that these sentences are called pangrams and lorem ipsum is one of them.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
If you are wondering what a pangram is, it is a sentence that contains all the letters of alphabet. My interest made me read through a couple more pangrams and after a while I just want to write a script that let you know if the given sentence is pangram or not. So, I came up with a python script that does basic checks to determine&amp;nbsp;whether it is a pangram or not.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Here is the script I wrote in the first attempt:&lt;/div&gt;
&lt;pre class="codeSnip"&gt;inp_sent = raw_input('Enter Sentence')
inp_sent = inp_sent.replace(' ','').lower()

if len(set(inp_sent)) &amp;gt;= 26:
    print "Yes"
else:
    print "No"
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
After this I searched the web for a proper program for pangram and landed on this &lt;a href="http://rosettacode.org/wiki/Pangram_checker#Python" target="_blank"&gt;wiki page&lt;/a&gt; that has&amp;nbsp;a bunch of languages writing the pangram. Here is the python way of the script on the page.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class="codeSnip"&gt;import string, sys
if sys.version_info[0] &amp;lt; 3:
    input = raw_input
 
def ispangram(sentence, alphabet=string.ascii_lowercase):
    alphaset = set(alphabet)
    return alphaset &amp;lt;= set(sentence.lower())
 
print ( ispangram(input('Sentence: ')) )&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
After going through this code, I noticed that something is not right with my code, what I am basically checking is that for a pangram, there need to be a set of more than 26 letters which is a very blind way of doing it. So, to put it straight you key in a bunch of special characters along with few letters and make sure the length of your input string is more than 26, these programs return a blind and wrong "True".&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
To solve this&amp;nbsp;problem, an additional check for the character will do the trick. So, right after lowercase conversion just add this order check.&lt;br /&gt;
&lt;pre class="codeSnip"&gt;#loop along the sentence and check for the order.
for i in inp_sent:
  if ord(i) &amp;gt;=97 and ord(i) &amp;lt;=123:
    #count for length
    length = length + 1
&lt;/pre&gt;
&lt;br /&gt;
This will do the trick for detecting the pangram.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209441328299776693-3198774373639913059?l=blog.nerdstogeeks.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NerdsToGeeks/~4/2ZWDuVgepL8" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2012-01-16T15:29:45.280+05:30</atom:updated><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://blog.nerdstogeeks.com/2012/01/pangrams-and-python-way.html</feedburner:origLink></item><item><title>CES 2012 - A touch of Future.</title><link>http://feedproxy.google.com/~r/NerdsToGeeks/~3/kRydngS6tk0/ces-touch-of-future.html</link><category>Web Surfer</category><category>Technologies</category><author>noreply@blogger.com (Srikanth Rayabhagi)</author><pubDate>Mon, 09 Jan 2012 10:39:00 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5209441328299776693.post-9066970025471919374</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div style="text-align: justify;"&gt;
Today, I am trying a new kind of live blogging, just based on the hash tags for CES both in twitter as well as Google plus. Why am I doing this? I know its tough to find the right links at the right time especially in these situations where the spam bots kick in spamming half the hash tags and gain control over the content. BTW, for those who don't know what is CES, it is called &lt;a href="http://en.wikipedia.org/wiki/Consumer_Electronics_Show" target="_blank"&gt;Consumer Electronics Show&lt;/a&gt;.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-Bn5JrPX-Lkk/Tws0Kk33zsI/AAAAAAAADaE/1Y9iZEhwyJk/s1600/ces.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="202" src="http://3.bp.blogspot.com/-Bn5JrPX-Lkk/Tws0Kk33zsI/AAAAAAAADaE/1Y9iZEhwyJk/s320/ces.jpeg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;div style="text-align: justify;"&gt;
Some of those launches that attracted me:&lt;/div&gt;
&lt;/div&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li style="text-align: justify;"&gt;&lt;b&gt;Intel partnered with Nuance:&amp;nbsp;&lt;/b&gt;This collaborative&amp;nbsp;initiative&amp;nbsp;results in bringing the natural voice experience to its ultrabooks. It will be a great move and would definitely challenge the Apple's voice enabled devices especially Apple TV.&lt;/li&gt;
&lt;ul&gt;
&lt;li style="text-align: justify;"&gt;&lt;a href="http://techcrunch.com/2012/01/09/nuance-launches-dragon-tv-lets-you-control-your-tv-with-your-voice/" target="_blank"&gt;Nuance announces Dragon Smart TV platform&lt;/a&gt;.&lt;/li&gt;
&lt;li style="text-align: justify;"&gt;&lt;a href="http://www.thestreet.com/story/11370328/1/nuance-and-intel-announce-collaboration-to-voice-enable-ultrabook8482-devices.html" target="_blank"&gt;Nuance and Intel powering up the Ultrabook experience.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li style="text-align: justify;"&gt;&lt;b&gt;Lenovo + Ice Cream Sandwich: &lt;/b&gt;This would be really interesting to see how far this integration effect the future devices. Lenovo is releasing a smart TV featuring Android 4.0 under the name Lenovo K91. The specs being:&amp;nbsp;55 inch LED screen,&amp;nbsp;Qualcomm 8060 Snapdragon dual-core CPU,&amp;nbsp;1GB RAM,&amp;nbsp;8GB of storage,&amp;nbsp;2GB SD Card.&lt;/li&gt;
&lt;ul&gt;
&lt;li style="text-align: justify;"&gt;&lt;a href="http://ces.cnet.com/8301-33363_1-57354811/lenovo-reveals-ice-cream-sandwich-tv/?tag=mainMedia%3bhighlights" target="_blank"&gt;Lenovo reveals Ice cream sandwich&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li style="text-align: justify;"&gt;&lt;b&gt;LG + Google Smart TV: &lt;/b&gt;LG is on a roll in this series of CES. LG revealed its 55 inch OLED screen - Worlds Largest - 4mm thin - 1000 times faster than current LCD or LED screens. Along with this, to amuse its audience, it partnered with Google TV and preparing to launch it first in UK later in 2013.&lt;/li&gt;
&lt;ul&gt;&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="clear: left; float: right; margin-bottom: 1em; text-align: justify;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-NIfeFySUXOs/TwsurCmykYI/AAAAAAAADZ8/Ywuz2zuQ8mA/s1600/corning.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/-NIfeFySUXOs/TwsurCmykYI/AAAAAAAADZ8/Ywuz2zuQ8mA/s200/corning.jpg" width="200" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;[Image credit - PocketNow]&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;li style="text-align: justify;"&gt;&lt;a href="http://www.lgblog.co.uk/2012/01/ces-2012-overview/" target="_blank"&gt;LG reveals world’s largest OLED TV&lt;/a&gt;.&lt;/li&gt;
&lt;li style="text-align: justify;"&gt;&lt;a href="http://mashable.com/2012/01/09/lg-smart-refrigerator/" target="_blank"&gt;A Refrigerator That Helps You Diet? LG Unveils High-Tech Smart Appliances&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;div style="text-align: left;"&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li style="text-align: justify;"&gt;&lt;b&gt;Gorilla Glass 2 from Corning: &lt;/b&gt;Next generation of strong and damage resistant glass. 20% thinner than the current gorilla glass.&lt;/li&gt;
&lt;ul&gt;
&lt;li style="text-align: justify;"&gt;&lt;a href="http://www.twice.com/article/478693-Corning_Intros_Gorilla_Glass_2.php?rssid=20310&amp;amp;utm_medium=twitter&amp;amp;utm_source=twitterfeed" target="_blank"&gt;Corning Intros Gorilla Glass2&lt;/a&gt;.&lt;/li&gt;
&lt;li style="text-align: justify;"&gt;&lt;a href="http://thecellphonejunkie.com/2012/01/09/ces-2012-corning-announces-gorilla-glass-2/" target="_blank"&gt;CES 2012 - Corning announces Gorilla Glass 2&lt;/a&gt;.&lt;/li&gt;
&lt;li style="text-align: justify;"&gt;&lt;a href="http://pocketnow.com/smartphone-news/extra-tough-gorilla-glass-2-to-be-exhibited-at-ces" target="_blank"&gt;Extra-Tough Gorilla Glass 2 to be Exhibited at CES&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li style="text-align: justify;"&gt;&lt;b&gt;Acer Aspire A5: &lt;/b&gt;World's thinnest Ultrabook - 15mm at its thickest part.&lt;/li&gt;
&lt;ul&gt;
&lt;li style="text-align: justify;"&gt;&lt;a href="http://mashable.com/2012/01/08/acer-unveils-aspire-a5-worlds-thinnest-ultrabook/" target="_blank"&gt;Acer Unveils Aspire A5, World's Thinnest Ultrabook.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;div style="text-align: justify;"&gt;
And a lot more, I guess, this is as far I can moderate this list and keep watching for the tag #CES in twitter and google plus for latest updates and links. All the tech freaks out there, hope you find this a repeated content, but all those folks who enjoyed this post, follow us on &lt;a href="http://nerdstogeeks.com/+"&gt;nerdstogeeks.com/+&lt;/a&gt;.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209441328299776693-9066970025471919374?l=blog.nerdstogeeks.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NerdsToGeeks/~4/kRydngS6tk0" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2012-01-10T00:13:22.112+05:30</atom:updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-Bn5JrPX-Lkk/Tws0Kk33zsI/AAAAAAAADaE/1Y9iZEhwyJk/s72-c/ces.jpeg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.nerdstogeeks.com/2012/01/ces-touch-of-future.html</feedburner:origLink></item><item><title>Google's Way of Creating Magic with Websites</title><link>http://feedproxy.google.com/~r/NerdsToGeeks/~3/n3JoKkt6nsA/googles-way-of-creating-magic-with.html</link><category>Web Surfer</category><author>noreply@blogger.com (Srikanth Rayabhagi)</author><pubDate>Sun, 08 Jan 2012 05:17:00 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5209441328299776693.post-4006068969583595732</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div style="text-align: justify;"&gt;
We all know Google is good at creating stuff that make netizens go crazy and we do know that Google has several easter eggs planted&amp;nbsp;in its search engine&amp;nbsp;(my&amp;nbsp;favorites -&amp;nbsp;&lt;a href="https://www.google.com/search?q=recursion" target="_blank"&gt;Recursion&lt;/a&gt;,&amp;nbsp;&lt;a href="https://www.google.com/search?q=answer+to+life+the+universe+and+everything" target="_blank"&gt;Answer to Life Universe and Everything&lt;/a&gt;)&amp;nbsp;to excite the users when they search those. Now Google seems to be coming up with newer ways to amuse its audience. They started creating websites that have some hidden easter eggs.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
Confused? Let me get into the details.&lt;br /&gt;
&lt;br /&gt;
&lt;ol style="text-align: left;"&gt;
&lt;li&gt;Point your browser to Android's official website - &lt;a href="http://www.android.com/" target="_blank"&gt;http://www.android.com&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;The website is cool right? The coolest stuff is at the bottom of the page. Head to the footer and you can see a small android logo.&lt;/li&gt;
&lt;li&gt;Hover your mouse over that logo and you can see an animated play button popping up from the left hand of the android logo.&lt;/li&gt;
&lt;li&gt;Just click it and enjoy the small game of throwing snow.&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Here are the screen shots of the game.&lt;/div&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-EwcKZZnp178/TwmVUg7miNI/AAAAAAAADZo/xe89FbOpiDA/s1600/Screen+shot+2012-01-08+at+6.30.07+PM.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="206" src="http://1.bp.blogspot.com/-EwcKZZnp178/TwmVUg7miNI/AAAAAAAADZo/xe89FbOpiDA/s640/Screen+shot+2012-01-08+at+6.30.07+PM.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Hidden Android Game in the Footer of Android.com&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div&gt;
Let me know if you have seen any of these kind in any other Google Websites. And if you like this post,&amp;nbsp;&lt;span style="background-color: white; color: #333333; font-family: 'Helvetica Neue Light', HelveticaNeue-Light, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 19px; text-align: justify;"&gt;&amp;nbsp;&lt;/span&gt;you can follow us on G+ at &lt;a href="http://nerdstogeeks.com/+"&gt;http://nerdstogeeks.com/+&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209441328299776693-4006068969583595732?l=blog.nerdstogeeks.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NerdsToGeeks/~4/n3JoKkt6nsA" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2012-01-08T18:52:51.800+05:30</atom:updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-EwcKZZnp178/TwmVUg7miNI/AAAAAAAADZo/xe89FbOpiDA/s72-c/Screen+shot+2012-01-08+at+6.30.07+PM.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><georss:featurename xmlns:georss="http://www.georss.org/georss">Hyderabad, Andhra Pradesh, India</georss:featurename><georss:point xmlns:georss="http://www.georss.org/georss">17.385044 78.486671</georss:point><georss:box xmlns:georss="http://www.georss.org/georss">17.142593 78.17081400000001 17.627495 78.802528</georss:box><feedburner:origLink>http://blog.nerdstogeeks.com/2012/01/googles-way-of-creating-magic-with.html</feedburner:origLink></item><item><title>Graphing with Google</title><link>http://feedproxy.google.com/~r/NerdsToGeeks/~3/rTh6TRh_nhA/graphing-with-google.html</link><category>Web Surfer</category><category>Google Tricks</category><author>noreply@blogger.com (Srikanth Rayabhagi)</author><pubDate>Sat, 10 Dec 2011 20:46:00 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5209441328299776693.post-2127120965131398172</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div style="text-align: justify;"&gt;
All you math lovers out there, you need not look out for the web graphing tools or graphing calculators any more. Google does that for you! Yeah, Google introduced an interactive graphing tool into its own search interface. The graphing calculator works with the formulae&amp;nbsp;separated&amp;nbsp;with comma as input and a beautiful SVG Graph as the output. Here are some screen shots, I have tried.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Hq_EiEis5N4/TuQ40rHAGhI/AAAAAAAADS4/2HbN5XPpaxw/s1600/Screen+shot+2011-12-11+at+10.25.33+AM.png" imageanchor="1" style="margin-left: auto; margin-right: auto;" target="_blank"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/-Hq_EiEis5N4/TuQ40rHAGhI/AAAAAAAADS4/2HbN5XPpaxw/s400/Screen+shot+2011-12-11+at+10.25.33+AM.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Single formula&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div style="text-align: justify;"&gt;
Try the above formula from&amp;nbsp;&lt;a href="https://www.google.com/search?q=sin(x)" target="_blank"&gt;here&lt;/a&gt;&amp;nbsp;on Google. These Graphs support you with options like Zoom in and Zoom out which adjusts the scale of the graphs and you can try the multi-formulae version from &lt;a href="https://www.google.com/search?q=sin(x)+cos(x),%20x,%20log(x)" target="_blank"&gt;here&lt;/a&gt;.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-g5DliP_RgZA/TuQ42AH36EI/AAAAAAAADTA/08-2CCgTaMs/s1600/Screen+shot+2011-12-11+at+10.29.36+AM.png" imageanchor="1" style="margin-left: auto; margin-right: auto;" target="_blank"&gt;&lt;img border="0" height="200" src="http://4.bp.blogspot.com/-g5DliP_RgZA/TuQ42AH36EI/AAAAAAAADTA/08-2CCgTaMs/s400/Screen+shot+2011-12-11+at+10.29.36+AM.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Multiple Formulae&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div style="text-align: justify;"&gt;
In this multi formulae version, you can see the point scale with the color you choose from the top right corner. This is one useful tool if you are into graphing off late. Did you find any thing more on this aspect, let us and your fellow readers know by commenting below. &lt;br /&gt;
&lt;br /&gt;
If you find this post interesting, you can follow us on G+ at&amp;nbsp;&lt;a href="http://nerdstogeeks.com/+" target="_blank"&gt;&lt;b&gt;http://nerdstogeeks.com/+&lt;/b&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209441328299776693-2127120965131398172?l=blog.nerdstogeeks.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NerdsToGeeks/~4/rTh6TRh_nhA" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2011-12-11T10:40:31.465+05:30</atom:updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-Hq_EiEis5N4/TuQ40rHAGhI/AAAAAAAADS4/2HbN5XPpaxw/s72-c/Screen+shot+2011-12-11+at+10.25.33+AM.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><georss:featurename xmlns:georss="http://www.georss.org/georss">Hyderabad, Andhra Pradesh, India</georss:featurename><georss:point xmlns:georss="http://www.georss.org/georss">17.385044 78.486671</georss:point><georss:box xmlns:georss="http://www.georss.org/georss">17.142593 78.17081400000001 17.627495 78.802528</georss:box><feedburner:origLink>http://blog.nerdstogeeks.com/2011/12/graphing-with-google.html</feedburner:origLink></item><item><title>Division Operator in Python - Whats Wrong?</title><link>http://feedproxy.google.com/~r/NerdsToGeeks/~3/MCXccTLVYFM/division-operator-in-python-whats-wrong.html</link><category>Python</category><author>noreply@blogger.com (Srikanth Rayabhagi)</author><pubDate>Tue, 06 Dec 2011 09:30:00 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5209441328299776693.post-8095771795043382669</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div style="text-align: justify;"&gt;
When I first tried using the division operator (/) directly in python, it gave me rounded values which was pretty confusing and so started looking for the reason behind it and how to solve this. Before getting into this issue, if you are here looking for a solution to get this working, here are couple of ways I found useful. Just to inform you this happens with lower version of python and is good with python 3.x versions.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
Starting with a quick example&lt;br /&gt;
&lt;pre class="codeSnip"&gt;&amp;gt;&amp;gt;&amp;gt; 20/40 = 0
&lt;/pre&gt;
To fix this, here are couple of solutions. 

Use float() operator on either of the denominator or nominator.
&lt;br /&gt;
&lt;pre class="codeSnip"&gt;&amp;gt;&amp;gt;&amp;gt; float(20)/40 = 0.5
&amp;gt;&amp;gt;&amp;gt; 20/float(40) = 0.5
&lt;/pre&gt;
&lt;div style="text-align: justify;"&gt;
Import the library from the future versions by adding this. This gets you the reqd behavior from python 3.x
&lt;/div&gt;
&lt;pre class="codeSnip" style="text-align: justify;"&gt;from __future__ import division
&lt;/pre&gt;
&lt;div style="text-align: justify;"&gt;
Now coming to the reasons, here are few pages that made me understand what happening and if you would like to know please follow these&lt;/div&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li style="text-align: justify;"&gt;&lt;a href="http://www.linuxtopia.org/online_books/programming_books/python_programming/python_ch05s06.html" target="_blank"&gt;Reference 1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://docs.python.org/release/2.2.3/whatsnew/node7.html" target="_blank"&gt;Reference 2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;div style="text-align: justify;"&gt;
These links provide you enough details around the True division and Floor division. Also, explains how Python 3.x handles these.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209441328299776693-8095771795043382669?l=blog.nerdstogeeks.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NerdsToGeeks/~4/MCXccTLVYFM" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2011-12-11T10:40:45.423+05:30</atom:updated><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.nerdstogeeks.com/2011/12/division-operator-in-python-whats-wrong.html</feedburner:origLink></item><item><title>NerdsToGeeks - Web App for Chrome Users!</title><link>http://feedproxy.google.com/~r/NerdsToGeeks/~3/e9EVhy_lDIM/nerdstogeeks-web-app-for-chrome-users.html</link><category>Chrome Apps</category><category>Notice</category><author>noreply@blogger.com (Srikanth Rayabhagi)</author><pubDate>Sun, 06 Nov 2011 08:17:00 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5209441328299776693.post-4573566205122385250</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div style="text-align: justify;"&gt;
Today, I am happy to announce that we have a new web app for the chrome users and you can grab the app from the chrome web store directly. The app is very basic one and as of now it just launches this blog directly from the chrome apps page of your browser. Nevertheless, I will try to keep it updated and serve you the content better. Some stats from the chrome store encouraged me to go for a blog post, there are already 103 installations in just couple of days. So, go ahead and try this if you like and follow the blog.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://chrome.google.com/webstore/detail/lledbmhobfepinbeloekmpagkjghhbfk" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" src="http://nerdstogeeks.com/images/logo240.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Download app from&amp;nbsp;&lt;a href="https://chrome.google.com/webstore/detail/lledbmhobfepinbeloekmpagkjghhbfk" target="_blank"&gt;https://chrome.google.com/webstore/detail/lledbmhobfepinbeloekmpagkjghhbfk&lt;/a&gt;&amp;nbsp;and tell us what you would like to see from now on. If you are curious about how we made this simple application, don't strain yourself from searching for the documentation. It is just a manifest file that helps to launch this and you can find this below. Create a folder with manifest.json and write something like this.&lt;/div&gt;

&lt;pre class='codeSnip'&gt;{
  "name": "App Name",
  "description": "Describe your application",
  "version": "1.0",
  "app": {
    "urls": [
      "http://blog.example.com/"
    ],
    "launch": {
      "web_url": "http://blog.example.com/"
    }
  },
  "icons": {
    "128": "logo128.png"
  }
}
&lt;/pre&gt;
&lt;pre&gt;&lt;/pre&gt;
&lt;div style="text-align: justify;"&gt;
When ever you build something useful in the future, make sure you build a simple app for your chrome users that make a lot of difference. Hopefully this will encourage few of you out there to begin! If you want to know how to create chrome extensions direct yourself to this blog post - &lt;a href="http://blog.nerdstogeeks.com/2010/11/develop-chrome-extension-practically.html"&gt;Develop chrome extension practically&lt;/a&gt;&amp;nbsp;or find the slides for even richer learning experience from this &lt;a href="http://blog.nerdstogeeks.com/2011/09/create-slides-with-html5-howto.html"&gt;post&lt;/a&gt;.&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209441328299776693-4573566205122385250?l=blog.nerdstogeeks.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NerdsToGeeks/~4/e9EVhy_lDIM" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2011-11-06T21:48:51.828+05:30</atom:updated><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.nerdstogeeks.com/2011/11/nerdstogeeks-web-app-for-chrome-users.html</feedburner:origLink></item><item><title>The Good and Bad of Blogger Dynamic Views</title><link>http://feedproxy.google.com/~r/NerdsToGeeks/~3/Z5P9p8fZlXA/good-and-bad-of-blogger-dynamic-views.html</link><category>Web Surfer</category><author>noreply@blogger.com (Srikanth Rayabhagi)</author><pubDate>Mon, 31 Oct 2011 09:47:00 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5209441328299776693.post-5390326030511250537</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div style="text-align: justify;"&gt;
When Blogger &lt;a href="http://buzz.blogger.com/2011/09/dynamic-views-seven-new-ways-to-share.html" target="_blank"&gt;announced&lt;/a&gt; the dynamic views, I made up mind that I am not going to move to dynamic views as I had a self designed earlier and don't want to make my blog one amongst the half a million blogs that activated the new design template. But, the new &lt;a href="http://buzz.blogger.com/2011/10/dynamic-views-update-2.html" target="_blank"&gt;customization&lt;/a&gt; options and serious crashing &lt;a href="http://blogging.nitecruzr.net/2011/10/blogger-blogs-freeze-browser-when.html" target="_blank"&gt;issue&lt;/a&gt; with my blog made me rethink. And finally I chose to move on with the trend that's around you. Well its been few days&amp;nbsp;since I moved and I have few suggestions that may&amp;nbsp;help you decide whether or&amp;nbsp;not to move to new design based on my&amp;nbsp;experience.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Lets start with the good part of the new templates.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li style="text-align: justify;"&gt;Loading time - As the new templates load based on feed of your blog and uses JS to load pages it is damn quick and I bet you could ever get to this speed if you try on your own.&lt;/li&gt;
&lt;li style="text-align: justify;"&gt;Ability to switch over the designs and let your reader choose what he likes is good.&lt;/li&gt;
&lt;li style="text-align: justify;"&gt;The search box in the design is really cool and you get the content on the fly.&lt;/li&gt;
&lt;li style="text-align: justify;"&gt;Increased number of scripts that are not often used kept piling in my template which I really don't require, right now there is no option for widgets or any JS, which essentially tackles this problem. &amp;nbsp;So, this is a plus for me.&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;div style="text-align: justify;"&gt;
Nevertheless there are few things that these templates don't have &lt;b&gt;yet&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li style="text-align: justify;"&gt;First of all, I don't have DISQUS&amp;nbsp;Comments&amp;nbsp;on my posts.&lt;/li&gt;
&lt;li style="text-align: justify;"&gt;I don't have preview option while writing a new post.&lt;/li&gt;
&lt;li style="text-align: justify;"&gt;No extensive customization for the template as of now.&amp;nbsp;&lt;/li&gt;
&lt;li style="text-align: justify;"&gt;Authorship markup has been broken as the profile still goes through the blogger profile and then to Google+ profile - Probably they are planning on fixing this in a better way.&lt;/li&gt;
&lt;li style="text-align: justify;"&gt;The analytics seem to be broken as of now, can't use the histats counter.&lt;/li&gt;
&lt;li style="text-align: justify;"&gt;Archives and label tags are not available.&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;div style="text-align: justify;"&gt;
But I weigh the positive part over the negative as these are mere fixes that blogger must be looking at. As a whole I really like the way the things are on my blog. And just to iterate this is my own personal opinion on dynamic views, make&amp;nbsp;sure you consider reading other blogs and make a wise choice before you migrate. If you ask me, if you are not a big fan of comments, make a move right away and by the way there is an option to revert to previous template if you don't like dynamic views at any point of time.&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209441328299776693-5390326030511250537?l=blog.nerdstogeeks.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NerdsToGeeks/~4/Z5P9p8fZlXA" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2011-10-31T22:18:06.658+05:30</atom:updated><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total><feedburner:origLink>http://blog.nerdstogeeks.com/2011/10/good-and-bad-of-blogger-dynamic-views.html</feedburner:origLink></item><item><title>Switch Focus between tabs in Chrome extensions - [How To]</title><link>http://feedproxy.google.com/~r/NerdsToGeeks/~3/MES4KtGzAP4/switch-focus-between-tabs-in-chrome.html</link><category>HowTo</category><category>snippets</category><category>Chrome Extensions</category><author>noreply@blogger.com (Srikanth Rayabhagi)</author><pubDate>Sat, 29 Oct 2011 00:43:00 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5209441328299776693.post-2390276633082661654</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div style="text-align: justify;"&gt;
Here is a quick tip for those who are involved in chrome extension development. If you have developed a chrome extension, then you might have known the
&lt;pre class="codeSnip codeSnipInline" style="text-align: justify;"&gt;chrome.tabs.create()&lt;/pre&gt; function and the flags that can be used inside the function. For example, when you create a tab you can use the flag 
&lt;pre class="codeSnip codeSnipInline" style="text-align: justify;"&gt;{selected:true}&lt;/pre&gt;
directly to switch the focus to the tab that is created. This is absolutely fine, but how about you already opened a tab and the focus is not on that tab, then how do you switch the focus to that tab? Well this may look silly, but it took some good amount of time for me to get this done!&lt;br/&gt;
&lt;br /&gt;
The answer is simple and a line of code does that for you. Just use the update function on the tab and set its selected property to true. 
&lt;/div&gt;
&lt;pre class="codeSnip" style="text-align: justify;"&gt;chrome.tabs.update(tabId, {selected: true});
&lt;/pre&gt;
&lt;div style="text-align: justify;"&gt;
The only condition for this is you need to know the tab Id before using this. If you know the Url, you can loop around the windows and get the tab Id or if you are in luck, you can directly use the tabId in hand. I can't see any other way of doing other than relying on the pure Javascript method where you rely on the browser Instances to switch the focus. 

&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209441328299776693-2390276633082661654?l=blog.nerdstogeeks.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NerdsToGeeks/~4/MES4KtGzAP4" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2011-10-29T13:14:10.479+05:30</atom:updated><feedburner:origLink>http://blog.nerdstogeeks.com/2011/10/switch-focus-between-tabs-in-chrome.html</feedburner:origLink></item><item><title>Is the world big enough to find another Steve?</title><link>http://feedproxy.google.com/~r/NerdsToGeeks/~3/3zPFdXVbf4o/is-world-big-enough-to-find-another.html</link><category>Web Surfer</category><author>noreply@blogger.com (Srikanth Rayabhagi)</author><pubDate>Wed, 05 Oct 2011 23:51:00 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5209441328299776693.post-6859859980194545872</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div style="text-align: justify;"&gt;
My mind used to visualize a fruit until my eyes saw an ipod shuffle in my friends hand and from that second it visualizes an immense company that changed this world. The first time I saw Steve was in this video where he explains the true meaning of education and how to live your life. I bet this video has inpired hell lot of people in their lives and changed the way they think.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;iframe allowfullscreen="" frameborder="0" height="315" src="http://www.youtube.com/embed/UF8uR6Z6KLc" width="420"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
There are millions of people out there&amp;nbsp;who never met Steve in person (just like me) but still they feel the loss today. This man was kicked out of the company he founded and yet he was confident enough to come up with company like &lt;a href="http://www.pixar.com/"&gt;pixar&lt;/a&gt;, such a caliber he had. Today his death created a huge void in this world and I am not sure if I can see another Steve in my lifetime. I don't know about Albert Einstein (1879-1955) nor I heard his speech but I do know about&amp;nbsp;the Einstein (1955-2011) of our era and did hear his speeches. To me, Steve is the Einstein of this era. This screenshot is going to be remembered my whole life and I am proud to say that I am of his era.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Wpcpm2n5S18/To1G7JC82iI/AAAAAAAAB_U/zO4AIomvmbQ/s1600/Screen+shot+2011-10-06+at+11.42.21+AM.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="233" src="http://4.bp.blogspot.com/-Wpcpm2n5S18/To1G7JC82iI/AAAAAAAAB_U/zO4AIomvmbQ/s320/Screen+shot+2011-10-06+at+11.42.21+AM.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Apple.com homepage on october 6th 2011&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div style="text-align: justify;"&gt;
The apricot orchards where he grew was now called Silicon&amp;nbsp;Valley, a home place for many companies. &amp;nbsp;Now the question stays intact and do we see another Steve from silicon valley. There are many people who have tasted success but is that mere factor to replace such a visionary? In Jobs words, 'Stay Hungry Stay&amp;nbsp;Foolish', who has that hunger? Here are the cards we should look after Mark Zuckerberg of Facebook - Man who made people use internet to meet their friends, Larry-Sergey who didn't stop by just launching a search engine to find data.&amp;nbsp;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Finally, I am happy that a person who fused the creativity into technology, the person who has no foes but fans, the person who resembles in every product that the company launched, who seek perfection in the design is of our times. Thanks for everything you have done to this world. R.I.P&lt;/div&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209441328299776693-6859859980194545872?l=blog.nerdstogeeks.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NerdsToGeeks/~4/3zPFdXVbf4o" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2011-10-06T13:51:37.145+05:30</atom:updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/UF8uR6Z6KLc/default.jpg" height="72" width="72" /><georss:featurename xmlns:georss="http://www.georss.org/georss">Hyderabad, Andhra Pradesh, India</georss:featurename><georss:point xmlns:georss="http://www.georss.org/georss">17.385044 78.486671</georss:point><georss:box xmlns:georss="http://www.georss.org/georss">17.142593 78.17081400000001 17.627495 78.802528</georss:box><feedburner:origLink>http://blog.nerdstogeeks.com/2011/10/is-world-big-enough-to-find-another.html</feedburner:origLink></item><item><title>4 CSS Tricks That You Should Know</title><link>http://feedproxy.google.com/~r/NerdsToGeeks/~3/v3S_Sb-wtFA/4-css-tricks-that-you-should-know.html</link><category>snippets</category><category>CSS</category><author>noreply@blogger.com (Srikanth Rayabhagi)</author><pubDate>Sun, 02 Oct 2011 02:14:00 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5209441328299776693.post-8110978001182336524</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div style="text-align: justify;"&gt;
CSS is full of fun and you can't argue on this! The more you work on it, the more you learn about it. You might have seen several pages that are amazingly designed, but often fail to notice the concept behind that. Based on my experiences and observations, I have these 4 CSS techniques which aren't familiar enough to be used by you in your designs. Knowing these will&amp;nbsp;help&amp;nbsp;you a lot by giving you more customization options to your design.&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;1. Merge Textboxes into your Design&lt;/b&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
You can do this by selecting the textboxes you want and apply the CSS below. With this code you are removing the border and making the background of the text box transparent. Will be extremely useful in designs, where you want to remove border of the elements and merge them.&lt;/div&gt;
&lt;pre class="codeSnip"&gt;input[type='text'] {
    border: 0;
    outline: none;
    outline-offset: 0;
    background:transparent;
    padding:0px;
}
&lt;/pre&gt;
&lt;b&gt;2. Access the disabled Textboxes&lt;/b&gt;&lt;br /&gt;
Sometimes the background color of the disabled text boxes may annoy your users, might be because of the gray color that comes by default.&lt;br /&gt;
&lt;pre class="codeSnip"&gt;input[disabled]{
  color:red;
  background:transparent;
}
&lt;/pre&gt;
&lt;b&gt;3. Change the default selection text color&lt;/b&gt;&lt;br /&gt;
You can change the color of the selection with the CSS below. Works with webkit as well as firefox.
&lt;br /&gt;
&lt;pre class="codeSnip"&gt;::selection{
  background-color:orange;
  color:green;
}
::-moz-selection{
  background-color:orange;
  color:green;
}
::-webkit-selection{
  background-color:orange;
  color:green;
}
&lt;/pre&gt;
&lt;b&gt;4. Change the Look and Feel of scroll bars&lt;/b&gt;&lt;br /&gt;
You can access your scroll bars and modify them into what ever you want. You can see that this blog has different kind of scroll bar than the usual scroll bar ( if you are using webkit). I have no interest in finding the property for mozilla, opera and others, if you do care follow this &lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=77790"&gt;bug&lt;/a&gt;, which might lead to right resource.&lt;br /&gt;
&lt;pre class="codeSnip"&gt;::-webkit-scrollbar {
margin-right: 5px;
background-color: #EEE;
width: 7px;
}

::-webkit-scrollbar:horizontal {
margin-right: 5px;
background-color: #EEE;
height: 7px;
}

::-webkit-scrollbar-thumb {
border: 1px #EEE solid;
border-radius: 12px;
background: #777;
-webit-box-shadow: 0 0 8px #555 inset;
box-shadow: 0 0 8px #555 inset;
-webit-transition: all .3s ease-out;
transition: all .3s ease-out;
}

::-webkit-scrollbar-track {
-webit-box-shadow: 0 0 2px #ccc;
box-shadow: 0 0 2px #ccc;
}
&lt;/pre&gt;
That's it for now and hopefully these are useful to you at one point or the other. Stay with us for more interesting posts. You might want to see these interesting &lt;a href="http://blog.nerdstogeeks.com/search/label/CSS"&gt;posts&lt;/a&gt; about CSS.&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209441328299776693-8110978001182336524?l=blog.nerdstogeeks.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NerdsToGeeks/~4/v3S_Sb-wtFA" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2011-10-02T14:44:29.297+05:30</atom:updated><georss:featurename xmlns:georss="http://www.georss.org/georss">Hyderabad, Andhra Pradesh, India</georss:featurename><georss:point xmlns:georss="http://www.georss.org/georss">17.385044 78.486671</georss:point><georss:box xmlns:georss="http://www.georss.org/georss">17.142593 78.17081400000001 17.627495 78.802528</georss:box><feedburner:origLink>http://blog.nerdstogeeks.com/2011/10/4-css-tricks-that-you-should-know.html</feedburner:origLink></item><item><title>Create Slides with HTML5 - [HowTo]</title><link>http://feedproxy.google.com/~r/NerdsToGeeks/~3/UfutxXGjXyA/create-slides-with-html5-howto.html</link><category>HowTo</category><category>HTML5</category><category>Tutorials</category><category>Chrome Extensions</category><category>Jquery</category><author>noreply@blogger.com (Srikanth Rayabhagi)</author><pubDate>Sun, 18 Sep 2011 04:14:00 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5209441328299776693.post-9113592890314938574</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div style="text-align: justify;"&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://www.w3.org/html/logo/downloads/HTML5_Logo_128.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://www.w3.org/html/logo/downloads/HTML5_Logo_128.png" /&gt;&lt;/a&gt;&lt;/div&gt;
The presentations out there have geared up and now its pretty common that you encounter with the presentations that are made in HTML5. Just like you, I used to wonder, how to create one and mesmerize my audience. After searching a lot, I found few interesting presentation slides but they are way complicated and I am too naive&amp;nbsp;to have all those things in my presentation. I decided to create my own slides with basic effects. In this article, I will tell you my experience in creating the slides. This &lt;b&gt;&lt;a href="http://nerdstogeeks.com/demos/chrome-extensions-slides.html"&gt;demo&lt;/a&gt;&lt;/b&gt; is the end result of my experiment.&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;b&gt;&lt;a href="http://nerdstogeeks.com/demos/chrome-extensions-slides.html"&gt;VIEW DEMO&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;b&gt;1. Setup the basic template&lt;/b&gt;&lt;br /&gt;
Let us have the template with just two slides in the presentation for now. I am also importing the Jquery library into the template. Each slide is covered by the section tags and the slide id's should be incremented according to the number of the slides like the third slide should have slide3 as the id.&lt;/div&gt;
&lt;pre class="codeSnip"&gt;&amp;lt;html&amp;gt;
    &amp;lt;head&amp;gt;
        &amp;lt;title&amp;gt;Chrome Extensions&amp;lt;/title&amp;gt;
        &amp;lt;script type='text/javascript' src='../js/jquery.js'&amp;gt; &amp;lt;/script&amp;gt;
    &amp;lt;/head&amp;gt;
    &amp;lt;body&amp;gt;
        &amp;lt;section class='slide' id='slide1'&amp;gt;
            Slide1
        &amp;lt;/section&amp;gt;
        &amp;lt;section class='slide' id='slide2'&amp;gt;
            Slide2
        &amp;lt;/section&amp;gt;
    &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;b&gt;2. Defining Slides&lt;/b&gt;&lt;br /&gt;
Now that we&amp;nbsp;have basic template we need to make sure that we display one slide to user at a time. So we need to style for section such that we monitor our display.
&lt;br /&gt;
&lt;pre class="codeSnip"&gt;html,body{
    margin:0px;
    padding:0px;
    height:100%;
}
body{
    overflow:hidden;
}
.slide{
    height:100%;
    width:100%;
    background:-webkit-gradient(radial,
        50% 50%, 0,
        50% 50%, 500,
        from(white), to(#A2D2ED)) no-repeat #A2D2ED;
    padding:100px;
}
&lt;/pre&gt;
&lt;div style="text-align: justify;"&gt;
&lt;b&gt;3. Navigating between Slides&lt;/b&gt;&lt;br /&gt;
In step2 we have defined our slides and are hiding the slides that are not necessary. Right now we need to provide a navigation functionality between the slides. For this we are going to use the Jquery and parse the URL to get the current slide.
&lt;/div&gt;
&lt;pre class="codeSnip"&gt;$(document).ready(function() {
    $('body').bind("keydown", function(event) {
        if (event.keyCode == '40' || event.keyCode == '39') {
            var x = location.href;
            var currentSlideNumber = x.split('#slide')[1];
            var nextSlideNumber = 2;
            if (currentSlideNumber) {
                nextSlideNumber = parseInt(currentSlideNumber) + 1;
            }
            var target = '#slide' + nextSlideNumber;
            $("html, body").stop().animate({
                scrollTop: $(target).offset().top,
                scrollLeft: $(target).offset().left,
            }, 800, function() {
                location.href = target;
            });
        } else if (event.keyCode == '38' || event.keyCode == '37') {
            var x = location.href;
            var currentSlideNumber = x.split('#slide')[1];
            var nextSlideNumber = parseInt(currentSlideNumber) - 1;
            var target = '#slide' + nextSlideNumber;
            $("html, body").stop().animate({
                scrollTop: $(target).offset().top,
                scrollLeft: $(target).offset().left,
            }, 800, function() {
                location.href = target;
            });
        }
    });
});
&lt;/pre&gt;
&lt;div style="text-align: justify;"&gt;
Here we are binding a keydown listener and looking for the arrow keys to be pressed by the user. Once pressed, we get the url and split at &lt;pre class="codeSnipInline codeSnip"&gt;#slide&lt;/pre&gt;
and process the slide number (if it not there we assume that we are on the first slide). Next we animate the slide and scroll accordingly. Note that we are continuously updating the slide number in the target url with a callback function, which keeps track of the slide to be able to navigate to the other slides. Feel free to edit the keycodes and make your slides feasible to your requirement. You can prevent the usage of keyboard by placing anchors according to the slide you want. This is kind of hardcoded fashion, if you need to slide to slide1 you place that anchor as &lt;pre class="codeSnip codeSnipInline"&gt;&amp;lt;a href='#slide2'&amp;gt;NextSlide&amp;lt;/a&amp;gt;&lt;/pre&gt;
but still a useful method to learn. Here is the binding function for these kind of links.
&lt;/div&gt;
&lt;pre class="codeSnip"&gt;$("a[href*=#]").bind("click", function(event) {
    event.preventDefault();
    console.log('you');
    var target = $(this).attr("href");
    $("html, body").stop().animate({
        scrollTop: $(target).offset().top,
        scrollLeft: $(target).offset().left,
    }, 1500, function() {
        location.href = target;
    });
});
&lt;/pre&gt;
Finally, feel free to add your own style for the headings and the content of the slides. It rests on your creativity that how good you can tweak them and present them. Again, here is the &lt;a href="http://nerdstogeeks.com/demos/chrome-extensions-slides.html"&gt;demo&lt;/a&gt; for slide that are coded using this tutorial. So, did you like it. Feel free to drop any suggestions if you have. 
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209441328299776693-9113592890314938574?l=blog.nerdstogeeks.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NerdsToGeeks/~4/UfutxXGjXyA" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2011-09-18T22:07:38.208+05:30</atom:updated><georss:featurename xmlns:georss="http://www.georss.org/georss">Hyderabad, Andhra Pradesh, India</georss:featurename><georss:point xmlns:georss="http://www.georss.org/georss">17.385044 78.486671</georss:point><georss:box xmlns:georss="http://www.georss.org/georss">17.142593 78.17081400000001 17.627495 78.802528</georss:box><feedburner:origLink>http://blog.nerdstogeeks.com/2011/09/create-slides-with-html5-howto.html</feedburner:origLink></item><item><title>Power of Optimization with Google Closure</title><link>http://feedproxy.google.com/~r/NerdsToGeeks/~3/jA_qm5HGQpE/power-of-optimization-with-google.html</link><category>Javascript</category><category>Developers</category><category>Google-Closure</category><author>noreply@blogger.com (Srikanth Rayabhagi)</author><pubDate>Sun, 04 Sep 2011 03:25:00 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5209441328299776693.post-1540986786686834729</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div style="text-align: justify;"&gt;
When I was new to closure library of&amp;nbsp;the Google, I found it very useful for developing applications that require optimized performance. So, I started with the demos of the Google Closure. In my previous article, &lt;a href="http://blog.nerdstogeeks.com/2011/07/tabbar-and-google-closure-how-to.html"&gt;Tabbar and Google - [How To]&lt;/a&gt;, I wrote a small tutorial for the demo of the Tabbar and didn't go for the building the code I wrote and just uploaded the library. It's good until I opened the &lt;a href="http://nerdstogeeks.com/demos/closure/tabBar.html"&gt;demo&lt;/a&gt; of the tabbar. To my horror&amp;nbsp;I found that its downloading nearly 1MB (omg!) of the dependency files from the closure library and that made me build the code. So, I edited this file and made a seperate .js file which I can compile with closure builder.&amp;nbsp;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
This is how I started with the code.&lt;/div&gt;
&lt;pre class="codeSnip"&gt;goog.provide('n2g.tabbar');

goog.require('goog.dom');
goog.require('goog.events');
goog.require('goog.events.EventType');
goog.require('goog.object');
goog.require('goog.ui.Component.EventType');
goog.require('goog.ui.RoundedTabRenderer');
goog.require('goog.ui.Tab');
goog.require('goog.ui.TabBar');


n2g.tabbar.init = function() {
    var topTab = new goog.ui.TabBar();
    topTab.decorate(goog.dom.getElement('start'));
    goog.events.listen(topTab, 
                      goog.ui.Component.EventType.SELECT, function(e) {
        var tabSelected = e.target;
        var contentElement = goog.dom.getElement('start_content');
        if (tabSelected.getCaption() == 'Hello') {
            goog.dom.setTextContent(contentElement,
              goog.dom.getTextContent(goog.dom.getElement('hello_tab_content')));
        } else if (tabSelected.getCaption() == 'Settings') {
            contentElement.innerHTML =
            goog.dom.getElement('settings_tab_content').innerHTML;
        } else if (tabSelected.getCaption() == 'More') {
            var cont = "This is pre-stored in var and I am just printing.";
            goog.dom.setTextContent(contentElement, cont);
        }
    });
}&lt;/pre&gt;
&lt;div style="text-align: justify;"&gt;
With this code in the common.js file, I initiated with the same tabbar.html as discussed in the article. Now I made a call to this function &lt;pre class='codeSnip codeSnipInline'&gt; n2g.tabbar.init() &lt;/pre&gt;from the html file. Now enters the compilation phase for this code. Following the &lt;a href="http://code.google.com/closure/library/docs/closurebuilder.html"&gt;steps&lt;/a&gt; by Google, I compiled my file using this compiler script. Before I show you the script, let us check the file size of the scripts. The&amp;nbsp;&lt;pre class='codeSnip codeSnipInline'&gt;common.js &lt;/pre&gt; file is of 4KB, but not to forget there is about 950KB of dependencies around this 4KB because of the use of Google Closure. So, we need to make sure that the compilation yields good compression. Lets look into the script.&lt;/div&gt;
&lt;pre class="codeSnip"&gt;
closure-library/closure/bin/build/closurebuilder.py \
    --root=closure-library/ \
    --root=closure/ \
    --namespace="n2g.tabbar" \
    --output_mode=compiled \
    --compiler_jar=compiler.jar \
    &amp;gt; closure/compiled-js-tabbar.js
&lt;/pre&gt;
&lt;div style="text-align: justify;"&gt;
Now the script has been compiled along with dependencies and there comes&amp;nbsp;&lt;pre class='codeSnip codeSnipInline'&gt;compiled-js-tabbar.js&lt;/pre&gt; with size of about 149KB which is terrific compression from 950KB to 150KB. But this is not where I stopped experimenting with optimization, reading further, came across the advanced optimization flag which reads the code and understands it before compilation. Here is the compilation script with the advanced optimization ON.&lt;/div&gt;
&lt;pre class="codeSnip"&gt;
closure-library/closure/bin/build/closurebuilder.py \
    --root=closure-library/ \
    --root=closure/ \
    --namespace="n2g.tabbar" \
    --output_mode=compiled \
    --compiler_jar=compiler.jar \
    &lt;b&gt;--compiler_flags="--compilation_level=ADVANCED_OPTIMIZATIONS" \&lt;/b&gt;
    &amp;gt; closure/compiled-js-tabbar.js
&lt;/pre&gt;
&lt;div style="text-align: justify;"&gt;
That was even better, the compressed file is now just 41KB, which yielded in compression ratio of&amp;nbsp;&lt;pre class="codeSnip codeSnipInline"&gt;5% &lt;/pre&gt; of the original dependencies. Now I just tried using this&amp;nbsp;&lt;pre class="codeSnip codeSnipInline"&gt;compiled-js-tabbar.js&lt;/pre&gt;, but to my horror it turned up error. Examing the code of the&amp;nbsp;&lt;pre class="codeSnip codeSnipInline""&gt;compiled-js-tabbar.js &lt;/pre&gt;files, tells you that there is nothing readable in that file. So, it was throwing an error for the&amp;nbsp;&lt;pre class="codeSnip codeSnipInline"&gt;n2g.tabbar.init() &lt;/pre&gt;as there is no longer that terminology in the file. So, added this line to the file and re-compiled that. It is working in indeed! (lesson learnt!).&lt;/div&gt;
&lt;b&gt;The bottom line here is that, if you are really worried about the performance and care for the users, use much optimized scripting library.&lt;/b&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209441328299776693-1540986786686834729?l=blog.nerdstogeeks.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NerdsToGeeks/~4/jA_qm5HGQpE" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2011-09-04T15:55:38.163+05:30</atom:updated><georss:featurename xmlns:georss="http://www.georss.org/georss">Hyderabad, Andhra Pradesh, India</georss:featurename><georss:point xmlns:georss="http://www.georss.org/georss">17.385044 78.486671</georss:point><georss:box xmlns:georss="http://www.georss.org/georss">17.142593 78.17081400000001 17.627495 78.802528</georss:box><feedburner:origLink>http://blog.nerdstogeeks.com/2011/09/power-of-optimization-with-google.html</feedburner:origLink></item><item><title>CSS3 techniques to spice up your design</title><link>http://feedproxy.google.com/~r/NerdsToGeeks/~3/7hiTpFnvF5Y/css3-techniques-to-spice-up-your-design.html</link><category>Developers</category><category>Tutorials</category><category>CSS</category><author>noreply@blogger.com (Srikanth Rayabhagi)</author><pubDate>Sat, 03 Sep 2011 01:47:00 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5209441328299776693.post-8044169817889123165</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
With CSS3 coming into action and almost every modern browser supports wide range of features, you must start inducing yourself into CSS3 and improve your design perspective. In this article, I give you few snippets of code that let you do some basic CSS3 designs. Lets get started with these.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;1. Say hello to image less striped backgrounds&lt;/b&gt;&lt;/div&gt;
&lt;pre class="codeSnip"&gt;background-color: #C8DE9D;
    background-color:#C8DE9D;
    background-image: -webkit-gradient(linear, 0 100%, 100% 0,
        color-stop(.25, rgba(255, 255, 255, .2)),
        color-stop(.25, transparent),
        color-stop(.5, transparent),
        color-stop(.5, rgba(255, 255, 255, .2)),
        color-stop(.75, rgba(255, 255, 255, .2)),
        color-stop(.75, transparent), to(transparent));
    background-image: -webkit-linear-gradient(45deg,
        rgba(255, 255, 255, .2) 25%,
        transparent 25%, transparent 50%,
        rgba(255, 255, 255, .2) 50%,
        rgba(255, 255, 255, .2) 75%,
        transparent 75%, transparent);
    background-image: -moz-linear-gradient(45deg,
        rgba(255, 255, 255, .2) 25%,
        transparent 25%, transparent 50%,
        rgba(255, 255, 255, .2) 50%,
        rgba(255, 255, 255, .2) 75%,
        transparent 75%, transparent);
    background-image: -o-linear-gradient(45deg,
        rgba(255, 255, 255, .2) 25%,
        transparent 25%, transparent 50%,
        rgba(255, 255, 255, .2) 50%,
        rgba(255, 255, 255, .2) 75%,
        transparent 75%, transparent);
    background-image: -ms-linear-gradient(45deg,
        rgba(255, 255, 255, .2) 25%,
        transparent 25%, transparent 50%,
        rgba(255, 255, 255, .2) 50%,
        rgba(255, 255, 255, .2) 75%,
        transparent 75%, transparent);
    background-image: linear-gradient(45deg,
        rgba(255, 255, 255, .2) 25%,
        transparent 25%, transparent 50%,
        rgba(255, 255, 255, .2) 50%,
        rgba(255, 255, 255, .2) 75%,
        transparent 75%, transparent);
    -webkit-background-size: 50px 50px;
    -moz-background-size: 50px 50px;
    background-size: 50px 50px;
    -moz-box-shadow: 1px 1px 8px gray;
    -webkit-box-shadow: 1px 1px 8px gray;
    box-shadow: 1px 1px 8px gray;
&lt;/pre&gt;
What happens with above code? Simple striped background for any element, in-specific a 45deg striped background with the provided color. The background of the blog has been coded with this. The best part is you can have variety of stripes by modifying the degree of the stripes and the color. You can see the output here
&lt;iframe style="width: 100%; height: 200px" src="http://jsfiddle.net/srikanth2961/aGmM6/embedded/result%2Ccss%2Chtml/"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;b&gt;2. Say goodbye to traditional borders&lt;/b&gt;
&lt;br /&gt;
Are you still using the traditional border with&lt;pre class="codeSnip codeSnipInline"&gt;border: 1px solid black&lt;/pre&gt;,
 then it is time that you change to advanced borders using the shadows feature of CSS3. Observe the green border with blur over this post. You will see how we have done that.
&lt;br /&gt;
&lt;pre class="codeSnip"&gt;background-color: white;
padding: 10px;
-moz-box-shadow: inset 0 0 1em #98C429;
-webkit-box-shadow: inset 0 0 1em #98C429;
box-shadow: inset 0 0 1em #98C429;
&lt;/pre&gt;
Though these are not supported by the old browsers, hoping that the users migrate to the latest browsers at the faster rate, you need to get used to these kind of styling to keep up with latest designs. Hope these were useful and let me know in case of any issues.
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209441328299776693-8044169817889123165?l=blog.nerdstogeeks.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NerdsToGeeks/~4/7hiTpFnvF5Y" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2011-09-03T14:17:15.964+05:30</atom:updated><georss:featurename xmlns:georss="http://www.georss.org/georss">Hyderabad, Andhra Pradesh, India</georss:featurename><georss:point xmlns:georss="http://www.georss.org/georss">17.385044 78.486671</georss:point><georss:box xmlns:georss="http://www.georss.org/georss">17.142593 78.17081400000001 17.627495 78.802528</georss:box><feedburner:origLink>http://blog.nerdstogeeks.com/2011/09/css3-techniques-to-spice-up-your-design.html</feedburner:origLink></item><item><title>PlayCez: Upcoming Era of Recommendation Engines</title><link>http://feedproxy.google.com/~r/NerdsToGeeks/~3/q2CzXSwdsO4/playcez-upcoming-era-of-recommendation.html</link><category>Web Surfer</category><category>Technologies</category><author>noreply@blogger.com (Srikanth Rayabhagi)</author><pubDate>Sun, 21 Aug 2011 00:49:00 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5209441328299776693.post-5553574705166988734</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div style="text-align: justify;"&gt;
Had this been a decade ago, people would have been satisfied with whatever info you provide them irrespective of the fashion in which you serve them. But technologies emerge around you and people are seeking for the best of the best out there. This is where the concept of &lt;b&gt;Recommendation Engines&lt;/b&gt; come into play. Recommendation Engines are not new to this world, but the density of users seeking these have been on rise. &amp;nbsp;Geo location based recommendations need pioneers at work to promise the service. Talking of these services, I need to talk about an upcoming "Visual Recommendation Engine", &lt;a href="http://playcez.com/"&gt;PlayCez&lt;/a&gt;.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-tSKaMAuF6Ms/TlCe1kIwd8I/AAAAAAAABvo/jdipXSeuY10/s1600/playcez-welcome-screen.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="137" src="http://3.bp.blogspot.com/-tSKaMAuF6Ms/TlCe1kIwd8I/AAAAAAAABvo/jdipXSeuY10/s320/playcez-welcome-screen.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
PlayCez is a web application, that recommends places to people based on the interests and the likes of their pals. PlayCez takes the inputs from the user in well designed and structured way to provide them the most appropriate places accordingly. The application uses latest technologies out there to make users feel the freshness of the web. Some quick technologies, I can point out to - Google Maps v3, JQuery and not to miss, their mobile site is &amp;nbsp;through JQuery Mobile, which will be launched very soon.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-LJ7dvFhYbVg/TlAKUxN9afI/AAAAAAAABvk/wDc-awDv1vM/s1600/Screen+shot+2011-08-21+at+12.52.43+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="155" src="http://2.bp.blogspot.com/-LJ7dvFhYbVg/TlAKUxN9afI/AAAAAAAABvk/wDc-awDv1vM/s320/Screen+shot+2011-08-21+at+12.52.43+AM.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
The developers are keeping every aspect of this application quite different and innovative. For example, the error page of this application is amazingly built and poured in the dynamic entity with the usage of Google Maps API and unlike the boring "Oops 404" pages, you see across the web. You can check the error page over &lt;a href="http://playcez.com/error"&gt;here&lt;/a&gt;. As said earlier, the application uses the Google Maps v3 for recommending the users the places in their&amp;nbsp;neighborhood with beautiful overlays embedded into the maps with several options. If you are really interested in Maps v3, here is a small snippet of code and make similar kind of &amp;nbsp;pages for yourself.&amp;nbsp;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Basic template:&lt;/b&gt;&lt;br /&gt;
&lt;pre class="codeSnip"&gt;&amp;lt;!doctype html&amp;gt;
&amp;lt;html&amp;gt;
  &amp;lt;head&amp;gt;
    &amp;lt;title&amp;gt;Google Maps V3 Demo - NerdsToGeeks&amp;lt;/title&amp;gt;
    &amp;lt;style&amp;gt;
     html, body, #myMapCanvas {
       padding:0;
       margin:0;
       height:100%;
     }
   &amp;lt;/style&amp;gt;
  &amp;lt;/head&amp;gt;
  &amp;lt;body&amp;gt;
   &amp;lt;div id='myMapCanvas'&amp;gt;&amp;lt;/div&amp;gt;  
  &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;
&lt;b&gt;The logic:&lt;/b&gt;&lt;br /&gt;
&lt;pre class="codeSnip"&gt;&amp;lt;script type="text/javascript"
        src="http://maps.googleapis.com/maps/api/js?sensor=false"&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script&amp;gt;
  var map;
  function initialize() {
     var myOptions = {
          zoom: 3,
          center: new google.maps.LatLng(17.0477624, 80.0981869),
          mapTypeId: google.maps.MapTypeId.ROADMAP
      };
      map = new google.maps.Map(document.getElementById('myMapCanvas'),
            myOptions);
  }
  google.maps.event.addDomListener(window, 'load', initialize);
&amp;lt;/script&amp;gt;
&lt;/pre&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
This application is budding and has been launched over 3 cities in India. So when you are in India, and don't know where to hangout, use &lt;a href="http://www.playcez.com/"&gt;PlayCez&lt;/a&gt; to make your day delightful.&lt;/div&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209441328299776693-5553574705166988734?l=blog.nerdstogeeks.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NerdsToGeeks/~4/q2CzXSwdsO4" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2011-08-21T13:19:21.780+05:30</atom:updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-tSKaMAuF6Ms/TlCe1kIwd8I/AAAAAAAABvo/jdipXSeuY10/s72-c/playcez-welcome-screen.jpg" height="72" width="72" /><georss:featurename xmlns:georss="http://www.georss.org/georss">Koti Main Rd, Koti, Hyderabad, Andhra Pradesh, India</georss:featurename><georss:point xmlns:georss="http://www.georss.org/georss">17.385044 78.486671</georss:point><georss:box xmlns:georss="http://www.georss.org/georss">17.142593 78.17081400000001 17.627495 78.802528</georss:box><feedburner:origLink>http://blog.nerdstogeeks.com/2011/08/playcez-upcoming-era-of-recommendation.html</feedburner:origLink></item><item><title>Prevent parent DIV Collapse while using Float - [How to]</title><link>http://feedproxy.google.com/~r/NerdsToGeeks/~3/1DUJnRkG2Wo/prevent-parent-div-collapse-while-using.html</link><category>HowTo</category><category>CSS</category><author>noreply@blogger.com (Srikanth Rayabhagi)</author><pubDate>Mon, 15 Aug 2011 02:44:00 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5209441328299776693.post-625563184975088134</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div style="text-align: justify;"&gt;
Are you tired of using tables for your layout design? Then you might have considered the usage of div elements to design your page. One major issue with the use of div's is that&amp;nbsp;the alignment of these elements need to&amp;nbsp;be done so precisely, that the parent element and the child elements align with each other accordingly or it will completely ruin your layout. For&amp;nbsp;example you might have come across a case where the parent element of these divs doesn't be intact and just collapses, leaving the rest of the divs floating around. In this article we&amp;nbsp;will see how to create a layout with four boxes and which will in turn prevent the container div from collapsing. Lets get started with the implementation.&lt;/div&gt;
&lt;pre class="codeSnip"&gt;&amp;lt;div id='container'&amp;gt;&amp;lt;/div&amp;gt;
&lt;/pre&gt;
Now let us have four blocks that need to be placed in the container div. Lets name them as div1, div2, div3 and div4 respectively.
&lt;br /&gt;
&lt;pre class="codeSnip"&gt;&amp;lt;div id='container'&amp;gt;
  &amp;lt;div class='divStyle' id='div1'&amp;gt;&amp;lt;/div&amp;gt;
  &amp;lt;div class='divStyle' id='div2'&amp;gt;&amp;lt;/div&amp;gt;
  &amp;lt;div class='divStyle' id='div3'&amp;gt;&amp;lt;/div&amp;gt;
  &amp;lt;div class='divStyle' id='div4'&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/pre&gt;
Now lets define&amp;nbsp;the styling for this, ofcourse the basic styles for the container too..&lt;br /&gt;
&lt;pre class="codeSnip"&gt;#container{
  width:700px;
  background-color:#CCC;
  border:1px solid black;
}
.divStyle {
  width:300px;
  min-height:300px;
  background-color:green;
  border:1px solid orange;
  margin: 10px;
}
&lt;/pre&gt;
&lt;div style="text-align: justify;"&gt;
Save the page and load it in&amp;nbsp;the browser. You can see that all the elements come one below the other which is not exactly because of the default settings for the division elements. Now lets tweak a little to make them look like rows and columns of table.&lt;/div&gt;
&lt;pre class="codeSnip"&gt;.divStyle {
  width:300px;
  min-height:300px;
  background-color:green;
  border:1px solid orange;
  &lt;b&gt;float:left;&lt;/b&gt;
  margin:10px;
}
&lt;/pre&gt;
&lt;div style="text-align: justify;"&gt;
Save it now and try again. Now you notice that there are four blocks just like table. But you should have noticed by now that the container backgorund has been collapsed to the top of the page and not serving as background for these elements. You must see some thing like this &lt;a href="http://jsfiddle.net/srikanth2961/ZT2WB/embedded/result/" target="_new"&gt;version&lt;/a&gt;. Now let us explain you how to avoid this situation. We need a spacer that essentially tells the container div to "Dude Hang ON!"

&lt;/div&gt;
&lt;pre class="codeSnip"&gt;&amp;lt;div id='container'&amp;gt;
  &amp;lt;div class='divStyle' id='div1'&amp;gt;&amp;lt;/div&amp;gt;
  &amp;lt;div class='divStyle' id='div2'&amp;gt;&amp;lt;/div&amp;gt;
  &amp;lt;div class='divStyle' id='div3'&amp;gt;&amp;lt;/div&amp;gt;
  &amp;lt;div class='divStyle' id='div4'&amp;gt;&amp;lt;/div&amp;gt;
  &lt;b&gt;&amp;lt;div class='spacer'&amp;gt;&amp;lt;/div&amp;gt;&lt;/b&gt;
&amp;lt;/div&amp;gt;
&lt;b&gt;.spacer{
 clear:both;
}&lt;/b&gt;
&lt;/pre&gt;
&lt;div style="text-align: justify;"&gt;
Now we have updated the code with the spacer and style of the space takes care of the floating elements. You can try it out here and see what will be the result of the code. You can see the final result over &lt;a href="http://jsfiddle.net/srikanth2961/ZT2WB/5/embedded/result/" target="_new"&gt; here &lt;/a&gt;
&lt;/div&gt;
Hope this article helps you and support you when needed. Let me know in case of any issues. 
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209441328299776693-625563184975088134?l=blog.nerdstogeeks.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NerdsToGeeks/~4/1DUJnRkG2Wo" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2011-08-15T15:14:07.759+05:30</atom:updated><feedburner:origLink>http://blog.nerdstogeeks.com/2011/08/prevent-parent-div-collapse-while-using.html</feedburner:origLink></item><item><title>Finding the Words - RegEx Wins!</title><link>http://feedproxy.google.com/~r/NerdsToGeeks/~3/LPyNEzowMb8/finding-words-regex-wins.html</link><category>Javascript</category><author>noreply@blogger.com (Srikanth Rayabhagi)</author><pubDate>Thu, 11 Aug 2011 10:35:00 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5209441328299776693.post-5480009242974445879</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div style="text-align: justify;"&gt;
"Finding the words", this may not be as easy as it sounds when it comes to scalability. Oh yeah! When you are working on small sample, then you might not consider this seriously. If you are reading ahead of this, make sure that you are working on big data sample and agree with the above stmt. In this article, we will look into pain points of the approaches that can be used for finding the words in a page. I will share my experience on working a large set of data and how I explored the possible ways of doing that.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Let us get started with each method and pain points.&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;Finding using the find!&lt;/b&gt;&lt;br /&gt;
&lt;pre class="codeSnip"&gt;if(window.find){
    var length = arr.length; 
    for(var i=0;i&amp;lt;length;i++) {
       strfound = self.find(arr[i],false);
       if(strfound) {
         console.log(arr[i]);
       } 
     }
   }
&lt;/pre&gt;
&lt;div style="text-align: justify;"&gt;
&lt;b&gt;Pros:&amp;nbsp;&lt;/b&gt;This method works exactly like Ctrl+F or cmd+F in your browser and is supported by modern browsers and the input for this is the whole page on which the data set will run. The second parameter of the &lt;b&gt;find()&lt;/b&gt; is useful for dealing with the case sensitive issues. 

&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;b&gt;Cons: &lt;/b&gt;You can only find that is visible to you on the page and not to the source code. It might trouble you &amp;nbsp;in some cases.&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;b&gt;The Jquery way!&lt;/b&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
Jquery is well known for its in built library functions that serve the need exactly. For now we use a selector called &lt;b&gt;:contains() &lt;/b&gt;which looks for the text inside the element that has been selected. Below is the code for doing this.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class="codeSnip"&gt;$.each(arr,function(index,value){
    if($('*:contains(' + value + ')').length &amp;gt;0){
         console.log(value);
    }
 });
&lt;/pre&gt;
&lt;div style="text-align: justify;"&gt;
The problem with this is that this is &lt;b&gt;case-sensitive &lt;/b&gt;and we need to make it case-insensitive. After some lookup in the web, I found a method that makes the above function insensitive to the case.&lt;/div&gt;
&lt;pre class="codeSnip"&gt;&lt;div style="text-align: justify;"&gt;
$.expr[':'].icontains = function(obj, index, meta, stack){&lt;/div&gt;
return (obj.textContent || obj.innerText || jQuery(obj).text() || '').toLowerCase().indexOf(meta[3].toLowerCase()) &amp;gt;= 0; }; 
    
  $.each(arr,function(index,value){
    if($('*:icontains(' + value + ')').length &amp;gt;0){
         console.log(value);
    }
  });
&lt;/pre&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;b&gt;Pros:&lt;/b&gt; *:contains selector process every element of the page and gives you the exhaustive matches for the set of data you are looking for.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;b&gt;Cons: &lt;/b&gt;Selecting the elements and processing through the big set of data takes some good amount of time. So, if you are in hurry, avoid this method.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;b&gt;Optimal RegEx:&lt;/b&gt;&lt;br /&gt;
Finally, we need to find a perfect balance between the Jquery way and the find method discussed above. So, here is the solution for that.&lt;br /&gt;
&lt;pre class="codeSnip"&gt;    
    function myescape(text) {
        return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&amp;amp;");
    }
    var text = document.body.innerHTML;
    for(var i=0,ii=arr.length;i&amp;lt;ii;i++) {
         var kwd = myescape(arr[i]);
         var matches = text.match(new RegExp('\\b'+kwd+'\\b','i'));
         if(matches){
           console.log(arr[i]);
         }
       }
&lt;/pre&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
This one is fast and most reliable one and it served my purpose for the day. So, if you are looking for some thing similar to this, Let me know if you have any concerns regarding this. Btw, if you are looking for optimizing the code in JS, have a glance at my previous article on &lt;a href="http://blog.nerdstogeeks.com/2011/07/optimize-your-js-coding-practices.html"&gt;Optimizing JS coding practices&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209441328299776693-5480009242974445879?l=blog.nerdstogeeks.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NerdsToGeeks/~4/LPyNEzowMb8" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2011-08-11T23:05:14.270+05:30</atom:updated><feedburner:origLink>http://blog.nerdstogeeks.com/2011/08/finding-words-regex-wins.html</feedburner:origLink></item><item><title>GunBros and Guns: A Gamers view</title><link>http://feedproxy.google.com/~r/NerdsToGeeks/~3/fF_-wmkF394/gunbros-and-guns-gamers-view.html</link><category>Games</category><category>Android</category><author>noreply@blogger.com (Srikanth Rayabhagi)</author><pubDate>Fri, 15 Jul 2011 22:37:00 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5209441328299776693.post-5106166357931891310</guid><description>&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Suhu9TZLGOM/TiEZni8abUI/AAAAAAAABf8/Sqtvju62xyU/s1600/GunBros+Logo.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-Suhu9TZLGOM/TiEZni8abUI/AAAAAAAABf8/Sqtvju62xyU/s1600/GunBros+Logo.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;The Bros&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div style="text-align: justify;"&gt;
If you are a elegant gamer and know of the game called GunBros or have been playing it of a while, you understand the fact that earning credit in games is not as easy as those legendary old games. So, what is this post about? I document my personal experience with an Android/Iphone game called '&lt;a class="external" href="http://gunbros.glu.com/"&gt;Gun Bros&lt;/a&gt;' made by glu. Earning the coins in this game is as tough as playing this game without proper weapons. So, this post covers the weapons, their pros and cons making it easier for you to choose the appropriate one. Before I begin let you people know that I am also just a beginner in this one and have been playing just over a couple of weeks. Currently I am in L32 of the game with some solid weapons. So, lets begin.&lt;/div&gt;
&lt;br /&gt;
&lt;b class="subHead"&gt;Categories - Thats what you have:&lt;/b&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
There are different categories in the weapons as can be seen on the lower left of the screen with a filter button, which on clicking will show you the categories of the weapons like pistol, rifle, shotgun, spread, heavy and special ones. You need to choose the guns according to the situation. In the beginning of the game, the waves will be smaller and the number of enemies would be easier to handle, so you can try out the pistol and rifle at the beginning. Later, you need to kick in through the herd of enemies. So, use your damn mind over here!&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;b class="subHead"&gt;Guns - Thats what you need:&lt;/b&gt;&lt;br /&gt;
&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-XkWM_kIGatQ/TiEhE15Bj2I/AAAAAAAABgE/WASiz9fuuUs/s1600/a.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-XkWM_kIGatQ/TiEhE15Bj2I/AAAAAAAABgE/WASiz9fuuUs/s1600/a.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Logo of GunBros&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div style="text-align: justify;"&gt;
I don't waste my time explaining all the hundred weapons out there in the game. I just tell you what's the best and worst of my experience with the guns. Lets see them individually. Lets start with my best.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;1. Tetraspear:&lt;/span&gt; &lt;/b&gt;The best one out there for me till now. It got a wide spread of coverage and the RPM is good enough to tacle the enemies till now. The damage power of this weapon is pretty ordinary but is better than that of other weapons when it comes to the impact of this one. This would be my primary weapon for now.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;&lt;b&gt;2. WarBringers:&lt;/b&gt; &lt;/span&gt;These are dual pistols and are quite effective in dealing the bigger enemies that are pretty slow in motion and you need to hit them&amp;nbsp;continuously. So, this is perfect for those as these are lighter and increase the speed by 12% which is quite a take in good stages.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;3. Pulse Rifle:&lt;/span&gt;&lt;/b&gt; This is one damn shitty thing out there in the shop, which collect a huge amount of 24K coins and isn't worth the money. The description goes "lighting hot projectiles in an expanding wave pattern" which sound pretty awesome and wasted my 24K on this which is just another rifle with much better RPM. I seriously consider this as one damn thing you should be off.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-futfqs7f0hA/TiEhulUVUPI/AAAAAAAABgI/rm0ZRIjZrBA/s1600/a.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="150" src="http://2.bp.blogspot.com/-futfqs7f0hA/TiEhulUVUPI/AAAAAAAABgI/rm0ZRIjZrBA/s200/a.png" width="150" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;&lt;b&gt;4. Energy Gauntlet:&lt;/b&gt;&lt;/span&gt; This one is a rapid fire canon and throws the plasma bullets at a rapid pace and good enough to deal with the enemies that keep on coming but not in a pace to cover you around. For the amount of 1.9K this one is good to buy.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;5. Super scorcher:&lt;/span&gt;&lt;/b&gt; Claims to be flame burner and class 4 weapon. This one is pretty good when the enemies are slower but I don't suggest this one because of the impact it produces, when the enemies are surrounding you, use this weapon and I am sure that you will go red and don't understand what the hell this weapon is doing out there.&lt;/div&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;b class="subHead"&gt;Armor:&lt;/b&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
If you are interested and have war bucks just go and get the&lt;b&gt; titanium pants, helmet and trousers&lt;/b&gt;, these will give you a boost in your defense on the cost of your speed, which you need not care if you have strong enough weapons in your hand.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;b class="subHead"&gt;PowerUps:&lt;/b&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
I normally don't use them but if I use them, I use the &lt;b&gt;shock and awesome &lt;/b&gt;which is quite destructive and just cost you 350 coins in the game. If you are planning to buy &lt;b&gt;Orbital Strike &lt;/b&gt;give up on that and instead buy the shock and awesome twice as the later costs you 700 coins.&amp;nbsp;&lt;/div&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-BRtPYiGSe-U/TiEgMNhQiNI/AAAAAAAABgA/MLx8oJ-NchI/s1600/airstrike.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="215" src="http://3.bp.blogspot.com/-BRtPYiGSe-U/TiEgMNhQiNI/AAAAAAAABgA/MLx8oJ-NchI/s320/airstrike.jpg" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Airstrike image from the web&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div style="text-align: justify;"&gt;
Finally I end this post with a small cheat in gun bros, its not a cheat its just a way through which you can gain the war bucks in the game. When ever you play this game, you see the ads that ask you to download the app and get 2 or 5 war bucks. Just follow the download and delete approach which will give you enough war bucks to buy even powerful weapons than described above. Will update the post once I proceed further.&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209441328299776693-5106166357931891310?l=blog.nerdstogeeks.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NerdsToGeeks/~4/fF_-wmkF394" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2011-07-16T11:09:15.214+05:30</atom:updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-Suhu9TZLGOM/TiEZni8abUI/AAAAAAAABf8/Sqtvju62xyU/s72-c/GunBros+Logo.jpg" height="72" width="72" /><feedburner:origLink>http://blog.nerdstogeeks.com/2011/07/gunbros-and-guns-gamers-view.html</feedburner:origLink></item><item><title>TabBar and Google Closure - [How To]</title><link>http://feedproxy.google.com/~r/NerdsToGeeks/~3/CelH1x2-VZk/tabbar-and-google-closure-how-to.html</link><category>HowTo</category><category>Javascript</category><category>Google-Closure</category><author>noreply@blogger.com (Srikanth Rayabhagi)</author><pubDate>Sun, 10 Jul 2011 09:23:00 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5209441328299776693.post-494367748388345204</guid><description>&lt;div style="text-align: justify;"&gt;&lt;a href="http://3.bp.blogspot.com/-UanxPemYk4A/Tf4F7Auo4AI/AAAAAAAABbI/UmTCfsE8XyA/s1600/closure.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/-UanxPemYk4A/Tf4F7Auo4AI/AAAAAAAABbI/UmTCfsE8XyA/s200/closure.jpg" width="200" /&gt;&lt;/a&gt;When it comes to Jquery vs Google closure, many would say go with Jquery as it is pretty easy to understand and also gives the users a nice documentation for reference. But in my personal view, it would be good to start with Jquery and then migrate to more stronger (in terms of performance) library like closure. You can't deny the fact that Jquery is slower than any of the existing libraries now. So, I suggest you guys to migrate and rely on more stronger if you are looking for big projects.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In this article, you can learn how to use the Google UI components and make tab bar that is similar to the Gmail and other Google components. Before getting started, let me show you what are we trying to achieve today in this article.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://nerdstogeeks.com/demos/closure/tabBar.html" target="_new"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;DEMO&lt;/span&gt;&lt;/b&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Preparation of the libraries:&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Firstly import the closure library to your local machine by checking out the code from this &lt;a href="http://code.google.com/p/closure-library/source/checkout"&gt;project page&lt;/a&gt;. After this create a test file under the name &lt;b&gt;sample.html &lt;/b&gt;&amp;nbsp;and place the file adjacent to the closure-library folder. This will give us easier access to the google library. After this we create our basic template required for accessing the library files.&lt;/div&gt;&lt;pre class="codeSnip"&gt;&amp;lt;html&amp;gt; 
&amp;lt;head&amp;gt; 
  &amp;lt;title&amp;gt;Google Closure TabBar&amp;lt;/title&amp;gt; 
  &amp;lt;link rel="stylesheet" href="../closure-library/closure/goog/css/tab.css"&amp;gt; 
  &amp;lt;link rel="stylesheet" href="../closure-library/closure/goog/css/tabbar.css"&amp;gt;
  &amp;lt;script src="../closure-library/closure/goog/base.js" type="text/javascript"&amp;gt;
  &amp;lt;/script&amp;gt;
  &amp;lt;script&amp;gt; 
    goog.require('goog.dom');
    goog.require('goog.events');
    goog.require('goog.events.EventType');
    goog.require('goog.object');
    goog.require('goog.ui.Component.EventType');
    goog.require('goog.ui.RoundedTabRenderer');
    goog.require('goog.ui.Tab');
    goog.require('goog.ui.TabBar');
  &amp;lt;/script&amp;gt; 
&amp;lt;/head&amp;gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Tabs and the structure:&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Now that the libraries are ready we need to prepare the tab structure and the content if possible. I am considering three tabs with three different types of content. Here is what we have for now.&lt;/div&gt;&lt;pre class="codeSnip"&gt;&amp;lt;body&amp;gt;
&amp;lt;div id="start" class="goog-tab-bar goog-tab-bar-start"&amp;gt;
	&amp;lt;div class="goog-tab goog-tab-selected"&amp;gt;Hello&amp;lt;/div&amp;gt;
	&amp;lt;div class="goog-tab"&amp;gt;Settings&amp;lt;/div&amp;gt;
	&amp;lt;div class="goog-tab"&amp;gt;More&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- Use goog-tab-bar-clear to separate the tabs from the content. --&amp;gt;
&amp;lt;div id="start_content" class="goog-tab-content"&amp;gt;
	 Use the keyboard or the mouse to switch tabs.
&amp;lt;/div&amp;gt;
&amp;lt;div id='hello_tab_content' class='hid'&amp;gt;
	 This is the content for Hello tab.
&amp;lt;/div&amp;gt;
&amp;lt;div id='settings_tab_content' class='hid'&amp;gt;
	 Rendering the HTML here.
	&amp;lt;li&amp;gt;Setting1&amp;lt;/li&amp;gt;
	&amp;lt;li&amp;gt;Setting2&amp;lt;/li&amp;gt;
	&amp;lt;li&amp;gt;Setting3&amp;lt;/li&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/body&amp;gt;
&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;You can see that &amp;nbsp;there are three tabs here ( Hello, Settings, More) and each tab has a class called goog-tab which acquires definition from the style sheets attached earlier. Also, the tab structure will be defined based on the class name of the top div that covers all these tabs. Here you can see that the class being used is '&lt;b&gt;goog-tab-bar-start&lt;/b&gt;' which defines that the tabs will be at the start of the content. Let us add some basic styling to hide the tabs content with the class &lt;b&gt;hid&lt;/b&gt;. Here is the style sheet you need to attach.&lt;/div&gt;&lt;pre class="codeSnip"&gt;&lt;div style="text-align: justify;"&gt;&amp;lt;style&amp;gt;fieldset {&lt;/div&gt;padding:10px;
	border:1px solid #369;
}
.goog-tab-content {
	height:9em;
	margin:0;
	border:1px solid #6b90da;
	border-top:0;
	padding:4px 8px;
	background:#fff;
	overflow:auto;
}
.hid {
	display: none;
}
&amp;lt;/style&amp;gt;
&lt;/pre&gt;After adding the above styling, your file will look as shown below at this point.&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-4YI4gZv56DI/Thm4v5O0pZI/AAAAAAAABeA/zT-bVRpVHOs/s1600/Screen+shot+2011-07-10+at+8.03.27+PM.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="156" src="http://2.bp.blogspot.com/-4YI4gZv56DI/Thm4v5O0pZI/AAAAAAAABeA/zT-bVRpVHOs/s400/Screen+shot+2011-07-10+at+8.03.27+PM.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;The tabs in the left side due to the usage of goog-tab-bar-start class.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div style="text-align: justify;"&gt;You can change the position of tabs by using different class name like goog-tab-bar-top, &amp;nbsp;goog-tab-bar-bottom, &amp;nbsp;goog-tab-bar-end which sends the tabs to top, bottom and end respectively.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Control over the component:&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Everything is good but the core-functionality is missing. Yes, the event controls on the element is missing in this case. Now, let us add the event mechanism to the tabbar. Go through this piece of Javascript that adds this.&lt;/div&gt;&lt;pre class="codeSnip"&gt;&lt;div style="text-align: justify;"&gt;&amp;lt;script&amp;gt;&lt;/div&gt;var topTab = new goog.ui.TabBar();
  topTab.decorate(goog.dom.getElement('start'));
  goog.events.listen(topTab, goog.ui.Component.EventType.SELECT, function(e) {
    var tabSelected = e.target;
    var contentElement = goog.dom.getElement('start_content');
    if (tabSelected.getCaption() == 'Hello') {
      goog.dom.setTextContent(contentElement, 
          goog.dom.getTextContent(goog.dom.getElement('hello_tab_content')));
    } else if (tabSelected.getCaption() == 'Settings') {
      contentElement.innerHTML = 
           goog.dom.getElement('settings_tab_content').innerHTML;
    } else if (tabSelected.getCaption() == 'More') {
      var cont = "This is pre-stored in var and I am just printing.";
      goog.dom.setTextContent(contentElement, cont);
    }
  });
&amp;lt;/script&amp;gt;
&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;You can see the if..else.. conditions running to provide the content of the tabs. The hello tab reads the content of the element hello_tab_content while the settings tab renders the html stored in settings_tab_content. You can see that the third tab More is just getting the data from pre-stored variable. Hopefully this worked for you guys. You can learn more about tabBar in the &lt;a href="http://closure-library.googlecode.com/svn/trunk/closure/goog/demos/tabbar.html"&gt;demo&lt;/a&gt; of the Google.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209441328299776693-494367748388345204?l=blog.nerdstogeeks.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NerdsToGeeks/~4/CelH1x2-VZk" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2011-07-10T21:59:13.316+05:30</atom:updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-UanxPemYk4A/Tf4F7Auo4AI/AAAAAAAABbI/UmTCfsE8XyA/s72-c/closure.jpg" height="72" width="72" /><feedburner:origLink>http://blog.nerdstogeeks.com/2011/07/tabbar-and-google-closure-how-to.html</feedburner:origLink></item><item><title>Optimize your JS Coding Practices</title><link>http://feedproxy.google.com/~r/NerdsToGeeks/~3/LOl23gei1Nw/optimize-your-js-coding-practices.html</link><category>Javascript</category><author>noreply@blogger.com (Srikanth Rayabhagi)</author><pubDate>Sat, 09 Jul 2011 10:17:00 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5209441328299776693.post-6289938368623051354</guid><description>If you are programming in Javascript and reached a stage where you are looking into the optimizations that can be made into your code, then this post might help you a bit. This post&amp;nbsp;portraits&amp;nbsp;the novice JS coder and shows the differences between the normal and the effective coding practices. So, lets begin.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;1. Stop&amp;nbsp;repetitive&amp;nbsp;access of elements - Cache them&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
Accessing elements again and again in your code can make it slow and you might be wasting your resources too unknowingly. Below is the normal snippet that you might write.&lt;br /&gt;
&lt;pre class="badCodeSnip"&gt;document.getElementById('div1').innerHTML =&amp;nbsp;
                 document.getElementById('div1').innerHTML + 'blah';
&lt;/pre&gt;
The above snippet access the element twice and may not be a big issue but consider this in case of a loop, you are accessing again and again which is definitely bad for your program. This is how you can optimize your script.&lt;br /&gt;
&lt;pre class="codeSnip"&gt;var el = document.getElementById('div1');
el.innerHTML = el.innerHTML + 'blah';
&lt;/pre&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;2. Say good bye to traditional looping practice&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
It is very common that every one starts with a basic for loop as shown below. &lt;br /&gt;
&lt;pre class="codeSnip"&gt;for(var i=0;i&amp;lt;10;i++) {
  // Some looping code
}&lt;/pre&gt;
This is perfectly fine if you are using some static variables or some numbers (in this case number 10). Consider the case where you operate on array involved with big numbers, if you use this kind of looping you will be on the tortoise edition. For eg check the below code.&lt;br /&gt;
&lt;pre class="badCodeSnip"&gt;var arr = ['1','2','3',..........,'10000'];
for( var i=0; i&amp;lt; arr.length; i++) {
  // Some code in the loop
}
&lt;/pre&gt;
This can be optimized by removing the arr.length condition in the loop which is being calculated 10K times in the above loop. So, here is the optimized version of the code and &lt;b&gt;consider this one as replacement of traditional for loop and start adopting this.&lt;/b&gt;&lt;br /&gt;
&lt;pre class="codeSnip"&gt;var arr = ['1','2','3',..........,'10000'];
for( var i=0, ii = arr.length; i&amp;lt; ii; i++) {
  // Some code in the loop
}
&lt;/pre&gt;
You can check the performance of these two in &lt;a href="http://jsperf.com/loopperf"&gt;JSPerf&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;3. &amp;nbsp;Do not concatenate instead join them&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
I know many of us use the default + operator to concatenate the strings in a loop. Experts say that this is not the best of the practices out there.&lt;br /&gt;
&lt;pre class="badCodeSnip"&gt;for (var i = 0; i &amp;lt; 100; i++) {
  str = str + ' ' + arr[i];
}
console.log(str);
&lt;/pre&gt;
Instead of the above code you should start using the push and join properties of the arrays. &lt;br /&gt;
&lt;pre class="codeSnip"&gt;for (var i = 0; i &amp;lt; 100; i++) {
  strArr.push(arr[i]);
}
str = strArr.join(' ');
console.log(str);
&lt;/pre&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;4. Kick out big inline styles&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
This one is in specific to Jquery css property which is generally used with .css() of the library. This one can be used directly with the element like shown below.&lt;br /&gt;
&lt;pre class="badCodeSnip"&gt;$('#ele').css({ 'color':'red','width':'100px'});
&lt;/pre&gt;
So, what wrong about this? Inline style are good when the number of styling attributes are minimal (say 4 attributes). If you exceed the limit try adding a class rather than simply adjusting the properties on the fly. Though animations make exception, try adopting the followed coding style.&lt;br /&gt;
&lt;pre class="codeSnip"&gt;.dynAdditionClass{
  color:red;
  width:100px;
  //Even more
}
$('#ele').addClass('dynAddtionClass');
&lt;/pre&gt;
These are some of the coding practices that may help you in optimizing the performance. Let me know in case of any suggestions. I will keep this post updated when ever I come across some good practices.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Titbit:&lt;/b&gt; more interested in knowing more about these JSPerf test? Follow this &lt;a href="http://jsperf.com/popular"&gt;link&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209441328299776693-6289938368623051354?l=blog.nerdstogeeks.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NerdsToGeeks/~4/LOl23gei1Nw" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2011-07-09T22:48:16.502+05:30</atom:updated><feedburner:origLink>http://blog.nerdstogeeks.com/2011/07/optimize-your-js-coding-practices.html</feedburner:origLink></item><item><title>Disable MouseEvents on an Element - [How To]</title><link>http://feedproxy.google.com/~r/NerdsToGeeks/~3/V55kqdewWXk/disable-mouseevents-on-element-how-to.html</link><category>HowTo</category><category>snippets</category><category>CSS</category><author>noreply@blogger.com (Srikanth Rayabhagi)</author><pubDate>Sun, 26 Jun 2011 08:15:00 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5209441328299776693.post-6054731985241009132</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="text-align: justify;"&gt;Are you trying to disable your mouse events and make the element opaque to certain extent or make it completely transparent, allowing the mouse to click the elements behind the actual element? Then this small &amp;nbsp;CSS piece lets you do that with a single line. Before getting started, let me give you a scenario where this will be actually effective.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Consider, a case where you create a banner, fixed it position and want that to be an overlay above all the elements. Now you scroll through the content and you may see that this banner is blocking certain elements of the page. This is where exactly, you will find this useful. So, lets get started.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Here I am using this technique over the Image which is analogy to the banner of the above scenario. Firstly fix the position of the image.&lt;/div&gt;&lt;/div&gt;&lt;pre class='codeSnip'&gt;.imgClass{
  position:fixed;
  bottom:0px;
  right:0px;
}
&lt;/pre&gt;The above code lets you keep the banner fixed at the bottom right on the screen. You might have designed considereing that there won't be any case where the data comes below this but still you need to take care of those. Add the code to the css class.&lt;br /&gt;
&lt;pre class='codeSnip'&gt;.imgClass{
  position:fixed;
  bottom:0px;
  right:0px;
  opacity:0.4;
  &lt;b&gt;pointer-events:none;&lt;/b&gt;
}&lt;/pre&gt;&lt;br /&gt;
Now your image becomes transparent and you can click through an element. Not only that you can disable the pointer events, but you can tweak that with visible portions too. You can learn more about these in this &lt;a href="https://developer.mozilla.org/en/css/pointer-events" target='_new'&gt;Mozilla Doc&lt;/a&gt;. Hope this one is useful to some guys out there!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209441328299776693-6054731985241009132?l=blog.nerdstogeeks.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NerdsToGeeks/~4/V55kqdewWXk" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2011-07-10T21:59:13.337+05:30</atom:updated><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.nerdstogeeks.com/2011/06/disable-mouseevents-on-element-how-to.html</feedburner:origLink></item><item><title>Handling anomalies of goog.array.removeDuplicates in Google Closure</title><link>http://feedproxy.google.com/~r/NerdsToGeeks/~3/i_eHaziMLQs/handling-anomalies-of.html</link><category>Javascript</category><category>Google-Closure</category><author>noreply@blogger.com (Srikanth Rayabhagi)</author><pubDate>Sun, 19 Jun 2011 07:23:00 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5209441328299776693.post-1215337087503223345</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http:/#" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/-UanxPemYk4A/Tf4F7Auo4AI/AAAAAAAABbI/UmTCfsE8XyA/s200/closure.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;If you are working on Google Closure and your script involves something related to Array and the elements in it, you probably might have faced few anomalies in the process. Posting this for further reference for myself and it may be useful if you are reading this, because you came here with the same issue.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Okay in to the anomaly I faced. I have a string array that has duplicate elements in it. I need to eliminate the duplicate elements from that. How do I do? Here comes the &lt;b&gt;goog.array.removeDuplicates&lt;/b&gt; function of the closure library. So, what happened and what should ideally happen. Consider the code below.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;pre class="codeSnip"&gt;//TestingCode
  var str1 = "This is my place. This is my land";
  strArray = str1.split(" "); //Splitting at spaces.
  console.log(strArray);
  goog.array.removeDuplicates(strArray);
  console.log(strArray);
&lt;/pre&gt;&lt;br /&gt;
Ideally what do you expect when you run this code? Yes, you expect the following results of the above code.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="codeSnip"&gt;["This", "is", "my", "place.","This", "is", "my", "land"]
["This", "is", "my", "place.", "land"]
&lt;/pre&gt;&lt;br /&gt;
But this is what it gives us as the output. &lt;br /&gt;
&lt;br /&gt;
&lt;pre class="codeSnip"&gt;["This", "is", "my", "place.", "land"]
["This", "is", "my", "place.", "land"]
&lt;/pre&gt;&lt;br /&gt;
Being new to Closure, I am not sure why this is happening and went ahead to the documents of the goog.array.removeDuplicates and found that there is an optional parameter which might be useful.&lt;br /&gt;
So, changing the above code to this works as expected.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="codeSnip"&gt;//TestingCode
  var str1 = "This is my place. This is my land";
  strArray = str1.split(" "); //Splitting at spaces.
  console.log(strArray);
  var strArrayDup = new Array();
  goog.array.removeDuplicates(strArray,strArrayDup);
  console.log(strArrayDup);
&lt;/pre&gt;&lt;br /&gt;
Here, the second argument lets you keep the array untouched and stores the output in the new array that is duplicate. So, if you are using this function of the closure, make sure you use this approach or atleast use goog.array.clone which should solve this issue. If you have any clue to why this is happening, post it in the comments!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209441328299776693-1215337087503223345?l=blog.nerdstogeeks.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NerdsToGeeks/~4/i_eHaziMLQs" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2011-06-19T19:53:13.322+05:30</atom:updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-UanxPemYk4A/Tf4F7Auo4AI/AAAAAAAABbI/UmTCfsE8XyA/s72-c/closure.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.nerdstogeeks.com/2011/06/handling-anomalies-of.html</feedburner:origLink></item><item><title>How to Get GoldBalls in Home Run Battle 3D</title><link>http://feedproxy.google.com/~r/NerdsToGeeks/~3/BFn71tetDA4/how-to-get-goldballs-in-home-run-battle.html</link><category>HowTo</category><category>Games</category><category>Android</category><author>noreply@blogger.com (Srikanth Rayabhagi)</author><pubDate>Thu, 09 Jun 2011 10:27:00 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5209441328299776693.post-5723310165265963046</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-NbEVFcrkqVs/TfEBgxz0sNI/AAAAAAAABUY/d2Lm2sxld1E/s1600/android.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="184" src="http://3.bp.blogspot.com/-NbEVFcrkqVs/TfEBgxz0sNI/AAAAAAAABUY/d2Lm2sxld1E/s320/android.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;If your are interested in Android development, you would have tried few interested games on your Android device. When I was first introduced to Android, I was in the perception that Iphone is way better than Android in the field of gaming. But, to my surprise I could find almost every game of Iphone in Android. In search of a good action game, found two interesting games. Firstly, &lt;b&gt;Gun Bros,&lt;/b&gt; a multiplayer action game with multiplayer&amp;nbsp;&amp;nbsp;currently&amp;nbsp;disabled in the free version and second is the &lt;b&gt;Home Run Battle 3D&lt;/b&gt;. If you don't know this game already, go get this game at Android market now and if you are familiar with this one. Here is a decent trick through which you can increase the number of gold balls and can get the equipment for you.&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Let me warn you before we actually run you through this trick. This is not a cheat or a hack that erases your data or manipulates. This may happen rarely and you need to utilize on such&amp;nbsp;occasion.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;1. Connect your device to WiFi.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;2. Start your game and proceed till the menu, there you can see an offer popping out asking for a click and you will receive 20 GoldBalls.&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;3. Click the Ad and press the back button, you will get a msg saying you received 20 gold balls.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;4. Repeat the step 3 and you can increase the number of gold balls on the fly.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Though this offer might not come always, it will be useful if you are in desperate need of the Gold balls and you can't wait to get them. Hope this hack of Home Run Battle 3D helps some of you out there!&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209441328299776693-5723310165265963046?l=blog.nerdstogeeks.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NerdsToGeeks/~4/BFn71tetDA4" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2011-07-10T21:59:13.327+05:30</atom:updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-NbEVFcrkqVs/TfEBgxz0sNI/AAAAAAAABUY/d2Lm2sxld1E/s72-c/android.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.nerdstogeeks.com/2011/06/how-to-get-goldballs-in-home-run-battle.html</feedburner:origLink></item><item><title>The Era Where URL Shorteners Rule!</title><link>http://feedproxy.google.com/~r/NerdsToGeeks/~3/bZqYDfEbs20/era-where-url-shorteners-rule.html</link><category>Web Surfer</category><author>noreply@blogger.com (Srikanth Rayabhagi)</author><pubDate>Sat, 04 Jun 2011 01:21:00 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5209441328299776693.post-1140664353911102910</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="text-align: justify;"&gt;If you are in sync with the technology around, you might be aware of the different kinds of urls floating around you when shared in the social networks. &amp;nbsp;If you notice them, you can actually make out the brand names from them and you can remember them easily. In this article, we will discuss the some URL shorteners and rank them if they are appropriate to their brand name. Let us dive into this and start with the nicely branded design.&lt;/div&gt;&lt;br /&gt;
3 Starred:&lt;br /&gt;
In this group of url shorteners, you can make out the company names right from there and shorteners are efficient without any additions as such. Some techniques used here are removing the silent letters.&lt;br /&gt;
&lt;pre class="codeSnip"&gt;-- &lt;b&gt;goo.gl&lt;/b&gt; - Yes,removed the letter 'e' but still reads Google.
-- &lt;b&gt;fb.me&lt;/b&gt; - Facebook, tried utilizing its cool short form 'fb' for its shortener.
-- &lt;b&gt;lifehac.kr&lt;/b&gt; - If you are tech savvy, you would have known it is Lifehacker. 
-- &lt;b&gt;youtu.be&lt;/b&gt; - Youtube it is. Also, there is extension to it with very
 short url - y2u.be which further&amp;nbsp;shortens&amp;nbsp;the URL's.
-- &lt;b&gt;pep.si&lt;/b&gt; - Pepsi, a well branded shortener.
-- &lt;b&gt;lnkd.in&lt;/b&gt; - Linked In, Professional Social Network service.
-- &lt;b&gt;es.pn&lt;/b&gt; - ESPN
-- &lt;b&gt;flic.kr&lt;/b&gt; - Flickr
-- &lt;b&gt;4sq.me&lt;/b&gt; - FourSquare
-- &lt;b&gt;gr.pn&lt;/b&gt; - Groupon
-- &lt;b&gt;itun.es&lt;/b&gt; - Itunes
-- &lt;b&gt;tcrn.ch&lt;/b&gt; - TechCrunch
-- &lt;b&gt;slidesha.re&lt;/b&gt; - SlideShare
&lt;/pre&gt;&lt;div&gt;2 Starred:&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;These use the brand names but unnecessary additions to them which make them miss their place in the above slots.&lt;/div&gt;&lt;pre class="codeSnip"&gt;&lt;b&gt;-- yhoo.it&lt;/b&gt; - Yahoo
&lt;b&gt;-- binged.it&lt;/b&gt; - Bing
&lt;b&gt;-- cnet.co&lt;/b&gt; - CNET
&lt;b&gt;-- adobe.ly&lt;/b&gt; - Adobe
&lt;b&gt;-- digg.com&lt;/b&gt; - Digg
&lt;b&gt;-- mzl.la&lt;/b&gt; - Mozilla, though this one is kind of removing some letters,
 it is tough to make out that this one is mozilla, but still tried optimizing it.
&lt;/pre&gt;&lt;div&gt;No Stars:&lt;/div&gt;&lt;/div&gt;&lt;div&gt;These are the URL&amp;nbsp;shorteners&amp;nbsp;that really don't bring out their brand names into the URL shorteners.&lt;br /&gt;
&lt;pre class="codeSnip"&gt;&lt;b&gt;-- t.co&lt;/b&gt; - Can't guess right? Twitter it is which is really hard to guess.
&lt;b&gt;-- mash.to&lt;/b&gt; - Mashable
&lt;b&gt;-- su.pr&lt;/b&gt; - StumbleUpon
&lt;b&gt;-- go.me&lt;/b&gt; - Go Daddy
&lt;b&gt;-- db.tt&lt;/b&gt; - Dropbox
&lt;b&gt;-- qr.ae&lt;/b&gt; - Quora&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;Wait there are some special editions here!&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;- go.usa.gov &lt;/b&gt;- This one has been created by the Government of USA helping the other government sites to have the shortened URLs with porper authentication.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;Now you don't believe what I am going to say! Justin Bieber got an URL Shortener too!!&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;-- beiber.ly -&lt;/b&gt;Though this doesn't belong to the official Justin Bieber site.This one is for real and the funniest part is that the developers of this url shorteners are ashamed of themselves!&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;*This is my personal ranking of the URL Shorteners. Let me know in case of any suggestions and questions below.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209441328299776693-1140664353911102910?l=blog.nerdstogeeks.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NerdsToGeeks/~4/bZqYDfEbs20" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2011-06-04T13:51:16.803+05:30</atom:updated><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.nerdstogeeks.com/2011/06/era-where-url-shorteners-rule.html</feedburner:origLink></item><item><title>Reading Excel data using Python</title><link>http://feedproxy.google.com/~r/NerdsToGeeks/~3/DFvAoJnWiKY/reading-excel-data-using-python.html</link><category>Developers</category><category>Tutorials</category><category>Python</category><author>noreply@blogger.com (Srikanth Rayabhagi)</author><pubDate>Sun, 15 May 2011 00:18:00 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5209441328299776693.post-113588201267522615</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Spreadsheets are the best way to organize the abundant data that flow around you. And Python provides you the easiest libraries to operate with such excel files. In this articles, you will come to know how you can read the excel files in the python and run you through a sample example too. So, lets get started.&lt;br /&gt;
&lt;br /&gt;
First things first, you need to install the library &lt;b&gt;xlrd &lt;/b&gt;which basically handles the reading mechanism of excel files. &amp;nbsp;You can get the library from this &lt;a href="http://pypi.python.org/pypi/xlrd"&gt;page&lt;/a&gt;. Once you download that library, you can cd into that directory and run the following command.&lt;br /&gt;
&lt;pre class="codeSnip"&gt;python setup.py install
&lt;/pre&gt;Now you have the libraries to access the spreadsheets. Now the script to retrieve the data. Below is the script for accessing the data.&lt;/div&gt;&lt;br /&gt;
&lt;pre class="codeSnip"&gt;#!/usr/bin/python 

import xlrd

myexcel = xlrd.open_workbook('sample.xls')
print "WorkSheets:", myexcel.sheet_by_names()
sheet = myexcel.sheet_by_index(0)

for row_index in range(0,10):
    print sheet.cell(row_index,0).value
    print sheet.cell(row_index,3).value
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Now let me run you through the above script. After importing the xlrd library, open_workbook() allows you to open an already created excel file (sample.xls). Next we are printing the sheets names in the excel sheet by the sheet_by_names(). Then we are accessing the first sheet by sheet_by_index(0). Next I am trying to print the first 10 rows of the sheet and restricted to column1 and column4. Basically the function cell(rowindex, colindex).value will return the value of that particular cell.&lt;br /&gt;
&lt;br /&gt;
I will try to show &amp;nbsp;you guys how to create the sheet using python xlwt library in upcoming posts.. Hold there or try finding other guys ! Leave your suggestions and comments below.&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5209441328299776693-113588201267522615?l=blog.nerdstogeeks.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NerdsToGeeks/~4/DFvAoJnWiKY" height="1" width="1"/&gt;</description><atom:updated xmlns:atom="http://www.w3.org/2005/Atom">2011-05-15T12:48:22.206+05:30</atom:updated><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.nerdstogeeks.com/2011/05/reading-excel-data-using-python.html</feedburner:origLink></item></channel></rss>

